在iPhone上NSLocalizedString返回iPhone 语言的字符串.是否可以强制NSLocalizedString使用特定语言使应用程序使用与设备不同的语言?
localization objective-c internationalization nslocalizedstring ios
我正在通过Swift在XCODE 6.3上制作ios应用程序.我的应用程序将具有选择语言功能,如下图所示

我已经有了当地语言的故事板.但我无法找到如何通过按钮以编程方式更改应用程序的本地化.
任何人都知道如何做到这一点
我知道有不少帖子说不应该这样做,或者不可能.我修改了一些想法,现在我问这个问题,因为我想绝对确定没有其他选择.
选项1:
最流行的解决方案是改变AppleLanguages在这个岗位.我不介意要求重启,所以这对我来说是一个可以接受的解决方案,除了你不能以编程方式重启你的应用程序(找不到方法,或者被Apple拒绝).要求用户手动重启应用程序并不理想.
选项2:
接下来的解决办法是让合适的包和执行localizedStringForKey的每一个查询UILabel,UIButton等等.这可能是一个有点乏味,但还好我,因为我已经加入localizationProperties(类似于此),这些意见让我能有一个集中的字符串文件.
AppDelegate.swift:
static var userLanguage: String?
{
set
{
let defaults = NSUserDefaults.standardUserDefaults();
defaults.setObject(newValue, forKey: LanguageKey);
defaults.synchronize();
let storyboard = UIStoryboard(name: "Main", bundle: NSBundle.mainBundle());
instance.window?.rootViewController = storyboard.instantiateInitialViewController();
}
get
{
let defaults = NSUserDefaults.standardUserDefaults();
return defaults.stringForKey(LanguageKey);
}
}
Run Code Online (Sandbox Code Playgroud)
Localization.swift:
private var bundle: NSBundle
{
get
{
let bundle: NSBundle;
#if TARGET_INTERFACE_BUILDER
bundle = NSBundle(forClass: self.dynamicType);
#else
bundle = NSBundle.mainBundle();
#endif
let lang: String;
if(AppDelegate.userLanguage …Run Code Online (Sandbox Code Playgroud) 当我尝试在 iOS 上的 UILabel 中显示日语字符串时,它会使用中文编码而不是日语显示。
\n除了少数特定情况外,这两种编码几乎相同。例如,以下是字符 \xe7\x9b\xb4 (Unicode U+76F4) 在中文(上)与日文(下)中的呈现方式:
\n\n(请参阅此处了解更多示例)
\n日语字符串正确呈现的唯一时间是当用户的系统区域设置为ja-jp(日本)时,但我希望它为所有用户呈现为日语。
有没有办法强制日语编码? Android 有TextView.TextLocale,但我在 iOS 上没有看到类似的东西UILabel
(对于 Android 也是同样的问题。我标记了这个 Swift/Objective-C,因为虽然我正在寻找 Xamarin.iOS 解决方案,但 API 几乎是相同的)
\n