您可以變更 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)