8

Delphiでは、プロジェクトのプロパティを表示するときに、[バージョン情報] ->[言語]->[ロケールID ]オプションがあります。
私は、FreePascalでコンパイルされているプログラムにそのようなプロパティを設定する方法をさまよっていました。
任意の解決策を歓迎します:コマンドライン引数または;などのプリプロセッサディレクティブ。{$key value}Delphiと同等です。

4

2 に答える 2

8

ファイルを使用してプロジェクトをビルドできる場合は*.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 ...、Delphiの場合と同様に、プロジェクトにバージョン情報を含めるVersion Infoと、コンボボックスはどこにありますか。Language selection

于 2012-02-17T10:57:58.833 に答える
5

これが機能するかどうかは100%確実ではありません。機能しない場合は、遠慮なく投票してください。

Lazarusは、最初のロケール設定を継承します。次のコマンドラインを使用して、Linux /
OSXでLazarusを起動する前にロケール情報を設定できます。

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出力ディレクトリ」を「ロケール」または「言語」に設定します。翻訳ファイルをアプリケーションフォルダに直接入れることができますが、それは混乱を招くだけです。適切なフォルダを作成することを忘れないでください。
3.フォームにコンポーネントを追加します。フォームにすでにすべてのコンポーネントがある場合は、フォームを少し移動する必要があるため、変更されます。
4.プロジェクトを保存します。
5.これで、「locale」または「languages」フォルダーに.poファイルが作成されます。異なる言語の場合、ファイルをコピーして、「project1.XX.po」のように名前を変更する必要があります。ここで、XXは言語コードです(「en」、「de」など)。
6.翻訳ソフトウェアを使用して.poファイルを翻訳し、.moファイルを生成します。POEditを使用することをお勧めします。
7.アプリケーションを実行すると、使用する翻訳が地域のロケール設定によって選択されます。他の言語をテストする必要がある場合は、次のコマンドラインパラメータを使用してアプリケーションを起動するだけです。「-lXX」または「-langXX」。XXは言語コードです。
この方法はあまり用途が広いわけではありませんが、リソース文字列とLCLコンポーネントのプロパティを変換します。

于 2012-02-17T10:30:36.230 に答える