【问题标题】:Translation of models in Ruby on Rails 3.0在 Ruby on Rails 3.0 中翻译模型
【发布时间】:2012-05-17 20:16:11
【问题描述】:

使用 Ruby on Rails 3.0,我希望页面中的帖子具有并排翻译。例如,一个页面看起来像这样

+---------------+---------------+-----------------+
| Hello         | Hola          | Bonjour         |
+---------------+---------------+-----------------+ ... (there could be many more languages)
| Hello, world. | Hola, mundo.  | Bonjour, monde. |
+---------------+---------------+-----------------+

有什么简单的方法可以解决这个问题?我不相信这可以用 I18N 解决,因为这通常意味着设置一个语言环境并将 整个 页面翻译成该语言。我想要多列语言(这些语言以及有多少也是未知的)。我知道我可以为 Posts、PostTitleTranslations 和 PostBodyTranslations 等翻译创建很多表格,但这似乎不是最好的方法。以前有没有人解决过这样的问题?

【问题讨论】:

    标签: ruby ruby-on-rails-3 translation


    【解决方案1】:

    据我了解,您想翻译表格的行。您可以使用我在 3 个项目中找到并使用的最简单但最佳的实践来做到这一点。添加 PostTranslation 模型,包含您的字段,如标题、文本等,以及特殊列:post_id(在您的示例中)和语言环境。

    可以使用puret(从一开始就支持rails3)或使用我开发的插件has_translations(现在我只在rails 2.3上测试过它,但接下来我将发布)非常排序时间(0.4版)将支持rails3)。

    它非常易于使用。您可以通过单击链接直接阅读 README 文件。

    如果您有任何问题,请在 github 上给我留言。

    【讨论】:

      【解决方案2】:

      为了完整起见

      您需要每个语言环境的文件:

      config
      |
      +- locales
         |
         +- es.yml
            en.yml
            fr.yml
      

      使用 es.yml 的示例

      es:
        :hello "Hola"
        :world "mundo"
      

      就像 Andreas 之前说的,使用 t('something'), :locale => :xx 你可以选择你想要的。

      <p>
        <%= t('hello', :locale => :es) %>
        <br />
        <%= "#{t('hello', :locale => :es)}, #{t('world', :locale => :es)}.
      </p>
      

      【讨论】:

        【解决方案3】:

        我创建了一个名为 acts_as_translatable 的 Ruby on Rails 插件,可让您轻松转换模型和数据库表。

        希望你可以使用它!

        最好的问候, 拉塞双层床

        【讨论】:

          【解决方案4】:

          您可以使用:locale 选项覆盖显示翻译的语言环境到I18n.t

          I18n.locale = :de             # set default locale to German
          I18n.t('key')                 # display German translation for 'key'
          I18n.t('key', :locale => :en) # display English translation for 'key' even though
                                        # the default locale is still set to :de
          

          知道了这一点,就应该很容易建立一个像您的示例中那样的表格。

          【讨论】:

          • 应该是 I18n.t('key'), :locale => :en) 吗?
          猜你喜欢
          • 2013-07-29
          • 2022-01-17
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-04-23
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多