Muju我創建了示例項目,並且我正在爲您的問題獲得解決方案。我完美地獲得瞭解決方案。
在我下面的示例中,我要改變「歡迎來到泰國」此爲「ยินดีต้อนรับสู่ประเทศไทย」。我使用本地化的概念。
臨睡前步驟,我希望你能看到我的故事板設計
請按照下面的步驟。
步驟1:單擊項目 - >信息 - > Localization->點擊+
現在它顯示下拉語言列表。從我們應該選擇泰國
第2步:一旦我們選擇或選擇從下拉列表中選擇語言,它顯示下面的窗口,我們需要單擊Finish按鈕
現在它看起來像下面
第3步:爲本地化創建字符串文件並設置名稱。
上面我設置字符串的文件名作爲LocalizationThai
第4步:單擊LocalizationThai.strings也單擊文件Inspector.Click本地化在File Inspector中。現在它顯示下面的彈出框。
第5步:點擊Localize.Once您本地化,它下面這樣表示
步驟6:點擊複選框3
現在捆綁,我們有下LocalizationThai.strings
STEP 7 3個文件:寫下您需要更改文本字符串的文件。
i.In LocalizationThai.strings(泰國)文件我下面寫的文字
ii.In LocalizationThai.strings(英語)文件我下面寫的文字
iii.In LocalizationThai。字符串(基地)文件我下面寫的文字
第8步:創建多語言的頭文件。
步驟9:設置在標題名稱(I設置標題名稱爲LocalizationHeader)和在頭文件定義語言象下面
LocalizationHeader.h
#ifndef LocalizationHeader_h
#define LocalizationHeader_h
#define ENGLISH 0
#define THAI 1
#endif /* LocalizationHeader_h */
步驟10:實現以下編碼部
Localization.h
#import <Foundation/Foundation.h>
#import "LocalizationHeader.h"
@interface Localization : NSObject
+(Localization *)sharedInstance;
+(NSString*) strSelectLanguage:(int)curLang;
+(NSString*) languageSelectedStringForKey:(NSString*) key;
@end
Localization.m
#import "Localization.h"
int currentLanguage,selectedrow;
@implementation Localization
+(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==THAI){
[[NSUserDefaults standardUserDefaults] setObject:[NSArray arrayWithObjects:@"th", 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"
if([strSelectedLanguage hasPrefix:@"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=THAI;
selectedrow=THAI;
path = [[NSBundle mainBundle] pathForResource:@"th" ofType:@"lproj"];
}
NSBundle* languageBundle = [NSBundle bundleWithPath:path];
NSString* str=[languageBundle localizedStringForKey:key value:@"" table:@"LocalizationThai"];
return str;
}
@end
ViewController.h
#import <UIKit/UIKit.h>
#import "Localization.h"
@interface ViewController : UIViewController{
Localization *localization;
}
@property (strong, nonatomic) IBOutlet UILabel *lblWelcome;
- (IBAction)actionChangeLanToThai:(id)sender;
- (IBAction)actionChangeLangToEng:(id)sender;
@end
ViewController.m
#import "ViewController.h"
@interface ViewController()
@end
@implementation ViewController
@synthesize lblWelcome;
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
localization = [Localization sharedInstance];
lblWelcome.text = [Localization languageSelectedStringForKey:@"Welcome to Thailand"];
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
- (IBAction)actionChangeLanToThai:(id)sender {
[Localization strSelectLanguage:THAI];
lblWelcome.text = [Localization languageSelectedStringForKey:@"Welcome to Thailand"];
}
- (IBAction)actionChangeLangToEng:(id)sender {
[Localization strSelectLanguage:ENGLISH];
lblWelcome.text = [Localization languageSelectedStringForKey:@"Welcome to Thailand"];
}
@end
當我運行的應用程序第一
然後當我改變了語言從英語到泰國
當我再次將其更改爲英語
你必須遵循的廈門國際銀行
下同步驟是廈門國際銀行
我創建XIB.ViewController名的ViewController是RootViewController的
現在看到的設計部分
AppDelegate.h
#import <UIKit/UIKit.h>
#import "RootViewController.h"
@interface AppDelegate : UIResponder <UIApplicationDelegate>
@property (strong, nonatomic) UIWindow *window;
@property (strong,nonatomic) RootViewController *viewController;
@end
AppDelegate.m
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
self.viewController = [[RootViewController alloc] initWithNibName:@"RootViewController" bundle:nil];
UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:self.viewController];
self.window.rootViewController = navController;
[navController setNavigationBarHidden:YES];
[self.window makeKeyAndVisible];
return YES;
}
RootViewController的。^ h
#import <UIKit/UIKit.h>
#import "Localization.h"
@interface RootViewController : UIViewController{
Localization *localization;
}
@property (strong, nonatomic) IBOutlet UILabel *lblWelcomeThaiLang;
- (IBAction)actionChangeLangToThai:(id)sender;
- (IBAction)actionChangeLangToEng:(id)sender;
@end
RootViewController.m
#import "RootViewController.h"
@interface RootViewController()
@end
@implementation RootViewController
@synthesize lblWelcomeThaiLang;
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view from its nib.
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
- (IBAction)actionChangeLangToThai:(id)sender {
[Localization strSelectLanguage:THAI];
lblWelcomeThaiLang.text = [Localization languageSelectedStringForKey:@"Welcome to Thailand"];
}
- (IBAction)actionChangeLangToEng:(id)sender {
[Localization strSelectLanguage:ENGLISH];
lblWelcomeThaiLang.text = [Localization languageSelectedStringForKey:@"Welcome to Thailand"];
}
@end
現在看到的結果
你能解釋一下應用程序流?以及你想要改變語言的人。 –
如果您已將此代碼放入應用程序委託中,則只會運行一次 - 當您重新啓動應用程序時。 – holex