Android多国语言的设置

2024-02-14 05:18
文章标签 语言 android 设置 多国

本文主要是介绍Android多国语言的设置,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Android 史上最强多语言国际化,不仅第一次会跟随系统,而且会保存用户的语言设置

分类: Android   4614人阅读  评论(16)  收藏  举报
国际化 android 语言

1.我等屌丝喜欢简单粗暴,首先来一幅图


哥们我是大陆人,当然默认语言是 中文简体,但是我刚刚切换成了繁体了


2.看下配置文件,按照这个格式 ,看图吧,简单粗暴,别问为什么,你就按照这样写,如果你想知道为什么这样写,以及详细的步骤,请百度 :  Android 多语言 

阿拉伯语 ar, 德语 de ,英语 en ,西班牙 es, 法语 fr ,日语 ja ,韩语 ko ,葡萄牙 pt , 我大天朝 和 港澳台 就略过了,不解释,




3.注意下所有语言配置文件  string.xml 里面的文本格式是一样的,只是语言不同  ,name 是相同的,对应的值不同

      



4.如何在引用这些鸟东西了,是个Android开发人员都会。。。  还是截个图吧,




5.进入史上最牛逼的环节, 第一次进入APP

    首先引进 公共方法,上代码 

        

  1. public static final String SYSTEM_LOCALE_LANGUAGUE_STRING = "system_locale_languague_string";  
  2.     public static final String SYSTEM_LOCALE_COUNTRY_STRING = "system_locale_country_string";  
  3.       
  4.     public static final String ENAME[]={"zh","en","fr","de","ja","ko","es","pt","ar"};  
  1.   
  1. <pre name="code" class="java">public static Locale getSystemLacale(Context context) {  
  2.         SharedPreferences sharedPreferences = getCurrentSharedPreferences(context);  
  3.         String str = sharedPreferences.getString(SYSTEM_LOCALE_LANGUAGUE_STRING, "no_languague");  
  4.         String strc = sharedPreferences.getString(SYSTEM_LOCALE_COUNTRY_STRING, "");  
  5.         if ("no_languague".equals(str)) {  
  6.               
  7.             Locale l=Locale.getDefault();  
  8.             String def="en";  
  9.             for (int i = 0; i < ENAME.length; i++) {  
  10.                 if (ENAME[i].equals(l.getLanguage())) {  
  11.                     def=ENAME[i];  
  12.                     break;  
  13.                 }  
  14.             }  
  15.               
  16.             Locale nLocale=null;  
  17.             if ("zh".equals(def)) {  
  18.                 if ("CN".equals(l.getCountry())) {  
  19.                     nLocale=Locale.SIMPLIFIED_CHINESE;  
  20.                 }else {  
  21.                     nLocale=Locale.TRADITIONAL_CHINESE;  
  22.                 }  
  23.                   
  24.                   
  25.             }else {  
  26.                 nLocale=new Locale(def);  
  27.             }  
  28.               
  29.               
  30.               
  31.             setSystemLacate(context, nLocale);  
  32.               
  33.             return nLocale;  
  34.         }   
  35.           
  36.           
  37.         return new Locale(str,strc);  
  38.     }  
  39.       
  40.     public static void setSystemLacale(Context context,Locale locale){  
  41.         SharedPreferences sharedPreferences = getCurrentSharedPreferences(context);  
  42.         SharedPreferences.Editor editor = sharedPreferences.edit();  
  43.         editor.putString(SYSTEM_LOCALE_LANGUAGUE_STRING, locale.getLanguage());  
  44.         editor.putString(SYSTEM_LOCALE_COUNTRY_STRING, locale.getCountry());  
  45.         editor.commit();  
  46.           
  47.     }  


 
  1.   
不用我多解释吧,获取系统默认的 Lacale ,为什么这样写了?  我就不解释了, 如果你有更好的方法,大神你就在下面评论吧!


加入改变语言的方法

  1. private void reloadLanguageAction(){  
  2.         Locale locale = StaticFunction.getSystemLacate(MainActivity.this);  
  3.         Locale.setDefault(locale);    
  4.         Configuration config = new Configuration();    
  5.         config.locale = locale;    
  6.        getBaseContext().getResources().updateConfiguration(config, null);  
  7.        getBaseContext().getResources().flushLayoutCache();  
  8.          
  9.     }  


