我正在使用极少的UI开发OSX应用程序。对于内化/本地化,我使用第三方库用适当的语言替换我的所有文本(我使用[NSLocale preferredLanguages]检测语言)。问题是我的NSAlert始终以从左到右的方向显示其内容(包括文本,按钮布局......),即使我将系统语言切换为阿拉伯语也是如此。
根据我的研究,似乎NSAlert应该自动正确地切换方向(尽管没有明确说明的地方)。我也检查了这个
NSUserInterfaceLayoutDirection direction = [NSApplication sharedApplication].userInterfaceLayoutDirection;
和direction
总是(即使在系统语言被设置为阿拉伯语的情况下),等于
NSUserInterfaceLayoutDirection::NSUserInterfaceLayoutDirectionLeftToRight
。我怀疑这是问题,但不太清楚如何解决这个问题。
任何人都知道如何:
或
注意:
我看这个问题,NSAlert for right to left languages (reversed layout),但答案对我来说根本没用。
我也在这里查看本指南:
它仍然无济于事,因为为了添加对语言的支持,看起来本指南要求我有xib或storyboard文件。我的项目碰巧没有其中任何一个。
提前谢谢大家。
答案 0 :(得分:2)
要支持阿拉伯语,应用程序内的Resources文件夹中的空ar-001.lproj文件夹将会执行此操作。
如果您不想为每种语言添加文件夹,可以通过调用
强制从右向左书写方向[[NSUserDefaults standardUserDefaults] setObject:@"YES" forKey:@"AppleTextDirection"];
[[NSUserDefaults standardUserDefaults] setObject:@"YES" forKey:@"NSForceRightToLeftWritingDirection"];
并切换回从左到右
[[NSUserDefaults standardUserDefaults] removeObjectForKey:@"AppleTextDirection"];
[[NSUserDefaults standardUserDefaults] removeObjectForKey:@"NSForceRightToLeftWritingDirection"];