2

私は多国籍プロジェクトに取り組んでおり、ログの対象読者は 2 つの国籍からなる可能性があります。したがって、複数の言語でログインすることが重要になってきています。何かをログに記録するたびに、言語に基づいて 2 つの異なるログ フォルダーに書き込むことを考えていますが、すぐに使用できる機能がいくつかあるのではないかと考えています。 log4cpp のようなロギング フレームワークとは?

4

4 に答える 4

2

他のコメント投稿者が述べているように、多言語のロギングを行うことを検討しているため、間違った方向に進んでいるようです。

私の推奨事項は、英語(技術情報の標準であり、あなたが最もよく知っている言語だと思います)を使用し、使用する言語が明確で、文法的に正しく明確であることを確認することです。その後、技術者の1人がそれを理解できない場合、Google翻訳などの機械翻訳エンジンを介して非常に簡単かつ効率的に実行できます。または、実際には、ログを処理し、Google翻訳を介してすべてを実行して、翻訳されたテキストを追加することができます。特に、言語コンテンツをマークするためにログに注釈を付ける場合はそうです。

入力言語が適切に記述されていると仮定すると、通常、機械変換はエンドユーザーが理解できる良い結果をもたらします。メッセージが明確でない場合、タイプミスや略語がある場合は、機械翻訳が見事に失敗する場所です。

于 2012-04-03T15:40:22.450 に答える
0

1つの提案は、ログメッセージをリッスンする別のプロセス/スレッドを使用して、そこからログに記録できることです..

これにより、メイン プロセス/スレッドでの I/O ロギング時間が短縮され、そこでロギング言語に関連するすべての変更を行うことができます。

多言語サポートについては、ワイド文字列で書いてみるといいと思います..よくわかりませんが..

于 2012-04-03T07:22:59.780 に答える
0

C++ を使用してローカリゼーションをログに記録するための最良のアプローチ

Qt 4をインストールし、文字列に QObject::tr/ tr() マクロを使用します。任意の言語で文字列を記述します。QT Linguist を使用して文字列をローカライズする翻訳者を雇うか、または獲得してください。

完璧な翻訳は不可能なので、たとえ翻訳者が天才であっても、「面白い」誤解がたくさんあることに注意してください。そのため、プログラミング チームのメイン言語を選択することをお勧めします。

- 編集 -

以前はこの部分に気づきませんでした:

複数の言語で

これにアプローチする 1 つの方法は、ログ リーダーを実装することです。プレーンテキスト メッセージを書き込む代わりに、メッセージ ID (ある種のマクロによって生成される) と文字列引数 (文字列がフォーマットされている場合) をダンプできます。「ログ リーダー」を使用すると、ユーザーはログ ファイルを表示しながら目的の言語を選択し、QTranslator と同様のメカニズムを使用して ID/引数に基づいてメッセージを翻訳できます。このアプローチの良いところは、後で言語を追加できることです。したがって、古いログを再翻訳することが可能になります。悪い点は、この形式は「普通の人」にとって読みにくいということです。ただし、メッセージ ID と引数に加えてプレーンテキスト メッセージを追加でき、ログ ビューアーを作成する必要があります。

Qt 4 には、このフレームワークのほとんどが実装されています (バリアントをテキスト/データ ストリームにダンプするためのルーチンなどがあります) と、翻訳ツールがあります。詳細については、 QTranslator のドキュメントと言語学者のマニュアルを参照してください。

于 2012-04-03T09:02:49.940 に答える
0

ログを書き込むと、ファイルのオープン、シーク、書き込み操作が含まれるため、当然実行速度が低下します。

これが、多くの開発者やアーキテクトがさまざまなレベルでログを書き込むことを提案する主な理由の 1 つです。問題をより適切に追跡するために、レベルが上がるにつれてログ エントリの深さを増やします。より高いレベルでは、より多くのログ エントリが生成されるため、プロセス速度が低下することに気付くでしょう。

むしろ、ある言語から別の言語に翻訳できるサービスを使用することをお勧めします。この翻訳を行う無料または有料のライブラリがあると確信しています。バックグラウンドで実行され、プロセスのアイドル時間中にこの変換を行う小さなユーティリティ プログラムを作成できます。

于 2012-04-03T05:27:11.007 に答える