🌐

単位インスタンスのイニシャライザでローカライズ

2023/05/04に公開

単位インスタンスは

let l_m = UnitLength.meters

このように単位を指定して作ることができますが、インスタンス作成時にローカライズを反映するものもあります。

let l_j = UnitLength(
            forLocale: Locale(identifier: "ja_JP"))
print(l_j) //m

let l_e = UnitLength(
            forLocale: Locale(identifier: "en_US"))
print(l_e) //ft

さらに使用状況を指定するイニシャライザもあります。

let l_j_r = UnitLength(
                forLocale: Locale(identifier: "ja_JP"), 
                usage: .road)
print(l_j_r) //km

let l_e_r = UnitLength(
                forLocale: Locale(identifier: "en_US"), 
                usage: .road)
print(l_e_r) //mi

let l_j_f = UnitLength(
                forLocale: Locale(identifier: "ja_JP"), 
                usage: .focalLength)
print(l_j_f) //mm

let l_e_f = UnitLength(
                forLocale: Locale(identifier: "en_US"), 
                usage: .focalLength)
print(l_e_f) //mm

単位システムはいろんなところにローカライズの機能があって混乱しますね。

Discussion