Как отлаживать поиск Rails I18N? - PullRequest
8 голосов
/ 17 октября 2011

В документации Rails, по-видимому, существуют разные местоположения по умолчанию для строк I18N, в зависимости от того, был ли поиск I18N инициирован из представления, модели / проверки, контроллера, помощника, ..., если это метка и т. Д..

Как я могу увидеть, где Rails пытается искать вещи по умолчанию, например, когда я просто использую t ('. Кое-что')?

Ответы [ 4 ]

7 голосов
/ 17 октября 2011

Вы можете обезопасить патч I18N в режиме разработки, чтобы распечатать ключи I18n, которые ищутся в бэкенде.

Проверьте здесь:

http://www.unixgods.org/Rails/where_is_Rails_trying_to_lookup_L10N_strings.html

3 голосов
/ 17 октября 2011

автономный I18n.t никоим образом не ставит префикс вашего ключа перевода, вот вспомогательные методы / модули, которые отвечают за магию рельсов:

(нажмите ссылку "источник" подописание методов, чтобы увидеть, что происходит внутри)

ActionView:

http://api.rubyonrails.org/classes/ActionView/Helpers/TranslationHelper.html#method-i-t

scope_key_by_partial

ActiveModel:

http://api.rubyonrails.org/classes/ActiveModel/Translation.html#method-i-i18n_scope

AbstractController

http://api.rubyonrails.org/classes/AbstractController/Translation.html

1 голос
/ 21 января 2014

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

  1. Откройте консоль направляющих bundle exec rails c
  2. Запустите I18n.load_path.join("\n") и скопируйте ее в буфер обмена.Если вы используете pry с некоторыми помощниками буфера обмена , просто запустите copy в консоли
  3. Откройте новое окно терминала и запустите pbpaste | ack 'en.yml$' | xargs ack 'key:' Это выведет список файлов, содержащихключ I18n пытается получить доступ
0 голосов
/ 12 марта 2015

В rails 3.2 (возможно, также и в более низких версиях) t-хелпер создает промежуток в представлениях, которые показывают, какой ключ был найден для перевода.Это не решение для всех случаев (от контроллера и т. Д.), Но я думаю, что это может быть ответом для многих людей, которые ищут этот вопрос, где полный патч обезьяны сверху был бы сверху (Обезьяна патч также работает для меня в i18n 0.7.0 и дает более подробную информацию)

title="translation missing: de.<path to key>"
...