IOS

2017-01-25 33 views
1

私は、スペイン語、イタリア語とポルトガル語の3つの言語のためのXLIFFファイルを持っており、それは...このようなパスを持っているIOS

enter image description here と、私はこれを使用していたよう言語

@interface Language : NSObject 
+(void)setLanguage:(NSString *)language; 
+(NSString *)get:(NSString *)key alter:(NSString *)alternate; 
@end 

とimplemantation

#import "Language.h" 
static NSBundle *bundle = nil; 

@implementation Language 

+(void)initialize { 

    NSUserDefaults* defs = [NSUserDefaults standardUserDefaults]; 
    NSArray* languages = [defs objectForKey:@"AppleLanguages"]; 
    NSString *current = [languages objectAtIndex:0]; 
    [self setLanguage:current]; 
} 

/* 
    example calls: 
[Language setLanguage:@"it"]; 
[Language setLanguage:@"de"]; 
*/ 
+(void)setLanguage:(NSString *)language { 
    NSLog(@"preferredLang: %@",language); 
    NSString *path = [[ NSBundle mainBundle]pathForResource:language ofType:@"lproj"]; 
     bundle = [NSBundle bundleWithPath:path]; 
} 

+(NSString *)get:(NSString *)key alter:(NSString *)alternate { 
    return [bundle localizedStringForKey:key value:alternate table:nil]; 
} 

@end 

とボタンのタップにして私は、このようにやっているを変更するためのコード...

-(IBAction)changeLanguage:(Id)sender { 
    [Language setLanguage:@"it"]; 
} 

しかし、私が応じて選択した言語とタップボタンのみが設定された「CurrentLanguage」タグ値に従ってテキストを変更するには、このコードを使用していますrunntimeまたはafter.Pleaseヘルプ

答えて

2

を上の言語を変更しない動作しません言語を選択する。アプリ全体が選択した言語を変換します。

+(NSString *)getTextAsLanguage : (NSString *)strKey 
{ 
    NSString *path1; 
    NSString *strCurrentLanguage = [[NSUserDefaults standardUserDefaults] valueForKey:@"CurrentLanguage"]; 

    if ([strCurrentLanguage isEqualToString:@"en"]) 
     path1 = [[NSBundle mainBundle] pathForResource:@"en" ofType:@"lproj"]; 
    else if ([strCurrentLanguage isEqual: @"ch"]) 
     path1 = [[NSBundle mainBundle] pathForResource:@"zh" ofType:@"lproj"]; 

    strKey = [strKey stringByReplacingOccurrencesOfString:@" " withString:@""]; 
    NSBundle *languageBundle = [NSBundle bundleWithPath:path1]; 
    NSString *str = [languageBundle localizedStringForKey:strKey value:@"" table:nil]; 
    return str; 
} 

ボタンをクリックして、このコード使用:

- (IBAction)btnLanguageEnlgishChangeClicked:(id)sender 
{ 
    [[NSUserDefaults standardUserDefaults] setValue:@"en" forKey:@"CurrentLanguage"]; 
    [[NSUserDefaults standardUserDefaults] synchronize]; 
} 

は、あなたがその助けを願っています。

+0

私のアプリの再起動は必要ありません。どこでgetTextasLanguageメソッドを呼び出すべきですか? –

+0

このメソッドは、シミュレータでも、デバイス上でのみ動作しますか? –

+0

両方で動作しますか? –