当前位置: 首页 > news >正文

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

文章目录

    • 创建语言包
      • 以中文包为例
    • 以系统为主导的“应用语言偏好设置”
    • 从你的应用调到“应用语言偏好设置”

创建语言包

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

以中文包为例

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

app/src/main/res内创建相应的文件夹,然后在里面创建一个strings.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 设置。此功能默认关闭。

android {androidResources {generateLocaleConfig true}}

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

androidResources {generateLocaleConfig true
}

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

譬如:设置成简体中文

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为例,如下

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 默认语言 安卓更改语言设置

相关文章:

  • 容器运行时保护:用Falco构建云原生安全防线
  • 简单理解HTTP/HTTPS协议
  • 基于 Apache POI 实现的 Word 操作工具类
  • AI公文写作,推荐AI材料星!
  • vue3 动态绑定 ref 并获取其 dom
  • Python 自动化运维与DevOps实践
  • Docker如何实现容器之间的通信
  • 李沐动手深度学习(pycharm中运行笔记)——12.权重衰退
  • GitLab CVE-2025-4278 安全漏洞解决方案
  • openLayers切换基于高德、天地图切换矢量、影像、地形图层
  • 使用NPOI库导出多个Excel并压缩zip包
  • 【跨界新视野】信号处理遇上VR/AR:下一代沉浸体验的核心技术与您的发表蓝海
  • STUN (Session Traversal Utilities for NAT) 服务器是一种网络协议
  • Linux 上 Ollama 部署为系统服务
  • 飞算JavaAI编程助手在IDEA中的安装教程:本地安装、离线安装、在线安装方法大全
  • 【Redis】Redis核心探秘:数据类型的编码实现与高速访问之道
  • 114. 二叉树展开为链表 --- 头插法(js)
  • SQL关键字三分钟入门: 表结构管理与分区设计。(ALTER、MODIFY、CHANGE、DEFAULT、VALUES、LESS THAN、RANGE)
  • 湖北理元理律师事务所:法律框架下的债务优化与生活重建双轨支持
  • 量子级网络通信系统:超维架构下的开发与星际级交互实现,突破传统边界的异构网络通信矩阵系统设计
  • 做设计的公司的网站/购买模板建站
  • 网站是用什么程序做的/百度地址如何设置门店地址
  • 中山网站软件/seo技术培训学校
  • 南京浦口做网站/搜索引擎优化seo名词解释
  • 为什么都用java做网站/爱链网中可以进行链接买卖
  • 做网站要多少/seo学习