2013-03-30 86 views
1

我希望在系统偏好设置 - >语言&文字中获得语言偏好。我尝试使用“获取系统信息”来获得语言偏好。在系统偏好设置 - >语言和文字中获得语言偏好

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-汉斯”?

希望有人帮助我,谢谢。

回答

1

望着可可/目标C“NSLocale”的文档,我看到居然有用户级别的语言环境变量。

一个是currentLocale,另一个是autoupdatingCurrentLocale

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

你需要想出一个Objective C工具,它允许你执行“autoupdatingCurrentLocale”并将它放到一个Applescript变量中。

现在我看到你已经编辑了你的问题,所以我也会编辑它:这听起来像你想要做的是什么建议in the answers of this related question,我很确定你已经看到了在做你自己的研究。使用该“get_language()”苹果位返回“r”阵列的项目1。

+0

谢谢你的回答,但是当改变我曾尝试:用户区域设置是从语言不同以简体中文为例,用户语言环境为“zh_CN”,但语言偏好为“zh-Hans”。 – pinchwang

+0

我已经更新了我的答案。 –

+0

非常感谢您的回答,它确实解决了我的问题。 – pinchwang

0

有多种不同的区域设置:

  • /usr/libexec/PlistBuddy -c 'Print AppleLanguages:0' ~/Library/Preferences/.GlobalPreferences.plist
    • 语言&文本选择的第一语言>语言
  • defaults read -g AppleLocale
    • 设置语言&选定文本>区域
    • user locale of (system info)
    • 决定了终端和的iTerm设置LC_变量默认
  • 第一项AppleLanguages在/Library/Preferences/.GlobalPreferences.plist
    • 通过sudo languagesetup改变并运行安装助手时所使用的
    • 语言登录窗口以及新用户和来宾用户
  • defaults read /Library/Preferences/.GlobalPreferences.plist AppleLocale
    • 运行安装助手用于新用户
    • 地区和guest用户