Was ist der gültige Anwendungsfall für die Internationalisierung von Protokollen? Gibt es insbesondere Anwendungen, die für eine Webanwendung sinnvoll sind?
Ich arbeite an der Konvertierung der von einer Webanwendung verwendeten Protokollierungs-API von log4j
nach slf4j
und habe festgestellt, dass die Schnittstelle, die zum Abstrahieren über die log4j
Implementierung verwendet wird, die Internationalisierung unterstützt. Mir ist auch aufgefallen, dass beide log4j
und slf4j
die Internationalisierung unterstützen, was bedeutet, dass es für jemanden nützlich sein muss.
Die Internationalisierung kann jetzt nützlich sein, wenn Sie eine Desktop-Anwendung programmieren, in der die Protokolle möglicherweise vom Endbenutzer angezeigt werden. Diese Protokollierungsfassade wird jedoch nur serverseitig für mehrere Webanwendungen verwendet, von Entwicklern, die im Allgemeinen Englisch verwenden müssen .
Antworten:
Die hier gegebenen Antworten sind zu stark an die Sichtweise des Entwicklers gebunden. Software kann jedoch von Menschen (Benutzern) verwendet (und gelesen) werden, deren meisten von ihnen keine Ahnung von Debugging, Protokollmustern, Standards usw. haben.
Angenommen, wir haben ein Produkt, das seine Aktivitäten auf verschiedenen Ebenen protokolliert. Das Produkt muss über ein Dashboard oder ein Bedienfeld verfügen, über das Benutzer die Aktivität überwachen können. Folglich müssen die Protokollspuren für Benutzer anstatt für Entwickler oder Techniker lesbar sein .
Darüber hinaus können die Benutzer von verschiedenen Standorten stammen. Was bedeutet, dass Protokolldatumsformate, numerische und Währungssymbole usw. dem Standort des Benutzers entsprechen sollten.
Warum sollten Protokolle in einer solchen Situation nicht lokalisiert werden?
Es stimmt zwar, dass Protokolle maschinenlesbar sein sollten, aber nichts hindert uns daran, einen parallelen Protokollierungsprozess ein wenig benutzerfreundlicher zu implementieren.
Ich bin damit einverstanden, dass Englisch die Standardsprache für Protokolle ist. Aber all diese "Standards" sind De-Facto-Standards . An diesem Punkt müssen wir also flexibel sein.
Wenn Sie jedoch einen guten Grund für die Verwendung der Lokalisierungsfunktion slog4j finden, fahren Sie fort. Es wurde aus einem guten Grund gemacht.
Einer dieser Gründe könnte sein, dass die heutigen Anwendungen in einem weltweiten Kontext ausgeführt werden und nicht jeder Ihre Sprache (oder Englisch) spricht / liest / schreibt. Möglicherweise nicht einmal der Helpdesk Ihres Produkts.
quelle
Wenn Entwickler von "Protokollen" sprechen, beziehen sie sich meistens auf einfache Textdateien, die Informationen enthalten, die außerhalb des Kontexts des spezifischen Codes, der sie protokolliert hat, bedeutungslos sind und keinen anderen Zweck haben als die Fehlerbehebung bei diesem Code, wenn etwas schief geht.
Wenn Entwickler von "Internationalisierung" sprechen, meinen sie meistens "wenn der Benutzer ein Sprecher der Sprache X ist, verwenden Sie die in Sprache X übersetzte Zeichenfolge anstelle der Standardzeichenfolge".
Angesichts dieser spezifischen Definitionen sind internationalisierte Protokolle fast immer eine schlechte Idee , weil:
Üblicherweise wird der Satz von Sprachen , dass alle Ihre Entwickler fließend sprechen kann , ist viel kleiner als die Menge der Sprachen , dass jeder Ihrer Benutzer sein könnten Muttersprachler. Wenn Sie also Protokolle internationalisieren, ist es wahrscheinlicher als nicht , dass Ihre Entwickler nicht in der Lage sein, sie zu verstehen.
Normalerweise sind die meisten Ihrer Benutzer keine aktiven Betreuer der von ihnen verwendeten Software. Daher könnten Ihre nicht englischsprachigen Kunden die Protokolle nicht verstehen, selbst wenn sie internationalisiert wären, da sich die meisten Protokollnachrichten auf bestimmte Codeteile und verschiedene Implementierungsdetails beziehen, die sie einfach nicht tun und sollten jemals darüber Bescheid wissen.
Durch die Internationalisierung einer Nachricht wird die Möglichkeit, Textsuchen für diese Nachricht durchzuführen, vollständig zunichte gemacht, sei es Entwickler, die ihren Code durchsuchen, oder Benutzer, die im Internet nach Problemumgehungen suchen.
Die Internationalisierung führt zu Übersetzungsfehlern oder subtilen Unklarheiten, die im Zusammenhang mit der Fehlerbehebung bei Software völlig inakzeptabel sind. Dies ist das gleiche Problem wie das Protokollieren von Zeitstempeln ohne explizite Zeitzone. Sie müssen ständig Zeit damit verschwenden, herauszufinden, was es tatsächlich bedeutet.
Wenn wir die Definitionen und Annahmen, mit denen ich begonnen habe, lockern, gibt es natürlich einige gültige Anwendungsfälle.
Im Allgemeinen sind "internationalisierte Protokolle" möglicherweise nützlich, wenn es eine leicht identifizierbare Teilmenge von Protokollnachrichten gibt , die für den durchschnittlichen Benutzer von Bedeutung sind, und wenn "Internationalisierung" neben dem Standard-Sprachprotokoll für die Entwickler ein separates Protokoll in der Sprache des Benutzers bedeutet .
Wenn in der Praxis etwas, das Sie als "internationalisiertes Protokoll" bezeichnen könnten, tatsächlich nützlich ist, ist es wahrscheinlich ohnehin eine Funktion der Anwendung.
Einige Arten von Videospielen tun dies, insbesondere solche, die sich wie Brettspiele verhalten:
Quelle: Blood Bowl, Screenshot von https://www.youtube.com/watch?v=UyQB4kDMZzE
Wenn die "Protokolle" als äußerst nützlich oder als wichtige Funktion angesehen werden, landen sie eher in einer geeigneten Datenbank als in bloßen Textdateien. Sales Tracking Software ist ein typisches Beispiel dafür:
Quelle: http://www.everlogic.com/i-want-to/see-screenshots/
Unabhängig davon, ob Sie diese "Protokolle" nennen würden oder nicht, der Text, den Sie in diesen Bildern sehen, ist eindeutig etwas, das wir internationalisieren möchten, wenn wir diese Probleme beibehalten würden.
quelle