`
siuying
  • 浏览: 91129 次
  • 性别: Icon_minigender_1
  • 来自: 香港
最近访客 更多访客>>
社区版块
存档分类
最新评论

Rails plugin: i18n

    博客分类:
  • Tech
阅读更多

An update from mod-i18n module. My first Ruby on Rails plugin. It is modified from Localization module. It do translation using YML based translation file, and choose language based on URL parameter.

Installation

script/plugin install source http://mod-i18n.googlecode.com/svn/trunk

1. Create Language File

Create a directory config/lang, under the directory, create yml files using the langugae name, e.g. config/lang/zh-HK.yml. In the file, it should contains string mapping, for example:

config/lang/zh-HK.yml:
        Listing contacts: 聯絡人列表
        Show: 顯示
        Edit: 修改
        Delete: 移除

2. Edit Application String

In the application, replace content String to following format:

    Source Code: 'blah' => ('blah') 'testing 5' => ('testing %d', 5)
    rhtml: <%= 'blah' %> => <%= 'blah' %> <%= 'testing 5' %> => <%= 'testing %d', 5 %>

3. Test the Applciation

Restart application. mod-i18n use post/get parameter 'lang' to determine the language (configurable through the constant PARAMETER_LANG in lib/i18n.rb).

Original URL: http://127.0.0.1/main/index
URL for en-US: http://127.0.0.1/main/index?lang=en-US
URL for zh-HK: http://127.0.0.1/main/index?lang=zh-HK

4. [OPTIONAL] Using Rails route

You may specify the language in URL. To do so, in config/route.rb, change the route to containing paramter 'lang'.

    from:
        map.connect ':controller/:action/:id.:format'
        map.connect ':controller/:action/:id' 

    to:
        map.connect ':lang/:controller/:action/:id.:format'
        map.connect ':lang/:controller/:action/:id' 

    Original URL: http://127.0.0.1/main/index
    URL for en-US: http://127.0.0.1/en-US/main/index
    URL for zh-HK: http://127.0.0.1/zh-HK/main/index
分享到:
评论
2 楼 ddddddddd 2007-11-04  
忘记说谢谢了。谢谢您共享这个插件。帮了我大忙
1 楼 ddddddddd 2007-11-03  
我下载并使用了你的插件,感觉效果很好,不向其他同样功能的那样庞大,够用了

使用过程中发现一个小问题,yml文件分组会出错

error_message:
  text_required:必填项目
  date_invalid: 无效的日期

这种会显示不出来

我把i18n.rb第33行替换成了
    while (translated.is_a?(Hash) && args.length > 0)
      translated = translated[args[0]]
      args.delete_at(0)
    end
    begin
      sprintf translated, *args 
    rescue StandardError => e
      return translated
    end 
  

用<%=_ "error_message", "text_required" %>就能够显示了
(我英文也写了一个yml文件)

相关推荐

Global site tag (gtag.js) - Google Analytics