snipt

Ctrl+h for KB shortcuts

AppleScript

Change language for specific application on Mac OSX

--Autor: Kudusch
--Licence: CC BY-NC

--set the Application you want to work with
set vInput to "Application Name"

--Path and BundleID of application are safed in variables
try
	set vPath to (path to application vInput) as string
	set vBundle to bundle identifier of (info for (path to application vInput))
on error
	error "You must choose an application!"
end try
set vPath to (path to application vInput) as string
set vBundle to bundle identifier of (info for (path to application vInput))

--check available localizations
tell application "Finder"
	set vOut to {}
	set vFolder to vPath & "Contents:Resources:" as string as alias
	try
		set vList to name of every folder in vFolder
	on error
		error "There are no localizations available!"
	end try
	set vList to name of every folder in vFolder
	set n to 1
	repeat while n <= (count items in vList)
		set vTr to item n of vList
		set AppleScript's text item delimiters to {"."}
		set vTr to every text item in vTr as list
		if (count every item of vTr) > 1 and item 2 of vTr = "lproj" then
			set AppleScript's text item delimiters to {""}
			set vOut to ((item 1 of vTr as list) & vOut)
		end if
		set n to n + 1
	end repeat
end tell

--user chooses language
set dialog2 to choose from list vOut with prompt "Choose language:"
set vLang to dialog2
if vLang = false then
	error number -128
