コンパイルされたアプリケーションのロケールIDを設定するために無料のPascalコンパイラに通知する方法
質問
Delphiにはオプションがあります versioninfo-> language-> locale id プロジェクトのプロパティを表示するとき。
私は、無料のパスカルの下で編集されているプログラムのためにそのようなプロパティを設定する方法をさまよっていました。
どんな解決策も大歓迎です: コマンドライン引数 また プリプロセッサディレクティブ そのような {$key value}
; Delphiに相当します。
解決
使用してプロジェクトを構築できる場合 *.lpi
その後、私はあなたのプロジェクトに以下を追加しようとします Project.lpi
ファイル。次のスニペットでは、プロジェクトのロケールID(Windowsプラットフォーム用)を0405(チェコ)に設定する方法が示されています。
<?xml version="1.0"?>
<CONFIG>
<ProjectOptions>
...
<VersionInfo>
<UseVersionInfo Value="True"/>
<Language Value="0405"/>
<StringTable ProductVersion=""/>
</VersionInfo>
...
</ProjectOptions>
...
</CONFIG>
または、Lazarus IDEを使用している場合は、Delphiに非常に類似した設定タブに使用できます。 Project / Project Options ...
そして、デルファイのように行きます Version Info
どこにありますか Language selection
プロジェクトにバージョン情報を含めると、コンボボックスが利用可能です。
他のヒント
これがうまくいくかどうかは100%確信が持てません。これがうまくいかない場合は、自由に投票してください。
Lazarusは、始まるロケール設定を継承します。
ラザロを開始する前に、ロケール情報を設定できます Linux/OS X コマンドラインの使用:
export LC_CTYPE="pt_BR"
export LANG="pt_BR"
export LANGUAGE="pt_BR"
./lazarus
コンパイルされたアプリケーションは、これらの設定を継承する必要があります。
答えは触発されています この回避策 その後、エラーが修正されました。
見てみることをお勧めします FPCフォーラムで 同様に、そこで質問してください。
プラットフォーム(Linux/Windows/OS X)や、使用しているFPCとLazarusの正確なバージョン、必要な実際のロケールなどの詳細を含めることを忘れないでください。
より良い答え
から: http://forum.lazarus.freepascal.org/index.php/topic,5924.0.html
最後に、アプリケーションをローカライズ可能にするためのシンプルで効果的な方法を見つけることができました。 1つのユニットとコードなしを使用します。
1.ユニット「DefaultTranslator」を使用リストに追加します。
2.「プロジェクトオプション」で「I18N」を有効にし、「PO Output Directory」を「Locale」または「Languages」に設定します。翻訳ファイルをアプリケーションフォルダーに正しく配置できますが、それはただ混乱するだけです。適切なフォルダーを作成することを忘れないでください。
3.フォームにコンポーネントを追加します。フォームにすべてのコンポーネントが既にある場合は、少し移動する必要があるため、変更されます。
4.プロジェクトを保存します。
5.これで、「Locale」または「Languages」フォルダーに.poファイルが必要です。異なる言語の場合、ファイルはコピーされ、「project1.xx.po」のように名前が付けられています。ここで、xxは言語コード(「en」、「de」など)です。
6. .poファイルを翻訳ソフトウェアで翻訳し、.moファイルを生成します。 Poeditを使用することをお勧めします。
7.アプリケーションを実行すると、使用する翻訳が地域のロケール設定によって選択されます。他の言語をテストする必要がある場合 - 次のコマンドラインパラメーター( "-l xx"または "-lang xx")でアプリケーションを開始するだけです。ここで、xxは言語コードです。
この方法はあまり用途が広いわけではありませんが、リソース文字列とLCLコンポーネントプロパティを変換します。