<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Internationalization]]></title><description><![CDATA[<p>Hallo, ich bin gerde ein bisschen am basteln, da einige Parts meiner Software jetzt &quot;international&quot; werden.<br />
Wie ist für sowas die gängige vorgehensweise? Ich hab hier im Forum schon den Ansatz gesehen einfach alle Umlaute sozusagen aus den jeweiligen Codes selbst zu ersetzen, aber das kanns ja wohl nicht so ganz sein.</p>
<p>jedenfalls war ich sehr erstaunt, das:</p>
<pre><code class="language-cpp">cout.imbue( std::locale( &quot;German&quot; ) );
</code></pre>
<p>keinerlei Effekt hat. Nein es fliegt auch keine Exception und <a href="http://cout.name" rel="nofollow">cout.name</a>() liefert dann auch &quot;German&quot; zurück. Ich benutze derzeit die Konvertierungen von MFC CString (AnsiToOem/OemToAnsi). Sehr unschön, sowas in meinen ansonsten zumindest diesbezüglich &quot;sauberen&quot; Code rumfliegen zu haben :). Eine kleine Konvertierungsfunktion selbst zu schreiben wäre sicher nicht das Problem, aber da giebt es doch sicher eine schönere Variante.</p>
<p>Vielen Dank,</p>
<p>Tobias</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/90323/internationalization</link><generator>RSS for Node</generator><lastBuildDate>Thu, 13 Aug 2026 15:37:52 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/90323.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 28 Oct 2004 10:57:03 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Internationalization on Thu, 28 Oct 2004 10:57:03 GMT]]></title><description><![CDATA[<p>Hallo, ich bin gerde ein bisschen am basteln, da einige Parts meiner Software jetzt &quot;international&quot; werden.<br />
Wie ist für sowas die gängige vorgehensweise? Ich hab hier im Forum schon den Ansatz gesehen einfach alle Umlaute sozusagen aus den jeweiligen Codes selbst zu ersetzen, aber das kanns ja wohl nicht so ganz sein.</p>
<p>jedenfalls war ich sehr erstaunt, das:</p>
<pre><code class="language-cpp">cout.imbue( std::locale( &quot;German&quot; ) );
</code></pre>
<p>keinerlei Effekt hat. Nein es fliegt auch keine Exception und <a href="http://cout.name" rel="nofollow">cout.name</a>() liefert dann auch &quot;German&quot; zurück. Ich benutze derzeit die Konvertierungen von MFC CString (AnsiToOem/OemToAnsi). Sehr unschön, sowas in meinen ansonsten zumindest diesbezüglich &quot;sauberen&quot; Code rumfliegen zu haben :). Eine kleine Konvertierungsfunktion selbst zu schreiben wäre sicher nicht das Problem, aber da giebt es doch sicher eine schönere Variante.</p>
<p>Vielen Dank,</p>
<p>Tobias</p>
]]></description><link>https://www.c-plusplus.net/forum/post/639302</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/639302</guid><dc:creator><![CDATA[TheBigW]]></dc:creator><pubDate>Thu, 28 Oct 2004 10:57:03 GMT</pubDate></item><item><title><![CDATA[Reply to Internationalization on Fri, 11 Mar 2005 09:34:47 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>So nach geraumer Zeit wieder mal zurück zu diesem Theama. Die Auflösung beim letzten mal war, das es so perfekt im Linux mit dem g++ und auch im Windows mit dem Dev-C++(logisch, auch g++) funktioniert.<br />
Ich hab bei weiterm herumprobieren und lesen in der MSDN dann rausgefunden da bei MS irgendwie die Länder - strings andere sind -&gt; statt &quot;de_DE&quot; wird dort &quot;German_germany&quot; verwendet. So trivial das klingt - hat mich trotzdem eine bisschen Zeit gekostet.</p>
<p>Nun zu einem aktuelleren Problem. Nachdem ich jetztbeim Db - konvertieren und verschiedenen anderem Umgang mit medizinischen Daten eine Menge Datumsformate hin und her konvertiert habe hatte ich jetzt die Nase voll davon und hab mal rumgestöbert und festgestelt, das es dafür die schöne Klasses std::time_get giebt, um das Datum je nach lokalen gegebenheiten zu parsen. Gut, boost::date_time wäre auch eine Variante, aber das wäre ja gemogelt :). Jetzt habe ichb folgenden Code Schnipsel:</p>
<pre><code class="language-cpp">typedef std::istreambuf_iterator&lt;char, std::char_traits&lt;char&gt; &gt; Iter;
    static struct tm timeb;  // zero initialized
    std::ios_base::iostate state = std::ios_base::badbit;
    std::istringstream ins (&quot;&quot;);
    Iter begin (ins);
    Iter end;
	//std::locale myLocale( &quot;German_germany&quot; );
	//std::locale  myLocale(setlocale(LC_ALL, &quot;German_germany&quot;));
	std::locale  myLocale(setlocale(LC_TIME, &quot;German_germany&quot;));
	const std::time_get&lt;char, Iter&gt; &amp;tg = std::use_facet&lt;std::time_get&lt;char, Iter&gt; &gt;( myLocale );
	std::cout &lt;&lt; &quot;time_base::dateorder == &quot; &lt;&lt; tg.date_order () &lt;&lt; &quot;.\n&quot;;
    ins.str (&quot;07/04/2005&quot;);
	ins.imbue( myLocale );
    Iter itFound = tg.get_date( begin, end, ins, state, &amp;timeb );
	std::cout &lt;&lt; &quot;Date: &quot; &lt;&lt; ins.str() &lt;&lt; &quot;\n&quot; &lt;&lt; timeb &lt;&lt; std::endl;
	ins.str (&quot;Montag&quot;);
    tg.get_weekday( begin, end, ins, state, &amp;timeb );
    std::cout &lt;&lt; &quot;Weekday: &quot; &lt;&lt; ins.str() &lt;&lt; &quot;\n&quot; &lt;&lt; timeb &lt;&lt; std::endl;
    ins.str (&quot;06:47:32&quot;);
    tg.get_time (begin, end, ins, state, &amp;timeb);
    std::cout &lt;&lt; &quot;Time: &quot; &lt;&lt; ins.str() &lt;&lt; &quot;\n&quot; &lt;&lt; timeb &lt;&lt; std::endl;
