Browse Source

custom script translation

Johann ELSASS 4 years ago
parent
commit
ad03808289

+ 7 - 0
lazpaint/lazpaintdialogs.inc

@@ -236,6 +236,13 @@ begin
     result := srCancelledByUser;
 end;
 
+function TLazPaintInstance.ScriptTranslateGetLanguage(AVars: TVariableSet
+  ): TScriptResult;
+begin
+  AVars.Strings['Result'] := ActiveLanguage;
+  result := srOk;
+end;
+
 function TLazPaintInstance.ScriptTranslateText(AVars: TVariableSet): TScriptResult;
 var
   textVar, resVar: TScriptVariableReference;

+ 2 - 0
lazpaint/lazpaintinstance.pas

@@ -60,6 +60,7 @@ type
     function ScriptImageResample(AParams: TVariableSet): TScriptResult;
     function ScriptLazPaintGetVersion(AVars: TVariableSet): TScriptResult;
     function ScriptShowDirectoryDialog(AVars: TVariableSet): TScriptResult;
+    function ScriptTranslateGetLanguage(AVars: TVariableSet): TScriptResult;
     function ScriptTranslateText(AVars: TVariableSet): TScriptResult;
     procedure SelectionInstanceOnRun(AInstance: TLazPaintCustomInstance);
     procedure ToolFillChanged(Sender: TObject);
@@ -397,6 +398,7 @@ begin
   ScriptContext.RegisterScriptFunction('InputBox',@ScriptInputBox,ARegister);
   ScriptContext.RegisterScriptFunction('LazPaintGetVersion',@ScriptLazPaintGetVersion,ARegister);
   ScriptContext.RegisterScriptFunction('TranslateText',@ScriptTranslateText,ARegister);
+  ScriptContext.RegisterScriptFunction('TranslateGetLanguage',@ScriptTranslateGetLanguage,ARegister);
   ScriptContext.RegisterScriptFunction('ScriptGetName',@ScriptGetName,ARegister);
 end;
 

+ 9 - 2
resources/scripts/channels_merge.py

@@ -4,6 +4,13 @@
 # (de) Kanäle > Zusammenführen
 from lazpaint import image, dialog, layer
 
+translation = dialog.select_translation(
+  en = {"Current layer is not split": "Current layer is not split"}, 
+  fr = {"Current layer is not split": "Le calque actuel n'est pas séparé"}, 
+  es = {"Current layer is not split": "La capa actual no está dividida"}, 
+  de = {"Current layer is not split": "Die aktuelle Ebene wird nicht geteilt"}, 
+  )
+
 channels_id = None
 new_layer_index = None
 image.do_begin()
@@ -28,10 +35,10 @@ else:
   new_layer_index = image.get_layer_index() + 1
 
 if channels_id is None:
-  dialog.show_message("Current layer is not split")
+  dialog.show_message(translation["Current layer is not split"])
   exit()
 
-layer.new("Merged channels")
+layer.new(dialog.get_script_name())
 image.move_layer_index(image.get_layer_index(), new_layer_index)
 
 for cur_layer_id in reversed(channels_id):

+ 9 - 2
resources/scripts/channels_monochromatic.py

@@ -4,6 +4,13 @@
 # (de) Kanäle > Monochromatisch machen
 from lazpaint import image, dialog, layer, filters
 
+translation = dialog.select_translation(
+  en = {"Remove this layer to remove hue": "Remove this layer to remove hue", "This is not a chromatic channel": "This is not a chromatic channel"}, 
+  fr = {"Remove this layer to remove hue": "Supprimer ce calque pour enlever la teinte", "This is not a chromatic channel": "Ce n'est pas un canal chromatique"}, 
+  es = {"Remove this layer to remove hue": "Elimina esta capa para eliminar el tono", "This is not a chromatic channel": "Este no es un canal cromático"}, 
+  de = {"Remove this layer to remove hue": "Diese Ebene entfernen, um den Farbton zu entfernen", "This is not a chromatic channel": "Dies ist kein chromatischer Kanal"},  
+  )
+  
 channel = layer.get_registry("split-channel")
 if channel == "R" or channel == "C":
   source = "red"
@@ -12,10 +19,10 @@ elif channel == "G" or channel == "M":
 elif channel == "B" or channel == "Y":
   source = "blue"
 elif channel == "H":
-  dialog.show_message("Remove this layer to remove hue")
+  dialog.show_message(translation["Remove this layer to remove hue"])
   exit()  
 else:
-  dialog.show_message("This is not a chromatic channel")
+  dialog.show_message(translation["This is not a chromatic channel"])
   exit()
 
 filters.filter_function(red = source, green = source, blue = source)

+ 11 - 4
resources/scripts/channels_split_cmyk.py

