Вывести все языковые строки в Revel?

Я разрабатываю сервер API в Go, и сервер (на данный момент) обрабатывает все переводы для клиентов. Когда клиент API извлекает определенные данные, он также запрашивает переводы, доступные для данного раздела.

В идеале я хочу иметь следующую структуру папок:

/messages
  /home.en
  /home.fr
  /home.sv
  /news.en
  /news.fr
  /news.sv

Где news и home — разные модули.

Теперь вопрос, который у меня есть для Revel: возможно ли получить ВСЕ языковые строки для данного модуля и данной локали? Например, вытяните все домашние строки для en-US.

РЕДАКТИРОВАТЬ:

Я хотел бы вывести (что-то, что я могу вернуть клиенту) строку переводов ключ: значение.

Любое руководство будет оценено.


person Peter    schedule 03.09.2013    source источник
comment
Вы храните все en-US, en-UK, en-AU и т. д. в папках home.en или news.en? Или они будут разделены на папки типа home.en-US и home.en-UK? Просто пытаюсь определить, можете ли вы просто открыть все файлы из fmt.Sprintf("/messages/%s.%s", module, locale).   -  person Intermernet    schedule 04.09.2013
comment
Что ж, согласно предложению Revel, каждая локаль будет иметь отдельный раздел в одном и том же файле. В настоящее время я не ожидаю, что будет много различий, например, почтовый индекс против почтового индекса. Поэтому я не могу гарантировать необходимость отдельного файла для каждой локали. Если это ответит.   -  person Peter    schedule 05.09.2013


Ответы (1)


Мне кажется, что revel использует перевод на основе сообщений (так же, как и gettext), поэтому вам нужна исходная строка, чтобы получить перевод. Эти строки хранятся в объектах конфигурации, которые сами хранятся в messages файла i18n. go, отсортированные по языку.

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

Вы можете обойти это, скопировав код loadMessageFile или разветвив ваша версия revel и экспорт loadMessageFile или parseMessagesFile. Это также отличная возможность создать запрос на вытягивание.

Обратите внимание, что локализации хранятся в формате файла INI, анализируемом robfig/config, поэтому ручной анализ также возможен ( хотя и не рекомендуется).

person nemo    schedule 10.09.2013