ruby-on-rails - 同一个表中列的翻译

标签 ruby-on-rails internationalization rails-i18n globalize3 globalize

我有一张小 table :

create_table :cities do |t|
  t.string :name
end

我需要国际化“名称”列,我不想为此创建单独的表。是否可以将用于翻译的列添加到“城市”表?结果我希望这个表的迁移看起来像这样:
create_table :cities do |t|
 t.string :en_name
 t.string :de_name
 t.string :fr_name
end

目前我正在尝试使用“全局化”gem,也许我应该为此使用其他一些解决方案,请指教。

最佳答案

标准做法是使用带有 globalize gem 的翻译表。如果不想使用 globalize gem,可以执行以下操作:

class City < ActiveRecord::Base
   AVAILABLE_LOCALES = [:en, :de, :fr]
   def name
     current_locale = I18n.locale
     if AVALIABLE_LOCALES.include? current_locale
        self.send("#{current_locale.to_s}_name")  
     else
        #default language to use
        self.en_name
     end
   end
end

这只是显示访问器(名称函数)的代码,您可能还想编写一个 mutator(名称= 函数),以便您可以根据当前语言环境设置值。 I18n.locale 将为您提供当前的语言环境。

关于ruby-on-rails - 同一个表中列的翻译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24568497/

相关文章:

ruby-on-rails - Rails 6 中是否必须手动将 ApplicationHelper 包含在 ApplicationController 中?

ruby-on-rails - 如何使用 Ruby 推送 Celery 任务

ruby-on-rails - 在 Rails 中使用 Mustache 渲染邮件模板

ruby-on-rails - rails 4 : How to translate devise view?

ruby-on-rails - Stripe - 检查客户是否存在

graph - Gatsby useStaticQuery 与语言环境

objective-c - objective-c/ cocoa : How to write a proper multilanguage app?

ruby-on-rails - 如何重新加载 "production"中的语言文件

ruby-on-rails - 由于错误的默认语言环境,我的 Rails 应用程序规范随机失败

java - Spring Web MVC : Internationalization/Localization : No message found