在Android手机的"设置" - >"选择区域设置"中添加/删除语言条目

yao*_*bin 30 settings android locale

我的问题:

如何在源代码级别的Android手机的"设置" - >"语言和键盘设置" - >"选择区域设置"(或"选择语言")中添加或删除语言条目?

我会提供更多关于我想要什么以及我做了什么的细节. 如果我提出任何愚蠢的理解或信息,请原谅.我对Android开发很陌生,几天前开始学习它.还有很多我不知道的事情.

更多关于我想要的信息:

我最近正致力于使用新语言本地化整个手机产品(我的意思是,我不是在处理特定的应用程序.这就是为什么我需要在"设置"中添加新的区域设置).当我拿到开发电话时,我发现"选择区域设置" 中只有几个语言条目,例如"英语","法语"和"西班牙语".首先,我需要在此列表中添加并显示一些新的语言条目,例如"日语","中文","韩语".

我拥有Android平台的所有源代码和我自己的代码,所以我认为这个任务可以通过在某处修改源代码或资源文件来完成.不幸的是,我不知道代码和文件在哪里.

" Hello,L10N "教程显示了一种在运行时从"自定义区域设置"添加新区域设置的方法.但我想要的是在构建时添加新的语言环境,这样当手机启动时,新的语言环境将直接显示在"选择语言环境"中而无需任何其他操作.

我做了什么:

在我来之前,我在互联网上做了很多研究.这是我发现的:

  1. Stackoverflow中的Sinkiru询问了一个关于我正在寻找什么的问题.在这里看到它.然而,没有其他人回复他.他自己的回复只告诉在哪里查询CURRENT语言设置,这不是我想要的.我亲自给他发了一封电子邮件,但没有得到他的答复.

  2. 我在Stackoverflow中搜索了很多关键字"android locale","android language","android new locale"等等.本网站中的大多数问题都是询问如何更改应用的区域设置,如何为应用添加多语言支持等等.它们不是我想要的.

  3. 我在Android平台Google小组(http://groups.google.com/group/android-platform)中搜索了很多.有些人在问我的问题,但在阅读完这些消息之后,我仍然没有得到我的答案.. :-(这是我在小组中读到的帖子列表(我没有得到我想要的内容) :

  4. 返回上面列出的条目"(a)".在"操作系统本地化"消息主题中,Android框架工程师Dianne Hackborn说:

"这些设置应用程序只显示你所有的都在平台资源可用的区域. 添加字符串新的地方会自动在设置显示的那些.你告诉构建系统哪个区域的资源时,它构建包括 ..不幸的是,我无法帮助你,但也许其他人可以."

他粗体的话说明我的任务可以通过向源代码添加新的语言环境资源,以及通过在构建系统中设置或更改某些内容来自动完成. 我想知道这里有人曾经做过类似的事吗? 我明天会试一试.

  1. 最后但并非最不重要的是,我在官方Android开发者网站上搜索过.在"运行和测试的本地化应用程序"的" 你好,本地化 "教程,它说一些有关的可用语言环境中的"设置"应用程序,但基本上是在谈论在模拟器中做什么,这不应该是我需要的.我想在真正的手机上完成它.

  2. 我也潜入了试图发现一些东西的Android平台源代码.我从$(ANDR_SRC_ROOT)/ Packages/app/Settings/src /.../ LocalePicker.java开始.在LocalePicker :: onCreate()方法中,我注意到这行代码:

    String [] locales = getAssets().getLocales();

此行下面的代码尝试将所有获取的区域设置名称设置为ArrayAdapter,然后将适配器设置为要显示的列表视图.因此我认为"getLocales()"方法是解决方案的关键.

然后我查看了getLocales()代码.getLocales()是AssetManager的成员方法,并声明为native,因此我进入了$(ANDR_SRC_ROOT)/frameworks/base/libs/utils /AssetManager.cpp,其中我GUESS应该是java getLocales()的实际实现方法.C++ AssetManager :: getLocales()最终引导我进入C++ ResTable :: getConfigurations()方法,其中扫描成员变量" mPackageGroups "以检索所有可用的ResTable_config项. 因此,我认为在系统启动期间应将所有可用的语言环境添加到此mPackageGroups中. 但是,我最后输入了代码,无法找到将语言环境添加到mPackageGroups的位置.

Chr*_*ron 1

我认为普通的应用程序不应该手机添加位置。有一些特殊的软件包(例如MoreLocale 2)可用于此目的。如果您要添加区域设置,您不仅要负责为您自己的应用程序提供本地化,还要负责为整个系统提供本地化!

  • 嗨克里斯蒂安,我们的团队没有开发特定的应用程序。我们正在致力于整个手机的本地化。:-) (2认同)