如何本地化后退按钮?
Posted
技术标签:
【中文标题】如何本地化后退按钮?【英文标题】:How to localize Back Buttons? 【发布时间】:2013-12-03 21:50:21 【问题描述】:我正在将一个应用程序翻译成印尼语。故事板使用导航控制器并为其所有视图推送 segue。当我从主菜单转到一个视图时,后退按钮被正确翻译,但是当我从那里转到一个视图(远离主菜单的两个视图)时,后退按钮显示“返回”。提前感谢您的帮助。
【问题讨论】:
它是默认导航控制器的返回按钮吗?如果是这样,我相信 Apple 会像 UIBarButtonSystemItems 一样为您本地化它。 导航控制器是我通过拖动它得到的默认值,没有进行任何更改。 尝试将 ios 模拟器的母语更改为印度尼西亚语进行测试。后退按钮应该是印度尼西亚语 我有。它继续不起作用。 :// 这很奇怪。您总是可以做的是用自定义的后退按钮替换后退按钮,您可以将标题本地化。我很震惊它没有本地化 【参考方案1】:请检查您的“App”-Info.plist 设置“本地化本地开发区域”并将默认语言更改为印度尼西亚语的“id”。正如其他网站所指出的,这会影响 iOS 默认按钮(如“编辑”或“完成”)上的语言。
见How to change UITabBarController More button's title?
【讨论】:
【参考方案2】:无论如何,要更改后退按钮的标题,您必须考虑您必须处理 PARENT-Controller,而不是详细视图控制器。
在将子视图推送到导航控制器之前,可能在 prepareForSegue-Method 中,执行以下操作:
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithTitle:@”Back” style:UIBarButtonItemStyleBordered target:nil action:nil];
[[self navigationItem] setBackBarButtonItem:backButton];
[backButton release];
【讨论】:
【参考方案3】:如果您手动推送到另一个视图控制器,那么举个例子:
@IBAction func actionOpenSettings(_ sender: UIButton)
if let settingsVC = self.storyboard?.instantiateViewController(withIdentifier: "SettingsViewControllerID") as? SettingsViewController
self.navigationItem.backBarButtonItem = UIBarButtonItem(title: "Back".localized(), style: .plain, target: nil, action: nil)
self.navigationController?.pushViewController(settingsVC, animated: true)
【讨论】:
【参考方案4】:对于 Swift,请使用以下代码:
override func prepare(for segue: UIStoryboardSegue, sender: Any?)
if segue.identifier == "mySegueIdentifier"
let backButton = UIBarButtonItem(title: "MYLOCALISEDSTRING", style: UIBarButtonItemStyle.plain, target: nil, action: nil)
self.navigationItem.backBarButtonItem = backButton
这将更改默认的后退按钮,如下所示:
【讨论】:
【参考方案5】:我发现如果在 Storyboard 文件中设置了父视图控制器的 navigationItem.backBarButtonItem.title 字符串,那么以后添加的任何更改(例如在推送的 ViewController 的 viewWillAppear 中)都将被忽略。检查情节提要中的父控制器是否为后退按钮设置了文本。在父控制器中本地化 self.navigationItem.backBarButtonItem.title 为我修复了它。
【讨论】:
【参考方案6】:我不确定到底是什么问题,但使用 AGi18n 库可能会有所帮助。它强制 .xibs 根据 localizable.strings 文件进行本地化。因此,如果您的 .xib 包含“back”,并且您的 localizable.strings 具有“Back”规则,它将被本地化。
这个SmoothLocalize's localization tutorial.的下半部分有使用库的教程
【讨论】:
以上是关于如何本地化后退按钮?的主要内容,如果未能解决你的问题,请参考以下文章
android webView 当用loadDataWithBaseURL加载本地html时如何实现后退到上一页面