как локализовать язык города с расположением в swift 4 для ios 9.0? - PullRequest
0 голосов
/ 28 апреля 2018

Я использовал местоположение в своем приложении, которое получит широту и долготу в приложении, а затем может дать мне название города, в котором находится пользователь название на английском, но я хочу перевести это на персидский Я нашел этот метод, но он будет работать в iOS 11 Но я разрабатываю из ios9, как я могу получить печать текущего города на персидском? вот я мои коды

func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {

    if firstUpdate {
        if let _latitude = locations.first?.coordinate.latitude {
            if let _longitude = locations.first?.coordinate.longitude {
                firstUpdate = false
                self.locationManager.stopUpdatingLocation()
                self.carregaDadosLocal(latitude: _latitude, longitude: _longitude)
                let location = CLLocation(latitude: _latitude, longitude: _longitude)
                if #available(iOS 11.0, *) {
                    CLGeocoder().reverseGeocodeLocation(location, preferredLocale: Locale(identifier: "fa_IR")) { (local, error) in

                        if (local?[0]) != nil {

                            print(local?[0].thoroughfare!)
                            print(local?[0].locality)
                            print(local?[0].location)
                            print(local?[0].subLocality)

                        }
                    }
                } else {
                    // Fallback on earlier versions
                }
            }
        }
    }
}

1 Ответ

0 голосов
/ 29 апреля 2018

В iOS 9 вы можете временно переопределить язык приложения:

func completionHandler(_ placemarks: [CLPlacemark]?, _ error: Error?) {
    if let place = placemarks?.first {
        print(place.thoroughfare!)
        print(place.locality)
        print(place.location)
        print(place.subLocality)
    }
}

let location = CLLocation(latitude: 48.858370, longitude: 2.294481)
if #available(iOS 11.0, *) {
    CLGeocoder().reverseGeocodeLocation(location, preferredLocale: Locale(identifier: "fa_IR"), completionHandler: completionHandler)
} else {
    UserDefaults.standard.set(["fa_IR"], forKey: "AppleLanguages")
    CLGeocoder().reverseGeocodeLocation(location) { placemarks, error in
        // Remove the language override
        UserDefaults.standard.removeObject(forKey: "AppleLanguages")
        completionHandler(placemarks, error)
    }
}

Суть в том, что ваше приложение становится непродолжительным, независимо от настроек пользователя. Все, что зависит от локали (например, NSLocalizedString или NumberFormatter), будет затронуто.

...