Forum: Mikrocontroller und Digitale Elektronik Wie Texte zweisprachig verwalten?


von crazy horse (Gast)


Lesenswert?

Irgendwie steh ich im Moment ein wenig auf dem Schlauch.
Wie kann man in C die auszugebenden Texte elegant zweisprachig
verwalten? Bis jetzt gab es je ein deutsch- und ein englischsprachiges
Gerät, verschiedene Versionen mit bedingter Compilierung. Wie so oft,
ändert sich das nun, soll per Menüpunkt umschaltbar sein.
Irgendwie habe ich keine Lust, jede Ausgabe mit einer if/else Abfrage
zu versehen (das wäre das, was mir im Moment einfällt).
Texte stehen im flash.

von Michael (Gast)


Lesenswert?

wie wäre es mit einer Tabelle mit 2 Spalten,
tabelle[0,0] = deutscher Text
tabelle[0,1] = englischer text
tabelle[1,0] = ausgang
tabelle[1,1} = exit

prüf ob es geht, ist nur eine Idee

Michael

von Andreas (Gast)


Lesenswert?

Hallo,

die einfachste Variante ist ein mehrdimensionales Array.
Alle Texte werden Zeilenweise (oder entsprechend deiner Ausgabe)
gesplittet, die zweite Dimension gibt dann die Sprache vor. Wenn Du für
die verschieden Sprachen ein ENUM definierst kannst beliebig (Speicher
beachten!!!) viele Sprachen verwalten.

von Jörg Wunsch (Gast)


Lesenswert?

Gängige Unix-localization-Projekte lösen das, indem sie alle Strings
mit dem Macro _() versehen.  Statt

printf("Hello world!");

steht dann

printf(_("Hello world!"));

Der Macro evaluiert während der Entwicklungsarbeiten erstmal zu
nichts, d. h. reicht seinen String durch.  Später kann man sich ihn
dann mit Werkzeugen (gettext) herausziehen und lokalisierte `message
catalogs' daraus erstellen.  Die Lokalisierung wird dann im fertigen
Produkt durch einen Initialisierungsaufruf am Anfang von main()
aktiviert, und der Makro erweitert in einen Bibliotheksaufruf (der bei
Nichtvorhandensein einer lokalisierten Variante auch automatisch den
Originalstring von sich gibt).

Allerdings benötigt das Ganze natürlich einen Hash des
Originalstrings, mit dem dann die Ersetzung gesucht wird.

von Fritz Ganter (Gast)


Lesenswert?

@Jörg

Heisst das, dass du in die avr-libc endlich gettext einbaust? :-)
Und wo lege ich die .mo Files dann ab?

von Jörg Wunsch (Gast)


Lesenswert?

> Heisst das, dass du in die avr-libc endlich gettext einbaust? :-)

Ich werde mich schwer hüten, gettext anzufassen -- so oft, wie sich
der Krempel inkompatibel ändert. ;-)

> Und wo lege ich die .mo Files dann ab?

In einem Atmel dataflash?

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.