ストリームが問題を引き起こす可能性がある主な理由は、国際化です。
いくつかの異なる言語で動的コンテンツを含むテキストを生成する必要がある場合、各言語には独自の文法規則があるため、問題が発生します。たとえば、英語では次のように使用します。
void print(std::ostream& out, int i) {
out << "You retrieved ";
switch(i) {
case 0: out << "no file."; return;
case 1: out << "1 file."; return;
default: out << i << " files." return;
}
そして、それは素晴らしいですよね?
したがって、フランス語に翻訳するときは、これら 4 つの文の部分すべてを表に移動して、キーで検索するだけでうまくいきます。
次に、ドキュメントからPolishを発見します。ファイルgettext
の複数形( plik ) は次のとおりです。
1 => プリク
2,3,4 => プリキ
5-21 => プリコウ
22-24 => プリキ
25-31 => pliko'w
うーん…急に難しくなってきましたよね?
実際には、悪化する可能性があります。すべての言語が動的エントリを同じ順序で配置する必要はありません!
これが、表示するテキストごとにオーバーロード可能な C++ 関数を記述し、翻訳者にオーバーロードを提供させる以外に、国際化されたテキストにストリームを実際に使用できない理由です! ハム...
どちらにも長所と短所があります。Google スタイル ガイドは、可能な限り一貫性を確保するために非常にこだわりがあります。