Как правильный способ добавить специфичные для темы переводы новых строк?
-
16-10-2019 - |
Вопрос
Мы создаем новый шаблон и у нас есть новый текст, который еще нигде не определен.
Если они будут определены, прежде чем мы добавим немного
"Mage_TheModule::Foo";"Fuh"
в translate.csv
в теме.
Как хороший способ справиться с новыми переводами?
Они будут добавлены только к translate.csv
Ясно без кода модуля?
Или это лучше / требуется для создания собственного модуля только для переводов?
Решение
Лучшая практика зависит от предполагаемого использования темы: это тема, которая будет распространяться и использовать повторно, или это тема, специфичная для проекта?
1. Распределенная тема, предназначенная для повторного использования
Избегать использования translate.csv
вообще в этом случае. Как только конечный пользователь добавляет свой собственный translate.csv
К его детской теме это отменит вашу (обычный их запасной механизм применяется). Им нужно будет скопировать все из исходного файла и отслеживать изменения.
Вместо этого используйте тематический модуль. Большинство тем поставляются с одним или несколькими модулями, которые содержат в основном конкретные темы блоки, а также с новыми переводами. Затем используйте Mage::helper('yourtheme')->__('your string')
для переводов и:
- Вы в безопасности от конфликтов со сторонними модулями
- Пользователи могут переопределить этот конкретный перевод с помощью
Your_Theme::your string
в их translate.csv
2. Тема конкретной проекта
Для переводов в теме, конкретной проекта, translate.csv
был изобретен, поэтому я бы использовал это.
Вы должны знать, что объем модуля не подключен напрямую с существующими переводами в соответствующих файлах CSV. Таким образом, вы можете использовать существующую область перевода без добавления нового модуля или модуля CSV -модуля.
Например, если я добавляю пользовательские переводы, то есть используется на странице продукта внутри Mage_Catalog
Блок, перевод выглядит так:
"Mage_Catalog::New translation","New translation"
Подробнее о том, как выяснить объем конкретного перевода здесь: Переводы и иерахи
(или вы можете использовать мой Переводчики расширение)
Другие советы
Мой предпочтительный метод - особенно если вам нужны специфичные для модуля переводы или вы хотите распространять модуль - создать специфичные для модуля файлы CSV (определяемые в config.xml вашего модуля) и бросить их в app/locale
Соответствующие каталоги перевода. Ваша «тема» выяснит, какой из них использовать из -за настройки языка локали.
Если это специфично для темы, не Используйте код модуля в translate.csv. я лично нет как translate.csv вообще - но я предпочитаю его встроенный перевод - и.
Translate.csv должен быть для конечных пользователей вашего продукта, которые должны вносить настройки (например, сумка для покупок против корзины) на вашу тему.
Редактировать: два года спустя, чтобы исправить старую веру, которую я когда -то придерживался.
Если они конкретны темы, вы должны добавить их в translate.csv
.
Если ваш сайт находится только на английском языке, вы даже можете игнорировать перевод.
Если ваш сайт находится на другом языке, а тексты имеют значение в зависимости от одного или нескольких модулей, вы должны добавить эти тексты в файл перевода этого конкретного модуля. (Но не изменяйте английские файлы).
Я обычно использую второй подход, потому что на следующем «подъеме лица» веб -сайта мне не нужно дублировать translate.csv
Файл темы.
Вы также можете создать отдельное расширение, которое будет обрабатывать только текстовый перевод, но если вы это сделаете Mage::helper('myhelper')->__('Some text')
. Анкет Это нормально для внутреннего использования, но если вы хотите повторно использовать шаблоны, вам придется перенести расширение также с одного проекта на другой.
Ваш вопрос риторичен и смутный одновременно.
Мой подход точно так же, как вы описали в своем вопросе. Если переводы не специфичны для модуля, установите это ясно "text":"text"
в translate.csv
вашей темы. Он исключит зависимости модуля, а также сделает вашу тему повторной распределением с переводами.