制作多语言Rails应用的最佳实践

10

大家好 :D 我刚开始学习Rails,目前有一个疑问。

我正在构建一个需要翻译成4种语言的Rails网站。最实用和方便的方法是什么?

我已经读过文章,主要是为每种语言制作单独的文件夹,并复制所有视图到每种语言的文件夹中。但是,我的控制器上仍然会有英文的 notice 消息,我该如何处理? Routes也是我的关注点。是否应该为4个不同的翻译视图创建4个不同的路由?

您推荐如何解决这个问题?我在网上没有找到任何具体的东西。

谢谢您的建议!

1个回答

2

对于你的通知消息,你可以这样做:

  def create
    if user.save
      flash[:notice] = t(:user_was_successfully_created)
      redirect_to users_users_path
    else
      render :new
    end
  end

你不应该有四个不同的路由

Rails国际化(I18n)API

请查看此链接 http://guides.rubyonrails.org/i18n.html

Rails国际化(I18n)API

Ruby I18n(即国际化)gem是随Ruby on Rails一起提供的(从Rails 2.2开始),它提供了一个易于使用和可扩展的框架,用于将您的应用程序翻译为单个自定义语言而非英语,或在您的应用程序中提供多语言支持。

“国际化”的过程通常意味着将所有字符串和其他区域设置特定位(例如日期或货币格式)从您的应用程序中抽象出来。 “本地化”过程意味着为这些位提供翻译和本地化格式。1

因此,在国际化您的Rails应用程序的过程中,您需要:

Ensure you have support for i18n.
Tell Rails where to find locale dictionaries.
Tell Rails how to set, preserve and switch locales.

在本地化应用程序的过程中,您可能需要执行以下三个操作:
1. 提取文本:从应用程序中提取需要翻译的文本,并将其保存到一个文件中。
2. 翻译文本:使用翻译工具或服务将文本翻译成目标语言。
3. 集成翻译:将翻译后的文本集成到应用程序中,以便在目标语言环境中显示。
Replace or supplement Rails' default locale — e.g. date and time formats, month names, Active Record model names, etc.
Abstract strings in your application into keyed dictionaries — e.g. flash messages, static text in your views, etc.
Store the resulting dictionaries somewhere.

这个指南将带您了解I18n API,并包含有关如何从一开始国际化Rails应用程序的教程。
阅读完这个指南后,您将会知道:
- 如何设置默认区域设置 - 如何使用翻译文件 - 如何使用I18n.t方法来进行翻译 - 如何在视图和控制器中使用I18n - 如何处理复数形式 - 如何本地化日期和时间 - 如何本地化数字

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接