标签: rails-i18n

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

有时我的Rails应用程序的一些规格似乎随机失败,因为突然英语不再是默认语言,而是德语:

   expected: "Project test customer - Project test name (Audit, Access for all, 2015-06-15).pdf"
        got: "Project test customer - Project test name (Audit, Zugang für alle, 2015-06-15).pdf"
Run Code Online (Sandbox Code Playgroud)

可以看出,"人人享有"这一部分突然间是"Zugangfüralle".我搜索了一个解决方案,它似乎I18n.locale是一个全局对象,所以当它在规范中发生变化时,它会持续存在.

问题并不总是发生,但我可以在指定这样的种子时重现它:rspec --seed 51012.因此,在某些其他规范之前(或之后)执行规范似乎确实存在一些问题.

我有一个功能规范,测试是否可以更改语言环境,如下所示:

it 'offers contents in german' do
  visit root_path(locale: :de)

  expect(page).to have_content 'Willkommen'
end
Run Code Online (Sandbox Code Playgroud)

我怀疑这可能是有问题的规范,当它提前运行时,它会影响其他规格.

我希望我可以通过将规范中的语言设置回默认值来解决它,如下所示:

it 'offers contents in german' do
  visit root_path(locale: :de)

  expect(page).to have_content 'Willkommen'

  I18n.locale = :en
end
Run Code Online (Sandbox Code Playgroud)

没工作,这个也没有:

it 'offers contents in german' do
  visit root_path(locale: :de)

  expect(page).to have_content …
Run Code Online (Sandbox Code Playgroud)

ruby rspec ruby-on-rails rspec-rails rails-i18n

10
推荐指数
1
解决办法
1203
查看次数

难道我不能简单地获得I18n-ed的日期名称吗?

我也很喜欢使用带红宝石的导轨.

我只想获得I18n.l一天的名字或一个月的名字,没有完整的日期或时间.因为我没有它.

例如,我只是想以国际化为例

= l Date::DAYNAMES[0]
Run Code Online (Sandbox Code Playgroud)

要么

= l Date::MONTHNAME[0]
Run Code Online (Sandbox Code Playgroud)

可能吗?

ruby-on-rails rails-i18n

9
推荐指数
1
解决办法
5054
查看次数

Rails使用Twitter Bootstrap设计I18n Flash消息

你好我是ruby on rails的新手,我很难理解I18n的flash消息.我正在使用devise,rails 4和twitter bootstrap.我明白设计只使用flash[:notice]flash[:alert].

我可以通过登录和注销来获取适用于我的用户模型的Flash消息.但是,我无法获得注册的Flash错误或忘记密码才能正常显示.它看起来像是默认的错误消息.

我已经看了很多与此相关的问题,我很困惑的方法是用漂亮的CSS显示所有flash消息(错误,成功,通知).

也许答案已经在我的鼻子下的这篇文章中?rails - 设计 - 处理 - devise_error_messages

目前我的flash消息基于如何使用Twitter Bootstrap Rails gem定义Flash通知

这是我的示例:
'app/views/layouts/application.html.erb'中

<%= render 'layouts/messages' %>
Run Code Online (Sandbox Code Playgroud)

'应用程序/视图/布局/ _messages.html.erb'

<% flash.each do |name, msg| %>
  <% if msg.is_a?(String) %>
    <div class="alert alert-<%= name == :notice ? "success" : "error" %>">
      <a class="close" data-dismiss="alert">&#215;</a>
      <%= content_tag :div, msg, :id => "flash_#{name}" %>
    </div>
  <% end %>
<% end %>
Run Code Online (Sandbox Code Playgroud)

如何使用自定义css显示所有Flash消息(错误,成功,通知)?

更新:这篇文章显示了我正在尝试做的正确版本.我遇到的问题是样式看起来不一样.我相信这是因为html标签.

html = <<-HTML
 <div …
Run Code Online (Sandbox Code Playgroud)

flash ruby-on-rails devise twitter-bootstrap rails-i18n

9
推荐指数
3
解决办法
8645
查看次数

在设置enforce_available_locales = true之后,Rails I18n验证弃用警告

你放了这样的东西 config/application.rb

I18n.enforce_available_locales = true                                        
config.i18n.load_path += Dir[Rails.root.join('config/locales/', '*.{rb,yml}').to_s]
config.i18n.available_locales = ['es-LA', :en]                               
config.i18n.default_locale = 'es-LA'
Run Code Online (Sandbox Code Playgroud)

警告仍然出现:

[deprecated] I18n.enforce_available_locales will default to true in the future.
Run Code Online (Sandbox Code Playgroud)

localization rails-i18n ruby-on-rails-4

9
推荐指数
1
解决办法
4312
查看次数

Rails:如果验证失败,则显示错误"I18n :: InvalidLocaleData - 无法加载simple_form.en.yml的翻译"

我只是卸载simple_form

