2017-02-26 104 views
0

工作,我在它創造Xcode的Localizable.strings文件,然後2種語言(英語+阿拉伯語)localizable.strings不是用阿拉伯數字串

我填寫這些文件與語言翻譯,但只是展示用英文翻譯,當我用阿拉伯語開始時,鍵出現!

NSLocalizedString("title", comment: "") 

Localizable.strings(英文)

"title" = "Error" ; 

Localizable.strings(阿拉伯語)

 "title" = "خطأ" ; 
+0

後你喜歡objctive C或迅速? – user3182143

回答

0

我careated樣本之一,目的CI嘗試:

在我的代碼

得到它了。

我設置 「標題」= 「خطأ」 一詞在阿拉伯語本地化文件

「稱號」= 「عنوان」;

現在我必須將英文換成阿拉伯文。

首先,我設置故事板

enter image description here

設計然後點擊Project.Choose本地化信息

enter image description here

如果您單擊+(以下本地化),它顯示彈出up view

enter image description here

現在選擇阿拉伯語。當點擊阿拉伯語時,它會顯示窗口。您應該點擊完成。

enter image description here

我們需要創建本地化now.I設置字符串的文件名字符串文件LocalizationArabic

enter image description here

一旦你創建的字符串文件,它看起來像下面。

enter image description here

然後按LocalizationArabic字符串時file.Now點擊Localization.It單擊文件檢查器顯示空的複選框阿拉伯語和英語像下面。

enter image description here

在這裏,我們必須選中該複選框。此外,當我們選中複選框LocalizationArabic文件夾中有三個文件創建像下面

enter image description here

然後我進,我想從英語翻譯成阿拉伯語字符串文件的語言。

enter image description here

最後,我創建的頭文件的本地化語言

enter image description here

頭文件名是LanguageHeader.It看起來像下面。

enter image description here

現在的代碼部分從這裏開始

本地化類NSObject類的第一

Localization.h

#import <Foundation/Foundation.h> 
#import "LanguageHeader.h" 

@interface Localization : NSObject 
+(Localization *)sharedInstance; 
+(NSString*) strSelectLanguage:(int)curLang; 
+(NSString*) languageSelectedStringForKey:(NSString*) key; 

@end 

Localization.m

#進口「 Localization.h「 int currentLanguage,selectedrow; @implementation本地化

+(Localization *)sharedInstance 
{ 
    static Localization *sharedInstance = nil; 
    static dispatch_once_t onceToken; 
    dispatch_once(&onceToken, ^{ 
     sharedInstance = [[Localization alloc] init]; 
    }); 
    return sharedInstance; 
} 


+(NSString*) strSelectLanguage:(int)curLang{ 
    if(curLang==ARABIC){ 
     [[NSUserDefaults standardUserDefaults] setObject:[NSArray arrayWithObjects:@"ar", nil]forKey:@"AppleLanguages"]; 
    } 
    else{ 
     [[NSUserDefaults standardUserDefaults] setObject:[NSArray arrayWithObjects:@"en", nil]forKey:@"AppleLanguages"]; 
    } 
    [[NSUserDefaults standardUserDefaults] synchronize]; 
    currentLanguage=curLang; 
    NSString *strLangSelect = [[[NSUserDefaults standardUserDefaults]objectForKey:@"AppleLanguages"] objectAtIndex:0]; 
    return strLangSelect; 
} 

+(NSString*) languageSelectedStringForKey:(NSString*) key 
{ 
    NSString *path; 
    NSString *strSelectedLanguage = [[[NSUserDefaults standardUserDefaults]objectForKey:@"AppleLanguages"] objectAtIndex:0]; 
    //When we check with iPhone,iPad device it shows "en-US".So we need to change it to "en" 
    strSelectedLanguage = [strSelectedLanguage stringByReplacingOccurrencesOfString:@"en-US" withString:@"en"]; 
    if([strSelectedLanguage isEqualToString:[NSString stringWithFormat: @"en"]]){ 
     currentLanguage=ENGLISH; 
     selectedrow=ENGLISH; 
     path = [[NSBundle mainBundle] pathForResource:@"en" ofType:@"lproj"]; 
    } 
    else{ 
     currentLanguage=ARABIC; 
     selectedrow=ARABIC; 
     path = [[NSBundle mainBundle] pathForResource:@"ar" ofType:@"lproj"]; 
    } 
    NSBundle* languageBundle = [NSBundle bundleWithPath:path]; 
    NSString* str=[languageBundle localizedStringForKey:key value:@"" table:@"LocalizationArabic"]; 
    return str; 
} 

@end 

然後ViewController.h

#import <UIKit/UIKit.h> 
#import "Localization.h" 

@interface ViewController : UIViewController{ 
    Localization *localization; 
} 

@property (strong, nonatomic) IBOutlet UILabel *lblTitle; 

- (IBAction)actionChangeLanguageToArabic:(id)sender; 

@end 

ViewController.m

#import "ViewController.h" 

@interface ViewController() 

@end 

@implementation ViewController 

@synthesize lblTitle; 

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view, typically from a nib. 
    localization = [Localization sharedInstance]; 
    lblTitle.text = [Localization languageSelectedStringForKey:@"title"]; 
} 

- (void)didReceiveMemoryWarning { 
    [super didReceiveMemoryWarning]; 
    // Dispose of any resources that can be recreated. 
} 

- (IBAction)actionChangeLanguageToArabic:(id)sender { 
    [Localization strSelectLanguage:ARABIC]; 
    lblTitle.text = [Localization languageSelectedStringForKey:@"title"]; 
} 

@end 

上面的代碼工作完美。

輸出屏幕截圖低於

當運行應用程序第一

enter image description here

點擊按鈕

enter image description here