TransliteratorUkrainian 1.0.1
dotnet add package TransliteratorUkrainian --version 1.0.1
NuGet\Install-Package TransliteratorUkrainian -Version 1.0.1
<PackageReference Include="TransliteratorUkrainian" Version="1.0.1" />
<PackageVersion Include="TransliteratorUkrainian" Version="1.0.1" />
<PackageReference Include="TransliteratorUkrainian" />
paket add TransliteratorUkrainian --version 1.0.1
#r "nuget: TransliteratorUkrainian, 1.0.1"
#:package TransliteratorUkrainian@1.0.1
#addin nuget:?package=TransliteratorUkrainian&version=1.0.1
#tool nuget:?package=TransliteratorUkrainian&version=1.0.1
Ukrainian Transliterator
A C# tool for transliterating Ukrainian Cyrillic text to Latin (and back) following the official CMU Resolution No. 55 rules. Works with Excel files, plain text, and stdin.
Features
- Forward transliteration (Cyrillic → Latin) with position-aware rules
- Reverse transliteration (Latin → Cyrillic)
- Excel processing: reads
.xlsxfiles, outputs.csvwith proper escaping (RFC 4180) - Multi-sheet support: process all sheets or specific ones
- Selective column transliteration: choose which columns to transliterate
- Interactive modes:
--textand--stdinfor quick transliterations - Reusable library:
TransliteratorUkrainian.Corecan be referenced from any .NET project
Project Structure
TransliteratorUkrainian.sln
├── TransliteratorUkrainian.Core/ # Class library (reusable)
├── TransliterateUkrainian/ # Console app (CLI)
└── TransliteratorUkrainian.Tests/ # Unit tests (xUnit)
Requirements
- .NET 9.0 or later
Build & Test
dotnet build
dotnet test
Usage
Quick text transliteration
# Forward (Cyrillic → Latin)
dotnet run -- --text "Шевченко"
# Output: Shevchenko
# Reverse (Latin → Cyrillic)
dotnet run -- --text --reverse "Shevchenko"
# Output: Шевченко
Stdin mode
echo "Юлія" | dotnet run -- --stdin
# Output: Yuliia
echo "Yuliia" | dotnet run -- --stdin --reverse
# Output: Юлія
Excel mode
# Default: reads input.xlsx, writes output.csv
dotnet run
# Custom files
dotnet run -- input.xlsx output.csv
# Process all sheets (outputs output_Sheet1.csv, output_Sheet2.csv, ...)
dotnet run -- input.xlsx output.csv --sheets all
# Process specific sheets
dotnet run -- input.xlsx output.csv --sheets 1,3
# Only transliterate columns 2 and 4 (others pass through unchanged)
dotnet run -- input.xlsx output.csv --columns 2,4
# Reverse transliteration on Excel file
dotnet run -- input.xlsx output.csv --reverse
Library Usage
Reference TransliteratorUkrainian.Core in your project:
using TransliteratorUkrainian.Core;
// Forward
string latin = UkrainianTransliterator.Transliterate("Шевченко"); // "Shevchenko"
// Reverse
string cyrillic = ReverseTransliterator.Transliterate("Shevchenko"); // "Шевченко"
Note: Reverse transliteration is inherently lossy. The letters и, і, ї, й all map to "y" or "i" in Latin depending on position, making perfect reversal impossible without a dictionary. Soft signs (ь) also cannot be recovered.
Transliteration Rules
Position-dependent letters use different forms at word start vs. mid-word:
| Letter | Word-initial | Mid-word |
|---|---|---|
| Є/є | Ye/ye | Ie/ie |
| Ї/ї | Yi/yi | I/i |
| Й/й | Y/y | I/i |
| Ю/ю | Yu/yu | Iu/iu |
| Я/я | Ya/ya | Ia/ia |
Special case: зг → zgh (to distinguish from ж → zh).
Example
Input (input.xlsx):
| Ім'я | Прізвище |
|---|---|
| Андрій | Шевченко |
Output (output.csv):
Andrii,Shevchenko
License
This project is open-source and free to use.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
| .NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
| .NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen40 was computed. tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.0
- No dependencies.
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.