gem uninstall simple_form 
Run Code Online (Sandbox Code Playgroud)

并删除Gemfile /相关文件中的simple_form,如simple_form.en.yml.

现在,如果我的应用验证失败,则会出现以下错误

I18n::InvalidLocaleData - can not load translations from
.../config/locales/simple_form.en.yml: #<Errno::ENOENT: 
No such file or directory @ rb_sysopen - .../config/locales/simple_form.en.yml>:
Run Code Online (Sandbox Code Playgroud)

之前我没有设置任何i18n,是否有任何与simple_form相关的设置我还要修改?

任何想法都表示赞赏!

ruby-on-rails simple-form rails-i18n

9
推荐指数
1
解决办法
2787
查看次数

I18N翻译"." 或"%"导致完整的所有翻译

我在使用I18n的Rails翻译应用程序中遇到了问题.我在这样的数组中创建动态句子[:this_is_a, 5, :which_is_a_number, "."],我逐个翻译每个单词.

当我遍历这个并翻译I18n.t(".")时,我在我的整个应用程序中获得了所有翻译的完整数组,输出了1000多个数组文本.这似乎也适用于I18n.t("%").

有没有设置阻止这种情况发生?我目前唯一的解决方案是改变所有"." "."但我希望有更好的解决方案.有什么建议?

ruby-on-rails rails-i18n

9
推荐指数
1
解决办法
186
查看次数

切换Blacklight标签的语言环境后需要刷新页面

我正在尝试创建一个基于Blacklight的Rails应用程序的阿拉伯语版本.这是我面临的问题:

当我切换语言时,除了Blacklight标签外,一切都完美无缺.只有当我刷新页面时才会翻译标签.

这是我要显示的标签:"ترتيبحسبعام"(翻译:按年份排序)

但这就是我目前得到的:"年ترتيبحسب"

从阿拉伯语切换回英语时会出现同样的问题 - 标签以阿拉伯语显示,直到我刷新页面.

这就是我的Blacklight配置:

class CatalogController < ApplicationController
  include Blacklight::Catalog

  configure_blacklight do |config|
    # ...
    config.add_sort_field 'pub_date_sort desc, title_sort asc', :label => I18n.t('sortby.year')
    # ...
  end
end
Run Code Online (Sandbox Code Playgroud)

以下是我在Application控制器中设置区域设置的方法:

class ApplicationController < ActionController::Base

 before_filter :set_locale
 def set_locale
   I18n.locale = params[:locale] || I18n.default_locale
 end

 # ...
end
Run Code Online (Sandbox Code Playgroud)

我不确定发生了什么,我非常感谢你的帮助.

ruby-on-rails blacklight rails-i18n

9
推荐指数
1
解决办法
309
查看次数

i18n用于选择框

我有一个名为Role的模型.我在表格中使用下面的助手.有没有办法将name属性的值更改为另一种语言?

<%= f.collection_select :role_id, Role.all, :id, name, {} -%>
Run Code Online (Sandbox Code Playgroud)

区域设置/ de.yml

de:
  role:
   admin: "something"
   editor: "something something"
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails internationalization rails-i18n

8
推荐指数
1
解决办法
3859
查看次数

Rails不允许更改区域设置

我正在尝试更改我的rails(4.1.4)应用程序正在使用的语言环境,但每次我尝试使用如下命令在控制台中更改它

I18n.locale = :es
I18n.default_locale = :de
Run Code Online (Sandbox Code Playgroud)

出现I18n :: InvalidLocale错误.对于我测试的每个区域设置都是这种情况,包括区域性的,例如:en-US.即使我为该语言环境设置了*.yml文件,也是如此.唯一有效的是:en,这是我的默认值.

我觉得这应该是非常基本的东西,因为我找到的所有资源似乎都跳过这个作为给定,但它不适合我,我无法找出在哪里寻找问题源.

localization ruby-on-rails internationalization rails-console rails-i18n

8
推荐指数
1
解决办法
5050
查看次数

使用i18n-active_record进行I18n转换:相同键的相同形式

我正在使用i18n-active_record 0.1.0在Rails 4中开发一个应用程序来保存我的翻译而不是.yml文件.它工作正常.

然而,我正在努力的一件事是,每个翻译记录是每个语言环境的一个记录,即

#1. { locale: "en", key: "hello", value: "hello")
#2. { locale: "se", key: "hello", value: "hej")
Run Code Online (Sandbox Code Playgroud)

这使得更新它们是一项繁琐的工作.我希望将它作为一个,即:

{ key: "hello", value_en: "hello", value_se: "hej" }
Run Code Online (Sandbox Code Playgroud)

或类似的,以便以一种形式更新一个密钥的所有实例.我似乎找不到任何关于那个的东西,这让我很困惑.

有没有办法轻松做到这一点?任何类型的黑客也都可以.

rubygems ruby-on-rails rails-i18n

8
推荐指数
1
解决办法
204
查看次数