1. #1

    Registriert seit
    17.09.2012
    Beiträge
    1.865
    Thanked 384 Times in 258 Posts

    Standard Suche Hilfe c++ (Arduino)

    Hoffentlich kann mir einer kurz helfen.

    Ich habe ein Arduino Sketch in dem ich gerne eine Sprachdatei einbinden möchte


    Original ist das ganze Deutsch ich würde nun gerne eine Variable Auswahl haben zwischen verschiedenen Sprachen

    Die Definitionen liegen schon in eine extra .H Datei

    #define MSG_Start "Starte Programm"
    #define MSG_Edit "Einstellungen"
    #define MSG_Last "Letztes Programm"
    #define MSG_load "Lade Programm"
    #define MSG_BACK "Zur\365ck"


    Jemand ne Idee wie ich nun z.b. die Englische Sprache laden könnte?

  2. #2

    Registriert seit
    17.09.2012
    Beiträge
    1.865
    Thanked 384 Times in 258 Posts

    Standard AW: Suche Hilfe c++ (Arduino)

    Push

  3. #3
    Avatar von Nuebel
    Registriert seit
    23.11.2013
    Beiträge
    446
    Thanked 361 Times in 236 Posts

    Standard AW: Suche Hilfe c++ (Arduino)

    Habe keinen Compiler zur Hand. Wenn es sich nur um wenige Strings handelt, die in verschiedenen Sprachen geladen werden soll, würde ich sowas mit dem Präprozessor (token concatenation) machen. Etwa so:

    #define GET_MSG(which, lang) MSG_##which_##lang

    #define MSG_Start_DE "Starte Programm"
    #define MSG_Edit_DE "Einstellungen"
    #define MSG_Last_DE "Letztes Programm"
    #define MSG_load_DE "Lade Programm"
    #define MSG_BACK_DE "Zur\365ck"

    #define MSG_Start_EN "Start program"
    #define MSG_Edit_EN "Settings"
    #define MSG_Last_EN "Previous program"
    #define MSG_load_EN "Load program"
    #define MSG_BACK_EN "Back"


    Das Makro kannst du im Programm dann so nutzen:

    GET_MSG(Start, DE) // "Starte Programm"
    GET_MSG(Edit, EN) // "Settings"


    Kannst dir dann irgendwo lang definieren, damit du nicht immer DE, EN etc schreiben musst.

    #define LANG DE
    ...
    GET_MSG(load, LANG) // "Lade Programm"
    Geändert von Nuebel (13.03.2019 um 20:55 Uhr)

  4. The Following User Says Thank You to Nuebel For This Useful Post:

    Chrissy (13.03.2019)

  5. #4

    Registriert seit
    28.10.2011
    Beiträge
    625
    Thanked 279 Times in 168 Posts

    Standard AW: Suche Hilfe c++ (Arduino)

    Warum so kompliziert?

    Gerade für C++ kannst du ganz gut gettext verwenden.
    https://de.wikipedia.org/wiki/GNU_gettext
    https://stackoverflow.com/questions/...-world-example


    Wenn man nach "i18n c++" googelt, findest du ebenso gute resourcen.
    https://en.wikipedia.org/wiki/C_localization_functions

    Das Stichwort, was du suchst ist einfach "I18N" bzw. "Localization", google hilft.

  6. The Following User Says Thank You to Bubble Gum For This Useful Post:

    Chrissy (13.03.2019)

  7. #5
    Avatar von Nuebel
    Registriert seit
    23.11.2013
    Beiträge
    446
    Thanked 361 Times in 236 Posts

    Standard AW: Suche Hilfe c++ (Arduino)

    GNU Tools für ein kleines Mikrocontroller Projektchen wäre mir zu overkill.

  8. The Following User Says Thank You to Nuebel For This Useful Post:

    Chrissy (13.03.2019)

  9. #6

    Registriert seit
    17.09.2012
    Beiträge
    1.865
    Thanked 384 Times in 258 Posts

    Standard AW: Suche Hilfe c++ (Arduino)

    Danke erstmal für den Input

    Ja lesen hilft sehr (wenn man weiß was man suchen muss)
    Ist aber mein erstes mal in arduino und c++ .

    Werde es am Wochenende ausprobieren.

    Wollte eigentlich ne Sprachdatei (de.h / en.h)
    Via if/else einbinden das wollte aber nicht wirklich klappen.

    Aber der Vorschlag oben klingt doch auch ganz gut.

  10. #7

    Registriert seit
    06.11.2011
    Beiträge
    418
    Thanked 686 Times in 246 Posts

    Standard AW: Suche Hilfe c++ (Arduino)

    Zitat Zitat von Bubble Gum Beitrag anzeigen
    Das Stichwort, was du suchst ist einfach "I18N" bzw. "Localization", google hilft.
    Ist ein bisschen verwirrend. Zur Aufklärung: i18n steht für internationalization und l10n für localization. Wenn auch oft zusammen angewendet, sind es zwei unterschiedliche Dinge. Mehr dazu z. B. hier: https://en.wikipedia.org/wiki/Intern...d_localization

  11. The Following User Says Thank You to Flav For This Useful Post:

    Bubble Gum (14.03.2019)

  12. #8

    Registriert seit
    28.10.2011
    Beiträge
    625
    Thanked 279 Times in 168 Posts

    Standard AW: Suche Hilfe c++ (Arduino)

    Danke für die Korrektur!

    Ja, aber dennoch findet man hier unter beiden Stichwörtern diverse Lösungsansätze.

  13. #9
    Avatar von Nuebel
    Registriert seit
    23.11.2013
    Beiträge
    446
    Thanked 361 Times in 236 Posts

    Standard AW: Suche Hilfe c++ (Arduino)

    Zitat Zitat von Chrissy Beitrag anzeigen
    Wollte eigentlich ne Sprachdatei (de.h / en.h)
    Via if/else einbinden das wollte aber nicht wirklich klappen.
    Der Präprozessor wird nur einmal vor dem Kompilieren angeworfen. Während der Laufzeit da was zu machen funktioniert nicht.
    Wenn du die Sprachstrings unbedingt in einzelne Headerdateien packen willst, dann musst du in jedem Fall jede einzelne Sprachdatei inkludieren. Musst außerdem aufpassen, dass sich da nichts gegenseitig überschreibt.

  14. The Following User Says Thank You to Nuebel For This Useful Post:

    Chrissy (16.03.2019)

  15. #10

    Registriert seit
    17.09.2012
    Beiträge
    1.865
    Thanked 384 Times in 258 Posts

    Standard AW: Suche Hilfe c++ (Arduino)

    Zitat Zitat von Nuebel Beitrag anzeigen
    Der Präprozessor wird nur einmal vor dem Kompilieren angeworfen. Während der Laufzeit da was zu machen funktioniert nicht.
    Wenn du die Sprachstrings unbedingt in einzelne Headerdateien packen willst, dann musst du in jedem Fall jede einzelne Sprachdatei inkludieren. Musst außerdem aufpassen, dass sich da nichts gegenseitig überschreibt.

    danke hab deine Lösung ausprobiert und Funktioniert soweit ganz gut. Nun hab ich Nurnoch das Problem mit der unterschiedlichen Wörterlänge im Menü. Back ist halt kürzer wie Zurück *Grrrrrrrrrr*

    Ohhh ich muss wohl noch viel lernen *lach* Da Gibts sicher ne Elegantere Version


    (ja i know alter code ohne deine Lösung von oben)


    if (menu == 21) { /////////////////////////////////////////////////////// 2.1 Run Last Program
    val1 = EEPROM.read(100);
    val2 = EEPROM.read(101);
    val3 = EEPROM.read(102);
    lcd.clear();
    lcd.setCursor(0, 0);
    lcd.print(MSG_LastP);
    lcd.setCursor(1, 1);
    lcd.print("("MSG_Info")");
    lcd.setCursor(1, 2);
    lcd.print("(");
    lcd.print(val1);
    lcd.print(" / ");
    lcd.print(val2);
    lcd.print(" / ");
    lcd.print(val3);
    lcd.print(")");
    lcd.setCursor(0, 3);
    lcd.print(MSG_Start" "MSG_BACK);
    cursor = 2;
    while (digitalRead(buttonOK) == LOW) {
    delay(10);
    }
    while (digitalRead(buttonOK) == HIGH) {
    while (cursor == 2 && digitalRead(buttonOK) == HIGH) {
    lcd.setCursor(14, 3);
    lcd.print(" ");
    delay(100);
    lcd.setCursor(14, 3);
    lcd.print(MSG_BACK);
    delay(200);
    if (digitalRead(buttonUP) == LOW) {
    cursor = 1;
    }
    }
    while (cursor == 1 && digitalRead(buttonOK) == HIGH) {
    lcd.setCursor(0, 3);
    lcd.print(" ");
    delay(100);
    lcd.setCursor(0, 3);
    lcd.print(MSG_Start);
    delay(200);
    if (digitalRead(buttonDOWN) == LOW) {
    cursor = 2;
    }
    }
    }
    if (cursor == 2) {
    menu = 1;
    }
    if (cursor == 1) {
    menu = 0;
    }
    }

    Geändert von Chrissy (16.03.2019 um 13:10 Uhr)

Ähnliche Themen

  1. [Suche] Hilfe für MyBB.
    Von Dr. Bastardo im Forum Webmaster
    Antworten: 3
    Letzter Beitrag: 24.05.2018, 19:50
  2. Suche Hilfe Cityvillebot
    Von steReo im Forum Internet und Technik
    Antworten: 4
    Letzter Beitrag: 08.04.2012, 23:50
  3. [Suche] Hilfe
    Von Newcomer im Forum Minecraft
    Antworten: 3
    Letzter Beitrag: 06.01.2012, 04:04
Diese Seite nutzt Cookies, um das Nutzererlebnis zu verbessern. Klicken Sie hier, um das Cookie-Tracking zu deaktivieren.