我可以从某个应用程序页面更改应用程序的本地化吗?

时间:2013-04-02 11:01:15

标签: iphone ios objective-c xcode

我希望从某个页面更改本地化我的应用程序(例如:从“设置”页面)?

但我不确定我这个应用程序商店是否拒绝我的应用程序!

所以问题:

1我可以做这个功能吗?   如果是的话,也许你有一些例子?

2请给我链接允许或禁止这样做的文件!

2 个答案:

答案 0 :(得分:3)

请为您的问题找到以下答案

1.是。你可以实现它。

在我们的项目中,我们为每种语言添加了可本地化的字符串。在设置屏幕中,我们显示了下拉菜单以选择应用程序的语言

例如

switch([indexPath row])//table row index selected by user
        {
            case 1:[[NSUserDefaults standardUserDefaults] setValue:@"french" forKey:@"language"];

                break;
            case 2:[[NSUserDefaults standardUserDefaults] setValue:@"german" forKey:@"language"];

                break;
            case 0:[[NSUserDefaults standardUserDefaults] setValue:@"english" forKey:@"language"];

                break;
            case 3:[[NSUserDefaults standardUserDefaults] setValue:@"Portuguese" forKey:@"language"];

                break;
        }

默认情况下,我们第一次设置了英语。在选择语言之后,我们通过将键传递给它来调用以下函数

-(NSString*) languageSelectedStringForKey:(NSString*) key
{
    //set = [[SettingsViewController alloc]initWithNibName:@"SettingsViewController" bundle:nil];
    NSString *path=@""; 
    NSString *currentLanguage=[[NSUserDefaults standardUserDefaults] valueForKey:@"language"];

    if([currentLanguage isEqualToString:@"english"])
    {
        path = [[NSBundle mainBundle] pathForResource:@"English" ofType:@"lproj"];

    }
    else if([currentLanguage isEqualToString:@"german"])
    {
        path = [[NSBundle mainBundle] pathForResource:@"de" ofType:@"lproj"];

    }
    else if([currentLanguage isEqualToString:@"french"])
    {
        path = [[NSBundle mainBundle] pathForResource:@"fr" ofType:@"lproj"];
    }

    else if([currentLanguage isEqualToString:@"Portuguese"])
    {
        path = [[NSBundle mainBundle] pathForResource:@"Portuguese" ofType:@"lproj"];
    }

    NSBundle* languageBundle = [NSBundle bundleWithPath:path];
    NSString* str=[languageBundle localizedStringForKey:key value:@"" table:nil];
    return str;
}

例如。

aboutUsTitle.text=[self languageSelectedStringForKey:@"AboutUs"];

在localizable文件中,您必须设置以下键值才能获得关于我们的值

"AboutUs" = "A propos de nous";//for french(fr.lproj)



"AboutUs" = "About Us";//for english(english.lproj)

2。http://kb.tethras.com/localizing-your-ios-app

希望这会对你有所帮助

答案 1 :(得分:0)

是的,您可以在应用的某些页面中实现它。 请阅读本教程

Tutorial

通过此代码,您可以将所需的单词翻译成所需的语言。

NSString *translatedString = [self languageSelectedStringForKey:@"YesButton"]; // Give your key here

-(NSString*) languageSelectedStringForKey:(NSString*) key
{
    NSString *path;
    path = [[NSBundle mainBundle] pathForResource:@"en" ofType:@"lproj"]; // give your   language type in pathForResource, i.e. "en" for english, "da" for Danish
    NSBundle* languageBundle = [NSBundle bundleWithPath:path];
    NSString* str=[languageBundle localizedStringForKey:key value:@"" table:nil];
    return str;
}

希望这会有所帮助。谢谢。快乐的编码。