如何在安卓系统中修改默认语言环境?

7
默认情况下,Android 系统的默认位置为美国,语言为英语。 但是我想将默认位置设置为另一个国家/地区,这样用户在第一次启动 Android 时就可以看到他们的母语。
我尝试了修改代码(/dalvik/libcore/luni/src/main/java/java/util/Locale.java),改变了 locale 的默认值,但是没有效果。
请问如何设置默认位置?
*我想制作一个 Android 映像,然后将其烧录到设备上,当 Android 第一次启动时,我希望其操作系统的语言不是英语,而是另一种语言。

2
因为我误解了问题,所以请删除我的回答。为了向每个读者澄清:这个问题针对的是一个定制的安卓系统构建(自定义ROM),而不是基于应用程序的。 - WarrenFaith
5个回答

3

感谢您的回复。

我已经找到了修改默认语言的方法。

只需要修改 file(build/core/Makefile) 文件。

PRODUCT_DEFAULT_LANGUAGEPRODUCT_DEFAULT_REGION 设置为您想要的语言和地区即可。


那一行大概是这样的:PRODUCT_DEFAULT_REGION="$(call default-locale-region,$(PRODUCT_LOCALES))" \ ------- 有一个示例值吗?! - Dr.jacky

2

我通过 build/target/product/core.mk 帮助客户进行构建。
示例:

PRODUCT_PROPERTY_OVERRIDES := \
    ro.config.notification_sound=OnTheHunt.ogg \
    ro.config.alarm_alert=Alarm_Classic.ogg \
    ro.config.ringtone=BirdLoop.ogg \
    persist.sys.language=zh \
    persist.sys.country=CN \
    persist.sys.timezone=Asia/Shanghai

这是我制作简体中文客户版本的方法。


0

你已经查看过这部分了吗?

 private Locale() {
   languageCode = "en"; //$NON-NLS-1$
   countryCode = "US"; //$NON-NLS-1$
   variantCode = ""; //$NON-NLS-1$
 }

它从Locale.java的第212行开始。这是您设置默认值的部分吗?如果是,请将该部分发布以便我可以检查它。

编辑:实际上,如果您可以在Pastebin上发布整个Locale.java。 http://pastebin.com/


是的,我已经修改了它。 我已经上传了Locale.java。http://pastebin.com/VF5zyktq - aooray
你做了我本来会做的事情。我会尝试找到一个解决方案,但这可能需要一些时间。 - Octavian Helm

0

这并不是他所要求的。他基本上是想要创建一个具有自定义默认语言环境的自定义ROM,正如WarrenFaith已经提到的那样。 - Octavian Helm
谢谢您的回复。 实际上,我只想修改区域设置的默认值。 而不是通过调用方法来实现。 也就是说:如果没有人更改区域设置,则默认区域设置不是美国,而是我想要的区域设置。 - aooray

0

最简单的方法可能是在启动前插入本地 SIM 卡。但在我的情况下,即使那样时区也不会自动设置。

对于 Lineage 18、第一次引导设置、自定义构建:

build/target/product/full_base.mk 中将基本语言环境添加到 PRODUCT_LOCALES 的顶部,如下所示:
PRODUCT_LOCALES := de_DE

通过 Makefile 设置默认时区对我无效,但在 SetupWizard 中硬编码它有效。 因此,请将 packages/apps/SetupWizard/src/org/lineageos/setupwizard/DateTimeActivity.java 中的第 84 行更改为
mCurrentTimeZone = TimeZone.getTimeZone("Europe/Amsterdam");
而不是:
mCurrentTimeZone = TimeZone.getDefault();

首先浏览列表,查看有哪些可用的时区!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接