Transliteration with Rails

List of common rules that provide transliteration of special characters. Uses the parameterize method provided by Rails: ```ruby # encoding: utf-8 rules = { "æ" => "ae", "ø" => "o", "Ø" => "O", "ñ" => "n", "Ñ" => "N", "ä" => "a", "ö" => "o", "ü" => "u", "Ä" => "A", "Ö" => "O", "Ü" => "U", "À" => "A", "Á" => "A", "Â" => "A", "Ã" => "A", "Ä" => "A", "Å" => "A", "Æ" => "Ae", "Ç" => "C", "È" => "E", "É" => "E", "Ê" => "E", "Ë" => "E", "Ì" => "I", "Í" => "I", "Î" => "I", "Ï" => "I", "Ð" => "D", "Ñ" => "N", "Ò" => "O", "Ó" => "O", "Ô" => "O", "Õ" => "O", "Ö" => "O", "Ø" => "O", "Ù" => "U", "Ú" => "U", "Û" => "U", "Ü" => "U", "Ý" => "Y", "Þ" => "Th", "ß" => "ss", "à" => "a" , "á" => "a", "â" => "a", "ã" => "a", "ä" => "a", "å" => "a", "æ" => "ae", "ç" => "c" , "è" => "e", "é" => "e", "ê" => "e", "ë" => "e", "ì" => "i", "í" => "i", "î" => "i", "ï" => "i", "ð" => "d", "ñ" => "n", "ò" => "o", "ó" => "o", "ô" => "o", "õ" => "o", "ö" => "o", "ø" => "o", "ù" => "u", "ú" => "u", "û" => "u", "ü" => "u", "ý" => "y", "þ" => "th", "ÿ" => "y", "Ā" => "A", "Ă" => "A", "Ą" => "A", "Ć" => "C", "Ĉ" => "C", "Ċ" => "C", "Č" => "C", "Ď" => "D", "Đ" => "D", "Ē" => "E", "Ĕ" => "E", "Ė" => "E", "Ę" => "E", "Ě" => "E", "Ĝ" => "G", "Ğ" => "G", "Ġ" => "G", "Ģ" => "G", "Ĥ" => "H", "Ħ" => "H", "Ĩ" => "I", "Ī" => "I", "Ĭ" => "I", "Į" => "I", "İ" => "I", "IJ" => "Ij", "Ĵ" => "J", "Ķ" => "K", "Ĺ" => "L", "Ļ" => "L", "Ľ" => "L", "Ŀ" => "L", "Ł" => "L", "Ń" => "N", "Ņ" => "N", "Ň" => "N", "Ŋ" => "Ng", "Ō" => "O", "Ŏ" => "O", "Ő" => "O", "Œ" => "OE", "Ŕ" => "R", "Ŗ" => "R", "Ř" => "R", "Ś" => "S", "Ŝ" => "S", "Ş" => "S", "Š" => "S", "Ţ" => "T", "Ť" => "T", "Ŧ" => "T", "Ũ" => "U", "Ū" => "U", "Ŭ" => "U", "Ů" => "U", "Ű" => "U", "Ų" => "U", "Ŵ" => "W", "Ŷ" => "Y", "Ÿ" => "Y", "Ź" => "Z", "Ż" => "Z", "Ž" => "Z", "ā" => "a", "ă" => "a", "ą" => "a", "ć" => "c", "ĉ" => "c", "ċ" => "c", "č" => "c", "ď" => "d", "đ" => "d", "ē" => "e", "ĕ" => "e", "ė" => "e", "ę" => "e", "ě" => "e", "ĝ" => "g", "ğ" => "g", "ġ" => "g", "ģ" => "g", "ĥ" => "h", "ħ" => "h", "ĩ" => "i", "ī" => "i", "ĭ" => "i", "į" => "i", "ı" => "i", "ij" => "ij", "ĵ" => "j", "ķ" => "k", "ĸ" => "k", "ĺ" => "l", "ļ" => "l", "ľ" => "l", "ŀ" => "l", "ł" => "l", "ń" => "n", "ņ" => "n", "ň" => "n", "ʼn" => "n", "ŋ" => "ng", "ō" => "o", "ŏ" => "o", "ő" => "o", "œ" => "oe", "ŕ" => "r", "ŗ" => "r", "ř" => "r", "ś" => "s", "ŝ" => "s", "ş" => "s", "š" => "s", "ţ" => "t", "ť" => "t", "ŧ" => "t", "ũ" => "u", "ū" => "u", "ŭ" => "u", "ů" => "u", "ű" => "u", "ų" => "u", "ŵ" => "w", "ŷ" => "y", "ž" => "z", "ź" => "z", "ż" => "z" } [:fi, :sv, :en].each do |locale| I18n.backend.store_translations(locale, :i18n => { :transliterate => { :rule => rules } }) end puts 'źåöé'.parameterize ``` Use it e.g. to create slugs: ```ruby module Slug extend self def to_slug(text) text.parameterize end end Slug.to_slug('åäö') => 'aao' ```