rails i18n的lazy lookup
2014-12-14 17:26:43

最近在處理rails的i18n,發現它有lazy lookup的功能還蠻方便的。lazy lookup就是只要locale的路徑照一定的方式命名,在view或controller中就可以是使用縮寫的方式來使用翻譯字串。舉個例子來說:

如果我們有個翻譯字串要用在views/users/index.html.erb之中,我們可以將字串放在users.index.之下:

zh-TW:
  users:
    index:
      user_list: "用戶列表"

那原本在views/users/index.html.erb中必須要列出完整的路徑的寫法:

<%= t("users.index.user_list") %>

就可以簡寫成:

<%= t(".user_list") %>

同樣的作法可以用在partial與controller,例如用在views/partials/_user_menu.html.erb中的翻譯字串可以放在:

zh-TW:
  partials:
    user_menu:
      back: "回前頁"

用在controllers/users_controller.rb中的createaction翻譯字串(通常是flash message)可以放在:

zh-TW:
  users:
    create:
      failed: "帳號建立失敗。"