【发布时间】:2017-07-31 13:41:36
【问题描述】:
我在通过 Localizable.stringdict 本地化字符串时遇到问题。我确实为不同大小的测试字符串设置了不同的本地化。请参阅 Localizable.stringdict:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Test</key>
<dict>
<key>NSStringVariableWidthRuleType</key>
<dict>
<key>20</key>
<string>test</string>
<key>25</key>
<string>test message</string>
<key>50</key>
<string>This is a test message</string>
</dict>
</dict>
</dict>
</plist>
我的 ViewController 如下所示:
class ViewController: UIViewController {
@IBOutlet weak var label: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
let string = NSLocalizedString("Test", comment: "This is a test message") as NSString
let widthFormattedString = string.variantFittingPresentationWidth(50) as String
print(widthFormattedString)
label.text = widthFormattedString
}
override func viewWillLayoutSubviews() {
super.viewWillLayoutSubviews()
}
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
我想将本地化字符串分配给标签。我的 ViewController 中的打印正在打印“这是一条测试消息”,但视图显示的是“测试消息”。我不会在其他任何地方更改标签的文本。所以我想知道为什么会显示错误消息。有人可以帮忙吗?
【问题讨论】:
-
Localizable.stringdict : 你说的是 localizable.strings 文件吗?
-
不存在 localizable.stringdict 文件,您可以在其中为不同的大小指定不同的文本
-
您已经声明'我的 ViewController 中的打印正在打印“这是一条测试消息”,但视图显示的是“测试消息”',但它只会打印“测试”键。
-
不,它不仅仅是打印密钥。它正在使用 Localizable.stringdict 但它正在打印键 25 的值,而不是按要求打印 50。
标签: ios swift localization xcode9-beta