相关疑难解决方法(0)

只有在iphone上重启后语言才会改变

我正在尝试更改应用程序语言,但是当我关闭应用程序并再次运行它后,我在main.h语言chages中运行此代码.这可以在不重新启动的情况下更改语言吗?

int main(int argc, char *argv[]) {
    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];

    NSArray *languages = [NSArray arrayWithObject:@"en_GB"];
    [[NSUserDefaults standardUserDefaults] setObject:languages forKey:@"AppleLanguages"];
    [[NSUserDefaults standardUserDefaults] synchronize];

    int retVal = UIApplicationMain(argc, argv, nil, nil);
    [pool release];
    return retVal;
}
Run Code Online (Sandbox Code Playgroud)

iphone localization restart

5
推荐指数
1
解决办法
5742
查看次数

在iOs中手动加载不同的本地化nib

我正在开发一个支持多语言的应用程序.正如您所料,我不时使用如下代码加载一些nib文件:

 self.currentController = [[newClass alloc] initWithNibName:@"CustomController" bundle:nil];
Run Code Online (Sandbox Code Playgroud)

然后,应用程序将从其languange文件夹加载相应的本地化xib版本.现在,我想知道是否可以手动加载本地化的nib文件.例如,而不是简单地加载CustomController,装载英语/法语/德国/的CustomController的版本.

有没有办法实现这个目标?

提前谢谢你的帮助!

PS我知道这可能不是在iphone/ipad应用程序中更改语言的正确方法,但这不是我的决定

[后来的编辑] 这看起来有点奇怪,像一个黑客,但它似乎工作(加载德国笔尖):

NSString* path= [[NSBundle mainBundle] pathForResource:@"de" ofType:@"lproj"];  
NSBundle* languageBundle = [NSBundle bundleWithPath:path];
self.currentController = [[newClass alloc] initWithNibName:@"CustomController" bundle:languageBundle];
Run Code Online (Sandbox Code Playgroud)

我在这里找到了提示:http://learning-ios.blogspot.com/2011/04/advance-localization-in-ios-apps.html

虽然它感觉不完全正确,我想知道是否还有其他解决方案.对于初学者来说,我觉得这会给旧版本的iO带来麻烦,因为语言文件夹有不同的命名约定

localization objective-c xib ios

5
推荐指数
1
解决办法
6106
查看次数

强制本地化图像或图像资源

在此问题中,如何强制NSLocalizedString使用特定语言

我可以通过这种方法强制本地化.

头文件

@interface NSBundle (Language)
+(void)setLanguage:(NSString*)language;
@end
Run Code Online (Sandbox Code Playgroud)

履行

#import <objc/runtime.h>

static const char _bundle=0;

@interface BundleEx : NSBundle

@end

@implementation BundleEx
-(NSString*)localizedStringForKey:(NSString *)key value:(NSString *)value table:(NSString *)tableName
{
    NSBundle* bundle=objc_getAssociatedObject(self, &_bundle);
    return bundle ? [bundle localizedStringForKey:key value:value table:tableName] : [super                            localizedStringForKey:key value:value table:tableName];
}

@end

@implementation NSBundle (Language)
+(void)setLanguage:(NSString*)language
{
  static dispatch_once_t onceToken;
   dispatch_once(&onceToken, ^
   {
      object_setClass([NSBundle mainBundle],[BundleEx class]);
   });
    objc_setAssociatedObject([NSBundle mainBundle], &_bundle, language ? [NSBundle bundleWithPath:    [[NSBundle mainBundle] pathForResource:language ofType:@"lproj"]] : nil,  OBJC_ASSOCIATION_RETAIN_NONATOMIC);
}
@end
Run Code Online (Sandbox Code Playgroud)

在那之后,我需要本地化图像,因此,我喜欢这样. 本地化资产目录 …

localization image objective-c nslocalizedstring ios

5
推荐指数
1
解决办法
1205
查看次数

读取本地化字符串

我有一个应用程序,我希望能够获取某个键的本地化字符串,无论我当前在 iPhone 上的本地化是什么。

我的 en.lproj 本地化字符串文件中有以下内容

“黑”=“黑”;

在 es.lproj 本地化字符串文件中我有

“黑人”=“黑人”;

所以我想做的是当我的手机在美国时获取西班牙语字符串并进行相应设置

我正在使用以下代码:

let bpath:String = NSBundle.mainBundle().pathForResource("es", ofType: "lproj")! as String
let bundle = NSBundle(path: bpath as String)
let thisWord="Black"
let ourWord=NSLocalizedString(thisWord, bundle: bundle!, comment: "")
Run Code Online (Sandbox Code Playgroud)

我期望在 ourWord 的值中得到“黑人”,但我总是得到“黑人”

