Ist es sinnvoll, Protokolle zu internationalisieren?


8

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 log4jnach slf4jund habe festgestellt, dass die Schnittstelle, die zum Abstrahieren über die log4jImplementierung verwendet wird, die Internationalisierung unterstützt. Mir ist auch aufgefallen, dass beide log4jund slf4jdie 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 .



8
Protokolle in einer anderen Sprache als Englisch erschweren die Online-Suche nach Hilfe, da dadurch weniger übereinstimmende Ergebnisse in Google erzielt werden.
Tulains Córdova

4
Ich verbringe Stunden meines Tages damit, verschiedene Filterregeln für Protokolle zu verwenden. Offensichtlich macht die Internationalisierung der Einträge das viel schwieriger
Gort the Robot

Ich frage mich, ob einige Leute abstimmen, wenn sie tatsächlich "Nein, das ist falsch" meinen ... Dafür ist Abstimmen nicht gedacht: /
Andres F.

@AndresF. Wenn Ihr Kommentar an eine Antwort angehängt wäre, würde ich Ihnen eigentlich überhaupt nicht zustimmen. Diese Frage ist zwar beantwortbar, aber auch meinungsbezogen. Eine Ablehnung ist nicht so schlecht.
Jpaugh

Antworten:


6

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.


Sie machen einen guten Punkt. Die Verwendung eines Protokollierungsframeworks zum Senden (internationalisierter) Nachrichten an den Endbenutzer ist sinnvoll. Warum die Protokollierung neu erfinden, wenn sie bereits vorhanden ist?
Jpaugh

1
Ich denke, es geht um Anpassungen. Wir brauchen / wollen eine zusätzliche Funktion. Aber wir "erfinden das Rad oft neu" :-)
Laiv

2
Ich habe ein Rad, das ich selbst gemacht habe. Es ist das beste Rad aller Zeiten! Es ist glänzender und runder als jedes andere. Es passt aber nicht auf ein vorhandenes Auto. Ich muss ein Auto machen, um mein Rad zu passen ... ;-)
jpaugh

11

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:

  1. Ü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.

  2. 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.

  3. 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.

  4. 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:

Geben Sie hier die Bildbeschreibung ein

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:

Geben Sie hier die Bildbeschreibung ein

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.


Du kommst aus meiner Sicht. Die Wiederverwendung der vorhandenen Protokollierungs-API zum Senden von Statusmeldungen an den Benutzer ist jedoch sehr sinnvoll, da ich jetzt darüber nachdenke. Es ist einfacher, der Protokollierung eine Internationalisierung hinzuzufügen, als einen benutzerdefinierten Ad-hoc-Protokollierer für die Benutzeroberfläche zu erstellen.
Jpaugh

Stellen Sie sich vor, Sie haben einen Fehler, der nur in einer auf Japanisch lokalisierten Version auftritt. Und Ihre Entwickler haben eine Protokollierung hinzugefügt, die es sehr einfach macht, den Fehler zu finden und zu beheben. Außer dass Ihre Protokollierung auf Japanisch ist und keiner Ihrer Entwickler es verstehen kann :-(
gnasher729

Kein Problem, teilen Sie mir den Fehlercode und die Eingabedaten mit, die den Fehler verursacht haben. :-)
Laiv
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.