iOS - 只有一个本地化工作

时间:2016-12-20 08:12:05

标签: ios xcode localization

我尝试本地化我的项目。我点击了“使用基本内部化”并添加了2种语言:英语和法语。英语被标记为“开发语言” - 不确定,也许我设置它,但在故事板中我使用另一种语言(不是英语)。这两个本地化之间的第二个区别是英语(开发语言)有2个文件本地化而法语只有1个文件本地化(screenshot)我检查了应用程序的文件夹。在en.lproj中 只有1个文件Main.strings与我的所有英文翻译。在fr.lproj中同样的东西 - 只有Main.strings但有法语翻译。

所以在文件夹中一切都是正确的,但是:

1)当我使用英语运行应用程序时 - 一切正常。但是,当我将法语设置为模拟器(或我的真实设备,删除应用程序后)没有任何作用 - 它向我显示我的标准故事板(不是英语)。

2)英语本地化有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”=“确认者**”**;