首页 > 解决方案 > Rails I18n,响应对象的占位符

问题描述

在 Rails i18n 上,我应该如何组织响应对象的属性占位符?

我正在开发 JSON API。例如,/api/v1/books/:id返回这样的对象。

{
  id: integer,
  name: string,
  author_name: string
}

如果这本书的作者被删除或缺席,我想返回Unknown Author字符串作为author_name. 我想Unknown Author用 I18n 管理字符串。哪个命名空间适合放置占位符?

我正在考虑把它放在view. 像这样,

views:
  books:
    show:
      unknown_author: Unknown Author

标签: ruby-on-railsrubyinternationalization

解决方案


可以根据 rails 约定组织语言环境文件。所以 config/locales 目录将是:

|-defaults
|---es.rb
|---en.rb
|-models
|---book
|-----es.rb
|-----en.rb
|-views
|---defaults
|-----es.rb
|-----en.rb
|---books
|-----es.rb
|-----en.rb
|---users
|-----es.rb
|-----en.rb
|---navigation
|-----es.rb
|-----en.rb

要访问这些语言环境,我们需要明确告诉 rails:

# config/application.rb
config.i18n.load_path += Dir[Rails.root.join('config', 'locales', '**', '*.{rb,yml}')]

因此,在书籍视图语言环境文件中,我们可以编写:

    show:
      unknown_author: Unknown Author

推荐阅读