PO/Gettext翻訳
ソース言語: en-US (English, United States)
ソース言語のコード。例:fr、fr-FR、fil、zh-Hans-CN。入力して検索してください。
ターゲット言語: zh-Hans-CN (Chinese, Simplified Chinese, China)
ターゲット言語のコード。例:en、en-US、fil、zh-Hans-CN。入力して検索してください。
メタデータを翻訳:
用語集を生成して保存:
AIがコンテンツを処理するため、AI翻訳には時間がかかります(最大5分)。このPO翻訳ページはリアルタイムで翻訳を行い、サーバーにコンテンツを保存することはありません。大容量のPOファイルについては、i18nファイル翻訳ページの使用をお勧めします。翻訳が完了するまでこのページから離れないでください。

PO/Gettextファイルをオンラインで翻訳する方法

AI対応ローカリゼーションサービスを使用してPO(Portable Object)ファイルを翻訳するのは高速で正確です。以下の手順に従って、POフォーマットの構造を保持しながらgettextローカリゼーションコンテンツを翻訳してください。

  1. POコンテンツを貼り付け:「ソースPOコンテンツ」セクションに、POまたはPOTファイルのコンテンツを貼り付けてください。当社のサービスは、msgid、msgstr、コメント、複数形の形式、コンテキストエントリを含む標準的なPOフォーマットを認識します。
  2. ターゲット言語を設定:翻訳先の言語コード(例:フランス語なら「fr-FR」、ドイツ語なら「de-DE」)を入力してください。
  3. 翻訳を開始:「翻訳」ボタンをクリックして開始します。当社のAIがPO構造を処理し、msgidエントリ、コメント、フォーマットプレースホルダーを保持しながらmsgstr値を翻訳します。
  4. コピーまたは保存:翻訳が完了したら、翻訳されたPOコンテンツをクリップボードにコピーするか、プロジェクトで使用できる.poファイルとして保存してください。

POファイルとPOTファイルとは?

PO(Portable Object)ファイルは、GNU gettext国際化システムによって作成された広く使用されているローカリゼーションフォーマットです。これらは、msgid(元のテキスト)とmsgstr(翻訳されたテキスト)エントリを使用して、翻訳可能な文字列をキーと値のペアとして保存します。

POファイルは、WordPress、PHPアプリケーション、Python(Django、Flask)、Ruby on Rails、C/C++プログラム、GTKやGNOMEで構築されたデスクトップアプリケーションなど、多くのオープンソースプロジェクトやフレームワークの標準的なローカリゼーションフォーマットです。

POファイルフォーマットの構造

POファイルは、以下の主要要素を持つエントリで構成されています:

# Translation file for MyApp
#: src/components/header.js:12
msgid "Welcome to our application"
msgstr ""

#: src/components/login.js:8
msgid "Sign in to your account"
msgstr ""

