2017-08-17 32 views
0

我有一个GSchema定义,像这样一些标志:是否可以将GSettings/GSchema <flags>标记为可翻译的?

<flags id="org.example.program"> 
    <value nick="ENGLISH_WORD" value="1"/> 
    <value nick="ANOTHER_WORD" value="2"/> 
</flags> 

不过,我已经被翻译,这些不被gettext的处理或在.POT文件提供的通知。有什么方法可以将这些标记为可翻译的吗?

回答

1

默认值可以翻译,但翻译在运行时从.mo文件中替换。您必须将textdomain放在“<Schemalist>”的属性“gettext-domain”中。 “<模式>”元素。您还必须将语言环境类别放入“<”默认>元素的属性“类别”中。有关更多信息,请阅读https://developer.gnome.org/gio/stable/GSettings.html中的“说明”段落。

我建议您检查最近的Gtk应用程序的来源,看看不同的组件是如何本地化的。 GNU gettext最近得到了改进,可以更好地支持本地化桌面应用程序,因此该过程当前正在发展。特别是,你通常不再需要intltool。

+0

优秀的答案,我清楚地记得阅读,但它只是没有让我的大脑。我已经在“schemalist”上设置了“gettext-domain”属性;是否有必要将它放在“模式”上,还是足够高? FWIW我使用介子来生成pot,po和mo文件;不知道是否使用intltool或不。 –

+0

我认为这取决于所需的范围(整个架构师或只是一个架构),在哪里放置“gettext-domain”属性。但我只是在这里猜测。 Gedit(我通常窃取Gtk样板代码的源代码)将其放在架构元素上,请参阅https://github.com/GNOME/gedit/blob/master/data/org.gnome.gedit.gschema.xml.in。 –

+0

经过一些快速测试,“schemalist”似乎这样做,但我仍然无法获取gettext识别枚举尼克,除了“默认”标签。哦,我的一位翻译人员发现了一种可以让他满意的方法,GSchema的支持会很好,但我想这不是什么问题。 –

相关问题