Как проверить, использовал ли Globalize запасной вариант?

Я использую:

gem 'rails', '4.0.0'
gem 'globalize', '~> 4.0.2'

В моей модели Image.rb у меня есть две колонки, которые я хочу перевести (английский и немецкий):

translates :name, :description

В application.rb я установил:

config.i18n.fallbacks = true

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

Я планировал добавить на мой взгляд что-то вроде

if fallback.true?
  Message: This text has not been translated yet and is shown in English

Есть ли способ проверить, использовал ли Globalize запасную опцию и показать сообщение в этом случае?

1 ответ

Решение

Глобализация добавляет translated_locales метод к экземплярам переведенной модели.

translated_locales возвращает массив всех доступных локалей для конкретного экземпляра. Когда этот массив не включает текущий I18n.locale тогда будет использован запасной вариант.

Вы можете использовать это так:

<%= image.name %>
<%= image.description %>

<% unless image.translated_locales.include?(I18n.locale) %>
  Message: This text has not been translated yet and is shown in English
<% end %>
Другие вопросы по тегам