Mudlet: Verlieren Sie keine Übersetzungen mehr, wenn Sie Änderungen vornehmen

Erstellt am 7. Sept. 2018  ·  28Kommentare  ·  Quelle: Mudlet/Mudlet

Kurze Zusammenfassung des Problems / Beschreibung der angeforderten Funktion:

Wir haben kürzlich einige kleinere Aktualisierungen an Zeichenfolgen oder sogar Kommentaren zu Zeichenfolgen vorgenommen. Nach dem Hochladen auf Crowdin sind alle kürzlich durchgeführten Übersetzungen dieser Zeichenfolgen verschwunden. Sie sollten intakt bleiben oder zumindest eine Entscheidungsmöglichkeit bieten.

Schritte zum Reproduzieren des Problems / Gründe für das Hinzufügen der Funktion:

  1. Laden Sie Dateien auf Crowdin hoch und beginnen Sie mit der Übersetzung
  2. Ändern Sie übersetzte Zeichenfolgen in der Github-Quelle
  3. Überprüfen Sie Crowdin. Die Übersetzungen sind weg!

Fehlerausgabe / Erwartetes Ergebnis der Funktion

Die Crowdin Knowledge Base erklärt dies:

Aktualisieren von Quelldateien
Wenn einige der Quellstrings geändert wurden, zeigt das System einen Dialog mit einer Liste dieser Strings an. Sie können auswählen, welche vorhandenen Übersetzungen Sie unverändert behalten oder löschen möchten und ob Sie Genehmigungen beibehalten oder entfernen möchten.
crowdin

In diesem Abschnitt geht es speziell um das manuelle Aktualisieren einer Datei über die Crowdin-Website.
Wie kann dieser Dialog beginnen, wenn die aktualisierten Dateien über die Github-Integration eintreffen?

Zusätzliche Informationen, wie Mudlet-Version, Betriebssystem und Ideen zur Lösung / Implementierung:

Beispiel spanische Änderungen aus der Sammlung
1

Die spanische Übersetzung "so" ist weg. In diesem Fall hat sich nicht einmal der Quellstring geändert, sondern nur der Kommentar des Strings. In anderen Fällen war eine Zeichenfolge sehr lang (~100 Wörter) und nur 1 Wort wurde geändert, der Rest blieb unverändert. Natürlich ist ein Großteil der Übersetzung noch gültig, also sollte es nicht so gelöscht werden.

Die Übersetzer können „also“ immer noch als Vorschlag sehen, wenn sie sich die Mühe machen, jede einzelne Zeichenfolge noch einmal durchzuklicken (auch die, die noch nicht übersetzt wurden), aber der Vorschlag steht zwischen anderen Vorschlägen und ist nicht einmal als „das wurde schon die Übersetzung genau dieser Zeichenfolge zuvor"

2

discussion i18n & l10n

Hilfreichster Kommentar

Danke, geschätzt :) wir werden das studieren.

Alle 28 Kommentare

Irgendeine Idee, wie man Abhilfe schafft? @Crowdin

Wo ziehen Sie die Grenze zwischen dem Aufbewahren oder Verwerfen einer Übersetzung?

Mir erscheint es am besten, die Übersetzung wieder in TM einzufügen, es ist sehr einfach, sie wieder herauszuziehen, und der Übersetzer kann entscheiden, ob er den Text wiederverwenden möchte oder nicht.

Genau, diese Linie muss für jeden String einzeln gezogen werden, wie der Screenshot von Crowdin vermuten lässt.

Ich würde eine Option für Übersetzer begrüßen, um diesen Popup-Dialog zu starten, nachdem sie die Fäden von Github gezogen haben.

Im Moment können sie nicht einmal unterscheiden, welche Zeichenfolgen zuvor übersetzt wurden, um einen Zug schnell zu beheben.

Ich halte es nicht für sinnvoll, bei jeder Änderung Stunden damit zu verbringen, zu recherchieren, welche Übersetzungen kaputt gegangen sind.

Wenn Sie Qts eigenen Linguist (oder besser lupdate ) verwenden, um eine Reihe sprachspezifischer .ts Dateien direkt aus dem Quellcode zu aktualisieren, hat lupdate eine Option:

          Drop all obsolete and vanished strings.

Nur wenn diese Option bereitgestellt wird, führt dies dazu , dass nicht verwendete oder veraltete Zeichenfolgen aus den .ts -Dateien gelöscht werden. Irgendwie müssen wir CrowdIn dazu bringen, sich für uns so zu verhalten. :beten:

