1

Итак, я хотел предварительно загрузить правила транслитерации для многих локалей, которые у меня есть. Я включил следующий код в одном из моих Инициализаторы файлов (приложение/Config/Инициализаторы/locales.rb):Конфигурация правил транслитерации Rails I18n

I18n.backend.store_translations(:en, :i18n => { 
:transliterate => { 
    :rule => { 
     "а" => "a", 
     "б" => "b" 
    } 
} 
}) 

Но, если я пытаюсь сделать транслитерацию: I18n.transliterate("Some Russian text"), я получаю кучу «? " знаки, означающие, что у транслитератора нет правил, поэтому он не знает, как сделать транслитерацию.

НО!

Если я их (правила), определенные в локали файле (en.yml), как это:

en: 
    i18n: 
    transliterate: 
     rule: 
     а: "а" 
     б: "b" 

Тогда работает - Хотя у меня есть вопрос, относительно того, как это работает. Если я укажу I18n.transliterate("абвгд") - работает хорошо, но если я делаю "абвгд".parameterize, то для некоторой причины pescy буква «a» находится в состоянии ommited (Как если бы не было буквы «a» в первую очередь).

ПОЧЕМУ?

Может кто-нибудь помочь?

ответ

2

Похоже, вы получили кириллицу 'а' (код 1072), нанесенный на кириллицу 'а' в вашем en.yml. Вам просто нужно сопоставить кириллицу «а» с римским «а»?

en: 
    i18n: 
    transliterate: 
     rule: 
     а: "a" 
     б: "b" 

(оба, кажется, выглядят одинаково на этом сайте, я думаю).

+0

Мне нужно было отобразить кириллицу «а» на латинский (?) «А». – Dmitri

+0

ОК, так что в основном с тем, что один фиксированный (я думаю), почему я не могу использовать инициализаторы для загрузки правил транслитерации? – Dmitri