概要:翻訳されたコンテンツにリストされている部分文字列をバッククォートでラップする効率的な方法は何ですか?
動機:翻訳されたテキストのマークダウン マークアップを元のテキストと同期させています。Scott Chacon による ProGit の書籍のチェコ語への優れた翻訳があります。残念ながら、オリジナルとはまったく異なるツールチェーンを使用してタイプセットされたため、オリジナルのマークアップが失われました。これまでのところ、コンテンツの大部分をマークダウンに戻し、ドキュメント構造をオリジナルと同期させることに成功しました。code
次のステップは、翻訳でのバッククォートの使用を修正することです。
状況
たとえば、元の次の段落があります。実際、問題がある場合は、改行のない長い行です。
On Windows systems, Git looks for the `.gitconfig` file in the
`$HOME` directory (`C:\Documents and Settings\$USER` for most
people). It also still looks for /etc/gitconfig, although it’s
relative to the MSys root, which is wherever you decide to
install Git on your Windows system when you run the installer.
翻訳された段落もあります:
Ve Windows používá Git soubor .gitconfig, který je umístěný v
domovském adresáři (u většiny uživatelů C:\Documents and
Settings\$USER). Dále se pokusí vyhledat ještě soubor
/etc/gitconfig, který je relativní vůči kořenovému adresáři.
Ten je umístěn tam, kam jste se rozhodli nainstalovat Git po
spuštění instalačního programu.
正規表現を使用して、元のリストから次のリストを抽出します (ここではrepr()
-- したがって二重のバックスラッシュ)。
['.gitconfig', '$HOME', 'C:\\Documents and Settings\\$USER']
翻訳されたコンテンツのリストされた部分文字列をバックティックにラップする効率的な方法は何ですか? 問題は、一部の段落で同じ部分文字列が複数回繰り返される場合があることです。また、他にどのような合併症が発生する可能性があるかはわかりません。(「脳も痛い!」)
補足:この問題にもっと関心がある人は、すべてhttps://github.com/pepr/progitCZで入手できます(コミット 04d1354656276bf1e6ba7305d06c12faca267a19、たった今。警告、コメントはチェコ語です)。問題はutil/cz.py
スクリプトに関連しています。これは 4 番目のパスです - に実装されていpass4.py
ます。現在、リストをセットに変換してから、str.replace()
各部分文字列を呼び出します。
このinfo_aux_cs\pass4backticks.txt
ファイルは、自動化されたプロセスの比較を示しています。はinfo_aux_cs\pass4.txt
「修正された」結果をtxtCorrected\RucneUpravovanyVysledekPass2.txt
示し、 は最後に手動で変更されたフェーズを示します。
もう 1 つの問題は... ドキュメントの構造が既に同期されていることです。一方、パラグラフ(翻訳)の内容は、原文の新しいものについてはまだチェックされていません。
更新 -- 新しい問題が確認されました
自動置換はあいまいな場合があります。のようなケースを観察しました['git clone', 'clone', ...]
。set
が最初に作成されるため、clone
実際には を先にラップできます。こちらです
some text git `clone` other text
の場所に表示されます
some text `git clone` other text
正しい代替品である必要があります。
このアプローチは非常にヒューリスティックであり、実際には非常に正確に行う必要がないことを認識しています。自動的に置換されたテキストは、手動編集のソースになります。このようにして、ソリューションの一部は、人間の目でチェックし、人間の手で修正する必要がある疑わしい違いを視覚化することができます:)
その問題を解決するための最も信頼できる方法を見つける方法について何か考えがありますか? ここに私の頭に浮かんだいくつかのヒューリスティックがあります-つまり、潜在的な問題をいつ視覚化するか:
- 元の部分文字列はすべて翻訳に含まれている必要があります。そうでなければ、翻訳は何らかの形で具体的であるか、最新ではないか、または単に不自由です。翻訳によって部分文字列が変更される可能性がありますが、これを認識し、後でチェックを明示的に抑制する必要があります。
- 部分文字列の順序は、ターゲット言語では保持されない場合があります。とにかく、同じ順序で同じ数の部分文字列があれば、置換が成功したことを示す良い兆候です。
- 最長の部分文字列を最初に置き換える必要がありますか?
- ...しかし、短いサブスティングは次のステップで置き換えられますか?
- 部分文字列から正規表現パターンを構築し、正規表現の貪欲さを使用して、すべてのパターンを一度にバッククォートで置き換えることができますか?
どんな良いアイデアでも大歓迎です ;)
あなたの時間と経験をありがとう、
ペトル