Dostosowywanie mapy do lokalizacji

Możesz dostosować ustawienia języka i regionu używane na mapie, zmieniając ustawienia regionalne w Map. Może to wpłynąć na etykiety i działanie mapy w zależności od określonego języka oraz kraju lub terytorium.

Informacje o zasięgu pakietu Maps 3D SDK na iOS znajdziesz w tabeli zasięgu Map.

Lokalizacja języka

Domyślnie pakiet Maps 3D SDK na iOS używa ustawień regionalnych systemu skonfigurowanych na urządzeniu użytkownika (Locale.current), aby określić, którą wersję językową mapy wyświetlić. Możesz zastąpić to działanie domyślne, stosując modyfikator SwiftUI .environment(\.locale, ...) do widoku Map lub dynamicznie aktualizować powiązaną zmienną stanu Locale w czasie działania.

Ustawienie języka wpływa na tłumaczenie elementów politycznych, opisów i elementów naturalnych – np. zmiana „Geneva” na „Genève” lub „lake” na „lac” – oraz zmienia kierunek renderowania tekstu w przypadku skryptów pisanych od prawej do lewej.

Pakiet Maps 3D SDK na iOS szuka preferencji lokalizacji w tej kolejności:

  1. Środowisko SwiftUI: wartość Locale przekazana do .environment(\.locale, ...) w Map.
  2. Ustawienia urządzenia: ustawienie domyślne systemu regionalne skonfigurowane na urządzeniu z iOS.

Poniższy przykład wyświetla a Map w języku chińskim ("zh") i ustawia region na Chiny ("CN"):

import GoogleMaps3D
import SwiftUI

struct ContentView: View {
  var body: some View {
    Map(mode: .hybrid)
      .environment(\.locale, Locale(identifier: "zh-CN"))
  }
}

Możesz też dynamicznie aktualizować język i region w czasie działania, wiążąc ustawienia regionalne środowiska z właściwością @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")
        }
      }
    }
  }
}

Lokalizacja regionu

Ustawienie regionu w Locale przekazanym do .environment(\.locale, ...) w Map może spowodować wyświetlenie różnych kafelków mapy lub ukierunkować aplikację na wyniki odpowiednie dla danego regionu. Ustawienie regionu pomaga też zapewnić, że aplikacja stosuje lokalizację regionalną dla kraju lub terytorium, w którym jest rozpowszechniana.

Aby zachować język urządzenia użytkownika podczas ustawiania określonego kodu regionu (np. "JP"), utwórz Locale za pomocą Locale.Components:

var components = Locale.Components(locale: Locale.current)
components.region = Locale.Region("JP")
let regionBiasedLocale = Locale(components: components)