为所欲为,嗯

话不多说,先看效果吧(事先说明,我的方法不是最好的,但是我用着最有效。)

【吐槽一下博客园上传的图片,我的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多语言为所欲为切换的更多相关文章

  1. Android app内语言环境切换

    逻辑很简单: 1  app内所有activity继承自BaseActivity或BaseActivity派生出来的子类,BaseActivity中维护了一个静态的 app Activity访问栈,在创 ...

  2. iOS开发——iOS国际化 APP内语言切换

    最近一个一直在迭代的老项目收到一份新的开发需求,项目需要做国际化适配,简体中文+英文.由于项目中采用了storyboard和纯代码两种布局方式,所以国际化也要同时实现.上网查了些资料,实现了更改系统语 ...

  3. 在xcode上把你的app多语言国际化(NSLocalizedString)

    1.到project->info->localizations   下面的加号,添加你需要的语言 千万不要删除  base 否虽然我不知道有什么用,我是删了整个storyboard没了,很 ...

  4. 【原创】DESTOON做中英双语言(多语言)切换版本具体详解

    第一次发原创好激动,该注意点什么? 在开发过程中用户有许多要求,比如这个多语言切换就是一个需求. 首先讲解一下DESTOON(DT)后台系统如何做这个中英.甚至多语言切换的这个功能. DT本身不自带多 ...

  5. IOS APP 国际化 程序内切换语言实现 不重新启动系统(支持项目中stroyboard 、xib 混用。完美解决方案)

    上篇 IOS APP 国际化(实现不跟随系统语言,不用重启应用,代码切换stroyboard ,xib ,图片,其他资源 介绍了纯代码刷新 实现程序内切换语言. 但效率底下,也存在一些问题.暂放弃. ...

  6. iOS-生成国际化包-配置App多语言支持

      标签: ios国际化 ios多语言支持 xcode多语言支持 xcode生成多语言 国际化 it 分类: 功能知识   如果你的App需要支持多国语言.那么,就应该为你的App应用添加“国际化”支 ...

  7. struts2实现选择i18n语言选择切换

    [新手学习记录,仅供参考!] 1.项目准备 首先当然是我们得创建一个struts2的web项目,并且已经实现了一个简单的功能. 以下通过登录功能来举例说明. 2.指定全局国际化资源文件 在struts ...

  8. vue实现对语言的切换,结合vue-il8n。

    1.安装vue-i18n: npm install vue-i18n 如果npm长时间无反应,或安装失败,可以换成淘宝镜像安装: cnpm install vue-i18n 2.在main.js中引用 ...

  9. Android应用内部实现多语言,一键切换语言,国际化适配

    1.首先提供多语言对应的string值 如en对应英语, fr对应法语 两个文件中包含同样的key, 对应不同的语言的value 2.java代码相应用户切换语言动作 private static v ...

随机推荐

  1. [Bayesian] “我是bayesian我怕谁”系列 - Latent Variables

    下一章有意讲讲EM和变分推断的内容. EM和变分推断的内容能Google到很多,虽然质量乘次不齐,但本文也无意再赘述那么些个细节. 此处记录一些核心思想,帮助菜鸡形成整体上的认识.不过,变分推断也不是 ...

  2. CodeForces - 556A Case of the Zeros and Ones

    //////////////////////////////////////////////////////////////////////////////////////////////////// ...

  3. 数位DP按位枚举模板

    借鉴:http://www.cnblogs.com/xz816111/p/4809913.html // pos = 当前处理的位置(一般从高位到低位) // pre = 上一个位的数字(更高的那一位 ...

  4. Linux学习(十六)VIM

    一.简介 VIM是vi的增强版.VIM是Linux平台上的主要编辑器.基本上所有的文档的新增,修改,保存都需要用到它.所以,掌握VIM是很有必要的. vim的安装非常简单,一条命令就可以了: yum ...

  5. rsync 服务部署详解

    第1章 rsync 软件介绍 1.1 什么是rsync rsync 是一款开源的.快速的.多功能的.可实现全量及增量的本地或远程数据同步备份的优秀工具. http://www.samba.org/ft ...

  6. Python-数据类型-转摘

    1.数字 2 是一个整数的例子.长整数 不过是大一些的整数.3.23和52.3E-4是浮点数的例子.E标记表示10的幂.在这里,52.3E-4表示52.3 * 10-4.(-5+4j)和(2.3-4. ...

  7. Ubuntu16 远程连接MySQL

    1.进入MySQL配置目录允许其他IP可以链接 vi /etc/mysql/mysql.conf.d/mysqld.cnf 吧下面这行注释掉 #bind-address = 127.0.0.1 2.远 ...

  8. 【深度学习笔记】(二)基于MNIST数据集的神经网络实验

    一.介绍 MNIST(Mixed National Institute of Standards and Technology database)是网上著名的公开数据库之一,是一个入门级的计算机视觉数 ...

  9. Vim常用操作-Nginx配置文件批量加注释。

    刚接触 Vim 会觉得它的学习曲线非常陡峭,要记住很多命令.所以这个系列的分享,不会教你怎么配置它,而是教你怎么快速的使用它. 本期我们要实现给 Nginx 配置文件批量注释的功能,先来看效果: 操作 ...

  10. CentOS6.8系统下,ecipse下进行编辑操作,意外退出

    错误情况:centos下打开eclipse软件,点击*.java或者*.pom软件卡死,命令行终端报错误信息,稍后eclipse自动退出. 错误信息: Java: cairo-misc.c:380: ...