在“系统偏好设置”中获取语言偏好 - >语言与文本

时间:2013-03-30 08:19:56

标签: shell applescript locale system-preferences

我想在系统偏好设置中获得语言偏好 - >语言与文本。我尝试使用“获取系统信息”来获取语言偏好。

set language_prefer to (user locale of (get system info))
if (language_prefer is "zh-Hans") then
   set sharingstr to "共享"
   set startstr to "启动"
else if (language_prefer is "zh-Hant") then
   set sharingstr to "共享"
   set startstr to "啟動"
else
   set sharingstr to "Sharing"
   set startstr to "Start"
end if

但我发现当我改变语言偏好时,(获取系统信息)的用户区域设置返回值永远不会改变。然后我发现用户区域设置与首选语言不同。 以简体中文为例,它的用户区域设置为“zh_CN”,但它的语言偏好是“zh-Hans”。有人说使用

set lang to do shell script "defaults read NSGlobalDomain AppleLanguages"

返回

(
"zh-Hans",
en,
"zh-Hant",
de,
ja,
fr,
es,
it,
pt,
"pt-PT",
nl,
sv,
nb,
da,
fi,
ru,
pl,
ko,
ar,
cs,
hu,
tr
)

如何获得语言偏好值,例如“zh-Hans”?

希望有人帮助我,谢谢。

2 个答案:

答案 0 :(得分:1)

查看Cocoa / Objective C“NSLocale”文档,我发现实际上有 两个 用户级别的区域设置变量。

一个是currentLocale,另一个是autoupdatingCurrentLocale

不幸的是,看起来Apple决定通过AppleScript导出的API是仅在用户登录时更新的API。我怀疑您的Applescript结果只会在用户重新启动或重新登录时更改。

您需要提供一个Objective C工具,允许您执行“autoupdatingCurrentLocale”并将其放入Applescript变量中。

现在我看到你已经编辑了你的问题,所以我也会编辑我的:听起来你想要做的就是建议的in the answers of this related question,我很确定你已经在做自己的研究时看到。使用“get_language()”applescript位返回“r”数组的第1项。

答案 1 :(得分:0)

有多种不同的区域设置:

  • /usr/libexec/PlistBuddy -c 'Print AppleLanguages:0' ~/Library/Preferences/.GlobalPreferences.plist
    • 语言和语言中选择的第一语言文字>语言
  • defaults read -g AppleLocale
    • 在语言和版本中选择的设置文字>区域
    • user locale of (system info)
    • 确定默认情况下Terminal和iTerm将LC_变量设置为
  • /Library/Preferences/.GlobalPreferences.plist中AppleLanguages中的第一项
    • sudo languagesetup更改并在运行“设置助理”时
    • 登录窗口中使用的语言以及新用户和来宾用户
  • defaults read /Library/Preferences/.GlobalPreferences.plist AppleLocale
    • 运行“设置助理”时更改
    • 用于新用户和来宾用户的区域