ソフトウェアのUI文字列やメールテンプレートの翻訳
アプリのUI文字列やメールテンプレートは通常のドキュメントではなく、キー付き文字列のテーブルです。Transeptはこれらをテーブル構造のままインポートします。各行のキー、コンテキスト、文字数制限は保持され、エクスポート時にはアップロードしたファイルに翻訳が書き戻されます。
目次
インポートに対応している文字列ファイル形式は?
通常のドキュメントと同様に、ドロップゾーンまたはアップロードダイアログにファイルをドロップします。各文字列はそのIDをキーとする個別のブロックとして取り込まれます。エクスポート時にはこのキーをもとに、各翻訳が元の位置へと書き戻されます。
| フォーマット | 主な用途・生成元 | Transeptが読み取る内容 |
|---|---|---|
CSV(.csv) | メール配信プラットフォーム(Braze、Klaviyo)、スプレッドシート、TMSからのエクスポート | キー列、原文列、言語ごとの列、および任意のコンテキスト列と文字数制限列 |
gettext PO(.po) | ソフトウェアのローカライズ(Webフレームワーク、デスクトップアプリ) | msgid/msgctxt(キー)、翻訳者コメント(コンテキスト)、複数形、ファイルの言語ヘッダー |
XLIFF 1.2(.xlf、.xliff) | CATツール、TMSプラットフォーム | 各trans-unitのキー(resname)とnote、ファイルの言語ペア |
Transept Strings(.tstrings.json) | パイプラインやAPI向けのTransept独自のキー付き形式 | 上記すべてに加え、グループとICU複数形 |
- CSV列はヘッダー名で識別されます。キーには
key、id、またはKlaviyoのblock_id、原文にはsourceやdefault(あるいは先頭の言語列)、翻訳先には言語コードや言語名、追加情報にはcontext、location、character limitが認識されます。 - 地域指定のある言語列もそのまま認識されます。
es-MX、en-GB、fr-CA、pt_BRなどはすべて正しい言語にマッピングされます。言語コードのように見えてもTranseptが認識できない列がある場合は、無視してスキップされるのではなくインポート時に通知されるため、入力ミスによって言語が見落とされる心配はありません。 - コンテキスト列や文字数制限列は単なる飾りではありません。コンテキストは翻訳者向けガイダンスとしてAIに渡され、文字数制限は自動の短縮・再試行によって遵守されます。
ファイル内にすでにある訳文はどうなりますか?
未加工の素材としてではなく、完了済みの作業成果として取り込まれます。CSVの入力済み言語セル、POファイルの空でないmsgstr、XLIFFの入力済みtargetは、その文字列の現在の訳文として直接反映されます。再翻訳は行われず、クレジットも請求されません。インポートされたすべての対訳ペアは翻訳メモリに追加されるため、すぐに新しい翻訳作業へと活用されます。
意図的な例外が1つあります。fuzzyのフラグが付いたPOエントリは、gettextの仕様上「下書き」とみなされるため、Transeptは機械による推測をレビュー済みの訳文へ昇格させることはせず、未翻訳としてインポートします。翻訳してエクスポートすると、入力されたmsgstrとともにfuzzyフラグは解除されます。
{{promo_code}}などのプレースホルダーはどのように翻訳から保護されますか?
テンプレートのトークン({{first_name}}や{% if %}などのLiquidタグ、%sや%(count)dなどのprintf変換指定子)は、AIがテキストを見る前にマスクされます。モデルには翻訳も順序変更も勝手な削除もできない不透明なマーカーとして渡されます。AIの出力ごとに、Transeptはマーカーを原文と照合し、マーカーが欠落した回答は修復または却下します。トークン自体の文字列は、元の状態のまま復元されます。
同じ保護機能は、Liquid形式のトークンや*|FNAME|*のようなMailchimpマージタグを含む、アップロードされたHTML、テキスト、Markdownファイルにも適用されます。ご利用のプラットフォームから貼り付けたメールテンプレートも、すべてのプレースホルダーがそのまま維持されて自動で翻訳されます。意図的な例外として、タグの「内側」にあるフォールバックテキストがあります。{{ first_name | default:"friend" }}のfriendは名が登録されていない受信者全員が読む文面であるため、周りのタグは翻訳せず、この語だけを翻訳します。
ローカライズ全体をタグや条件分岐で管理しているテンプレート(Brazeの翻訳タグやMailchimpの言語ブロックなど)には、専用のインポート手段が用意されています。詳細については、BrazeやMailchimpのメールテンプレートをご覧ください。
文字列ドキュメントをレビューするには?
文字列ドキュメントを開くと、エディターのヘッダーに文字列ボタンが表示されます。このボタンを押すとグリッドが開きます。グリッド内には文字列ごとに1行ずつ、キー、原文、訳文が並んで表示され、キーやテキストでフィルターをかけたり、インラインで編集したりできます(セルを選択して入力し、Enterキーを押します)。AIリライト、コメント、変更履歴などの高度な機能が必要な場合は、各行の矢印を押すと、フルエディターの該当ブロックへ直接ジャンプできます。
ファイルで指定された文字数制限は、各訳文セルの下にリアルタイムカウンターとして表示されます。エクスポート時にエラーとなるのではなく、入力中に文字数超過を確認できます。
翻訳済みファイルをエクスポートするには?
文字列ドキュメントのエクスポートメニューには、通常の形式に加えて2つの項目が表示されます。
- 元のファイル(翻訳済み):アップロードされたCSV、PO、XLIFFの該当セルやエントリに訳文を書き戻したファイルです。列の並び順、コメント、書式設定、引用符の細かな仕様に至るまで、アップロード時とバイト単位で一致した状態が保たれるため、元のシステムへとそのまま読み込めます。
- 文字列ファイル(キー付き):文字列IDをキーとして全言語の訳文を1つのファイルにまとめた、Transeptの
.tstrings.json形式です。キーをもとに再インポートするパイプラインやスクリプトに適した形式です。 - 「翻訳データ」配下にあるTMX、XLIFF、CSVの項目でも、文字列ドキュメントの場合は各行が文字列IDをキーとして管理されるため、CATツールに書き出して読み戻しても文字列の対応関係が崩れません。
1つのファイルから複数の言語へ一度に翻訳できますか?
BrazeなどのESPからエクスポートした翻訳CSVを直接インポートできますか?
はい、できます。キーの列と各言語の列で構成されたESPの翻訳エクスポートファイルは、まさにTranseptが対応しているCSV形式です。各列はヘッダーに基づいてマッピングされ、既存の訳文は完了済みの作業成果として取り込まれます。また、エクスポート時には同じファイルに訳文が書き出されるため、元のプラットフォームへそのまま再アップロードできます。
POファイル内のfuzzyエントリはどうなりますか?
未翻訳としてインポートされます。gettextは「この訳文は推測によるものであり、本番環境で使用してはならない」という意味でエントリにfuzzyフラグを付けます。Transeptはその仕様を尊重し、推測をレビュー済みの訳文へ昇格させることはしません。Transeptでエントリを翻訳してエクスポートすると、新しいmsgstrが書き込まれ、fuzzyフラグは解除されます。
XLIFFの原文内にフォーマットタグが含まれている場合、インポートできますか?
現時点では対応していません。原文にインラインのマークアップタグが含まれるtrans-unitは、タグが文字化けした状態でインポートされるのを防ぐため、インポート時にユニット名とともに一覧でエラーとして除外されます。UI文字列で一般的なプレーンテキストのtrans-unitは問題なくインポートできます。
翻訳メモリ全体をエクスポートできますか?
はい、できます。エディターのサイドバーにある「メモリ」パネルのインポートの隣にエクスポートボタンがあり、アカウントでアクセスできるすべてのデータを、あらゆるCATツールで読み込めるTMXファイルとしてダウンロードできます。インポートしたデータや蓄積したデータは、いつでも自由に取り出せます。
文字列ファイルのインポートにクレジットは消費されますか?
いいえ、消費されません。インポートは無料であり、ファイル内にすでにある訳文も無料で反映されます。クレジットが消費されるのは、TranseptのAIが文字列を翻訳またはチェックするときだけです。
解決しない場合は、アプリ内のLiteressに質問するか、[email protected]までご連絡ください。