在 Android 应用开发中,适配多语言是一项常见需求。通过多语言适配,应用可以根据用户的语言设置动态切换界面文本。本文将详细讲解 Android 多语言适配的文件夹命名格式、实现步骤以及注意事项。
🔥 一、Android 多语言适配的原理
Android 通过 res/values 目录中的资源文件(如 strings.xml)来实现多语言的支持。
当用户切换系统语言时,Android 会根据语言和地区,自动加载对应的资源文件。
关键点:
- 文件名:
strings.xml不变,位于不同的语言子目录中。 - 目录结构:
res/values-<语言代码>,如values-en表示英语,values-zh表示中文。 - 语言和地区的代码遵循 ISO 639-1 和 ISO 3166-1 标准。
🚀 二、文件夹命名格式
1️⃣ 基本格式
values-<语言代码>values-en/表示 英语。values-zh/表示 中文。values-fr/表示 法语。values-es/表示 西班牙语。
2️⃣ 地区和语言的组合格式
values-<语言代码>-<地区代码>当需要为特定国家的语言提供定制的翻译时,使用此格式。
文件夹名 | 含义 | 示例地区 |
| 美国英语 (en-US) | 🇺🇸 美国 (US) |
| 英国英语 (en-GB) | 🇬🇧 英国 (GB) |
| 澳大利亚英语 (en-AU) | 🇦🇺 澳大利亚 (AU) |
| 加拿大英语 (en-CA) | 🇨🇦 加拿大 (CA) |
| 印度英语 (en-IN) | 🇮🇳 印度 (IN) |
| 新西兰英语 (en-NZ) | 🇳🇿 新西兰 (NZ) |
| 简体中文 (zh-CN) | 🇨🇳 中国 (CN) |
| 繁体中文 (zh-TW) | 🇹🇼 中国台湾 (TW) |
| 繁体中文 (zh-HK) | 🇭🇰 中国香港 (HK) |
| 简体中文 (zh-SG) | 🇸🇬 新加坡 (SG) |
| 法国法语 (fr-FR) | 🇫🇷 法国 (FR) |
| 加拿大法语 (fr-CA) | 🇨🇦 加拿大 (CA) |
| 比利时法语 (fr-BE) | 🇧🇪 比利时 (BE) |
| 西班牙西班牙语 (es-ES) | 🇪🇸 西班牙 (ES) |
| 墨西哥西班牙语 (es-MX) | 🇲🇽 墨西哥 (MX) |
| 美国西班牙语 (es-US) | 🇺🇸 美国 (US) |
| 沙特阿拉伯阿拉伯语 (ar-SA) | 🇸🇦 沙特阿拉伯 (SA) |
| 埃及阿拉伯语 (ar-EG) | 🇪🇬 埃及 (EG) |
| 伊拉克阿拉伯语 (ar-IQ) | 🇮🇶 伊拉克 (IQ) |
| 德国德语 (de-DE) | 🇩🇪 德国 (DE) |
| 瑞士德语 (de-CH) | 🇨🇭 瑞士 (CH) |
| 奥地利德语 (de-AT) | 🇦🇹 奥地利 (AT) |
| 日语 (ja-JP) | 🇯🇵 日本 (JP) |
| 韩语 (ko-KR) | 🇰🇷 韩国 (KR) |
| 俄罗斯语 (ru-RU) | 🇷🇺 俄罗斯 (RU) |
| 巴西葡萄牙语 (pt-BR) | 🇧🇷 巴西 (BR) |
| 葡萄牙葡萄牙语 (pt-PT) | 🇵🇹 葡萄牙 (PT) |
| 意大利语 (it-IT) | 🇮🇹 意大利 (IT) |
| 土耳其语 (tr-TR) | 🇹🇷 土耳其 (TR) |
| 泰语 (th-TH) | 🇹🇭 泰国 (TH) |
| 越南语 (vi-VN) | 🇻🇳 越南 (VN) |
| 印地语 (hi-IN) | 🇮🇳 印度 (IN) |
命名规则总结:
- 语言代码:
zh表示中文,en表示英语,es表示西班牙语等。 - 地区代码:
CN表示中国,US表示美国,FR表示法国,遵循 ISO 3166-1 标准。
⚠️ 注意事项
- 默认语言文件
res/values/中的strings.xml作为默认语言。- 如果系统中未找到匹配的语言,默认语言将被使用。
- 多语言的文件夹命名要标准
- 语言代码遵循 ISO 639-1
- 地区代码遵循 ISO 3166-1
- 不推荐硬编码语言
- 避免在代码中使用
if (locale.equals("zh"))这种硬编码的方式判断语言。
📢 总结
- 文件命名规范:
values-<语言代码>-<地区代码>,如values-zh-rCN表示中国的简体中文。 - 语言和地区代码基于 ISO 639-1 和 ISO 3166-1 标准。
- 动态切换语言需使用
Configuration.setLocale()方法。 - 文件管理:确保每种语言的strings.xml 文件中有相同的字符串键名。
















