Rails i18n API 三重 Dashes/Hyphens、省略号和换行符

Rails i18n API Triple Dashes/Hyphens, Ellipsises and Newlines

我使用 i18n API 是有目的的。我为 MySQL 数据库播种:

Translation.find_or_create_by(locale: 'en', key:'key1', value: 'value1')

然而,在种子之后,数据在数据库中保存为:

locale: en
key: key1
value: --- value1\n...\n

所有列都是 varchar(255) 和 'utf8_unicode_ci'。

在 Rails i18n 文档中,我找不到对此的解释。

因为那个问题,我不能使用 find_or_create_by() 方法。它 do/can 不检查值列并添加重复条目。

有解决办法吗?

翻译模型:

Translation = I18n::Backend::ActiveRecord::Translation

if Translation.table_exists?
  I18n.backend = I18n::Backend::ActiveRecord.new

  I18n::Backend::ActiveRecord.send(:include, I18n::Backend::Memoize)
  I18n::Backend::Simple.send(:include, I18n::Backend::Memoize)
  I18n::Backend::Simple.send(:include, I18n::Backend::Pluralization)

  I18n.backend = I18n::Backend::Chain.new(I18n::Backend::Simple.new, I18n.backend)
end

您在 value 列中看到的是值 serialized to YAML(由 I18n::Backend::ActiveRecord::Translation 完成);这是多元化所必需的。

当存储在数据库中的值需要序列化时,

#find_or_create_by 不能正常工作

做一个简单的种子尝试:

Translation.create_with(value: 'value1').find_or_create_by(locale: 'en', key: 'key1')