@@ -4,9 +4,16 @@
 # (de) Kanäle > CMYK teilen
 from lazpaint import image, dialog, layer, filters
 
+translation = dialog.select_translation(
+  en = {"Layer already split": "Layer already split", "Cyan": "Cyan", "Magenta": "Magenta", "Yellow": "Yellow", "Black": "Black", "Alpha": "Alpha"}, 
+  fr = {"Layer already split": "Le calque est déjà séparé", "Cyan": "Cyan", "Magenta": "Magenta", "Yellow": "Jaune", "Black": "Noir", "Alpha": "Alpha"}, 
+  es = {"Layer already split": "La capa ya está dividida", "Cyan": "Cian", "Magenta": "Magenta", "Yellow": "Amarillo", "Black": "Negro", "Alpha": "Alpha"}, 
+  de = {"Layer already split": "Die Ebene ist bereits geteilt", "Cyan": "Cyan", "Magenta": "Magenta", "Yellow": "Gelb", "Black": "Schwartz", "Alpha": "Alpha"}
+  )
+
 # check if it is a channel
 if layer.get_registry("split-channel") is not None:
-  dialog.show_message("Layer already split")
+  dialog.show_message(translation["Layer already split"])
   exit()
 
 layer_id = layer.get_id()
@@ -20,7 +27,7 @@ black_id = None
 if layer.get_registry("split-channels-id") is not None:
   for cur_layer_id in image.iterate_layers():
     if layer.get_registry("split-source-id") == layer_id:
-      dialog.show_message("Layer already split")
+      dialog.show_message(translation["Layer already split"])
       exit()
 
 image.do_begin()
@@ -35,7 +42,7 @@ for ch in channels:
   layer.select_id(layer_id)
   layer.duplicate()
   filters.filter_function(red = ch.get("red"), green = ch.get("green"), blue = ch.get("blue"), hue = ch.get("hue"), saturation = ch.get("saturation"), lightness = ch.get("lightness"), alpha = ch["alpha"], gamma_correction = False, corrected_hue = False)
-  layer.set_name(ch["name"] + " channel")
+  layer.set_name(translation[ch["name"]])
   layer.set_opacity(layer_opacity)
   if ch["channel"] == "A":
     layer.set_blend_op(layer.BLEND_MASK)
@@ -67,7 +74,7 @@ if cmy_id is not None:
     if ch.get("last") is None:
       layer.duplicate()
     filters.filter_function(red = ch.get("red"), green = ch.get("green"), blue = ch.get("blue"), alpha = ch["alpha"], gamma_correction = False)
-    layer.set_name(ch["name"] + " channel")
+    layer.set_name(translation[ch["name"]])
     layer.set_opacity(layer_opacity)
     layer.set_blend_op(layer.BLEND_MULTIPLY)
     layer.set_registry("split-channel", ch["channel"])

+ 10 - 3
resources/scripts/channels_split_hsl.py

@@ -4,9 +4,16 @@
 # (de) Kanäle > HSL teilen
 from lazpaint import image, dialog, layer, filters
 
+translation = dialog.select_translation(
+  en = {"Layer already split": "Layer already split", "Hue": "Hue", "Saturation": "Saturation", "Lightness": "Lightness", "Alpha": "Alpha"}, 
+  fr = {"Layer already split": "Le calque est déjà séparé", "Hue": "Teinte", "Saturation": "Saturation", "Lightness": "Luminosité", "Alpha": "Alpha"}, 
+  es = {"Layer already split": "La capa ya está dividida", "Hue": "Matiz", "Saturation": "Saturación", "Lightness": "Luminosidad", "Alpha": "Alpha"}, 
+  de = {"Layer already split": "Die Ebene ist bereits geteilt", "Hue": "Farbwinkel", "Saturation": "Farbsättigung", "Lightness": "Farbhelligkeit", "Alpha": "Alpha"}
+  )
+  
 # check if it is a channel
 if layer.get_registry("split-channel") is not None:
-  dialog.show_message("Layer already split")
+  dialog.show_message(translation["Layer already split"])
   exit()
 
 layer_id = layer.get_id()
@@ -18,7 +25,7 @@ layer_transparent = layer.is_transparent()
 if layer.get_registry("split-channels-id") is not None:
   for cur_layer_id in image.iterate_layers():
     if layer.get_registry("split-source-id") == layer_id:
-      dialog.show_message("Layer already split")
+      dialog.show_message(translation["Layer already split"])
       exit()
 
 image.do_begin()
@@ -34,7 +41,7 @@ for ch in channels:
   layer.select_id(layer_id)
   layer.duplicate()
   filters.filter_function(hue = ch["hue"], saturation = ch["saturation"], lightness = ch["lightness"], alpha = ch["alpha"], gamma_correction = False)
