在 Android 应用开发中,适配多语言是一项常见需求。通过多语言适配,应用可以根据用户的语言设置动态切换界面文本。本文将详细讲解 Android 多语言适配的文件夹命名格式实现步骤以及注意事项


🔥 一、Android 多语言适配的原理

Android 通过 res/values 目录中的资源文件(如 strings.xml)来实现多语言的支持。
当用户切换系统语言时,Android 会根据语言和地区,自动加载对应的资源文件。

关键点

  • 文件名:strings.xml 不变,位于不同的语言子目录中。
  • 目录结构:res/values-<语言代码>,如 values-en 表示英语,values-zh 表示中文。
  • 语言和地区的代码遵循 ISO 639-1ISO 3166-1 标准。

🚀 二、文件夹命名格式

1️⃣ 基本格式

values-<语言代码>
  • values-en/ 表示 英语
  • values-zh/ 表示 中文
  • values-fr/ 表示 法语
  • values-es/ 表示 西班牙语

2️⃣ 地区和语言的组合格式

values-<语言代码>-<地区代码>

当需要为特定国家的语言提供定制的翻译时,使用此格式。

文件夹名

含义

示例地区

values-en-rUS

美国英语 (en-US)

🇺🇸 美国 (US)

values-en-rGB

英国英语 (en-GB)

🇬🇧 英国 (GB)

values-en-rAU

澳大利亚英语 (en-AU)

🇦🇺 澳大利亚 (AU)

values-en-rCA

加拿大英语 (en-CA)

🇨🇦 加拿大 (CA)

values-en-rIN

印度英语 (en-IN)

🇮🇳 印度 (IN)

values-en-rNZ

新西兰英语 (en-NZ)

🇳🇿 新西兰 (NZ)

values-zh-rCN

简体中文 (zh-CN)

🇨🇳 中国 (CN)

values-zh-rTW

繁体中文 (zh-TW)

🇹🇼 中国台湾 (TW)

values-zh-rHK

繁体中文 (zh-HK)

🇭🇰 中国香港 (HK)

values-zh-rSG

简体中文 (zh-SG)

🇸🇬 新加坡 (SG)

values-fr-rFR

法国法语 (fr-FR)

🇫🇷 法国 (FR)

values-fr-rCA

加拿大法语 (fr-CA)

🇨🇦 加拿大 (CA)

values-fr-rBE

比利时法语 (fr-BE)

🇧🇪 比利时 (BE)

values-es-rES

西班牙西班牙语 (es-ES)

🇪🇸 西班牙 (ES)

values-es-rMX

墨西哥西班牙语 (es-MX)

🇲🇽 墨西哥 (MX)

values-es-rUS

美国西班牙语 (es-US)

🇺🇸 美国 (US)

values-ar-rSA

沙特阿拉伯阿拉伯语 (ar-SA)

🇸🇦 沙特阿拉伯 (SA)

values-ar-rEG

埃及阿拉伯语 (ar-EG)

🇪🇬 埃及 (EG)

values-ar-rIQ

伊拉克阿拉伯语 (ar-IQ)

🇮🇶 伊拉克 (IQ)

values-de-rDE

德国德语 (de-DE)

🇩🇪 德国 (DE)

values-de-rCH

瑞士德语 (de-CH)

🇨🇭 瑞士 (CH)

values-de-rAT

奥地利德语 (de-AT)

🇦🇹 奥地利 (AT)

values-ja-rJP

日语 (ja-JP)

🇯🇵 日本 (JP)

values-ko-rKR

韩语 (ko-KR)

🇰🇷 韩国 (KR)

values-ru-rRU

俄罗斯语 (ru-RU)

🇷🇺 俄罗斯 (RU)

values-pt-rBR

巴西葡萄牙语 (pt-BR)

🇧🇷 巴西 (BR)

values-pt-rPT

葡萄牙葡萄牙语 (pt-PT)

🇵🇹 葡萄牙 (PT)

values-it-rIT

意大利语 (it-IT)

🇮🇹 意大利 (IT)

values-tr-rTR

土耳其语 (tr-TR)

🇹🇷 土耳其 (TR)

values-th-rTH

泰语 (th-TH)

🇹🇭 泰国 (TH)

values-vi-rVN

越南语 (vi-VN)

🇻🇳 越南 (VN)

values-hi-rIN

印地语 (hi-IN)

🇮🇳 印度 (IN)

命名规则总结:

  • 语言代码zh 表示中文,en 表示英语,es 表示西班牙语等。
  • 地区代码CN 表示中国,US 表示美国,FR 表示法国,遵循 ISO 3166-1 标准。

⚠️ 注意事项

  1. 默认语言文件
  • res/values/ 中的 strings.xml 作为默认语言
  • 如果系统中未找到匹配的语言,默认语言将被使用。
  1. 多语言的文件夹命名要标准
  1. 不推荐硬编码语言
  • 避免在代码中使用 if (locale.equals("zh")) 这种硬编码的方式判断语言。

📢 总结

  • 文件命名规范values-<语言代码>-<地区代码>,如 values-zh-rCN 表示中国的简体中文。
  • 语言和地区代码基于 ISO 639-1 和 ISO 3166-1 标准。
  • 动态切换语言需使用 Configuration.setLocale() 方法。
  • 文件管理:确保每种语言的strings.xml 文件中有相同的字符串键名