惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

美团技术团队
D
DataBreaches.Net
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
D
Docker
N
Netflix TechBlog - Medium
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
C
Check Point Blog
腾讯CDC
Stack Overflow Blog
Stack Overflow Blog
V
Visual Studio Blog
IT之家
IT之家
月光博客
月光博客
U
Unit 42
K
Kaspersky official blog
T
Threatpost
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
GbyAI
GbyAI
P
Proofpoint News Feed
Last Week in AI
Last Week in AI
云风的 BLOG
云风的 BLOG
酷 壳 – CoolShell
酷 壳 – CoolShell
I
InfoQ
Engineering at Meta
Engineering at Meta
Recorded Future
Recorded Future
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
S
Security @ Cisco Blogs
MyScale Blog
MyScale Blog
大猫的无限游戏
大猫的无限游戏
Security Archives - TechRepublic
Security Archives - TechRepublic
Webroot Blog
Webroot Blog
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
Hacker News - Newest:
Hacker News - Newest: "LLM"
S
Schneier on Security
S
Secure Thoughts
The Register - Security
The Register - Security
B
Blog RSS Feed
The Last Watchdog
The Last Watchdog
P
Palo Alto Networks Blog
爱范儿
爱范儿
B
Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
N
News and Events Feed by Topic
阮一峰的网络日志
阮一峰的网络日志
L
LINUX DO - 热门话题
C
Cisco Blogs
Spread Privacy
Spread Privacy
F
Full Disclosure
博客园 - 聂微东
T
The Blog of Author Tim Ferriss

博客园 - 互联网粒子

论公司运营 复杂问题需要系统思维 Razor视图引擎-基础语法 项目管理-项目进度偏差分析 无线互联的三大机会 IT公司的情.理.法.文管理 康盛被腾讯“招安” - 互联网粒子 - 博客园 在WIN7系统IIS7下配置PHP5运行环境 IIS7中启用JS的压缩 用户个性化推荐 IE6下的JQUERY_FCK兼容问题 - 互联网粒子 - 博客园 软件需求全景 .NET中使用WINDOWS API参数定义 如何下载安装和破解VS2010 windows下面的管理命令 数据库字符串内容批量更新 如何查询Sql Server 2005补丁版本号 javascript模板机制 javascript上实现动态参数
基于JSON缓存的多国语言的实现
互联网粒子 · 2010-07-12 · via 博客园 - 互联网粒子

   最近有些网友问我现在的项目怎么实现的多国语言的处理,我现在社交平台支持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大小一个包,还是很小的。