Frage

Ich arbeite auf der Lokalisierung von Java-Software, und meine Projekte haben sowohl .properties-Dateien und XML-Ressourcen. Wir verwenden derzeit Kommentare Übersetzer anzuweisen, nicht bestimmte Zeichenfolgen zu übersetzen, aber das Problem mit Kommentaren ist, dass sie nicht maschinenlesbar sind.

Die einzige Lösung, die ich denken kann, ist jedes do-not-translate Schlüssel mit so etwas wie _DNT_ Präfix und unsere Übersetzungstools trainieren diese Einträge zu ignorieren. Hat jemand da draußen eine bessere Idee?

War es hilfreich?

Lösung

Könnten Sie die Dateien brechen in solche übersetzt oder solche werden nicht übersetzt werden und dann nur die eine senden, die übersetzt werden sollen? (Sie wissen nicht, die Struktur so har dto wissen, wann zu beantworten, ob das praktikabel ist, ...)

Andere Tipps

Die Eclipse JDT verwendet auch Kommentare Übersetzung bestimmter Strings zu verhindern:

Wie Eclipse-Plug-in für den internationalen Markt

Ich denke, Ihr Übersetzungs-Tool auf ähnliche Weise funktionieren soll?

Die einfachste Lösung ist nicht setzen Sie-nicht-translate Strings (DNTS) in der Ressource-Dateien.

.properties Dateien bieten nicht viel in der Art von Metadaten Handhabung, und da Sie nicht brauchen, um die Daten zur Laufzeit, seine Präsenz in .properties Dateien wäre ein Nebeneffekt und nicht als etwas, das wünschenswert ist. Betrachten sie auch teilweise DNTS wo Sie etwas, das nicht in einem übersetzbaren String enthalten sein translatiert wird (beispielsweise ein Markenname oder URI).

"IDENTIFIER english en en en" -> "french fr IDENTIFIER fr fr"

Soweit mir bekannt ist, auch Standards wie XLIFF nehmen nicht DNTS in Betracht, und Sie werden sie durch benutzerdefinierte Metadatendateien verwalten müssen, Terminologie Dateien und / oder Kommentare (wie die

Wie axelclk in seinem Link gepostet ... Eclipse bieten ein

// $ NON-NLS-1 $

Statement das Projekt, das die erste Saite in dieser Zeile sollte nicht übersetzt benachrichtigen. Alle anderen Zeichenfolge, die Sie finden können durch den Aufruf Quelle-> Externalize Strings

Externe Strings sind alle Sprachen, die Sie unterstützen möchten.

Datei, die enthalten die Übersetzungen suchen, wie: PluginPage.Error1 = text1 PluginPage.Error2 = text2

Klasse, die die Übersetzung lesen

private static final String BUNDLE_NAME = "com.plugin.name"; //$NON-NLS-1$

    private static final ResourceBundle RESOURCE_BUNDLE = ResourceBundle.getBundle(BUNDLE_NAME);

    private PluginMessages() {
    }

    public static String getString(String key) { 
        // TODO Auto-generated method stub
        try {
            return RESOURCE_BUNDLE.getString(key);
        } catch (MissingResourceException e) {
            return '!' + key + '!';
        }
    }

Und Sie können es nennen mögen:

String msg = PluginMessages.getString("PluginPage.Error2"); //$NON-NLS-1$

EDIT:

Wenn ein String externalisiert wird und Sie die ursprüngliche Zeichenfolge verwenden, können Sie die externalize Zeichenfolge aus allen Eigenschaften Dateien löschen, ohne den Standard ein. Wenn das Bundle kann keine Nachrichtendatei finden, die an der lokalen Sprache übereinstimmt, die standardmäßig verwendet wird.

Das ist aber nicht zur Laufzeit zu arbeiten.

Wenn Sie sich entscheiden, verwenden Sie-nicht-translate Kommentare in Ihren Eigenschaften Dateien, würde ich empfehlen, die Eclipse-Konvention . Es ist nichts Besonderes, aber das Leben wird einfacher, wenn wir alle das gleiche magische String verwenden!

(Eclipse-nicht wirklich unterstützt Kommentare DO-NICHT-UEBER noch, soweit ich weiß, aber Tennera Ant -Gettext hat eine Implementierung des obigen Schema, das verwendet wird, wenn von Ressourcenbündel Umwandeln PO Dateien getText.)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top