2013-12-18 55 views
0

我有簡單的iPad應用程序,其標籤上寫着「歡迎使用應用程序」。在標籤下面有一個採用不同語言的選擇器。當用戶從選取器中選擇時更改標籤的語言

我試圖實現的效果是,當用戶通過選擇器選項時,標籤文本被更新以反映當前選擇的語言,換句話說,標籤文本以選定語言出現。

我想先讓它與西班牙語和法語一起工作,然後再添加其他語言。我在我的解決方案中設置了fr.lproj文件夾和es.lproj文件夾。這些文件夾具有映射翻譯的Localizable.string文件。

我會用下面的方法來返回本地化的字符串:

NSBundle.MainBundle.LocalizedString(myString, null); 

這裏是我的問題: 如何指定的語言用戶選擇,以使NSBundle.MainBundle.LocalizedString()方法返回正確的值?

回答

0

您可以創建以下ExtentionClass

public static class Extention 
{ 
    public static string Translate(this string strName, string locale) 
    { 
     return NSBundle.FromPath(NSBundle.MainBundle.PathForResource(locale, "lproj")).LocalizedString(strName,"",""); 
    } 
} 

,並調用它像下面的時候需要它

"This is a test string".Translate("fr"); //for french 
"This is a test string".Translate("es"); //for spanish 
0

試試這個,我做了這樣的手冊提供語言選擇的選項

時。在選擇語言時設置所選語言

。使用此方法,而不是NSLocalizeString或者將#define這種方法

-(NSString*) languageStringForKey:(NSString*)key 
    { 
     NSString *path; 
      //selectedLanguage is assigned while language is chosen from your picker. 
     if([self.selectedLanguage isEqualToString:@"french"]) 
        path = [[NSBundle mainBundle] pathForResource:@"fr" ofType:@"lproj"]; 
      else //Default is english 
        path = [[NSBundle mainBundle] pathForResource:@"en" ofType:@"lproj"]; 

     NSBundle* languageBundle = [NSBundle bundleWithPath:path]; 

     NSString* str=[languageBundle localizedStringForKey:key value:@"" table:nil]; 
     return ((str && str.length)?str:key); 
    } 
相關問題