2

翻訳を含むプラグ可能な Django アプリを維持しています。Python および HTML コードのすべての文字列は英語で記述されています。文字列をドイツ語に翻訳するとき、私は常に、ドイツ語が正式なスピーチと非公式のスピーチを区別しているという問題と戦っています ( T–V の区別を参照)。このアプリは、ソーシャル ネットワークから銀行の Web サイトまで、さまざまなサイトで使用されているため、公式バージョンと非公式バージョンのどちらかだけをサポートすることはできません。また、翻訳はかなり異なる可能性があるため、パラメーター化する方法はありません。たとえば、「ログアウトしますか?」という文。次の 2 つの翻訳があります。

  • Wollen Sie sich abmelden? (丁寧)
  • Willst du dich abmelden? (非公式)

これで私を助けることができる Gettext に何かありますか?

4

2 に答える 2

1

UNIX だけでなく gettext によって他の同様の状況で使用される最善の方法は、ロケール バリアントを使用することです。たとえばsr_RS、キリル文字で書かれたセルビア語に使用されるコードは is (または、最近ではセルビア語がメタ言語と見なされているため...) です。しかし、ラテン文字で書かれていることもあるのでsr_RS@latin、言語名や、もちろん MO のファイル名やディレクトリとしても使用されます。

ここで、私のシステムにあるいくつかの翻訳を見てください。

$ find /usr/local/share/locale | grep /sr
/usr/local/share/locale/sr
/usr/local/share/locale/sr/LC_MESSAGES
/usr/local/share/locale/sr/LC_MESSAGES/bash.mo
/usr/local/share/locale/sr/LC_MESSAGES/bfd.mo
/usr/local/share/locale/sr/LC_MESSAGES/binutils.mo
/usr/local/share/locale/sr/LC_MESSAGES/gettext-runtime.mo
/usr/local/share/locale/sr/LC_MESSAGES/gettext-tools.mo
/usr/local/share/locale/sr/LC_MESSAGES/glib20.mo
/usr/local/share/locale/sr/LC_MESSAGES/wget.mo
/usr/local/share/locale/sr@ije
/usr/local/share/locale/sr@ije/LC_MESSAGES
/usr/local/share/locale/sr@ije/LC_MESSAGES/glib20.mo
/usr/local/share/locale/sr@latin
/usr/local/share/locale/sr@latin/LC_MESSAGES
/usr/local/share/locale/sr@latin/LC_MESSAGES/glib20.mo
/usr/local/share/locale/sr_RS
/usr/local/share/locale/sr_RS/LC_MESSAGES
/usr/local/share/locale/sr_RS/LC_MESSAGES/mkvtoolnix.mo
/usr/local/share/locale/sr_RS@latin
/usr/local/share/locale/sr_RS@latin/LC_MESSAGES
/usr/local/share/locale/sr_RS@latin/LC_MESSAGES/mkvtoolnix.mo
$

したがって、ドイツ語のバリアントを処理する最善の方法は同じです。基本的な非公式のバリアントにde(または) を使用し、翻訳の正式なバリアントをde_DE含む別の翻訳ファイルを用意します。de_DE@formal

これは基本的にWordPressも行うことです。もちろん、WordPress であるため、それらは独自の特別なフレーバーを持ち、バリアント構文を使用しませんが、代わりにファイル名に 3 番目のコンポーネントを追加しde_DE.moますde_DE_formal.mo。正式なバリアント。

于 2016-11-06T09:23:57.387 に答える