指定アプリケーションを、現在のユーザーアカウントで指定可能な言語環境を指定して再起動するAppleScriptの改良版です。
初版では言語環境を選んでからアプリケーションを選んでいましたが、この順番を逆にしました。アプリケーションを選択し、そのバンドル内のローカライズ状況を調べ、一覧から選択して起動します。
▲Keynoteのローカライズ言語一覧から対象言語コードを選択
個人的には割と実用性が高いScriptです。
AppleScript名:指定アプリケーションの指定言語環境で再起動 v3.scptd |
— – Created by: Takaaki Naganoya – Created on: 2020/05/06 — – Copyright © 2020 Piyomaru Software, All Rights Reserved — use AppleScript version "2.5" use scripting additions use framework "Foundation" property |NSURL| : a reference to current application’s |NSURL| property NSBundle : a reference to current application’s NSBundle property NSWorkspace : a reference to current application’s NSWorkspace set anApp to path to (choose application) tell application "Finder" set aBundle to properties of anApp set targID to id of aBundle –Get Bundle ID end tell set bRes to getLocalizationsFromBundleID(targID) of me set cRes to my sort1DList:bRes ascOrder:true set dRes to (choose from list cRes) if dRes = missing value or dRes = false then return set targLanguage to first item of dRes set appPath to retPathFromBundleID(targID) of me set sText to "open -n -a " & quoted form of appPath & " –args -AppleLanguages ’(\"" & targLanguage & "\")’" do shell script sText on getLocalizationsFromBundleID(aBundleID) set aRes to retPathFromBundleID(aBundleID) of me if aRes = false then error "Wrong Bundle ID." return getSpecifiedAppFilesLocalizationListWithDuplication(aRes) of me end getLocalizationsFromBundleID –指定アプリケーションファイルの、指定Localeにおけるローカライズ言語リストを求める。重複を許容 on getSpecifiedAppFilesLocalizationListWithDuplication(appPOSIXpath) set aURL to (|NSURL|’s fileURLWithPath:appPOSIXpath) set aBundle to NSBundle’s bundleWithURL:aURL set locList to aBundle’s localizations() return locList as list end getSpecifiedAppFilesLocalizationListWithDuplication on retPathFromBundleID(aBundleID) set aURL to NSWorkspace’s sharedWorkspace()’s URLForApplicationWithBundleIdentifier:aBundleID if aURL = missing value then return false –Error return aURL’s |path|() as string end retPathFromBundleID –1D Listをsort / ascOrderがtrueだと昇順ソート、falseだと降順ソート on sort1DList:theList ascOrder:aBool set aDdesc to current application’s NSSortDescriptor’s sortDescriptorWithKey:"self" ascending:aBool selector:"localizedCaseInsensitiveCompare:" set theArray to current application’s NSArray’s arrayWithArray:theList return (theArray’s sortedArrayUsingDescriptors:{aDdesc}) as list end sort1DList:ascOrder: |
More from my site
(Visited 72 times, 1 visits today)