我尝试本地化我的项目。我点击了“使用基本内部化”并添加了2种语言:英语和法语。英语被标记为“开发语言” - 不确定,也许我设置它,但在故事板中我使用另一种语言(不是英语)。这两个本地化之间的第二个区别是英语(开发语言)有2个文件本地化而法语只有1个文件本地化(screenshot)我检查了应用程序的文件夹。在en.lproj中 只有1个文件Main.strings与我的所有英文翻译。在fr.lproj中同样的东西 - 只有Main.strings但有法语翻译。
所以在文件夹中一切都是正确的,但是:
1)当我使用英语运行应用程序时 - 一切正常。但是,当我将法语设置为模拟器(或我的真实设备,删除应用程序后)没有任何作用 - 它向我显示我的标准故事板(不是英语)。
2)英语本地化有2个本地化,我无法理解第二个文件是什么。
第二点对我来说并不重要。我只需要进行法语本地化工作
答案 0 :(得分:1)
添加本地化时,这些文件将显示
Localizable.strings (English). “Hello ” = “Hello”; (Ex you can write hello )
Localizable.strings (Frech). “Hello ” = “Bonjour”;
或者主要字符串,您可以将对象更改为freach
Main.strings(English). 3ZR-e4-Gil.text" = "Hello";
Main.strings(Frech). 3ZR-e4-Gil.text" = "Bonjour";
swift
import Foundation
extension String {
func localized(lang:String) -> String {
let path = Bundle.main.path(forResource: lang, ofType: "lproj")
let bundle = Bundle(path: path!)
return NSLocalizedString(self, tableName: nil, bundle: bundle!, value: "", comment: "")
}
}
让str ="你好" .localized(lang:self.language!)
通过模拟器更改语言
或通过应用程序以编程方式更改语言
UserDefaults.standard.set(["en","fr"], forKey: "AppleLanguages")
UserDefaults.standard.synchronize()
答案 1 :(得分:0)
解决了!没有使用法语本地化,因为Main.strings中有一个错误(法语) - 我只错过了一个(“)。但是在Main.strings中没有捕获器因为这样的错误我没有得到它
所以,它是:“XXX-6r-aEC.text”=“确认者;
我改为:“XXX-6r-aEC.text”=“确认者**”**;