【问题标题】:Swift: read multiple words from Localizable stringSwift:从可本地化的字符串中读取多个单词
【发布时间】:2016-05-19 11:49:01
【问题描述】:

我创建了这个从英语到西班牙语的单词的迷你翻译。从 Localizable.strings 中读取的单词并使用 NSLocalizedString 检索单词 "cat" = "gato"。目前它只从字符串中读取一个单词,我想知道是否有任何方法可以从 Localizable.string 中检索多个单词,例如 "the" + "cat" = "el gato"

var myEnglishArray = [String]()

override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.

    self.translateTextField.delegate = self
    picker.delegate = self
    picker.dataSource = self


    //var myEnglishArray = [String]()
    if let URL = NSBundle.mainBundle().URLForResource("englishArray", withExtension: "plist") {
        if let englishFromPlist = NSArray(contentsOfURL: URL) as? [String] {
            for myEnglish in englishFromPlist {
                myEnglishArray.append(myEnglish)
            }
        }
    }

}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}


@IBAction func translateButtonTapped(sender: UIButton) {

    let emptyString = self.translateTextField.text

    if (emptyString!.isEmpty) {

        print("please enter a word")

    }

    for transIndex in myEnglishArray.indices {
        if myEnglishArray[transIndex] == emptyString!.lowercaseString {

            //englishArray

            //translateLabel.text = "\(spanishArray[transIndex])"
            translateLabel.text = NSLocalizedString(emptyString!.lowercaseString, comment:"")


            print(emptyString)
            return

        }
    }
}

【问题讨论】:

    标签: arrays string nslocalizedstring localizable.strings language-translation


    【解决方案1】:

    我认为您应该使用 iOS 本地化 - 而不是文件或数组或类似的东西。

    您需要创建几个 localizable.strings 文件并将其用作键,例如 NSLocalizedString("yourKeyForWordYouWantToTranslate", comment: "")

    因此,如果您希望此代码能够正常工作,您必须再次创建可本地化的字符串并设置您的项目以支持多种语言。这是一个关于这个案例的很棒的教程(也适用于 swift):

    https://www.raywenderlich.com/64401/internationalization-tutorial-for-ios-2014

    【讨论】:

    • 如果用户在文本字段中输入“the”和“cat”并使用 Localization.strings 输出键值“el gato”,这是否可行。不是在寻找使用西班牙语的应用程序,而是在文本字段中读取多个字符串@NickCatib
    • 好吧,你可以定义像 "the cat" = "el gato"; 这样的值,所以当你调用键 "the cat" 时,你会得到对应的西班牙语。问题是——你想要一定数量的可翻译名词吗?如果你想拥有几乎无限数量的名词,你也可以使用cloud.google.com/translate/docs(问题是你每次都能得到正确的翻译:))
    • 我已经定义了像 "the dog" = " el perro" 这样的值,但我想它不可能从列表中一一挑选不同的词,例如,这是我的列表," “”=“el”,“猫”=“gato”,“狗”=“perro”。当用户输入键“狗”时,它将在列表中查找单词并将所有单词一起输出“狗”,“猫”@NickCatib
    • 这可能有点过分,但您可以执行以下操作:对术语进行拆分 - 查找数组中的每个单词并再次组合:例如:文本。 componentsSeparatedByString(" "),然后为每个获取翻译,然后再次构建字符串
    【解决方案2】:

    我举个例子。 How to make Localizable in SWIFT APP

    1. 打开Xcode并点击File->New->Project

    2. 创建一个新项目并选择 Single View Application。

    3. 输入“Localizable”作为应用名称

    4. 在“可本地化”应用名称上,右键单击并选择新建文件。

    5. 点击“资源”、“字符串文件”

    6. 输入“Localizable.strings”作为文件名

    7. 点击“本地化”

    8. 请选择“Base”并点击“Localize”

    9. 找到“Localizations”的“信息”,点击添加“+”

    10. 为您的应用选择语言

    11. 选择“Localizable.strings”,点击“完成”

    12. 您将拥有两个名为“Localizable.strings”的文件

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-06-09
      • 2018-10-11
      • 1970-01-01
      • 2016-02-12
      • 1970-01-01
      • 2020-03-23
      • 2012-03-03
      相关资源
      最近更新 更多