簡體   English   中英

iOS靜態tableview單元無法本地化

[英]IOS Static tableview cell cannot be localized

可以說,故事板是Main.storyboard ,我有一個TableViewController 我有一個包含2個部分的靜態表視圖,每個部分都有1行。

我創建了本地化文件,因此我的項目結構如下所示:

  • 主板(底盤)
  • Main.Strings(FR)

Main.Strings包含所有法語的本地化字符串。 問題是,當我在FR中運行設備時,內容未本地化。

這是我正在談論的情節提要的圖像。 (您可以用任何文本替換label )。

注意:以前在帶有Swift 3.0的Xcode 8中可以使用。 但是,一旦我使用Swift 4.0升級到Xcode 9,它似乎就不起作用了。

固定:

  • Xcode錯誤。 開始了一個新的故事板,一切似乎都正常運行...

我認為很難對情節提要文件進行本地化。 我建議將所有翻譯都放在一個Localizable.strings文件中,並在視圖控制器中以編程方式設置本地化。

您可以使用以下擴展程序使事情變得更容易:

extension String {

    var localized: String {
        return NSLocalizedString(self, comment: "")
    }

}

如果您隨后將翻譯定義為全局常量,例如:

class Texts {

    class MyViewController {

        static let title = "My Title".localized
        static let editLabel = "Edit your text".localized
        static let editTextFieldPlaceholder = "Sample text".localized
        static let editButtonTitle = "Edit".localized

    }

}

您可以像這樣簡單地為視圖控制器設置本地化:

override func viewDidLoad() {
    super.viewDidLoad()
    // Localization
    self.title = Texts.MyViewController.title
    self.editLabel.text = Texts.MyViewController.editLabel
    self.editTextField.placeholder = Texts.MyViewController.editTextFieldPlaceholder
    self.editButton.setTitle(Texts.MyViewController.editButtonTitle, for: .normal)
}

這樣,您的本地化將變得更加結構化和可維護。 另外,您在更改單個元素時無需重新翻譯整個情節提要。 您甚至可以將復數形式本地化 ,這只是使用簡單的情節提要面板本地化是不可能的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM