Создание переводов lorem ipsum для Rails I18n

У меня есть большое приложение Rails, которое я создал. Он еще не переведен ни на один язык, но я извлек 99% строк в yaml. Они приходят отовсюду — представления, модели, JS.

Остался 1%, и отследить его оказалось непросто.

Я хотел бы взять мои существующие файлы yaml и «перевести» их на новый язык, Lorem Ipsum. То есть, пропустить файлы через какой-то процессор, который будет генерировать действительный язык i18n YAML с тарабарским содержимым.

Затем я бы импортировал их, переключился на тестовую локаль (я мог бы назвать их es.yml или как-то еще) и прошелся по моему приложению в поисках неработающего форматирования и строк на английском языке.

Единственная небольшая проблема... как мне создать этот файл lorem ipsum? Я не могу просто взять все строки в кавычках, потому что там есть токены I18n нескольких форматов.

Любые идеи/советы будут оценены.


person ezuk    schedule 06.08.2014    source источник
comment
Как насчет того, чтобы просто переопределить методы I18n для создания тарабарщины?   -  person rossta    schedule 06.08.2014
comment
Интересная идея, спасибо! Но тогда как сгенерированный lorem ipsum будет соответствовать по длине значениям yaml?   -  person ezuk    schedule 06.08.2014
comment
Ваш метод может интерпретировать длину фактического результата и возвращать строку lorem ipsum той же длины. Смотрите мой ответ ниже.   -  person rossta    schedule 06.08.2014


Ответы (1)


Здесь я переопределяю I18n#translate, чтобы вернуть lorem ipsum ожидаемой длины текста. Я не проверял это, но теоретически это должно выглядеть примерно так:

module I18n

  alias_method :translate_without_lorem_ipsum, :translate

  def translate_with_lorem_ipsum(*args)
    actual_text = translate_without_lorem_ipsum(*args)
    LoremIpsum.text_with_length(actual_text.length) # imaginary method returning text of given length
  end

  alias_method :translate, :translate_with_lorem_ipsum

end

Поскольку вы используете рельсы, вы можете заменить использование alias_method на alias_method_chain.

person rossta    schedule 06.08.2014