2011-05-04 17 views
5

Uygulamam ile html dosyaları ve görüntüleri içeren bir dizini dağıtmam gerekiyor.Yerelleştirilmiş dizine giden yol nasıl bulunur?

Uygulama, farklı diller için desteğe sahiptir. Ben her dil için bir dizin oluşturulan ve daha sonra Yerele göre doğru bir seçim var:

NSString *language = [[NSLocale preferredLanguages] objectAtIndex:0]; 
NSString *path = [[NSBundle mainBundle] pathForResource:@"index" 
               ofType:@"html" 
              inDirectory:[language stringByAppendingPathExtension:@"html"];]; 

if (![[NSFileManager defaultManager] fileExistsAtPath:path]) 
{ 
    // Fallback to english 
    path = [[NSBundle mainBundle] pathForResource:@"index" 
              ofType:@"html" 
             inDirectory:@"en.html"]; 
} 

nasıl yapabilirim bu yerine (biraz dağınık olan) Yukarıdaki yapmak zorunda iyi bir anlaşma ?

belki nasılsa bunun için xx.lproj dizinleri kullanılarak ve her xx.lproj dizininde yerelleştirilmiş bir html dizini koyarak ve doğru dosyayı bulmak için NSBundle pathForResource kullanmak düşünüyorum. Yine de işe yaramazdım.

cevap

0

Bu kullanabilirsiniz:

NSString *filename = [NSString stringWithFormat:@"html_%@.html", NSLocalizedString(@"abbr", @"")]; 
+0

Gerçekten aradığım şey değil. –

4

[NSBundle pathForResource:ofType:] ile xx.lproj klasörleri kullanma düz ileri.

Xcode'un proje dosyasına index.html ekleyebilir ve daha sonra "Bilgi Al" penceresinden yerelleştirilebilir yapabilirsiniz. "De" gibi başka bir dil ekleyin ve Xcode index.html'u yeni oluşturulan de.lproj'a kopyalayacaktır. Bu dosyayı kaldırırsanız, uygulama ingilizce sürümüne geri dönecektir.

Sen günlüğü ile test edebilirsiniz:

NSLog([[NSBundle mainBundle] pathForResource:@"index" ofType:@"html"]); 
+0

Bu, oylama yapılmadığına şaşırdım. NSBundle'ın yol ve URL yöntemlerini kullanırsanız, otomatik olarak yer ve bölge klasörlerinizi bulmanın çok zor bir işi sizin için yapılacaktır. – mahboudz

+0

XCode 6.3.2'de çalışmadığı için. Maalesef bu her zaman sıfırdan döner. –

3

Ben de bu işe alamıyor:

NSLog([[NSBundle mainBundle] pathForResource:@"index" ofType:@"html"]); 

Ama bunu yapar, (standart Xcode language.lproj yapısı kullanılarak örneğin Ayrıca, aynı zamanda fazladan kaldırılmış; Martin'in asıl sorumlusu yukarıdaki ...

3

Ekstra ipucu: Yaptığınız üründeki dosyaların sürümlendirilmemiş sürümlerini kaldırdığınızdan emin olun, aksi halde pathForResource bu dosyaları yerelleştirilmiş olanlar yerine bulacaktır.

1

Neden forLocalization yol: Bu Xcode 5.1.1 ve iOS 7.1

burada çalışıyor

 htmlFile = [[NSBundle mainBundle] pathForResource:@"myContent" 
               ofType:@"html" 
              inDirectory:@"de.lproj" 
             forLocalization:@"de"]; 

(yedek kullanımıyla) @Martin WICKMAN genelleştirilmesini ekleyin ve her şey harika olmalı .

İlgili konular