#: src/components/dashboard.js:15
msgid "You have %d new messages"
msgid_plural "You have %d new messages"
msgstr[0] ""
msgstr[1] ""
  • msgid — 元の未翻訳文字列(ソース言語)。これは翻訳を検索するためのキーとして機能します。
  • msgstr — ターゲット言語の翻訳済み文字列。空のmsgstr値は未翻訳の文字列を示します。
  • コメント(# — 翻訳者にコンテキストを提供します。#:はソースファイルの参照を示し、#.には抽出されたコメントが含まれ、#,にはfuzzyのようなフラグが保持されます。
  • 複数形の形式(msgid_plural, msgstr[N] — 言語固有の複数形のルールを処理します。言語によって複数形の形式の数は異なります(例:英語は2つ、ポーランド語は3つ、アラビア語は6つ)。
  • コンテキスト(msgctxt — コンテキストによって異なる翻訳が必要な同一のソース文字列を区別します(例:「Open」という単語を動詞として使うか形容詞として使うか)。

POファイルとPOTファイルの比較

POT(Portable Object Template)ファイルは、POファイルを作成するために使用されるテンプレートです。これには、空のmsgstr値を持つすべてのソース文字列が含まれています。新しい翻訳を開始するときは、POTファイルをコピーし、ターゲット言語用に名前を変更して(例:fr.po)、翻訳を入力します。

当社のサービスはPOとPOTの両方のコンテンツを受け付けます。どちらのフォーマットでも貼り付けるだけで、AIがすべてのmsgstrエントリの翻訳を生成します。

POTファイルの例

ヘッダーと翻訳可能な文字列を含む典型的なPOTテンプレートファイルは以下の通りです:

# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-01-01 00:00+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"

#: src/app.py:42
msgid "Hello, World!"
msgstr ""

PO/Gettext翻訳のためのAI用語集生成

当社のAI用語集生成機能は、すべてのPOローカリゼーションファイル間で一貫した用語を維持するのに役立ちます。翻訳オプションで用語集を生成を切り替えて有効にしてください:

  • 一貫した用語 — AIがソースPOコンテンツと既存のターゲット翻訳を分析して主要用語の用語集を構築し、製品名、UIラベル、技術用語がプロジェクト全体で同じように翻訳されるようにします。
  • ドメイン固有語彙 — ターゲット文字列フィールドに、すでに翻訳されたPOコンテンツのサンプルを提供してください。AIが既存の<target>要素から好みの用語を学習し、新しいmsgstrエントリに自動的に適用します。
  • 使用方法 — 用語集生成が有効な場合に表示されるオプションのターゲット文字列フィールドに、翻訳済みのPOコンテンツを貼り付けてください。AIが繰り返し現れる用語ペアを抽出し、翻訳ガイドとして使用します。ターゲットコンテンツが提供されない場合、AIはソース文字列のみから用語集を生成します。

PO翻訳サービスが選ばれる理由

  • AI対応ローカリゼーション:当社の高度なAIはPOファイルの構造を理解し、gettextフォーマットのプレースホルダー(%s%d%(name)sなど)を処理し、ターゲット言語の文化的ニュアンスに合わせて翻訳を適応させます。
  • 完全なgettextフォーマットサポート:当社のサービスは、ヘッダー、コメント、コンテキストエントリ(msgctxt)、複数形の形式、フォーマットフラグを含むすべてのPOフォーマット機能を処理します。翻訳中もPO構造は完全に保持されます。
  • 複数形の形式の処理:ターゲット言語のルールに基づいて、複数形の形式の翻訳を正しく生成します。ターゲット言語の複数形の形式が2つ、3つ、または6つであっても、当社のAIが適切なmsgstr[N]エントリを生成します。
  • ロケール固有の調整:翻訳された文字列内の数値、日付、その他のロケールに依存するコンテンツを、ターゲット言語の慣習に合わせて自動的に調整します。
  • エラー処理:AI翻訳のエラーを検出し修正することで、一貫して高品質なPOファイルの出力を保証します。
  • 費用対効果:毎月30,000無料文字数で、手頃な価格設定をご利用いただけます。料金を見る
  • 大規模なPOファイル向けに最適化:大きなPOファイルを管理可能なチャンクに分割して効率的に処理し、すべてのエントリにわたって定義済みの用語とコンテキストを使用して翻訳の一貫性を確保します。

POファイル翻訳の一般的な使用例

POファイルは、幅広いプラットフォームやフレームワークの標準的なローカリゼーションフォーマットです:

  • WordPress:WordPressのテーマやプラグインは、国際化にPO/POTファイルを使用します。gettextシステムは、WordPressコンテンツを200以上の言語で翻訳可能にするための標準的な方法です。
  • PHPアプリケーション:PHPのgettext拡張機能はPOファイルをネイティブで使用します。Laravel、Symfony、CakePHPなどのフレームワークは、多言語アプリケーションのためにPOベースのローカリゼーションをサポートしています。
  • Python(Django、Flask):Djangoは、標準のローカリゼーションメカニズムとしてgettextとPOファイルを使用します。makemessagesコマンドは翻訳可能な文字列をPOTファイルに抽出し、compilemessagesはPOファイルをバイナリMOファイルにコンパイルします。
  • Ruby on Rails:RailsはデフォルトでYAMLを使用しますが、多くのRubyプロジェクトでは、特に既存のgettextベースの翻訳ワークフローと統合する場合に、POファイルとともにgettext gemを使用します。
  • C/C++プログラム:GNU gettextはもともとCプログラム用に設計されました。多くのシステムユーティリティ、コマンドラインツール、デスクトップアプリケーションが、ユーザーインターフェースの翻訳にPOファイルを使用しています。
  • JavaScript/TypeScript(Lingui):Linguiは、React、Next.js、およびその他のJavaScriptフレームワーク向けのモダンなi18nライブラリであり、PO/POTファイルを主要な翻訳フォーマットとして使用します。@lingui/cliツールは翻訳可能な文字列をPOカタログに抽出し、Linguiのランタイムはビルド時にコンパイルされた翻訳を読み込んで最適なパフォーマンスを実現します。
  • デスクトップアプリケーション(GTK/GNOME/KDE):Linuxデスクトップ環境やGTK/QtアプリケーションはPOファイルに依存しています。GNOMEやKDEプロジェクトは、数十の言語にわたって数千ものPOファイルを管理しています。

PO翻訳と他のローカリゼーションフォーマットの比較

POファイルは、オープンソースコミュニティで30年以上の歴史を持つ、最も確立されたローカリゼーションフォーマットの1つです。JSONやYAMLベースのフォーマットとは異なり、POファイルには複数形の形式、翻訳者のコメント、ソース参照、コンテキストの曖昧さ回避のサポートが組み込まれています。

モダンなフレームワークではJSON(i18next、React Intl)やYAML(Rails)がよく使われますが、POはWordPressプラグイン、PHPアプリケーション、Python Djangoプロジェクト、Linuxデスクトップソフトウェアにとって依然として好まれるフォーマットです。当社のサービスは両方の世界をつなぎます。ここでPOコンテンツを翻訳するか、i18nファイル翻訳ページを使用してあらゆるフォーマットのバッチ処理を行ってください。

当社のAI翻訳は、ヘッダー(Project-Id-Version、Content-Type、Plural-Forms)、翻訳者のコメント、ソースファイルの参照、フォーマットフラグを含む完全なPOファイル構造を保持し、翻訳されたPOファイルがmsgfmtのようなgettextツールですぐに使用できる状態であることを保証します。