一个网站切换不同语言的功能是怎么实现的?

我发现好多网站都有这个功能,不知道是怎么做的

阅读 10.5k
6 个回答

关键字i18n。这个既可以在web server级别通过静态页面实现,也可以在web app级别通过程序动态实现。

比如Apache HttpD就可以通过MultiView这个Options在静态资源级别指定国际化。

基本原理其实就是浏览器请求的时候会带上一个Accept-Language:zh-CN,zh;q=0.8 header,服务器通过这个头判断应当返回给客户端什么语言的内容。

你搜一下相关语言的:本地化/国际化。
如果要自己实现,有个很简单的办法:
1、定义中英文对照关系:

dic = {
    'hello': {
        'zh': '你好',
        'en': 'hello',
        'jp': 'こんにちは',
    },
}

2、函数

def ugettext(text):
    # text是要翻译的文字代号hello
    language = xx  # 可以通过header里的Accept-Language,也可以是用户自定义
    retuan dic[text][language]

2、代码里凡是有文字的地方都用一个“代号”代替(即上面字典里的hello),比如:
原本:result = '你好'
换成:result = ugettext('hello')

这个网站应该是搞了多语种的站点,直接a标签跳转过去即可,也就是几个语种就有几套网址。楼上说的只是后台的实现显示这些网址方法
ETW做法就是这样的

现在有些Web框架有可以支持国际化(Internationalization)的Package,你可以查查你用到的框架

推荐看一篇文章
淘宝前端国际化方案探索

你可以这么理解,页面上的每个文字除了差数据库的文字,只要显示需要用到不同语言的话,我们都用标签,比方说<?php echo $menu;?>,对应的页面会判断你当前语言,然后显示对应的语言。
比如说,你$menu保存到配置里面,chinese=>菜单,englist=>menu

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题