[PYTHON] [Blender] So erstellen Sie Blender-Skripte mehrsprachig

Auf Twitter wurde ein wenig darüber gesprochen, wie Blender-Skripte mehrsprachig sein können, da die Blender-Dokumentation verwirrend ist. Aufgrund verschiedener Untersuchungen konnte ich mehrere Sprachen unterstützen, daher werde ich sie anhand eines Beispiels vorstellen.

Stichprobe

Hier sind einige Beispiele, die mehrere Sprachen unterstützen. Dieses Mal habe ich einfach versucht, die folgenden zwei Sprachen zu unterstützen.

translation.py


import bpy

bl_info = {
    "name" : "Translation Test",
    "author" : "Nutti",
    "version" : (0, 1),
    "blender" : (2, 7, 0),
    "location" : "UV > Translation Test",
    "description" : "Translation Test",
    "warning" : "",
    "wiki_url" : "",
    "tracker_url" : "",
    "category" : "UV"
}

#Übersetzungswörterbuch
translation_dict = {
    "en_US" :
        {("*", "Test: ") : "Test: %d"},
    "ja_JP" :
        {("*", "Test: ") : "Tesuto: %d"}
}


class TranslationTest(bpy.types.Operator):
    bl_idname = "uv.translation_test"
    bl_label = "Translation Test"
    bl_description = "Translation Test"
    bl_options = {'REGISTER', 'UNDO'}
    
    def execute(self, context):
        num = 50
        #Übersetzungsergebnisse in der Benachrichtigungsleiste anzeigen
        self.report({'INFO'}, bpy.app.translations.pgettext("Test: ") % (num))
        return {'FINISHED'}


def menu_func(self, context):
    self.layout.separator()
    self.layout.operator(TranslationTest.bl_idname)


def register():
    bpy.utils.register_module(__name__)
    bpy.types.VIEW3D_MT_uv_map.append(menu_func)
    bpy.app.translations.register(__name__, translation_dict)   #Registrieren eines Wörterbuchs


def unregister():
    bpy.app.translations.unregister(__name__)   #Wörterbuch löschen
    bpy.utils.unregister_module(__name__)
    bpy.types.VIEW3D_MT_uv_map.remove(menu_func)


if __name__ == "__main__":
    register()

Wie benutzt man

Führen Sie zur Installation die folgenden Schritte aus. Blender Wiki

  1. Den Mixer japanisieren
  2. Führen Sie "Übersetzungstest" aus dem angezeigten Menü aus, indem Sie im Bearbeitungsmodus die Taste "U" drücken.
  3. Vergewissern Sie sich, dass "Test: 50" in der Benachrichtigungsleiste angezeigt wird.
  4. Übersetzen Sie Blender ins Englische
  5. Führen Sie "Übersetzungstest" aus dem angezeigten Menü aus, indem Sie im Bearbeitungsmodus die Taste "U" drücken.
  6. Vergewissern Sie sich, dass "Test: 50" in der Benachrichtigungsleiste angezeigt wird.

So ändern Sie die Sprache von Blender

Das Folgende kann beim Ändern der Blender-Sprache hilfreich sein. blender.jp

Beispielerklärung

Den grundlegenden Teil finden Sie unter [\ Blender ] Erstellen eines Blender-Plug-Ins. Dieses Mal werde ich mich auf den mehrsprachigen Teil konzentrieren.

Definition des Übersetzungswörterbuchs

Definieren Sie ein Wörterbuch für die Übersetzung. Das Format des Wörterbuchs ist wie folgt.

{locale: {(context, key): translated_str, ...}, ...}

Jeder Parameter wird unten gezeigt.

Parameter Bedeutung
locale Gebietsschema
Auf Japanischjp_JP, Auf Englischen_ENEs wird sein.
Gebietsschemaに指定する文字列は下に記載しています。
context Auszuführender Kontext(?)
Vorerst**"*"**Wenn Sie es verlassen, wird es kein Problem geben.
key Zum Zeitpunkt der Übersetzung angegebene Schlüsselzeichenfolge
Die Zeichenfolge, die Sie standardmäßig anzeigen möchtenEs ist eine gute Idee, anzugeben.
persönlichEnglisch ohne verstümmelte ZeichenIst empfohlen.
translated_str Das aktuelle Gebietsschema istlocaleGleich wiekeyDie Zeichenfolge, die angezeigt wird, wenn angegeben wird.
In diesem TeilGeben Sie die Zeichenfolge nach der Übersetzung anMachen.
SpezifiziertenlocaleWannkeyWenn nicht existierttranslated_Die für key angegebene Zeichenfolge wird angezeigtGetan werden.

In diesem Beispiel ist das Wörterbuch wie folgt definiert.

Sprache Anzeige
Englisch Test: 50
japanisch Tesuto: 50
Andere Test: 50
translation_dict = {
    "en_US" :
        {("*", "Test: ") : "Test: %d"},
    "ja_JP" :
        {("*", "Test: ") : "Tesuto: %d"}
}

Tipps: So erhalten Sie das Gebietsschema

Einige Benutzer wissen möglicherweise nicht, was sie angeben sollen, selbst wenn es sich um ein Gebietsschema handelt. Versuchen Sie in einem solchen Fall Folgendes über die in Blender bereitgestellte Python-Konsole. Sie können das aktuelle Gebietsschema von Blender herausfinden.

