2013-03-30 105 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用戶