Можно ли использовать одновременно 2 бэкэнда I18n и использовать второй только в качестве запасного? - PullRequest
4 голосов
/ 28 октября 2010

В моем приложении на Rails я хотел бы использовать одновременно 2 бэкэнда, первый из которых хранит переводы в БД, а второй - бэкэнд по умолчанию на основе YML. Мне кажется, что этот второй бэкэнд служит резервным бэкэндом, т. Е. Если перевод не найден в первом, Rails ищет перевод во втором.

Можно ли этого достичь?

Редактировать

Моя мотивация заключается в том, что я не хотел бы хранить переводы Rails по умолчанию в первом бэкэнде. Первый используемый мной бэкэнд поставляется с веб-интерфейсом администратора, который отображает все переводы, содержащиеся в бэкенде, я не хочу загромождать этот интерфейс этими переводами по умолчанию. И я хотел бы не импортировать их в первый бэкэнд и не обновлять их, когда они реализованы.

1 Ответ

3 голосов
/ 29 октября 2010

Камень i18n делает это и совместим с рельсами. На самом деле рекомендуется использовать его.

Из документа I18n :: Backend :: Chain:

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

Чтобы использовать бэкэнд-цепочку, создайте его экземпляр и установите для него модуль I18n. Вы можете добавить связанные бэкэнды через инициализатор или бэкэнды сбруя:

# preserves the existing Simple backend set to I18n.backend 
I18n.backend = I18n::Backend::Chain.new(I18n::Backend::ActiveRecord.new, I18n.backend)

В реализации предполагается, что все цепочки добавлены в цепочку реализовать метод поиска с тем же API, что и у простого бэкенда.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...