English | Українською
🟢 Project status: active[?]
Transliteration refers to the method of mapping from one system of writing to another based on phonetic similarity.
With this tool, you type in letters (e.g. a, b, c etc.), which are converted to characters that have similar pronunciation in the target language.
For example, in Ukrainian transliteration, you can type in vitannja
to get вітання
.
This transliterator is an utility that converts user input by providing system-wide transliteration using a mapping between, for example, Latin and Cyrillic letters. The program supports different mappings for various languages and has multiple use cases beyond the initial purpose of facilitating typing in foreign languages.
- Transliterating a snippet of text.
- Typing in foreign language via transliteration.
- Some languages have two alphabets. This tool should help, I think?
- Typing diacritics and accents. For example, to get
õ
, you can type~o
and it will be converted toõ
.
- Clone the repo or download installer from release page.
- If you cloned the repo, compile and run the project.
- Once the program boots up, select your language pair by clicking the dropdown in the top right corner and then selecting the table you want (for example,
tableAccentsAndDiacritics
ortableENG-LAT_UKR-CYR
). - Type wherever you want: whether it be the snippet panel or notepad or your browser. Wow! ✨
Transliteration tables are stored in Transliterator.Core\Resources\TranslitTables
as .json
files.
Each table is a mapping between input and output characters.
Some mappings do not follow existing transliteration standarts completely. That's due to technical limitations and for ease of use.
Input | Output | Tested | Example | File |
---|---|---|---|---|
Latin | Ukrainian Cyrilllic | ✔️ | vitannja --> вітання | tableENG-LAT_UKR-CYR.json |
Latin | Bulgarian Cyrilllic | - | - | tableENG-LAT_BUL-CYR.json |
Latin | Kazakh Cyrilllic (2021) | - | - | tableENG-LAT_KZ-CYR_2021.json |
Kazakh Cyrilllic | Latin (Kazakhstan) | - | - | tableKZ-CYR_KZ-LAT_2021.json |
Kazakh Latin | Kazakh Cyrilllic (2021) | - | - | tableKZ-LAT_KZ-CYR_2021.json |
Latin | Mongolian Cyrilllic | - | - | tableMON-LAT_MON-CYR.json |
Letters and Symbols | Diacritics and Accents | - | ~o --> õ | tableDiacriticsAndAccents.json |
Whatever | Emojis and Unicode | - | <3 --> ♡ | tableMisc.json |
Each time you press a key,
- keylogger catches it,
Relevant files:
KeyboadHook.cs
- then it goes to transliterator (
TransliteratorService.cs
)BufferedTransliteratorService.cs
UnbufferedTransliteratorService.cs
- and gets converted according to currently selected table.
TransliterationTable.cs
TransliterationTableExtension.cs
- The transliterated character is then injected instead (
KeyboardInputGenerator.cs
)
- Async handling of key presses
- Table Editor
- Different transliteration rules depending on position of character in a word (e. g.,
ya --> "я"
in beginning of a word andia -> "я"
elsewhere)