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.
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()
Führen Sie zur Installation die folgenden Schritte aus. Blender Wiki
Das Folgende kann beim Ändern der Blender-Sprache hilfreich sein. blender.jp
Den grundlegenden Teil finden Sie unter [\ Blender ] Erstellen eines Blender-Plug-Ins. Dieses Mal werde ich mich auf den mehrsprachigen Teil konzentrieren.
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 istlocale Gleich wiekey Die Zeichenfolge, die angezeigt wird, wenn angegeben wird.In diesem TeilGeben Sie die Zeichenfolge nach der Übersetzung anMachen. Spezifizierten locale Wannkey Wenn 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"}
}
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'
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)
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)
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__)
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 **.
Recommended Posts