gpt4 book ai didi

ruby-on-rails - Rails I18n 通过数据库专栏

转载 作者:数据小太阳 更新时间:2023-10-29 07:22:43 27 4
gpt4 key购买 nike

我有一个包含列 name_en 和 name_es 的遗留数据库表,我想知道在 ActiveRecord 中查询基于用户的 i18n 偏好的两种翻译的最佳方式是什么。

我看到的 Rails 的 i18n 实现更多地是关于将翻译存储在单独的哈希或表中,但我不想更改数据库的结构。

目前在旧的 PHP 应用程序中,我向 mysql 查询发送一个参数以替换 name_lang 并返回 name_enname_es AS name 用于在我调用该行的 ID 时显示。

最佳答案

您应该创建一个初始化程序,您将在其中放置:

class ActiveRecord::Base
def self.has_translation(*attributes)
attributes.each do |attribute|
define_method "#{attribute}" do
self.send "#{attribute}_#{I18n.locale}"
end
end
end
end

然后在你的模型中:

has_translation :name, :whatever

这样它会根据您当前的语言环境自动调用正确的列名。在您看来:

@variable.name # calling @variable.name_en if locale = :en
# @variable.name_es if locale = :es

当然,我假设不存在名为name 的表。

关于ruby-on-rails - Rails I18n 通过数据库专栏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6700054/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com