论坛首页 综合技术论坛

创业,不能兼职(41)--- java设计之多语言支持,不仅解决静态,而且解决动态

浏览 4202 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2011-08-17  
早上和后台小伙子交流语言问题时,他提到2个结论.1 双语言还好办点,多语言困难.2. 可以静态的,不可以动态的.

给了我一个链接,说多语言,是要到property里的那样文件,去把一些 比如 用户密码错误 翻译为 user idpasswordiserror,然后替换如何如何. 说,这个,只能是把静态的语言文字部分翻译,动态的就不行的,比如,写到数据库里,从数据库里读出的就不行.比如用户输入的就不行. 那个,我觉得也是,用户输入什么文字,自然是什么.

可是,还是有问题,就是用户输入的有些,我是想转换的,就是我们自己在数据库里是先要做处理,再呈现的. 比如,你 中国人,选择中文,输入 巴黎, 我是希望,出来的是 巴黎--paris 都有.这个算什么呢?

还有,我又希望,中国人,地址里,也能输入 Paris这样的,最后,所有,巴黎,paris,我们都会给你算一个地方,不会算2个地方.这又算什么?

然后,还有比如,有些地名,有英语名字,中文名字,还有本国名字,我也希望有.比如,都指向同一个地方.这和我说的支持多语言的,有关系还是没关系? 比如,München, 慕尼黑,Munich,这三个,分别是母语,中文,英语的同一个地方. 这个我们之前有讨论,但是没觉得和这个支持多语言有什么关系. 到底有关还是没关?

不过,实际在多语言里,我认为是这样的,就是一个地名,都有 你选择的语言的,就是1\用户母语的名称,在我们,就是中文, 在别人,可能就是法语,日语等等.2\英语地名,3\该国本地语言的地名. 多语言时,变的是第一个, 后面2个是固定的.

不过,怎么建立和得到这些数据,有些我没想明白.


刚刚,看到另外一篇文章, 这文章,至少是解决了,我们后台小伙子认为的,只能解决静态,不能动态的问题.http://java.chinaitlab.com/model/3293.html

最核心我看的懂的概念大致如下:

静态文字和动态文字采取不同的解决方案:
  把所有的网页交给翻译公司对上面的静态文字进行翻译, 而网页上面的动态内容则需要程序解决。
  
需要解决的动态文字的“翻译”问题,实际上是将数据库中的一些静态或者半静态的数据进行“翻译”。下面就是一个典型的数据表:
   
  代码清单1、为英文用户的准备的货币列表。
  货币代码永远是上面所看到的英文代码,但是货币名称应当根据用户所选择的语言不同而不同。比如对中文读者就应当翻译成为下面的表:
   
  代码清单2、为中文用户准备的货币列表。
  这样的表会在网页上作为下拉菜单出现,用户看到的是货币名称,而系统内部使用的是货币代码。
  国际化解决方案
  这样的问题就是国际化的问题,所谓国际化就是Internationalization,简称作i18n(请参见本章最后的问答题)。
  设计师所采取的实际方案是分层方案,也就是MVC模式。MVC模式将系统分为三个层次,也就是模型(Model)、视图(View)、控制器(Control)三个部份。国际化是视图部份的问题,因此应当在视图部份得到解决。
   
  图1、MVC模式的示意图。
  换言之,系统的内核可以是纯英文的;在内核外部增加一个壳层负责语言翻译工作。请见下面的概念图:
   
  图2、英文内核和翻译壳层的概念图。
  所谓内核就是系统的模型,而翻译壳层便是视图的一部份。对多语言的支持属于视图功能,因此不应当在内核解决,而应当在视图解决。这就是设计师们达成的总体方案。
  多态模式 多态模式的特点
  所谓的多态模式(Multiton Pattern),实际上就是单态模式的自然推广。作为对象的创建模式,多态模式或多态类有以下的特点:
  多态类可有多个实例; 多态类必须自己创建、管理自己的实例,并向外界提供自己的实例。
  单态类一般情况下最多只可以有一个实例,请见下面的结构图:




其他的部分我看不太懂了,不知道,我们现在是不是所谓MVC.

现在程序员在干活,我决定不随意打扰他.每天,用一个时间段讨论.

很多时间段独自干活. 提高效率. 不然,就会因为不相干的讨论,分散手头主要的东西.一天下来,可能又没解决任何问题.


   发表时间:2011-08-26  
国际化分两种形式:
1、页面信息的国际化
2、数据库存储信息的国际化

这两种方式的国际化都是可以通过MVC实现的,例如struts2的mvc已经提供了较好的国际化支持,同时支持局部和全局国际化方面的支持。
相对说来,页面辅助提示等信息的国际化直接用国际化文件就ok了,这个实现比较简单。数据库存储信息的国际化可能就需要设计数据存储等方案,顺便配合struts2的国际化拦截器进行处理了。
0 请登录后投票
   发表时间:2011-08-26  
kongqz 写道
国际化分两种形式:
1、页面信息的国际化
2、数据库存储信息的国际化

这两种方式的国际化都是可以通过MVC实现的,例如struts2的mvc已经提供了较好的国际化支持,同时支持局部和全局国际化方面的支持。
相对说来,页面辅助提示等信息的国际化直接用国际化文件就ok了,这个实现比较简单。数据库存储信息的国际化可能就需要设计数据存储等方案,顺便配合struts2的国际化拦截器进行处理了。


觉得很受益,可是,在很多具体细节上,我还是有疑惑.  希望有空时,多指教.
0 请登录后投票
   发表时间:2011-11-16  
我们以前有个项目,动态的国际化通过数据库实现,把一个.Net对象放到数据库的表中,语言设置,如“en-US”,查询时作为参数传入,直接返回该语言的结果
0 请登录后投票
   发表时间:2011-11-21  
亲们,中国移动统一开发环境(英文简称UDE)有新动态咯咩\(^o^)/~
从开发者的角度出发,开发了一套集成了Eclipse IDE、多种手机应用的开发包(SDK)、终端信息库、能力集市开发库和跨平台中间件的开发工具统一开发环境,支持Android、J2ME(K-Java)、Symbian的原生态和跨平台开发,一次性安装,还可以将开发出来的代码放在配好的模拟器上直接运行。开发者使用一门语言(Java)开发,在一套代码的基础上可以生成适用于多平台的手机应用。大家可以继续关注嘿~!!
http://dev.10086.cn/cmdn/bbs/thread-47163-1-1.html
而且最近又有更新内容哈,强势围观围观ing:
1)社区服务的IP地址更新,避免开发者无法正常访问社区服务。
2)为了支持139能力(移动微博)调整了部分运行库,保障在手机端登陆成功。
离线插件:(下载文件后,直接传到服务器上)
http://devfile.mmarket.com/upload/cmcc_ude/plugin/cmcc_ude_update_1.1.2.zip
在线插件:(文件上传后,解压到指定的目录)
http://devfile.mmarket.com/upload/cmcc_ude/update/

0 请登录后投票
论坛首页 综合技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics