Ausgaben in zwei verschiedenen sprachen
-
geschlossen
-
Da sich die Anzahl von Menü- und Textelementen normalerweise bei kleineren Anwendungen in Grenzen hält, bietet sich hier an, beide Versionen gleich in den Quellcode aufzunehmen und nicht in einer Datei aufbewahren. Vorschlag:
#include ... std::map<std::string, std::pair<std::string, std::string> >Wie du den Inhalt der Container ansprichst, findest du in ihrer Dokumentation.
Allerdings musst du immer für die richtige Ausgabe der Umlaute sorgen
http://www.c-plusplus.net/forum/39326-full und Google
-
wisnia schrieb:
2. ist printf nicht eher für C? Und nicht für C++?
Geht auch in C++. Er schrieb aber auch dazu, lieber etwas ähnliches zu benutzen. Also so etwas wie printf, wo die Ausgabe zur Laufzeit formatiert wird, statt wie bei C++-Streams zur Compilezeit, aber typsicher.
-
Mir tigerte auch einmal die Idee im Kopf herum, die Entwicklersprache im Quelltext zu verwenden und die String-Literale selber als Hashes für den lokalisierten Lookup zu verwenden. Bräuchte natürlich irgendeine Form von Synchronisation, wenn man einmal die Literale im Source-Code ersetzt. Das ist natürlich schwer umzusetzen. Dafür sieht der Entwickler im Quelltext, welcher Text dort sinngemäß erscheint und muss nicht erst einen externen string-table konsultieren.
-
Das ist nicht sehr praktikabel. Schon die Korrektur eines falsch gesetzten Kommas in der Quellsprache macht das Prinzip zunichte. Lieber sprechende, aber fixe Bezeichner nehmen. "{Bitte_Taste_A_Drücken}" versteht man wunderbar ohne Lookup.
-
@Decimad: Qt macht so was.
-
geschlossen
-
geschlossen
-
Abgesehen davon, dass die Sache mit dem [ini-]File optional ist und für ein kleines Progrämmchen vielleicht zuviel des Guten, ist der Vorschlag vernünftig. Nimm doch eine map<string, map<string, string>> und pack dort deine Texte rein:
std::map<std::string, std::map<std::string, std::string>> texts; [...] texts["english"]["hallo"] = "Hello world!"; texts["deutsch"]["hallo"] = "Hallo, Welt!"; [...] std::string sprache = "deutsch"; std::cout << texts[sprache]["hallo"];Mit dem neumodischen C++11 geht das bestimmt auch noch schöner.
-
geschlossen
-
Bei kleinen Programmen geht das, aber bei großen oder auf Hauptschleifen basierenden Programmen, musst du das für jeden auszugebenden String machen oder direkt zwei Schleifen machen, da ist dann der Aufwand zu groß.
-
geschlossen
-
geschlossen