2013-03-30 3 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

Глядя на какао/Objective C «NSLocale» документация, я вижу, есть на самом деле два уровня пользователя локал переменные.

Один - currentLocale, а другой - autoupdatingCurrentLocale.

К сожалению, для вас похоже, что API Apple решил экспортировать через AppleScript, который обновляется только во время входа пользователя. Я подозреваю, что ваш результат Applescript будет меняться каждый раз, когда пользователь будет перезагружен или повторно зарегистрирован.

Вам нужно будет создать инструмент Objective C, который позволит вам сделать «autoupdatingCurrentLocale» и поместить его в переменную Applescript ,

Теперь я вижу, что вы отредактировали свой вопрос, так что я тоже отредактирую мой. Похоже, что вы хотите сделать то, что было предложено in the answers of this related question, что я вполне уверен, что вы видели, когда делаете ваши собственные исследования. Используйте этот бит «get_language()», чтобы вернуть элемент 1 вашего массива «r».

+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 и при запуске Setup Assistant
    • язык, используемый в окно входа в систему и для новых пользователей и пользователя гостя
  • defaults read /Library/Preferences/.GlobalPreferences.plist AppleLocale
    • Изменен при запуске помощника по установке
    • Регион, используемый для новых пользователей и гостевого пользователя

 Смежные вопросы

  • Нет связанных вопросов^_^