【问题标题】:NSTextView always uses system language when hyphenating?NSTextView 在断字时总是使用系统语言?
【发布时间】:2021-05-04 13:52:16
【问题描述】:

在我看来,如果 macOS 中的系统语言设置为英文,英文文本会获得更好的连字符。事情是,这很难确定,并且用新的系统语言重新启动很麻烦,所以我没有彻底测试过,但我有理由确定我只看到过“somet-hing”和类似的东西系统设置为瑞典语。

这是在 macOS Big Sur 上的 NSTextView 中,通过在 NSAttributedString 中的 NSParagraphStyle 对象上将 hyphenationFactor 设置为 1 来打开连字符。它不是网络视图。该应用程序未本地化,因此即使系统设置为瑞典语,应用程序语言也是英语。将 NSAccessibilityLanguageTextAttribute 设置为“en-US”似乎没有任何效果。

我想知道是否有人可以确认这一点,如果可以,可以做些什么吗?

【问题讨论】:

  • 参见hyphenationFactor 的文档,“该属性通过检查preferredLanguages 中的第一项来检测用户选择的语言。”。
  • 谢谢!我错过了。那么有没有办法改变这种不良行为呢?
  • NSAttributedString 使用键 NSHyphenationLanguageNSUserDefaults 读取语言。这是未记录的,可能不适用于每个 macOS 版本。
  • 再次感谢!那总比没有好。如果您将其发布为答案,我会接受。

标签: macos nstextview hyphenation


【解决方案1】:

来自hyphenationFactor的文档:

此属性通过检查preferredLanguages 中的第一项来检测用户选择的语言。

+[NSLocale preferredLanguages]-[NSAttributedString lineBreakByHyphenatingBeforeIndex:withinRange:] 调用一次,但在此之前,语言是从 NSUserDefaults 读取的,键为 NSHyphenationLanguage。设置语言

[NSUserDefaults.standardUserDefaults setObject:@"en" forKey:@"NSHyphenationLanguage"]

似乎有效,但它没有记录,因此使用它需要您自担风险。

【讨论】:

  • 像魅力一样工作!但是你是怎么知道这个 UserDefaults 键的呢?
  • @wakel 我在这里和那里添加了一些断点并观察发生了什么。
猜你喜欢
  • 2021-10-04
  • 1970-01-01
  • 2019-11-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-05
  • 1970-01-01
相关资源
最近更新 更多