feed

2014年01月19日, 編集履歴

OS Xで異なる言語環境で同じアプリケーションを同時に起動する方法

はじめに

OS Xで、

などに、アプリケーションを日英の両言語環境で同時に起動したいことがある。

 しかし、通常はアプリケーションを複数起動することはできない。日本語環境で起動しているアプリケーションのユーザインターフェイスの文言が、英語環境でどうなっているのかを確認するには、システム環境設定で優先言語を変更してアプリケーションを起動し直す必要がある。これはめんどくさい。

 異なる言語環境で同じアプリケーションを同時に起動することができれば、上述のような作業をするときに便利である。これはターミナルからopenコマンドを使って、

$ open -n -a Safari --args -AppleLanguages '("en-US")'

のようにすると実現できる。

openコマンド

 openコマンドは、かんたんに言えばFinderでなんらかのファイルをダブルクリックしたときの動作をターミナルから行うものである。たとえば、

$ open hoge.txt

とすれば、カレントディレクトリィにあるhoge.txtをFinderからダブルクリックしたのと同じ動作になる(なんらかのテキストエディタでhoge.txtが開かれるであろう)。

-aオプション

 openコマンドで-aオプションに続いてアプリケーション名を指定すると、そのアプリケーションでファイルが開かれる。実際にそのファイルに関連付けられているアプリケーションがなんであれ、-aオプションで指定したアプリケーションでファイルが開かれる。たとえば、

$ open -a Safari

ではSafariが起動し、

$ open -a Safari hoge.html

ではHTMLファイルに関連づけされているアプリケーションがGoogle ChromeであってもSafariでhoge.htmlが開かれる。

-nオプション

 openコマンドに-nオプションを指定すると、すでに起動中のアプリケーションはそのままに、新たに同じアプリケーションを起動する(DockやCommand-Tabのタスクスウィッチャにも同じアプリケーションのアイコンが複数個表示される)。

$ open -n -a Safari

とすると、Safariが起動中であっても、それはそのままに新たにSafariを起動する。

--argsオプション

 openコマンドの--argsオプションは、以下に続く引数を、起動するアプリケーションにコマンドライン引数として渡す。

$ open -a Safari --args hoge foo

とすると、Safariにhogefooというふたつの引数が渡される。

コマンドライン引数による言語環境の上書き

 アプリケーションにコマンドライン引数で-AppleLanguagesで優先言語順を指定した配列を渡すと、システム環境設定の優先言語順を上書きすることができる(参考情報:コマンドライン引数(Launch arguments)は思ったより簡単に使える - 24/7 twenty-four seven)。

$ /Applications/Safari.app/Contents/MacOS/Safari -AppleLanguages '("en-US")'

とすると、システム環境設定で日本語を優先言語にしていようと英語環境でSafariが起動する。

まとめ

 以上を組み合わせると、以下のようになる。

$ open -n -a Safari --args -AppleLanguages '("en-US")'

 ターミナルから上記コマンドを実行すると、現在起動中の日本語環境のSafariはそのままに、新たに英語環境のSafariが起動される。これで日英両言語のSafariを見比べながら、ユーザインターフェイスの文言を確認できるようになる。