7

私はi18n/l10nのタスクを実行しており、大規模なプロジェクトのドキュメントを作成しています。ドキュメントは、i18nの既成の基本サポートを備えたSphinxを使用して作成されます。

私の問題は、この他の質問の問題と似ています。つまり、各ポットファイルの文字列の大きなチャンクが同じであり、翻訳者が同じ翻訳を何度も再入力しないようにしたいと思います。むしろ、単一のテンプレートファイルが必要です

私の問題は、実際にはファイルをマージすることではなく(つまり、ほんの少しmsgcat *.pot > all.pot離れたところにあります)、特定の言語でドキュメントを作成するときにドメインが機能するためには、コピーall.potして元のファイル名に名前を戻す必要があるという事実です。したがって、私の回避策の作業方法は次のとおりです。

  1. 生成fileA.potfileB.pot
  2. 2つをにマージしますall.pot
  3. cp all.pot fileA.pot+cp all.pot fileB.pot

同じことをするためのよりクリーンな方法はありますか?gettext_compactは、私の目標の半分に過ぎません...

4

3 に答える 3

3

7か月以上、徹底的な調査といくつかの回答の試みを経て、少なくとも現在のバージョン1.1.3では、Sphinxドキュメントから単一のファイルを生成することは不可能である.potと言っても過言ではありません。

.pot元の質問で説明されている回避策は、異なるファイルを1つのファイルにマージするときに、重複する文字列を自動的に削除するための最も簡単な方法でもあります。

于 2013-09-18T14:44:51.747 に答える
0

ここには2つの可能性があります。

1つは、ドメインをまったく使用しないようにSphinxをハックすることです。これは、いくつかの理由でやりたくないと思います。

もう1つは、ドメインで分割するため、msggrepの-Mオプションは、必要な処理を実行するように見えます。それ以外の場合でも、-Nオプションを使用してソースファイルでフィルタリングできます。

つまり、明らかな解決策が機能しない場合:

  • fileA.pot、fileB.potを生成します(ここでmsguniqも参照してください)
  • それらをall.potにマージし、それを翻訳者に渡します
  • for x in file*.pot; do msgmerge -o ${x%t} all-translated.po $x; done

TFMによると、msgmergeは、最初の引数(翻訳されたpoファイル)から、2番目の引数(古い翻訳のpoファイル、またはpot file = template with空のmsgstringsのみ)。

于 2013-09-17T20:37:35.467 に答える
0

以下をあなたのに追加してくださいconf.py

gettext_compact = "docs"
于 2021-09-05T03:46:11.467 に答える