You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

iOS Swift开发中如何获取对应本地化语言的字母表

基于本地化设置获取多语言字母表的实现方案

核心实现逻辑

  • 第一步先获取当前系统/应用激活的Locale(本地化标识),也就是en-US、ru-RU、fr-FR这类标准BCP 47格式的locale编码
  • 第二步基于Locale对应的语言规则,拉取该语言的标准字母表即可,可根据业务需要选择是否包含变音符号、大小写变体等特殊字符

各端实现示例

Android端

Android 7.0+系统已经内置ICU4J库,不需要额外引入依赖即可直接调用:

// 获取当前应用生效的Locale
Locale currentLocale = getResources().getConfiguration().getLocales().get(0);
// 获取该Locale对应语言的标准字母表
UnicodeSet alphabet = LocaleData.getInstance(currentLocale).getExemplarSet(0, LocaleData.ES_STANDARD);
// 转为字符集合供业务逻辑使用
Set<String> charSet = alphabet.strings();

如果需要覆盖带变音符号的字符,把ES_STANDARD替换为ES_AUXILIARY即可,拉丁语、西里尔字母等主流体系都支持

iOS端

直接用Foundation框架原生接口实现:

let currentLocale = Locale.current
guard let languageCode = currentLocale.language.languageCode?.identifier else { return }
// 拉取对应语言的标准字母集
if let exemplarSet = Locale(identifier: languageCode).exemplarCharacters {
    let alphabet = exemplarSet.compactMap { $0.isLetter ? String($0) : nil }
    // 后续业务逻辑调用
}

Web/JavaScript端

可以用内置IntlAPI结合标准映射表实现,轻量场景可以直接维护极简映射表:

// 获取当前浏览器的生效locale
const currentLocale = navigator.language || 'en-US'
// 字母表映射表示例,可按需扩展更多语言
const alphabetMap = {
  'ru': ['а', 'б', 'в', 'г', 'д', 'е', 'ё', 'ж', 'з', 'и', 'й', 'к', 'л', 'м', 'н', 'о', 'п', 'р', 'с', 'т', 'у', 'ф', 'х', 'ц', 'ч', 'ш', 'щ', 'ъ', 'ы', 'ь', 'э', 'ю', 'я'],
  'en': ['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'],
  'fr': ['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','à','â','æ','ç','é','è','ê','ë','î','ï','ô','œ','ù','û','ü','ÿ']
}
// 取语言主码匹配对应字母表
const mainLang = currentLocale.split('-')[0]
const currentAlphabet = alphabetMap[mainLang] || alphabetMap['en']

后端Python实现

通过pyicu库调用ICU接口获取全量语言字母表:

from icu import Locale, LocaleData
current_locale = Locale('ru_RU') # 替换为业务侧获取的当前用户locale
exemplar_set = LocaleData(current_locale).getExemplarSet()
alphabet = list(exemplar_set)

注意事项

  • 部分语言存在多套字母表的情况(比如哈萨克语同时支持西里尔、拉丁、阿拉伯三种书写体系),需要额外加业务逻辑判断用户使用的字母变体
  • 不要自行硬编码全量字母表,ICU库已经维护了全球所有主流语言的标准字符集,直接调用即可避免字符遗漏错误
  • 如果应用需要支持小众语言,可以直接基于ICU的字符集规则做扩展即可

内容的提问来源于stack exchange,提问作者user14247073

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 15:15:03