2013-03-13 10 views
5

benim kullanıcıların dil/benim app ben, sağ paket yüklemek doğru dizeleri dosyaları seçmek için nasıl anladım var. Onlara görünür yerel ayarı vb Ancak, bazı sistem öğeleri hala görünüyor seçmelerine izin ilgileniyorum üzerinde kontrol olmaması. Örneğin, kontrolleri değiştirin.iOS: Kullanıcının bulunduğu yeri uyandırmanın bir yolu var mı?

bu uygulaması artık oldukça kullanıcının geçerli sistem ayarından daha, belirli bir dilde davranması gerektiği sistemini anlatmak için benim için herhangi bir yolu var mı?

+1

Dur-Hoo. method_setImplementation (class_getInstanceMethod ([NSLocale sınıfı], @selector (currentLocale)), (IMP) spoofedImpl); '? –

+2

Swizzling yapmadan bunu yapmanın herhangi bir yolu var mı? – Mike

+0

NSLocale için sınıf yöntemlerini seçtiğiniz yerel ayarın döndürülmesi için bir kategori oluşturmayı denediniz mi? kategoriyi geçersiz kılma yöntemi UIKit üzerinde çalışan Apple bir yazılım geliştiricisi ol @ Mike davranışı –

cevap

5

az hacky yolu NSUserDefaults yoluyladır: yerel (bir karakter dizisi yerel ID) AppleLocale ile belirlenir ve dil AppleLanguages (dil kimliklerinin bir dizi) ilk eşleşme ile belirlenir; Uygulamanız, yalnızca numaralı uygulamanız için bu varsayılanları geçersiz kılabilir. Uygulamanızın geçersiz kıldığını kontrol etmek için [defaults persistentDomainForName:[[NSBundle mainBundle] bundleIdentifier]] objectForKey:@"AppleLocale"] gibi bir şeyi kullanabilirsiniz. Geçersiz kılmayı kaldırmak için -removeObjectForKey:'u kullanın. dilleri değiştirirken

bunu yol hangisi olursa olsun, muhtemelen relaunch the app gerekecek; OS X ve iOS uygulamaları, çalışma zamanında dili değiştirmek için tasarlanmamıştır (OS X'de, yalnızca yeni başlatılan uygulamalar dil değişikliğini görür; iOS'ta sistem, tüm uygulamaları dil değiştirecek şekilde öldürür).

Ben geliştirme/test için daha kolay dil değişikliği yapmak için bu özelliği eklendi; Bunun App Store inceleme sürecinden başarısız olup olmayacağını bilmiyorum.

+0

Teşekkürler @tc. Bu muhtemelen uzak kalmak için bir şey gibi geliyor, ama ayrıntılı seçeneği takdir ediyorum. – Mike