帖子
帖子
用户
博客
课程
12下一页
返回列表 发新帖
显示全部楼层
2
帖子
0
勋章
4
Y币

[FAQ] 多语言app

[复制链接]
发表于 2015-11-25 15:53:46
如果一个app有几种语言版本, 单个app有没有比较好的解决方法,
是不是每一个语言提交一个app名称?
现在通用做法是怎么搞的?

谢谢

6
帖子
1
勋章
843
Y币
用变量的方式虽然可以解决,但是太复杂。定义变量之后,还需要在每个页面中取出来写在相应的位置,那要定义非常多的id.
我的项目也需要支持多语言,我利用了css
方法如下:
可以写一个模块,在每页判断当前手机的语言,或者让用户手工切换语言,反正切换后,在body标签增加语言标识。例如中文:
  1. <body class="CN">
  2. </body>
复制代码
英文:
  1. <body class="EN">
  2. </body>
复制代码
在公用样式中这样写:
  1. .ml-name{
  2. display:none;
  3. }
  4. .CN .cn-name{
  5. display:inline;
  6. }
  7. .EN .en-name{
  8. display:inline;
  9. }
复制代码
那么在页面中就可以直接使用:
  1. <header>
  2. <span class="ml-name cn-name">返回</span>
  3. <span class="ml-name en-name">back</span>
  4. </header>
复制代码
这样当body的class="CN"时,除了cn-name外,其它就会自动隐藏
这种方法的优点是写起来简单,想在哪加就在哪加,也无需用多余的js代码。缺点是较分散,不能统一管理名称。有得必有失。
如果想统一管理,还有另一个办法:
在公共css中这样写:
  1. .CN [ml="返回"]:before{
  2. content:"返回";
  3. }
  4. .EN [ml="返回"]:before{
  5. content:"back";
  6. }
复制代码
在使用时这样写:
  1. <header>
  2. <span ml="返回"></span>
  3. </header>
复制代码
这种方法的优点是在html页面中只须写一行,由css去决定显示的内容,缺点是明明这页只有“返回”两个字,确可能要引入所有程序中使用的字段,造成太多冗余。而且放在一起的话,该起来还是要查的。
我刚开始用的是这种方法,但考虑到性能问题,最终使用了前面一种。
28
帖子
1
勋章
1万+
Y币
一般可以这样子,语言文字放到相应的文件中,根据用户语言加载不同的js文件。然后localization.Name取出来就是相应的语言了
zh.js:  var localization = {Name: "名称"}
en.js:  var localization = {Name: "Name"}
0
帖子
0
勋章
12
Y币
本帖最后由 osmanturpan 于 2016-1-10 13:49 编辑
技术咨询-Kenny 发表于 2015-11-25 16:24
一般可以这样子,语言文字放到相应的文件中,根据用户语言加载不同的js文件。然后localization.Name取出来 ...

那么怎么引用 zh.js 和 en.js 文件?
我的意思是:
假如说我们给出来两个选择让用户选择所用语言,用户选择了英语,用户的选择对应的数据保存起来。
下次怎么能把对应的en.js引用起来呢?
51
帖子
0
勋章
309
Y币
楼主解决了吗 我也碰到这个问题了  语言切换不知道怎么修改桌面名称求帮忙
51
帖子
0
勋章
309
Y币
小飞牛 发表于 2016-8-22 11:04
用变量的方式虽然可以解决,但是太复杂。定义变量之后,还需要在每个页面中取出来写在相应的位置,那要定义 ...

兄弟你项目名称就是桌面显示的名字怎么弄的多种语言我这切换不了啊,
6
帖子
1
勋章
843
Y币
楚振华 发表于 2016-8-22 13:57
兄弟你项目名称就是桌面显示的名字怎么弄的多种语言我这切换不了啊,

这个问题我也没有解决,暂时名称用英文。 我看过原生的实现方式,是配置多语言的xml文件,修改里面的app_name。查android的api,我暂时找不到一个动态修改app名称的方法。所以我猜想解决方案有两个,一是使用superview的方式来开发,那它的基本框架就还是原生的,可以实现多语言。二是开发一个多语言模块,在app生命周期开始就执行,这个就有难度了。
2
帖子
0
勋章
11
Y币
osmanturpan 发表于 2016-1-10 13:46
那么怎么引用 zh.js 和 en.js 文件?
我的意思是:
假如说我们给出来两个选择让用户选择所用语言,用户选 ...

麻烦问下,多语言是怎么引用语言js文件的???
23
帖子
1
勋章
988
Y币
可以用字典
15
帖子
0
勋章
105
Y币
cihlon 发表于 2017-6-11 20:38
麻烦问下,多语言是怎么引用语言js文件的???

加载JS你可以参考参考. 调用checkLang方法

  1. function loadScript(url) {
  2.         var script = document.createElement("script");
  3.         script.type = "text/javascript";
  4.         script.src = url;
  5.         document.head.appendChild(script);
  6.     }
  7.    
  8.     function checkLang()
  9.     {
  10.             if (navigator.language.toLowerCase() == "zh-cn")
  11.             {
  12.                     loadScript("script/locate/cn.js");
  13.             }
  14.             else
  15.             {
  16.                     loadScript("script/locate/en.js");
  17.             }
  18.     }
复制代码
12下一页
您需要登录后才可以回帖 登录

本版积分规则