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

推荐订阅源

Google DeepMind News
Google DeepMind News
Stack Overflow Blog
Stack Overflow Blog
Hugging Face - Blog
Hugging Face - Blog
博客园_首页
T
The Blog of Author Tim Ferriss
博客园 - 叶小钗
N
Netflix TechBlog - Medium
腾讯CDC
C
Check Point Blog
P
Proofpoint News Feed
Engineering at Meta
Engineering at Meta
GbyAI
GbyAI
S
SegmentFault 最新的问题
F
Fortinet All Blogs
美团技术团队
U
Unit 42
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
博客园 - 司徒正美
F
Full Disclosure
Recorded Future
Recorded Future
D
DataBreaches.Net
博客园 - 【当耐特】
Martin Fowler
Martin Fowler
J
Java Code Geeks
I
InfoQ
Y
Y Combinator Blog
A
About on SuperTechFans
AI
AI
爱范儿
爱范儿
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
Forbes - Security
Forbes - Security
W
WeLiveSecurity
M
MIT News - Artificial intelligence
雷峰网
雷峰网
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
Simon Willison's Weblog
Simon Willison's Weblog
Schneier on Security
Schneier on Security
The GitHub Blog
The GitHub Blog
Security Archives - TechRepublic
Security Archives - TechRepublic
aimingoo的专栏
aimingoo的专栏
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
G
GRAHAM CLULEY
Know Your Adversary
Know Your Adversary
Latest news
Latest news
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
D
Docker
Recent Commits to openclaw:main
Recent Commits to openclaw:main
量子位
V2EX - 技术
V2EX - 技术
Project Zero
Project Zero

博客园 - 互联网粒子

论公司运营 复杂问题需要系统思维 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大小一个包,还是很小的。