mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Wie Texte zweisprachig verwalten?


Autor: crazy horse (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Andreas (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Jörg Wunsch (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Fritz Ganter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Jörg

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

Autor: Jörg Wunsch (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.