Swift Locale语言环境
Swift Locale语言环境

Swift Locale语言环境

Locale用于语言环境的格式化,在DateFormatter、Text(date, style:)等工具中,使用Localze可以本地化显示的内容格式。

例如:

中国:"2025/12/08"
美国:"12/8/25"
德国:"08.12.25"

基本用法

1、初始化方法

Locale(identifier: "zh_CN")

2、设置DateFormatter的语言环境

let f = DateFormatter()
f.locale = Locale(identifier: "zh_CN")

设置为中文语言环境。

常用Locale ID

1、中文体系

“zh_CN” —— 简体中文(中国大陆)

“zh_HK” —— 繁体中文(香港)

“zh_TW” —— 繁体中文(台湾)

“zh_Hant” —— 繁体中文(通用)

“zh_Hans” —— 简体中文(通用)

2、英文体系

“en_US” —— 美国英语

“en_GB” —— 英式英语

“en_AU” —— 澳大利亚英语

“en_CA” —— 加拿大英语

“en_IN” —— 印度英语

“en_US_POSIX”—— 固定技术格式(解析神器)

3、欧洲常见

“fr_FR” —— 法语(法国)

“de_DE” —— 德语(德国)

“it_IT” —— 意大利语

“es_ES” —— 西班牙语

“nl_NL” —— 荷兰语

“ru_RU” —— 俄语

“pt_PT” —— 葡萄牙语(葡萄牙)

“pt_BR” —— 葡萄牙语(巴西)

4、亚洲常见

“ja_JP” —— 日语(日本)

“ko_KR” —— 韩语(韩国)

“th_TH” —— 泰语(泰国)

“hi_IN” —— 印地语(印度)

5、中东常见

“ar_SA” —— 阿拉伯语(沙特)

“ar_EG” —— 阿拉伯语(埃及)

“he_IL” —— 希伯来语(以色列)

6、特殊用途

“root” —— 无本地化的中性格式

“en_US_POSIX”—— 最重要的技术性 Locale,用于固定格式解析

使用场景

1、切换货币格式:人民币显示 ¥12.5,美国显示 $12.50。

2、日期本地化:某些国家星期从星期天开始,有些从星期一开始。

3、数字分组符号:英文用 “1,234.56”,欧洲部分地区用 “1.234,56”。

4、多国语言展示界面的调试:在不修改iPhone 系统语言,直接设置环境 locale 测试格式。

注意事项

1、解析服务器时使用en_US_POSIX

苹果和 ICU 官方强烈推荐在“严格格式解析”时使用的特殊 Locale,避免日期/数字格式随设备语言变化而出错。

formatter.locale = Locale(identifier: "en_US_POSIX")

POSIX 最初是 Unix 世界的标准规范,和 Locale 结合时,它意味着:

1、不要使用用户的本地化规则

2、星期、月份永远用英文固定写法

3、数字永远是阿拉伯数字 (0–9)

4、始终 24 小时制 → 00–23

5、日期格式始终稳定,不受地区影响

这样系统不会因为用户把语言改为法语、阿拉伯语、日语导致格式化失败。

en_US会随着系统设置变化,例如数字分隔符、12/24 小时制、月份样式等。

而 en_US_POSIX 是不变的,专为“程序员格式化”设计。

总结

Locale决定日期、数字、货币、星期、月份、分隔符、排序方式等的显示风格。

SwiftUI 大量格式化 API(包括 FormatStyle)都会自动读取 Locale。

如果不设置Locale环境,默认使用系统的Locale.current。

SwiftUI设置方法:

.environment(.locale, Locale(identifier: "en_US"))

或者

.environment(.locale, .init(identifier: Locale.current.identifier))

根据环境值切换多语言环境。

   

如果您认为这篇文章给您带来了帮助,您可以在此通过支付宝或者微信打赏网站开发者。

欢迎加入我们的 微信交流群QQ交流群,交流更多精彩内容!
微信交流群二维码 QQ交流群二维码

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注