在哪里调用了 ?   这个问题跟 学挖掘机哪家强是同一个类型的问题。 上图






6.语言切换,也就是 你看到的第一张图,这里面的功能怎么搞

  


为什么要直接跳到首页, 不跳行不行了 ?    iOS可以不跳,iOS可以发送一个通知,全局一下子改变了, Android我最早的时候尝试过使用观察者模式,蛋碎了一地。。。。如果你使用观察者模式做到了我这种效果,请评论吧。。

这篇关于Android多国语言的设置的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/707588

相关文章

Android Paging 分页加载库使用实践

《AndroidPaging分页加载库使用实践》AndroidPaging库是Jetpack组件的一部分,它提供了一套完整的解决方案来处理大型数据集的分页加载,本文将深入探讨Paging库... 目录前言一、Paging 库概述二、Paging 3 核心组件1. PagingSource2. Pager3.

python设置环境变量路径实现过程

《python设置环境变量路径实现过程》本文介绍设置Python路径的多种方法:临时设置(Windows用`set`,Linux/macOS用`export`)、永久设置(系统属性或shell配置文件... 目录设置python路径的方法临时设置环境变量(适用于当前会话)永久设置环境变量(Windows系统

C语言进阶(预处理命令详解)

《C语言进阶(预处理命令详解)》文章讲解了宏定义规范、头文件包含方式及条件编译应用,强调带参宏需加括号避免计算错误,头文件应声明函数原型以便主函数调用,条件编译通过宏定义控制代码编译,适用于测试与模块... 目录1.宏定义1.1不带参宏1.2带参宏2.头文件的包含2.1头文件中的内容2.2工程结构3.条件编

Go语言并发之通知退出机制的实现

《Go语言并发之通知退出机制的实现》本文主要介绍了Go语言并发之通知退出机制的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录1、通知退出机制1.1 进程/main函数退出1.2 通过channel退出1.3 通过cont

Go语言编译环境设置教程

《Go语言编译环境设置教程》Go语言支持高并发(goroutine)、自动垃圾回收,编译为跨平台二进制文件,云原生兼容且社区活跃,开发便捷,内置测试与vet工具辅助检测错误,依赖模块化管理,提升开发效... 目录Go语言优势下载 Go  配置编译环境配置 GOPROXYIDE 设置(VS Code)一些基本

小白也能轻松上手! 路由器设置优化指南

《小白也能轻松上手!路由器设置优化指南》在日常生活中,我们常常会遇到WiFi网速慢的问题,这主要受到三个方面的影响,首要原因是WiFi产品的配置优化不合理,其次是硬件性能的不足,以及宽带线路本身的质... 在数字化时代,网络已成为生活必需品,追剧、游戏、办公、学习都离不开稳定高速的网络。但很多人面对新路由器

深入理解Go语言中二维切片的使用

《深入理解Go语言中二维切片的使用》本文深入讲解了Go语言中二维切片的概念与应用,用于表示矩阵、表格等二维数据结构,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习吧... 目录引言二维切片的基本概念定义创建二维切片二维切片的操作访问元素修改元素遍历二维切片二维切片的动态调整追加行动态

Android kotlin中 Channel 和 Flow 的区别和选择使用场景分析

《Androidkotlin中Channel和Flow的区别和选择使用场景分析》Kotlin协程中,Flow是冷数据流,按需触发,适合响应式数据处理;Channel是热数据流,持续发送,支持... 目录一、基本概念界定FlowChannel二、核心特性对比数据生产触发条件生产与消费的关系背压处理机制生命周期

Android ClassLoader加载机制详解

《AndroidClassLoader加载机制详解》Android的ClassLoader负责加载.dex文件,基于双亲委派模型,支持热修复和插件化,需注意类冲突、内存泄漏和兼容性问题,本文给大家介... 目录一、ClassLoader概述1.1 类加载的基本概念1.2 android与Java Class

linux hostname设置全过程

《linuxhostname设置全过程》:本文主要介绍linuxhostname设置全过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录查询hostname设置步骤其它相关点hostid/etc/hostsEDChina编程A工具license破解注意事项总结以RHE