Вы можете настроить язык и регион, используемые на карте, изменив региональные настройки в Map. Это может повлиять на ярлыки и поведение карты в зависимости от указанного языка и страны или территории.
Сведения о доступности Maps 3D SDK для iOS вы найдете в таблице покрытия Карт.
Языковая локализация
По умолчанию Maps 3D SDK для iOS использует системные региональные настройки, заданные на устройстве пользователя (Locale.current), чтобы определить, на каком языке показывать карту. Вы можете переопределить этот режим работы по умолчанию, применив модификатор SwiftUI .environment(\.locale, ...) к представлению Map или динамически обновив связанную переменную состояния Locale во время выполнения.
Выбор языка влияет на перевод названий политических объектов, дескрипторов и природных объектов (например, "Geneva" будет заменено на "Genève", а "lake" – на "lac"), а также на направление текста для языков с письмом справа налево.
Maps 3D SDK для iOS ищет настройки локализации в следующем порядке:
- Среда SwiftUI. Значение
Locale, передаваемое в.environment(\.locale, ...)вMap. - Настройки устройства. Региональные настройки по умолчанию, заданные на устройстве iOS.
В следующем примере показан объект Map на китайском языке ("zh") с установкой региона "Китай" ("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")
}
}
}
}
}
Локализация для региона
Если задать регион в объекте Locale, который передается в .environment(\.locale, ...) в Map, то в приложении могут показываться другие фрагменты карты или результаты, соответствующие выбранному региону.
Кроме того, если вы выберете регион, это обеспечит правильную работу приложений при их использовании за пределами США.
Чтобы сохранить язык устройства пользователя при настройке определенного кода региона (например, "JP"), создайте Locale с помощью Locale.Components:
var components = Locale.Components(locale: Locale.current)
components.region = Locale.Region("JP")
let regionBiasedLocale = Locale(components: components)