Здравствуйте!
Возникла следующая проблема:
Разрабатываю сайт на 2-х языках. В английском языке слово "To" используется в двух значения: "до" и "Кому".
Как правильно локализовать так, чтобы при переводе на русский язык слова переводились корректно?
Я пробовал одно из значений ("Кому") называть 'Email To' (т.е. вызывать t('Email To')), а в английский язык добавить перевод. Перевод добавил, но в английской версии сайта все равно почему-то отображается 'Email To'.
В чем дело? Как решить данную проблему?
Спасибо!
Комментарии
Решить можно множеством способов, вы впринципе правильно делаете, почему не работает ХЗ, такое часто бывает с переводами, там все запутано сильно.
Заметил, что у меня вообще не работает локализация на английском языке. Т.е. строки, передаваемые в функцию t(), выводятся в исходном виде, вне зависимости от того, есть ли перевод.
В итоге оставил просто t('To')
а в файле локализации указал файл, где эта строка используется:
#: ****
msgid "To"
msgstr "Кому"
В итоге все хорошо. (Хотя может помогло и не это, а то, что один раз "to" пишется с маленькой буквы, а в другой — с большой. Разбирать тщательнее не стал).
Всё что за # - это комментарий
Хотя тут сказано, что "The comment lines beginning with #, are special because they are not completely ignored by the programs as comments generally are" помоему такие комменты Друпалом игнорируются - отбирается первое похожее совпадение
Иногда полезно обновлять кэш кстати
Вы не правы, они записываются в поле location таблицы locales_source. Правда как затем это поле используется, я не знаю.
Кэш я обновлял, дело естественно не в нем.
После моих махинации в обоих местах (t('to') и t('To')) стал отображаться нужный перевод. Т.е. возможны 2 варианта: или регистр имеет значение, или используется поле location.