Browse the catalogue to see what's already covered. Then check the issue tracker for requested systems. If the system you want isn't listed anywhere, open a new issue describing
the authority document so maintainers can confirm scope.
02 Read the authority document
Most authority romanization tables are published as PDFs. Read carefully — the rules include
edge cases (word-initial vs word-medial, before/after context, special characters). Note
every rule with its source page number; you'll cite it in the map metadata.
If the authority document isn't freely available, look for secondary sources (Wikipedia,
library science journals) that describe the rules. Cite the secondary source in those cases.
Maps live in github.com/interscript/maps, named {authority}-{lang}-{source_script}-{dest_script}-{year}.isc (e.g. bgnpcgn-ukr-Cyrl-Latn-2019.isc).
# bgnpcgn-ukr-Cyrl-Latn-2019.isc
system "BGN-PCGN:ukr-Cyrl:Latn:2019" {
metadata {
authority_id bgnpcgn
id 2019
language iso-639-2:ukr
source_script Cyrl
destination_script Latn
name Romanization of Ukrainian (2019 Agreement)
url https://assets.publishing.service.gov.uk/...
}
tests {
"Алушта" -> "Alushta"
"Борщагівка" -> "Borshchahivka"
}
stage main {
run map.cyrllatn.stage.main
parallel {
sub "'" ""
}
}
}
The format has more options (capture groups, before/after constraints, run rules that
compose stages) — the corpus itself is the reference; see bgnpcgn-ukr-Cyrl-Latn-2019.isc for a fully-worked map.
Every map ships with test directives — input → expected output pairs pulled from
the authority document or real-world examples. These run against every engine — the Ruby interpreter
and the TypeScript ISC runtime. Failures block merge.
Aim for at least 10 test vectors covering common cases, diacritics, edge cases, and (where
applicable) word-boundary behavior. Cite source pages in code comments.
Fork interscript/maps, push your branch, open a PR. The CI pipeline runs the
test suite against every engine and re-checks the parity suite. Maintainers review the map
against the source document; if rules are missing or wrong, they'll point out specific page
numbers.
Once merged, the new system is automatically:
- Available in the Ruby gem (next release)
- Available in
interscript-ts via the ISC runtime - Live on interscript.org (next site build)
- Available through the REST API
Need help?
Open a GitHub issue with the authority document and what you've tried. The community is friendly and the maintainers
are responsive.