end if
set vLang to item 1 of vLang as text
--language is changed
set vScript to "defaults write " & vBundle & " AppleLanguages '(" & vLang & ")'"
do shell script vScript
tell application vInput to quit
delay 2
tell application vInput to activate
https://snippets.siftie.com/embed/8d597eb6018563e239808bebc5c417c8/
/raw/8d597eb6018563e239808bebc5c417c8/
8d597eb6018563e239808bebc5c417c8
applescript
AppleScript
52
2019-02-16T05:57:31
True
False
False
/api/public/snipt/31079/
change-language-for-specific-application-on-mac-osx
<table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><a href="#L-1"> 1</a> <a href="#L-2"> 2</a> <a href="#L-3"> 3</a> <a href="#L-4"> 4</a> <a href="#L-5"> 5</a> <a href="#L-6"> 6</a> <a href="#L-7"> 7</a> <a href="#L-8"> 8</a> <a href="#L-9"> 9</a> <a href="#L-10">10</a> <a href="#L-11">11</a> <a href="#L-12">12</a> <a href="#L-13">13</a> <a href="#L-14">14</a> <a href="#L-15">15</a> <a href="#L-16">16</a> <a href="#L-17">17</a> <a href="#L-18">18</a> <a href="#L-19">19</a> <a href="#L-20">20</a> <a href="#L-21">21</a> <a href="#L-22">22</a> <a href="#L-23">23</a> <a href="#L-24">24</a> <a href="#L-25">25</a> <a href="#L-26">26</a> <a href="#L-27">27</a> <a href="#L-28">28</a> <a href="#L-29">29</a> <a href="#L-30">30</a> <a href="#L-31">31</a> <a href="#L-32">32</a> <a href="#L-33">33</a> <a href="#L-34">34</a> <a href="#L-35">35</a> <a href="#L-36">36</a> <a href="#L-37">37</a> <a href="#L-38">38</a> <a href="#L-39">39</a> <a href="#L-40">40</a> <a href="#L-41">41</a> <a href="#L-42">42</a> <a href="#L-43">43</a> <a href="#L-44">44</a> <a href="#L-45">45</a> <a href="#L-46">46</a> <a href="#L-47">47</a> <a href="#L-48">48</a> <a href="#L-49">49</a> <a href="#L-50">50</a> <a href="#L-51">51</a> <a href="#L-52">52</a></pre></div></td><td class="code"><div class="highlight"><pre><span></span><span id="L-1"><a name="L-1"></a><span class="c">--Autor: Kudusch</span> </span><span id="L-2"><a name="L-2"></a><span class="c">--Licence: CC BY-NC</span> </span><span id="L-3"><a name="L-3"></a> </span><span id="L-4"><a name="L-4"></a><span class="c">--set the Application you want to work with</span> </span><span id="L-5"><a name="L-5"></a><span class="k">set</span> <span class="nv">vInput</span> <span class="k">to</span> <span class="s2">&quot;Application Name&quot;</span> </span><span id="L-6"><a name="L-6"></a> </span><span id="L-7"><a name="L-7"></a><span class="c">--Path and BundleID of application are safed in variables</span> </span><span id="L-8"><a name="L-8"></a><span class="k">try</span> </span><span id="L-9"><a name="L-9"></a> <span class="k">set</span> <span class="nv">vPath</span> <span class="k">to</span> <span class="p">(</span><span class="nb">path to</span> <span class="nb">application</span> <span class="nv">vInput</span><span class="p">)</span> <span class="k">as </span><span class="nc">string</span> </span><span id="L-10"><a name="L-10"></a> <span class="k">set</span> <span class="nv">vBundle</span> <span class="k">to</span> <span class="nb">bundle</span> <span class="na">identifier</span> <span class="k">of</span> <span class="p">(</span><span class="nb">info for</span> <span class="p">(</span><span class="nb">path to</span> <span class="nb">application</span> <span class="nv">vInput</span><span class="p">))</span> </span><span id="L-11"><a name="L-11"></a><span class="k">on</span> <span class="k">error</span> </span><span id="L-12"><a name="L-12"></a> <span class="k">error</span> <span class="s2">&quot;You must choose an application!&quot;</span> </span><span id="L-13"><a name="L-13"></a><span class="k">end</span> <span class="k">try</span> </span><span id="L-14"><a name="L-14"></a><span class="k">set</span> <span class="nv">vPath</span> <span class="k">to</span> <span class="p">(</span><span class="nb">path to</span> <span class="nb">application</span> <span class="nv">vInput</span><span class="p">)</span> <span class="k">as </span><span class="nc">string</span> </span><span id="L-15"><a name="L-15"></a><span class="k">set</span> <span class="nv">vBundle</span> <span class="k">to</span> <span class="nb">bundle</span> <span class="na">identifier</span> <span class="k">of</span> <span class="p">(</span><span class="nb">info for</span> <span class="p">(</span><span class="nb">path to</span> <span class="nb">application</span> <span class="nv">vInput</span><span class="p">))</span> </span><span id="L-16"><a name="L-16"></a> </span><span id="L-17"><a name="L-17"></a><span class="c">--check available localizations</span> </span><span id="L-18"><a name="L-18"></a><span class="k">tell</span> <span class="nb">application</span> <span class="s2">&quot;Finder&quot;</span> </span><span id="L-19"><a name="L-19"></a> <span class="k">set</span> <span class="nv">vOut</span> <span class="k">to</span> <span class="p">{}</span> </span><span id="L-20"><a name="L-20"></a> <span class="k">set</span> <span class="nv">vFolder</span> <span class="k">to</span> <span class="nv">vPath</span> <span class="o">&amp;</span> <span class="s2">&quot;Contents:Resources:&quot;</span> <span class="k">as </span><span class="nc">string</span> <span class="k">as</span> <span class="nv">alias</span> </span><span id="L-21"><a name="L-21"></a> <span class="k">try</span> </span><span id="L-22"><a name="L-22"></a> <span class="k">set</span> <span class="nv">vList</span> <span class="k">to</span> <span class="na">name</span> <span class="k">of</span> <span class="nb">every</span> <span class="nv">folder</span> <span class="k">in</span> <span class="nv">vFolder</span> </span><span id="L-23"><a name="L-23"></a> <span class="nb">on</span> <span class="k">error</span> </span><span id="L-24"><a name="L-24"></a> <span class="k">error</span> <span class="s2">&quot;There are no localizations available!&quot;</span> </span><span id="L-25"><a name="L-25"></a> <span class="k">end</span> <span class="k">try</span> </span><span id="L-26"><a name="L-26"></a> <span class="k">set</span> <span class="nv">vList</span> <span class="k">to</span> <span class="na">name</span> <span class="k">of</span> <span class="nb">every</span> <span class="nv">folder</span> <span class="k">in</span> <span class="nv">vFolder</span> </span><span id="L-27"><a name="L-27"></a> <span class="k">set</span> <span class="nv">n</span> <span class="k">to</span> <span class="mi">1</span> </span><span id="L-28"><a name="L-28"></a> <span class="k">repeat</span> <span class="k">while</span> <span class="nv">n</span> <span class="o">&lt;=</span> <span class="p">(</span><span class="nb">count</span> <span class="nb">items</span> <span class="k">in</span> <span class="nv">vList</span><span class="p">)</span> </span><span id="L-29"><a name="L-29"></a> <span class="k">set</span> <span class="nv">vTr</span> <span class="k">to</span> <span class="nb">item</span> <span class="nv">n</span> <span class="k">of</span> <span class="nv">vList</span> </span><span id="L-30"><a name="L-30"></a> <span class="k">set</span> <span class="no">AppleScript</span>&#39;s <span class="no">text item delimiters</span> <span class="k">to</span> <span class="p">{</span><span class="s2">&quot;.&quot;</span><span class="p">}</span> </span><span id="L-31"><a name="L-31"></a> <span class="k">set</span> <span class="nv">vTr</span> <span class="k">to</span> <span class="nb">every</span> <span class="nb">text</span> <span class="nb">item</span> <span class="k">in</span> <span class="nv">vTr</span> <span class="k">as</span> <span class="nv">list</span> </span><span id="L-32"><a name="L-32"></a> <span class="k">if</span> <span class="p">(</span><span class="nb">count</span> <span class="nb">every</span> <span class="nb">item</span> <span class="k">of</span> <span class="nv">vTr</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">1</span> <span class="ow">and</span> <span class="nb">item</span> <span class="mi">2</span> <span class="k">of</span> <span class="nv">vTr</span> <span class="o">=</span> <span class="s2">&quot;lproj&quot;</span> <span class="k">then</span> </span><span id="L-33"><a name="L-33"></a> <span class="k">set</span> <span class="no">AppleScript</span>&#39;s <span class="no">text item delimiters</span> <span class="k">to</span> <span class="p">{</span><span class="s2">&quot;&quot;</span><span class="p">}</span> </span><span id="L-34"><a name="L-34"></a> <span class="k">set</span> <span class="nv">vOut</span> <span class="k">to</span> <span class="p">((</span><span class="nb">item</span> <span class="mi">1</span> <span class="k">of</span> <span class="nv">vTr</span> <span class="k">as</span> <span class="nv">list</span><span class="p">)</span> <span class="o">&amp;</span> <span class="nv">vOut</span><span class="p">)</span> </span><span id="L-35"><a name="L-35"></a> <span class="k">end</span> <span class="k">if</span> </span><span id="L-36"><a name="L-36"></a> <span class="k">set</span> <span class="nv">n</span> <span class="k">to</span> <span class="nv">n</span> <span class="o">+</span> <span class="mi">1</span> </span><span id="L-37"><a name="L-37"></a> <span class="k">end</span> <span class="k">repeat</span> </span><span id="L-38"><a name="L-38"></a><span class="k">end</span> <span class="k">tell</span> </span><span id="L-39"><a name="L-39"></a> </span><span id="L-40"><a name="L-40"></a><span class="c">--user chooses language</span> </span><span id="L-41"><a name="L-41"></a><span class="k">set</span> <span class="nv">dialog2</span> <span class="k">to</span> <span class="nb">choose from list</span> <span class="nv">vOut</span> <span class="nv">with</span> <span class="na">prompt</span> <span class="s2">&quot;Choose language:&quot;</span> </span><span id="L-42"><a name="L-42"></a><span class="k">set</span> <span class="nv">vLang</span> <span class="k">to</span> <span class="nv">dialog2</span> </span><span id="L-43"><a name="L-43"></a><span class="k">if</span> <span class="nv">vLang</span> <span class="o">=</span> <span class="no">false</span> <span class="k">then</span> </span><span id="L-44"><a name="L-44"></a> <span class="k">error</span> <span class="nv">number</span> <span class="o">-</span><span class="mi">128</span> </span><span id="L-45"><a name="L-45"></a><span class="k">end</span> <span class="k">if</span> </span><span id="L-46"><a name="L-46"></a><span class="k">set</span> <span class="nv">vLang</span> <span class="k">to</span> <span class="nb">item</span> <span class="mi">1</span> <span class="k">of</span> <span class="nv">vLang</span> <span class="k">as </span><span class="nc">text</span> </span><span id="L-47"><a name="L-47"></a><span class="c">--language is changed</span> </span><span id="L-48"><a name="L-48"></a><span class="k">set</span> <span class="nv">vScript</span> <span class="k">to</span> <span class="s2">&quot;defaults write &quot;</span> <span class="o">&amp;</span> <span class="nv">vBundle</span> <span class="o">&amp;</span> <span class="s2">&quot; AppleLanguages &#39;(&quot;</span> <span class="o">&amp;</span> <span class="nv">vLang</span> <span class="o">&amp;</span> <span class="s2">&quot;)&#39;&quot;</span> </span><span id="L-49"><a name="L-49"></a><span class="nb">do shell script</span> <span class="nv">vScript</span> </span><span id="L-50"><a name="L-50"></a><span class="k">tell</span> <span class="nb">application</span> <span class="nv">vInput</span> <span class="k">to</span> <span class="nb">quit</span> </span><span id="L-51"><a name="L-51"></a><span class="nb">delay</span> <span class="mi">2</span> </span><span id="L-52"><a name="L-52"></a><span class="k">tell</span> <span class="nb">application</span> <span class="nv">vInput</span> <span class="k">to</span> <span class="nb">activate</span> </span></pre></div> </td></tr></table>
applescript, change, language