Wichtig ist, dass ich nicht denke, dass eine Änderung in einem Kommentar (obwohl möglicherweise eine Änderung in einer Begriffsklärung anders ist) die Übersetzung löschen sollte - es könnte akzeptabel sein, dass sie den Status "genehmigt" verliert, aber nicht, dass sie vergessen wird.

Hallo allerseits,

Bitte beachten Sie, dass Sie Übersetzungen für geänderte Zeichenfolgen auch speichern können, wenn Sie die Datei über CLI / API / GitHub aktualisieren, indem Sie den Parameter update_option in der Konfigurationsdatei ( crowdin.yml ) angeben, die in Ihrem Repository gespeichert ist.

Mehr Info:
https://support.crowdin.com/configuration-file/#changed-strings-update

Nachdem Sie die Änderung vorgenommen haben, pausieren Sie bitte die Integration in Crowdin und setzen Sie sie fort, um die Änderungen zu übernehmen

Hoffe das ist genau das was du brauchst!

Danke für die Antwort!

@Kebap welche Option möchtest du?

Danke Leute. Das ist fantastisch. Werde Optionen im Detail prüfen.

Ich würde gerne die Option "update_as_unapproved" ausprobieren, das scheint ein guter Kompromiss zu sein: Übersetzungen bleiben intakt, verlieren aber ihren genehmigten Status.

Als ich das jetzt getestet habe, schien es nicht zu funktionieren. Saiten verloren immer noch ihre Übersetzungen. Ich bin sogar so weit gegangen, das automatisch erstellte Kurzlayout der YAML-Konfigurationsdatei so zu verbessern, dass es genau das Beispiel widerspiegelt, das im oben verlinkten Knowledge Base- Abschnitt angegeben ist.

Dennoch hat der Crowdin anscheinend leider nur die Zeichenfolgen ersetzt, anstatt ihre Übersetzungen beizubehalten und nur die Genehmigung zu entfernen. Mache ich es falsch?

Zeichenfolge hatte zuvor Übersetzung und Genehmigung (die Genehmigung scheint in der .ts-Datei unsichtbar zu sein?)
image

Die Aktualisierungsoption „update_as_unapproved“ wurde mit kurzem und langem Yaml-Layout getestet, beide mit demselben Ergebnis
image

Nach dem Ändern der Zeichenfolge (oder des Kommentars) zeigt Crowdin jetzt die geänderte Zeichenfolge ohne Übersetzung und Genehmigung an
image

Crowdin Diff meldet Zeichenfolgen als „gelöscht und hinzugefügt“, nicht „behalten, aber ihre Genehmigung verloren“
image

-- Bitte antworten Sie oberhalb dieser Zeile --

        Hi everyone,

Es scheint, dass das Problem darin besteht, dass Ihre Dateien in Ihrem Projekt .html und sind
.ts. Die Dateien dieses Typs haben keine klare KEY:VALUE -Struktur,
Daher werden beim Aktualisieren der Dateien alle geänderten Zeichenfolgen angezeigt
gelten als neue Saiten. Es ist das erwartete Verhalten des Systems,
Aber ich werde die Entwickler fragen, ob es etwas gibt, was man tun kann
Fall, sobald sie im Büro sind!

Wie würden Sie meine Antwort bewerten?
Großartig [1] Okay [2] Nicht gut [3]

--
Aufrichtig,
Olga Kuhta
Kundenerfolgsmanager

Verbindungen:

[1]
https://secure.helpscout.net/satisfaction/204306672/record/1818790773/1/
[2]
https://secure.helpscout.net/satisfaction/204306672/record/1818790773/2/
[3]
https://secure.helpscout.net/satisfaction/204306672/record/1818790773/3/

    > On Sat, Sep 8, 2018 at 1:34:23 EEST, Mudlet/mudlet <[email protected]> wrote:

Ich würde gerne die Option "update_as_unapproved" ausprobieren, dies scheint eine zu sein
guter Kompromiss: Übersetzungen bleiben erhalten, verlieren aber ihre Freigabe
Status.

Als ich das jetzt getestet habe, schien es nicht zu funktionieren. Saiten sind immer noch verloren
ihre Übersetzungen. Ich ging sogar so weit, das automatisch zu verbessern
kurzes Layout der Konfigurationsdatei yaml [1] erstellt, um
spiegeln genau das Beispiel im Abschnitt Knowledge Base [2] wider
oben verlinkt.

