Tag: 国际化

I18n用于特定于模型的Rails提交按钮

我发现Rails允许通过以下config/locales/en.yml通用i18n提交按钮: en: helpers: submit: create: “Create %{model}” submit: “Save %{model}” update: “Update %{model}” 但是,我希望仅为一个特定模型更新create值。 我希望文本读作“上传%{model}”或只是“上传”。 如何仅对一个模型进行此更改(例如: Photo模型)?

i18n用于选择框

我有一个名为Role的模型。 我在表格中使用下面的助手。 有没有办法将name属性的值更改为另一种语言? 区域设置/ de.yml de: role: admin: “something” editor: “something something”

Rails:删除丢失的翻译错误

我正在使用英语(en)和法语(fr)的国际化 ,我使用en.yml用于有限的使用和我在fr.yml写​​的大部分翻译。 使用locale作为fr一切都很好,但是在en中它显示错误,因为缺少翻译范围。 例如,如果我有类似的东西 t(“Search”), :class=>”search_input”) %> 我得到的输出是: <input class="search_input" id="search" name="search" placeholder=" 我想要的是它应该关闭英语的翻译错误 ,因为英语是我的默认语言,但在某些情况下我使用了en.yml。 或者,如果这不可能,则应删除整个错误消息。 谢谢

Rails可选/:语言环境路由

我正在尝试为我的rails应用程序设置路由系统,允许将可选路由(/:locale)允许到网站的基础。 所以或多或少: / en / home /将转到与/ home / / en / people / – > / people /相同的页面 我唯一的问题是在路由配置中设置它。

如何避免在生成的URL中添加默认语言环境?

如果您按照I18N Rails指南进行操作 ,则所有生成的链接都包含locale参数(localhost / en / about,localhost / fr / about)。 这是因为我们使用方法default_url_options来始终添加Locale参数: def default_url_options(options={}) { :locale => I18n.locale } end 当语言环境未知或默认语言环境时,是否可以从生成的URL中删除语言环境参数? 我需要的 : Locale unknown: mysite/about Locale en: mysite/about (而不是localhost/en/about ) 区域设置fr: mysite/fr/about 我试图只设置语言环境,如果它不是默认语言环境,但结果是生成的链接永远不会包含语言环境参数… 我尝试了很多像这样的东西 def default_url_options(options={}) if I18n.locale == :fr { :locale => I18n.locale } else { :locale => nil } end end 整码: […]

如何为function测试设置locale default_url_options(Rails)

在我的application_controller中,我有以下设置来包含具有url_for生成的所有路径的语言环境: def default_url_options(options={}) { :locale => I18n.locale } end 我的资源路由有一个:path_prefix =“/:locale” 在网站上正常工作。 但是当涉及到我的function测试时,:locale不会与生成的url一起传递,因此它们都会失败。 我可以通过在我的测试中将语言环境添加到url来解决它,如下所示: get :new, :locale => ‘en’ 但我不想手动将语言环境添加到每个function测试中。 我尝试将default_url_options def添加到test_helper上面,但似乎没有效果。 有什么办法可以更改default_url_options以包含我所有测试的语言环境? 谢谢。

Heroku和i18n问题

我无法让i18n在heroku上工作。 我设置: I18n.default_locale = :de 在我的environment.rb中,转换在config / locales / de.yml中,在我的本地机器上运行完美,但在Heroku上却不是这样。 在heroku上,一切都是英文的。 我认为我不需要像i18n gem这样的特殊gem,因为我在本地机器上也没有它。 也许有人有解决方案吗?

Rails I18n的CSS文件

我正在尝试将我的网站国际化,有一件事是为不同的语言使用不同的字体大小。 还需要替换一些文本图像。 我认为唯一的方法是在公共文件夹中添加其他特定于语言环境的CSS文件,并根据我视图中的语言环境加载它们。 这可以避免资产管道编译这些特定的CSS文件。 但是我想知道是否有更好的方法来做到这一点?

Rails I18n accepted_nested_attributes_for和error_messages_for

我有两个型号 class SurveyResponse has_many :answers, :class_name => SurveyResponseAnswer.name accepts_nested_attributes_for :answers end class SurveyResponseAnswer belongs_to :survey_response validates_presence_of :answer_text end 在我的嵌套表单中,如果validation失败,我会在屏幕上显示此错误: “答案答案文字不能为空” 我使用rails I18n成功地定制了我的属性名称。 它的行为并不像我期望的那样。 下面的yml文件不会影响error_messages_for中打印属性名称的方式 en: activerecord: models: survey_response: answers: “Response” 但是,如果从脚本/控制台我尝试 SurveyResponse.human_attribute_name( “答案”) 我得到了“响应”的预期结果。 我想做的是validation错误消息说: “响应答案文本不能为空”。 我需要解决的任何想法?

使用词典重构Ruby on Rails i18n YAML文件

这个 StackOverflow问题给了我一些关于Rails i18n文件的良好结构的思考,所以我想我会分享另一个结构来重构Rails i18n yml文件供您考虑/批评。 鉴于我想 保持默认的应用程序结构,这样我就可以在我的视图中使用像t(‘.some_translation’)这样的简写“懒惰”查找,并且知道在应用程序中使用翻译的地方, 避免尽可能多的字符串重复,特别是使用不仅相同的单词,但也有相同的上下文/含义, 只需更改一次密钥就可以反映出它引用的所有地方, 对于config / locales / en.yml文件,看起来像这样: activerecord: attributes: user: email: Email name: Name password: Password password_confirmation: Confirmation models: user: User users: fields: email: Email name: Name password: Password confirmation: Confirmation sessions: new: email: Email password: Password 我可以看到存在重大的重复,并且诸如“电子邮件”和“密码”之类的词语的上下文是明确的并且在它们各自的视图中具有相同的含义。 如果我决定将“电子邮件”更改为“电子邮件”,那么必须去更改它们会有点烦人,所以我想重构字符串以引用某种字典。 那么,如何将字典哈希添加到文件的顶部,其中包含一些&锚点: dictionary: email: &email Email name: &name Name password: […]