</code></pre>
<p>Sonderbar daran ist, das die Datumsausgabe funktioniert - dürfte sie aber ja eigentlich nicht, weil ja &quot;german&quot; eingestellt ist (funktioniert dann nicht bei 07.04.2005 ). Komischerweise wird der Wochentag richtig geparst. Beim Parsen derZeit haut er dann ganz daneben -&gt; er kriegt noch die Stunde richtig geparst, dann ist Schluß.<br />
Der state ist bei den ersten Aufrufen 4 (badbit) und bei dem letzten 6 -&gt;was auch immer das zu sagen hat.</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/30712">@Hume</a> versteck Dich nicht - Ich hab auf Deiner Page gesehen, das du Dich mit sowas auskennst:).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/742070</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/742070</guid><dc:creator><![CDATA[TheBigW]]></dc:creator><pubDate>Fri, 11 Mar 2005 09:34:47 GMT</pubDate></item><item><title><![CDATA[Reply to Internationalization on Fri, 11 Mar 2005 11:23:24 GMT]]></title><description><![CDATA[<p>das der Wochentag richtig ausgelesen wurde liegt einfach daran, dass sowohl der 4.7.2005 als auch der 7.4.2005 auf einen Montag fallen...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/742189</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/742189</guid><dc:creator><![CDATA[mib]]></dc:creator><pubDate>Fri, 11 Mar 2005 11:23:24 GMT</pubDate></item><item><title><![CDATA[Reply to Internationalization on Fri, 11 Mar 2005 11:31:33 GMT]]></title><description><![CDATA[<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /><br />
...da war ich wohl zu voreilig...naja, auch Kalenderlesen will halt gelernt sein <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/742197</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/742197</guid><dc:creator><![CDATA[mib]]></dc:creator><pubDate>Fri, 11 Mar 2005 11:31:33 GMT</pubDate></item><item><title><![CDATA[Reply to Internationalization on Fri, 11 Mar 2005 11:35:50 GMT]]></title><description><![CDATA[<p>Das Problem, dass bei den Windows Compilern die Umlaute zerstückelt werden liegt einfach daran, dass die Strings nicht richtig kodiert werden bzw. nicht so wie es die Terminalemulation erwartet. Ich weiß jetzt nicht wie da die Politik ist, also ob es sich um ein Feature oder Bug handelt <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
<p>Man könnte sich aber für die Streams mittels <a href="http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/classcodecvt.html" rel="nofollow">std::codecvt</a> eine Klasse schreiben, die einfach die Kodierung übersetzt. Das ist dann sauberer, als der hässliche Ansatz den die MFC gewählt hat.</p>
<p><a href="http://gcc.gnu.org/onlinedocs/libstdc++/22_locale/codecvt.html" rel="nofollow">http://gcc.gnu.org/onlinedocs/libstdc++/22_locale/codecvt.html</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/742200</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/742200</guid><dc:creator><![CDATA[rüdiger]]></dc:creator><pubDate>Fri, 11 Mar 2005 11:35:50 GMT</pubDate></item><item><title><![CDATA[Reply to Internationalization on Fri, 11 Mar 2005 12:04:01 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/3276">@mib</a>:</p>
<p>Netter Versuch :), aber:</p>
<pre><code>ins.str (&quot;Montag&quot;);
tg.get_weekday( begin, end, ins, state, &amp;timeb );
</code></pre>
<p>er parst ja wirklich richtig das wort Montag und in der timeb-struct steht der Weakday dann folgerichtig auf '1'.</p>
<p>während beim Datum</p>
<pre><code>ins.str (&quot;07/04/2005&quot;);
Iter itFound = tg.get_date( begin, end, ins, state, &amp;timeb );
</code></pre>
<p>einfach meine deutschen lokalsettings ignoriert werden (07.04.2005) funktioniert nicht.</p>
<p>@kingruedi</p>
<blockquote>
<p>Man könnte sich aber für die Streams mittels std::codecvt eine Klasse schreiben, die einfach die Kodierung übersetzt. Das ist dann sauberer, als der hässliche Ansatz den die MFC gewählt hat.</p>
</blockquote>
<p>Deshalb je keine MFC:). Mir gehts ja nicht um den stream, sonder um den rückwärtigen Weg, nähmlich mir das Datum aus 'nem String parsen zu lassen (mittlerweile sehe ich mich das schon wieder selber machen). Trotzdem wäre ein Kodierungsübersetzender Stream 'ne feine Sache.</p>
<p>Werde mal nächste Woche weitertüfteln -&gt; halte euch auf alle Fälle auf dem Laufenden...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/742230</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/742230</guid><dc:creator><![CDATA[TheBigW]]></dc:creator><pubDate>Fri, 11 Mar 2005 12:04:01 GMT</pubDate></item><item><title><![CDATA[Reply to Internationalization on Fri, 11 Mar 2005 12:13:55 GMT]]></title><description><![CDATA[<p>codecvt geht natürlich in beide Wege. Wenn es dir um das Datum geht, dann musst du das mit den locales machen.</p>
<p>Naja, ich kann dir nur empfehlen folgendes Buch zu lesen. Da werden locales ausführlich erklärt<br />
<a href="https://duckduckgo.com/?q=isbn+382731660X&amp;cppnetbooks" rel="nofollow">Die C++-Programmiersprache | ISBN: 382731660X</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/742244</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/742244</guid><dc:creator><![CDATA[rüdiger]]></dc:creator><pubDate>Fri, 11 Mar 2005 12:13:55 GMT</pubDate></item><item><title><![CDATA[Reply to Internationalization on Fri, 11 Mar 2005 12:26:15 GMT]]></title><description><![CDATA[<p>-&gt; Done, im Amzone Warenkorb (eigentlich unverzeilich, das das noch nicht in meinem Bücherregal steht..)</p>
<p>Werde trotzdem erstmal Versuchen mich durch die Erklärung beim Josutis zu quälen vom letzten mal diagonal lesen ist leider nicht viel hängen geblieben <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /> .</p>
]]></description><link>https://www.c-plusplus.net/forum/post/742255</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/742255</guid><dc:creator><![CDATA[TheBigW]]></dc:creator><pubDate>Fri, 11 Mar 2005 12:26:15 GMT</pubDate></item><item><title><![CDATA[Reply to Internationalization on Tue, 15 Mar 2005 15:36:37 GMT]]></title><description><![CDATA[<p>Der Josutis hat erstmal weitergeholfen. Leider steht derStruppi erstmal nur auf meinem Einkauszettel, dab mein Bücherkontingent für diesen Monat schon ausgeschöpft ist <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /> .</p>
<p>Frage:<br />
Wenn ich das richtig verstanden habe, muß ich mir meine eigene von time_get abgeleitete facete schreiben? Leider ist der Aufwand dann nicht unbedingt geringer, als es bei meinem eigenen parser gewesen wäre -&gt; Ziel verfehlt, setzen, 6 <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
<p>aber wenigstens ist die Variante dann universeller, da es sich dann natlos in die anderen localisation functionen integriert (auch wenn ich das erstmal nicht brauche).</p>
<p>Ich denke ich werde das Thema noch ein bisschen mehr auswalzen, wenn ich mal irgendwann fertig sein sollte.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/745170</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/745170</guid><dc:creator><![CDATA[TheBigW]]></dc:creator><pubDate>Tue, 15 Mar 2005 15:36:37 GMT</pubDate></item></channel></rss>