tru*_*ong 1 macos objective-c internationalization
我正在开发一个 UI 非常少的 OSX 应用程序。对于内部化/本地化,我使用了一个 3rd 方库来用适当的语言替换我的所有文本(我使用 [NSLocale preferredLanguages] 检测语言)。问题是我的 NSAlert 总是以从左到右的方向显示其内容(包括文本、按钮布局...),即使我将系统语言切换为阿拉伯语。
从我的研究来看,NSAlert 似乎应该自动正确地切换方向(尽管没有明确说明的地方)。我也检查这个
NSUserInterfaceLayoutDirection direction = [NSApplication sharedApplication].userInterfaceLayoutDirection;
Run Code Online (Sandbox Code Playgroud)
并且direction总是(即使在系统语言设置为阿拉伯语的情况下),等于
NSUserInterfaceLayoutDirection::NSUserInterfaceLayoutDirectionLeftToRight. 我怀疑这是问题所在,但不太知道如何解决这个问题。
任何人都知道如何:
或者
笔记:
我看着这个问题,NSAlert 用于从右到左语言(反向布局),但答案对我来说根本没有帮助。
我也在这里查看本指南:
它仍然没有帮助,因为为了添加对语言的支持,本指南似乎要求我有 xib 或故事板文件。我的项目恰好没有这些。
谢谢大家。
为了支持阿拉伯语,应用程序内 Resources 文件夹中的空 ar-001.lproj 文件夹就可以了。
如果您不想为每种语言添加文件夹,您可以通过调用强制从右向左书写方向
[[NSUserDefaults standardUserDefaults] setObject:@"YES" forKey:@"AppleTextDirection"];
[[NSUserDefaults standardUserDefaults] setObject:@"YES" forKey:@"NSForceRightToLeftWritingDirection"];
Run Code Online (Sandbox Code Playgroud)
并切换回从左到右
[[NSUserDefaults standardUserDefaults] removeObjectForKey:@"AppleTextDirection"];
[[NSUserDefaults standardUserDefaults] removeObjectForKey:@"NSForceRightToLeftWritingDirection"];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
226 次 |
| 最近记录: |