sgcLocalization、Delphi、C++ Builder & Lazarus アプリケーションの翻訳
お客様が使うあらゆる言語でアプリケーションを提供できます。sgcLocalization はフォーム、フレーム、データモジュールのテキストを検出し、手作業、プロの翻訳者、AI のいずれでも翻訳できる 1 つのエディターを提供します。すべての翻訳を検査し、1 行のコードでアプリケーション全体を実行時に切り替えます。
お客様が使うあらゆる言語でアプリケーションを提供できます。sgcLocalization はフォーム、フレーム、データモジュールのテキストを検出し、手作業、プロの翻訳者、AI のいずれでも翻訳できる 1 つのエディターを提供します。すべての翻訳を検査し、1 行のコードでアプリケーション全体を実行時に切り替えます。
sgcSetLanguage('de') で、再起動なしにアプリケーション全体が切り替わります。sgcLocalization は、テキストの収集、翻訳、検査、実行時の言語切り替え、アプリケーションが変わったときの翻訳の更新まで、作業全体をカバーします。
アプリケーションのテキストを 1 つのプロジェクトにまとめ、1 つのエディターで翻訳します。
収集と翻訳
sgcLocalization は RTTI を通じてフォーム、フレーム、データモジュールを読み取り、見つかったすべてのテキストプロパティ(キャプション、ヒント、列の見出し、リスト項目など)を一覧にします。翻訳してはいけないプロパティは無視ルールで除外でき、一般的な非テキストプロパティは組み込みの既定値ですでにカバーされています。コードの中で作られるテキストは、スニペットとして明示的に追加します。同じ単語に 2 つの訳が必要な場合はコンテキストを付け、テキストが数に左右される場合は複数形のバリアントを付けます。
sgcT を使い、コンテキストと複数形のバリアントに対応
収集と翻訳
言語を XLIFF 1.2 ファイルにエクスポートして翻訳者に送り、戻ってきたファイルをインポートします。何も無条件には書き込まれません。インポートではレビューが開き、行ごとに古いテキスト、新しいテキスト、変更の種類が表示されます。書式指定子がソースと合わなくなった行など、問題のある行には印が付き、適用する行はお客様が選びます。
収集と翻訳
新規および変更されたテキストを、選択した言語に AI サービスで翻訳できます。独自の用語集と、トーンや用語に関する指示も指定できます。AI の翻訳はまず提案として現在のテキストの横に表示され、お客様が 1 件ずつ承認または却下します。エディターは sgcUI の AI プロバイダーを通じて AI と通信します。sgcWebSockets をインストールすると ChatGPT、Claude、Gemini、Ollama などを利用でき、インストールしない場合は、イベントを使って自分のコードから任意のサービスを呼び出せます。
すべてのテキストの検査と、前回のリリース以降に何が変わったかが一目で分かる表示です。
翻訳の正確さを保つ
%d やアクセラレータキーが抜けた翻訳は、その言語のユーザーだけでアプリケーションを壊すため、見落としやすい問題です。sgcLocalization は、書式指定子、プレースホルダー、アクセラレータキー、改行、先頭と末尾の空白、空の翻訳、複数形を検査します。同じ検査が、手作業、インポート、AI のすべての翻訳に適用されます。複数形のテキストは各言語の CLDR ルールに従うため、エディターはその言語に必要な形だけを求めます。
すべての項目に、新規、変更済み、提案、翻訳済み、レビュー済み、廃止のいずれかの状態があります。リリース時にバージョンをマークすると、「次のバージョン以降に新規または変更」フィルターで、その後に追加または編集された項目が分かるため、新しいテキストを見落としません。アプリケーションから削除されたテキストは保持され、候補として再利用されます。
sgcSetLanguage('de') を呼び出すか、すぐに使える言語コンボをフォームに置きます。アプリケーション全体が一度に切り替わり、あとから作成されるフォームも自動的に翻訳されます。右から左へ書く言語では、レイアウトの方向も切り替わります。
翻訳は 1 つの .sgcloc プロジェクトファイルに保存されます。JSON 形式なので、バージョン管理と相性が良く、プロジェクトをフォームファイルに埋め込むこともできます。
翻訳エディター自体が 12 言語で利用でき、ライトとダークのテーマに対応しています。デザイン時も単体ツールとしても同じエディターなので、翻訳者は IDE を必要としません。
フォームはコードなしで翻訳されます。書くのは、言語を切り替える 1 行と、コードで作られるテキストを囲む部分だけです。
uses
sgcLocalization_Engine;
procedure TfrmMain.ShowSelection(aCount: Integer);
begin
// アプリケーション全体をドイツ語に切り替える
sgcSetLanguage('de');
// コードで作られるテキスト
ShowMessage(sgcT('The order has been saved.'));
// 独自の翻訳が必要な同じ単語には、コンテキストを付ける
lblState.Caption := sgcTC('order status', 'Open');
// 複数形: 現在の言語で aCount に合う形
lblCount.Caption := Format(sgcTN('%d order selected',
'%d orders selected', aCount), [aCount]);
end;sgcLocalization は単独では販売されず、独自の価格もありません。sgcUI のすべてのエディションと、単体パッケージとして購入するすべての sgcUI 製品に、追加費用なしで含まれます。
VCL アプリケーション用のローカライザーコンポーネントです。有効な言語をフォームに適用します。
プロジェクトの言語を一覧表示し、ユーザーが選ぶとアプリケーションを切り替える、VCL 用のすぐに使えるコンボです。
FireMonkey アプリケーション用の同じローカライザーです。
FireMonkey 用の言語コンボです。
IDE からデザイン時に開けるほか、単体ツールとしても動作し、12 言語とライト、ダークのテーマに対応しています。
コードで作られるテキスト用の関数です。通常のテキスト、コンテキスト付きのテキスト、複数形に対応します。
| ターゲット | フレームワーク | プラットフォーム |
|---|---|---|
| Delphi 7 から 13 | VCL | Windows |
| Delphi | FireMonkey | FireMonkey が動作する Windows、macOS、iOS、Android、Linux |
| C++ Builder | VCL と FireMonkey | 各フレームワークのプラットフォーム |
| Lazarus | LCL | Windows と Linux |
追加費用はありません。sgcLocalization は、sgcUI のすべてのエディションと、単体パッケージとして購入するすべての sgcUI 製品に含まれます。単独では販売されません。
いいえ。フォーム、フレーム、データモジュールのテキストプロパティは RTTI で検出されるため、フォームはそのままで構いません。変更が必要なのは、コードで作られるテキストだけです。sgcT で囲み、スニペットとしてプロジェクトに追加してください。
はい。sgcSetLanguage は 1 行でアプリケーション全体を切り替え、言語コンボはコードなしで同じことを行います。あとから作成されるフォームも自動的に翻訳され、右から左へ書く言語ではレイアウトの方向が切り替わります。
エディターは sgcUI の AI プロバイダーを使います。sgcWebSockets をインストールすると、ChatGPT、Claude、Gemini、Ollama などに接続します。sgcWebSockets がない場合は、イベントがリクエストを渡すので、自分のコードから任意のサービスを呼び出せます。どちらの場合も、翻訳は提案として届き、承認または却下できます。
再スキャンすると、追加されたテキストは新規、編集されたテキストは変更済みとしてマークされ、既存の翻訳はそのまま残ります。「次のバージョン以降に新規または変更」フィルターには、バージョンのマーク以降に触れられた項目が一覧表示されます。削除されたテキストは廃止となり、プロジェクトに保持され、候補として再利用されます。
JSON 形式の 1 つの .sgcloc プロジェクトファイルに保存されます。バージョン管理と相性が良く、フォームファイルに埋め込むこともできます。
Delphi 7 から 13、C++ Builder、Lazarus に対応し、VCL、FireMonkey、LCL を、各フレームワークが動作する Windows、macOS、iOS、Android、Linux で使えます。
sgcLocalization は sgcUI のヘルプで解説しています。Delphi と C++ Builder があります。
Delphi と C++ Builder。いずれも sgcUI のすべての製品を対象としています。