Django i18n вместе с сообщениями jQuery Globalize для одностраничного приложения
У меня есть уровень API на основе Django, который внутренне использует возможности Django i18n (ugettext и т. Д.), Чтобы обеспечить перевод некоторых выходных данных. API передает одностраничное приложение Javascript, которое использует Globalize jQuery и его собственные средства обмена сообщениями через файлы CLDN/messages и т. Д.
На данный момент у меня есть собственный сгенерированный языковой файл для пользовательского интерфейса в виде JSON-файла для модуля сообщений Globalize.
В идеале я хочу вывести весь переводимый текст из одного места. Я надеялся использовать Django в качестве единственного источника правды переводимого языка (поскольку я могу использовать Rosetta как способ облегчения переводов). Тем не менее, это не так тривиально, как заставить их работать вместе, и я стараюсь не придумывать свои собственные соглашения, где они могли бы уже существовать, чтобы избежать путаницы в будущем с другими разработчиками.
Во-первых, некоторые текстовые блоки больше, чем несколько слов. Используя ugettext Джанго, я должен предоставить текст, который будет переведен или показан в качестве аргумента - это хорошее соглашение, предусматривающее предоставление только ключа и требующего перевода (или иначе, только ключ будет отображаться)?
Во-вторых, существует ли установленная конвенция для этого вида использования?
Я не хочу изобретать велосипед или отклоняться от нормы, если норма имеет смысл для этого сценария.
И третье - я должен выбирать между двумя? Или переводы могут жить в мире Django/API и затем выводиться в формат Globalize/messages по запросу пользовательского интерфейса? Или я должен использовать предоставленные Django реализации gettext для Javascript?
Спасибо
1 ответ
Интернационализация JS в Django очень мощная и включает в себя все хорошие практики. Вы сказали это, лучше не изобретать велосипед.
Если ваши коллеги привыкли использовать Django, они оценят этот шаг, на мой взгляд.
Я не эксперт, но Django i18n может обрабатывать более нескольких слов на блоки, он может обслуживать абзацы, .po
файл будет таким:
msgid ""
"Lorem ipsum dolor sit amet, consectetur adipiscing elit."
" Duis ut lacus nec lacus rhoncus luctus."
" Donec luctus fringilla massa, eu accumsan odio vestibulum fermentum."
" Fusce arcu urna, tincidunt id turpis sed, rutrum lobortis sem."
msgstr ""
"Translation goes here, and it can be on multiple lines"