Я обнаружил, что гем Unidecode слишком тяжеловесный, загружая почти 200 файлов YAML для того, что мне было нужно. Я знал, что iconv
имел некоторую поддержку основных переводов, и хотя он не идеален, он встроен и довольно легкий. Вот что я придумал:
require 'iconv' # unless you're in Rails or already have it loaded
def slugify(text)
text.downcase!
text = Iconv.conv('ASCII//TRANSLIT//IGNORE', 'UTF8', text)
# Replace whitespace characters with hyphens, avoiding duplication
text.gsub! /\s+/, '-'
# Remove anything that isn't alphanumeric or a hyphen
text.gsub! /[^a-z0-9-]+/, ''
# Chomp trailing hyphens
text.chomp '-'
end
Очевидно, вам, вероятно, следует добавить его в качестве метода экземпляра для любых объектов, на которых вы будете его запускать, но для ясности я этого не сделал.