Как я могу переопределить переводы на основе Plone 4 экземпляра - PullRequest
2 голосов
/ 16 июня 2011

У меня есть экземпляр Zope со множеством сайтов для каждого клиента. Я хочу переопределить отдельные переводы, такие как формат даты, только для одного сайта, не затрагивая другие. Как мне это сделать?

Учебные руководства, такие как http://maurits.vanrees.org/weblog/archive/2010/10/i18n-plone-4#overriding-translations, по-видимому, указывают на то, что пользовательские переводы переопределяют все сайты в экземпляре zope.

Ответы [ 2 ]

4 голосов
/ 26 июня 2011

Вот как я это решил.Это немного хакерское решение, но оно работает для моего конкретного сценария.

В соответствии с http://maurits.vanrees.org/weblog/archive/2010/10/i18n-plone-4#overriding-translations Я

  • создал свой собственный пакет локалей.
  • переопределил домен plonelocales только для одного конкретного языкового варианта, в данном случае en_AU.
  • загрузил пакет в zope через buildout с особым вниманием, чтобы убедиться, что это первый слаг ZCML (не в инструкциях в сообщении блога неправильно указано, что это должен быть первый пакет в разделе яиц. Этого было недостаточно, чтобызаставить меня работать).
  • для каждого сайта, на котором я хотел переключить форматы даты, я перешел к настройке сайта> Языки и переключил язык на «английский (австралийский)».

Другой недостаток заключается в том, что при выпуске и развертывании пакета locales убедитесь, что вы

  • сначала сгенерировали файл .mo (это сделано для вас, если вы запускаете zope локально)
  • и вы использовали файл MANIFEST.in, чтобы сообщить setuptools о включении всех файлов .mo, поскольку не следует помещать файлы .mo под контроль исходного кода, а по умолчанию в setuptools включаются только файлы под управлением исходного кода.

Это не дает мне индивидуальный формат даты для каждого отдельного сайта, но достаточно хорош, если на самом деле вы хотите, чтобы формат даты был языковым вариантомвы решили использовать.

3 голосов
/ 16 июня 2011

Вы можете реализовать свою собственную утилиту zope.i18n.interfaces.ITranslationDomain, которая ищет переводы в другом месте.Обычные утилиты домена переводов хранят список каталогов сообщений gettext.Они загружаются из файлов mo в файловой системе и регистрируются в ZCML.

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

...