Dennoch hat der Crowdin scheinbar leider nur den ersetzt
Zeichenfolgen, anstatt ihre Übersetzungen beizubehalten und einfach die zu entfernen
die Genehmigung. Mache ich es falsch?

String hatte zuvor Übersetzung und Genehmigung (Genehmigung scheint
unsichtbar in .ts-Datei?)
[3]

Update-Option „update_as_unapproved“ wurde mit short und long getestet
yaml-Layout, beide zum gleichen Ergebnis
[4]

Nach dem Ändern der Zeichenfolge (oder des Kommentars) zeigt Crowdin jetzt geändert an
Zeichenfolge ohne Übersetzung und Genehmigung
[5]

Crowdin Diff meldet Zeichenfolgen als „gelöscht und hinzugefügt“, nicht „behalten, aber
ihre Zustimmung verloren“
[6]

-
Sie erhalten dies, weil Sie erwähnt wurden.
Antworten Sie direkt auf diese E-Mail, sehen Sie sie auf GitHub [7] an oder schalten Sie sie stumm
Faden [8].

Verbindungen:

[1] https://github.com/Kebap/Mudlet/blob/crowdin-test/.crowdin.yml
[2]
https://support.crowdin.com/configuration-file/#changed-strings-update
[3]
https://user-images.githubusercontent.com/117238/45245753-12b3a300-b2fe-11e8-819a-fbc1cab389cd.png
[4]
https://user-images.githubusercontent.com/117238/45245828-632b0080-b2fe-11e8-8457-d16f53e62976.png
[5]
https://user-images.githubusercontent.com/117238/45245723-e7c94f00-b2fd-11e8-831d-14f3c0151aa8.png
[6]
https://user-images.githubusercontent.com/117238/45245651-843f2180-b2fd-11e8-8744-b431244e39e8.png
[7]
https://github.com/Mudlet/Mudlet/issues/1961#issuecomment -419583856
[8]
https://github.com/notifications/unsubscribe-auth/AA0k1tqzDWWwb2qGudFk9ENRg7Hm3D-Hks5uYvRcgaJpZM4WeaRq

Ja, Qt IDE verwendet .ts-Dateien. Das ist sicher keine Nische. Irgendwelche Empfehlungen von Crowdin-Entwicklern?

Das Feedback von Qt war nicht schlüssig:

(Kebap) Hallo zusammen! Hat jemand schon einmal eine webbasierte Service-Website für die Abwicklung von Übersetzungen und Übersetzern verwendet? Wir verwenden Crowdin und sie scheinen mit dem Qt .ts-Dateiformat nicht gut zu funktionieren. Sie scheinen zu glauben, dass jede geänderte Zeichenfolge eine neue Zeichenfolge ist, und werden alte Übersetzungen löschen. Siehe folgenden Thread für Details. Wie können wir das lösen? https://github.com/Mudlet/Mudlet/issues/1961
(frkleint) Kebap: Ich würde empfehlen, auf der Mailingliste http://lists.qt-project.org/mailman/listinfo/localization zu posten
(Kebap) Anscheinend geht es in dieser Mailingliste um das Translatin-Qt-Projekt selbst. Aber vielleicht gibt es andere Leute, die ihr eigenes Projekt mit Qt erstellen und in andere Sprachen übersetzen?
(frkleint) Kebap: Ja, aber die richtigen Betreuer/Leute werden es lesen

Lassen Sie mich alle Details noch einmal überprüfen, @Kebap. Ich habe einen "Plan B" im Kopf, muss ihn aber ausprobieren.

Wäre es in Ordnung, wenn Sie den Ausgangstext / die Übersetzungen in der Element der .ts-Datei? In dem Sie können beispielsweise eine eindeutige String-ID haben

Derzeit importieren/laden wir eine Datei mudlet.ts hoch, die den Quelltext in CrowdIn enthält, und sie verarbeiten diese, um ein mudlet_xx_YY.ts zu erzeugen, wobei xx der aus zwei Buchstaben bestehende Sprachcode und YY ist ein aus zwei Buchstaben bestehender Ländercode. Das ursprüngliche mudlet.ts wird, glaube ich, mit dem Qt-Dienstprogramm lupdate generiert/aktualisiert, das meiner Meinung nach von unserem Quellverzeichnis ./translations als lupdate -locations absolute ../src/mudlet.pro -ts ./mudlet.ts {at zumindest von einem *nux OS}.

