python - 在 Python-Fu 中,将字符串包装在 N_() 中有何作用?

标签 python string python-2.7 python-fu

<TL;DR> 它用于 GTK+(GIMP 的 GUI 工具包)中的国际化。文档的链接是:N_() </TL;DR>


我正在研究 Python-Fu,经常看到被 N_() 包围的字符串,如:N_("Some random string")

然而在另一个插件中,N_()不会在那里并且"Some random string"工作得很好。

那么什么给出了呢?我四处搜寻,但没有真正找到任何关于此的信息。非常感谢 python 专家的一点帮助,因为我对它还很陌生。谢谢!

<<编辑>>

这是 GIMP 2.8 的 python 插件注册函数调用。每个插件都需要它,它会向 GUI 注册插件,显示在您在第 12 个参数中指定的菜单系统中。

不要将其与早期版本的 GIMP 参数顺序或 Script-Fu 混淆,后者基于Scheme,因此不幸的是丑陋如罪过。

register(
    "omnicyde_btn_metal_ring",
    N_("Badass Glossy Metal Ring Button"),
    "This is going to be so incredibly sweet",
    "Omnicyde",
    "Omnicyde",
    "2014",
    "_BtnMetalRing",
    "",
    [],
    [],
    btn_metal_ring,
    menu="<Toolbox>/Omnicyde/Buttons",
    domain=("gimp20-python", gimp.locale_directory)
)

因此,在某些插件中,会有一个 N_() 包装字符串,而在某些插件中,参数列表中不会包含相同的字符串。两个版本都可以工作..

我认为这是一个 python 核心构造或其他东西,因为我对它有点陌生。话又说回来,我也是 Python-Fu 的新手。同样有可能这是一些 GIMP 的东西,甚至是 Python-Fu..

最佳答案

正如评论中所暗示的那样。 N_ 是在 gi18n.h 中定义的 i10n 宏。 gi18n 使用 gettext 库。

http://opensource.apple.com/source/ChatServer/ChatServer-37.1/libraries/glib-2.4.5/glib/gi18n.h

至于 gettext_noop 你可以在以下位置看到它的用途 http://www.gnu.org/software/gettext/manual/html_node/Special-cases.html

关于python - 在 Python-Fu 中,将字符串包装在 N_() 中有何作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22160226/

相关文章:

python - ModuleNotFoundError : No module named 'keras.backend.tensorflow_backend'

Python fstring 作为函数

c++ - 将 string/char 转换为 double 并使用 double 进行后续计算

java - 这是验证仅 0 和 1 字符串输入的最佳方法吗?

python - 如果存在打印语句,Pycharm 会无限期地挂起单元测试

python - 如何确保在杀死Python Paramiko脚本时所有生成的进程都消失了?

python - 如何替换pandas str中的+xx替换

javascript - 如何将日期字符串标准化为 YYYY.MM.DD 格式?

python - 为什么 unicode(u'') 传递错误参数引发 TypeError

multithreading - selenium 线程可以安全地使用 Python 进行抓取吗?