將地圖本地化

您可以變更 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 會依下列順序尋找本地化偏好設定:

  1. SwiftUI 環境:在 Map 上傳遞至 .environment(\.locale, ...) 的 Locale 值。
  2. 裝置設定: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)