zoukankan      html  css  js  c++  java
  • 基于JSON缓存的多国语言的实现

       最近有些网友问我现在的项目怎么实现的多国语言的处理,我现在社交平台支持5种不同国家的语言,在平台上每一个用户都可以自己选择自己喜欢的语言

    而平台下面的社区是可以由社区的管理者来决定使用哪一种语言,对于多国语言的处理有很多种方案,微软也有自己的一套解决办法。我考虑的是用JSON+缓存的方案。

    原因是网站的功能在不断的升级和变化,为了能快速实现和部署。基本的实现步骤如下:

    注意,我只是对网站的标识,操作部份进行了多国语言,没有对内容做任何的多语言处理。

    先把网站页面上需要进行多国语言的条词进行翻译成不同的5种语言,用EXCEL表格先译好。

    比如:

    序号 EN         CN        JP  

    1     HOME    首页     XXXX

    其中序号是不能重复的,后面要加的话直接加到进兵中面来。EN就是项文的译法,CN就是对应的中文的意思

    写一个小程序把这个表格读出来生成5份不同的语言包,以JSON数组存放。生成后的样子

    [
    {Key:1,Value:"帐号无法使用,请联系管理员。"},
    {Key:2,Value:"关于"},
    {Key:3,Value:"关于活动"},
    {Key:4,Value:"关于圈子"},

    。。。。。

    KEY是唯一的,后面对应的就是语言了,所有的语言是以KEY为准。

    这样就完成了第一步,第二步就是根据EN的翻译生成一个枚举类:

    public const int Account_Inactive = 1;
    public const int About = 2;
    public const int About_Event = 3;
    public const int About_Group = 4;
    public const int About_Jujuya = 5;
    public const int About_Me = 6;

    生成的这个类是为了方面在页面上调用

    第三步,把生成的所有的语言包文件cache起来,当用户去请求页面时,根据不同的语言Key去语言包中查找对应的翻译显示出来。

    如果当前的社区是使用的中文包的话

    <%=base.LanguageKey.Account_Inactive%>就是要据这个枚举类的Account_Inactive值为1从中包的CACHE包中取出它对应的语言包的翻译是

    "帐号无法使用,请联系管理员"就是显示出来了。

    关于性能问题,原来一天的PV10W上下是看不出什么问题的,这个查询还是很快的,语言包的条目不多,现在没有过2千个。

    占用的内存来看,曾经做过实验是5千个条目包是2M大小一个包,还是很小的。

  • 相关阅读:
    第七周
    跳ajax方式进行前后台交互之后台代码要怎么写
    写代码要注意细节,无谓的找前台bug
    mysql复习增删改查
    jquery获取value值
    sql查阅每一月的数据
    登录模块需要用到session留底
    前后台使用ajax传list的时候,用value[] 获取值
    Datables wrning(table id='example'):Cannot reinitialise DataTable.
    动态规划1
  • 原文地址:https://www.cnblogs.com/Leung/p/1775627.html
Copyright © 2011-2022 走看看