過ごして来れましたが、
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 件のコメント:
コメントを投稿