私はpy2appでパッケージ化したシンプルなwxPythonアプリケーションを書いて、実行するために他の人に与えることができる自己内蔵のダブルクリック可能な.appバンドルにしました。Mac OS X上のpy2appパッケージ化されたPythonアプリケーションで、システムのデフォルト言語/ロケールを取得するにはどうすればよいですか?
私のアプリでは、ロケール固有の設定を使用しています(具体的には、テキスト形式の日付を解析する必要があります)ので、ユーザーは使用するロケールを指定できるようになり、locale.getdefaultlocale()
私はPythonコードを直接(システムにインストールされていないPythonでパッケージ化されていない)実行してテストしたところ、py2appでパッケージ化し、 "dist/fooを開く"という結果の自己完結型アプリケーションをテストしました。アプリ "とそれは正常に働いた。それから、私は他の人にそれを与え、彼らはすぐに例外を投げたと非難した。 Finderとloで私の.appをダブルクリックしようとしましたが、locale.getdefaultlocale()は実際にはNoneを返しています(例外は、私がそのオブジェクトに対してメソッド呼び出しを行った結果です)。
私は、環境とlocale.getdefaultlocale()の値をダンプし、同じ3つの環境で実行した簡単なテストアプリケーションを作成しました。結果: - ターミナルから "python envdump.py"を直接呼び出す:私の完全な環境をダンプする - py2appでパッケージを開き、 "open dist/envdump.app"としてターミナルから呼び出す:自分の完全な環境をダンプする - 同じdist /環境変数Finder:envdump.appはFinder:環境からはるかに制限されています.LANGが設定されていないため、locale.getdefaultlocale()は(None、None)を返します。
ファインダーで設定した環境変数の完全なリストは、次のとおりです。ARGVZERO、Apple_PubSub_Socket_Render、COMMAND_MODE、DISPLAY、EXECUTABLEPAT、HOME、LOGNAME、PATH、PYTHONPATH、RESOURCEPATH、SHELL、SSH_AUTH_SOCK、TMPDIR、USER、__ CF_USER_TEXT_ENCODING。
私のコードでLANG/locale.getdefaultlocale()の不足を許容しやすくすることはできますが、何とかその情報を取得したいと思います。
多分システムのデフォルトはありません - 私のターミナルウィンドウでLANGが設定されているという事実は、わかっていない特定のTerminal.appの動作です(デフォルトではこの方法で変更できます)。 http://hintsforums.macworld.com/showthread.php?t=93754を参照してください。 – metamatt