<?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[Multi language auswahl für programm]]></title><description><![CDATA[<p>ich möchte gern ein programm mit mehreren sprachen ausstatten hab aber leider bis jetzt nichts dazu gefunden bis auf ein klasse für ne dll wofür aber leider die mfc benötigt wird .</p>
<p>wobei mir lieber wäre dies auf basis von textdateien zu machen anstatt ne lanuage dll</p>
<p>daher ne frage hat da jemand ideen oder beispielcode dazu<br />
die zu ersetzenden texte sind leider chars für consolennachrichten und strings für die weboberfläche</p>
<p>hätte aber auch ne generelle frage:<br />
es gibt ja drei hauptmethoden</p>
<p>reine textdatei,<br />
textdatei mit xml format und<br />
ne dll</p>
<p>haben die methoden jeweils vor und nachteile .<br />
gibt es einen großen geschwindigkeitsunterschied zwischen text und dll?</p>
<p>danke schonmal im vorraus</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/117323/multi-language-auswahl-für-programm</link><generator>RSS for Node</generator><lastBuildDate>Fri, 21 Aug 2026 06:22:55 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/117323.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 05 Aug 2005 14:05:57 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Multi language auswahl für programm on Fri, 05 Aug 2005 14:05:57 GMT]]></title><description><![CDATA[<p>ich möchte gern ein programm mit mehreren sprachen ausstatten hab aber leider bis jetzt nichts dazu gefunden bis auf ein klasse für ne dll wofür aber leider die mfc benötigt wird .</p>
<p>wobei mir lieber wäre dies auf basis von textdateien zu machen anstatt ne lanuage dll</p>
<p>daher ne frage hat da jemand ideen oder beispielcode dazu<br />
die zu ersetzenden texte sind leider chars für consolennachrichten und strings für die weboberfläche</p>
<p>hätte aber auch ne generelle frage:<br />
es gibt ja drei hauptmethoden</p>
<p>reine textdatei,<br />
textdatei mit xml format und<br />
ne dll</p>
<p>haben die methoden jeweils vor und nachteile .<br />
gibt es einen großen geschwindigkeitsunterschied zwischen text und dll?</p>
<p>danke schonmal im vorraus</p>
]]></description><link>https://www.c-plusplus.net/forum/post/846586</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/846586</guid><dc:creator><![CDATA[Skippy]]></dc:creator><pubDate>Fri, 05 Aug 2005 14:05:57 GMT</pubDate></item><item><title><![CDATA[Reply to Multi language auswahl für programm on Fri, 05 Aug 2005 14:53:30 GMT]]></title><description><![CDATA[<p>Die &quot;harte&quot; Methode ist jeden Text der irgendwo im prog. vorkommt in ein Char-Array zu speichern.<br />
Beim Programmstart kann man dann ein Textfile einlesen.<br />
Erstelle das Textfile am besten in der Art wie Variablenname$=Text<br />
Dann sollte daß rausfiltern des richtigen Textes kein Problem sein.<br />
Jetzt braucht man noch für jede Sprache eine Datei und das wars.</p>
<p>Theoretisch kann man auch die Texte einfach untereinander schreiben und zeilenweise auslesen. Sollte sich aber am Programm etwas mehr ändern stößst man leicht auf Probleme.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/846608</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/846608</guid><dc:creator><![CDATA[_BackBONE_]]></dc:creator><pubDate>Fri, 05 Aug 2005 14:53:30 GMT</pubDate></item><item><title><![CDATA[Reply to Multi language auswahl für programm on Fri, 05 Aug 2005 16:15:47 GMT]]></title><description><![CDATA[<p>oder du forderst den personal pc einfach auf mal den g00gl3 translator zu nehmen und den programm zu übersetzen in andere sprachiiz <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /><br />
Ich hab zwar nich so viel ahnung von coden und so aber das st doch eine brauchbare idee nich?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/846665</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/846665</guid><dc:creator><![CDATA[non4me]]></dc:creator><pubDate>Fri, 05 Aug 2005 16:15:47 GMT</pubDate></item><item><title><![CDATA[Reply to Multi language auswahl für programm on Fri, 05 Aug 2005 17:27:21 GMT]]></title><description><![CDATA[<p>@non4me</p>
<p>ne leider nicht ich programmiere nen webserver und möchte wenns geht das andere mir bei den übersetzungen helfen können ohne das anschließend irgendwas kompiliert werden muss<br />
aber die einzige möglichkeit waren über ne dll was zur not noch gehen würde<br />
aber die verwendete die mfc klasse und über die ressourcen wofür man aber den quelltext des programmes neu kompilieren müsste</p>
<p>daher bleibt also eigentlich nur noch die möglichkeit über textdateien oder xml<br />
aber eben zu beiden habe ich leider nichts gefunden</p>
<p>auf grund der komplexität des programmes wird es locker 300 verschiedene texte geben minimum</p>
]]></description><link>https://www.c-plusplus.net/forum/post/846692</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/846692</guid><dc:creator><![CDATA[Skippy]]></dc:creator><pubDate>Fri, 05 Aug 2005 17:27:21 GMT</pubDate></item><item><title><![CDATA[Reply to Multi language auswahl für programm on Fri, 05 Aug 2005 18:49:55 GMT]]></title><description><![CDATA[<p>Du wirst um Textdateien wohl nicht rumkommen, wenn du nicht<br />
über Stringtables in den Resourcen es jeweils laden willst.</p>
<p>Am besten machst du dir eine Zentrale Klasse die am Anfang<br />
die Strings läd und dann verteilt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/846737</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/846737</guid><dc:creator><![CDATA[phlox81]]></dc:creator><pubDate>Fri, 05 Aug 2005 18:49:55 GMT</pubDate></item><item><title><![CDATA[Reply to Multi language auswahl für programm on Fri, 05 Aug 2005 18:58:47 GMT]]></title><description><![CDATA[<p>lol...das macht man doch nicht bei nem Webserver <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_down"
      title=":-1:"
      alt="👎"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/846740</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/846740</guid><dc:creator><![CDATA[webserfer]]></dc:creator><pubDate>Fri, 05 Aug 2005 18:58:47 GMT</pubDate></item><item><title><![CDATA[Reply to Multi language auswahl für programm on Fri, 05 Aug 2005 19:18:48 GMT]]></title><description><![CDATA[<p>@webserfer</p>
<p>warum nicht nur weil der standart webserver apache mit schlechtem beispiel vorrangeht und alles nur in englisch anbietet?</p>
<p>bei meinen ist ja nochmehr drin z.b. ein forum und ein ordentliches webinterface und ich möchte eben das der user wenn er möchte den webserver in deutsch haben kann<br />
betrifft auch fehlermeldungen und den dynamischen index</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/642">@phlox81</a> kannst du das mit der klasse noch ein wenig besser beschreiben</p>
]]></description><link>https://www.c-plusplus.net/forum/post/846750</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/846750</guid><dc:creator><![CDATA[Skippy]]></dc:creator><pubDate>Fri, 05 Aug 2005 19:18:48 GMT</pubDate></item><item><title><![CDATA[Reply to Multi language auswahl für programm on Fri, 05 Aug 2005 19:57:04 GMT]]></title><description><![CDATA[<p>Auch wenns locker 300 Texte sind kann man das locker machen.<br />
Zum Beispiel getrente Dateien für verschiedene Bereiche wie Menu, Fehlermeldungen,<br />
Buttontexte u.s.w.</p>
<p>Hier mal ein auszug wie das bei DevCpp gelöst ist (wirklich nur ein kleiner Ausschnitt)</p>
<p>[lang]<br />
Lang=German (Deutsch)<br />
Ver=1</p>
<p>#Top level menus<br />
100=&amp;Datei<br />
101=B&amp;earbeiten<br />
102=&amp;Suchen<br />
103=&amp;Ansicht<br />
104=&amp;Projekt<br />
105=Ausführ&amp;en<br />
106=&amp;Werkzeuge<br />
107=&amp;Fenster<br />
108=&amp;Hilfe<br />
109=&amp;Fehlersuche</p>
<p>#File menu<br />
120=&amp;Neu<br />
121=&amp;Projekt...<br />
122=&amp;Quelldatei<br />
123=&amp;Ressourcen Datei<br />
124=&amp;Vorlage...</p>
<p>130=Pr&amp;ojekt oder Datei öffnen...<br />
131=&amp;Neu öffnen<br />
132=Ges&amp;chichte löschen<br />
133=&amp;Speichern<br />
134=Speichern &amp;unter...<br />
135=&amp;Alles Speichern<br />
136=S&amp;chließen<br />
137=Projekt schließen<br />
138=Eigenschaften<br />
139=Speichere Projekt als...</p>
<p>Verschiedene Bereiche fangen mit einer groszügig gewählten Indexnummer an damit das ganze erweiterbar bleibt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/846765</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/846765</guid><dc:creator><![CDATA[_BackBONE_]]></dc:creator><pubDate>Fri, 05 Aug 2005 19:57:04 GMT</pubDate></item><item><title><![CDATA[Reply to Multi language auswahl für programm on Fri, 05 Aug 2005 20:02:11 GMT]]></title><description><![CDATA[<p>Also ich würde mal sagen, XML ist geradezu prädestiniert dafür.</p>
<pre><code>&lt;?xml version=&quot;1.0&quot;?&gt;
&lt;messages&gt;
    &lt;message xml:lang=&quot;de&quot; id=&quot;bla&quot;&gt;Bla&lt;/message&gt;
    &lt;message xml:lang=&quot;en&quot; id=&quot;bla&quot;&gt;Foo&lt;/message&gt;
&lt;/messages&gt;
</code></pre>
<p>oder</p>
<pre><code>&lt;?xml version=&quot;1.0&quot;?&gt;
&lt;!-- Datei deutsch.xml --&gt;
&lt;messages xml:lang=&quot;de&quot;&gt;
    &lt;message id=&quot;bla&quot;&gt;Bla&lt;/message&gt;
&lt;/messages&gt;
</code></pre>
<pre><code>&lt;?xml version=&quot;1.0&quot;?&gt;
&lt;!-- Datei englisch.xml --&gt;
&lt;messages xml:lang=&quot;en&quot;&gt;
    &lt;message id=&quot;bla&quot;&gt;Foo&lt;/message&gt;
&lt;/messages&gt;
</code></pre>
<p>Nun lässt du die Dinger irgendwie parsen, sodass sie dauerhaft verfügbar sind (am besten nur in einer Sprache) und baust dir eine Klasse Message oder so ähnlich, für die du den Input/Output Krams überlädst.</p>
<pre><code class="language-cpp">cout &lt;&lt; message (&quot;bla&quot;);
webinterface &lt;&lt; message (&quot;bla&quot;);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/846768</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/846768</guid><dc:creator><![CDATA[.filmor]]></dc:creator><pubDate>Fri, 05 Aug 2005 20:02:11 GMT</pubDate></item><item><title><![CDATA[Reply to Multi language auswahl für programm on Fri, 05 Aug 2005 21:12:49 GMT]]></title><description><![CDATA[<p>hätt dazu mal 2 fragen</p>
<p>erstens was ist der vorteil von den xml basierten lösung oder anders gefragt wann sollte man xml der normalen textversion vorziehen</p>
<p>und zweitens mein problem bei der textbasierten variante ist die zuweisung in den strings</p>
<p>mein bisheriger ansatz</p>
<p>datei zeilenweise einlesen<br />
jede zeileparsen<br />
und kontrollieren ob der erste teil mit ner variable übereinstimmt wenn ja wird der 2teil der variable als wert zugewiesen mein problem pro textzeile fallen so 4zeilen code an</p>
<p>und glaube das wäre ein bißchen viel</p>
]]></description><link>https://www.c-plusplus.net/forum/post/846791</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/846791</guid><dc:creator><![CDATA[Skippy]]></dc:creator><pubDate>Fri, 05 Aug 2005 21:12:49 GMT</pubDate></item><item><title><![CDATA[Reply to Multi language auswahl für programm on Sat, 06 Aug 2005 00:09:53 GMT]]></title><description><![CDATA[<p>Wenn du Klasse/n geschrieben hast, die Messages ausgeben und verwalten dann hast Du nur eine Zeile im Aufruf (ein faules Copy&amp;Paste aus einem aelteren Project von mir - sollte nur Fehler, Warnings und Logs schreiben):</p>
<pre><code class="language-cpp">class ErrorMssg
{
 private:

	FILE			*pError,
				*pWarning,
				*pLog;

	char			*szErrorFilename,
				*szWarningFilename,
				*szLogFilename,

                                *szStringTable;

        StringList              *pStringTable;

 public:

// Konstructor tut hier wenig zur Sache, zu speziell, liest aber u.a. 
// aus dem Filenamen die StringTable ein

	bool Write	(const char    *szMssg,
			 short	    	iTypeNo);

        bool Write (int     iError_No0,
                    int     iError_No1,
                    short   iTypeNo);

// usw.

        static short GetCodeLog (void);
}

#define WRITE_IN_LOG    ErrorMssg::GetCodeLog ();
</code></pre>
<p>StringList ist eine Liste von Strings, die aus dem File StringTable gelesen wird. Ich konnte damit eine Errormessage in beliebigen Sprache durch Austausch des Stringfiles auslesen - mit einem Aufruf:</p>
<p>Also irgentwo anders:</p>
<pre><code class="language-cpp">bool AndereKlasse::MacheWas (ErrorMssg    *pError)
{

//irgentwas

    pError-&gt;Write (12, 10, WRITE_IN_LOG);
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/846840</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/846840</guid><dc:creator><![CDATA[MBCS-CITP]]></dc:creator><pubDate>Sat, 06 Aug 2005 00:09:53 GMT</pubDate></item><item><title><![CDATA[Reply to Multi language auswahl für programm on Sat, 06 Aug 2005 08:38:33 GMT]]></title><description><![CDATA[<p>Kein Mensch würde doch in der Praxis alle Textzeilen &quot;manuell&quot; einzeln untereinander in den Code schreiben. Wozu gibts schleifen??</p>
]]></description><link>https://www.c-plusplus.net/forum/post/846874</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/846874</guid><dc:creator><![CDATA[_BackBONE_]]></dc:creator><pubDate>Sat, 06 Aug 2005 08:38:33 GMT</pubDate></item><item><title><![CDATA[Reply to Multi language auswahl für programm on Sun, 07 Aug 2005 13:34:19 GMT]]></title><description><![CDATA[<p>kann mir da vielleicht noch jemand weiterhelfen sehe da nicht wirklich durch</p>
<p>das mit stringtable bringt mich auch nicht weiter finde zwar immer sachen wie das im programm selbst gemacht wird aber es gab keine informationen wie man den inhalt der stringtables dynmisch aus ner textdatei lädt auch bei google hat ne suche na stringtable mich nicht weiter gebracht</p>
<p>danke schonmal stehe da leider irgendwie auf den schlauch</p>
]]></description><link>https://www.c-plusplus.net/forum/post/847442</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/847442</guid><dc:creator><![CDATA[Skippy]]></dc:creator><pubDate>Sun, 07 Aug 2005 13:34:19 GMT</pubDate></item><item><title><![CDATA[Reply to Multi language auswahl für programm on Sun, 14 Aug 2005 14:18:02 GMT]]></title><description><![CDATA[<p>so hier mal meine ein wenig zusammengeschusterte funktion</p>
<p>dazu hab ich dann mal ein paar fragen:</p>
<p>-kann dies noch hinsichtlich der sicherheit optimiert werden?<br />
- gibt es noch irgendwelche funktionen die bezüglich der aufgabe multi language support sinnvoll währen und ich daher implementieren sollte/könnte?</p>
<p>[cpp]#ifndef __LANGUAGE_H__<br />
#define __LANGUAGE_H__</p>
<p>#include &lt;map&gt;<br />
#include &lt;iostream&gt;<br />
#include &lt;string&gt;<br />
#include &lt;cctype&gt;<br />
#include &lt;fstream&gt;<br />
#include &lt;sstream&gt;</p>
<p>using namespace std; // Use the standard namespace</p>
<p><strong>language.h</strong></p>
<p>// Map von Languahe Strings<br />
typedef std::map<a href="std::string,std::string" rel="nofollow">std::string,std::string</a> language_str;</p>
<p>void readinlanguage(char *LanguageFile);</p>
<p>#endif</p>
<p>[/cpp]</p>
<p><strong>language.cpp</strong></p>
<pre><code class="language-cpp">void readinlanguage(char *LanguageFile)
{

      char LangFile[255];
      language_str lang_str; // Configuration

      sprintf(LangFile, &quot;language/%s.txt&quot;, LanguageFile);

  std::ifstream inFile; 
  inFile.open(LangFile);
  if (!inFile)
   {
      cout &lt;&lt; &quot;Datei &quot; &lt;&lt; LangFile &lt;&lt; &quot; kann nicht geoeffnet werden!&quot; &lt;&lt; endl;
      exit(1);
   }

   do
   {
      // Komplette Zeile aus der Datei
      string line;
      // Zu extrahierende 'Felder' aus der Dateizeile
      string LangName, LangValue;
      // Konvertierungsstream
      std::istringstream is;

      // Zeile einlesen
      getline(inFile,line);

      // Bei erreichen des Dateiendes den Rest ueberspringen
      if (inFile.eof())
         continue;//letzte zeile Überspringen Blödsinn muss entfernt werden
      // Eingelesene Zeile dem Konvertierungsstream zuweisen
      is.str(line);
      // Nun Name und Value aus der Zeile extrahieren
      getline(is,LangName,'=');//   =
      getline(is,LangValue,';');//    ;

        if(LangName == &quot;&quot;) continue;
        if(LangValue == &quot;&quot;) continue;
		if(LangName[0] == '#') continue;

      lang_str.insert(std::map&lt;std::string,std::string&gt;::value_type(LangName, LangValue));

   } while (!inFile.eof());

   // Datei wieder schliessen
   inFile.close();

    // Ausgabe des inhalts
    for(language_str::const_iterator i=lang_str.begin(); i!=lang_str.end(); ++i) {
        std::cerr&lt;&lt;i-&gt;first&lt;&lt;&quot; =&gt; \&quot;&quot;&lt;&lt;i-&gt;second&lt;&lt;&quot;\&quot;&quot;&lt;&lt;std::endl;}
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/851989</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/851989</guid><dc:creator><![CDATA[Skippy]]></dc:creator><pubDate>Sun, 14 Aug 2005 14:18:02 GMT</pubDate></item></channel></rss>