>>> bpy.app.translations.locale
'en_US'

Registrierung des Übersetzungswörterbuchs

Führen Sie in der Registerfunktion Folgendes aus, um ein Wörterbuch für die Übersetzung zu registrieren.

bpy.app.translations.register(__name__, translation_dict)

Übersetzung durchführen

Verwenden Sie "bpy.app.translations.pgettext" wie folgt, um die übersetzte Zeichenfolge aus dem angegebenen "Schlüssel" abzurufen.

bpy.app.translations.pgettext("Test: ") 

Wenn Sie das ** Zeichenfolgenformat ** verwenden möchten, verwenden Sie bpy.app.translations.pgettext_iface.

bpy.app.translations.pgettext("Test: ") % (num)

Übersetzungswörterbuch löschen

Das registrierte Übersetzungswörterbuch muss freigegeben werden, wenn das Add-On gestoppt wird. Führen Sie die folgenden Schritte in der Funktion zum Aufheben der Registrierung aus, um die Registrierung des Wörterbuchs aufzuheben.

bpy.app.translations.unregister(__name__)

abschließend

Wir haben gezeigt, wie Blender-Skripte mehrsprachig werden. Durch die Kompatibilität des Skripts mit mehreren Sprachen besteht eine hohe Wahrscheinlichkeit, dass das Skript für die unterstützten Sprachen verwendet wird. Blender ist im englischsprachigen Raum immer noch weit verbreitet. Wenn Sie also Skripte für Japanisch schreiben, nutzen Sie diese Gelegenheit, um auch Englisch zu unterstützen. ** Durch die Unterstützung von Englisch können Sie möglicherweise das Feedback von Ausländern kennenlernen **.

Referenzinformationen

Recommended Posts

[Blender] So erstellen Sie Blender-Skripte mehrsprachig
[Blender] So erstellen Sie ein Blender-Plug-In
Wie erstelle ich eine japanisch-englische Übersetzung?
Wie man einen lockeren Bot macht
Wie erstelle ich einen Crawler?
So erstellen Sie eine rekursive Funktion
[Blender] Umgang mit Maus- und Tastaturereignissen in Blender-Skripten
Wie erstelle ich einen Crawler?
So machen Sie Word Cloud-Zeichen monochromatisch
[Blender] So legen Sie shape_key mit dem Skript fest
Wie man Selen so leicht wie möglich macht
So verpacken und verteilen Sie Python-Skripte
[Cocos2d-x] So erstellen Sie eine Skriptbindung (Teil 2)
So machen Sie Multi-Boot-USB (Windows 10-kompatibel)
So erstellen Sie einen benutzerdefinierten Backtrader-Indikator
Wie erstelle ich eine Pelican Site Map?
[Cocos2d-x] So erstellen Sie eine Skriptbindung (Teil 1)
So erstellen Sie einen eingebetteten Linux-Gerätetreiber (11)
So stellen Sie sicher, dass WTForms TextArea dem Löschen von Dateien entspricht
So erstellen Sie ein Spigot-Plug-In (für Java-Anfänger)
So erstellen Sie einen eingebetteten Linux-Gerätetreiber (1)
So erstellen Sie einen eingebetteten Linux-Gerätetreiber (4)
So machen Sie mehrere Kernel auf Jupyter auswählbar
So erstellen Sie einen eingebetteten Linux-Gerätetreiber (7)
Wie man eine kratzige JSON-Ausgabe japanisch macht
So erstellen Sie einen eingebetteten Linux-Gerätetreiber (3)
Erwecken Sie Ihr Leben mit Blender-Skripten prozedural zum Leben
So erstellen Sie ein QGIS-Plug-In (Paketerzeugung)
Ich las "Wie man ein Hacking Lab macht"
So erstellen Sie einen eingebetteten Linux-Gerätetreiber (6)
So erstellen Sie das Substance Painter Python-Plugin (Einführung)
So erstellen Sie einen eingebetteten Linux-Gerätetreiber (5)
So erstellen Sie einen eingebetteten Linux-Gerätetreiber (10)
Wie man Python für Anfänger schneller macht [numpy]
So nehmen Sie Python Interpreter-Änderungen in Pycharm vor
So erstellen Sie einen eingebetteten Linux-Gerätetreiber (9)
Inspiriert von "Wie man reines funktionales JavaScript macht"
Verwendung von xml.etree.ElementTree
So erkennt die AWS-Erkennung lokale Bilddateien
Verwendung von virtualenv
Schaben 2 Wie man kratzt
Wie benutzt man Seaboan?
[Fortsetzung] Inspiriert von "Wie man reines funktionales JavaScript erstellt"
Verwendung von Image-Match
Wie man Shogun benutzt
So installieren Sie Python
Verwendung von Pandas 2
Wie man Yubico Yubikey von Manjaro Linux erkennt
Wie man PyPI liest
So installieren Sie pip
Verwendung von Virtualenv
Wie Sie das aktuelle Verzeichnis in Python in Blender kennen
Erklären Sie ausführlich, wie Sie mit Python einen Sound erzeugen
Verwendung von numpy.vectorize
So aktualisieren Sie easy_install