Lingo.dev + .po (Gettext)

Lingo.dev CLIはGNU gettext .poファイルを翻訳する際に、msgid参照、メタデータ、gettextに特化したフォーマット規則を保持します。CLIはGNU gettextの仕様に正確に従い、xgettext、msgfmt、Poeditツールと連携し、曖昧さ回避のためのmsgctxtをサポートし、複雑な複数形ルールに対応し、すべての翻訳者とビルド情報を保持します。

クイックセットアップ

gettextポータブルオブジェクトファイル用の設定:

{
  "locale": {
    "source": "en",
    "targets": ["es", "fr", "de"]
  },
  "buckets": {
    "po": {
      "include": ["locale/[locale]/LC_MESSAGES/messages.po"]
    }
  }
}

注意: [locale]は設定内でそのまま残しておくべきプレースホルダーであり、CLI実行時に実際のロケールに置き換えられます。

POファイルの翻訳

npx lingo.dev@latest i18n

msgid参照、翻訳者コメント、gettextメタデータを保持しながら、msgstr翻訳を更新します。

Gettext構造の処理

基本的なメッセージ翻訳

#: src/main.c:42
msgid "Welcome to our application"
msgstr "Bienvenido a nuestra aplicación"

#: src/dialog.c:15
#, c-format
msgid "You have %d new messages"
msgstr "Tienes %d mensajes nuevos"

複数形

#: src/counter.c:28
msgid "One file selected"
msgid_plural "%d files selected"
msgstr[0] "Un archivo seleccionado"
msgstr[1] "%d archivos seleccionados"

コンテキスト処理

#: src/menu.c:12
msgctxt "menu item"
msgid "File"
msgstr "Archivo"

#: src/toolbar.c:8
msgctxt "document type"
msgid "File"
msgstr "Fichero"

メタデータの保持

POヘッダー情報


# MyAppの翻訳ファイル

# Copyright (C) 2024 MyCompany

# このファイルはMyAppパッケージと同じライセンスで配布されています。

#
msgid ""

msgstr ""
"Project-Id-Version: MyApp 1.0\n"
"Report-Msgid-Bugs-To: [email protected]\n"
"POT-Creation-Date: 2024-01-15 10:30+0000\n"
"Language: es\n"
"Content-Type: text/plain; charset=UTF-8\n"

すべてのヘッダーメタデータと翻訳者コメントは正確に保持されます。

コメントタイプ

  • 翻訳者コメント: # これには文脈が必要です
  • 抽出コメント: #. 使用法に関する開発者メモ
  • 参照コメント: #: src/file.c:123
  • フラグコメント: #, c-format, fuzzy

高度な設定

複数ドメイン

"po": {
  "include": [
    "locale/[locale]/LC_MESSAGES/messages.po",
    "locale/[locale]/LC_MESSAGES/errors.po"
  ]
}

メッセージIDのロック

"po": {
  "include": ["locale/[locale]/LC_MESSAGES/messages.po"],
  "lockedKeys": ["version", "copyright"]
}