Skip to content

Instantly share code, notes, and snippets.

@yt-siden
Last active June 6, 2017 08:56
Show Gist options
  • Save yt-siden/b4024755fb3af5fc1dad46f05b58a1d4 to your computer and use it in GitHub Desktop.
Save yt-siden/b4024755fb3af5fc1dad46f05b58a1d4 to your computer and use it in GitHub Desktop.

macOSでターミナルからinkscapeを起動するとロケールに関する警告が出る

症状

% inkscape

(process:18763): Gtk-WARNING **: Locale not supported by C library.
        Using the fallback 'C' locale.
Fontconfig warning: ignoring sjis.UTF-8: not a valid language tag
gtkspell error: enchant error for language: sjis.UTF-8

_DEBUG=1 にして起動してみる

inkscape はシェルスクリプト(起動スクリプト)である. デバッグ用の環境変数を指定すればデバッグログがいくつか吐かれる.

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

(process:19317): Gtk-WARNING **: Locale not supported by C library.
        Using the fallback 'C' locale.
Fontconfig warning: ignoring sjis.UTF-8: not a valid language tag
gtkspell error: enchant error for language: sjis.UTF-8

どうやら LANG が正しく設定できてないようである.

tmpLANG の取得法を調べてみる

デバッグ出力とスクリプトを眺めてみると, tmpLANG が正しく設定できていないようである.

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

の部分はシステムレベルで日本語を使用するように設定していれば "ja_"となっている(はず).

% grep "ja_" /usr/share/locale/locale.alias
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

% grep "ja_" /usr/share/locale/locale.alias | tail -n1
japanese.sjis   ja_JP.SJIS

% grep "ja_" /usr/share/locale/locale.alias | tail -n1 | sed 's/\./ /'
japanese sjis   ja_JP.SJIS

% grep "ja_" /usr/share/locale/locale.alias | tail -n1 | sed 's/\./ /' | awk '{print $2}'
sjis

locale.alias の他のエントリから察するに,各行の第一エントリに . が含まれていない行は正しく取得できそうである.

スクリプトを少し変更

スクリプトの該当部分の tailheadに変更して起動してみる.

143c143
<               tail -n1 | sed 's/\./ /' | awk '{print $2}'`"
---
>               head -n1 | sed 's/\./ /' | awk '{print $2}'`"
% _DEBUG=1 inkscape
Setting LANGSTR from AppleLocale: ja
Setting LANG from /usr/share/locale/locale.alias
Setting Language: ja_JP.UTF-8
gtkspell error: enchant error for language: ja_JP.UTF-8

うまくいった. gtkspellのエラーは解決するのが難しそうなので,放置.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment