【问题标题】:Developing a Rails app in a language other than english用英语以外的语言开发 Rails 应用程序
【发布时间】:2015-08-03 13:50:37
【问题描述】:
所以我正在构建一个新的 Rails 应用程序,它的最终用户都是说西班牙语的人。我想我应该使用 rails 的 I18n API,但感觉这是为了翻译一个已经用英语编写的应用程序。我的意思是,rails 在内部使用英语语言环境查找事物(模型、表名、路由)。因此,如果在创建模式时没有正确地复数,那么用西班牙语命名模型会感觉很奇怪。
对于这种情况,有人有最佳做法吗?我应该只用英文命名所有内容,然后将翻译映射到 es.yml 文件上吗?
【问题讨论】:
标签:
ruby-on-rails
ruby-on-rails-4
【解决方案1】:
即使应用程序应该由西班牙最终用户查看,您最好还是用英文编写代码。这意味着编写英文 ruby 代码、英文路线、英文模型等。唯一应该是西班牙文的是您网站上的文本。
一些原因:
- ruby 中的所有保留字都是英文。
- 库/框架使用英文命名。
- 复数等是英文的。
- 如果代码 sn-p 是英文,则更有可能获得有关 StackOverflow 的帮助。
- 你永远不会知道,也许有一天它会变成一个与非西班牙语开发人员合作的项目。
至于 i18n api,如果您只应该用一种语言呈现网站内容,您现在可以跳过使用它。
【解决方案2】:
用您喜欢的任何语言编写您的代码(和翻译密钥),并使用您的es.yml 作为翻译语言。
以下是如何在整个应用中使用 I18n 的示例:
app/controllers/things_controller.rb
def create
thing = Thing.new(params[:id])
if thing.save
redirect_to thing, notice: t('cosa.crear.prosperidad')
else
flash.now.alert = t('cosa.crear.fracaso')
end
end
app/views/things/index.html.erb
<h1><%= t('cosa.texto_de_ayuda') %></h1>
config/locales/es.yml
es:
cosa:
texto_de_ayuda: "Necesita ayuda para la creación de las cosas?"
crear:
prosperidad: "Cosa fue creado con éxito"
fracaso: "Hubo un problema al crear su cosa"
【解决方案3】:
没有黄金法则,但我认为代码应该用英语编写(即使您开始用西班牙语编写,您也可能将西班牙语和英语单词混在一起,从而使您的代码变得一团糟)。
关于 i18n,您不仅应该使用它来将您的应用从一种语言翻译成另一种语言,还应该用于指定将显示给用户的文本元素。因此,您可以将所有内容组织到一个独特的文件中。它更利于维护和代码组织,您可以指定 Rails 应该使用的默认语言(.yml 文件)。