我错过了一些明显的东西吗?

localized ios swift

5
推荐指数
1
解决办法
850
查看次数

更改ios应用程序的语言

我已将我的应用设置放入iPhone设置面板.我想在独立于iPhone系统语言的语言之间切换.可能吗?我正在使用这个建议: 如何强制NSLocalizedString使用特定的语言

但它只翻译app中的字符串,但我的nib文件是相同的.如何重装我的笔尖?

iphone localization objective-c ios4 ios

4
推荐指数
1
解决办法
6124
查看次数

使用按钮更改iphone应用程序语言,无需重新启动应用程序

我想更改我的应用程序的语言.目前我正在以下列方式进行.我有两个按钮可以更改NSUserDefaults中的语言.但在此之前影响我的应用程序,我需要重新启动它.

这是我的代码.

- (IBAction)changeDutch:(id)sender {
    [[NSUserDefaults standardUserDefaults] setObject:[NSArray arrayWithObjects:@"nl", @"en", nil] forKey:@"AppleLanguages"];

}
- (IBAction)changeEnglish:(id)sender {
    [[NSUserDefaults standardUserDefaults] setObject:[NSArray arrayWithObjects:@"en", @"nl", nil] forKey:@"AppleLanguages"];
}
Run Code Online (Sandbox Code Playgroud)

这很好用.但我不希望每次都重启我的应用程序.谁能告诉我怎么做?

亲切的问候!

iphone localization objective-c nslocalizedstring ios

4
推荐指数
1
解决办法
7209
查看次数

Swift中的本地化-将应用限制为一种语言,即使该应用具有更多语言

我已经在Swift 3.2中开发了一个应用程序,该应用程序目前使用基本语言英语。我已经添加了阿拉伯文和法文的字符串文件。但是直到我的团队完成并测试所有事情之前,我都希望将应用程序限制为一种语言,因为即使是英文版本,我也要解决一些问题并上传到App Store。删除sting和nib文件选项对我不起作用。

请让我知道是否有任何代码可以添加到appdelegate中,以限制仅英语的应用程序。

我尝试在“设置”中禁用语言阿拉伯语,这会删除本地化的字符串文件

localization ios swift

4
推荐指数
1
解决办法
857
查看次数

如何很好地退出iPhone应用程序?

或"如何模拟按下主页按钮事件?"

我需要重新启动我的iPhone应用程序,我希望程序退出,因此用户只需要启动它.

如果我只是使用exit(0)某些更改将无法保存,就像用户通过按主页按钮退出一样.

语言更改需要重新启动.

相关代码:

- (void)onChangeLanguage: (id)sender {
    NSArray *lang = [NSArray arrayWithObjects:((Whatever *)sender).newLanguage, nil];
    [[NSUserDefaults standardUserDefaults] setObject:lang forKey:@"AppleLanguages"];
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    NSArray *languages = [defaults objectForKey:@"AppleLanguages"];
    NSString *currentLanguage = [languages objectAtIndex:0];

    NSLog(@"Current language: %@", currentLanguage);
    // ***
}   
Run Code Online (Sandbox Code Playgroud)

如果用户使用主页按钮重新启动,则语言将更改.

如果// ***替换为exit(0),则语言不会更改.

iphone internationalization quit

3
推荐指数
2
解决办法
3392
查看次数

无需重启设备即可更改iOS应用语言

我为我的iOS应用程序做了本地化.通过客户端订单我需要进行修改,即应用程序语言应该通过按钮操作进行更改.我之前的本地化是基于设备语言的工作.现在我必须修改应用程序以通过重新启动设备来更改语言.

localization objective-c ios

3
推荐指数
1
解决办法
4280
查看次数

如何在iPhone应用程序中更改显示的UIKeyboard的语言?

在我的iPhone应用程序中,我想更改显示的UIKeyboard的语言.我怎样才能做到这一点?

iphone objective-c uikeyboard ios

1
推荐指数
1
解决办法
2219
查看次数

在应用程序中更改语言 - 如何重新启动?

我想让用户可以更改我的应用程序中的语言.

这里描述了执行此操作的方法,在单触引代码中将首选语言设置为荷兰语,将备用语言设置为英语:

  NSUserDefaults.StandardUserDefaults.SetValueForKey
                (NSArray.FromStrings("nl", "en"), new NSString("AppleLanguages"));
Run Code Online (Sandbox Code Playgroud)

您必须重新启动应用程序才能生效.但是在iPhone 4上,关闭它时应用程序不会重新启动,它只是隐藏了.是否有办法强制应用程序在关闭后重新启动?

iphone xamarin.ios

0
推荐指数
1
解决办法
5179
查看次数