sonic-pi
https://github.com/sonic-pi-net/sonic-pi
C++
Code. Music. Live.
ActiveSupport::Inflector#transliterate
Replaces non-ASCII characters with an ASCII approximation, or if none
exists, a replacement character which defaults to "?".
transliterate('Ærøskøbing')
# => "AEroskobing"
Default approximations are provided for Western/Latin characters,
e.g, "ø", "ñ", "é", "ß", etc.
This method is I18n aware, so you can set up custom approximations for a
locale. This can be useful, for example, to transliterate German's "ü"
and "ö" to "ue" and "oe", or to add support for transliterating Russian
to ASCII.
In order to make your custom transliterations available, you must set
them as the <tt>i18n.transliterate.rule</tt> i18n key:
# Store the transliterations in locales/de.yml
i18n:
transliterate:
rule:
ü: "ue"
ö: "oe"
# Or set them using Ruby
I18n.backend.store_translations(:de, i18n: {
transliterate: {
rule: {
'ü' => 'ue',
'ö' => 'oe'
}
}
})
The value for <tt>i18n.transliterate.rule</tt> can be a simple Hash that
maps characters to ASCII approximations as shown above, or, for more
complex requirements, a Proc:
I18n.backend.store_translations(:de, i18n: {
transliterate: {
rule: ->(string) { MyTransliterator.transliterate(string) }
}
})
Now you can have different transliterations for each locale:
I18n.locale = :en
transliterate('Jürgen')
# => "Jurgen"
I18n.locale = :de
transliterate('Jürgen')
# => "Juergen"Edit
git clone [email protected]:sonic-pi-net/sonic-pi.git
cd sonic-pi
open app/server/ruby/vendor/activesupport-7.0.6/lib/active_support/inflector/transliterate.rb
Contribute
# Make a new branchgit checkout -b -your-name--update-docs-ActiveSupport--Inflector-transliterate-for-pr
# Commit to gitgit add app/server/ruby/vendor/activesupport-7.0.6/lib/active_support/inflector/transliterate.rbgit commit -m "better docs for ActiveSupport::Inflector#transliterate"
# Open pull requestgem install hub # on a mac you can `brew install hub`
hub fork
git push <your name> -your-name--update-docs-ActiveSupport--Inflector-transliterate-for-pr
hub pull-request
# Celebrate!