Transliteration Rules

Transliteration is the conversion of text from one script to another. In the context of web applications, this is most commonly used to convert characters from non-Latin alphabets (like Cyrillic, Greek, or Arabic) into an ASCII-friendly equivalent. This is especially useful for generating clean, readable URLs (slugs) or for simplifying search queries.

rails-i18n provides transliteration rules for a variety of languages.

How to Use

The Rails framework uses the i18n gem's transliteration capabilities, which are automatically enhanced by rails-i18n. You can use it directly like this:

# With Ukrainian rules loaded from rails-i18n
I18n.transliterate("Київ")
# => "Kyiv"

# With German rules loaded
I18n.transliterate("Übermut")
# => "Uebermut"

Many libraries, such as friendly_id, use this feature under the hood to generate slugs from titles.

Supported Languages

This gem provides transliteration rules for the following locales, found in the rails/transliteration/ directory:

  • az (Azerbaijani)
  • bg (Bulgarian)
  • ca (Catalan)
  • da (Danish)
  • de (German)
  • el (Greek)
  • es (Spanish)
  • fa (Persian)
  • fr (French)
  • hu (Hungarian)
  • ka (Georgian)
  • oc (Occitan)
  • pl (Polish)
  • pt (Portuguese)
  • ro (Romanian)
  • ru (Russian) - Uses a custom Ruby rule for complex cases.
  • uk (Ukrainian) - Uses a custom Ruby rule for complex cases.
  • vi (Vietnamese)

These rules are automatically loaded when you include the gem in your project, unless you have disabled the :transliteration module in your configuration.