2022年8月27日土曜日

GIMP 2.99.12 Python Script に変化が

GIMP 2.99.7 辺りから 2.99.10 迄は 然程 大きな影響無く、
過ごして来れましたが、
GIMP 2.99.12 を迎えて、Python Script は、
国際化(多言語対応)の絡みから、記述を変えないと動か無くなりました。


例に依って、
GIMP の 開発版に 標準添付された foggify.py で、其の変化を追って見ます。


さて、何をしたか? と言えば、
自分で作った、GNU の diff をバックエンドに使った 差分作成 Program を動かしました。

git 等の diff.exe が無くても、.patch 擬き を作成するものです。
とは言え、結局、GNU diff.exe を呼び出すので、同じ事ですが ... 。
新規に入れた GIMP 2.99.12 の其れと、
バックアップされた 同 2.99.10 の其れとの比較です。
作業前に、 ファイルは、各々、名称変更して、別ドライブにコピーしています。
(自動バックアップって、こう言う時には、やはり、便利!)
(別ドライブに切り出す必要は無かったのですが、一応)


結果が此方。

--- F:¥GIMP¥GIMP3_Scripting¥Foggify_GIMP29910.py 2022-08-24 00:32:54.239299400 +0900
+++ F:¥GIMP¥GIMP3_Scripting¥Foggify_GIMP29912.py 2022-08-24 00:11:36.094088200 +0900
@@ -27,5 +27,5 @@ import sys
 
-import gettext
-_ = gettext.gettext
 def N_(message): return message
+def _(message): return GLib.dgettext(None, message)
+
 
@@ -127,6 +127,6 @@ class Foggify (Gimp.PlugIn):
     ## GimpPlugIn virtual methods ##
-    def do_query_procedures(self):
-        self.set_translation_domain("gimp30-python",
-                                    Gio.file_new_for_path(Gimp.locale_directory()))
+    def do_set_i18n(self, procname):
+        return True, 'gimp30-python', None
 
+    def do_query_procedures(self):
         return [ 'python-fu-foggify' ]
@@ -140,6 +140,6 @@ class Foggify (Gimp.PlugIn):
                                         Gimp.ProcedureSensitivityMask.DRAWABLES)
-        procedure.set_documentation (N_("Add a layer of fog"),
-                                     "Adds a layer of fog to the image.",
+        procedure.set_documentation (_("Add a layer of fog"),
+                                     _("Adds a layer of fog to the image."),
                                      name)
-        procedure.set_menu_label(N_("_Fog..."))
+        procedure.set_menu_label(_("_Fog..."))
         procedure.set_attribution("James Henstridge",

やはり、国際化絡みの Codes が弄ってありました。

でも、自分で書いた Script は、
従前のままで手を加え無い状態では、
新たに削除されて仕舞った Codes が残っている為、起動時に 弾かれて 仕舞い、
メニュー項目にすら上がら無いのです。
そう、全て、使い物になら無い! 無残な結果 が待っています。
此れでは 焦ります よね。

(削除されて仕舞った Code は set_translation_domain です。)


但し、留意は必要です。
上記は 組み込み の 標準添付された もの である事!。

国際化(多言語対応)は 既定の場所 の gimp30-python.mo が担っていますから。

同様な仕組みを導入し無い のなら、
foggiy.py を参考にして、記述を変えれば、無事に動く様になります。
其れは、参照する ファイル(公式のもの) に、
該当する 語句のペア が 未登録 なので、
弊害を齎さ無い だけなのですが ... 。

此れは 記憶に留めて置いて下さい。


GIMP 2.99 用の古い Script は以下の変更で動く筈です。  順不同。

  def do_set_i18n(self, procname) 新設
  def do_query_procedures(self): の self.set_translation_domain(...) 削除
  def _(message) 新設 ( 含む _ = gettext.gettext 等を 削除 )
  N_("str") 記述を _("str") に 変更
  必要に応じて、 "str" を _("str") に 変更

詳細は 上記 を参照して下さい。



0 件のコメント:

コメントを投稿