Ich versuche, alle Strings (und andere Konstanten), die ich in einer beliebigen Anwendung verwende, aus vielen Gründen zu externalisieren, die für die meisten Stack-Überlaufer wahrscheinlich die zweitwichtigste Eigenschaft sind Überprüfen von beliebigen sichtbaren Strings. Dies wirft ein paar Probleme auf:
Wie integrieren Sie so etwas in Ihre Build-Prozeduren / Test-Suites? Es ist nicht praktikabel, wenn alle Zeichenfolgen in einer Anwendung bei jeder Änderung manuell überprüft werden - und es gibt keine Möglichkeit, dass sie beim ersten Mal richtig geschrieben werden.
Wir machen es manuell, wenn Fehler während des Tests nicht erkannt werden, dann werden sie vom QA-Team oder während der Lokalisierung durch die Übersetzer oder während der Lokalisierungs-QA aufgegriffen. Dann legen wir einen Fehler.
Die meisten unserer Entwickler sind keine englischen Muttersprachler, daher ist es kein ungewöhnliches Problem für uns. Die Zahl, die durch die Risse rutscht, ist so gering, dass dies für uns eine befriedigende Lösung ist.
Nichts über ein paar hundert Zeilen ist jemals 100% fehlerfrei (na ja ... vielleicht ein bisschen Embedded Code), denken Sie einfach an Rechtschreibfehler als Bugs und verschwenden Sie nicht zu viel Zeit damit.
Sobald Ihre Anwendung reifer wird, werden mehr als 90% der Zeichenfolgen zwischen den Versionen nicht geändert und es wäre eine ziemlich triviale Übung, zwei Versionen Ihrer Ressourcen zu vergleichen, herauszufinden, was neu ist (zuerst prüfen), was ist geändert / aktualisiert (nächste Überprüfung) und was sich nicht geändert hat (keine Notwendigkeit, diese zu überprüfen)
Denken Sie also eher daran, dass ich ALLE diese beim ersten Mal manuell überprüfen muss, und ich werde erst beim nächsten Mal 10% davon überprüfen müssen. Jetzt fragen Sie sich, ob Sie die Rechtschreibprüfung noch automatisieren müssen.
Ich kann mir zwei Möglichkeiten vorstellen, dies halbautomatisch zu erreichen:
Lassen Sie den Compiler Sie dabei unterstützen, zwischen Strings, die in der Benutzeroberfläche verwendet werden, und Strings, die an anderer Stelle verwendet werden, zu unterscheiden. Überladen Sie verschiedene Varianten des String-Datentyps je nach Zweck und überlasten Sie die Ausgabemethoden, um nur diesen Typ zu akzeptieren. Auf diese Weise können Sie eine gefälschte Benutzeroberfläche erstellen, die nur die UI-Zeichenfolgen ausgibt und die Rechtschreibprüfung durchführt.
Wenn dies machbar ist, hängt natürlich die Plattform und die gesamte Architektur der Anwendung ab.
Ein anderer Ansatz könnte darin bestehen, einfach die Datenbank der Rechtschreibprüfung mit allen im Code erscheinenden Strings zu aktualisieren - Kommentare, xpaths, Tabellennamen, Sie nennen sie - und betrachten sie als vollkommen cromulent. Dies wird natürlich die Genauigkeit der Rechtschreibprüfung reduzieren.
Als erstes, was die Externalisierung von Strings betrifft - GNU GetText erzeugt (wenn es richtig verwendet wird) String-Dateien, die fast keinen anderen Text enthalten als den eigentlichen Inhalt der Strings (es gibt einige Header, aber es ist einfach, eine Rechtschreibprüfung zu veranlassen, sie zu ignorieren) ).
Als Zweites würde ich die Rechtschreibprüfung in einer Umgebung mit kontinuierlicher Integration ausführen und die Fehler extern über eine Webschnittstelle einspeisen lassen, aber E-Mail funktioniert auch. Entwickler können dann die Fehler überprüfen und entweder im Code korrigieren oder eine einfache Schnittstelle verwenden, damit die Rechtschreibprüfung erkennt, dass ein Rechtschreibfehler ignoriert werden sollte (eine Webschnittstelle kann sowohl die Fehleransicht als auch die Rechtschreibprüfungsschnittstelle integrieren) >
Wenn Sie Java verwenden und Ihre lokalisierten Zeichenfolgen in Ressourcen-Bundles speichern, können Sie die Dateien Bundle.properties überprüfen und die Bundle-Zeichenfolgen überprüfen. Sie könnten auch eine spezielle Kommentaranmerkung hinzufügen, die Ihr Prozessor verwenden könnte, um zu bestimmen, ob ein Eintrag übersprungen werden sollte.
Mit dieser Methode können Sie einen Hinweis auf das Gebietsschema geben und eine Möglichkeit zum Überprüfen mehrerer Sprachen innerhalb des einen Erstellungsprozesses bereitstellen.
Ich kann nicht beantworten, wie du die eigentliche Rechtschreibprüfung selbst durchführen würdest, obwohl ich denke, dass das, was ich dir vorgestellt habe, dich für die Methode der Rechtschreibprüfung leiten wird.
Erster Punkt, bitte bringe es nicht in deinen Build-Prozess. Ich wäre ein rachsüchtiger Programmierer, wenn ich (dh mein Computer) alle Inhalte auf der Website jedes Mal überprüfen müsste, wenn ich versuche, ein neues Feature zu debuggen oder zu erstellen. Ich glaube nicht einmal, dass diese Art von Operation als Komponententest gehört (Sie testen eine menschliche Schnittstelle, keine computergesteuerte).
Zweiter Punkt, schreibe kein Skript. Sie werden so viele falsche Positive durch die Risse fallen lassen, dass die Leute aufhören werden, die Berichte zu lesen, und Sie sind nicht besser dran, als zu Beginn.
Drittens, das ist wahrscheinlich am einfachsten zu lösen, wenn Menschen es tun: QA-Team, Texter, Beta-Tester, Übersetzer usw. Alle großen Websites mit internationalisierten Inhalten, die ich erstellt habe, hatten den gleichen Prozess: wir nahmen die Kopie von den Kopierern, schickte sie an den Übersetzungsdienst / die Übersetzungsagentur, legte sie in die Persistenzschicht und implementierte sie. Tester (QA, Entwickler, PMs, Designer usw.) würden Rechtschreib- oder Grammatikfehler finden und Fehlerberichte einreichen. Es gibt einfach zu viel Bürokratie und Augenpaare für das viele Rechtschreib- / Grammatikfehler durchschlüpfen.
Vierter Punkt, es wird immer Rechtschreib- und Grammatikfehler auf Ihrer Seite geben. Selbst große Zeitungswebseiten haben das nicht verstanden und sie haben ganze Bürogebäude voller Redakteure.
Tags und Links build build-process spell-checking build-automation