Es gibt eine Alternative, aber ich weiß nicht, ob CrowdIn so funktionieren kann, indem wir die einzelnen .ts -Dateien bereitstellen (derzeit:

  • mudlet_de_DE.ts
  • mudlet_el_GR .ts`
  • mudlet_en_GB.ts
  • mudlet_es_ES.ts
  • mudlet_fr_FR.ts
  • mudlet_it_IT.ts
  • mudlet_nl_NL.ts
  • mudlet_pl_PL.ts
  • mudlet_ru_RU.ts
  • mudlet_zh_CN.ts
  • mudlet_zn_TW.ts

)-Dateien an CrowdIn und lassen es/das Übersetzungsteam daran arbeiten. Dies würde dann bedeuten, dass die bestehenden Übersetzungsarbeiten in jeder .ts -Datei beibehalten werden – so sieht Qt eigentlich die Übersetzung vor –, weil lupdate dann jede einzelne Übersetzungsdatei mit den Änderungen aktualisiert aus den Codequellen entfernt, wenn es ausgeführt wird, aber alte Texte, die nicht mehr in den Quellen erscheinen, nicht verwerfen (es sei denn, dies wird ausdrücklich mit dem -no-obsolete -Argument angegeben). Der Nachteil dabei ist, dass es keine einzige Quelldatei für alle Übersetzungen gibt, die das CrowdIn -System verwirren/nicht funktionieren könnten. Der Vorteil ist, dass #1963 sofort kein Problem mehr wird, da wir die Pluraldatei mudlet_en_US.ts generieren und sie einfach in den Upload zu CrowdIn bei Veröffentlichung/Version/was auch immer ändern können...

Ich denke, Crowdin benötigt eine einzelne Datei als Eingabe. Ich erinnere mich, dass es während des Setups mehrere Dateien nicht mochte - das Problem war nämlich, dass die Eingabe- und Ausgabedatei gleich waren.

Obwohl wir die Eingabe- und Ausgabedateien einfach anders benennen könnten?

Crowdin kann sicherlich mit mehreren Eingabedateien umgehen, z. B. in verschiedene zu übersetzende Zeichenfolgen. In SlySvens Plan hätten sie jedoch alle denselben Inhalt. Das würde bedeuten, dass sogar das polnische Übersetzungsteam alle Dateien einschließlich mudlet_it_IT.ts und mudlet_ru_RU.ts usw. sehen würde. Daher haben wir diesen Weg nicht viel weiter verfolgt und uns stattdessen für eine zentrale Übersetzungsdatei entschieden.

Bearbeiten: Die Erklärung zum Erstellen von .ts-Dateien ist korrekt, aber der eigentlich verwendete Befehl lautet: lupdate -recursive .\src\ -ts .\translationsmudlet.ts

Ich bin mir nicht sicher, was du da meinst, Vadim, aber ich denke, Kebap ist auf der gleichen Spur - wir könnten alle Dateien eingeben, aber wie sagen/sagen wir dann CrowdId, dass nur die mudlet_ru_RU.ts des Sets angezeigt werden sollen Russisch (Russland) Übersetzer?

@vadi2 Du hast Recht, es wird empfohlen, eine einzelne Quelldatei hochzuladen, Crowdin generiert selbst übersetzte Dateien.

Bitte laden Sie keine Dateien wie mudlet_ru_RU.ts in das Projekt hoch.

Vielleicht können wir einen Anruf vereinbaren, um das weiter zu besprechen? Bitte erreichen Sie mich unter andriy(at)crowdin.com

Ich habe eine Idee im Kopf, die sicher funktionieren wird, aber ich muss hören, ob Sie damit zufrieden sein werden. Die Sache ist, dass .ts keine eindeutigen Bezeichner für jede Zeichenfolge haben - wie in .po, Dateien, in denen msgid gleichzeitig Quelle und Bezeichner ist, ist <source> auch Text und Bezeichner (Zusammen mit den Elementen <context> und <name> wird jede Zeichenfolge als einzigartig betrachtet, und wenn Sie <source> ändern, wird die Zeichenfolge als neu betrachtet und Sie können Übersetzungen nicht für geändert behalten Zeichenfolgen im Ergebnis).

Wie auch immer, es gibt eine ziemlich gute Lösung / Problemumgehung, die ich gerne mit Ihrem Team besprechen / demonstrieren würde;)

... und nur ein Teil des Inhalts wäre derselbe - die Texte aus den Quellen -, aber die bereits für jedes Gebietsschema vorgenommenen Übersetzungen werden ebenfalls in ihrer jeweiligen Datei gespeichert und sind in jedem folgenden Aktualisierungs-Übersetzungszyklus vorhanden.

Wenn ich es verstehe, ist das eindeutige Nachrichtenkennungsschema auch im Qt-System zulässig, aber es ist schwieriger, damit zu arbeiten - und eine Änderung während des Projekts ist eine nicht triviale Aufgabe (die beiden Systeme schließen sich gegenseitig aus und Sie benötigen eine sehr gute Methodik um aussagekräftige Bezeichner zu finden) - und ein Teil des Vorteils des bestehenden Schemas besteht darin, dass doppelte Zeichenfolgen zu einer einzigen gemeinsamen Übersetzung zusammengeführt werden. Wenn Sie jedoch eine ändern, müssen sich auch die anderen ändern, wenn sie dies sein sollen gleich...

Wenn wir alle Zeichenfolgen in einer Sprache zu 100 % übersetzen und dann einige in einer Version bearbeiten, wäre es dann nicht immer noch sehr einfach, sie durchzugehen und sie dank TM wieder hinzuzufügen?

Dieses Problem scheint nur ein echtes Problem zu sein, weil wir noch keine 100 % erreicht haben.

@vadi2 Falls Sie die Möglichkeit haben möchten, neu hinzugefügte Zeichenfolgen mit Hilfe von TM automatisch zu übersetzen, können Sie einen solchen Workflow mit der Funktion „ Erweiterte Workflows “ einrichten (ich habe sie gerade für Ihr Konto aktiviert).
https://support.crowdin.com/advanced-workflows/

Danke, geschätzt :) wir werden das studieren.

@Kebap schrieb:

Bearbeiten: Die Erklärung zum Erstellen von .ts-Dateien ist korrekt, aber der eigentlich verwendete Befehl lautet: lupdate -recursive .\src\ -ts .\translationsmudlet.ts

-recursive ist der Standard-Argumentfall und ist nicht notwendig - und -locations absolute anscheinend auch für neue Dateien ... :slightly_smiling_face: - Ich habe das gerade herausgefunden, als ich nachgesehen habe, welche Auswirkung es hat die Probleme, die lupdate immer noch mit C++11/14 Raw-String-Literalen { QTBUG , #1310} hat und ob Strings aus der Datei mudlet.ts verloren gehen, weil sie sie verwechseln. . :stirnrunzeln:

@Kebap Ist das immer noch ein Problem?

Ja, wenn auch nicht mehr so ​​schlimm wie vor der Umstellung. Aber es ist immer noch verwirrend, selbst für Eingeweihte, wie Sie an der verlinkten Ausgabe von vor einer Woche sehen können.

Außerdem gibt es derzeit ein kleines Rennen, während die meisten Sprachen noch nicht annähernd 100% sind, werden sie Strings schneller übersetzen, als sie wieder Übersetzungen verlieren?

Außerdem habe ich ein Problem gefunden, das anscheinend gelöschte Übersetzungen zurückbringt. Aktuell finde ich keine Möglichkeit eine Übersetzung aus dem Crowdin zu löschen. Nach dem nächsten Update wird es automatisch wieder hinzugefügt.

@Andrulko Hast du hier Neuigkeiten? Du hast oben einen Plan B erwähnt.

Außerdem, warum macht Crowdin jetzt dieses seltsame Verhalten in TM!? Siehe Screenshot unten zum Vergleich.

Alles, was hier von uns geändert wurde, ist h3 in a . Kein anderes Tag wurde berührt. Was ist nun passiert?

Würden Sie erwarten, dass Übersetzer jedes {[=-lt;-=]}h2{[=-gt;-=]}{[=-lt;-=]}u{[=-gt;-=]} #$ manuell durch <h2><u> oder vielmehr <0> ersetzen?

Link zum Beispiel: https://crowdin.com/translate/mudlet/137/en-de
Screenshot des Beispiels:
grafik

Ich denke, das ist ein Fehler in Crowdins TM. Wahrscheinlich am besten, ihnen als separates Problem zu melden.

Ich habe sie auch hier informiert: https://crowdin.com/contacts

Hallo, wir haben Ihre Anfrage bereits geprüft und auf Ihre E-Mail geantwortet. Bitte teilen Sie uns mit, wenn Sie weitere Fragen haben!

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen