如何向android的setting语言列表中添加一门语言

合集下载

android——实现多语言支持

android——实现多语言支持
MyProject/
res/
values/
strings.xml
values-es/
string.xml
values-fr/
string.xml
把字符串值添加到合适的文件中,在运行时,Android根据本地用户的设置来使用合适的字符串资源。例如,下面s/string.xml
西班牙语, /values-es/strings.xml
1 <?xml version="1.0" encoding="utf-8"?> 2 <resources> 3 <string name="title">Mi Aplicación</string> 4 <string name="hello_world">Hola Mundo!</string> 5 </resources>
博客园 用户登录 代码改变世界 密码登录 短信登录 忘记登录用户名 忘记密码 记住我 登录 第三方登录/注册 没有账户, 立即注册
android——实 现 多 语 言 支 持
我们知道,建好一个android 的项目后,默认的res下面 有layout、values、drawable等目录。这些都是程序默认的资源文件目录,如果 要实现多语言版本的话,我们就要添加要实现语言的对应的资源文件。步骤如下:
2、在源代码中,可以使用语句R.string.<string_name>来引用字符串资源,例如:
1 // Get a string resource from your app's Resources 2 String hello = getResources().getString(R.string.hello_world); 3 4 // Or supply a string resource to a method that requires a string 5 TextView textView = new TextView(this); 6 textView.setText(R.string.hello_world);

Android多语言适配的示例代码(兼容7.0+)

Android多语言适配的示例代码(兼容7.0+)

Android多语⾔适配的⽰例代码(兼容7.0+)⼀、前⾔1、安卓系统本⾝对多语⾔适配就提供了⼀套框架和API。

我们就直接⽤就可以了。

2、更换语⾔必须recreate Activity。

⽬前,没见过可以不重建的⽅法。

常⽤App,也都是重建的,可以看的到。

3、兼容性问题。

现在越来越多设备都是安卓7.0+新⼿机的安卓版本会更⾼(安卓8.0+),所以适配是必要的。

4、⽬前,⽹上⼤部分相关⽂章都是不兼容7.0+的,具体做法⼀搜⼀⼤把。

⼆、具体做法1、多语⾔⽂件⽂件夹命名参考下⾯博客(⽹上有很多):value默认放英⽂的资源⽂件,简体中⽂⽂件夹命名为values-zh-rCN,不需要翻译的设置translatable如下:复制代码代码如下:<string name="app_name_english" translatable="false">You App English Name</string>2、多语⾔⼯具类public class LanguageUtils {public static final String CHINESE_SIMPLE = "zh_CN";public static final String ENGLISH = "en";public static final String AUTO = "auto";private static final String TAG = "LanguageUtils";//public static final String[] LOCALES = Utils.getContext().getResources().getStringArray(R.array.locales);private LanguageUtils() {throw new UnsupportedOperationException("u can't instantiate me...");}public static void setSystemDefaultLocale(Locale locale) {}public static boolean isSetValue(Context context) {Locale currentLocale = context.getResources().getConfiguration().locale;return currentLocale.equals(getSetLocale());}private static Locale getSetLocale() {String locale = SPUtils.getInstance(_APP_SETTINGS).getString(BaseConstants.SP.KEY_LANGUAGE, LanguageUtils.AUTO);if (locale.equals(LanguageUtils.AUTO)) {if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {return Resources.getSystem().getConfiguration().getLocales().get(0);//解决了获取系统默认错误的问题} else {return Locale.getDefault();}}String[] array = locale.split("_");String language = array[0];if (array.length > 1) {String country = array[1];return new Locale(language, country);}return new Locale(language);}public static int getSetIndex() {String languageSet = SPUtils.getInstance(_APP_SETTINGS).getString(BaseConstants.SP.KEY_LANGUAGE, LanguageUtils.AUTO); int localeIndex = 0;switch (languageSet) {case LanguageUtils.AUTO:localeIndex = 0;break;case LanguageUtils.CHINESE_SIMPLE:localeIndex = 1;break;case LanguageUtils.ENGLISH:localeIndex = 2;break;}return localeIndex;}public static Context wrapContext(Context context) {Resources resources = context.getResources();Locale locale = LanguageUtils.getSetLocale();Configuration configuration = resources.getConfiguration();if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {configuration.setLocale(locale);LocaleList localeList = new LocaleList(locale);LocaleList.setDefault(localeList);configuration.setLocales(localeList);} else {configuration.setLocale(locale);}return context.createConfigurationContext(configuration);}public static void applyChange(Context context) {Resources res = context.getResources();DisplayMetrics dm = res.getDisplayMetrics();Configuration conf = res.getConfiguration();Locale locale = getSetLocale();if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {conf.setLocale(locale);LocaleList localeList = new LocaleList(locale);LocaleList.setDefault(localeList);conf.setLocales(localeList);} else {conf.setLocale(locale);}res.updateConfiguration(conf, dm);}}3、代码分析&兼容7.0+3.1、如何获取系统的语⾔设置,也就是7.0+你选择auto,可以正确切换。

如何在系统settings里添加设置选项

如何在系统settings里添加设置选项

如何在系统settings里添加设置选项版本:2.3.1目的:在通话设置菜单下,添加一dect设置菜单,里面再添加一checkBOxPreference 来使能硬件模块。

-------------------------目前做的项目,需要在系统settings里面添加一选项来使能硬件模块,里面涉及到的preference知识,请网上了解,这里记录下方法。

1,settings 应用一般在目录:\packages\apps\Settings,我们先找到通话设置的布局位置,看看它在那个包路径下,进入\packages\apps\Settings\res\xml,打开settings.xml文件:Java代码<com.android.settings.IconPreferenceScreenandroid:key="call_settings"settings:icon="@drawable/ic_settings_call"android:title="@string/call_settings_title"><intentandroid:action="android.intent.action.MAIN"android:targetPackage="com.android.phone"android:targetClass="com.android.phone.CallFeaturesSetting" /></com.android.settings.IconPreferenceScreen><com.android.settings.IconPreferenceScreenandroid:key="call_settings"settings:icon="@drawable/ic_settings_call"android:title="@string/call_settings_title"><intentandroid:action="android.intent.action.MAIN"android:targetPackage="com.android.phone"android:targetClass="com.android.phone.CallFeaturesSetting" /> </com.android.settings.IconPreferenceScreen>android:targetPackage="com.android.phone"android:targetClass="com.android.phone.CallFeaturesSetting"targetPackage:表示包名,根据此我们可以找到通话设置的路径。

怎么让英文的操作系统显示中文

怎么让英文的操作系统显示中文

同样是在控制面板的“Regional and Language Options”设置下,打开“Advanced”选项卡,在这里有一个“Select a language to match the language version of the non-Unicode programs you want to use”的设置,这里就是给你的非Unicode程序设置语言环境的。如果你比较常用简体中文的非Unicode程序,就在这里的下拉菜单中选择“Chinese(PRC)”,然后确定并重启动电脑。这样就可以正常使用这些程序了。
打开控制面板,点击“Data, Time, Language , and Regional Options”,然后再点击“Regional and Language Options”,会弹出一个窗口,打开这个窗口的“Languages”选项卡,选中“Install files for East Asian languages(安装东亚语言支持)”,然后点击“Apply”。这时系统可能会要求你插入操作系统的安装光盘并复制一些文件,完成后会重启动。启动好,所有的中文文件和中文网页就都可以正常打开和使用了。
3. 在“Regional Options”选项卡的“Standards and Formats”下拉框中选择“Chinese (PRC)”使用中文格式。“Location”下拉框中选择“China”,表示当前所属区域为中国;
4. 在“Language”选项卡中单击“Details”按钮,在“Settings”中的“Default input language”下拉框中选择“Chinese (PRC)-Chinese(Simplified)-US Keyboard”,并且在“Installed Serivces”中点击“Add”按钮即可添加中文输入法。

黑马程序员安卓教程:Android之Setting源码导入

黑马程序员安卓教程:Android之Setting源码导入

Android之Setting源码导入
Android项目中,我们常常需要获取当前设备的可用空间。

如何在代码中实现获取当前系统可用空间的大小,具体操作如下。

1.打开Android
2.3的模拟器,【Menu】→【Setting】→【Storage】路径下可以查看到当前设备的可用空间,如图1-1所示:
S sd卡总空间D卡的
空间总量
S sd卡可用空间
可用内存空间
图1-1所示
在Android操作系统上已经实现了可用空间的读取,因此我们可以参考操作系统中的相关方法来编写自己的方法。

网上自己下载Android2.3操作系统的源码(可参考提取出来setting源码),在该源码中查看系统内部是如何处理可用空间的读取的。

2.找到Android源代码中的setting文件,导入eclipse中,【import】→【Existing Projects into
Workspace】出现错误提示:no projects are found to import。

这是因为导入的settings源码并不是一个标准的Android应用程序,它缺少一些Android应用程序所必须的配置文件如:.classpath等,所有无法直接导入该工程。

解决办法:【file】→【new】→【Project】→【Android】→【Android Project from existing code】,此时settings源码便可导进eclipse中,如图1-2所示:
图1-2所示
上图导入的源码有很多错误提示,主要是因为settings应用在编译时需要依赖于系统环境,而当前的开发环境并没有导入这些依赖,但这并不影响我们对源码的查看。

android字符串多语言实现

android字符串多语言实现
在学习 Android 的过程中,有一种很好的练习方式就是从应用程序的代码中提取字符串并 把它们保存在外部文件中.Android 在每个项目中创建了一个资源文件目录,让这一起变的 简单易操作. 如果使用 Android 的 SDK 工具包创建工程,那么在工程项目文件的最上一级 会有一个 res/ 目录中也包含了少量的默认文件,比如可以保持字符串值的 res/values/st
:西班牙语 /values/strings-es.xml : 1. 2. 3. 4. 5. <?xml version"utf-8"?> <resources> <string name="title">MiAplicación</string> <string name="hello_world">HolaMundo!</string> </resources>
rings.xml 文件.
创建本地语言环境目录和字符串文件
为了支持更多的语言,需要在 values 目录的名称需要以连字符“—”和国家的 ISO 码结尾. 举个例子,values-es/目录中包含了语言代码和语言环境为“ES”的简单资源。Android 在运行时会根据设备的语言环境设置来装载适当的资源. 1. 2. 3. 4. 5. 6. 7. 8. MyProject/ res/ values/ strings.xml values-es/ strings.xml values-fr/ strings.xml
在其他的 XML 文件中,只要 XML 的属性能够接受字符串,就可以使用 @string/<string_
name> 的语法引用字符串,示例如下:

手机语言变更详细操作方法

手机语言变更详细操作方法

手机语言变更详细操作方法
要更改手机的语言,您可以按照以下步骤进行操作(以Android系统为例):
1. 打开手机的“设置”应用。

通常可以在桌面或应用列表中找到该应用,图标通常是一个齿轮形状。

2. 在设置菜单中找到并点击“语言和输入”选项。

它可能位于"系统"、"高级设置"或"个人设置"内,具体位置可能因不同手机品牌和操作系统版本而异。

3. 在"语言和输入"菜单中,找到"语言"或"语言和地区"选项。

4. 在语言列表中,选择您想要更改的语言。

通常会显示多种可用的语言选项。

5. 一旦您选择了新语言,系统会提示您确认更改。

点击"是"或"确定"确认更改。

6. 系统会开始下载并安装所选语言的语言包。

请耐心等待安装完成。

7. 完成安装后,您的手机的语言将会更改为您所选择的新语言。

请注意,不同的手机品牌和操作系统版本可能会有所不同,以上步骤仅供参考。

如果您在操作过程中遇到困难,建议查阅手机的用户手册或联系手机厂商的客户支持。

Android 5.1 Settings数据库添加字段

Android 5.1 Settings数据库添加字段

1、在/frameworks/base/core/java/android/provider/Settings.java 加入下面的字符串定义: public static final String ETHERNET_ENABLED = "ethernet_enabled"; 2、数据库中数据的默认数据在 frameworks/base/packages/SettingsProvider/res/values/defaults.xml 中 定义 想要在数据库中添加一个新的字段: <!-- Default for Settings.System.ETHERNET_ENABLED --> <integer name="def_ethernet_enabled">0</integer> 3、在 frameworks/base/packages/SettingsProvider/src/com/android/providers/s ettings/DatabaseHelper.java 中的 private void loadSystemSettings(SQLiteDatabase db) 方法中加入新字段的添加代码; //new add field loadIntegerSetting(stmt, Settings.System.ETHERNET_ENABLED,R.integer.def_ethernet_enable d); 4、 重新编译一个 SettingsProvider.apk,再替换原来的 SettingsProvider.apk 5、重新编译 framework 层 6、用 Settings.System.putInt();Settings.System.getInt()来设置和取得设 置的值 6.1、获取值 private ContentResolver mResolver = null; mResolver = mContext.getContentResolver(); int ethernetEnabled = Settings.System.getInt(mResolver,Settings.System.ETHERNET_ENAB LED,0); boolean ethernetBool = (ethernetEnabled != 0) ? true : false; 6、2 设置值 mDe = (mDialogClicked) ? 1 : 0; Settings.System.putInt(mResolver, Settings.System.ETHERNET_ENABLED, intValue);

刷机成英文,设置成中文

刷机成英文,设置成中文

Morelocale2中文区域补丁, 区域设置 MoreLocale2刚把htcG8成功刷机成2.3.5 但是遇到成英文的了怎么
样让它在变成中文的啊??急急急高手帮忙啊
一.机器本身自带中文的设置方法(即亚太或东南亚版):
以下是中英文对比
1.进到菜单
中文:(设置)选择(语言和键盘)
英文:(Settings)选择(Language&Keyboard)
2.中文:然后进入(选择区域)
英文:然后进入(Select locale)
3.中文:选择第一个(中文)
英文:选择第一个(中文)
完成后你的手机就是中文显示了。

如果手机的设置语言英文不懂看,就下载个区域语言的软件MORELOCAFE2 这个安装就会提示简体中文,绝对可行,有需要加设置语言和键盘选择区域然后选择简体中文
setting设置里面,Language语言选项吧,你看下,应该有简体中文的选项的,要是没有的话,你要装个中文的语言安装包了
HTC G6刷机的时候出现问题,系统变成了英文原版的了,怎么办??
我在刷机的时候到recovery界面的时候,当我选择
apply update.zip的时候提示
signature verification failed,然后我就刷不下去了。

但是重启手机之后我发现系统变成了英文原版的了,语言设置自然也没有汉语选项。

怎么破?
MoreLocale多区域语言软件V2.0.0找这个安装下,很容易解决的
HTC欧版和亚太版中文区域补丁
如果机油的欧版和亚太版不小心恢复出厂设置没有中文
可以装上此补丁,就有中文语言的选项了!
Morelocale2中文区域补丁,区域设置 MoreLocale2。

Androidapp应用多语言切换功能实现

Androidapp应用多语言切换功能实现

Androidapp应⽤多语⾔切换功能实现最近在做⼀个多语⾔切换的功能,类似于微信的语⾔切换,搜了下资料基本上都是以下这种:1. 实现的效果和微信类似,在设置界⾯打开切换语⾔的界⾯,选择语⾔后重启 HomeActivity,语⾔切换完成,下次重新打开 App ,也是⽤户设置的语⾔。

2. 实现步骤1. 添加多语⾔⽂件在不同的 value ⽂件夹下(例如 value 、value-en、values-zh-rTW ⽂件夹)添加不同语⾔的 string.xml ⽂件,我们的项⽬添加了英⽂、简体中⽂、繁体中⽂三种语⾔,如下图所⽰:其中英⽂需要翻译,繁体如果没有专门翻译的话,可以找个简繁转换⽹站,直接将简体中⽂转成繁体中⽂,我⽤的这个⽹站:。

2. 更新 Configuration 中的 locale 属性参照 上 的描述,Configuration 包含了设备的所有的配置信息,这些配置信息会影响应⽤获取的资源。

例如 string 资源,就是根据Configuration 的 locale 属性来判断该取哪种语⾔的 string 资源,默认是 value ⽂件夹下的。

主要代码如下:1 Resources resources = getContext().getResources();2 DisplayMetrics dm = resources.getDisplayMetrics();3 Configuration config = resources.getConfiguration();4// 应⽤⽤户选择语⾔5 config.locale = Locale.ENGLISH;6 resources.updateConfiguration(config, dm);我们⽤了 Locale 中的预设值 Locale.ENGLISH、Locale.TRADITIONAL_CHINESE和 Locale.SIMPLIFIED_CHINESE,如果你需要设置的语⾔没有预设值,你可以⾃⼰新建⼀个 Locale 对象,具体⾃⾏ Google 吧。

应用系统语言设置方法

应用系统语言设置方法

应用系统语言设置方法
在现代化的应用系统中,语言设置是非常重要的,因为它可以帮助用户更好地理解和使用该应用系统。

本文将介绍应用系统语言设置的方法。

1. 语言设置选项
大多数应用程序都提供语言设置选项,通常可在“设置”或“选项”菜单中找到。

用户可以通过选择他们所熟悉的语言来更改应用程序的语言设置。

2. 实时翻译功能
一些应用程序提供实时翻译功能,这可以帮助用户更好地理解和使用应用程序。

用户可以选择需要翻译的文本,然后选择他们所熟悉的语言,应用程序会自动翻译文本。

3. 应用程序语言包下载
如果应用程序没有提供用户所熟悉的语言设置选项,用户可以尝试下载应用程序的语言包。

这些语言包通常可以从应用程序的官方网站或其他软件下载网站上下载。

4. 使用第三方软件
如果以上方法仍然无法解决语言设置问题,用户可以尝试使用第三方
软件。

这些软件可以帮助用户更改操作系统的默认语言设置,从而影响所有应用程序的语言设置。

总之,应用程序语言设置对于用户来说非常重要。

用户可以通过选择语言设置选项、实时翻译功能、下载应用程序语言包或使用第三方软件来更改应用程序的语言设置。

Android实现应用内置语言切换功能

Android实现应用内置语言切换功能

Android实现应⽤内置语⾔切换功能⼀、需求有时候应⽤需要在内部切换语⾔但⼜不影响系统的语⾔,⽐如是应⽤现在是中⽂的,系统语⾔也是中⽂的,我把应⽤的切换成英⽂显⽰后系统语⾔还是中⽂的,系统语⾔切换后也不会被改变,还有就是有些机的系统是被改造精简过的,⽐如有些国产机的系统的语⾔就被精简剩中⽂和英⽂。

⽀付宝、微信、Top Story都有在应⽤内部设置语⾔切换这样的功能。

⼆、实现效果先看看实现效果吧。

三、实现(⼀)添加多种语⾔的资源⽂件夹及⽂件我这默认是英语再添加了个俄⽂(Google翻译的)和中⽂。

values/strings.xml<resources><string name="app_name">SwitchLanguage</string><string name="helloworld">Hello World!</string><string name="language">Eng</string><string name="english">English</string><string name="chinese">中⽂</string><string name="russian">русский</string><string name="secondact">Second Activity</string></resources>values-ru/strings.xml<resources><string name="app_name">Переключение язык</string><string name="helloworld">привет мир!</string><string name="language">русский</string><string name="secondact">второй активность</string></resources>values-zh/strings.xml<resources><string name="app_name">切换语⾔</string><string name="helloworld">你好世界!</string><string name="language">中⽂</string><string name="secondact">第⼆屏</string></resources>(⼆)布局⽂件activity_main.xml默认标题栏的⽂字是切换语⾔后是不会被改变的,使⽤Toobar替换掉就可以了。

如何向android的setting语言列表中添加一门语言

如何向android的setting语言列表中添加一门语言

如何向android的setting语言列表中添加一门语言(已经解决)看了下,android2.2系统有越南语的字库,所以支持越南语,但setting中语言列表里没有越南语选项,起初我在LocalePicker.java的onCreate方法的133行做了如下修改:1.mLocales = new Loc[finalSize+1];2.for (int i = 0; i < finalSize ; i++) {3.mLocales[i] = preprocess[i];4.}5.Locale temp = new Locale("vi", "VN");//vi是越南语6.mLocales[finalSize] = newLoc(toTitleCase(getDisplayName(temp)), temp);7.Arrays.sort(mLocales);复制代码重新编译后,语言列表里有了越南语,但点击后系统语言还是默认的英文,也就是说系统语言没有更改成功,我再看了下/data/property/目录下关于语言和国家的两个属性文件都是修改成功了的,再继续往下跟代码,但没有所获,google了一下,搜到了一篇关于android2.1 架构解析之语言定制的帖子(/gigatron/blo ... c8ab20843bd0e24445d,有兴趣的朋友可以看下),里面说语言选择列表在external/icu4c/stubdata/Android.mk中配置,我在这里面添加了越南语,最后返回上一级,查看readme.txt,官方已经给出说明,改动后需要将语言配置的txt转成dat,可是在run icu_dat_generator.py 4.2这个命令时一直报错,到现在还没弄好,希望有涉及过这方面的朋友分享下经验,谢谢!问题已经解决,解决步骤开始写在回复里,现在直接写到该位置吧:第一种:修改配置文件位置:build/target/product/languages_full.mk| languages_small.mk,这两个文件里头,有PRODUCT_LOCALES := en_US en_GB fr_FR it_IT es_ES es_US 这样的片段,其实setting中语言选择列表的数据源头就来源于此,既然找到了源头,那只要在之后加上我们想要的语言即可,比如要加越南语只要在后面加上“vi_VN”即可,但细心的同学打开这两个文件比较的时候会发现一个问题:里面都有PRODUCT_LOCALES :=这样的片段,只是languages_small.mk 的语言要比前者少些,聪明,这就是答案,从命名上也可发现一个full一个small,当我们不需要更多的语言时候,那languages_small.mk里面的语言就可以满足,而且语言少,生成的image所占用的空间也会相对小些,没验证过哈,只是根据同目录下full.mk里的注释“Get a list of languages. We use the small list to save space on smaller devices.”推测的。

Android digst增加提示语

Android digst增加提示语

Android digst增加提示语
准备工具:re管理器、apk编辑器破解版
1. 打开re管理器进入system文件夹进入app文件夹,然后找到 Settings.apk 文件点全部解压也就是全部提取。

耐心等待……提取完了之后,打开apk编辑器。

2.进入 SpeedSoftware文件夹,进入 Extracted,进入 Settings找到resources.arsc文件。

3.点击打开点击apk编辑器下面的放大镜图标,搜索关于手机里面的字如硬件型号等等…,然后在下面的横线上打上你想要修改名字,修改完了之后点击返回,它会提示你保存你点保存,然后提示你保存字典你点不保存,退出来了以后删掉 resources.arsc.bak。

4.退出apk编辑器。

5.进入re进入 SpeedSoftware文件夹。

6.进入 Extracted。

7.找到 Settings,点击创建zip文件、跳转。

8.把settings.zip 改为settings.apk,点击移动,移动到system系统文件夹,改权限,,改好权限替换进app文件夹。

9.重启你的手机……
记得一定要用破解版apk编辑器不然改不了。

android+添加波斯语与新添加一种系统不带的语言方法

android+添加波斯语与新添加一种系统不带的语言方法

如何添加一种新语言钟斌2011-12-16前些时候,因为客户要求加波斯语,但是目前android2.3.1并没有这种语言,在客户要求一定要有波斯语的情况,经过长时间的摸索与在网上求助,终于将波斯语给加出来了。

下面讲讲新增加一种语言的步骤:1.在sdkDemo.mk 中添加语言和国家的国际化的缩写代码,如伊朗:IR表示,波斯语用fa表示,这是国际化的标准,不可以随便写的。

如果不知道国家与地区的缩写,可以去网上找找。

PRODUCT_LOCALES := fa_IR en_US zh_CN en_GB fr_FR it_IT es_ES ……..sdkDemo.mk的路径为:gingerbread\device\rockchip\sdkDemo\sdkDemo.mk.2.在framework/base/data/font目录下添加波斯语的字库,如DroidSansArabic.ttf3.字库加完后,就要去调用字库了,调用字库的文件是在external/skia/src/ports/SKFontHost-android.app下,static const FontInitRec gSystemFonts[] = {{ "DroidSans.ttf", gSansNames },………{ "DroidSansArabic.ttf", gFBNames },4.字库准备好了,还有一些makefile需要修改了。

在external/icu4c/studata/ Android.mk下:config := $(word 1, \$(if $(findstring ar,$(PRODUCT_LOCALES)),large) \$(if $(findstring fa,$(PRODUCT_LOCALES)),large) \5. 在frameworks/base/core/res/res/下新增加一个values-fa-rIR的文件夹,并新建一个strings.xml文件。

Android国际化之中英文语言切换

Android国际化之中英文语言切换

Android国际化之中英⽂语⾔切换不想废话,直接上⼲货@Overrideprotected void attachBaseContext(Context newBase) {Locale newLocale;if (SPUtil.getBoolean(newBase,"isEN")) {//设置英⽂newLocale = Locale.ENGLISH;} else {//设置中⽂newLocale = Locale.SIMPLIFIED_CHINESE;}Context context = MyContextWrapper.wrap(newBase, newLocale);super.attachBaseContext(context);}是的,直接在你继承的BaseActivity⾥⾯重载(@Override)attachBaseContext⽅法即可。

⾥⾯有⼀个⾃定义的MyContextWrapper:import android.content.Context;import android.content.ContextWrapper;import android.content.res.Configuration;import android.content.res.Resources;import android.os.Build;import android.os.LocaleList;import java.util.Locale;public class MyContextWrapper extends ContextWrapper {public MyContextWrapper(Context base) {super(base);}public static ContextWrapper wrap(Context context, Locale newLocale) {Resources res = context.getResources();Configuration configuration = res.getConfiguration();if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {configuration.setLocale(newLocale);LocaleList localeList = new LocaleList(newLocale);LocaleList.setDefault(localeList);configuration.setLocales(localeList);context = context.createConfigurationContext(configuration);} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {configuration.setLocale(newLocale);context = context.createConfigurationContext(configuration);}return new ContextWrapper(context);}}关于SPUtil,就是⼀个简单的SharedPreferences内容存取类:import android.content.Context;import android.content.SharedPreferences;public class SPUtil {/*** 万能的put⽅法 (能存储String/int/boolean类型的值)* @param context* @param key* @param value*/public static void put(Context context, String key, Object value) {SharedPreferences sp = context.getSharedPreferences("config", Context.MODE_PRIVATE);SharedPreferences.Editor edit = sp.edit();if (value instanceof String) {edit.putString(key, (String) value);} else if (value instanceof Integer) {//JDK1.7之后可以把引⽤数据类型转为基本数据类型edit.putInt(key, (int) value);} else if (value instanceof Boolean) {edit.putBoolean(key, (boolean) value);}edit.apply();}/*** 获取String* @param context* @param key* @return*/public static String getString(Context context, String key) {SharedPreferences sp = context.getSharedPreferences("config", Context.MODE_PRIVATE);return sp.getString(key, "");}/*** 获取int* @param context* @param key* @return*/public static int getInt(Context context, String key) {SharedPreferences sp = context.getSharedPreferences("config", Context.MODE_PRIVATE); return sp.getInt(key, 0);}/*** 获取Boolean* @param context* @param key* @return*/public static boolean getBoolean(Context context, String key) {SharedPreferences sp = context.getSharedPreferences("config", Context.MODE_PRIVATE); return sp.getBoolean(key, false);}/*** 清空⾸选项** */public static void clearData(Context context){SharedPreferences sp = context.getSharedPreferences("config", Context.MODE_PRIVATE); sp.edit().clear().apply();}}代码到这⾥也就结束了,下⾯是添加国际化语⾔的简单步骤:切记修改语⾔之后⼀定要重新加载页⾯,不然不会⽴即⽣效SPUtil.put(SettingActivity.this,"isEN",isChecked);recreate();到此这篇关于Android国际化之中英⽂语⾔切换的⽂章就介绍到这了,更多相关Android中英⽂语⾔切换内容请搜索以前的⽂章或继续浏览下⾯的相关⽂章希望⼤家以后多多⽀持!。

AndroidStudio本地化中文随系统语言显示文字

AndroidStudio本地化中文随系统语言显示文字

AndroidStudio本地化中文随系统语言显示文字
问题描述:
各个编程语言绕不开的一道槛就是本地化,Android的本地化操作相当简单。

只需要打开一下res\values\strings.xml文件,右上角就会出现一个Open Editor的蓝色字眼,点一下就可以打开Android的翻译界面。

编辑
解决办法:
具体操作就是,点击下图中的“小地球”,然后添加Chinese,接着点问号旁边的刷新按钮,所有当前strings里的字符串就会显示在下方表格中了。

这里有个问题,就是不能中断,一旦全部导入进来之后,就得全部翻译。

如果你之前的字符串太多,一时间忙不过来,那么可以直接复制原先的strings里面的内容到新的zh-rCN\strings.xml文件中,以后再继续更新。

实际AndroidStudio就是新建了一个对应语言的目录,底下新建了一个strings.xml文件。

感觉这个操作比起其他IDE要方便很多。

编辑。

怎样把手机设置成全英文

怎样把手机设置成全英文

怎样把手机设置成全英文
手机语言里面一般都会有中文和英文的语言选择,有些手机甚至会有某些小语种的选择。

比如三星手机,它除了可以选择中文和英文的语言外,还可以选择韩文。

下面小编就来讲讲手机怎么把语言设置成中文、英文。

把手机设置成全英文的方法
在手机桌面中都会有一个“设定”的功能,找到“设定”功能之后,点击打开“设定”。

点击打开“设定”功能之后,需要先找到“语言”的设置项。

这页没有,继续往下翻。

往下翻找到“语言与键盘”,找到“语言与键盘”的功能之后,点击打开“语言与键盘”。

在“语言与键盘”下,找到“语言设置”。

在“语言设置”中,系统默认是中文,点击打开“选择语言”。

点击打开“选择语言”之后,系统默认的选择中文。

然后也可以选择英文和韩文的。

选择了韩文之后,再返回到手机中。

在手机中就可以看到把中文更换成韩文之后的效果。

如果想要把韩文再变回成中文,那么还是同样的路径,进入到语言选择中,选择中文即可。

怎样把手机设置成全英文手机语言里面一般都会有中文和英文的语言选择,有些手机甚至会有某些小语种的选择。

比如三星手机,它除了可以选择中文和英文的语言外,还可以选择韩文。

下面小编就来讲讲手机怎么把语言设置成中文、英文。

把手机设置成全英文的方法在手机桌面中都会有一个推荐度:点击下载文档文档为doc格式。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

如何向android的setting语言列表中添加一门语言(已经解决)看了下,android2.2系统有越南语的字库,所以支持越南语,但setting中语言列表里没有越南语选项,起初我在LocalePicker.java的onCreate方法的133行做了如下修改:1.mLocales = new Loc[finalSize+1];2.for (int i = 0; i < finalSize ; i++) {3.mLocales[i] = preprocess[i];4.}5.Locale temp = new Locale("vi", "VN");//vi是越南语6.mLocales[finalSize] = newLoc(toTitleCase(getDisplayName(temp)), temp);7.Arrays.sort(mLocales);复制代码重新编译后,语言列表里有了越南语,但点击后系统语言还是默认的英文,也就是说系统语言没有更改成功,我再看了下/data/property/目录下关于语言和国家的两个属性文件都是修改成功了的,再继续往下跟代码,但没有所获,google了一下,搜到了一篇关于android2.1 架构解析之语言定制的帖子(/gigatron/blo ... c8ab20843bd0e24445d,有兴趣的朋友可以看下),里面说语言选择列表在external/icu4c/stubdata/Android.mk中配置,我在这里面添加了越南语,最后返回上一级,查看readme.txt,官方已经给出说明,改动后需要将语言配置的txt转成dat,可是在run icu_dat_generator.py 4.2这个命令时一直报错,到现在还没弄好,希望有涉及过这方面的朋友分享下经验,谢谢!问题已经解决,解决步骤开始写在回复里,现在直接写到该位置吧:第一种:修改配置文件位置:build/target/product/languages_full.mk| languages_small.mk,这两个文件里头,有PRODUCT_LOCALES := en_US en_GB fr_FR it_IT es_ES es_US 这样的片段,其实setting中语言选择列表的数据源头就来源于此,既然找到了源头,那只要在之后加上我们想要的语言即可,比如要加越南语只要在后面加上“vi_VN”即可,但细心的同学打开这两个文件比较的时候会发现一个问题:里面都有PRODUCT_LOCALES :=这样的片段,只是languages_small.mk 的语言要比前者少些,聪明,这就是答案,从命名上也可发现一个full一个small,当我们不需要更多的语言时候,那languages_small.mk里面的语言就可以满足,而且语言少,生成的image所占用的空间也会相对小些,没验证过哈,只是根据同目录下full.mk里的注释“Get a list of languages. We use the small list to save space on smaller devices.”推测的。

好了,接下来,会有一个问题就是在哪个地方去设置full还是small呢?刚提到一个full.mk的文件,这里面有这样的片段:$(call inherit-product, build/target/product/languages_small.mk),后者路径就是我们要设置的地方。

好了,改好后,得整个make下,这个得花些时间,好多模块都是重新编译。

第二种:编码方式修改Android里一个listview会对应一个数据数组,那我们只需在这个数组里按格式添加我们所需要的数据就行了,我们的目标是com.android.settings.LocalePicker.java,在该文件133行位置做如下修改:mLocales = new Loc[finalSize+1];for (int i = 0; i < finalSize ; i++) {mLocales = preprocess;}Locale temp = new Locale("vi", "VN");mLocales[finalSize] =new Loc(toTitleCase(temp.getDisplayLanguage(temp)), temp);这步做完后setting的语言列表里就有了越南语了,但点击越南语后,界面没发现有什么变化,那是因为android系统没有对越南语写响应的国际化资源文件,你可以自己写应用测试ADROID 2.1 架构解析1 语言定制2010-04-17 21:041 语言定制1.1 ICU4C1.1.1 ICU4C简介ICU4C(ICU for C,/)是ICU在C/C++平台下的版本, ICU(International Component for Unicode)是基于"IBM公共许可证"的,与开源组织合作研究的, 用于支持软件国际化的开源项目。

ICU4C提供了C/C++平台强大的国际化开发能力,软件开发者几乎可以使用ICU4C解决任何国际化的问题,根据各地的风俗和语言习惯,实现对数字、货币、时间、日期、和消息的格式化、解析,对字符串进行大小写转换、整理、搜索和排序等功能,必须一提的是,ICU4C提供了强大的BIDI算法,对阿拉伯语等BIDI语言提供了完善的支持。

ICU首先是由Taligent公司开发的,Taligent公司现在被合并为IBM?公司全球化认证中心的Unicode研究组,然后ICU由IBM和开源组织合作继续开发,开源组织给与了ICU极大的帮助。

开始ICU只有Java平台的版本,后来这个平台下的ICU类被吸纳入SUN公司开发的JDK1.1,并在JDK以后的版本中不断改进。

C++和C平台下的ICU是由JA VA平台下的ICU 移植过来的,移植过的版本被称为ICU4C,来支持这C/C++两个平台下的国际化应用。

ICU4C和ICU4C区别不大,但由于ICU4C是开源的,并且紧密跟进Unicode标准,ICU4C 支持的Unicode标准总是最新的;同时,因为JA V A平台的ICU4J的发布需要和JDK绑定,ICU4C支持Unicode标准改变的速度要比ICU4J快的多。

1.1.2 ANDROID语言包Android 使用的语言包就是ICU4C,位置:external/icu4c。

Android支持的语言有:Locale CANADA Locale constant for en_CA.Locale CANADA_FRENCH Locale constant for fr_CA.Locale CHINA Locale constant for zh_CN.Locale CHINESE Locale constant for zh.Locale ENGLISH Locale constant for en.Locale FRANCE Locale constant for fr_FR.Locale FRENCH Locale constant for fr.Locale GERMAN Locale constant for de.Locale GERMANY Locale constant for de_DE.Locale ITALIAN Locale constant for it.Locale ITALY Locale constant for it_IT.Locale JAPAN Locale constant for ja_JP.Locale JAPANESE Locale constant for ja.Locale KOREA Locale constant for ko_KR.Locale KOREAN Locale constant for ko.Locale PRC Locale constant for zh_CN.Locale SIMPLIFIED_CHINESE Locale constant for zh_CN.Locale TAIWAN Locale constant for zh_TW.Locale TRADITIONAL_CHINESE Locale constant for zh_TW.Locale UK Locale constant for en_GB.Locale US Locale constant for en_US.1.2 定制语言在PRODUCT_LOCALES字段里添加需要语言,如:PRODUCT_LOCALES := en_US zh_CN则系统里只有英语和汉语两种语言。

然后语言的选择处理是在external/icu4c/stubdata/Android.mk里进行的,如下:config := $(word 1, \$(if $(findstring ar,$(PRODUCT_LOCALES)),large) \$(if $(findstring da,$(PRODUCT_LOCALES)),large) \$(if $(findstring el,$(PRODUCT_LOCALES)),large) \$(if $(findstring fi,$(PRODUCT_LOCALES)),large) \$(if $(findstring he,$(PRODUCT_LOCALES)),large) \$(if $(findstring hr,$(PRODUCT_LOCALES)),large) \$(if $(findstring hu,$(PRODUCT_LOCALES)),large) \$(if $(findstring id,$(PRODUCT_LOCALES)),large) \$(if $(findstring ko,$(PRODUCT_LOCALES)),large) \$(if $(findstring nb,$(PRODUCT_LOCALES)),large) \$(if $(findstring pt,$(PRODUCT_LOCALES)),large) \$(if $(findstring ro,$(PRODUCT_LOCALES)),large) \$(if $(findstring ru,$(PRODUCT_LOCALES)),large) \$(if $(findstring sk,$(PRODUCT_LOCALES)),large) \$(if $(findstring sr,$(PRODUCT_LOCALES)),large) \$(if $(findstring sv,$(PRODUCT_LOCALES)),large) \$(if $(findstring th,$(PRODUCT_LOCALES)),large) \$(if $(findstring tr,$(PRODUCT_LOCALES)),large) \$(if $(findstring uk,$(PRODUCT_LOCALES)),large) \$(if $(findstring zh,$(PRODUCT_LOCALES)),large) \$(if $(findstring ja,$(PRODUCT_LOCALES)),us-japan) \$(if $(findstring it,$(PRODUCT_LOCALES)),us-euro) \$(if $(findstring pl,$(PRODUCT_LOCALES)),us-euro) \$(if $(findstring cs,$(PRODUCT_LOCALES)),default) \$(if $(findstring de,$(PRODUCT_LOCALES)),default) \$(if $(findstring fr,$(PRODUCT_LOCALES)),default) \$(if $(findstring nl,$(PRODUCT_LOCALES)),default) \us)1.3 默认语言默认语言的选择实现是在build/core/Makefile里,从PRODUCT_LOCALES里选择第一个语言作为默认语言,如下:define default-locale$(subst _, , $(firstword $(1)))endef# Selects the first locale in the list given as the argument# and returns the language (or the region)define default-locale-language$(word 2, 2, $(call default-locale, $(1)))endefdefine default-locale-region$(word 3, 3, $(call default-locale, $(1)))Endef...PRODUCT_DEFAULT_LANGUAGE="$(calldefault-locale-language,$(PRODUCT_LOCALES))" \PRODUCT_DEFAULT_REGION="$(call default-locale-region,$(PRODUCT_LOCALES))" \然后通过build/tool/buildinfo.sh文件将如下段写到文件build.prop,如下:echo "nguage=$PRODUCT_DEFAULT_LANGUAGE"echo "ro.product.locale.region=$PRODUCT_DEFAULT_REGION"所以,要改变默认语言用下面两种方法中的一种就行了:1 在PRODUCT_LOCALES字段里,将要选择的语言放在第一位,如:PRODUCT_LOCALES := en_US zh_CN默认语言是英语2在nguage和persist.sys.country里指定语言,如下:PRODUCT_PROPERTY_OVERRIDES := \nguage=zh \persist.sys.country=CNbuild.prop文件的处理是在system/core/init/property_service.c。

相关文档
最新文档