在Ruby on Rails 4和Simple Form中为“helpers”提供的i18n翻译列表?

时间:2016-04-23 11:26:39

标签: ruby-on-rails ruby-on-rails-4 rails-i18n

我似乎无法找到一份文档来列出可用于Rails'i18n的helpers

我首先在Simple Form的README

中看到它

我找到的最近的是the example here

helpers:
    select:
      prompt: Please select
    submit:
      create: Create %{model}
      submit: Save %{model}
      update: Update %{model}

但是,我也知道labels和其他内容也适用于本节。

可用helpers条目的完整列表是什么?

1 个答案:

答案 0 :(得分:2)

简单形式i18n

您的问题有一个简短的答案和一个很长的答案。这是简短版本。如果你想要长的,请告诉我。

使用i18n需要练习和对运行时环境的敏锐关注。但是有可能只设置简单的i18n形式,而不是进入整个i18n架构。

您列出的帮助程序不是简单表单的一部分,它们是标准应用程序yaml的一部分。 select:除外,它是简单表单的一部分,但使用标签prompts:定义。

your_app_name:    
  application:
   helpers:
      submit:
        model_1_name:
          create: Add %{model}
          delete: Delete %{model}
          update: Save changes to %{model}
        model_2_name:
          create: Like
          delete: Unlike
          update: Unlike
        mode_3_name:
          create: Add %{model}
          delete: Delete %{model}
          update: Save changes to %{model}

简单表格

简单表单有自己的yaml部分,它位于你的应用程序yaml中,但不在helpers:内。如果有帮助,它在yaml结构中与helpers:处于相同的优先级。

在您的yaml中 - 标题标签为simple_form:,此文件中使用的结构和标签至关重要。

...
  simple_form:
    error_notification:
      default_message: "Please review the problems below:"
    hints:
      your_model:
        column_1_name: Your hint sentence.
        column_whatever_name: Please enter the ...
      another_model:
        column_in_this_model: Valid range is from 1 to 5 ....
    labels:
      your_model:
        column_1_name: Email
        column_2_name: Password
    priority:
      model:
        column: Text
    prompts:
      model:
        column: Text
    required:
      text: 'required'
      mark: '*'
    prompts:
      your_model:
        column_name: Select the type of..
      another_model:
       column_name: Select the state...

这个 是简短的回答。如果您需要任何跟进,请告诉我。

附录:为任何案例找到合适的上下文标签

使用i18n-tasks gem插入漏洞

安装i18n-tasks gem - 这是一个命令行工具,有助于理解YAML中应用程序本地化字符串的必要结构。它揭示了令人难以置信的不透明背后的结构。

$i18n-tasks health

会吐出这样的东西:

|   en   | simple_form.error_notification.default_message                                         | Please review the problems below:                                                                                      |
|   en   | simple_form.hints.location.short_desc                                                  | General information, not a review.                                                                                     |
|   en   | simple_form.hints.location.website                                                     | Please enter the leading http:// or https://                                                                           |
|   en   | simple_form.hints.review.rating                                                        | Range is from 1 = Meh to 5 = Super yum                                                                                 |
|   en   | simple_form.labels.session.email                                                       | Email                                                                                                                  |
|   en   | simple_form.labels.session.password                                                    | Password                                                                                                               |
|   en   | simple_form.no                                                                         | No                                                                                                                     |
|   en   | simple_form.priority.article.category                                                  | Article                                                                                                                |
|   en   | simple_form.priority.location.country                                                  | United States of America                                                                                               |
|   en   | simple_form.prompts.article.category                                                   | Select the type of article                                                                                             |
|   en   | simple_form.prompts.location.state                                                     | Select the state                                                                                                       |
|   en   | simple_form.required.mark                                                              | *                                                                                                                      |
|   en   | simple_form.required.text                                                              | required                                                                                                               |
|   en   | simple_form.yes  

label.级别中的每一个都直接引用您的翻译名称。

有许多推荐行选项。一个有用的是

$i18-tasks missing  

这就是扭曲 - 在您希望翻译存储的代码中,使用带有伪造字符串t('bogus')的翻译助手。

i18-tasks会将其标记为缺少的翻译字符串,并在此过程中告诉您此字符串中yaml的结构,以便Rails i18n找到它。

是的,这是疯狂的倒退,但你只需要这样做,直到你了解i18n的结构。然后根据经验,您将更好地了解将字符串放在本地化名称中的位置。

锤子方法 为了完整起见,我还要提到可以对每个翻译路径进行硬编码,例如......

t('defaults.labels.read_more_link_label')

查找:

your_app_name:
  application:
    defaults:
     labels:
        read_more_link_label: "Read more..."

i18-tasks gem中有很多功能。这非常有帮助。