zreptil/nightscout-reporter

neue Ubersetzung - wie ?

k2s opened this issue · 4 comments

k2s commented

Ich arbeite an Übersetzung in die Slowakische Sprache und wurde Sie gerne gleich ausprobieren.

NSR läuft bei mir auch lokal nach diesen Schritten:

  • pub global activate webdev
  • pub get
  • mit webdev serve starten
  • in Chrome/Chromium http://127.0.0.1:8080/ starten (nicht in Firefox - da hat die dev version nich gelaufen)
  • messages/sk/intl_sk_SK.arb anlegen (habe https://translate.google.com/toolkit benutzt)
  • lib/asserts/img/lang-sk.png anlegen
  • in globals.dart neue Sprache registrieren

Und jetz stehe ich vor dem Retzel wie ich richtig die Übersetzungen kompiliere.

pub run intl_translation:generate_from_arb --output-dir=lib/messages/ lib/*.* lib/src/*.* lib/src/**/*.* lib/src/**/**/*.* messages/*/intl_*.arb

Das generiert aber zu viele Unterschiede in existierenden lib/messages/ Datein.
Was wäre der richtige Befehl ?

Hallo,

für die Verwaltung der Übersetzungen habe ich mir einige Batchdateien geschrieben, die mir viel Arbeit abnehmen. Sie extrahieren die vorhandenen Texte aus dem Sourcecode, erstellen die ARB-Dateien und verwandeln dann die von Crowdin generierten Dateien in DART-Dateien um, wobei diese gleich an die richtige Stelle kopiert werden.

Die Batchdateien werden im Verzeichnis von nightscout-reporter aufgerufen.

Ich habe hier die Datei i18n.zip angehängt. Diese beinhaltet die benötigten Batch-Dateien. Ich habe ein Windows System, weshalb ich da nur für diese Plattform sagen kann, dass es so funktioniert.

Die Dateien aus dem Sourcecode werden mit Aufruf von i18n-extract.bat extrahiert. Dann werden sie in Crowdin übersetzt und die entsprechenden Dateien im Verzeichnis messages gespeichert.

Danach wird i18n-generate.bat aufgerufen, um diese Dateien umzuwandeln und ins Verzeichnis lib/messages zu speichern.

Da gab es bisher zwei Probleme. Das eine war, dass die erstellten DART-Dateien doppelte Einträge enthielten. Das liegt daran, dass manche Texte im Quellcode doppelt vorkommen, was bei modularem Aufbau eines Programms eher normal ist, wie ich denke. Ich könnte da umgehen, indem ich sämtliche Texte zentral in ein Modul packe, aber das nimmt mir dann einiges an Flexibilität bei der Programmierung. Deswegen gibt es die Batchdatei i18n-dedupe.bat, die von i18n-generate.bat aufgerufen wird und die doppelten Einträge aus den DART-Dateien entfernt.

Das andere Problem war die grosse Menge an Dateien, aus denen Nightscout Reporter mittlerweile besteht. Das hat die Windows-Commandline gesprengt. Deswegen habe ich im Projekt intl auf Github einen Pullrequest eingestellt, der zwei Parameter hinzufügt, mit denen man zwei Dateien als Parameter angeben kann, die jeweils die auszulesenden DRT-Dateien und die zu erzeugenden ARB-Dateien beinhalten. Diese Dateien werden auch in den Batchdateien erstellt.

Wenn Du die Batchdateien analysierst müsstest Du die richtigen Befehle rausfinden können. Du steckst da vermutlich zur Zeit wesentlich besser drin als ich, weil es schon einige Monate her ist, dass ich das ganze System zusammengebaut habe.

Ich hoffe, das hilft Dir dabei, die Übersetzungen zusammen zu bauen.

i18n.zip

k2s commented

Danke, das hilft sehr.

  • ich habe dein i18n-generate.bat ins Dart ungeschieben - in Arbeit
    • muss noch deine dedupe funktion umschreiben
  • eine komplikation ist dass man intl_translation global und aus deinem GitHub installieren muss

Ich habe die Slowakische Sprache auf Crowdin hinzugefügt.

https://crowdin.com/project/nightscout-reporter

Es ist nicht nötig, den Code zu ändern. Ich muss dafür sorgen, dass das ohne grosse Probleme übersetzbar ist, weshalb ich da keine Änderungen am Buildsystem vornehmen werde, ausser der Erweiterung um weitere Sprachen. Da ich gerade mitten in grösseren Umbauarbeiten bin, die noch einige Zeit in Anspruch nehmen werden, wäre es hilfreich, wenn Du die Übersetzungen einfach auf Crowdin einpflegst. Bei der nächsten Version ist dann Slowakisch mit in der Sprachliste, wenn genug übersetzt wurde.

Mir war nicht klar, dass Du das im offiziellen Code haben willst. Dann hätte ich Dir gleich gesagt, dass Du das am Besten auf Crowdin eingibst, nachdem ich die Sprache freigegeben habe.

k2s commented

Natürlich. Danke.

Nur ist es nicht leicht die Übersetzung zu machen wenn ich es nicht gleich sehe. Ein typischer Problem ist dass Deutsche Sprache Nomen mit groß schreibt und I weiß dann nicht ob es sich um begin eines Satzes/Label handled (wurde auch gross schreiben) oder nur ein Wort is (klien bei mir).
pub run i18n-gen in meinem Repo wird mir dabei helfen (benutze Linux/Mac, kein Win). Werde das pull request zurick nehmen.

Vielen dank für den Reporter und deine Zeit.