読者です 読者をやめる 読者になる 読者になる

MacOSX(Yosemite)におけるInkscapeの日本語化

[2016/10/26 追記]

この記事の手順はEl Captain以降では上手くいかないので下記のサイトを参照。

leopardgecko.hatenablog.com

概ね各サイトとも/Applications/Inkscape.app/Contents/Resources/bin/inkscapeに修正を加えるという点では共通です。

上記サイトが 原因の説明も解説されているのでベターではないでしょうか。

[追記ここまで]


何故か今夜に限って寝付けなくて困っております。

なのでブログ用のアイコンでも作ろうかと思って久々にInkscapeを起動。

インストールしたのは随分前ですが、メニューが英語のまま。さすがにこれはいかんだろってことで日本語化を。

"Edit" メニューから"Preference"、"Interface"とメニューをたどって"Japanese(ja)"を選択。

f:id:atuyosi:20150627022441p:plain:w400

再起動して完了。

が、ダメでした。「内部エラー云々、終了します」*1。 潔くGoogles先生にお伺いをたてる。と。

ロケールの判定に失敗する場合があるので起動スクリプトを修正すべし、とのご託宣。

構想雑文 : [Mac]MacOSXでInkscapeを日本語化して使う方法 - livedoor Blog(ブログ)

brew-cask でインストールしているので、まずインストール先から確認。

$ which inkscape
/usr/local/bin/inkscape

まあシンボリックリンクなので、

ls -l /usr/local/bin/inkscape
lrwxr-xr-x  1 atuyosi  admin  88  6 26 20:38 /usr/local/bin/inkscape -> /opt/homebrew-cask/Caskroom/inkscape/0.91-1/Inkscape.app/Contents/Resources/bin/inkscape

で、シェルスクリプトっぽいので開いてみるが、修正箇所が変更されているっぽい。

上記のファイルの142行目をいじればいいみたいだが、

       tmpLANG="`grep \"\`echo $LANGSTR\`_\" /usr/share/locale/locale.alias | \
                tail -n1 | sed 's/\./ /' | awk '{print $2}'`"
        if [ "x$tmpLANG" == "x" ]

よくみると、"/usr/share/locale/locale.aliase"というファイルをgrepして、最後の行の、第2カラムの値を取り出しているだけである。 まずは、"/usr/share/locale/locale.aliase"を確かめてみる。関係しそうなのは、以下の5行。普通に考えて最後の行か。

japanese        ja_JP.eucJP
japanese.euc    ja_JP.eucJP
ja_JP           ja_JP.eucJP
ja_JP.ujis      ja_JP.eucJP
japanese.sjis   ja_JP.SJIS

まずはinkscapeの起動スクリプトデバッグ変数を有効にして起動してみる。

$  _DEBUG=true inkscape
Setting LANGSTR from AppleLocale: ja
Setting LANG from /usr/share/locale/locale.alias
Setting Language: sjis.UTF-8

(process:56715): Gtk-WARNING **: Locale not supported by C library.
    Using the fallback 'C' locale.
Fontconfig warning: ignoring sjis.UTF-8: not a valid language tag
libc++abi.dylib: terminating with uncaught exception of type Glib::ConvertError

Emergency save activated!
Emergency save completed. Inkscape will close now.
<省略>

どうやら'ja_'という文字を含む行を”/usr/share/locale/locale.alias”から取り出してきているが、意図せず'sjis'という文字列を取り出している。 どうやらビンゴっぽい。なので、

$ sudo vi /usr/share/locale/locale.alias

61行目の下にja ja_JP.UTF-8 という行を追加する。

[2016/10/21 追記]

El Capitan 以降ではこの方法はうまく行きません。上記のリンク先の方法で行くしかないです。
セキュリティ機構としてSystem Integrity Protection (SIP)というものが導入されたため、/usrのファイルは修正できないためです。

[追記ここまで]

57:japanese  ja_JP.eucJP
58:japanese.euc ja_JP.eucJP
59:ja_JP        ja_JP.eucJP
60:ja_JP.ujis   ja_JP.eucJP
61:japanese.sjis    ja_JP.SJIS
62:ja  ja_JP.UTF-8

もう一度。

$  _DEBUG=true inkscape

Setting LANGSTR from AppleLocale: ja
Setting LANG from /usr/share/locale/locale.alias
Setting Language: ja_JP.UTF-8
<省略>

今度は無事に起動。環境変数もおかしくない。

f:id:atuyosi:20150627022358p:plain:w400

一旦終了して、デバッグ変数なしで起動。問題なく起動することを確認。めでたしめでたし

おまけ

Inkscape のインストールと設定。

インストールは、brew-cask 導入済みなら以下のコマンドでOK。

$ brew cask install inkscape

エクステンション関連は、$HOME/.config/inkscape/extension-errors.logにエラーが出ているので必要なものを適宜追加。

brew install pstoedit

設定は下記のリンクが親切。

備考

環境は以下の通り。

f:id:atuyosi:20150627023816p:plain:w400

ようやく眠くなってきたのでこの辺で。ではでは。

*1:画像を撮り忘れた…