【问题标题】:Changing locale on the fly即时更改语言环境
【发布时间】:2014-04-27 07:34:30
【问题描述】:
我想在我的应用中按下一个按钮来更改本地化
我已阅读 this 和 this
我正在将语言环境从英语更改为希伯来语,反之亦然(LTR 语言更改为 RTL 语言)
我的布局是这样设计的,它使用界面生成器的约束来确定文本和文本字段的方向。
如果我按照这些帖子所说的去做,我会得到本地化的字符串,但约束不会改变,因为应用程序需要重新启动才能更新视图方向
如何让它也更新视图方向?
【问题讨论】:
标签:
ios
localization
nslocalizedstring
【解决方案1】:
我自己曾经遇到过这个问题,但是我找不到任何解决方案来更改语言环境而不重新启动应用程序。
我所做的是,我在每个 UIViewController 中都有一个 setupUIForLocaleChange 方法。我从viewDidLoad 调用此方法,并且每次区域设置更改并调用此方法时我也会发送通知。通过“本地更改”,我的意思是我的经理拥有locale 的财产。
在我的strings 文件中,字符串具有像“en.myString”和“es.myString”这样的前缀,我创建了一个像LocalizedStringForKey(@"myString") 这样的宏,它使用当前语言环境返回myString。
因此,我在这些 setupUIForLocaleChange 方法中为当前本地设置了所有标签,您也可以通过编程方式对约束执行相同操作。
希望对你有帮助