Chrissy (13.03.2019)
Thema: Suche Hilfe c++ (Arduino)
-
12.03.2019, 21:48 #1
- Registriert seit
- 17.09.2012
- Beiträge
- 1.865
Thanked 384 Times in 258 PostsSuche 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?
-
13.03.2019, 20:33 #2
- Registriert seit
- 17.09.2012
- Beiträge
- 1.865
Thanked 384 Times in 258 PostsAW: Suche Hilfe c++ (Arduino)
Push
-
13.03.2019, 20:49 #3
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)
-
The Following User Says Thank You to Nuebel For This Useful Post:
-
13.03.2019, 21:02 #4
- Registriert seit
- 28.10.2011
- Beiträge
- 625
Thanked 279 Times in 168 PostsAW: 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.
-
The Following User Says Thank You to Bubble Gum For This Useful Post:
Chrissy (13.03.2019)
-
13.03.2019, 22:05 #5
AW: Suche Hilfe c++ (Arduino)
GNU Tools für ein kleines Mikrocontroller Projektchen wäre mir zu overkill.
-
The Following User Says Thank You to Nuebel For This Useful Post:
Chrissy (13.03.2019)
-
13.03.2019, 22:28 #6
- Registriert seit
- 17.09.2012
- Beiträge
- 1.865
Thanked 384 Times in 258 PostsAW: 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.
-
14.03.2019, 00:52 #7
- Registriert seit
- 06.11.2011
- Beiträge
- 418
Thanked 686 Times in 246 PostsAW: Suche Hilfe c++ (Arduino)
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
-
The Following User Says Thank You to Flav For This Useful Post:
Bubble Gum (14.03.2019)
-
14.03.2019, 01:31 #8
- Registriert seit
- 28.10.2011
- Beiträge
- 625
Thanked 279 Times in 168 PostsAW: Suche Hilfe c++ (Arduino)
Danke für die Korrektur!
Ja, aber dennoch findet man hier unter beiden Stichwörtern diverse Lösungsansätze.
-
14.03.2019, 13:01 #9
AW: Suche Hilfe c++ (Arduino)
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.
-
The Following User Says Thank You to Nuebel For This Useful Post:
Chrissy (16.03.2019)
-
16.03.2019, 13:03 #10
- Registriert seit
- 17.09.2012
- Beiträge
- 1.865
Thanked 384 Times in 258 PostsAW: Suche Hilfe c++ (Arduino)
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
-
[Suche] Hilfe für MyBB.
Von Dr. Bastardo im Forum WebmasterAntworten: 3Letzter Beitrag: 24.05.2018, 19:50 -
Suche Hilfe Cityvillebot
Von steReo im Forum Internet und TechnikAntworten: 4Letzter Beitrag: 08.04.2012, 23:50 -
[Suche] Hilfe
Von Newcomer im Forum MinecraftAntworten: 3Letzter Beitrag: 06.01.2012, 04:04
Diese Seite nutzt Cookies, um das Nutzererlebnis zu verbessern. Klicken Sie hier, um das Cookie-Tracking zu deaktivieren.