继续国际化

本文详细介绍了网站国际化的方法,包括视图、表单控件、常量和JavaScript中的文字国际化技巧,并探讨了复数化处理和使用Globalite的具体步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

国际化比想的要稍微复杂一点,可能是我想得太简单了。

需要国际化的有几部分
1. view中的文字,即rhtml中的文字。要将文字放入<%%>,类似: <%= :enter_send.l("Enter")%>
2. form中控件的文字,改成符号转一下就行,例如:<%= link_to :chat_list.l("chat list"),{:action=>"list_chat"} %>
3.常量中的文字,只能转变成变量了,将文字变成符号,然后使用的时候转换一下,例如:
常量定义
ruby 代码
 
  1. TRANS_DIRECTION=[[:no_translate,0],  
  2.   [:chinese_to_english,TRANS_CHINESE_TO_ENGLISH],  
  3.   [:english_to_chinese,TRANS_ENGLISH_TO_CHINESE]  
  4.   ]  
转换
ruby 代码
 
  1. def self.get_direction_list  
  2.   TranslateService::TRANS_DIRECTION.collect do |x|  
  3.     [x[0].l,x[1]]  
  4.   end  
  5. end  

其实就是将符号转成国际化文字。

4. js 中的国际化。首先需要做一个决定是使用动态js还是静态js,如果是动态js,那么就是使用类似erb的模板,然后结合globalite的国际化方法就行了。如果是静态js,那么就把函数里的文字抽取出来,变成变量,然后在rhtml中把变量内容国际化就行了,例如:
js函数
js 代码
 
  1. function getLoadingPanel(create){  
  2.     var p=$("panel_loading");  
  3.     if(p==null && create){  
  4.         p = document.createElement('DIV');  
  5.     p.setAttribute("id","panel_loading");  
  6.     document.body.appendChild(p);  
  7.         p=$("panel_loading");  
  8.         p.style.cssText="...";  
  9.         p.innerHTML=loading_text;  
  10.     }  
  11.     return p;  
  12. }  

这个loading_text就是抽取的变量,可以在rhtml中定义
ruby 代码
 
  1. <%= "var loading_text='#{:loading_text.l('connecting...')}';"%>  

还可以将标点和货币符号都国际化,由于没有用到就不再细述了。

其实还有一个复数化的国际化转换,例:
ruby 代码
 
  1. <%= :geeze_amount.l_with_args({:count => @geese.count}) %>  

在语言文件里

geese_amount: we have pluralize{{geese_count}, goose, geese} in the farm!

这样就有一个复数替换的功能,如果你不使用,也可以直接拼字符串就行了。

globalite 的使用细节请参见:http://code.google.com/p/globalite/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值