我正在开发支持英语和阿拉伯语的iOS应用程序。用户可以从应用程序内部更改应用程序语言。 当用户更改语言时,我将其设置为,
//change app language
UserDefaults.standard.set([language], forKey: "AppleLanguages")
currentLanguage = language
UserDefaults.standard.synchronize()
//current language updating
var currentLanguage : String{
get{
if let selectedLanguage = UserDefaults.standard.string(forKey: "selectedLanguage"){
return selectedLanguage
}else{
let language = Locale.preferredLanguages[0]
if language.hasPrefix("ar"){
return SupportedLanguage.ar.rawValue
}else{
return SupportedLanguage.en.rawValue
}
}
}
set{
UserDefaults.standard.setValue(newValue, forKey: "selectedLanguage")
}
}
通过这种方式,App不会退出。只需重新加载根视图控制器
我面临的问题是,当我更改这样的应用程序语言时,隐私提醒,例如“..使用位置的请求权限”,“......会像使用相册”等一样,不会显示在选定内容中语言。我已经为英语和阿拉伯语创建了InfoPlist.string文件,并添加了像
NSCameraUsageDescription =“....想要访问相机”; NSLocationAlwaysAndWhenInUseUsageDescription =“....想要使用您当前的位置以获得更好的可用性”;
仍然没有显示。此外,我尝试删除,清理应用程序,删除派生数据。
知道为什么会这样吗?
答案 0 :(得分:1)
更改using System;
using System.Threading.Tasks;
namespace Testificate
{
public class Program
{
public static void Main(string[] args)
{
Task.Run(() => Alert()).Wait();
}
private static void Alert()
{
Console.WriteLine("Test");
}
}
}
密钥需要重新启动应用,以便应用新的本地化,您可以尝试将AppleLanguages
与tableName一起使用或更改您读取的当前捆绑包,但系统本地化将不会更改,直到应用重启