-  layer.set_name(ch["name"] + " channel")
+  layer.set_name(translation[ch["name"]])
   layer.set_opacity(layer_opacity)
   if ch["channel"] != channels[-1]:
     layer.set_blend_op(ch["blend"])

+ 10 - 3
resources/scripts/channels_split_rgb.py

@@ -4,9 +4,16 @@
 # (de) Kanäle > RVB teilen
 from lazpaint import image, dialog, layer, filters
 
+translation = dialog.select_translation(
+  en = {"Layer already split": "Layer already split", "Alpha": "Alpha", "Red": "Red", "Green": "Green", "Blue": "Blue"}, 
+  fr = {"Layer already split": "Le calque est déjà séparé", "Alpha": "Alpha", "Red": "Rouge", "Green": "Vert", "Blue": "Bleu"}, 
+  es = {"Layer already split": "La capa ya está dividida", "Alpha": "Alpha", "Red": "Rojo", "Green": "Verde", "Blue": "Azul"}, 
+  de = {"Layer already split": "Die Ebene ist bereits geteilt", "Alpha": "Alpha", "Red": "Rot", "Green": "Grün", "Blue": "Blau"}
+  )
+  
 # check if it is a channel
 if layer.get_registry("split-channel") is not None:
-  dialog.show_message("Layer already split")
+  dialog.show_message(translation["Layer already split"])
   exit()
 
 layer_id = layer.get_id()
@@ -18,7 +25,7 @@ layer_transparent = layer.is_transparent()
 if layer.get_registry("split-channels-id") is not None:
   for cur_layer_id in image.iterate_layers():
     if layer.get_registry("split-source-id") == layer_id:
-      dialog.show_message("Layer already split")
+      dialog.show_message(translation["Layer already split"])
       exit()
 
 image.do_begin()
@@ -34,7 +41,7 @@ for ch in channels:
   layer.select_id(layer_id)
   layer.duplicate()
   filters.filter_function(red = ch["red"], green = ch["green"], blue = ch["blue"], alpha = ch["alpha"], gamma_correction = False)
-  layer.set_name(ch["name"] + " channel")
+  layer.set_name(translation[ch["name"]])
   layer.set_opacity(layer_opacity)
   if ch["channel"] == "A":
     layer.set_blend_op(layer.BLEND_MASK)

+ 9 - 0
resources/scripts/lazpaint/dialog.py

@@ -20,5 +20,14 @@ def show_color_dialog(color=None) -> str:
 def translate_text(text) -> str:
   return command.send('TranslateText?', Text=text)
 
+def get_language() -> str:
+  return command.send('TranslateGetLanguage?')
+
+def select_translation(**translations):
+  lang = get_language()
+  if translations.get(lang) is None:
+    lang = "en"
+  return translations[lang]
+
 def get_script_name() -> str:
   return command.send('ScriptGetName?')

+ 9 - 2
resources/scripts/mask_from_alpha.py

@@ -2,13 +2,20 @@
 # (fr) Masque > Masque depuis canal alpha
 # (es) Máscara > Máscara desde canal alpha
 # (de) Maske > Maske vom Alphakanal
-from lazpaint import image, layer, filters, selection
+from lazpaint import image, layer, filters, selection, dialog
+
+translation = dialog.select_translation(
+  en = {"Mask" : "Mask"}, 
+  fr = {"Mask": "Masque"}, 
+  es = {"Mask": "Máscara"}, 
+  de = {"Mask": "Maske"}
+  )
 
 image.do_begin()
 
 selection.deselect()
 layer.duplicate()
-layer.set_name("Mask")
+layer.set_name(translation["Mask"])
 filters.filter_function(red="alpha", green="alpha", blue="alpha", alpha=255, gamma_correction=False)
 layer.set_blend_op(layer.BLEND_MASK)
 

+ 9 - 2
resources/scripts/mask_new.py

@@ -2,13 +2,20 @@
 # (fr) Masque > Nouveau masque
 # (es) Máscara > Máscara nueva
 # (de) Maske > Neue Maske
-from lazpaint import image, layer, tools, colors, selection
+from lazpaint import image, layer, tools, colors, selection, dialog
+
+translation = dialog.select_translation(
+  en = {"Mask" : "Mask"}, 
+  fr = {"Mask": "Masque"}, 
+  es = {"Mask": "Máscara"}, 
+  de = {"Mask": "Maske"}
+  )
 
 image.do_begin()
 
 selection.deselect()
 layer_index = image.get_layer_index()
-layer.new("Mask")
+layer.new(translation["Mask"])
 mask_index = image.get_layer_index()
 image.move_layer_index(mask_index, layer_index + 1)
 layer.set_blend_op(layer.BLEND_MASK)