Skip to content
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo
  1. ioBroker Community Home
  2. Deutsch
  3. Entwickler-Meetings
  4. Meeting für ioBroker Core/Dev/Admin 14.07.20 20:30

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.2k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    1.9k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    15
    1
    2.2k

Meeting für ioBroker Core/Dev/Admin 14.07.20 20:30

Geplant Angeheftet Gesperrt Verschoben Entwickler-Meetings
treffenentwickler-teamtesteradmin-team
79 Beiträge 18 Kommentatoren 9.8k Aufrufe 28 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • apollon77A apollon77

    Hm ... @Mic muss ehrlich sagen das ich das einerseits verstehen kann, andererseits seehr shwierig finde.

    Projektseitig haben wir die weiteren Sprachen (Sehr lange gab es deutsch,englisch und Russisch) nach Absprache mit (einer damals noch etwas kleineren) Entwicklergruppe und auch User-Gruppe eingeführt um genau ioBroker aus dem "nur Deutschland" rauszubringen und auch um besser andere Smart-Home Systeme angreifen zu können! Chinesisch kam dazu als es dort losging und sich eine eigene Community gebildet hat. So ein switch dauert aber Zeit! Und fehlende Übersetzungen schrecken dann neue User aus anderen Sprachregionen ganz einfach ab! Das ist die andere Seite der Medallie

    Es gibt Tools um die Übersetzungen für die Entwickler zu erleichtern bzw zu automatisieren. @ldittmar hat gulp Skripte dazu gebaut die integriert sein sollten, es gibt https://translator.iobroker.in/ für manuellere Übersetzungen.
    Die Realität ist das ein User das was Du beschreibst ggf nicht akzeptiert sondern einfach den Adapter nicht nutzt ...oder Ihn fluchend nutzt weil er anders tickt als die 352 anderen Adapter 😉

    Was das Thema "usebility" und "Admin UIs besser machen" mit den Übersetzungen zu tun hat weiss ich nicht nicht, aber ja wenn es darum geht texte nicht auslagern zu müssen ... naja 🙂
    Ich hatte auch vor einiger Zeit mal mit Optionen überlegt (Fragezeichen Icons mit mouse-over Erklärungen der Einstellungen), aber am Ende bin ich kein Web-Designer ... Womit wir am Ende wieder beim Adapter-Konfiguration Styleguide und so wären 😉

    GitHub ist in meinen Augen sprachlich ob Deutsch oder Englisch fast egal ... ich zwinge keinen dort englisch zu sprechen 🙂

    Mehrsprachige Log Ausgaben finde ich persönlich wiederum überflüssig und sogar komplett nicht hilfreich - vor allem wenn die Logs zur Fehlersuche genutzt werden durch MICH dem Entwickler dann muss ich danach suchen können im Code ... und ich muss damit die Logik verstehen können. Mehrsprachigkeit hier hilft MIR nicht ... und da behaupte ich jetzt das 90% der User keine Logs lesen und daher 😉

    Fakt ist auch - und das macht die Thematik sehr grenzwertig - das der Adapter Checker im Repo die Übersetzungen prüft und mal mindestens neue Adapter die nicht wenigstens teilweise die Hauptsprachen unterstützen in jedem Fall nach den aktuellen Regeln nicht ins Repo kommen. Das würde auch auf Deinen Adapter zutreffen.

    Bestandsadapter geniessen aktuell noch irgendwie so eine Art Vogelfreien Status, aber auch diese prüfen wir bei stable updates mit dem Repo-Checker ...

    Du schaffst hier gerade einen Präzedenzfall ... und ich hätte es besser gefunden wenn Du solche Entscheidungen vorher vllt mal angesprochen hättest. Versteh mich bitte nicht falsch und ich will Dir garantiert keine Stöcke zwischen die Füsse werfen oder gar das du jetzt angepisst keine Adapter mehr baust ... aber irgendwie ist es halt ein miteinander und eine Balance ...

    Ingo

    MicM Offline
    MicM Offline
    Mic
    Developer
    schrieb am zuletzt editiert von
    #56

    @apollon77

    Ich konnte jetzt nur durch einen Trick hier antworten (weiter oben vor dem Fehler bei einem Beitrag auf "Antwort" klicken. Siehe Thread: https://forum.iobroker.net/topic/35464/fehler-in-forum-thread-html-markdown-problem

    Wäre damit nicht eine Idee ein "gulp" Dingens oder ein Skript zu schreiben was es erlaubt bestimmt "geschriebenes html" zu parsen und anzupassen?

    An gulp dachte ich auch, wollte auch schon selbst was implementieren, aber dann schnell festgestellt, dass ich zu wenig/keine Erfahrung mit gulp hab und daher aus Zeitgründen verworfen.

    Also sowas wie ein tag "translate" was als property die text-ID oder sowas hat und ggf. eine Notation "nicht zu übersetzende teile" zu markieren die dann auch behandelt werden.

    Ja, genau, also index_m.html per gulp.

    Beispiel, so etwas sollte halt dann übersetzt werden:

    <td class="translate">
    	Sobald der Wert vom Datenpunkt mit diesem Wert übereinstimmt, wird der Auslöser aktiviert. 
    	<br>Du kannst <code>true</code>, <code>false</code>, Nummern wie <code>144</code>, or Strings wie <code>ABCDEF</code> verwenden. 
    	<br>
    	<br>Ebenso kannst du die Vergleichs-Operatoren <code>></code>, <code><</code>, <code>>=</code> und <code><=</code> vor Zahlen schreiben.
    	<br>Um also auszulösen, wenn z.B. die Temperatur größer als 20°C ist, trägst du <code>>20</code> ein.
    	<br>
    	<br>Sämtliche Leerzeichen und Anführungszeichen (wie <code>"</code>) am Anfang und Ende werden automatisch entfernt.
    </td>
    

    Ausgangstext muss dann aber in Englisch sein, wobei auch als gulp-Option in Landessprache vorstellbar wäre...

    Hierbei müssen ein paar HTML-Tags ignoriert werden, z.b. <code>. Satzteile formatiert (z.B. <bold> etc.) sollen übersetzt werden.
    Evtl. noch eine "translate-ignore" CSS-Klasse für manche Teile (z.B. <span class="translate-ignore">Mich ignorieren</span>

    Soweit die Idee 😉

    Dann kann man das initial einfach so schreiben und am Ende lässt man das Skript drüber rennen was diese Art von Sonder-Tags nimmt, in die transpation files einfügt und so ... Das text Polishing (De/en) ist denke immer mit dabei ... da kommt man nicht drum rum fürchte ich.

    Das wäre super. Und klar, deutsch/englisch Anpassungen werden immer sein. Wobei man theoretisch auch die Quellsprache per gulp Option festlegen könnte.
    Nachteil wäre aber: index_m.html enthält dann deutsche Texte (oder spanische, etc.), also nicht so schön zu pflegen für andere Entwickler.

    Weitere Ideen? 🙂

    GarfonsoG apollon77A 2 Antworten Letzte Antwort
    1
    • MicM Mic

      @apollon77

      Ich konnte jetzt nur durch einen Trick hier antworten (weiter oben vor dem Fehler bei einem Beitrag auf "Antwort" klicken. Siehe Thread: https://forum.iobroker.net/topic/35464/fehler-in-forum-thread-html-markdown-problem

      Wäre damit nicht eine Idee ein "gulp" Dingens oder ein Skript zu schreiben was es erlaubt bestimmt "geschriebenes html" zu parsen und anzupassen?

      An gulp dachte ich auch, wollte auch schon selbst was implementieren, aber dann schnell festgestellt, dass ich zu wenig/keine Erfahrung mit gulp hab und daher aus Zeitgründen verworfen.

      Also sowas wie ein tag "translate" was als property die text-ID oder sowas hat und ggf. eine Notation "nicht zu übersetzende teile" zu markieren die dann auch behandelt werden.

      Ja, genau, also index_m.html per gulp.

      Beispiel, so etwas sollte halt dann übersetzt werden:

      <td class="translate">
      	Sobald der Wert vom Datenpunkt mit diesem Wert übereinstimmt, wird der Auslöser aktiviert. 
      	<br>Du kannst <code>true</code>, <code>false</code>, Nummern wie <code>144</code>, or Strings wie <code>ABCDEF</code> verwenden. 
      	<br>
      	<br>Ebenso kannst du die Vergleichs-Operatoren <code>></code>, <code><</code>, <code>>=</code> und <code><=</code> vor Zahlen schreiben.
      	<br>Um also auszulösen, wenn z.B. die Temperatur größer als 20°C ist, trägst du <code>>20</code> ein.
      	<br>
      	<br>Sämtliche Leerzeichen und Anführungszeichen (wie <code>"</code>) am Anfang und Ende werden automatisch entfernt.
      </td>
      

      Ausgangstext muss dann aber in Englisch sein, wobei auch als gulp-Option in Landessprache vorstellbar wäre...

      Hierbei müssen ein paar HTML-Tags ignoriert werden, z.b. <code>. Satzteile formatiert (z.B. <bold> etc.) sollen übersetzt werden.
      Evtl. noch eine "translate-ignore" CSS-Klasse für manche Teile (z.B. <span class="translate-ignore">Mich ignorieren</span>

      Soweit die Idee 😉

      Dann kann man das initial einfach so schreiben und am Ende lässt man das Skript drüber rennen was diese Art von Sonder-Tags nimmt, in die transpation files einfügt und so ... Das text Polishing (De/en) ist denke immer mit dabei ... da kommt man nicht drum rum fürchte ich.

      Das wäre super. Und klar, deutsch/englisch Anpassungen werden immer sein. Wobei man theoretisch auch die Quellsprache per gulp Option festlegen könnte.
      Nachteil wäre aber: index_m.html enthält dann deutsche Texte (oder spanische, etc.), also nicht so schön zu pflegen für andere Entwickler.

      Weitere Ideen? 🙂

      GarfonsoG Offline
      GarfonsoG Offline
      Garfonso
      Developer
      schrieb am zuletzt editiert von
      #57

      @Mic
      Das klingt nach einer super Lösung. 🙂

      Ultimativer Lovelace Leitfaden: https://forum.iobroker.net/topic/35937/der-ultimative-iobroker-lovelace-leitfaden-dokumentation

      Lovelace UI Beispiele: https://forum.iobroker.net/topic/35950/zeigt-her-eure-lovelace-visualisierung

      1 Antwort Letzte Antwort
      0
      • MicM Mic

        @apollon77

        Ich konnte jetzt nur durch einen Trick hier antworten (weiter oben vor dem Fehler bei einem Beitrag auf "Antwort" klicken. Siehe Thread: https://forum.iobroker.net/topic/35464/fehler-in-forum-thread-html-markdown-problem

        Wäre damit nicht eine Idee ein "gulp" Dingens oder ein Skript zu schreiben was es erlaubt bestimmt "geschriebenes html" zu parsen und anzupassen?

        An gulp dachte ich auch, wollte auch schon selbst was implementieren, aber dann schnell festgestellt, dass ich zu wenig/keine Erfahrung mit gulp hab und daher aus Zeitgründen verworfen.

        Also sowas wie ein tag "translate" was als property die text-ID oder sowas hat und ggf. eine Notation "nicht zu übersetzende teile" zu markieren die dann auch behandelt werden.

        Ja, genau, also index_m.html per gulp.

        Beispiel, so etwas sollte halt dann übersetzt werden:

        <td class="translate">
        	Sobald der Wert vom Datenpunkt mit diesem Wert übereinstimmt, wird der Auslöser aktiviert. 
        	<br>Du kannst <code>true</code>, <code>false</code>, Nummern wie <code>144</code>, or Strings wie <code>ABCDEF</code> verwenden. 
        	<br>
        	<br>Ebenso kannst du die Vergleichs-Operatoren <code>></code>, <code><</code>, <code>>=</code> und <code><=</code> vor Zahlen schreiben.
        	<br>Um also auszulösen, wenn z.B. die Temperatur größer als 20°C ist, trägst du <code>>20</code> ein.
        	<br>
        	<br>Sämtliche Leerzeichen und Anführungszeichen (wie <code>"</code>) am Anfang und Ende werden automatisch entfernt.
        </td>
        

        Ausgangstext muss dann aber in Englisch sein, wobei auch als gulp-Option in Landessprache vorstellbar wäre...

        Hierbei müssen ein paar HTML-Tags ignoriert werden, z.b. <code>. Satzteile formatiert (z.B. <bold> etc.) sollen übersetzt werden.
        Evtl. noch eine "translate-ignore" CSS-Klasse für manche Teile (z.B. <span class="translate-ignore">Mich ignorieren</span>

        Soweit die Idee 😉

        Dann kann man das initial einfach so schreiben und am Ende lässt man das Skript drüber rennen was diese Art von Sonder-Tags nimmt, in die transpation files einfügt und so ... Das text Polishing (De/en) ist denke immer mit dabei ... da kommt man nicht drum rum fürchte ich.

        Das wäre super. Und klar, deutsch/englisch Anpassungen werden immer sein. Wobei man theoretisch auch die Quellsprache per gulp Option festlegen könnte.
        Nachteil wäre aber: index_m.html enthält dann deutsche Texte (oder spanische, etc.), also nicht so schön zu pflegen für andere Entwickler.

        Weitere Ideen? 🙂

        apollon77A Online
        apollon77A Online
        apollon77
        schrieb am zuletzt editiert von apollon77
        #58

        @Mic Ich denke für die "nicht zu übersetzenden texte" müsste man sie erkennen, durch Platzhalter ersetzen die nicht übersetzt werden und dann nach der Übersetzung zurück-einsetzen. müsste man in entsprechende "Tags" einschliessen ...(zB wie Du in "code").

        Aber auch wichtig für die erkennung wäre noch ein "<div>" aussen rum.

        Also etwas wie
        <td class="translate">
        <div translation_id="meinCoolerText">....<code>do not translate</code>...</div>
        </td>

        ... müsste man jetzt nur noch bauen 🙂

        @ldittmar Schon nach dem Urlaub was vor? ;-)))

        Beitrag hat geholfen? Votet rechts unten im Beitrag :-) https://paypal.me/Apollon77 / https://github.com/sponsors/Apollon77

        • Debug-Log für Instanz einschalten? Admin -> Instanzen -> Expertenmodus -> Instanz aufklappen - Loglevel ändern
        • Logfiles auf Platte /opt/iobroker/log/… nutzen, Admin schneidet Zeilen ab
        GarfonsoG 1 Antwort Letzte Antwort
        0
        • apollon77A apollon77

          @Mic Ich denke für die "nicht zu übersetzenden texte" müsste man sie erkennen, durch Platzhalter ersetzen die nicht übersetzt werden und dann nach der Übersetzung zurück-einsetzen. müsste man in entsprechende "Tags" einschliessen ...(zB wie Du in "code").

          Aber auch wichtig für die erkennung wäre noch ein "<div>" aussen rum.

          Also etwas wie
          <td class="translate">
          <div translation_id="meinCoolerText">....<code>do not translate</code>...</div>
          </td>

          ... müsste man jetzt nur noch bauen 🙂

          @ldittmar Schon nach dem Urlaub was vor? ;-)))

          GarfonsoG Offline
          GarfonsoG Offline
          Garfonso
          Developer
          schrieb am zuletzt editiert von
          #59

          @apollon77 said in Online Meeting für ioBroker Core/Dev/Admin 14.07.2020 20:30:

          <div translation_id="meinCoolerText">

          Wofür brauchst du die id dann noch? Ich hatte den Ansatz von @Mic so verstanden, dass er ja gerade das mit den IDs nicht mehr will und das im Grunde alles automatisch generiert werden soll -> das könnte ja dann die IDs direkt mit generieren, damit man da nicht wieder in das Problem läuft, dass IDs nicht gepflegt werden (nicht eindeutig, ungenutzt, blah).

          Oder hab ich da was falsch verstanden / übersehen?

          Ultimativer Lovelace Leitfaden: https://forum.iobroker.net/topic/35937/der-ultimative-iobroker-lovelace-leitfaden-dokumentation

          Lovelace UI Beispiele: https://forum.iobroker.net/topic/35950/zeigt-her-eure-lovelace-visualisierung

          apollon77A 1 Antwort Letzte Antwort
          0
          • GarfonsoG Garfonso

            @apollon77 said in Online Meeting für ioBroker Core/Dev/Admin 14.07.2020 20:30:

            <div translation_id="meinCoolerText">

            Wofür brauchst du die id dann noch? Ich hatte den Ansatz von @Mic so verstanden, dass er ja gerade das mit den IDs nicht mehr will und das im Grunde alles automatisch generiert werden soll -> das könnte ja dann die IDs direkt mit generieren, damit man da nicht wieder in das Problem läuft, dass IDs nicht gepflegt werden (nicht eindeutig, ungenutzt, blah).

            Oder hab ich da was falsch verstanden / übersehen?

            apollon77A Online
            apollon77A Online
            apollon77
            schrieb am zuletzt editiert von
            #60

            @Garfonso Naja die Idee ist ja das Mapping zu Loca-IDs und damit das "auslagern in die words.js" zu automatisieren. ich kennen aktuell noch keinen sinnvollen Weg ohne dies. Bei einfachen texten geht es auch ihne indem der Text zum KEy wird, aber sobald das komplexer wird wird das ziemlich blöd finde ich ...

            Beitrag hat geholfen? Votet rechts unten im Beitrag :-) https://paypal.me/Apollon77 / https://github.com/sponsors/Apollon77

            • Debug-Log für Instanz einschalten? Admin -> Instanzen -> Expertenmodus -> Instanz aufklappen - Loglevel ändern
            • Logfiles auf Platte /opt/iobroker/log/… nutzen, Admin schneidet Zeilen ab
            AlCalzoneA 1 Antwort Letzte Antwort
            0
            • apollon77A apollon77

              @Garfonso Naja die Idee ist ja das Mapping zu Loca-IDs und damit das "auslagern in die words.js" zu automatisieren. ich kennen aktuell noch keinen sinnvollen Weg ohne dies. Bei einfachen texten geht es auch ihne indem der Text zum KEy wird, aber sobald das komplexer wird wird das ziemlich blöd finde ich ...

              AlCalzoneA Offline
              AlCalzoneA Offline
              AlCalzone
              Developer
              schrieb am zuletzt editiert von
              #61

              @apollon77 sagte in Online Meeting für ioBroker Core/Dev/Admin 14.07.2020 20:30:

              Bei einfachen texten geht es auch ihne indem der Text zum KEy wird, aber sobald das komplexer wird wird das ziemlich blöd finde ich ...

              Die Fehlermeldungen vom TypeScript-Compiler werden beispielsweise genau so generiert.

              Warum `sudo` böse ist: https://forum.iobroker.net/post/17109

              MicM 1 Antwort Letzte Antwort
              0
              • AlCalzoneA AlCalzone

                @apollon77 sagte in Online Meeting für ioBroker Core/Dev/Admin 14.07.2020 20:30:

                Bei einfachen texten geht es auch ihne indem der Text zum KEy wird, aber sobald das komplexer wird wird das ziemlich blöd finde ich ...

                Die Fehlermeldungen vom TypeScript-Compiler werden beispielsweise genau so generiert.

                MicM Offline
                MicM Offline
                Mic
                Developer
                schrieb am zuletzt editiert von
                #62

                Hi zusammen,

                • Hier noch mal der initiale Beitrag von mir zu dieser Diskussion.
                • Und hier der derzeitige Aufwand für Entwickler aus meiner Sichtweise.

                @AlCalzone sagte in Online Meeting für ioBroker Core/Dev/Admin 14.07.2020 20:30:

                @apollon77 sagte in Online Meeting für ioBroker Core/Dev/Admin 14.07.2020 20:30:

                Bei einfachen texten geht es auch ihne indem der Text zum KEy wird, aber sobald das komplexer wird wird das ziemlich blöd finde ich ...

                Die Fehlermeldungen vom TypeScript-Compiler werden beispielsweise genau so generiert.

                Ich kenne jetzt die Übersetzungs-Funktionalität (Stichwort word.js) noch nicht wirklich, aber ich denke, der dafür zuständige Code müsste auch angepasst werden.

                Wie auch immer:
                So wie ich die JavaScript-Spezifikation verstehe, darf ein Objekt-Key (also der key bei {'key':'val'} ein beliebiges String beinhalten. Somit sind also keine Grenzen gesetzt. Lasse mich da gerne korrigieren 😉
                Damit ist es also egal, wie komplex das String ist, (Browser-)Performance mal außen vor.

                Jetzt kann doch ein Script folgendes machen:

                index_m.html per jQuery: alle Inhalte, die translate als Klassen-Zuweisung enthalten, per Loop durchlaufen:

                1. Inhalte übersetzen und Ergebnis in Variable und dann Zieldatei.
                  • Für Übersetzung: vorher definierte Tags zur Übersetzung ignorieren (z.B. <code>true</true> oder Text <span="non-translate">ioBroker<span> und einzelne Teile separat übersetzen.
                  • Nach Übersetzung: ignorierte Bestandteile wieder in HTML-Variable hinzufügen
                2. Ergebnis ab in die words.js:
                  • hier dann auch bereinigen zum Schluss, d.h. unbenutzte Einträge löschen. Geht natürlich nur, wenn global verfügbar, welche Keys gesetzt wurden.

                Falls das on-the-fly nicht möglich oder aus Browser-Performance-Gründen nicht sinnvoll, könnte man auch entsprechend komplilieren und "_min.xxx" Dateien generieren lassen, wie z.B. "words_min.js"

                apollon77A 1 Antwort Letzte Antwort
                0
                • MicM Mic

                  Hi zusammen,

                  • Hier noch mal der initiale Beitrag von mir zu dieser Diskussion.
                  • Und hier der derzeitige Aufwand für Entwickler aus meiner Sichtweise.

                  @AlCalzone sagte in Online Meeting für ioBroker Core/Dev/Admin 14.07.2020 20:30:

                  @apollon77 sagte in Online Meeting für ioBroker Core/Dev/Admin 14.07.2020 20:30:

                  Bei einfachen texten geht es auch ihne indem der Text zum KEy wird, aber sobald das komplexer wird wird das ziemlich blöd finde ich ...

                  Die Fehlermeldungen vom TypeScript-Compiler werden beispielsweise genau so generiert.

                  Ich kenne jetzt die Übersetzungs-Funktionalität (Stichwort word.js) noch nicht wirklich, aber ich denke, der dafür zuständige Code müsste auch angepasst werden.

                  Wie auch immer:
                  So wie ich die JavaScript-Spezifikation verstehe, darf ein Objekt-Key (also der key bei {'key':'val'} ein beliebiges String beinhalten. Somit sind also keine Grenzen gesetzt. Lasse mich da gerne korrigieren 😉
                  Damit ist es also egal, wie komplex das String ist, (Browser-)Performance mal außen vor.

                  Jetzt kann doch ein Script folgendes machen:

                  index_m.html per jQuery: alle Inhalte, die translate als Klassen-Zuweisung enthalten, per Loop durchlaufen:

                  1. Inhalte übersetzen und Ergebnis in Variable und dann Zieldatei.
                    • Für Übersetzung: vorher definierte Tags zur Übersetzung ignorieren (z.B. <code>true</true> oder Text <span="non-translate">ioBroker<span> und einzelne Teile separat übersetzen.
                    • Nach Übersetzung: ignorierte Bestandteile wieder in HTML-Variable hinzufügen
                  2. Ergebnis ab in die words.js:
                    • hier dann auch bereinigen zum Schluss, d.h. unbenutzte Einträge löschen. Geht natürlich nur, wenn global verfügbar, welche Keys gesetzt wurden.

                  Falls das on-the-fly nicht möglich oder aus Browser-Performance-Gründen nicht sinnvoll, könnte man auch entsprechend komplilieren und "_min.xxx" Dateien generieren lassen, wie z.B. "words_min.js"

                  apollon77A Online
                  apollon77A Online
                  apollon77
                  schrieb am zuletzt editiert von
                  #63

                  @Mic Also ja natürlich kann man den beliebigen Text in die Words packen ... Dann bräuchte man beim zurückschreiben noch eine Erkennung das ein text schon übersetzt ist damit er nicht nochmal wird - und man muss sich selbst dran halten sowas nicht nochmal zu editieren sondern die words.js ab der initialen Übersetzung zu nutzen ... sonst landet der neue text beim nächsten "übersetzungslauf ausführen" unter dem neuen text nochmal drin und es entstehen doubletten und riiiesige words.js Files 🙂 Daher meine Idee es durch ne unique ID zu ersetzen ... dann sieht man das gleich. geht aber bestimt auch anders.

                  Die Logik mit Übersetzung und so (geht ja nicht in words.js sondern in die translation files denke ich) ist glaube im gulp drin. Am Ende passt eine neue Logik denke da am besten hin. Also im gulp das html parsen, texte finden und "bearbeiten".

                  Ansonsten: einzelne Teile überstzen geht nicht wiel sonst der Satzaufbau komplett zerstört wird. Also man muss wirklich die nicht zu übersetzenden Teile rausholen und durch etwas ersetzen was er nicht übersetzt, und danach den ganzen Text mit den Platzhaltern übersetzen lassen und dann wieder die platzhalter zurück-einfügen

                  Beitrag hat geholfen? Votet rechts unten im Beitrag :-) https://paypal.me/Apollon77 / https://github.com/sponsors/Apollon77

                  • Debug-Log für Instanz einschalten? Admin -> Instanzen -> Expertenmodus -> Instanz aufklappen - Loglevel ändern
                  • Logfiles auf Platte /opt/iobroker/log/… nutzen, Admin schneidet Zeilen ab
                  MicM 1 Antwort Letzte Antwort
                  0
                  • apollon77A apollon77

                    @Mic Also ja natürlich kann man den beliebigen Text in die Words packen ... Dann bräuchte man beim zurückschreiben noch eine Erkennung das ein text schon übersetzt ist damit er nicht nochmal wird - und man muss sich selbst dran halten sowas nicht nochmal zu editieren sondern die words.js ab der initialen Übersetzung zu nutzen ... sonst landet der neue text beim nächsten "übersetzungslauf ausführen" unter dem neuen text nochmal drin und es entstehen doubletten und riiiesige words.js Files 🙂 Daher meine Idee es durch ne unique ID zu ersetzen ... dann sieht man das gleich. geht aber bestimt auch anders.

                    Die Logik mit Übersetzung und so (geht ja nicht in words.js sondern in die translation files denke ich) ist glaube im gulp drin. Am Ende passt eine neue Logik denke da am besten hin. Also im gulp das html parsen, texte finden und "bearbeiten".

                    Ansonsten: einzelne Teile überstzen geht nicht wiel sonst der Satzaufbau komplett zerstört wird. Also man muss wirklich die nicht zu übersetzenden Teile rausholen und durch etwas ersetzen was er nicht übersetzt, und danach den ganzen Text mit den Platzhaltern übersetzen lassen und dann wieder die platzhalter zurück-einfügen

                    MicM Offline
                    MicM Offline
                    Mic
                    Developer
                    schrieb am zuletzt editiert von Mic
                    #64

                    @apollon77

                    Ich werfe auch mal https://weblate.org/de/ in den Raum, UncleSam hat mich darauf aufmerksam gemacht 😉

                    @UncleSam sagte in Gulp ist kein Hexenwerk - Auto translation:

                    Hallo ldittmar

                    Übersetzungen sind ein schwieriges Thema. Bis jetzt müssen wir Adapter Entwickler mit Google/Yandex übersetzen und dann "native speaker" im GIT Korrekturen per PR einbringen. Bei meinem aktuellen Arbeitgeber sind wir von einem teilweise manuellen Prozess (mit Excel-Listen!) auf https://weblate.org/en/ umgestiegen.

                    Die Installation und Konfiguration war innert wenigen Stunden erledigt und nun können wir alle Übersetzungen in einem Online Tool pflegen - wenn nötig auch mit externen Übersetzern. Wir sind schon nach wenigen Wochen begeistert - der Prozess benötigt keine manuellen Schritte mehr für die Entwickler!

                    Wäre das nicht ein interessantes Tool für all die Übersetzungen von Adaptern? Es liesse sich auch jeder Adapter mit seinem eigenen GitHub Repo einbinden (sofern die entsprechenden Autoren einverstanden sind).

                    Wenn das Interesse vorhanden ist, kann ich auch noch etwas detaillierter über das Tool berichten und euch bei der Inbetriebnahme / Integration helfen.

                    /UncleSam

                    @UncleSam sagte in Gulp ist kein Hexenwerk - Auto translation:

                    Es ist Open Source und wie gesagt innert kürzester Zeit eingerichtet. Ich gehe davon aus, dass ioBroker schon eine gewisse Server Infrastruktur (respektive Cloud Infrastruktur) hat, damit würde der Preis aus meiner Sicht 0 € betragen.

                    @UncleSam sagte in Gulp ist kein Hexenwerk - Auto translation:

                    Die Einrichtung ist keine grosse Sache; ein Aufwand besteht natürlich pro GIT Repo, das man anhängen will (für uns: pro Adapter).

                    Weblate nimmt die Übersetzungen direkt aus dem GIT und kann sie auch wieder ins GIT zurückspielen. Für GitHub gibt es die Möglichkeit über Pull Requests: https://docs.weblate.org/en/latest/vcs.html#github Damit muss Weblate nicht einmal spezielle Rechte für ein Repository haben.

                    Wie gesagt bin ich gerne bereit, bei der Umsetzung zu helfen und würde das auch einfach mal mit einem meiner Adapter testen, bevor wir das "ausrollen" würden. Ich will nur nicht für mich eine "Insellösung" erarbeiten, wenn wir gleich eine Lösung für (fast) alle bauen können.

                    Ich kenne Weblate null, aber das klingt wirklich hochinteressant!

                    der Prozess benötigt keine manuellen Schritte mehr für die Entwickler!

                    🙂

                    UncleSamU 1 Antwort Letzte Antwort
                    1
                    • MicM Mic

                      @apollon77

                      Ich werfe auch mal https://weblate.org/de/ in den Raum, UncleSam hat mich darauf aufmerksam gemacht 😉

                      @UncleSam sagte in Gulp ist kein Hexenwerk - Auto translation:

                      Hallo ldittmar

                      Übersetzungen sind ein schwieriges Thema. Bis jetzt müssen wir Adapter Entwickler mit Google/Yandex übersetzen und dann "native speaker" im GIT Korrekturen per PR einbringen. Bei meinem aktuellen Arbeitgeber sind wir von einem teilweise manuellen Prozess (mit Excel-Listen!) auf https://weblate.org/en/ umgestiegen.

                      Die Installation und Konfiguration war innert wenigen Stunden erledigt und nun können wir alle Übersetzungen in einem Online Tool pflegen - wenn nötig auch mit externen Übersetzern. Wir sind schon nach wenigen Wochen begeistert - der Prozess benötigt keine manuellen Schritte mehr für die Entwickler!

                      Wäre das nicht ein interessantes Tool für all die Übersetzungen von Adaptern? Es liesse sich auch jeder Adapter mit seinem eigenen GitHub Repo einbinden (sofern die entsprechenden Autoren einverstanden sind).

                      Wenn das Interesse vorhanden ist, kann ich auch noch etwas detaillierter über das Tool berichten und euch bei der Inbetriebnahme / Integration helfen.

                      /UncleSam

                      @UncleSam sagte in Gulp ist kein Hexenwerk - Auto translation:

                      Es ist Open Source und wie gesagt innert kürzester Zeit eingerichtet. Ich gehe davon aus, dass ioBroker schon eine gewisse Server Infrastruktur (respektive Cloud Infrastruktur) hat, damit würde der Preis aus meiner Sicht 0 € betragen.

                      @UncleSam sagte in Gulp ist kein Hexenwerk - Auto translation:

                      Die Einrichtung ist keine grosse Sache; ein Aufwand besteht natürlich pro GIT Repo, das man anhängen will (für uns: pro Adapter).

                      Weblate nimmt die Übersetzungen direkt aus dem GIT und kann sie auch wieder ins GIT zurückspielen. Für GitHub gibt es die Möglichkeit über Pull Requests: https://docs.weblate.org/en/latest/vcs.html#github Damit muss Weblate nicht einmal spezielle Rechte für ein Repository haben.

                      Wie gesagt bin ich gerne bereit, bei der Umsetzung zu helfen und würde das auch einfach mal mit einem meiner Adapter testen, bevor wir das "ausrollen" würden. Ich will nur nicht für mich eine "Insellösung" erarbeiten, wenn wir gleich eine Lösung für (fast) alle bauen können.

                      Ich kenne Weblate null, aber das klingt wirklich hochinteressant!

                      der Prozess benötigt keine manuellen Schritte mehr für die Entwickler!

                      🙂

                      UncleSamU Offline
                      UncleSamU Offline
                      UncleSam
                      Developer
                      schrieb am zuletzt editiert von
                      #65

                      @Mic Danke für die zahlreichen Zitate 😉

                      I18N (Internationalization) ist ein häufiges Problem und wir sind sicherlich nicht die ersten (und nicht die letzten), die sich dem annehmen müssen. Als Schweizer Softwareentwickler bin ich fast in jedem Projekt zweisprachig unterwegs (DE/FR); meist kommt noch Englisch dazu.

                      Die Problematik muss an zwei Stellen angegangen werden:

                      1. Die Software muss übersetzbar sein
                      2. Die Übersetzungen müssen einfach gepflegt werden können

                      Die Diskussion hier dreht sich vor allem um den ersten Punkt, mein Vorschlag für Weblate konzentriert sich auf den zweiten (nur damit wir hier nicht allzu wirr durcheinander reden).

                      Für 1. gibt es gute Frameworks und gute Beschreibungssprachen. Hier einige Beispiele: https://docs.weblate.org/en/latest/formats.html
                      Dabei ist wichtig, dass das Tool nicht nur einfache Texte übersetzen kann, sondern zum Beispiel auch mit Plural/Daten umgehen kann. ICU macht das sehr schön: http://userguide.icu-project.org/formatparse/messages :

                      "{num_guests, plural, offset:1 "
                            "=0 {{host} does not give a party.}"
                            "=1 {{host} invites {guest} to her party.}"
                            "=2 {{host} invites {guest} and one other person to her party.}"
                            "other {{host} invites {guest} and # other people to her party.}}}"
                      

                      Ich denke wir müssen uns für beide Punkte auf etwas einigen und beides muss zusammen passen. Dabei würde ich versuchen, auf Standard-Tools zu setzen und nicht zu viel selber zu erfinden/entwickeln. Bis jetzt habe ich im Web-Bereich nur mit Angular I18N gearbeitet - und allein schon dort gibt es drei populäre Lösungen.

                      "Im Nachhinein Übersetzen" ist IMHO eine schlechte Strategie, sprich: Übersetzungen müssen von Anfang an in der Software vorgesehen sein. Irgendwie versuchen, Texte herauszusuchen und diese dann in eine Datei abzufüllen funktioniert sehr schlecht. Gerade auch Teilsätze (beim Einsetzen von Daten) können ein heilloses Durcheinander auslösen.

                      Automatische Übersetzungen sind ein guter erster Schritt, damit ioBroker internationaler wird, aber wer mag Software schlecht die Übersetzung sein or not all translated? 😉 Teilweise ist schon Deutsch schwierig, beim Englisch holpert es dann doch öfters in ioBroker.

                      Ich freue mich auf einen guten Austausch und bin gerne bereit in den nächsten Wochen Zeit in eine gute Lösung zu stecken.

                      Bitte bei Problemen mit meinen Adaptern, Issue auf GitHub erfassen: Loxone | I2C | Luxtronik2
                      ♡-lichen Dank an meine Sponsoren

                      MicM apollon77A 2 Antworten Letzte Antwort
                      4
                      • UncleSamU UncleSam

                        @Mic Danke für die zahlreichen Zitate 😉

                        I18N (Internationalization) ist ein häufiges Problem und wir sind sicherlich nicht die ersten (und nicht die letzten), die sich dem annehmen müssen. Als Schweizer Softwareentwickler bin ich fast in jedem Projekt zweisprachig unterwegs (DE/FR); meist kommt noch Englisch dazu.

                        Die Problematik muss an zwei Stellen angegangen werden:

                        1. Die Software muss übersetzbar sein
                        2. Die Übersetzungen müssen einfach gepflegt werden können

                        Die Diskussion hier dreht sich vor allem um den ersten Punkt, mein Vorschlag für Weblate konzentriert sich auf den zweiten (nur damit wir hier nicht allzu wirr durcheinander reden).

                        Für 1. gibt es gute Frameworks und gute Beschreibungssprachen. Hier einige Beispiele: https://docs.weblate.org/en/latest/formats.html
                        Dabei ist wichtig, dass das Tool nicht nur einfache Texte übersetzen kann, sondern zum Beispiel auch mit Plural/Daten umgehen kann. ICU macht das sehr schön: http://userguide.icu-project.org/formatparse/messages :

                        "{num_guests, plural, offset:1 "
                              "=0 {{host} does not give a party.}"
                              "=1 {{host} invites {guest} to her party.}"
                              "=2 {{host} invites {guest} and one other person to her party.}"
                              "other {{host} invites {guest} and # other people to her party.}}}"
                        

                        Ich denke wir müssen uns für beide Punkte auf etwas einigen und beides muss zusammen passen. Dabei würde ich versuchen, auf Standard-Tools zu setzen und nicht zu viel selber zu erfinden/entwickeln. Bis jetzt habe ich im Web-Bereich nur mit Angular I18N gearbeitet - und allein schon dort gibt es drei populäre Lösungen.

                        "Im Nachhinein Übersetzen" ist IMHO eine schlechte Strategie, sprich: Übersetzungen müssen von Anfang an in der Software vorgesehen sein. Irgendwie versuchen, Texte herauszusuchen und diese dann in eine Datei abzufüllen funktioniert sehr schlecht. Gerade auch Teilsätze (beim Einsetzen von Daten) können ein heilloses Durcheinander auslösen.

                        Automatische Übersetzungen sind ein guter erster Schritt, damit ioBroker internationaler wird, aber wer mag Software schlecht die Übersetzung sein or not all translated? 😉 Teilweise ist schon Deutsch schwierig, beim Englisch holpert es dann doch öfters in ioBroker.

                        Ich freue mich auf einen guten Austausch und bin gerne bereit in den nächsten Wochen Zeit in eine gute Lösung zu stecken.

                        MicM Offline
                        MicM Offline
                        Mic
                        Developer
                        schrieb am zuletzt editiert von Mic
                        #66

                        @UncleSam

                        Vielen Dank für deine Initiative, Super 🙂

                        Wie ist das denn mit Weblate hinsichtlich Dokumentation versus Applikation (Frontend) selbst:

                        Mein persönlicher Anstoß war, dass ich in ioBroker.adapter-xyz/admin/index_m.html auch eine direkte Hilfe dem Anwender biete (https://github.com/Mic-M/ioBroker.smartcontrol).

                        Dort habe ich etwa folgendes, also eine "Online-Hilfe/Dokumentation" für den Anwender:
                        zzu778.gif

                        Lässt sich denn so etwas, also der Text mit der Tabelle, auch einfach mit Weblate abbilden?

                        Quellcode:

                        <ul class="collapsible">
                        	<li>
                        		<div class="collapsible-header config-section"><h5 class="translate">Zusätzliche Bedingungen</h5><i class="material-icons">help_outline</i></div>
                        		<div class="collapsible-body">
                        			<p style="margin-top:0px" class="translate">
                        				Diese Tabelle ist optional:
                        				<br>Hier trägst du zusätzliche Bedingungen ein, die (nicht) zutreffen sollen, z.B.: Jemand ist anwesend, Keiner ist anwesend, Heute ist Feiertag, Oma schläft, usw.
                        				<br>
                        				<br>Diese kannst du dann in den entsprechenden anderen Optionen-Tabellen auswählen.
                        			</p>
                        			<table>
                        				<thead>
                        				  <tr>
                        					  <th class="translate">Spalte</th>
                        					  <th class="translate">Pflichtfeld</th>
                        					  <th class="translate">Beschreibung</th>
                        				  </tr>
                        				</thead>
                        		
                        				<tbody>
                        				  <tr>
                        					<td class="translate">✓</td>
                        					<td class="translate">Ja</td>
                        					<td class="translate">Aktiviert/deaktiviert diese Tabellenzeile. Falls nicht aktiviert, wird diese Tabellenzeile vom Adapter nicht beachtet.</td>
                        				  </tr>
                        				  <tr>
                        					<td class="translate">Name der Bedingung</td>
                        					<td class="translate">Ja</td>
                        					<td class="translate">Hier beliebigen Namen deiner Bedingung eintragen, z.B. 'Feiertag Heute'.</td>
                        				  </tr>
                        				  <tr>
                        					<td class="translate">Datenpunkt der Bedingung</td>
                        					<td class="translate">Ja</td>
                        					<td class="translate">Datenpunkt für diese Bedingung, wie <code>javascript.0.Holiday.isHolidayToday</code>.</td>
                        				</tr>
                        				  <tr>
                        					<td class="translate">DP-Wert</td>
                        					<td class="translate">Ja</td>
                        					<td class="translate">Datenpunkt-Wert der Bedingung, wenn sie zutreffen soll. Du kannst <code>true</code>, <code>false</code>, Nummern wie <code>144</code>, or Strings wie <code>Oma schläft jetzt</code> verwenden. Sämtliche Leerzeichen und Anführungszeichen (wie <code>"</code>) am Anfang und Ende werden automatisch entfernt.</td>
                        				  </tr>
                        				</tbody>
                        			  </table>
                        		</div>
                        	</li>
                        </ul>
                        
                        

                        Oder ist Weblate primär für die "eigentliche" Software gedacht, also Auswahlfelder, Feldbezeichnungen, usw.?

                        UncleSamU 1 Antwort Letzte Antwort
                        0
                        • UncleSamU UncleSam

                          @Mic Danke für die zahlreichen Zitate 😉

                          I18N (Internationalization) ist ein häufiges Problem und wir sind sicherlich nicht die ersten (und nicht die letzten), die sich dem annehmen müssen. Als Schweizer Softwareentwickler bin ich fast in jedem Projekt zweisprachig unterwegs (DE/FR); meist kommt noch Englisch dazu.

                          Die Problematik muss an zwei Stellen angegangen werden:

                          1. Die Software muss übersetzbar sein
                          2. Die Übersetzungen müssen einfach gepflegt werden können

                          Die Diskussion hier dreht sich vor allem um den ersten Punkt, mein Vorschlag für Weblate konzentriert sich auf den zweiten (nur damit wir hier nicht allzu wirr durcheinander reden).

                          Für 1. gibt es gute Frameworks und gute Beschreibungssprachen. Hier einige Beispiele: https://docs.weblate.org/en/latest/formats.html
                          Dabei ist wichtig, dass das Tool nicht nur einfache Texte übersetzen kann, sondern zum Beispiel auch mit Plural/Daten umgehen kann. ICU macht das sehr schön: http://userguide.icu-project.org/formatparse/messages :

                          "{num_guests, plural, offset:1 "
                                "=0 {{host} does not give a party.}"
                                "=1 {{host} invites {guest} to her party.}"
                                "=2 {{host} invites {guest} and one other person to her party.}"
                                "other {{host} invites {guest} and # other people to her party.}}}"
                          

                          Ich denke wir müssen uns für beide Punkte auf etwas einigen und beides muss zusammen passen. Dabei würde ich versuchen, auf Standard-Tools zu setzen und nicht zu viel selber zu erfinden/entwickeln. Bis jetzt habe ich im Web-Bereich nur mit Angular I18N gearbeitet - und allein schon dort gibt es drei populäre Lösungen.

                          "Im Nachhinein Übersetzen" ist IMHO eine schlechte Strategie, sprich: Übersetzungen müssen von Anfang an in der Software vorgesehen sein. Irgendwie versuchen, Texte herauszusuchen und diese dann in eine Datei abzufüllen funktioniert sehr schlecht. Gerade auch Teilsätze (beim Einsetzen von Daten) können ein heilloses Durcheinander auslösen.

                          Automatische Übersetzungen sind ein guter erster Schritt, damit ioBroker internationaler wird, aber wer mag Software schlecht die Übersetzung sein or not all translated? 😉 Teilweise ist schon Deutsch schwierig, beim Englisch holpert es dann doch öfters in ioBroker.

                          Ich freue mich auf einen guten Austausch und bin gerne bereit in den nächsten Wochen Zeit in eine gute Lösung zu stecken.

                          apollon77A Online
                          apollon77A Online
                          apollon77
                          schrieb am zuletzt editiert von
                          #67

                          @UncleSam Weblate kostet aber, oder ?!

                          Beitrag hat geholfen? Votet rechts unten im Beitrag :-) https://paypal.me/Apollon77 / https://github.com/sponsors/Apollon77

                          • Debug-Log für Instanz einschalten? Admin -> Instanzen -> Expertenmodus -> Instanz aufklappen - Loglevel ändern
                          • Logfiles auf Platte /opt/iobroker/log/… nutzen, Admin schneidet Zeilen ab
                          Jey CeeJ 1 Antwort Letzte Antwort
                          0
                          • apollon77A apollon77

                            @UncleSam Weblate kostet aber, oder ?!

                            Jey CeeJ Online
                            Jey CeeJ Online
                            Jey Cee
                            Developer
                            schrieb am zuletzt editiert von
                            #68

                            @apollon77 selfhosted ist kostenlos.

                            Persönlicher Support
                            Spenden -> paypal.me/J3YC33

                            1 Antwort Letzte Antwort
                            1
                            • MicM Mic

                              @UncleSam

                              Vielen Dank für deine Initiative, Super 🙂

                              Wie ist das denn mit Weblate hinsichtlich Dokumentation versus Applikation (Frontend) selbst:

                              Mein persönlicher Anstoß war, dass ich in ioBroker.adapter-xyz/admin/index_m.html auch eine direkte Hilfe dem Anwender biete (https://github.com/Mic-M/ioBroker.smartcontrol).

                              Dort habe ich etwa folgendes, also eine "Online-Hilfe/Dokumentation" für den Anwender:
                              zzu778.gif

                              Lässt sich denn so etwas, also der Text mit der Tabelle, auch einfach mit Weblate abbilden?

                              Quellcode:

                              <ul class="collapsible">
                              	<li>
                              		<div class="collapsible-header config-section"><h5 class="translate">Zusätzliche Bedingungen</h5><i class="material-icons">help_outline</i></div>
                              		<div class="collapsible-body">
                              			<p style="margin-top:0px" class="translate">
                              				Diese Tabelle ist optional:
                              				<br>Hier trägst du zusätzliche Bedingungen ein, die (nicht) zutreffen sollen, z.B.: Jemand ist anwesend, Keiner ist anwesend, Heute ist Feiertag, Oma schläft, usw.
                              				<br>
                              				<br>Diese kannst du dann in den entsprechenden anderen Optionen-Tabellen auswählen.
                              			</p>
                              			<table>
                              				<thead>
                              				  <tr>
                              					  <th class="translate">Spalte</th>
                              					  <th class="translate">Pflichtfeld</th>
                              					  <th class="translate">Beschreibung</th>
                              				  </tr>
                              				</thead>
                              		
                              				<tbody>
                              				  <tr>
                              					<td class="translate">✓</td>
                              					<td class="translate">Ja</td>
                              					<td class="translate">Aktiviert/deaktiviert diese Tabellenzeile. Falls nicht aktiviert, wird diese Tabellenzeile vom Adapter nicht beachtet.</td>
                              				  </tr>
                              				  <tr>
                              					<td class="translate">Name der Bedingung</td>
                              					<td class="translate">Ja</td>
                              					<td class="translate">Hier beliebigen Namen deiner Bedingung eintragen, z.B. 'Feiertag Heute'.</td>
                              				  </tr>
                              				  <tr>
                              					<td class="translate">Datenpunkt der Bedingung</td>
                              					<td class="translate">Ja</td>
                              					<td class="translate">Datenpunkt für diese Bedingung, wie <code>javascript.0.Holiday.isHolidayToday</code>.</td>
                              				</tr>
                              				  <tr>
                              					<td class="translate">DP-Wert</td>
                              					<td class="translate">Ja</td>
                              					<td class="translate">Datenpunkt-Wert der Bedingung, wenn sie zutreffen soll. Du kannst <code>true</code>, <code>false</code>, Nummern wie <code>144</code>, or Strings wie <code>Oma schläft jetzt</code> verwenden. Sämtliche Leerzeichen und Anführungszeichen (wie <code>"</code>) am Anfang und Ende werden automatisch entfernt.</td>
                              				  </tr>
                              				</tbody>
                              			  </table>
                              		</div>
                              	</li>
                              </ul>
                              
                              

                              Oder ist Weblate primär für die "eigentliche" Software gedacht, also Auswahlfelder, Feldbezeichnungen, usw.?

                              UncleSamU Offline
                              UncleSamU Offline
                              UncleSam
                              Developer
                              schrieb am zuletzt editiert von
                              #69

                              @Mic sagte in Online Meeting für ioBroker Core/Dev/Admin 14.07.2020 20:30:

                              Lässt sich denn so etwas, also der Text mit der Tabelle, auch einfach mit Weblate abbilden?

                              Weblate übersetzt - nicht mehr und nicht weniger. Du hast ja bereits class="translate" hinzugefügt, das muss dann ein Tool extrahieren (geht in deinem Fall sehr einfach) und Weblate bietet dann einfach alle Teil-Strings zur Übersetzung an.

                              Ganze Seiten mit HTML Tags etc. würde ich nicht von Weblate übersetzen lassen (das bedingt, dass der Übersetzer HTML versteht), allerdings kann ich mir vorstellen, einfaches Markdown übersetzen zu lassen (z.B. für https://raw.githubusercontent.com/ioBroker/ioBroker.docs/master/docs/en/dev/adaptervis.md, aber eher nicht für grosse Dokumente wie https://raw.githubusercontent.com/ioBroker/ioBroker.docs/master/docs/en/dev/adapterdev.md).

                              Das mit dem Extrahieren ist ein wichtiger Punkt: der Entwickler muss natürlich zu übersetzenden Text irgendwie markieren, aber den markierten Text zu extrahieren sollte man unbedingt einem Tool überlassen. Sprich für ioBroker: words.js (oder was es dann auch immer sein wird) wird komplett von Weblate erzeugt, der Entwickler muss nur etwas (z.B. class="translate" eventuell mit id="unique-id") zu jedem Tag hinzufügen, den er übersetzt haben will.

                              Bitte bei Problemen mit meinen Adaptern, Issue auf GitHub erfassen: Loxone | I2C | Luxtronik2
                              ♡-lichen Dank an meine Sponsoren

                              BluefoxB 1 Antwort Letzte Antwort
                              0
                              • UncleSamU UncleSam

                                @Mic sagte in Online Meeting für ioBroker Core/Dev/Admin 14.07.2020 20:30:

                                Lässt sich denn so etwas, also der Text mit der Tabelle, auch einfach mit Weblate abbilden?

                                Weblate übersetzt - nicht mehr und nicht weniger. Du hast ja bereits class="translate" hinzugefügt, das muss dann ein Tool extrahieren (geht in deinem Fall sehr einfach) und Weblate bietet dann einfach alle Teil-Strings zur Übersetzung an.

                                Ganze Seiten mit HTML Tags etc. würde ich nicht von Weblate übersetzen lassen (das bedingt, dass der Übersetzer HTML versteht), allerdings kann ich mir vorstellen, einfaches Markdown übersetzen zu lassen (z.B. für https://raw.githubusercontent.com/ioBroker/ioBroker.docs/master/docs/en/dev/adaptervis.md, aber eher nicht für grosse Dokumente wie https://raw.githubusercontent.com/ioBroker/ioBroker.docs/master/docs/en/dev/adapterdev.md).

                                Das mit dem Extrahieren ist ein wichtiger Punkt: der Entwickler muss natürlich zu übersetzenden Text irgendwie markieren, aber den markierten Text zu extrahieren sollte man unbedingt einem Tool überlassen. Sprich für ioBroker: words.js (oder was es dann auch immer sein wird) wird komplett von Weblate erzeugt, der Entwickler muss nur etwas (z.B. class="translate" eventuell mit id="unique-id") zu jedem Tag hinzufügen, den er übersetzt haben will.

                                BluefoxB Offline
                                BluefoxB Offline
                                Bluefox
                                schrieb am zuletzt editiert von Bluefox
                                #70

                                @UncleSam Bevor wir noch einen Server aufsetzten, vielleicht können wir in die Richtung crowdin schauen?

                                Ich habe ein Beispielprojekt angelegt: https://crowdin.com/project/iobrokeradmin

                                Oder hier als Enterprise: https://iobroker.crowdin.com/

                                UncleSamU 1 Antwort Letzte Antwort
                                0
                                • BluefoxB Bluefox

                                  @UncleSam Bevor wir noch einen Server aufsetzten, vielleicht können wir in die Richtung crowdin schauen?

                                  Ich habe ein Beispielprojekt angelegt: https://crowdin.com/project/iobrokeradmin

                                  Oder hier als Enterprise: https://iobroker.crowdin.com/

                                  UncleSamU Offline
                                  UncleSamU Offline
                                  UncleSam
                                  Developer
                                  schrieb am zuletzt editiert von
                                  #71

                                  @Bluefox sagte in Online Meeting für ioBroker Core/Dev/Admin 14.07.2020 20:30:

                                  vielleicht können wir in die Richtung crowdin schauen?

                                  Crowdin sieht auch gut aus. Ich habe schon davon gehört, aber noch nie damit gearbeitet. Ich nehme an, die GitHub/PR Integration ist sicherlich gut gelöst. Wie sieht es mit mehreren Repos aus? Kann man alle Adapter Repos zusammenfassen oder muss das jeder Entwickler selber machen? Ich denke eine zentrale Lösung ist notwendig, sonst macht wieder jeder Entwickler etwas und Übersetzungen sind dann immer noch gleich schwierig zu behandeln.

                                  Bitte bei Problemen mit meinen Adaptern, Issue auf GitHub erfassen: Loxone | I2C | Luxtronik2
                                  ♡-lichen Dank an meine Sponsoren

                                  BluefoxB apollon77A 2 Antworten Letzte Antwort
                                  0
                                  • UncleSamU UncleSam

                                    @Bluefox sagte in Online Meeting für ioBroker Core/Dev/Admin 14.07.2020 20:30:

                                    vielleicht können wir in die Richtung crowdin schauen?

                                    Crowdin sieht auch gut aus. Ich habe schon davon gehört, aber noch nie damit gearbeitet. Ich nehme an, die GitHub/PR Integration ist sicherlich gut gelöst. Wie sieht es mit mehreren Repos aus? Kann man alle Adapter Repos zusammenfassen oder muss das jeder Entwickler selber machen? Ich denke eine zentrale Lösung ist notwendig, sonst macht wieder jeder Entwickler etwas und Übersetzungen sind dann immer noch gleich schwierig zu behandeln.

                                    BluefoxB Offline
                                    BluefoxB Offline
                                    Bluefox
                                    schrieb am zuletzt editiert von
                                    #72

                                    @UncleSam Ich vermute, dass es keine Zentrale Lösung gibt.

                                    1 Antwort Letzte Antwort
                                    0
                                    • UncleSamU UncleSam

                                      @Bluefox sagte in Online Meeting für ioBroker Core/Dev/Admin 14.07.2020 20:30:

                                      vielleicht können wir in die Richtung crowdin schauen?

                                      Crowdin sieht auch gut aus. Ich habe schon davon gehört, aber noch nie damit gearbeitet. Ich nehme an, die GitHub/PR Integration ist sicherlich gut gelöst. Wie sieht es mit mehreren Repos aus? Kann man alle Adapter Repos zusammenfassen oder muss das jeder Entwickler selber machen? Ich denke eine zentrale Lösung ist notwendig, sonst macht wieder jeder Entwickler etwas und Übersetzungen sind dann immer noch gleich schwierig zu behandeln.

                                      apollon77A Online
                                      apollon77A Online
                                      apollon77
                                      schrieb am zuletzt editiert von
                                      #73

                                      @UncleSam Die Erfahrung zeigt das wir einheitliche Lösungen und "Best practices" anbieten können, es wird dennoch jedem Entwickler überlassen bleiben was er tut.

                                      Beitrag hat geholfen? Votet rechts unten im Beitrag :-) https://paypal.me/Apollon77 / https://github.com/sponsors/Apollon77

                                      • Debug-Log für Instanz einschalten? Admin -> Instanzen -> Expertenmodus -> Instanz aufklappen - Loglevel ändern
                                      • Logfiles auf Platte /opt/iobroker/log/… nutzen, Admin schneidet Zeilen ab
                                      1 Antwort Letzte Antwort
                                      1
                                      • FenianF Offline
                                        FenianF Offline
                                        Fenian
                                        schrieb am zuletzt editiert von
                                        #74

                                        Ich weiß, das Thema ist schon etwas älter.
                                        Ich habe das hier vor geraumer Zeit gelesen, wollte es eigentlich ignorieren aber es hat mich die ganze Zeit beschäftigt und teilweise auch aufgeregt.
                                        Daher mal gebe ich doch noch mal meinen Senf dazu.
                                        Warum?
                                        Ich würde mich zwar nicht als Entwickler bezeichnen, habe aber knapp 16 Jahre Erfahrung in einem relativ grossen Opensource-Projekt, davon ein großer Teil mit Übersetzungen.

                                        @UncleSam sagte in Online Meeting für ioBroker Core/Dev/Admin 14.07.2020 20:30:

                                        Die Problematik muss an zwei Stellen angegangen werden:

                                        1. Die Software muss übersetzbar sein
                                        2. Die Übersetzungen müssen einfach gepflegt werden können

                                        Ja, Punkt 1 ist der wichtigste, für 2. finden sich Lösungen
                                        Aber für mich betrifft I18N nicht nur die Software an sich, sondern auch das ganze Projekt. Also Webseite/Forum/Doku etc.
                                        Und es nichts, was man mal "so eben" nebenher macht.
                                        Selbst Englisch ist nicht immer Englisch. (z.B. Postleitzahl ->post code (GB) ->zip code (US) / Ferien, Urlaub ->holiday(GB) ->vacation(US)
                                        BTW: Selbst Deepl bietet da jetzt britisch/amerikanisch an. Portugiesisch ist da jetzt auch getrennt.
                                        Englisch ist da allerdings wahrscheinlich unproblematisch, aber wir hatten da mal einen Fall in Portugisisch die Übersetzung in Portugal war völlig ok, aber in Brasilien als ungemessen/beleidigend empfunden wurde.
                                        Manchmal kann es auch politisch werden.
                                        Katalinisch ist da ein gutes Beispiel: Wir hatten sehr viele Übersetzungen ca-AD (Andorra) und nicht ca-ES (Spanien), weil viele Katalanen sich nicht mit Spanien identifizieren wollten.
                                        Für ioBroker sehe ich das nicht wirklich als Gefahr, aber wie man sieht, kann man sich da auch schnell in einem "Minenfeld" befinden.

                                        Das grösste Problem ist für mich extreme nennen wir es "Deutschlastigkeit".
                                        Beispiel: Ich klicke als nicht deutschsprachiger Benutzer z.B auf "Announcements" und was sehe ich?
                                        Jede Menge Einträge, aber alles Deutsch.
                                        Wichtige Informationen sollten aber zumindest auch auf Englisch verfügbar sein.
                                        Ob man es mag oder nicht Englisch ist nunmal der Schlüssel.

                                        "Announcements" hört sich wichtig an, aber ich kann es nicht verstehen. Was dann?

                                        Einer der Hauptgründe das ich hier schreibe ist allerdings die Äußerungen von @Mic
                                        Das harmloseste was mir dazu einfiel ist "ignorant".

                                        Als Lösung schlage ich hier vor, einfach Google Translate zu nutzen, damit wird die Übersetzung >an die UI bzw. Client übertragen. Man müsste noch mal besser schauen, welche guten Browser->Plugins es da noch so gibt, um lokale Websites einfach zu übersetzen. Denn dann kann man sich den >Kram komplett sparen.
                                        Man muss hier meiner Meinung nach auch berücksichtigen, wann das Konzept von ioBroker entstanden >ist, nämlich wohl in 2014. Mittlerweile haben wir - jetzt in Juli 2020 🙂 - sehr starke UI/Client->Übersetzungstools für "on the fly".

                                        Das ist keine Lösung, allenfalls eine Zumutung für die Benutzer.
                                        Diese sehr starken UI/Client->Übersetzungstools für "on the fly" würde ich gerne mal sehen.
                                        Und komm mir nicht mit Google/Yandex und was es da sonst noch gibt.
                                        Deepl ist da sicher weiter und liefert teilweise wirklich brauchbare Ergebnisse, nur eben leider nicht "on the fly"

                                        ioBroker ist zum allergrößten Teil einfach Deutsch. Warum also die Entwickler quälen mit Übersetzung ins Chinesische oder warum müssen sie sich einen abbrechen, um >Ausgangstexte in Englisch zu haben? Nicht jeder spricht gut Englisch, btw.
                                        Und warum die deutlich > 90 % deutschsprechenden End-Anwender "quälen" mit fehlender Usability?

                                        Quälen und fehlende Usability sind wohl eher so Dinge wie "Übersetzungstools für 'on the fly'"
                                        ioBroker ist zu deutsch.
                                        Ich behaupte mal, dass daher auch die >90% kommen.

                                        Auserdem geht doch nicht darum Entwickler zu quälen.
                                        Zwangsweise Übersetzungen ins Chinesische oder sonst was halte ich auch nicht für besonders gut.
                                        Aber bei dir denke ich, wäre Englisch nicht so das Problem.
                                        Zusammen mit Deutsch sind das schon 2 Übersetzungen.
                                        Im Besten Fall findet sich jemand der sich die englische Übersetzung ansieht und korrigiert.
                                        Aber der Schlüssel ist nun mal Englisch, nicht Deutsch.
                                        Du wirst sicherlich mehr Leute finden, die Englisch in Französich, Italienienisch, Chinesisch usw. übersetzen können als Deutsch

                                        Ich empfinde den bisherigen Prozess (sofern ich das beurteilen kann) auch sehr aufwendig.
                                        Aber genau darum geht es doch: Den Prozess vereinfachen, für beide Seiten.

                                        Ich habe mir am Wochenende aus Neugier und Langeweile den Spass gemacht und mit ein paar mir bekannten Systemen herumprobiert um den Adapter von @Mic entsprechend anzupassen. (Ist nicht die aktuelle Version des Adapter)

                                        Das Ergebnis ist sicher weit davon entfernt perfekt zu sein aber da steckt auch nur 1 Tag Arbeit drin.

                                        Vorteil:
                                        Keine Texte im Code
                                        Namespaces (Ich habe mir erlaubt, für die Tabs jeweils einen eigenen Namespace anzulegen. Macht die Dateien übersichticher und sind besser zuzuordnen)
                                        Ümschalten der Sprache 'on the fly'
                                        Fallback auf jede gewünschte Sprache (zur Not auch 'de', falls nötig)
                                        Plural, auch mit Gender, Datum und Uhrzeit, relative Datums/Zeitangeben, Internationale Nummerierung z.B. mit Maßangaben.

                                        Ich habe zuerst nur mir der HTML-Datei gearbeitet, also ohne ioBroker.
                                        Das hat ganz gut funktioniert und deshalb habe ich das auf meiner Testinstanz mal in ioBroker integriert.
                                        Zu meiner Überraschung lief auch das fast sofort ohne Probleme

                                        Zu guter Letzt gibt es noch einen Gulp-Task zu extrahieren der Strings und zu anlegen der etsprechenden Struktur/Dateien.

                                        Hier mal als Beispiel die tabs.json für die Tabs

                                        {
                                          "home": "Start",
                                          "devices": "1. Target devices",
                                          "conditions": "2. Additional Conditions",
                                          "triggers": "3. Trigger",
                                          "zones": "4. Zones",
                                          "options": "Additional options",
                                          "locales": "I18 Demo"
                                        }
                                        

                                        Hier die tabmain.json mit nested und multiline strings
                                        @Mic So oder so ähnlich könnten dann deine Tabellen aussehen

                                        {
                                          "instructions": {
                                            "headline": "Instructions",
                                            "how_to": {
                                              "headline": "How to configure the adapter",
                                              "intro": "Simply go through the individual options pages (above tabs) as follows:",
                                              "tab": "Tab",
                                              "what_to_do": "What to do?",
                                              "devices": "Enter all your target devices to be switched, i.e. lamps, radio, etc.",
                                              "conditions": "<i>optional</i>: Enter your additional conditions that should (not) apply, e.g.: nobody present, holiday today, etc.",
                                              "triggers": "Enter all triggers here, i.e.: motion detectors, wall switches, etc., as well as time-dependent triggers.",
                                              "zones": "Define all \"zones\" (e.g. 1st floor bathroom, coffee corner, etc.) and assign triggers and target devices to be switched.",
                                              "text": "In the tab <span style=\"color: #0d47a1;\">ADDITIONAL OPTIONS</span> you can set further adapter options."
                                            },
                                            "tester": {
                                              "headline": "For testers",
                                              "text": [
                                                "This adapter provides test data points under <code>smartcontrol.x.Test</code>.",
                                                "These data points do not provide any functions or features and are only for ",
                                                "testing this adapter.",
                                                "After the first installation of an instance of this adapter, ",
                                                "the adapter options are preset with some of these data points. ",
                                                "Start testing, e.g. by activating a trigger data point, e.g. by ",
                                                "setting <code>smartcontrol.0.Test.trigger.Bathroom_motion</code> to <code>true</code> ",
                                                "Then you check if something is triggered (based on the settings in the table \"Execution\" etc.) ",
                                                "<br>The ioBroker Log (ioBroker Admin > Log) provides detailed information. ",
                                                "For debugging, please set the log level of the adapter instance to 'debug' ",
                                                "to get much more information in the log."
                                              ]
                                            },
                                            "help": {
                                                "headline": "You need help? There's a problem? You have a suggestion for improvement?",
                                              "table": {
                                                "header_1": "Your topic",
                                                "header_2": "What you should do",
                                                "topic_1": "I have a question",
                                                "answer_1": [
                                                  "The best way to ask a question is in the ioBroker forum, ideally you reference <code>@Mic</code> so that I get a message as a developer.",
                                                  "Current forum thread for this adapter is <a href=\"https://forum.iobroker.net/topic/35308/\" target=\"_blank\">Testen Adapter SmartControl 0.1.1-beta.x</a>.",
                                                  "However, this link will change and new forum threads will follow, based on the progress of the adapter development."
                                                ],
                                                "topic_2": "I have an error/bug",
                                                "answer_2": [
                                                  "No worries :-) This adapter is in an early stage of development and bugs will probably still occur.",
                                                  "First of all: Check the ioBroker log for any hints and follow them up accordingly.",
                                                  "If you are not sure if you did everything right in the adapter settings, see above \"I have a question\".<br>",
                                                  "If you really have a bug caused by this adapter, please go to <strong><a href=\"https://github.com/Mic-M/ioBroker.smartcontrol/issues\" target=\"_blank\">GitHub: Smart Control Issues</a></strong>",
                                                  "and create a new issue. Please describe the issue in detail and describe exactly and step-by-step what you were doing when/before the bug occurred. Also set the log level of the adapter to \"Debug",
                                                  "reproduce the error and put the log output in code tags (<code>```</code> insert log here...",
                                                  "<code>```</code>) in the issue. ioBroker truncates log lines, so please go directly to Logfile (by clicking on \"Download Log\")."
                                                ],
                                                "topic_3": "I would like to suggest a new feature",
                                                "answer_3": "Please open a new Github issue here: <a href=\"https://github.com/Mic-M/ioBroker.smartcontrol/issues\" target=\"_blank\"><strong>GitHub: Smart Control Issues</strong></a>."
                                              }
                                            }
                                          }
                                        }
                                        
                                        

                                        Und damit man das auch mal sehen kann: Hier ein kurzes Video
                                        Wie gesagt: Sicher weit weg von perfekt, eher ein Proof of Concept

                                        Und was die Plattform für Übersetzungen angeht:
                                        Entwickler unter sich halt 😉
                                        Erst die Plattform und dann den Weg dahin entwickeln 🙂

                                        Ich tendiere da eher zu Weblate.
                                        Viele Möglichkeiten, selbst Deepl ist möglich, wenn auch nicht kostensfrei

                                        @UncleSam sagte in Online Meeting für ioBroker Core/Dev/Admin 14.07.2020 20:30:

                                        Weblate übersetzt - nicht mehr und nicht weniger.

                                        Da muss ich widersprechen: Weblate übersetzt von Haus aus nichts.
                                        Aber ansonsten bin ich deiner Meinung: Weblate ist wohl die beste Plattform

                                        Crowdin ist sicher nicht schlechter, kostenfrei, aber eben nicht Opensource.
                                        Man muss nehmen, was man bekommt. Und wer sagt, dass es kostenfrei bleibt?
                                        Wir hatten diese Probleme mit Transifex. War plötzlich auch kostenpflichtig.
                                        Opensource kann man ggf. selbst anpassen.

                                        MicM 1 Antwort Letzte Antwort
                                        0
                                        • FenianF Fenian

                                          Ich weiß, das Thema ist schon etwas älter.
                                          Ich habe das hier vor geraumer Zeit gelesen, wollte es eigentlich ignorieren aber es hat mich die ganze Zeit beschäftigt und teilweise auch aufgeregt.
                                          Daher mal gebe ich doch noch mal meinen Senf dazu.
                                          Warum?
                                          Ich würde mich zwar nicht als Entwickler bezeichnen, habe aber knapp 16 Jahre Erfahrung in einem relativ grossen Opensource-Projekt, davon ein großer Teil mit Übersetzungen.

                                          @UncleSam sagte in Online Meeting für ioBroker Core/Dev/Admin 14.07.2020 20:30:

                                          Die Problematik muss an zwei Stellen angegangen werden:

                                          1. Die Software muss übersetzbar sein
                                          2. Die Übersetzungen müssen einfach gepflegt werden können

                                          Ja, Punkt 1 ist der wichtigste, für 2. finden sich Lösungen
                                          Aber für mich betrifft I18N nicht nur die Software an sich, sondern auch das ganze Projekt. Also Webseite/Forum/Doku etc.
                                          Und es nichts, was man mal "so eben" nebenher macht.
                                          Selbst Englisch ist nicht immer Englisch. (z.B. Postleitzahl ->post code (GB) ->zip code (US) / Ferien, Urlaub ->holiday(GB) ->vacation(US)
                                          BTW: Selbst Deepl bietet da jetzt britisch/amerikanisch an. Portugiesisch ist da jetzt auch getrennt.
                                          Englisch ist da allerdings wahrscheinlich unproblematisch, aber wir hatten da mal einen Fall in Portugisisch die Übersetzung in Portugal war völlig ok, aber in Brasilien als ungemessen/beleidigend empfunden wurde.
                                          Manchmal kann es auch politisch werden.
                                          Katalinisch ist da ein gutes Beispiel: Wir hatten sehr viele Übersetzungen ca-AD (Andorra) und nicht ca-ES (Spanien), weil viele Katalanen sich nicht mit Spanien identifizieren wollten.
                                          Für ioBroker sehe ich das nicht wirklich als Gefahr, aber wie man sieht, kann man sich da auch schnell in einem "Minenfeld" befinden.

                                          Das grösste Problem ist für mich extreme nennen wir es "Deutschlastigkeit".
                                          Beispiel: Ich klicke als nicht deutschsprachiger Benutzer z.B auf "Announcements" und was sehe ich?
                                          Jede Menge Einträge, aber alles Deutsch.
                                          Wichtige Informationen sollten aber zumindest auch auf Englisch verfügbar sein.
                                          Ob man es mag oder nicht Englisch ist nunmal der Schlüssel.

                                          "Announcements" hört sich wichtig an, aber ich kann es nicht verstehen. Was dann?

                                          Einer der Hauptgründe das ich hier schreibe ist allerdings die Äußerungen von @Mic
                                          Das harmloseste was mir dazu einfiel ist "ignorant".

                                          Als Lösung schlage ich hier vor, einfach Google Translate zu nutzen, damit wird die Übersetzung >an die UI bzw. Client übertragen. Man müsste noch mal besser schauen, welche guten Browser->Plugins es da noch so gibt, um lokale Websites einfach zu übersetzen. Denn dann kann man sich den >Kram komplett sparen.
                                          Man muss hier meiner Meinung nach auch berücksichtigen, wann das Konzept von ioBroker entstanden >ist, nämlich wohl in 2014. Mittlerweile haben wir - jetzt in Juli 2020 🙂 - sehr starke UI/Client->Übersetzungstools für "on the fly".

                                          Das ist keine Lösung, allenfalls eine Zumutung für die Benutzer.
                                          Diese sehr starken UI/Client->Übersetzungstools für "on the fly" würde ich gerne mal sehen.
                                          Und komm mir nicht mit Google/Yandex und was es da sonst noch gibt.
                                          Deepl ist da sicher weiter und liefert teilweise wirklich brauchbare Ergebnisse, nur eben leider nicht "on the fly"

                                          ioBroker ist zum allergrößten Teil einfach Deutsch. Warum also die Entwickler quälen mit Übersetzung ins Chinesische oder warum müssen sie sich einen abbrechen, um >Ausgangstexte in Englisch zu haben? Nicht jeder spricht gut Englisch, btw.
                                          Und warum die deutlich > 90 % deutschsprechenden End-Anwender "quälen" mit fehlender Usability?

                                          Quälen und fehlende Usability sind wohl eher so Dinge wie "Übersetzungstools für 'on the fly'"
                                          ioBroker ist zu deutsch.
                                          Ich behaupte mal, dass daher auch die >90% kommen.

                                          Auserdem geht doch nicht darum Entwickler zu quälen.
                                          Zwangsweise Übersetzungen ins Chinesische oder sonst was halte ich auch nicht für besonders gut.
                                          Aber bei dir denke ich, wäre Englisch nicht so das Problem.
                                          Zusammen mit Deutsch sind das schon 2 Übersetzungen.
                                          Im Besten Fall findet sich jemand der sich die englische Übersetzung ansieht und korrigiert.
                                          Aber der Schlüssel ist nun mal Englisch, nicht Deutsch.
                                          Du wirst sicherlich mehr Leute finden, die Englisch in Französich, Italienienisch, Chinesisch usw. übersetzen können als Deutsch

                                          Ich empfinde den bisherigen Prozess (sofern ich das beurteilen kann) auch sehr aufwendig.
                                          Aber genau darum geht es doch: Den Prozess vereinfachen, für beide Seiten.

                                          Ich habe mir am Wochenende aus Neugier und Langeweile den Spass gemacht und mit ein paar mir bekannten Systemen herumprobiert um den Adapter von @Mic entsprechend anzupassen. (Ist nicht die aktuelle Version des Adapter)

                                          Das Ergebnis ist sicher weit davon entfernt perfekt zu sein aber da steckt auch nur 1 Tag Arbeit drin.

                                          Vorteil:
                                          Keine Texte im Code
                                          Namespaces (Ich habe mir erlaubt, für die Tabs jeweils einen eigenen Namespace anzulegen. Macht die Dateien übersichticher und sind besser zuzuordnen)
                                          Ümschalten der Sprache 'on the fly'
                                          Fallback auf jede gewünschte Sprache (zur Not auch 'de', falls nötig)
                                          Plural, auch mit Gender, Datum und Uhrzeit, relative Datums/Zeitangeben, Internationale Nummerierung z.B. mit Maßangaben.

                                          Ich habe zuerst nur mir der HTML-Datei gearbeitet, also ohne ioBroker.
                                          Das hat ganz gut funktioniert und deshalb habe ich das auf meiner Testinstanz mal in ioBroker integriert.
                                          Zu meiner Überraschung lief auch das fast sofort ohne Probleme

                                          Zu guter Letzt gibt es noch einen Gulp-Task zu extrahieren der Strings und zu anlegen der etsprechenden Struktur/Dateien.

                                          Hier mal als Beispiel die tabs.json für die Tabs

                                          {
                                            "home": "Start",
                                            "devices": "1. Target devices",
                                            "conditions": "2. Additional Conditions",
                                            "triggers": "3. Trigger",
                                            "zones": "4. Zones",
                                            "options": "Additional options",
                                            "locales": "I18 Demo"
                                          }
                                          

                                          Hier die tabmain.json mit nested und multiline strings
                                          @Mic So oder so ähnlich könnten dann deine Tabellen aussehen

                                          {
                                            "instructions": {
                                              "headline": "Instructions",
                                              "how_to": {
                                                "headline": "How to configure the adapter",
                                                "intro": "Simply go through the individual options pages (above tabs) as follows:",
                                                "tab": "Tab",
                                                "what_to_do": "What to do?",
                                                "devices": "Enter all your target devices to be switched, i.e. lamps, radio, etc.",
                                                "conditions": "<i>optional</i>: Enter your additional conditions that should (not) apply, e.g.: nobody present, holiday today, etc.",
                                                "triggers": "Enter all triggers here, i.e.: motion detectors, wall switches, etc., as well as time-dependent triggers.",
                                                "zones": "Define all \"zones\" (e.g. 1st floor bathroom, coffee corner, etc.) and assign triggers and target devices to be switched.",
                                                "text": "In the tab <span style=\"color: #0d47a1;\">ADDITIONAL OPTIONS</span> you can set further adapter options."
                                              },
                                              "tester": {
                                                "headline": "For testers",
                                                "text": [
                                                  "This adapter provides test data points under <code>smartcontrol.x.Test</code>.",
                                                  "These data points do not provide any functions or features and are only for ",
                                                  "testing this adapter.",
                                                  "After the first installation of an instance of this adapter, ",
                                                  "the adapter options are preset with some of these data points. ",
                                                  "Start testing, e.g. by activating a trigger data point, e.g. by ",
                                                  "setting <code>smartcontrol.0.Test.trigger.Bathroom_motion</code> to <code>true</code> ",
                                                  "Then you check if something is triggered (based on the settings in the table \"Execution\" etc.) ",
                                                  "<br>The ioBroker Log (ioBroker Admin > Log) provides detailed information. ",
                                                  "For debugging, please set the log level of the adapter instance to 'debug' ",
                                                  "to get much more information in the log."
                                                ]
                                              },
                                              "help": {
                                                  "headline": "You need help? There's a problem? You have a suggestion for improvement?",
                                                "table": {
                                                  "header_1": "Your topic",
                                                  "header_2": "What you should do",
                                                  "topic_1": "I have a question",
                                                  "answer_1": [
                                                    "The best way to ask a question is in the ioBroker forum, ideally you reference <code>@Mic</code> so that I get a message as a developer.",
                                                    "Current forum thread for this adapter is <a href=\"https://forum.iobroker.net/topic/35308/\" target=\"_blank\">Testen Adapter SmartControl 0.1.1-beta.x</a>.",
                                                    "However, this link will change and new forum threads will follow, based on the progress of the adapter development."
                                                  ],
                                                  "topic_2": "I have an error/bug",
                                                  "answer_2": [
                                                    "No worries :-) This adapter is in an early stage of development and bugs will probably still occur.",
                                                    "First of all: Check the ioBroker log for any hints and follow them up accordingly.",
                                                    "If you are not sure if you did everything right in the adapter settings, see above \"I have a question\".<br>",
                                                    "If you really have a bug caused by this adapter, please go to <strong><a href=\"https://github.com/Mic-M/ioBroker.smartcontrol/issues\" target=\"_blank\">GitHub: Smart Control Issues</a></strong>",
                                                    "and create a new issue. Please describe the issue in detail and describe exactly and step-by-step what you were doing when/before the bug occurred. Also set the log level of the adapter to \"Debug",
                                                    "reproduce the error and put the log output in code tags (<code>```</code> insert log here...",
                                                    "<code>```</code>) in the issue. ioBroker truncates log lines, so please go directly to Logfile (by clicking on \"Download Log\")."
                                                  ],
                                                  "topic_3": "I would like to suggest a new feature",
                                                  "answer_3": "Please open a new Github issue here: <a href=\"https://github.com/Mic-M/ioBroker.smartcontrol/issues\" target=\"_blank\"><strong>GitHub: Smart Control Issues</strong></a>."
                                                }
                                              }
                                            }
                                          }
                                          
                                          

                                          Und damit man das auch mal sehen kann: Hier ein kurzes Video
                                          Wie gesagt: Sicher weit weg von perfekt, eher ein Proof of Concept

                                          Und was die Plattform für Übersetzungen angeht:
                                          Entwickler unter sich halt 😉
                                          Erst die Plattform und dann den Weg dahin entwickeln 🙂

                                          Ich tendiere da eher zu Weblate.
                                          Viele Möglichkeiten, selbst Deepl ist möglich, wenn auch nicht kostensfrei

                                          @UncleSam sagte in Online Meeting für ioBroker Core/Dev/Admin 14.07.2020 20:30:

                                          Weblate übersetzt - nicht mehr und nicht weniger.

                                          Da muss ich widersprechen: Weblate übersetzt von Haus aus nichts.
                                          Aber ansonsten bin ich deiner Meinung: Weblate ist wohl die beste Plattform

                                          Crowdin ist sicher nicht schlechter, kostenfrei, aber eben nicht Opensource.
                                          Man muss nehmen, was man bekommt. Und wer sagt, dass es kostenfrei bleibt?
                                          Wir hatten diese Probleme mit Transifex. War plötzlich auch kostenpflichtig.
                                          Opensource kann man ggf. selbst anpassen.

                                          MicM Offline
                                          MicM Offline
                                          Mic
                                          Developer
                                          schrieb am zuletzt editiert von Mic
                                          #75

                                          Hi @Fenian

                                          Wow, vielen Dank, dass du dich so intensiv damit beschäftigt hast und auch deinen wertvollen "Senf" 👍 🙂

                                          Sehr interessant auch deine Erfahrungen hinsichtlich selber Sprache aber unterschiedlicher Regionen, kenne ich so auch und da muss man ziemlich aufpassen. Daher hasse ich eigentlich auch gerade automatische Übersetzungen, die man dann ohne korrekturgelesen zu haben einfach so im Netz publiziert.

                                          Für ioBroker sehe ich das nicht wirklich als Gefahr, aber wie man sieht, kann man sich da auch schnell in einem "Minenfeld" befinden.

                                          Sehe ich auch so.

                                          Das harmloseste was mir dazu einfiel ist "ignorant".

                                          Danke für deine Direktheit 🙂 Und ich gebe dir Recht mit "ignorant". Hatte es auch versucht zu erklären. Letztendlich hatte ich einfach die Schnauze voll und keinen Bock mehr, als Freizeit-Entwickler ohne Personal dahinter so viel Zeit wegen Übersetzungen zu verbraten. Dies als Hintergrund zu meiner durchaus emotionalen Reaktion darauf 😉
                                          Im Nachhinein bringt uns das aber auch nicht weiter, und die Primär-Sprache muss natürlich Englisch sein, keine Frage.

                                          Auserdem geht doch nicht darum Entwickler zu quälen.

                                          Zwangsweise Übersetzungen ins Chinesische oder sonst was halte ich auch nicht für besonders gut.

                                          Aber bei dir denke ich, wäre Englisch nicht so das Problem.

                                          Zusammen mit Deutsch sind das schon 2 Übersetzungen.

                                          Gutes bzw. schlechtes Timing übrigens von uns beiden, also totale Überschneidung 😉 - ich möchte den smartcontrol-Adapter jetzt nach ziemlichen Umbauarbeiten ins Latest-Repository bringen, aber dazu muss der internationalisiert werden.
                                          Daher hatte ich erst gestern Abend ein neues Konzept implementiert:
                                          https://forum.iobroker.net/post/488807

                                          Zusammengefasst:

                                          • Die Felder werden alle wie üblich in allen Adaptern in die ioBroker-Sprachen (de, en, ru, usw.) automatisiert übersetzt - noch nicht umgesetzt, geht dann per gulp, also mit den bestehenden Bord-Mitteln. Englisch/Deutsch dabei sauber korrekturgelesen.
                                          • Die Dokumentation wird ausgelagert in markdown-Dateien, vorgehalten jeweils in Englisch und Deutsch (manuell übersetzt bzw. sauber korrekturgelesen). Dann eingebettet in die Adapter-Konfiguration je nach Sprache (Englisch/Deutsch), wobei Fallback immer Englisch ist (also für alle anderen Sprachen)

                                          Ich habe mir am Wochenende aus Neugier und Langeweile den Spass gemacht und mit ein paar mir bekannten Systemen herumprobiert um den Adapter von @Mic entsprechend anzupassen. (Ist nicht die aktuelle Version des Adapter)
                                          Das Ergebnis ist sicher weit davon entfernt perfekt zu sein aber da steckt auch nur 1 Tag Arbeit drin.

                                          Und damit man das auch mal sehen kann: Hier ein kurzes Video

                                          Sehr, sehr cool 👍 😎

                                          Hast du einen Github-Link für die Umsetzung deines Tests?

                                          FenianF 1 Antwort Letzte Antwort
                                          0
                                          Antworten
                                          • In einem neuen Thema antworten
                                          Anmelden zum Antworten
                                          • Älteste zuerst
                                          • Neuste zuerst
                                          • Meiste Stimmen


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          488

                                          Online

                                          32.4k

                                          Benutzer

                                          81.4k

                                          Themen

                                          1.3m

                                          Beiträge
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                          ioBroker Community 2014-2025
                                          logo
                                          • Anmelden

                                          • Du hast noch kein Konto? Registrieren

                                          • Anmelden oder registrieren, um zu suchen
                                          • Erster Beitrag
                                            Letzter Beitrag
                                          0
                                          • Aktuell
                                          • Tags
                                          • Ungelesen 0
                                          • Kategorien
                                          • Unreplied
                                          • Beliebt
                                          • GitHub
                                          • Docu
                                          • Hilfe