问题标签 [rails-i18n]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
173 浏览

ruby-on-rails-3 - 导轨。同时验证多个语言环境

我有一个具有两种语言环境的双语网站:enru

我希望我的网站有 i18n。我使用“ globalize3 ”和“ easy_globalize3_accessors ”宝石。

我可以使用标准表格创建和编辑部门。语言环境由 URL:example.com/en/departments/example.com/ru/departments/

现在如果我想创建一个新的部门项目,我会看到这样的事情:

  1. 当前语言环境的主要形式 (I18n.locale)。
  2. 在同一页面上添加翻译的复选框。
  3. 如果复选框处于活动状态,则在主表单旁边显示另一个区域设置的另一个表单。
  4. 最重要的是——每个语言环境的验证必须不同。说,对于en它应该传递 ASCII 符号;对于ru——西里尔字母。

我的问题是第 4 号。我无法使用复选框进行验证。

主要问题是:复选框活动?如果是,请显示另一个表单并对其运行验证。如果否,则不显示任何内容并且不对该表单运行验证,将其传递为空。

现在,如果我填写两张表格,一切都会像魅力一样。

好的。我试过了。

模型

控制器

查看(new.haml.html)不带复选框

请帮助我了解我必须做什么。

0 投票
1 回答
6786 浏览

ruby-on-rails-3.2 - rails-i18n translations seem to be not loaded

Stage:

I have a Rails 3.2 application, I add to my Gemfile:

then I execute bundle install.

In a view I request a i18n message, for example:

and in config/initializers/locate.rb, I set default locate:

Problem:

What's wrong? Is rails-i18n not loaded right?

Test:

Let's add puts I18n.load_path in config/initializers/locate.rb file:

I18n.default_locale = :es I18n.available_locales = :es

puts I18n.load_path

and then restart application, asi you can see there are listed all path loaded:

In this list there is es messages.

Again, what's wrong?

0 投票
1 回答
1612 浏览

ruby-on-rails - Rails 引擎 ActiveRecord 模型 I18n

我有一个依赖于单独引擎(存储在 中vendor/engine_name)的 Rails 应用程序。该引擎有一个 ActiveRecord 对象Bar

在该引擎的config/locales/en.yml文件中,我尝试过:

我也试过:

和:

但无论如何,当我Foo::Bar.human_attribute_name("bar_attr")从父应用程序调用时,我得到“Bar attr”(例如默认的人类属性名称)。请注意,Foo::Bar.model_name.human当我尝试使用以下方法进行翻译时,也会出现同样的问题:

我不确定应用程序/引擎结构是否相关,因为我已经尝试了上述三个en.yml父应用程序的翻译文件中尝试了上述三种格式,但没有运气。

为了使这些模型名称/属性正确翻译,我缺少什么?

0 投票
0 回答
41 浏览

ruby - 使用 i18n 进行 Ruby / RSpec 测试

我正在使用 rspec 为我的 iOS 应用程序执行测试,即测试是用 ruby​​ 编写的。我可以将我的应用程序的语言更改为其他语言,因此我保持 ruby​​ 测试脚本通用,以便我可以为任何语言运行它。

但是如何使用 rspec 为其他语言运行测试。我是 rspec/ruby 领域的新手,需要一些有关如何处理 i18n 以进行 rspec 测试的帮助/信息。如何检查我的应用程序现在使用的语言以及我想要运行测试的语言。

请建议。

0 投票
0 回答
1356 浏览

rubygems - 未初始化的常量 i18n

我正在尝试使用 rspec 进行内部化测试,因此使用 i18n gem。

我看到我已经安装了 gem,但是在我的测试中我正在寻找 default_locale。我做了puts I18n.default_locale

我收到'Uninitialized constant I18n'错误。

以前有没有人遇到过类似的错误?

0 投票
1 回答
75 浏览

ruby-on-rails - Rails 国际化翻译一个单词并附加到模型字段

我的翻译效果很好,但是当我尝试附加模型的一个字段时,我得到了错误:

这是代码:

这是错误:

问题是当我尝试附加模型字段时。但我在谷歌上找不到解决方案,我认为这不是一个选择:

在此先感谢您的帮助。

0 投票
1 回答
31 浏览

ruby-on-rails - 未翻译模型参数

摘自我的 config/locales/models/de.yml:

数据库中确切的意思是messages,只是验证错误的message而不是“Nachricht”写成“Messages”。有什么问题?

0 投票
1 回答
2268 浏览

ruby-on-rails - 如何在 Ruby on Rails 上按格式翻译字符串?

我从外部 API 将一些字符串输入到我的数据库中,我想在显示用户之前翻译它们。我不想通过 globalize3 翻译每个对象,因为我要翻译的内容具有某种格式。

例如,我需要使用日期更改所有信息值:

“游戏从 22.08.2013 推迟”-> 日期更改但字符串相同。

我尝试使用字符串作为键,如果我没有变量它可以工作:

config/locale/tr.yml 文件

tr:

世界你好:“Merhaba Dunya”

导轨控制台

I18n.t("你好世界")

=> “梅尔哈巴杜尼亚”

如何使用带有变量的字符串作为键并获得翻译?

我想定义这个:

tr:

"比赛从 %{d​​ate} 推迟" => "Mac %{date} tarihinden ertelendi"

我想通过以下方式使用它:

I18n.t("比赛从 22.08.2013 推迟")

=> "Mac 22.08.2013 tarihinden ertelendi"

使用 I18n 可能不是我的情况的最佳解决方案,但我不知道如何解决这个问题。

0 投票
1 回答
36 浏览

ruby-on-rails - 如何将代码分配给应用程序自定义错误消息

如何在 Ruby on Rails 中为应用程序自定义错误消息提供代码。当用户看到错误时,他应该能够知道错误代码和消息。

例如,我想达到以下结果,以防出现相应的错误。

这是一个多语言应用程序。/config/locales/en.yml 中存在错误消息的翻译。我正在使用 i18n gem 进行翻译。这就是没有代码的错误消息的翻译方式。

0 投票
1 回答
2098 浏览

ruby-on-rails-3.2 - i18n 路由到已安装的引擎 - 忽略语言环境

我有一个内置 i18n 支持的应用程序 (my_test_app)。目前,有两种语言文件可用,FR 和 EN,如果我在它们之间来回切换,一切正常,如我期望看到的非引擎功能,如用户索引/显示/编辑/删除 (ISED)选项。

在 my_test_app 中,我安装了一个 Rails 引擎(my_engine),它有一个控制器和模型集(engine_job)。所以,一个可行的 URL 应该是

然而,无论我选择哪种语言,它总是以 EN 显示。检查参数显示:

然而选择的翻译是EN。

my_test_app route.rb:

my_engine route.rb:

耙路线:

此外,在引擎中单击的任何链接都将语言设置为 EN。一些网络搜索并没有真正说明这里可能发生的事情,因为我能找到的所有 i18n 示例都不涉及已安装的引擎。

编辑:显示代码以设置默认语言环境 my_test_app/app/controllers/application_controller.rb:

/编辑

EDIT2(皮埃尔 8 月 9 日 15:59 建议更改后的路线图):

应用程序路由http://0.0.0.0:3000/en/users产生"locale"=>"en". Helper 创建的引擎路线看起来像http://0.0.0.0:3000/my_engine?locale=en/engine_jobsyields No route matches [GET] "/my_engine"

/EDIT2(Pierre 8 月 9 日 15:59 建议更改后的路线图)

所以,问题是我需要对我的路线或引擎进行哪些更改才能使其按预期工作?

提前感谢您的时间和建议!