标签: rails-i18n

Rails I18n验证弃用警告

我刚刚更新到rails 4.0.2并且我收到此警告:

[已弃用] I18n.enforce_available_locales将来默认为true.如果您确实想跳过语言环境的验证,可以设置I18n.enforce_available_locales = false以避免此消息.

将其设置为false是否存在任何安全问题?

ruby ruby-on-rails deprecated rails-i18n ruby-on-rails-4

386
推荐指数
4
解决办法
6万
查看次数

i18n多元化

我希望能够在rails中翻译i18n中的复数字符串.一个字符串可以是:

You have 2 kids
Run Code Online (Sandbox Code Playgroud)

要么

You have 1 kid
Run Code Online (Sandbox Code Playgroud)

我知道我可以使用复数辅助方法,但我希望将其嵌入到i18n翻译中,以便我在将来的任何时候都不必弄乱我的观点.我读到它:count在某种程度上用于复数的翻译,但我找不到任何关于它如何实现的真实资源.

请注意,我知道我可以在翻译字符串中传递变量.我也试过类似的东西:

<%= t 'misc.kids', :kids_num => pluralize(1, 'kid') %>
Run Code Online (Sandbox Code Playgroud)

哪个工作正常,但有一个相同想法的根本问题.我需要'kid'在pluralize helper中指定字符串.我不想这样做,因为它将导致将来查看问题.相反,我想保留翻译中的所有内容,而不是视图中的任何内容.

我怎样才能做到这一点 ?

ruby-on-rails internationalization pluralize plural rails-i18n

82
推荐指数
6
解决办法
4万
查看次数

R18 I18n,检查翻译是否存在?

在rails 3应用程序上工作,我想在输出之前检查翻译是否存在,如果它不存在则回退到某些静态文本.我可以这样做:

if I18n.t("some_translation.key").to_s.index("translation missing")
Run Code Online (Sandbox Code Playgroud)

但我觉得应该有比这更好的方法.如果将来的rails将"缺少翻译"更改为"未找到翻译",该怎么办?或者,如果出于某种奇怪的原因,文本包含"翻译缺失".有任何想法吗?

ruby-on-rails internationalization rails-i18n

61
推荐指数
5
解决办法
3万
查看次数

Rails:如何让Date strftime知道默认的语言环境?

我将默认语言环境设置为environment.rbas de(德语).

我还看到德语中的所有错误消息,因此服务器会选择语言环境.但是当我尝试用strftime以下内容打印日期时:

some_date.strftime('%B, %y')
Run Code Online (Sandbox Code Playgroud)

它以英语(January, 11)打印,而不是预期的德语(Januar, 11).

如何根据默认区域设置打印日期?

ruby localization ruby-on-rails strftime rails-i18n

59
推荐指数
3
解决办法
4万
查看次数

如何从Rails I18n中的yml文件中检索所有翻译

我猜测rails将所有解析后的翻译yml文件存储在一种数组/哈希中.有没有办法访问这个?

例如,如果我有一个文件:

en:
  test_string: "testing this"
  warning: "This is just an example
Run Code Online (Sandbox Code Playgroud)

我可以做一些像I18n.translations_store [:en] [:test_string]的事吗?我可以使用YAML :: load解析yml文件,但在我的情况下,我已经将子文件夹中的yml文件拆分为组织,我很确定rails已经解析了它们.

yaml ruby-on-rails internationalization rails-i18n

32
推荐指数
2
解决办法
2万
查看次数

从rails模型中访问转换文件(i18n)

我的模型中包含的内容是:

def body_color_enum
  [
    ['Aqua', '#009c9c'],
    ['Grey', '#6d6e71'],
    ['Yellow', '#ffe600'],
    ['White', 'white']
  ]
end
Run Code Online (Sandbox Code Playgroud)

我希望这些值来自翻译文件'en.yml'

en:
  group:
    hero:
      hex1: '#6d6e71'
      name1: 'Dark grey'
      hex2: '#ccc'
      name2: 'Light grey'
      hex3: '#0099ce'
      name3: 'Blue'
      hex4: '#ffffff'
      name4: 'White'
Run Code Online (Sandbox Code Playgroud)

我试过这个:

def body_color_enum
  [
    [t('group.hero.name1'), '#009c9c'],
    ['Grey', '#6d6e71'],
    ['Yellow', '#ffe600'],
    ['White', 'white']
  ]
end
Run Code Online (Sandbox Code Playgroud)

但我得到这个错误:

undefined method `t' for #<Group:0x007fabad847ac8>
Run Code Online (Sandbox Code Playgroud)

所以我问的是如何从模型中访问我的本地文件,以便我可以在body_color_enum方法中设置我的值.

ruby translation localization ruby-on-rails rails-i18n

32
推荐指数
1
解决办法
2万
查看次数

如何使用rails i18n后备功能

我有这个问题

activerecord:
  notices:
    messages:
      success: 
        create: "Something was created"
    models:
      user:
        success:
            create: "Thanks for registration"

I18n.t("activerecord.notices.models.user.success.create")
# => "Thanks for registration"


I18n.t("activerecord.notices.models.book.success.create") 
# => "translation missing: de, activerecord, notices, models, book, success, create"
Run Code Online (Sandbox Code Playgroud)

我不知道为什么书模型没有得到后备按摩.我已经定了config.i18n.fallbacks = true.我正在使用Rails 3

fallback ruby-on-rails internationalization ruby-on-rails-3 rails-i18n

30
推荐指数
6
解决办法
3万
查看次数

在I18n插值中使用另一个I18n键

这可能是I18n-ception,但我可以说我有一个en.yml文件如下

en:
  my_var: Foo
  my_message: "This is a message where I'd like to interpolate I18n's %{my_var}"
Run Code Online (Sandbox Code Playgroud)

有没有办法向I18n表明%{my_var}应该是my_var关键en.yml

我知道我可以通过做类似的事情来实现它

I18n.t 'my_message', :my_var => I18n.t('my_var')
Run Code Online (Sandbox Code Playgroud)

但我希望I18n有办法自我引用键.

interpolation ruby-on-rails internationalization rails-i18n

29
推荐指数
2
解决办法
4805
查看次数

Rails 3强制特定文本的本地化语言

任何方式只能为某些文本强制翻译为特定语言.就像是:

t("my.text",:fr)
Run Code Online (Sandbox Code Playgroud)

原因是我希望用户能够更改其内容的语言而不是网站界面.谢谢!

localization ruby-on-rails ruby-on-rails-3 rails-i18n

16
推荐指数
2
解决办法
7110
查看次数

Admin :: FaqsController的未定义方法`t':Class

在我的项目中,我在命名空间管理员中有控制器,我正在使用breadcrumbs_on_rails来构建breadcrums.我的控制器看起来像:模块管理员

class FaqsController < Admin::ApplicationController
    include FaqsHelper
    load_and_authorize_resource

   add_breadcrumb t('faqs.faqs_list') , :faqs_path #this line makes the problem
    def index
      @faqs = @faqs
      add_breadcrumb t('faqs.faqs_list')

    end

    def new
      add_breadcrumb t('faqs.new')
    end

 #other code ommitted
  end
end
Run Code Online (Sandbox Code Playgroud)

我可以在新的,编辑和其他控制器动作中使用t方法但是当这个't'不在控制器动作中时,我有以下错误:

undefined method `t' for Admin::FaqsController:Class
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

ruby-on-rails ruby-on-rails-3 rails-i18n ruby-on-rails-4

16
推荐指数
1
解决办法
5545
查看次数