Как правильно добавлять тематические переводы новых строк?


Мы создаем новый шаблон и имеем некоторый новый текст, который еще нигде не определен.

Если бы они были определены раньше, мы бы добавили некоторые

"Mage_TheModule::Foo";"Fuh"

К translate.csv в теме.

Каков хороший способ работы с новыми переводами?

Должны ли они быть добавлены только к translate.csv явно без кода модуля?

Или лучше/требуется создать собственный модуль только для переводов?

Author: Fabian Schmengler, 2013-06-25

4 answers

Наилучшая практика зависит от предполагаемого использования темы: это тема, которая будет распространяться и использоваться повторно, или это тема для конкретного проекта?

1. Распределенная тема, предназначенная для повторного использования

В этом случае вообще избегайте использования translate.csv. Как только конечный пользователь добавит свою собственную translate.csv в свою дочернюю тему, это переопределит вашу (применяется обычный резервный механизм). Им нужно будет скопировать все из исходного файла и отслеживать изменения.

Вместо этого используйте модуль темы. Большинство тем поставляются с одним или несколькими модулями, которые содержат в основном тематические блоки, но также и новые переводы. Затем используйте Mage::helper('yourtheme')->__('your string') для переводов и:

  1. Вы защищены от конфликтов со сторонними модулями
  2. Пользователи могут переопределить этот конкретный перевод с помощью Your_Theme::your string в их translate.csv

2. Конкретная тема проекта

Для переводов в конкретной теме проекта был изобретен translate.csv, поэтому Я бы использовал его.

Вы должны знать, что область действия модуля напрямую не связана с существующими переводами в соответствующих CSV-файлах. Таким образом, вы можете использовать существующую область перевода без добавления нового модуля или изменения CSV-файлов модуля.

Например, если я добавлю пользовательские переводы, которые используются на странице продукта в блоке Mage_Catalog, перевод будет выглядеть следующим образом:

"Mage_Catalog::New translation","New translation"

Подробнее о том, как узнать объем конкретного перевода, здесь: Переводы и иерархия власти

( или вы можете использовать мое расширение translationhints)

 3
Author: Fabian Schmengler, 2017-04-13 12:54:59

Мой предпочтительный метод - особенно если вам нужны переводы для конкретного модуля или вы хотите распространять модуль - заключается в создании CSV-файлов для конкретного модуля (определенных в вашем модуле config.xml ) и поместите их в соответствующие каталоги переводов app/locale. Ваша "тема" определит, какую из них использовать, в зависимости от языковых настроек локали.

Если это зависит от темы, не используйте код модуля в translate.csv. Мне лично совсем не нравится translate.csv , но я предпочитайте его встроенному переводу - и.

Translate.csv должен быть предназначен для конечных пользователей вашего продукта, которым необходимо внести изменения (например, Сумка для покупок против Корзина покупок) к вашей теме.

Редактировать: два года спустя, чтобы исправить старое убеждение, которого я когда-то придерживался.

 4
Author: philwinkle, 2015-09-14 13:39:39

Если они относятся к конкретной теме, вам следует добавить их в translate.csv.
Если ваш сайт только на английском языке, вы можете даже игнорировать перевод.
Если ваш веб-сайт на другом языке и тексты имеют значение в зависимости от одного или нескольких модулей, вы должны добавить эти тексты в файл перевода этого конкретного модуля. (но не изменяйте английские файлы).
Обычно я использую второй подход, потому что при следующей "подтяжке лица" веб-сайта мне не нужно дублировать файл translate.csv тема.
Вы также можете создать отдельное расширение, которое будет обрабатывать только перевод текста, но если вы это сделаете, вам придется вызывать каждый текст следующим образом: Mage::helper('myhelper')->__('Some text'). Это нормально для внутреннего использования, но если вы хотите повторно использовать шаблоны, вам придется перенести расширение также из одного проекта в другой.

 1
Author: Marius, 2013-06-25 15:38:11

Ваш вопрос риторический и в то же время расплывчатый.

Мой подход в точности такой, как вы описали в своем вопросе. Если переводы не относятся к конкретному модулю, просто укажите "text":"text" в translate.csv вашей темы. Это исключит зависимости модулей, а также сделает вашу тему повторно распространяемой с переводами.

 1
Author: user487772, 2014-04-16 09:08:05