UWP 实现App多语言为所欲为切换
为所欲为,嗯
话不多说,先看效果吧(事先说明,我的方法不是最好的,但是我用着最有效。)
【吐槽一下博客园上传的图片,我的App敲鸡漂亮滴,自带亚克力效果,怎么图片上传上来这么多的噪点啊。】
【 商店地址传送门:https://www.microsoft.com/store/apps/9n19jm5g8mz4】




按我的方法做有一个缺点:不能立马显示新的语言,需要重启App。网上别人也是这样的。
===============================================================================
其实很简单
① 给每一个控件设置 x:Uid
比如一个Textbox x:Uid=“textbox_language”
然后我们在解决方案里面找到“Strings”文件夹,打开“en-us”文件夹,添加一行textbox_language.Text,它的值是“Language”。
在Strings下面新建"zh-cn"文件夹,添加一行textbox_language.Text,它的值是“语言”。
更多的语言代码请参考 https://msdn.microsoft.com/en-us/library/ms533052(v=vs.85).aspx
② 本地存储一下所选择的语言

切换语言总得有个下拉框来承载这些语言吧,建议显示的格式为 “代码 语言名称”,中间有个空格的。这样有好处,一会你就知道了。
private void comboBoxLanguage_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
string temp = comboBoxLanguage.SelectedItem.ToString();
string[] tempArr = temp.Split(' ');
ApplicationData.Current.LocalSettings.Values["CurrentLanguage"] = tempArr[];
}
③ 在App.cs中读取
大体意思就是本都有这个CurrentLanguage设置,就读取出来。当然会存在Auto的情况,那么需要一个类获取当前系统的语言。如果不存在设置,之前我默认是英文了,现在也改成Auto那样。
if (ApplicationData.Current.LocalSettings.Values["CurrentLanguage"] != null)
{
strCurrentLanguage = ApplicationData.Current.LocalSettings.Values["CurrentLanguage"].ToString();
if (strCurrentLanguage == "auto")
{
ApplicationLanguages.PrimaryLanguageOverride = LanguageHelper.GetCurLanguage();
}
else
ApplicationLanguages.PrimaryLanguageOverride = strCurrentLanguage;
}
else
{
ApplicationLanguages.PrimaryLanguageOverride = strCurrentLanguage = LanguageHelper.GetCurLanguage();
//ApplicationLanguages.PrimaryLanguageOverride = strCurrentLanguage = "en-us";
}
InitializeComponent();
④ LanguageHelper类写的一般,就是刚才提到的
public static string GetCurLanguage()
{
var languages = GlobalizationPreferences.Languages;
if (languages.Count > )
{
List<string> lLang = new List<string>();
lLang.Add("zh-cn、zh、zh-Hans、zh-hans-cn、zh-sg、zh-hans-sg");
lLang.Add("zh-hk、zh-Hant、zh-mo、zh-tw、zh-hant-hk、zh-hant-mo、zh-hant-tw");
lLang.Add("de、de-at、de-ch、de-de、de-lu、de-li");
lLang.Add("en-us、en、en-au、en-ca、en-gb、en-ie、en-in、en-nz、en-sg、en-za、en-bz、en-hk、en-id、en-jm、en-kz、en-mt、en-my、en-ph、en-pk、en-tt、en-vn、en-zw、en-053、en-021、en-029、en-011、en-018、en-014");
lLang.Add("es、es-cl、es-co、es-es、es-mx、es-ar、es-bo、es-cr、es-do、es-ec、es-gt、es-hn、es-ni、es-pa、es-pe、es-pr、es-py、es-sv、es-us、es-uy、es-ve、es-019、es-419");
lLang.Add("fr、fr-be、fr-ca、fr-ch、fr-fr、fr-lu、fr-015、fr-cd、fr-ci、fr-cm、fr-ht、fr-ma、fr-mc、fr-ml、fr-re、frc-latn、frp-latn、fr-155、fr-029、fr-021、fr-011");
lLang.Add("hi、hi-in");
lLang.Add("it、it-it、it-ch");
lLang.Add("ja、ja-jp");
lLang.Add("pt、pt-pt、pt-br");
lLang.Add("ru、ru-ru");
for (int i = ; i < lLang.Count; i++)
{
if (lLang[i].ToLower().Contains(languages[].ToLower()))
{
string temp = lLang[i].ToLower();
string[] tempArr = temp.Split('、'); return tempArr[];
}
else
return "en-us";
}
}
return "en-us";
}
如你所见,我之前叫你存储那个代码,在这里就可以比对。当然lLang里面的语言code也必须是标准的。
⑤ 善后工作
上面基本上也就完成了多语言了。
但是你需要在进入设置前,读取并设置combobox 的值,这样才算完整的。代码就不贴了。
UWP 实现App多语言为所欲为切换的更多相关文章
- Android app内语言环境切换
逻辑很简单: 1 app内所有activity继承自BaseActivity或BaseActivity派生出来的子类,BaseActivity中维护了一个静态的 app Activity访问栈,在创 ...
- iOS开发——iOS国际化 APP内语言切换
最近一个一直在迭代的老项目收到一份新的开发需求,项目需要做国际化适配,简体中文+英文.由于项目中采用了storyboard和纯代码两种布局方式,所以国际化也要同时实现.上网查了些资料,实现了更改系统语 ...
- 在xcode上把你的app多语言国际化(NSLocalizedString)
1.到project->info->localizations 下面的加号,添加你需要的语言 千万不要删除 base 否虽然我不知道有什么用,我是删了整个storyboard没了,很 ...
- 【原创】DESTOON做中英双语言(多语言)切换版本具体详解
第一次发原创好激动,该注意点什么? 在开发过程中用户有许多要求,比如这个多语言切换就是一个需求. 首先讲解一下DESTOON(DT)后台系统如何做这个中英.甚至多语言切换的这个功能. DT本身不自带多 ...
- IOS APP 国际化 程序内切换语言实现 不重新启动系统(支持项目中stroyboard 、xib 混用。完美解决方案)
上篇 IOS APP 国际化(实现不跟随系统语言,不用重启应用,代码切换stroyboard ,xib ,图片,其他资源 介绍了纯代码刷新 实现程序内切换语言. 但效率底下,也存在一些问题.暂放弃. ...
- iOS-生成国际化包-配置App多语言支持
标签: ios国际化 ios多语言支持 xcode多语言支持 xcode生成多语言 国际化 it 分类: 功能知识 如果你的App需要支持多国语言.那么,就应该为你的App应用添加“国际化”支 ...
- struts2实现选择i18n语言选择切换
[新手学习记录,仅供参考!] 1.项目准备 首先当然是我们得创建一个struts2的web项目,并且已经实现了一个简单的功能. 以下通过登录功能来举例说明. 2.指定全局国际化资源文件 在struts ...
- vue实现对语言的切换,结合vue-il8n。
1.安装vue-i18n: npm install vue-i18n 如果npm长时间无反应,或安装失败,可以换成淘宝镜像安装: cnpm install vue-i18n 2.在main.js中引用 ...
- Android应用内部实现多语言,一键切换语言,国际化适配
1.首先提供多语言对应的string值 如en对应英语, fr对应法语 两个文件中包含同样的key, 对应不同的语言的value 2.java代码相应用户切换语言动作 private static v ...
随机推荐
- angular控制器常用的4种通信方式
首先概括一下angular控制器通信的4种方式: 作用域继承. 通过$scope广播事件. 事件发射器模块. 服务. 1.作用域的继承 子作用域可以访问声明在它们的祖先作用域中的变量和函数. < ...
- Spring读书笔记——bean创建(下)
有关Spring加载bean系列,今天这是最后一篇了,主要接上篇对于从Spring容器中获取Bean的一些细节实现的补充. <Spring读书笔记--bean加载>--Spring如何加载 ...
- Toxophily
Problem Description The recreation center of WHU ACM Team has indoor billiards, Ping Pang, chess and ...
- 2016-2017 ACM-ICPC, NEERC, Southern Subregional Contest J. Bottles
J. Bottles time limit per test 2 seconds memory limit per test 512 megabytes input standard input ou ...
- 默认权限umask、文件系统权限、特殊权限
第1章 权限相关错误 1.1 普通用户 ls /root/ /root 属于root 普通用户没有任何权限,所以无法查看 [oldboy@znix ~]$ ls /root/ ls: cannot ...
- 使用Identity Server 4建立Authorization Server (2)
第一部分: http://www.cnblogs.com/cgzl/p/7780559.html 第一部分主要是建立了一个简单的Identity Server. 接下来继续: 建立Web Api项目 ...
- 一场围绕着‘Deeping Learning’的高考
Deep Learning的基本思想和方法 实际生活中,人们为了解决一个问题,如对象的分类(对象可是是文档.图像等),首先必须做的事情是如何来表达一个对象,即必须抽取一些特征来表示一个对象,如文本的处 ...
- Struts2+Spring+Hibernate实现员工管理增删改查功能(一)之ssh框架整合
前言 转载请标明出处:http://www.cnblogs.com/smfx1314/p/7795837.html 本项目是我写的一个练习,目的是回顾ssh框架的整合以及使用.项目介绍: ...
- javascript 关于 this 作用域链
使用 function f() {} 或者 var f = function() {} 来定义的函数,this 是指向 全局对象 var a = { b: 1, c: funct ...
- mysql +keeplive
下载tar包 ./configure --prefix=/usr/local/keepalived --with-kernel-dir=/usr/src/kernels/2.6.32-431.el6. ...