Android 应用多语言与系统语言偏好设置指南

文章目录

创建语言包

我们可以使用一个很蹩脚的办法来实现:

以中文包为例

  • values是默认
  • values-zh-rCN是简体中文
  • values-zh-rTW是繁体(台湾省)中文
  • values-zh-rHK是繁体(香港)中文

app/src/main/res内创建相应的文件夹,然后在里面创建一个strings.xml,里面可以这样写

xml 复制代码
<resources>
    <string name="nav_home">主页</string>
    <string name="nav_search">搜索</string>
    <string name="nav_profile">个人资料</string>
    <string name="nav_notifications">通知</string>
    <string name="notifications_settings">通知设置</string>
    <string name="change_username">修改用户名</string>
    <string name="change_avatar">修改头像</string>
    <string name="security_center">安全中心</string>
    <string name="storage_settings">存储设置</string>
    <string name="language_settings">语言设置</string>
    <string name="logout">登出账号</string>
    <string name="delete_account">删除账号</string>
    <string name="feedback">反馈</string>
    <string name="back_button_desc">返回</string>
</resources>

当然,你也可以参考(definitely 转载)Android10 默认语言 安卓更改语言设置的方法去创建语言包。

以系统为主导的"应用语言偏好设置"

对于,像我这样的懒人,就绝对会交给Android系统来处理这事,看下图

我相中了这个东西。

在 (安卓官方)本地化 - 应用语言偏好设置)中就有提到如何将我的APP使用这个东西。

由于我使用的是Java来开发,所以,以Groovy为例

原文是这样说的

要开启此功能,请在模块级 build.gradle.kts 文件(如果您使用 Groovy,则是 build.gradle 文件)的 androidResources {} 块中使用 generateLocaleConfig 设置。此功能默认关闭。

json 复制代码
android {
      androidResources {
        generateLocaleConfig true
      }
    }

说人话就是,在你的app中的build.gradle文件内添加,这个东西,即

json 复制代码
androidResources {
	generateLocaleConfig true
}

接着,指定默认语言区域------在应用模块的 res 文件夹中,创建一个名为 resources.properties 的新文件,然后在 resources.properties 文件中,使用 unqualifiedResLocale 标签设置默认语言区域。

譬如:设置成简体中文

properties 复制代码
unqualifiedResLocale=zh-rCN

(偷偷说一嘴,其实,没有resources.properties是会出现No resources.properties file found. See https://developer.android.com/r/studio-ui/build/automatic-per-app-languages的,但具体真的可以实现默认语言区域吗?还是有待考究的)

然后,构建程序

最后,你就可以在 应用语言偏好设置 看到你的 APP 了

从你的应用调到"应用语言偏好设置"

这一步是最关键的,前面两步只是"I have a pen,I have an apple",这一步是要实现"apple pen"了。

我们都知道,Android要实现Activity跳转,就要使用Intent,但是我们要考究的是"跳到哪,带上什么东西"。

ACTION_APPLICATION_DETAILS_SETTINGS?这个是"应用的设置页面",对了一点------应用设置内是有"应用语言偏好设置"这个东西,它叫"语言",但是,每次变换语言要多做一步,就是点击"语言"。

那怎样才能实现一步到位,我们应当跳转到android.provider.Settings.ACTION_APP_LOCALE_SETTINGS,这会之间把我们带到这个App的应用语言偏好设置界面。

还有一点,我们得告诉它我们要改的是内个App,这时,用到intent.setData(android.net.Uri.parse("package:" + requireContext().getPackageName()));,告诉intent我们要调的是这个App。

实现的代码是这样的,由于我习惯了Java,所以,以Java为例,如下

java 复制代码
Intent intent = new Intent(android.provider.Settings.ACTION_APP_LOCALE_SETTINGS);
intent.setData(android.net.Uri.parse("package:" + requireContext().getPackageName()));
startActivity(intent);

通过这个代码就可以把我们带到对应App的应用语言偏好设置了。


参考文献

  1. (安卓官方)本地化 - 应用语言偏好设置)
  2. (definitely 转载)Android10 默认语言 安卓更改语言设置
相关推荐
2301_780789662 小时前
跨平台适配!SDK 游戏盾兼容全终端游戏场景
java·网络·ddos
学长毕设2 小时前
基于springboot的食品仓库管理系统
java·spring boot·后端
步行cgn3 小时前
FormHttpMessageConverter 详解:Spring MVC 中表单数据的读写转换器
java·spring·mvc
龙亘川3 小时前
构建城市公共安全数字底座:亘川智城智慧安防系统全维度解读
java·大数据·开发语言·人工智能·信息可视化
金銀銅鐵3 小时前
[Java] 用 CLI 展示 EnumMap 增删键值对时的内部变化
java·源码·ai编程
秋天的怀念_David4 小时前
第二十二夜 · 数字迷雾
java·程序人生·算法
Raas1004 小时前
AI网关部署方案?从部署到上线全流程
java·开发语言·人工智能·gateway·ai网关·企业级ai网关·企业级ai产品
niucloud-admin4 小时前
NIUCLOUD PHP SAAS上门家政使用文档:城市管理
java·前端·php
霸道流氓气质5 小时前
智能客服组件:分层意图识别、RAG Advisor 与人工转接状态机的 Vue3 + Spring AI 生产级实战
java·人工智能·spring
captain3765 小时前
MyBatis操作数据库(入门2)
java·数据库·spring boot·后端·spring·mybatis