有时我的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) 我也很喜欢使用带红宝石的导轨.
我只想获得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的新手,我很难理解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">×</a>
<%= content_tag :div, msg, :id => "flash_#{name}" %>
</div>
<% end %>
<% end %>
Run Code Online (Sandbox Code Playgroud)
如何使用自定义css显示所有Flash消息(错误,成功,通知)?
html = <<-HTML
<div …Run Code Online (Sandbox Code Playgroud) 你放了这样的东西 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) 我只是卸载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相关的设置我还要修改?
任何想法都表示赞赏!
我在使用I18n的Rails翻译应用程序中遇到了问题.我在这样的数组中创建动态句子[:this_is_a, 5, :which_is_a_number, "."],我逐个翻译每个单词.
当我遍历这个并翻译I18n.t(".")时,我在我的整个应用程序中获得了所有翻译的完整数组,输出了1000多个数组文本.这似乎也适用于I18n.t("%").
有没有设置阻止这种情况发生?我目前唯一的解决方案是改变所有"." "."但我希望有更好的解决方案.有什么建议?
我正在尝试创建一个基于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)
我不确定发生了什么,我非常感谢你的帮助.
我有一个名为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) 我正在尝试更改我的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
我正在使用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)
或类似的,以便以一种形式更新一个密钥的所有实例.我似乎找不到任何关于那个的东西,这让我很困惑.
有没有办法轻松做到这一点?任何类型的黑客也都可以.
rails-i18n ×10
localization ×2
blacklight ×1
devise ×1
flash ×1
rspec ×1
rspec-rails ×1
ruby ×1
rubygems ×1
simple-form ×1