Map のロケール環境を変更することで、地図で使用される言語と地域の設定をカスタマイズできます。これにより、指定した言語と国または地域に基づいて、地図のラベルと動作が変更される可能性があります。
Maps 3D SDK for iOS の対応状況については、地図の対応状況の表をご覧ください。
言語のローカライズ
デフォルトでは、Maps 3D SDK for iOS は、ユーザーのデバイスに設定されているシステム ロケール(Locale.current)を使用して、表示する地図の翻訳を決定します。このデフォルトの動作をオーバーライドするには、SwiftUI の .environment(\.locale, ...) 修飾子を Map ビューに適用するか、バインドされた Locale 状態変数を実行時に動的に更新します。
言語を設定すると、行政上の特徴、記述子、自然の特徴の翻訳に影響します(「Geneva」を「Genève」に変更したり、「lake」を「lac」に変更したりするなど)。また、右から左に記述する言語では、テキストのレンダリング方向も変わります。
Maps 3D SDK for iOS は、次の順序でローカライズ設定を検索します。
- SwiftUI 環境:
Mapの.environment(\.locale, ...)に渡されるLocale値。 - デバイスの設定: iOS デバイスで設定されているシステムのデフォルトの言語 / 地域。
次の例では、中国語("zh")で Map を表示し、リージョンを中国("CN")に設定しています。
import GoogleMaps3D
import SwiftUI
struct ContentView: View {
var body: some View {
Map(mode: .hybrid)
.environment(\.locale, Locale(identifier: "zh-CN"))
}
}
環境の言語 / 地域を @State プロパティにバインドすることで、実行時に言語と地域を動的に更新することもできます。
import GoogleMaps3D
import SwiftUI
struct LocalizationExampleView: View {
@State private var mapLocale: Locale = .current
var body: some View {
VStack {
Map(mode: .hybrid)
.environment(\.locale, mapLocale)
HStack {
Button("Français") {
mapLocale = Locale(identifier: "fr-FR")
}
Button("日本語") {
mapLocale = Locale(identifier: "ja-JP")
}
Button("中文") {
mapLocale = Locale(identifier: "zh-CN")
}
}
}
}
}
リージョンのローカライズ
Map で .environment(\.locale, ...) に渡される Locale にリージョンを設定すると、異なる地図タイルを配信したり、地域に適した結果を優先して表示したりできます。地域を設定すると、アプリが配布される国または地域に合わせたローカライズが適用されるようになります。
特定の地域コード("JP" など)を設定しながらユーザーのデバイスの言語を維持するには、Locale.Components を使用して Locale を作成します。
var components = Locale.Components(locale: Locale.current)
components.region = Locale.Region("JP")
let regionBiasedLocale = Locale(components: components)