Нужны ли повторные переводы для одинаковых строк в Globalize3?

Я надеялся использовать Globalize3 для перевода моделей в проект, который я строю. Однако, пробуя это похоже на каждую модель, скажем, Post лайк:

class Post < ActiveRecord::Base
    translates :title, :body
end

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

Я понимаю, что во многих случаях струны уникальны, поэтому это не проблема, однако представьте модель автомобиля с цветным атрибутом. Если в системе сотни автомобилей одинакового цвета, должен ли я переводить этот цвет много раз? Я хотел бы просто перевести один раз, и все могут использовать один и тот же перевод, если строка одинакова.

Я что-то неправильно понял или это действительно так, как работает Globalize3? Если так, то это действительно звучит так, как будто подходит, когда строки уникальны, как в блоге.

Есть ли другой драгоценный камень, который делает то, что мне нужно?

Спасибо за вашу помощь!

2 ответа

По сути, именно так работает Globalize, что атрибут каждой записи модели переводится и сохраняется в записи перевода.

Ваша проблема может быть решена путем нормализации таблицы, поэтому цвет становится самой моделью, и вы переводите это.

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

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

Или как вариант выше, вы используете имена цветов в качестве клавиш i18n, например t("color.#{car.color.parameterize}")и в en.yml есть

en:
  color:
    dark-blue: 'Dark Blue'

Это проблема, которую вы не можете легко избежать, если переводимые строки являются "стандартными", вы можете воспользоваться решением, предложенным lulalala (смоделируйте эту информацию).

У меня была похожая проблема (не в Rails, но она такая же), и мы "исправили" ее с помощью задачи, которая периодически и автоматически копирует переводы для дублированного контента.

Другие вопросы по тегам