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 ...
随机推荐
- jquery的遍历选择器-随机整理下
我从w3c上截了一张图,如图所示: 下面我们来详细说一说.这些选择器. 1.add() 方法将元素添加到匹配元素的集合中.例子: .add(selector) $("div").a ...
- javascript 之执行环境-08
概念 执行环境(Execution context,简称EC)或执行上下文对象(后面统一用执行上下文表示),它定义了变量或者函数有权访问的其他数据,决定了他们各自的行为.是不是有点不好理解,那我先简单 ...
- 使用javascript编写根据用户鼠标控制背景图片的移动
在一家VR公司做前端. 起初进入前端就是一种内心的直觉,创造更好的用户体验,让页面更加友好,当然最起初接手web项目还是为了完成毕业设计. 一个网上图书商城,虽然不大,但五脏都有毕竟开刀所以避免不了很 ...
- Flex 布局实例
如图: 代码如下: <!DOCTYPE HTML> <html> <meta charset="utf-8"> <head> < ...
- CSS浮动(Float)
定义 浮动会使元素向左或向右移动,其周围的元素也会重新排列: 浮动直到它的外边缘碰到包含框或者另一个浮动框才停止: 浮动之后的元素将围绕它,浮动之前的元素不变: 由于浮动框不在文档的普通流中,所以文档 ...
- undefined 与void 0
参考:https://segmentfault.com/a/1190000000474941 Javascript中void是一个操作符,该操作符指定要计算一个表达式但是不返回值.void 操作符用法 ...
- Web前端性能优化全攻略[转载]
1. 尽量减少 HTTP 请求 (Make Fewer HTTP Requests) 作为第一条,可能也是最重要的一条.根据 Yahoo! 研究团队的数据分析,有很大一部分用户访问会因为这一条而取得最 ...
- rem 单位
rem(font size of the root element)是指相对于根元素的字体大小的单位. 主流的一些web app的适配解决方案: 流式布局: 流式布局在页面布局的时候都是通过百分比 ...
- Red Hat 7.0 DNS服务配置笔记
先挂载镜像,然后配置yum,然后安装yum install -y bind 配置静态 IP.DNS就是他本身的IP地址. 修改DNS的配置文件,在后面加入区域配置信息.vim /etc/named.c ...
- word,excel,ppt转Pdf,Pdf转Swf,通过flexpaper+swftools实现在线预览
其实这是我好几年前的项目,现在再用这种方式我也不建议了,毕竟未来flash慢慢会淘汰,此方式也是因为目测大部分人都装了flash,才这么做的,但是页面展示效果也不好.其实还是考虑收费的控件,毕竟收费的 ...