Phoenix 框架作者使用 Elixir 的宏和模式匹配实现一个 i18n 的库,Elixir 实现是 Ruby 的 100 倍 (不是关键)! 详细,文章地址:
http://littlelines.com/blog/2014/06/27/elixir-vs-ruby-showdown-part-one/
就是把 i18n 翻译编译成了 pattern match 的函数,如果 i18n 的数据来源是数据库并且要实时更新 (例如翻译人员输入) 的话,就不行了...
首先,写这文章的人数学有严重问题
Elixir (0.14.1) Average across 10 runs: 1.63s
Ruby (MRI 2.1.0) Average across 10 runs: 118.62s
That's a 100x speed improvement for Elixir over Ruby
118.62 / 1.63 == 72.773
当然这也很快
现在就等一个 Rails on Elixir 了
如果编译模板的时候翻译资料就完整了,那么 ruby 也有更快的 i18n 翻译法
例如 https://github.com/slim-template/slim/blob/master/doc/translator.md 把 tr_mode
设置为 static
的话,运行期就不会调用 i18n 了。