PHPをcontent management system拡張可能にするためには、が重要です。私は翻訳システムのプログラミング手法を研究していましたが、Qt Linguistが良い例だと思いました。不規則な規則で言語に翻訳する
これは、Qtのドキュメントからの使用例である:
int n = messages.count();
showMessage(tr("%n message(s) saved", "", n));
Qtは「message
」が英語に添付「s
」を有しているかどうかを決定するために、既知の言語規則を使用します。私は私の開発チームとその例を育て
tr()
機能のオフモデリングの拡張効果を危うくするという問題を発見しました。
これはまったく間違っている点を除いて同様の例です。
int n = deadBacteria.count();
showMessage(tr("%n bacterium(s) killed", "", n));
"" 複数 "はbacteria
" です。 「s
」を追加するのは不適切です。
私はQt言語学者に多大な経験はありませんが、どのように不規則な結合や形を扱うのか分かりません。
さらに複雑なフレーズは"%n cactus(s) have grown."
です。 1つのサボテンがある場合は、複数は「cactii
」、「have
」は「has
」にコンジュゲートする必要があります。
これらの不規則な単語がプログラミングで使用されないため、論理的な修正は避けることだと考えるかもしれません。まあ、これは2つの方法で有用ではありません。
- はおそらく、元の文字列が
"%n message(s) saved"
のように、英語で動作していても、不規則な形で名詞を変更した言語があります。 MyImaginaryLanguageでは、変換された文字列を形成する適切な方法は、「M2essageはを保存」「1Messageはを保存」することができ、それぞれ%n
値1
、2
、および3
、のために「Me3ssageはを保存」し、それはしていませんQt言語学者がこれを処理するルールを持っているように見えます。 - 私が必要とするようにCMSを拡張可能にするには、すべてのタイプのWebアプリケーションを考慮する必要があります。サッカーが成長したような文章を要求するrole-playing gameを作成する人もいます。セキュリティソフトは、「ClamAVのは2ウイルスを発見した。」、言いたいとは対照的に「のClamAVは2つのウイルス(複数可)を見つけました。」に
を他のQtの開発者はこれに対する解決策を持っているかどうかを確認するためにオンラインで検索した後問題が見つかりません、私はスタックオーバーフローに来た。
- 何拡張性と効果的なプログラミング技術は、可能な不規則なルールに文字列を変換するために使用する必要があります。
は、私が知りたいですか?
- この不規則性の問題が発生した場合、Qtプログラマと翻訳者は何をしますか?
私はQtのについては何も知らないが、おそらくあなたは、単数/デュアル/複数のエンディングを解析し、拡張子をコーディングするだろうか? 「バクテリア(a/um)」、「(1Message/M2essage/Me3ssage)」は、より多くの作業を必要とし、動的ではない例です。 – Cyclone