[gtkmm-documentation: 30/31] update the translation of the modified text.




commit 826fb02f382567367bcb4d9fe2c93d4c5ab63ebc
Author: CCTV-1 <script tar gz gmail com>
Date:   Tue Jan 12 22:13:27 2021 +0800

    update the translation of the modified text.

 docs/tutorial/zh_CN/zh_CN.po | 5341 +++++++++++++++++++++---------------------
 1 file changed, 2662 insertions(+), 2679 deletions(-)
---
diff --git a/docs/tutorial/zh_CN/zh_CN.po b/docs/tutorial/zh_CN/zh_CN.po
index 838b10c..6b7d1f1 100644
--- a/docs/tutorial/zh_CN/zh_CN.po
+++ b/docs/tutorial/zh_CN/zh_CN.po
@@ -6,7 +6,7 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: gtkmm-documentation master\n"
-"POT-Creation-Date: 2020-12-30 13:36+8000\n"
+"POT-Creation-Date: 2021-01-12 21:45+8000\n"
 "PO-Revision-Date: 2020-12-23 11:40+8000\n"
 "Last-Translator: XiangQun Luo <Script tar gz gmail com>\n"
 "Language-Team: Chinese (China) <i18n-zh googlegroups com>\n"
@@ -19,15 +19,15 @@ msgctxt "_"
 msgid "translator-credits"
 msgstr "译者积分"
 
-#: C/index-in.docbook:36
+#: C/index-in.docbook:45
 msgid "Programming with <application>gtkmm</application> 4"
 msgstr "<application>gtkmm</application>4 程序设计"
 
-#: C/index-in.docbook:39
+#: C/index-in.docbook:48
 msgid "<firstname>Murray</firstname> <surname>Cumming</surname>"
 msgstr "<firstname>Murray</firstname> <surname>Cumming</surname>"
 
-#: C/index-in.docbook:43
+#: C/index-in.docbook:52
 msgid ""
 "<firstname>Bernhard</firstname> <surname>Rieder</surname> <contrib>Chapter "
 "on \"Timeouts\".</contrib>"
@@ -35,7 +35,7 @@ msgstr ""
 "<firstname>Bernhard</firstname> <surname>Rieder</surname><contrib>编写"
 "\"Timeouts\"部分。</contrib>"
 
-#: C/index-in.docbook:48
+#: C/index-in.docbook:57
 msgid ""
 "<firstname>Jonathon</firstname> <surname>Jongsma</surname> <contrib>Chapter "
 "on \"Drawing with Cairo\".</contrib> <contrib>Chapter on \"Working with "
@@ -46,7 +46,7 @@ msgstr ""
 "罗绘图章节。</contrib><contrib>编写使用gtkmm源代码章节。</contrib><contrib>编"
 "写\"最近的文件\"。</contrib>"
 
-#: C/index-in.docbook:55
+#: C/index-in.docbook:64
 msgid ""
 "<firstname>Ole</firstname> <surname>Laursen</surname> <contrib>Parts of "
 "chapter on \"Internationalization\".</contrib>"
@@ -54,7 +54,7 @@ msgstr ""
 "<firstname>Ole</firstname> <surname>Laursen</surname> <contrib>编写\"国际化"
 "\"章节的一部分。</contrib>"
 
-#: C/index-in.docbook:60
+#: C/index-in.docbook:69
 msgid ""
 "<firstname>Marko</firstname> <surname>Anastasov</surname> <contrib>Chapter "
 "on \"Printing\".</contrib> <contrib>Parts of chapter on "
@@ -63,7 +63,7 @@ msgstr ""
 "<firstname>Marko</firstname> <surname>Anastasov</surname> <contrib>编写\"打印"
 "\"章节。</contrib> <contrib>编写\"国际化\"章节的一部分。</contrib>"
 
-#: C/index-in.docbook:66
+#: C/index-in.docbook:75
 msgid ""
 "<firstname>Daniel</firstname> <surname>Elstner</surname> <contrib>Section "
 "\"Build Structure\" of chapter on \"Wrapping C Libraries with gmmproc\".</"
@@ -72,7 +72,7 @@ msgstr ""
 "<firstname>Daniel</firstname> <surname>Elstner</surname>编写《使用 gmmproc 封"
 "装 C 库》〈构建结构〉章节。"
 
-#: C/index-in.docbook:72
+#: C/index-in.docbook:81
 msgid ""
 "<firstname>Chris</firstname> <surname>Vine</surname> <contrib>Chapter on "
 "\"Multi-threaded programs\".</contrib>"
@@ -80,7 +80,7 @@ msgstr ""
 "<firstname>Chris</firstname> <surname>Vine</surname><contrib>编写\"多线程编程"
 "\"章节。</contrib>"
 
-#: C/index-in.docbook:77
+#: C/index-in.docbook:86
 msgid ""
 "<firstname>David</firstname> <surname>King</surname> <contrib>Section on "
 "Gtk::Grid.</contrib>"
@@ -88,7 +88,7 @@ msgstr ""
 "<firstname>David</firstname> <surname>King</surname><contrib>编写Gtk::Grid部"
 "分。</contrib>"
 
-#: C/index-in.docbook:82
+#: C/index-in.docbook:91
 msgid ""
 "<firstname>Pedro</firstname> <surname>Ferreira</surname> <contrib>Chapter on "
 "Keyboard Events.</contrib>"
@@ -96,7 +96,7 @@ msgstr ""
 "<firstname>Pedro</firstname> <surname>Ferreira</surname><contrib>编写键盘事件"
 "章节。</contrib>"
 
-#: C/index-in.docbook:87
+#: C/index-in.docbook:96
 msgid ""
 "<firstname>Kjell</firstname> <surname>Ahlstedt</surname> <contrib>Update "
 "from gtkmm 3 to gtkmm 4.</contrib> <contrib>Chapter on \"Building "
@@ -105,7 +105,7 @@ msgstr ""
 "<firstname>Kjell</firstname> <surname>Ahlstedt</surname> <contrib>编写从gtkmm"
 "迁移到gtkmm4指南。</contrib> <contrib>编写\"构建应用\"章节。</contrib>"
 
-#: C/index-in.docbook:98
+#: C/index-in.docbook:107
 msgid ""
 "This book explains key concepts of the <application>gtkmm</application> C++ "
 "API for creating user interfaces. It also introduces the main user interface "
@@ -114,7 +114,7 @@ msgstr ""
 "本书说明了使用<application>gtkmm</application> C++ API 创建用户界面的重要概"
 "念,并且介绍了主要的用户界面元素(“widget”)。"
 
-#: C/index-in.docbook:103
+#: C/index-in.docbook:112
 msgid ""
 "<year>2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010</year> "
 "<holder>Murray Cumming</holder>"
@@ -122,7 +122,7 @@ msgstr ""
 "<year>2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010</year> "
 "<holder>Murray Cumming</holder>"
 
-#: C/index-in.docbook:109
+#: C/index-in.docbook:118
 msgid ""
 "Permission is granted to copy, distribute and/or modify this document under "
 "the terms of the GNU Free Documentation License, Version 1.2 or any later "
@@ -138,15 +138,15 @@ msgstr ""
 "Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 来获得一份 "
 "GNU 自由文档协议。"
 
-#: C/index-in.docbook:121
+#: C/index-in.docbook:130
 msgid "Introduction"
 msgstr "序言"
 
-#: C/index-in.docbook:124
+#: C/index-in.docbook:133
 msgid "This book"
 msgstr "本书"
 
-#: C/index-in.docbook:126
+#: C/index-in.docbook:135
 msgid ""
 "This book explains key concepts of the <application>gtkmm</application> C++ "
 "API for creating user interfaces. It also introduces the main user interface "
@@ -159,13 +159,13 @@ msgstr ""
 "是并不会深入其细节。因此,如果需要完整的 API 信息,您应当顺着链接访问参考文"
 "档。"
 
-#: C/index-in.docbook:128
+#: C/index-in.docbook:137
 msgid ""
 "This book assumes a good understanding of C++, and how to create C++ "
 "programs."
 msgstr "本书假定读者拥有对 C++ 良好的理解,并且知道如何去创建一个 C++ 程序。"
 
-#: C/index-in.docbook:130
+#: C/index-in.docbook:139
 msgid ""
 "We would very much like to hear of any problems you have learning "
 "<application>gtkmm</application> with this document, and would appreciate "
@@ -176,7 +176,7 @@ msgstr ""
 "任何问题,并且感激对此作出的改进。请访问 <link linkend=\"chapter-contributing"
 "\">贡献</link> 节以获得进一步的信息。"
 
-#: C/index-in.docbook:136
+#: C/index-in.docbook:145
 msgid ""
 "This book describes <application>gtkmm</application> 4, but some sections "
 "have not been fully updated. There are paragraphs that describe "
@@ -189,11 +189,11 @@ msgstr ""
 "application>4的段落。不过显式的所有示例都与<application>gtkmm</application>4"
 "兼容。"
 
-#: C/index-in.docbook:145
+#: C/index-in.docbook:154
 msgid "gtkmm"
 msgstr "gtkmm"
 
-#: C/index-in.docbook:146
+#: C/index-in.docbook:155
 msgid ""
 "<application>gtkmm</application> is a C++ wrapper for <ulink url=\"http://";
 "www.gtk.org/\">GTK</ulink>, a library used to create graphical user "
@@ -206,7 +206,7 @@ msgstr ""
 "LGPL 协议,因此您可以使用 <application>gtkmm</application> 开发开放软件、自由"
 "软件,甚至商业非免费软件而不需支付任何版权费用。"
 
-#: C/index-in.docbook:154
+#: C/index-in.docbook:163
 msgid ""
 "<application>gtkmm</application> was originally named gtk-- because GTK was "
 "originally named GTK+ and had a + in the name. However, as -- is not easily "
@@ -217,11 +217,11 @@ msgstr ""
 "有了一个加号。但是,由于 -- 不容易被搜索引擎索引,所以项目名字就渐渐的变成了"
 "<application>gtkmm</application>,后来我们就一直使用这个名字。"
 
-#: C/index-in.docbook:159
+#: C/index-in.docbook:168
 msgid "Why use <application>gtkmm</application> instead of GTK?"
 msgstr "为什么要使用 <application>gtkmm</application> 而不是 GTK?"
 
-#: C/index-in.docbook:160
+#: C/index-in.docbook:169
 msgid ""
 "<application>gtkmm</application> allows you to write code using normal C++ "
 "techniques such as encapsulation, derivation, and polymorphism. As a C++ "
@@ -232,7 +232,7 @@ msgstr ""
 "装、继承和多态。作为一个 C++ 程序员,你可能已经意识到这会让代码更加清晰、更加"
 "良好的管理代码。"
 
-#: C/index-in.docbook:161
+#: C/index-in.docbook:170
 msgid ""
 "<application>gtkmm</application> is more type-safe, so the compiler can "
 "detect errors that would only be detected at run time when using C. This use "
@@ -243,7 +243,7 @@ msgstr ""
 "能在运行时才能检测出来的错误。这种使用特定类型的方法同样使得 API 更加清晰,因"
 "为你只需要通过看一下函数声明就可以知道应该使用什么类型了。"
 
-#: C/index-in.docbook:162
+#: C/index-in.docbook:171
 msgid ""
 "Inheritance can be used to derive new widgets. The derivation of new widgets "
 "in GTK C code is so complicated and error prone that almost no C coders do "
@@ -254,7 +254,7 @@ msgstr ""
 "且很容易出错,因此几乎没有 C 的程序员这么做。作为 C++ 开发人员,你知道继承是"
 "一个基本的面向对象技术。"
 
-#: C/index-in.docbook:163
+#: C/index-in.docbook:172
 msgid ""
 "Member instances can be used, simplifying memory management. All GTK C "
 "widgets are dealt with by use of pointers. As a C++ coder you know that "
@@ -263,7 +263,7 @@ msgstr ""
 "可以使用成员实例,简化了内存管理。所有的 GTK 的 C 部件都是使用指针进行操作"
 "的。作为 C++ 程序员,你知道指针应当尽量避免使用。"
 
-#: C/index-in.docbook:164
+#: C/index-in.docbook:173
 msgid ""
 "<application>gtkmm</application> involves less code compared to GTK, which "
 "uses prefixed function names and lots of cast macros."
@@ -271,11 +271,11 @@ msgstr ""
 "<application>gtkmm</application> 比 GTK 的代码更加简短,GTK 使用了大量带前缀"
 "的函数名以及大量的转型宏。"
 
-#: C/index-in.docbook:168
+#: C/index-in.docbook:177
 msgid "<application>gtkmm</application> compared to Qt"
 msgstr "<application>gtkmm</application> 对比 Qt"
 
-#: C/index-in.docbook:169
+#: C/index-in.docbook:178
 msgid ""
 "Trolltech's Qt is the closest competition to <application>gtkmm</"
 "application>, so it deserves discussion."
@@ -283,7 +283,7 @@ msgstr ""
 "Trolltech 公司的 Qt 是和 <application>gtkmm</application> 最相似的有竞争力的"
 "产品,所以应该对其进行一下讨论。"
 
-#: C/index-in.docbook:171
+#: C/index-in.docbook:180
 msgid ""
 "<application>gtkmm</application> developers tend to prefer "
 "<application>gtkmm</application> to Qt because <application>gtkmm</"
@@ -306,11 +306,11 @@ msgstr ""
 "而无需修改 C++ 语言。请看<ulink url=\"https://wiki.gnome.org/Projects/gtkmm/";
 "FAQ\">常见问题</ulink>以了解具体差异。"
 
-#: C/index-in.docbook:176
+#: C/index-in.docbook:185
 msgid "<application>gtkmm</application> is a wrapper"
 msgstr "<application>gtkmm</application> 是一个封装"
 
-#: C/index-in.docbook:177
+#: C/index-in.docbook:186
 msgid ""
 "<application>gtkmm</application> is not a native C++ toolkit, but a C++ "
 "wrapper of a C toolkit. This separation of interface and implementation has "
@@ -330,15 +330,15 @@ msgstr ""
 "行了一点点贡献。因此,GTK 可以从比某个语言特定的工具集更广泛的用户群中获得好"
 "处,有更多的实现、更多的开发人员、更多的测试人员以及更多的用户。"
 
-#: C/index-in.docbook:185
+#: C/index-in.docbook:194
 msgid "Installation"
 msgstr "安装"
 
-#: C/index-in.docbook:187
+#: C/index-in.docbook:196
 msgid "Dependencies"
 msgstr "依赖关系"
 
-#: C/index-in.docbook:188
+#: C/index-in.docbook:197
 msgid ""
 "Before attempting to install <application>gtkmm</"
 "application><application>-4.0</application>, you might first need to install "
@@ -347,65 +347,65 @@ msgstr ""
 "在试图安装 <application>gtkmm</application><application>-4.0</application>之"
 "前,你必须已经安装了这些包。"
 
-#: C/index-in.docbook:193
+#: C/index-in.docbook:202
 msgid "<application>sigc++-3.0</application>"
 msgstr "<application>sigc++-3.0</application>"
 
-#: C/index-in.docbook:194
+#: C/index-in.docbook:203
 msgid "<application>gtk4</application>"
 msgstr "<application>gtkmm4</application>"
 
-#: C/index-in.docbook:195
+#: C/index-in.docbook:204
 msgid "<application>glibmm-2.68</application>"
 msgstr "<application>glibmm-2.68</application>"
 
-#: C/index-in.docbook:196
+#: C/index-in.docbook:205
 msgid "<application>cairomm-1.16</application>"
 msgstr "<application>cairomm-1.16</application>"
 
-#: C/index-in.docbook:197
+#: C/index-in.docbook:206
 msgid "<application>pangomm-2.48</application>"
 msgstr "<application>pangomm-2.48</application>"
 
-#: C/index-in.docbook:199
+#: C/index-in.docbook:208
 msgid ""
 "These dependencies have their own dependencies, including the following "
 "applications and libraries:"
 msgstr "这些依赖有它们自己所依赖的软件包,包括下列应用程序和软件库:"
 
-#: C/index-in.docbook:204
+#: C/index-in.docbook:213
 msgid "<application>pkg-config</application>"
 msgstr "<application>pkg-config</application>"
 
-#: C/index-in.docbook:205
+#: C/index-in.docbook:214
 msgid "<application>glib-2.0</application>"
 msgstr "<application>glib-2.0</application>"
 
-#: C/index-in.docbook:206
+#: C/index-in.docbook:215
 msgid "<application>pango</application>"
 msgstr "<application>pango</application>"
 
-#: C/index-in.docbook:207
+#: C/index-in.docbook:216
 msgid "<application>cairo</application>"
 msgstr "<application>cairo</application>"
 
-#: C/index-in.docbook:208
+#: C/index-in.docbook:217
 msgid "<application>gdk-pixbuf-2.0</application>"
 msgstr "<application>gdk-pixbuf-2.0</application>"
 
-#: C/index-in.docbook:209
+#: C/index-in.docbook:218
 msgid "<application>graphene-1.0</application>"
 msgstr "<application>graphene-1.0</application>"
 
-#: C/index-in.docbook:214
+#: C/index-in.docbook:223
 msgid "Unix and Linux"
 msgstr "Unix 和 Linux"
 
-#: C/index-in.docbook:217
+#: C/index-in.docbook:226
 msgid "Prebuilt Packages"
 msgstr "预编译的包"
 
-#: C/index-in.docbook:219
+#: C/index-in.docbook:228
 msgid ""
 "Recent versions of <application>gtkmm</application> are packaged by nearly "
 "every major Linux distribution these days. So, if you use Linux, you can "
@@ -420,7 +420,7 @@ msgstr ""
 "们的软件库里面包含了 <application>gtkmm</application> 的发布版本有:Debian、"
 "Ubuntu、Red Hat、Fedora、Mandriva、SuSE 等等。"
 
-#: C/index-in.docbook:227
+#: C/index-in.docbook:236
 msgid ""
 "The names of the <application>gtkmm</application> packages vary from "
 "distribution to distribution (e.g. <application>libgtkmm-4.0-dev</"
@@ -435,7 +435,7 @@ msgstr ""
 "application>),因此,在你的发行版的软件包管理程序中查一下正确的名字,然后像其"
 "它软件包一样的安装它。"
 
-#: C/index-in.docbook:235
+#: C/index-in.docbook:244
 msgid ""
 "The package names will not change when new API/ABI-compatible versions of "
 "<application>gtkmm</application> are released. Otherwise they would not be "
@@ -448,11 +448,11 @@ msgstr ""
 "<application>libgtkmm-4.0-dev</application> 包中发现提供的实际上是 "
 "<application>gtkmm</application> 4.8 的话不要太惊讶。"
 
-#: C/index-in.docbook:245
+#: C/index-in.docbook:254
 msgid "Installing From Source"
 msgstr "从源代码安装"
 
-#: C/index-in.docbook:247
+#: C/index-in.docbook:256
 msgid ""
 "If your distribution does not provide a pre-built <application>gtkmm</"
 "application> package, or if you want to install a different version than the "
@@ -466,7 +466,7 @@ msgstr ""
 "<application>gtkmm</application>。可以从 <ulink url=\"https://download.gnome.";
 "org/sources/gtkmm/\"/> 中下载 <application>gtkmm</application> 的源代码。"
 
-#: C/index-in.docbook:253
+#: C/index-in.docbook:262
 msgid ""
 "After you've installed all of the dependencies, download the "
 "<application>gtkmm</application> source code, unpack it, and change to the "
@@ -479,7 +479,7 @@ msgstr ""
 "建。 参见你所下载的<application>gtkmm</application>源代码中的"
 "<filename>README</filename>。"
 
-#: C/index-in.docbook:260
+#: C/index-in.docbook:269
 msgid ""
 "Remember that on a Unix or Linux operating system, you will probably need to "
 "be <literal>root</literal> to install software. The <command>su</command> or "
@@ -490,7 +490,7 @@ msgstr ""
 "安装软件。<command>su</command>或者<command>sudo</command> 命令允许你输入 "
 "<literal>root</literal> 密码,并且临时拥有 <literal>root</literal> 权限。"
 
-#: C/index-in.docbook:267
+#: C/index-in.docbook:276
 msgid ""
 "The <filename>configure</filename> script or <command>meson</command> will "
 "check to make sure all of the required dependencies are already installed. "
@@ -500,7 +500,7 @@ msgstr ""
 "所有必须的依赖软件包都已经正确的安装了。如果你遗漏了某个依赖软件包的话,它会"
 "退出并提示错误信息。"
 
-#: C/index-in.docbook:278
+#: C/index-in.docbook:287
 #, no-wrap
 msgid ""
 "\n"
@@ -509,7 +509,7 @@ msgstr ""
 "\n"
 "# ./configure --prefix=/usr\n"
 
-#: C/index-in.docbook:272
+#: C/index-in.docbook:281
 msgid ""
 "By default, <application>gtkmm</application> if built with Autotools, will "
 "be installed under the <filename>/usr/local</filename> directory. On some "
@@ -522,7 +522,7 @@ msgstr ""
 "同的位置。比如,在 Red Hat Linux 系统中,你也许需要使用 <literal>--prefix</"
 "literal> 选项进行配置,例如:<_:screen-1/>"
 
-#: C/index-in.docbook:283
+#: C/index-in.docbook:292
 msgid ""
 "You should be very careful when installing to standard system prefixes such "
 "as <filename>/usr</filename>. Linux distributions install software packages "
@@ -536,7 +536,7 @@ msgstr ""
 "会破坏或与使用软件包管理器安装的软件冲突。理想情况下,你应当将从源代码安装的"
 "软件都安装到一个独立位置。"
 
-#: C/index-in.docbook:292
+#: C/index-in.docbook:301
 msgid ""
 "If you want to help develop <application>gtkmm</application> or experiment "
 "with new features, you can also install <application>gtkmm</application> "
@@ -550,11 +550,11 @@ msgstr ""
 "做,但是如果你对帮助 <application>gtkmm</application> 开发感兴趣,请看附录:"
 "<link linkend=\"chapter-working-with-source\">使用 gtkmm 源代码</link>。"
 
-#: C/index-in.docbook:303
+#: C/index-in.docbook:312
 msgid "Microsoft Windows"
 msgstr "Microsoft Windows"
 
-#: C/index-in.docbook:304
+#: C/index-in.docbook:313
 msgid ""
 "GTK and <application>gtkmm</application> were designed to work well with "
 "Microsoft Windows, and the developers encourage its use on the win32 "
@@ -572,11 +572,11 @@ msgstr ""
 "installation\"><application>gtkmm</application>和Win32</link>以得到关于"
 "Windows相关的安装方法和注意事项。"
 
-#: C/index-in.docbook:315
+#: C/index-in.docbook:324
 msgid "Basics"
 msgstr "基础"
 
-#: C/index-in.docbook:317
+#: C/index-in.docbook:326
 msgid ""
 "This chapter will introduce some of the most important aspects of "
 "<application>gtkmm</application> coding. These will be demonstrated with "
@@ -587,7 +587,7 @@ msgstr ""
 "一些可以运行的示例代码来演示。然而,这仅仅是一种尝试,你还需要继续看其它章"
 "节,以得到更实质性的信息。"
 
-#: C/index-in.docbook:320
+#: C/index-in.docbook:329
 msgid ""
 "Your existing knowledge of C++ will help you with <application>gtkmm</"
 "application> as it would with any library. Unless we state otherwise, you "
@@ -600,11 +600,11 @@ msgstr ""
 "application> 类会像任何其它 C++ 类一样,并且你可以期待在 <application>gtkmm</"
 "application> 类上使用你现有的知识。"
 
-#: C/index-in.docbook:325 C/index-in.docbook:3316
+#: C/index-in.docbook:334 C/index-in.docbook:3324
 msgid "Simple Example"
 msgstr "简单的例子"
 
-#: C/index-in.docbook:327
+#: C/index-in.docbook:336
 msgid ""
 "To begin our introduction to <application>gtkmm</application>, we'll start "
 "with the simplest program possible. This program will create an empty 200 x "
@@ -613,7 +613,7 @@ msgstr ""
 "在开始介绍 <application>gtkmm</application> 之前,我们将以一个尽可能简单的程"
 "序开始。这个程序创建一个 200 x 200 像素大小的空窗口。"
 
-#: C/index-in.docbook:332
+#: C/index-in.docbook:341
 msgid ""
 "<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
 "examples/book/base\">Source Code</ulink>"
@@ -621,16 +621,16 @@ msgstr ""
 "<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
 "examples/book/base\">源代码</ulink>"
 
-#: C/index-in.docbook:334
+#: C/index-in.docbook:343
 msgid "We will now explain each line of the example"
 msgstr "我们会逐行讲解这个例子"
 
-#: C/index-in.docbook:335
+#: C/index-in.docbook:344
 #, no-wrap
 msgid "#include &lt;gtkmm.h&gt;"
 msgstr "#include &lt;gtkmm.h&gt;"
 
-#: C/index-in.docbook:336
+#: C/index-in.docbook:345
 msgid ""
 "All <application>gtkmm</application> programs must include certain "
 "<application>gtkmm</application> headers; <literal>gtkmm.h</literal> "
@@ -643,12 +643,12 @@ msgstr ""
 "有 <application>gtkmm</application> 的内容。通常来说,这并不是一个好主意,因"
 "为它包括了一兆左右的头文件。当然,对于这个简单的程序,这就够了。"
 
-#: C/index-in.docbook:346
+#: C/index-in.docbook:355
 #, no-wrap
 msgid "auto app = Gtk::Application::create(\"org.gtkmm.examples.base\");"
 msgstr "auto app = Gtk::Application::create(\"org.gtkmm.examples.base\");"
 
-#: C/index-in.docbook:343
+#: C/index-in.docbook:352
 msgid ""
 "The next statement: <_:programlisting-1/> creates a <classname>Gtk::"
 "Application</classname> object, stored in a <classname>Glib::RefPtr</"
@@ -662,13 +662,13 @@ msgstr ""
 "<methodname>create()</methodname>方法将初始化<application>gtkmm</"
 "application>。"
 
-#: C/index-in.docbook:352
+#: C/index-in.docbook:361
 msgid ""
 "The next two lines of code create a window and set its default (initial) "
 "size:"
 msgstr "接下来的两行代码创建一个窗口并设置其的初始大小:"
 
-#: C/index-in.docbook:355
+#: C/index-in.docbook:364
 #, no-wrap
 msgid ""
 "Gtk::Window window;\n"
@@ -677,7 +677,7 @@ msgstr ""
 "Gtk::Window window;\n"
 "window.set_default_size(200, 200);"
 
-#: C/index-in.docbook:357
+#: C/index-in.docbook:366
 msgid ""
 "The last line shows the window and enters the <application>gtkmm</"
 "application> main processing loop, which will finish when the window is "
@@ -690,17 +690,17 @@ msgstr ""
 "最后一行显示窗口并进入<application>gtkmm</application>主循环,当窗口被关闭。"
 "你的<function>main()</function>函数将会返回成功或者适当的错误码。"
 
-#: C/index-in.docbook:364
+#: C/index-in.docbook:373
 #, no-wrap
 msgid "return app-&gt;run(window, argc, argv);"
 msgstr "return app-&gt;run(window, argc, argv);"
 
-#: C/index-in.docbook:369
+#: C/index-in.docbook:378
 #, no-wrap
 msgid "g++ simple.cc -o simple `pkg-config gtkmm-4.0 --cflags --libs`"
 msgstr "g++ simple.cc -o simple `pkg-config gtkmm-4.0 --cflags --libs`"
 
-#: C/index-in.docbook:366
+#: C/index-in.docbook:375
 msgid ""
 "After putting the source code in <literal>simple.cc</literal> you can "
 "compile the above program with <application>gcc</application> using: <_:"
@@ -716,11 +716,11 @@ msgstr ""
 "做为该命令行的一部分来使用。另外请注意,在命令行中<literal>simple.cc</"
 "literal>必须位于<literal>pkg-config</literal>调用之前。"
 
-#: C/index-in.docbook:379
+#: C/index-in.docbook:388
 msgid "Headers and Linking"
 msgstr "头文件和链接"
 
-#: C/index-in.docbook:380
+#: C/index-in.docbook:389
 msgid ""
 "Although we have shown the compilation command for the simple example, you "
 "really should use the automake and autoconf tools, as described in "
@@ -736,7 +736,7 @@ msgstr ""
 "application> 包内,同时附有适当的编译构建的文件,所以我们以后不会再给出任何编"
 "译命令。你只需要找到恰当的目录然后键入 <literal>make</literal>。"
 
-#: C/index-in.docbook:383
+#: C/index-in.docbook:392
 msgid ""
 "To simplify compilation, we use <literal>pkg-config</literal>, which is "
 "present in all (properly installed) <application>gtkmm</application> "
@@ -756,12 +756,12 @@ msgstr ""
 "一个需要编译器去链接的库列表和一个用于寻找它们的目录列表。试着在你的命令行提"
 "示符下运行它,看看在你的系统上会有什么样的结果。"
 
-#: C/index-in.docbook:396
+#: C/index-in.docbook:405
 #, no-wrap
 msgid "PKG_CHECK_MODULES([MYAPP], [gtkmm-4.0 &gt;= 4.8.0])"
 msgstr "PKG_CHECK_MODULES([MYAPP], [gtkmm-4.0 &gt;= 4.8.0])"
 
-#: C/index-in.docbook:393
+#: C/index-in.docbook:402
 msgid ""
 "However, this is even simpler when using the <function>PKG_CHECK_MODULES()</"
 "function> macro in a standard configure.ac file with autoconf and automake. "
@@ -773,7 +773,7 @@ msgstr ""
 "programlisting-1/> 这将会检查是否存在 gtkmm,并且定义了可以在你的 Makefile."
 "am 文件中使用的 MYAPP_LIBS 和 MYAPP_CFLAGS 变量。"
 
-#: C/index-in.docbook:399
+#: C/index-in.docbook:408
 msgid ""
 "gtkmm-4.0 is the name of the current stable API. There are older APIs called "
 "gtkmm-2.4 and gtkmm-3.0 which install in parallel when they are available. "
@@ -790,14 +790,14 @@ msgstr ""
 "持兼容。理论上,将来可以有 gtkmm-5.0 API 与现在的 gtkmm-4.0 同时安装到系统,"
 "而现有应用程序不会受到影响。"
 
-#: C/index-in.docbook:406
+#: C/index-in.docbook:415
 msgid ""
 "Note that if you mention extra modules in addition to gtkmm-4.0, they should "
 "be separated by spaces, not commas."
 msgstr ""
 "注意,如果你提到了除 gtkmm-4.0 之外的模块,它们需要以空格分开,而不是逗号。"
 
-#: C/index-in.docbook:409
+#: C/index-in.docbook:418
 msgid ""
 "The GNU site has more information about <ulink url=\"https://www.gnu.org/";
 "software/autoconf/\">autoconf</ulink> and <ulink url=\"https://www.gnu.org/";
@@ -807,7 +807,7 @@ msgstr ""
 "\">autoconf</ulink>和<ulink url=\"https://www.gnu.org/software/automake/";
 "\">automake</ulink>的相关信息。"
 
-#: C/index-in.docbook:412
+#: C/index-in.docbook:421
 msgid ""
 "If you start by experimenting with a small application that you plan to use "
 "just for yourself, it's easier to start with a Makefile similar to the "
@@ -818,11 +818,11 @@ msgstr ""
 "building-applications\">构建应用程序</link>章节的<filename>Makefile.example</"
 "filename>文件从MakeFile开始比较容易。"
 
-#: C/index-in.docbook:420 C/index-in.docbook:5869
+#: C/index-in.docbook:429 C/index-in.docbook:5858
 msgid "Widgets"
 msgstr "部件"
 
-#: C/index-in.docbook:421
+#: C/index-in.docbook:430
 msgid ""
 "<application>gtkmm</application> applications consist of windows containing "
 "widgets, such as buttons and text boxes. In some other systems, widgets are "
@@ -835,7 +835,7 @@ msgstr ""
 "的每个部件,在你的代码里就会有一个对应的 C++ 对象。所以当你想控制部件行为的时"
 "候,只需要调用这个部件对象的相应方法即可。"
 
-#: C/index-in.docbook:423
+#: C/index-in.docbook:432
 #, no-wrap
 msgid ""
 "m_box.append(m_Button1);\n"
@@ -844,12 +844,12 @@ msgstr ""
 "m_box.append(m_Button1);\n"
 "m_box.append(m_Button2);"
 
-#: C/index-in.docbook:426
+#: C/index-in.docbook:435
 #, no-wrap
 msgid "m_frame.set_child(m_box);"
 msgstr "m_frame.set_child(m_box);"
 
-#: C/index-in.docbook:422
+#: C/index-in.docbook:431
 msgid ""
 "Widgets are arranged inside container widgets such as frames and notebooks, "
 "in a hierarchy of widgets within widgets. Some of these container widgets, "
@@ -869,7 +869,7 @@ msgstr ""
 "<classname>Gtk::Box</classname> 添加到一个 <classname>Gtk::Frame</classname> "
 "中,它包含一个可视的边框和标题:<_:programlisting-2/>"
 
-#: C/index-in.docbook:428
+#: C/index-in.docbook:437
 msgid ""
 "Most of the chapters in this book deal with specific widgets. See the <link "
 "linkend=\"chapter-container-widgets\">Container Widgets</link> section for "
@@ -878,7 +878,7 @@ msgstr ""
 "本书中的大部分章节都是讲解特定的部件。要得到更多关于添加部件到容器部件的信"
 "息,请看 <link linkend=\"chapter-container-widgets\">容器部件</link> 这一章。"
 
-#: C/index-in.docbook:432
+#: C/index-in.docbook:441
 msgid ""
 "Although you can specify the layout and appearance of windows and widgets "
 "with C++ code, you will probably find it more convenient to design your user "
@@ -891,7 +891,7 @@ msgstr ""
 "载界面是更方便。请参考 <link linkend=\"chapter-builder\">Glade 与 Gtk::"
 "Builder</link> 这一章。"
 
-#: C/index-in.docbook:435
+#: C/index-in.docbook:444
 msgid ""
 "Although <application>gtkmm</application> widget instances have lifetimes "
 "and scopes just like those of other C++ classes, <application>gtkmm</"
@@ -912,12 +912,12 @@ msgstr ""
 "时它将被一并删除。如果你需要了解更多关于 <application>gtkmm</application> 内"
 "存管理技术的话,请看 <link linkend=\"chapter-memory\">内存管理</link> 章节。"
 
-#: C/index-in.docbook:449 C/index-in.docbook:4689 C/index-in.docbook:4933
-#: C/index-in.docbook:8092
+#: C/index-in.docbook:458 C/index-in.docbook:4696 C/index-in.docbook:4940
+#: C/index-in.docbook:8065
 msgid "Signals"
 msgstr "信号"
 
-#: C/index-in.docbook:451
+#: C/index-in.docbook:460
 msgid ""
 "<application>gtkmm</application>, like most GUI toolkits, is <emphasis>event-"
 "driven</emphasis>. When an event occurs, such as the press of a mouse "
@@ -932,7 +932,17 @@ msgstr ""
 "为了使这个按钮点击产生一个动作,我们可以设置一个<emphasis>信号处理函数"
 "(signal handler)</emphasis>来捕捉这个“clicked”信号。"
 
-#: C/index-in.docbook:459
+#: C/index-in.docbook:467
+msgid ""
+"<application>gtkmm</application> uses the libsigc++ library to implement "
+"signals. Here is an example line of code that connects a Gtk::Button's "
+"\"clicked\" signal with a signal handler called \"on_button_clicked\":"
+msgstr ""
+"<application>gtkmm</application> 使用 libsigc++ 来实现信号操作。下面这个例子"
+"演示怎样把 Gtk::Button 的“clicked” 信号连接到命名为“on_button_clicked”的信号"
+"处理函数上:"
+
+#: C/index-in.docbook:469
 #, no-wrap
 msgid ""
 "m_button1.signal_clicked().connect( sigc::mem_fun(*this,\n"
@@ -941,18 +951,7 @@ msgstr ""
 "m_button1.signal_clicked().connect( sigc::mem_fun(*this,\n"
 "  &amp;HelloWorld::on_button_clicked) );"
 
-#: C/index-in.docbook:458
-msgid ""
-"<application>gtkmm</application> uses the libsigc++ library to implement "
-"signals. Here is an example line of code that connects a Gtk::Button's "
-"\"clicked\" signal with a signal handler called \"on_button_clicked\": <_:"
-"programlisting-1/>"
-msgstr ""
-"<application>gtkmm</application> 使用 libsigc++ 来实现信号操作。下面这个例子"
-"演示怎样把 Gtk::Button 的“clicked” 信号连接到命名为“on_button_clicked”的信号"
-"处理函数上:<_:programlisting-1/>"
-
-#: C/index-in.docbook:463
+#: C/index-in.docbook:472
 msgid ""
 "For more detailed information about signals, see the <link linkend=\"chapter-"
 "signals\">appendix</link>."
@@ -960,7 +959,7 @@ msgstr ""
 "要得到更多关于信号的信息,请参考<link linkend=\"chapter-signals\">附录</"
 "link>。"
 
-#: C/index-in.docbook:464
+#: C/index-in.docbook:473
 msgid ""
 "For information about implementing your own signals rather than just "
 "connecting to the existing <application>gtkmm</application> signals, see the "
@@ -970,11 +969,11 @@ msgstr ""
 "application> 信号,请参考 <link linkend=\"chapter-custom-signals\">附录</"
 "link>。"
 
-#: C/index-in.docbook:470
+#: C/index-in.docbook:479
 msgid "Glib::ustring"
 msgstr "Glib::ustring"
 
-#: C/index-in.docbook:471
+#: C/index-in.docbook:480
 msgid ""
 "You might be surprised to learn that <application>gtkmm</application> "
 "doesn't use <classname>std::string</classname> in its interfaces. Instead it "
@@ -991,7 +990,7 @@ msgstr ""
 "string</classname>来使用,并忽略本节后面的内容。但是如果你希望在你的应用程序"
 "中使用英语以外的语言的话,那么请继续读下去。"
 
-#: C/index-in.docbook:472
+#: C/index-in.docbook:481
 msgid ""
 "std::string uses 8 bits per character, but 8 bits aren't enough to encode "
 "languages such as Arabic, Chinese, and Japanese. Although the encodings for "
@@ -1009,7 +1008,7 @@ msgstr ""
 "ustring 所包装的东西。它提供了和 std::string 几乎相同的接口,以及和 std::"
 "string 的自动类型转换的功能。"
 
-#: C/index-in.docbook:477
+#: C/index-in.docbook:486
 msgid ""
 "One of the benefits of UTF-8 is that you don't need to use it unless you "
 "want to, so you don't need to retrofit all of your code at once. "
@@ -1025,7 +1024,7 @@ msgstr ""
 "还会崩溃。那时,你所需要做的就是开始使用 <classname>Glib::ustring</"
 "classname> 来取而代之。"
 
-#: C/index-in.docbook:478
+#: C/index-in.docbook:487
 msgid ""
 "Note that UTF-8 isn't compatible with 8-bit encodings like ISO-8859-1. For "
 "instance, German umlauts are not in the ASCII range and need more than 1 "
@@ -1038,7 +1037,7 @@ msgstr ""
 "如果你的代码中包含8位的字符串文字,你需要把它们转变成 UTF-8 编码 (比如,巴伐"
 "利亚的问候语“Grüß Gott”可能会显示成“Gr\\xC3\\xBC\\xC3\\x9F Gott”)。"
 
-#: C/index-in.docbook:479
+#: C/index-in.docbook:488
 msgid ""
 "You should avoid C-style pointer arithmetic, and functions such as strlen(). "
 "In UTF-8, each character might need anywhere from 1 to 6 bytes, so it's not "
@@ -1053,7 +1052,7 @@ msgstr ""
 "可以从字符的层面上考虑使用 Glib::ustring::substr() 这样的函数,而不用再去考虑"
 "字节这样的细节了。"
 
-#: C/index-in.docbook:481
+#: C/index-in.docbook:490
 msgid ""
 "Unlike the Windows UCS-2 Unicode solution, this does not require any special "
 "compiler options to process string literals, and it does not result in "
@@ -1063,7 +1062,7 @@ msgstr ""
 "这样字符串,也不会导致为 Unicode 编译的可执行文件或库与含为 ASCII 的不兼容之"
 "类的问题。"
 
-#: C/index-in.docbook:483
+#: C/index-in.docbook:492
 msgid ""
 "<ulink url=\"http://developer.gnome.org/glibmm/unstable/classGlib_1_1ustring.";
 "html\">Reference</ulink>"
@@ -1071,7 +1070,7 @@ msgstr ""
 "<ulink url=\"http://developer.gnome.org/glibmm/unstable/classGlib_1_1ustring.";
 "html\">参考</ulink>"
 
-#: C/index-in.docbook:485
+#: C/index-in.docbook:494
 msgid ""
 "See the <link linkend=\"chapter-internationalization\">Internationalization</"
 "link> section for information about providing the UTF-8 string literals."
@@ -1079,11 +1078,11 @@ msgstr ""
 "要得到更多关于 UTF-8 字符的信息,请参考<link linkend=\"chapter-"
 "internationalization\">国际化</link>这一节。"
 
-#: C/index-in.docbook:490
+#: C/index-in.docbook:499
 msgid "Mixing C and C++ APIs"
 msgstr "混合使用 C 和 C++ API"
 
-#: C/index-in.docbook:491
+#: C/index-in.docbook:500
 msgid ""
 "You can use C APIs which do not yet have convenient C++ interfaces. It is "
 "generally not a problem to use C APIs from C++, and <application>gtkmm</"
@@ -1097,7 +1096,18 @@ msgstr ""
 "一个简单的方式来从一个 C 对象创建一个 C++ 封装的对象,当然,这个 C API 是需要"
 "基于 <classname>GObject</classname> 系统的。"
 
-#: C/index-in.docbook:502
+#: C/index-in.docbook:506
+msgid ""
+"To use a <application>gtkmm</application> instance with a C function that "
+"requires a C <classname>GObject</classname> instance, use the C++ instance’s "
+"<function>gobj()</function> function to obtain a pointer to the underlying C "
+"instance. For example:"
+msgstr ""
+"要用 C 函数使用一个 <application>gtkmm</application> 实例需要一个 C "
+"<classname>GObject</classname> 实例,使用C++的<function>gobj()</function>接口"
+"函数可以得到一个底层 GObject 实例的指针。例如:"
+
+#: C/index-in.docbook:511
 #, no-wrap
 msgid ""
 "\n"
@@ -1108,18 +1118,7 @@ msgstr ""
 "Gtk::Button button(\"example\");\n"
 "gtk_button_do_something_that_gtkmm_cannot(button.gobj());\n"
 
-#: C/index-in.docbook:497
-msgid ""
-"To use a <application>gtkmm</application> instance with a C function that "
-"requires a C <classname>GObject</classname> instance, use the C++ instance’s "
-"<function>gobj()</function> function to obtain a pointer to the underlying C "
-"instance. For example: <_:programlisting-1/>"
-msgstr ""
-"要用 C 函数使用一个 <application>gtkmm</application> 实例需要一个 C "
-"<classname>GObject</classname> 实例,使用C++的<function>gobj()</function>接口"
-"函数可以得到一个底层 GObject 实例的指针。例如:<_:programlisting-1/>"
-
-#: C/index-in.docbook:514
+#: C/index-in.docbook:522
 #, no-wrap
 msgid ""
 "\n"
@@ -1132,19 +1131,19 @@ msgstr ""
 "Gtk::Button* button = Glib::wrap(cbutton);\n"
 "button-&gt;set_label(\"Now I speak C++ too!\");\n"
 
-#: C/index-in.docbook:521
+#: C/index-in.docbook:529
 msgid ""
 "it's a widget or other class that inherits from <classname>Gtk::Object</"
 "classname>, and"
 msgstr ""
 "它是一个部件或者是继承自<classname>Gtk::Object</classname>的其他类,并且"
 
-#: C/index-in.docbook:522
+#: C/index-in.docbook:530
 msgid ""
 "the C instance has a floating reference when the wrapper is created, and"
 msgstr "当封装被创建的时候C示例拥有一个浮动引用,并且"
 
-#: C/index-in.docbook:523
+#: C/index-in.docbook:531
 msgid ""
 "<function>Gtk::manage()</function> has not been called on it (which includes "
 "if it was created with <function>Gtk::make_managed()</function>), or"
@@ -1152,7 +1151,7 @@ msgstr ""
 "并未在其上调用<function>Gtk::manage()</function>(包括使用<function>Gtk::"
 "make_managed()</function>创建的) ,或者"
 
-#: C/index-in.docbook:524
+#: C/index-in.docbook:532
 msgid ""
 "<function>Gtk::manage()</function> was called on it, but it was never added "
 "to, or was later removed from, its parent."
@@ -1160,7 +1159,7 @@ msgstr ""
 "在其上调用了<function>Gtk::manage()</function>,但是从未将其加入到父项中,也"
 "从未将其从父项中删除。"
 
-#: C/index-in.docbook:508
+#: C/index-in.docbook:516
 msgid ""
 "To obtain a <application>gtkmm</application> instance from a C "
 "<classname>GObject</classname> instance, use one of the many overloaded "
@@ -1179,7 +1178,7 @@ msgstr ""
 "itemizedlist-2/> <function>Glib::wrap()</function>将C和C++示例相互绑定,则应"
 "明确删除C++包装器。请不要在C示例死亡前删除C++实例。"
 
-#: C/index-in.docbook:529
+#: C/index-in.docbook:537
 msgid ""
 "In all other cases the C++ instance is automatically deleted when the last "
 "reference to the C instance is dropped. This includes all <function>Glib::"
@@ -1190,11 +1189,11 @@ msgstr ""
 "括所有的<function>Glib::wrap()</function>所返回的<classname>Glib::RefPtr</"
 "classname>。"
 
-#: C/index-in.docbook:536
+#: C/index-in.docbook:544
 msgid "Hello World in <application>gtkmm</application>"
 msgstr "用 <application>gtkmm</application> 写 Hello World"
 
-#: C/index-in.docbook:538
+#: C/index-in.docbook:546
 msgid ""
 "We've now learned enough to look at a real example. In accordance with an "
 "ancient tradition of computer science, we now introduce Hello World, a la "
@@ -1203,7 +1202,7 @@ msgstr ""
 "目前我们已经可以自己所学的知识来写一个真正的程序了。根据计算机科学的传统,我"
 "们现在以 <application>gtkmm</application> 的方式来介绍 Hello World 程序:"
 
-#: C/index-in.docbook:543
+#: C/index-in.docbook:551
 msgid ""
 "<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
 "examples/book/helloworld\">Source Code</ulink>"
@@ -1211,17 +1210,17 @@ msgstr ""
 "<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
 "examples/book/helloworld\">源代码</ulink>"
 
-#: C/index-in.docbook:545
+#: C/index-in.docbook:553
 msgid ""
 "Try to compile and run it before going on. You should see something like "
 "this:"
 msgstr "在继续讲解之前,可以尝试着编译并运行这个程序,你会看到这样的结果:"
 
-#: C/index-in.docbook:550
+#: C/index-in.docbook:558
 msgid "Hello World"
 msgstr "Hello World"
 
-#: C/index-in.docbook:556
+#: C/index-in.docbook:564
 msgid ""
 "Pretty thrilling, eh? Let's examine the code. First, the "
 "<classname>HelloWorld</classname> class:"
@@ -1229,7 +1228,7 @@ msgstr ""
 "真让人激动,不是吗?让我们回过头来看一下代码。首先看一下 "
 "<classname>HelloWorld</classname> 类:"
 
-#: C/index-in.docbook:561
+#: C/index-in.docbook:569
 #, no-wrap
 msgid ""
 "class HelloWorld : public Gtk::Window\n"
@@ -1260,7 +1259,7 @@ msgstr ""
 "  Gtk::Button m_button;\n"
 "};"
 
-#: C/index-in.docbook:575
+#: C/index-in.docbook:583
 msgid ""
 "This class implements the \"Hello World\" window. It's derived from "
 "<classname>Gtk::Window</classname>, and has a single <classname>Gtk::Button</"
@@ -1272,7 +1271,7 @@ msgstr ""
 "并且只有一个 <classname>Gtk::Button</classname> 成员。我们已经使用构造函数为"
 "该窗口完成了所有的初始化工作,包括挂接消息。在这,已经去掉注释的代码:"
 
-#: C/index-in.docbook:584
+#: C/index-in.docbook:592
 #, no-wrap
 msgid ""
 "HelloWorld::HelloWorld()\n"
@@ -1293,7 +1292,7 @@ msgstr ""
 "  set_child(m_button);\n"
 "}"
 
-#: C/index-in.docbook:593
+#: C/index-in.docbook:601
 msgid ""
 "Notice that we've used an initialiser statement to give the "
 "<literal>m_button</literal> object the label \"Hello World\"."
@@ -1301,7 +1300,7 @@ msgstr ""
 "注意,我们使用初始化列表的方式给 <literal>m_button</literal> 对象添加了一"
 "个“Hello World”的标签。"
 
-#: C/index-in.docbook:598
+#: C/index-in.docbook:606
 msgid ""
 "Next we call the Button's <methodname>set_margin()</methodname> method. This "
 "sets the amount of space around the button."
@@ -1309,7 +1308,7 @@ msgstr ""
 "接下来调用 Button 类的 <methodname>set_margin()</methodname> 方法。这将设置按"
 "钮周围空间的大小。"
 
-#: C/index-in.docbook:603
+#: C/index-in.docbook:611
 msgid ""
 "We then hook up a signal handler to <literal>m_button</literal>'s "
 "<literal>clicked</literal> signal. This prints our friendly greeting to "
@@ -1319,7 +1318,7 @@ msgstr ""
 "信号处理函数上。这会向 <literal>stdout</literal> (标准输出) 打印出友好的问候"
 "语。"
 
-#: C/index-in.docbook:608
+#: C/index-in.docbook:616
 msgid ""
 "Next, we use the Window's <methodname>set_child()</methodname> method to put "
 "<literal>m_button</literal> in the Window. The <methodname>set_child()</"
@@ -1329,13 +1328,13 @@ msgstr ""
 "<literal>m_button</literal>放入窗口。<methodname>set_child()</methodname>方法"
 "会将部件放入窗口中。"
 
-#: C/index-in.docbook:614
+#: C/index-in.docbook:622
 msgid ""
 "Now let's look at our program's <function>main()</function> function. Here "
 "it is, without comments:"
 msgstr "现在让我们来看看程序中没有注释过的 <function>main()</function> 函数:"
 
-#: C/index-in.docbook:619
+#: C/index-in.docbook:627
 #, no-wrap
 msgid ""
 "int main(int argc, char* argv[])\n"
@@ -1352,7 +1351,7 @@ msgstr ""
 "  return app-&gt;run(helloworld, argc, argv);\n"
 "}"
 
-#: C/index-in.docbook:626
+#: C/index-in.docbook:634
 msgid ""
 "First we instantiate an object stored in a <classname>RefPtr</classname> "
 "smartpointer called <literal>app</literal>. This is of type <classname>Gtk::"
@@ -1363,7 +1362,7 @@ msgstr ""
 "classname>智能指针对象,它的类型为 <classname>Gtk::Application</classname> 。"
 "每一个 <application>gtkmm</application> 程序都有这样的一个东西。"
 
-#: C/index-in.docbook:631
+#: C/index-in.docbook:639
 msgid ""
 "Next we make an object of our <classname>HelloWorld</classname> class, whose "
 "constructor takes no arguments, but it isn't visible yet. When we call "
@@ -1384,7 +1383,7 @@ msgstr ""
 "应。当用户关闭窗口时,<methodname>run()</methodname> 函数将返回,导致"
 "<function>main()</function>函数的最后一行将被执行。然后程序就结束了。"
 
-#: C/index-in.docbook:640
+#: C/index-in.docbook:648
 msgid ""
 "Like the simple example we showed earlier, this Hello World program does not "
 "use the command-line parameters. It's not necessary to pass them to "
@@ -1393,11 +1392,11 @@ msgstr ""
 "就像我们之前显示的简单示例一样,这个 Hello World 程序不实用命令行参数。不需要"
 "将其传递给<methodname>run()</methodname>。"
 
-#: C/index-in.docbook:649
+#: C/index-in.docbook:657
 msgid "Changes in <application>gtkmm</application> 3"
 msgstr "<application>gtkmm</application>3中的变更"
 
-#: C/index-in.docbook:651
+#: C/index-in.docbook:659
 msgid ""
 "<application>gtkmm</application>-3.0 is an old version of the "
 "<application>gtkmm</application> API that installs in parallel with the "
@@ -1419,7 +1418,7 @@ msgstr ""
 "兼容。如果你从未用过<application>gtkmm</application>-2.4 API 则你可以放心的忽"
 "略本章。"
 
-#: C/index-in.docbook:653
+#: C/index-in.docbook:661
 msgid ""
 "<application>gtkmm</application> 3's library is called "
 "<literal>libgtkmm-3.0</literal> rather than <literal>libgtkmm-2.4</literal> "
@@ -1432,11 +1431,11 @@ msgstr ""
 "pkg-config应该检索<literal>gtkmm-3.0</literal>而不是<literal>gtkmm-2.4</"
 "literal>。"
 
-#: C/index-in.docbook:656
+#: C/index-in.docbook:664
 msgid "<application>gtkmm</application> 3 added some new classes:"
 msgstr "<application>gtkmm</application>3添加了一些新的类:"
 
-#: C/index-in.docbook:659
+#: C/index-in.docbook:667
 msgid ""
 "<classname>Gtk::AppChooser</classname>, <classname>Gtk::AppChooserButton</"
 "classname>, <classname>Gtk::AppChooserDialog</classname> allow the user to "
@@ -1446,7 +1445,7 @@ msgstr ""
 "classname>,<classname>Gtk::AppChooserDialog</classname>允许用户选择已安装的应"
 "用程序用以打开特定类型的内容。"
 
-#: C/index-in.docbook:660
+#: C/index-in.docbook:668
 msgid ""
 "<classname>Gtk::Grid</classname> is a new container widget that will "
 "eventually replace <classname>Gtk::Box</classname> and <classname>Gtk::"
@@ -1457,7 +1456,7 @@ msgstr ""
 "<classname>Gtk::Box</classname>和<classname>Gtk::Table</classname>。它根据它"
 "的子项的属性而不是自身的布局属性对子项进行排列。"
 
-#: C/index-in.docbook:661
+#: C/index-in.docbook:669
 msgid ""
 "<classname>Gtk::Switch</classname> displays On/Off states more explictly "
 "than <classname>Gtk::CheckButton</classname>. It may be useful, for "
@@ -1467,7 +1466,7 @@ msgstr ""
 "classname>更明确的显示开/关状态。例如,在允许用户激活硬件的时候,他可能很有"
 "用。"
 
-#: C/index-in.docbook:664
+#: C/index-in.docbook:672
 msgid ""
 "<application>gtkmm</application> 3 also made several small changes to the "
 "API, which you will probably encounter when porting code that used "
@@ -1477,7 +1476,7 @@ msgstr ""
 "<application>gtkmm</application>-2.4的代码的时候你可能会遇到这些变更。这是一"
 "个简短的清单:"
 
-#: C/index-in.docbook:669
+#: C/index-in.docbook:677
 msgid ""
 "<classname>Gtk::CellLayout</classname>, used by <classname>Gtk::IconView</"
 "classname>, <classname>Gtk::TreeView::Column</classname> and <classname>Gtk::"
@@ -1490,7 +1489,7 @@ msgstr ""
 "CellLayout</classname>,现在有<classname>Gtk::CellArea</classname>可以用于指"
 "示<classname>CellRenderer</classname>的排列与对齐方式的详情。"
 
-#: C/index-in.docbook:671
+#: C/index-in.docbook:679
 msgid ""
 "Gtk::ComboBox now derives from CellLayout, allowing easier layout and "
 "alignment of its <classname>Gtk::CellRenderer</classname>s."
@@ -1498,7 +1497,7 @@ msgstr ""
 "Gtk::ComboBox现在从CellLayout派生,从而使更容易对<classname>Gtk::"
 "CellRenderer</classname>进行布局与对齐。"
 
-#: C/index-in.docbook:673
+#: C/index-in.docbook:681
 msgid ""
 "<classname>Gtk::Adjustment</classname> and <classname>IconSet</classname> "
 "and <classname>Gdk::Cursor</classname> are now used via <classname>Glib::"
@@ -1508,7 +1507,7 @@ msgstr ""
 "和<classname>Gdk::Cursor</classname>类现在通过<classname>Glib::RefPtr</"
 "classname>使用。"
 
-#: C/index-in.docbook:675
+#: C/index-in.docbook:683
 msgid ""
 "<classname>Gtk::Box</classname>, <classname>Gtk::ButtonBox</classname>, "
 "<classname>Gtk::IconView</classname>, <classname>Gtk::Paned</classname>, "
@@ -1527,7 +1526,7 @@ msgstr ""
 "不使用派生类(例如<classname>Gtk::HBox</classname>)的情况指定其方向(垂直或者水"
 "平)。"
 
-#: C/index-in.docbook:678
+#: C/index-in.docbook:686
 msgid ""
 "<classname>Gtk::IconView</classname>, <classname>Gtk::TextView</classname>, "
 "<classname>Gtk::TreeView</classname> and other widgets derive from "
@@ -1540,7 +1539,7 @@ msgstr ""
 "己的方法,例如<methodname>get_vadjustment()</methodname>拥有自己的"
 "set_scroll_adjustments信号。"
 
-#: C/index-in.docbook:680
+#: C/index-in.docbook:688
 msgid ""
 "<classname>Gtk::Style</classname> and <classname>Gtk::Rc</classname> were "
 "removed, replaced by <classname>Gtk::StyleContext</classname>, and "
@@ -1551,7 +1550,7 @@ msgstr ""
 "<classname>Gtk::StyleContext</classname>和<classname>Gtk::StyleProvider</"
 "classname>替换,例如<classname>Gtk::CssProvider</classname>。"
 
-#: C/index-in.docbook:682
+#: C/index-in.docbook:690
 msgid ""
 "Widget::on_expose_event() was replaced by Widget::on_draw(), which assumes "
 "that cairomm is used for drawing, via the provided <classname>Cairo::"
@@ -1562,7 +1561,7 @@ msgstr ""
 "<classname>Cairo::Context</classname>使用cairomm进行绘制,并且不需要你自己调"
 "用<methodname>Cairo::Context::clip()</methodname>。"
 
-#: C/index-in.docbook:684
+#: C/index-in.docbook:692
 msgid ""
 "<classname>Gdk::RGBA</classname> replaces <classname>Color</classname>, "
 "adding an alpha component for opacity. <classname>Colormap</classname> was "
@@ -1572,7 +1571,7 @@ msgstr ""
 "分量以支持透明度。<classname>Colormap</classname>与其笨拙的颜色分配方式一并被"
 "删除。"
 
-#: C/index-in.docbook:686
+#: C/index-in.docbook:694
 msgid ""
 "<classname>Gdk::Pixmap</classname> and <classname>Gdk::Bitmap</classname> "
 "were removed in favour of <classname>Gdk::Pixbuf</classname>."
@@ -1580,7 +1579,7 @@ msgstr ""
 "<classname>Gdk::Pixmap</classname>和<classname>Gdk::Bitmap</classname>现在被"
 "<classname>Gdk::Pixbuf</classname>所取代。"
 
-#: C/index-in.docbook:688
+#: C/index-in.docbook:696
 msgid ""
 "<classname>Gdk::Drawable</classname> was removed, with its methods moving "
 "into <classname>Gdk::Window</classname>."
@@ -1588,13 +1587,13 @@ msgstr ""
 "<classname>Gdk::Drawable</classname>被删除,与其有关的方法被移动到了"
 "<classname>Gdk::Window</classname>。"
 
-#: C/index-in.docbook:690
+#: C/index-in.docbook:698
 msgid ""
 "We now use std::vector in several methods instead of the intermediate "
 "*Handle types to make the API clearer."
 msgstr "我们现在使用std::vector而不是使用中间类型(*Handle)以使API更加的清晰。"
 
-#: C/index-in.docbook:695
+#: C/index-in.docbook:703
 msgid ""
 "All deprecated API was removed in <application>gtkmm</application> 3.0, "
 "though there have been new deprecations in later <application>gtkmm</"
@@ -1603,7 +1602,7 @@ msgstr ""
 "在<application>gtkmm</application> 3.0中我们删除了所有弃用的API,尽管在"
 "<application>gtkmm</application> 3.x版本中出现了新的被弃用的API。"
 
-#: C/index-in.docbook:697
+#: C/index-in.docbook:705
 msgid ""
 "As a first step to porting your source code to <application>gtkmm</"
 "application>-3.0 you should probably ensure that your application builds "
@@ -1619,7 +1618,7 @@ msgstr ""
 "你通过构建。访问<ulink url=\"https://wiki.gnome.org/Projects/gtkmm/";
 "PortingToGtkmm3\">gtkmm3移植Wiki</ulink>了解更多详情。"
 
-#: C/index-in.docbook:702
+#: C/index-in.docbook:710
 msgid ""
 "Changes in <application>gtkmm</application>-4.0 and "
 "<application>glibmm-2.68</application>"
@@ -1627,7 +1626,7 @@ msgstr ""
 "<application>gtkmm</application>-4.0和<application>glibmm-2.68</application>"
 "中的变更。"
 
-#: C/index-in.docbook:704
+#: C/index-in.docbook:712
 msgid ""
 "<application>gtkmm</application>-4.0 is a new version of the "
 "<application>gtkmm</application> API that installs in parallel with the "
@@ -1648,7 +1647,7 @@ msgstr ""
 "本性的区别,虽然有些变更但是保持了二进制兼容。如果你从未使用过"
 "<application>gtkmm</application>-3.0 API则你可以放心的忽略本章。"
 
-#: C/index-in.docbook:712
+#: C/index-in.docbook:720
 msgid ""
 "<application>gtkmm</application> 4's library is called "
 "<literal>libgtkmm-4.0</literal> rather than <literal>libgtkmm-3.0</literal> "
@@ -1661,7 +1660,7 @@ msgstr ""
 "<application>pkg-config</application>应该检索<literal>gtkmm-4.0</literal>而不"
 "是<literal>gtkmm-3.0</literal>。"
 
-#: C/index-in.docbook:718
+#: C/index-in.docbook:726
 msgid ""
 "<application>gtkmm</application>-4.0 is used in combination with "
 "<application>glibmm-2.68</application>, which sets the global locale for "
@@ -1687,7 +1686,7 @@ msgstr ""
 "create()</methodname>方法之前添加对<function>Glib::"
 "set_init_to_users_preferred_locale(false)</function>的调用。"
 
-#: C/index-in.docbook:728
+#: C/index-in.docbook:736
 msgid ""
 "<ulink url=\"http://developer.gnome.org/glibmm/unstable/namespaceGlib.html";
 "\">Reference</ulink>"
@@ -1695,7 +1694,7 @@ msgstr ""
 "<ulink url=\"http://developer.gnome.org/glibmm/unstable/namespaceGlib.html\";>"
 "参考</ulink>"
 
-#: C/index-in.docbook:730
+#: C/index-in.docbook:738
 msgid ""
 "There are lots and lots of differences between <application>gtkmm</"
 "application>-3.0 and <application>gtkmm</application>-4.0. The following "
@@ -1704,7 +1703,7 @@ msgstr ""
 "<application>gtkmm</application>-3.0和<application>gtkmm</application>-4.0之"
 "间有很多不同之处。以下是不完整的列表。"
 
-#: C/index-in.docbook:733
+#: C/index-in.docbook:741
 msgid ""
 "Some new classes were added in <application>gtkmm</application> 4 and "
 "<application>glibmm</application> 2.68:"
@@ -1712,7 +1711,7 @@ msgstr ""
 "在<application>gtkmm</application> 4和<application>glibmm</application> 2.68"
 "中添加了一些新的类:"
 
-#: C/index-in.docbook:736
+#: C/index-in.docbook:744
 msgid ""
 "<classname>Glib::ExtraClassInit</classname> and <classname>Gtk::Snapshot</"
 "classname>: These classes are needed only for writing custom widgets. See "
@@ -1722,7 +1721,7 @@ msgstr ""
 "classname>:这些类只用于编写自定义的窗口小部件。参见<link linkend=\"sec-"
 "custom-widgets\">自定义部件</link>小节。"
 
-#: C/index-in.docbook:739
+#: C/index-in.docbook:747
 msgid ""
 "<classname>Gtk::EventControllerKey</classname>, <classname>Gtk::"
 "EventControllerMotion</classname>, <classname>Gtk::EventControllerScroll</"
@@ -1732,7 +1731,7 @@ msgstr ""
 "EventControllerMotion</classname>, <classname>Gtk::EventControllerScroll</"
 "classname>和<classname>Gtk::GestureStylus</classname>"
 
-#: C/index-in.docbook:742
+#: C/index-in.docbook:750
 msgid ""
 "<classname>Gdk::Paintable</classname>, <classname>Gdk::Texture</classname>, "
 "<classname>Gtk::Picture</classname> and <classname>Gtk::WidgetPaintable</"
@@ -1742,7 +1741,7 @@ msgstr ""
 "<classname>Gtk::Picture</classname>和<classname>Gtk::WidgetPaintable</"
 "classname>"
 
-#: C/index-in.docbook:745
+#: C/index-in.docbook:753
 msgid ""
 "<classname>Gdk::Window</classname> has been renamed to <classname>Gdk::"
 "Surface</classname>. (<classname>Gtk::Window</classname> keeps its name.)"
@@ -1750,7 +1749,7 @@ msgstr ""
 "<classname>Gdk::Window</classname>被重命名为<classname>Gdk::Surface</"
 "classname>(<classname>Gtk::Window</classname>名称保持不变)。"
 
-#: C/index-in.docbook:747
+#: C/index-in.docbook:755
 msgid ""
 "<classname>Gdk::DrawContext</classname> and <classname>Gdk::CairoContext</"
 "classname> are new. <classname>Gdk::DrawingContext</classname> has been "
@@ -1760,7 +1759,7 @@ msgstr ""
 "CairoContext</classname>。<classname>Gdk::DrawingContext</classname>已被删"
 "除。"
 
-#: C/index-in.docbook:749
+#: C/index-in.docbook:757
 msgid ""
 "<classname>Gtk::Clipboard</classname> has been replaced by the new "
 "<classname>Gdk::Clipboard</classname>."
@@ -1768,7 +1767,7 @@ msgstr ""
 "<classname>Gtk::Clipboard</classname>被新的<classname>Gdk::Clipboard</"
 "classname>替换。"
 
-#: C/index-in.docbook:751
+#: C/index-in.docbook:759
 msgid ""
 "<classname>Gdk::DragContext</classname> has been split into <classname>Gdk::"
 "Drag</classname> and <classname>Gdk::Drop</classname>."
@@ -1776,7 +1775,7 @@ msgstr ""
 "<classname>Gdk::DragContext</classname>现在被拆分为<classname>Gdk::Drag</"
 "classname>和<classname>Gdk::Drop</classname>。"
 
-#: C/index-in.docbook:755
+#: C/index-in.docbook:763
 msgid ""
 "There have also been several changes to the API, which you will probably "
 "encounter when porting code that used <application>gtkmm</application>-3.0 "
@@ -1786,11 +1785,11 @@ msgstr ""
 "<application>glibmm</application>-2.4代码时你可能会遇到这些更改。以下是一个简"
 "短的变更列表:"
 
-#: C/index-in.docbook:760
+#: C/index-in.docbook:768
 msgid "A C++17 compiler is required."
 msgstr "需要支持C++17的编译器"
 
-#: C/index-in.docbook:761
+#: C/index-in.docbook:769
 msgid ""
 "<classname>Gtk::Button</classname>, <classname>Gtk::ToolButton</classname>, "
 "<classname>Gtk::MenuItem</classname> and <classname>Gtk::Switch</classname> "
@@ -1802,7 +1801,7 @@ msgstr ""
 "了<classname>Gtk::Actionable</classname>接口而不是已被删除的<classname>Gtk::"
 "Activatable</classname>接口。"
 
-#: C/index-in.docbook:765
+#: C/index-in.docbook:773
 msgid ""
 "<classname>Gtk::FontButton</classname> implements the <classname>Gtk::"
 "FontChooser</classname> interface."
@@ -1810,7 +1809,7 @@ msgstr ""
 "<classname>Gtk::FontButton</classname>实现了<classname>Gtk::FontChooser</"
 "classname>接口。"
 
-#: C/index-in.docbook:766
+#: C/index-in.docbook:774
 msgid ""
 "<classname>Gtk::Widget</classname>: The <methodname>get_preferred_*_vfunc()</"
 "methodname>s have been replaced by <methodname>measure_vfunc()</methodname>. "
@@ -1820,7 +1819,7 @@ msgstr ""
 "methodname>方法已被<methodname>measure_vfunc()</methodname>方法替代。此变更只"
 "影响自定义部件。"
 
-#: C/index-in.docbook:769
+#: C/index-in.docbook:777
 msgid ""
 "<classname>sigc::slot</classname>s use the <classname>sigc::slot&lt;"
 "R(Args...)&gt;</classname> syntax. Example: <classname>sigc::slot&lt;"
@@ -1831,13 +1830,13 @@ msgstr ""
 "</classname>语法。 例如: <classname>sigc::slot&lt;void(int, int)&gt;</"
 "classname>而不是使用<classname>sigc::slot&lt;void, int, int&gt;</classname>。"
 
-#: C/index-in.docbook:771
+#: C/index-in.docbook:779
 msgid ""
 "<classname>Gtk::DrawingArea</classname> uses a draw function instead of the "
 "draw signal."
 msgstr "<classname>Gtk::DrawingArea</classname>使用绘制函数替代绘制信号。"
 
-#: C/index-in.docbook:772
+#: C/index-in.docbook:780
 msgid ""
 "<classname>Glib::ArrayHandle</classname>, <classname>Glib::"
 "StringArrayHandle</classname>, <classname>Glib::ListHandle</classname> and "
@@ -1854,11 +1853,11 @@ msgstr ""
 "application>-3.0并未使用他们。如果你曾经使用过他们,则将他们替换为标准C++容"
 "器,例如<classname>std::vector</classname>。"
 
-#: C/index-in.docbook:776
+#: C/index-in.docbook:784
 msgid "<classname>Gtk::Container</classname> has been removed."
 msgstr "<classname>Gtk::Container</classname>已被删除。"
 
-#: C/index-in.docbook:777
+#: C/index-in.docbook:785
 msgid ""
 "<methodname>Gtk::Widget::show_all()</methodname> has been removed. The "
 "default value of <methodname>Gtk::Widget::property_visible()</methodname>has "
@@ -1868,7 +1867,7 @@ msgstr ""
 "Widget::property_visible()</methodname>的默认值从<literal>false</literal>改为"
 "<literal>true</literal>。"
 
-#: C/index-in.docbook:780
+#: C/index-in.docbook:788
 msgid ""
 "All event signals have been removed from <classname>Gtk::Widget</classname>. "
 "In most cases you can use one of the subclasses of <classname>Gtk::"
@@ -1888,7 +1887,7 @@ msgstr ""
 "EventControllerKey</classname>替代<methodname>signal_key_press_event()</"
 "methodname>和<methodname>signal_key_release_event()</methodname>。"
 
-#: C/index-in.docbook:787
+#: C/index-in.docbook:795
 msgid ""
 "<classname>Glib::RefPtr</classname> is an alias for <classname>std::"
 "shared_ptr</classname>. If you make your own <classname>Glib::ObjectBase</"
@@ -1903,7 +1902,7 @@ msgstr ""
 "ObjectBase</classname>的类,则你必须在你的<methodname>create()</methodname>方"
 "法中调用<methodname>Glib::make_refptr_for_instance()</methodname>。"
 
-#: C/index-in.docbook:792
+#: C/index-in.docbook:800
 msgid ""
 "<methodname>Gtk::Box::pack_start()</methodname> and <methodname>Gtk::Box::"
 "pack_end()</methodname> have been removed. Use the new <classname>Gtk::Box</"
@@ -1917,11 +1916,11 @@ msgstr ""
 "<methodname>insert_child_after()</methodname>和"
 "<methodname>insert_child_at_start()</methodname>方法。"
 
-#: C/index-in.docbook:797
+#: C/index-in.docbook:805
 msgid "<classname>Gtk::ButtonBox</classname> has been removed."
 msgstr "<classname>Gtk::ButtonBox</classname>已被删除"
 
-#: C/index-in.docbook:798
+#: C/index-in.docbook:806
 msgid ""
 "<classname>Gtk::RadioButton</classname> and <classname>Gtk::"
 "RadioButtonGroup</classname> have been removed. Use <classname>Gtk::"
@@ -1933,7 +1932,7 @@ msgstr ""
 "<classname>Gtk::ToggleButton</classname>的<methodname>set_group()</"
 "methodname>。"
 
-#: C/index-in.docbook:804
+#: C/index-in.docbook:812
 msgid ""
 "All deprecated API was removed in <application>gtkmm</application> 4.0 and "
 "<application>glibmm</application> 2.68, though there will be new "
@@ -1942,7 +1941,7 @@ msgstr ""
 "<application>gtkmm</application>和<application>glibmm</application> 2.68移除"
 "了所有之前标记为弃用的API,未来还会有新的API被标记为弃用。"
 
-#: C/index-in.docbook:807
+#: C/index-in.docbook:815
 msgid ""
 "As a first step to porting your source code to <application>gtkmm</"
 "application>-4.0 you should probably ensure that your application builds "
@@ -1962,7 +1961,7 @@ msgstr ""
 "在编译时定义他们。更多有关详情请参见<ulink url=\"https://wiki.gnome.org/";
 "Projects/gtkmm/PortingToGtkmm3\">从gtkmm-2.4迁移到gtkmm-3.0</ulink>Wiki页面。"
 
-#: C/index-in.docbook:815
+#: C/index-in.docbook:823
 msgid ""
 "See also <ulink url=\"https://developer.gnome.org/gtk4/unstable/gtk-";
 "migrating-3-to-4.html\"> Migrating from GTK 3.x to GTK 4</ulink>."
@@ -1970,19 +1969,19 @@ msgstr ""
 "另请参见<ulink url=\"https://developer.gnome.org/gtk4/unstable/gtk-";
 "migrating-3-to-4.html\">从GTK3.X迁移到GTK 4</ulink>。"
 
-#: C/index-in.docbook:821
+#: C/index-in.docbook:829
 msgid "Buttons"
 msgstr "按钮(Buttons)"
 
-#: C/index-in.docbook:823
+#: C/index-in.docbook:831
 msgid "<application>gtkmm</application> provides four basic types of buttons:"
 msgstr "<application>gtkmm</application> 提供以下四种基本按钮控件:"
 
-#: C/index-in.docbook:830
+#: C/index-in.docbook:838
 msgid "Push buttons"
 msgstr "按钮类"
 
-#: C/index-in.docbook:832
+#: C/index-in.docbook:840
 msgid ""
 "<ulink url=\"http://developer.gnome.org/gtkmm/unstable/classGtk_1_1Button.";
 "html\"><classname>Gtk::Button</classname></ulink>. Standard buttons, usually "
@@ -1994,11 +1993,11 @@ msgstr ""
 "标签或者图片。按一下就会触发一个动作。参看 <link linkend=\"sec-pushbuttons"
 "\">Button</link> 小节。"
 
-#: C/index-in.docbook:839
+#: C/index-in.docbook:847
 msgid "Toggle buttons"
 msgstr "开关按钮(ToggleButton)"
 
-#: C/index-in.docbook:841
+#: C/index-in.docbook:849
 msgid ""
 "<ulink url=\"http://developer.gnome.org/gtkmm/unstable/";
 "classGtk_1_1ToggleButton.html\"><classname>Gtk::ToggleButton</classname></"
@@ -2012,11 +2011,11 @@ msgstr ""
 "起。它作为一个开关可能比较有用。参看 <link linkend=\"sec-toggle-buttons"
 "\">ToggleButton</link> 小节。"
 
-#: C/index-in.docbook:849
+#: C/index-in.docbook:857
 msgid "Check buttons"
 msgstr "复选按钮(CheckButtons)"
 
-#: C/index-in.docbook:851
+#: C/index-in.docbook:859
 msgid ""
 "<ulink url=\"http://developer.gnome.org/gtkmm/unstable/";
 "classGtk_1_1CheckButton.html\"><classname>Gtk::CheckButton</classname></"
@@ -2031,11 +2030,11 @@ msgstr ""
 "态,而且旁边还有一个文字标签。在大多数需要布尔值设置的情况都可以使用它。参看 "
 "<link linkend=\"sec-checkbuttons\">CheckButton</link> 小节。"
 
-#: C/index-in.docbook:861
+#: C/index-in.docbook:869
 msgid "Radio buttons"
 msgstr "单选按钮(RadioButton)"
 
-#: C/index-in.docbook:863
+#: C/index-in.docbook:871
 msgid ""
 "Named after the station selectors on old car radios, these buttons are used "
 "in groups for options which are mutually exclusive. Pressing one causes all "
@@ -2051,7 +2050,7 @@ msgstr ""
 "的单选按钮类。复选按钮和开关按钮可以充当单选按钮。参见<link linkend=\"sec-"
 "radio-buttons\">RadioButton</link> 小节。"
 
-#: C/index-in.docbook:877
+#: C/index-in.docbook:885
 msgid ""
 "Note that, due to GTK's theming system, the appearance of these widgets will "
 "vary. In the case of check buttons and radio buttons, they may vary "
@@ -2060,11 +2059,11 @@ msgstr ""
 "请注意,由于GTK的主题不同,这些控件外观可能会不同。特别是复选按钮和单选按钮可"
 "能会很不一样。"
 
-#: C/index-in.docbook:884
+#: C/index-in.docbook:892
 msgid "Button"
 msgstr "按钮(Button)"
 
-#: C/index-in.docbook:886
+#: C/index-in.docbook:894
 msgid ""
 "There are two ways to create a Button. You can specify a label string in the "
 "<classname>Gtk::Button</classname> constructor, or set it later with "
@@ -2074,7 +2073,7 @@ msgstr ""
 "函数中指定标签字符串,或者以后调用 <methodname>set_label()</methodname> 来指"
 "定标签。"
 
-#: C/index-in.docbook:892
+#: C/index-in.docbook:900
 msgid ""
 "To define an accelerator key for keyboard navigation, place an underscore "
 "before one of the label's characters and specify <literal>true</literal> for "
@@ -2083,12 +2082,12 @@ msgstr ""
 "如果你想为按钮定义一个快捷键,那么可以在标签字符串中的某个字符前面加上一个下"
 "划线,并且指定可选的参数助记符(mnemonic)为 true。例如:"
 
-#: C/index-in.docbook:894
+#: C/index-in.docbook:902
 #, no-wrap
 msgid "Gtk::Button* pButton = new Gtk::Button(\"_Something\", true);"
 msgstr "Gtk::Button* pButton = new Gtk::Button(\"_Something\", true);"
 
-#: C/index-in.docbook:896
+#: C/index-in.docbook:904
 msgid ""
 "<classname>Gtk::Button</classname> is also a container so you could put any "
 "other widget, such as a <classname>Gtk::Image</classname> into it."
@@ -2096,7 +2095,7 @@ msgstr ""
 "<classname>Gtk::Button</classname> 同时也是一个容器,因此你可以在其中放任何其"
 "它的部件,比如放一个 <classname>Gtk::Image</classname> 在里面。"
 
-#: C/index-in.docbook:902
+#: C/index-in.docbook:910
 msgid ""
 "The <classname>Gtk::Button</classname> widget has the <literal>clicked</"
 "literal> signal which is emitted when the button is pressed and released."
@@ -2104,7 +2103,7 @@ msgstr ""
 "<classname>Gtk::Button</classname>部件具有<literal>clicked</literal>信号,当"
 "按下或释放按钮时将会发出该信号。"
 
-#: C/index-in.docbook:907
+#: C/index-in.docbook:915
 msgid ""
 "<ulink url=\"http://developer.gnome.org/gtkmm/unstable/classGtk_1_1Button.";
 "html\">Reference</ulink>"
@@ -2112,31 +2111,31 @@ msgstr ""
 "<ulink url=\"http://developer.gnome.org/gtkmm/unstable/classGtk_1_1Button.";
 "html\">参考</ulink>"
 
-#: C/index-in.docbook:909 C/index-in.docbook:962 C/index-in.docbook:1019
-#: C/index-in.docbook:1137 C/index-in.docbook:1194 C/index-in.docbook:1502
-#: C/index-in.docbook:1567 C/index-in.docbook:1591 C/index-in.docbook:1621
-#: C/index-in.docbook:1676 C/index-in.docbook:1716 C/index-in.docbook:1757
-#: C/index-in.docbook:1791 C/index-in.docbook:2077 C/index-in.docbook:2107
-#: C/index-in.docbook:2161 C/index-in.docbook:2201 C/index-in.docbook:3874
-#: C/index-in.docbook:3901 C/index-in.docbook:3924 C/index-in.docbook:3948
-#: C/index-in.docbook:3980 C/index-in.docbook:4158 C/index-in.docbook:4304
-#: C/index-in.docbook:4379 C/index-in.docbook:4451 C/index-in.docbook:4516
-#: C/index-in.docbook:4753 C/index-in.docbook:5257 C/index-in.docbook:5563
-#: C/index-in.docbook:5612 C/index-in.docbook:6191 C/index-in.docbook:6311
-#: C/index-in.docbook:6941 C/index-in.docbook:7014 C/index-in.docbook:7240
-#: C/index-in.docbook:8675
+#: C/index-in.docbook:917 C/index-in.docbook:970 C/index-in.docbook:1027
+#: C/index-in.docbook:1145 C/index-in.docbook:1202 C/index-in.docbook:1510
+#: C/index-in.docbook:1575 C/index-in.docbook:1599 C/index-in.docbook:1629
+#: C/index-in.docbook:1684 C/index-in.docbook:1724 C/index-in.docbook:1765
+#: C/index-in.docbook:1799 C/index-in.docbook:2085 C/index-in.docbook:2115
+#: C/index-in.docbook:2169 C/index-in.docbook:2209 C/index-in.docbook:3882
+#: C/index-in.docbook:3909 C/index-in.docbook:3932 C/index-in.docbook:3956
+#: C/index-in.docbook:3988 C/index-in.docbook:4166 C/index-in.docbook:4312
+#: C/index-in.docbook:4386 C/index-in.docbook:4458 C/index-in.docbook:4523
+#: C/index-in.docbook:4760 C/index-in.docbook:5260 C/index-in.docbook:5566
+#: C/index-in.docbook:5615 C/index-in.docbook:6178 C/index-in.docbook:6298
+#: C/index-in.docbook:6928 C/index-in.docbook:7001 C/index-in.docbook:7227
+#: C/index-in.docbook:8631
 msgid "Example"
 msgstr "示例"
 
-#: C/index-in.docbook:911
+#: C/index-in.docbook:919
 msgid "This example creates a button with a picture and a label."
 msgstr "这个示例创建了一个有图片和文字标签的按钮。"
 
-#: C/index-in.docbook:916
+#: C/index-in.docbook:924
 msgid "buttons example"
 msgstr "按钮示例"
 
-#: C/index-in.docbook:922
+#: C/index-in.docbook:930
 msgid ""
 "<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
 "examples/book/buttons/button\">Source Code</ulink>"
@@ -2144,11 +2143,11 @@ msgstr ""
 "<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
 "examples/book/buttons/button\">源代码</ulink>"
 
-#: C/index-in.docbook:929
+#: C/index-in.docbook:937
 msgid "ToggleButton"
 msgstr "开关按钮(ToggleButton)"
 
-#: C/index-in.docbook:931
+#: C/index-in.docbook:939
 msgid ""
 "<classname>ToggleButton</classname>s are like normal <classname>Button</"
 "classname>s, but when clicked they remain activated, or pressed, until "
@@ -2157,7 +2156,7 @@ msgstr ""
 "<classname>ToggleButton</classname> 和普通的 <classname>Button</classname> 相"
 "似,但是它们在点击后会保持激活(或称为按下的)状态,直到再次点击它为止。"
 
-#: C/index-in.docbook:933
+#: C/index-in.docbook:941
 msgid ""
 "To retrieve the state of the <classname>ToggleButton</classname>, you can "
 "use the <methodname>get_active()</methodname> method. This returns "
@@ -2172,7 +2171,7 @@ msgstr ""
 "请注意,如果你这样做了,并且它的状态的确改变了,那么这将会引发“clicked”信号。"
 "当然,一般来说,这就是你希望看到的结果。"
 
-#: C/index-in.docbook:940
+#: C/index-in.docbook:948
 msgid ""
 "You can use the <methodname>toggled()</methodname> method to toggle the "
 "button, rather than forcing it to be up or down: This switches the button's "
@@ -2182,7 +2181,7 @@ msgstr ""
 "行的是设置它是开还是关:这个方法将会改变按钮的状态,并会引发 "
 "<literal>toggled</literal> 信号。"
 
-#: C/index-in.docbook:945
+#: C/index-in.docbook:953
 msgid ""
 "<ulink url=\"http://developer.gnome.org/gtkmm/unstable/";
 "classGtk_1_1ToggleButton.html\">Reference</ulink>"
@@ -2190,11 +2189,11 @@ msgstr ""
 "<ulink url=\"http://developer.gnome.org/gtkmm/unstable/";
 "classGtk_1_1ToggleButton.html\">参考</ulink>"
 
-#: C/index-in.docbook:950 C/index-in.docbook:965
+#: C/index-in.docbook:958 C/index-in.docbook:973
 msgid "CheckButton"
 msgstr "多选按钮(CheckButton)"
 
-#: C/index-in.docbook:952
+#: C/index-in.docbook:960
 msgid ""
 "<classname>Gtk::CheckButton</classname> inherits directly from "
 "<classname>Gtk::Widget</classname>. It is similar to <classname>Gtk::"
@@ -2208,7 +2207,7 @@ msgstr ""
 "同。因此你可以像<classname>Gtk::ToggleButton</classname>一样使用同样的方法来"
 "检查、设置和转换多选按钮的状态。"
 
-#: C/index-in.docbook:960
+#: C/index-in.docbook:968
 msgid ""
 "<ulink url=\"http://developer.gnome.org/gtkmm/unstable/";
 "classGtk_1_1CheckButton.html\">Reference</ulink>"
@@ -2216,7 +2215,7 @@ msgstr ""
 "<ulink url=\"http://developer.gnome.org/gtkmm/unstable/";
 "classGtk_1_1CheckButton.html\">参考</ulink>"
 
-#: C/index-in.docbook:971
+#: C/index-in.docbook:979
 msgid ""
 "<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
 "examples/book/buttons/checkbutton\">Source Code</ulink>"
@@ -2224,11 +2223,11 @@ msgstr ""
 "<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
 "examples/book/buttons/checkbutton\">源代码</ulink>"
 
-#: C/index-in.docbook:977
+#: C/index-in.docbook:985
 msgid "Radio Button"
 msgstr "单选按钮(RadioButton)"
 
-#: C/index-in.docbook:979
+#: C/index-in.docbook:987
 msgid ""
 "There is no separate class for radio buttons. Check buttons and toggle "
 "buttons act as radio buttons when they form a group. Only one button in a "
@@ -2237,11 +2236,11 @@ msgstr ""
 "单选按钮没有单独的类。当复选按钮和开关按钮在一个组中的时候它们充当单选按钮。"
 "任何时候只能选择一个组中的一个按钮。"
 
-#: C/index-in.docbook:985
+#: C/index-in.docbook:993
 msgid "Groups"
 msgstr "组"
 
-#: C/index-in.docbook:986
+#: C/index-in.docbook:994
 msgid ""
 "You create the buttons, and set up their group afterwards. In the following "
 "example, we put 3 radio buttons in a group:"
@@ -2249,7 +2248,7 @@ msgstr ""
 "你创建了三个按钮,然后为他们设置了组。在下面的例子中,我们将三个单选按钮放入"
 "一个组中。"
 
-#: C/index-in.docbook:991
+#: C/index-in.docbook:999
 #, no-wrap
 msgid ""
 "\n"
@@ -2266,7 +2265,7 @@ msgstr ""
 "rb2-&gt;set_group(*rb1);\n"
 "rb3-&gt;set_group(*rb1);\n"
 
-#: C/index-in.docbook:999
+#: C/index-in.docbook:1007
 msgid ""
 "We told <application>gtkmm</application> to put all three "
 "<classname>CheckButton</classname>s in the same group by using "
@@ -2280,11 +2279,11 @@ msgstr ""
 "<classname>CheckButton</classname>与第一个<classname>CheckButton</classname>"
 "共享这个组。"
 
-#: C/index-in.docbook:1008 C/index-in.docbook:1464 C/index-in.docbook:4627
+#: C/index-in.docbook:1016 C/index-in.docbook:1472 C/index-in.docbook:4634
 msgid "Methods"
 msgstr "方法"
 
-#: C/index-in.docbook:1009
+#: C/index-in.docbook:1017
 msgid ""
 "<classname>CheckButton</classname>s and <classname>ToggleButton</classname>s "
 "are \"off\" when created; this means that when you first make a group of "
@@ -2295,7 +2294,7 @@ msgstr ""
 "后默认是未选中的,也就是说当你第一次创建一组单选按钮的时候,它们都会是未选中"
 "的。所以别忘了使用<methodname>set_active()</methodname>来选中一个。"
 
-#: C/index-in.docbook:1015
+#: C/index-in.docbook:1023
 msgid ""
 "<ulink url=\"http://developer.gnome.org/gtkmm/unstable/";
 "classGtk_1_1RadioButton.html\">Reference</ulink>"
@@ -2303,18 +2302,18 @@ msgstr ""
 "<ulink url=\"http://developer.gnome.org/gtkmm/unstable/";
 "classGtk_1_1RadioButton.html\">参考</ulink>"
 
-#: C/index-in.docbook:1020
+#: C/index-in.docbook:1028
 msgid ""
 "The following example demonstrates the use of grouped "
 "<classname>CheckButton</classname>s:"
 msgstr ""
 "接下来的例子中演示了对<classname>CheckButton</classname>进行分组的用法:"
 
-#: C/index-in.docbook:1026
+#: C/index-in.docbook:1034
 msgid "RadioButton"
 msgstr "单选按钮(RadioButton)"
 
-#: C/index-in.docbook:1032
+#: C/index-in.docbook:1040
 msgid ""
 "<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
 "examples/book/buttons/radiobutton\">Source Code</ulink>"
@@ -2322,11 +2321,11 @@ msgstr ""
 "<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
 "examples/book/buttons/radiobutton\">源代码</ulink>"
 
-#: C/index-in.docbook:1042 C/index-in.docbook:1148
+#: C/index-in.docbook:1050 C/index-in.docbook:1156
 msgid "Range Widgets"
 msgstr "范围(Range)部件"
 
-#: C/index-in.docbook:1044
+#: C/index-in.docbook:1052
 msgid ""
 "<classname>Gtk::Scale</classname> and <classname>Gtk::Scrollbar</classname> "
 "both inherit from <classname>Gtk::Range</classname> and share much "
@@ -2344,7 +2343,7 @@ msgstr ""
 "击的位置移动,可能是移动到终点,也可能是移动一段距离,这取决于你用的是鼠标的"
 "哪个按键。这和滚动条的行为很类似。"
 
-#: C/index-in.docbook:1055
+#: C/index-in.docbook:1063
 msgid ""
 "As will be explained in the <link linkend=\"chapter-adjustment"
 "\">Adjustments</link> section, all Range widgets are associated with an "
@@ -2368,7 +2367,7 @@ msgstr ""
 "而且还可以和其它部件共享。请参看 <link linkend=\"chapter-adjustment\">调整</"
 "link>部分以得到更详细的信息。"
 
-#: C/index-in.docbook:1069
+#: C/index-in.docbook:1077
 msgid ""
 "<ulink url=\"http://developer.gnome.org/gtkmm/unstable/classGtk_1_1Range.html";
 "\">Reference</ulink>"
@@ -2376,11 +2375,11 @@ msgstr ""
 "<ulink url=\"http://developer.gnome.org/gtkmm/unstable/classGtk_1_1Range.html";
 "\">参考</ulink>"
 
-#: C/index-in.docbook:1072
+#: C/index-in.docbook:1080
 msgid "Scrollbar Widgets"
 msgstr "滚动条部件 (Scrollbar)"
 
-#: C/index-in.docbook:1074
+#: C/index-in.docbook:1082
 msgid ""
 "These are standard scrollbars. They should be used only to scroll another "
 "widget, such as a <classname>Gtk::Entry</classname> or a <classname>Gtk::"
@@ -2391,14 +2390,14 @@ msgstr ""
 "Entry</classname> 或 <classname>Gtk::Viewport</classname>,当然,通常使用 "
 "<classname>Gtk::ScrolledWindow</classname> 会更容易一些。"
 
-#: C/index-in.docbook:1081
+#: C/index-in.docbook:1089
 msgid ""
 "The orientation of a <classname>Gtk::Scrollbar</classname> can be either "
 "horizontal or vertical."
 msgstr ""
 "<classname>Gtk::Scrollbar</classname>的方向可以是水平的也可以是垂直的。"
 
-#: C/index-in.docbook:1086
+#: C/index-in.docbook:1094
 msgid ""
 "<ulink url=\"http://developer.gnome.org/gtkmm/unstable/classGtk_1_1Scrollbar.";
 "html\">Reference</ulink>"
@@ -2406,11 +2405,11 @@ msgstr ""
 "<ulink url=\"http://developer.gnome.org/gtkmm/unstable/classGtk_1_1Scrollbar.";
 "html\">参考</ulink>"
 
-#: C/index-in.docbook:1091
+#: C/index-in.docbook:1099
 msgid "Scale Widgets"
 msgstr "比例部件 (Scale)"
 
-#: C/index-in.docbook:1093
+#: C/index-in.docbook:1101
 msgid ""
 "<classname>Gtk::Scale</classname> widgets (or \"sliders\") allow the user to "
 "visually select and manipulate a value within a specific range. You might "
@@ -2422,7 +2421,7 @@ msgstr ""
 "直观地调节它的值。例如,你可以用它来调节一副预览图片的放大率、或者控制颜色的"
 "亮度,或者指定多少分钟后执行屏幕保护。"
 
-#: C/index-in.docbook:1102
+#: C/index-in.docbook:1110
 msgid ""
 "As with <classname>Scrollbar</classname>s, the orientation can be either "
 "horizontal or vertical. The default constructor creates an "
@@ -2435,11 +2434,11 @@ msgstr ""
 "<literal>0.0</literal>。当然,这显然没有意义,所以你需要设置一些 "
 "<classname>Adjustment</classname> 的细节来让它获得有意义的行为。"
 
-#: C/index-in.docbook:1111
+#: C/index-in.docbook:1119
 msgid "Useful methods"
 msgstr "一些有用的方法"
 
-#: C/index-in.docbook:1113
+#: C/index-in.docbook:1121
 msgid ""
 "<classname>Scale</classname> widgets can display their current value as a "
 "number next to the trough. By default they show the value, but you can "
@@ -2449,7 +2448,7 @@ msgstr ""
 "个数值的,但是你可以通过调用 <methodname>set_draw_value()</methodname> 方法来"
 "设置是否显示该值。"
 
-#: C/index-in.docbook:1119
+#: C/index-in.docbook:1127
 msgid ""
 "The value displayed by a scale widget is rounded to one decimal point by "
 "default, as is the <literal>value</literal> field in its <classname>Gtk::"
@@ -2460,7 +2459,7 @@ msgstr ""
 "<literal>value</literal> 的数值,并且会被四舍五入到一位小数。你可以通过 "
 "<methodname>set_digits()</methodname> 方法来改变显示的小数位数。"
 
-#: C/index-in.docbook:1126
+#: C/index-in.docbook:1134
 msgid ""
 "Also, the value can be drawn in different positions relative to the trough, "
 "specified by the <methodname>set_value_pos()</methodname> method."
@@ -2468,7 +2467,7 @@ msgstr ""
 "另外,通过使用 <methodname>set_value_pos()</methodname>,可以使值显示在相对于"
 "滑块不同的位置。"
 
-#: C/index-in.docbook:1131
+#: C/index-in.docbook:1139
 msgid ""
 "<ulink url=\"http://developer.gnome.org/gtkmm/unstable/classGtk_1_1Scale.html";
 "\">Reference</ulink>"
@@ -2476,7 +2475,7 @@ msgstr ""
 "<ulink url=\"http://developer.gnome.org/gtkmm/unstable/classGtk_1_1Scale.html";
 "\">参考</ulink>"
 
-#: C/index-in.docbook:1139
+#: C/index-in.docbook:1147
 msgid ""
 "This example displays a window with three range widgets all connected to the "
 "same adjustment, along with a couple of controls for adjusting some of the "
@@ -2487,7 +2486,7 @@ msgstr ""
 "调整前文讨论过的一些参数,这样你可以很清楚地看到那些参数是如何影响这些部件的"
 "行为方式的。"
 
-#: C/index-in.docbook:1154
+#: C/index-in.docbook:1162
 msgid ""
 "<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
 "examples/book/range_widgets\">Source Code</ulink>"
@@ -2495,15 +2494,15 @@ msgstr ""
 "<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
 "examples/book/range_widgets\">源代码</ulink>"
 
-#: C/index-in.docbook:1161
+#: C/index-in.docbook:1169
 msgid "Miscellaneous Widgets"
 msgstr "杂项部件"
 
-#: C/index-in.docbook:1164 C/index-in.docbook:1204
+#: C/index-in.docbook:1172 C/index-in.docbook:1212
 msgid "Label"
 msgstr "标签(Label)"
 
-#: C/index-in.docbook:1166
+#: C/index-in.docbook:1174
 msgid ""
 "Labels are the main method of placing non-editable text in windows, for "
 "instance to place a title next to an <classname>Entry</classname> widget. "
@@ -2516,7 +2515,7 @@ msgstr ""
 "稍后调用<methodname>set_text()</methodname>或<methodname>set_markup()</"
 "methodname>方法设置想要显示的文本。"
 
-#: C/index-in.docbook:1173
+#: C/index-in.docbook:1181
 msgid ""
 "The width of the label will be adjusted automatically. You can produce multi-"
 "line labels by putting line breaks (\"\\n\") in the label string."
@@ -2524,7 +2523,7 @@ msgstr ""
 "标签会自动调整宽度。你也可以通过在标签锁显示的字符串中放置换行符(\"\\n\")来生"
 "成多行标签。"
 
-#: C/index-in.docbook:1177
+#: C/index-in.docbook:1185
 msgid ""
 "The label text can be justified using the <methodname>set_justify()</"
 "methodname> method. The widget is also capable of word-wrapping, which can "
@@ -2534,7 +2533,7 @@ msgstr ""
 "还具有自动换行功能,你可以使用<methodname>set_line_wrap()</methodname>激活"
 "它。"
 
-#: C/index-in.docbook:1183
+#: C/index-in.docbook:1191
 msgid ""
 "Gtk::Label supports some simple formatting, for instance allowing you to "
 "make some text bold, colored, or larger. You can do this by providing a "
@@ -2548,7 +2547,7 @@ msgstr ""
 "PangoMarkupFormat.html\">Pango 标记语法</ulink>。例如, <code> &lt;b&gt;bold "
 "text&lt;/b&gt; and &lt;s&gt;strikethrough text&lt;/s&gt; </code> 。"
 
-#: C/index-in.docbook:1192
+#: C/index-in.docbook:1200
 msgid ""
 "<ulink url=\"http://developer.gnome.org/gtkmm/unstable/classGtk_1_1Label.html";
 "\">Reference</ulink>"
@@ -2556,7 +2555,7 @@ msgstr ""
 "<ulink url=\"http://developer.gnome.org/gtkmm/unstable/classGtk_1_1Label.html";
 "\">参考</ulink>"
 
-#: C/index-in.docbook:1195
+#: C/index-in.docbook:1203
 msgid ""
 "Below is a short example to illustrate these functions. This example makes "
 "use of the Frame widget to better demonstrate the label styles. (The Frame "
@@ -2570,7 +2569,7 @@ msgstr ""
 "link>)仅当你按<keycap>Alt</keycap>键时,<literal>m_Label_Normal</literal>的第"
 "一个字符才显示为下划线的样式。"
 
-#: C/index-in.docbook:1210
+#: C/index-in.docbook:1218
 msgid ""
 "<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
 "examples/book/label\">Source Code</ulink>"
@@ -2578,15 +2577,15 @@ msgstr ""
 "<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
 "examples/book/label\">源代码</ulink>"
 
-#: C/index-in.docbook:1217 C/index-in.docbook:1274
+#: C/index-in.docbook:1225 C/index-in.docbook:1282
 msgid "Entry"
 msgstr "条目(Entry)"
 
-#: C/index-in.docbook:1220
+#: C/index-in.docbook:1228
 msgid "Simple Use"
 msgstr "简易用法"
 
-#: C/index-in.docbook:1222
+#: C/index-in.docbook:1230
 msgid ""
 "Entry widgets allow the user to enter text. You can change the contents with "
 "the <methodname>set_text()</methodname> method, and read the current "
@@ -2596,7 +2595,7 @@ msgstr ""
 "改部件当前的内容,还可以使用<methodname>get_text()</methodname>方法读取当前的"
 "内容。"
 
-#: C/index-in.docbook:1227
+#: C/index-in.docbook:1235
 msgid ""
 "Occasionally you might want to make an <classname>Entry</classname> widget "
 "read-only. This can be done by passing <literal>false</literal> to the "
@@ -2606,7 +2605,7 @@ msgstr ""
 "<methodname>set_editable()</methodname>方法传递<literal>false</literal>做到这"
 "点。"
 
-#: C/index-in.docbook:1233
+#: C/index-in.docbook:1241
 msgid ""
 "For the input of passwords, passphrases and other information you don't want "
 "echoed on the screen, calling <methodname>set_visibility()</methodname> with "
@@ -2616,7 +2615,7 @@ msgstr ""
 "<methodname>set_visibility()</methodname>方法传递<literal>false</literal>使输"
 "入文本被隐藏。"
 
-#: C/index-in.docbook:1239
+#: C/index-in.docbook:1247
 msgid ""
 "You might want to be notified whenever the user types in a text entry "
 "widget. <classname>Gtk::Entry</classname> provides two signals, "
@@ -2643,7 +2642,7 @@ msgstr ""
 "linkend=\"sec-comboboxentry\">带有条目的组合框</link>小结包含了使用这些信号的"
 "示例程序。"
 
-#: C/index-in.docbook:1254
+#: C/index-in.docbook:1262
 msgid ""
 "If you pass <literal>true</literal> to the "
 "<methodname>set_activates_default()</methodname> method, pressing "
@@ -2663,7 +2662,7 @@ msgstr ""
 "<methodname>Gtk::Widget::set_can_default()</methodname>和<methodname>Gtk::"
 "Widget::grab_default()</methodname>。"
 
-#: C/index-in.docbook:1264
+#: C/index-in.docbook:1272
 msgid ""
 "<ulink url=\"http://developer.gnome.org/gtkmm/unstable/classGtk_1_1Entry.html";
 "\">Reference</ulink>"
@@ -2671,11 +2670,11 @@ msgstr ""
 "<ulink url=\"http://developer.gnome.org/gtkmm/unstable/classGtk_1_1Entry.html";
 "\">参考</ulink>"
 
-#: C/index-in.docbook:1266
+#: C/index-in.docbook:1274
 msgid "Simple Entry Example"
 msgstr "简单的条目示例"
 
-#: C/index-in.docbook:1267
+#: C/index-in.docbook:1275
 msgid ""
 "This example uses <classname>Gtk::Entry</classname>. It also has two "
 "<classname>CheckButton</classname>s, with which you can toggle the editable "
@@ -2685,7 +2684,7 @@ msgstr ""
 "<classname>CheckButton</classname>,你可以使用他们切换条目部件的可见性和可编"
 "辑性标志。"
 
-#: C/index-in.docbook:1280
+#: C/index-in.docbook:1288
 msgid ""
 "<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
 "examples/book/entry/simple\">Source Code</ulink>"
@@ -2693,11 +2692,11 @@ msgstr ""
 "<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
 "examples/book/entry/simple\">源代码</ulink>"
 
-#: C/index-in.docbook:1287 C/index-in.docbook:1321
+#: C/index-in.docbook:1295 C/index-in.docbook:1329
 msgid "Entry Completion"
 msgstr "条目补全(Entry Completion)"
 
-#: C/index-in.docbook:1288
+#: C/index-in.docbook:1296
 msgid ""
 "An <classname>Entry</classname> widget can offer a drop-down list of pre-"
 "existing choices based on the first few characters typed by the user. For "
@@ -2706,7 +2705,7 @@ msgstr ""
 "<classname>Entry</classname>条目组件可以通过用户输入的前几个字符提供预先准备"
 "好选项的下拉列表。例如,在搜索对话框中提供以前输入过的文本作为建议。"
 
-#: C/index-in.docbook:1293
+#: C/index-in.docbook:1301
 msgid ""
 "To enable this functionality, you must create an <classname>EntryCompletion</"
 "classname> object, and provide it to the <classname>Entry</classname> widget "
@@ -2716,7 +2715,7 @@ msgstr ""
 "使用<classname>Entry</classname>部件的<methodname>set_completion()</"
 "methodname>方法将其提供给条目部件。"
 
-#: C/index-in.docbook:1298
+#: C/index-in.docbook:1306
 msgid ""
 "The <classname>EntryCompletion</classname> may use a <classname>TreeModel</"
 "classname> containing possible entries, specified with "
@@ -2729,7 +2728,7 @@ msgstr ""
 "该调用<methodname>set_text_column()</methodname>指定该模型的那一行用以匹配可"
 "能的文本条目。"
 
-#: C/index-in.docbook:1304
+#: C/index-in.docbook:1312
 msgid ""
 "Alternatively, if a complete list of possible entries would be too large or "
 "too inconvenient to generate, a callback slot may instead be specified with "
@@ -2740,7 +2739,7 @@ msgstr ""
 "<methodname>set_match_func()</methodname>指定一个回调槽。这在你想匹配字符串中"
 "开头以外的部分的时候这会很有用。"
 
-#: C/index-in.docbook:1310
+#: C/index-in.docbook:1318
 msgid ""
 "<ulink url=\"http://developer.gnome.org/gtkmm/unstable/";
 "classGtk_1_1EntryCompletion.html\">Reference</ulink>"
@@ -2748,11 +2747,11 @@ msgstr ""
 "<ulink url=\"http://developer.gnome.org/gtkmm/unstable/";
 "classGtk_1_1EntryCompletion.html\">参考</ulink>"
 
-#: C/index-in.docbook:1312
+#: C/index-in.docbook:1320
 msgid "Entry Completion Example"
 msgstr "条目补全示例"
 
-#: C/index-in.docbook:1313
+#: C/index-in.docbook:1321
 msgid ""
 "This example creates a <classname>Gtk::EntryCompletion</classname> and "
 "associates it with a <classname>Gtk::Entry</classname> widget. The "
@@ -2763,7 +2762,7 @@ msgstr ""
 "<classname>Gtk::Entry</classname>相关联。补全使用了一个包含了可能条目的"
 "<classname>Gtk::TreeModel</classname>以及一些其他的额外的操作。"
 
-#: C/index-in.docbook:1327
+#: C/index-in.docbook:1335
 msgid ""
 "<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
 "examples/book/entry/completion\">Source Code</ulink>"
@@ -2771,11 +2770,11 @@ msgstr ""
 "<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
 "examples/book/entry/completion\">源代码</ulink>"
 
-#: C/index-in.docbook:1333
+#: C/index-in.docbook:1341
 msgid "Entry Icons"
 msgstr "条目图标"
 
-#: C/index-in.docbook:1334
+#: C/index-in.docbook:1342
 msgid ""
 "An <classname>Entry</classname> widget can show an icon at the start or end "
 "of the text area. The icon can be specifed by methods such as "
@@ -2790,11 +2789,11 @@ msgstr ""
 "标。应用程序可以通过响应<methodname>signal_icon_press</methodname>信号来处理"
 "用户按下图标事件。"
 
-#: C/index-in.docbook:1341
+#: C/index-in.docbook:1349
 msgid "Entry Icon Example"
 msgstr "条目图标示例"
 
-#: C/index-in.docbook:1342
+#: C/index-in.docbook:1350
 msgid ""
 "This example shows a <classname>Gtk::Entry</classname> widget with a named "
 "search icon, and prints text to the terminal when the icon is pressed."
@@ -2802,11 +2801,11 @@ msgstr ""
 "这个示例显示带有具名搜索图标的<classname>Gtk::Entry</classname>部件,并且在按"
 "下这个图标的时候将该名称打印到终端上。"
 
-#: C/index-in.docbook:1348
+#: C/index-in.docbook:1356
 msgid "Entry with Icon"
 msgstr "带图标的条目"
 
-#: C/index-in.docbook:1354
+#: C/index-in.docbook:1362
 msgid ""
 "<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
 "examples/book/entry/icon\">Source Code</ulink>"
@@ -2814,11 +2813,11 @@ msgstr ""
 "<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
 "examples/book/entry/icon\">源代码</ulink>"
 
-#: C/index-in.docbook:1360
+#: C/index-in.docbook:1368
 msgid "Entry Progress"
 msgstr "条目进度"
 
-#: C/index-in.docbook:1361
+#: C/index-in.docbook:1369
 msgid ""
 "An <classname>Entry</classname> widget can show a progress bar inside the "
 "text area, under the entered text. The progress bar will be shown if the "
@@ -2830,21 +2829,21 @@ msgstr ""
 "<methodname>set_progress_pulse_step()</methodname>方法被调用的时候进度条将显"
 "示出来。"
 
-#: C/index-in.docbook:1366
+#: C/index-in.docbook:1374
 msgid "Entry Progress Example"
 msgstr "条目进度示例"
 
-#: C/index-in.docbook:1367
+#: C/index-in.docbook:1375
 msgid ""
 "This example shows a <classname>Gtk::Entry</classname> widget with a "
 "progress bar."
 msgstr "这个示例显示一个带有进度条的<classname>Gtk::Entry</classname>部件。"
 
-#: C/index-in.docbook:1373
+#: C/index-in.docbook:1381
 msgid "Entry with Progress Bar"
 msgstr "带有进度条的条目"
 
-#: C/index-in.docbook:1379
+#: C/index-in.docbook:1387
 msgid ""
 "<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
 "examples/book/entry/progress\">Source Code</ulink>"
@@ -2852,11 +2851,11 @@ msgstr ""
 "<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
 "examples/book/entry/progress\">源代码</ulink>"
 
-#: C/index-in.docbook:1387 C/index-in.docbook:1509
+#: C/index-in.docbook:1395 C/index-in.docbook:1517
 msgid "SpinButton"
 msgstr "微调按钮(SpinButton)"
 
-#: C/index-in.docbook:1389
+#: C/index-in.docbook:1397
 msgid ""
 "A <classname>SpinButton</classname> allows the user to select a value from a "
 "range of numeric values. It has an <classname>Entry</classname> widget with "
@@ -2870,7 +2869,7 @@ msgstr ""
 "值在可能的范围内“旋转”。你也可以直接在<classname>Entry</classname>部件中输入"
 "一个值。"
 
-#: C/index-in.docbook:1397
+#: C/index-in.docbook:1405
 msgid ""
 "The value can have an adjustable number of decimal places, and the step size "
 "is configurable. <classname>SpinButton</classname>s have an 'auto-repeat' "
@@ -2881,37 +2880,37 @@ msgstr ""
 "这个值的小数位可以进行调整,步长也可以进行配置。<classname>SpinButton</"
 "classname>具有“自动重复”功能:长按递增、递减按钮该值的变化速度会越来越快。"
 
-#: C/index-in.docbook:1412
+#: C/index-in.docbook:1420
 msgid "<literal>value</literal>: value for the Spin Button"
 msgstr "<literal>value</literal>:微调按钮的值"
 
-#: C/index-in.docbook:1418
+#: C/index-in.docbook:1426
 msgid "<literal>lower</literal>: lower range value"
 msgstr "<literal>lower</literal>:微调按钮允许的最小值"
 
-#: C/index-in.docbook:1424
+#: C/index-in.docbook:1432
 msgid "<literal>upper</literal>: upper range value"
 msgstr "<literal>upper</literal>:微调按钮允许的最大值"
 
-#: C/index-in.docbook:1429
+#: C/index-in.docbook:1437
 msgid ""
 "<literal>step_increment</literal>: value to increment/decrement when "
 "pressing mouse button 1"
 msgstr ""
 "<literal>step_increment</literal>:鼠标键1(通常是左键)点击一下递增/递减的值"
 
-#: C/index-in.docbook:1436
+#: C/index-in.docbook:1444
 msgid ""
 "<literal>page_increment</literal>: value to increment/decrement when "
 "pressing mouse button 2"
 msgstr ""
 "<literal>page_increment</literal>:鼠标键2(通常是右键)点击一下递增/递减的值"
 
-#: C/index-in.docbook:1443
+#: C/index-in.docbook:1451
 msgid "<literal>page_size</literal>: unused"
 msgstr "<literal>page_size</literal>:目前没作用"
 
-#: C/index-in.docbook:1404
+#: C/index-in.docbook:1412
 msgid ""
 "<classname>SpinButton</classname>s use an <link linkend=\"chapter-adjustment"
 "\">Adjustment</link> object to hold information about the range of values. "
@@ -2922,7 +2921,7 @@ msgstr ""
 "整(Adjustment)</link>对象保存值的范围信息。下述调整属性由微调按钮使用:<_:"
 "itemizedlist-1/>"
 
-#: C/index-in.docbook:1451
+#: C/index-in.docbook:1459
 msgid ""
 "Additionally, mouse button 3 can be used to jump directly to the "
 "<literal>upper</literal> or <literal>lower</literal> values."
@@ -2930,7 +2929,7 @@ msgstr ""
 "另外,鼠标键3(通常是中键)用于直接跳到<literal>upper</literal>或"
 "<literal>lower</literal> values。"
 
-#: C/index-in.docbook:1456
+#: C/index-in.docbook:1464
 msgid ""
 "The <classname>SpinButton</classname> can create a default "
 "<classname>Adjustment</classname>, which you can access via the "
@@ -2943,14 +2942,14 @@ msgstr ""
 "classname>,也可以通过<classname>SpinButton</classname>的构造函数直接使用一个"
 "已经存在的<classname>Adjustment</classname>。"
 
-#: C/index-in.docbook:1466
+#: C/index-in.docbook:1474
 msgid ""
 "The number of decimal places can be altered using the "
 "<methodname>set_digits()</methodname> method."
 msgstr ""
 "数值的小数位可以使用<methodname>set_digits()</methodname>方法进行调整。"
 
-#: C/index-in.docbook:1471
+#: C/index-in.docbook:1479
 msgid ""
 "You can set the spinbutton's value using the <methodname>set_value()</"
 "methodname> method, and retrieve it with <methodname>get_value()</"
@@ -2959,7 +2958,7 @@ msgstr ""
 "你可以使用<methodname>set_value()</methodname>方法设置微调按钮的值,也可以使"
 "用<methodname>get_value()</methodname>方法获得微调按钮的值。"
 
-#: C/index-in.docbook:1476
+#: C/index-in.docbook:1484
 msgid ""
 "The <methodname>spin()</methodname> method 'spins' the "
 "<classname>SpinButton</classname>, as if its increment or decrement button "
@@ -2970,7 +2969,7 @@ msgstr ""
 "传递一个<classname>Gtk::SpinType</classname>对象给该方法以指定是递增还是递"
 "减。"
 
-#: C/index-in.docbook:1483
+#: C/index-in.docbook:1491
 msgid ""
 "To prevent the user from typing non-numeric characters into the entry box, "
 "pass <literal>true</literal> to the <methodname>set_numeric()</methodname> "
@@ -2979,7 +2978,7 @@ msgstr ""
 "将<literal>true</literal>传递给<methodname>set_numeric()</methodname>方法可以"
 "阻止用户在条目框内输入非数字字符。"
 
-#: C/index-in.docbook:1488
+#: C/index-in.docbook:1496
 msgid ""
 "To make the <classname>SpinButton</classname> 'wrap' between its upper and "
 "lower bounds, use the <methodname>set_wrap()</methodname> method."
@@ -2987,7 +2986,7 @@ msgstr ""
 "使用<methodname>set_wrap()</methodname>方法指定<classname>SpinButton</"
 "classname>的值到达上下限的时候是否绕回。"
 
-#: C/index-in.docbook:1493
+#: C/index-in.docbook:1501
 msgid ""
 "To force it to snap to the nearest <literal>step_increment</literal>, use "
 "<methodname>set_snap_to_ticks()</methodname>."
@@ -2996,7 +2995,7 @@ msgstr ""
 "效值的时候强制校正到最接近<literal>step_increment</literal>策略可达到的有效"
 "值。"
 
-#: C/index-in.docbook:1498
+#: C/index-in.docbook:1506
 msgid ""
 "<ulink url=\"http://developer.gnome.org/gtkmm/unstable/";
 "classGtk_1_1SpinButton.html\">Reference</ulink>"
@@ -3004,11 +3003,11 @@ msgstr ""
 "<ulink url=\"http://developer.gnome.org/gtkmm/unstable/";
 "classGtk_1_1SpinButton.html\">参考</ulink>"
 
-#: C/index-in.docbook:1504
+#: C/index-in.docbook:1512
 msgid "Here's an example of a <classname>SpinButton</classname> in action:"
 msgstr "这是一个使用<classname>SpinButton</classname>的示例:"
 
-#: C/index-in.docbook:1515
+#: C/index-in.docbook:1523
 msgid ""
 "<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
 "examples/book/spinbutton\">Source Code</ulink>"
@@ -3016,11 +3015,11 @@ msgstr ""
 "<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
 "examples/book/spinbutton\">源代码</ulink>"
 
-#: C/index-in.docbook:1522 C/index-in.docbook:1570
+#: C/index-in.docbook:1530 C/index-in.docbook:1578
 msgid "ProgressBar"
 msgstr "进度条(ProgressBar)"
 
-#: C/index-in.docbook:1524
+#: C/index-in.docbook:1532
 msgid ""
 "Progress bars are used to show the status of an ongoing operation. For "
 "instance, a <classname>ProgressBar</classname> can show how much of a task "
@@ -3029,7 +3028,7 @@ msgstr ""
 "进度条用于显示正在进行的操作的状态。例如,<classname>ProgressBar</classname>"
 "可以用于显示已经有多少任务被完成。"
 
-#: C/index-in.docbook:1530
+#: C/index-in.docbook:1538
 msgid ""
 "To change the value shown, use the <methodname>set_fraction()</methodname> "
 "method, passing a <type>double</type> between 0.0 and 1.0 to provide the new "
@@ -3038,7 +3037,7 @@ msgstr ""
 "要修改显示的值,请调用<methodname>set_fraction()</methodname>方法,向该方法传"
 "递一个0.0到1.0之间的<type>double</type>值。"
 
-#: C/index-in.docbook:1535
+#: C/index-in.docbook:1543
 msgid ""
 "A <classname>ProgressBar</classname> is horizontal and left-to-right by "
 "default, but you can change it to a vertical progress bar by using the "
@@ -3047,7 +3046,7 @@ msgstr ""
 "<classname>ProgressBar</classname>默认是水平且从左向右的,但是你可以使用"
 "<methodname>set_orientation()</methodname>方法来改变这个行为。"
 
-#: C/index-in.docbook:1541
+#: C/index-in.docbook:1549
 msgid ""
 "<ulink url=\"http://developer.gnome.org/gtkmm/unstable/";
 "classGtk_1_1ProgressBar.html\">Reference</ulink>"
@@ -3055,11 +3054,11 @@ msgstr ""
 "<ulink url=\"http://developer.gnome.org/gtkmm/unstable/";
 "classGtk_1_1ProgressBar.html\">参考</ulink>"
 
-#: C/index-in.docbook:1544
+#: C/index-in.docbook:1552
 msgid "Activity Mode"
 msgstr "活动模式"
 
-#: C/index-in.docbook:1545
+#: C/index-in.docbook:1553
 msgid ""
 "Besides indicating the amount of progress that has occured, the progress bar "
 "can also be used to indicate that there is some activity; this is done by "
@@ -3074,7 +3073,7 @@ msgstr ""
 "度条显示一个小矩形,该矩形可以在进度条内前后移动。活动模式在无法确定操作的进"
 "度的时候很有用(例如,接受一个长度未知的文件)。"
 
-#: C/index-in.docbook:1555
+#: C/index-in.docbook:1563
 msgid ""
 "To do this, you need to call the <methodname>pulse()</methodname> method at "
 "regular intervals. You can also choose the step size, with the "
@@ -3083,7 +3082,7 @@ msgstr ""
 "为此,你还需要定时调用<methodname>pulse()</methodname>方法。你还可以使用"
 "<methodname>set_pulse_step()</methodname>方法控制矩形的移动步长。"
 
-#: C/index-in.docbook:1561
+#: C/index-in.docbook:1569
 msgid ""
 "The progress bar can also display a configurable text string next to the "
 "bar, using the <methodname>set_text()</methodname> method."
@@ -3091,7 +3090,7 @@ msgstr ""
 "进度条还可以使用<methodname>set_text()</methodname>方法来在其边上显示可配置的"
 "文本字符串。"
 
-#: C/index-in.docbook:1576
+#: C/index-in.docbook:1584
 msgid ""
 "<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
 "examples/book/progressbar\">Source Code</ulink>"
@@ -3099,11 +3098,11 @@ msgstr ""
 "<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
 "examples/book/progressbar\">源代码</ulink>"
 
-#: C/index-in.docbook:1584 C/index-in.docbook:1594
+#: C/index-in.docbook:1592 C/index-in.docbook:1602
 msgid "InfoBar"
 msgstr "信息栏(InfoBar)"
 
-#: C/index-in.docbook:1586
+#: C/index-in.docbook:1594
 msgid ""
 "An <classname>InfoBar</classname> may show small items of information or ask "
 "brief questions. Unlike a <classname>Dialog</classname>, it appears at the "
@@ -3114,7 +3113,7 @@ msgstr ""
 "示在窗口的顶部而不是和<classname>Dialog</classname>一样打开一个新的窗口。但是"
 "他的API和<link linkend=\"chapter-dialogs\">Gtk::Dialog</link>的API十分相似。"
 
-#: C/index-in.docbook:1589
+#: C/index-in.docbook:1597
 msgid ""
 "<ulink url=\"http://developer.gnome.org/gtkmm/unstable/classGtk_1_1InfoBar.";
 "html\">Reference</ulink>"
@@ -3122,7 +3121,7 @@ msgstr ""
 "<ulink url=\"http://developer.gnome.org/gtkmm/unstable/classGtk_1_1InfoBar.";
 "html\">参考</ulink>"
 
-#: C/index-in.docbook:1600
+#: C/index-in.docbook:1608
 msgid ""
 "<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
 "examples/book/infobar\">Source Code</ulink>"
@@ -3130,11 +3129,11 @@ msgstr ""
 "<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
 "examples/book/infobar\">源代码</ulink>"
 
-#: C/index-in.docbook:1607
+#: C/index-in.docbook:1615
 msgid "Tooltips"
 msgstr "工具提示框(Tooltips)"
 
-#: C/index-in.docbook:1609
+#: C/index-in.docbook:1617
 msgid ""
 "Tooltips are the little information windows that pop up when you leave your "
 "pointer over a widget for a few seconds. Use <methodname>set_tooltip_text()</"
@@ -3147,7 +3146,7 @@ msgstr ""
 "classname>设置一个文本字符串作为提示。<classname>Gtk::Tooltip</classname>被用"
 "作更高级的提示工具,例如显示图像和文本。"
 
-#: C/index-in.docbook:1618
+#: C/index-in.docbook:1626
 msgid ""
 "<ulink url=\"http://developer.gnome.org/gtkmm/unstable/classGtk_1_1Widget.";
 "html\">Widget Reference</ulink>"
@@ -3155,7 +3154,7 @@ msgstr ""
 "<ulink url=\"http://developer.gnome.org/gtkmm/unstable/classGtk_1_1Widget.";
 "html\">部件参考</ulink>"
 
-#: C/index-in.docbook:1619
+#: C/index-in.docbook:1627
 msgid ""
 "<ulink url=\"http://developer.gnome.org/gtkmm/unstable/classGtk_1_1Tooltip.";
 "html\">Tooltip Reference</ulink>"
@@ -3163,11 +3162,11 @@ msgstr ""
 "<ulink url=\"http://developer.gnome.org/gtkmm/unstable/classGtk_1_1Tooltip.";
 "html\">工具提示框参考</ulink>"
 
-#: C/index-in.docbook:1624
+#: C/index-in.docbook:1632
 msgid "Tooltip"
 msgstr "工具提示框(Tooltip)"
 
-#: C/index-in.docbook:1630
+#: C/index-in.docbook:1638
 msgid ""
 "<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
 "examples/book/tooltips\">Source Code</ulink>"
@@ -3175,11 +3174,11 @@ msgstr ""
 "<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
 "examples/book/tooltips\">源代码</ulink>"
 
-#: C/index-in.docbook:1639
+#: C/index-in.docbook:1647
 msgid "Container Widgets"
 msgstr "容器(Container)部件"
 
-#: C/index-in.docbook:1641
+#: C/index-in.docbook:1649
 msgid ""
 "Container widgets, like other widgets, derive from <classname>Gtk::Widget</"
 "classname>. Some container widgets, such as <classname>Gtk::Grid</classname> "
@@ -3192,11 +3191,11 @@ msgstr ""
 "们具有更为复杂的接口。还有些容器部件只能容纳一个子部件,例如<classname>Gtk::"
 "Frame</classname>"
 
-#: C/index-in.docbook:1649
+#: C/index-in.docbook:1657
 msgid "Single-item Containers"
 msgstr "单项容器"
 
-#: C/index-in.docbook:1651
+#: C/index-in.docbook:1659
 msgid ""
 "Most single-item container widgets have <methodname>set_child()</methodname> "
 "and <methodname>unset_child()</methodname> methods for the child widget. "
@@ -3209,7 +3208,7 @@ msgstr ""
 "classname>和<classname>Gtk::Window</classname>从技术上来说是单项容器,但是我"
 "们已经在其他地方讨论过它们。"
 
-#: C/index-in.docbook:1658
+#: C/index-in.docbook:1666
 msgid ""
 "We also discuss the <classname>Gtk::Paned</classname> widget, which allows "
 "you to divide a window into two separate \"panes\". This widget actually "
@@ -3219,11 +3218,11 @@ msgstr ""
 "的\"窗格\",这个部件实际上可以包含两个子部件,但是他只能包含固定数量的部件,"
 "因此也将其称为单项容器。"
 
-#: C/index-in.docbook:1665 C/index-in.docbook:1679
+#: C/index-in.docbook:1673 C/index-in.docbook:1687
 msgid "Frame"
 msgstr "框架(Frame)"
 
-#: C/index-in.docbook:1667
+#: C/index-in.docbook:1675
 msgid ""
 "Frames can enclose one or a group of widgets within a box, optionally with a "
 "title. For instance, you might place a group of <classname>ToggleButton</"
@@ -3234,7 +3233,7 @@ msgstr ""
 "组<classname>ToggleButton</classname>或者<classname>CheckButton</classname>放"
 "入一个<classname>Frame</classname>中。"
 
-#: C/index-in.docbook:1674
+#: C/index-in.docbook:1682
 msgid ""
 "<ulink url=\"http://developer.gnome.org/gtkmm/unstable/classGtk_1_1Frame.html";
 "\">Reference</ulink>"
@@ -3242,7 +3241,7 @@ msgstr ""
 "<ulink url=\"http://developer.gnome.org/gtkmm/unstable/classGtk_1_1Frame.html";
 "\">参考</ulink>"
 
-#: C/index-in.docbook:1685
+#: C/index-in.docbook:1693
 msgid ""
 "<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
 "examples/book/frame\">Source Code</ulink>"
@@ -3250,11 +3249,11 @@ msgstr ""
 "<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
 "examples/book/frame\">源代码</ulink>"
 
-#: C/index-in.docbook:1693 C/index-in.docbook:1719
+#: C/index-in.docbook:1701 C/index-in.docbook:1727
 msgid "Paned"
 msgstr "窗格(Paned)"
 
-#: C/index-in.docbook:1695
+#: C/index-in.docbook:1703
 msgid ""
 "Panes divide a widget into two halves, separated by a moveable divider. The "
 "two halves (panes) can be oriented either horizontally (side by side) or "
@@ -3263,7 +3262,7 @@ msgstr ""
 "窗格用一个可移动的分隔符将一个部件一分为二。其可以水平(使两个窗格并排)也可"
 "以竖直(使两个窗格一个在另一个之上)的分隔部件。"
 
-#: C/index-in.docbook:1701
+#: C/index-in.docbook:1709
 msgid ""
 "Unlike the other widgets in this section, pane widgets contain not one but "
 "two child widgets, one in each pane. Therefore, you should use "
@@ -3275,7 +3274,7 @@ msgstr ""
 "<methodname>set_end_child()</methodname>替代<methodname>set_child()</"
 "methodname>方法。"
 
-#: C/index-in.docbook:1708
+#: C/index-in.docbook:1716
 msgid ""
 "You can adjust the position of the divider using the "
 "<methodname>set_position()</methodname> method, and you will probably need "
@@ -3284,7 +3283,7 @@ msgstr ""
 "如果你需要,你可以使用<methodname>set_position()</methodname>调整分割线的位"
 "置。"
 
-#: C/index-in.docbook:1714
+#: C/index-in.docbook:1722
 msgid ""
 "<ulink url=\"http://developer.gnome.org/gtkmm/unstable/classGtk_1_1Paned.html";
 "\">Reference</ulink>"
@@ -3292,7 +3291,7 @@ msgstr ""
 "<ulink url=\"http://developer.gnome.org/gtkmm/unstable/classGtk_1_1Paned.html";
 "\">参考</ulink>"
 
-#: C/index-in.docbook:1725
+#: C/index-in.docbook:1733
 msgid ""
 "<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
 "examples/book/paned\">Source Code</ulink>"
@@ -3300,11 +3299,11 @@ msgstr ""
 "<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
 "examples/book/paned\">源代码</ulink>"
 
-#: C/index-in.docbook:1732 C/index-in.docbook:1764
+#: C/index-in.docbook:1740 C/index-in.docbook:1772
 msgid "ScrolledWindow"
 msgstr "滚动窗口"
 
-#: C/index-in.docbook:1734
+#: C/index-in.docbook:1742
 msgid ""
 "<classname>ScrolledWindow</classname> widgets create a scrollable area. You "
 "can insert any type of widget into a <classname>ScrolledWindow</classname>, "
@@ -3317,7 +3316,7 @@ msgstr ""
 "都可以通过滚动条来访问它。请注意虽然<classname>ScrolledWindow</classname>的名"
 "称像是<classname>Gtk::Window</classname>的衍生部件,但其实不是。"
 
-#: C/index-in.docbook:1743
+#: C/index-in.docbook:1751
 msgid ""
 "Scrolled windows have <emphasis>scrollbar policies</emphasis> which "
 "determine whether the <classname>Scrollbar</classname>s will be displayed. "
@@ -3337,7 +3336,7 @@ msgstr ""
 "候,只有在被包含的部件大于可见区域的时候滚动条才会被显示出来。而"
 "<literal>Gtk::PolicyType::ALWAYS</literal>将使滚动条始终显示。"
 
-#: C/index-in.docbook:1755
+#: C/index-in.docbook:1763
 msgid ""
 "<ulink url=\"http://developer.gnome.org/gtkmm/unstable/";
 "classGtk_1_1ScrolledWindow.html\">Reference</ulink>"
@@ -3345,7 +3344,7 @@ msgstr ""
 "<ulink url=\"http://developer.gnome.org/gtkmm/unstable/";
 "classGtk_1_1ScrolledWindow.html\">参考</ulink>"
 
-#: C/index-in.docbook:1759
+#: C/index-in.docbook:1767
 msgid ""
 "Here is a simple example that packs 100 toggle buttons into a "
 "ScrolledWindow. Try resizing the window to see the scrollbars react."
@@ -3353,7 +3352,7 @@ msgstr ""
 "这是一个简单的示例,其将100个开关按钮放入滚动窗口中。你可以尝试调整窗口的大"
 "小,以查看滚动条的反应。"
 
-#: C/index-in.docbook:1770
+#: C/index-in.docbook:1778
 msgid ""
 "<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
 "examples/book/scrolledwindow\">Source Code</ulink>"
@@ -3361,11 +3360,11 @@ msgstr ""
 "<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
 "examples/book/scrolledwindow\">源代码</ulink>"
 
-#: C/index-in.docbook:1777 C/index-in.docbook:1799
+#: C/index-in.docbook:1785 C/index-in.docbook:1807
 msgid "AspectFrame"
 msgstr "定比框架(AspectFrame)"
 
-#: C/index-in.docbook:1779
+#: C/index-in.docbook:1787
 msgid ""
 "The <classname>AspectFrame</classname> widget looks like a <classname>Frame</"
 "classname> widget, but it also enforces the <emphasis>aspect ratio</"
@@ -3379,7 +3378,7 @@ msgstr ""
 "保持不变。并在有必要的时候添加额外的空间。例如,这将允许你显示照片并且无需在"
 "用户调整窗口大小的时候对照片进行水平/垂直变形。"
 
-#: C/index-in.docbook:1788
+#: C/index-in.docbook:1796
 msgid ""
 "<ulink url=\"http://developer.gnome.org/gtkmm/unstable/";
 "classGtk_1_1AspectFrame.html\">Reference</ulink>"
@@ -3387,7 +3386,7 @@ msgstr ""
 "<ulink url=\"http://developer.gnome.org/gtkmm/unstable/";
 "classGtk_1_1AspectFrame.html\">参考</ulink>"
 
-#: C/index-in.docbook:1792
+#: C/index-in.docbook:1800
 msgid ""
 "The following program uses a <classname>Gtk::AspectFrame</classname> to "
 "present a drawing area whose aspect ratio will always be 2:1, no matter how "
@@ -3396,7 +3395,7 @@ msgstr ""
 "下面的程序使用<classname>Gtk::AspectFrame</classname>显示一个绘图区域,无论用"
 "户如何调整顶层窗口大小宽高比依旧保持2:1。"
 
-#: C/index-in.docbook:1805
+#: C/index-in.docbook:1813
 msgid ""
 "<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
 "examples/book/aspectframe\">Source Code</ulink>"
@@ -3404,11 +3403,11 @@ msgstr ""
 "<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
 "examples/book/aspectframe\">源代码</ulink>"
 
-#: C/index-in.docbook:1812
+#: C/index-in.docbook:1820
 msgid "Other Single-item Containers"
 msgstr "其他单项容器"
 
-#: C/index-in.docbook:1814
+#: C/index-in.docbook:1822
 msgid ""
 "There are other single-item containers. See the reference documentation for "
 "a complete list. Here are links to some example programs that show "
@@ -3417,7 +3416,7 @@ msgstr ""
 "还有其他的单项容器。请参阅参考文档获取完整列表。这里是一些本教程其他地方未曾"
 "提及的显示容器的示例程序的链接。"
 
-#: C/index-in.docbook:1820
+#: C/index-in.docbook:1828
 msgid ""
 "<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
 "examples/book/expander\">Source Code, Expander</ulink>"
@@ -3425,7 +3424,7 @@ msgstr ""
 "<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
 "examples/book/expander\">扩展器(Expander)源代码</ulink>"
 
-#: C/index-in.docbook:1821
+#: C/index-in.docbook:1829
 msgid ""
 "<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
 "examples/book/popover\">Source Code, Popover</ulink>"
@@ -3433,11 +3432,11 @@ msgstr ""
 "<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
 "examples/book/popover\">气泡(Popover)源代码</ulink>"
 
-#: C/index-in.docbook:1828
+#: C/index-in.docbook:1836
 msgid "Multiple-item Containers"
 msgstr "多项容器"
 
-#: C/index-in.docbook:1830
+#: C/index-in.docbook:1838
 msgid ""
 "Multiple-item container widgets have other methods than "
 "<methodname>set_child()</methodname> and <methodname>unset_child()</"
@@ -3455,11 +3454,11 @@ msgstr ""
 "方法。多项容器的<methodname>remove()</methodname>方法需要传入一个用于指示需要"
 "删除的部件的参数。"
 
-#: C/index-in.docbook:1840
+#: C/index-in.docbook:1848
 msgid "Packing"
 msgstr "组装(Packing)"
 
-#: C/index-in.docbook:1841
+#: C/index-in.docbook:1849
 msgid ""
 "You've probably noticed that <application>gtkmm</application> windows seem "
 "\"elastic\" - they can usually be stretched in many different ways. This is "
@@ -3469,7 +3468,7 @@ msgstr ""
 "通常可以以不同方式进行拉伸。这是<emphasis>部件装填(widget packing)</emphasis>"
 "系统在起作用。"
 
-#: C/index-in.docbook:1846
+#: C/index-in.docbook:1854
 msgid ""
 "Many GUI toolkits require you to precisely place widgets in a window, using "
 "absolute positioning, often using a visual editor. This leads to several "
@@ -3478,7 +3477,7 @@ msgstr ""
 "许多GUI工具包使用可视化编辑器的时候都要求你使用部件相对于窗口的绝对位置。这将"
 "导致以下几个问题:"
 
-#: C/index-in.docbook:1853
+#: C/index-in.docbook:1861
 msgid ""
 "The widgets don't rearrange themselves when the window is resized. Some "
 "widgets are hidden when the window is made smaller, and lots of useless "
@@ -3487,7 +3486,7 @@ msgstr ""
 "在调整窗口大小的时候部件不会重新排布自己。窗口变小的时候一些部件会被隐藏窗口"
 "变大的时候会出现很多无用的空间。"
 
-#: C/index-in.docbook:1857
+#: C/index-in.docbook:1865
 msgid ""
 "It's impossible to predict the amount of space necessary for text after it "
 "has been translated to other languages, or displayed in a different font. On "
@@ -3497,7 +3496,7 @@ msgstr ""
 "将文本翻译成其他语言或者用其他字体显示的时候,无法预测显示文本所需要的空间。"
 "而在Unix上不可能预料在每个主题和窗口管理器下的显示效果。"
 
-#: C/index-in.docbook:1861
+#: C/index-in.docbook:1869
 msgid ""
 "Changing the layout of a window \"on the fly\", to make some extra widgets "
 "appear, for instance, is complex. It requires tedious recalculation of every "
@@ -3506,7 +3505,7 @@ msgstr ""
 "即时更改窗口布局以显示额外的部件将会很复杂,这需要对每个部件的位置进行繁琐的"
 "重新计算。"
 
-#: C/index-in.docbook:1867
+#: C/index-in.docbook:1875
 msgid ""
 "<application>gtkmm</application> uses the packing system to solve these "
 "problems. Rather than specifying the position and size of each widget in the "
@@ -3529,7 +3528,7 @@ msgstr ""
 "<application>gtkmm</application>会使用以上的信息在用户操作窗口的时候合理、顺"
 "畅的调整部件们的大小和位置。"
 
-#: C/index-in.docbook:1876
+#: C/index-in.docbook:1884
 msgid ""
 "<application>gtkmm</application> arranges widgets hierarchically, using "
 "<emphasis>containers</emphasis>. A container widget contains other widgets. "
@@ -3546,7 +3545,7 @@ msgstr ""
 "application>中包括<classname>Gtk::Window</classname>在内的多数容器部件都是单"
 "项部件。"
 
-#: C/index-in.docbook:1885
+#: C/index-in.docbook:1893
 msgid ""
 "Yes, that's correct: a Window can contain at most one widget. How, then, can "
 "we use a window for anything useful? By placing a multiple-child container "
@@ -3557,7 +3556,7 @@ msgstr ""
 "呢?答案是通过向窗口放入一个多项容器实现。最合理的部件是<classname>Gtk::"
 "Grid</classname>和<classname>Gtk::Box</classname>。"
 
-#: C/index-in.docbook:1896
+#: C/index-in.docbook:1904
 msgid ""
 "<classname>Gtk::Grid</classname> arranges its child widgets in rows and "
 "columns. Use <methodname>attach()</methodname> and "
@@ -3567,7 +3566,7 @@ msgstr ""
 "<methodname>attach()</methodname>和<methodname>attach_next_to()</methodname>"
 "方法向网格(Grid)部件中插入子部件。"
 
-#: C/index-in.docbook:1904
+#: C/index-in.docbook:1912
 msgid ""
 "<classname>Gtk::Box</classname> arranges its child widgets vertically or "
 "horizontally. Use <methodname>append()</methodname> to insert child widgets."
@@ -3575,11 +3574,11 @@ msgstr ""
 "<classname>Gtk::Box</classname>将其子部件水平或垂直排列。使用"
 "<methodname>append()</methodname>方法向盒(Box)部件插入子部件。"
 
-#: C/index-in.docbook:1912
+#: C/index-in.docbook:1920
 msgid "There are several other containers, which we will also discuss."
 msgstr "还有几个容器我们将在之后讨论。"
 
-#: C/index-in.docbook:1916
+#: C/index-in.docbook:1924
 msgid ""
 "If you've never used a packing toolkit before, it can take some getting used "
 "to. You'll probably find, however, that you don't need to rely on visual "
@@ -3588,22 +3587,22 @@ msgstr ""
 "如果你之前从未使用组装工具包,那可能需要一段时间来适应它。然后你会发现你不需"
 "要和使用其他工具包一样依赖可视化编辑工具。"
 
-#: C/index-in.docbook:1926
+#: C/index-in.docbook:1934
 msgid "An improved Hello World"
 msgstr "改进后的Hello World"
 
-#: C/index-in.docbook:1928
+#: C/index-in.docbook:1936
 msgid ""
 "Let's take a look at a slightly improved <literal>helloworld</literal>, "
 "showing what we've learnt."
 msgstr ""
 "让我们看看改进后的<literal>helloworld</literal>,以展示我们所学到的内容。"
 
-#: C/index-in.docbook:1933
+#: C/index-in.docbook:1941
 msgid "Hello World 2"
 msgstr "Hello World 2"
 
-#: C/index-in.docbook:1939
+#: C/index-in.docbook:1947
 msgid ""
 "<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
 "examples/book/helloworld2\">Source Code</ulink>"
@@ -3611,7 +3610,7 @@ msgstr ""
 "<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
 "examples/book/helloworld2\">源代码</ulink>"
 
-#: C/index-in.docbook:1941
+#: C/index-in.docbook:1949
 msgid ""
 "After building and running this program, try resizing the window to see the "
 "behaviour. Also, try playing with <methodname>set_expand()</methodname>, "
@@ -3627,11 +3626,11 @@ msgstr ""
 "<methodname>set_halign()</methodname>和<methodname>set_valign()</methodname>"
 "方法。"
 
-#: C/index-in.docbook:1952
+#: C/index-in.docbook:1960
 msgid "Boxes"
 msgstr "盒子(Boxes)"
 
-#: C/index-in.docbook:1954
+#: C/index-in.docbook:1962
 msgid ""
 "Most packing uses boxes as in the above example. These are invisible "
 "containers into which we can pack our widgets. When packing widgets into a "
@@ -3644,15 +3643,15 @@ msgstr ""
 "时候部件从左到右水平插入。将部件装填到垂直盒中的时候部件从上到下垂直插入。你"
 "可以在盒中或盒侧组合使用盒以达到你所需的效果。"
 
-#: C/index-in.docbook:1963
+#: C/index-in.docbook:1971
 msgid "Adding widgets"
 msgstr "添加部件"
 
-#: C/index-in.docbook:1964
+#: C/index-in.docbook:1972
 msgid "Per-child packing options"
 msgstr "子部件装填选项"
 
-#: C/index-in.docbook:1965
+#: C/index-in.docbook:1973
 msgid ""
 "The <methodname>append()</methodname> method places widgets inside these "
 "containers. It will start at the top and work its way down in a "
@@ -3670,7 +3669,7 @@ msgstr ""
 "<methodname>insert_child_at_start()</methodname>方法。我们将在示例中使用"
 "<methodname>append()</methodname>。"
 
-#: C/index-in.docbook:1975
+#: C/index-in.docbook:1983
 msgid ""
 "There are several options governing how widgets are to be packed, and this "
 "can be confusing at first. You can modify the packing by using "
@@ -3691,15 +3690,15 @@ msgstr ""
 "设计器,看看能不能对你有所帮助。你甚至可以使用<classname>Gtk::Builder</"
 "classname>API在运行时加载GUI。"
 
-#: C/index-in.docbook:1987
+#: C/index-in.docbook:1995
 msgid "There are basically five different styles, as shown in this picture:"
 msgstr "如图所示,有五种不同的基本样式。"
 
-#: C/index-in.docbook:1993
+#: C/index-in.docbook:2001
 msgid "Box Packing 1"
 msgstr "组装盒1"
 
-#: C/index-in.docbook:1999
+#: C/index-in.docbook:2007
 msgid ""
 "Each line contains one horizontal <classname>Box</classname> with several "
 "buttons. Each of the buttons on a line is packed into the <classname>Box</"
@@ -3714,7 +3713,7 @@ msgstr ""
 "methodname>和<methodname>set_margin_end()</methodname>方法装入"
 "<classname>Box</classname>。"
 
-#: C/index-in.docbook:2008
+#: C/index-in.docbook:2016
 msgid ""
 "<ulink url=\"http://developer.gnome.org/gtkmm/unstable/classGtk_1_1Box.html";
 "\">Reference</ulink>"
@@ -3722,11 +3721,11 @@ msgstr ""
 "<ulink url=\"http://developer.gnome.org/gtkmm/unstable/classGtk_1_1Box.html";
 "\">参考</ulink>"
 
-#: C/index-in.docbook:2012
+#: C/index-in.docbook:2020
 msgid "Per-container packing options"
 msgstr "容器装填选项"
 
-#: C/index-in.docbook:2016
+#: C/index-in.docbook:2024
 #, no-wrap
 msgid ""
 "Gtk::Box(Gtk::Orientation orientation = Gtk::Orientation::HORIZONTAL, int spacing = 0);\n"
@@ -3739,7 +3738,7 @@ msgstr ""
 "void set_spacing(int spacing);\n"
 "void set_homogeneous(bool homogeneous = true);"
 
-#: C/index-in.docbook:2013
+#: C/index-in.docbook:2021
 msgid ""
 "Here's the constructor for the <classname>Box</classname> widget, and "
 "methods that set per-container packing options: <_:programlisting-1/> "
@@ -3754,7 +3753,7 @@ msgstr ""
 "都有一样的大小。<parameter>spacing</parameter>是每个部件之间要保留的最小像素"
 "数。"
 
-#: C/index-in.docbook:2026
+#: C/index-in.docbook:2034
 msgid ""
 "What's the difference between spacing (set when the box is created) and "
 "margins (set separately for each child widget)? Spacing is added between "
@@ -3766,15 +3765,15 @@ msgstr ""
 "加间距,在部件的一侧或多侧添加边距。下图能使你更清楚的理解这一点。所显示的边"
 "距是该行中每个按钮的左右边距。"
 
-#: C/index-in.docbook:2035
+#: C/index-in.docbook:2043
 msgid "Box Packing 2"
 msgstr "组装盒2"
 
-#: C/index-in.docbook:2045
+#: C/index-in.docbook:2053
 msgid "Gtk::Application and command-line options"
 msgstr "Gtk::Application和命令行选项"
 
-#: C/index-in.docbook:2046
+#: C/index-in.docbook:2054
 msgid ""
 "The following example program requires a command-line option. The source "
 "code shows two ways of handling command-line options in combination with "
@@ -3783,7 +3782,7 @@ msgstr ""
 "下面的示例程序需要一个命令行选项。源代码展示了两种<classname>Gtk::"
 "Application</classname>处理命令行选项的方式。"
 
-#: C/index-in.docbook:2052
+#: C/index-in.docbook:2060
 msgid ""
 "Handle the options in <function>main()</function> and hide them from "
 "<classname>Gtk::Application</classname> by setting <literal>argc = 1</"
@@ -3793,7 +3792,7 @@ msgstr ""
 "literal>将他们从<classname>Gtk::Application</classname>中隐藏,然后调用"
 "<methodname>Gtk::Application::run()</methodname>。"
 
-#: C/index-in.docbook:2058
+#: C/index-in.docbook:2066
 msgid ""
 "Give all command-line options to <methodname>Gtk::Application::run()</"
 "methodname> and add the flag <literal>Gio::Application::Flags::"
@@ -3805,7 +3804,7 @@ msgstr ""
 "<methodname>Gtk::Application::create()</methodname>方法设置标志<literal>Gio::"
 "Application::Flags::HANDLES_COMMAND_LINE</literal>。"
 
-#: C/index-in.docbook:2065
+#: C/index-in.docbook:2073
 msgid ""
 "You must set the optional parameter <literal>after = false</literal> in the "
 "call to <literal>signal_command_line().connect()</literal>, because your "
@@ -3822,7 +3821,7 @@ msgstr ""
 "(<classname>Gio::Application</classname>是<classname>Gtk::Application</"
 "classname>的基类)。"
 
-#: C/index-in.docbook:2078
+#: C/index-in.docbook:2086
 msgid ""
 "Here is the source code for the example that produced the screenshots above. "
 "When you run this example, provide a number between 1 and 3 as a command-"
@@ -3831,7 +3830,7 @@ msgstr ""
 "这是上述截图所运行示例的源代码。在运行此示例时请提供1到3之间的数字作为命令行"
 "选项以查看正在使用不同装填选项的行为。"
 
-#: C/index-in.docbook:2081
+#: C/index-in.docbook:2089
 msgid ""
 "<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
 "examples/book/box\">Source Code</ulink>"
@@ -3839,11 +3838,11 @@ msgstr ""
 "<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
 "examples/book/box\">源代码</ulink>"
 
-#: C/index-in.docbook:2087 C/index-in.docbook:2116
+#: C/index-in.docbook:2095 C/index-in.docbook:2124
 msgid "Grid"
 msgstr "网格(Grid)"
 
-#: C/index-in.docbook:2089
+#: C/index-in.docbook:2097
 msgid ""
 "A <classname>Grid</classname> dynamically lays out child widgets in rows and "
 "columns. The dimensions of the grid do not need to be specified in the "
@@ -3852,7 +3851,7 @@ msgstr ""
 "<classname>Grid</classname>在行与列中动态的摆放他的子部件。不需要在其构造函数"
 "当中指定维数。"
 
-#: C/index-in.docbook:2094
+#: C/index-in.docbook:2102
 msgid ""
 "Child widgets can span multiple rows or columns, using <methodname>attach()</"
 "methodname>, or added next to an existing widget inside the grid with "
@@ -3867,7 +3866,7 @@ msgstr ""
 "<methodname>set_column_homogeneous()</methodname>令网格中所有子部件具有一致的"
 "高度或宽度。"
 
-#: C/index-in.docbook:2101
+#: C/index-in.docbook:2109
 msgid ""
 "You can set the <emphasis>margin</emphasis> and <emphasis>expand</emphasis> "
 "properties of the child <classname>Widget</classname>s to control their "
@@ -3876,7 +3875,7 @@ msgstr ""
 "你可以设置子部件的<emphasis>margin</emphasis>和<emphasis>expand</emphasis>属"
 "性用以控制调整网格大小时它们之间的间距。"
 
-#: C/index-in.docbook:2105
+#: C/index-in.docbook:2113
 msgid ""
 "<ulink url=\"http://developer.gnome.org/gtkmm/unstable/classGtk_1_1Grid.html";
 "\">Reference</ulink>"
@@ -3884,7 +3883,7 @@ msgstr ""
 "<ulink url=\"http://developer.gnome.org/gtkmm/unstable/classGtk_1_1Grid.html";
 "\">参考</ulink>"
 
-#: C/index-in.docbook:2108
+#: C/index-in.docbook:2116
 msgid ""
 "This example creates a window with three buttons in a grid. The first two "
 "buttons are in the upper row, from left to right. A third button is attached "
@@ -3893,7 +3892,7 @@ msgstr ""
 "本示例创建一个窗口其中具有一个包含三个按钮的网格。前两个按钮位于最上行并从左"
 "向右排列。第三个按钮位于第一个按钮的下方,位于最下行并横跨两列。"
 
-#: C/index-in.docbook:2122
+#: C/index-in.docbook:2130
 msgid ""
 "<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
 "examples/book/grid\">Source Code</ulink>"
@@ -3901,11 +3900,11 @@ msgstr ""
 "<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
 "examples/book/grid\">源代码</ulink>"
 
-#: C/index-in.docbook:2129 C/index-in.docbook:2164
+#: C/index-in.docbook:2137 C/index-in.docbook:2172
 msgid "Notebook"
 msgstr "笔记本(Notebook)"
 
-#: C/index-in.docbook:2131
+#: C/index-in.docbook:2139
 msgid ""
 "A <classname>Notebook</classname> has a set of stacked <literal>pages</"
 "literal>, each of which contains widgets. Labelled <literal>tabs</literal> "
@@ -3918,7 +3917,7 @@ msgstr ""
 "<classname>Notebook</classname>一次只显示一页,这样可以将好几组部件放于很小的"
 "空间当中。例如他们经常在首选项对话框中使用。"
 
-#: C/index-in.docbook:2140
+#: C/index-in.docbook:2148
 msgid ""
 "Use the <methodname>append_page()</methodname>, <methodname>prepend_page()</"
 "methodname> and <methodname>insert_page()</methodname> methods to add tabbed "
@@ -3929,7 +3928,7 @@ msgstr ""
 "methodname>和<methodname>insert_page()</methodname>方法可以添加带标签的页面到"
 "<literal>Notebook</literal>中,你需要为这些方法提供子部件和标签名。"
 
-#: C/index-in.docbook:2147
+#: C/index-in.docbook:2155
 msgid ""
 "To discover the currently visible page, use the "
 "<methodname>get_current_page()</methodname> method. This returns the page "
@@ -3940,7 +3939,7 @@ msgstr ""
 "methodname>方法。该方法返回一个页码,你可以将页码传递给"
 "<methodname>get_nth_page()</methodname>获取指向该页当前子部件的指针。"
 
-#: C/index-in.docbook:2154
+#: C/index-in.docbook:2162
 msgid ""
 "To programmatically change the selected page, use the "
 "<methodname>set_current_page()</methodname> method."
@@ -3948,7 +3947,7 @@ msgstr ""
 "要以编程方式改变所选的页面,请使用<methodname>set_current_page()</methodname>"
 "方法。"
 
-#: C/index-in.docbook:2159
+#: C/index-in.docbook:2167
 msgid ""
 "<ulink url=\"http://developer.gnome.org/gtkmm/unstable/classGtk_1_1Notebook.";
 "html\">Reference</ulink>"
@@ -3956,7 +3955,7 @@ msgstr ""
 "<ulink url=\"http://developer.gnome.org/gtkmm/unstable/classGtk_1_1Notebook.";
 "html\">参考</ulink>"
 
-#: C/index-in.docbook:2170
+#: C/index-in.docbook:2178
 msgid ""
 "<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
 "examples/book/notebook/\">Source Code</ulink>"
@@ -3964,11 +3963,11 @@ msgstr ""
 "<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
 "examples/book/notebook/\">源代码</ulink>"
 
-#: C/index-in.docbook:2177 C/index-in.docbook:2204
+#: C/index-in.docbook:2185 C/index-in.docbook:2212
 msgid "Assistant"
 msgstr "助手(Assistant)"
 
-#: C/index-in.docbook:2179
+#: C/index-in.docbook:2187
 msgid ""
 "An <classname>Assistant</classname> splits a complex operation into steps. "
 "Each step is a page, containing a header, a child widget and an action area. "
@@ -3981,7 +3980,7 @@ msgstr ""
 "按钮,这些按钮会根据页面的类型自动更新(使用<methodname>set_page_type()</"
 "methodname>设置页面类型)。"
 
-#: C/index-in.docbook:2183
+#: C/index-in.docbook:2191
 msgid ""
 "Use the <methodname>append_page()</methodname>, <methodname>prepend_page</"
 "methodname> and <methodname>insert_page()</methodname> methods to add pages "
@@ -3992,7 +3991,7 @@ msgstr ""
 "methodname>和<methodname>insert_page()</methodname>方法可以向"
 "<classname>Assistant</classname>添加页面,你需要每个页面提供子部件。"
 
-#: C/index-in.docbook:2187
+#: C/index-in.docbook:2195
 msgid ""
 "To determine the currently-visible page, use the "
 "<methodname>get_current_page()</methodname> method, and pass the result to "
@@ -4005,14 +4004,14 @@ msgstr ""
 "际部件的指针。要想用编程的方式改变当前页,请使用"
 "<methodname>set_current_page()</methodname>方法。"
 
-#: C/index-in.docbook:2191
+#: C/index-in.docbook:2199
 msgid ""
 "To set the title of a page, use the <methodname>set_page_title()</"
 "methodname> method."
 msgstr ""
 "要为页面设置标题,请使用<methodname>set_page_title()</methodname>方法。"
 
-#: C/index-in.docbook:2195
+#: C/index-in.docbook:2203
 msgid ""
 "To add widgets to the action area, use the <methodname>add_action_widget()</"
 "methodname> method. They will be packed alongside the default buttons. Use "
@@ -4022,7 +4021,7 @@ msgstr ""
 "法。他们将与默认按钮一并被装填。使用<methodname>remove_action_widget()</"
 "methodname>方法可以删除部件。"
 
-#: C/index-in.docbook:2199
+#: C/index-in.docbook:2207
 msgid ""
 "<ulink url=\"http://developer.gnome.org/gtkmm/unstable/classGtk_1_1Assistant.";
 "html\">Reference</ulink>"
@@ -4030,7 +4029,7 @@ msgstr ""
 "<ulink url=\"http://developer.gnome.org/gtkmm/unstable/classGtk_1_1Assistant.";
 "html\">参考</ulink>"
 
-#: C/index-in.docbook:2210
+#: C/index-in.docbook:2218
 msgid ""
 "<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
 "examples/book/assistant/\">Source Code</ulink>"
@@ -4038,11 +4037,11 @@ msgstr ""
 "<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
 "examples/book/assistant/\">源代码</ulink>"
 
-#: C/index-in.docbook:2217
+#: C/index-in.docbook:2225
 msgid "Other Multi-item Containers"
 msgstr "其他多项容器"
 
-#: C/index-in.docbook:2219
+#: C/index-in.docbook:2227
 msgid ""
 "There are other multi-item containers. See the reference documentation for a "
 "complete list. Here are links to some example programs that show containers, "
@@ -4051,7 +4050,7 @@ msgstr ""
 "还有其他多项容器。请参阅文档以获取完整列表。这里是一些本教程未提及的显示容器"
 "的示例程序连接。"
 
-#: C/index-in.docbook:2225
+#: C/index-in.docbook:2233
 msgid ""
 "<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
 "examples/book/actionbar\">Source Code, ActionBar</ulink>"
@@ -4059,7 +4058,7 @@ msgstr ""
 "<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
 "examples/book/actionbar\">动作条(ActionBar)源代码</ulink>"
 
-#: C/index-in.docbook:2226
+#: C/index-in.docbook:2234
 msgid ""
 "<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
 "examples/book/flowbox\">Source Code, FlowBox</ulink>"
@@ -4067,7 +4066,7 @@ msgstr ""
 "<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
 "examples/book/flowbox\">流式盒(FlowBox)源代码</ulink>"
 
-#: C/index-in.docbook:2227
+#: C/index-in.docbook:2235
 msgid ""
 "<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
 "examples/book/iconview\">Source Code, IconView</ulink>"
@@ -4075,22 +4074,22 @@ msgstr ""
 "<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
 "examples/book/iconview\">图标视图(IconView)源代码</ulink>"
 
-#: C/index-in.docbook:2237
+#: C/index-in.docbook:2245
 msgid "The TreeView widget"
 msgstr "树形视图(TreeView)部件"
 
-#: C/index-in.docbook:2238
+#: C/index-in.docbook:2246
 msgid ""
 "The <classname>Gtk::TreeView</classname> widget can contain lists or trees "
 "of data, in columns."
 msgstr ""
 " <classname>Gtk::TreeView</classname>部件的每一行都可以包含数据列表或数据树。"
 
-#: C/index-in.docbook:2244
+#: C/index-in.docbook:2252
 msgid "The Model"
 msgstr "模型(Model)"
 
-#: C/index-in.docbook:2245
+#: C/index-in.docbook:2253
 msgid ""
 "Each <classname>Gtk::TreeView</classname> has an associated <classname>Gtk::"
 "TreeModel</classname>, which contains the data displayed by the "
@@ -4108,7 +4107,7 @@ msgstr ""
 "数据。也允许不同的视图显示同一个模型的不同列的数据,就像是多个SQL查询(或“视"
 "图”)显示同一个数据库表的不同字段一样。"
 
-#: C/index-in.docbook:2255
+#: C/index-in.docbook:2263
 msgid ""
 "Although you can theoretically implement your own Model, you will normally "
 "use either the <classname>ListStore</classname> or <classname>TreeStore</"
@@ -4117,7 +4116,7 @@ msgstr ""
 "理论上你可以实现自己的模型,但通常情况直接使用<classname>ListStore</"
 "classname>或<classname>TreeStore</classname>可以省略很多麻烦。"
 
-#: C/index-in.docbook:2261
+#: C/index-in.docbook:2269
 msgid ""
 "<ulink url=\"http://developer.gnome.org/gtkmm/unstable/classGtk_1_1TreeModel.";
 "html\">Reference</ulink>"
@@ -4125,21 +4124,21 @@ msgstr ""
 "<ulink url=\"http://developer.gnome.org/gtkmm/unstable/classGtk_1_1TreeModel.";
 "html\">参考</ulink>"
 
-#: C/index-in.docbook:2264
+#: C/index-in.docbook:2272
 msgid "ListStore, for rows"
 msgstr "列表储存(ListStore)的行"
 
-#: C/index-in.docbook:2265
+#: C/index-in.docbook:2273
 msgid ""
 "The <classname>ListStore</classname> contains simple rows of data, and each "
 "row has no children."
 msgstr "<classname>ListStore</classname>包含简单的数据行,每个行都没有孩子。"
 
-#: C/index-in.docbook:2271 C/index-in.docbook:2839
+#: C/index-in.docbook:2279 C/index-in.docbook:2847
 msgid "TreeView - ListStore"
 msgstr "树形视图 - 列表储存"
 
-#: C/index-in.docbook:2277
+#: C/index-in.docbook:2285
 msgid ""
 "<ulink url=\"http://developer.gnome.org/gtkmm/unstable/classGtk_1_1ListStore.";
 "html\">Reference</ulink>"
@@ -4147,21 +4146,21 @@ msgstr ""
 "<ulink url=\"http://developer.gnome.org/gtkmm/unstable/classGtk_1_1ListStore.";
 "html\">参考</ulink>"
 
-#: C/index-in.docbook:2282
+#: C/index-in.docbook:2290
 msgid "TreeStore, for a hierarchy"
 msgstr "具有层次的树状储存"
 
-#: C/index-in.docbook:2283
+#: C/index-in.docbook:2291
 msgid ""
 "The <classname>TreeStore</classname> contains rows of data, and each row may "
 "have child rows."
 msgstr "<classname>TreeStore</classname>包含数据行,并且每一行都可能有子行。"
 
-#: C/index-in.docbook:2289 C/index-in.docbook:2858
+#: C/index-in.docbook:2297 C/index-in.docbook:2866
 msgid "TreeView - TreeStore"
 msgstr "树形视图 - 树状储存"
 
-#: C/index-in.docbook:2295
+#: C/index-in.docbook:2303
 msgid ""
 "<ulink url=\"http://developer.gnome.org/gtkmm/unstable/classGtk_1_1TreeStore.";
 "html\">Reference</ulink>"
@@ -4169,11 +4168,11 @@ msgstr ""
 "<ulink url=\"http://developer.gnome.org/gtkmm/unstable/classGtk_1_1TreeStore.";
 "html\">参考</ulink>"
 
-#: C/index-in.docbook:2300
+#: C/index-in.docbook:2308
 msgid "Model Columns"
 msgstr "模型列"
 
-#: C/index-in.docbook:2301
+#: C/index-in.docbook:2309
 msgid ""
 "The <classname>TreeModelColumnRecord</classname> class is used to keep track "
 "of the columns and their data types. You add <classname>TreeModelColumn</"
@@ -4189,7 +4188,7 @@ msgstr ""
 "列中的数据。你可能会发现,派生一个你自己的包含有<classname>TreeModelColumn</"
 "classname>数据成员的<classname>TreeModelColumnRecord</classname>会更方便。"
 
-#: C/index-in.docbook:2312
+#: C/index-in.docbook:2320
 #, no-wrap
 msgid ""
 "class ModelColumns : public Gtk::TreeModelColumnRecord\n"
@@ -4218,14 +4217,14 @@ msgstr ""
 "\n"
 "ModelColumns m_Columns;"
 
-#: C/index-in.docbook:2325
+#: C/index-in.docbook:2333
 msgid ""
 "You specify the <classname>ColumnRecord</classname> when creating the Model, "
 "like so:"
 msgstr ""
 "你可以在创建模型的时候指定<classname>ColumnRecord</classname>,如下所示:"
 
-#: C/index-in.docbook:2329
+#: C/index-in.docbook:2337
 #, no-wrap
 msgid ""
 "Glib::RefPtr&lt;Gtk::ListStore&gt; refListStore =\n"
@@ -4234,7 +4233,7 @@ msgstr ""
 "Glib::RefPtr&lt;Gtk::ListStore&gt; refListStore =\n"
 "    Gtk::ListStore::create(m_Columns);"
 
-#: C/index-in.docbook:2331
+#: C/index-in.docbook:2339
 msgid ""
 "As a <classname>TreeModelColumnRecord</classname> describes structure, not "
 "data, it can be shared among multiple models, and this is preferable for "
@@ -4250,11 +4249,11 @@ msgstr ""
 "化后示例化它。最好的解决方案是使他成为惰性初始化的单例,以便在第一个模型访问"
 "他的时候按需构造。"
 
-#: C/index-in.docbook:2343
+#: C/index-in.docbook:2351
 msgid "Adding Rows"
 msgstr "添加行"
 
-#: C/index-in.docbook:2344
+#: C/index-in.docbook:2352
 msgid ""
 "Add rows to the model with the <methodname>append()</methodname>, "
 "<methodname>prepend()</methodname>, or <methodname>insert()</methodname> "
@@ -4263,25 +4262,25 @@ msgstr ""
 "使用<methodname>append()</methodname>、<methodname>prepend()</methodname>或"
 "<methodname>insert()</methodname>方法可以向模型添加行。"
 
-#: C/index-in.docbook:2348
+#: C/index-in.docbook:2356
 #, no-wrap
 msgid "auto iter = m_refListStore-&gt;append();"
 msgstr "auto iter = m_refListStore-&gt;append();"
 
-#: C/index-in.docbook:2349
+#: C/index-in.docbook:2357
 msgid "You can dereference the iterator to get the Row:"
 msgstr "你可以通过解引用迭代器获得行:"
 
-#: C/index-in.docbook:2351
+#: C/index-in.docbook:2359
 #, no-wrap
 msgid "auto row = *iter;"
 msgstr "auto row = *iter;"
 
-#: C/index-in.docbook:2352
+#: C/index-in.docbook:2360
 msgid "Adding child rows"
 msgstr "添加子行"
 
-#: C/index-in.docbook:2353
+#: C/index-in.docbook:2361
 msgid ""
 "<classname>Gtk::TreeStore</classname> models can have child items. Add them "
 "with the <methodname>append()</methodname>, <methodname>prepend()</"
@@ -4291,7 +4290,7 @@ msgstr ""
 "<methodname>append()</methodname>、<methodname>prepend()</methodname>或"
 "<methodname>insert()</methodname>方法添加,如下所示:"
 
-#: C/index-in.docbook:2358
+#: C/index-in.docbook:2366
 #, no-wrap
 msgid ""
 "auto iter_child =\n"
@@ -4300,11 +4299,11 @@ msgstr ""
 "auto iter_child =\n"
 "    m_refTreeStore-&gt;append(row.children());"
 
-#: C/index-in.docbook:2365
+#: C/index-in.docbook:2373
 msgid "Setting values"
 msgstr "设置值"
 
-#: C/index-in.docbook:2366
+#: C/index-in.docbook:2374
 msgid ""
 "You can use the <methodname>operator[]</methodname> overload to set the data "
 "for a particular column in the row, specifying the "
@@ -4313,16 +4312,16 @@ msgstr ""
 "你可以使用<methodname>operator[]</methodname>重载设置行中的特定列的数据,你需"
 "要使用创建模型时的<classname>TreeModelColumn</classname>指定列。"
 
-#: C/index-in.docbook:2371
+#: C/index-in.docbook:2379
 #, no-wrap
 msgid "row[m_Columns.m_col_text] = \"sometext\";"
 msgstr "row[m_Columns.m_col_text] = \"sometext\";"
 
-#: C/index-in.docbook:2375
+#: C/index-in.docbook:2383
 msgid "Getting values"
 msgstr "获取值"
 
-#: C/index-in.docbook:2376
+#: C/index-in.docbook:2384
 msgid ""
 "You can use the <methodname>operator[]</methodname> overload to get the data "
 "in a particular column in a row, specifying the <classname>TreeModelColumn</"
@@ -4331,7 +4330,7 @@ msgstr ""
 "你可以使用<methodname>operator[]</methodname>重载获取行中特定列的数据,你需要"
 "使用创建模型时的<classname>TreeModelColumn</classname>指定列。"
 
-#: C/index-in.docbook:2381
+#: C/index-in.docbook:2389
 #, no-wrap
 msgid ""
 "auto strText = row[m_Columns.m_col_text];\n"
@@ -4340,14 +4339,14 @@ msgstr ""
 "auto strText = row[m_Columns.m_col_text];\n"
 "auto number = row[m_Columns.m_col_number];"
 
-#: C/index-in.docbook:2383
+#: C/index-in.docbook:2391
 msgid ""
 "The compiler will complain if you use an inappropriate type. For instance, "
 "this would generate a compiler error:"
 msgstr ""
 "如果你使用了不合适的类型,编译器会报错。例如,编译器将生成一个编译错误:"
 
-#: C/index-in.docbook:2387
+#: C/index-in.docbook:2395
 #, no-wrap
 msgid ""
 "//compiler error - no conversion from ustring to int.\n"
@@ -4356,11 +4355,11 @@ msgstr ""
 "//compiler error - no conversion from ustring to int.\n"
 "int number = row[m_Columns.m_col_text];"
 
-#: C/index-in.docbook:2392
+#: C/index-in.docbook:2400
 msgid "\"Hidden\" Columns"
 msgstr "“隐藏”列"
 
-#: C/index-in.docbook:2393
+#: C/index-in.docbook:2401
 msgid ""
 "You might want to associate extra data with each row. If so, just add it as "
 "a Model column, but don't add it to the View."
@@ -4368,11 +4367,11 @@ msgstr ""
 "你可能想要将额外的数据和每一行关联。如果是这样,你只需要将其添加到模型的一个"
 "行中而不将其添加到视图中即可。"
 
-#: C/index-in.docbook:2402 C/index-in.docbook:3248
+#: C/index-in.docbook:2410 C/index-in.docbook:3256
 msgid "The View"
 msgstr "视图"
 
-#: C/index-in.docbook:2403
+#: C/index-in.docbook:2411
 msgid ""
 "The View is the actual widget (<classname>Gtk::TreeView</classname>) that "
 "displays the model (<classname>Gtk::TreeModel</classname>) data and allows "
@@ -4383,7 +4382,7 @@ msgstr ""
 "用户与其交互的部件(<classname>Gtk::TreeView</classname>)。视图可以显示模型的"
 "所有列也可以只显示一部分列还可以以不同的方式显示列。"
 
-#: C/index-in.docbook:2410
+#: C/index-in.docbook:2418
 msgid ""
 "<ulink url=\"http://developer.gnome.org/gtkmm/unstable/classGtk_1_1TreeView.";
 "html\">Reference</ulink>"
@@ -4391,11 +4390,11 @@ msgstr ""
 "<ulink url=\"http://developer.gnome.org/gtkmm/unstable/classGtk_1_1TreeView.";
 "html\">参考</ulink>"
 
-#: C/index-in.docbook:2413
+#: C/index-in.docbook:2421
 msgid "Using a Model"
 msgstr "使用模型"
 
-#: C/index-in.docbook:2414
+#: C/index-in.docbook:2422
 msgid ""
 "You can specify a <classname>Gtk::TreeModel</classname> when constructing "
 "the <classname>Gtk::TreeView</classname>, or you can use the "
@@ -4405,16 +4404,16 @@ msgstr ""
 "<classname>Gtk::TreeModel</classname>,也可以构筑完成后使用"
 "<methodname>set_model()</methodname>方法指定,如下所示:"
 
-#: C/index-in.docbook:2419
+#: C/index-in.docbook:2427
 #, no-wrap
 msgid "m_TreeView.set_model(m_refListStore);"
 msgstr "m_TreeView.set_model(m_refListStore);"
 
-#: C/index-in.docbook:2423
+#: C/index-in.docbook:2431
 msgid "Adding View Columns"
 msgstr "为视图添加列"
 
-#: C/index-in.docbook:2424
+#: C/index-in.docbook:2432
 msgid ""
 "You can use the <methodname>append_column()</methodname> method to tell the "
 "View that it should display certain Model columns, in a certain order, with "
@@ -4423,12 +4422,12 @@ msgstr ""
 "你可以使用<methodname>append_column()</methodname>方法告知视图以一定的顺序于"
 "某个列标题下显示模型的某个列。"
 
-#: C/index-in.docbook:2429
+#: C/index-in.docbook:2437
 #, no-wrap
 msgid "m_TreeView.append_column(\"Messages\", m_Columns.m_col_text);"
 msgstr "m_TreeView.append_column(\"Messages\", m_Columns.m_col_text);"
 
-#: C/index-in.docbook:2430
+#: C/index-in.docbook:2438
 msgid ""
 "When using this simple <methodname>append_column()</methodname> overload, "
 "the <classname>TreeView</classname> will display the model data with an "
@@ -4453,11 +4452,11 @@ msgstr ""
 "<literal>(unsigned) int</literal>或者<literal>(unsigned) long</literal>作为行"
 "类型。"
 
-#: C/index-in.docbook:2446
+#: C/index-in.docbook:2454
 msgid "More than one Model Column per View Column"
 msgstr "每个视图列不不止一个模型列"
 
-#: C/index-in.docbook:2447
+#: C/index-in.docbook:2455
 msgid ""
 "To render more than one model column in a view column, you need to create "
 "the <classname>TreeView::Column</classname> widget manually, and use "
@@ -4467,7 +4466,7 @@ msgstr ""
 "classname>部件,并使用<methodname>pack_start()</methodname>方法向其添加模型"
 "列。"
 
-#: C/index-in.docbook:2453
+#: C/index-in.docbook:2461
 msgid ""
 "Then use <methodname>append_column()</methodname> to add the view Column to "
 "the View. Notice that <methodname>Gtk::TreeView::append_column()</"
@@ -4482,13 +4481,13 @@ msgstr ""
 "<classname>TreeModelColumn</classname>生成的合适的<classname>Gtk::TreeView::"
 "Column</classname>部件。"
 
-#: C/index-in.docbook:2460
+#: C/index-in.docbook:2468
 msgid ""
 "Here is some example code, which has a pixbuf icon and a text name in the "
 "same column:"
 msgstr "这是一些示例代码,在同一列中有一个像素缓冲区(pixbuf)图标和一个文本名:"
 
-#: C/index-in.docbook:2463
+#: C/index-in.docbook:2471
 #, no-wrap
 msgid ""
 "\n"
@@ -4511,11 +4510,11 @@ msgstr ""
 "\n"
 "m_TreeView.append_column(*pColumn);"
 
-#: C/index-in.docbook:2475
+#: C/index-in.docbook:2483
 msgid "Specifying CellRenderer details"
 msgstr "指定单元格渲染器(CellRenderer)详情"
 
-#: C/index-in.docbook:2476
+#: C/index-in.docbook:2484
 msgid ""
 "The default <classname>CellRenderers</classname> and their default behaviour "
 "will normally suffice, but you might occasionally need finer control. For "
@@ -4529,7 +4528,7 @@ msgstr ""
 "example_treeview_treestore.cc</filename>的示例代码,附加一个<classname>Gtk::"
 "CellRenderer</classname>部件并指示其各个模型列的外观的各个方面来呈现数据。"
 
-#: C/index-in.docbook:2484
+#: C/index-in.docbook:2492
 #, no-wrap
 msgid ""
 "auto cols_count = m_TreeView.append_column_editable(\"Alex\", m_columns.alex);\n"
@@ -4548,7 +4547,7 @@ msgstr ""
 "  pColumn-&gt;add_attribute(pRenderer-&gt;property_visible(), m_columns.visible);\n"
 "  pColumn-&gt;add_attribute(pRenderer-&gt;property_activatable(), m_columns.world);"
 
-#: C/index-in.docbook:2492
+#: C/index-in.docbook:2500
 msgid ""
 "You can also connect to <classname>CellRenderer</classname> signals to "
 "detect user actions. For instance:"
@@ -4556,7 +4555,7 @@ msgstr ""
 "你还可以通过连接到<classname>CellRenderer</classname>的信号以检测用户的操作。"
 "例如:"
 
-#: C/index-in.docbook:2496
+#: C/index-in.docbook:2504
 #, no-wrap
 msgid ""
 "\n"
@@ -4573,15 +4572,15 @@ msgstr ""
 "        &amp;Example_TreeView_TreeStore::on_cell_toggled), m_columns.dave)\n"
 ");"
 
-#: C/index-in.docbook:2505 C/index-in.docbook:2868
+#: C/index-in.docbook:2513 C/index-in.docbook:2876
 msgid "Editable Cells"
 msgstr "可编辑单元格"
 
-#: C/index-in.docbook:2508
+#: C/index-in.docbook:2516
 msgid "Automatically-stored editable cells."
 msgstr "自动储存的可编辑单元格"
 
-#: C/index-in.docbook:2509
+#: C/index-in.docbook:2517
 msgid ""
 "Cells in a <classname>TreeView</classname> can be edited in-place by the "
 "user. To allow this, use the <classname>Gtk::TreeView</classname> "
@@ -4601,11 +4600,11 @@ msgstr ""
 "版,只能为简单的列类型实例化(例如,<classname>Glib::ustring</classname>、"
 "<literal>int</literal>和<literal>long</literal>)。"
 
-#: C/index-in.docbook:2523
+#: C/index-in.docbook:2531
 msgid "Implementing custom logic for editable cells."
 msgstr "为可编辑单元格实现自定义逻辑。"
 
-#: C/index-in.docbook:2524
+#: C/index-in.docbook:2532
 msgid ""
 "However, you might not want the new values to be stored immediately. For "
 "instance, maybe you want to restrict the input to certain characters or "
@@ -4614,7 +4613,7 @@ msgstr ""
 "但是你可能不希望立刻储存新的值。例如你可能希望对输入进行检测,符合预期的范围"
 "才储存。"
 
-#: C/index-in.docbook:2529
+#: C/index-in.docbook:2537
 msgid ""
 "To achieve this, you should use the normal <classname>Gtk::TreeView</"
 "classname> <methodname>insert_column()</methodname> and "
@@ -4627,7 +4626,7 @@ msgstr ""
 "<methodname>get_column_cell_renderer()</methodname>方法获取该列使用的"
 "<classname>Gtk::CellRenderer</classname>。"
 
-#: C/index-in.docbook:2535
+#: C/index-in.docbook:2543
 msgid ""
 "You should then cast that <classname>Gtk::CellRenderer*</classname> to the "
 "specific <classname>CellRenderer</classname> that you expect, so you can use "
@@ -4637,7 +4636,7 @@ msgstr ""
 "<classname>CellRenderer</classname>(例如转换为<classname>CellRendererText</"
 "classname>,以便调用特定的API。"
 
-#: C/index-in.docbook:2539
+#: C/index-in.docbook:2547
 msgid ""
 "For instance, for a CellRendererText, you would set the cell's "
 "<emphasis>editable</emphasis> property to true, like so:"
@@ -4645,12 +4644,12 @@ msgstr ""
 "例如,对于<classname>CellRendererText</classname>,你应该将单元格的"
 "<emphasis>editable</emphasis>属性设置为<literal>true</literal>,如下所示:"
 
-#: C/index-in.docbook:2542
+#: C/index-in.docbook:2550
 #, no-wrap
 msgid "cell-&gt;property_editable() = true;"
 msgstr "cell-&gt;property_editable() = true;"
 
-#: C/index-in.docbook:2543
+#: C/index-in.docbook:2551
 msgid ""
 "For a CellRendererToggle, you would set the <emphasis>activatable</emphasis> "
 "property instead."
@@ -4658,7 +4657,7 @@ msgstr ""
 "对于<classname>CellRendererToggle</classname>,你应该改为设置"
 "<emphasis>activatable</emphasis>属性。"
 
-#: C/index-in.docbook:2547
+#: C/index-in.docbook:2555
 msgid ""
 "You can then connect to the appropriate \"edited\" signal. For instance, "
 "connect to <methodname>Gtk::CellRendererText::signal_edited()</methodname>, "
@@ -4674,7 +4673,7 @@ msgstr ""
 "TreeView::get_column()</methodname>方法然后再调用<methodname>get_cells()</"
 "methodname>获取目标单元格。"
 
-#: C/index-in.docbook:2555
+#: C/index-in.docbook:2563
 msgid ""
 "In your signal handler, you should examine the new value and then store it "
 "in the Model if that is appropriate for your application."
@@ -4682,11 +4681,11 @@ msgstr ""
 "在你的信号处理函数中,你应该检查新值如果其对于你的应用程序而言是合适的则将其"
 "储存到你的模型中。"
 
-#: C/index-in.docbook:2567
+#: C/index-in.docbook:2575
 msgid "Iterating over Model Rows"
 msgstr "遍历模型行"
 
-#: C/index-in.docbook:2568
+#: C/index-in.docbook:2576
 msgid ""
 "<classname>Gtk::TreeModel</classname> provides a C++ Standard Library-style "
 "container of its children, via the <methodname>children()</methodname> "
@@ -4698,7 +4697,7 @@ msgstr ""
 "<methodname>begin()</methodname>和<methodname>end()</methodname>方法递增迭代"
 "器,如下所示:"
 
-#: C/index-in.docbook:2574
+#: C/index-in.docbook:2582
 #, no-wrap
 msgid ""
 "\n"
@@ -4717,7 +4716,7 @@ msgstr ""
 "  //Do something with the row - see above for set/get.\n"
 "}"
 
-#: C/index-in.docbook:2581
+#: C/index-in.docbook:2589
 msgid ""
 "If you always want to iterate across the entire range, much more succinct "
 "syntax is possible using C++'s range-based <literal>for</literal> loop:"
@@ -4725,7 +4724,7 @@ msgstr ""
 "如果你总是想迭代整个范围,则可以使用C++基于范围的更简洁的<literal>for</"
 "literal>循环语法:"
 
-#: C/index-in.docbook:2585
+#: C/index-in.docbook:2593
 #, no-wrap
 msgid ""
 "\n"
@@ -4740,31 +4739,31 @@ msgstr ""
 "  //Do something with the row - see above for set/get.\n"
 "}"
 
-#: C/index-in.docbook:2592
+#: C/index-in.docbook:2600
 msgid "Row children"
 msgstr "子行"
 
-#: C/index-in.docbook:2597
-#, no-wrap
-msgid "Gtk::TreeModel::Children children = row.children();"
-msgstr "Gtk::TreeModel::Children children = row.children();"
-
-#: C/index-in.docbook:2593
+#: C/index-in.docbook:2601
 msgid ""
 "When using a <classname>Gtk::TreeStore</classname>, the rows can have child "
 "rows, which can have their own children in turn. Use <methodname>Gtk::"
 "TreeModel::Row::children()</methodname> to get the container of child "
-"<classname>Row</classname>s: <_:programlisting-1/>"
+"<classname>Row</classname>s:"
 msgstr ""
 "在使用<classname>Gtk::TreeStore</classname>的时候,其行可以存在子行,子行也可"
 "以存在子行。使用<methodname>Gtk::TreeModel::Row::children()</methodname>方法"
-"可以获取<classname>Row</classname>的子行:<_:programlisting-1/>"
+"可以获取<classname>Row</classname>的子行:"
+
+#: C/index-in.docbook:2606
+#, no-wrap
+msgid "Gtk::TreeModel::Children children = row.children();"
+msgstr "Gtk::TreeModel::Children children = row.children();"
 
-#: C/index-in.docbook:2604
+#: C/index-in.docbook:2612
 msgid "The Selection"
 msgstr "选择"
 
-#: C/index-in.docbook:2605
+#: C/index-in.docbook:2613
 msgid ""
 "To find out what rows the user has selected, get the <classname>Gtk::"
 "TreeView::Selection</classname> object from the <classname>TreeView</"
@@ -4773,40 +4772,39 @@ msgstr ""
 "要找出用户选择了那些行,请从<classname>TreeView</classname>的<classname>Gtk::"
 "TreeView::Selection</classname>对象获取。"
 
-#: C/index-in.docbook:2610
+#: C/index-in.docbook:2618
 #, no-wrap
 msgid "auto refTreeSelection = m_TreeView.get_selection();"
 msgstr "auto refTreeSelection = m_TreeView.get_selection();"
 
-#: C/index-in.docbook:2613
+#: C/index-in.docbook:2621
 msgid "Single or multiple selection"
 msgstr "单选或多选"
 
-#: C/index-in.docbook:2617
-#, no-wrap
-msgid "refTreeSelection-&gt;set_mode(Gtk::SELECTION_MULTIPLE);"
-msgstr "refTreeSelection-&gt;set_mode(Gtk::SELECTION_MULTIPLE);"
-
-#: C/index-in.docbook:2614
+#: C/index-in.docbook:2622
 msgid ""
 "By default, only single rows can be selected, but you can allow multiple "
-"selection by setting the mode, like so: <_:programlisting-1/>"
+"selection by setting the mode, like so:"
 msgstr ""
-"默认情况下,只能选定一行,但是你可以通过设置选择模式选择多行,如下所示:<_:"
-"programlisting-1/>"
+"默认情况下,只能选定一行,但是你可以通过设置选择模式选择多行,如下所示:"
 
-#: C/index-in.docbook:2622
+#: C/index-in.docbook:2626
+#, no-wrap
+msgid "refTreeSelection-&gt;set_mode(Gtk::SELECTION_MULTIPLE);"
+msgstr "refTreeSelection-&gt;set_mode(Gtk::SELECTION_MULTIPLE);"
+
+#: C/index-in.docbook:2630
 msgid "The selected rows"
 msgstr "选定的行"
 
-#: C/index-in.docbook:2623
+#: C/index-in.docbook:2631
 msgid ""
 "For single-selection, you can just call <methodname>get_selected()</"
 "methodname>, like so:"
 msgstr ""
 "对于单选模式,你可以如下所示调用<methodname>get_selected()</methodname>:"
 
-#: C/index-in.docbook:2627
+#: C/index-in.docbook:2635
 #, no-wrap
 msgid ""
 "auto iter = refTreeSelection-&gt;get_selected();\n"
@@ -4823,7 +4821,7 @@ msgstr ""
 "  //Do something with the row.\n"
 "}"
 
-#: C/index-in.docbook:2634
+#: C/index-in.docbook:2642
 msgid ""
 "For multiple-selection, you need to call <methodname>get_selected_rows()</"
 "methodname> or define a callback, and give it to "
@@ -4836,7 +4834,7 @@ msgstr ""
 "<methodname>selected_foreach_path()</methodname>或"
 "<methodname>selected_foreach_iter()</methodname>,如下所示:"
 
-#: C/index-in.docbook:2641
+#: C/index-in.docbook:2649
 #, no-wrap
 msgid ""
 "refTreeSelection-&gt;selected_foreach_iter(\n"
@@ -4859,17 +4857,17 @@ msgstr ""
 "  //Do something with the row.\n"
 "}"
 
-#: C/index-in.docbook:2654
+#: C/index-in.docbook:2662
 msgid "The \"changed\" signal"
 msgstr "\"changed\"信号"
 
-#: C/index-in.docbook:2655
+#: C/index-in.docbook:2663
 msgid ""
 "To respond to the user clicking on a row or range of rows, connect to the "
 "signal like so:"
 msgstr "要响应用户单击某行或者某个范围的行,请按以下方式连接信号:"
 
-#: C/index-in.docbook:2659
+#: C/index-in.docbook:2667
 #, no-wrap
 msgid ""
 "refTreeSelection-&gt;signal_changed().connect(\n"
@@ -4880,11 +4878,11 @@ msgstr ""
 "    sigc::mem_fun(*this, &amp;Example_IconTheme::on_selection_changed)\n"
 ");"
 
-#: C/index-in.docbook:2665
+#: C/index-in.docbook:2673
 msgid "Preventing row selection"
 msgstr "防止行被选择"
 
-#: C/index-in.docbook:2666
+#: C/index-in.docbook:2674
 msgid ""
 "Maybe the user should not be able to select every item in your list or tree. "
 "For instance, in the gtk-demo, you can select a demo to see the source code, "
@@ -4893,7 +4891,7 @@ msgstr ""
 "或许用户不应该能选择列表或树中的每个项目。例如在gtk-demo中,你可以选择一个演"
 "示来查看他的源代码,但是你选一个演示类别没有意义。"
 
-#: C/index-in.docbook:2671
+#: C/index-in.docbook:2679
 msgid ""
 "To control which rows can be selected, use the "
 "<methodname>set_select_function()</methodname> method, providing a "
@@ -4902,7 +4900,7 @@ msgstr ""
 "要控制一个行是否能被选择,请使用<methodname>set_select_function()</"
 "methodname>方法为其提供一个<classname>sigc::slot</classname>回调。例如:"
 
-#: C/index-in.docbook:2676
+#: C/index-in.docbook:2684
 #, no-wrap
 msgid ""
 "m_refTreeSelection-&gt;set_select_function( sigc::mem_fun(*this,\n"
@@ -4911,11 +4909,11 @@ msgstr ""
 "m_refTreeSelection-&gt;set_select_function( sigc::mem_fun(*this,\n"
 "    &amp;DemoWindow::select_function) );"
 
-#: C/index-in.docbook:2678
+#: C/index-in.docbook:2686
 msgid "and then"
 msgstr "接着"
 
-#: C/index-in.docbook:2681
+#: C/index-in.docbook:2689
 #, no-wrap
 msgid ""
 "bool DemoWindow::select_function(\n"
@@ -4934,11 +4932,11 @@ msgstr ""
 "  return iter-&gt;children().empty(); // only allow leaf nodes to be selected\n"
 "}"
 
-#: C/index-in.docbook:2691
+#: C/index-in.docbook:2699
 msgid "Changing the selection"
 msgstr "修改选择"
 
-#: C/index-in.docbook:2692
+#: C/index-in.docbook:2700
 msgid ""
 "To change the selection, specify a <classname>Gtk::TreeModel::iterator</"
 "classname> or <classname>Gtk::TreeModel::Row</classname>, like so:"
@@ -4946,7 +4944,7 @@ msgstr ""
 "要更改选择,请指定<classname>Gtk::TreeModel::iterator</classname>或"
 "<classname>Gtk::TreeModel::Row</classname>,然后如下所示:"
 
-#: C/index-in.docbook:2697
+#: C/index-in.docbook:2705
 #, no-wrap
 msgid ""
 "auto row = m_refModel-&gt;children()[5]; //The sixth row.\n"
@@ -4957,11 +4955,11 @@ msgstr ""
 "if(row)\n"
 "  refTreeSelection-&gt;select(row.get_iter());"
 
-#: C/index-in.docbook:2700
+#: C/index-in.docbook:2708
 msgid "or"
 msgstr "或者"
 
-#: C/index-in.docbook:2703
+#: C/index-in.docbook:2711
 #, no-wrap
 msgid ""
 "auto iter = m_refModel-&gt;children().begin()\n"
@@ -4972,11 +4970,11 @@ msgstr ""
 "if(iter)\n"
 "  refTreeSelection-&gt;select(iter);"
 
-#: C/index-in.docbook:2712
+#: C/index-in.docbook:2720
 msgid "Sorting"
 msgstr "排序"
 
-#: C/index-in.docbook:2713
+#: C/index-in.docbook:2721
 msgid ""
 "The standard tree models (<classname>TreeStore</classname> and "
 "<classname>ListStore</classname>) derive from <classname>TreeSortable</"
@@ -4992,7 +4990,7 @@ msgstr ""
 "排序。或者向<methodname>set_sort_func()</methodname>提供一个回调函数以实现更"
 "复杂的排序算法。"
 
-#: C/index-in.docbook:2717
+#: C/index-in.docbook:2725
 msgid ""
 "<ulink url=\"http://developer.gnome.org/gtkmm/unstable/";
 "classGtk_1_1TreeSortable.html\">TreeSortable Reference</ulink>"
@@ -5000,11 +4998,11 @@ msgstr ""
 "<ulink url=\"http://developer.gnome.org/gtkmm/unstable/";
 "classGtk_1_1TreeSortable.html\">可排序树参考</ulink>"
 
-#: C/index-in.docbook:2720
+#: C/index-in.docbook:2728
 msgid "Sorting by clicking on columns"
 msgstr "单击列进行排序"
 
-#: C/index-in.docbook:2721
+#: C/index-in.docbook:2729
 msgid ""
 "So that a user can click on a <classname>TreeView</classname>'s column "
 "header to sort the <classname>TreeView</classname>'s contents, call "
@@ -5017,7 +5015,7 @@ msgstr ""
 "<methodname>Gtk::TreeView::Column::set_sort_column()</methodname>,以提供此功"
 "能。如下所示:"
 
-#: C/index-in.docbook:2724
+#: C/index-in.docbook:2732
 #, no-wrap
 msgid ""
 "auto pColumn = treeview.get_column(0);\n"
@@ -5028,11 +5026,11 @@ msgstr ""
 "if(pColumn)\n"
 "  pColumn-&gt;set_sort_column(m_columns.m_col_id);"
 
-#: C/index-in.docbook:2730
+#: C/index-in.docbook:2738
 msgid "Independently sorted views of the same model"
 msgstr "对同一模型进行独立排序的视图"
 
-#: C/index-in.docbook:2731
+#: C/index-in.docbook:2739
 msgid ""
 "The <classname>TreeView</classname> already allows you to show the same "
 "<classname>TreeModel</classname> in two <classname>TreeView</classname> "
@@ -5052,7 +5050,7 @@ msgstr ""
 "的将已排序版本。你可以如下所示的将已排序版本模型添加到<classname>TreeView</"
 "classname>:"
 
-#: C/index-in.docbook:2739
+#: C/index-in.docbook:2747
 #, no-wrap
 msgid ""
 "auto sorted_model = Gtk::TreeModelSort::create(model);\n"
@@ -5063,7 +5061,7 @@ msgstr ""
 "sorted_model-&gt;set_sort_column(columns.m_col_name, Gtk::SORT_ASCENDING);\n"
 "treeview.set_model(sorted_model);"
 
-#: C/index-in.docbook:2743
+#: C/index-in.docbook:2751
 msgid ""
 "Note, however, that the TreeView will provide iterators to the sorted model. "
 "You must convert them to iterators to the underlying child model in order to "
@@ -5072,7 +5070,7 @@ msgstr ""
 "请注意,这样做树形视图将会提供已排序模型的迭代器。你必须将其转换为基础的子模"
 "型迭代器以便对这个模型进行操作。例如:"
 
-#: C/index-in.docbook:2745
+#: C/index-in.docbook:2753
 #, no-wrap
 msgid ""
 "void ExampleWindow::on_button_delete()\n"
@@ -5103,7 +5101,7 @@ msgstr ""
 "  }\n"
 "}"
 
-#: C/index-in.docbook:2759
+#: C/index-in.docbook:2767
 msgid ""
 "<ulink url=\"http://developer.gnome.org/gtkmm/unstable/";
 "classGtk_1_1TreeModelSort.html\">TreeModelSort Reference</ulink>"
@@ -5111,12 +5109,12 @@ msgstr ""
 "<ulink url=\"http://developer.gnome.org/gtkmm/unstable/";
 "classGtk_1_1TreeModelSort.html\">树模型排序参考</ulink>"
 
-#: C/index-in.docbook:2765 C/index-in.docbook:2887 C/index-in.docbook:4604
-#: C/index-in.docbook:4757
+#: C/index-in.docbook:2773 C/index-in.docbook:2895 C/index-in.docbook:4611
+#: C/index-in.docbook:4764
 msgid "Drag and Drop"
 msgstr "拖放"
 
-#: C/index-in.docbook:2766
+#: C/index-in.docbook:2774
 msgid ""
 "<classname>Gtk::TreeView</classname> already implements simple drag-and-drop "
 "when used with the <classname>Gtk::ListStore</classname> or <classname>Gtk::"
@@ -5129,11 +5127,11 @@ msgstr ""
 "果有必要,它还允许你使用常规的<link linkend=\"chapter-draganddrop\">拖放</"
 "link>API实现更复杂的拖放行为。"
 
-#: C/index-in.docbook:2775
+#: C/index-in.docbook:2783
 msgid "Reorderable rows"
 msgstr "可重排序的行"
 
-#: C/index-in.docbook:2776
+#: C/index-in.docbook:2784
 msgid ""
 "If you call <methodname>Gtk::TreeView::set_reorderable()</methodname> then "
 "your TreeView's items can be moved within the treeview itself. This is "
@@ -5143,7 +5141,7 @@ msgstr ""
 "视图中移动其本身的项目。<classname>TreeStore</classname>的示例对此进行了演"
 "示。"
 
-#: C/index-in.docbook:2781
+#: C/index-in.docbook:2789
 msgid ""
 "However, this does not allow you any control of which items can be dragged, "
 "and where they can be dropped. If you need that extra control then you might "
@@ -5163,15 +5161,15 @@ msgstr ""
 "TreeModel::Path</literal>并返回<literal>true</literal>或<literal>false</"
 "literal>来允许或禁止拖放。"
 
-#: C/index-in.docbook:2788
+#: C/index-in.docbook:2796
 msgid "This is demonstrated in the drag_and_drop example."
 msgstr "在drag_and_drop示例中对此进行了演示。"
 
-#: C/index-in.docbook:2794 C/index-in.docbook:2909
+#: C/index-in.docbook:2802 C/index-in.docbook:2917
 msgid "Popup Context Menu"
 msgstr "弹出上下文菜单"
 
-#: C/index-in.docbook:2795
+#: C/index-in.docbook:2803
 msgid ""
 "Lots of people need to implement right-click context menus for "
 "<classname>TreeView</classname>'s so we will explain how to do that here to "
@@ -5183,11 +5181,11 @@ msgstr ""
 "们在这里说明如何做到这个以节省你的时间。其与普通的上下文菜单只有一两点不同,"
 "如<link linkend=\"sec-menus-popup\">菜单章节</link>所述。"
 
-#: C/index-in.docbook:2804
+#: C/index-in.docbook:2812
 msgid "Handling <literal>button_press_event</literal>"
 msgstr "处理<literal>button_press_event</literal>"
 
-#: C/index-in.docbook:2805
+#: C/index-in.docbook:2813
 msgid ""
 "To detect a click of the right mouse button, you need to handle the "
 "<literal>button_press_event</literal> signal, and check exactly which button "
@@ -5206,16 +5204,16 @@ msgstr ""
 "<classname>TreeView</classname>的派生类中覆盖默认信号处理函数。你可能还想在执"
 "行任何其他操作之前先调用默认信号处理函数,以便右键时先选择该行。"
 
-#: C/index-in.docbook:2815
+#: C/index-in.docbook:2823
 msgid "This is demonstrated in the Popup Context Menu example."
 msgstr "Popup Context Menu示例中对此进行了演示。"
 
-#: C/index-in.docbook:2820 C/index-in.docbook:3314 C/index-in.docbook:3618
-#: C/index-in.docbook:4867
+#: C/index-in.docbook:2828 C/index-in.docbook:3322 C/index-in.docbook:3626
+#: C/index-in.docbook:4874
 msgid "Examples"
 msgstr "示例"
 
-#: C/index-in.docbook:2822
+#: C/index-in.docbook:2830
 msgid ""
 "Some <classname>TreeView</classname> examples are shown here. There are more "
 "examples in the <ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-";
@@ -5227,7 +5225,7 @@ msgstr ""
 "documentation/tree/master/examples/book/treeview/\">树形视图文件夹</ulink>还"
 "有更多的示例。"
 
-#: C/index-in.docbook:2826
+#: C/index-in.docbook:2834
 msgid ""
 "If neither <classname>ListStore</classname> nor <classname>TreeStore</"
 "classname> is suitable for your application, look at the <ulink url="
@@ -5242,11 +5240,11 @@ msgstr ""
 "模型</ulink>示例。它向你展示了如何实现自己的<classname>TreeModel</classname>"
 "接口"
 
-#: C/index-in.docbook:2832
+#: C/index-in.docbook:2840
 msgid "ListStore"
 msgstr "列表储存(ListStore)"
 
-#: C/index-in.docbook:2833
+#: C/index-in.docbook:2841
 msgid ""
 "This example has a <classname>Gtk::TreeView</classname> widget, with a "
 "<classname>Gtk::ListStore</classname> model."
@@ -5254,7 +5252,7 @@ msgstr ""
 "这个例子有一个使用<classname>Gtk::ListStore</classname>模型的<classname>Gtk::"
 "TreeView</classname>部件。"
 
-#: C/index-in.docbook:2845
+#: C/index-in.docbook:2853
 msgid ""
 "<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
 "examples/book/treeview/list/\">Source Code</ulink>"
@@ -5262,11 +5260,11 @@ msgstr ""
 "<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
 "examples/book/treeview/list/\">源代码</ulink>"
 
-#: C/index-in.docbook:2849
+#: C/index-in.docbook:2857
 msgid "TreeStore"
 msgstr "树储存(TreeStore)"
 
-#: C/index-in.docbook:2851
+#: C/index-in.docbook:2859
 msgid ""
 "This example is very similar to the <classname>ListStore</classname> "
 "example, but uses a <classname>Gtk::TreeStore</classname> model instead, and "
@@ -5275,7 +5273,7 @@ msgstr ""
 "这个示例和<classname>ListStore</classname>示例非常的相似,但是使用的是"
 "<classname>Gtk::TreeStore</classname>模型并且添加了子行。"
 
-#: C/index-in.docbook:2864
+#: C/index-in.docbook:2872
 msgid ""
 "<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
 "examples/book/treeview/tree/\">Source Code</ulink>"
@@ -5283,7 +5281,7 @@ msgstr ""
 "<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
 "examples/book/treeview/tree/\">源代码</ulink>"
 
-#: C/index-in.docbook:2870
+#: C/index-in.docbook:2878
 msgid ""
 "This example is identical to the <classname>ListStore</classname> example, "
 "but it uses <methodname>TreeView::append_column_editable()</methodname> "
@@ -5293,11 +5291,11 @@ msgstr ""
 "<methodname>TreeView::append_column_editable()</methodname>代替"
 "<methodname>TreeView::append_column()</methodname>。"
 
-#: C/index-in.docbook:2877
+#: C/index-in.docbook:2885
 msgid "TreeView - Editable Cells"
 msgstr "树形视图 - 可编辑单元格"
 
-#: C/index-in.docbook:2883
+#: C/index-in.docbook:2891
 msgid ""
 "<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
 "examples/book/treeview/editable_cells/\">Source Code</ulink>"
@@ -5305,7 +5303,7 @@ msgstr ""
 "<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
 "examples/book/treeview/editable_cells/\">源代码</ulink>"
 
-#: C/index-in.docbook:2889
+#: C/index-in.docbook:2897
 msgid ""
 "This example is much like the <classname>TreeStore</classname> example, but "
 "has 2 extra columns to indicate whether the row can be dragged, and whether "
@@ -5319,11 +5317,11 @@ msgstr ""
 "classname>来覆盖虚函数,如<link linkend=\"sec-treeview-draganddrop\">拖放树视"
 "图</link>小节所述。"
 
-#: C/index-in.docbook:2899
+#: C/index-in.docbook:2907
 msgid "TreeView - Drag And Drop"
 msgstr "树形视图 - 拖放"
 
-#: C/index-in.docbook:2905
+#: C/index-in.docbook:2913
 msgid ""
 "<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
 "examples/book/treeview/drag_and_drop/\">Source Code</ulink>"
@@ -5331,7 +5329,7 @@ msgstr ""
 "<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
 "examples/book/treeview/drag_and_drop/\">源代码</ulink>"
 
-#: C/index-in.docbook:2911
+#: C/index-in.docbook:2919
 msgid ""
 "This example is much like the <classname>ListStore</classname> example, but "
 "derives a custom <classname>TreeView</classname> in order to override the "
@@ -5344,11 +5342,11 @@ msgstr ""
 "literal>,并将树模型代码封装在派生类代码中,请参阅<link linkend=\"sec-"
 "treeview-contextmenu\">树形视图弹出上下文菜单</link>小节。"
 
-#: C/index-in.docbook:2921
+#: C/index-in.docbook:2929
 msgid "TreeView - Popup Context Menu"
 msgstr "树形视图 - 弹出上下文菜单"
 
-#: C/index-in.docbook:2927
+#: C/index-in.docbook:2935
 msgid ""
 "<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
 "examples/book/treeview/popup/\">Source Code</ulink>"
@@ -5356,11 +5354,11 @@ msgstr ""
 "<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
 "examples/book/treeview/popup/\">源代码</ulink>"
 
-#: C/index-in.docbook:2934
+#: C/index-in.docbook:2942
 msgid "Combo Boxes"
 msgstr "组合框(Combo Boxes)"
 
-#: C/index-in.docbook:2936
+#: C/index-in.docbook:2944
 msgid ""
 "The <classname>ComboBox</classname> widget offers a list (or tree) of "
 "choices in a dropdown menu. If appropriate, it can show extra information "
@@ -5375,7 +5373,7 @@ msgstr ""
 "<classname>ComboBox</classname>部件通常将显示用户的可选项,但是它可以有一个"
 "<classname>Entry</classname>以允许用户在没有合适的选项的时候输入任意文本。"
 
-#: C/index-in.docbook:2939
+#: C/index-in.docbook:2947
 msgid ""
 "The list is provided via a <classname>TreeModel</classname>, and columns "
 "from this model are added to the ComboBox's view with the "
@@ -5389,7 +5387,7 @@ msgstr ""
 "供了灵活性和编译时的类型安全,在不需要灵活性的情况下,"
 "<classname>ComboBoxText</classname>类提供了更简单的基于文本的特化支持。"
 
-#: C/index-in.docbook:2942
+#: C/index-in.docbook:2950
 msgid ""
 "<ulink url=\"http://developer.gnome.org/gtkmm/unstable/classGtk_1_1ComboBox.";
 "html\">Reference</ulink>"
@@ -5397,11 +5395,11 @@ msgstr ""
 "<ulink url=\"http://developer.gnome.org/gtkmm/unstable/classGtk_1_1ComboBox.";
 "html\">参考</ulink>"
 
-#: C/index-in.docbook:2945
+#: C/index-in.docbook:2953
 msgid "The model"
 msgstr "模型"
 
-#: C/index-in.docbook:2946
+#: C/index-in.docbook:2954
 msgid ""
 "The model for a ComboBox can be defined and filled exactly as for a "
 "<classname>TreeView</classname>. For instance, you might derive a ComboBox "
@@ -5410,7 +5408,7 @@ msgstr ""
 "可以像<classname>TreeView</classname>一样定义和填充组合框的模型。你可以与如下"
 "所示的一样派生具有一个整数行和一个文本行的组合框类:"
 
-#: C/index-in.docbook:2948
+#: C/index-in.docbook:2956
 #, no-wrap
 msgid ""
 "class ModelColumns : public Gtk::TreeModel::ColumnRecord\n"
@@ -5437,7 +5435,7 @@ msgstr ""
 "\n"
 "ModelColumns m_columns;"
 
-#: C/index-in.docbook:2960
+#: C/index-in.docbook:2968
 msgid ""
 "After appending rows to this model, you should provide the model to the "
 "<classname>ComboBox</classname> with the <methodname>set_model()</"
@@ -5460,11 +5458,11 @@ msgstr ""
 "methodname>或<methodname>set_cell_data_func()</methodname>指定具体映射到哪"
 "行。请注意这些方法在<classname>CellLayout</classname>基类中。"
 
-#: C/index-in.docbook:2964
+#: C/index-in.docbook:2972
 msgid "The chosen item"
 msgstr "所选项"
 
-#: C/index-in.docbook:2965
+#: C/index-in.docbook:2973
 msgid ""
 "To discover what item, if any, the user has chosen from the ComboBox, call "
 "<methodname>ComboBox::get_active()</methodname>. This returns a "
@@ -5480,7 +5478,7 @@ msgstr ""
 "以在组合框中只显示人类可读的描述,然后你可以读取模型中储存于该行的整数ID值"
 "(于并未被显示的列)。例如:"
 
-#: C/index-in.docbook:2967
+#: C/index-in.docbook:2975
 #, no-wrap
 msgid ""
 "Gtk::TreeModel::iterator iter = m_Combo.get_active();\n"
@@ -5509,11 +5507,11 @@ msgstr ""
 "else\n"
 "  set_nothing_chosen(); //Your own function."
 
-#: C/index-in.docbook:2982 C/index-in.docbook:3038
+#: C/index-in.docbook:2990 C/index-in.docbook:3046
 msgid "Responding to changes"
 msgstr "响应变更"
 
-#: C/index-in.docbook:2983
+#: C/index-in.docbook:2991
 msgid ""
 "You might need to react to every change of selection in the ComboBox, for "
 "instance to update other widgets. To do so, you should handle the "
@@ -5522,7 +5520,7 @@ msgstr ""
 "你可能需要对组合框中每个选择的变更进行响应,例如更新其他的部件。为此你应该处"
 "理<literal>changed</literal>。例如:"
 
-#: C/index-in.docbook:2986
+#: C/index-in.docbook:2994
 #, no-wrap
 msgid ""
 "m_combo.signal_changed().connect( sigc::mem_fun(*this,\n"
@@ -5531,15 +5529,15 @@ msgstr ""
 "m_combo.signal_changed().connect( sigc::mem_fun(*this,\n"
 "      &amp;ExampleWindow::on_combo_changed) );"
 
-#: C/index-in.docbook:2990 C/index-in.docbook:3071
+#: C/index-in.docbook:2998 C/index-in.docbook:3079
 msgid "Full Example"
 msgstr "完整例子"
 
-#: C/index-in.docbook:2993
+#: C/index-in.docbook:3001
 msgid "ComboBox"
 msgstr "组合框(ComboBox)"
 
-#: C/index-in.docbook:2999
+#: C/index-in.docbook:3007
 msgid ""
 "<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
 "examples/book/combobox/complex\">Source Code</ulink>"
@@ -5547,15 +5545,15 @@ msgstr ""
 "<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
 "examples/book/combobox/complex\">源代码</ulink>"
 
-#: C/index-in.docbook:3003 C/index-in.docbook:3084
+#: C/index-in.docbook:3011 C/index-in.docbook:3092
 msgid "Simple Text Example"
 msgstr "简单文字示例"
 
-#: C/index-in.docbook:3006
+#: C/index-in.docbook:3014
 msgid "ComboBoxText"
 msgstr "文本组合框(ComboBoxText)"
 
-#: C/index-in.docbook:3012
+#: C/index-in.docbook:3020
 msgid ""
 "<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
 "examples/book/combobox/text\">Source Code</ulink>"
@@ -5563,11 +5561,11 @@ msgstr ""
 "<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
 "examples/book/combobox/text\">源代码</ulink>"
 
-#: C/index-in.docbook:3017
+#: C/index-in.docbook:3025
 msgid "ComboBox with an Entry"
 msgstr "带有条目的组合框"
 
-#: C/index-in.docbook:3019
+#: C/index-in.docbook:3027
 msgid ""
 "A <classname>ComboBox</classname> may contain an <classname>Entry</"
 "classname> widget for entering of arbitrary text, by specifying "
@@ -5578,39 +5576,38 @@ msgstr ""
 "参数为<literal>true</literal>,可以令其包含一个<classname>Entry</classname>部"
 "件用以输入任意文本。"
 
-#: C/index-in.docbook:3022
+#: C/index-in.docbook:3030
 msgid "The text column"
 msgstr "文本列"
 
-#: C/index-in.docbook:3024
-#, no-wrap
-msgid "m_combo.set_entry_text_column(m_columns.m_col_name);"
-msgstr "m_combo.set_entry_text_column(m_columns.m_col_name);"
-
-#: C/index-in.docbook:3023
+#: C/index-in.docbook:3031
 msgid ""
 "So that the <classname>Entry</classname> can interact with the drop-down "
 "list of choices, you must specify which of your model columns is the text "
-"column, with <methodname>set_entry_text_column()</methodname>. For instance: "
-"<_:programlisting-1/>"
+"column, with <methodname>set_entry_text_column()</methodname>. For instance:"
 msgstr ""
 "为了使<classname>Entry</classname>可以与下拉列表的选项进行交互,你必须使用"
 "<methodname>set_entry_text_column()</methodname>指定哪些模型列是文本列。例"
-"如:<_:programlisting-1/>"
+"如:"
 
-#: C/index-in.docbook:3026
-msgid ""
-"When you select a choice from the drop-down menu, the value from this column "
+#: C/index-in.docbook:3033
+#, no-wrap
+msgid "m_combo.set_entry_text_column(m_columns.m_col_name);"
+msgstr "m_combo.set_entry_text_column(m_columns.m_col_name);"
+
+#: C/index-in.docbook:3034
+msgid ""
+"When you select a choice from the drop-down menu, the value from this column "
 "will be placed in the <classname>Entry</classname>."
 msgstr ""
 "当你从下拉菜单中选择一个选项的时候,该列的值将被放于<classname>Entry</"
 "classname>中。"
 
-#: C/index-in.docbook:3032
+#: C/index-in.docbook:3040
 msgid "The entry"
 msgstr "条目"
 
-#: C/index-in.docbook:3033
+#: C/index-in.docbook:3041
 msgid ""
 "Because the user may enter arbitrary text, an active model row isn't enough "
 "to tell us what text the user has entered. Therefore, you should retrieve "
@@ -5623,7 +5620,7 @@ msgstr ""
 "中的<classname>Entry</classname>部件并在其上调用<methodname>get_text()</"
 "methodname>。"
 
-#: C/index-in.docbook:3047
+#: C/index-in.docbook:3055
 #, no-wrap
 msgid ""
 "auto entry = m_Combo.get_entry();\n"
@@ -5654,7 +5651,7 @@ msgstr ""
 "    &amp;ExampleWindow::on_entry_focus_out_event) );\n"
 "}"
 
-#: C/index-in.docbook:3039
+#: C/index-in.docbook:3047
 msgid ""
 "When the user enters arbitrary text, it may not be enough to connect to the "
 "<literal>changed</literal> signal, which is emitted for every typed "
@@ -5679,7 +5676,7 @@ msgstr ""
 "<literal>changed</literal>信号,你可以连接它们中的任意一个。但是在这里只有"
 "<classname>Entry</classname>的<literal>focus_out_event</literal>信号才有用。"
 
-#: C/index-in.docbook:3065
+#: C/index-in.docbook:3073
 msgid ""
 "X events are described in more detail in the <link linkend=\"sec-"
 "xeventsignals\">X Event signals</link> section in the appendix."
@@ -5687,11 +5684,11 @@ msgstr ""
 "X事件在附录的<link linkend=\"sec-xeventsignals\">X事件信号</link>小节有更详细"
 "的描述。"
 
-#: C/index-in.docbook:3074
+#: C/index-in.docbook:3082
 msgid "ComboBox with Entry"
 msgstr "带条目的组合框"
 
-#: C/index-in.docbook:3080
+#: C/index-in.docbook:3088
 msgid ""
 "<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
 "examples/book/combobox/entry_complex\">Source Code</ulink>"
@@ -5699,11 +5696,11 @@ msgstr ""
 "<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
 "examples/book/combobox/entry_complex\">源代码</ulink>"
 
-#: C/index-in.docbook:3087
+#: C/index-in.docbook:3095
 msgid "ComboBoxText with Entry"
 msgstr "带条目的文本组合框"
 
-#: C/index-in.docbook:3093
+#: C/index-in.docbook:3101
 msgid ""
 "<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
 "examples/book/combobox/entry_text\">Source Code</ulink>"
@@ -5711,11 +5708,11 @@ msgstr ""
 "<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
 "examples/book/combobox/entry_text\">源代码</ulink>"
 
-#: C/index-in.docbook:3106 C/index-in.docbook:3319
+#: C/index-in.docbook:3114 C/index-in.docbook:3327
 msgid "TextView"
 msgstr "文本视图(TextView)"
 
-#: C/index-in.docbook:3107
+#: C/index-in.docbook:3115
 msgid ""
 "The <classname>TextView</classname> widget can be used to display and edit "
 "large amounts of formatted text. Like the <classname>TreeView</classname>, "
@@ -5726,11 +5723,11 @@ msgstr ""
 "<classname>TreeView</classname>一样,它具有模型/视图设计。"
 "<classname>TextBuffer</classname>是它预期的模型。"
 
-#: C/index-in.docbook:3115
+#: C/index-in.docbook:3123
 msgid "The Buffer"
 msgstr "缓冲区"
 
-#: C/index-in.docbook:3116
+#: C/index-in.docbook:3124
 msgid ""
 "<classname>Gtk::TextBuffer</classname> is a model containing the data for "
 "the <classname>Gtk::TextView</classname>, like the <classname>Gtk::"
@@ -5748,7 +5745,7 @@ msgstr ""
 "方式显示文本缓冲区。你也可以维护多个<classname>Gtk::TextBuffer</classname>并"
 "让同一个<classname>Gtk::TextView</classname>部件于不同时候分别显示它们。"
 
-#: C/index-in.docbook:3126
+#: C/index-in.docbook:3134
 msgid ""
 "The <classname>TextView</classname> creates its own default "
 "<classname>TextBuffer</classname>, which you can access via the "
@@ -5758,7 +5755,7 @@ msgstr ""
 "<classname>TextBuffer</classname>,你可以通过<methodname>get_buffer()</"
 "methodname>方法访问这个缓冲区。"
 
-#: C/index-in.docbook:3132
+#: C/index-in.docbook:3140
 msgid ""
 "<ulink url=\"http://developer.gnome.org/gtkmm/unstable/";
 "classGtk_1_1TextBuffer.html\">Reference</ulink>"
@@ -5766,11 +5763,11 @@ msgstr ""
 "<ulink url=\"http://developer.gnome.org/gtkmm/unstable/";
 "classGtk_1_1TextBuffer.html\">参考</ulink>"
 
-#: C/index-in.docbook:3135
+#: C/index-in.docbook:3143
 msgid "Iterators"
 msgstr "迭代器"
 
-#: C/index-in.docbook:3136
+#: C/index-in.docbook:3144
 msgid ""
 "A <classname>Gtk::TextBuffer::iterator</classname> and a <classname>Gtk::"
 "TextBuffer::const_iterator</classname> represent a position between two "
@@ -5786,7 +5783,7 @@ msgstr ""
 "效。因此,迭代器不能用于保存越过缓冲区被修改部分的位置。如果想保存位置,请使"
 "用<classname>Gtk::TextBuffer::Mark</classname>。"
 
-#: C/index-in.docbook:3143
+#: C/index-in.docbook:3151
 msgid ""
 "<ulink url=\"http://developer.gnome.org/gtkmm/unstable/classGtk_1_1TextIter.";
 "html\">Reference</ulink>"
@@ -5794,15 +5791,15 @@ msgstr ""
 "<ulink url=\"http://developer.gnome.org/gtkmm/unstable/classGtk_1_1TextIter.";
 "html\">参考</ulink>"
 
-#: C/index-in.docbook:3147
+#: C/index-in.docbook:3155
 msgid "Tags and Formatting"
 msgstr "标签和格式"
 
-#: C/index-in.docbook:3150
+#: C/index-in.docbook:3158
 msgid "Tags"
 msgstr "标签(Tags)"
 
-#: C/index-in.docbook:3151
+#: C/index-in.docbook:3159
 msgid ""
 "To specify that some text in the buffer should have specific formatting, you "
 "must define a tag to hold that formatting information, and then apply that "
@@ -5812,7 +5809,7 @@ msgstr ""
 "要指定缓冲区中的一些文本具有特定的格式,你需要定义一个标签来保存格式信息,并"
 "将该标签应用于文本区域。例如,定义标签及其属性:"
 
-#: C/index-in.docbook:3154
+#: C/index-in.docbook:3162
 #, no-wrap
 msgid ""
 "auto refTagMatch = Gtk::TextBuffer::Tag::create();\n"
@@ -5821,7 +5818,7 @@ msgstr ""
 "auto refTagMatch = Gtk::TextBuffer::Tag::create();\n"
 "refTagMatch-&gt;property_background() = \"orange\";"
 
-#: C/index-in.docbook:3156
+#: C/index-in.docbook:3164
 msgid ""
 "You can specify a name for the <classname>Tag</classname> when using the "
 "<methodname>create()</methodname> method, but it is not necessary."
@@ -5829,11 +5826,11 @@ msgstr ""
 "你可以在使用<classname>Tag</classname>的<methodname>create()</methodname>方法"
 "时为其指定一个名称,但这不是必须的。"
 
-#: C/index-in.docbook:3161
+#: C/index-in.docbook:3169
 msgid "The <classname>Tag</classname> class has many other properties."
 msgstr "<classname>Tag</classname>类还有许多其他的特性。"
 
-#: C/index-in.docbook:3165
+#: C/index-in.docbook:3173
 msgid ""
 "<ulink url=\"http://developer.gnome.org/gtkmm/unstable/classGtk_1_1TextTag.";
 "html\">Reference</ulink>"
@@ -5841,11 +5838,11 @@ msgstr ""
 "<ulink url=\"http://developer.gnome.org/gtkmm/unstable/classGtk_1_1TextTag.";
 "html\">参考</ulink>"
 
-#: C/index-in.docbook:3170
+#: C/index-in.docbook:3178
 msgid "TagTable"
 msgstr "标签表(TagTable)"
 
-#: C/index-in.docbook:3172
+#: C/index-in.docbook:3180
 msgid ""
 "Each <classname>Gtk::TextBuffer</classname> uses a <classname>Gtk::"
 "TextBuffer::TagTable</classname>, which contains the <classname>Tag</"
@@ -5860,7 +5857,7 @@ msgstr ""
 "<classname>TagTable</classname>。当你创建<classname>Tag</classname>的时候,你"
 "应该将其加入<classname>TagTable</classname>。例如:"
 
-#: C/index-in.docbook:3180
+#: C/index-in.docbook:3188
 #, no-wrap
 msgid ""
 "auto refTagTable = Gtk::TextBuffer::TagTable::create();\n"
@@ -5875,7 +5872,7 @@ msgstr ""
 "//for use after creation of the buffer.\n"
 "auto refBuffer = Gtk::TextBuffer::create(refTagTable);"
 
-#: C/index-in.docbook:3186
+#: C/index-in.docbook:3194
 msgid ""
 "You can also use <methodname>get_tag_table()</methodname> to get, and maybe "
 "modify, the <classname>TextBuffer</classname>'s default <classname>TagTable</"
@@ -5885,7 +5882,7 @@ msgstr ""
 "<classname>TextBuffer</classname>的默认<classname>TagTable</classname>,而不"
 "是显示创建一个。"
 
-#: C/index-in.docbook:3192
+#: C/index-in.docbook:3200
 msgid ""
 "<ulink url=\"http://developer.gnome.org/gtkmm/unstable/";
 "classGtk_1_1TextTagTable.html\">Reference</ulink>"
@@ -5893,11 +5890,11 @@ msgstr ""
 "<ulink url=\"http://developer.gnome.org/gtkmm/unstable/";
 "classGtk_1_1TextTagTable.html\">参考</ulink>"
 
-#: C/index-in.docbook:3197
+#: C/index-in.docbook:3205
 msgid "Applying Tags"
 msgstr "应用标签"
 
-#: C/index-in.docbook:3198
+#: C/index-in.docbook:3206
 msgid ""
 "If you have created a <classname>Tag</classname> and added it to the "
 "<classname>TagTable</classname>, you may apply that tag to part of the "
@@ -5910,23 +5907,21 @@ msgstr ""
 "用该格式显示某些文本。你可以通过使用<classname>Gtk::TextBuffer::iterator</"
 "classname>指示文本的开始和结束范围。例如:"
 
-#: C/index-in.docbook:3205
+#: C/index-in.docbook:3213
 #, no-wrap
 msgid "refBuffer-&gt;apply_tag(refTagMatch, iterRangeStart, iterRangeStop);"
 msgstr "refBuffer-&gt;apply_tag(refTagMatch, iterRangeStart, iterRangeStop);"
 
-#: C/index-in.docbook:3208
+#: C/index-in.docbook:3214
+msgid "Or you could specify the tag when first inserting the text:"
+msgstr "或者你可以在首次插入文本的时候指定标签:"
+
+#: C/index-in.docbook:3217
 #, no-wrap
 msgid "refBuffer-&gt;insert_with_tag(iter, \"Some text\", refTagMatch);"
 msgstr "refBuffer-&gt;insert_with_tag(iter, \"Some text\", refTagMatch);"
 
-#: C/index-in.docbook:3206
-msgid ""
-"Or you could specify the tag when first inserting the text: <_:"
-"programlisting-1/>"
-msgstr "或者你可以在首次插入文本的时候指定标签:<_:programlisting-1/>"
-
-#: C/index-in.docbook:3211
+#: C/index-in.docbook:3219
 msgid ""
 "You can apply more than one <classname>Tag</classname> to the same text, by "
 "using <methodname>apply_tag()</methodname> more than once, or by using "
@@ -5939,11 +5934,11 @@ msgstr ""
 "应用于同一文本。<classname>Tag</classname>可能会为同一属性指定不同的值,但你"
 "可以使用<methodname>Tag::set_priority()</methodname>解决这些冲突。"
 
-#: C/index-in.docbook:3223
+#: C/index-in.docbook:3231
 msgid "Marks"
 msgstr "标记(Marks)"
 
-#: C/index-in.docbook:3224
+#: C/index-in.docbook:3232
 msgid ""
 "<classname>TextBuffer</classname> iterators are generally invalidated when "
 "the text changes, but you can use a <classname>Gtk::TextBuffer::Mark</"
@@ -5952,12 +5947,12 @@ msgstr ""
 "当文本发生更改的时候<classname>TextBuffer</classname>迭代器通常会失效,但是你"
 "可以使用<classname>Gtk::TextBuffer::Mark</classname>记住位置,例如:"
 
-#: C/index-in.docbook:3229
+#: C/index-in.docbook:3237
 #, no-wrap
 msgid "auto refMark = refBuffer-&gt;create_mark(iter);"
 msgstr "auto refMark = refBuffer-&gt;create_mark(iter);"
 
-#: C/index-in.docbook:3231
+#: C/index-in.docbook:3239
 msgid ""
 "You can then use the <methodname>get_iter()</methodname> method later to "
 "create an iterator for the <classname>Mark</classname>'s new position."
@@ -5965,7 +5960,7 @@ msgstr ""
 "你可以在之后使用<methodname>get_iter()</methodname>方法为<classname>Mark</"
 "classname>的新位置创建迭代器。"
 
-#: C/index-in.docbook:3236
+#: C/index-in.docbook:3244
 msgid ""
 "There are two built-in <classname>Mark</classname>s - <literal>insert</"
 "literal> and <literal>selection_bound</literal>, which you can access with "
@@ -5977,7 +5972,7 @@ msgstr ""
 "classname>的<methodname>get_insert()</methodname>和"
 "<methodname>get_selection_bound()</methodname>方法访问它们。"
 
-#: C/index-in.docbook:3243
+#: C/index-in.docbook:3251
 msgid ""
 "<ulink url=\"http://developer.gnome.org/gtkmm/unstable/classGtk_1_1TextMark.";
 "html\">Reference</ulink>"
@@ -5985,7 +5980,7 @@ msgstr ""
 "<ulink url=\"http://developer.gnome.org/gtkmm/unstable/classGtk_1_1TextMark.";
 "html\">参考</ulink>"
 
-#: C/index-in.docbook:3249
+#: C/index-in.docbook:3257
 msgid ""
 "As mentioned above, each <classname>TextView</classname> has a "
 "<classname>TextBuffer</classname>, and one or more <classname>TextView</"
@@ -5995,7 +5990,7 @@ msgstr ""
 "classname>,并且多个<classname>TextView</classname>可以共享同一个"
 "<classname>TextBuffer</classname>。"
 
-#: C/index-in.docbook:3256
+#: C/index-in.docbook:3264
 msgid ""
 "Like the <classname>TreeView</classname>, you should probably put your "
 "<classname>TextView</classname> inside a <classname>ScrolledWindow</"
@@ -6006,7 +6001,7 @@ msgstr ""
 "classname>放入<classname>ScrolledWindow</classname>中以允许用户使用滚动条查看"
 "并在整个文本区域中移动。"
 
-#: C/index-in.docbook:3263
+#: C/index-in.docbook:3271
 msgid ""
 "<ulink url=\"http://developer.gnome.org/gtkmm/unstable/classGtk_1_1TextView.";
 "html\">Reference</ulink>"
@@ -6014,11 +6009,11 @@ msgstr ""
 "<ulink url=\"http://developer.gnome.org/gtkmm/unstable/classGtk_1_1TextView.";
 "html\">参考</ulink>"
 
-#: C/index-in.docbook:3266
+#: C/index-in.docbook:3274
 msgid "Default formatting"
 msgstr "默认格式"
 
-#: C/index-in.docbook:3267
+#: C/index-in.docbook:3275
 msgid ""
 "<classname>TextView</classname> has various methods which allow you to "
 "change the presentation of the buffer for this particular view. Some of "
@@ -6033,11 +6028,11 @@ msgstr ""
 "<methodname>set_right_margin()</methodname>、<methodname>set_indent()</"
 "methodname>等。"
 
-#: C/index-in.docbook:3278
+#: C/index-in.docbook:3286
 msgid "Scrolling"
 msgstr "滚动"
 
-#: C/index-in.docbook:3279
+#: C/index-in.docbook:3287
 msgid ""
 "<classname>Gtk::TextView</classname> has various <methodname>scroll_to()</"
 "methodname> methods. These allow you to ensure that a particular part of the "
@@ -6049,11 +6044,11 @@ msgstr ""
 "methodname>方法。这些可以确保你能看到缓冲区中的特定部分。例如你的应用程序可能"
 "会使用<methodname>Gtk::TextView::scroll_to()</methodname>方法显示找到的文本。"
 
-#: C/index-in.docbook:3294
+#: C/index-in.docbook:3302
 msgid "Widgets and ChildAnchors"
 msgstr "部件和子锚(ChildAnchors)"
 
-#: C/index-in.docbook:3295
+#: C/index-in.docbook:3303
 msgid ""
 "You can embed widgets, such as <classname>Gtk::Button</classname>s, in the "
 "text. Each such child widget needs a <classname>ChildAnchor</classname>. "
@@ -6066,12 +6061,12 @@ msgstr ""
 "如,使用<methodname>Gtk::TextBuffer::create_child_anchor()</methodname>于特定"
 "位置创建子锚:"
 
-#: C/index-in.docbook:3302
+#: C/index-in.docbook:3310
 #, no-wrap
 msgid "auto refAnchor = refBuffer-&gt;create_child_anchor(iter);"
 msgstr "auto refAnchor = refBuffer-&gt;create_child_anchor(iter);"
 
-#: C/index-in.docbook:3304
+#: C/index-in.docbook:3312
 msgid ""
 "Then, to add a widget at that position, use <methodname>Gtk::TextView::"
 "add_child_at_anchor()</methodname>:"
@@ -6079,12 +6074,12 @@ msgstr ""
 "然后使用<methodname>Gtk::TextView::add_child_at_anchor()</methodname>将部件添"
 "加到该位置:"
 
-#: C/index-in.docbook:3308
+#: C/index-in.docbook:3316
 #, no-wrap
 msgid "m_TextView.add_child_at_anchor(m_Button, refAnchor);"
 msgstr "m_TextView.add_child_at_anchor(m_Button, refAnchor);"
 
-#: C/index-in.docbook:3310
+#: C/index-in.docbook:3318
 msgid ""
 "<ulink url=\"http://developer.gnome.org/gtkmm/unstable/";
 "classGtk_1_1TextChildAnchor.html\">Reference</ulink>"
@@ -6092,7 +6087,7 @@ msgstr ""
 "<ulink url=\"http://developer.gnome.org/gtkmm/unstable/";
 "classGtk_1_1TextChildAnchor.html\">参考</ulink>"
 
-#: C/index-in.docbook:3325
+#: C/index-in.docbook:3333
 msgid ""
 "<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
 "examples/book/textview/\">Source Code</ulink>"
@@ -6100,11 +6095,11 @@ msgstr ""
 "<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
 "examples/book/textview/\">源代码</ulink>"
 
-#: C/index-in.docbook:3334
+#: C/index-in.docbook:3342
 msgid "Menus and Toolbars"
 msgstr "菜单和工具栏"
 
-#: C/index-in.docbook:3336
+#: C/index-in.docbook:3344
 msgid ""
 "There are specific APIs for menus and toolbars, but you should usually deal "
 "with them together, creating <classname>Gio::SimpleAction</classname>s that "
@@ -6119,7 +6114,7 @@ msgstr ""
 "被激活而不需要分别响应菜单和工具栏。你可以通过动作启用或者禁用菜单和工具栏"
 "项。<classname>Gtk::Builder</classname>可以创建菜单和工具栏。"
 
-#: C/index-in.docbook:3344
+#: C/index-in.docbook:3352
 msgid ""
 "This involves the use of the <classname>Gio::SimpleActionGroup</classname>, "
 "<classname>Gio::SimpleAction</classname> and <classname>Gtk::Builder</"
@@ -6132,11 +6127,11 @@ msgstr ""
 "这些类都需要通过返回<classname>RefPtr</classname>的<methodname>create()</"
 "methodname>方法进行实例化。"
 
-#: C/index-in.docbook:3352
+#: C/index-in.docbook:3360
 msgid "Actions"
 msgstr "动作(Actions)"
 
-#: C/index-in.docbook:3353
+#: C/index-in.docbook:3361
 msgid ""
 "First create the <classname>Gio::SimpleAction</classname>s and add them to a "
 "<classname>Gio::SimpleActionGroup</classname>, with <methodname>Gio::"
@@ -6151,7 +6146,7 @@ msgstr ""
 "<classname>Gio::SimpleActionGroup</classname>的基类。)。然后将动作组使用"
 "<methodname>Gtk::Widget::insert_action_group()</methodname>加入到你的窗口中。"
 
-#: C/index-in.docbook:3361
+#: C/index-in.docbook:3369
 msgid ""
 "The arguments to <methodname>add_action()</methodname> specify the action's "
 "name, which is used in the menu items and toolbar buttons. You can also "
@@ -6163,11 +6158,11 @@ msgstr ""
 "具栏按钮使用。你还可以在调用<methodname>add_action()</methodname>时指定信号处"
 "理函数。在菜单项或工具栏按钮被激活的时候此信号处理函数被调用。"
 
-#: C/index-in.docbook:3369 C/index-in.docbook:3495
+#: C/index-in.docbook:3377 C/index-in.docbook:3503
 msgid "For instance:"
 msgstr "例如:"
 
-#: C/index-in.docbook:3371
+#: C/index-in.docbook:3379
 #, no-wrap
 msgid ""
 "\n"
@@ -6188,7 +6183,7 @@ msgstr ""
 "\n"
 "insert_action_group(\"example\", m_refActionGroup);\n"
 
-#: C/index-in.docbook:3381
+#: C/index-in.docbook:3389
 msgid ""
 "If you use an <classname>Gtk::ApplicationWindow</classname>, you don't have "
 "to create your own action group. <classname>Gio::ActionGroup</classname> and "
@@ -6199,11 +6194,11 @@ msgstr ""
 "作组。因为<classname>Gio::ActionGroup</classname>和<classname>Gio::"
 "ActionMap</classname>是<classname>Gtk::ApplicationWindow</classname>的基类。"
 
-#: C/index-in.docbook:3392
+#: C/index-in.docbook:3400
 msgid "Menubar and Toolbar"
 msgstr "菜单和工具栏"
 
-#: C/index-in.docbook:3393
+#: C/index-in.docbook:3401
 msgid ""
 "Next you should create a <classname>Gtk::Builder</classname>. At this point "
 "is also a good idea to tell the application to respond to keyboard "
@@ -6214,11 +6209,12 @@ msgstr ""
 "<methodname>Gtk::Application::set_accel_for_action()</methodname>告诉应用程序"
 "响应键盘快捷键也是一个好主意。"
 
-#: C/index-in.docbook:3399
+#: C/index-in.docbook:3407 C/index-in.docbook:5053 C/index-in.docbook:5118
+#: C/index-in.docbook:10564
 msgid "For instance,"
 msgstr "例如:"
 
-#: C/index-in.docbook:3401
+#: C/index-in.docbook:3409
 #, no-wrap
 msgid ""
 "\n"
@@ -6237,7 +6233,7 @@ msgstr ""
 "app-&gt;set_accel_for_action(\"example.copy\", \"&lt;Primary&gt;c\");\n"
 "app-&gt;set_accel_for_action(\"example.paste\", \"&lt;Primary&gt;v\");\n"
 
-#: C/index-in.docbook:3409
+#: C/index-in.docbook:3417
 msgid ""
 "If your main window is derived from <classname>ApplicationWindow</classname> "
 "and you instantiate your menubar with <methodname>Gtk::Application::"
@@ -6250,7 +6246,7 @@ msgstr ""
 "则你不需要调用<methodname>set_accel_for_action()</methodname>。有关示例参见:"
 "<link linkend=\"menu-example-main\">应用程序菜单和主菜单示例</link>。"
 
-#: C/index-in.docbook:3417
+#: C/index-in.docbook:3425
 msgid ""
 "Then, you can define the actual visible layout of the menus and toolbars, "
 "and add the UI layout to the <classname>Builder</classname>. This \"ui string"
@@ -6261,7 +6257,7 @@ msgstr ""
 "<classname>Builder</classname>。这个\"UI字符串\"使用XML格式,你应该在其中使用"
 "你已经创建的动作的名称。例如:"
 
-#: C/index-in.docbook:3423
+#: C/index-in.docbook:3431
 #, no-wrap
 msgid ""
 "\n"
@@ -6344,7 +6340,7 @@ msgstr ""
 "m_refBuilder-&gt;add_from_string(ui_info);\n"
 "m_refBuilder-&gt;add_from_resource(\"/toolbar/toolbar.glade\");\n"
 
-#: C/index-in.docbook:3464
+#: C/index-in.docbook:3472
 msgid ""
 "This is where we specify the names of the menu items as they will be seen by "
 "users in the menu. Therefore, this is where you should make strings "
@@ -6353,7 +6349,7 @@ msgstr ""
 "这里我们指定菜单项的名称,因为用户可以在菜单中看到它们。因此你应该添加"
 "<literal>translatable='yes'</literal>使这些的字符串可以被翻译。"
 
-#: C/index-in.docbook:3468
+#: C/index-in.docbook:3476
 msgid ""
 "To instantiate a <classname>Gtk::MenuBar</classname> and <classname>Gtk::"
 "Toolbar</classname> which you can actually show, you should use the "
@@ -6366,7 +6362,7 @@ msgstr ""
 "methodname>和<methodname>Builder::get_widget()</methodname>方法,然后将部件加"
 "入容器中。例如:"
 
-#: C/index-in.docbook:3475
+#: C/index-in.docbook:3483
 #, no-wrap
 msgid ""
 "\n"
@@ -6385,11 +6381,11 @@ msgstr ""
 "auto toolbar = m_refBuilder-&gt;get_widget&lt;Gtk::Toolbar&gt;(\"toolbar\");\n"
 "m_Box.append(*toolbar);\n"
 
-#: C/index-in.docbook:3487
+#: C/index-in.docbook:3495
 msgid "Popup Menus"
 msgstr "弹出菜单"
 
-#: C/index-in.docbook:3488
+#: C/index-in.docbook:3496
 msgid ""
 "<classname>Menus</classname> are normally just added to a window, but they "
 "can also be displayed temporarily as the result of a mouse button click. For "
@@ -6399,7 +6395,7 @@ msgstr ""
 "<classname>Menus</classname>通常将直接被加入到窗口中,但也可以通过鼠标单击来"
 "临时显示他们。例如当用户单击鼠标右键的时候,可能需要显示上下文菜单。"
 
-#: C/index-in.docbook:3497
+#: C/index-in.docbook:3505
 #, no-wrap
 msgid ""
 "\n"
@@ -6454,7 +6450,7 @@ msgstr ""
 "auto gmenu = m_refBuilder-&gt;get_object&lt;Gio::Menu&gt;(\"menu-examplepopup\");\n"
 "m_pMenuPopup = std::make_unique&lt;Gtk::Menu&gt;(gmenu);\n"
 
-#: C/index-in.docbook:3524
+#: C/index-in.docbook:3532
 msgid ""
 "To show the popup menu, use <classname>Gtk::Menu</classname>'s "
 "<methodname>popup()</methodname> method, providing the button identifier and "
@@ -6466,7 +6462,7 @@ msgstr ""
 "信号提供的激活时机(鼠标单双三击、按下还是释放)和按钮标识(哪个鼠标按键)。"
 "例如:"
 
-#: C/index-in.docbook:3530
+#: C/index-in.docbook:3538
 #, no-wrap
 msgid ""
 "\n"
@@ -6499,11 +6495,11 @@ msgstr ""
 "    return false;\n"
 "}\n"
 
-#: C/index-in.docbook:3549
+#: C/index-in.docbook:3557
 msgid "Gio::Resource and glib-compile-resources"
 msgstr "Gio::Resource和glib-compile-resources"
 
-#: C/index-in.docbook:3551
+#: C/index-in.docbook:3559
 msgid ""
 "Applications and libraries often contain binary or textual data that is "
 "really part of the application, rather than user data. For instance "
@@ -6519,7 +6515,7 @@ msgstr ""
 "文件、图标等。这些通常这些文件放于<filename class=\"directory\">$datadir/"
 "appname</filename>目录下,也可以将其转换为文本字面量手动包含在代码中。"
 
-#: C/index-in.docbook:3559
+#: C/index-in.docbook:3567
 msgid ""
 "The <classname>Gio::Resource</classname> API and the <application>glib-"
 "compile-resources</application> program provide a convenient and efficient "
@@ -6539,7 +6535,7 @@ msgstr ""
 "例共享)且很简单(无需对IO错误进行检查和在文件系统中查找文件)。这也使得创建"
 "可重定位应用程序变得更为简单。"
 
-#: C/index-in.docbook:3568
+#: C/index-in.docbook:3576
 msgid ""
 "Resource bundles are created by the <ulink url=\"https://developer.gnome.org/";
 "gio/stable/glib-compile-resources.html\">glib-compile-resources</ulink> "
@@ -6552,7 +6548,7 @@ msgstr ""
 "文件描述资源包并由该XML文件指示资源包引用了那些文件。被引用的文件和XML文件将"
 "被组合为一个二进制的资源包。"
 
-#: C/index-in.docbook:3574
+#: C/index-in.docbook:3582
 msgid ""
 "<ulink url=\"http://developer.gnome.org/glibmm/unstable/classGio_1_1Resource.";
 "html\">Gio::Resource Reference</ulink>"
@@ -6560,7 +6556,7 @@ msgstr ""
 "<ulink url=\"http://developer.gnome.org/glibmm/unstable/classGio_1_1Resource.";
 "html\">Gio::Resource参考</ulink>"
 
-#: C/index-in.docbook:3577
+#: C/index-in.docbook:3585
 #, no-wrap
 msgid ""
 "\n"
@@ -6581,15 +6577,15 @@ msgstr ""
 "  &lt;/gresource&gt;\n"
 "&lt;/gresources&gt;\n"
 
-#: C/index-in.docbook:3588
+#: C/index-in.docbook:3596
 msgid "<filename>/toolbar/toolbar.glade</filename>"
 msgstr "<filename>/toolbar/toolbar.glade</filename>"
 
-#: C/index-in.docbook:3589
+#: C/index-in.docbook:3597
 msgid "<filename>/toolbar/rain.png</filename>"
 msgstr "<filename>/toolbar/rain.png</filename>"
 
-#: C/index-in.docbook:3575
+#: C/index-in.docbook:3583
 msgid ""
 "An example: <_:programlisting-1/> This will create a resource bundle with "
 "the files <_:itemizedlist-2/>"
@@ -6597,12 +6593,12 @@ msgstr ""
 "一个示例:<_:programlisting-1/> 这将创建一个包含以下文件的资源包:<_:"
 "itemizedlist-2/>"
 
-#: C/index-in.docbook:3597
+#: C/index-in.docbook:3605
 #, no-wrap
 msgid "$ glib-compile-resources --target=resources.c --generate-source toolbar.gresource.xml"
 msgstr "$ glib-compile-resources --target=resources.c --generate-source toolbar.gresource.xml"
 
-#: C/index-in.docbook:3592
+#: C/index-in.docbook:3600
 msgid ""
 "You can then use <application>glib-compile-resources</application> to "
 "compile the xml to a binary bundle that you can load with <methodname>Gio::"
@@ -6616,7 +6612,7 @@ msgstr ""
 "包。但是使用--generate-source生成C源文件直接链接到你的应用程序更为常见。例"
 "如:<_:screen-1/>"
 
-#: C/index-in.docbook:3599
+#: C/index-in.docbook:3607
 msgid ""
 "Once a <classname>Gio::Resource</classname> has been created and registered "
 "all the data in it can be accessed globally in the process by using API "
@@ -6633,7 +6629,7 @@ msgstr ""
 "的全局访问数据。你还可以使用类似于<uri>resource:///toolbar/rain.png</uri>的"
 "URI通过<classname>Gio::File</classname>访问资源数据。"
 
-#: C/index-in.docbook:3607
+#: C/index-in.docbook:3615
 msgid ""
 "Often you don't need a <classname>Gio::Resource</classname> instance, "
 "because resource data can be loaded with methods such as <methodname>Gdk::"
@@ -6646,11 +6642,11 @@ msgstr ""
 "<methodname>Gtk::Builder::add_from_resource()</methodname>和<methodname>Gtk::"
 "Image::set_from_resource()</methodname>直接加载资源数据。"
 
-#: C/index-in.docbook:3620
+#: C/index-in.docbook:3628
 msgid "Application Menu and Main Menu example"
 msgstr "应用程序菜单和主菜单实例"
 
-#: C/index-in.docbook:3621
+#: C/index-in.docbook:3629
 msgid ""
 "This program contains an application menu, a menubar and a toolbar. Classes "
 "are derived from <classname>Gtk::Application</classname> and <classname>Gtk::"
@@ -6660,11 +6656,11 @@ msgstr ""
 "<classname>Gtk::Application</classname>和<classname>Gtk::ApplicationWindow</"
 "classname>派生而来的。"
 
-#: C/index-in.docbook:3628
+#: C/index-in.docbook:3636
 msgid "App and Main Menu"
 msgstr "应用程序和主菜单"
 
-#: C/index-in.docbook:3634
+#: C/index-in.docbook:3642
 msgid ""
 "<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
 "examples/book/menus/main_menu/\">Source Code</ulink>"
@@ -6672,11 +6668,11 @@ msgstr ""
 "<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
 "examples/book/menus/main_menu/\">源代码</ulink>"
 
-#: C/index-in.docbook:3638
+#: C/index-in.docbook:3646
 msgid "Main Menu example"
 msgstr "主菜单示例"
 
-#: C/index-in.docbook:3639
+#: C/index-in.docbook:3647
 msgid ""
 "This program contains a menubar and a toolbar. A class is derived from "
 "<classname>Gtk::Window</classname>."
@@ -6684,11 +6680,11 @@ msgstr ""
 "该程序包含一个菜单栏和一个工具栏。一个从<classname>Gtk::Window</classname>派"
 "生的类。"
 
-#: C/index-in.docbook:3645
+#: C/index-in.docbook:3653
 msgid "Main Menu"
 msgstr "主菜单"
 
-#: C/index-in.docbook:3651
+#: C/index-in.docbook:3659
 msgid ""
 "<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
 "examples/book/menus_and_toolbars\">Source Code</ulink>"
@@ -6696,15 +6692,15 @@ msgstr ""
 "<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
 "examples/book/menus_and_toolbars\">源代码</ulink>"
 
-#: C/index-in.docbook:3655
+#: C/index-in.docbook:3663
 msgid "Popup Menu example"
 msgstr "弹出菜单示例"
 
-#: C/index-in.docbook:3658
+#: C/index-in.docbook:3666
 msgid "Popup Menu"
 msgstr "弹出菜单"
 
-#: C/index-in.docbook:3664
+#: C/index-in.docbook:3672
 msgid ""
 "<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
 "examples/book/menus/popup/\">Source Code</ulink>"
@@ -6712,11 +6708,11 @@ msgstr ""
 "<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
 "examples/book/menus/popup/\">源代码</ulink>"
 
-#: C/index-in.docbook:3673
+#: C/index-in.docbook:3681
 msgid "Adjustments"
 msgstr "调整(Adjustments)"
 
-#: C/index-in.docbook:3675
+#: C/index-in.docbook:3683
 msgid ""
 "<application>gtkmm</application> has various widgets that can be visually "
 "adjusted using the mouse or the keyboard, such as the <classname>Range</"
@@ -6732,7 +6728,7 @@ msgstr ""
 "<classname>Viewport</classname>部件。这些部件的<classname>Gtk::Adjustment</"
 "classname>对象表达了它的共有部分的API。"
 
-#: C/index-in.docbook:3685
+#: C/index-in.docbook:3693
 msgid ""
 "So that applications can react to changes, for instance when a user moves a "
 "scrollbar, <classname>Gtk::Adjustment</classname> has a "
@@ -6744,11 +6740,11 @@ msgstr ""
 "号。你可以在信号处理函数中使用<methodname>get_value()</methodname>方法获取新"
 "的值。"
 
-#: C/index-in.docbook:3693
+#: C/index-in.docbook:3701
 msgid "Creating an Adjustment"
 msgstr "创建调整"
 
-#: C/index-in.docbook:3695
+#: C/index-in.docbook:3703
 msgid ""
 "The <classname>Gtk::Adjustment</classname> is created by its "
 "<methodname>create()</methodname> method which is as follows:"
@@ -6756,7 +6752,7 @@ msgstr ""
 "<classname>Gtk::Adjustment</classname>由它的<methodname>create()</methodname>"
 "方法创建,该方法的声明如下:"
 
-#: C/index-in.docbook:3700
+#: C/index-in.docbook:3708
 #, no-wrap
 msgid ""
 "Glib::RefPtr&lt;Gtk::Adjustment&gt; Gtk::Adjustment::create(\n"
@@ -6775,7 +6771,7 @@ msgstr ""
 "  double page_increment = 10,\n"
 "  double page_size = 0);"
 
-#: C/index-in.docbook:3708
+#: C/index-in.docbook:3716
 msgid ""
 "The <parameter>value</parameter> argument is the initial value of the "
 "adjustment, usually corresponding to the topmost or leftmost position of an "
@@ -6797,11 +6793,11 @@ msgstr ""
 "种方式与平移部件能见到的区域大小。<parameter>upper</parameter>参数被用于表示"
 "平移子部件最底端或最右端的坐标。"
 
-#: C/index-in.docbook:3727
+#: C/index-in.docbook:3735
 msgid "Using Adjustments the Easy Way"
 msgstr "轻松使用调整"
 
-#: C/index-in.docbook:3729
+#: C/index-in.docbook:3737
 msgid ""
 "The adjustable widgets can be roughly divided into those which use and "
 "require specific units for these values, and those which treat them as "
@@ -6809,7 +6805,7 @@ msgid ""
 msgstr ""
 "可调整部件大致可以分为使用并要求这些值使用特定单位的和将它们视作任意数字的。"
 
-#: C/index-in.docbook:3734
+#: C/index-in.docbook:3742
 msgid ""
 "The group which treats the values as arbitrary numbers includes the "
 "<classname>Range</classname> widgets (<classname>Scrollbar</classname> and "
@@ -6829,7 +6825,7 @@ msgstr ""
 "整的<parameter>value</parameter>的范围。默认情况下它们只会修改调整的"
 "<parameter>value</parameter>。"
 
-#: C/index-in.docbook:3746
+#: C/index-in.docbook:3754
 msgid ""
 "The other group includes the <classname>Viewport</classname> widget and the "
 "<classname>ScrolledWindow</classname> widget. All of these widgets use pixel "
@@ -6843,7 +6839,7 @@ msgstr ""
 "的修改调整的值。虽然所有使用调整的部件都可以创建自己的调整也可以使用你提供的"
 "调整,但是通常情况下你都会希望使用这些部件自行创建的调整。"
 
-#: C/index-in.docbook:3755
+#: C/index-in.docbook:3763
 msgid ""
 "If you share an adjustment object between a Scrollbar and a TextView widget, "
 "manipulating the scrollbar will automagically adjust the TextView widget. "
@@ -6852,7 +6848,7 @@ msgstr ""
 "如果你使滚动条和文本视图部件共享一个调整对象,则你操纵滚动条的时候文本视图将"
 "被自动调整。你可以这样设置:"
 
-#: C/index-in.docbook:3760
+#: C/index-in.docbook:3768
 #, no-wrap
 msgid ""
 "// creates its own adjustments\n"
@@ -6865,11 +6861,11 @@ msgstr ""
 "// uses the newly-created adjustment for the scrollbar as well\n"
 "Gtk::Scrollbar vscrollbar (textview.get_vadjustment(), Gtk::ORIENTATION_VERTICAL);"
 
-#: C/index-in.docbook:3768
+#: C/index-in.docbook:3776
 msgid "Adjustment Internals"
 msgstr "调整的内部"
 
-#: C/index-in.docbook:3770
+#: C/index-in.docbook:3778
 msgid ""
 "OK, you say, that's nice, but what if I want to create my own handlers to "
 "respond when the user adjusts a <classname>Range</classname> widget or a "
@@ -6882,7 +6878,7 @@ msgstr ""
 "Adjustment</classname>的<methodname>get_value()</methodname>和"
 "<methodname>set_value()</methodname>方法访问其值:"
 
-#: C/index-in.docbook:3778
+#: C/index-in.docbook:3786
 msgid ""
 "As mentioned earlier, <classname>Gtk::Adjustment</classname> can emit "
 "signals. This is, of course, how updates happen automatically when you share "
@@ -6897,7 +6893,7 @@ msgstr ""
 "享一个<classname>Adjustment</classname>对象时,如果你操纵滚动条与其共享调整对"
 "象的其他可调整部件将会自动更新。"
 
-#: C/index-in.docbook:3787
+#: C/index-in.docbook:3795
 msgid ""
 "So, for example, if you have a <classname>Scale</classname> widget, and you "
 "want to change the rotation of a picture whenever its value changes, you "
@@ -6906,7 +6902,7 @@ msgstr ""
 "因此,例如,如果你有一个<classname>Scale</classname>部件并且你想要当调整值变"
 "更以后更改图片的旋转角度,你可以创建一个如下所示的信号处理函数:"
 
-#: C/index-in.docbook:3792
+#: C/index-in.docbook:3800
 #, no-wrap
 msgid ""
 "void cb_rotate_picture (MyPicture* picture)\n"
@@ -6919,11 +6915,11 @@ msgstr ""
 "  picture-&gt;set_rotation(adj-&gt;get_value());\n"
 "..."
 
-#: C/index-in.docbook:3796
+#: C/index-in.docbook:3804
 msgid "and connect it to the scale widget's adjustment like this:"
 msgstr "并且将其连接到比例部件的调整对象上,如下所示:"
 
-#: C/index-in.docbook:3799
+#: C/index-in.docbook:3807
 #, no-wrap
 msgid ""
 "adj-&gt;signal_value_changed().connect(sigc::bind&lt;MyPicture*&gt;(sigc::mem_fun(*this,\n"
@@ -6932,7 +6928,7 @@ msgstr ""
 "adj-&gt;signal_value_changed().connect(sigc::bind&lt;MyPicture*&gt;(sigc::mem_fun(*this,\n"
 "    &amp;cb_rotate_picture), picture));"
 
-#: C/index-in.docbook:3802
+#: C/index-in.docbook:3810
 msgid ""
 "What if a widget reconfigures the <parameter>upper</parameter> or "
 "<parameter>lower</parameter> fields of its <classname>Adjustment</"
@@ -6943,7 +6939,7 @@ msgstr ""
 "parameter>和<parameter>lower</parameter>字段(例如:用户向文本部件添加了更多"
 "的文本),那么它将发出<literal>changed</literal>信号。"
 
-#: C/index-in.docbook:3809
+#: C/index-in.docbook:3817
 msgid ""
 "<classname>Range</classname> widgets typically connect a handler to this "
 "signal, which changes their appearance to reflect the change - for example, "
@@ -6956,23 +6952,23 @@ msgstr ""
 "<parameter>lower</parameter>与<parameter>upper</parameter>的差值的增大逐渐变"
 "小,反之则逐渐增大。"
 
-#: C/index-in.docbook:3818
+#: C/index-in.docbook:3826
 msgid ""
 "You probably won't ever need to attach a handler to this signal, unless "
 "you're writing a new type of range widget."
 msgstr ""
 "除非你正在编写新的范围部件,否则你可能永远不需要将处理程序连接到这个信号。"
 
-#: C/index-in.docbook:3822
+#: C/index-in.docbook:3830
 #, no-wrap
 msgid "adjustment-&gt;signal_changed();"
 msgstr "adjustment-&gt;signal_changed();"
 
-#: C/index-in.docbook:3829
+#: C/index-in.docbook:3837
 msgid "Dialogs"
 msgstr "对话框(Dialogs)"
 
-#: C/index-in.docbook:3831
+#: C/index-in.docbook:3839
 msgid ""
 "Dialogs are used as secondary windows, to provide specific information or to "
 "ask questions. <classname>Gtk::Dialog</classname> windows contain a few pre-"
@@ -6983,7 +6979,7 @@ msgstr ""
 "classname>窗口包含了一些预装部件以确保一致性,且有一个<methodname>run()</"
 "methodname>方法可以阻塞到用户关闭对话框。"
 
-#: C/index-in.docbook:3838
+#: C/index-in.docbook:3846
 msgid ""
 "There are several derived <classname>Dialog</classname> classes which you "
 "might find useful. <classname>Gtk::MessageDialog</classname> is used for "
@@ -6994,7 +6990,7 @@ msgstr ""
 "<classname>Gtk::MessageDialog</classname>多被用于简单的通知。但有时候你也需要"
 "派生自己的对话框类以提供更为复杂的功能。"
 
-#: C/index-in.docbook:3845
+#: C/index-in.docbook:3853
 msgid ""
 "To pack widgets into a custom dialog, you should pack them into the "
 "<classname>Gtk::Box</classname>, available via "
@@ -7008,7 +7004,7 @@ msgstr ""
 "<classname>Button</classname>,那么你可以直接使用<methodname>add_button()</"
 "methodname>方法。"
 
-#: C/index-in.docbook:3853
+#: C/index-in.docbook:3861
 msgid ""
 "The <methodname>run()</methodname> method returns an <literal>int</literal>. "
 "This may be a value from the <literal>Gtk::ResponseType</literal> if the "
@@ -7021,7 +7017,7 @@ msgstr ""
 "literal>中的一个也可能是使用<methodname>add_button()</methodname>时你所指定的"
 "值。"
 
-#: C/index-in.docbook:3860
+#: C/index-in.docbook:3868
 msgid ""
 "<ulink url=\"http://developer.gnome.org/gtkmm/unstable/classGtk_1_1Dialog.";
 "html\">Reference</ulink>"
@@ -7029,11 +7025,11 @@ msgstr ""
 "<ulink url=\"http://developer.gnome.org/gtkmm/unstable/classGtk_1_1Dialog.";
 "html\">参考</ulink>"
 
-#: C/index-in.docbook:3862 C/index-in.docbook:3877
+#: C/index-in.docbook:3870 C/index-in.docbook:3885
 msgid "MessageDialog"
 msgstr "消息对话框(MessageDialog)"
 
-#: C/index-in.docbook:3863
+#: C/index-in.docbook:3871
 msgid ""
 "<classname>MessageDialog</classname> is a convenience class, used to create "
 "simple, standard message dialogs, with a message, an icon, and buttons for "
@@ -7046,7 +7042,7 @@ msgstr ""
 "消息文本,也可以通过<literal>Gtk::ButtonsType</literal>枚举指定其包含的标准按"
 "钮。"
 
-#: C/index-in.docbook:3871
+#: C/index-in.docbook:3879
 msgid ""
 "<ulink url=\"http://developer.gnome.org/gtkmm/unstable/";
 "classGtk_1_1MessageDialog.html\">Reference</ulink>"
@@ -7054,7 +7050,7 @@ msgstr ""
 "<ulink url=\"http://developer.gnome.org/gtkmm/unstable/";
 "classGtk_1_1MessageDialog.html\">参考</ulink>"
 
-#: C/index-in.docbook:3883
+#: C/index-in.docbook:3891
 msgid ""
 "<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
 "examples/book/dialogs/messagedialog\">Source Code</ulink>"
@@ -7062,18 +7058,18 @@ msgstr ""
 "<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
 "examples/book/dialogs/messagedialog\">源代码</ulink>"
 
-#: C/index-in.docbook:3888
+#: C/index-in.docbook:3896
 msgid "FileChooserDialog"
 msgstr "文件选择对话框(FileChooserDialog)"
 
-#: C/index-in.docbook:3889
+#: C/index-in.docbook:3897
 msgid ""
 "The <classname>FileChooserDialog</classname> is suitable for use with \"Open"
 "\" or \"Save\" menu items."
 msgstr ""
 "<classname>FileChooserDialog</classname>通常被用于\"打开\"或\"保存\"菜单项。"
 
-#: C/index-in.docbook:3893
+#: C/index-in.docbook:3901
 msgid ""
 "Most of the useful member methods for this class are actually in the "
 "<classname>Gtk::FileChooser</classname> base class."
@@ -7081,7 +7077,7 @@ msgstr ""
 "该类的大部分有用的成员函数都在其基类<classname>Gtk::FileChooser</classname>"
 "中。"
 
-#: C/index-in.docbook:3898
+#: C/index-in.docbook:3906
 msgid ""
 "<ulink url=\"http://developer.gnome.org/gtkmm/unstable/";
 "classGtk_1_1FileChooserDialog.html\">Reference</ulink>"
@@ -7089,11 +7085,11 @@ msgstr ""
 "<ulink url=\"http://developer.gnome.org/gtkmm/unstable/";
 "classGtk_1_1FileChooserDialog.html\">参考</ulink>"
 
-#: C/index-in.docbook:3904 C/index-in.docbook:5437
+#: C/index-in.docbook:3912 C/index-in.docbook:5440
 msgid "FileChooser"
 msgstr "文件选择器(FileChooser)"
 
-#: C/index-in.docbook:3910
+#: C/index-in.docbook:3918
 msgid ""
 "<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
 "examples/book/dialogs/filechooserdialog\">Source Code</ulink>"
@@ -7101,11 +7097,11 @@ msgstr ""
 "<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
 "examples/book/dialogs/filechooserdialog\">源代码</ulink>"
 
-#: C/index-in.docbook:3914 C/index-in.docbook:3927
+#: C/index-in.docbook:3922 C/index-in.docbook:3935
 msgid "ColorChooserDialog"
 msgstr "颜色选择器对话框(ColorChooserDialog)"
 
-#: C/index-in.docbook:3915
+#: C/index-in.docbook:3923
 msgid ""
 "The <classname>ColorChooserDialog</classname> allows the user to choose a "
 "color. The <classname>ColorButton</classname> opens a color selection dialog "
@@ -7114,7 +7110,7 @@ msgstr ""
 "<classname>ColorChooserDialog</classname>允许用户选择一个颜色。当"
 "<classname>ColorButton</classname>被点击的时会打开一个颜色选择对话框。"
 
-#: C/index-in.docbook:3921
+#: C/index-in.docbook:3929
 msgid ""
 "<ulink url=\"http://developer.gnome.org/gtkmm/unstable/";
 "classGtk_1_1ColorChooserDialog.html\">Reference</ulink>"
@@ -7122,7 +7118,7 @@ msgstr ""
 "<ulink url=\"http://developer.gnome.org/gtkmm/unstable/";
 "classGtk_1_1ColorChooserDialog.html\">参考</ulink>"
 
-#: C/index-in.docbook:3933
+#: C/index-in.docbook:3941
 msgid ""
 "<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
 "examples/book/dialogs/colorchooserdialog\">Source Code</ulink>"
@@ -7130,11 +7126,11 @@ msgstr ""
 "<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
 "examples/book/dialogs/colorchooserdialog\">源代码</ulink>"
 
-#: C/index-in.docbook:3938 C/index-in.docbook:3951
+#: C/index-in.docbook:3946 C/index-in.docbook:3959
 msgid "FontChooserDialog"
 msgstr "字体选择器对话框(FontChooserDialog)"
 
-#: C/index-in.docbook:3939
+#: C/index-in.docbook:3947
 msgid ""
 "The <classname>FontChooserDialog</classname> allows the user to choose a "
 "font. The <classname>FontButton</classname> opens a font chooser dialog when "
@@ -7143,7 +7139,7 @@ msgstr ""
 "<classname>FontChooserDialog</classname>允许用户选择一个字体。当"
 "<classname>FontButton</classname>被点击时将打开一个字体选择对话框。"
 
-#: C/index-in.docbook:3945
+#: C/index-in.docbook:3953
 msgid ""
 "<ulink url=\"http://developer.gnome.org/gtkmm/unstable/";
 "classGtk_1_1FontChooserDialog.html\">Reference</ulink>"
@@ -7151,7 +7147,7 @@ msgstr ""
 "<ulink url=\"http://developer.gnome.org/gtkmm/unstable/";
 "classGtk_1_1FontChooserDialog.html\">参考</ulink>"
 
-#: C/index-in.docbook:3957
+#: C/index-in.docbook:3965
 msgid ""
 "<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
 "examples/book/dialogs/fontchooserdialog\">Source Code</ulink>"
@@ -7159,11 +7155,11 @@ msgstr ""
 "<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
 "examples/book/dialogs/fontchooserdialog\">源代码</ulink>"
 
-#: C/index-in.docbook:3962
+#: C/index-in.docbook:3970
 msgid "Non-modal AboutDialog"
 msgstr "非模态关于对话框(AboutDialog)"
 
-#: C/index-in.docbook:3963
+#: C/index-in.docbook:3971
 msgid ""
 "The <classname>AboutDialog</classname> offers a simple way to display "
 "information about a program, like its logo, name, copyright, website and "
@@ -7172,7 +7168,7 @@ msgstr ""
 "<classname>AboutDialog</classname>提供了一个简单的显示程序有关信息(例如标"
 "志、名称、版权、网站、许可证)的方式。"
 
-#: C/index-in.docbook:3967
+#: C/index-in.docbook:3975
 msgid ""
 "Most dialogs in this chapter are modal, that is, they freeze the rest of the "
 "application while they are shown. It's also possible to create a non-modal "
@@ -7188,7 +7184,7 @@ msgstr ""
 "不会想要将该对话框做成非模态,但这不表示非模态对话框在其它情况下没有用。例"
 "如:在<application>gedit</application>中搜索和替换对话框就是非模态的。"
 
-#: C/index-in.docbook:3977
+#: C/index-in.docbook:3985
 msgid ""
 "<ulink url=\"http://developer.gnome.org/gtkmm/unstable/";
 "classGtk_1_1AboutDialog.html\">Reference</ulink>"
@@ -7196,11 +7192,11 @@ msgstr ""
 "<ulink url=\"http://developer.gnome.org/gtkmm/unstable/";
 "classGtk_1_1AboutDialog.html\">参考</ulink>"
 
-#: C/index-in.docbook:3983
+#: C/index-in.docbook:3991
 msgid "AboutDialog"
 msgstr "关于对话框"
 
-#: C/index-in.docbook:3989
+#: C/index-in.docbook:3997
 msgid ""
 "<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
 "examples/book/dialogs/aboutdialog\">Source Code</ulink>"
@@ -7208,11 +7204,11 @@ msgstr ""
 "<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
 "examples/book/dialogs/aboutdialog\">源代码</ulink>"
 
-#: C/index-in.docbook:3997
+#: C/index-in.docbook:4005
 msgid "The DrawingArea Widget"
 msgstr "绘图区域部件(DrawingArea Widget)"
 
-#: C/index-in.docbook:3998
+#: C/index-in.docbook:4006
 msgid ""
 "The <classname>DrawingArea</classname> widget is a blank window that gives "
 "you the freedom to create any graphic you desire. Along with that freedom "
@@ -7231,7 +7227,7 @@ msgstr ""
 "确定如何绘制绘部件的内容。你可以调用<methodname>set_draw_func()</methodname>"
 "成员函数来设置绘图函数。"
 
-#: C/index-in.docbook:4010
+#: C/index-in.docbook:4018
 msgid ""
 "GTK uses the <ulink url=\"http://cairographics.org\";>Cairo</ulink> drawing "
 "API. With <application>gtkmm</application>, you may use the <ulink url="
@@ -7241,7 +7237,7 @@ msgstr ""
 "<application>gtkmm</application>中你可以使用由<ulink url=\"http://www.";
 "cairographics.org/cairomm/\">cairomm</ulink>提供的开罗C++ API。"
 
-#: C/index-in.docbook:4015
+#: C/index-in.docbook:4023
 msgid ""
 "You can draw very sophisticated shapes using Cairo, but the methods to do so "
 "are quite basic. Cairo provides methods for drawing straight lines, curved "
@@ -7256,11 +7252,11 @@ msgstr ""
 "复杂的形状和路径,然后用纯色、渐变、模式等进行填充。除此之外,开罗还可以进行"
 "复杂的转换、合成图像和渲染抗锯齿文本等。"
 
-#: C/index-in.docbook:4025
+#: C/index-in.docbook:4033
 msgid "Cairo and Pango"
 msgstr "开罗和Pango"
 
-#: C/index-in.docbook:4026
+#: C/index-in.docbook:4034
 msgid ""
 "Although Cairo can render text, it's not meant to be a replacement for "
 "Pango. Pango is a better choice if you need to perform more advanced text "
@@ -7271,7 +7267,7 @@ msgstr ""
 "渲染(例如环绕和省略文本)则Pango会是更好的选择。只有当文本是图形的一部分的时"
 "候才应该使用开罗绘制文本。"
 
-#: C/index-in.docbook:4031
+#: C/index-in.docbook:4039
 msgid ""
 "In this section of the tutorial, we'll cover the basic Cairo drawing model, "
 "describe each of the basic drawing elements in some detail (with examples), "
@@ -7281,11 +7277,11 @@ msgstr ""
 "在本教程的这一部分中,我们将介绍开罗的基本绘图模型,详细描述每个基本绘制元素"
 "(包括示例),然后介绍一个使用开罗绘制自定义时钟部件的简单应用程序。"
 
-#: C/index-in.docbook:4038
+#: C/index-in.docbook:4046
 msgid "The Cairo Drawing Model"
 msgstr "开罗绘制模型"
 
-#: C/index-in.docbook:4039
+#: C/index-in.docbook:4047
 msgid ""
 "The basic concept of drawing in Cairo involves defining 'invisible' paths "
 "and then stroking or filling them to make them visible."
@@ -7293,7 +7289,7 @@ msgstr ""
 "开罗的基本概念包括定义'不可见'路径然后描绘(stroking)或者填充(filling)它们使其"
 "可见。"
 
-#: C/index-in.docbook:4043
+#: C/index-in.docbook:4051
 msgid ""
 "To do any drawing in <application>gtkmm</application> with Cairo, you must "
 "first get a <classname>Cairo::Context</classname> object. This class holds "
@@ -7325,7 +7321,7 @@ msgstr ""
 "RefPtr&lt;Cairo::Context&gt;</classname>对象(请注意区分<classname>Gdk::"
 "CairoContext</classname>与<classname>Cairo::Context</classname>。)。"
 
-#: C/index-in.docbook:4060
+#: C/index-in.docbook:4068
 msgid ""
 "The following example shows how to set up a Cairo context with a foreground "
 "color of red and a width of 2. Any drawing functions that use this context "
@@ -7334,7 +7330,7 @@ msgstr ""
 "以下示例显示如何设置一个开罗上下文(Cairo Context)的前景色为红色且宽度为2。任"
 "何使用该上下文的绘图函数都将使用这些设置。"
 
-#: C/index-in.docbook:4065
+#: C/index-in.docbook:4073
 #, no-wrap
 msgid ""
 "\n"
@@ -7353,7 +7349,7 @@ msgstr ""
 "myContext-&gt;set_line_width(2.0);\n"
 "    "
 
-#: C/index-in.docbook:4072
+#: C/index-in.docbook:4080
 msgid ""
 "Each <classname>Cairo::Context</classname> is associated with a particular "
 "<classname>Gdk::Surface</classname>, so the first line of the above example "
@@ -7368,7 +7364,7 @@ msgstr ""
 "Surface</classname>创建一个<classname>Cairo::Context</classname>对象。最后两"
 "行更改上下文的图形状态。"
 
-#: C/index-in.docbook:4080
+#: C/index-in.docbook:4088
 msgid ""
 "There are a number of graphics state variables that can be set for a Cairo "
 "context. The most common context attributes are color (using "
@@ -7395,7 +7391,7 @@ msgstr ""
 "填充规则、是否执行抗锯齿规则等。更多详情请参阅<ulink url=\"http://www.";
 "cairographics.org/cairomm/\">cairomm</ulink>API文档。"
 
-#: C/index-in.docbook:4112
+#: C/index-in.docbook:4120
 msgid ""
 "It is good practice to put all modifications to the graphics state between "
 "<methodname>save()</methodname>/<methodname>restore()</methodname> function "
@@ -7407,7 +7403,7 @@ msgstr ""
 "methodname>调用之间进行所有对图形状态的更改。例如,如果你有一个将"
 "<classname>Cairo::Context</classname>的引用作为参数的函数,你可以这样实现它:"
 
-#: C/index-in.docbook:4118
+#: C/index-in.docbook:4126
 #, no-wrap
 msgid ""
 "void doSomething(const Cairo::RefPtr&lt;Cairo::Context&gt;&amp; context, int x)\n"
@@ -7426,7 +7422,7 @@ msgstr ""
 "    context-&gt;restore();\n"
 "}"
 
-#: C/index-in.docbook:4095
+#: C/index-in.docbook:4103
 msgid ""
 "The current state of a <classname>Cairo::Context</classname> can be saved to "
 "an internal stack of saved states and later be restored to the state it was "
@@ -7453,7 +7449,7 @@ msgstr ""
 "<methodname>restore()</methodname>调用都会将恢复状态到与之相对应的"
 "<methodname>save()</methodname>所保存的状态。 <_:tip-1/>"
 
-#: C/index-in.docbook:4127
+#: C/index-in.docbook:4135
 msgid ""
 "The draw function that you set with a call to <methodname>set_draw_func()</"
 "methodname> is called with a Cairo context that you shall use for drawing in "
@@ -7465,11 +7461,11 @@ msgstr ""
 "要在绘图函数中对此开罗上下文进行保存和恢复(部件会在调用绘图函数时做保存与恢"
 "复)。"
 
-#: C/index-in.docbook:4135
+#: C/index-in.docbook:4143
 msgid "Drawing Straight Lines"
 msgstr "画直线"
 
-#: C/index-in.docbook:4144
+#: C/index-in.docbook:4152
 msgid ""
 "Since the Cairo graphics library was written with support for multiple "
 "output targets (the X window system, PNG images, OpenGL, etc), there is a "
@@ -7488,7 +7484,7 @@ msgstr ""
 "你可能会需要使一个窗口的宽和高在调整比例后的坐标系中取值范围均处于0到1之间"
 "(单位正方形)。"
 
-#: C/index-in.docbook:4136
+#: C/index-in.docbook:4144
 msgid ""
 "Now that we understand the basics of the Cairo graphics library, we're "
 "almost ready to start drawing. We'll start with the simplest of drawing "
@@ -7501,7 +7497,7 @@ msgstr ""
 "元素:直线 开始。但是在此之前你需要对开罗的坐标系有所了解。开罗的坐标系原点在"
 "窗口的左上角,从左向右X的值逐渐增大,从上往下Y的值逐渐增大。 <_:tip-1/>"
 
-#: C/index-in.docbook:4159
+#: C/index-in.docbook:4167
 msgid ""
 "In this example, we'll construct a small but fully functional "
 "<application>gtkmm</application> program and draw some lines into the "
@@ -7520,7 +7516,7 @@ msgstr ""
 "方 -- 在你移动到的点和你之前所在的点直接不会画出一条线。使用"
 "<methodname>line_to()</methodname>函数可以在两点之间画线。"
 
-#: C/index-in.docbook:4171
+#: C/index-in.docbook:4179
 msgid ""
 "After you've finished creating your path, you still haven't drawn anything "
 "visible yet. To make the path visible, you must use the function "
@@ -7534,7 +7530,7 @@ msgstr ""
 "Context</classname>对象中保存的线宽与样式绘制当前的路径。描绘完成后,当前路径"
 "将被清除,以便你可以从下一个路径开始。"
 
-#: C/index-in.docbook:4180
+#: C/index-in.docbook:4188
 msgid ""
 "Many Cairo drawing functions have a <methodname>_preserve()</methodname> "
 "variant. Normally drawing functions such as <methodname>clip()</methodname>, "
@@ -7549,11 +7545,11 @@ msgstr ""
 "<methodname>_preserve()</methodname>变体,则当前路径会被保留,以便下一个绘图"
 "函数能继续在一样的路径上绘制。"
 
-#: C/index-in.docbook:4190 C/index-in.docbook:4310
+#: C/index-in.docbook:4198 C/index-in.docbook:4318
 msgid "Drawing Area - Lines"
 msgstr "绘图区域 - 线"
 
-#: C/index-in.docbook:4196
+#: C/index-in.docbook:4204
 msgid ""
 "<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
 "examples/book/drawingarea/simple\">Source Code</ulink>"
@@ -7561,7 +7557,7 @@ msgstr ""
 "<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
 "examples/book/drawingarea/simple\">源代码</ulink>"
 
-#: C/index-in.docbook:4198
+#: C/index-in.docbook:4206
 msgid ""
 "This program contains a single class, <classname>MyArea</classname>, which "
 "is a subclass of <classname>Gtk::DrawingArea</classname> and contains an "
@@ -7591,11 +7587,11 @@ msgstr ""
 "<methodname>move_to()</methodname>和<methodname>line_to()</methodname>函数创"
 "建一个新的路径,然后使用<methodname>stroke()</methodname>绘制了这个路径。"
 
-#: C/index-in.docbook:4217
+#: C/index-in.docbook:4225
 msgid "Drawing with relative coordinates"
 msgstr "使用相对坐标绘图"
 
-#: C/index-in.docbook:4218
+#: C/index-in.docbook:4226
 msgid ""
 "In the example above we drew everything using absolute coordinates. You can "
 "also draw using relative coordinates. For a straight line, this is done with "
@@ -7605,11 +7601,11 @@ msgstr ""
 "直线而言,你可以通过<methodname>Cairo::Context::rel_line_to()</methodname>完"
 "成用相对坐标绘图。"
 
-#: C/index-in.docbook:4224
+#: C/index-in.docbook:4232
 msgid "Line styles"
 msgstr "线型"
 
-#: C/index-in.docbook:4225
+#: C/index-in.docbook:4233
 msgid ""
 "In addition to drawing basic straight lines, there are a number of things "
 "that you can customize about a line. You've already seen examples of setting "
@@ -7618,7 +7614,7 @@ msgstr ""
 "除了绘制基本直线以外,你还可以对线条进行很多自定义。你已经看到了对线条颜色和"
 "线条宽度的示例,但还有其他示例。"
 
-#: C/index-in.docbook:4231
+#: C/index-in.docbook:4239
 msgid ""
 "If you've drawn a series of lines that form a path, you may want them to "
 "join together in a certain way. Cairo offers three different ways to join "
@@ -7628,11 +7624,11 @@ msgstr ""
 "提供了三种不同的连接线条的方式:斜接(Miter)、斜切(Bevel)、圆(Round)。这些连接"
 "方式的示意图如下:"
 
-#: C/index-in.docbook:4238
+#: C/index-in.docbook:4246
 msgid "Different join types in Cairo"
 msgstr "开罗的不同连接类型"
 
-#: C/index-in.docbook:4243
+#: C/index-in.docbook:4251
 msgid ""
 "The line join style is set using the function <methodname>Cairo::Context::"
 "set_line_join()</methodname>."
@@ -7640,7 +7636,7 @@ msgstr ""
 "线条连接样式由<methodname>Cairo::Context::set_line_join()</methodname>函数进"
 "行设置。"
 
-#: C/index-in.docbook:4247
+#: C/index-in.docbook:4255
 msgid ""
 "Line ends can have different styles as well. The default style is for the "
 "line to start and stop exactly at the destination points of the line. This "
@@ -7654,7 +7650,7 @@ msgstr ""
 "方形的中心)。这可以使用<methodname>Cairo::Context::set_line_cap()</"
 "methodname>函数使用。"
 
-#: C/index-in.docbook:4257
+#: C/index-in.docbook:4265
 msgid ""
 "There are other things you can customize as well, including creating dashed "
 "lines and other things. For more information, see the Cairo API "
@@ -7662,11 +7658,11 @@ msgid ""
 msgstr ""
 "你还可以自定义其他内容,比如创建虚线等。更多有关信息请参阅开罗API文档。"
 
-#: C/index-in.docbook:4264
+#: C/index-in.docbook:4272
 msgid "Drawing thin lines"
 msgstr "画细线"
 
-#: C/index-in.docbook:4265
+#: C/index-in.docbook:4273
 msgid ""
 "If you try to draw one pixel wide lines, you may notice that the line "
 "sometimes comes up blurred and wider than it ought to be. This happens "
@@ -7683,7 +7679,7 @@ msgstr ""
 "能做到的(像素是最小的单位)。所以当像素的宽度是奇数的时候就会出现这种情况"
 "(不只是一个像素的时候)。"
 
-#: C/index-in.docbook:4275
+#: C/index-in.docbook:4283
 msgid ""
 "The trick is to position in the middle of the pixel where you want the line "
 "to be drawn, and thus guaranteeing you get the desired results. See <ulink "
@@ -7693,11 +7689,11 @@ msgstr ""
 "<ulink url=\"http://cairographics.org/FAQ/#sharp_lines\";>开罗常见问题</"
 "ulink>。"
 
-#: C/index-in.docbook:4282
+#: C/index-in.docbook:4290
 msgid "Drawing Area - Thin Lines"
 msgstr "绘图区域 - 细线"
 
-#: C/index-in.docbook:4288
+#: C/index-in.docbook:4296
 msgid ""
 "<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
 "examples/book/drawingarea/thin_lines\">Source Code</ulink>"
@@ -7705,11 +7701,11 @@ msgstr ""
 "<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
 "examples/book/drawingarea/thin_lines\">源代码</ulink>"
 
-#: C/index-in.docbook:4293
+#: C/index-in.docbook:4301
 msgid "Drawing Curved Lines"
 msgstr "画曲线"
 
-#: C/index-in.docbook:4294
+#: C/index-in.docbook:4302
 msgid ""
 "In addition to drawing straight lines Cairo allows you to easily draw curved "
 "lines (technically a cubic Bézier spline) using the <methodname>Cairo::"
@@ -7723,13 +7719,13 @@ msgstr ""
 "的绘制曲线(从技术上而言是三次贝塞尔曲线)。这些函数需要一个目标点的坐标和两"
 "个'控制'点的坐标。这最好用一个示例来解释,所以让我们开始吧。"
 
-#: C/index-in.docbook:4305
+#: C/index-in.docbook:4313
 msgid ""
 "This simple application draws a curve with Cairo and displays the control "
 "points for each end of the curve."
 msgstr "这个简单的示例程序使用开罗绘制了一条曲线并显示了曲线两端的控制点。"
 
-#: C/index-in.docbook:4316
+#: C/index-in.docbook:4324
 msgid ""
 "<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
 "examples/book/drawingarea/curve\">Source Code</ulink>"
@@ -7737,7 +7733,7 @@ msgstr ""
 "<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
 "examples/book/drawingarea/curve\">源代码</ulink>"
 
-#: C/index-in.docbook:4317
+#: C/index-in.docbook:4325
 msgid ""
 "The only difference between this example and the straight line example is in "
 "the <methodname>on_draw()</methodname> function, but there are a few new "
@@ -7746,7 +7742,7 @@ msgstr ""
 "这个示例与绘制直线示例的唯一区别在它们的<methodname>on_draw()</methodname>函"
 "数,不过这里引入了一些新的概念和函数,所以让我们简要的介绍一下它们。"
 
-#: C/index-in.docbook:4323
+#: C/index-in.docbook:4331
 msgid ""
 "We make a call to <methodname>Cairo::Context::scale()</methodname>, passing "
 "in the width and height of the drawing area. This scales the user-space "
@@ -7759,7 +7755,7 @@ msgstr ""
 "其实并没有什么特别的要对坐标系进行缩放的理由,只是为了使绘图操作有时候更易"
 "用。"
 
-#: C/index-in.docbook:4332
+#: C/index-in.docbook:4340
 msgid ""
 "The call to <methodname>Cairo::Context::curve_to()</methodname> should be "
 "fairly self-explanatory. The first pair of coordinates define the control "
@@ -7782,11 +7778,11 @@ msgstr ""
 "<methodname>set_source_rgba()</methodname>实现的。这个函数使用第四个参数来接"
 "受指定颜色的alpha值(值的有效区间为0到1)。"
 
-#: C/index-in.docbook:4350
+#: C/index-in.docbook:4358
 msgid "Drawing Arcs and Circles"
 msgstr "画圆弧和圆"
 
-#: C/index-in.docbook:4351
+#: C/index-in.docbook:4359
 msgid ""
 "With Cairo, the same function is used to draw arcs, circles, or ellipses: "
 "<methodname>Cairo::Context::arc()</methodname>. This function takes five "
@@ -7809,7 +7805,18 @@ msgstr ""
 "沿着X轴的正方向向Y轴的正方向逐渐增加。所以使用默认的变换矩阵的时候,角度沿着"
 "顺时针方向增加(请记住Y轴的正方向指向下方)。"
 
-#: C/index-in.docbook:4372
+#: C/index-in.docbook:4374
+msgid ""
+"To draw an ellipse, you can scale the current transformation matrix by "
+"different amounts in the X and Y directions. For example, to draw an ellipse "
+"with center at <varname>x</varname>, <varname>y</varname> and size "
+"<varname>width</varname>, <varname>height</varname>:"
+msgstr ""
+"想要绘制椭圆的话,你可以在X和Y方向用不同的量缩放当前的变换矩阵。例如,如果你"
+"想要绘制一个以<varname>x</varname>,<varname>y</varname>为中心,大小为"
+"<varname>width</varname>,<varname>height</varname>的椭圆:"
+
+#: C/index-in.docbook:4380
 #, no-wrap
 msgid ""
 "context-&gt;save();\n"
@@ -7824,29 +7831,17 @@ msgstr ""
 "context-&gt;arc(0.0, 0.0, 1.0, 0.0, 2 * M_PI);\n"
 "context-&gt;restore();"
 
-#: C/index-in.docbook:4366
-msgid ""
-"To draw an ellipse, you can scale the current transformation matrix by "
-"different amounts in the X and Y directions. For example, to draw an ellipse "
-"with center at <varname>x</varname>, <varname>y</varname> and size "
-"<varname>width</varname>, <varname>height</varname>: <_:programlisting-1/>"
-msgstr ""
-"想要绘制椭圆的话,你可以在X和Y方向用不同的量缩放当前的变换矩阵。例如,如果你"
-"想要绘制一个以<varname>x</varname>,<varname>y</varname>为中心,大小为"
-"<varname>width</varname>,<varname>height</varname>的椭圆: <_:"
-"programlisting-1/>"
-
-#: C/index-in.docbook:4380
+#: C/index-in.docbook:4387
 msgid ""
 "Here's an example of a simple program that draws an arc, a circle and an "
 "ellipse into a drawing area."
 msgstr "这是一个简单的示例程序,它在绘图区域绘制了一个圆弧、一个圆和一个椭圆。"
 
-#: C/index-in.docbook:4385
+#: C/index-in.docbook:4392
 msgid "Drawing Area - Arcs"
 msgstr "绘图区域 - 圆弧"
 
-#: C/index-in.docbook:4392
+#: C/index-in.docbook:4399
 msgid ""
 "<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
 "examples/book/drawingarea/arcs\">Source Code</ulink>"
@@ -7854,7 +7849,7 @@ msgstr ""
 "<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
 "examples/book/drawingarea/arcs\">源代码</ulink>"
 
-#: C/index-in.docbook:4394
+#: C/index-in.docbook:4401
 msgid ""
 "There are a couple of things to note about this example code. Again, the "
 "only real difference between this example and the previous ones is the "
@@ -7866,7 +7861,7 @@ msgstr ""
 "<methodname>on_draw()</methodname>函数中,因此我们重点接受这个函数。另外,函"
 "数的第一部分与之前的也几乎一样,所以我们将会跳过该部分。"
 
-#: C/index-in.docbook:4402
+#: C/index-in.docbook:4409
 msgid ""
 "Note that in this case, we've expressed nearly everything in terms of the "
 "height and width of the window, including the width of the lines. Because of "
@@ -7881,7 +7876,7 @@ msgstr ""
 "methodname>/<methodname>restore()</methodname>包裹,以便我们在每次绘完图都能"
 "返回已知状态。"
 
-#: C/index-in.docbook:4411
+#: C/index-in.docbook:4418
 msgid ""
 "The section for drawing an arc introduces one new function, "
 "<methodname>close_path()</methodname>. This function will in effect draw a "
@@ -7900,11 +7895,11 @@ msgstr ""
 "起。如果你改用<methodname>line_to()</methodname>,那么这些线将在同一个点结束"
 "但是开罗不会对此做任何特殊的连接。"
 
-#: C/index-in.docbook:4424
+#: C/index-in.docbook:4431
 msgid "Drawing counter-clockwise"
 msgstr "逆时针绘图"
 
-#: C/index-in.docbook:4425
+#: C/index-in.docbook:4432
 msgid ""
 "The function <methodname>Cairo::Context::arc_negative()</methodname> is "
 "exactly the same as <methodname>Cairo::Context::arc()</methodname> but the "
@@ -7914,15 +7909,15 @@ msgstr ""
 "<methodname>Cairo::Context::arc()</methodname>函数完全一致,但是他们的绘制方"
 "向是相反的。"
 
-#: C/index-in.docbook:4437
+#: C/index-in.docbook:4444
 msgid "Drawing Text"
 msgstr "绘制文本"
 
-#: C/index-in.docbook:4439
+#: C/index-in.docbook:4446
 msgid "Drawing Text with Pango"
 msgstr "使用Pango绘制文本"
 
-#: C/index-in.docbook:4440
+#: C/index-in.docbook:4447
 msgid ""
 "Text is drawn via Pango Layouts. The easiest way to create a "
 "<classname>Pango::Layout</classname> is to use <methodname>Gtk::Widget::"
@@ -7936,7 +7931,7 @@ msgstr ""
 "以后,可以通过各种方式操纵布局,包括更改文本、字体等。然后可以使用"
 "<methodname>Pango::Layout::show_in_cairo_context()</methodname>方法渲染布局。"
 
-#: C/index-in.docbook:4452
+#: C/index-in.docbook:4459
 msgid ""
 "Here is an example of a program that draws some text, some of it upside-"
 "down. The Printing chapter contains another <link linkend=\"sec-printing-"
@@ -7945,11 +7940,11 @@ msgstr ""
 "这是一个绘制一些文本的示例程序,其中的一些文本上下颠倒。打印一章包含了另一个"
 "绘制文本的<link linkend=\"sec-printing-example\">示例</link>。"
 
-#: C/index-in.docbook:4458
+#: C/index-in.docbook:4465
 msgid "Drawing Area - Text"
 msgstr "绘图区域 - 文本"
 
-#: C/index-in.docbook:4464
+#: C/index-in.docbook:4471
 msgid ""
 "<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
 "examples/book/drawingarea/pango_text\">Source Code</ulink>"
@@ -7957,11 +7952,11 @@ msgstr ""
 "<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
 "examples/book/drawingarea/pango_text\">源代码</ulink>"
 
-#: C/index-in.docbook:4475
+#: C/index-in.docbook:4482
 msgid "Drawing Images"
 msgstr "绘制图片"
 
-#: C/index-in.docbook:4476
+#: C/index-in.docbook:4483
 msgid ""
 "There is a method for drawing from a <classname>Gdk::Pixbuf</classname> to a "
 "<classname>Cairo::Context</classname>. A <classname>Gdk::Pixbuf</classname> "
@@ -7972,7 +7967,7 @@ msgstr ""
 "Context</classname>。<classname>Gdk::Pixbuf</classname>缓冲区是对像素集合的有"
 "效封装,它提供了从文件读取以及各种操纵像素的方式。"
 
-#: C/index-in.docbook:4483
+#: C/index-in.docbook:4490
 msgid ""
 "Probably the most common way of creating <classname>Gdk::Pixbuf</classname>s "
 "is to use <methodname>Gdk::Pixbuf::create_from_file()</methodname> or "
@@ -7984,7 +7979,7 @@ msgstr ""
 "create_from_resource()</methodname>,它们可以将图像文件(例如png文件)读取到"
 "pixbuf中用于渲染。"
 
-#: C/index-in.docbook:4491
+#: C/index-in.docbook:4498
 msgid ""
 "The <classname>Gdk::Pixbuf</classname> can be rendered by setting it as the "
 "source pattern of the Cairo context with <methodname>Gdk::Cairo::"
@@ -8004,7 +7999,7 @@ msgstr ""
 "<methodname>set_source_pixbuf()</methodname>不是<classname>Cairo::Context</"
 "classname>的成员函数。<classname>Cairo::Context</classname>是它的第一个参数。"
 
-#: C/index-in.docbook:4502
+#: C/index-in.docbook:4509
 msgid ""
 "Here is a small bit of code to tie it all together: (Note that usually you "
 "wouldn't load the image every time in the draw signal handler! It's just "
@@ -8013,7 +8008,7 @@ msgstr ""
 "这是一小段将他们结合在一起的代码(请注意,通常你不应该在每次调用绘制信号处理"
 "函数的时候都加载一次图片):"
 
-#: C/index-in.docbook:4507
+#: C/index-in.docbook:4514
 #, no-wrap
 msgid ""
 "void MyArea::on_draw(const Cairo::RefPtr&lt;Cairo::Context&gt;&amp; cr, int width, int height)\n"
@@ -8034,12 +8029,12 @@ msgstr ""
 "  cr-&gt;fill();\n"
 "}"
 
-#: C/index-in.docbook:4524
+#: C/index-in.docbook:4531
 #, no-wrap
 msgid "$ glib-compile-resources --target=resources.c --generate-source image.gresource.xml"
 msgstr "$ glib-compile-resources --target=resources.c --generate-source image.gresource.xml"
 
-#: C/index-in.docbook:4517
+#: C/index-in.docbook:4524
 msgid ""
 "Here is an example of a simple program that draws an image. The program "
 "loads the image from a resource file. See the <link linkend=\"sec-gio-"
@@ -8053,11 +8048,11 @@ msgstr ""
 "节。使用<application>glib-compile-resources</application>将资源文件编译为C源"
 "文件,然后将该源文件与C++代码一起编译链接。例如:<_:screen-1/>"
 
-#: C/index-in.docbook:4527
+#: C/index-in.docbook:4534
 msgid "Drawing Area - Image"
 msgstr "绘图区域 - 图像"
 
-#: C/index-in.docbook:4533
+#: C/index-in.docbook:4540
 msgid ""
 "<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
 "examples/book/drawingarea/image\">Source Code</ulink>"
@@ -8065,11 +8060,11 @@ msgstr ""
 "<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
 "examples/book/drawingarea/image\">源代码</ulink>"
 
-#: C/index-in.docbook:4547
+#: C/index-in.docbook:4554
 msgid "Example Application: Creating a Clock with Cairo"
 msgstr "示例程序:使用开罗创建时钟"
 
-#: C/index-in.docbook:4548
+#: C/index-in.docbook:4555
 msgid ""
 "Now that we've covered the basics of drawing with Cairo, let's try to put it "
 "all together and create a simple application that actually does something. "
@@ -8082,7 +8077,7 @@ msgstr ""
 "定义的<classname>Clock</classname>部件。这个时钟有秒针、分针、时针,并且每一"
 "秒更新一次。"
 
-#: C/index-in.docbook:4559
+#: C/index-in.docbook:4566
 msgid ""
 "<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
 "examples/book/drawingarea/clock\">Source Code</ulink>"
@@ -8090,7 +8085,7 @@ msgstr ""
 "<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
 "examples/book/drawingarea/clock\">源代码</ulink>"
 
-#: C/index-in.docbook:4560
+#: C/index-in.docbook:4567
 msgid ""
 "As before, almost all of the interesting stuff is done in the draw function "
 "<methodname>on_draw()</methodname>. Before we dig into the draw function, "
@@ -8108,7 +8103,7 @@ msgstr ""
 "将每秒被调用一次。这个函数的唯一任务就是使窗口无效,以便<application>gtkmm</"
 "application>强制重绘它。"
 
-#: C/index-in.docbook:4571
+#: C/index-in.docbook:4578
 msgid ""
 "Now let's take a look at the code that performs the actual drawing. The "
 "first section of <methodname>on_draw()</methodname> should be pretty "
@@ -8123,7 +8118,7 @@ msgstr ""
 "按窗口大小的百分比绘制时钟。此外坐标系是按比例缩放的,所以(0,0)坐标位于窗口的"
 "正中央。"
 
-#: C/index-in.docbook:4581
+#: C/index-in.docbook:4588
 msgid ""
 "The function <methodname>Cairo::Context::paint()</methodname> is used here "
 "to set the background color of the window. This function takes no arguments "
@@ -8141,7 +8136,7 @@ msgstr ""
 "行描边。请注意,这两个操作都用<methodname>_preserve</methodname>变体以保留当"
 "前路径,然后对相同的路径进行剪辑以确保我们下一行不会超过时钟的轮廓。"
 
-#: C/index-in.docbook:4593
+#: C/index-in.docbook:4600
 msgid ""
 "After drawing the outline, we go around the clock and draw ticks for every "
 "hour, with a larger tick at 12, 3, 6, and 9. Now we're finally ready to "
@@ -8153,7 +8148,7 @@ msgstr ""
 "线。接着我们就可以实现时钟的计时功能了 -- 获取当前时间的时、分、秒然后以正确"
 "的角度将指针绘制出来。"
 
-#: C/index-in.docbook:4605
+#: C/index-in.docbook:4612
 msgid ""
 "<classname>Gtk::Widget</classname> has several methods and signals which are "
 "prefixed with \"drag_\". These are used for Drag and Drop."
@@ -8161,11 +8156,11 @@ msgstr ""
 "<classname>Gtk::Widget</classname>提供了几个带有\"drag_\"前缀的方法和信号用以"
 "支持拖放。"
 
-#: C/index-in.docbook:4610
+#: C/index-in.docbook:4617
 msgid "Sources and Destinations"
 msgstr "源与目的地"
 
-#: C/index-in.docbook:4611
+#: C/index-in.docbook:4618
 msgid ""
 "Things are dragged from <literal>sources</literal> to be dropped on "
 "<literal>destinations</literal>. Each source and destination has information "
@@ -8180,7 +8175,7 @@ msgstr ""
 "送或接受的数据格式的相关信息。放置目的地只会在拖动项与其具有共同的兼容类型时"
 "才会接受它们。然后将会发出适当的信号,告诉信号处理函数使用了那种格式。"
 
-#: C/index-in.docbook:4619
+#: C/index-in.docbook:4626
 msgid ""
 "<classname>Gdk::ContentFormats</classname> objects contain information about "
 "available <type>GType</type>s and mime types (media types)."
@@ -8188,7 +8183,7 @@ msgstr ""
 "<classname>Gdk::ContentFormats</classname>对象包含了可用的<type>GType</type>"
 "和MIME类型(媒体类型)的相关信息。"
 
-#: C/index-in.docbook:4628
+#: C/index-in.docbook:4635
 msgid ""
 "<classname>Widget</classname>s can be identified as sources or destinations "
 "using these <classname>Gtk::Widget</classname> methods:"
@@ -8196,7 +8191,7 @@ msgstr ""
 "<classname>Gtk::Widget</classname>的以下方法可以将<classname>Widget</"
 "classname>作为源或者目标:"
 
-#: C/index-in.docbook:4632
+#: C/index-in.docbook:4639
 #, no-wrap
 msgid ""
 "void drag_source_set(const Glib::RefPtr&lt;Gdk::ContentFormats&gt;&amp; targets,\n"
@@ -8205,7 +8200,7 @@ msgstr ""
 "void drag_source_set(const Glib::RefPtr&lt;Gdk::ContentFormats&gt;&amp; targets,\n"
 "      Gdk::ModifierType start_button_mask, Gdk::DragAction actions);"
 
-#: C/index-in.docbook:4637
+#: C/index-in.docbook:4644
 msgid ""
 "<literal>targets</literal> is a <classname>Gdk::ContentFormats</classname> "
 "object."
@@ -8213,7 +8208,7 @@ msgstr ""
 "<literal>targets</literal>是一个<classname>Gdk::ContentFormats</classname>对"
 "象。"
 
-#: C/index-in.docbook:4642
+#: C/index-in.docbook:4649
 msgid ""
 "<literal>start_button_mask</literal> is an ORed combination of values, which "
 "specify which modifier key or mouse button must be pressed to start the drag."
@@ -8221,7 +8216,7 @@ msgstr ""
 "<literal>start_button_mask</literal>是一组值异或后的结果,用于指定按下哪个组"
 "合键或鼠标按键才能开始拖动。"
 
-#: C/index-in.docbook:4649
+#: C/index-in.docbook:4656
 msgid ""
 "<literal>actions</literal> is an ORed combination of values, which specify "
 "which Drag and Drop operations will be possible from this source - for "
@@ -8235,7 +8230,7 @@ msgstr ""
 "<keycap>Shift</keycap>键将动作从<literal>copy</literal>改变为<literal>move</"
 "literal>,这还会使光标显示不同的样式。"
 
-#: C/index-in.docbook:4660
+#: C/index-in.docbook:4667
 #, no-wrap
 msgid ""
 "void drag_dest_set(const Glib::RefPtr&lt;Gdk::ContentFormats&gt;&amp; targets,\n"
@@ -8244,42 +8239,42 @@ msgstr ""
 "void drag_dest_set(const Glib::RefPtr&lt;Gdk::ContentFormats&gt;&amp; targets,\n"
 "    Gtk::DestDefaults flags, Gdk::DragAction actions);"
 
-#: C/index-in.docbook:4665
+#: C/index-in.docbook:4672
 msgid ""
 "<literal>flags</literal> is an ORed combination of values which indicates "
 "how the widget will respond visually to Drag and Drop items."
 msgstr "是一组值异或后的结果,用于表示部件在视觉上如何响应拖放项。"
 
-#: C/index-in.docbook:4671
+#: C/index-in.docbook:4678
 msgid ""
 "<literal>actions</literal> indicates the Drag and Drop actions which this "
 "destination can receive - see the description above."
 msgstr ""
 "<literal>actions</literal>指示此目的地可以接受的拖放动作 - 请参阅上面的描述。"
 
-#: C/index-in.docbook:4680
+#: C/index-in.docbook:4687
 msgid "<methodname>drag_source_add_text_targets()</methodname>"
 msgstr "<methodname>drag_source_add_text_targets()</methodname>"
 
-#: C/index-in.docbook:4681
+#: C/index-in.docbook:4688
 msgid "<methodname>drag_source_add_image_targets()</methodname>"
 msgstr "<methodname>drag_source_add_image_targets()</methodname>"
 
-#: C/index-in.docbook:4682
+#: C/index-in.docbook:4689
 msgid "<methodname>drag_dest_add_text_targets()</methodname>"
 msgstr "<methodname>drag_dest_add_text_targets()</methodname>"
 
-#: C/index-in.docbook:4683
+#: C/index-in.docbook:4690
 msgid "<methodname>drag_dest_add_image_targets()</methodname>"
 msgstr "<methodname>drag_dest_add_image_targets()</methodname>"
 
-#: C/index-in.docbook:4677
+#: C/index-in.docbook:4684
 msgid ""
 "There are several methods to add source formats and destination formats. "
 "Examples: <_:itemizedlist-1/>"
 msgstr "有些添加源格式和目的地格式的方法。例如:<_:itemizedlist-1/>"
 
-#: C/index-in.docbook:4690
+#: C/index-in.docbook:4697
 msgid ""
 "When a drop destination has accepted a dragged item, certain signals will be "
 "emitted, depending on what action has been selected. For instance, the user "
@@ -8295,17 +8290,17 @@ msgstr ""
 "<methodname>drag_dest_set()</methodname>和<methodname>drag_source_set()</"
 "methodname>时所指定的动作。"
 
-#: C/index-in.docbook:4701 C/index-in.docbook:4822
+#: C/index-in.docbook:4708 C/index-in.docbook:4829
 msgid "Copy"
 msgstr "复制"
 
-#: C/index-in.docbook:4705
+#: C/index-in.docbook:4712
 msgid ""
 "<literal>drag_begin</literal>: Provides a <classname>Gdk::Drag</classname>."
 msgstr ""
 "<literal>drag_begin</literal>:提供一个<classname>Gdk::Drag</classname>。"
 
-#: C/index-in.docbook:4706
+#: C/index-in.docbook:4713
 msgid ""
 "<literal>drag_data_get</literal>: Provides a <classname>Gdk::Drag</"
 "classname>, and a <classname>Gtk::SelectionData</classname> object, in which "
@@ -8315,18 +8310,18 @@ msgstr ""
 "一个<classname>Gtk::SelectionData</classname>对象,你应该在其中放入所请求的数"
 "据。"
 
-#: C/index-in.docbook:4708
+#: C/index-in.docbook:4715
 msgid ""
 "<literal>drag_end</literal>: Provides a <classname>Gdk::Drag</classname>."
 msgstr ""
 "<literal>drag_end</literal>:提供一个<classname>Gdk::Drag</classname>。"
 
-#: C/index-in.docbook:4702
+#: C/index-in.docbook:4709
 msgid ""
 "The source widget will emit these signals, in this order: <_:itemizedlist-1/>"
 msgstr "源部件将按以下顺序发出这些信号:<_:itemizedlist-1/>"
 
-#: C/index-in.docbook:4714
+#: C/index-in.docbook:4721
 msgid ""
 "<literal>drag_motion</literal>: Provides a <classname>Gdk::Drop</classname> "
 "and coordinates. You can call the <methodname>status()</methodname> method "
@@ -8337,7 +8332,7 @@ msgstr ""
 "坐标。你可以调用<classname>Gdk::Drop</classname>的<methodname>status()</"
 "methodname>方法来指示要接受的动作。"
 
-#: C/index-in.docbook:4717
+#: C/index-in.docbook:4724
 msgid ""
 "<literal>drag_drop</literal>: Provides a <classname>Gdk::Drop</classname> "
 "and coordinates. You can call <methodname>drag_get_data()</methodname>, "
@@ -8350,7 +8345,7 @@ msgstr ""
 "<literal>drag_data_get</literal>信号,并在之后触发目的地部件的"
 "<literal>drag_data_received</literal>信号。"
 
-#: C/index-in.docbook:4722
+#: C/index-in.docbook:4729
 msgid ""
 "<literal>drag_data_received</literal>: Provides a <classname>Gdk::Drop</"
 "classname>, and a <methodname>Gtk::SelectionData</methodname> object which "
@@ -8364,23 +8359,23 @@ msgstr ""
 "对象。你应该调用<classname>Gdk::Drop</classname>的<methodname>finish()</"
 "methodname>或<methodname>failed()</methodname>方法来指示操作是否成功。"
 
-#: C/index-in.docbook:4711
+#: C/index-in.docbook:4718
 msgid ""
 "The destination widget will emit these signals, in this order: <_:"
 "itemizedlist-1/>"
 msgstr "目的地部件将按以下顺序发出这些信号:<_:itemizedlist-1/>"
 
-#: C/index-in.docbook:4736
+#: C/index-in.docbook:4743
 msgid "Move"
 msgstr "移动"
 
-#: C/index-in.docbook:4739
+#: C/index-in.docbook:4746
 msgid ""
 "<literal>drag_data_delete</literal>: Gives the source the opportunity to "
 "delete the original data if that's appropriate."
 msgstr "<literal>drag_data_delete</literal>:给源删除原始数据的合适时机。"
 
-#: C/index-in.docbook:4737
+#: C/index-in.docbook:4744
 msgid ""
 "During a <literal>move</literal>, the source widget will also emit this "
 "signal: <_:itemizedlist-1/>"
@@ -8388,13 +8383,13 @@ msgstr ""
 "在<literal>move</literal>的过程中,源部件还将会发出以下信号:<_:"
 "itemizedlist-1/>"
 
-#: C/index-in.docbook:4754
+#: C/index-in.docbook:4761
 msgid ""
 "Here is a very simple example, demonstrating a drag and drop <literal>Copy</"
 "literal> operation:"
 msgstr "这是一个非常简单的示例,演示了拖放的<literal>Copy</literal>操作:"
 
-#: C/index-in.docbook:4763
+#: C/index-in.docbook:4770
 msgid ""
 "<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
 "examples/book/drag_and_drop\">Source Code</ulink>"
@@ -8402,15 +8397,15 @@ msgstr ""
 "<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
 "examples/book/drag_and_drop\">源代码</ulink>"
 
-#: C/index-in.docbook:4765
+#: C/index-in.docbook:4772
 msgid "There is a more complex example in examples/others/dnd."
 msgstr "在examples/others/dnd中有一个更复杂的示例。"
 
-#: C/index-in.docbook:4774
+#: C/index-in.docbook:4781
 msgid "The Clipboard"
 msgstr "剪切板(Clipboard)"
 
-#: C/index-in.docbook:4775
+#: C/index-in.docbook:4782
 msgid ""
 "Simple text copy-paste functionality is provided for free by widgets such as "
 "<classname>Gtk::Entry</classname> and <classname>Gtk::TextView</classname>, "
@@ -8423,7 +8418,7 @@ msgstr ""
 "编写特定的代码。例如,绘图程序需要编写特定的代码以支持在视图内或文档之间进行"
 "复制粘贴。"
 
-#: C/index-in.docbook:4781
+#: C/index-in.docbook:4788
 msgid ""
 "You can get a clipboard instance with <methodname>Gtk::Widget::"
 "get_clipboard()</methodname> or <methodname>Gdk::Display::get_clipboard()</"
@@ -8432,7 +8427,7 @@ msgstr ""
 "你可以使用<methodname>Gtk::Widget::get_clipboard()</methodname>或"
 "<methodname>Gdk::Display::get_clipboard()</methodname>获取剪切板实例。"
 
-#: C/index-in.docbook:4786
+#: C/index-in.docbook:4793
 msgid ""
 "Your application doesn't need to wait for clipboard operations, particularly "
 "between the time when the user chooses Copy and then later chooses Paste. "
@@ -8446,7 +8441,7 @@ msgstr ""
 "classname>,它们指定了回调函数。当<classname>Gdk::Clipboard</classname>准备就"
 "绪时,它将会调用这些回调函数,并向其提供所请求的数据。"
 
-#: C/index-in.docbook:4794
+#: C/index-in.docbook:4801
 msgid ""
 "<ulink url=\"http://developer.gnome.org/gtkmm/unstable/classGdk_1_1Clipboard.";
 "html\">Reference</ulink>"
@@ -8454,11 +8449,11 @@ msgstr ""
 "<ulink url=\"http://developer.gnome.org/gtkmm/unstable/classGdk_1_1Clipboard.";
 "html\">参考</ulink>"
 
-#: C/index-in.docbook:4797
+#: C/index-in.docbook:4804
 msgid "Formats"
 msgstr "格式"
 
-#: C/index-in.docbook:4798
+#: C/index-in.docbook:4805
 msgid ""
 "Different applications contain different types of data, and they might make "
 "that data available in a variety of formats. <application>gtkmm</"
@@ -8467,7 +8462,7 @@ msgstr ""
 "不同的应用程序包含不同类型的数据,并且它们可能使用多种可用格式提供数据。"
 "<application>gtkmm</application>称这些数据类型为<literal>format</literal>。"
 
-#: C/index-in.docbook:4802
+#: C/index-in.docbook:4809
 msgid ""
 "For instance, <application>gedit</application> can supply and receive the "
 "<literal>text/plain</literal> mime type, so you can paste data into "
@@ -8483,7 +8478,7 @@ msgstr ""
 "各种图像格式。只要其中一个应用程序可以接收其他应用程序提供的一种格式,那么你"
 "就可以将数据从一个复制到另一个。"
 
-#: C/index-in.docbook:4810
+#: C/index-in.docbook:4817
 msgid ""
 "Clipboard data can be in a variety of binary formats. This chapter, and the "
 "examples, assume that the data is 8-bit text. This would allow us to use an "
@@ -8493,7 +8488,7 @@ msgstr ""
 "剪切板数据可以使用多种二进制格式。本章和示例程序假定数据是8位文本。这将使我们"
 "可以对剪切板数据使用XML格式。但这可能不适合二进制数据(例如图像)。"
 
-#: C/index-in.docbook:4817
+#: C/index-in.docbook:4824
 msgid ""
 "The <link linkend=\"chapter-draganddrop\">Drag and Drop</link> API uses the "
 "same mechanism. You should probably use the same data formats for both "
@@ -8502,7 +8497,7 @@ msgstr ""
 "<link linkend=\"chapter-draganddrop\">拖放</link>API使用一样的机制。剪切板和"
 "拖放操作都应该使用一样的数据格式。"
 
-#: C/index-in.docbook:4823
+#: C/index-in.docbook:4830
 msgid ""
 "When the user asks to copy some data, you should copy the data to the "
 "<classname>Clipboard</classname>. For instance,"
@@ -8510,7 +8505,7 @@ msgstr ""
 "当用户要复制某些数据的时候,你应该将数据复制到<classname>Clipboard</"
 "classname>。例如:"
 
-#: C/index-in.docbook:4827
+#: C/index-in.docbook:4834
 #, no-wrap
 msgid ""
 "void ExampleWindow::on_button_copy()\n"
@@ -8523,11 +8518,11 @@ msgstr ""
 "  get_clipboard()-&gt;set_text(\"example_custom_target\");\n"
 "}"
 
-#: C/index-in.docbook:4835
+#: C/index-in.docbook:4842
 msgid "Paste"
 msgstr "粘贴"
 
-#: C/index-in.docbook:4836
+#: C/index-in.docbook:4843
 msgid ""
 "When the user asks to paste data from the <classname>Clipboard</classname>, "
 "you should request a specific format and provide a callback method which "
@@ -8536,7 +8531,7 @@ msgstr ""
 "当用户要从<classname>Clipboard</classname>中粘贴数据时,你应该请求一种特定的"
 "格式并提供一个回调函数,该回调函数将与实际数据一并被调用。例如:"
 
-#: C/index-in.docbook:4841
+#: C/index-in.docbook:4848
 #, no-wrap
 msgid ""
 "void ExampleWindow::on_button_paste()\n"
@@ -8551,11 +8546,11 @@ msgstr ""
 "              &amp;ExampleWindow::on_clipboard_received));\n"
 "}"
 
-#: C/index-in.docbook:4847
+#: C/index-in.docbook:4854
 msgid "Here is an example callback method:"
 msgstr "这是一个回调函数的示例:"
 
-#: C/index-in.docbook:4849
+#: C/index-in.docbook:4856
 #, no-wrap
 msgid ""
 "void ExampleWindow::on_clipboard_received(Glib::RefPtr&lt;Gio::AsyncResult&gt;&amp; result)\n"
@@ -8570,11 +8565,11 @@ msgstr ""
 "  //Do something with the pasted data.\n"
 "}"
 
-#: C/index-in.docbook:4856
+#: C/index-in.docbook:4863
 msgid "Discovering the available formats"
 msgstr "发现可用格式"
 
-#: C/index-in.docbook:4857
+#: C/index-in.docbook:4864
 msgid ""
 "To find out what formats are currently available on the "
 "<classname>Clipboard</classname> for pasting, call the "
@@ -8586,11 +8581,11 @@ msgstr ""
 "<methodname>get_formats()</methodname>方法。然后调用<classname>Gdk::"
 "ContentFormats</classname>方法来确定你的应用程序所支持的格式是否可用。"
 
-#: C/index-in.docbook:4869 C/index-in.docbook:5260
+#: C/index-in.docbook:4876 C/index-in.docbook:5263
 msgid "Simple"
 msgstr "简单"
 
-#: C/index-in.docbook:4870
+#: C/index-in.docbook:4877
 msgid ""
 "This example allows copy and pasting of application-specific data, using the "
 "standard text format. Although this is simple, it's not ideal because it "
@@ -8601,11 +8596,11 @@ msgstr ""
 "并不够理想,因为他不能将<classname>Clipboard</classname>的数据标识为特定的类"
 "型。"
 
-#: C/index-in.docbook:4878
+#: C/index-in.docbook:4885
 msgid "Clipboard - Simple"
 msgstr "剪切板 - 简单"
 
-#: C/index-in.docbook:4884
+#: C/index-in.docbook:4891
 msgid ""
 "<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
 "examples/book/clipboard/simple/\">Source Code</ulink>"
@@ -8613,15 +8608,15 @@ msgstr ""
 "<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
 "examples/book/clipboard/simple/\">源代码</ulink>"
 
-#: C/index-in.docbook:4888
+#: C/index-in.docbook:4895
 msgid "Ideal"
 msgstr "理想"
 
-#: C/index-in.docbook:4891
+#: C/index-in.docbook:4898
 msgid "Defines a custom clipboard target, though the format is still text."
 msgstr "定义了一个自定义剪切板目标,尽管格式依旧是文本。"
 
-#: C/index-in.docbook:4892
+#: C/index-in.docbook:4899
 msgid ""
 "It uses the <methodname>Gdk::ContentFormats::signal_changed()</methodname> "
 "signal and disables the Paste button if it can't use anything on the "
@@ -8630,15 +8625,15 @@ msgstr ""
 "它使用<methodname>Gdk::ContentFormats::signal_changed()</methodname>信号并在"
 "剪切板不可用的时候禁用粘贴按钮。"
 
-#: C/index-in.docbook:4889
+#: C/index-in.docbook:4896
 msgid "This is like the simple example, but it <_:orderedlist-1/>"
 msgstr "这个与简单示例类型,但是它<_:orderedlist-1/>"
 
-#: C/index-in.docbook:4898
+#: C/index-in.docbook:4905
 msgid "Clipboard - Ideal"
 msgstr "剪切板 - 理想"
 
-#: C/index-in.docbook:4904
+#: C/index-in.docbook:4911
 msgid ""
 "<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
 "examples/book/clipboard/ideal/\">Source Code</ulink>"
@@ -8646,11 +8641,11 @@ msgstr ""
 "<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
 "examples/book/clipboard/ideal/\">源代码</ulink>"
 
-#: C/index-in.docbook:4914
+#: C/index-in.docbook:4921
 msgid "Printing"
 msgstr "打印"
 
-#: C/index-in.docbook:4916
+#: C/index-in.docbook:4923
 msgid ""
 "At the application development level, <application>gtkmm</application>'s "
 "printing API provides dialogs that are consistent across applications and "
@@ -8662,11 +8657,11 @@ msgstr ""
 "容的对话框,并允许使用开罗通用绘制API和Pango驱动的文本渲染。在此通用API实现"
 "中,使用了特定平台的后端和特定打印机的驱动。"
 
-#: C/index-in.docbook:4922
+#: C/index-in.docbook:4929
 msgid "PrintOperation"
 msgstr "打印操作"
 
-#: C/index-in.docbook:4924
+#: C/index-in.docbook:4931
 msgid ""
 "The primary object is <classname>Gtk::PrintOperation</classname>, allocated "
 "for each print operation. To handle page drawing connect to its signals, or "
@@ -8678,7 +8673,7 @@ msgstr ""
 "处理绘制页请连接到它的信号,或从其继承并覆盖默认的虚信号处理函数。"
 "<classname>PrintOperation</classname>将自动处理所有影响打印循环的设置。"
 
-#: C/index-in.docbook:4941
+#: C/index-in.docbook:4948
 msgid ""
 "<literal>begin_print</literal>: You must handle this signal, because this is "
 "where you create and set up a <classname>Pango::Layout</classname> using the "
@@ -8689,7 +8684,7 @@ msgstr ""
 "<classname>Gtk::PrintContext</classname>创建和设置<classname>Pango::Layout</"
 "classname>的地方,以及对你的打印输出进行分页的地方。"
 
-#: C/index-in.docbook:4951
+#: C/index-in.docbook:4958
 msgid ""
 "<literal>paginate</literal>: Pagination is potentially slow so if you need "
 "to monitor it you can call the <methodname>PrintOperation::"
@@ -8699,7 +8694,7 @@ msgstr ""
 "<methodname>PrintOperation::set_show_progress()</methodname>方法并处理此信"
 "号。"
 
-#: C/index-in.docbook:4965
+#: C/index-in.docbook:4972
 msgid ""
 "<literal>request_page_setup</literal>: Provides a <classname>PrintContext</"
 "classname>, page number and <classname>Gtk::PageSetup</classname>. Handle "
@@ -8709,7 +8704,7 @@ msgstr ""
 "classname>、页码和<classname>Gtk::PageSetup</classname>。如果你需要逐页的修改"
 "页面设置,请处理此信号。"
 
-#: C/index-in.docbook:4974
+#: C/index-in.docbook:4981
 msgid ""
 "<literal>draw_page</literal>: You must handle this signal, which provides a "
 "<classname>PrintContext</classname> and a page number. The "
@@ -8725,13 +8720,13 @@ msgstr ""
 "<literal>begin_print</literal>处理程序中创建的<classname>Pango::Layout</"
 "classname>。"
 
-#: C/index-in.docbook:4960
+#: C/index-in.docbook:4967
 msgid ""
 "For each page that needs to be rendered, the following signals are emitted: "
 "<_:itemizedlist-1/>"
 msgstr "对于每个要渲染的页面,都会发出以下信号:<_:itemizedlist-1/>"
 
-#: C/index-in.docbook:4989
+#: C/index-in.docbook:4996
 msgid ""
 "<literal>end_print</literal>: A handler for it is a safe place to free any "
 "resources related to a <classname>PrintOperation</classname>. If you have "
@@ -8743,7 +8738,7 @@ msgstr ""
 "<classname>PrintOperation</classname>创建了自定义类,则直接在自定义类的析构函"
 "数中进行此操作会更简单。"
 
-#: C/index-in.docbook:4999
+#: C/index-in.docbook:5006
 msgid ""
 "<literal>done</literal>: This signal is emitted when printing is finished, "
 "meaning when the print data is spooled. Note that the provided <literal>Gtk::"
@@ -8754,7 +8749,7 @@ msgstr ""
 "意,所提供的<literal>Gtk::PrintOperationResult</literal>可能表明发生了错误。"
 "无论如何你都应该让用户知道最终的状态。"
 
-#: C/index-in.docbook:5009
+#: C/index-in.docbook:5016
 msgid ""
 "<literal>status_changed</literal>: Emitted whenever a print job's status "
 "changes, until it is finished. Call the <methodname>PrintOperation::"
@@ -8768,7 +8763,7 @@ msgstr ""
 "<methodname>get_status()</methodname>或<methodname>get_status_string()</"
 "methodname>。"
 
-#: C/index-in.docbook:4935
+#: C/index-in.docbook:4942
 msgid ""
 "The <methodname>PrintOperation::run()</methodname> method starts the print "
 "loop, during which various signals are emitted: <_:itemizedlist-1/>"
@@ -8776,7 +8771,7 @@ msgstr ""
 "<methodname>PrintOperation::run()</methodname>方法启动打印循环,在此期间会发"
 "出以下信号:<_:itemizedlist-1/>"
 
-#: C/index-in.docbook:5022
+#: C/index-in.docbook:5029
 msgid ""
 "<ulink url=\"http://developer.gnome.org/gtkmm/unstable/";
 "classGtk_1_1PrintOperation.html\">Reference</ulink>"
@@ -8784,11 +8779,11 @@ msgstr ""
 "<ulink url=\"http://developer.gnome.org/gtkmm/unstable/";
 "classGtk_1_1PrintOperation.html\">参考</ulink>"
 
-#: C/index-in.docbook:5031
+#: C/index-in.docbook:5038
 msgid "Page setup"
 msgstr "页面设置"
 
-#: C/index-in.docbook:5033
+#: C/index-in.docbook:5040
 msgid ""
 "The <classname>PrintOperation</classname> class has a method called "
 "<methodname>set_default_page_setup()</methodname> which selects the default "
@@ -8808,7 +8803,7 @@ msgstr ""
 "PaperSize</classname>、<literal>Gtk::PageOrientation</literal>和特定打印机的"
 "边距。"
 
-#: C/index-in.docbook:5043
+#: C/index-in.docbook:5050
 msgid ""
 "You should save the chosen <classname>Gtk::PageSetup</classname> so you can "
 "use it again if the page setup dialog is shown again."
@@ -8816,24 +8811,22 @@ msgstr ""
 "你应该保存所选的<classname>Gtk::PageSetup</classname>以便在下次打开页面设置对"
 "话框的时候使用。"
 
-#: C/index-in.docbook:5047
+#: C/index-in.docbook:5054
 #, no-wrap
 msgid ""
 "\n"
-"//Within a class that inherits from Gtk::Window and keeps m_refPageSetup and m_refSettings as members...\n"
+"// Within a class that inherits from Gtk::Window and keeps m_refPageSetup\n"
+"// and m_refSettings as members...\n"
 "auto new_page_setup = Gtk::run_page_setup_dialog(*this, m_refPageSetup, m_refSettings);\n"
 "m_refPageSetup = new_page_setup;\n"
 msgstr ""
 "\n"
-"//Within a class that inherits from Gtk::Window and keeps m_refPageSetup and m_refSettings as members...\n"
+"// Within a class that inherits from Gtk::Window and keeps m_refPageSetup\n"
+"// and m_refSettings as members...\n"
 "auto new_page_setup = Gtk::run_page_setup_dialog(*this, m_refPageSetup, m_refSettings);\n"
 "m_refPageSetup = new_page_setup;\n"
 
-#: C/index-in.docbook:5046 C/index-in.docbook:5111 C/index-in.docbook:10636
-msgid "For instance, <_:programlisting-1/>"
-msgstr "例如:<_:programlisting-1/>"
-
-#: C/index-in.docbook:5054
+#: C/index-in.docbook:5061
 msgid ""
 "<ulink url=\"http://developer.gnome.org/gtkmm/unstable/classGtk_1_1PageSetup.";
 "html\">Reference</ulink>"
@@ -8841,7 +8834,7 @@ msgstr ""
 "<ulink url=\"http://developer.gnome.org/gtkmm/unstable/classGtk_1_1PageSetup.";
 "html\">参考</ulink>"
 
-#: C/index-in.docbook:5058
+#: C/index-in.docbook:5065
 msgid ""
 "The Cairo coordinate system, in the <literal>draw_page</literal> handler, is "
 "automatically rotated to the current page orientation. It is normally within "
@@ -8855,11 +8848,11 @@ msgstr ""
 "set_use_full_page()</methodname>方法来更改它。默认的度量单位是设备像素。要选"
 "择其他单位请使用<methodname>PrintOperation::set_unit()</methodname>方法。"
 
-#: C/index-in.docbook:5070
+#: C/index-in.docbook:5077
 msgid "Rendering text"
 msgstr "渲染文本"
 
-#: C/index-in.docbook:5072
+#: C/index-in.docbook:5079
 msgid ""
 "Text rendering is done using Pango. The <classname>Pango::Layout</classname> "
 "object for printing should be created by calling the "
@@ -8882,7 +8875,7 @@ msgstr ""
 "get_cairo_context()</methodname>获取<classname>Cairo::Context</classname>并显"
 "示在请求的页码中出现的<classname>Pango::LayoutLine</classname>。"
 
-#: C/index-in.docbook:5087
+#: C/index-in.docbook:5094
 msgid ""
 "See <link linkend=\"sec-printing-example-simple\">an example</link> of "
 "exactly how this can be done."
@@ -8890,11 +8883,11 @@ msgstr ""
 "请看<link linkend=\"sec-printing-example-simple\">具体示例</link>如何做到这"
 "点。"
 
-#: C/index-in.docbook:5095
+#: C/index-in.docbook:5102
 msgid "Asynchronous operations"
 msgstr "异步操作"
 
-#: C/index-in.docbook:5097
+#: C/index-in.docbook:5104
 msgid ""
 "By default, <methodname>PrintOperation::run()</methodname> returns when a "
 "print operation is completed. If you need to run a non-blocking print "
@@ -8908,71 +8901,80 @@ msgstr ""
 "<methodname>set_allow_async()</methodname>,但<literal>done</literal>信号仍然"
 "会被发出。"
 
-#: C/index-in.docbook:5104
+#: C/index-in.docbook:5111
 msgid ""
-"<methodname>run()</methodname> may return "
-"<literal>PRINT_OPERATION_RESULT_IN_PROGRESS</literal>. To track status and "
-"handle the result or error you need to implement signal handlers for the "
-"<literal>done</literal> and <literal>status_changed</literal> signals:"
+"<methodname>run()</methodname> may return <literal>PrintOperation::Result::"
+"IN_PROGRESS</literal>. To track status and handle the result or error you "
+"need to implement signal handlers for the <literal>done</literal> and "
+"<literal>status_changed</literal> signals:"
 msgstr ""
 "<methodname>run()</methodname>可能会返回"
-"<literal>PRINT_OPERATION_RESULT_IN_PROGRESS</literal>。要跟踪状态并处理结果或"
+"<literal>PrintOperation::Result::IN_PROGRESS</literal>。要跟踪状态并处理结果或"
 "错误,你需要实现<literal>done</literal>和<literal>status_changed</literal>信"
 "号的信号处理函数。"
 
-#: C/index-in.docbook:5112
+#: C/index-in.docbook:5119
 #, no-wrap
 msgid ""
 "\n"
 "// in class ExampleWindow's method...\n"
 "auto op = PrintOperation::create();\n"
 "// ...set up op...\n"
-"op-&gt;signal_done().connect(sigc::bind(sigc::mem_fun(*this, &amp;ExampleWindow::on_printoperation_done), 
op));\n"
+"op-&gt;signal_done().connect(sigc::bind(sigc::mem_fun(\n"
+"  *this, &amp;ExampleWindow::on_printoperation_done), op));\n"
 "// run the op\n"
 msgstr ""
 "\n"
 "// in class ExampleWindow's method...\n"
 "auto op = PrintOperation::create();\n"
 "// ...set up op...\n"
-"op-&gt;signal_done().connect(sigc::bind(sigc::mem_fun(*this, &amp;ExampleWindow::on_printoperation_done), 
op));\n"
+"op-&gt;signal_done().connect(sigc::bind(sigc::mem_fun(\n"
+"  *this, &amp;ExampleWindow::on_printoperation_done), op));\n"
 "// run the op\n"
 
-#: C/index-in.docbook:5122
+#: C/index-in.docbook:5128
+msgid ""
+"Second, check for an error and connect to the <literal>status_changed</"
+"literal> signal. For instance:"
+msgstr ""
+"然后,检查错误并连接到<literal>status_changed</literal>信号,例如:"
+
+#: C/index-in.docbook:5130
 #, no-wrap
 msgid ""
 "\n"
-"void ExampleWindow::on_printoperation_done(Gtk::PrintOperationResult result, const 
Glib::RefPtr&lt;PrintOperation&gt;&amp; op)\n"
+"void ExampleWindow::on_printoperation_done(Gtk::PrintOperationResult result,\n"
+"  const Glib::RefPtr&lt;PrintOperation&gt;&amp; op)\n"
 "{\n"
-"  if (result == Gtk::PRINT_OPERATION_RESULT_ERROR)\n"
+"  if (result == Gtk::PrintOperation::Result::ERROR)\n"
 "    //notify user\n"
-"  else if (result == Gtk::PRINT_OPERATION_RESULT_APPLY)\n"
+"  else if (result == Gtk::PrintOperation::Result::APPLY)\n"
 "    //Update PrintSettings with the ones used in this PrintOperation\n"
 "\n"
 "  if (! op-&gt;is_finished())\n"
-"    op-&gt;signal_status_changed().connect(sigc::bind(sigc::mem_fun(*this, 
&amp;ExampleWindow::on_printoperation_status_changed), op));\n"
+"    op-&gt;signal_status_changed().connect(sigc::bind(sigc::mem_fun(\n"
+"      *this, &amp;ExampleWindow::on_printoperation_status_changed), op));\n"
 "}\n"
 msgstr ""
 "\n"
-"void ExampleWindow::on_printoperation_done(Gtk::PrintOperationResult result, const 
Glib::RefPtr&lt;PrintOperation&gt;&amp; op)\n"
+"void ExampleWindow::on_printoperation_done(Gtk::PrintOperationResult result,\n"
+"  const Glib::RefPtr&lt;PrintOperation&gt;&amp; op)\n"
 "{\n"
-"  if (result == Gtk::PRINT_OPERATION_RESULT_ERROR)\n"
+"  if (result == Gtk::PrintOperation::Result::ERROR)\n"
 "    //notify user\n"
-"  else if (result == Gtk::PRINT_OPERATION_RESULT_APPLY)\n"
+"  else if (result == Gtk::PrintOperation::Result::APPLY)\n"
 "    //Update PrintSettings with the ones used in this PrintOperation\n"
 "\n"
 "  if (! op-&gt;is_finished())\n"
-"    op-&gt;signal_status_changed().connect(sigc::bind(sigc::mem_fun(*this, 
&amp;ExampleWindow::on_printoperation_status_changed), op));\n"
+"    op-&gt;signal_status_changed().connect(sigc::bind(sigc::mem_fun(\n"
+"      *this, &amp;ExampleWindow::on_printoperation_status_changed), op));\n"
 "}\n"
 
-#: C/index-in.docbook:5121
-msgid ""
-"Second, check for an error and connect to the <literal>status_changed</"
-"literal> signal. For instance: <_:programlisting-1/>"
-msgstr ""
-"然后,检查错误并连接到<literal>status_changed</literal>信号,例如:<_:"
-"programlisting-1/>"
+#: C/index-in.docbook:5145
+msgid "Finally, check the status. For instance,"
+msgstr "最后检查状态。例如:"
 
-#: C/index-in.docbook:5137
+#: C/index-in.docbook:5146
 #, no-wrap
 msgid ""
 "\n"
@@ -8997,43 +8999,39 @@ msgstr ""
 "  //update UI\n"
 "}\n"
 
-#: C/index-in.docbook:5136
-msgid "Finally, check the status. For instance, <_:programlisting-1/>"
-msgstr "最后检查状态。例如:<_:programlisting-1/>"
-
-#: C/index-in.docbook:5153
+#: C/index-in.docbook:5161
 msgid "Export to PDF"
 msgstr "导出为PDF"
 
-#: C/index-in.docbook:5157
+#: C/index-in.docbook:5162
+msgid ""
+"The 'Print to file' option is available in the print dialog, without the "
+"need for extra implementation. However, it is sometimes useful to generate a "
+"pdf file directly from code. For instance,"
+msgstr ""
+"\"打印到文件\"选项在打印对话框可用,不需要额外实现。但是有时候从代码直接生成"
+"PDF文件会很有用。例如:"
+
+#: C/index-in.docbook:5165
 #, no-wrap
 msgid ""
 "\n"
 "auto op = Gtk::PrintOperation::create();\n"
 "// ...set up op...\n"
 "op-&gt;set_export_filename(\"test.pdf\");\n"
-"auto res = op-&gt;run(Gtk::PRINT_OPERATION_ACTION_EXPORT);\n"
+"auto res = op-&gt;run(Gtk::PrintOperation::Action::EXPORT);\n"
 msgstr ""
 "\n"
 "auto op = Gtk::PrintOperation::create();\n"
 "// ...set up op...\n"
 "op-&gt;set_export_filename(\"test.pdf\");\n"
-"auto res = op-&gt;run(Gtk::PRINT_OPERATION_ACTION_EXPORT);\n"
-
-#: C/index-in.docbook:5154
-msgid ""
-"The 'Print to file' option is available in the print dialog, without the "
-"need for extra implementation. However, it is sometimes useful to generate a "
-"pdf file directly from code. For instance, <_:programlisting-1/>"
-msgstr ""
-"\"打印到文件\"选项在打印对话框可用,不需要额外实现。但是有时候从代码直接生成"
-"PDF文件会很有用。例如:<_:programlisting-1/>"
+"auto res = op-&gt;run(Gtk::PrintOperation::Action::EXPORT);\n"
 
-#: C/index-in.docbook:5169
+#: C/index-in.docbook:5175
 msgid "Extending the print dialog"
 msgstr "扩展打印对话框"
 
-#: C/index-in.docbook:5176
+#: C/index-in.docbook:5182
 msgid ""
 "Set the title of the tab via <methodname>PrintOperation::"
 "set_custom_tab_label()</methodname>, create a new widget and return it from "
@@ -9044,18 +9042,32 @@ msgstr ""
 "标题,创建一个新的部件然后从<literal>create_custom_widget</literal>的信号处理"
 "函数中返回它。你可能希望它是一个容器部件,在其中包含一些其他部件。"
 
-#: C/index-in.docbook:5186
+#: C/index-in.docbook:5192
 msgid ""
 "Get the data from the widgets in the <literal>custom_widget_apply</literal> "
 "signal handler."
 msgstr ""
 "从部件的<literal>custom_widget_apply</literal>的信号处理函数中获取数据。"
 
-#: C/index-in.docbook:5171
+#: C/index-in.docbook:5177
 msgid "You may add a custom tab to the print dialog: <_:itemizedlist-1/>"
 msgstr "你可以在打印对话框中添加自定义标签: <_:itemizedlist-1/>"
 
-#: C/index-in.docbook:5201
+#: C/index-in.docbook:5200
+msgid ""
+"Although the <literal>custom_widget_apply</literal> signal provides the "
+"widget you previously created, to simplify things you can keep the widgets "
+"you expect to contain some user input as class members. For example, let's "
+"say you have a <classname>Gtk::Entry</classname> called <literal>m_Entry</"
+"literal> as a member of your <classname>CustomPrintOperation</classname> "
+"class:"
+msgstr ""
+"尽管<literal>custom_widget_apply</literal>信号提供了你之前创建的部件,但是为"
+"了简化操作,你可以保存一些用户输入作为部件类的成员。例如,你可能希望你有一个"
+"叫做<literal>m_Entry</literal>的<classname>Gtk::Entry</classname>拥有"
+"<classname>CustomPrintOperation</classname>作为类成员:"
+
+#: C/index-in.docbook:5207
 #, no-wrap
 msgid ""
 "\n"
@@ -9102,52 +9114,37 @@ msgstr ""
 "  //...\n"
 "}\n"
 
-#: C/index-in.docbook:5194
-msgid ""
-"Although the <literal>custom_widget_apply</literal> signal provides the "
-"widget you previously created, to simplify things you can keep the widgets "
-"you expect to contain some user input as class members. For example, let's "
-"say you have a <classname>Gtk::Entry</classname> called <literal>m_Entry</"
-"literal> as a member of your <classname>CustomPrintOperation</classname> "
-"class: <_:programlisting-1/>"
-msgstr ""
-"尽管<literal>custom_widget_apply</literal>信号提供了你之前创建的部件,但是为"
-"了简化操作,你可以保存一些用户输入作为部件类的成员。例如,你可能希望你有一个"
-"叫做<literal>m_Entry</literal>的<classname>Gtk::Entry</classname>拥有"
-"<classname>CustomPrintOperation</classname>作为类成员:<_:programlisting-1/>"
-
-#: C/index-in.docbook:5226
+#: C/index-in.docbook:5230
 msgid "The example in examples/book/printing/advanced demonstrates this."
 msgstr "examples/book/printing/advanced示例对此进行了演示。"
 
-#: C/index-in.docbook:5233
+#: C/index-in.docbook:5237
 msgid "Preview"
 msgstr "预览"
 
 #: C/index-in.docbook:5239
+msgid ""
+"The native GTK print dialog has a preview button, but you may also start a "
+"preview directly from an application:"
+msgstr ""
+"原生的GTK打印对话框有一个预览按钮,但是你也可以自己从应用程序开始预览:"
+
+#: C/index-in.docbook:5243
 #, no-wrap
 msgid ""
 "\n"
 "// in a class that inherits from Gtk::Window...\n"
 "auto op = PrintOperation::create();\n"
 "// ...set up op...\n"
-"op-&gt;run(Gtk::PRINT_OPERATION_ACTION_PREVIEW, *this);\n"
+"op-&gt;run(Gtk::PrintOperation::Action::PREVIEW, *this);\n"
 msgstr ""
 "\n"
 "// in a class that inherits from Gtk::Window...\n"
 "auto op = PrintOperation::create();\n"
 "// ...set up op...\n"
-"op-&gt;run(Gtk::PRINT_OPERATION_ACTION_PREVIEW, *this);\n"
-
-#: C/index-in.docbook:5235
-msgid ""
-"The native GTK print dialog has a preview button, but you may also start a "
-"preview directly from an application: <_:programlisting-1/>"
-msgstr ""
-"原生的GTK打印对话框有一个预览按钮,但是你也可以自己从应用程序开始预览:<_:"
-"programlisting-1/>"
+"op-&gt;run(Gtk::PrintOperation::Action::PREVIEW, *this);\n"
 
-#: C/index-in.docbook:5247
+#: C/index-in.docbook:5250
 msgid ""
 "On Unix, the default preview handler uses an external viewer program. On "
 "Windows, the native preview dialog will be shown. If necessary you may "
@@ -9158,7 +9155,7 @@ msgstr ""
 "话框。如果有必要,你可以覆盖此默认行为并为此提供一个自定义的预览对话框。请参"
 "阅位于/examples/book/printing/advanced的示例。"
 
-#: C/index-in.docbook:5262
+#: C/index-in.docbook:5265
 msgid ""
 "The following example demonstrates how to print some input from a user "
 "interface. It shows how to implement <literal>on_begin_print</literal> and "
@@ -9169,11 +9166,11 @@ msgstr ""
 "<literal>on_begin_print</literal>和<literal>on_draw_page</literal>,以及如何"
 "跟踪打印状态和更新打印设置。"
 
-#: C/index-in.docbook:5270
+#: C/index-in.docbook:5273
 msgid "Printing - Simple"
 msgstr "打印 - 简单"
 
-#: C/index-in.docbook:5276
+#: C/index-in.docbook:5279
 msgid ""
 "<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
 "examples/book/printing/simple/\">Source Code</ulink>"
@@ -9181,11 +9178,11 @@ msgstr ""
 "<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
 "examples/book/printing/simple/\">源代码</ulink>"
 
-#: C/index-in.docbook:5285
+#: C/index-in.docbook:5288
 msgid "Recently Used Documents"
 msgstr "最近使用过的文件"
 
-#: C/index-in.docbook:5287
+#: C/index-in.docbook:5290
 msgid ""
 "<application>gtkmm</application> provides an easy way to manage recently "
 "used documents. This functionality is implemented in the <classname>Gtk::"
@@ -9194,7 +9191,7 @@ msgstr ""
 "<application>gtkmm</application>提供了一种管理最近使用文件的简便方法。该功能"
 "在<classname>Gtk::RecentManager</classname>类中实现。"
 
-#: C/index-in.docbook:5291
+#: C/index-in.docbook:5294
 msgid ""
 "Each item in the list of recently used files is identified by its URI, and "
 "can have associated metadata. The metadata can be used to specify how the "
@@ -9206,11 +9203,11 @@ msgstr ""
 "以用于指定如何显示文件、如何描述文件、及其它的MIME类型、哪个应用程序注册了"
 "它、对于注册的应用程序是不是私有的等。"
 
-#: C/index-in.docbook:5299
+#: C/index-in.docbook:5302
 msgid "RecentManager"
 msgstr "最近管理器(RecentManager)"
 
-#: C/index-in.docbook:5300
+#: C/index-in.docbook:5303
 msgid ""
 "<classname>RecentManager</classname> acts as a database of recently used "
 "files. You use this class to register new files, remove files from the list, "
@@ -9221,7 +9218,7 @@ msgstr ""
 "注册新文件、从列表中删除文件、查找最近使用文件。每个用户都拥有一个最近使用的"
 "文件列表。"
 
-#: C/index-in.docbook:5306
+#: C/index-in.docbook:5309
 msgid ""
 "You can create a new <classname>RecentManager</classname>, but you'll most "
 "likely just want to use the default one. You can get a reference to the "
@@ -9232,18 +9229,18 @@ msgstr ""
 "那个。你可以通过<methodname>get_default()</methodname>获取默认"
 "<classname>RecentManager</classname>的引用。"
 
-#: C/index-in.docbook:5313
+#: C/index-in.docbook:5316
 msgid "Adding Items to the List of Recent Files"
 msgstr "将项目添加到最近文件列表"
 
-#: C/index-in.docbook:5314
+#: C/index-in.docbook:5317
 msgid ""
 "To add a new file to the list of recent documents, in the simplest case, you "
 "only need to provide the URI. For example:"
 msgstr ""
 "在最简单的情况下,要添加项目到最近文件列表只需要提供一个URI即可。例如:"
 
-#: C/index-in.docbook:5318
+#: C/index-in.docbook:5321
 #, no-wrap
 msgid ""
 "auto recent_manager = Gtk::RecentManager::get_default();\n"
@@ -9252,7 +9249,7 @@ msgstr ""
 "auto recent_manager = Gtk::RecentManager::get_default();\n"
 "recent_manager-&gt;add_item(uri);"
 
-#: C/index-in.docbook:5320
+#: C/index-in.docbook:5323
 msgid ""
 "If you want to register a file with metadata, you can pass a "
 "<classname>RecentManager::Data</classname> parameter to "
@@ -9263,7 +9260,7 @@ msgstr ""
 "classname>参数传递给<methodname>add_item()</methodname>。可以在特定的文件项上"
 "设置的元数据如下所示:"
 
-#: C/index-in.docbook:5328
+#: C/index-in.docbook:5331
 msgid ""
 "<varname>app_exec</varname>: The command line to be used to launch this "
 "resource. This string may contain the \"f\" and \"u\" escape characters "
@@ -9272,25 +9269,25 @@ msgstr ""
 "<varname>app_exec</varname>:用于启动此资源的命令行。此字符串可以包含\"f\"和"
 "\"u\"转义字符,它们将分别扩展为资源文件路径和URI"
 
-#: C/index-in.docbook:5334
+#: C/index-in.docbook:5337
 msgid ""
 "<varname>app_name</varname>: The name of the application that registered the "
 "resource"
 msgstr "<varname>app_name</varname>:此资源注册的应用程序名"
 
-#: C/index-in.docbook:5338
+#: C/index-in.docbook:5341
 msgid ""
 "<varname>description</varname>: A short description of the resource as a "
 "UTF-8 encoded string"
 msgstr "<varname>description</varname>:资源的简单描述(UTF-8编码字符串)"
 
-#: C/index-in.docbook:5342
+#: C/index-in.docbook:5345
 msgid ""
 "<varname>display_name</varname>: The name of the resource to be used for "
 "display as a UTF-8 encoded string"
 msgstr "<varname>display_name</varname>:用于显示的资源名(UTF-8编码字符串)"
 
-#: C/index-in.docbook:5346
+#: C/index-in.docbook:5349
 msgid ""
 "<varname>groups</varname>: A list of groups associated with this item. "
 "Groups are essentially arbitrary strings associated with a particular "
@@ -9300,28 +9297,28 @@ msgstr ""
 "<varname>groups</varname>:与该项相关联的组列表。组本质上是与特定资源相关联的"
 "任意字符串。可以将它们视为资源的类别(例如:电子邮件、图形等)或标签"
 
-#: C/index-in.docbook:5352
+#: C/index-in.docbook:5355
 msgid ""
 "<varname>is_private</varname>: Whether this resource should be visible only "
 "to applications that have registered it or not"
 msgstr ""
 "<varname>is_private</varname>:此资源是否仅对已注册该资源的应用程序可见"
 
-#: C/index-in.docbook:5356
+#: C/index-in.docbook:5359
 msgid "<varname>mime_type</varname>: The MIME type of the resource"
 msgstr "<varname>mime_type</varname>:此资源的MIME类型"
 
-#: C/index-in.docbook:5359
+#: C/index-in.docbook:5362
 msgid ""
 "In addition to adding items to the list, you can also look up items from the "
 "list and modify or remove items."
 msgstr "除了向列表中添加项目以外,你还可以从列表项中删除、修改、查找项目。"
 
-#: C/index-in.docbook:5365
+#: C/index-in.docbook:5368
 msgid "Looking up Items in the List of Recent Files"
 msgstr "在最近文件列表中查找项目"
 
-#: C/index-in.docbook:5366
+#: C/index-in.docbook:5369
 msgid ""
 "To look up recently used files, <classname>RecentManager</classname> "
 "provides several functions. To look up a specific item by its URI, you can "
@@ -9336,7 +9333,7 @@ msgstr ""
 "件列表中不存在,则<methodname>lookup_item()</methodname>将抛出一个"
 "<classname>RecentManagerError</classname>异常。例如:"
 
-#: C/index-in.docbook:5375
+#: C/index-in.docbook:5378
 #, no-wrap
 msgid ""
 "Glib::RefPtr&lt;Gtk::RecentInfo&gt; info;\n"
@@ -9367,7 +9364,7 @@ msgstr ""
 "  // item was found\n"
 "}"
 
-#: C/index-in.docbook:5388
+#: C/index-in.docbook:5391
 msgid ""
 "A <classname>RecentInfo</classname> object is essentially an object "
 "containing all of the metadata about a single recently-used file. You can "
@@ -9378,7 +9375,7 @@ msgstr ""
 "据的对象。你可以使用该对象查找<link linkend=\"list-file-metadata\">这里</"
 "link>所列出的任何属性。"
 
-#: C/index-in.docbook:5394
+#: C/index-in.docbook:5397
 msgid ""
 "If you don't want to look for a specific URI, but instead want to get a list "
 "of all recently used items, <classname>RecentManager</classname> provides "
@@ -9392,12 +9389,12 @@ msgstr ""
 "methodname>函数。这个函数返回值是一个<classname>std::vector</classname>,其包"
 "含了所有最近使用的文件。以下代码演示了你该如何获取最近使用文件列表:"
 
-#: C/index-in.docbook:5402
+#: C/index-in.docbook:5405
 #, no-wrap
 msgid "auto info_list = recent_manager-&gt;get_items();"
 msgstr "auto info_list = recent_manager-&gt;get_items();"
 
-#: C/index-in.docbook:5403
+#: C/index-in.docbook:5406
 msgid ""
 "The maximum age of items in the recently used files list can be set with "
 "<methodname>Gtk::Settings::property_gtk_recent_files_max_age()</methodname>. "
@@ -9406,11 +9403,11 @@ msgstr ""
 "可以使用<methodname>Gtk::Settings::property_gtk_recent_files_max_age()</"
 "methodname>设置最近使用文件列表中项目的最长使用期限。默认时长是:30天。"
 
-#: C/index-in.docbook:5410
+#: C/index-in.docbook:5413
 msgid "Modifying the List of Recent Files"
 msgstr "修改最近使用文件列表"
 
-#: C/index-in.docbook:5411
+#: C/index-in.docbook:5414
 msgid ""
 "There may be times when you need to modify the list of recent files. For "
 "instance, if a file is moved or renamed, you may need to update the file's "
@@ -9422,7 +9419,7 @@ msgstr ""
 "新该文件在最近使用文件列表中的位置,以使其不会指向错误的位置。你可以使用"
 "<methodname>move_item()</methodname>来更新项目的位置。"
 
-#: C/index-in.docbook:5418
+#: C/index-in.docbook:5421
 msgid ""
 "In addition to changing a file's URI, you can also remove items from the "
 "list, either one at a time or by clearing them all at once. The former is "
@@ -9433,7 +9430,7 @@ msgstr ""
 "用<methodname>remove_item()</methodname>,后者使用<methodname>purge_items()</"
 "methodname>。"
 
-#: C/index-in.docbook:5425
+#: C/index-in.docbook:5428
 msgid ""
 "The functions <methodname>move_item()</methodname>, "
 "<methodname>remove_item()</methodname> and <methodname>purge_items()</"
@@ -9444,7 +9441,7 @@ msgstr ""
 "和<methodname>purge_items()</methodname>并不影响URI所引用的真实文件,它们只是"
 "对最近文件列表进行修改。"
 
-#: C/index-in.docbook:5438
+#: C/index-in.docbook:5441
 msgid ""
 "<classname>FileChooser</classname> is an interface that can be implemented "
 "by widgets displaying a list of files. <application>gtkmm</application> "
@@ -9459,7 +9456,7 @@ msgstr ""
 "<classname>FileChooserDialog</classname>、<classname>FileChooserNative</"
 "classname>。"
 
-#: C/index-in.docbook:5447
+#: C/index-in.docbook:5450
 msgid ""
 "<classname>FileChooserWidget</classname> is a simple widget for displaying a "
 "list of recently used files or other files. <classname>FileChooserWidget</"
@@ -9471,11 +9468,11 @@ msgstr ""
 "<classname>FileChooserDialog</classname>的基本构建块,但是你根据需要可以将其"
 "嵌入到用户界面中。"
 
-#: C/index-in.docbook:5455
+#: C/index-in.docbook:5458
 msgid "Simple FileChooserDialog example"
 msgstr "简单的文件选择对话框示例"
 
-#: C/index-in.docbook:5456
+#: C/index-in.docbook:5459
 msgid ""
 "Shown below is a simple example of how to use the "
 "<classname>FileChooserDialog</classname> class in a program. This simple "
@@ -9490,7 +9487,7 @@ msgstr ""
 "如果你选中侧边栏的<guimenuitem>Recent</guimenuitem>,则对话框将显示最近使用文"
 "件列表。"
 
-#: C/index-in.docbook:5466
+#: C/index-in.docbook:5469
 msgid ""
 "If this is the first time you're using a program that uses the Recent Files "
 "framework, the dialog may be empty at first. Otherwise it should show the "
@@ -9499,7 +9496,7 @@ msgstr ""
 "如果这是你第一次使用使用了最近文件框架的应用程序,那么对话框最初可能是空的。"
 "否则它应该显示其他应用程序注册的最近使用文件列表。"
 
-#: C/index-in.docbook:5473
+#: C/index-in.docbook:5476
 msgid ""
 "After selecting the <guimenuitem>File Chooser Dialog</guimenuitem> menu item "
 "and the <guimenuitem>Recent</guimenuitem> sidebar item, you should see "
@@ -9508,7 +9505,7 @@ msgstr ""
 "选择<guimenuitem>File Chooser Dialog</guimenuitem>菜单项和"
 "<guimenuitem>Recent</guimenuitem>侧边项后,你将看到与下方窗口类似的内容。"
 
-#: C/index-in.docbook:5481
+#: C/index-in.docbook:5484
 msgid ""
 "<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
 "examples/book/recent_files\">Source Code</ulink>"
@@ -9516,7 +9513,7 @@ msgstr ""
 "<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
 "examples/book/recent_files\">源代码</ulink>"
 
-#: C/index-in.docbook:5482
+#: C/index-in.docbook:5485
 msgid ""
 "The constructor for <classname>ExampleWindow</classname> creates the menu "
 "and the toolbar using <classname>Builder</classname> (see <xref linkend="
@@ -9527,11 +9524,11 @@ msgstr ""
 "classname>创建菜单和工具栏(更多有关信息请参阅<xref linkend=\"chapter-menus-"
 "and-toolbars\"/>)。然后将菜单和工具栏添加到窗口中。"
 
-#: C/index-in.docbook:5490
+#: C/index-in.docbook:5493
 msgid "Filtering Files"
 msgstr "筛选文件"
 
-#: C/index-in.docbook:5491
+#: C/index-in.docbook:5494
 msgid ""
 "For any of the <classname>FileChooser</classname> classes, if you don't wish "
 "to display all of the items in the list of files, you can filter the list to "
@@ -9546,7 +9543,7 @@ msgstr ""
 "(<methodname>add_pattern()</methodname>)或MIME类型"
 "(<methodname>add_mime_type()</methodname>)筛选文件。"
 
-#: C/index-in.docbook:5500
+#: C/index-in.docbook:5503
 msgid ""
 "After you've created and set up the filter to match only the items you want, "
 "you can apply a filter to a chooser widget with the <methodname>FileChooser::"
@@ -9556,11 +9553,11 @@ msgstr ""
 "<methodname>FileChooser::add_filter()</methodname>函数将筛选器应用于你所选的"
 "部件。"
 
-#: C/index-in.docbook:5510
+#: C/index-in.docbook:5513
 msgid "Keyboard Events"
 msgstr "键盘事件"
 
-#: C/index-in.docbook:5511
+#: C/index-in.docbook:5514
 msgid ""
 "X events differ in some ways from other signals. These differences are "
 "described in the <link linkend=\"sec-xeventsignals\">X Event signals</link> "
@@ -9571,11 +9568,11 @@ msgstr ""
 "xeventsignals\">X事件信号</link>小节中说明。在这,我们将使用键盘事件说明如何"
 "在程序中使用X事件。"
 
-#: C/index-in.docbook:5518
+#: C/index-in.docbook:5521
 msgid "Overview"
 msgstr "总览"
 
-#: C/index-in.docbook:5519
+#: C/index-in.docbook:5522
 msgid ""
 "Whenever you press or release a key, an event is emitted. You can connect a "
 "signal handler to handle such events."
@@ -9583,7 +9580,7 @@ msgstr ""
 "每当你按下或放开一个按键,就会发出一个事件。你可以连接到信号处理函数来处理此"
 "类事件。"
 
-#: C/index-in.docbook:5523
+#: C/index-in.docbook:5526
 msgid ""
 "The event signal handler will receive an argument that depends on the type "
 "of event. For keyboard events it's a <type>GdkEventKey*</type>. As discribed "
@@ -9597,7 +9594,7 @@ msgstr ""
 "link>中所述,事件处理函数返回一个<type>bool</type>值,以表示信号已经被完全处"
 "理(返回<literal>true</literal>)或允许事件传播(<literal>false</literal>)。"
 
-#: C/index-in.docbook:5532
+#: C/index-in.docbook:5535
 msgid ""
 "To determine which key was pressed or released, you read the value of "
 "<varname>GdkEventKey::keyval</varname> and compare it with a constant in the "
@@ -9610,7 +9607,11 @@ msgstr ""
 "较。<varname>GdkEventKey::state</varname>的位标志可以用作表示修饰键(shift、"
 "ctrl等)的状态。"
 
-#: C/index-in.docbook:5541
+#: C/index-in.docbook:5542 C/index-in.docbook:8400
+msgid "Here's a simple example:"
+msgstr "这是一个简单的例子:"
+
+#: C/index-in.docbook:5545
 #, no-wrap
 msgid ""
 "\n"
@@ -9651,11 +9652,7 @@ msgstr ""
 "m_entry.signal_key_press_event().connect( sigc::ptr_fun(&amp;on_key_press_or_release_event) );\n"
 "m_entry.signal_key_release_event().connect( sigc::ptr_fun(&amp;on_key_press_or_release_event) );\n"
 
-#: C/index-in.docbook:5539 C/index-in.docbook:8443
-msgid "Here's a simple example: <_:programlisting-1/>"
-msgstr "这是一个简单的例子:<_:programlisting-1/>"
-
-#: C/index-in.docbook:5564
+#: C/index-in.docbook:5567
 msgid ""
 "In this example there are three keyboard shortcuts: <keycap>Alt</keycap>"
 "+<keycap>1</keycap> selects the first radio button, <keycap>Alt</keycap>"
@@ -9670,11 +9667,11 @@ msgstr ""
 "linkend=\"sec-overriding-default-signal-handlers\">覆盖默认信号处理程序</"
 "link>小节所述。"
 
-#: C/index-in.docbook:5575
+#: C/index-in.docbook:5578
 msgid "Keyboard Events - Simple"
 msgstr "键盘事件 - 简单"
 
-#: C/index-in.docbook:5581
+#: C/index-in.docbook:5584
 msgid ""
 "<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
 "examples/book/keyboard_events/simple/\">Source Code</ulink>"
@@ -9682,11 +9679,11 @@ msgstr ""
 "<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
 "examples/book/keyboard_events/simple/\">源代码</ulink>"
 
-#: C/index-in.docbook:5586
+#: C/index-in.docbook:5589
 msgid "Event Propagation"
 msgstr "事件传播"
 
-#: C/index-in.docbook:5587
+#: C/index-in.docbook:5590
 msgid ""
 "Event propagation means that, when an event is emitted on a particular "
 "widget, it can be passed to its parent widget (and that widget can pass it "
@@ -9697,7 +9694,7 @@ msgstr ""
 "个部件又可以将信号传递给它的父部件,以此类推),如果父部件有对该事件的事件处"
 "理程序,该处理程序将被调用。"
 
-#: C/index-in.docbook:5593
+#: C/index-in.docbook:5596
 msgid ""
 "Contrary to other events, keyboard events are first sent to the toplevel "
 "window (<classname>Gtk::Window</classname>), where it will be checked for "
@@ -9711,7 +9708,7 @@ msgstr ""
 "键、助记符)。然后(假设事件没有被处理)将其发送到焦点部件,然后从此部件开始"
 "传播。"
 
-#: C/index-in.docbook:5601
+#: C/index-in.docbook:5604
 msgid ""
 "The event will propagate until it reaches the top-level widget, or until you "
 "stop the propagation by returning <literal>true</literal> from an event "
@@ -9720,13 +9717,13 @@ msgstr ""
 "事件将一直传播直到顶级窗口为止或直到你通过事件处理程序返回<literal>true</"
 "literal>为止。"
 
-#: C/index-in.docbook:5606
+#: C/index-in.docbook:5609
 msgid ""
 "Notice, that after canceling an event, no other function will be called "
 "(even if it is from the same widget)."
 msgstr "请注意,取消事件之后,不再会调用其他函数(哪怕它来自同一个部件)。"
 
-#: C/index-in.docbook:5613
+#: C/index-in.docbook:5616
 msgid ""
 "In this example there are three event handlers that are called after "
 "<classname>Gtk::Window</classname>'s default event handler, one in the "
@@ -9738,7 +9735,7 @@ msgstr ""
 "<classname>Gtk::Grid</classname>中、一个在<classname>Gtk::Window</classname>"
 "中。"
 
-#: C/index-in.docbook:5619
+#: C/index-in.docbook:5622
 msgid ""
 "In the <classname>Gtk::Window</classname>, we have also the default handler "
 "overridden (<methodname>on_key_release_event()</methodname>), and another "
@@ -9749,13 +9746,13 @@ msgstr ""
 "(<methodname>on_key_release_event()</methodname>),并在调用默认处理程序之前"
 "调用了另一个处理程序(<methodname>windowKeyReleaseBefore()</methodname>)。"
 
-#: C/index-in.docbook:5625
+#: C/index-in.docbook:5628
 msgid ""
 "The purpose of this example is to show the steps the event takes when it is "
 "emitted."
 msgstr "本示例的目的是显示事件发出时进行的步骤。"
 
-#: C/index-in.docbook:5628
+#: C/index-in.docbook:5631
 msgid ""
 "When you write in the entry, a key release event will be emitted, which will "
 "go first to the toplevel window (<classname>Gtk::Window</classname>), since "
@@ -9777,11 +9774,11 @@ msgstr ""
 "播,你写入的文本将出现在<classname>Entry</classname>上方的<classname>Label</"
 "classname>中。"
 
-#: C/index-in.docbook:5643
+#: C/index-in.docbook:5646
 msgid "Keyboard Events - Event Propagation"
 msgstr "键盘事件 - 事件传播"
 
-#: C/index-in.docbook:5649
+#: C/index-in.docbook:5652
 msgid ""
 "<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
 "examples/book/keyboard_events/propagation/\">Source Code</ulink>"
@@ -9789,15 +9786,15 @@ msgstr ""
 "<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
 "examples/book/keyboard_events/propagation/\">源代码</ulink>"
 
-#: C/index-in.docbook:5655
+#: C/index-in.docbook:5658
 msgid "Timeouts, I/O and Idle Functions"
 msgstr "超时,I/O和空闲函数"
 
-#: C/index-in.docbook:5658
+#: C/index-in.docbook:5661
 msgid "Timeouts"
 msgstr "超时"
 
-#: C/index-in.docbook:5660
+#: C/index-in.docbook:5663
 msgid ""
 "You may be wondering how to make <application>gtkmm</application> do useful "
 "work while it's idling along. Happily, you have several options. Using the "
@@ -9807,7 +9804,7 @@ msgstr ""
 "你可能想知道如何使<application>gtkmm</application>在空闲的时候做一些有用的工"
 "作。幸运的是你有几种选择。你可以创建一个每几毫秒就调用的超时方法。"
 
-#: C/index-in.docbook:5667
+#: C/index-in.docbook:5669
 #, no-wrap
 msgid ""
 "\n"
@@ -9818,7 +9815,7 @@ msgstr ""
 "sigc::connection Glib::SignalTimeout::connect(const sigc::slot&lt;bool()&gt;&amp; slot,\n"
 "                                      unsigned int interval, int priority = Glib::PRIORITY_DEFAULT);\n"
 
-#: C/index-in.docbook:5673
+#: C/index-in.docbook:5674
 msgid ""
 "The first argument is a <classname>slot</classname> you wish to have called "
 "when the timeout occurs. The second argument is the number of milliseconds "
@@ -9831,7 +9828,7 @@ msgstr ""
 "classname>对象,可以在该对象上调用<methodname>disconnect()</methodname>方法断"
 "开连接。"
 
-#: C/index-in.docbook:5683
+#: C/index-in.docbook:5682
 #, no-wrap
 msgid ""
 "\n"
@@ -9840,29 +9837,28 @@ msgstr ""
 "\n"
 "my_connection.disconnect();\n"
 
-#: C/index-in.docbook:5695
-#, no-wrap
-msgid ""
-"\n"
-"bool MyCallback() { std::cout &lt;&lt; \"Hello World!\\n\" &lt;&lt; std::endl; return true; }\n"
-msgstr ""
-"\n"
-"bool MyCallback() { std::cout &lt;&lt; \"Hello World!\\n\" &lt;&lt; std::endl; return true; }\n"
-
-#: C/index-in.docbook:5688
+#: C/index-in.docbook:5686
 msgid ""
 "Another way of destroying the connection is your signal handler. It has to "
 "be of the type <classname>sigc::slot&lt;bool()&gt;</classname>. As you see "
 "from the definition your signal handler has to return a value of the type "
 "<literal>bool</literal>. A definition of a sample method might look like "
-"this: <_:programlisting-1/>"
+"this:"
 msgstr ""
 "破坏连接的另一种方法是通过你的信号处理函数的返回值。其类型必须是"
 "<classname>sigc::slot&lt;bool()&gt;</classname>。从定义可以看出信号处理函数必"
-"须返回一个<literal>bool</literal>类型的值。示例方法的定义可能如下所示:<_:"
-"programlisting-1/>"
+"须返回一个<literal>bool</literal>类型的值。示例方法的定义可能如下所示:"
+
+#: C/index-in.docbook:5694
+#, no-wrap
+msgid ""
+"\n"
+"bool MyCallback() { std::cout &lt;&lt; \"Hello World!\\n\" &lt;&lt; std::endl; return true; }\n"
+msgstr ""
+"\n"
+"bool MyCallback() { std::cout &lt;&lt; \"Hello World!\\n\" &lt;&lt; std::endl; return true; }\n"
 
-#: C/index-in.docbook:5701
+#: C/index-in.docbook:5698
 msgid ""
 "You can stop the timeout method by returning <literal>false</literal> from "
 "your signal handler. Therefore, if you want your method to be called "
@@ -9872,11 +9868,11 @@ msgstr ""
 "此,如果你还想重复调用此方法,则你需要让信号处理函数返回<literal>true</"
 "literal>。"
 
-#: C/index-in.docbook:5707
+#: C/index-in.docbook:5704
 msgid "Here's an example of this technique:"
 msgstr "这是此技术的示例:"
 
-#: C/index-in.docbook:5711
+#: C/index-in.docbook:5708
 msgid ""
 "<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
 "examples/book/timeout/\">Source Code</ulink>"
@@ -9884,11 +9880,11 @@ msgstr ""
 "<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
 "examples/book/timeout/\">源代码</ulink>"
 
-#: C/index-in.docbook:5716
+#: C/index-in.docbook:5713
 msgid "Monitoring I/O"
 msgstr "监视I/O"
 
-#: C/index-in.docbook:5718
+#: C/index-in.docbook:5715
 msgid ""
 "A nifty feature of Glib (one of the libraries underlying <application>gtkmm</"
 "application>) is the ability to have it check for data on a file descriptor "
@@ -9899,7 +9895,7 @@ msgstr ""
 "帮你检查文件描述符中的数据的能力。这对于需要联网的应用程序十分的有用。使用以"
 "下方法来执行此操作:"
 
-#: C/index-in.docbook:5726
+#: C/index-in.docbook:5722
 #, no-wrap
 msgid ""
 "\n"
@@ -9912,7 +9908,7 @@ msgstr ""
 "                                 Glib::PollFD::fd_t fd, Glib::IOCondition condition,\n"
 "                                 int priority = Glib::PRIORITY_DEFAULT);\n"
 
-#: C/index-in.docbook:5733
+#: C/index-in.docbook:5728
 msgid ""
 "The first argument is a slot you wish to have called when the specified "
 "event (see argument 3) occurs on the file descriptor you specify using "
@@ -9924,37 +9920,37 @@ msgstr ""
 "使用<literal>|</literal>,例如:<literal>Glib::IO_IN | Glib::IO_OUT | Glib::"
 "IO_PRI</literal>):"
 
-#: C/index-in.docbook:5743
+#: C/index-in.docbook:5738
 msgid ""
 "Glib::IO_IN - Call your method when there is data ready for reading on your "
 "file descriptor."
 msgstr "Glib::IO_IN - 当你提供的文件描述符有数据准备好被读取时调用你的方法。"
 
-#: C/index-in.docbook:5751
+#: C/index-in.docbook:5746
 msgid ""
 "Glib::IO_OUT - Call your method when the file descriptor is ready for "
 "writing."
 msgstr "Glib::IO_OUT - 当提供的文件描述符准备好被写入时调用你的方法。"
 
-#: C/index-in.docbook:5759
+#: C/index-in.docbook:5754
 msgid ""
 "Glib::IO_PRI - Call your method when the file descriptor has urgent data to "
 "be read."
 msgstr "Glib::IO_PRI - 当提供的文件描述符有紧急数据要读取时调用你的方法。"
 
-#: C/index-in.docbook:5766
+#: C/index-in.docbook:5761
 msgid ""
 "Glib::IO_ERR - Call your method when an error has occurred on the file "
 "descriptor."
 msgstr "Glib::IO_ERR - 当提供的文件描述符上发生错误的时候调用你的方法。"
 
-#: C/index-in.docbook:5773
+#: C/index-in.docbook:5768
 msgid ""
 "Glib::IO_HUP - Call your method when hung up (the connection has been broken "
 "usually for pipes and sockets)."
 msgstr "Glib::IO_HUP - 挂起时(常见于管道和套接字的连接被断开)调用你的方法。"
 
-#: C/index-in.docbook:5780
+#: C/index-in.docbook:5775
 msgid ""
 "The return value is a <classname>sigc::connection</classname> that may be "
 "used to stop monitoring this file descriptor using its "
@@ -9965,7 +9961,7 @@ msgstr ""
 "<methodname>disconnect()</methodname>方法以停止对该文件描述符的监视。信号处理"
 "函数<parameter>slot</parameter>应声明如下:"
 
-#: C/index-in.docbook:5787
+#: C/index-in.docbook:5781
 #, no-wrap
 msgid ""
 "\n"
@@ -9974,7 +9970,7 @@ msgstr ""
 "\n"
 "bool input_callback(Glib::IOCondition condition);\n"
 
-#: C/index-in.docbook:5792
+#: C/index-in.docbook:5785
 msgid ""
 "where <parameter>condition</parameter> is as specified above. As usual the "
 "slot is created with <function>sigc::mem_fun()</function> (for a member "
@@ -9985,7 +9981,7 @@ msgstr ""
 "mem_fun()</function>(通过一个对象的成员函数创建)或<function>sigc::"
 "ptr_fun()</function>(通过一个普通函数创建)函数创建槽。"
 
-#: C/index-in.docbook:5799
+#: C/index-in.docbook:5792
 msgid ""
 "A little example follows. To use the example just execute it from a "
 "terminal; it doesn't create a window. It will create a pipe named "
@@ -9999,7 +9995,7 @@ msgstr ""
 "shell并执行<literal>echo \"Hello\" &gt; testfifo</literal>。该示例将打印你输"
 "入的每一行直到你执行<literal>echo \"Q\" &gt; testfifo</literal>"
 
-#: C/index-in.docbook:5808
+#: C/index-in.docbook:5801
 msgid ""
 "<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
 "examples/book/input/\">Source Code</ulink>"
@@ -10007,17 +10003,17 @@ msgstr ""
 "<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
 "examples/book/input/\">源代码</ulink>"
 
-#: C/index-in.docbook:5813
+#: C/index-in.docbook:5806
 msgid "Idle Functions"
 msgstr "空闲函数"
 
-#: C/index-in.docbook:5815
+#: C/index-in.docbook:5808
 msgid ""
 "If you want to specify a method that gets called when nothing else is "
 "happening, use the following:"
 msgstr "如果你想要指定一个在无事发生时调用的方法,请使用以下函数:"
 
-#: C/index-in.docbook:5820
+#: C/index-in.docbook:5812
 #, no-wrap
 msgid ""
 "\n"
@@ -10028,7 +10024,7 @@ msgstr ""
 "sigc::connection  Glib::SignalIdle::connect(const sigc::slot&lt;bool()&gt;&amp; slot,\n"
 "                                    int priority = Glib::PRIORITY_DEFAULT_IDLE);\n"
 
-#: C/index-in.docbook:5826
+#: C/index-in.docbook:5817
 msgid ""
 "This causes <application>gtkmm</application> to call the specified method "
 "whenever nothing else is happening. You can add a priority (lower numbers "
@@ -10043,7 +10039,7 @@ msgstr ""
 "methodname>、在信号处理程序中返回<literal>false</literal>,信号处理程序的声明"
 "应如下所示:"
 
-#: C/index-in.docbook:5836
+#: C/index-in.docbook:5826
 #, no-wrap
 msgid ""
 "\n"
@@ -10052,14 +10048,14 @@ msgstr ""
 "\n"
 "bool idleFunc();\n"
 
-#: C/index-in.docbook:5841
+#: C/index-in.docbook:5830
 msgid ""
 "Since this is very similar to the methods above this explanation should be "
 "sufficient to understand what's going on. However, here's a little example:"
 msgstr ""
 "这与前一小节的方法极其类似,所以在此不再进行过多的解释。以下是个小例子:"
 
-#: C/index-in.docbook:5846
+#: C/index-in.docbook:5835
 msgid ""
 "<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
 "examples/book/idle/\">Source Code</ulink>"
@@ -10067,7 +10063,7 @@ msgstr ""
 "<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
 "examples/book/idle/\">源代码</ulink>"
 
-#: C/index-in.docbook:5848
+#: C/index-in.docbook:5837
 msgid ""
 "This example points out the difference of idle and timeout methods a little. "
 "If you need methods that are called periodically, and speed is not very "
@@ -10079,7 +10075,7 @@ msgstr ""
 "则你应该使用超时方法。如果你需要尽可能多的调用方法(例如在后台计算分形)那你"
 "应该使用空闲方法。"
 
-#: C/index-in.docbook:5856
+#: C/index-in.docbook:5845
 msgid ""
 "Try executing the example and increasing the system load. The upper progress "
 "bar will increase steadily; the lower one will slow down."
@@ -10087,15 +10083,15 @@ msgstr ""
 "尝试执行此示例并逐渐增加系统的负载。上方的进度条将稳定的逐渐增加;下方的则会"
 "增加的越来越慢。"
 
-#: C/index-in.docbook:5866
+#: C/index-in.docbook:5855
 msgid "Memory management"
 msgstr "内存管理"
 
-#: C/index-in.docbook:5872
+#: C/index-in.docbook:5861
 msgid "Normal C++ memory management"
 msgstr "标准C++内存管理"
 
-#: C/index-in.docbook:5874
+#: C/index-in.docbook:5863
 msgid ""
 "<application>gtkmm</application> allows the programmer to control the "
 "lifetime (that is, the construction and destruction) of any widget in the "
@@ -10114,15 +10110,15 @@ msgstr ""
 "灵活性在某些C++ GUI工具包中不存在,这些工具包限制程序员只能使用C++内存管理特"
 "性中的一部分。"
 
-#: C/index-in.docbook:5886
+#: C/index-in.docbook:5875
 msgid "Here are some examples of normal C++ memory management:"
 msgstr "以下是一些使用标准C++进行内存管理的示例:"
 
-#: C/index-in.docbook:5889
+#: C/index-in.docbook:5878
 msgid "Class Scope widgets"
 msgstr "类作用域部件"
 
-#: C/index-in.docbook:5891
+#: C/index-in.docbook:5880
 msgid ""
 "If a programmer does not need dynamic memory allocation, automatic widgets "
 "in class scope may be used. One advantage of automatic widgets in class "
@@ -10133,7 +10129,7 @@ msgstr ""
 "类作用域中使用自动储存期的部件的优点之一是内存管理被集中在一个地方。程序员不"
 "需要承担因<literal>delete</literal>部件出现差错而导致内存泄漏的风险。"
 
-#: C/index-in.docbook:5898
+#: C/index-in.docbook:5887
 msgid ""
 "The primary disadvantage of using class scope widgets is revealing the class "
 "implementation rather than the class interface in the class header."
@@ -10141,7 +10137,7 @@ msgstr ""
 "使用类作用域部件的主要缺点是在包含类声明的头文件中展示了类的实现而不只是类的"
 "接口。"
 
-#: C/index-in.docbook:5904
+#: C/index-in.docbook:5892
 #, no-wrap
 msgid ""
 "\n"
@@ -10164,11 +10160,20 @@ msgstr ""
 "  // will be destroyed when the Foo object is destroyed\n"
 "};\n"
 
-#: C/index-in.docbook:5918
+#: C/index-in.docbook:5905
 msgid "Function scope widgets"
 msgstr "函数作用域部件"
 
-#: C/index-in.docbook:5924
+#: C/index-in.docbook:5907
+msgid ""
+"If a programmer does not need a class scope widget, a function scope widget "
+"may also be used. The advantages to function scope over class scope are the "
+"increased data hiding and reduced dependencies."
+msgstr ""
+"如果程序员不需要类作用域部件,那么也可以使用函数作用域部件。函数作用域相比于"
+"类作用域的优点是增加了数据的隐蔽性和隐藏了依赖。"
+
+#: C/index-in.docbook:5912
 #, no-wrap
 msgid ""
 "\n"
@@ -10187,20 +10192,11 @@ msgstr ""
 "  app-&gt;run();\n"
 "}\n"
 
-#: C/index-in.docbook:5920
-msgid ""
-"If a programmer does not need a class scope widget, a function scope widget "
-"may also be used. The advantages to function scope over class scope are the "
-"increased data hiding and reduced dependencies. <_:programlisting-1/>"
-msgstr ""
-"如果程序员不需要类作用域部件,那么也可以使用函数作用域部件。函数作用域相比于"
-"类作用域的优点是增加了数据的隐蔽性和隐藏了依赖。<_:programlisting-1/>"
-
-#: C/index-in.docbook:5936
+#: C/index-in.docbook:5923
 msgid "Dynamic allocation with new and delete"
 msgstr "使用new和delete进行动态分配"
 
-#: C/index-in.docbook:5946
+#: C/index-in.docbook:5933
 #, no-wrap
 msgid ""
 "\n"
@@ -10217,7 +10213,7 @@ msgstr ""
 "\n"
 "delete pButton;\n"
 
-#: C/index-in.docbook:5938
+#: C/index-in.docbook:5925
 msgid ""
 "Usually, the programmer will prefer to allow containers to automatically "
 "destroy their children by creating them using <function>Gtk::make_managed()</"
@@ -10236,11 +10232,11 @@ msgstr ""
 "让他们的父部件销毁它们,而不是手动执行动态内存分配。<_:programlisting-1/> 在"
 "这,程序员删除<varname>pButton</varname>以防止内存泄漏。"
 
-#: C/index-in.docbook:5960
+#: C/index-in.docbook:5947
 msgid "Managed Widgets"
 msgstr "托管部件"
 
-#: C/index-in.docbook:5962
+#: C/index-in.docbook:5949
 msgid ""
 "Alternatively, you can let a widget's container control when the widget is "
 "destroyed. In most cases, you want a widget to last only as long as the "
@@ -10256,11 +10252,11 @@ msgstr ""
 "<methodname>Gtk::Box::append()</methodname>这类的方法将其装入容器中。这样部件"
 "就会随着容器一并销毁。"
 
-#: C/index-in.docbook:5972
+#: C/index-in.docbook:5959
 msgid "Dynamic allocation with make_managed() and append()"
 msgstr "使用make_managed()和append()进行动态分配"
 
-#: C/index-in.docbook:5974
+#: C/index-in.docbook:5961
 msgid ""
 "<application>gtkmm</application> provides ways including the "
 "<function>make_managed()</function> function and <methodname>Gtk::Box::"
@@ -10271,7 +10267,7 @@ msgstr ""
 "函数和<methodname>Gtk::Box::append()</methodname>方法在内的用于简化创建和销毁"
 "部件的很多方法。这些部件的生命周期可以由其父部件进行管理。"
 
-#: C/index-in.docbook:5980
+#: C/index-in.docbook:5967
 msgid ""
 "Every widget except a top-level window must be added to a parent container "
 "in order to be displayed. The <function>manage()</function> function marks a "
@@ -10288,7 +10284,7 @@ msgstr ""
 "行管理的部件的原始方法是调用<function>manage()</function>,并将向其传入使用"
 "<literal>new</literal>表达式创建的动态分配的部件。"
 
-#: C/index-in.docbook:5990
+#: C/index-in.docbook:5977
 msgid ""
 "However, usually, when you create such a widget, you will already know that "
 "its parent container should be responsible for destroying it, In addition, "
@@ -10307,7 +10303,7 @@ msgstr ""
 "数,这个函数将两个步骤合并到了一起。这避免了让你编写现代C++风格不建议的带有"
 "<literal>new</literal>的代码,并更清楚的表达了创建托管部件的意图。"
 
-#: C/index-in.docbook:6002
+#: C/index-in.docbook:5988
 #, no-wrap
 msgid ""
 "\n"
@@ -10324,20 +10320,19 @@ msgstr ""
 "  append(*pButton); //add *pButton to MyContainer\n"
 "}\n"
 
-#: C/index-in.docbook:6001
+#: C/index-in.docbook:5995
 msgid ""
-"<_:programlisting-1/> Now, when objects of type <classname>MyContainer</"
-"classname> are destroyed, the button will also be deleted. It is no longer "
-"necessary to delete <varname>pButton</varname> to free the button's memory; "
-"its deletion has been delegated to the <classname>MyContainer</classname> "
-"object."
+"Now, when objects of type <classname>MyContainer</classname> are destroyed, "
+"the button will also be deleted. It is no longer necessary to delete "
+"<varname>pButton</varname> to free the button's memory; its deletion has "
+"been delegated to the <classname>MyContainer</classname> object."
 msgstr ""
-"<_:programlisting-1/> 现在,当你销毁<classname>MyContainer</classname>类型对"
+"现在,当你销毁<classname>MyContainer</classname>类型对"
 "象时,该按钮也被销毁。不再需要主动<literal>delete</literal><varname>pButton</"
 "varname>以释放其内存;对其的删除操作委托给了<classname>MyContainer</"
 "classname>对象。"
 
-#: C/index-in.docbook:6015
+#: C/index-in.docbook:6002
 msgid ""
 "Note that if you never added the widget to any parent container, or you did "
 "but later <methodname>Gtk::Container::remove()</methodname>d it from said "
@@ -10352,7 +10347,7 @@ msgstr ""
 "<function>manage()</function>之前的状态,这通常意味着删除部件的责任被归还给了"
 "用户。"
 
-#: C/index-in.docbook:6023
+#: C/index-in.docbook:6010
 msgid ""
 "Of course, a top-level container will not be added to another container. The "
 "programmer is responsible for destroying the top-level container using one "
@@ -10363,11 +10358,11 @@ msgstr ""
 "级容器。例如,你的顶级窗口可能只是<function>main()</function>函数中的一个实"
 "例。"
 
-#: C/index-in.docbook:6035
+#: C/index-in.docbook:6022
 msgid "Shared resources"
 msgstr "共享资源"
 
-#: C/index-in.docbook:6037
+#: C/index-in.docbook:6024
 msgid ""
 "Some objects, such as <classname>Gdk::Pixbuf</classname>s and "
 "<classname>Pango::Font</classname>s, are obtained from a shared store. "
@@ -10383,7 +10378,15 @@ msgstr ""
 "智能指针<classname>Glib::RefPtr&lt;&gt;</classname>而不是要求你引用和解引用这"
 "些对象。开罗有自己的智能指针:<classname>Cairo::RefPtr&lt;&gt;</classname>。"
 
-#: C/index-in.docbook:6050
+#: C/index-in.docbook:6034
+msgid ""
+"Objects such as <classname>Gdk::Pixbuf</classname> can only be instantiated "
+"with a <methodname>create()</methodname> function. For instance,"
+msgstr ""
+"诸如<classname>Gdk::Pixbuf</classname>之类的对象只能通过"
+"<methodname>create()</methodname>函数进行实例化。例如:"
+
+#: C/index-in.docbook:6038
 #, no-wrap
 msgid ""
 "\n"
@@ -10392,16 +10395,16 @@ msgstr ""
 "\n"
 "auto pixbuf = Gdk::Pixbuf::create_from_file(filename);\n"
 
-#: C/index-in.docbook:6047
+#: C/index-in.docbook:6042
 msgid ""
-"Objects such as <classname>Gdk::Pixbuf</classname> can only be instantiated "
-"with a <methodname>create()</methodname> function. For instance, <_:"
-"programlisting-1/>"
+"You have no way of getting a bare <classname>Gdk::Pixbuf</classname>. In the "
+"example, <varname>pixbuf</varname> is a smart pointer, so you can do this, "
+"much like a normal pointer:"
 msgstr ""
-"诸如<classname>Gdk::Pixbuf</classname>之类的对象只能通过"
-"<methodname>create()</methodname>函数进行实例化。例如:<_:programlisting-1/>"
+"你无法暴露<classname>Gdk::Pixbuf</classname>对象。在示例中,<varname>pixbuf</"
+"varname>是一个智能指针,因此可以像正常指针一样执行此操作:"
 
-#: C/index-in.docbook:6059
+#: C/index-in.docbook:6047
 #, no-wrap
 msgid ""
 "\n"
@@ -10420,16 +10423,6 @@ msgstr ""
 
 #: C/index-in.docbook:6055
 msgid ""
-"You have no way of getting a bare <classname>Gdk::Pixbuf</classname>. In the "
-"example, <varname>pixbuf</varname> is a smart pointer, so you can do this, "
-"much like a normal pointer: <_:programlisting-1/>"
-msgstr ""
-"你无法暴露<classname>Gdk::Pixbuf</classname>对象。在示例中,<varname>pixbuf</"
-"varname>是一个智能指针,因此可以像正常指针一样执行此操作:<_:"
-"programlisting-1/>"
-
-#: C/index-in.docbook:6068
-msgid ""
 "When <varname>pixbuf</varname> goes out of scope an <methodname>unref()</"
 "methodname> will happen in the background and you don't need to worry about "
 "it anymore. There's no <literal>new</literal> so there's no <literal>delete</"
@@ -10439,7 +10432,7 @@ msgstr ""
 "methodname>,你无需为它担心。没有进行<literal>new</literal>因此也不需要进行"
 "<literal>delete</literal>。"
 
-#: C/index-in.docbook:6076
+#: C/index-in.docbook:6063
 #, no-wrap
 msgid ""
 "\n"
@@ -10448,7 +10441,7 @@ msgstr ""
 "\n"
 "auto pixbuf2 = pixbuf;\n"
 
-#: C/index-in.docbook:6074
+#: C/index-in.docbook:6061
 msgid ""
 "If you copy a <classname>RefPtr</classname>, for instance <_:"
 "programlisting-1/> , or if you pass it as a method argument or a return "
@@ -10461,35 +10454,35 @@ msgstr ""
 "做必要的引用以确保在最后一个<classname>RefPtr</classname>超出作用域之前该实例"
 "不会被销毁。"
 
-#: C/index-in.docbook:6084
+#: C/index-in.docbook:6071
 msgid ""
 "See the <link linkend=\"chapter-refptr\">appendix</link> for detailed "
 "information about RefPtr."
 msgstr ""
 "更多与RefPtr有关的信息,请参见<link linkend=\"chapter-refptr\">附录</link>。"
 
-#: C/index-in.docbook:6089
+#: C/index-in.docbook:6076
 msgid ""
 "Bjarne Stroustrup, \"The C++ Programming Language\" Forth Edition - section "
 "34.3"
 msgstr "Bjarne Stroustrup,《C++编程语言》第四版 第34章第3小节"
 
-#: C/index-in.docbook:6092
+#: C/index-in.docbook:6079
 msgid "Nicolai M. Josuttis, \"The C++ Standard Library\" - section 4.2"
 msgstr "Nicolai M. Josuttis,《C++标准库》第4章第2节"
 
-#: C/index-in.docbook:6085
+#: C/index-in.docbook:6072
 msgid ""
 "If you wish to learn more about smartpointers, you might look in these "
 "books: <_:itemizedlist-1/>"
 msgstr ""
 "如果你想了解与智能指针更多的有关信息,请阅读以下书籍:<_:itemizedlist-1/>"
 
-#: C/index-in.docbook:6103
+#: C/index-in.docbook:6090
 msgid "Glade and Gtk::Builder"
 msgstr "Glade和Gtk::Builder"
 
-#: C/index-in.docbook:6104
+#: C/index-in.docbook:6091
 msgid ""
 "Although you can use C++ code to instantiate and arrange widgets, this can "
 "soon become tedious and repetitive. And it requires a recompilation to show "
@@ -10505,23 +10498,23 @@ msgstr ""
 "<application>Gtk::Builder</application>API在运行时加载该XML文件,并获取特定名"
 "称部件实例的指针。"
 
-#: C/index-in.docbook:6117
+#: C/index-in.docbook:6104
 msgid "Less C++ code is required."
 msgstr "需要的C++代码更少。"
 
-#: C/index-in.docbook:6118
+#: C/index-in.docbook:6105
 msgid "UI changes can be seen more quickly, so UIs are able to improve."
 msgstr "可以更快的看到UI的更改,更便于改进UI。"
 
-#: C/index-in.docbook:6119
+#: C/index-in.docbook:6106
 msgid "Designers without programming skills can create and edit UIs."
 msgstr "没有编程技能的设计人员可以创建和编辑UI。"
 
-#: C/index-in.docbook:6114
+#: C/index-in.docbook:6101
 msgid "This has the following advantages: <_:orderedlist-1/>"
 msgstr "这具有以下优点:<_:orderedlist-1/>"
 
-#: C/index-in.docbook:6123
+#: C/index-in.docbook:6110
 msgid ""
 "You still need C++ code to deal with User Interface changes triggered by "
 "user actions, but using <application>Gtk::Builder</application> for the "
@@ -10530,11 +10523,11 @@ msgstr ""
 "你仍然需要编写C++代码以处理由用户操作触发的UI更改,但是将<application>Gtk::"
 "Builder</application>用于部件布局允许你更专注的实现该功能。"
 
-#: C/index-in.docbook:6130
+#: C/index-in.docbook:6117
 msgid "Loading the .glade file"
 msgstr "加载.glade文件"
 
-#: C/index-in.docbook:6135
+#: C/index-in.docbook:6122
 #, no-wrap
 msgid ""
 "\n"
@@ -10543,7 +10536,7 @@ msgstr ""
 "\n"
 "auto builder = Gtk::Builder::create_from_file(\"basic.glade\");\n"
 
-#: C/index-in.docbook:6131
+#: C/index-in.docbook:6118
 msgid ""
 "<classname>Gtk::Builder</classname> must be used via a <classname>Glib::"
 "RefPtr</classname>. Like all such classes, you need to use a "
@@ -10556,52 +10549,50 @@ msgstr ""
 "methodname>方法实例化它。例如:<_:programlisting-1/>这将实例化<filename>."
 "glade</filename>文件中定义的窗口。"
 
-#: C/index-in.docbook:6142
-#, no-wrap
+#: C/index-in.docbook:6128
 msgid ""
-"\n"
-"auto builder = Gtk::Builder::create_from_file(\"basic.glade\", \"treeview_products\");\n"
-msgstr ""
-"\n"
-"auto builder = Gtk::Builder::create_from_file(\"basic.glade\", \"treeview_products\");\n"
-
-#: C/index-in.docbook:6141
-msgid ""
-"To instantiate just one window, or just one of the child widgets, you can "
-"specify the name of a widget as the second parameter. For instance, <_:"
-"programlisting-1/>"
+"To instantiate just one window, or just one of the child widgets, you can "
+"specify the name of a widget as the second parameter. For instance,"
 msgstr ""
 "如果只想实例化一个窗口或实例化一个子部件,你可以将部件的名称指定为第二个参"
-"数。例如:<_:programlisting-1/>"
-
-#: C/index-in.docbook:6150
-msgid "Accessing widgets"
-msgstr "访问部件"
+"数。例如:"
 
-#: C/index-in.docbook:6158
+#: C/index-in.docbook:6130
 #, no-wrap
 msgid ""
 "\n"
-"auto pDialog = builder-&gt;get_widget&lt;Gtk::Dialog&gt;(\"DialogBasic\");\n"
+"auto builder = Gtk::Builder::create_from_file(\"basic.glade\", \"treeview_products\");\n"
 msgstr ""
 "\n"
-"auto pDialog = builder-&gt;get_widget&lt;Gtk::Dialog&gt;(\"DialogBasic\");\n"
+"auto builder = Gtk::Builder::create_from_file(\"basic.glade\", \"treeview_products\");\n"
+
+#: C/index-in.docbook:6137
+msgid "Accessing widgets"
+msgstr "访问部件"
 
-#: C/index-in.docbook:6152
+#: C/index-in.docbook:6139
 msgid ""
 "To access a widget, for instance to <methodname>show()</methodname> a "
 "dialog, use the <methodname>get_widget()</methodname> method, providing the "
 "widget's name. This name should be specified in the <application>Glade</"
 "application> Properties window. If the widget could not be found, or is of "
-"the wrong type, then the pointer will be set to nullptr. <_:programlisting-1/"
-">"
+"the wrong type, then the pointer will be set to nullptr."
 msgstr ""
 "要访问部件,例如<methodname>show()</methodname>一个对话框,请使用"
 "<methodname>get_widget()</methodname>方法,并向其提供一个部件名。这个名称应该"
 "在<application>Glade</application>的窗口属性中指定。如果找不到该部件或是部件"
-"的类型不对,则指针将被设为<literal>nullptr</literal>。<_:programlisting-1/>"
+"的类型不对,则指针将被设为<literal>nullptr</literal>。"
+
+#: C/index-in.docbook:6146
+#, no-wrap
+msgid ""
+"\n"
+"auto pDialog = builder-&gt;get_widget&lt;Gtk::Dialog&gt;(\"DialogBasic\");\n"
+msgstr ""
+"\n"
+"auto pDialog = builder-&gt;get_widget&lt;Gtk::Dialog&gt;(\"DialogBasic\");\n"
 
-#: C/index-in.docbook:6163
+#: C/index-in.docbook:6150
 msgid ""
 "<application>Gtk::Builder</application> checks for a null pointer, and "
 "checks that the widget is of the expected type, and will show warnings on "
@@ -10610,7 +10601,7 @@ msgstr ""
 "<application>Gtk::Builder</application>会进行空指针和部件类型检查,并在命令行"
 "上显示相关的警告。"
 
-#: C/index-in.docbook:6169
+#: C/index-in.docbook:6156
 msgid ""
 "Remember that you are not instantiating a widget with "
 "<methodname>get_widget()</methodname>, you are just obtaining a pointer to "
@@ -10626,7 +10617,7 @@ msgstr ""
 "例的指针。部件在函数<methodname>Gtk::Builder::create_from_file()</methodname>"
 "执行期间被实例化。"
 
-#: C/index-in.docbook:6178
+#: C/index-in.docbook:6165
 msgid ""
 "<methodname>get_widget()</methodname> returns child widgets that are "
 "<function>manage()</function>ed (see the <link linkend=\"chapter-memory"
@@ -10644,7 +10635,7 @@ msgstr ""
 "须在某个时候删除它们。<classname>Gtk::Builder</classname>的文档中有更多关于对"
 "不同类型的对象如何进行内存管理的介绍。"
 
-#: C/index-in.docbook:6188
+#: C/index-in.docbook:6175
 msgid ""
 "<ulink url=\"http://developer.gnome.org/gtkmm/unstable/classGtk_1_1Builder.";
 "html\">Reference</ulink>"
@@ -10652,7 +10643,7 @@ msgstr ""
 "<ulink url=\"http://developer.gnome.org/gtkmm/unstable/classGtk_1_1Builder.";
 "html\">参考</ulink>"
 
-#: C/index-in.docbook:6192
+#: C/index-in.docbook:6179
 msgid ""
 "This simple example shows how to load a <application>Glade</application> "
 "file at runtime and access the widgets with <application>Gtk::Builder</"
@@ -10661,7 +10652,7 @@ msgstr ""
 "这个简单示例展示了如何在运行时加载<application>Glade</application>文件并使用"
 "<application>Gtk::Builder</application>访问部件。"
 
-#: C/index-in.docbook:6197
+#: C/index-in.docbook:6184
 msgid ""
 "<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
 "examples/book/builder/basic\">Source Code</ulink>"
@@ -10669,11 +10660,11 @@ msgstr ""
 "<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
 "examples/book/builder/basic\">源代码</ulink>"
 
-#: C/index-in.docbook:6204
+#: C/index-in.docbook:6191
 msgid "Using derived widgets"
 msgstr "使用派生部件"
 
-#: C/index-in.docbook:6205
+#: C/index-in.docbook:6192
 msgid ""
 "You can use <classname>Gtk::Builder</classname> and <application>Glade</"
 "application> to layout your own custom widgets derived from "
@@ -10687,7 +10678,13 @@ msgstr ""
 "这使得你的代码保持有序和封装性,将声明式表述与业务逻辑分离开来,避免你的大多"
 "数源代码都是在设置属性和装填容器。"
 
-#: C/index-in.docbook:6214
+#: C/index-in.docbook:6200
+msgid ""
+"Use <methodname>Gtk::Builder::get_widget_derived()</methodname> like so:"
+msgstr ""
+"像这样用<methodname>Gtk::Builder::get_widget_derived()</methodname>:"
+
+#: C/index-in.docbook:6202
 #, no-wrap
 msgid ""
 "\n"
@@ -10696,15 +10693,7 @@ msgstr ""
 "\n"
 "auto pDialog = Gtk::Builder::get_widget_derived&lt;DerivedDialog&gt;(builder, \"DialogDerived\");\n"
 
-#: C/index-in.docbook:6213
-msgid ""
-"Use <methodname>Gtk::Builder::get_widget_derived()</methodname> like so: <_:"
-"programlisting-1/>"
-msgstr ""
-"像这样用<methodname>Gtk::Builder::get_widget_derived()</methodname>:<_:"
-"programlisting-1/>"
-
-#: C/index-in.docbook:6219
+#: C/index-in.docbook:6206
 msgid ""
 "Your derived class must have a constructor that takes a pointer to the "
 "underlying C type, and the <classname>Gtk::Builder</classname> instance. All "
@@ -10719,7 +10708,14 @@ msgstr ""
 "classname>(例如:<classname>Gtk::Dialog</classname>将<type>GtkDialog</type>"
 "别名为<classname>BaseObjectType</classname>)。"
 
-#: C/index-in.docbook:6229
+#: C/index-in.docbook:6213
+msgid ""
+"You must call the base class's constructor in the initialization list, "
+"providing the C pointer. For instance,"
+msgstr ""
+"你必须在初始化列表中调用基类的构造函数,并提供C指针。例如:"
+
+#: C/index-in.docbook:6217
 #, no-wrap
 msgid ""
 "\n"
@@ -10734,15 +10730,18 @@ msgstr ""
 "{\n"
 "}\n"
 
-#: C/index-in.docbook:6226
+#: C/index-in.docbook:6224
 msgid ""
-"You must call the base class's constructor in the initialization list, "
-"providing the C pointer. For instance, <_:programlisting-1/>"
+"You could then encapsulate the manipulation of the child widgets in the "
+"constructor of the derived class, maybe using <methodname>get_widget()</"
+"methodname> or <methodname>get_widget_derived()</methodname> again. For "
+"instance,"
 msgstr ""
-"你必须在初始化列表中调用基类的构造函数,并提供C指针。例如:<_:"
-"programlisting-1/>"
+"然后你可以将对子部件的操作封装于派生类的构造函数中,可以在构造函数中再次使用"
+"<methodname>get_widget()</methodname>或<methodname>get_widget_derived()</"
+"methodname>。例如:"
 
-#: C/index-in.docbook:6241
+#: C/index-in.docbook:6229
 #, no-wrap
 msgid ""
 "\n"
@@ -10771,18 +10770,7 @@ msgstr ""
 "  }\n"
 "}\n"
 
-#: C/index-in.docbook:6237
-msgid ""
-"You could then encapsulate the manipulation of the child widgets in the "
-"constructor of the derived class, maybe using <methodname>get_widget()</"
-"methodname> or <methodname>get_widget_derived()</methodname> again. For "
-"instance, <_:programlisting-1/>"
-msgstr ""
-"然后你可以将对子部件的操作封装于派生类的构造函数中,可以在构造函数中再次使用"
-"<methodname>get_widget()</methodname>或<methodname>get_widget_derived()</"
-"methodname>。例如:<_:programlisting-1/>"
-
-#: C/index-in.docbook:6260
+#: C/index-in.docbook:6247
 #, no-wrap
 msgid ""
 "\n"
@@ -10791,7 +10779,7 @@ msgstr ""
 "\n"
 "auto pDialog = Gtk::Builder::get_widget_derived&lt;DerivedDialog&gt;(builder, \"DialogDerived\", true);\n"
 
-#: C/index-in.docbook:6264
+#: C/index-in.docbook:6251
 #, no-wrap
 msgid ""
 "\n"
@@ -10812,7 +10800,7 @@ msgstr ""
 "  // ....\n"
 "}\n"
 
-#: C/index-in.docbook:6256
+#: C/index-in.docbook:6243
 msgid ""
 "It's possible to pass additional arguments from "
 "<methodname>get_widget_derived()</methodname> to the constructor of the "
@@ -10824,11 +10812,33 @@ msgstr ""
 "发给派生部件的构造函数。例如这样调用<methodname>get_widget_derived()</"
 "methodname>:<_:programlisting-1/>可以调用此构造函数:<_:programlisting-2/>"
 
-#: C/index-in.docbook:6276
+#: C/index-in.docbook:6263
 msgid "Gtk::Builder and Glib::Property"
 msgstr "Gtk::Builder和Glib::Property"
 
-#: C/index-in.docbook:6287
+#: C/index-in.docbook:6264
+msgid ""
+"If your derived widget uses <classname>Glib::Property</classname>, it "
+"becomes slightly more complicated. A derived widget that contains "
+"<classname>Glib::Property</classname> members must be registered with its "
+"own name in the <type>GType</type> system. It must be registered before any "
+"of the <methodname>create_from_*()</methodname> or <methodname>add_from_*()</"
+"methodname> methods are called, meaning that you may have to create an "
+"instance of your derived widget just to have its class registered. Your "
+"derived widget must have a constructor that has the parameters required by "
+"<methodname>get_widget_derived()</methodname> and calls the <classname>Glib::"
+"ObjectBase</classname> constructor to register the <type>GType</type>."
+msgstr ""
+"如果你派生的部件使用了<classname>Glib::Property</classname>,它将变得更复杂了"
+"一些。包涵<classname>Glib::Property</classname>成员的派生部件必须在"
+"<type>GType</type>系统中用自己的名称进行注册。必须在调用任何"
+"<methodname>create_from_*()</methodname>或<methodname>add_from_*()</"
+"methodname>方法之前进行注册,这意味着你可能需要完成对该类的注册才能创建派生部"
+"件的实例。你派生的部件必须有一个具有<methodname>get_widget_derived()</"
+"methodname>所需的所有参数以及调用<classname>Glib::ObjectBase</classname>构造"
+"函数以注册<type>GType</type>的构造函数。"
+
+#: C/index-in.docbook:6275
 #, no-wrap
 msgid ""
 "\n"
@@ -10851,30 +10861,7 @@ msgstr ""
 "  // ....\n"
 "}\n"
 
-#: C/index-in.docbook:6277
-msgid ""
-"If your derived widget uses <classname>Glib::Property</classname>, it "
-"becomes slightly more complicated. A derived widget that contains "
-"<classname>Glib::Property</classname> members must be registered with its "
-"own name in the <type>GType</type> system. It must be registered before any "
-"of the <methodname>create_from_*()</methodname> or <methodname>add_from_*()</"
-"methodname> methods are called, meaning that you may have to create an "
-"instance of your derived widget just to have its class registered. Your "
-"derived widget must have a constructor that has the parameters required by "
-"<methodname>get_widget_derived()</methodname> and calls the <classname>Glib::"
-"ObjectBase</classname> constructor to register the <type>GType</type>. <_:"
-"programlisting-1/>"
-msgstr ""
-"如果你派生的部件使用了<classname>Glib::Property</classname>,它将变得更复杂了"
-"一些。包涵<classname>Glib::Property</classname>成员的派生部件必须在"
-"<type>GType</type>系统中用自己的名称进行注册。必须在调用任何"
-"<methodname>create_from_*()</methodname>或<methodname>add_from_*()</"
-"methodname>方法之前进行注册,这意味着你可能需要完成对该类的注册才能创建派生部"
-"件的实例。你派生的部件必须有一个具有<methodname>get_widget_derived()</"
-"methodname>所需的所有参数以及调用<classname>Glib::ObjectBase</classname>构造"
-"函数以注册<type>GType</type>的构造函数。<_:programlisting-1/>"
-
-#: C/index-in.docbook:6298
+#: C/index-in.docbook:6285
 msgid ""
 "When using <application>gtkmm</application> with a version of "
 "<application>glibmm</application> from 2.62 onwards, it is possible also to "
@@ -10895,7 +10882,7 @@ msgstr ""
 "性,但这应该能通过使用<ulink url=\"https://developer.gnome.org/gladeui/";
 "stable/properties.html\">属性类定义</ulink>和声明一个新属性目录来实现。"
 
-#: C/index-in.docbook:6312
+#: C/index-in.docbook:6299
 msgid ""
 "This example shows how to load a <application>Glade</application> file at "
 "runtime and access the widgets via derived classes."
@@ -10903,7 +10890,7 @@ msgstr ""
 "本示例展示了如何在运行时加载<application>Glade</application>文件以及如何通过"
 "派生类访问部件。"
 
-#: C/index-in.docbook:6316
+#: C/index-in.docbook:6303
 msgid ""
 "<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
 "examples/book/builder/derived\">Source Code</ulink>"
@@ -10911,11 +10898,11 @@ msgstr ""
 "<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
 "examples/book/builder/derived\">源代码</ulink>"
 
-#: C/index-in.docbook:6325
+#: C/index-in.docbook:6312
 msgid "Internationalization and Localization"
 msgstr "国际化和本地化"
 
-#: C/index-in.docbook:6327
+#: C/index-in.docbook:6314
 msgid ""
 "<application>gtkmm</application> applications can easily support multiple "
 "languages, including non-European languages such as Chinese and right-to-"
@@ -10928,7 +10915,7 @@ msgstr ""
 "<application>gtkmm</application>应用程序可以在运行时根据用户环境使用合适的语"
 "言。"
 
-#: C/index-in.docbook:6333
+#: C/index-in.docbook:6320
 msgid ""
 "You might not anticipate the need to support additional languages, but you "
 "can never rule it out. And it's easier to develop the application properly "
@@ -10937,7 +10924,7 @@ msgstr ""
 "你可能没有预料到需要支持其他语言,但你永远不能排除这种可能性。而且事先准备好"
 "支持多语言比后来改进要容易的多。"
 
-#: C/index-in.docbook:6339
+#: C/index-in.docbook:6326
 msgid ""
 "The process of writing source code that allows for translation is called "
 "<literal>internationalization</literal>, often abbreviated to <literal>i18n</"
@@ -10949,7 +10936,7 @@ msgstr ""
 "通常被缩写为<literal>i18n</literal>。而根据该源代码提供其他语言的翻译文本的过"
 "程<literal>Localization</literal>通常被简写为<literal>l10n</literal>。"
 
-#: C/index-in.docbook:6347
+#: C/index-in.docbook:6334
 msgid ""
 "The main activity in the internationalization process is finding strings "
 "seen by users and marking them for translation. You do not need to do it all "
@@ -10961,7 +10948,7 @@ msgstr ""
 "要一次性完成所有的操作 - 只要你的项目准备好了进行国际化无论你有多少个字符串被"
 "标记为可翻译都不会影响程序的正常运行。"
 
-#: C/index-in.docbook:6355
+#: C/index-in.docbook:6342
 msgid ""
 "String literals should be typed in the source code in English, but "
 "surrounded by a macro. The <application>gettext</application> (or intltool) "
@@ -10972,11 +10959,11 @@ msgstr ""
 "application>(或intltool)实用程序可以提取被标记的字符串进行翻译,并在运行时"
 "将其替换为翻译后的文本。"
 
-#: C/index-in.docbook:6363
+#: C/index-in.docbook:6350
 msgid "Preparing your project"
 msgstr "准备你的项目"
 
-#: C/index-in.docbook:6366
+#: C/index-in.docbook:6353
 msgid ""
 "In the instructions below we will assume that you will not be using "
 "<application>gettext</application> directly, but <application>intltool</"
@@ -10995,7 +10982,7 @@ msgstr ""
 "单详情、glade的GUI资源文件)中提取字符串写入到标准的<application>gettext</"
 "application><filename>.pot/.po</filename>文件中。"
 
-#: C/index-in.docbook:6377
+#: C/index-in.docbook:6364
 msgid ""
 "We also assume that you are using autotools (e.g. <application>automake</"
 "application> and <application>autoconf</application>) to build your project, "
@@ -11012,7 +10999,7 @@ msgstr ""
 "ulink>或与之类似的<literal>autogen.sh</literal>文件,在这里它负责初始化"
 "<application>intltool</application>。"
 
-#: C/index-in.docbook:6391
+#: C/index-in.docbook:6378
 msgid ""
 "An alternative to <application>gnome-common</application>'s <literal>autogen."
 "sh</literal> may look like this:"
@@ -11020,7 +11007,7 @@ msgstr ""
 "<application>gnome-common</application>的<literal>autogen.sh</literal>的替代"
 "方案可能如下所示:"
 
-#: C/index-in.docbook:6395
+#: C/index-in.docbook:6382
 #, no-wrap
 msgid ""
 "#! /bin/sh -e\n"
@@ -11041,7 +11028,7 @@ msgstr ""
 "intltoolize --copy --force --automake\n"
 "test -n \"$NOCONFIGURE\" || \"$srcdir/configure\" \"$@\""
 
-#: C/index-in.docbook:6404
+#: C/index-in.docbook:6391
 msgid ""
 "Create a sub-directory named <literal>po</literal> in your project's root "
 "directory. This directory will eventually contain all of your translations. "
@@ -11055,7 +11042,7 @@ msgstr ""
 "<literal>POTFILES.in</literal>的文件。通常做法是在<literal>po</literal>文件夹"
 "再创建一个<literal>ChangeLog</literal>文件以便翻译人员跟踪翻译更改。"
 
-#: C/index-in.docbook:6414
+#: C/index-in.docbook:6401
 msgid ""
 "<literal>LINGUAS</literal> contains an alphabetically sorted list of codes "
 "identifying the languages for which your program is translated (comment "
@@ -11070,7 +11057,7 @@ msgstr ""
 "文件。因此如果你的程序有德语和日语翻译,你的<literal>LINGUAS</literal>应如下"
 "所示:"
 
-#: C/index-in.docbook:6423
+#: C/index-in.docbook:6410
 #, no-wrap
 msgid ""
 "# keep this file sorted alphabetically, one language code per line\n"
@@ -11081,7 +11068,7 @@ msgstr ""
 "de\n"
 "ja"
 
-#: C/index-in.docbook:6426
+#: C/index-in.docbook:6413
 msgid ""
 "(In addition, you'd have the files <literal>ja.po</literal> and <literal>de."
 "po</literal> in your <literal>po</literal> directory which contain the "
@@ -11090,7 +11077,7 @@ msgstr ""
 "(此外,你的<literal>po</literal>文件夹必须有包含德语和日语翻译的<literal>ja."
 "po</literal>和<literal>de.po</literal>文件)"
 
-#: C/index-in.docbook:6433
+#: C/index-in.docbook:6420
 msgid ""
 "<literal>POTFILES.in</literal> is a list of paths to all files which contain "
 "strings marked up for translation, starting from the project root directory. "
@@ -11104,7 +11091,7 @@ msgstr ""
 "中,其中有两个文件包含有需要被翻译的字符串,则你的<literal>POTFILES.in</"
 "literal>可能如下所示:"
 
-#: C/index-in.docbook:6442
+#: C/index-in.docbook:6429
 #, no-wrap
 msgid ""
 "src/main.cc\n"
@@ -11113,7 +11100,7 @@ msgstr ""
 "src/main.cc\n"
 "src/other.cc"
 
-#: C/index-in.docbook:6445
+#: C/index-in.docbook:6432
 msgid ""
 "If you are using <application>gettext</application> directly, you can only "
 "mark strings for translation if they are in source code file. However, if "
@@ -11133,7 +11120,7 @@ msgstr ""
 "了应用程序UI,则你还需要将<filename>.glade</filename>添加到你的"
 "<literal>POTFILES.in</literal>列表中。"
 
-#: C/index-in.docbook:6458
+#: C/index-in.docbook:6445
 msgid ""
 "Now that there is a place to put your translations, you need to initialize "
 "<application>intltool</application> and <application>gettext</application>. "
@@ -11144,7 +11131,7 @@ msgstr ""
 "<application>gettext</application>。将一下代码添加到你的<literal>configure."
 "ac</literal>,将\"programname\"替换为你的程序的名称:"
 
-#: C/index-in.docbook:6465
+#: C/index-in.docbook:6452
 #, no-wrap
 msgid ""
 "IT_PROG_INTLTOOL([0.35.0])\n"
@@ -11171,7 +11158,7 @@ msgstr ""
 "PROGRAMNAME_LOCALEDIR=[${datadir}/locale]\n"
 "AC_SUBST(PROGRAMNAME_LOCALEDIR)"
 
-#: C/index-in.docbook:6477
+#: C/index-in.docbook:6464
 msgid ""
 "This <varname>PROGRAMNAME_LOCALEDIR</varname> variable will be used later in "
 "the <literal>Makefile.am</literal> file, to define a macro that will be used "
@@ -11181,7 +11168,7 @@ msgstr ""
 "literal>文件使用。以定义在源代码中初始化<application>gettext</application>时"
 "将用到的宏。"
 
-#: C/index-in.docbook:6484
+#: C/index-in.docbook:6471
 msgid ""
 "<literal>AM_GLIB_GNU_GETTEXT</literal> has been an alternative to "
 "<literal>AM_GNU_GETTEXT</literal> and <literal>AM_GNU_GETTEXT_VERSION</"
@@ -11192,7 +11179,7 @@ msgstr ""
 "<literal>AM_GNU_GETTEXT_VERSION</literal>替代,且"
 "<literal>AM_GLIB_GNU_GETTEXT</literal>已被弃用,不应在任何新代码中使用。"
 
-#: C/index-in.docbook:6495
+#: C/index-in.docbook:6482
 msgid ""
 "Add <literal>po</literal> to the <literal>SUBDIRS</literal> variable. "
 "Without this, your translations won't get built and installed when you build "
@@ -11201,7 +11188,7 @@ msgstr ""
 "将<literal>po</literal>添加到<literal>SUBDIRS</literal>变量中。如果没有这个,"
 "在构建程序时不会生成和安装翻译。"
 
-#: C/index-in.docbook:6502
+#: C/index-in.docbook:6489
 #, no-wrap
 msgid ""
 "INTLTOOL_FILES = intltool-extract.in \\\n"
@@ -11212,11 +11199,11 @@ msgstr ""
 "                 intltool-merge.in \\\n"
 "                 intltool-update.in"
 
-#: C/index-in.docbook:6500
+#: C/index-in.docbook:6487
 msgid "Define <literal>INTLTOOL_FILES</literal> as: <_:programlisting-1/>"
 msgstr "定义<literal>INTLTOOL_FILES</literal>为:<_:programlisting-1/>"
 
-#: C/index-in.docbook:6508
+#: C/index-in.docbook:6495
 msgid ""
 "Add <literal>INTLTOOL_FILES</literal> to the <literal>EXTRA_DIST</literal> "
 "list of files. This ensures that when you do a <command>make dist</command>, "
@@ -11225,7 +11212,7 @@ msgstr ""
 "将<literal>INTLTOOL_FILES</literal>添加到<literal>EXTRA_DIST</literal>文件列"
 "表。这样可以确保执行<command>make dist</command>时这些文件包含在源压缩包中。"
 
-#: C/index-in.docbook:6518
+#: C/index-in.docbook:6505
 #, no-wrap
 msgid ""
 "DISTCLEANFILES = ... intltool-extract \\\n"
@@ -11238,11 +11225,11 @@ msgstr ""
 "                 intltool-update \\\n"
 "                 po/.intltool-merge-cache"
 
-#: C/index-in.docbook:6516
+#: C/index-in.docbook:6503
 msgid "Update your <literal>DISTCLEANFILES</literal>: <_:programlisting-1/>"
 msgstr "更新你的<literal>DISTCLEANFILES</literal>:<_:programlisting-1/>"
 
-#: C/index-in.docbook:6528
+#: C/index-in.docbook:6515
 #, no-wrap
 msgid ""
 "desktopdir = $(datadir)/applications\n"
@@ -11255,17 +11242,17 @@ msgstr ""
 "desktop_DATA = $(desktop_in_files:.desktop.in=.desktop)\n"
 "@INTLTOOL_DESKTOP_RULE@"
 
-#: C/index-in.docbook:6525
+#: C/index-in.docbook:6512
 msgid ""
 "Depending on the types of files that contain translatable strings, add code "
 "such as <_:programlisting-1/>"
 msgstr "根据包含可翻译字符串的文件类型,添加以下代码:<_:programlisting-1/>"
 
-#: C/index-in.docbook:6491
+#: C/index-in.docbook:6478
 msgid "In the top-level Makefile.am: <_:itemizedlist-1/>"
 msgstr "在顶层<literal>Makefile.am</literal>中:<_:itemizedlist-1/>"
 
-#: C/index-in.docbook:6537
+#: C/index-in.docbook:6524
 msgid ""
 "In your <literal>src/Makefile.am</literal>, update your "
 "<literal>AM_CPPFLAGS</literal> to add the following preprocessor macro "
@@ -11274,22 +11261,22 @@ msgstr ""
 "在你的<literal>src/Makefile.am</literal>中,更新你的<literal>AM_CPPFLAGS</"
 "literal>以添加以下预处理宏定义:"
 
-#: C/index-in.docbook:6542
+#: C/index-in.docbook:6529
 #, no-wrap
 msgid "AM_CPPFLAGS = ... -DPROGRAMNAME_LOCALEDIR=\\\"${PROGRAMNAME_LOCALEDIR}\\\""
 msgstr "AM_CPPFLAGS = ... -DPROGRAMNAME_LOCALEDIR=\\\"${PROGRAMNAME_LOCALEDIR}\\\""
 
-#: C/index-in.docbook:6543
+#: C/index-in.docbook:6530
 msgid ""
 "This macro will be used when you initialize <literal>gettext</literal> in "
 "your source code."
 msgstr "在你的源代码中初始化<literal>gettext</literal>时将使用这个宏。"
 
-#: C/index-in.docbook:6550
+#: C/index-in.docbook:6537
 msgid "Marking strings for translation"
 msgstr "标记要翻译的字符串"
 
-#: C/index-in.docbook:6552
+#: C/index-in.docbook:6539
 msgid ""
 "String literals should be typed in the source code in English, but they "
 "should be surrounded by a call to the <function>gettext()</function> "
@@ -11300,7 +11287,7 @@ msgstr ""
 "function>函数的调用中。这些字符串将被提取以进行翻译,并且在运行时翻译可以替代"
 "原始的英文字符串。"
 
-#: C/index-in.docbook:6560
+#: C/index-in.docbook:6547
 msgid ""
 "The <application>GNU gettext</application> package allows you to mark "
 "strings in source code, extract those strings for translation, and use the "
@@ -11309,17 +11296,17 @@ msgstr ""
 "<application>GNU gettext</application>允许你标记源代码中的字符串,提取这些字"
 "符串进行翻译,并在你的应用程序中使用翻译好的字符串。"
 
-#: C/index-in.docbook:6572
+#: C/index-in.docbook:6559
 #, no-wrap
 msgid "display_message(\"Getting ready for i18n.\");"
 msgstr "display_message(\"Getting ready for i18n.\");"
 
-#: C/index-in.docbook:6574
+#: C/index-in.docbook:6561
 #, no-wrap
 msgid "display_message(_(\"Getting ready for i18n.\"));"
 msgstr "display_message(_(\"Getting ready for i18n.\"));"
 
-#: C/index-in.docbook:6566
+#: C/index-in.docbook:6553
 msgid ""
 "However, <application>Glib</application> defines <function>gettext()</"
 "function> support macros which are shorter wrappers in an easy-to-use form. "
@@ -11331,24 +11318,33 @@ msgstr ""
 "些宏更为简单易用,要使用这些宏请<literal>#include &lt;glibmm/i18n.h&gt;</"
 "literal>然后将:<_:programlisting-1/>替换为:<_:programlisting-2/>"
 
-#: C/index-in.docbook:6585
-#, no-wrap
-msgid "xgettext -a -o my-strings --omit-header *.cc *.h"
-msgstr "xgettext -a -o my-strings --omit-header *.cc *.h"
-
-#: C/index-in.docbook:6577
+#: C/index-in.docbook:6564
 msgid ""
 "For reference, it is possible to generate a file which contains all strings "
 "which appear in your code, even if they are not marked for translation, "
 "together with file name and line number references. To generate such a file "
 "named <literal>my-strings</literal>, execute the following command, within "
-"the source code directory: <_:programlisting-1/>"
+"the source code directory:"
 msgstr ""
 "可以生成一个包含代码中出现的所有字符串(即使没有被标记为需要翻译)以及其文件"
 "名与行号引用的文件作为参考。要生成名为<literal>my-strings</literal>的文件,请"
-"在源代码目录执行以下命令:<_:programlisting-1/>"
+"在源代码目录执行以下命令:"
+
+#: C/index-in.docbook:6573
+#, no-wrap
+msgid "xgettext -a -o my-strings --omit-header *.cc *.h"
+msgstr "xgettext -a -o my-strings --omit-header *.cc *.h"
 
-#: C/index-in.docbook:6592
+#: C/index-in.docbook:6575
+msgid ""
+"Finally, to let your program use the translation for the current locale, add "
+"this code to the beginning of your <filename>main.cc</filename> file, to "
+"initialize gettext."
+msgstr ""
+"最后,要让你的程序使用当前环境的翻译,请将以下代码添加到你的<filename>main."
+"cc</filename>文件的开头,以初始化<function>gettext()</function>。"
+
+#: C/index-in.docbook:6580
 #, no-wrap
 msgid ""
 "bindtextdomain(GETTEXT_PACKAGE, PROGRAMNAME_LOCALEDIR);\n"
@@ -11359,21 +11355,11 @@ msgstr ""
 "bind_textdomain_codeset(GETTEXT_PACKAGE, \"UTF-8\");\n"
 "textdomain(GETTEXT_PACKAGE);"
 
-#: C/index-in.docbook:6588
-msgid ""
-"Finally, to let your program use the translation for the current locale, add "
-"this code to the beginning of your <filename>main.cc</filename> file, to "
-"initialize gettext. <_:programlisting-1/>"
-msgstr ""
-"最后,要让你的程序使用当前环境的翻译,请将以下代码添加到你的<filename>main."
-"cc</filename>文件的开头,以初始化<function>gettext()</function>。<_:"
-"programlisting-1/>"
-
-#: C/index-in.docbook:6598
+#: C/index-in.docbook:6585
 msgid "How gettext works"
 msgstr "gettext如何工作"
 
-#: C/index-in.docbook:6600
+#: C/index-in.docbook:6587
 msgid ""
 "The <application>intltool-update</application> or <application>xgettext</"
 "application> script extracts the strings and puts them in a "
@@ -11395,7 +11381,7 @@ msgstr ""
 "application>脚本重新生成的<filename>.pot</filename>文件更新"
 "<filename>localename.po</filename>文件。"
 
-#: C/index-in.docbook:6614
+#: C/index-in.docbook:6601
 msgid ""
 "At install time, the <filename>.po</filename> files are converted to a "
 "binary format (with the extension <filename>.mo</filename>) and placed in a "
@@ -11406,7 +11392,7 @@ msgstr ""
 "mo</filename>),并将其放置于系统所有的区域设置文件夹中,例如<filename>/usr/"
 "share/locale/</filename>。"
 
-#: C/index-in.docbook:6621
+#: C/index-in.docbook:6608
 msgid ""
 "When the application runs, the <application>gettext</application> library "
 "checks the system-wide directory to see if there is a <filename>.mo</"
@@ -11422,26 +11408,25 @@ msgstr ""
 "后在程序到达<literal>gettext</literal>调用时,它将从中寻找特定字符串的翻译,"
 "如果未找到则使用原始字符串。"
 
-#: C/index-in.docbook:6633
+#: C/index-in.docbook:6620
 msgid "Testing and adding translations"
 msgstr "测试和添加翻译"
 
-#: C/index-in.docbook:6640
-#, no-wrap
-msgid "intltool-update --pot"
-msgstr "intltool-update --pot"
-
-#: C/index-in.docbook:6635
+#: C/index-in.docbook:6622
 msgid ""
 "To convince yourself that you've done well, you may wish to add a "
 "translation for a new locale. In order to do that, go to the <filename>po</"
-"filename> subdirectory of your project and execute the following command: <_:"
-"programlisting-1/>"
+"filename> subdirectory of your project and execute the following command:"
 msgstr ""
 "为了说服自己做得很好,你可能希望为新的语言环境添加翻译。为此请转到项目的"
-"<filename>po</filename>子文件夹并执行以下命令:<_:programlisting-1/>"
+"<filename>po</filename>子文件夹并执行以下命令:"
 
-#: C/index-in.docbook:6643
+#: C/index-in.docbook:6628
+#, no-wrap
+msgid "intltool-update --pot"
+msgstr "intltool-update --pot"
+
+#: C/index-in.docbook:6630
 msgid ""
 "That will create a file named <filename>programname.pot</filename>. Now copy "
 "that file to <filename>languagecode.po</filename>, such as <filename>de.po</"
@@ -11459,7 +11444,7 @@ msgstr ""
 "留了空间。请确保将<filename>.po</filename>文件的编码设置(在标头中指定,但也"
 "指定其内容的编码)为了<literal>UTF-8</literal>。"
 
-#: C/index-in.docbook:6656
+#: C/index-in.docbook:6643
 msgid ""
 "It's possible that certain strings will be marked as <literal>fuzzy</"
 "literal> in the <filename>.po</filename> file. These translations will not "
@@ -11471,11 +11456,11 @@ msgstr ""
 "<literal>fuzzy</literal>标记删除即可(通常该标记意味着翻译需要更新,不检查翻"
 "译直接删除标记是不对的)。"
 
-#: C/index-in.docbook:6666
+#: C/index-in.docbook:6653
 msgid "Resources"
 msgstr "资源"
 
-#: C/index-in.docbook:6674
+#: C/index-in.docbook:6661
 msgid ""
 "<ulink url=\"https://wiki.gnome.org/TranslationProject/DevGuidelines\";> L10N "
 "Guidelines for Developers</ulink>"
@@ -11483,7 +11468,7 @@ msgstr ""
 "<ulink url=\"https://wiki.gnome.org/TranslationProject/DevGuidelines\";>本地化"
 "开发人员指南</ulink>"
 
-#: C/index-in.docbook:6681
+#: C/index-in.docbook:6668
 msgid ""
 "<ulink url=\"http://bazaar.launchpad.net/~intltool/intltool/trunk/view/head:/";
 "README\">Intltool README</ulink>"
@@ -11491,7 +11476,7 @@ msgstr ""
 "<ulink url=\"http://bazaar.launchpad.net/~intltool/intltool/trunk/view/head:/";
 "README\">Intltool自述文件</ulink>"
 
-#: C/index-in.docbook:6687
+#: C/index-in.docbook:6674
 msgid ""
 "<ulink url=\"https://wiki.gnome.org/TranslationProject/GitHowTo\";>How to use "
 "Git for GNOME translators</ulink>"
@@ -11499,7 +11484,7 @@ msgstr ""
 "<ulink url=\"https://wiki.gnome.org/TranslationProject/GitHowTo\";>GNOME译者如"
 "何使用Git</ulink>"
 
-#: C/index-in.docbook:6693
+#: C/index-in.docbook:6680
 msgid ""
 "<ulink url=\"http://www.gnu.org/software/gettext/manual/gettext.html";
 "\">gettext manual</ulink>"
@@ -11507,7 +11492,7 @@ msgstr ""
 "<ulink url=\"http://www.gnu.org/software/gettext/manual/gettext.html";
 "\">gettext手册</ulink>"
 
-#: C/index-in.docbook:6699
+#: C/index-in.docbook:6686
 msgid ""
 "<ulink url=\"http://ftp.gnome.org/pub/GNOME/sources/gtkmm_hello/";
 "\"><literal>gtkmm_hello</literal> example package</ulink>"
@@ -11515,7 +11500,7 @@ msgstr ""
 "<ulink url=\"http://ftp.gnome.org/pub/GNOME/sources/gtkmm_hello/";
 "\"><literal>gtkmm_hello</literal>示例包</ulink>"
 
-#: C/index-in.docbook:6705
+#: C/index-in.docbook:6692
 msgid ""
 "<ulink url=\"http://ftp.gnome.org/pub/GNOME/sources/gnomemm_hello/";
 "\"><literal>gnomemm_hello</literal> example package</ulink>"
@@ -11523,17 +11508,17 @@ msgstr ""
 "<ulink url=\"http://ftp.gnome.org/pub/GNOME/sources/gnomemm_hello/";
 "\"><literal>gnomemm_hello</literal>示例包</ulink>"
 
-#: C/index-in.docbook:6668
+#: C/index-in.docbook:6655
 msgid ""
 "More information about what lies behind the internationalization and "
 "localization process is presented and demonstrated in: <_:itemizedlist-1/>"
 msgstr "更多与国际化与本地化有关的信息,请参阅以下内容:<_:itemizedlist-1/>"
 
-#: C/index-in.docbook:6716
+#: C/index-in.docbook:6703
 msgid "Expecting UTF8"
 msgstr "期望使用UTF8"
 
-#: C/index-in.docbook:6717
+#: C/index-in.docbook:6704
 msgid ""
 "A properly internationalized application will not make assumptions about the "
 "number of bytes in a character. That means that you shouldn't use pointer "
@@ -11546,7 +11531,7 @@ msgstr ""
 "<function>strlen()</function>这样的与字符串有关的标准C函数,因为他们都对字符"
 "的字节数做了假设。"
 
-#: C/index-in.docbook:6724
+#: C/index-in.docbook:6711
 msgid ""
 "However, you probably already avoid bare char* arrays and pointer arithmetic "
 "by using <classname>std::string</classname>, so you just need to start using "
@@ -11559,28 +11544,11 @@ msgstr ""
 "换成使用<classname>Glib::ustring</classname>即可。更多详情请参阅<link "
 "linkend=\"sec-basics-ustring\">Glib::ustring基础</link>章节。"
 
-#: C/index-in.docbook:6733
+#: C/index-in.docbook:6720
 msgid "Glib::ustring and std::iostreams"
 msgstr "Glib::ustring和std::iostreams"
 
-#: C/index-in.docbook:6750
-#, no-wrap
-msgid ""
-"std::locale::global(std::locale(\"\")); // Set the global locale to the user's preferred locale.\n"
-"                                      // Usually unnecessary here, because Glib::init()\n"
-"                                      // or Gtk::Application::create() does it for you.\n"
-"std::ostringstream output;\n"
-"output &lt;&lt; percentage &lt;&lt; \" % done\";\n"
-"label-&gt;set_text(Glib::locale_to_utf8(output.str()));"
-msgstr ""
-"std::locale::global(std::locale(\"\")); // Set the global locale to the user's preferred locale.\n"
-"                                      // Usually unnecessary here, because Glib::init()\n"
-"                                      // or Gtk::Application::create() does it for you.\n"
-"std::ostringstream output;\n"
-"output &lt;&lt; percentage &lt;&lt; \" % done\";\n"
-"label-&gt;set_text(Glib::locale_to_utf8(output.str()));"
-
-#: C/index-in.docbook:6735
+#: C/index-in.docbook:6722
 msgid ""
 "Unfortunately, the integration with the standard iostreams is not completely "
 "foolproof. <application>gtkmm</application> converts <classname>Glib::"
@@ -11596,8 +11564,7 @@ msgid ""
 "characters and the current locale is not UTF-8 encoded, the result is a "
 "corrupted <classname>Glib::ustring</classname>. You can work around this "
 "with a manual conversion. For instance, to retrieve the <classname>std::"
-"string</classname> from a <classname>ostringstream</classname>: <_:"
-"programlisting-1/>"
+"string</classname> from a <classname>ostringstream</classname>:"
 msgstr ""
 "不幸的是,与标准<classname>iostreams</classname>的集成并非绝对安全的。如果你"
 "将<classname>Glib::ustring</classname>使用<function>operator&lt;&lt;</"
@@ -11611,23 +11578,40 @@ msgstr ""
 "言环境不使用UTF-8编码,则得到的结果是一个损坏的<classname>Glib::ustring</"
 "classname>。你可以通过手动转换编码解决此问题。例如,若要从"
 "<classname>ostringstream</classname>中接受<classname>std::string</"
-"classname>:<_:programlisting-1/>"
+"classname>:"
+
+#: C/index-in.docbook:6738
+#, no-wrap
+msgid ""
+"std::locale::global(std::locale(\"\")); // Set the global locale to the user's preferred locale.\n"
+"                                      // Usually unnecessary here, because Glib::init()\n"
+"                                      // or Gtk::Application::create() does it for you.\n"
+"std::ostringstream output;\n"
+"output &lt;&lt; percentage &lt;&lt; \" % done\";\n"
+"label-&gt;set_text(Glib::locale_to_utf8(output.str()));"
+msgstr ""
+"std::locale::global(std::locale(\"\")); // Set the global locale to the user's preferred locale.\n"
+"                                      // Usually unnecessary here, because Glib::init()\n"
+"                                      // or Gtk::Application::create() does it for you.\n"
+"std::ostringstream output;\n"
+"output &lt;&lt; percentage &lt;&lt; \" % done\";\n"
+"label-&gt;set_text(Glib::locale_to_utf8(output.str()));"
 
-#: C/index-in.docbook:6762
+#: C/index-in.docbook:6749
 msgid "Pitfalls"
 msgstr "陷阱"
 
-#: C/index-in.docbook:6764
+#: C/index-in.docbook:6751
 msgid ""
 "There are a few common mistakes that you would discover eventually yourself. "
 "But this section might help you to avoid them."
 msgstr "有几个你最终会自己发现的错误。但本小节可能能帮助你避免它们。"
 
-#: C/index-in.docbook:6767
+#: C/index-in.docbook:6754
 msgid "Same strings, different semantics"
 msgstr "不同语义的同一字符串。"
 
-#: C/index-in.docbook:6769
+#: C/index-in.docbook:6756
 msgid ""
 "Sometimes two English strings are identical but have different meanings in "
 "different contexts, so they would probably not be identical when translated. "
@@ -11636,7 +11620,7 @@ msgstr ""
 "有时,两个英文字符串是相同的但是在不同的上下文中有不同的含义,因此他们的译文"
 "不一定相同。此时用英文字符串作为查找键会引起问题。"
 
-#: C/index-in.docbook:6773
+#: C/index-in.docbook:6760
 msgid ""
 "In these cases, you should add extra characters to the strings. For "
 "instance, use <literal>\"jumps[noun]\"</literal> and <literal>"
@@ -11652,7 +11636,7 @@ msgstr ""
 "离。如果你添加了额外的字符,你还应该在调用<function>gettext</function>之前为"
 "译者添加注释。这样的注释将被显示于<filename>.po</filename>中。例如:"
 
-#: C/index-in.docbook:6782
+#: C/index-in.docbook:6769
 #, no-wrap
 msgid ""
 "// note to translators: don't translate the \"[noun]\" part - it is\n"
@@ -11663,7 +11647,7 @@ msgstr ""
 "// just here to distinguish the string from another \"jumps\" string\n"
 "text = strip(gettext(\"jumps[noun]\"), \"[noun]\");"
 
-#: C/index-in.docbook:6786
+#: C/index-in.docbook:6773
 msgid ""
 "If you use <application>Glib</application>'s support macros, it's easier. "
 "Use <function>C_()</function> instead of <function>_()</function>. For "
@@ -11672,16 +11656,16 @@ msgstr ""
 "如果你使用<application>Glib</application>宏,将会更为方便。你只需要使用"
 "<function>C_()</function>替换<function>_()</function>。例如:"
 
-#: C/index-in.docbook:6790
+#: C/index-in.docbook:6777
 #, no-wrap
 msgid "GLib::ustring text(C_(\"noun\", \"jumps\"));"
 msgstr "GLib::ustring text(C_(\"noun\", \"jumps\"));"
 
-#: C/index-in.docbook:6795
+#: C/index-in.docbook:6782
 msgid "Composition of strings"
 msgstr "合成字符串"
 
-#: C/index-in.docbook:6797
+#: C/index-in.docbook:6784
 msgid ""
 "C programmers use <function>sprintf()</function> to compose and concatenate "
 "strings. C++ favours streams, but unfortunately, this approach makes "
@@ -11693,11 +11677,11 @@ msgstr ""
 "的是,使用这种方法生成的字符串将给翻译带来困难,因为文本被分成了多个片段,译"
 "者必须分开翻译多个片段而不能进行重新排列,这会导致很多字符串无法被正确翻译。"
 
-#: C/index-in.docbook:6804
+#: C/index-in.docbook:6791
 msgid "For instance, this code would be problematic:"
 msgstr "例如,此代码将会出现问题:"
 
-#: C/index-in.docbook:6806
+#: C/index-in.docbook:6793
 #, no-wrap
 msgid ""
 "std::cout &lt;&lt; _(\"Current amount: \") &lt;&lt; amount\n"
@@ -11710,7 +11694,18 @@ msgstr ""
 "\n"
 "label.set_text(_(\"Really delete \") + filename + _(\" now?\"));"
 
-#: C/index-in.docbook:6815
+#: C/index-in.docbook:6798
+msgid ""
+"So you should either avoid this situation or use <ulink url=\"http://";
+"developer.gnome.org/glibmm/unstable/classGlib_1_1ustring.html"
+"\"><function>Glib::ustring::compose()</function></ulink> which supports "
+"syntax such as:"
+msgstr ""
+"因此你应该避免这种情况的出现或者使用<ulink url=\"http://developer.gnome.org/";
+"glibmm/unstable/classGlib_1_1ustring.html\"><function>Glib::ustring::"
+"compose()</function></ulink>以支持如下所示的语法:"
+
+#: C/index-in.docbook:6803
 #, no-wrap
 msgid ""
 "std::cout &lt;&lt; Glib::ustring::compose(\n"
@@ -11723,22 +11718,11 @@ msgstr ""
 "\n"
 "label.set_text(Glib::ustring::compose(_(\"Really delete %1 now?\"), filename));"
 
-#: C/index-in.docbook:6811
-msgid ""
-"So you should either avoid this situation or use <ulink url=\"http://";
-"developer.gnome.org/glibmm/unstable/classGlib_1_1ustring.html"
-"\"><function>Glib::ustring::compose()</function></ulink> which supports "
-"syntax such as: <_:programlisting-1/>"
-msgstr ""
-"因此你应该避免这种情况的出现或者使用<ulink url=\"http://developer.gnome.org/";
-"glibmm/unstable/classGlib_1_1ustring.html\"><function>Glib::ustring::"
-"compose()</function></ulink>以支持如下所示的语法:<_:programlisting-1/>"
-
-#: C/index-in.docbook:6823
+#: C/index-in.docbook:6810
 msgid "Assuming the displayed size of strings"
 msgstr "假设显示字符串所需的空间"
 
-#: C/index-in.docbook:6825
+#: C/index-in.docbook:6812
 msgid ""
 "You never know how much space a string will take on screen when translated. "
 "It might very possibly be twice the size of the original English string. "
@@ -11749,11 +11733,11 @@ msgstr ""
 "英文字符串的两倍甚至更多。幸运的是 <application>gtkmm</application>的多数部件"
 "都能在运行时自动扩展到需要的尺寸。"
 
-#: C/index-in.docbook:6829
+#: C/index-in.docbook:6816
 msgid "Unusual words"
 msgstr "\"黑话\""
 
-#: C/index-in.docbook:6831
+#: C/index-in.docbook:6818
 msgid ""
 "You should avoid cryptic abbreviations, slang, or jargon. They are usually "
 "difficult to translate, and are often difficult for even native speakers to "
@@ -11763,11 +11747,11 @@ msgstr ""
 "译,甚至将该语言作为母语的译者也无法理解。例如,最好使用\"application\"而不是"
 "\"app\""
 
-#: C/index-in.docbook:6837
+#: C/index-in.docbook:6824
 msgid "Using non-ASCII characters in strings"
 msgstr "在字符串中使用非ASCII字符"
 
-#: C/index-in.docbook:6839
+#: C/index-in.docbook:6826
 msgid ""
 "Currently, <application>gettext</application> does not support non-ASCII "
 "characters (i.e. any characters with a code above 127) in source code. For "
@@ -11776,7 +11760,7 @@ msgstr ""
 "当前,<application>gettext</application>并不支持在源代码中使用非ASCII字符。例"
 "如,你不能使用版权标志(©)"
 
-#: C/index-in.docbook:6845
+#: C/index-in.docbook:6832
 msgid ""
 "To work around this, you could write a comment in the source code just "
 "before the string, telling the translators to use the special character if "
@@ -11787,11 +11771,11 @@ msgstr ""
 "要解决这个问题你可以使用注释提醒译者可以使用他们语言中可用的特殊字符。对于英"
 "语用户你可以在美国英语<filename>en_US.po</filename>翻译中使用特殊字符。"
 
-#: C/index-in.docbook:6853
+#: C/index-in.docbook:6840
 msgid "Getting help with translations"
 msgstr "获取翻译帮助"
 
-#: C/index-in.docbook:6855
+#: C/index-in.docbook:6842
 msgid ""
 "If your program is free software, there is a whole <literal>GNOME</literal> "
 "subproject devoted to helping you make translations, the <ulink url="
@@ -11802,7 +11786,7 @@ msgstr ""
 "子项目:<ulink url=\"https://wiki.gnome.org/TranslationProject/";
 "\"><literal>GNOME</literal>翻译项目</ulink>。"
 
-#: C/index-in.docbook:6860
+#: C/index-in.docbook:6847
 msgid ""
 "The way it works is that you upload your source code to a git repository "
 "where translators can access it, then contact the gnome-i18n mailing list "
@@ -11813,7 +11797,7 @@ msgstr ""
 "gnome-i18n请求将你的程序添加到<ulink url=\"http://l10n.gnome.org/module/\";>待"
 "翻译模块列表</ulink>中。"
 
-#: C/index-in.docbook:6865
+#: C/index-in.docbook:6852
 msgid ""
 "Then you make sure you update the file <filename>POTFILES.in</filename> in "
 "the <filename>po/</filename> subdirectory (<command>intltool-update -m</"
@@ -11831,7 +11815,7 @@ msgstr ""
 "以及程序的受欢迎程度,译者将逐渐向你提交<filename>languagename.po</filename>"
 "文件。"
 
-#: C/index-in.docbook:6877
+#: C/index-in.docbook:6864
 msgid ""
 "Note that most language teams only consist of 1-3 persons, so if your "
 "program contains a lot of strings, it might last a while before anyone has "
@@ -11844,11 +11828,11 @@ msgstr ""
 "串,则可能需要很长时间才有译者查看它。此外,大多数译者都不想浪费时间,因此如"
 "果他们认为你的项目质量很低,他们可能不会想为你提供翻译。"
 
-#: C/index-in.docbook:6889 C/index-in.docbook:6960
+#: C/index-in.docbook:6876 C/index-in.docbook:6947
 msgid "Custom Widgets"
 msgstr "自定义部件"
 
-#: C/index-in.docbook:6891
+#: C/index-in.docbook:6878
 msgid ""
 "<application>gtkmm</application> makes it very easy to derive new widgets by "
 "inheriting from an existing widget class, either by deriving from a "
@@ -11861,11 +11845,11 @@ msgstr ""
 "向其中添加子部件、从单项部件派生并修改其行为等手段派生新的部件。但有时你会发"
 "现找不到合适的起点。在这种情况下你可以从头实现部件。"
 
-#: C/index-in.docbook:6898
+#: C/index-in.docbook:6885
 msgid "Custom Containers"
 msgstr "自定义容器"
 
-#: C/index-in.docbook:6902
+#: C/index-in.docbook:6889
 msgid ""
 "<methodname>get_request_mode_vfunc()</methodname>: Return what <literal>Gtk::"
 "SizeRequestMode</literal> is preferred by the container."
@@ -11873,14 +11857,14 @@ msgstr ""
 "<methodname>get_request_mode_vfunc()</methodname>:返回容器的<literal>Gtk::"
 "SizeRequestMode</literal>偏好。"
 
-#: C/index-in.docbook:6903
+#: C/index-in.docbook:6890
 msgid ""
 "<methodname>measure_vfunc()</methodname>: Calculate the minimum and natural "
 "width or height of the container."
 msgstr ""
 "<methodname>measure_vfunc()</methodname>:返回容器的最小自然宽度或高度。"
 
-#: C/index-in.docbook:6904
+#: C/index-in.docbook:6891
 msgid ""
 "<methodname>on_size_allocate()</methodname>: Position the child widgets, "
 "given the height and width that the container has actually been given."
@@ -11888,7 +11872,7 @@ msgstr ""
 "<methodname>on_size_allocate()</methodname>:根据容器实际宽度和高度定位子部"
 "件。"
 
-#: C/index-in.docbook:6899
+#: C/index-in.docbook:6886
 msgid ""
 "When deriving a custom container widget directly from <classname>Gtk::"
 "Widget</classname>, you should override the following virtual methods: <_:"
@@ -11897,7 +11881,7 @@ msgstr ""
 "直接从<classname>Gtk::Widget</classname>派生自定义容器部件时,应重写一下虚方"
 "法:<_:itemizedlist-1/>"
 
-#: C/index-in.docbook:6908
+#: C/index-in.docbook:6895
 msgid ""
 "The <methodname>get_request_mode_vfunc()</methodname>, "
 "<methodname>measure_vfunc()</methodname>, and "
@@ -11924,7 +11908,7 @@ msgstr ""
 "这个结果确保部件获得足够的空间。通过对每个部件的父部件进行检查最终确认顶级窗"
 "口的大小。"
 
-#: C/index-in.docbook:6925
+#: C/index-in.docbook:6912
 msgid ""
 "You are not guaranteed to get the <literal>Gtk::SizeRequestMode</literal> "
 "that you request. Therefore <methodname>measure_vfunc()</methodname> must "
@@ -11939,7 +11923,7 @@ msgstr ""
 "<methodname>Gtk::Widget::measure()</methodname>的描述可能比查看"
 "<methodname>measure_vfunc()</methodname>的文档更好。"
 
-#: C/index-in.docbook:6932
+#: C/index-in.docbook:6919
 msgid ""
 "<methodname>on_size_allocate()</methodname> receives the actual height and "
 "width that the parent container has decided to give to your widget. This "
@@ -11954,7 +11938,7 @@ msgstr ""
 "以选择忽略多余的空间留出一个空白区域,或者选择扩展子部件以填充该空间,或者是"
 "选择扩展部件之间的填充。"
 
-#: C/index-in.docbook:6943
+#: C/index-in.docbook:6930
 msgid ""
 "This example implements a container with two child widgets, one above the "
 "other. Of course, in this case it would be far simpler just to use a "
@@ -11964,11 +11948,11 @@ msgstr ""
 "使用垂直<classname>Gtk::Box</classname>或<classname>Gtk::Grid</classname>会更"
 "简单。"
 
-#: C/index-in.docbook:6948
+#: C/index-in.docbook:6935
 msgid "Custom Container"
 msgstr "自定义容器"
 
-#: C/index-in.docbook:6954
+#: C/index-in.docbook:6941
 msgid ""
 "<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
 "examples/book/custom/custom_container/\">Source Code</ulink>"
@@ -11976,7 +11960,7 @@ msgstr ""
 "<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
 "examples/book/custom/custom_container/\">源代码</ulink>"
 
-#: C/index-in.docbook:6961
+#: C/index-in.docbook:6948
 msgid ""
 "By deriving directly from <classname>Gtk::Widget</classname> you can do all "
 "the drawing for your widget directly, instead of just arranging child "
@@ -11987,7 +11971,7 @@ msgstr ""
 "而不仅仅是排列子部件。例如:<classname>Gtk::Label</classname>不需要使用其他部"
 "件即可绘制标签文本。"
 
-#: C/index-in.docbook:6972
+#: C/index-in.docbook:6959
 msgid ""
 "<methodname>get_request_mode_vfunc()</methodname>: (optional) Return what "
 "<literal>Gtk::SizeRequestMode</literal> is preferred by the widget."
@@ -11995,14 +11979,14 @@ msgstr ""
 "<methodname>get_request_mode_vfunc()</methodname>:覆写此虚函数是可选的,返回"
 "此部件的<literal>Gtk::SizeRequestMode</literal>偏好。"
 
-#: C/index-in.docbook:6973
+#: C/index-in.docbook:6960
 msgid ""
 "<methodname>measure_vfunc()</methodname>: Calculate the minimum and natural "
 "width or height of the widget."
 msgstr ""
 "<methodname>measure_vfunc()</methodname>:计算此部件的最小自然高度或宽度。"
 
-#: C/index-in.docbook:6974
+#: C/index-in.docbook:6961
 msgid ""
 "<methodname>on_size_allocate()</methodname>: Position the widget, given the "
 "height and width that it has actually been given."
@@ -12010,7 +11994,7 @@ msgstr ""
 "<methodname>on_size_allocate()</methodname>:提供将实际给予部件的宽度和高度以"
 "定位部件。"
 
-#: C/index-in.docbook:6975
+#: C/index-in.docbook:6962
 msgid ""
 "<methodname>on_realize()</methodname>: Associate a <classname>Gdk::Surface</"
 "classname> with the widget."
@@ -12018,7 +12002,7 @@ msgstr ""
 "<methodname>on_realize()</methodname>:将一个<classname>Gdk::Surface</"
 "classname>与部件相关联。"
 
-#: C/index-in.docbook:6976
+#: C/index-in.docbook:6963
 msgid ""
 "<methodname>on_unrealize()</methodname>: (optional) Break the association "
 "with the <classname>Gdk::Surface</classname>."
@@ -12026,15 +12010,15 @@ msgstr ""
 "<methodname>on_unrealize()</methodname>:覆写此虚函数是可选的,断开"
 "<classname>Gdk::Surface</classname>与部件的关联。"
 
-#: C/index-in.docbook:6977
+#: C/index-in.docbook:6964
 msgid "<methodname>on_map()</methodname>: (optional)"
 msgstr "<methodname>on_map()</methodname>:覆写此虚函数是可选的。"
 
-#: C/index-in.docbook:6978
+#: C/index-in.docbook:6965
 msgid "<methodname>on_unmap()</methodname>: (optional)"
 msgstr "<methodname>on_unmap()</methodname>:覆写此虚函数是可选的。"
 
-#: C/index-in.docbook:6979
+#: C/index-in.docbook:6966
 msgid ""
 "<methodname>snapshot_vfunc()</methodname>: Create a render node, e.g. a "
 "<classname>Cairo::Context</classname> node, and draw on it."
@@ -12042,7 +12026,7 @@ msgstr ""
 "<methodname>snapshot_vfunc()</methodname>:创建一个渲染节点(例如:一个"
 "<classname>Cairo::Context</classname>节点),并在其上进行绘制。"
 
-#: C/index-in.docbook:6967
+#: C/index-in.docbook:6954
 msgid ""
 "When deriving from <classname>Gtk::Widget</classname>, you should override "
 "the following virtual methods. The methods marked (optional) need not be "
@@ -12053,7 +12037,7 @@ msgstr ""
 "中标记为可选的的虚函数不必在所有自定义部件中都进行覆写。它们的基类方法通常情"
 "况下已经很合适。<_:itemizedlist-1/>"
 
-#: C/index-in.docbook:6983
+#: C/index-in.docbook:6970
 msgid ""
 "The first 3 methods in the previous table are also overridden in custom "
 "containers. They are briefly described in the <link linkend=\"sec-custom-"
@@ -12062,11 +12046,11 @@ msgstr ""
 "上述前三个函数在自定义容器中也被覆写。它们在<link linkend=\"sec-custom-"
 "containers\">自定义容器</link>小节做了简要说明。"
 
-#: C/index-in.docbook:6989
+#: C/index-in.docbook:6976
 msgid "Class Init and Instance Init Functions"
 msgstr "类初始化和实例初始化函数"
 
-#: C/index-in.docbook:6991
+#: C/index-in.docbook:6978
 msgid ""
 "Some <application>GTK</application> functions, if called at all, must be "
 "called from the class init function. Some other <application>GTK</"
@@ -12082,11 +12066,11 @@ msgstr ""
 "ExtraClassInit</classname>派生一个类,并从该类派生你的自定义类。以下示例演示"
 "了如何完成这些操作。"
 
-#: C/index-in.docbook:7000
+#: C/index-in.docbook:6987
 msgid "Custom Style Information"
 msgstr "自定义样式信息"
 
-#: C/index-in.docbook:7002
+#: C/index-in.docbook:6989
 msgid ""
 "Your widget class, whether it's derived directly from <classname>Gtk::"
 "Widget</classname> or from another widget class, can read some style "
@@ -12109,15 +12093,15 @@ msgstr ""
 "的支持情况。以下是示例演示了<methodname>Gtk::StyleContext::get_padding()</"
 "methodname>的简单用法。"
 
-#: C/index-in.docbook:7016
+#: C/index-in.docbook:7003
 msgid "This example implements a widget which draws Penrose triangles."
 msgstr "本示例实现了绘制彭罗斯三角形的部件"
 
-#: C/index-in.docbook:7019
+#: C/index-in.docbook:7006
 msgid "Custom Widget"
 msgstr "自定义部件"
 
-#: C/index-in.docbook:7025
+#: C/index-in.docbook:7012
 msgid ""
 "<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
 "examples/book/custom/custom_widget/\">Source Code</ulink>"
@@ -12125,15 +12109,15 @@ msgstr ""
 "<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
 "examples/book/custom/custom_widget/\">源代码</ulink>"
 
-#: C/index-in.docbook:7033
+#: C/index-in.docbook:7020
 msgid "Multi-threaded programs"
 msgstr "多线程程序"
 
-#: C/index-in.docbook:7036
+#: C/index-in.docbook:7023
 msgid "The constraints"
 msgstr "约束条件"
 
-#: C/index-in.docbook:7047
+#: C/index-in.docbook:7034
 msgid ""
 "These interactions arise from the fact that, amongst other things, a class "
 "inheriting from <classname>sigc::trackable</classname> will, via that "
@@ -12163,7 +12147,7 @@ msgstr ""
 "<methodname>connect()</methodname>方法或任何与该连接有关的<classname>sigc::"
 "connection</classname>对象进行更新。"
 
-#: C/index-in.docbook:7038
+#: C/index-in.docbook:7025
 msgid ""
 "Care is required when writing programs based on <application>gtkmm</"
 "application> using multiple threads of execution, arising from the fact that "
@@ -12178,11 +12162,11 @@ msgstr ""
 "多线程程序时需要格外小心。这是因为使用<application>libsigc++</application>时"
 "在幕后发生的复杂交互不受互斥量或其他同步方式的保护。"
 
-#: C/index-in.docbook:7071
+#: C/index-in.docbook:7058
 msgid "The rules"
 msgstr "规则"
 
-#: C/index-in.docbook:7073
+#: C/index-in.docbook:7060
 msgid ""
 "This requires a number of rules to be observed when writing multi-threaded "
 "programs using <application>gtkmm</application>. These are set out below, "
@@ -12194,7 +12178,7 @@ msgstr ""
 "规则下下面列出,但要注意的一点是从<classname>sigc::trackable</classname>派生"
 "类时需要格外小心,因为效果很不直观(特别是下述4、5条)。"
 
-#: C/index-in.docbook:7084
+#: C/index-in.docbook:7071
 msgid ""
 "Use <classname>Glib::Dispatcher</classname> to invoke <application>gtkmm</"
 "application> functions from worker threads (this is dealt with in more "
@@ -12203,7 +12187,7 @@ msgstr ""
 "使用<classname>Glib::Dispatcher</classname>在工作线程中调用"
 "<application>gtkmm</application>函数(这点将在下一节详细介绍)"
 
-#: C/index-in.docbook:7092
+#: C/index-in.docbook:7079
 msgid ""
 "A <classname>sigc::signal</classname> object should be regarded as owned by "
 "the thread which created it. Only that thread should connect a "
@@ -12225,7 +12209,7 @@ msgstr ""
 "作,以及任何从<classname>sigc::trackable</classname>派生的对象(其非静态方法"
 "由连接到信号对象的槽引用)都应该在该线程中销毁。"
 
-#: C/index-in.docbook:7108
+#: C/index-in.docbook:7095
 msgid ""
 "Any <classname>sigc::connection</classname> object should be regarded as "
 "owned by the thread in which the method returning the <classname>sigc::"
@@ -12236,7 +12220,7 @@ msgstr ""
 "了返回<classname>sigc::connection</classname>对象的方法。只有该线程才应在此对"
 "象上调用<classname>sigc::connection</classname>方法。"
 
-#: C/index-in.docbook:7118
+#: C/index-in.docbook:7105
 msgid ""
 "A <classname>sigc::slot</classname> object created by a call to "
 "<function>sigc::mem_fun()</function> which references a method of a class "
@@ -12248,7 +12232,7 @@ msgstr ""
 "classname>对象具有由<classname>sigc::trackable</classname>所派生类的成员函数"
 "的引用,请勿将其复制到另一个线程中,也不要让除创建线程以外的线程销毁它。"
 
-#: C/index-in.docbook:7128
+#: C/index-in.docbook:7115
 msgid ""
 "If a particular class object derives from <classname>sigc::trackable</"
 "classname>, only one thread should create <classname>sigc::slot</classname> "
@@ -12266,7 +12250,7 @@ msgstr ""
 "用该函数以创建槽,或者在<classname>sigc::trackable</classname>对象断开连接和"
 "被销毁时将那些槽无效化。"
 
-#: C/index-in.docbook:7142
+#: C/index-in.docbook:7129
 msgid ""
 "Although <application>glib</application> is itself thread-safe, any "
 "<application>glibmm</application> wrappers which use <application>libsigc++</"
@@ -12285,7 +12269,7 @@ msgstr ""
 "connect()</methodname>、<methodname>Glib::SignalTimeout::connect_seconds</"
 "methodname>或是处理由它们返回的<classname>sigc::connection</classname>对象。"
 
-#: C/index-in.docbook:7154
+#: C/index-in.docbook:7141
 msgid ""
 "The connect*_once() variants, <methodname>Glib::SignalIdle::connect_once()</"
 "methodname>, <methodname>Glib::SignalTimeout::connect_once()</methodname>, "
@@ -12301,11 +12285,11 @@ msgstr ""
 "trackable</classname>派生类的成员函数调用<function>sigc::mem_fun()</function>"
 "创建的,那么它们在任何情况下都是线程安全的。"
 
-#: C/index-in.docbook:7172
+#: C/index-in.docbook:7159
 msgid "Using Glib::Dispatcher"
 msgstr "使用<classname>Glib::Dispatcher</classname>"
 
-#: C/index-in.docbook:7174
+#: C/index-in.docbook:7161
 msgid ""
 "The slots connected to <classname>sigc::signal</classname> objects execute "
 "in the thread which calls <methodname>emit()</methodname> or "
@@ -12326,7 +12310,7 @@ msgstr ""
 "classname>,任何工作线程都可以在其上调用<methodname>emit()</methodname>并让槽"
 "安全的执行连接的<application>gtkmm</application>函数。"
 
-#: C/index-in.docbook:7188
+#: C/index-in.docbook:7175
 msgid ""
 "Some thread safety rules on the use of <classname>Glib::Dispatcher</"
 "classname> still apply. As mentioned, a <classname>Glib::Dispatcher</"
@@ -12357,7 +12341,7 @@ msgstr ""
 "<methodname>emit()</methodname>,但前提是该对象是在工作线程启动前构造的,如果"
 "不是则需要进行额外的同步以确保可见性。"
 
-#: C/index-in.docbook:7208
+#: C/index-in.docbook:7195
 msgid ""
 "Aside from the fact that connected slots always execute in the receiver "
 "thread, <classname>Glib::Dispatcher</classname> objects are similar to "
@@ -12376,7 +12360,7 @@ msgstr ""
 "是编写<application>glibmm</application>时没有(尽管线程安全与强异常安全结合有"
 "些微妙,但编写它们相对容易)。"
 
-#: C/index-in.docbook:7221
+#: C/index-in.docbook:7208
 msgid ""
 "A <classname>Glib::Dispatcher</classname> object can be emitted on by the "
 "receiver thread as well as by a worker thread, although this should be done "
@@ -12401,7 +12385,7 @@ msgstr ""
 "收者线程想要发出信号可以使用普通的<classname>sigc::signal&lt;void()&gt;</"
 "classname>对象。"
 
-#: C/index-in.docbook:7241
+#: C/index-in.docbook:7228
 msgid ""
 "This is an example program with two threads, one GUI thread, like in all "
 "<application>gtkmm</application> programs, and one worker thread. The worker "
@@ -12414,7 +12398,7 @@ msgstr ""
 "将创建工作线程,当工作完成或你按下<literal>Stop work</literal>按钮或是你按下"
 "<literal>Quit</literal>按钮时该线程将被删除。"
 
-#: C/index-in.docbook:7249
+#: C/index-in.docbook:7236
 msgid ""
 "A <classname>Glib::Dispatcher</classname> is used for sending notifications "
 "from the worker thread to the GUI thread. The <classname>ExampleWorker</"
@@ -12426,7 +12410,7 @@ msgstr ""
 "<classname>ExampleWorker</classname>包含两个线程都可以访问的数据。该数据被一"
 "个<classname>std::mutex</classname>保护。只有GUI线程对GUI进行更新。"
 
-#: C/index-in.docbook:7257
+#: C/index-in.docbook:7244
 msgid ""
 "Compiling and linking a multi-threaded program can require special compiler "
 "and linker options. If you use the <application>g++</application> compiler, "
@@ -12441,11 +12425,11 @@ msgstr ""
 "果你在构建脚本中添加了<function>dependency('threads')</function>,它会帮你处"
 "理多线程的复杂性。"
 
-#: C/index-in.docbook:7266
+#: C/index-in.docbook:7253
 msgid "Multi-Threaded Program"
 msgstr "多线程程序"
 
-#: C/index-in.docbook:7272
+#: C/index-in.docbook:7259
 msgid ""
 "<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
 "examples/book/multithread\">Source Code</ulink>"
@@ -12453,11 +12437,11 @@ msgstr ""
 "<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
 "examples/book/multithread\">源代码</ulink>"
 
-#: C/index-in.docbook:7279
+#: C/index-in.docbook:7266
 msgid "Recommended Techniques"
 msgstr "推荐技术"
 
-#: C/index-in.docbook:7281
+#: C/index-in.docbook:7268
 msgid ""
 "This section is simply a gathering of wisdom, general style guidelines and "
 "hints for creating <application>gtkmm</application> applications."
@@ -12465,7 +12449,7 @@ msgstr ""
 "本小节将向你展示一些创建<application>gtkmm</application>应用程序的智慧、风格"
 "指南和提示。"
 
-#: C/index-in.docbook:7285
+#: C/index-in.docbook:7272
 msgid ""
 "Use GNU <application>autoconf</application> and <application>automake</"
 "application>! They are your friends :) <application>Automake</application> "
@@ -12481,7 +12465,7 @@ msgstr ""
 "<application>Autoconf</application>允许自动配置软件的安装,处理大量来自系统本"
 "身的差异以增强可移植性。"
 
-#: C/index-in.docbook:7295
+#: C/index-in.docbook:7282
 msgid ""
 "Subclass Widgets to better organize your code. You should probably subclass "
 "your main <classname>Window</classname> at least. Then you can make your "
@@ -12490,7 +12474,7 @@ msgstr ""
 "子类部件可以更好的组织你的代码。至少你的主窗口类应该继承<classname>Window</"
 "classname>。这样你可以使主窗口的子部件和信号处理函数成为该类的成员。"
 
-#: C/index-in.docbook:7300
+#: C/index-in.docbook:7287
 msgid ""
 "Create your own signals instead of passing pointers around. Objects can "
 "communicate with each other via signals and signal handlers. This is much "
@@ -12506,11 +12490,11 @@ msgstr ""
 "classname>,但你应该使用<application>libsigc++</application>所述的正常"
 "<classname>sigc::signal</classname>。"
 
-#: C/index-in.docbook:7309
+#: C/index-in.docbook:7296
 msgid "Application Lifetime"
 msgstr "应用程序生命周期"
 
-#: C/index-in.docbook:7310
+#: C/index-in.docbook:7297
 msgid ""
 "Most applications will have only one <classname>Window</classname>, or only "
 "one main window. These applications can use the <methodname>Gtk::"
@@ -12532,15 +12516,15 @@ msgstr ""
 "未保存变更你可能想弹出对话框询问用户是否确定要关闭窗口,再根据用户选择确定是"
 "否要关闭窗口)。"
 
-#: C/index-in.docbook:7319
+#: C/index-in.docbook:7306
 msgid "Most of our examples use this technique."
 msgstr "我们的大多数示例都是用这种技术。"
 
-#: C/index-in.docbook:7323
+#: C/index-in.docbook:7310
 msgid "Using a <application>gtkmm</application> widget"
 msgstr "使用<application>gtkmm</application>部件"
 
-#: C/index-in.docbook:7325
+#: C/index-in.docbook:7312
 msgid ""
 "Our examples all tend to have the same structure. They follow these steps "
 "for using a <classname>Widget</classname>:"
@@ -12548,7 +12532,7 @@ msgstr ""
 "我们的示例都倾向于使用相同的结构。它们按以下步骤使用<classname>Widget</"
 "classname>:"
 
-#: C/index-in.docbook:7334
+#: C/index-in.docbook:7321
 msgid ""
 "Declare a variable of the type of <classname>Widget</classname> you wish to "
 "use, generally as member variable of a derived container class. You could "
@@ -12562,7 +12546,7 @@ msgstr ""
 "<literal>new</literal>创建它。即使通过指针使用部件,也应该使该指针成为容器类"
 "的成员变量,以便你后续访问它。"
 
-#: C/index-in.docbook:7345
+#: C/index-in.docbook:7332
 msgid ""
 "Set the attributes of the widget. If the widget has no default constructor, "
 "then you will need to initialize the widget in the initalizer list of your "
@@ -12571,11 +12555,11 @@ msgstr ""
 "设置部件的属性。如果部件没有默认构造函数,则你需要在容器类的构造函数的初始化"
 "列表中初始化部件。"
 
-#: C/index-in.docbook:7351
+#: C/index-in.docbook:7338
 msgid "Connect any signals you wish to use to the appropriate handlers."
 msgstr "为所以你需要使用的信号连接合适的信号处理函数。"
 
-#: C/index-in.docbook:7357
+#: C/index-in.docbook:7344
 msgid ""
 "Pack the widget into a container using the appropriate call, e.g. "
 "<methodname>Gtk::Box::append()</methodname>."
@@ -12583,7 +12567,7 @@ msgstr ""
 "调用适当的函数将部件装入容器中,例如:<methodname>Gtk::Box::append()</"
 "methodname>。"
 
-#: C/index-in.docbook:7367
+#: C/index-in.docbook:7354
 msgid ""
 "If you don't want all widgets to be shown, call <methodname>Gtk::Widget::"
 "hide()</methodname> on the widgets that you don't want to show. If a "
@@ -12594,11 +12578,11 @@ msgstr ""
 "hide()</methodname>可以将其隐藏,当一个容器部件被隐藏,它的所有子部件将一并被"
 "隐藏,即便你没有在那些子部件上调用<methodname>hide()</methodname>。"
 
-#: C/index-in.docbook:7378
+#: C/index-in.docbook:7365
 msgid "Building applications"
 msgstr "构建应用程序"
 
-#: C/index-in.docbook:7380
+#: C/index-in.docbook:7367
 msgid ""
 "This chapter is similar to the \"Building applications\" chapter in the "
 "<ulink url=\"https://developer.gnome.org/gtk4/unstable/\";>GTK4 Reference "
@@ -12608,19 +12592,19 @@ msgstr ""
 "本章节与<ulink url=\"https://developer.gnome.org/gtk4/unstable/\";>GTK4参考文"
 "档</ulink>的\"Building applications\"章节十分类似。"
 
-#: C/index-in.docbook:7389
+#: C/index-in.docbook:7376
 msgid "The binary file"
 msgstr "二进制文件"
 
-#: C/index-in.docbook:7390
+#: C/index-in.docbook:7377
 msgid "This gets installed in <filename>/usr/bin</filename>."
 msgstr "这将被安装在<filename>/usr/bin</filename>。"
 
-#: C/index-in.docbook:7393
+#: C/index-in.docbook:7380
 msgid "A desktop file"
 msgstr "桌面文件"
 
-#: C/index-in.docbook:7394
+#: C/index-in.docbook:7381
 msgid ""
 "The desktop file provides important information about the application to the "
 "desktop shell, such as its name, icon, D-Bus name, commandline to launch it, "
@@ -12630,11 +12614,11 @@ msgstr ""
 "Bus名、启动时的命令行等。此文件将安装在<filename>/usr/share/applications</"
 "filename>。"
 
-#: C/index-in.docbook:7399
+#: C/index-in.docbook:7386
 msgid "An icon"
 msgstr "图标"
 
-#: C/index-in.docbook:7400
+#: C/index-in.docbook:7387
 msgid ""
 "The icon gets installed in <filename>/usr/share/icons/hicolor/48x48/apps</"
 "filename>, where it will be found regardless of the current theme."
@@ -12642,11 +12626,11 @@ msgstr ""
 "图标将被安装在<filename>/usr/share/icons/hicolor/48x48/apps</filename>,无论"
 "当前主题是什么你都可以在其中找到图标。"
 
-#: C/index-in.docbook:7404
+#: C/index-in.docbook:7391
 msgid "A settings schema"
 msgstr "设置模式"
 
-#: C/index-in.docbook:7405
+#: C/index-in.docbook:7392
 msgid ""
 "If the application uses <classname>Gio::Settings</classname>, it will "
 "install its schema in <filename>/usr/share/glib-2.0/schemas</filename>, so "
@@ -12656,11 +12640,11 @@ msgstr ""
 "到<filename>/usr/share/glib-2.0/schemas</filename>,以便dconf-editor之类的工"
 "具可以找到它。"
 
-#: C/index-in.docbook:7410
+#: C/index-in.docbook:7397
 msgid "Other resources"
 msgstr "其他资源"
 
-#: C/index-in.docbook:7411
+#: C/index-in.docbook:7398
 msgid ""
 "Other files, such as <classname>Gtk::Builder</classname> ui files, are best "
 "loaded from resources stored in the application binary itself. This "
@@ -12672,11 +12656,11 @@ msgstr ""
 "自身的二进制中加载。这样就不需要按照传统将大多数文件安装在<filename>/usr/"
 "share</filename>中特定应用程序的位置。"
 
-#: C/index-in.docbook:7385
+#: C/index-in.docbook:7372
 msgid "An application consists of a number of files: <_:variablelist-1/>"
 msgstr "一个应用程序由许多文件组成:<_:variablelist-1/>"
 
-#: C/index-in.docbook:7419
+#: C/index-in.docbook:7406
 msgid ""
 "<application>gtkmm</application> includes application support that is built "
 "on top of <classname>Gio::Application</classname>. In this chapter we'll "
@@ -12695,7 +12679,7 @@ msgstr ""
 "<classname>Gtk::SearchBar</classname>、<classname>Gtk::ListBox</classname>等"
 "内容。"
 
-#: C/index-in.docbook:7428
+#: C/index-in.docbook:7415
 msgid ""
 "The full, buildable sources for these examples can be found in the "
 "<filename>examples/book/buildapp</filename> directory of the "
@@ -12719,11 +12703,11 @@ msgstr ""
 "一个示例。更多有关信息,请参见<filename>buildapp</filename>目录中包含的"
 "<filename>README</filename>文件。"
 
-#: C/index-in.docbook:7441 C/index-in.docbook:7485
+#: C/index-in.docbook:7428 C/index-in.docbook:7472
 msgid "A trivial application"
 msgstr "简单的应用程序"
 
-#: C/index-in.docbook:7443
+#: C/index-in.docbook:7430
 msgid ""
 "When using <classname>Gtk::Application</classname>, the <function>main()</"
 "function> function can be very simple. We just call <methodname>Gtk::"
@@ -12733,7 +12717,7 @@ msgstr ""
 "数可以非常简单。我们只是在应用程序类实例上调用<methodname>Gtk::Application::"
 "run()</methodname>。"
 
-#: C/index-in.docbook:7449
+#: C/index-in.docbook:7436
 msgid ""
 "All the application logic is in the application class, which is a subclass "
 "of <classname>Gtk::Application</classname>. Our example does not yet have "
@@ -12749,7 +12733,7 @@ msgstr ""
 "我们的应用程序类尝试打开文件,但是应用程序的窗口子类并没有执行应执行的操"
 "作)。"
 
-#: C/index-in.docbook:7458
+#: C/index-in.docbook:7445
 msgid ""
 "To handle these two cases, we override <methodname>signal_activate()</"
 "methodname>'s default handler, which gets called when the application is "
@@ -12761,7 +12745,7 @@ msgstr ""
 "<methodname>signal_open()</methodname>的默认处理函数,在没有命令行参数时前者"
 "的处理函数被调用,有命令行参数时后者的处理函数被调用。"
 
-#: C/index-in.docbook:7465
+#: C/index-in.docbook:7452
 msgid ""
 "<ulink url=\"http://developer.gnome.org/glibmm/unstable/";
 "classGio_1_1Application.html\">Gio::Application Reference</ulink>"
@@ -12769,7 +12753,7 @@ msgstr ""
 "<ulink url=\"http://developer.gnome.org/glibmm/unstable/";
 "classGio_1_1Application.html\">Gio::Application参考</ulink>"
 
-#: C/index-in.docbook:7466
+#: C/index-in.docbook:7453
 msgid ""
 "<ulink url=\"http://developer.gnome.org/gtkmm/unstable/";
 "classGtk_1_1Application.html\">Gtk::Application Reference</ulink>"
@@ -12777,7 +12761,7 @@ msgstr ""
 "<ulink url=\"http://developer.gnome.org/gtkmm/unstable/";
 "classGtk_1_1Application.html\">Gtk::Application参考</ulink>"
 
-#: C/index-in.docbook:7468
+#: C/index-in.docbook:7455
 msgid ""
 "Another important class that is part of the application support in "
 "<application>gtkmm</application> is <classname>Gtk::ApplicationWindow</"
@@ -12788,7 +12772,7 @@ msgstr ""
 "<classname>Gtk::ApplicationWindow</classname>。通常我们也会将其子类化。此时我"
 "们的子类还没有做任何事,所以我们只会得到一个空白的窗口。"
 
-#: C/index-in.docbook:7474
+#: C/index-in.docbook:7461
 msgid ""
 "As part of the initial setup of our application, we also create an icon and "
 "a desktop file. Note that @bindir@ in the desktop file needs to be replaced "
@@ -12797,11 +12781,11 @@ msgstr ""
 "作为应用程序初始设置的一部分,我们还为其创建了一个图标和桌面文件。请注意在使"
 "用这个桌面文件之前你还需要将文件中的@bindir@替换为应用程序二进制的实际路径。"
 
-#: C/index-in.docbook:7480
+#: C/index-in.docbook:7467
 msgid "Here is what we've achieved so far:"
 msgstr "到目前为止我们做到了:"
 
-#: C/index-in.docbook:7491
+#: C/index-in.docbook:7478
 msgid ""
 "This does not look very impressive yet, but our application is already "
 "presenting itself on the session bus, it has single-instance semantics, and "
@@ -12810,7 +12794,7 @@ msgstr ""
 "这看起来还无法让人印象深刻,但是我们的应用程序已经在会话总线上展示了自己。现"
 "在它具有单实例语义,并且接受命令行参数作为文件路径。"
 
-#: C/index-in.docbook:7496
+#: C/index-in.docbook:7483
 msgid ""
 "<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
 "examples/book/buildapp/step1\">Source Code</ulink>"
@@ -12818,11 +12802,11 @@ msgstr ""
 "<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
 "examples/book/buildapp/step1\">源代码</ulink>"
 
-#: C/index-in.docbook:7501 C/index-in.docbook:7544
+#: C/index-in.docbook:7488 C/index-in.docbook:7531
 msgid "Populating the window"
 msgstr "填充窗口"
 
-#: C/index-in.docbook:7503
+#: C/index-in.docbook:7490
 msgid ""
 "In this step, we use a <classname>Gtk::Builder</classname> instance to "
 "associate a <classname>Gtk::Builder</classname> ui file with our application "
@@ -12831,7 +12815,7 @@ msgstr ""
 "再次步骤中,我们使用<classname>Gtk::Builder</classname>实例将<classname>Gtk::"
 "Builder</classname> UI文件和我们的应用程序窗口类相关联。"
 
-#: C/index-in.docbook:7508
+#: C/index-in.docbook:7495
 msgid ""
 "Our simple ui file gives the window a title, and puts a <classname>Gtk::"
 "Stack</classname> widget as the main content."
@@ -12839,7 +12823,7 @@ msgstr ""
 "我们的简单UI文件为窗口设定了一个标题,并将一个<classname>Gtk::Stack</"
 "classname>文件放入了窗口中。"
 
-#: C/index-in.docbook:7513
+#: C/index-in.docbook:7500
 msgid ""
 "To make use of this file in our application, we revisit our <classname>Gtk::"
 "ApplicationWindow</classname> subclass, and call <methodname>Gtk::Builder::"
@@ -12859,12 +12843,12 @@ msgstr ""
 "<methodname>get_widget_derived()</methodname>的信息,请参见<link linkend="
 "\"sec-builder-using-derived-widgets\">使用派生部件</link>小节。"
 
-#: C/index-in.docbook:7532
+#: C/index-in.docbook:7519
 #, no-wrap
 msgid "$ glib-compile-resources --target=resources.c --generate-source exampleapp.gresource.xml"
 msgstr "$ glib-compile-resources --target=resources.c --generate-source exampleapp.gresource.xml"
 
-#: C/index-in.docbook:7524
+#: C/index-in.docbook:7511
 msgid ""
 "You may have noticed that we use the <methodname>_from_resource()</"
 "methodname> variant of the method that reads the ui file. Now we need to use "
@@ -12889,11 +12873,11 @@ msgstr ""
 "用Meson <ulink url=\"https://mesonbuild.com/Gnome-module.html\";>GNOME模块</"
 "ulink>中的<function>compile_resources()</function>函数。"
 
-#: C/index-in.docbook:7539
+#: C/index-in.docbook:7526
 msgid "Our application now looks like this:"
 msgstr "我们的应用程序现在看起来像这样:"
 
-#: C/index-in.docbook:7550
+#: C/index-in.docbook:7537
 msgid ""
 "<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
 "examples/book/buildapp/step2\">Source Code</ulink>"
@@ -12901,17 +12885,17 @@ msgstr ""
 "<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
 "examples/book/buildapp/step2\">源代码</ulink>"
 
-#: C/index-in.docbook:7555 C/index-in.docbook:7591
+#: C/index-in.docbook:7542 C/index-in.docbook:7578
 msgid "Opening files"
 msgstr "打开文件"
 
-#: C/index-in.docbook:7557
+#: C/index-in.docbook:7544
 msgid ""
 "In this step, we make our application show the contents of all the files "
 "that it is given on the commandline."
 msgstr "在这一步中,我们使我们的应用程序显示由命令行参数给定的文件的所有内容。"
 
-#: C/index-in.docbook:7562
+#: C/index-in.docbook:7549
 msgid ""
 "To this end, we add a data member to our application window and keep a "
 "pointer to the <classname>Gtk::Stack</classname> there. We get the pointer "
@@ -12922,7 +12906,7 @@ msgstr ""
 "<classname>Gtk::Stack</classname>的指针。我们通过在应用程序窗口的构造函数中调"
 "用<methodname>Gtk::Builder::get_widget()</methodname>获得指向该子部件的指针。"
 
-#: C/index-in.docbook:7568
+#: C/index-in.docbook:7555
 msgid ""
 "Now we revisit the <methodname>ExampleAppWindow::open_file_view()</"
 "methodname> method that is called for each commandline argument, and "
@@ -12933,7 +12917,7 @@ msgstr ""
 "open_file_view()</methodname>成员函数,并构造一个<classname>Gtk::TextView</"
 "classname>然后将其作为页面添加到<classname>Gtk::Stack</classname>中。"
 
-#: C/index-in.docbook:7574
+#: C/index-in.docbook:7561
 msgid ""
 "Lastly, we add a <classname>Gtk::StackSwitcher</classname> to the titlebar "
 "area in the ui file, and we tell it to display information about our stack."
@@ -12941,7 +12925,7 @@ msgstr ""
 "最后,我们将<classname>Gtk::StackSwitcher</classname>添加到UI文件的标题栏区"
 "域,并告诉它如何显示<classname>Gtk::Stack</classname>的相关信息。"
 
-#: C/index-in.docbook:7579
+#: C/index-in.docbook:7566
 msgid ""
 "The stack switcher gets all its information it needs to display tabs from "
 "the stack that it belongs to. Here, we are passing the label to show for "
@@ -12952,11 +12936,11 @@ msgstr ""
 "信息。在这,作为<methodname>Gtk::Stack::add()</methodname>方法的最后一个参"
 "数,我们为每个显示的文件传递一个标签。"
 
-#: C/index-in.docbook:7586
+#: C/index-in.docbook:7573
 msgid "Our application is beginning to take shape:"
 msgstr "我们的应用程序开始成形:"
 
-#: C/index-in.docbook:7597
+#: C/index-in.docbook:7584
 msgid ""
 "<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
 "examples/book/buildapp/step3\">Source Code</ulink>"
@@ -12964,17 +12948,17 @@ msgstr ""
 "<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
 "examples/book/buildapp/step3\">源代码</ulink>"
 
-#: C/index-in.docbook:7602 C/index-in.docbook:7637
+#: C/index-in.docbook:7589 C/index-in.docbook:7624
 msgid "A menu"
 msgstr "菜单"
 
-#: C/index-in.docbook:7604
+#: C/index-in.docbook:7591
 msgid ""
 "The menu is shown at the right side of the headerbar. It is meant to collect "
 "infrequently used actions that affect the whole application."
 msgstr "菜单显示在标题栏的右侧。它旨在放置所有应用程序不常用的动作。"
 
-#: C/index-in.docbook:7609
+#: C/index-in.docbook:7596
 msgid ""
 "Just like the application window, we specify our menu in a ui file, and add "
 "it as a resource to our binary."
@@ -12982,7 +12966,7 @@ msgstr ""
 "就像应用程序窗口一样,我们在UI文件中指定一个菜单,并将其作为资源添加到二进制"
 "中。"
 
-#: C/index-in.docbook:7614
+#: C/index-in.docbook:7601
 msgid ""
 "To make the menu appear, we have to load the ui file and associate the "
 "resulting menu model with the menu button that we've added to the headerbar. "
@@ -12993,7 +12977,7 @@ msgstr ""
 "单按钮相关联。由于菜单通过激活<classname>Gio::Action</classname>工作,我们还"
 "需要向应用程序中添加一组合适的动作。"
 
-#: C/index-in.docbook:7621
+#: C/index-in.docbook:7608
 msgid ""
 "Adding the actions is best done in the <methodname>on_startup()</methodname> "
 "default signal handler, which is guaranteed to be called once for each "
@@ -13002,7 +12986,7 @@ msgstr ""
 "最好在<methodname>on_startup()</methodname>的默认信号处理函数中完成添加动作,"
 "并确保每个应用程序实例都只调用一次。"
 
-#: C/index-in.docbook:7626
+#: C/index-in.docbook:7613
 msgid ""
 "Our preferences menu item does not do anything yet, but the Quit menu item "
 "is fully functional. It can also be activated by the usual Ctrl-Q shortcut. "
@@ -13013,11 +12997,11 @@ msgstr ""
 "Q快捷键激活它。快捷键通过<methodname>Gtk::Application::"
 "set_accel_for_action()</methodname>添加。"
 
-#: C/index-in.docbook:7632
+#: C/index-in.docbook:7619
 msgid "The menu looks like this:"
 msgstr "菜单如下所示"
 
-#: C/index-in.docbook:7643
+#: C/index-in.docbook:7630
 msgid ""
 "<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
 "examples/book/buildapp/step4\">Source Code</ulink>"
@@ -13025,11 +13009,11 @@ msgstr ""
 "<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
 "examples/book/buildapp/step4\">源代码</ulink>"
 
-#: C/index-in.docbook:7648
+#: C/index-in.docbook:7635
 msgid "A preference dialog"
 msgstr "首选项对话框"
 
-#: C/index-in.docbook:7650
+#: C/index-in.docbook:7637
 msgid ""
 "A typical application will have some preferences that should be remembered "
 "from one run to the next. Even for our simple example application, we may "
@@ -13038,7 +13022,7 @@ msgstr ""
 "经典的应用程序会有一些首选项,它们应该被记住而不需要在下次运行时在进行设置。"
 "即使对于我们这个简单的应用程序示例,我们可能也想改变用于文本内容的字体。"
 
-#: C/index-in.docbook:7656
+#: C/index-in.docbook:7643
 msgid ""
 "We are going to use <classname>Gio::Settings</classname> to store our "
 "preferences. <classname>Gio::Settings</classname> requires a schema that "
@@ -13049,7 +13033,7 @@ msgstr ""
 "<classname>Gio::Settings</classname>需要一个用于描述我们的设置的模式,在本例"
 "中为<filename>org.gtkmm.exampleapp.gschema.xml</filename>文件。"
 
-#: C/index-in.docbook:7662
+#: C/index-in.docbook:7649
 msgid ""
 "Before we can make use of this schema in our application, we need to compile "
 "it into the binary form that <classname>Gio::Settings</classname> expects. "
@@ -13066,55 +13050,55 @@ msgstr ""
 "com/Gnome-module.html\">GNOME模块</ulink>中提供了"
 "<function>compile_schemas()</function>执行此操作。"
 
-#: C/index-in.docbook:7676
-#, no-wrap
-msgid ""
-"\n"
-"m_settings = Gio::Settings::create(\"org.gtkmm.exampleapp\");\n"
-"m_settings-&gt;bind(\"transition\", m_stack-&gt;property_transition_type());\n"
-msgstr ""
-"\n"
-"m_settings = Gio::Settings::create(\"org.gtkmm.exampleapp\");\n"
-"m_settings-&gt;bind(\"transition\", m_stack-&gt;property_transition_type());\n"
-
-#: C/index-in.docbook:7671
+#: C/index-in.docbook:7658
 msgid ""
 "Next, we need to connect our settings to the widgets that they are supposed "
 "to control. One convenient way to do this is to use <methodname>Gio::"
 "Settings::bind()</methodname> to bind settings keys to object properties, as "
 "we do for the transition setting in <classname>ExampleAppWindow</"
-"classname>'s constructor. <_:programlisting-1/>"
+"classname>'s constructor."
 msgstr ""
 "接下来,我们需要将设置连接到应该被控制的部件上。一种很方便的方法是使用"
 "<methodname>Gio::Settings::bind()</methodname>将对象的属性和设置键相互绑定,"
 "就像我们在<classname>ExampleAppWindow</classname>的构造函数中做的过渡设置一"
-"样。<_:programlisting-1/>"
+"样。"
 
-#: C/index-in.docbook:7686
+#: C/index-in.docbook:7664
 #, no-wrap
 msgid ""
 "\n"
-"auto tag = buffer-&gt;create_tag();\n"
-"m_settings-&gt;bind(\"font\", tag-&gt;property_font());\n"
-"buffer-&gt;apply_tag(tag, buffer-&gt;begin(), buffer-&gt;end());\n"
+"m_settings = Gio::Settings::create(\"org.gtkmm.exampleapp\");\n"
+"m_settings-&gt;bind(\"transition\", m_stack-&gt;property_transition_type());\n"
 msgstr ""
 "\n"
-"auto tag = buffer-&gt;create_tag();\n"
-"m_settings-&gt;bind(\"font\", tag-&gt;property_font());\n"
-"buffer-&gt;apply_tag(tag, buffer-&gt;begin(), buffer-&gt;end());\n"
-
-#: C/index-in.docbook:7682
+"m_settings = Gio::Settings::create(\"org.gtkmm.exampleapp\");\n"
+"m_settings-&gt;bind(\"transition\", m_stack-&gt;property_transition_type());\n"
+
+#: C/index-in.docbook:7669
 msgid ""
 "The code to connect the font setting is a little more involved, since it "
 "corresponds to an object property in a <classname>Gtk::TextTag</classname> "
 "that we must first create. The code is in <methodname>ExampleAppWindow::"
-"open_file_view()</methodname>. <_:programlisting-1/>"
+"open_file_view()</methodname>."
 msgstr ""
 "字体设置的连接要麻烦的多,因为我们需要先创建对应的对象属性的<classname>Gtk::"
 "TextTag</classname>。以下代码在<methodname>ExampleAppWindow::"
-"open_file_view()</methodname>函数中。<_:programlisting-1/>"
+"open_file_view()</methodname>函数中。"
+
+#: C/index-in.docbook:7674
+#, no-wrap
+msgid ""
+"\n"
+"auto tag = buffer-&gt;create_tag();\n"
+"m_settings-&gt;bind(\"font\", tag-&gt;property_font());\n"
+"buffer-&gt;apply_tag(tag, buffer-&gt;begin(), buffer-&gt;end());\n"
+msgstr ""
+"\n"
+"auto tag = buffer-&gt;create_tag();\n"
+"m_settings-&gt;bind(\"font\", tag-&gt;property_font());\n"
+"buffer-&gt;apply_tag(tag, buffer-&gt;begin(), buffer-&gt;end());\n"
 
-#: C/index-in.docbook:7693
+#: C/index-in.docbook:7680
 msgid ""
 "At this point, the application will already react if you change one of the "
 "settings, e.g. using the <command>gsettings</command> commandline tool. Of "
@@ -13131,7 +13115,19 @@ msgstr ""
 "classname>中看到的技术:<classname>Gtk::Builder</classname> UI文件和设置绑"
 "定。"
 
-#: C/index-in.docbook:7706
+#: C/index-in.docbook:7689
+msgid ""
+"When we've created the <filename>prefs.ui</filename> file and the "
+"<classname>ExampleAppPrefs</classname> class, we revisit the "
+"<methodname>ExampleApplication::on_action_preferences()</methodname> method "
+"in our application class, and make it open a new preference dialog."
+msgstr ""
+"我们创建<filename>prefs.ui</filename>文件和<classname>ExampleAppPrefs</"
+"classname>子类之后,我们重访<methodname>ExampleApplication::"
+"on_action_preferences()</methodname>成员函数,并使其打开一个新的首选项对话"
+"框。"
+
+#: C/index-in.docbook:7694
 #, no-wrap
 msgid ""
 "\n"
@@ -13142,30 +13138,17 @@ msgstr ""
 "auto prefs_dialog = ExampleAppPrefs::create(*get_active_window());\n"
 "prefs_dialog-&gt;present();\n"
 
-#: C/index-in.docbook:7702
-msgid ""
-"When we've created the <filename>prefs.ui</filename> file and the "
-"<classname>ExampleAppPrefs</classname> class, we revisit the "
-"<methodname>ExampleApplication::on_action_preferences()</methodname> method "
-"in our application class, and make it open a new preference dialog. <_:"
-"programlisting-1/>"
-msgstr ""
-"我们创建<filename>prefs.ui</filename>文件和<classname>ExampleAppPrefs</"
-"classname>子类之后,我们重访<methodname>ExampleApplication::"
-"on_action_preferences()</methodname>成员函数,并使其打开一个新的首选项对话"
-"框。<_:programlisting-1/>"
-
-#: C/index-in.docbook:7712
+#: C/index-in.docbook:7699
 msgid ""
 "After all this work, our application can now show a preference dialog like "
 "this:"
 msgstr "完成所有工作后,我们的应用程序现在可以显示如下所示的首选项对话框:"
 
-#: C/index-in.docbook:7717
+#: C/index-in.docbook:7704
 msgid "An preference dialog"
 msgstr "首选项对话框"
 
-#: C/index-in.docbook:7723
+#: C/index-in.docbook:7710
 msgid ""
 "<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
 "examples/book/buildapp/step5\">Source Code</ulink>"
@@ -13173,11 +13156,11 @@ msgstr ""
 "<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
 "examples/book/buildapp/step5\">源代码</ulink>"
 
-#: C/index-in.docbook:7728 C/index-in.docbook:7771
+#: C/index-in.docbook:7715 C/index-in.docbook:7758
 msgid "Adding a search bar"
 msgstr "添加搜索栏"
 
-#: C/index-in.docbook:7730
+#: C/index-in.docbook:7717
 msgid ""
 "We continue to flesh out the functionality of our application. For now, we "
 "add search. <application>gtkmm</application> supports this with "
@@ -13190,7 +13173,7 @@ msgstr ""
 "<classname>Gtk::SearchBar</classname>对此提供了支持。搜索栏是一个部件,可以从"
 "从顶部滑入以显示搜索条目。"
 
-#: C/index-in.docbook:7736
+#: C/index-in.docbook:7723
 msgid ""
 "We add a toggle button to the header bar, which can be used to slide out the "
 "search bar below the header bar. The new widgets are added in the "
@@ -13199,7 +13182,18 @@ msgstr ""
 "我们向标题栏添加了一个开关按钮,可以用于滑出位于标题栏下方的搜索栏。新的部件"
 "将添加到<filename>window.ui</filename>文件中。"
 
-#: C/index-in.docbook:7745
+#: C/index-in.docbook:7728
+msgid ""
+"Implementing the search needs quite a few code changes that we are not going "
+"to completely go over here. The central piece of the search implementation "
+"is a signal handler that listens for text changes in the search entry, shown "
+"here without error handling."
+msgstr ""
+"实现搜索需要进行大量的代码更改,在此我们不对其进行详细的介绍。实现搜索的核心"
+"部分是一个信号处理函数,它监听搜索条目的变更,此处显示的示例没有进行错误处"
+"理。"
+
+#: C/index-in.docbook:7733
 #, no-wrap
 msgid ""
 "\n"
@@ -13240,22 +13234,11 @@ msgstr ""
 "  }\n"
 "}\n"
 
-#: C/index-in.docbook:7741
-msgid ""
-"Implementing the search needs quite a few code changes that we are not going "
-"to completely go over here. The central piece of the search implementation "
-"is a signal handler that listens for text changes in the search entry, shown "
-"here without error handling. <_:programlisting-1/>"
-msgstr ""
-"实现搜索需要进行大量的代码更改,在此我们不对其进行详细的介绍。实现搜索的核心"
-"部分是一个信号处理函数,它监听搜索条目的变更,此处显示的示例没有进行错误处"
-"理。<_:programlisting-1/>"
-
-#: C/index-in.docbook:7766
+#: C/index-in.docbook:7753
 msgid "With the search bar, our application now looks like this:"
 msgstr "有了搜索栏后,我们的应用程序看起来像这样:"
 
-#: C/index-in.docbook:7777
+#: C/index-in.docbook:7764
 msgid ""
 "<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
 "examples/book/buildapp/step6\">Source Code</ulink>"
@@ -13263,11 +13246,11 @@ msgstr ""
 "<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
 "examples/book/buildapp/step6\">源代码</ulink>"
 
-#: C/index-in.docbook:7782 C/index-in.docbook:7817
+#: C/index-in.docbook:7769 C/index-in.docbook:7804
 msgid "Adding a side bar"
 msgstr "添加侧边栏"
 
-#: C/index-in.docbook:7784
+#: C/index-in.docbook:7771
 msgid ""
 "As another piece of functionality, we are adding a sidebar, which "
 "demonstrates <classname>Gtk::Revealer</classname> and <classname>Gtk::"
@@ -13278,7 +13261,7 @@ msgstr ""
 "Revealer</classname>和<classname>Gtk::ListBox</classname>。新的部件将被添加到"
 "<filename>window.ui</filename>文件中。"
 
-#: C/index-in.docbook:7790
+#: C/index-in.docbook:7777
 msgid ""
 "The code to populate the sidebar with buttons for the words found in each "
 "file is a little too involved to go into here. But we'll look at the code to "
@@ -13289,7 +13272,18 @@ msgstr ""
 "我们将对为菜单中添加新功能的多选按钮的代码进行介绍。菜单项将被添加到"
 "<filename>gears_menu.ui</filename> UI文件中。"
 
-#: C/index-in.docbook:7801
+#: C/index-in.docbook:7784
+msgid ""
+"To connect the menu item to the new <literal>show-words</literal> setting, "
+"we use a <classname>Gio::Action</classname> corresponding to the given "
+"<classname>Gio::Settings</classname> key. In <classname>ExampleAppWindow</"
+"classname>'s constructor:"
+msgstr ""
+"我们使用<classname>Gio::Action</classname>与给定的<classname>Gio::Settings</"
+"classname>键相关联,以使菜单项与新的<literal>show-words</literal>设置向连接。"
+"在<classname>ExampleAppWindow</classname>构造函数中:"
+
+#: C/index-in.docbook:7789
 #, no-wrap
 msgid ""
 "\n"
@@ -13310,22 +13304,11 @@ msgstr ""
 "m_gears-&gt;set_menu_model(menu);\n"
 "add_action(m_settings-&gt;create_action(\"show-words\"));\n"
 
-#: C/index-in.docbook:7797
-msgid ""
-"To connect the menu item to the new <literal>show-words</literal> setting, "
-"we use a <classname>Gio::Action</classname> corresponding to the given "
-"<classname>Gio::Settings</classname> key. In <classname>ExampleAppWindow</"
-"classname>'s constructor: <_:programlisting-1/>"
-msgstr ""
-"我们使用<classname>Gio::Action</classname>与给定的<classname>Gio::Settings</"
-"classname>键相关联,以使菜单项与新的<literal>show-words</literal>设置向连接。"
-"在<classname>ExampleAppWindow</classname>构造函数中:<_:programlisting-1/>"
-
-#: C/index-in.docbook:7812
+#: C/index-in.docbook:7799
 msgid "What our application looks like now:"
 msgstr "现在我们的应用程序看起来像这样:"
 
-#: C/index-in.docbook:7823
+#: C/index-in.docbook:7810
 msgid ""
 "<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
 "examples/book/buildapp/step7\">Source Code</ulink>"
@@ -13333,11 +13316,11 @@ msgstr ""
 "<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
 "examples/book/buildapp/step7\">源代码</ulink>"
 
-#: C/index-in.docbook:7829 C/index-in.docbook:7871
+#: C/index-in.docbook:7816 C/index-in.docbook:7858
 msgid "Properties"
 msgstr "属性"
 
-#: C/index-in.docbook:7831
+#: C/index-in.docbook:7818
 msgid ""
 "Widgets and other objects have many useful properties. Here we show some "
 "ways to use them in new and flexible ways, by wrapping them in actions with "
@@ -13348,7 +13331,7 @@ msgstr ""
 "它们的方法。例如,将它们包装在<classname>Gio::PropertyAction</classname>动作"
 "中或将它们与<classname>Glib::Binding</classname>绑定。"
 
-#: C/index-in.docbook:7837
+#: C/index-in.docbook:7824
 msgid ""
 "To set this up, we add two labels to the header bar in our <filename>window."
 "ui</filename> file, named <literal>lines_label</literal> and <literal>lines</"
@@ -13361,20 +13344,7 @@ msgstr ""
 "的构造函数中获取指向它们的指针。接着我们向齿轮菜单中添加了一个新的\"Lines\"菜"
 "单项,该菜单项会触发<literal>show-lines</literal>动作。"
 
-#: C/index-in.docbook:7854
-#, no-wrap
-msgid ""
-"add_action(Gio::PropertyAction::create(\"show-lines\", m_lines-&gt;property_visible()));\n"
-"m_binding_lines_visible = Glib::Binding::bind_property(m_lines-&gt;property_visible(),\n"
-"  m_lines_label-&gt;property_visible());\n"
-"\n"
-msgstr ""
-"add_action(Gio::PropertyAction::create(\"show-lines\", m_lines-&gt;property_visible()));\n"
-"m_binding_lines_visible = Glib::Binding::bind_property(m_lines-&gt;property_visible(),\n"
-"  m_lines_label-&gt;property_visible());\n"
-"\n"
-
-#: C/index-in.docbook:7845
+#: C/index-in.docbook:7832
 msgid ""
 "To make this menu item do something, we create a property action for the "
 "<literal>visible</literal> property of the <literal>lines</literal> label, "
@@ -13383,16 +13353,29 @@ msgid ""
 "Since we want both labels to appear and disappear together, we bind the "
 "<literal>visible</literal> property of the <literal>lines_label</literal> "
 "widget to the same property of the <literal>lines</literal> widget. In "
-"<classname>ExampleAppWindow</classname>'s constructor: <_:programlisting-1/>"
+"<classname>ExampleAppWindow</classname>'s constructor:"
 msgstr ""
 "为了使此菜单项能执行某些操作,我们为<literal>lines</literal>标签的"
 "<literal>visible</literal>属性创建了一个属性动作,并将其添加到窗口动作中。这"
 "样做的效果是,每当动作被激活,标签的可见性就会改变。由于我们希望两个标签的可"
 "见性一致,因此我们将<literal>lines_label</literal>部件的<literal>visible</"
 "literal>属性绑定到<literal>lines</literal>部件的相同属性上。在"
-"<classname>ExampleAppWindow</classname>的构造函数中:<_:programlisting-1/>"
+"<classname>ExampleAppWindow</classname>的构造函数中:"
+
+#: C/index-in.docbook:7842
+#, no-wrap
+msgid ""
+"add_action(Gio::PropertyAction::create(\"show-lines\", m_lines-&gt;property_visible()));\n"
+"m_binding_lines_visible = Glib::Binding::bind_property(m_lines-&gt;property_visible(),\n"
+"  m_lines_label-&gt;property_visible());\n"
+"\n"
+msgstr ""
+"add_action(Gio::PropertyAction::create(\"show-lines\", m_lines-&gt;property_visible()));\n"
+"m_binding_lines_visible = Glib::Binding::bind_property(m_lines-&gt;property_visible(),\n"
+"  m_lines_label-&gt;property_visible());\n"
+"\n"
 
-#: C/index-in.docbook:7861
+#: C/index-in.docbook:7848
 msgid ""
 "We also need a function that counts the lines of the currently active tab, "
 "and updates the <literal>lines</literal> label. See the full source if you "
@@ -13401,11 +13384,11 @@ msgstr ""
 "我们还需要一个函数对当前标签页的行进行计数,并更新<literal>lines</literal>标"
 "签。如果你对此感兴趣请阅读完整源代码。"
 
-#: C/index-in.docbook:7866
+#: C/index-in.docbook:7853
 msgid "This brings our example application to this appearance:"
 msgstr "现在我们的示例应用程序看起来如下:"
 
-#: C/index-in.docbook:7877
+#: C/index-in.docbook:7864
 msgid ""
 "<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
 "examples/book/buildapp/step8\">Source Code</ulink>"
@@ -13413,11 +13396,11 @@ msgstr ""
 "<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
 "examples/book/buildapp/step8\">源代码</ulink>"
 
-#: C/index-in.docbook:7882 C/index-in.docbook:7908
+#: C/index-in.docbook:7869 C/index-in.docbook:7895
 msgid "Header bar"
 msgstr "标题栏"
 
-#: C/index-in.docbook:7884
+#: C/index-in.docbook:7871
 msgid ""
 "Our application already uses a <classname>Gtk::HeaderBar</classname> instead "
 "of a 'normal' window titlebar. The header bar is a direct child of the "
@@ -13428,36 +13411,36 @@ msgstr ""
 "栏。标题栏是窗口的直接子项,其类型为<literal>titlebar</literal>。这些由"
 "<filename>window.ui</filename>文件进行设置。"
 
-#: C/index-in.docbook:7897
-#, no-wrap
-msgid ""
-"Gtk::IconTheme::get_for_display(get_display())-&gt;add_resource_path(\"/org/gtkmm/exampleapp\");\n"
-"set_icon_name(\"exampleapp\");\n"
-"\n"
-msgstr ""
-"Gtk::IconTheme::get_for_display(get_display())-&gt;add_resource_path(\"/org/gtkmm/exampleapp\");\n"
-"set_icon_name(\"exampleapp\");\n"
-"\n"
-
-#: C/index-in.docbook:7891
+#: C/index-in.docbook:7878
 msgid ""
 "Here we'll just make two small changes to the header bar. The "
 "<literal>decoration-layout</literal> property is set in the <filename>window."
 "ui</filename> file, to show only the close button, and hide the minimize and "
 "maximize buttons. We also include an icon in the resource file, and set up "
 "this icon as the window icon. In <classname>ExampleAppWindow</classname>'s "
-"constructor: <_:programlisting-1/>"
+"constructor:"
 msgstr ""
 "在这里我们对标题栏进行了两个小的更改。<literal>decoration-layout</literal>属"
 "性在<filename>window.ui</filename>文件中设置,使标题栏只显示关闭按钮,并隐藏"
 "最小化和最大化按钮。我们还在资源文件中包含了一个图标,并将其设置为窗口图标。"
-"在<classname>ExampleAppWindow</classname>的构造函数中:<_:programlisting-1/>"
+"在<classname>ExampleAppWindow</classname>的构造函数中:"
+
+#: C/index-in.docbook:7885
+#, no-wrap
+msgid ""
+"Gtk::IconTheme::get_for_display(get_display())-&gt;add_resource_path(\"/org/gtkmm/exampleapp\");\n"
+"set_icon_name(\"exampleapp\");\n"
+"\n"
+msgstr ""
+"Gtk::IconTheme::get_for_display(get_display())-&gt;add_resource_path(\"/org/gtkmm/exampleapp\");\n"
+"set_icon_name(\"exampleapp\");\n"
+"\n"
 
-#: C/index-in.docbook:7903
+#: C/index-in.docbook:7890
 msgid "Here is how the application now looks:"
 msgstr "现在应用程序看起来如下所示:"
 
-#: C/index-in.docbook:7914
+#: C/index-in.docbook:7901
 msgid ""
 "The <filename>window.ui</filename> file sets a header bar title, but this "
 "title is not shown. That's because the stack switcher is a child of type "
@@ -13468,7 +13451,7 @@ msgstr ""
 "为堆切换器是<literal>title</literal>的子类型。此时堆切换器成为了自定义标题并"
 "将正常的标题标签隐藏。"
 
-#: C/index-in.docbook:7920
+#: C/index-in.docbook:7907
 msgid ""
 "<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
 "examples/book/buildapp/step9\">Source Code</ulink>"
@@ -13476,11 +13459,11 @@ msgstr ""
 "<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
 "examples/book/buildapp/step9\">源代码</ulink>"
 
-#: C/index-in.docbook:7927
+#: C/index-in.docbook:7914
 msgid "Contributing"
 msgstr "贡献"
 
-#: C/index-in.docbook:7929
+#: C/index-in.docbook:7916
 msgid ""
 "This document, like so much other great software out there, was created for "
 "free by volunteers. If you are at all knowledgeable about any aspect of "
@@ -13491,7 +13474,7 @@ msgstr ""
 "<application>gtkmm</application>没有文档的部分有所了解,请考虑帮助编写/翻译本"
 "文档。"
 
-#: C/index-in.docbook:7935
+#: C/index-in.docbook:7922
 msgid ""
 "Ideally, we would like you to <ulink url=\"https://gitlab.gnome.org/GNOME/";
 "gtkmm-documentation/-/merge_requests\"> provide a merge request</ulink> to "
@@ -13503,7 +13486,7 @@ msgstr ""
 "C/index-in.docbook</filename>提供MR。该文件位于GNOME的gitlab <literal>gtkmm-"
 "documentation</literal>模块中。"
 
-#: C/index-in.docbook:7941
+#: C/index-in.docbook:7928
 msgid ""
 "If you do decide to contribute, please post your contribution to the "
 "<application>gtkmm</application> mailing list at <ulink url=\"mailto:gtkmm-";
@@ -13522,11 +13505,11 @@ msgstr ""
 "免费的,你添加所有内容也需要是免费的。也就是说人们必须能够在程序中使用示例的"
 "任何部分,以及自由分发本文档的副本。"
 
-#: C/index-in.docbook:7954
+#: C/index-in.docbook:7941
 msgid "The RefPtr smartpointer"
 msgstr "RefPtr智能指针"
 
-#: C/index-in.docbook:7955
+#: C/index-in.docbook:7942
 msgid ""
 "<classname>Glib::RefPtr</classname> is a smartpointer. Specifically, it is a "
 "reference-counting smartpointer. You might be familiar with <classname>std::"
@@ -13551,7 +13534,7 @@ msgstr ""
 "<ulink url=\"https://gitlab.gnome.org/GNOME/glibmm/-/issues/24\";>问题24</"
 "ulink>)。"
 
-#: C/index-in.docbook:7966
+#: C/index-in.docbook:7953
 msgid ""
 "<ulink url=\"http://developer.gnome.org/glibmm/unstable/classGlib_1_1RefPtr.";
 "html\">Reference</ulink>"
@@ -13559,16 +13542,16 @@ msgstr ""
 "<ulink url=\"http://developer.gnome.org/glibmm/unstable/classGlib_1_1RefPtr.";
 "html\">参考</ulink>"
 
-#: C/index-in.docbook:7968
+#: C/index-in.docbook:7955
 msgid ""
 "A smartpointer acts much like a normal pointer. Here are a few examples."
 msgstr "智能指针的行为很像普通指针。这里有几个例子。"
 
-#: C/index-in.docbook:7971
+#: C/index-in.docbook:7958
 msgid "Copying"
 msgstr "复制"
 
-#: C/index-in.docbook:7972
+#: C/index-in.docbook:7959
 msgid ""
 "You can copy <classname>RefPtr</classname>s, just like normal pointers. But "
 "unlike normal pointers, you don't need to worry about deleting the "
@@ -13577,7 +13560,7 @@ msgstr ""
 "你可以像复制普通指针一样复制<classname>RefPtr</classname>,你不需要担心删除底"
 "层实例。"
 
-#: C/index-in.docbook:7978
+#: C/index-in.docbook:7964
 #, no-wrap
 msgid ""
 "\n"
@@ -13588,7 +13571,7 @@ msgstr ""
 "auto refPixbuf = Gdk::Pixbuf::create_from_file(filename);\n"
 "auto refPixbuf2 = refPixbuf;\n"
 
-#: C/index-in.docbook:7983
+#: C/index-in.docbook:7968
 msgid ""
 "Of course this means that you can store <classname>RefPtr</classname>s in "
 "standard containers, such as <classname>std::vector</classname> or "
@@ -13597,7 +13580,7 @@ msgstr ""
 "这意味着你可以将<classname>RefPtr</classname>储存于标准容器中,例如:"
 "<classname>std::vector</classname>或<classname>std::list</classname>。"
 
-#: C/index-in.docbook:7988
+#: C/index-in.docbook:7972
 #, no-wrap
 msgid ""
 "\n"
@@ -13610,18 +13593,18 @@ msgstr ""
 "auto refPixbuf = Gdk::Pixbuf::create_from_file(filename);\n"
 "listPixbufs.push_back(refPixbuf);\n"
 
-#: C/index-in.docbook:7996
+#: C/index-in.docbook:7979
 msgid "Dereferencing"
 msgstr "解引用"
 
-#: C/index-in.docbook:7997
+#: C/index-in.docbook:7980
 msgid ""
 "You can dereference a smartpointer with the -&gt; operator, to call the "
 "methods of the underlying instance, just like a normal pointer."
 msgstr ""
 "你可以使用-&gt;操作符解引用智能指针,就像使用普通指针访问底层实例的方法一样。"
 
-#: C/index-in.docbook:8001
+#: C/index-in.docbook:7983
 #, no-wrap
 msgid ""
 "\n"
@@ -13632,7 +13615,7 @@ msgstr ""
 "auto refPixbuf = Gdk::Pixbuf::create_from_file(filename);\n"
 "auto width = refPixbuf-&gt;get_width();\n"
 
-#: C/index-in.docbook:8006
+#: C/index-in.docbook:7987
 msgid ""
 "You can also use the * operator and the <methodname>get()</methodname> "
 "method to access the underlying instance, but it's usually a bad idea to do "
@@ -13643,7 +13626,7 @@ msgstr ""
 "这不是一个好主意。除非你非常的谨慎没有犯错,否则你将得到一个不存在于引用计数"
 "中的指向底层实例的指针或底层实例的引用。"
 
-#: C/index-in.docbook:8012
+#: C/index-in.docbook:7992
 #, no-wrap
 msgid ""
 "\n"
@@ -13654,11 +13637,11 @@ msgstr ""
 "auto refPixbuf = Gdk::Pixbuf::create_from_file(filename);\n"
 "auto&amp; underlying = *refPixbuf; // Possible, but not recommended\n"
 
-#: C/index-in.docbook:8019
+#: C/index-in.docbook:7998
 msgid "Casting"
 msgstr "类型转换"
 
-#: C/index-in.docbook:8020
+#: C/index-in.docbook:7999
 msgid ""
 "You can cast <classname>RefPtr</classname>s to base types, just like normal "
 "pointers."
@@ -13666,7 +13649,7 @@ msgstr ""
 "你可以像对正常指针进行类型转换一样,将<classname>RefPtr</classname>转换到基础"
 "类型。"
 
-#: C/index-in.docbook:8025
+#: C/index-in.docbook:8003
 #, no-wrap
 msgid ""
 "\n"
@@ -13677,7 +13660,7 @@ msgstr ""
 "auto refStore = Gtk::TreeStore::create(columns);\n"
 "Glib::RefPtr&lt;Gtk::TreeModel&gt; refModel = refStore;\n"
 
-#: C/index-in.docbook:8030
+#: C/index-in.docbook:8007
 msgid ""
 "This means that any method which takes a <type>const Glib::RefPtr&lt;"
 "BaseType&gt;&amp;</type> argument can also take a <type>const Glib::"
@@ -13688,13 +13671,13 @@ msgstr ""
 "数也能接受<type>const Glib::RefPtr&lt;DerivedType&gt;&amp;</type>对象。此转换"
 "和普通指针一样是隐式的。"
 
-#: C/index-in.docbook:8034
+#: C/index-in.docbook:8011
 msgid ""
 "You can also cast to a derived type, but the syntax is a little different "
 "than with a normal pointer."
 msgstr "你还可以将其转换为派生类型,但是语法和普通指针的语法略有不同。"
 
-#: C/index-in.docbook:8038
+#: C/index-in.docbook:8014
 #, no-wrap
 msgid ""
 "\n"
@@ -13705,18 +13688,18 @@ msgstr ""
 "auto refStore = std::dynamic_pointer_cast&lt;Gtk::TreeStore&gt;(refModel);\n"
 "auto refStore2 = std::static_pointer_cast&lt;Gtk::TreeStore&gt;(refModel);\n"
 
-#: C/index-in.docbook:8045
+#: C/index-in.docbook:8020
 msgid "Checking for nullptr"
 msgstr "nullptr检查"
 
-#: C/index-in.docbook:8046
+#: C/index-in.docbook:8021
 msgid ""
 "Just like normal pointers, you can check whether a <classname>RefPtr</"
 "classname> points to anything."
 msgstr ""
 "就像普通指针一样,你可以检查<classname>RefPtr</classname>是否指向了任何东西。"
 
-#: C/index-in.docbook:8051
+#: C/index-in.docbook:8025
 #, no-wrap
 msgid ""
 "\n"
@@ -13735,7 +13718,7 @@ msgstr ""
 "  ...\n"
 "}\n"
 
-#: C/index-in.docbook:8060
+#: C/index-in.docbook:8033
 msgid ""
 "But unlike normal pointers, <classname>RefPtr</classname>s are automatically "
 "initialized to <literal>nullptr</literal> so you don't need to remember to "
@@ -13744,11 +13727,11 @@ msgstr ""
 "和普通指针不一样的是,<classname>RefPtr</classname>将会自动初始化为"
 "<literal>nullptr</literal>,不需要你自己进行置空。"
 
-#: C/index-in.docbook:8066
+#: C/index-in.docbook:8039
 msgid "Constness"
 msgstr "常数"
 
-#: C/index-in.docbook:8067
+#: C/index-in.docbook:8040
 msgid ""
 "The use of the <literal>const</literal> keyword in C++ is not always clear. "
 "You might not realise that <type>const Something*</type> declares a pointer "
@@ -13759,7 +13742,7 @@ msgstr ""
 "<type>const Something*</type>声明了一个指向<type>const Something</type>的指"
 "针。这个指针的指向是可以被改变的,其指向的<type>Something</type>不能被改变。"
 
-#: C/index-in.docbook:8073
+#: C/index-in.docbook:8046
 msgid ""
 "Therefore, the <classname>RefPtr</classname> equivalent of <type>Something*</"
 "type> for a method parameter is <type>const Glib::RefPtr&lt;Something&gt;"
@@ -13771,7 +13754,7 @@ msgstr ""
 "<type>const Something*</type>等效的是<type>const Glib::RefPtr&lt;const "
 "Something&gt;&amp;</type>。"
 
-#: C/index-in.docbook:8080
+#: C/index-in.docbook:8053
 msgid ""
 "The <literal>const ... &amp;</literal> around both is just for efficiency, "
 "like using <classname>const std::string&amp;</classname> instead of "
@@ -13782,11 +13765,11 @@ msgstr ""
 "<classname>const std::string&amp;</classname>而不是用<classname>std::string</"
 "classname>一样,这是为了避免不必要的复制。"
 
-#: C/index-in.docbook:8095
+#: C/index-in.docbook:8068
 msgid "Connecting signal handlers"
 msgstr "连接到信号处理函数"
 
-#: C/index-in.docbook:8096
+#: C/index-in.docbook:8069
 msgid ""
 "<application>gtkmm</application> widget classes have signal accessor "
 "methods, such as <methodname>Gtk::Button::signal_clicked()</methodname>, "
@@ -13804,11 +13787,11 @@ msgstr ""
 "使用任何函数作为信号的处理程序,不过通常你会希望使用类的成员函数。在"
 "<application>GTK</application>的C代码中,这些信号处理程序被称为回调。"
 
-#: C/index-in.docbook:8106
+#: C/index-in.docbook:8079
 msgid "Here's an example of a signal handler being connected to a signal:"
 msgstr "这是将信号处理函数与信号相连接的示例:"
 
-#: C/index-in.docbook:8111
+#: C/index-in.docbook:8083
 #, no-wrap
 msgid ""
 "\n"
@@ -13839,17 +13822,17 @@ msgstr ""
 "    button.signal_clicked().connect(sigc::ptr_fun(&amp;on_button_clicked));\n"
 "}\n"
 
-#: C/index-in.docbook:8127
+#: C/index-in.docbook:8098
 msgid ""
 "There's rather a lot to think about in this (non-functional) code. First "
 "let's identify the parties involved:"
 msgstr "在此代码(非功能性)中有很多事情要考虑,首先让我们确定代码的行为:"
 
-#: C/index-in.docbook:8135
+#: C/index-in.docbook:8106
 msgid "The signal handler is <methodname>on_button_clicked()</methodname>."
 msgstr "信号处理函数是<methodname>on_button_clicked()</methodname>。"
 
-#: C/index-in.docbook:8141
+#: C/index-in.docbook:8112
 msgid ""
 "We're hooking it up to the <classname>Gtk::Button</classname> object called "
 "<varname>button</varname>."
@@ -13857,7 +13840,7 @@ msgstr ""
 "我们将其连接到一个名为<varname>button</varname>的<classname>Gtk::Button</"
 "classname>对象。"
 
-#: C/index-in.docbook:8148
+#: C/index-in.docbook:8119
 msgid ""
 "When the Button emits its <literal>clicked</literal> signal, "
 "<methodname>on_button_clicked()</methodname> will be called."
@@ -13865,11 +13848,11 @@ msgstr ""
 "当<varname>button</varname>发出<literal>clicked</literal>信号时,"
 "<methodname>on_button_clicked()</methodname>将被调用。"
 
-#: C/index-in.docbook:8156
+#: C/index-in.docbook:8127
 msgid "Now let's look at the connection again:"
 msgstr "现在,我们再次看一下连接:"
 
-#: C/index-in.docbook:8161
+#: C/index-in.docbook:8131
 #, no-wrap
 msgid ""
 "\n"
@@ -13882,7 +13865,7 @@ msgstr ""
 "    button.signal_clicked().connect(sigc::ptr_fun(&amp;on_button_clicked));\n"
 "    ...\n"
 
-#: C/index-in.docbook:8168
+#: C/index-in.docbook:8137
 msgid ""
 "Note that we don't pass a pointer to <methodname>on_button_clicked()</"
 "methodname> directly to the signal's <methodname>connect()</methodname> "
@@ -13894,7 +13877,7 @@ msgstr ""
 "<function>sigc::ptr_fun()</function>并将其返回值传递给<methodname>connect()</"
 "methodname>。"
 
-#: C/index-in.docbook:8175
+#: C/index-in.docbook:8144
 msgid ""
 "<function>sigc::ptr_fun()</function> generates a <classname>sigc::slot</"
 "classname>. A slot is an object which looks and feels like a function, but "
@@ -13908,11 +13891,11 @@ msgstr ""
 "数对象或是函子。<function>sigc::ptr_fun()</function>为独立函数或静态成员函数"
 "生成槽。<function>sigc::mem_fun()</function>为特定实例的成员函数生成槽。"
 
-#: C/index-in.docbook:8184
+#: C/index-in.docbook:8153
 msgid "Here's a slightly larger example of slots in action:"
 msgstr "这是一个在动作中使用槽的较大示例:"
 
-#: C/index-in.docbook:8189
+#: C/index-in.docbook:8157
 #, no-wrap
 msgid ""
 "\n"
@@ -13949,14 +13932,14 @@ msgstr ""
 "    button.signal_clicked().connect( sigc::mem_fun(some_object, &amp;some_class::on_button_clicked) );\n"
 "}\n"
 
-#: C/index-in.docbook:8208
+#: C/index-in.docbook:8175
 msgid ""
 "The first call to <methodname>connect()</methodname> is just like the one we "
 "saw last time; nothing new here."
 msgstr ""
 "第一个<methodname>connect()</methodname>调用与我们之前看到的没有什么区别。"
 
-#: C/index-in.docbook:8211
+#: C/index-in.docbook:8178
 msgid ""
 "The next is more interesting. <function>sigc::mem_fun()</function> is called "
 "with two arguments. The first argument is <parameter>some_object</"
@@ -13973,7 +13956,7 @@ msgstr ""
 "调用指定对象上函数指针所指向的成员函数,在这个情况下调用的是"
 "<methodname>some_object.on_button_clicked()</methodname>。"
 
-#: C/index-in.docbook:8221
+#: C/index-in.docbook:8188
 msgid ""
 "Another thing to note about this example is that we made the call to "
 "<methodname>connect()</methodname> twice for the same signal object. This is "
@@ -13984,7 +13967,7 @@ msgstr ""
 "<methodname>connect()</methodname>。所以当该按钮被点击时,这两个信号处理函数"
 "都将被调用。"
 
-#: C/index-in.docbook:8228
+#: C/index-in.docbook:8195
 msgid ""
 "We just told you that the button's <literal>clicked</literal> signal is "
 "expecting to call a method with no arguments. All signals have requirements "
@@ -13998,11 +13981,11 @@ msgstr ""
 "函数与期望所调用函数不接受参数的信号相关联,当然你可以通过使用"
 "<function>sigc::bind()</function>之类的适配器在一定程度上绕过这个限制。"
 
-#: C/index-in.docbook:8240
+#: C/index-in.docbook:8207
 msgid "Writing signal handlers"
 msgstr "编写信号处理函数"
 
-#: C/index-in.docbook:8242
+#: C/index-in.docbook:8209
 msgid ""
 "To find out what type of signal handler you can connect to a signal, you can "
 "look it up in the reference documentation or the header file. Here's an "
@@ -14013,7 +13996,7 @@ msgstr ""
 "件。这是一个你可能在<application>gtkmm</application>头文件中看到的信号声明示"
 "例:"
 
-#: C/index-in.docbook:8249
+#: C/index-in.docbook:8215
 #, no-wrap
 msgid ""
 "\n"
@@ -14022,7 +14005,7 @@ msgstr ""
 "\n"
 "Glib::SignalProxy&lt;bool(Gtk::DirectionType)&gt; signal_focus()\n"
 
-#: C/index-in.docbook:8254
+#: C/index-in.docbook:8219
 msgid ""
 "Other than the signal's name (<literal>focus</literal>), the template "
 "arguments are important to note here. The first argument, <type>bool</type>, "
@@ -14036,7 +14019,7 @@ msgstr ""
 "括号中的<type>Gtk::DirectionType</type>表示信号所期望调用的函数的第一个也是唯"
 "一一个参数的类型。通过查看参考文档你还可以看到参数的名称。"
 
-#: C/index-in.docbook:8263
+#: C/index-in.docbook:8228
 msgid ""
 "The same principles apply for signals which have more arguments. Here's one "
 "with three (taken from <filename>&lt;gtkmm/textbuffer.h&gt;</filename>):"
@@ -14044,7 +14027,7 @@ msgstr ""
 "对于接受期望调用的函数有更多参数的信号也是一样的阅读规则。以下声明取自"
 "<filename>&lt;gtkmm/textbuffer.h&gt;</filename>:"
 
-#: C/index-in.docbook:8269
+#: C/index-in.docbook:8233
 #, no-wrap
 msgid ""
 "\n"
@@ -14053,7 +14036,7 @@ msgstr ""
 "\n"
 "Glib::SignalProxy&lt;void(TextBuffer::iterator&amp;, const Glib::ustrin&amp;, int)&gt; signal_insert();\n"
 
-#: C/index-in.docbook:8274
+#: C/index-in.docbook:8237
 msgid ""
 "It follows the same form. The first type is <type>void</type>, so that "
 "should be our signal handler's return type. The following three types are "
@@ -14064,7 +14047,7 @@ msgstr ""
 "type>,括号内三种类型为函数的三个参数类型。所以我们的信号处理函数原型可能如下"
 "所示:"
 
-#: C/index-in.docbook:8282
+#: C/index-in.docbook:8244
 #, no-wrap
 msgid ""
 "\n"
@@ -14073,16 +14056,16 @@ msgstr ""
 "\n"
 "void on_insert(TextBuffer::iterator&amp; pos, const Glib::ustring&amp; text, int bytes)\n"
 
-#: C/index-in.docbook:8289
+#: C/index-in.docbook:8250
 msgid "Disconnecting signal handlers"
 msgstr "断开信号处理函数"
 
-#: C/index-in.docbook:8291
+#: C/index-in.docbook:8252
 msgid ""
 "Let's take another look at a Signal's <literal>connect</literal> method:"
 msgstr "让我们再来看看信号的<literal>connect</literal>成员函数:"
 
-#: C/index-in.docbook:8296
+#: C/index-in.docbook:8256
 #, no-wrap
 msgid ""
 "\n"
@@ -14091,7 +14074,7 @@ msgstr ""
 "\n"
 "sigc::connection signal&lt;void(int)&gt;::connect(const sigc::slot&lt;void(int)&gt;&amp;);\n"
 
-#: C/index-in.docbook:8301
+#: C/index-in.docbook:8260
 msgid ""
 "The returned <classname>sigc::connection</classname> can be used to control "
 "the connection. By keeping a connection object you can disconnect its "
@@ -14102,11 +14085,11 @@ msgstr ""
 "连接对象就可以断开与其相关联的信号处理函数的连接。若你想如此做,只需对对象调"
 "用<methodname>sigc::connection::disconnect()</methodname>成员函数即可。"
 
-#: C/index-in.docbook:8309
+#: C/index-in.docbook:8268
 msgid "Overriding default signal handlers"
 msgstr "覆写默认信号处理函数"
 
-#: C/index-in.docbook:8311
+#: C/index-in.docbook:8270
 msgid ""
 "So far we've told you to perform actions in response to button-presses and "
 "the like by handling signals. That's certainly a good way to do things, but "
@@ -14115,7 +14098,7 @@ msgstr ""
 "到现在为止,你已经学会了通过将自定义的信号处理函数连接到信号来响应按钮按下等"
 "动作。这是一种好方法,但不是唯一的方法。"
 
-#: C/index-in.docbook:8318
+#: C/index-in.docbook:8277
 msgid ""
 "Instead of laboriously connecting signal handlers to signals, you can simply "
 "make a new class which inherits from a widget - say, a Button - and then "
@@ -14125,7 +14108,7 @@ msgstr ""
 "你还可以创建一个从部件继承而来的新类,然后覆盖默认的信号处理函数(例如,"
 "Button::on_clicked()),这样你就可以省去将信号处理函数连接到信号的步骤。"
 
-#: C/index-in.docbook:8325
+#: C/index-in.docbook:8284
 msgid ""
 "Subclassing isn't always the best way to accomplish things. It is only "
 "useful when you want the widget to handle its own signal by itself. If you "
@@ -14139,7 +14122,7 @@ msgstr ""
 "个对象处理同一个信号或者需要一个信号处理函数处理不同的对象的信号的时候会很不"
 "方便。"
 
-#: C/index-in.docbook:8330
+#: C/index-in.docbook:8289
 msgid ""
 "<application>gtkmm</application> classes are designed with overriding in "
 "mind; they contain virtual member methods specifically intended to be "
@@ -14148,11 +14131,11 @@ msgstr ""
 "<application>gtkmm</application>类在设计的时候已经考虑到了覆写;它们包含了专"
 "门用于被覆写的虚成员函数。"
 
-#: C/index-in.docbook:8335
+#: C/index-in.docbook:8294
 msgid "Let's look at an example of overriding:"
 msgstr "让我们看一个覆写的例子:"
 
-#: C/index-in.docbook:8340
+#: C/index-in.docbook:8298
 #, no-wrap
 msgid ""
 "\n"
@@ -14189,7 +14172,7 @@ msgstr ""
 "  Gtk::Button::on_clicked();\n"
 "}\n"
 
-#: C/index-in.docbook:8359
+#: C/index-in.docbook:8316
 msgid ""
 "Here we define a new class called <classname>OverriddenButton</classname>, "
 "which inherits from <classname>Gtk::Button</classname>. The only thing we "
@@ -14207,7 +14190,7 @@ msgstr ""
 "数将字符串\"Hello World\"打印到<literal>stdout</literal>,然后调用"
 "<classname>Gtk::Button</classname>已被覆写本该被调用的成员函数。"
 
-#: C/index-in.docbook:8370
+#: C/index-in.docbook:8327
 msgid ""
 "You don't always need to call the parent's method; there are times when you "
 "might not want to. Note that we called the parent method <emphasis>after</"
@@ -14223,11 +14206,11 @@ msgstr ""
 "任何你想调用父方法的位置调用它。这对于通过连接到信号调用的信号处理函数是无法"
 "做到的。"
 
-#: C/index-in.docbook:8384
+#: C/index-in.docbook:8341
 msgid "Binding extra arguments"
 msgstr "绑定额外参数"
 
-#: C/index-in.docbook:8391
+#: C/index-in.docbook:8348
 #, no-wrap
 msgid ""
 "\n"
@@ -14236,7 +14219,7 @@ msgstr ""
 "\n"
 "m_button1.signal_clicked().connect(sigc::bind(sigc::mem_fun(*this, &amp;HelloWorld::on_button_clicked), 
\"button 1\"));\n"
 
-#: C/index-in.docbook:8398
+#: C/index-in.docbook:8355
 #, no-wrap
 msgid ""
 "\n"
@@ -14245,7 +14228,7 @@ msgstr ""
 "\n"
 "void on_button_clicked(const Glib::ustring&amp; data);\n"
 
-#: C/index-in.docbook:8385
+#: C/index-in.docbook:8342
 msgid ""
 "If you use one signal handler to catch the same signal from several widgets, "
 "you might like that signal handler to receive some extra information. For "
@@ -14267,7 +14250,7 @@ msgstr ""
 "添加额外的参数:<_:programlisting-2/>。当然,正常的\"clicked\"信号处理函数是没"
 "有参数的。"
 
-#: C/index-in.docbook:8403
+#: C/index-in.docbook:8360
 msgid ""
 "<function>sigc::bind()</function> is not commonly used, but you might find "
 "it helpful sometimes. If you are familiar with <application>GTK</"
@@ -14287,11 +14270,11 @@ msgstr ""
 "有效降低代码复杂度。而在<application>gtkmm</application>中派生部件类十分的简"
 "单,所以这种强侵入式的写法不再需要了。"
 
-#: C/index-in.docbook:8415
+#: C/index-in.docbook:8372
 msgid "X Event signals"
 msgstr "X事件信号"
 
-#: C/index-in.docbook:8416
+#: C/index-in.docbook:8373
 msgid ""
 "The <classname>Widget</classname> class has some special signals which "
 "correspond to the underlying X-Windows events. These are suffixed by "
@@ -14302,7 +14285,7 @@ msgstr ""
 "<literal>_event</literal>后缀。例如:<methodname>Widget::"
 "signal_button_press_event()</methodname>。"
 
-#: C/index-in.docbook:8422
+#: C/index-in.docbook:8379
 msgid ""
 "You might occasionally find it useful to handle X events when there's "
 "something you can't accomplish with normal signals. <classname>Gtk::Button</"
@@ -14316,7 +14299,7 @@ msgstr ""
 "标指针的坐标,而<literal>button_press_event</literal>信号会。X事件也用于处理"
 "按键。"
 
-#: C/index-in.docbook:8431
+#: C/index-in.docbook:8388
 msgid ""
 "These signals behave slightly differently. The value returned from the "
 "signal handler indicates whether it has fully \"handled\" the event. If the "
@@ -14329,7 +14312,7 @@ msgstr ""
 "将会把事件再次发送到下一个信号处理函数。如果返回值为<literal>true</literal>则"
 "不再传播信号不再调用其他的信号处理函数。"
 
-#: C/index-in.docbook:8436
+#: C/index-in.docbook:8393
 msgid ""
 "Handling an X event doesn't affect the Widget's other signals. If you handle "
 "<literal>button_press_event</literal> for <classname>Gtk::Button</"
@@ -14340,7 +14323,7 @@ msgstr ""
 "的<literal>button_press_event</literal>信号,你依旧可以得到<literal>clicked</"
 "literal>信号。这两个信号将几乎于同一时间被发出。"
 
-#: C/index-in.docbook:8445
+#: C/index-in.docbook:8402
 #, no-wrap
 msgid ""
 "\n"
@@ -14353,7 +14336,7 @@ msgstr ""
 "Gtk::Button button(\"label\");\n"
 "button.signal_button_press_event().connect( sigc::ptr_fun(&amp;on_button_press) );\n"
 
-#: C/index-in.docbook:8451
+#: C/index-in.docbook:8407
 msgid ""
 "When the mouse is over the button and a mouse button is pressed, "
 "<methodname>on_button_press()</methodname> will be called."
@@ -14361,7 +14344,7 @@ msgstr ""
 "当鼠标悬停在鼠标上方并按下鼠标按钮时,<methodname>on_button_press()</"
 "methodname>将被调用。"
 
-#: C/index-in.docbook:8456
+#: C/index-in.docbook:8412
 msgid ""
 "<type>GdkEventButton</type> is a structure containing the event's "
 "parameters, such as the coordinates of the mouse pointer at the time the "
@@ -14372,20 +14355,11 @@ msgstr ""
 "指针的坐标等一系列信息。对于不同的事件,有不同的<type>GdkEvent</type>结构体类"
 "型与之对应。"
 
-#: C/index-in.docbook:8464
+#: C/index-in.docbook:8420
 msgid "Signal Handler sequence"
 msgstr "信号处理函数序列"
 
-#: C/index-in.docbook:8472
-#, no-wrap
-msgid ""
-"\n"
-"button.signal_button_press_event().connect( sigc::ptr_fun(&amp;on_mywindow_button_press), false );\n"
-msgstr ""
-"\n"
-"button.signal_button_press_event().connect( sigc::ptr_fun(&amp;on_mywindow_button_press), false );\n"
-
-#: C/index-in.docbook:8465
+#: C/index-in.docbook:8421
 msgid ""
 "By default, your signal handlers are called after any previously-connected "
 "signal handlers. However, this can be a problem with the X Event signals. "
@@ -14394,15 +14368,24 @@ msgid ""
 "being called. To specify that your signal handler should be called before "
 "the other signal handlers, so that it will always be called, you can specify "
 "<literal>false</literal> for the optional <literal>after</literal> "
-"parameter. For instance, <_:programlisting-1/>"
+"parameter. For instance,"
 msgstr ""
 "默认情况下,你的信号处理函数将于所有之前连接到信号的信号处理函数之后被调用。"
 "但是这对于X事件信号可能会出问题。例如,现有的信号处理函数或默认信号处理函数如"
 "果返回了<literal>true</literal>将会停止事件传播,这时候你的信号处理函数就不会"
 "被调用。你可以指定可选参数<literal>after</literal>为<literal>false</"
-"literal>,这样你的信号处理函数就总是会被调用。例如:<_:programlisting-1/>"
+"literal>,这样你的信号处理函数就总是会被调用。例如:"
+
+#: C/index-in.docbook:8429
+#, no-wrap
+msgid ""
+"\n"
+"button.signal_button_press_event().connect( sigc::ptr_fun(&amp;on_mywindow_button_press), false );\n"
+msgstr ""
+"\n"
+"button.signal_button_press_event().connect( sigc::ptr_fun(&amp;on_mywindow_button_press), false );\n"
 
-#: C/index-in.docbook:8476
+#: C/index-in.docbook:8432
 msgid ""
 "The event is delivered first to the widget the event occurred in. If all "
 "signal handlers in that widget return <literal>false</literal> (indicating "
@@ -14414,11 +14397,11 @@ msgstr ""
 "<literal>false</literal>。则该信号将被传播到部件的父部件中。如果后续没有人处"
 "理事件,信号会一直传播到顶级窗口部件。"
 
-#: C/index-in.docbook:8487
+#: C/index-in.docbook:8443
 msgid "Exceptions in signal handlers"
 msgstr "信号处理函数中的异常"
 
-#: C/index-in.docbook:8488
+#: C/index-in.docbook:8444
 msgid ""
 "When a program is aborted because of an unhandled C++ exception, it's "
 "sometimes possible to use a debugger to find the location where the "
@@ -14428,7 +14411,7 @@ msgstr ""
 "当程序因未处理C++异常而终止时,有时候可以使用调试器查找抛出异常的位置。但是如"
 "果异常是在信号处理函数中抛出的,这将会比平常困难的多。"
 
-#: C/index-in.docbook:8493
+#: C/index-in.docbook:8449
 msgid ""
 "This section describes primarily what you can expect on a Linux system, when "
 "you use <ulink url=\"http://www.gnu.org/software/gdb/\";>the gdb debugger</"
@@ -14437,7 +14420,14 @@ msgstr ""
 "本小节组要介绍使用<ulink url=\"http://www.gnu.org/software/gdb/\";>gdb调试器</"
 "ulink>在Linux系统上调试异常。"
 
-#: C/index-in.docbook:8500
+#: C/index-in.docbook:8453
+msgid ""
+"First, let's look at a simple example where an exception is thrown from a "
+"normal function (no signal handler)."
+msgstr ""
+"首先让我们看一个简单的示例,其中的一个普通函数(非信号处理函数)抛出异常:"
+
+#: C/index-in.docbook:8457
 #, no-wrap
 msgid ""
 "\n"
@@ -14474,15 +14464,7 @@ msgstr ""
 "  return app-&gt;run();\n"
 "}\n"
 
-#: C/index-in.docbook:8497
-msgid ""
-"First, let's look at a simple example where an exception is thrown from a "
-"normal function (no signal handler). <_:programlisting-1/>"
-msgstr ""
-"首先让我们看一个简单的示例,其中的一个普通函数(非信号处理函数)抛出异常:<_:"
-"programlisting-1/>"
-
-#: C/index-in.docbook:8521
+#: C/index-in.docbook:8477
 #, no-wrap
 msgid ""
 "\n"
@@ -14505,7 +14487,7 @@ msgstr ""
 "#7  0x08048864 in throwSomething () at without_signal.cc:6\n"
 "#8  0x0804887d in main (argc=1, argv=0xbfffecd4) at without_signal.cc:12\n"
 
-#: C/index-in.docbook:8518
+#: C/index-in.docbook:8474
 msgid ""
 "Here is an excerpt from a <application>gdb</application> session. Only the "
 "most interesting parts of the output are shown. <_:programlisting-1/> You "
@@ -14516,7 +14498,14 @@ msgstr ""
 "programlisting-1/> 你可以看到在<filename>without_signal.cc</filename>的第六行"
 "抛出了异常(<code>throw \"Something\";</code>)。"
 
-#: C/index-in.docbook:8537
+#: C/index-in.docbook:8490
+msgid ""
+"Now let's see what happens when an exception is thrown from a signal "
+"handler. Here's the source code."
+msgstr ""
+"现在,让我们看看从信号处理函数中抛出异常会发生什么。这是源代码:"
+
+#: C/index-in.docbook:8494
 #, no-wrap
 msgid ""
 "\n"
@@ -14555,15 +14544,7 @@ msgstr ""
 "  return app-&gt;run();\n"
 "}\n"
 
-#: C/index-in.docbook:8534
-msgid ""
-"Now let's see what happens when an exception is thrown from a signal "
-"handler. Here's the source code. <_:programlisting-1/>"
-msgstr ""
-"现在,让我们看看从信号处理函数中抛出异常会发生什么。这是源代码:<_:"
-"programlisting-1/>"
-
-#: C/index-in.docbook:8558
+#: C/index-in.docbook:8514
 #, no-wrap
 msgid ""
 "\n"
@@ -14594,7 +14575,7 @@ msgstr ""
 "#13 0x002e1b31 in Gtk::Application::run (this=0x804f300) at application.cc:178\n"
 "#14 0x08048ccc in main (argc=1, argv=0xbfffecd4) at with_signal.cc:16\n"
 
-#: C/index-in.docbook:8556
+#: C/index-in.docbook:8512
 msgid ""
 "And here's an excerpt from a <application>gdb</application> session. <_:"
 "programlisting-1/> The exception is caught in <application>glibmm</"
@@ -14610,7 +14591,15 @@ msgstr ""
 "异常都会被<application>glibmm</application>或<application>gtkmm</application>"
 "所捕获,并且<application>gdb</application>将无法看到异常被抛出的具体位置。"
 
-#: C/index-in.docbook:8581
+#: C/index-in.docbook:8534
+msgid ""
+"To see where the exception is thrown, you can use the <application>gdb</"
+"application> command <userinput>catch throw</userinput>."
+msgstr ""
+"要查看哪里抛出了异常,你可以使用<application>gdb</application>的"
+"<userinput>catch throw</userinput>命令。"
+
+#: C/index-in.docbook:8538
 #, no-wrap
 msgid ""
 "\n"
@@ -14645,16 +14634,7 @@ msgstr ""
 "\n"
 "Program received signal SIGTRAP, Trace/breakpoint trap.\n"
 
-#: C/index-in.docbook:8578
-msgid ""
-"To see where the exception is thrown, you can use the <application>gdb</"
-"application> command <userinput>catch throw</userinput>. <_:programlisting-1/"
-">"
-msgstr ""
-"要查看哪里抛出了异常,你可以使用<application>gdb</application>的"
-"<userinput>catch throw</userinput>命令。<_:programlisting-1/>"
-
-#: C/index-in.docbook:8602
+#: C/index-in.docbook:8558
 #, no-wrap
 msgid ""
 "\n"
@@ -14675,7 +14655,7 @@ msgstr ""
 "(gdb) set pagination off\n"
 "(gdb) run\n"
 
-#: C/index-in.docbook:8598
+#: C/index-in.docbook:8554
 msgid ""
 "If there are many caught exceptions before the interesting uncaught one, "
 "this method can be tedious. It can be automated with the following "
@@ -14689,11 +14669,11 @@ msgstr ""
 "programlisting-1/> 这些命令将在每次抛出时打印回溯信息并继续。通常最后一个或第"
 "一个<code>throw</code>是你所需要的。"
 
-#: C/index-in.docbook:8621
+#: C/index-in.docbook:8577
 msgid "Creating your own signals"
 msgstr "创建属于你的信号"
 
-#: C/index-in.docbook:8622
+#: C/index-in.docbook:8578
 msgid ""
 "Now that you've seen signals and signal handlers in <application>gtkmm</"
 "application>, you might like to use the same technique to allow interaction "
@@ -14704,7 +14684,7 @@ msgstr ""
 "能希望你自己的类使用相同的技术进行交互。你可以很轻松的使用"
 "<application>libsigc++</application>库实现这个需求。"
 
-#: C/index-in.docbook:8628
+#: C/index-in.docbook:8584
 msgid ""
 "This isn't purely a <application>gtkmm</application> or GUI issue. "
 "<application>gtkmm</application> uses <application>libsigc++</application> "
@@ -14718,7 +14698,16 @@ msgstr ""
 "号,你可以使用<classname>sigc::signal&lt;&gt;</classname>模版创建属于自己的C+"
 "+信号。"
 
-#: C/index-in.docbook:8639
+#: C/index-in.docbook:8591
+msgid ""
+"For instance, to create a signal that sends 2 parameters, a <type>bool</"
+"type> and an <type>int</type>, just declare a <classname>sigc::signal</"
+"classname>, like so:"
+msgstr ""
+"例如,要创建一个发送参数类型分别为<type>bool</type>和<type>int</type>的信号,"
+"只需要按如下所示声明一个<classname>sigc::signal</classname>即可:"
+
+#: C/index-in.docbook:8596
 #, no-wrap
 msgid ""
 "\n"
@@ -14727,17 +14716,16 @@ msgstr ""
 "\n"
 "sigc::signal&lt;void(bool, int)&gt; signal_something;\n"
 
-#: C/index-in.docbook:8635
+#: C/index-in.docbook:8599
 msgid ""
-"For instance, to create a signal that sends 2 parameters, a <type>bool</"
-"type> and an <type>int</type>, just declare a <classname>sigc::signal</"
-"classname>, like so: <_:programlisting-1/>"
+"You could just declare that signal as a public member variable, but some "
+"people find that distasteful and prefer to make it available via an accessor "
+"method, like so:"
 msgstr ""
-"例如,要创建一个发送参数类型分别为<type>bool</type>和<type>int</type>的信号,"
-"只需要按如下所示声明一个<classname>sigc::signal</classname>即可:<_:"
-"programlisting-1/>"
+"你可以简单的将信号声明为公有成员变量,但是有些人讨厌这种声明,他们更喜欢如下"
+"所示的访问器方法:"
 
-#: C/index-in.docbook:8647
+#: C/index-in.docbook:8604
 #, no-wrap
 msgid ""
 "\n"
@@ -14774,16 +14762,15 @@ msgstr ""
 "  return m_signal_something;\n"
 "}\n"
 
-#: C/index-in.docbook:8643
+#: C/index-in.docbook:8622
 msgid ""
-"You could just declare that signal as a public member variable, but some "
-"people find that distasteful and prefer to make it available via an accessor "
-"method, like so: <_:programlisting-1/>"
+"You can then connect to the signal using the same syntax used when "
+"connecting to <application>gtkmm</application> signals. For instance,"
 msgstr ""
-"你可以简单的将信号声明为公有成员变量,但是有些人讨厌这种声明,他们更喜欢如下"
-"所示的访问器方法:<_:programlisting-1/>"
+"然后你可以使用与连接<application>gtkmm</application>信号一样的语法连接到这个"
+"信号。例如:"
 
-#: C/index-in.docbook:8669
+#: C/index-in.docbook:8626
 #, no-wrap
 msgid ""
 "\n"
@@ -14794,20 +14781,11 @@ msgstr ""
 "server.signal_something().connect(\n"
 "  sigc::mem_fun(client, &amp;Client::on_server_something) );\n"
 
-#: C/index-in.docbook:8666
-msgid ""
-"You can then connect to the signal using the same syntax used when "
-"connecting to <application>gtkmm</application> signals. For instance, <_:"
-"programlisting-1/>"
-msgstr ""
-"然后你可以使用与连接<application>gtkmm</application>信号一样的语法连接到这个"
-"信号。例如:<_:programlisting-1/>"
-
-#: C/index-in.docbook:8677
+#: C/index-in.docbook:8633
 msgid "This is a full working example that defines and uses custom signals."
 msgstr "这是一个完整的定义了并使用了自定义信号的示例。"
 
-#: C/index-in.docbook:8681
+#: C/index-in.docbook:8637
 msgid ""
 "<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
 "examples/book/signals/custom/\">Source Code</ulink>"
@@ -14815,11 +14793,11 @@ msgstr ""
 "<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
 "examples/book/signals/custom/\">源代码</ulink>"
 
-#: C/index-in.docbook:8689
+#: C/index-in.docbook:8645
 msgid "Comparison with other signalling systems"
 msgstr "与其他信号系统的比较"
 
-#: C/index-in.docbook:8690
+#: C/index-in.docbook:8646
 msgid ""
 "(An aside: <application>GTK</application> calls this scheme \"signalling\"; "
 "the sharp-eyed reader with GUI toolkit experience will note that this same "
@@ -14841,7 +14819,7 @@ msgstr ""
 "<application>gtkmm</application>中,信号对象扮演广播者的角色,而槽扮演监听者"
 "的角色。"
 
-#: C/index-in.docbook:8704
+#: C/index-in.docbook:8660
 msgid ""
 "<application>gtkmm</application> signal handlers are strongly-typed, whereas "
 "<application>GTK</application> C code allows you to connect a callback with "
@@ -14854,7 +14832,7 @@ msgstr ""
 "的回调函数,这会导致运行时出现段错误。并且和<application>Qt</application>不"
 "同,<application>gtkmm</application>不需要对C++语言进行修改即可达到此目的。"
 
-#: C/index-in.docbook:8710
+#: C/index-in.docbook:8666
 msgid ""
 "Re. Overriding signal handlers: You can do this in the straight-C world of "
 "GTK too; that's what GTK's object system is for. But in GTK, you have to go "
@@ -14866,7 +14844,7 @@ msgstr ""
 "言对于高级特性的支持特别弱,你需要编写一系列复杂的代码才能做到继承和重载。而"
 "在C++中,因为语言本身就支持这些特性,所以你可以让编译器代为完成肮脏的工作。"
 
-#: C/index-in.docbook:8718
+#: C/index-in.docbook:8674
 msgid ""
 "This is one of the places where the beauty of C++ really comes out. One "
 "wouldn't think of subclassing a GTK widget simply to override its action "
@@ -14880,11 +14858,11 @@ msgstr ""
 "+中覆写成员函数非常简单,因此为了修改部件的某个行为而将其子类化是完全可行且明"
 "智的。"
 
-#: C/index-in.docbook:8729
+#: C/index-in.docbook:8685
 msgid "<application>gtkmm</application> and Win32"
 msgstr "<application>gtkmm</application>与Win32"
 
-#: C/index-in.docbook:8730
+#: C/index-in.docbook:8686
 msgid ""
 "One of the major advantages of <application>gtkmm</application> is that it "
 "is crossplatform. <application>gtkmm</application> programs written on other "
@@ -14895,7 +14873,7 @@ msgstr ""
 "的<application>gtkmm</application>程序只需要修改很少一部分的源代码就可以从"
 "GNU/Linux移植到Windows,当然反之亦然。"
 
-#: C/index-in.docbook:8735
+#: C/index-in.docbook:8691
 msgid ""
 "<application>gtkmm</application> currently works with the <ulink url="
 "\"http://mingw.org/\";>MinGW/GCC compiler</ulink> with a compiler version "
@@ -14918,7 +14896,7 @@ msgstr ""
 "情况下可以混合使用VS2017和2019完成构建,但是在构建带有-mm依赖的"
 "<application>gtkmm</application>时千万不要如此做。"
 
-#: C/index-in.docbook:8748
+#: C/index-in.docbook:8704
 msgid ""
 "Refer to the <ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm/tree/master/";
 "README.win32\">README.win32</ulink>, as well as the <ulink url=\"https://";
@@ -14931,11 +14909,11 @@ msgstr ""
 "GNOME/gtkmm/tree/master/MSVC_NMake/README\">自述文件</ulink>中关于如何在"
 "WIndwos上构建<application>gtkmm</application>的说明。"
 
-#: C/index-in.docbook:8755
+#: C/index-in.docbook:8711
 msgid "Working with gtkmm's Source Code"
 msgstr "使用gtkmm源代码"
 
-#: C/index-in.docbook:8756
+#: C/index-in.docbook:8712
 msgid ""
 "If you are interested in helping out with the development of "
 "<application>gtkmm</application>, or fixing a bug in <application>gtkmm</"
@@ -14950,7 +14928,7 @@ msgstr ""
 "application>的开发版。但是你不应该将开发版本覆盖稳定版。你应该选择已存在"
 "<application>gtkmm</application>版本的目录外的路径安装开发版。"
 
-#: C/index-in.docbook:8763
+#: C/index-in.docbook:8719
 msgid ""
 "The easiest way to do this is using <ulink url=\"https://wiki.gnome.org/";
 "Projects/Jhbuild\">jhbuild</ulink>. <application>jhbuild</application> is a "
@@ -14971,7 +14949,7 @@ msgstr ""
 "最新信息,请参考<ulink url=\"http://developer.gnome.org/jhbuild/unstable/";
 "\">jhbuild手册</ulink>。"
 
-#: C/index-in.docbook:8775
+#: C/index-in.docbook:8731
 msgid ""
 "Note that to build <application>gtkmm</application> from git, you'll often "
 "need to build many of its dependencies from git as well. "
@@ -14985,7 +14963,7 @@ msgstr ""
 "和安装这些依赖依旧需要相当长的时间。在这过程中你可能会遇到构建问题,因为"
 "master分支并不总是能构建成功的,当然构建问题通常很快就会被修复。"
 
-#: C/index-in.docbook:8783
+#: C/index-in.docbook:8739
 msgid ""
 "<application>gnome-build-meta</application> is an alternative to "
 "<application>jhbuild</application>. It is described at the <ulink url="
@@ -14998,16 +14976,16 @@ msgstr ""
 "BuildSystemComponent\">构建系统组件</ulink>维基页面对其进行了详细的介绍,在这"
 "里我们只介绍<application>jhbuild</application>。"
 
-#: C/index-in.docbook:8790
+#: C/index-in.docbook:8746
 msgid "Setting up jhbuild"
 msgstr "设置jhbuild"
 
-#: C/index-in.docbook:8799
+#: C/index-in.docbook:8755
 #, no-wrap
 msgid "$ cp examples/sample.jhbuildrc ~/.config/jhbuildrc"
 msgstr "$ cp examples/sample.jhbuildrc ~/.config/jhbuildrc"
 
-#: C/index-in.docbook:8791
+#: C/index-in.docbook:8747
 msgid ""
 "To set up <application>jhbuild</application>, follow the basic installation "
 "instructions from the <ulink url=\"http://developer.gnome.org/jhbuild/";
@@ -15023,39 +15001,39 @@ msgstr ""
 "application>目录执行以下命令将示例<application>jhbuild</application>配置文件"
 "复制到你的主目录中:<_:screen-1/>"
 
-#: C/index-in.docbook:8805
-#, no-wrap
-msgid "moduleset = 'gnome-suites-core-deps-latest'"
-msgstr "moduleset = 'gnome-suites-core-deps-latest'"
-
-#: C/index-in.docbook:8801
+#: C/index-in.docbook:8757
 msgid ""
 "The <application>gtkmm</application> module is defined in the "
 "<filename>gnome-suites-core-deps-latest.modules</filename> moduleset. So "
 "edit your <filename>jhbuildrc</filename> file and set your moduleset setting "
-"like so: <_:programlisting-1/>"
+"like so:"
 msgstr ""
 "<application>gtkmm</application>模块在文件<filename>gnome-suites-core-deps-"
 "latest.modules</filename>中的模块组(moduleset)定义。因此你需要按以下方式编辑"
-"你的<filename>jhbuildrc</filename>文件并设置你的模块组:<_:programlisting-1/>"
+"你的<filename>jhbuildrc</filename>文件并设置你的模块组:"
 
-#: C/index-in.docbook:8812
+#: C/index-in.docbook:8762
 #, no-wrap
-msgid "modules = [ 'gtkmm' ]"
-msgstr "modules = [ 'gtkmm' ]"
+msgid "moduleset = 'gnome-suites-core-deps-latest'"
+msgstr "moduleset = 'gnome-suites-core-deps-latest'"
 
-#: C/index-in.docbook:8807
+#: C/index-in.docbook:8763
 msgid ""
 "After setting the correct moduleset, you need to tell <application>jhbuild</"
 "application> which module or modules to build. To build <application>gtkmm</"
 "application> and all of its dependencies, set <varname>modules</varname> "
-"like so: <_:programlisting-1/>"
+"like so:"
 msgstr ""
 "正确设置模块组之后,你需要告诉<application>jhbuild</application>哪些模块需要"
 "构建。想要构建<application>gtkmm</application>以及所有相关的依赖项,请按如下"
-"所示设置<varname>modules</varname>:<_:programlisting-1/>"
+"所示设置<varname>modules</varname>:"
+
+#: C/index-in.docbook:8769
+#, no-wrap
+msgid "modules = [ 'gtkmm' ]"
+msgstr "modules = [ 'gtkmm' ]"
 
-#: C/index-in.docbook:8814
+#: C/index-in.docbook:8770
 msgid ""
 "You can build several modules by setting the <varname>modules</varname> "
 "variable to a meta-package, e.g. <literal>meta-gnome-core</literal>, or "
@@ -15070,11 +15048,11 @@ msgstr ""
 "哪些模块。你始终可以用命令行指定其他模块组来构建其他模块组(例如:"
 "<command>jhbuild build gtkmm</command>)。"
 
-#: C/index-in.docbook:8824
+#: C/index-in.docbook:8780
 msgid "Setting a prefix"
 msgstr "设置前缀"
 
-#: C/index-in.docbook:8825
+#: C/index-in.docbook:8781
 msgid ""
 "By default, <application>jhbuild</application>'s configuration is configured "
 "to install all software built with <application>jhbuild</application> under "
@@ -15091,7 +15069,7 @@ msgstr ""
 "前缀设置为<filename>/usr</filename>。如果你遵循jhbuild的说明进行操作,该前缀"
 "属于你的用户,你将无需以<literal>root</literal>用户权限运行jhbuild。"
 
-#: C/index-in.docbook:8837
+#: C/index-in.docbook:8793
 msgid ""
 "When you downloaded <application>jhbuild</application> from the git "
 "repository, you got a number of <filename>.modules</filename> files, "
@@ -15108,12 +15086,12 @@ msgstr ""
 "<filename>.jhbuildrc</filename>文件中定义<varname>use_local_modulesets</"
 "varname>以修改此行为。"
 
-#: C/index-in.docbook:8848
+#: C/index-in.docbook:8804
 msgid ""
 "Installing and Using the git version of <application>gtkmm</application>"
 msgstr "安装和使用<application>gtkmm</application>的git版本"
 
-#: C/index-in.docbook:8856
+#: C/index-in.docbook:8812
 #, no-wrap
 msgid ""
 "$ jhbuild bootstrap\n"
@@ -15122,7 +15100,7 @@ msgstr ""
 "$ jhbuild bootstrap\n"
 "$ jhbuild sanitycheck"
 
-#: C/index-in.docbook:8849
+#: C/index-in.docbook:8805
 msgid ""
 "Once you've configured <application>jhbuild</application> as described "
 "above, building <application>gtkmm</application> should be relatively "
@@ -15136,14 +15114,14 @@ msgstr ""
 "application>时,你应运行以下命令序列,以确保<application>jhbuild</"
 "application>拥有所有所需的工具以及验证设置是否正确:<_:screen-1/>"
 
-#: C/index-in.docbook:8860
+#: C/index-in.docbook:8816
 msgid ""
 "Installing <application>gtkmm</application> with <application>jhbuild</"
 "application>"
 msgstr ""
 "用<application>jhbuild</application>安装<application>gtkmm</application>"
 
-#: C/index-in.docbook:8861
+#: C/index-in.docbook:8817
 msgid ""
 "If everything worked correctly, you should be able to build "
 "<application>gtkmm</application> and all of its dependencies from git by "
@@ -15156,7 +15134,7 @@ msgstr ""
 "那也可以使用命令<command>jhbuild build gtkmm</command>来进行构建)来从git构建"
 "<application>gtkmm</application>以及所有有关的依赖项。"
 
-#: C/index-in.docbook:8868
+#: C/index-in.docbook:8824
 msgid ""
 "This command will build and install a series of modules and will probably "
 "take quite a long time the first time through. After the first time, "
@@ -15173,11 +15151,11 @@ msgstr ""
 "gtkmm</command>重新构建<application>gtkmm</application>(不需要重新构建相关依"
 "赖)。"
 
-#: C/index-in.docbook:8879
+#: C/index-in.docbook:8835
 msgid "Using the git version of <application>gtkmm</application>"
 msgstr "使用git版本的<application>gtkmm</application>"
 
-#: C/index-in.docbook:8880
+#: C/index-in.docbook:8836
 msgid ""
 "After you've installed the git version of <application>gtkmm</application>, "
 "you're ready to start using and experimenting with it. In order to use the "
@@ -15200,7 +15178,7 @@ msgstr ""
 "有环境变量的shell。现在如果你和往常一样重新配置并构建你的项目,它应该链接到新"
 "的库。要返回之前的环境你只需要<application>jhbuild</application> shell即可。"
 
-#: C/index-in.docbook:8894
+#: C/index-in.docbook:8850
 msgid ""
 "Once you've built your software, you'll need to run your program within the "
 "jhbuild environment as well. To do this, you can again use the "
@@ -15219,11 +15197,11 @@ msgstr ""
 "command-name</command>。在这种情况下,命令将在设置了正确的环境变量的环境中运"
 "行,命令退出后,环境将恢复到之前的状态。"
 
-#: C/index-in.docbook:8911
+#: C/index-in.docbook:8867
 msgid "Wrapping C Libraries with gmmproc"
 msgstr "使用gmmproc封装C库"
 
-#: C/index-in.docbook:8912
+#: C/index-in.docbook:8868
 msgid ""
 "<application>gtkmm</application> uses the <command>gmmproc</command> tool to "
 "generate most of its source code, using .defs files that define the APIs of "
@@ -15235,18 +15213,18 @@ msgstr ""
 "库的API。因此,可以很容易为其他基于glib/Gobject的库创建类似于gtkmm风格的封"
 "装。"
 
-#: C/index-in.docbook:8917
+#: C/index-in.docbook:8873
 msgid ""
 "This involves a variety of tools, some of them crufty, but at least they "
 "work, and has been used successfully by several projects."
 msgstr ""
 "这涉及到很多工具,其中有一些很笨重,不过还算能用,并且已经被多个项目使用。"
 
-#: C/index-in.docbook:8922
+#: C/index-in.docbook:8878
 msgid "The build structure"
 msgstr "构建结构"
 
-#: C/index-in.docbook:8923
+#: C/index-in.docbook:8879
 msgid ""
 "Generation of the source code for a gtkmm-style wrapper API requires use of "
 "tools such as <command>gmmproc</command> and <filename>generate_wrap_init."
@@ -15262,7 +15240,7 @@ msgstr ""
 "利用<application>mm-common</application>模块提供的构建基础设施。选择一个已经"
 "存在绑定的模块作为示例对于开始使用gmmproc很有帮助。"
 
-#: C/index-in.docbook:8931
+#: C/index-in.docbook:8887
 msgid ""
 "For instance, let's pretend that we are wrapping a C library called "
 "libsomething. It provides a <classname>GObject</classname>-based API with "
@@ -15273,41 +15251,41 @@ msgstr ""
 "classname> API的具名类型,例如类型名为:<classname>SomeWidget</classname>和"
 "<classname>SomeStuff</classname>。"
 
-#: C/index-in.docbook:8937
+#: C/index-in.docbook:8893
 msgid "Copying the skeleton project"
 msgstr "复制skeleton项目"
 
-#: C/index-in.docbook:8944
-#, no-wrap
-msgid ""
-"\n"
-"  $ git clone https://gitlab.gnome.org/GNOME/mm-common.git\n";
-"  $ cp -a mm-common/skeletonmm libsomethingmm\n"
-msgstr ""
-"\n"
-"  $ git clone https://gitlab.gnome.org/GNOME/mm-common.git\n";
-"  $ cp -a mm-common/skeletonmm libsomethingmm\n"
-
-#: C/index-in.docbook:8939
+#: C/index-in.docbook:8895
 msgid ""
 "Typically our wrapper library would be called libsomethingmm. We can start "
 "by copying the <ulink url=\"https://gitlab.gnome.org/GNOME/mm-common/tree/";
 "master/skeletonmm\"> skeleton source tree</ulink> from the <application>mm-"
 "common</application> module. Starting with <application>mm-common</"
 "application> 1.0.0 this skeleton application is built with the <ulink url="
-"\"https://mesonbuild.com/\";>Meson build system</ulink>. <_:programlisting-1/>"
+"\"https://mesonbuild.com/\";>Meson build system</ulink>."
 msgstr ""
 "我们封装的库名为libsomethingmm。我们可以从在<application>mm-common</"
 "application>模块中复制<ulink url=\"https://gitlab.gnome.org/GNOME/mm-common/";
 "tree/master/skeletonmm\">skeleton源代码树</ulink>开始。自<application>mm-"
 "common</application> 1.0.0开始skeleton应用程序使用<ulink url=\"https://";
-"mesonbuild.com/\">Meson构建系统</ulink>进行构建。<_:programlisting-1/>"
+"mesonbuild.com/\">Meson构建系统</ulink>进行构建。"
 
-#: C/index-in.docbook:8954
+#: C/index-in.docbook:8901
+#, no-wrap
+msgid ""
+"\n"
+"  $ git clone https://gitlab.gnome.org/GNOME/mm-common.git\n";
+"  $ cp -a mm-common/skeletonmm libsomethingmm\n"
+msgstr ""
+"\n"
+"  $ git clone https://gitlab.gnome.org/GNOME/mm-common.git\n";
+"  $ cp -a mm-common/skeletonmm libsomethingmm\n"
+
+#: C/index-in.docbook:8910
 msgid "<filename>libsomethingmm</filename>: The top-level directory."
 msgstr "<filename>libsomethingmm</filename>:顶级目录。"
 
-#: C/index-in.docbook:8956
+#: C/index-in.docbook:8912
 msgid ""
 "<filename>libsomething</filename>: Contains the main include file and the "
 "pkg-config .pc file."
@@ -15315,16 +15293,16 @@ msgstr ""
 "<filename>libsomething</filename>:包含主要的被包含文件(被#include的文件)和由"
 "<application>pkg-config</application>所需的.pc文件。"
 
-#: C/index-in.docbook:8958
+#: C/index-in.docbook:8914
 msgid "<filename>src</filename>: Contains .hg and .ccg source files."
 msgstr "<filename>src</filename>:包含.hg和.ccg源文件。"
 
-#: C/index-in.docbook:8959
+#: C/index-in.docbook:8915
 msgid ""
 "<filename>libsomethingmm</filename>: Contains hand-written .h and .cc files."
 msgstr "<filename>libsomethingmm</filename>:包含手写的.h和.cc文件。"
 
-#: C/index-in.docbook:8949
+#: C/index-in.docbook:8905
 msgid ""
 "This provides a directory structure for the source .hg and .ccg files and "
 "the hand-written .h and .cc files, with <filename>meson.build</filename> "
@@ -15336,7 +15314,7 @@ msgstr ""
 "filename>文件可以通过各种变量指定Meson使用哪些文件进行编译。适当的重命名目录"
 "后,目录结构将如下所示:<_:itemizedlist-1/>"
 
-#: C/index-in.docbook:8970
+#: C/index-in.docbook:8926
 #, no-wrap
 msgid ""
 "\n"
@@ -15349,7 +15327,7 @@ msgstr ""
 "    d=\"${f%/*}\"; b=\"${f##*/}\"; mv \"$f\" \"$d/${b//skeleton/libsomething}\"; \\\n"
 "  done\n"
 
-#: C/index-in.docbook:8968
+#: C/index-in.docbook:8924
 msgid ""
 "As well as renaming the directories, we should rename some of the source "
 "files. For instance: <_:programlisting-1/> A number of the skeleton files "
@@ -15358,7 +15336,7 @@ msgstr ""
 "除了重命名目录外,我们还应该重命名一些源文件。例如:<_:programlisting-1/>然"
 "后,还有些skeleton文件需要在特定项目内容完成后填写。"
 
-#: C/index-in.docbook:8977
+#: C/index-in.docbook:8933
 msgid ""
 "Note that files ending in <filename>.in</filename> will be used to generate "
 "files with the same name but without the <filename>.in</filename> suffix, by "
@@ -15367,7 +15345,7 @@ msgstr ""
 "请注意,在配置阶段中某些变量将会替换为实际值,这将会生成与<filename>.in</"
 "filename>相同名称但不带<filename>.in</filename>后缀的文件。"
 
-#: C/index-in.docbook:8980
+#: C/index-in.docbook:8936
 msgid ""
 "Generated files are saved in the build tree, which is separated from the "
 "source tree when <command>meson</command> and <command>ninja</command> are "
@@ -15376,11 +15354,11 @@ msgstr ""
 "生成的文件被保存在构建树中,当使用<command>meson</command>和<command>ninja</"
 "command>时构建树会与源树分离。"
 
-#: C/index-in.docbook:8985
+#: C/index-in.docbook:8941
 msgid "Modifying build files"
 msgstr "修改构建文件"
 
-#: C/index-in.docbook:8987
+#: C/index-in.docbook:8943
 msgid ""
 "Now we edit the files to adapt them to our needs. You might prefer to use a "
 "multiple-file search-replace utility for this, such as <command>regexxer</"
@@ -15393,7 +15371,7 @@ msgstr ""
 "提供的所有文件几乎都包含了占位符。因此,应该进行全局替换而不是仅对Meson文件替"
 "换。"
 
-#: C/index-in.docbook:8991
+#: C/index-in.docbook:8947
 msgid ""
 "All mentions of <varname>skeleton</varname> should be replaced by the "
 "correct name of the C library you are wrapping, such as \"something\" or "
@@ -15406,7 +15384,7 @@ msgstr ""
 "varname>都应该被替换成\"SOMETHING\"或\"LIBSOMETHING\",以及所有的"
 "<varname>Skeleton</varname>都应该被替换为\"Something\"。"
 
-#: C/index-in.docbook:8995
+#: C/index-in.docbook:8951
 msgid ""
 "Likewise, replace all instances of <varname>Joe Hacker</varname> by the name "
 "of the intended copyright holder, which is probably you. Do the same for the "
@@ -15416,11 +15394,11 @@ msgstr ""
 "就是你的名称。然后对<varname>joe example com</varname>邮件地址进行同样的操"
 "作。"
 
-#: C/index-in.docbook:9000
+#: C/index-in.docbook:8956
 msgid "meson.build in the top-level directory"
 msgstr "顶级目录中的meson.build"
 
-#: C/index-in.docbook:9003
+#: C/index-in.docbook:8959
 msgid ""
 "It is common for binding modules to track the version number of the library "
 "they are wrapping. So, for instance, if the C library is at version 1.23.4, "
@@ -15432,14 +15410,14 @@ msgstr ""
 "的初始版本为1.23.0。但是请尽量避免以偶数次要版本开始,因为这通常意味着该版本"
 "是稳定版本。"
 
-#: C/index-in.docbook:9008
+#: C/index-in.docbook:8964
 msgid ""
 "In the <function>project()</function> function, change the license and the C+"
 "+ version, if necessary."
 msgstr ""
 "如果有必要,请在<function>project()</function>函数中修改许可证和C++版本。"
 
-#: C/index-in.docbook:9010
+#: C/index-in.docbook:8966
 msgid ""
 "You probably need to add more required modules than <application>glibmm</"
 "application> and <application>skeleton</application> "
@@ -15448,11 +15426,11 @@ msgstr ""
 "你可能需要添加除<application>glibmm</application>和"
 "<application>skeleton(libsomething)</application>以外的必需模块。"
 
-#: C/index-in.docbook:9018
+#: C/index-in.docbook:8974
 msgid "Other meson.build files"
 msgstr "其他meson.build文件"
 
-#: C/index-in.docbook:9021
+#: C/index-in.docbook:8977
 msgid ""
 "<filename>skeleton/meson.build</filename>: Perhaps not much to change here "
 "more than the global name substitutions."
@@ -15460,34 +15438,34 @@ msgstr ""
 "<filename>skeleton/meson.build</filename>:在这除了全局替换以外基本上不需要做"
 "什么。"
 
-#: C/index-in.docbook:9024
+#: C/index-in.docbook:8980
 msgid "<filename>skeleton/skeletonmm/meson.build</filename>"
 msgstr "<filename>skeleton/skeletonmm/meson.build</filename>"
 
-#: C/index-in.docbook:9027
+#: C/index-in.docbook:8983
 msgid "<varname>defs_basefiles</varname>"
 msgstr "<varname>defs_basefiles</varname>"
 
-#: C/index-in.docbook:9028
+#: C/index-in.docbook:8984
 msgid "If we have more .defs and docs.xml files, we add them here."
 msgstr "在这添加额外的.defs和docs.xml文件"
 
-#: C/index-in.docbook:9032
+#: C/index-in.docbook:8988
 msgid "<varname>hg_ccg_basenames</varname>"
 msgstr "<varname>hg_ccg_basenames</varname>"
 
-#: C/index-in.docbook:9033
+#: C/index-in.docbook:8989
 msgid ""
 "We must mention all of our <filename>.hg</filename> and <filename>.ccg</"
 "filename> files here."
 msgstr ""
 "必须在这里提及所有的<filename>.hg</filename>和<filename>.ccg</filename>。"
 
-#: C/index-in.docbook:9037
+#: C/index-in.docbook:8993
 msgid "<varname>extra_cc_files, extra_h_files</varname>"
 msgstr "<varname>extra_cc_files, extra_h_files</varname>"
 
-#: C/index-in.docbook:9038
+#: C/index-in.docbook:8994
 msgid ""
 "Any additional hand-written <filename>.h</filename> and <filename>.cc</"
 "filename> source files go here."
@@ -15495,7 +15473,7 @@ msgstr ""
 "所有手写的<filename>.h</filename>和<filename>.cc</filename>源文件都需要写在"
 "这。"
 
-#: C/index-in.docbook:9019
+#: C/index-in.docbook:8975
 msgid ""
 "Next we must adapt the other <filename>meson.build</filename> files: <_:"
 "itemizedlist-1/>"
@@ -15503,11 +15481,11 @@ msgstr ""
 "接下来我们必须对其他的<filename>meson.build</filename>文件进行修改:<_:"
 "itemizedlist-1/>"
 
-#: C/index-in.docbook:9048
+#: C/index-in.docbook:9004
 msgid "Creating .hg and .ccg files"
 msgstr "创建.hg个.ccg文件"
 
-#: C/index-in.docbook:9049
+#: C/index-in.docbook:9005
 msgid ""
 "We should now create our first <filename>.hg</filename> and <filename>.ccg</"
 "filename> files, to wrap one of the objects in the C library. One pair of "
@@ -15519,7 +15497,7 @@ msgstr ""
 "<filename>skeleton.ccg</filename>和<filename>skeleton.hg</filename>。请根据需"
 "要创建这些文件的副本。"
 
-#: C/index-in.docbook:9053
+#: C/index-in.docbook:9009
 msgid ""
 "In the <link linkend=\"sec-wrapping-hg-files\">.hg and .ccg files</link> "
 "section you can learn about the syntax used in these files."
@@ -15527,35 +15505,35 @@ msgstr ""
 "在<link linkend=\"sec-wrapping-hg-files\">.hg和.ccg文件</link>小节你可以学到"
 "这些文件使用的语法。"
 
-#: C/index-in.docbook:9060
+#: C/index-in.docbook:9016
 msgid "Generating the .defs files."
 msgstr "生成.defs文件"
 
-#: C/index-in.docbook:9064
+#: C/index-in.docbook:9020
 msgid "objects (GObjects, widgets, interfaces, boxed-types and plain structs)"
 msgstr "对象(GObjects、部件、接口、装箱类型、普通结构体)"
 
-#: C/index-in.docbook:9065
+#: C/index-in.docbook:9021
 msgid "functions"
 msgstr "函数"
 
-#: C/index-in.docbook:9066
+#: C/index-in.docbook:9022
 msgid "enums"
 msgstr "枚举"
 
-#: C/index-in.docbook:9067
+#: C/index-in.docbook:9023
 msgid "signals"
 msgstr "信号"
 
-#: C/index-in.docbook:9068
+#: C/index-in.docbook:9024
 msgid "properties"
 msgstr "属性"
 
-#: C/index-in.docbook:9069
+#: C/index-in.docbook:9025
 msgid "vfuncs"
 msgstr "虚函数(vfuncs)"
 
-#: C/index-in.docbook:9061
+#: C/index-in.docbook:9017
 msgid ""
 "The <filename>.defs</filename> files are text files, in a lisp format, that "
 "describe the API of a C library, including its <_:itemizedlist-1/>"
@@ -15563,47 +15541,47 @@ msgstr ""
 "<filename>.defs</filename>是一种使用lisp格式的文本文件,它描述了C库的API,其"
 "中包括了以下内容:<_:itemizedlist-1/>"
 
-#: C/index-in.docbook:9078
+#: C/index-in.docbook:9034
 msgid "<filename>gtk.defs</filename>"
 msgstr "<filename>gtk.defs</filename>"
 
-#: C/index-in.docbook:9079
+#: C/index-in.docbook:9035
 msgid "Includes the other files."
 msgstr "包含其他文件。"
 
-#: C/index-in.docbook:9082
+#: C/index-in.docbook:9038
 msgid "<filename>gtk_methods.defs</filename>"
 msgstr "<filename>gtk_methods.defs</filename>"
 
-#: C/index-in.docbook:9083
+#: C/index-in.docbook:9039
 msgid "Objects and functions."
 msgstr "对象和函数。"
 
-#: C/index-in.docbook:9086
+#: C/index-in.docbook:9042
 msgid "<filename>gtk_enums.defs</filename>"
 msgstr "<filename>gtk_enums.defs</filename>"
 
-#: C/index-in.docbook:9087
+#: C/index-in.docbook:9043
 msgid "Enumerations."
 msgstr "枚举。"
 
-#: C/index-in.docbook:9090
+#: C/index-in.docbook:9046
 msgid "<filename>gtk_signals.defs</filename>"
 msgstr "<filename>gtk_signals.defs</filename>"
 
-#: C/index-in.docbook:9091
+#: C/index-in.docbook:9047
 msgid "Signals and properties."
 msgstr "信号和属性。"
 
-#: C/index-in.docbook:9094
+#: C/index-in.docbook:9050
 msgid "<filename>gtk_vfuncs.defs</filename>"
 msgstr "<filename>gtk_vfuncs.defs</filename>"
 
-#: C/index-in.docbook:9095
+#: C/index-in.docbook:9051
 msgid "vfuncs (function pointer member fields in structs), written by hand."
 msgstr "虚函数(结构体中的函数指针字段),手动编写。"
 
-#: C/index-in.docbook:9072
+#: C/index-in.docbook:9028
 msgid ""
 "At the moment, we have separate tools for generating different parts of "
 "these <filename>.defs</filename>, so we split them up into separate files. "
@@ -15615,7 +15593,7 @@ msgstr ""
 "我们将它们拆分为单独的文件,例如在gtkmm源的<filename>gtk/src</filename>目录中"
 "你将看到以下文件:<_:variablelist-1/>"
 
-#: C/index-in.docbook:9099
+#: C/index-in.docbook:9055
 msgid ""
 "The <filename>skeletonmm/tools/generate_defs_and_docs.sh</filename> script "
 "generates all <filename>.defs</filename> files and the <filename>*_docs.xml</"
@@ -15626,82 +15604,79 @@ msgstr ""
 "些<filename>.defs</filename>以及<filename>*_docs.xml</filename>文件,如该小节"
 "的<link linkend=\"sec-wrapping-documentation\">文档</link>所述。"
 
-#: C/index-in.docbook:9105
+#: C/index-in.docbook:9061
 msgid "Generating the methods .defs"
 msgstr "生成_methods.defs文件"
 
-#: C/index-in.docbook:9109
-#, no-wrap
-msgid ""
-"\n"
-"$ ./h2def.py /usr/include/gtk-4.0/gtk/*.h &gt; gtk_methods.defs\n"
-msgstr ""
-"\n"
-"$ ./h2def.py /usr/include/gtk-4.0/gtk/*.h &gt; gtk_methods.defs\n"
-
-#: C/index-in.docbook:9106
+#: C/index-in.docbook:9062
 msgid ""
 "This <filename>.defs</filename> file describes objects and their functions. "
 "It is generated by the <command>h2def.py</command> script which you can find "
-"in glibmm's <filename>tools/defs_gen</filename> directory. For instance, <_:"
-"programlisting-1/>"
+"in glibmm's <filename>tools/defs_gen</filename> directory. For instance,"
 msgstr ""
 "这个<filename>.defs</filename>文件描述了对象及其函数。它是由<command>h2def."
 "py</command>脚本生成的,你可以在glibmm的<filename>tools/defs_gen</filename>文"
-"件夹中找到该脚本。例如:<_:programlisting-1/>"
+"件夹中找到该脚本。例如:"
 
-#: C/index-in.docbook:9116
-msgid "Generating the enums .defs"
-msgstr "生成_enums.defs文件"
-
-#: C/index-in.docbook:9120
+#: C/index-in.docbook:9066
 #, no-wrap
 msgid ""
 "\n"
-"$ ./enum.pl /usr/include/gtk-4.0/gtk/*.h &gt; gtk_enums.defs\n"
+"$ ./h2def.py /usr/include/gtk-4.0/gtk/*.h &gt; gtk_methods.defs\n"
 msgstr ""
 "\n"
-"$ ./enum.pl /usr/include/gtk-4.0/gtk/*.h &gt; gtk_enums.defs\n"
+"$ ./h2def.py /usr/include/gtk-4.0/gtk/*.h &gt; gtk_methods.defs\n"
+
+#: C/index-in.docbook:9072
+msgid "Generating the enums .defs"
+msgstr "生成_enums.defs文件"
 
-#: C/index-in.docbook:9117
+#: C/index-in.docbook:9073
 msgid ""
 "This <filename>.defs</filename> file describes enum types and their possible "
 "values. It is generated by the <filename>enum.pl</filename> script which you "
-"can find in glibmm's <filename>tools</filename> directory. For instance, <_:"
-"programlisting-1/>"
+"can find in glibmm's <filename>tools</filename> directory. For instance,"
 msgstr ""
 "这个<filename>.defs</filename>文件描述了枚举类型及其可能的值。它是由"
 "<filename>enum.pl</filename>脚本生成的,你可以在glibmm的<filename>tools</"
-"filename>文件夹中找到该脚本。例如:<_:programlisting-1/>"
+"filename>文件夹中找到该脚本。例如:"
 
-#: C/index-in.docbook:9127
-msgid "Generating the signals and properties .defs"
-msgstr "生成_signals.defs文件"
-
-#: C/index-in.docbook:9132
+#: C/index-in.docbook:9077
 #, no-wrap
 msgid ""
 "\n"
-"$ cd tools/extra_defs_gen\n"
-"$ ./generate_extra_defs &gt; gtk_signals.defs\n"
+"$ ./enum.pl /usr/include/gtk-4.0/gtk/*.h &gt; gtk_enums.defs\n"
 msgstr ""
 "\n"
-"$ cd tools/extra_defs_gen\n"
-"$ ./generate_extra_defs &gt; gtk_signals.defs\n"
+"$ ./enum.pl /usr/include/gtk-4.0/gtk/*.h &gt; gtk_enums.defs\n"
+
+#: C/index-in.docbook:9083
+msgid "Generating the signals and properties .defs"
+msgstr "生成_signals.defs文件"
 
-#: C/index-in.docbook:9128
+#: C/index-in.docbook:9084
 msgid ""
 "This <filename>.defs</filename> file describes signals and properties. It is "
 "generated by the special <filename>generate_extra_defs</filename> utility "
 "that is in every wrapping project, such as <filename>gtkmm/tools/"
-"extra_defs_gen/</filename>. For instance <_:programlisting-1/>"
+"extra_defs_gen/</filename>. For instance"
 msgstr ""
 "这个<filename>.defs</filename>文件描述了信号和属性。它是由封装项目自有的"
 "<filename>generate_extra_defs</filename>实用程序生成的,你可以在类似于"
-"<filename>gtkmm/tools/extra_defs_gen/</filename>的目录下找到它。例如:<_:"
-"programlisting-1/>"
+"<filename>gtkmm/tools/extra_defs_gen/</filename>的目录下找到它。例如:"
 
-#: C/index-in.docbook:9137
+#: C/index-in.docbook:9089
+#, no-wrap
+msgid ""
+"\n"
+"$ cd tools/extra_defs_gen\n"
+"$ ./generate_extra_defs &gt; gtk_signals.defs\n"
+msgstr ""
+"\n"
+"$ cd tools/extra_defs_gen\n"
+"$ ./generate_extra_defs &gt; gtk_signals.defs\n"
+
+#: C/index-in.docbook:9093
 msgid ""
 "You must edit the source code of your own <filename>generate_extra_defs</"
 "filename> tool in order to generate the <filename>.defs</filename> for the "
@@ -15718,7 +15693,15 @@ msgstr ""
 "filename>。你需要将文件重命名为正确的文件名(按前一小节所述),然后在"
 "<filename>tools/extra_defs_gen/meson.build</filename>文件中提到新的源文件名。"
 
-#: C/index-in.docbook:9146
+#: C/index-in.docbook:9100
+msgid ""
+"Then edit the <filename>.cc</filename> file to specify the correct types. "
+"For instance, your <function>main()</function> function might look like this:"
+msgstr ""
+"然后编辑<filename>.cc</filename>以指定正确的类型。例如,你的"
+"<function>main()</function>函数可能如下所示:"
+
+#: C/index-in.docbook:9103
 #, no-wrap
 msgid ""
 "\n"
@@ -15749,20 +15732,11 @@ msgstr ""
 "  return 0;\n"
 "}\n"
 
-#: C/index-in.docbook:9144
-msgid ""
-"Then edit the <filename>.cc</filename> file to specify the correct types. "
-"For instance, your <function>main()</function> function might look like "
-"this: <_:programlisting-1/>"
-msgstr ""
-"然后编辑<filename>.cc</filename>以指定正确的类型。例如,你的"
-"<function>main()</function>函数可能如下所示:<_:programlisting-1/>"
-
-#: C/index-in.docbook:9164
+#: C/index-in.docbook:9120
 msgid "Writing the vfuncs .defs"
 msgstr "编写_vfunc.defs文件"
 
-#: C/index-in.docbook:9165
+#: C/index-in.docbook:9121
 msgid ""
 "This <filename>.defs</filename> file describes virtual functions (vfuncs). "
 "It must be written by hand. There is the skeleton file <filename>skeleton/"
@@ -15775,11 +15749,11 @@ msgstr ""
 "以从<application>gtkmm</application>的<filename>gtk/src/gtk_vfuncs.defs</"
 "filename>文件开始。"
 
-#: C/index-in.docbook:9176
+#: C/index-in.docbook:9132
 msgid "The .hg and .ccg files"
 msgstr ".hg和.ccg文件"
 
-#: C/index-in.docbook:9177
+#: C/index-in.docbook:9133
 msgid ""
 "The .hg and .ccg source files are very much like .h and .cc C++ source "
 "files, but they contain extra macros, such as <function>_CLASS_GOBJECT()</"
@@ -15793,23 +15767,34 @@ msgstr ""
 "<command>gmmproc</command>会使用这些宏在头文件中的相同位置生成合适的C++源代"
 "码。而所有其他的C++源代码会按原样复制到相应的.h或.cc文件中。"
 
-#: C/index-in.docbook:9190
+#: C/index-in.docbook:9141
+msgid ""
+"A .hg file will typically include some headers and then declare a class, "
+"using some macros to add API or behaviour to this class. For instance, "
+"<application>gtkmm</application>'s <filename>button.hg</filename> looks "
+"roughly like this:"
+msgstr ""
+".hg文件通常包含了一些头文件和声明一个类,并使用一些宏向类中添加API或行为。例"
+"如,<application>gtkmm</application>的<filename>button.hg</filename>文件看起"
+"来大概这样:"
+
+#: C/index-in.docbook:9146
 #, no-wrap
 msgid ""
 "\n"
-"#include &lt;gtkmm/bin.h&gt;\n"
+"#include &lt;gtkmm/widget.h&gt;\n"
 "#include &lt;gtkmm/actionable.h&gt;\n"
 "_DEFS(gtkmm,gtk)\n"
-"_PINCLUDE(gtkmm/private/bin_p.h)\n"
+"_PINCLUDE(gtkmm/private/widget_p.h)\n"
 "\n"
 "namespace Gtk\n"
 "{\n"
 "\n"
 "class Button\n"
-"  : public Bin,\n"
+"  : public Widget,\n"
 "    public Actionable\n"
 "{\n"
-"  _CLASS_GTKOBJECT(Button,GtkButton,GTK_BUTTON,Gtk::Bin,GtkBin)\n"
+"  _CLASS_GTKOBJECT(Button, GtkButton, GTK_BUTTON, Gtk::Widget, GtkWidget)\n"
 "  _IMPLEMENTS_INTERFACE(Actionable)\n"
 "public:\n"
 "\n"
@@ -15830,19 +15815,19 @@ msgid ""
 "} // namespace Gtk\n"
 msgstr ""
 "\n"
-"#include &lt;gtkmm/bin.h&gt;\n"
+"#include &lt;gtkmm/widget.h&gt;\n"
 "#include &lt;gtkmm/actionable.h&gt;\n"
 "_DEFS(gtkmm,gtk)\n"
-"_PINCLUDE(gtkmm/private/bin_p.h)\n"
+"_PINCLUDE(gtkmm/private/widget_p.h)\n"
 "\n"
 "namespace Gtk\n"
 "{\n"
 "\n"
 "class Button\n"
-"  : public Bin,\n"
+"  : public Widget,\n"
 "    public Actionable\n"
 "{\n"
-"  _CLASS_GTKOBJECT(Button,GtkButton,GTK_BUTTON,Gtk::Bin,GtkBin)\n"
+"  _CLASS_GTKOBJECT(Button, GtkButton, GTK_BUTTON, Gtk::Widget, GtkWidget)\n"
 "  _IMPLEMENTS_INTERFACE(Actionable)\n"
 "public:\n"
 "\n"
@@ -15862,22 +15847,11 @@ msgstr ""
 "\n"
 "} // namespace Gtk\n"
 
-#: C/index-in.docbook:9185
-msgid ""
-"A .hg file will typically include some headers and then declare a class, "
-"using some macros to add API or behaviour to this class. For instance, "
-"<application>gtkmm</application>'s <filename>button.hg</filename> looks "
-"roughly like this: <_:programlisting-1/>"
-msgstr ""
-".hg文件通常包含了一些头文件和声明一个类,并使用一些宏向类中添加API或行为。例"
-"如,<application>gtkmm</application>的<filename>button.hg</filename>文件看起"
-"来大概这样:<_:programlisting-1/>"
-
-#: C/index-in.docbook:9227
+#: C/index-in.docbook:9182
 msgid "<function>_DEFS()</function>"
 msgstr "<function>_DEFS()</function>"
 
-#: C/index-in.docbook:9228
+#: C/index-in.docbook:9183
 msgid ""
 "Specifies the destination directory for generated sources, and the name of "
 "the main .defs file that <command>gmmproc</command> should parse."
@@ -15885,11 +15859,11 @@ msgstr ""
 "指定所生成源代码的目标目录,以及<command>gmmproc</command>应该解析的主要.defs"
 "文件的名称。"
 
-#: C/index-in.docbook:9231
+#: C/index-in.docbook:9186
 msgid "<function>_PINCLUDE()</function>"
 msgstr "<function>_PINCLUDE()</function>"
 
-#: C/index-in.docbook:9232
+#: C/index-in.docbook:9187
 msgid ""
 "Tells <command>gmmproc</command> to include a header in the generated "
 "<filename>private/button_p.h</filename> file."
@@ -15897,11 +15871,11 @@ msgstr ""
 "告诉<command>gmmproc</command>在生成的文件中包含<filename>private/button_p."
 "h</filename>头文件。"
 
-#: C/index-in.docbook:9235
+#: C/index-in.docbook:9190
 msgid "<function>_CLASS_GTKOBJECT()</function>"
 msgstr "<function>_CLASS_GTKOBJECT()</function>"
 
-#: C/index-in.docbook:9236
+#: C/index-in.docbook:9191
 msgid ""
 "Tells <command>gmmproc</command> to add some typedefs, constructors, and "
 "standard methods to this class, as appropriate when wrapping a widget."
@@ -15909,25 +15883,25 @@ msgstr ""
 "告诉<command>gmmproc</command>在封装部件类时在类中添加一些类型定义(typedef)、"
 "构造函数、标准方法。"
 
-#: C/index-in.docbook:9239
+#: C/index-in.docbook:9194
 msgid "<function>_IMPLEMENTS_INTERFACE()</function>"
 msgstr "<function>_IMPLEMENTS_INTERFACE()</function>"
 
-#: C/index-in.docbook:9240
+#: C/index-in.docbook:9195
 msgid ""
 "Tells <command>gmmproc</command> to add initialization code for the "
 "interface."
 msgstr "告诉<command>gmmproc</command>为接口添加初始化代码。"
 
-#: C/index-in.docbook:9243
+#: C/index-in.docbook:9198
 msgid "<function>_CTOR_DEFAULT</function>"
 msgstr "<function>_CTOR_DEFAULT</function>"
 
-#: C/index-in.docbook:9244
+#: C/index-in.docbook:9199
 msgid "Adds a default constructor."
 msgstr "添加默认构造函数。"
 
-#: C/index-in.docbook:9247
+#: C/index-in.docbook:9202
 msgid ""
 "<function>_WRAP_METHOD()</function>, <function>_WRAP_SIGNAL()</function>, "
 "and <function>_WRAP_PROPERTY()</function>"
@@ -15935,15 +15909,24 @@ msgstr ""
 "<function>_WRAP_METHOD()</function>、<function>_WRAP_SIGNAL()</function>和"
 "<function>_WRAP_PROPERTY()</function>"
 
-#: C/index-in.docbook:9250
+#: C/index-in.docbook:9205
 msgid "Add methods to wrap parts of the C API."
 msgstr "添加用于封装C API的一部分的方法。"
 
-#: C/index-in.docbook:9224
+#: C/index-in.docbook:9179
 msgid "The macros in this example do the following: <_:variablelist-1/>"
 msgstr "本示例中的宏执行下述操作:<_:variablelist-1/>"
 
-#: C/index-in.docbook:9257
+#: C/index-in.docbook:9209
+msgid ""
+"The .h and .cc files will be generated from the .hg and .ccg files by "
+"processing them with <command>gmmproc</command> like so, though this happens "
+"automatically when using the above build structure:"
+msgstr ""
+"通过这样使用<command>gmmproc</command>处理.hg和.ccg文件,可以从.hg和.ccg文件"
+"生成.h和.cc文件,尽管这在使用上述的构建结构时会自动进行:"
+
+#: C/index-in.docbook:9213
 #, no-wrap
 msgid ""
 "\n"
@@ -15954,17 +15937,7 @@ msgstr ""
 "$ cd gtk/src\n"
 "$ /usr/lib/glibmm-2.68/proc/gmmproc -I ../../tools/m4 --defs . button . ./../gtkmm\n"
 
-#: C/index-in.docbook:9254
-msgid ""
-"The .h and .cc files will be generated from the .hg and .ccg files by "
-"processing them with <command>gmmproc</command> like so, though this happens "
-"automatically when using the above build structure: <_:programlisting-1/>"
-msgstr ""
-"通过这样使用<command>gmmproc</command>处理.hg和.ccg文件,可以从.hg和.ccg文件"
-"生成.h和.cc文件,尽管这在使用上述的构建结构时会自动进行:<_:programlisting-1/"
-">"
-
-#: C/index-in.docbook:9262
+#: C/index-in.docbook:9217
 msgid ""
 "Notice that we provided <command>gmmproc</command> with the path to the .m4 "
 "convert files, the path to the .defs file, the name of a .hg file, the "
@@ -15973,7 +15946,7 @@ msgstr ""
 "请注意我们为<command>gmmproc</command>提供了.m4转换文件、.defs文件路径、.hg文"
 "件名、源代码目录、目标目录。"
 
-#: C/index-in.docbook:9265
+#: C/index-in.docbook:9220
 msgid ""
 "You should avoid including the C header from your C++ header, to avoid "
 "polluting the global namespace, and to avoid exporting unnecessary public "
@@ -15983,24 +15956,15 @@ msgstr ""
 "你应该避免在C++头文件中包含C头文件,以免污染全局名称空间,以免导出不必要的公"
 "共API。但是你需要在你的.ccg文件中包含必要的C头文件。"
 
-#: C/index-in.docbook:9270
+#: C/index-in.docbook:9225
 msgid "The macros are explained in more detail in the following sections."
 msgstr "以下各节将对宏进行详细说明。"
 
-#: C/index-in.docbook:9273
+#: C/index-in.docbook:9228
 msgid "m4 Conversions"
 msgstr "m4转换"
 
-#: C/index-in.docbook:9281
-#, no-wrap
-msgid ""
-"\n"
-"_CONVERSION(`GtkTreeView*',`TreeView*',`Glib::wrap($3)')\n"
-msgstr ""
-"\n"
-"_CONVERSION(`GtkTreeView*',`TreeView*',`Glib::wrap($3)')\n"
-
-#: C/index-in.docbook:9274
+#: C/index-in.docbook:9229
 msgid ""
 "The macros that you use in the .hg and .ccg files often need to know how to "
 "convert a C++ type to a C type, or vice-versa. <command>gmmproc</command> "
@@ -16009,16 +15973,25 @@ msgid ""
 "function in the implementation of your C++ method, passing the appropriate "
 "parameters to that C functon. For instance, this tells <command>gmmproc</"
 "command> how to convert a <classname>GtkTreeView</classname> pointer to a "
-"<classname>Gtk::TreeView</classname> pointer: <_:programlisting-1/>"
+"<classname>Gtk::TreeView</classname> pointer:"
 msgstr ""
 "在.hg和.ccg文件中使用的宏通常需要知道如何将C++类型转换为C类型,反之亦然。"
 "<command>gmmproc</command>会从你的<literal>tools/m4/</literal>或"
 "<literal>codegen/m4/</literal>目录的.m4文件读取此信息。这样它就可以在C++方法"
 "的实现中调用C函数,并将适当的参数传递给该C函数。例如:这告诉"
 "<command>gmmproc</command>如何将<classname>GtkTreeView</classname>指针转换为"
-"<classname>Gtk::TreeView</classname>指针:<_:programlisting-1/>"
+"<classname>Gtk::TreeView</classname>指针:"
 
-#: C/index-in.docbook:9286
+#: C/index-in.docbook:9237
+#, no-wrap
+msgid ""
+"\n"
+"_CONVERSION(`GtkTreeView*',`TreeView*',`Glib::wrap($3)')\n"
+msgstr ""
+"\n"
+"_CONVERSION(`GtkTreeView*',`TreeView*',`Glib::wrap($3)')\n"
+
+#: C/index-in.docbook:9241
 msgid ""
 "<literal>$3</literal> will be replaced by the parameter name when this "
 "conversion is used by <command>gmmproc</command>."
@@ -16026,7 +15999,15 @@ msgstr ""
 "当此转换被<command>gmmproc</command>使用时,<literal>$3</literal>将会被参数名"
 "称替换。"
 
-#: C/index-in.docbook:9293
+#: C/index-in.docbook:9245
+msgid ""
+"Some extra macros make this easier and consistent. Look in "
+"<application>gtkmm</application>'s .m4 files for examples. For instance:"
+msgstr ""
+"使用一些额外的宏可以使其变得更简单和一致。例如<application>gtkmm</"
+"application>中的.m4文件:"
+
+#: C/index-in.docbook:9249
 #, no-wrap
 msgid ""
 "\n"
@@ -16039,20 +16020,11 @@ msgstr ""
 "_CONVERSION(`const PrintSettings&amp;',`GtkPrintSettings*',__FCR2P)\n"
 "_CONVERSION(`const Glib::RefPtr&lt;Printer&gt;&amp;',`GtkPrinter*',__CONVERT_REFPTR_TO_P($3))\n"
 
-#: C/index-in.docbook:9290
-msgid ""
-"Some extra macros make this easier and consistent. Look in "
-"<application>gtkmm</application>'s .m4 files for examples. For instance: <_:"
-"programlisting-1/>"
-msgstr ""
-"使用一些额外的宏可以使其变得更简单和一致。例如<application>gtkmm</"
-"application>中的.m4文件:<_:programlisting-1/>"
-
-#: C/index-in.docbook:9302
+#: C/index-in.docbook:9257
 msgid "m4 Initializations"
 msgstr "安装m4"
 
-#: C/index-in.docbook:9303
+#: C/index-in.docbook:9258
 msgid ""
 "Often when wrapping methods, it is desirable to store the return of the C "
 "function in what is called an output parameter. In this case, the C++ method "
@@ -16067,28 +16039,28 @@ msgstr ""
 "<command>gmmproc</command>支持此功能,但是必须使用适当的初始化宏来告诉"
 "<command>gmmproc</command>如何从C函数的返回值初始化C++参数。"
 
-#: C/index-in.docbook:9318
-#, no-wrap
-msgid ""
-"\n"
-"_INITIALIZATION(`Gtk::Widget&amp;',`GtkWidget*',`$3 = Glib::wrap($4)')\n"
-msgstr ""
-"\n"
-"_INITIALIZATION(`Gtk::Widget&amp;',`GtkWidget*',`$3 = Glib::wrap($4)')\n"
-
-#: C/index-in.docbook:9312
+#: C/index-in.docbook:9267
 msgid ""
 "For example, if there was a C function that returned a <type>GtkWidget*</"
 "type> and for some reason, instead of having the C++ method also return the "
 "widget, it was desirable to have the C++ method place the widget in a "
 "specified output parameter, an initialization macro such as the following "
-"would be necessary: <_:programlisting-1/>"
+"would be necessary:"
 msgstr ""
 "例如,如果一个C函数返回了一个<type>GtkWidget*</type>,并且由于某种原因,不想"
 "让C++方法返回此部件,而是希望C++方法将此部件放入指定的输出参数中,则如下所示"
-"的初始化宏是必须的:<_:programlisting-1/>"
+"的初始化宏是必须的:"
 
-#: C/index-in.docbook:9323
+#: C/index-in.docbook:9274
+#, no-wrap
+msgid ""
+"\n"
+"_INITIALIZATION(`Gtk::Widget&amp;',`GtkWidget*',`$3 = Glib::wrap($4)')\n"
+msgstr ""
+"\n"
+"_INITIALIZATION(`Gtk::Widget&amp;',`GtkWidget*',`$3 = Glib::wrap($4)')\n"
+
+#: C/index-in.docbook:9278
 msgid ""
 "<literal>$3</literal> will be replaced by the output parameter name of the C+"
 "+ method and <literal>$4</literal> will be replaced by the return of the C "
@@ -16102,11 +16074,11 @@ msgstr ""
 "<literal>$1</literal>也将被不带<literal>&amp;</literal>符的C++类型替换,而"
 "<literal>$2</literal>将被替换为C类型。"
 
-#: C/index-in.docbook:9334
+#: C/index-in.docbook:9289
 msgid "Class macros"
 msgstr "类宏"
 
-#: C/index-in.docbook:9335
+#: C/index-in.docbook:9290
 msgid ""
 "The class macro declares the class itself and its relationship with the "
 "underlying C type. It generates some internal constructors, the member "
@@ -16119,7 +16091,7 @@ msgstr ""
 "function>访问器、<function>Glib::wrap()</function>成员函数、并进行类型注册"
 "等。"
 
-#: C/index-in.docbook:9340
+#: C/index-in.docbook:9295
 msgid ""
 "Other macros, such as <function>_WRAP_METHOD()</function> and "
 "<function>_WRAP_SIGNAL()</function> may only be used after a call to a "
@@ -16128,11 +16100,11 @@ msgstr ""
 "其他像<function>_WRAP_METHOD()</function>和<function>_WRAP_SIGNAL()</"
 "function>这样的宏只能在调用<function>_CLASS_*</function>宏之后使用。"
 
-#: C/index-in.docbook:9345
+#: C/index-in.docbook:9300
 msgid "_CLASS_GOBJECT"
 msgstr "_CLASS_GOBJECT"
 
-#: C/index-in.docbook:9346
+#: C/index-in.docbook:9301
 msgid ""
 "This macro declares a wrapper for a type that is derived from "
 "<classname>GObject</classname>, but whose wrapper is not derived from "
@@ -16141,33 +16113,31 @@ msgstr ""
 "这个宏为从<classname>GObject</classname>派生的类型声明了一个类型包装器,但是"
 "此包装器并不会派生自<classname>Gtk::Object</classname>。"
 
-#: C/index-in.docbook:9349
+#: C/index-in.docbook:9304
 msgid ""
 "<function>_CLASS_GOBJECT( C++ class, C class, C casting macro, C++ base "
 "class, C base class )</function>"
 msgstr ""
 "<function>_CLASS_GOBJECT( C++类, C类, C转换宏, C++基类, C基类 )</function>"
 
-#: C/index-in.docbook:9351
+#: C/index-in.docbook:9305
+msgid "For instance, from <filename>adjustment.hg</filename>:"
+msgstr "示例来自于<filename>entry.hg</filename>:"
+
+#: C/index-in.docbook:9306
 #, no-wrap
 msgid ""
 "\n"
-"_CLASS_GOBJECT(AccelGroup, GtkAccelGroup, GTK_ACCEL_GROUP, Glib::Object, GObject)\n"
+"_CLASS_GOBJECT(Adjustment, GtkAdjustment, GTK_ADJUSTMENT, Glib::Object, GObject)\n"
 msgstr ""
 "\n"
-"_CLASS_GOBJECT(AccelGroup, GtkAccelGroup, GTK_ACCEL_GROUP, Glib::Object, GObject)\n"
+"_CLASS_GOBJECT(Adjustment, GtkAdjustment, GTK_ADJUSTMENT, Glib::Object, GObject)\n"
 
-#: C/index-in.docbook:9350
-msgid ""
-"For instance, from <filename>accelgroup.hg</filename>: <_:programlisting-1/>"
-msgstr ""
-"来自<filename>accelgroup.hg</filename>文件中的例子:<_:programlisting-1/>"
-
-#: C/index-in.docbook:9358
+#: C/index-in.docbook:9312
 msgid "_CLASS_GTKOBJECT"
 msgstr "_CLASS_GTKOBJECT"
 
-#: C/index-in.docbook:9359
+#: C/index-in.docbook:9313
 msgid ""
 "This macro declares a wrapper for a type whose wrapper is derived from "
 "<classname>Gtk::Object</classname>, such as a widget or dialog."
@@ -16175,28 +16145,27 @@ msgstr ""
 "这个宏为类型声明了一个类型派生包装器,此包装器将派生自<classname>Gtk::"
 "Object</classname>,例如部件(Widget)和对话框(Dialog)。"
 
-#: C/index-in.docbook:9361
+#: C/index-in.docbook:9315
 msgid ""
 "<function>_CLASS_GTKOBJECT( C++ class, C class, C casting macro, C++ base "
 "class, C base class )</function>"
 msgstr ""
 "<function>_CLASS_GTKOBJECT( C++类, C类, C转换宏, C++基类, C基类 )</function>"
 
-#: C/index-in.docbook:9363
+#: C/index-in.docbook:9316 C/index-in.docbook:9790 C/index-in.docbook:9894
+msgid "For instance, from <filename>button.hg</filename>:"
+msgstr "来自<filename>button.hg</filename>文件中的例子:"
+
+#: C/index-in.docbook:9317
 #, no-wrap
 msgid ""
 "\n"
-"_CLASS_GTKOBJECT(Button, GtkButton, GTK_BUTTON, Gtk::Bin, GtkBin)\n"
+"_CLASS_GTKOBJECT(Button, GtkButton, GTK_BUTTON, Gtk::Widget, GtkWidget)\n"
 msgstr ""
 "\n"
-"_CLASS_GTKOBJECT(Button, GtkButton, GTK_BUTTON, Gtk::Bin, GtkBin)\n"
-
-#: C/index-in.docbook:9362 C/index-in.docbook:9847 C/index-in.docbook:9952
-msgid ""
-"For instance, from <filename>button.hg</filename>: <_:programlisting-1/>"
-msgstr "来自<filename>button.hg</filename>文件中的例子:<_:programlisting-1/>"
+"_CLASS_GTKOBJECT(Button, GtkButton, GTK_BUTTON, Gtk::Widget, GtkWidget)\n"
 
-#: C/index-in.docbook:9367
+#: C/index-in.docbook:9320
 msgid ""
 "You will typically use this macro when the class already derives from "
 "<classname>Gtk::Object</classname>. For instance, you will use it when "
@@ -16207,7 +16176,7 @@ msgstr ""
 "将在封装GTK部件时使用它,因为<classname>Gtk::Widget</classname>派生自"
 "<classname>Gtk::Object</classname>。"
 
-#: C/index-in.docbook:9371
+#: C/index-in.docbook:9324
 msgid ""
 "You might also derive non-widget classes from <classname>Gtk::Object</"
 "classname> so they can be used without <classname>Glib::RefPtr</classname>. "
@@ -16222,11 +16191,11 @@ msgstr ""
 "化。这样你可以自行决定是否对它们使用引用计数。我们认为对部件使用引用计数很有"
 "用。"
 
-#: C/index-in.docbook:9381
+#: C/index-in.docbook:9334
 msgid "_CLASS_BOXEDTYPE"
 msgstr "_CLASS_BOXEDTYPE"
 
-#: C/index-in.docbook:9382
+#: C/index-in.docbook:9335
 msgid ""
 "This macro declares a wrapper for a non-<classname>GObject</classname> "
 "struct, registered with <function>g_boxed_type_register_static()</function>."
@@ -16234,7 +16203,7 @@ msgstr ""
 "这个宏声明了一个非<classname>GObject</classname>结构体类型的包装器,并使用"
 "<function>g_boxed_type_register_static()</function>对该类型进行注册。"
 
-#: C/index-in.docbook:9385
+#: C/index-in.docbook:9338
 msgid ""
 "<function>_CLASS_BOXEDTYPE( C++ class, C class, new function, copy function, "
 "free function )</function>"
@@ -16242,7 +16211,11 @@ msgstr ""
 "<function>_CLASS_BOXEDTYPE( C++类, C类, new函数, copy函数, free函数 )</"
 "function>"
 
-#: C/index-in.docbook:9387
+#: C/index-in.docbook:9339
+msgid "For instance, from <classname>Gdk::RGBA</classname>:"
+msgstr "示例来自<classname>Gdk::RGBA</classname>:"
+
+#: C/index-in.docbook:9340
 #, no-wrap
 msgid ""
 "\n"
@@ -16251,16 +16224,11 @@ msgstr ""
 "\n"
 "_CLASS_BOXEDTYPE(RGBA, GdkRGBA, NONE, gdk_rgba_copy, gdk_rgba_free)\n"
 
-#: C/index-in.docbook:9386
-msgid ""
-"For instance, from <classname>Gdk::RGBA</classname>: <_:programlisting-1/>"
-msgstr "示例来自<classname>Gdk::RGBA</classname>:<_:programlisting-1/>"
-
-#: C/index-in.docbook:9394
+#: C/index-in.docbook:9346
 msgid "_CLASS_BOXEDTYPE_STATIC"
 msgstr "_CLASS_BOXEDTYPE_STATIC"
 
-#: C/index-in.docbook:9395
+#: C/index-in.docbook:9347
 msgid ""
 "This macro declares a wrapper for a simple assignable struct such as "
 "<classname>GdkRectangle</classname>. It is similar to "
@@ -16271,11 +16239,15 @@ msgstr ""
 "一个包装器。它和<function>_CLASS_BOXEDTYPE</function>类似,不过其包装的C结构"
 "体不是动态分配的。"
 
-#: C/index-in.docbook:9399
+#: C/index-in.docbook:9351
 msgid "<function>_CLASS_BOXEDTYPE_STATIC( C++ class, C class )</function>"
 msgstr "<function>_CLASS_BOXEDTYPE_STATIC( C++类, C类 )</function>"
 
-#: C/index-in.docbook:9401
+#: C/index-in.docbook:9352
+msgid "For instance, for <classname>Gdk::Rectangle</classname>:"
+msgstr "示例来自<classname>Gdk::Rectangle</classname>:"
+
+#: C/index-in.docbook:9353
 #, no-wrap
 msgid ""
 "\n"
@@ -16284,17 +16256,11 @@ msgstr ""
 "\n"
 "_CLASS_BOXEDTYPE_STATIC(Rectangle, GdkRectangle)\n"
 
-#: C/index-in.docbook:9400
-msgid ""
-"For instance, for <classname>Gdk::Rectangle</classname>: <_:programlisting-1/"
-">"
-msgstr "示例来自<classname>Gdk::Rectangle</classname>:<_:programlisting-1/>"
-
-#: C/index-in.docbook:9408
+#: C/index-in.docbook:9359
 msgid "_CLASS_OPAQUE_COPYABLE"
 msgstr "_CLASS_OPAQUE_COPYABLE"
 
-#: C/index-in.docbook:9409
+#: C/index-in.docbook:9360
 msgid ""
 "This macro declares a wrapper for an opaque struct that has copy and free "
 "functions. The new, copy and free functions will be used to instantiate the "
@@ -16303,7 +16269,7 @@ msgstr ""
 "这个宏为具有复制和释放函数的不透明结构体声明了一个包装器。新建(new)、复制"
 "(copy)、释放(free)函数将用于实例化默认构造函数、复制构造函数、析构函数。"
 
-#: C/index-in.docbook:9412
+#: C/index-in.docbook:9363
 msgid ""
 "<function>_CLASS_OPAQUE_COPYABLE( C++ class, C class, new function, copy "
 "function, free function )</function>"
@@ -16311,26 +16277,24 @@ msgstr ""
 "<function>_CLASS_OPAQUE_COPYABLE( C++类, C类, new函数, copy函数, free函数 )</"
 "function>"
 
-#: C/index-in.docbook:9414
+#: C/index-in.docbook:9364
+msgid "For instance, from <classname>Glib::VariantType</classname>:"
+msgstr "示例来自<classname>Glib::Checksum</classname>:"
+
+#: C/index-in.docbook:9365
 #, no-wrap
 msgid ""
 "\n"
-"_CLASS_OPAQUE_COPYABLE(Checksum, GChecksum, NONE, g_checksum_copy, g_checksum_free)\n"
+"_CLASS_OPAQUE_COPYABLE(VariantType, GVariantType, NONE, g_variant_type_copy, g_variant_type_free)\n"
 msgstr ""
 "\n"
-"_CLASS_OPAQUE_COPYABLE(Checksum, GChecksum, NONE, g_checksum_copy, g_checksum_free)\n"
-
-#: C/index-in.docbook:9413
-msgid ""
-"For instance, from <classname>Glib::Checksum</classname>: <_:"
-"programlisting-1/>"
-msgstr "示例来自<classname>Glib::Checksum</classname>:<_:programlisting-1/>"
+"_CLASS_OPAQUE_COPYABLE(VariantType, GVariantType, NONE, g_variant_type_copy, g_variant_type_free)\n"
 
-#: C/index-in.docbook:9421
+#: C/index-in.docbook:9371
 msgid "_CLASS_OPAQUE_REFCOUNTED"
 msgstr "_CLASS_OPAQUE_REFCOUNTED"
 
-#: C/index-in.docbook:9422
+#: C/index-in.docbook:9372
 msgid ""
 "This macro declares a wrapper for a reference-counted opaque struct. The C++ "
 "wrapper cannot be directly instantiated and can only be used with "
@@ -16339,7 +16303,7 @@ msgstr ""
 "这个宏为使用引用计数的不透明结构体声明了一个包装器。C++包装器将不能直接实例"
 "化,需要与<classname>Glib::RefPtr</classname>一起使用。"
 
-#: C/index-in.docbook:9425
+#: C/index-in.docbook:9375
 msgid ""
 "<function>_CLASS_OPAQUE_REFCOUNTED( C++ class, C class, new function, ref "
 "function, unref function )</function>"
@@ -16347,62 +16311,58 @@ msgstr ""
 "<function>_CLASS_OPAQUE_REFCOUNTED( C++函数, C函数, new函数, ref函数, unref函"
 "数 )</function>"
 
-#: C/index-in.docbook:9427
+#: C/index-in.docbook:9376
+msgid "For instance, for <classname>Gtk::CssSection</classname>:"
+msgstr "示例来自<classname>Gdk::Rectangle</classname>:"
+
+#: C/index-in.docbook:9377
 #, no-wrap
 msgid ""
 "\n"
-"_CLASS_OPAQUE_REFCOUNTED(Coverage, PangoCoverage, pango_coverage_new, pango_coverage_ref, 
pango_coverage_unref)\n"
+"_CLASS_OPAQUE_REFCOUNTED(CssSection, GtkCssSection, NONE, gtk_css_section_ref, gtk_css_section_unref)\n"
 msgstr ""
 "\n"
-"_CLASS_OPAQUE_REFCOUNTED(Coverage, PangoCoverage, pango_coverage_new, pango_coverage_ref, 
pango_coverage_unref)\n"
+"_CLASS_OPAQUE_REFCOUNTED(CssSection, GtkCssSection, NONE, gtk_css_section_ref, gtk_css_section_unref)\n"
 
-#: C/index-in.docbook:9426
-msgid ""
-"For instance, for <classname>Pango::Coverage</classname>: <_:"
-"programlisting-1/>"
-msgstr "示例来自<classname>Pango::Coverage</classname>:<_:programlisting-1/>"
-
-#: C/index-in.docbook:9434
+#: C/index-in.docbook:9383
 msgid "_CLASS_GENERIC"
 msgstr "_CLASS_GENERIC"
 
-#: C/index-in.docbook:9435
+#: C/index-in.docbook:9384
 msgid ""
 "This macro can be used to wrap structs which don't fit into any specialized "
 "category."
 msgstr "这个宏用于包装任何不属于专用包装宏的结构体。"
 
-#: C/index-in.docbook:9437
+#: C/index-in.docbook:9386
 msgid "<function>_CLASS_GENERIC( C++ class, C class )</function>"
 msgstr "<function>_CLASS_GENERIC( C++类, C类 )</function>"
 
-#: C/index-in.docbook:9439
+#: C/index-in.docbook:9387
+msgid "For instance, for <classname>Gdk::TimeCoord</classname>:"
+msgstr "示例来自<classname>Gdk::Rectangle</classname>:"
+
+#: C/index-in.docbook:9388
 #, no-wrap
 msgid ""
 "\n"
-"_CLASS_GENERIC(AttrIter, PangoAttrIterator)\n"
+"_CLASS_GENERIC(TimeCoord, GdkTimeCoord)\n"
 msgstr ""
 "\n"
-"_CLASS_GENERIC(AttrIter, PangoAttrIterator)\n"
+"_CLASS_GENERIC(TimeCoord, GdkTimeCoord)\n"
 
-#: C/index-in.docbook:9438
-msgid ""
-"For instance, for <classname>Pango::AttrIter</classname>: <_:"
-"programlisting-1/>"
-msgstr "示例来自<classname>Pango::AttrIter</classname>:<_:programlisting-1/>"
-
-#: C/index-in.docbook:9446
+#: C/index-in.docbook:9394
 msgid "_CLASS_INTERFACE"
 msgstr "_CLASS_INTERFACE"
 
-#: C/index-in.docbook:9447
+#: C/index-in.docbook:9395
 msgid ""
 "This macro declares a wrapper for a type that is derived from "
 "<classname>GTypeInterface</classname>."
 msgstr ""
 "这个宏为派生自<classname>GTypeInterface</classname>的类型声明了一个包装器。"
 
-#: C/index-in.docbook:9450
+#: C/index-in.docbook:9398
 msgid ""
 "<function>_CLASS_INTERFACE( C++ class, C class, C casting macro, C interface "
 "struct, Base C++ class (optional), Base C class (optional) )</function>"
@@ -16410,7 +16370,11 @@ msgstr ""
 "<function>_CLASS_INTERFACE( C++类, C类, C转换宏, C接口结构体, C++基类(可选"
 "的), C基类(可选的) )</function>"
 
-#: C/index-in.docbook:9453
+#: C/index-in.docbook:9399
+msgid "For instance, from <filename>celleditable.hg</filename>:"
+msgstr "示例来自与<filename>celleditable.hg</filename>:"
+
+#: C/index-in.docbook:9401
 #, no-wrap
 msgid ""
 "\n"
@@ -16419,13 +16383,21 @@ msgstr ""
 "\n"
 "_CLASS_INTERFACE(CellEditable, GtkCellEditable, GTK_CELL_EDITABLE, GtkCellEditableIface)\n"
 
-#: C/index-in.docbook:9451
+#: C/index-in.docbook:9404
 msgid ""
-"For instance, from <filename>celleditable.hg</filename>: <_:programlisting-1/"
-">"
-msgstr "示例来自与<filename>celleditable.hg</filename>:<_:programlisting-1/>"
+"Two extra optional parameters were once added, for the case that the "
+"interface derives from another interface, which was believed to be the case "
+"when the GInterface has another GInterface as a prerequisite. This is a "
+"misunderstanding, though. When GInterface A has GInterface B as a "
+"prerequisite, it means that every class that implements A shall also "
+"implement B. For instance, from <filename>loadableicon.hg</filename> in "
+"glibmm-2.4:"
+msgstr ""
+"对于接口是从其他接口派生的情况,两个附加参数是可选的,GInterface有另一个"
+"GInterface作为先决条件时属于此情况。示例来自于<filename>loadableicon.hg</"
+"filename>:"
 
-#: C/index-in.docbook:9460
+#: C/index-in.docbook:9410
 #, no-wrap
 msgid ""
 "\n"
@@ -16434,22 +16406,11 @@ msgstr ""
 "\n"
 "_CLASS_INTERFACE(LoadableIcon, GLoadableIcon, G_LOADABLE_ICON, GLoadableIconIface, Icon, GIcon)\n"
 
-#: C/index-in.docbook:9457
-msgid ""
-"Two extra parameters are optional, for the case that the interface derives "
-"from another interface, which should be the case when the GInterface has "
-"another GInterface as a prerequisite. For instance, from "
-"<filename>loadableicon.hg</filename>: <_:programlisting-1/>"
-msgstr ""
-"对于接口是从其他接口派生的情况,两个附加参数是可选的,GInterface有另一个"
-"GInterface作为先决条件时属于此情况。示例来自于<filename>loadableicon.hg</"
-"filename>:<_:programlisting-1/>"
-
-#: C/index-in.docbook:9469
+#: C/index-in.docbook:9418
 msgid "Constructor macros"
 msgstr "构造函数宏"
 
-#: C/index-in.docbook:9470
+#: C/index-in.docbook:9419
 msgid ""
 "The <function>_CTOR_DEFAULT()</function> and <function>_WRAP_CTOR()</"
 "function> macros add constructors, wrapping the specified <function>*_new()</"
@@ -16469,7 +16430,20 @@ msgstr ""
 "数,因为<application>gtkmm</application>必须实例化派生的GType,而"
 "<function>*_new()</function> C函数只是用于给C程序员提供便利。"
 
-#: C/index-in.docbook:9485
+#: C/index-in.docbook:9429
+msgid ""
+"When using <function>_CLASS_GOBJECT()</function>, the constructors should be "
+"protected (rather than public) and each constructor should have a "
+"corresponding <function>_WRAP_CREATE()</function> in the public section. "
+"This prevents the class from being instantiated without using a "
+"<classname>RefPtr</classname>. For instance:"
+msgstr ""
+"在使用<function>_CLASS_GOBJECT()</function>时,其构造函数应该是保护"
+"(protected)的而不是公有(public)。并且每个公有(public)的构造函数都应该有"
+"<function>_WRAP_CREATE()</function>。这样可以防止在不使用<classname>RefPtr</"
+"classname>的情况下直接实例化这个类。例如:"
+
+#: C/index-in.docbook:9434
 #, no-wrap
 msgid ""
 "\n"
@@ -16494,32 +16468,19 @@ msgstr ""
 "public:\n"
 "  _WRAP_CREATE(const Glib::ustring&amp; name, bool left_gravity = true)\n"
 
-#: C/index-in.docbook:9480
-msgid ""
-"When using <function>_CLASS_GOBJECT()</function>, the constructors should be "
-"protected (rather than public) and each constructor should have a "
-"corresponding <function>_WRAP_CREATE()</function> in the public section. "
-"This prevents the class from being instantiated without using a "
-"<classname>RefPtr</classname>. For instance: <_:programlisting-1/>"
-msgstr ""
-"在使用<function>_CLASS_GOBJECT()</function>时,其构造函数应该是保护"
-"(protected)的而不是公有(public)。并且每个公有(public)的构造函数都应该有"
-"<function>_WRAP_CREATE()</function>。这样可以防止在不使用<classname>RefPtr</"
-"classname>的情况下直接实例化这个类。例如:<_:programlisting-1/>"
-
-#: C/index-in.docbook:9499
+#: C/index-in.docbook:9447
 msgid "_CTOR_DEFAULT"
 msgstr "_CTOR_DEFAULT"
 
-#: C/index-in.docbook:9500
+#: C/index-in.docbook:9448
 msgid "This macro creates a default constructor with no arguments."
 msgstr "这个宏创建一个不接受参数的默认构造函数"
 
-#: C/index-in.docbook:9505
+#: C/index-in.docbook:9453
 msgid "_WRAP_CTOR"
 msgstr "_WRAP_CTOR"
 
-#: C/index-in.docbook:9506
+#: C/index-in.docbook:9454
 msgid ""
 "This macro creates a constructor with arguments, equivalent to a "
 "<function>*_new()</function> C function. It won't actually call the "
@@ -16531,11 +16492,11 @@ msgstr ""
 "但是他不会调用<function>*_new()</function>函数,只会创建有相同参数类型的构造"
 "函数。它需要一个C++构造函数签名和一个C函数名。"
 
-#: C/index-in.docbook:9516 C/index-in.docbook:10020
+#: C/index-in.docbook:9464 C/index-in.docbook:9960
 msgid "errthrow"
 msgstr "errthrow"
 
-#: C/index-in.docbook:9518
+#: C/index-in.docbook:9466
 msgid ""
 "This tells <command>gmmproc</command> that the C <function>*_new()</"
 "function> has a final <type>GError**</type> parameter which should be "
@@ -16544,30 +16505,15 @@ msgstr ""
 "这告诉<command>gmmproc</command>,<function>*_new()</function>的最后一个 "
 "<type>GError**</type>是否应该被忽略。"
 
-#: C/index-in.docbook:9513
+#: C/index-in.docbook:9461
 msgid "It also takes an optional extra argument: <_:variablelist-1/>"
 msgstr "他还有需要额外的可选参数:<_:variablelist-1/>"
 
-#: C/index-in.docbook:9527
-msgid "Hand-coding constructors"
-msgstr "手工编码构造函数"
-
-#: C/index-in.docbook:9536
-#, no-wrap
-msgid ""
-"\n"
-"Button::Button(const Glib::ustring&amp; label, bool mnemonic)\n"
-":\n"
-"  _CONSTRUCT(\"label\", label.c_str(), \"use_underline\", gboolean(mnemonic))\n"
-"{}\n"
-msgstr ""
-"\n"
-"Button::Button(const Glib::ustring&amp; label, bool mnemonic)\n"
-":\n"
-"  _CONSTRUCT(\"label\", label.c_str(), \"use_underline\", gboolean(mnemonic))\n"
-"{}\n"
+#: C/index-in.docbook:9475
+msgid "Hand-coding constructors"
+msgstr "手工编码构造函数"
 
-#: C/index-in.docbook:9528
+#: C/index-in.docbook:9476
 msgid ""
 "When a constructor must be partly hand written because, for instance, the "
 "<function>*_new()</function> C function's parameters do not correspond "
@@ -16576,20 +16522,35 @@ msgid ""
 "<function>_CONSTRUCT()</function> macro may be used in the .ccg file to save "
 "some work. The <function>_CONSTRUCT</function> macro takes a series of "
 "property names and values. For instance, from <filename>button.ccg</"
-"filename>: <_:programlisting-1/>"
+"filename>:"
 msgstr ""
 "有时因为<function>*_new()</function> C函数的参数不与对象属性直接对应,或是"
 "<function>*_new()</function> C函数不只是简单的调用<function>g_object_new()</"
 "function>,你将必须手写一部分构造函数。在此时你可以在》ccg文件中使用"
 "<function>_CONSTRUCT()</function>宏来保存一些工作。<function>_CONSTRUCT</"
 "function>宏接受一系列属性名与值作为参数。示例来自<filename>button.ccg</"
-"filename>:<_:programlisting-1/>"
+"filename>:"
+
+#: C/index-in.docbook:9484
+#, no-wrap
+msgid ""
+"\n"
+"Button::Button(const Glib::ustring&amp; label, bool mnemonic)\n"
+":\n"
+"  _CONSTRUCT(\"label\", label.c_str(), \"use_underline\", gboolean(mnemonic))\n"
+"{}\n"
+msgstr ""
+"\n"
+"Button::Button(const Glib::ustring&amp; label, bool mnemonic)\n"
+":\n"
+"  _CONSTRUCT(\"label\", label.c_str(), \"use_underline\", gboolean(mnemonic))\n"
+"{}\n"
 
-#: C/index-in.docbook:9548
+#: C/index-in.docbook:9495
 msgid "Macros that suppress generation of some code"
 msgstr "抑制某些代码生成的宏"
 
-#: C/index-in.docbook:9549
+#: C/index-in.docbook:9496
 msgid ""
 "Some macros suppress the generation of some code when they are used after a "
 "<function>_CLASS_*</function> macro. Some suppress the definition in the "
@@ -16600,11 +16561,11 @@ msgstr ""
 "成。一些抑制在.cc文件中生成定义,另一些抑制在.h文件中生成的声明和.cc文件中生"
 "成的定义。"
 
-#: C/index-in.docbook:9556
+#: C/index-in.docbook:9503
 msgid "_CUSTOM_DEFAULT_CTOR"
 msgstr "_CUSTOM_DEFAULT_CTOR"
 
-#: C/index-in.docbook:9557
+#: C/index-in.docbook:9504
 msgid ""
 "Suppresses declaration and definition of default constructor in "
 "<function>_CLASS_BOXEDTYPE</function>, <function>_CLASS_BOXEDTYPE_STATIC</"
@@ -16614,11 +16575,11 @@ msgstr ""
 "<function>_CLASS_BOXEDTYPE_STATIC</function>、"
 "<function>_CLASS_OPAQUE_COPYABLE</function>生成默认构造函数的声明和定义。"
 
-#: C/index-in.docbook:9564
+#: C/index-in.docbook:9511
 msgid "_CUSTOM_CTOR_CAST"
 msgstr "_CUSTOM_CTOR_CAST"
 
-#: C/index-in.docbook:9565
+#: C/index-in.docbook:9512
 msgid ""
 "Suppresses declaration and definition of the constructor that takes a "
 "pointer to the wrapped C object in <function>_CLASS_BOXEDTYPE</function> and "
@@ -16628,7 +16589,7 @@ msgstr ""
 "<function>_CLASS_BOXEDTYPE_STATIC</function>生成接受指向其所包装的C类型的指针"
 "的构造函数的声明和定义。"
 
-#: C/index-in.docbook:9569
+#: C/index-in.docbook:9516
 msgid ""
 "Suppresses definition of the constructor that takes a pointer to the wrapped "
 "C object in <function>_CLASS_INTERFACE</function> and "
@@ -16637,7 +16598,7 @@ msgstr ""
 "抑制<function>_CLASS_INTERFACE</function>和<function>_CLASS_OPAQUE_COPYABLE</"
 "function>生成接受指向其所包装的C类型的指针的构造函数的定义。"
 
-#: C/index-in.docbook:9573
+#: C/index-in.docbook:9520
 msgid ""
 "Suppresses definition of the constructor that takes a pointer to the wrapped "
 "C object and the constructor that takes construct_params in "
@@ -16648,11 +16609,11 @@ msgstr ""
 "function>生成接受指向其所包装的C类型的指针且接受其他构造参数的构造函数的定"
 "义。"
 
-#: C/index-in.docbook:9580
+#: C/index-in.docbook:9527
 msgid "_CUSTOM_DTOR"
 msgstr "_CUSTOM_DTOR"
 
-#: C/index-in.docbook:9581
+#: C/index-in.docbook:9528
 msgid ""
 "Suppresses definition of destructor in <function>_CLASS_GOBJECT</function> "
 "and <function>_CLASS_GTKOBJECT</function>."
@@ -16660,11 +16621,11 @@ msgstr ""
 "抑制<function>_CLASS_GOBJECT</function>和<function>_CLASS_GTKOBJECT</"
 "function>生成析构函数的定义"
 
-#: C/index-in.docbook:9587
+#: C/index-in.docbook:9534
 msgid "_CUSTOM_MOVE_OPERATIONS"
 msgstr "_CUSTOM_MOVE_OPERATIONS"
 
-#: C/index-in.docbook:9588
+#: C/index-in.docbook:9535
 msgid ""
 "Suppresses declaration and definition of move constructor and move "
 "assignment operator in <function>_CLASS_GOBJECT</function> and "
@@ -16673,7 +16634,11 @@ msgstr ""
 "抑制<function>_CLASS_GOBJECT</function><function>_CLASS_GTKOBJECT</function>"
 "生成移动构造函数和移动赋值运算符的声明和定义。"
 
-#: C/index-in.docbook:9593
+#: C/index-in.docbook:9539
+msgid "For example:"
+msgstr "例如:"
+
+#: C/index-in.docbook:9540
 #, no-wrap
 msgid ""
 "\n"
@@ -16702,15 +16667,11 @@ msgstr ""
 "  // ...\n"
 "};\n"
 
-#: C/index-in.docbook:9592
-msgid "For example: <_:programlisting-1/>"
-msgstr "例如:<_:programlisting-1/>"
-
-#: C/index-in.docbook:9610
+#: C/index-in.docbook:9556
 msgid "_CUSTOM_WRAP_NEW"
 msgstr "_CUSTOM_WRAP_NEW"
 
-#: C/index-in.docbook:9611
+#: C/index-in.docbook:9557
 msgid ""
 "Suppresses definition of <function>Glib::wrap_new()</function> function in "
 "<function>_CLASS_GOBJECT</function>."
@@ -16718,11 +16679,11 @@ msgstr ""
 "抑制<function>_CLASS_GOBJECT</function>生成<function>Glib::wrap_new()</"
 "function>的定义。"
 
-#: C/index-in.docbook:9617
+#: C/index-in.docbook:9563
 msgid "_CUSTOM_WRAP_FUNCTION"
 msgstr "_CUSTOM_WRAP_FUNCTION"
 
-#: C/index-in.docbook:9618
+#: C/index-in.docbook:9564
 msgid ""
 "Suppresses definition of <function>Glib::wrap()</function> function in "
 "<function>_CLASS_GOBJECT</function> and <function>_CLASS_GTKOBJECT</"
@@ -16731,11 +16692,11 @@ msgstr ""
 "抑制<function>_CLASS_GOBJECT</function>和<function>_CLASS_GTKOBJECT</"
 "function>生成<function>Glib::wrap()</function>函数的定义。"
 
-#: C/index-in.docbook:9624
+#: C/index-in.docbook:9570
 msgid "_NO_WRAP_FUNCTION"
 msgstr "_NO_WRAP_FUNCTION"
 
-#: C/index-in.docbook:9625
+#: C/index-in.docbook:9571
 msgid ""
 "Suppresses declaration and definition of <function>Glib::wrap()</function> "
 "function in <function>_CLASS_GOBJECT</function>, <function>_CLASS_BOXEDTYPE</"
@@ -16749,24 +16710,28 @@ msgstr ""
 "function>和<function>_CLASS_GTKOBJECT</function>生成<function>Glib::wrap()</"
 "function>函数的声明和定义。"
 
-#: C/index-in.docbook:9635
+#: C/index-in.docbook:9581
 msgid "Method macros"
 msgstr "方法宏"
 
-#: C/index-in.docbook:9638
+#: C/index-in.docbook:9584
 msgid "_WRAP_METHOD"
 msgstr "_WRAP_METHOD"
 
-#: C/index-in.docbook:9639
+#: C/index-in.docbook:9585
 msgid "This macro generates the C++ method to wrap a C function."
 msgstr "这个宏用于生成封装C函数的C++方法。"
 
-#: C/index-in.docbook:9640
+#: C/index-in.docbook:9586
 msgid ""
 "<function>_WRAP_METHOD( C++ method signature, C function name)</function>"
 msgstr "<function>_WRAP_METHOD( C++方法签名, C函数名)</function>"
 
-#: C/index-in.docbook:9642
+#: C/index-in.docbook:9587
+msgid "For instance, from <filename>entry.hg</filename>:"
+msgstr "示例来自于<filename>entry.hg</filename>:"
+
+#: C/index-in.docbook:9588
 #, no-wrap
 msgid ""
 "\n"
@@ -16775,11 +16740,7 @@ msgstr ""
 "\n"
 "_WRAP_METHOD(void set_text(const Glib::ustring&amp; text), gtk_entry_set_text)\n"
 
-#: C/index-in.docbook:9641
-msgid "For instance, from <filename>entry.hg</filename>: <_:programlisting-1/>"
-msgstr "示例来自于<filename>entry.hg</filename>:<_:programlisting-1/>"
-
-#: C/index-in.docbook:9646
+#: C/index-in.docbook:9591
 msgid ""
 "The C function (e.g. <function>gtk_entry_set_text</function>) is described "
 "more fully in the .defs file, and the <filename>convert*.m4</filename> files "
@@ -16792,22 +16753,22 @@ msgstr ""
 "含了从C++参数类型到C参数类型的必要转换。这个宏还基于<filename>*_docs.xml</"
 "filename>和<filename>*_docs_override.xml</filename>文件生成doxygen文档注释。"
 
-#: C/index-in.docbook:9655 C/index-in.docbook:9885 C/index-in.docbook:9995
+#: C/index-in.docbook:9600 C/index-in.docbook:9827 C/index-in.docbook:9935
 msgid "refreturn"
 msgstr "refreturn"
 
-#: C/index-in.docbook:9657
+#: C/index-in.docbook:9602
 msgid ""
 "Do an extra <function>reference()</function> on the return value, in case "
 "the C function does not provide a reference."
 msgstr ""
 "在C函数不提供引用时,对其返回值额外调用一次<function>reference()</function>。"
 
-#: C/index-in.docbook:9662 C/index-in.docbook:9785
+#: C/index-in.docbook:9607 C/index-in.docbook:9729
 msgid "errthrow [\"&lt;exceptions&gt;\"]"
 msgstr "errthrow [\"&lt;exceptions&gt;\"]"
 
-#: C/index-in.docbook:9664
+#: C/index-in.docbook:9609
 msgid ""
 "Use the last GError** parameter of the C function to throw an exception. The "
 "optional \"&lt;exceptions&gt;\" is a comma-separated list of exceptions that "
@@ -16823,56 +16784,56 @@ msgstr ""
 "号,请使用反斜杠对其进行转义。例如:<code>errthrow \"Glib::OptionError Hello"
 "\\, world, Glib::ConvertError\"</code>"
 
-#: C/index-in.docbook:9675 C/index-in.docbook:9893 C/index-in.docbook:9960
-#: C/index-in.docbook:10206
+#: C/index-in.docbook:9620 C/index-in.docbook:9835 C/index-in.docbook:9901
+#: C/index-in.docbook:10140
 msgid "deprecated [\"&lt;text&gt;\"]"
 msgstr "deprecated [\"&lt;text&gt;\"]"
 
-#: C/index-in.docbook:9677 C/index-in.docbook:9895 C/index-in.docbook:9962
-#: C/index-in.docbook:10208
+#: C/index-in.docbook:9622 C/index-in.docbook:9837 C/index-in.docbook:9903
+#: C/index-in.docbook:10142
 msgid ""
 "Puts the generated code in #ifdef blocks. Text about the deprecation can be "
 "specified as an optional parameter."
 msgstr ""
 "将生成的代码放入#ifdef块中。text是可选参数,用于提供与弃用有关的文本信息。"
 
-#: C/index-in.docbook:9683
+#: C/index-in.docbook:9628
 msgid "constversion"
 msgstr "constversion"
 
-#: C/index-in.docbook:9685
+#: C/index-in.docbook:9630
 msgid ""
 "Just call the non-const version of the same function, instead of generating "
 "almost duplicate code."
 msgstr "直接调用同一个函数的非const版本,而不是生成几乎相同的代码。"
 
-#: C/index-in.docbook:9690 C/index-in.docbook:9798 C/index-in.docbook:9900
-#: C/index-in.docbook:9967 C/index-in.docbook:10213
+#: C/index-in.docbook:9635 C/index-in.docbook:9742 C/index-in.docbook:9842
+#: C/index-in.docbook:9908 C/index-in.docbook:10147
 msgid "newin \"&lt;version&gt;\""
 msgstr "newin \"&lt;version&gt;\""
 
-#: C/index-in.docbook:9692 C/index-in.docbook:9800 C/index-in.docbook:9902
-#: C/index-in.docbook:9969 C/index-in.docbook:10215
+#: C/index-in.docbook:9637 C/index-in.docbook:9744 C/index-in.docbook:9844
+#: C/index-in.docbook:9910 C/index-in.docbook:10149
 msgid ""
 "Adds a @newin Doxygen command to the documentation, or replaces the @newin "
 "command generated from the C documentation."
 msgstr "在文档中添加@newin Doxygen命令,或替换从C文档中生成的@newin命令。"
 
-#: C/index-in.docbook:9697 C/index-in.docbook:9907 C/index-in.docbook:10042
-#: C/index-in.docbook:10129
+#: C/index-in.docbook:9642 C/index-in.docbook:9849 C/index-in.docbook:9982
+#: C/index-in.docbook:10068
 msgid "ifdef &lt;identifier&gt;"
 msgstr "ifdef &lt;identifier&gt;"
 
-#: C/index-in.docbook:9699 C/index-in.docbook:9909 C/index-in.docbook:10044
-#: C/index-in.docbook:10131
+#: C/index-in.docbook:9644 C/index-in.docbook:9851 C/index-in.docbook:9984
+#: C/index-in.docbook:10070
 msgid "Puts the generated code in #ifdef blocks."
 msgstr "将生成的代码放入ifdef &lt;identifier&gt;块中。"
 
-#: C/index-in.docbook:9703 C/index-in.docbook:10048
+#: C/index-in.docbook:9648 C/index-in.docbook:9988
 msgid "slot_name &lt;parameter_name&gt;"
 msgstr "slot_name &lt;parameter_name&gt;"
 
-#: C/index-in.docbook:9705 C/index-in.docbook:10050
+#: C/index-in.docbook:9650 C/index-in.docbook:9990
 msgid ""
 "Specifies the name of the slot parameter of the method, if it has one. This "
 "enables <command>gmmproc</command> to generate code to copy the slot and "
@@ -16886,11 +16847,11 @@ msgstr ""
 "literal>参数的代码。<literal>slot_callback</literal>参数需要使用此选项指定的"
 "名称。"
 
-#: C/index-in.docbook:9715 C/index-in.docbook:10060
+#: C/index-in.docbook:9660 C/index-in.docbook:10000
 msgid "slot_callback &lt;function_name&gt;"
 msgstr "slot_callback &lt;function_name&gt;"
 
-#: C/index-in.docbook:9717 C/index-in.docbook:10062
+#: C/index-in.docbook:9662 C/index-in.docbook:10002
 msgid ""
 "Used in conjunction with the <literal>slot_name</literal> option to specify "
 "the name of the glue callback function that handles extracting the slot and "
@@ -16901,11 +16862,11 @@ msgstr ""
 "指定的胶水回调函数处理提取槽然后调用它。这个回调函数的函数指针也将被传递给封"
 "装此C函数的方法。"
 
-#: C/index-in.docbook:9725 C/index-in.docbook:10070
+#: C/index-in.docbook:9670 C/index-in.docbook:10010
 msgid "no_slot_copy"
 msgstr "no_slot_copy"
 
-#: C/index-in.docbook:9727 C/index-in.docbook:10072
+#: C/index-in.docbook:9672 C/index-in.docbook:10012
 msgid ""
 "Tells <command>gmmproc</command> not to pass a copy of the slot to the C "
 "function, if the method has one. Instead the slot itself is passed. The slot "
@@ -16917,12 +16878,12 @@ msgstr ""
 "直接传递槽本身。槽的参数名和胶水回调函数必须分别使用<literal>slot_name</"
 "literal>和<literal>slot_callback</literal>选项指定。"
 
-#: C/index-in.docbook:9652 C/index-in.docbook:9782 C/index-in.docbook:9855
-#: C/index-in.docbook:9957 C/index-in.docbook:9992 C/index-in.docbook:10147
+#: C/index-in.docbook:9597 C/index-in.docbook:9726 C/index-in.docbook:9797
+#: C/index-in.docbook:9898 C/index-in.docbook:9932 C/index-in.docbook:10085
 msgid "There are some optional extra arguments: <_:variablelist-1/>"
 msgstr "有一些可选的额外参数:<_:variablelist-1/>"
 
-#: C/index-in.docbook:9740
+#: C/index-in.docbook:9685
 msgid ""
 "Objects used via <classname>RefPtr</classname>: Pass the <classname>RefPtr</"
 "classname> as a const reference. For instance, <code>const Glib::RefPtr&lt;"
@@ -16932,7 +16893,7 @@ msgstr ""
 "classname>的const引用。例如:<code>const Glib::RefPtr&lt;Gtk::FileFilter&gt;"
 "&amp; filter</code>。"
 
-#: C/index-in.docbook:9744
+#: C/index-in.docbook:9689
 msgid ""
 "Const Objects used via <classname>RefPtr</classname>: If the object should "
 "not be changed by the function, then make sure that the object is const, "
@@ -16944,7 +16905,7 @@ msgstr ""
 "的。例如:<code>const Glib::RefPtr&lt;const Gtk::FileFilter&gt;&amp; filter</"
 "code>。"
 
-#: C/index-in.docbook:9749
+#: C/index-in.docbook:9694
 msgid ""
 "Wrapping <classname>GList*</classname> and <classname>GSList*</classname> "
 "parameters: First, you need to discover what objects are contained in the "
@@ -16960,12 +16921,12 @@ msgstr ""
 "Glib::RefPtr&lt;Gdk::Pixbuf&gt;&gt;</code>。你可能需要定义一个Traits类型来指"
 "示C类型和C++类型如何相互转换。"
 
-#: C/index-in.docbook:9765
+#: C/index-in.docbook:9710
 #, no-wrap
 msgid "#m4 
_CONVERSION(`GSList*',`std::vector&lt;Widget*&gt;',`Glib::SListHandler&lt;Widget*&gt;::slist_to_vector($3, 
Glib::OWNERSHIP_SHALLOW)')"
 msgstr "#m4 
_CONVERSION(`GSList*',`std::vector&lt;Widget*&gt;',`Glib::SListHandler&lt;Widget*&gt;::slist_to_vector($3, 
Glib::OWNERSHIP_SHALLOW)')"
 
-#: C/index-in.docbook:9757
+#: C/index-in.docbook:9702
 msgid ""
 "Wrapping <classname>GList*</classname> and <classname>GSList*</classname> "
 "return types: You must discover whether the caller should free the list and "
@@ -16981,7 +16942,7 @@ msgstr ""
 "将其直接放在.hg文件中,因为所有权取决于函数本身而不是其类型。例如:<_:"
 "programlisting-1/>"
 
-#: C/index-in.docbook:9736
+#: C/index-in.docbook:9681
 msgid ""
 "Selecting which C++ types should be used is also important when wrapping C "
 "API. Though it's usually obvious what C++ types should be used in the C++ "
@@ -16990,11 +16951,11 @@ msgstr ""
 "封装C API时,选择对应的C++类型也很重要。尽管多数时候应该在C++方法中使用什么C+"
 "+类型是很明显的,但我们还是想给你一些提示:<_:itemizedlist-1/>"
 
-#: C/index-in.docbook:9771
+#: C/index-in.docbook:9716
 msgid "_WRAP_METHOD_DOCS_ONLY"
 msgstr "_WRAP_METHOD_DOCS_ONLY"
 
-#: C/index-in.docbook:9772
+#: C/index-in.docbook:9717
 msgid ""
 "This macro is like <function>_WRAP_METHOD()</function>, but it generates "
 "only the documentation for a C++ method that wraps a C function. Use this "
@@ -17004,25 +16965,24 @@ msgstr ""
 "这个宏类似于<function>_WRAP_METHOD()</function>,但是它只生成封装C函数的C++方"
 "法的文档。当你需要手动编写该方法又不想手动编写文档时,请使用这个宏。"
 
-#: C/index-in.docbook:9776
+#: C/index-in.docbook:9721
 msgid "<function>_WRAP_METHOD_DOCS_ONLY(C function name)</function>"
 msgstr "<function>_WRAP_METHOD_DOCS_ONLY(C function name)</function>"
 
-#: C/index-in.docbook:9778
+#: C/index-in.docbook:9722
+msgid "For instance, from <filename>recentinfo.hg</filename>:"
+msgstr "示例来自于<filename>container.hg</filename>:"
+
+#: C/index-in.docbook:9723
 #, no-wrap
 msgid ""
 "\n"
-"_WRAP_METHOD_DOCS_ONLY(gtk_container_add)\n"
+"_WRAP_METHOD_DOCS_ONLY(gtk_recent_info_get_applications)\n"
 msgstr ""
 "\n"
-"_WRAP_METHOD_DOCS_ONLY(gtk_container_add)\n"
-
-#: C/index-in.docbook:9777
-msgid ""
-"For instance, from <filename>container.hg</filename>: <_:programlisting-1/>"
-msgstr "示例来自于<filename>container.hg</filename>:<_:programlisting-1/>"
+"_WRAP_METHOD_DOCS_ONLY(gtk_recent_info_get_applications)\n"
 
-#: C/index-in.docbook:9787
+#: C/index-in.docbook:9731
 msgid ""
 "Excludes documentation of the last GError** parameter of the C function. The "
 "optional \"&lt;exceptions&gt;\" is a comma-separated list of exceptions that "
@@ -17038,11 +16998,11 @@ msgstr ""
 "需要在异常描述中使用逗号,请使用反斜杠对其进行转义。例如:<code>errthrow "
 "\"Glib::OptionError Hello\\, world, Glib::ConvertError\"</code>"
 
-#: C/index-in.docbook:9805
+#: C/index-in.docbook:9749
 msgid "voidreturn"
 msgstr "voidreturn"
 
-#: C/index-in.docbook:9807
+#: C/index-in.docbook:9751
 msgid ""
 "Don't include a @return Doxygen command in the documentation. Useful if the "
 "wrapped C function returns a value, but the corresponding C++ method returns "
@@ -17051,11 +17011,11 @@ msgstr ""
 "不要再文档中包含@return Doxygen命令。如果被封装的C函数有返回而封装它的C++方法"
 "返回<type>void</type>,这将很有用。"
 
-#: C/index-in.docbook:9817
+#: C/index-in.docbook:9761
 msgid "_IGNORE, _IGNORE_SIGNAL, _IGNORE_PROPERTY"
 msgstr "_IGNORE, _IGNORE_SIGNAL, _IGNORE_PROPERTY"
 
-#: C/index-in.docbook:9818
+#: C/index-in.docbook:9762
 msgid ""
 "<command>gmmproc</command> will warn you on stdout about functions, signals, "
 "properties and child properties that you have forgotten to wrap, helping to "
@@ -17070,7 +17030,7 @@ msgstr ""
 "_IGNORE_SIGNAL()、_IGNORE_PROPERTY()宏使<command>gmmproc</command>停止发出部"
 "分警告。"
 
-#: C/index-in.docbook:9826
+#: C/index-in.docbook:9770
 #, no-wrap
 msgid ""
 "<function>_IGNORE(C function name 1, C function name 2, etc)\n"
@@ -17081,7 +17041,11 @@ msgstr ""
 "_IGNORE_SIGNAL(C属性名1, C属性名2, ...)\n"
 "_IGNORE_PROPERTY(C属性名1, C属性名2, ...)</function>"
 
-#: C/index-in.docbook:9831
+#: C/index-in.docbook:9774
+msgid "For instance, from <filename>flowbox.hg</filename>:"
+msgstr "示例来自<filename>flowbox.hg</filename>:"
+
+#: C/index-in.docbook:9775
 #, no-wrap
 msgid ""
 "\n"
@@ -17092,16 +17056,11 @@ msgstr ""
 "_IGNORE(gtk_flow_box_set_filter_func, gtk_flow_box_set_sort_func)\n"
 "_IGNORE_SIGNAL(activate-cursor-child, toggle-cursor-child, move-cursor)\n"
 
-#: C/index-in.docbook:9830
-msgid ""
-"For instance, from <filename>flowbox.hg</filename>: <_:programlisting-1/>"
-msgstr "示例来自<filename>flowbox.hg</filename>:<_:programlisting-1/>"
-
-#: C/index-in.docbook:9839
+#: C/index-in.docbook:9782
 msgid "_WRAP_SIGNAL"
 msgstr "_WRAP_SIGNAL"
 
-#: C/index-in.docbook:9840
+#: C/index-in.docbook:9783
 msgid ""
 "This macro generates the C++ libsigc++-style signal to wrap a C GObject "
 "signal. It actually generates a public accessor method, such as "
@@ -17114,13 +17073,13 @@ msgstr ""
 "象。<command>gmmproc</command>使用.defs文件寻找C参数类型并使用.m4转换文件查找"
 "如何将其转换为适当的类型。"
 
-#: C/index-in.docbook:9846
+#: C/index-in.docbook:9789
 msgid ""
 "<function>_WRAP_SIGNAL( C++ signal handler signature, C signal name)</"
 "function>"
 msgstr "<function>_WRAP_SIGNAL( C++信号处理函数签名, C信号名)</function>"
 
-#: C/index-in.docbook:9848
+#: C/index-in.docbook:9791
 #, no-wrap
 msgid ""
 "\n"
@@ -17129,7 +17088,7 @@ msgstr ""
 "\n"
 "_WRAP_SIGNAL(void clicked(),\"clicked\")\n"
 
-#: C/index-in.docbook:9852
+#: C/index-in.docbook:9794
 msgid ""
 "Signals usually have function pointers in the GTK struct, with a "
 "corresponding enum value and a <function>g_signal_new()</function> in the .c "
@@ -17138,11 +17097,11 @@ msgstr ""
 "信号通常在GTK结构体中具有函数指针,在.c文件中有对应的枚举值和"
 "<function>g_signal_new()</function>函数。"
 
-#: C/index-in.docbook:9858
+#: C/index-in.docbook:9800
 msgid "no_default_handler"
 msgstr "no_default_handler"
 
-#: C/index-in.docbook:9860
+#: C/index-in.docbook:9802
 msgid ""
 "Do not generate an <function>on_something()</function> virtual method to "
 "allow easy overriding of the default signal handler. Use this when adding a "
@@ -17154,11 +17113,11 @@ msgstr ""
 "处理函数。可以在添加一个具有默认信号处理函数的信号会使虚函数表尺寸变大以至于"
 "破坏ABI的时候,或是在需要添加一个非公共C默认处理函数的时候,使用此可选参数。"
 
-#: C/index-in.docbook:9869
+#: C/index-in.docbook:9811
 msgid "custom_default_handler"
 msgstr "custom_default_handler"
 
-#: C/index-in.docbook:9871
+#: C/index-in.docbook:9813
 msgid ""
 "Generate a declaration of the <function>on_something()</function> virtual "
 "method in the <filename>.h</filename> file, but do not generate a definition "
@@ -17169,18 +17128,18 @@ msgstr ""
 "函数的声明,但不在<filename>.cc</filename>文件中生成该函数的定义。请在你需要"
 "手动编写函数定义的时候使用此可选参数。"
 
-#: C/index-in.docbook:9878
+#: C/index-in.docbook:9820
 msgid "custom_c_callback"
 msgstr "custom_c_callback"
 
-#: C/index-in.docbook:9880
+#: C/index-in.docbook:9822
 msgid ""
 "Do not generate a C callback function for the signal. Use this when you must "
 "generate the callback function by hand."
 msgstr ""
 "不要为信号生成C回调函数。请在你需要手动编写回调函数的时候使用此可选参数。"
 
-#: C/index-in.docbook:9887
+#: C/index-in.docbook:9829
 msgid ""
 "Do an extra <function>reference()</function> on the return value of the "
 "<function>on_something()</function> virtual method, in case the C function "
@@ -17189,11 +17148,11 @@ msgstr ""
 "当C函数没有提供引用的时候,在<function>on_something()</function>虚成员函数的"
 "返回值上额外调用一次<function>reference()</function>。"
 
-#: C/index-in.docbook:9913 C/index-in.docbook:10096
+#: C/index-in.docbook:9855 C/index-in.docbook:10036
 msgid "exception_handler &lt;method_name&gt;"
 msgstr "exception_handler &lt;method_name&gt;"
 
-#: C/index-in.docbook:9915 C/index-in.docbook:10098
+#: C/index-in.docbook:9857 C/index-in.docbook:10038
 msgid ""
 "Allows to use custom exception handler instead of default one. Exception "
 "might be rethrown by user-defined handler, and it will be caught by default "
@@ -17202,11 +17161,11 @@ msgstr ""
 "允许使用自定义异常处理函数而不是使用默认异常处理函数。如果异常被用户自定义的"
 "处理函数程序抛出,则该异常将被默认异常处理函数捕获。"
 
-#: C/index-in.docbook:9921
+#: C/index-in.docbook:9863
 msgid "detail_name &lt;parameter_name&gt;"
 msgstr "detail_name &lt;parameter_name&gt;"
 
-#: C/index-in.docbook:9923
+#: C/index-in.docbook:9865
 msgid ""
 "Adds a <type>const Glib::ustring&amp;</type> parameter to the "
 "<methodname>signal_something()</methodname> method. Use it, if the signal "
@@ -17218,11 +17177,11 @@ msgstr ""
 "了<literal>G_SIGNAL_DETAILED</literal>标志注册这个信号,则使用该参数作为详细"
 "信号名。"
 
-#: C/index-in.docbook:9930
+#: C/index-in.docbook:9872
 msgid "two_signal_methods"
 msgstr "two_signal_methods"
 
-#: C/index-in.docbook:9932
+#: C/index-in.docbook:9874
 msgid ""
 "Used in conjunction with the <literal>detail_name</literal> option to "
 "generate two <methodname>signal_something()</methodname> methods, one "
@@ -17237,11 +17196,11 @@ msgstr ""
 "literal>选项,则只生成一个成员函数,此成员函数将接受一个参数且此参数有默认"
 "值。请再需要保持ABI不变的情况下使用此选项。"
 
-#: C/index-in.docbook:9946
+#: C/index-in.docbook:9888
 msgid "_WRAP_PROPERTY"
 msgstr "_WRAP_PROPERTY"
 
-#: C/index-in.docbook:9947
+#: C/index-in.docbook:9889
 msgid ""
 "This macro generates the C++ method to wrap a C GObject property. You must "
 "specify the property name and the wanted C++ type for the property. "
@@ -17252,11 +17211,11 @@ msgstr ""
 "需的C++类型。<command>gmmproc</command>使用.defs文件寻找C参数类型并使用.m4转"
 "换文件查找如何将其转换为适当的类型。"
 
-#: C/index-in.docbook:9951
+#: C/index-in.docbook:9893
 msgid "<function>_WRAP_PROPERTY(C property name, C++ type)</function>"
 msgstr "<function>_WRAP_PROPERTY(C属性名, C++类型)</function>"
 
-#: C/index-in.docbook:9953
+#: C/index-in.docbook:9895
 #, no-wrap
 msgid ""
 "\n"
@@ -17265,20 +17224,24 @@ msgstr ""
 "\n"
 "_WRAP_PROPERTY(\"label\", Glib::ustring)\n"
 
-#: C/index-in.docbook:9978
+#: C/index-in.docbook:9919
 msgid "_WRAP_VFUNC"
 msgstr "_WRAP_VFUNC"
 
-#: C/index-in.docbook:9979
+#: C/index-in.docbook:9920
 msgid "This macro generates the C++ method to wrap a virtual C function."
 msgstr "这个宏生成用于封装C虚函数的C++成员函数。"
 
-#: C/index-in.docbook:9980
+#: C/index-in.docbook:9921
 msgid ""
 "<function>_WRAP_VFUNC( C++ method signature, C function name)</function>"
 msgstr "<function>_WRAP_VFUNC( C++成员函数签名, C函数名)</function>"
 
-#: C/index-in.docbook:9982
+#: C/index-in.docbook:9922
+msgid "For instance, from <filename>widget.hg</filename>:"
+msgstr "示例来自于<filename>widget.hg</filename>:"
+
+#: C/index-in.docbook:9923
 #, no-wrap
 msgid ""
 "\n"
@@ -17287,12 +17250,7 @@ msgstr ""
 "\n"
 "_WRAP_VFUNC(SizeRequestMode get_request_mode() const, get_request_mode)\n"
 
-#: C/index-in.docbook:9981
-msgid ""
-"For instance, from <filename>widget.hg</filename>: <_:programlisting-1/>"
-msgstr "示例来自于<filename>widget.hg</filename>:<_:programlisting-1/>"
-
-#: C/index-in.docbook:9986
+#: C/index-in.docbook:9926
 msgid ""
 "The C function (e.g. <function>get_request_mode</function>) is described "
 "more fully in the <filename>*_vfuncs.defs</filename> file, and the "
@@ -17306,7 +17264,7 @@ msgstr ""
 "换。转换也可以写入.hg文件。虚函数通常需要额外的转换,这些转换最好保存在使用这"
 "些虚函数的.hg文件文件中。"
 
-#: C/index-in.docbook:9997
+#: C/index-in.docbook:9937
 msgid ""
 "Do an extra <function>reference()</function> on the return value of the "
 "<function>something_vfunc()</function> function, in case the virtual C "
@@ -17315,11 +17273,11 @@ msgstr ""
 "当C虚函数没有提供引用的时候,在<function>something_vfunc()</function>函数的返"
 "回值上额外调用一次<function>reference()</function>。"
 
-#: C/index-in.docbook:10003
+#: C/index-in.docbook:9943
 msgid "refreturn_ctype"
 msgstr "refreturn_ctype"
 
-#: C/index-in.docbook:10005
+#: C/index-in.docbook:9945
 msgid ""
 "Do an extra <function>reference()</function> on the return value of an "
 "overridden <function>something_vfunc()</function> function in the C callback "
@@ -17329,11 +17287,11 @@ msgstr ""
 "<function>something_vfunc()</function>函数的返回值额外调用一次"
 "<function>reference()</function>。"
 
-#: C/index-in.docbook:10012
+#: C/index-in.docbook:9952
 msgid "keep_return"
 msgstr "keep_return"
 
-#: C/index-in.docbook:10014
+#: C/index-in.docbook:9954
 msgid ""
 "Keep a copy of the return value in the C callback function, in case the "
 "calling C function does not expect to get its own reference."
@@ -17341,17 +17299,17 @@ msgstr ""
 "当被调用的C函数不想要得到属于它的引用的时候,在C回调函数中保留一份返回值的副"
 "本。"
 
-#: C/index-in.docbook:10022
+#: C/index-in.docbook:9962
 msgid ""
 "Use the last GError** parameter of the C virtual function (if there is one) "
 "to throw an exception."
 msgstr "如果C虚函数的参数中的最后有一个GError**参数,则使用此参数抛出异常。"
 
-#: C/index-in.docbook:10027
+#: C/index-in.docbook:9967
 msgid "custom_vfunc"
 msgstr "custom_vfunc"
 
-#: C/index-in.docbook:10029
+#: C/index-in.docbook:9969
 msgid ""
 "Do not generate a definition of the vfunc in the <filename>.cc</filename> "
 "file. Use this when you must generate the vfunc by hand."
@@ -17359,29 +17317,29 @@ msgstr ""
 "不在<filename>.cc</filename>文件中生成虚函数的定义。请在你需要手写虚函数的时"
 "候使用此可选参数。"
 
-#: C/index-in.docbook:10035
+#: C/index-in.docbook:9975
 msgid "custom_vfunc_callback"
 msgstr "custom_vfunc_callback"
 
-#: C/index-in.docbook:10037
+#: C/index-in.docbook:9977
 msgid ""
 "Do not generate a C callback function for the vfunc. Use this when you must "
 "generate the callback function by hand."
 msgstr "不为虚函数生成C回调函数。请在你需要手写回调函数时使用此可选参数。"
 
-#: C/index-in.docbook:10080
+#: C/index-in.docbook:10020
 msgid "return_value &lt;value&gt;"
 msgstr "return_value &lt;value&gt;"
 
-#: C/index-in.docbook:10082
+#: C/index-in.docbook:10022
 msgid "Defines a non-default return value."
 msgstr "定义非默认的返回值。"
 
-#: C/index-in.docbook:10086
+#: C/index-in.docbook:10026
 msgid "err_return_value &lt;value&gt;"
 msgstr "err_return_value &lt;value&gt;"
 
-#: C/index-in.docbook:10088
+#: C/index-in.docbook:10028
 msgid ""
 "Defines a non-default return value, used only if the C++ "
 "<function>something_vfunc()</function> function throws an exception which is "
@@ -17393,7 +17351,7 @@ msgstr ""
 "了C回调函数中的时候才使用的非默认返回值。如果指定了return_value但没有指定"
 "err_return_value,则将err_return_value的值视作return_value的值。"
 
-#: C/index-in.docbook:10105
+#: C/index-in.docbook:10045
 msgid ""
 "A rule to which there may be exceptions: If the virtual C function returns a "
 "pointer to an object derived from <classname>GObject</classname>, i.e. a "
@@ -17407,23 +17365,27 @@ msgstr ""
 "<classname>Glib::RefPtr&lt;&gt;</classname>对象。且需要<parameter>refreturn</"
 "parameter>或<parameter>refreturn_ctype</parameter>额外参数。"
 
-#: C/index-in.docbook:10116
+#: C/index-in.docbook:10056
 msgid "Other macros"
 msgstr "其他宏"
 
-#: C/index-in.docbook:10118
+#: C/index-in.docbook:10058
 msgid "_IMPLEMENTS_INTERFACE"
 msgstr "_IMPLEMENTS_INTERFACE"
 
-#: C/index-in.docbook:10119
+#: C/index-in.docbook:10059
 msgid "This macro generates initialization code for the interface."
 msgstr "这个宏为接口生成初始化代码"
 
-#: C/index-in.docbook:10120
+#: C/index-in.docbook:10060
 msgid "<function>_IMPLEMENTS_INTERFACE(C++ interface name)</function>"
 msgstr "<function>_IMPLEMENTS_INTERFACE(C++接口名)</function>"
 
-#: C/index-in.docbook:10122
+#: C/index-in.docbook:10061
+msgid "For instance, from <filename>grid.hg</filename>:"
+msgstr "示例来自于<filename>grid.hg</filename>:"
+
+#: C/index-in.docbook:10062
 #, no-wrap
 msgid ""
 "\n"
@@ -17432,43 +17394,39 @@ msgstr ""
 "\n"
 "_IMPLEMENTS_INTERFACE(Orientable)\n"
 
-#: C/index-in.docbook:10121
-msgid "For instance, from <filename>grid.hg</filename>: <_:programlisting-1/>"
-msgstr "示例来自于<filename>grid.hg</filename>:<_:programlisting-1/>"
-
-#: C/index-in.docbook:10126
+#: C/index-in.docbook:10065
 msgid "There is one optional extra argument: <_:variablelist-1/>"
 msgstr "有一个可选的额外参数:<_:variablelist-1/>"
 
-#: C/index-in.docbook:10139
+#: C/index-in.docbook:10078
 msgid "_WRAP_ENUM"
 msgstr "_WRAP_ENUM"
 
-#: C/index-in.docbook:10140
+#: C/index-in.docbook:10079
 msgid ""
 "This macro generates a C++ enum to wrap a C enum. You must specify the "
 "desired C++ name and the name of the underlying C enum."
 msgstr ""
 "这个宏生成一个C++枚举以包装C枚举。你必须指定所需的C++名称和底层C枚举的名称。"
 
-#: C/index-in.docbook:10143
+#: C/index-in.docbook:10081
+msgid "For instance, from <filename>enums.hg</filename>:"
+msgstr "示例来自于<filename>enums.hg</filename>:"
+
+#: C/index-in.docbook:10082
 #, no-wrap
 msgid ""
 "\n"
-"_WRAP_ENUM(WindowType, GtkWindowType)\n"
+"_WRAP_ENUM(Orientation, GtkOrientation)\n"
 msgstr ""
 "\n"
-"_WRAP_ENUM(WindowType, GtkWindowType)\n"
-
-#: C/index-in.docbook:10142
-msgid "For instance, from <filename>enums.hg</filename>: <_:programlisting-1/>"
-msgstr "示例来自于<filename>enums.hg</filename>:<_:programlisting-1/>"
+"_WRAP_ENUM(Orientation, GtkOrientation)\n"
 
-#: C/index-in.docbook:10150
+#: C/index-in.docbook:10088
 msgid "NO_GTYPE"
 msgstr "NO_GTYPE"
 
-#: C/index-in.docbook:10152
+#: C/index-in.docbook:10090
 msgid ""
 "Use this option, if the enum is not a <classname>GType</classname>. This is "
 "the case when there is no <function>*_get_type()</function> function for the "
@@ -17480,7 +17438,7 @@ msgstr ""
 "举没有<function>*_get_type()</function>函数,你不需要为该函数额外包含头文件。"
 "但你应该此为对C API提交一个bug,因为所有的枚举都应该被注册为GTypes。"
 
-#: C/index-in.docbook:10157
+#: C/index-in.docbook:10095
 msgid ""
 "If you specify <literal>NO_GTYPE</literal>, don't use that enum as the type "
 "in _WRAP_PROPERTY. It would cause a runtime error, when the generated "
@@ -17490,7 +17448,11 @@ msgstr ""
 "型。这会导致生成的<methodname>property_*()</methodname>成员函数被调用时出现运"
 "行时错误。"
 
-#: C/index-in.docbook:10161
+#: C/index-in.docbook:10098
+msgid "For example, from <filename>icontheme.hg</filename>:"
+msgstr "示例来自于<filename>icontheme.hg</filename>:"
+
+#: C/index-in.docbook:10099
 #, no-wrap
 msgid ""
 "\n"
@@ -17501,16 +17463,11 @@ msgstr ""
 "_WRAP_ENUM(IconLookupFlags, GtkIconLookupFlags, NO_GTYPE)\n"
 "      "
 
-#: C/index-in.docbook:10160
-msgid ""
-"For example, from <filename>icontheme.hg</filename>: <_:programlisting-1/>"
-msgstr "示例来自于<filename>icontheme.hg</filename>:<_:programlisting-1/>"
-
-#: C/index-in.docbook:10168
+#: C/index-in.docbook:10105
 msgid "gtype_func &lt;function_name&gt;"
 msgstr "gtype_func &lt;function_name&gt;"
 
-#: C/index-in.docbook:10170
+#: C/index-in.docbook:10107
 msgid ""
 "Specifies the name of the <function>*_get_type()</function> function for the "
 "C enum. Use this parameter if <command>gmmproc</command> can't deduce the "
@@ -17519,7 +17476,12 @@ msgstr ""
 "指定C枚举的<function>*_get_type()</function>函数名。如果<command>gmmproc</"
 "command>无法从C枚举类型的名称推断出正确的函数名,请使用此额外参数。"
 
-#: C/index-in.docbook:10174
+#: C/index-in.docbook:10110
+msgid "For example, from <filename>dbusproxy.hg</filename> in glibmm:"
+msgstr ""
+"示例来自于glibmm的<filename>dbusproxy.hg</filename>:"
+
+#: C/index-in.docbook:10111
 #, no-wrap
 msgid ""
 "\n"
@@ -17530,18 +17492,11 @@ msgstr ""
 "_WRAP_ENUM(ProxyFlags, GDBusProxyFlags, gtype_func g_dbus_proxy_flags_get_type)\n"
 "      "
 
-#: C/index-in.docbook:10173
-msgid ""
-"For example, from <filename>dbusproxy.hg</filename> in glibmm: <_:"
-"programlisting-1/>"
-msgstr ""
-"示例来自于glibmm的<filename>dbusproxy.hg</filename>:<_:programlisting-1/>"
-
-#: C/index-in.docbook:10181
+#: C/index-in.docbook:10117
 msgid "CONV_TO_INT"
 msgstr "CONV_TO_INT"
 
-#: C/index-in.docbook:10183
+#: C/index-in.docbook:10119
 msgid ""
 "\"Convertible to int.\" Generates a plain enum (not an enum class) within a "
 "class. Such an enum is scoped like an enum class, but unlike an enum class, "
@@ -17550,7 +17505,11 @@ msgstr ""
 "在一个类中生成普通枚举而不是生成枚举类。这将允许该枚举类型的值可以直接转换为"
 "<type>int</type>类型的值,且这样的枚举还拥有与枚举类类似的作用域。"
 
-#: C/index-in.docbook:10187
+#: C/index-in.docbook:10122
+msgid "For example, from <filename>dialog.hg</filename>:"
+msgstr "示例来自于<filename>dialog.hg</filename>:"
+
+#: C/index-in.docbook:10123
 #, no-wrap
 msgid ""
 "\n"
@@ -17561,21 +17520,22 @@ msgstr ""
 "_WRAP_ENUM(ResponseType, GtkResponseType, CONV_TO_INT)\n"
 "      "
 
-#: C/index-in.docbook:10186
-msgid "For example, from <filename>dialog.hg</filename>: <_:programlisting-1/>"
-msgstr "示例来自于<filename>dialog.hg</filename>:<_:programlisting-1/>"
-
-#: C/index-in.docbook:10194
+#: C/index-in.docbook:10129
 msgid "s#&lt;from&gt;#&lt;to&gt;#"
 msgstr "s#&lt;from&gt;#&lt;to&gt;#"
 
-#: C/index-in.docbook:10196
+#: C/index-in.docbook:10131
 msgid ""
 "Substitutes (part of) the name of one or more enum constants. You can add "
 "any number of substitutions."
 msgstr "替换一个或多个枚举常量名称的全部或一部分。你可以添加任意数量的替换。"
 
-#: C/index-in.docbook:10199
+#: C/index-in.docbook:10133
+msgid "For example, from <filename>iochannel.hg</filename> in glibmm:"
+msgstr ""
+"示例来自于glibmm中的<filename>iochannel.hg</filename>:"
+
+#: C/index-in.docbook:10134
 #, no-wrap
 msgid ""
 "\n"
@@ -17586,18 +17546,11 @@ msgstr ""
 "_WRAP_ENUM(SeekType, GSeekType, NO_GTYPE, s#^SEEK_#SEEK_TYPE_#)\n"
 "      "
 
-#: C/index-in.docbook:10198
-msgid ""
-"For example, from <filename>iochannel.hg</filename> in glibmm: <_:"
-"programlisting-1/>"
-msgstr ""
-"示例来自于glibmm中的<filename>iochannel.hg</filename>:<_:programlisting-1/>"
-
-#: C/index-in.docbook:10224
+#: C/index-in.docbook:10158
 msgid "_WRAP_ENUM_DOCS_ONLY"
 msgstr "_WRAP_ENUM_DOCS_ONLY"
 
-#: C/index-in.docbook:10225
+#: C/index-in.docbook:10159
 msgid ""
 "This macro just generates a Doxygen documentationn block for the enum. This "
 "is useful for enums that can't be wrapped with <function>_WRAP_ENUM()</"
@@ -17613,11 +17566,11 @@ msgstr ""
 "成的文档的枚举类型很有用。它与<function>_WRAP_ENUM()</function>使用同一语法,"
 "也处理一样的参数(尽管有些额外参数因为没有作用会被忽略)"
 
-#: C/index-in.docbook:10237
+#: C/index-in.docbook:10171
 msgid "_WRAP_GERROR"
 msgstr "_WRAP_GERROR"
 
-#: C/index-in.docbook:10238
+#: C/index-in.docbook:10172
 msgid ""
 "This macro generates a C++ exception class, derived from <classname>Glib::"
 "Error</classname>, with a <type>Code</type> enum and a <methodname>code()</"
@@ -17628,13 +17581,17 @@ msgstr ""
 "并具有一个<type>Code</type>枚举成员变量和一个<methodname>code()</methodname>"
 "成员函数。你必须指定所需的C++名称、以及与其对应的C枚举名、C枚举值前缀。"
 
-#: C/index-in.docbook:10241
+#: C/index-in.docbook:10175
 msgid ""
 "This exception can then be thrown by methods which are generated from "
 "_WRAP_METHOD() with the errthrow option."
 msgstr "然后可以由带有errthrow选项的_WRAP_METHOD()生成的成员函数抛出此异常。"
 
-#: C/index-in.docbook:10244
+#: C/index-in.docbook:10177
+msgid "For instance, from <filename>pixbuf.hg</filename>:"
+msgstr "示例来自于<filename>pixbuf.hg</filename>:"
+
+#: C/index-in.docbook:10178
 #, no-wrap
 msgid ""
 "\n"
@@ -17643,12 +17600,7 @@ msgstr ""
 "\n"
 "_WRAP_GERROR(PixbufError, GdkPixbufError, GDK_PIXBUF_ERROR)\n"
 
-#: C/index-in.docbook:10243
-msgid ""
-"For instance, from <filename>pixbuf.hg</filename>: <_:programlisting-1/>"
-msgstr "示例来自于<filename>pixbuf.hg</filename>:<_:programlisting-1/>"
-
-#: C/index-in.docbook:10248
+#: C/index-in.docbook:10181
 msgid ""
 "_WRAP_GERROR() accepts the same optional arguments as _WRAP_ENUM() (though "
 "CONV_TO_INT is ignored because all exception class enums are plain enums "
@@ -17657,11 +17609,11 @@ msgstr ""
 "_WRAP_GERROR()接受与_WRAP_ENUM()一样的可选参数(尽管CONV_TO_INT参数因为没有作"
 "用而被忽略)。"
 
-#: C/index-in.docbook:10254
+#: C/index-in.docbook:10187
 msgid "_MEMBER_GET / _MEMBER_SET"
 msgstr "_MEMBER_GET / _MEMBER_SET"
 
-#: C/index-in.docbook:10255
+#: C/index-in.docbook:10188
 msgid ""
 "Use these macros if you're wrapping a simple struct or boxed type that "
 "provides direct access to its data members, to create getters and setters "
@@ -17670,29 +17622,28 @@ msgstr ""
 "如果要包装可以被直接访问其数据成员的简单结构体或装箱类型,请使用这些宏。这些"
 "宏会为其数据成员创建访问器成员函数(getter和setter)。"
 
-#: C/index-in.docbook:10259
+#: C/index-in.docbook:10192
 msgid "<function>_MEMBER_GET(C++ name, C name, C++ type, C type)</function>"
 msgstr "<function>_MEMBER_GET(C++名, C名, C++类型, C类型)</function>"
 
-#: C/index-in.docbook:10260
+#: C/index-in.docbook:10193
 msgid "<function>_MEMBER_SET(C++ name, C name, C++ type, C type)</function>"
 msgstr "<function>_MEMBER_SET(C++名, C名, C++类型, C类型)</function>"
 
-#: C/index-in.docbook:10263
+#: C/index-in.docbook:10194
+msgid "For example, in <filename>rectangle.hg</filename>:"
+msgstr "示例来自于<filename>rectangle.hg</filename>:"
+
+#: C/index-in.docbook:10197
 #, no-wrap
 msgid "_MEMBER_GET(x, x, int, int)"
 msgstr "_MEMBER_GET(x, x, int, int)"
 
-#: C/index-in.docbook:10261
-msgid ""
-"For example, in <filename>rectangle.hg</filename>: <_:programlisting-1/>"
-msgstr "示例来自于<filename>rectangle.hg</filename>:<_:programlisting-1/>"
-
-#: C/index-in.docbook:10267
+#: C/index-in.docbook:10200
 msgid "_MEMBER_GET_PTR / _MEMBER_SET_PTR"
 msgstr "_MEMBER_GET_PTR / _MEMBER_SET_PTR"
 
-#: C/index-in.docbook:10268
+#: C/index-in.docbook:10201
 msgid ""
 "Use these macros to automatically provide getters and setters for a data "
 "member that is a pointer type. For the getter function, it will create two "
@@ -17701,18 +17652,26 @@ msgstr ""
 "使用这些宏可以自动为指针类型的数据成员提供访问器(getter和setter)。对于"
 "getter函数,将创建两个版本,一个const版本一个非const版本。"
 
-#: C/index-in.docbook:10273
+#: C/index-in.docbook:10206
 msgid ""
 "<function>_MEMBER_GET_PTR(C++ name, C name, C++ type, C type)</function>"
 msgstr "<function>_MEMBER_GET_PTR(C++名, C名, C++类型, C类型)</function>"
 
-#: C/index-in.docbook:10274
-#, fuzzy
+#: C/index-in.docbook:10207
 msgid ""
 "<function>_MEMBER_SET_PTR(C++ name, C name, C++ type, C type)</function>"
-msgstr "<function>_MEMBER_GET_PTR(C++名, C名, C++类型, C类型)</function>"
+msgstr ""
+"<function>_MEMBER_GET_PTR(C++名, C名, C++类型, C类型)</function>"
+
+#: C/index-in.docbook:10208
+msgid ""
+"For example, for <classname>Pango::Analysis</classname> in <filename>item."
+"hg</filename>:"
+msgstr ""
+"示例来自于<filename>item.hg</filename>文件中的<classname>Pango::Analysis</"
+"classname>:"
 
-#: C/index-in.docbook:10276
+#: C/index-in.docbook:10210
 #, no-wrap
 msgid ""
 "\n"
@@ -17723,19 +17682,11 @@ msgstr ""
 "// _MEMBER_GET_PTR(engine_lang, lang_engine, EngineLang*, PangoEngineLang*)\n"
 "// It's just a comment. It's difficult to find a real-world example.\n"
 
-#: C/index-in.docbook:10275
-msgid ""
-"For example, for <classname>Pango::Analysis</classname> in <filename>item."
-"hg</filename>: <_:programlisting-1/>"
-msgstr ""
-"示例来自于<filename>item.hg</filename>文件中的<classname>Pango::Analysis</"
-"classname>: <_:programlisting-1/>"
-
-#: C/index-in.docbook:10283
+#: C/index-in.docbook:10216
 msgid "_MEMBER_GET_GOBJECT / _MEMBER_SET_GOBJECT"
 msgstr "_MEMBER_GET_GOBJECT / _MEMBER_SET_GOBJECT"
 
-#: C/index-in.docbook:10284
+#: C/index-in.docbook:10217
 msgid ""
 "Use these macros to provide getters and setters for a data member that is a "
 "<classname>GObject</classname> type that must be referenced before being "
@@ -17744,17 +17695,22 @@ msgstr ""
 "使用这些宏可以为返回之前必须被引用的<classname>GObject</classname>类型数据成"
 "员提供访问器(getters和setters)。"
 
-#: C/index-in.docbook:10289
+#: C/index-in.docbook:10222
 msgid ""
 "<function>_MEMBER_GET_GOBJECT(C++ name, C name, C++ type, C type)</function>"
 msgstr "<function>_MEMBER_GET_GOBJECT(C++名, C名, C++类型, C类型)</function>"
 
-#: C/index-in.docbook:10290
+#: C/index-in.docbook:10223
 msgid ""
 "<function>_MEMBER_SET_GOBJECT(C++ name, C name, C++ type, C type)</function>"
 msgstr "<function>_MEMBER_SET_GOBJECT(C++名, C名, C++类型, C类型)</function>"
 
-#: C/index-in.docbook:10292
+#: C/index-in.docbook:10224
+msgid "For example, in Pangomm, <filename>layoutline.hg</filename>:"
+msgstr ""
+"示例来自于Pangomm中的<filename>layoutline.hg</filename>:"
+
+#: C/index-in.docbook:10225
 #, no-wrap
 msgid ""
 "\n"
@@ -17763,19 +17719,11 @@ msgstr ""
 "\n"
 "_MEMBER_GET_GOBJECT(layout, layout, Pango::Layout, PangoLayout*)\n"
 
-#: C/index-in.docbook:10291
-msgid ""
-"For example, in Pangomm, <filename>layoutline.hg</filename>: <_:"
-"programlisting-1/>"
-msgstr ""
-"示例来自于Pangomm中的<filename>layoutline.hg</filename>:<_:programlisting-1/"
-">"
-
-#: C/index-in.docbook:10301
+#: C/index-in.docbook:10233
 msgid "gmmproc Parameter Processing"
 msgstr "gmmproc参数处理"
 
-#: C/index-in.docbook:10302
+#: C/index-in.docbook:10234
 msgid ""
 "<command>gmmproc</command> allows processing the parameters in a method "
 "signature for the macros that process method signatures (like "
@@ -17786,11 +17734,11 @@ msgstr ""
 "<function>_WRAP_METHOD()</function>、<function>_WRAP_CTOR()</function>、"
 "<function>_WRAP_CREATE()</function>)处理成员函数签名中的参数:"
 
-#: C/index-in.docbook:10309
+#: C/index-in.docbook:10241
 msgid "Parameter Reordering"
 msgstr "对参数重新排序"
 
-#: C/index-in.docbook:10316
+#: C/index-in.docbook:10248
 #, no-wrap
 msgid ""
 "\n"
@@ -17801,7 +17749,7 @@ msgstr ""
 "void gtk_widget_set_device_events(GtkWidget* widget, GdkDevice* device,\n"
 "  GdkEventMask events);\n"
 
-#: C/index-in.docbook:10323
+#: C/index-in.docbook:10255
 #, no-wrap
 msgid ""
 "\n"
@@ -17814,7 +17762,7 @@ msgstr ""
 "  const Glib::RefPtr&lt;const Gdk::Device&gt;&amp; device{device}),\n"
 "  gtk_widget_set_device_events)\n"
 
-#: C/index-in.docbook:10333
+#: C/index-in.docbook:10265
 #, no-wrap
 msgid ""
 "\n"
@@ -17827,7 +17775,7 @@ msgstr ""
 "  const Glib::RefPtr&lt;const Gdk::Device&gt;&amp; device{.}),\n"
 "  gtk_widget_set_device_events)\n"
 
-#: C/index-in.docbook:10310
+#: C/index-in.docbook:10242
 msgid ""
 "For all the macros that process method signatures, it is possible to specify "
 "a different order for the C++ parameters than the existing order in the C "
@@ -17850,7 +17798,7 @@ msgstr ""
 "知<command>gmmproc</command>将C++参数映射到<literal>{}</literal>内的C参数。由"
 "于C++参数名与C参数名相对应,所以上述代码可以被重写为:<_:programlisting-3/>"
 
-#: C/index-in.docbook:10340
+#: C/index-in.docbook:10272
 msgid ""
 "Please note that when reordering parameters for a <function>_WRAP_SIGNAL()</"
 "function> method signature, the C parameter names would always be "
@@ -17864,11 +17812,11 @@ msgstr ""
 "<filename>generate_extra_defs</filename>实用工具使用,而该实用工具不在乎C API"
 "中的参数名是什么。"
 
-#: C/index-in.docbook:10352
+#: C/index-in.docbook:10284
 msgid "Optional Parameter Processing"
 msgstr "可选参数处理"
 
-#: C/index-in.docbook:10361
+#: C/index-in.docbook:10293
 #, no-wrap
 msgid ""
 "\n"
@@ -17877,7 +17825,7 @@ msgstr ""
 "\n"
 "GtkToolItem* gtk_tool_button_new(GtkWidget* icon_widget, const gchar* label);\n"
 
-#: C/index-in.docbook:10370
+#: C/index-in.docbook:10302
 #, no-wrap
 msgid ""
 "\n"
@@ -17888,7 +17836,7 @@ msgstr ""
 "_WRAP_CTOR(ToolButton(Widget&amp; icon_widget, const Glib::ustring&amp; label{?}),\n"
 "  gtk_tool_button_new)\n"
 
-#: C/index-in.docbook:10353
+#: C/index-in.docbook:10285
 msgid ""
 "For all macros processing method signatures except <function>_WRAP_SIGNAL()</"
 "function> and <function>_WRAP_VFUNC()</function> it is also possible to make "
@@ -17914,11 +17862,11 @@ msgstr ""
 "数的原始构造函数和一个带有可选参数的构造函数。在如下所示的情况下:<_:"
 "programlisting-2/> 将生成两个构造函数:一个带可选参数,另一个不带可选参数。"
 
-#: C/index-in.docbook:10380
+#: C/index-in.docbook:10312
 msgid "Output Parameter Processing"
 msgstr "输出参数处理"
 
-#: C/index-in.docbook:10390
+#: C/index-in.docbook:10322
 #, no-wrap
 msgid ""
 "\n"
@@ -17927,7 +17875,7 @@ msgstr ""
 "\n"
 "GtkSizeRequestMode gtk_widget_get_request_mode(GtkWidget* widget);\n"
 
-#: C/index-in.docbook:10396
+#: C/index-in.docbook:10328
 #, no-wrap
 msgid ""
 "\n"
@@ -17938,7 +17886,7 @@ msgstr ""
 "_WRAP_METHOD(void get_request_mode(SizeRequestMode&amp; mode{OUT}) const,\n"
 "  gtk_widget_get_request_mode)\n"
 
-#: C/index-in.docbook:10405
+#: C/index-in.docbook:10337
 #, no-wrap
 msgid ""
 "\n"
@@ -17947,7 +17895,7 @@ msgstr ""
 "\n"
 "_INITIALIZATION(`SizeRequestMode&amp;',`GtkSizeRequestMode',`$3 = (SizeRequestMode)($4)')\n"
 
-#: C/index-in.docbook:10409
+#: C/index-in.docbook:10341
 #, no-wrap
 msgid ""
 "\n"
@@ -17956,7 +17904,7 @@ msgstr ""
 "\n"
 "_INITIALIZATION(`SizeRequestMode&amp;',`GtkSizeRequestMode',`$3 = ($1)($4)')\n"
 
-#: C/index-in.docbook:10381
+#: C/index-in.docbook:10313
 msgid ""
 "With <function>_WRAP_METHOD()</function> it is also possible for the return "
 "of the wrapped C function (if it has one) to be placed in an output "
@@ -17986,7 +17934,7 @@ msgstr ""
 "必须指定必要的初始化宏。如下所示:<_:programlisting-3/>也可以写成:<_:"
 "programlisting-4/>"
 
-#: C/index-in.docbook:10419
+#: C/index-in.docbook:10351
 #, no-wrap
 msgid ""
 "\n"
@@ -17997,7 +17945,7 @@ msgstr ""
 "gboolean gtk_icon_view_get_cell_rect(GtkIconView* icon_view,\n"
 "  GtkTreePath* path, GtkCellRenderer* cell, GdkRectangle* rect);\n"
 
-#: C/index-in.docbook:10426
+#: C/index-in.docbook:10358
 #, no-wrap
 msgid ""
 "\n"
@@ -18010,7 +17958,7 @@ msgstr ""
 "  const CellRenderer&amp; cell, Gdk::Rectangle&amp; rect{&gt;&gt;}) const,\n"
 "  gtk_icon_view_get_cell_rect)\n"
 
-#: C/index-in.docbook:10441
+#: C/index-in.docbook:10373
 #, no-wrap
 msgid ""
 "\n"
@@ -18019,7 +17967,7 @@ msgstr ""
 "\n"
 "_INITIALIZATION(`Gdk::Rectangle&amp;',`GdkRectangle',`$3 = Glib::wrap(&amp;($4))')\n"
 
-#: C/index-in.docbook:10413
+#: C/index-in.docbook:10345
 msgid ""
 "<function>_WRAP_METHOD()</function> also supports setting C++ output "
 "parameters from C output parameters if the C function being wrapped has any. "
@@ -18052,11 +18000,11 @@ msgstr ""
 "<classname>GdkRectangle*</classname>设置一个<classname>Gdk::Rectangle&amp;</"
 "classname>。如下所示:<_:programlisting-3/>"
 
-#: C/index-in.docbook:10448
+#: C/index-in.docbook:10380
 msgid "String Parameter Processing"
 msgstr "处理字符串参数"
 
-#: C/index-in.docbook:10449
+#: C/index-in.docbook:10381
 msgid ""
 "A string-valued input parameter in a C++ method is usually a <type>const "
 "Glib::ustring&amp;</type> or a <type>const std::string&amp;</type>. In C "
@@ -18074,13 +18022,13 @@ msgstr ""
 "<methodname>c_str()</methodname>)。一些C函数的一些参数接受<literal>nullptr</"
 "literal>,并以特殊方式解释它。其他参数不能为<literal>nullptr</literal>。"
 
-#: C/index-in.docbook:10462
+#: C/index-in.docbook:10394
 msgid ""
 "for mandatory parameters (with or without default values): empty string to "
 "empty string,"
 msgstr "对于带有或不带有默认值的强制性参数:空字符串到空字符串"
 
-#: C/index-in.docbook:10464
+#: C/index-in.docbook:10396
 msgid ""
 "for optional parameters (with appended <literal>{?}</literal>): empty string "
 "to <literal>nullptr</literal>."
@@ -18088,7 +18036,7 @@ msgstr ""
 "对于附加了<literal>{?}</literal>的可选参数:空字符串到<literal>nullptr</"
 "literal>。"
 
-#: C/index-in.docbook:10458
+#: C/index-in.docbook:10390
 msgid ""
 "The default conversion in <function>_WRAP_METHOD()</function> and similar "
 "macros is <_:itemizedlist-1/> If the default conversion is not the best "
@@ -18104,11 +18052,11 @@ msgstr ""
 "为非<literal>NULL</literal>)。如果想同时添加C参数名和<literal>NULL</"
 "literal>,则用空格对它们进行分隔:<literal>{c_param_name NULL}</literal>。"
 
-#: C/index-in.docbook:10478
+#: C/index-in.docbook:10410
 msgid "Basic Types"
 msgstr "基本类型"
 
-#: C/index-in.docbook:10479
+#: C/index-in.docbook:10411
 msgid ""
 "Some of the basic types that are used in C APIs have better alternatives in C"
 "++. For example, there's no need for a <type>gboolean</type> type since C++ "
@@ -18119,66 +18067,66 @@ msgstr ""
 "type>类型,所以不需要<type>gboolean</type>类型。以下列表显示了C API中的一些常"
 "用类型,以及你可以在C++封装库中将它们转换为哪些类型。"
 
-#: C/index-in.docbook:10484
+#: C/index-in.docbook:10416
 msgid "Basic Type equivalents"
 msgstr "基本类型的等效项"
 
-#: C/index-in.docbook:10486
+#: C/index-in.docbook:10418
 msgid "C type"
 msgstr "C 类型"
 
-#: C/index-in.docbook:10487
+#: C/index-in.docbook:10419
 msgid "C++ type"
 msgstr "C++类型"
 
-#: C/index-in.docbook:10488
+#: C/index-in.docbook:10420
 msgid "<type>gboolean</type>"
 msgstr "<type>gboolean</type>"
 
-#: C/index-in.docbook:10488
+#: C/index-in.docbook:10420
 msgid "<type>bool</type>"
 msgstr "<type>bool</type>"
 
-#: C/index-in.docbook:10489
+#: C/index-in.docbook:10421
 msgid "<type>gint</type>"
 msgstr "<type>gint</type>"
 
-#: C/index-in.docbook:10489
+#: C/index-in.docbook:10421
 msgid "<type>int</type>"
 msgstr "<type>int</type>"
 
-#: C/index-in.docbook:10490
+#: C/index-in.docbook:10422
 msgid "<type>guint</type>"
 msgstr "<type>guint</type>"
 
-#: C/index-in.docbook:10491
+#: C/index-in.docbook:10423
 msgid "<type>gdouble</type>"
 msgstr "<type>gdouble</type>"
 
-#: C/index-in.docbook:10491
+#: C/index-in.docbook:10423
 msgid "<type>double</type>"
 msgstr "<type>double</type>"
 
-#: C/index-in.docbook:10492
+#: C/index-in.docbook:10424
 msgid "<type>gunichar</type>"
 msgstr "<type>gunichar</type>"
 
-#: C/index-in.docbook:10493
+#: C/index-in.docbook:10425
 msgid "<type>gchar*</type>"
 msgstr "<type>gchar*</type>"
 
-#: C/index-in.docbook:10493
+#: C/index-in.docbook:10425
 msgid ""
 "<classname>Glib::ustring</classname> (or <classname>std::string</classname> "
 "for filenames)"
 msgstr ""
 "<classname>Glib::ustring</classname>(或<classname>std::string</classname>)"
 
-#: C/index-in.docbook:10500
+#: C/index-in.docbook:10432
 msgid "Hand-coded source files"
 msgstr "手工编码源文件"
 
-#: C/index-in.docbook:10501
+#: C/index-in.docbook:10433
 msgid ""
 "You might want to include additional source files that will not be generated "
 "by <command>gmmproc</command> from <filename>.hg</filename> and <filename>."
@@ -18193,11 +18141,28 @@ msgstr ""
 "<filename>meson.build</filename>的<varname>extra_h_files</varname>和"
 "<varname>extra_cc_files</varname>变量提到它们。"
 
-#: C/index-in.docbook:10511
+#: C/index-in.docbook:10443
 msgid "Initialization"
 msgstr "初始化"
 
-#: C/index-in.docbook:10520
+#: C/index-in.docbook:10444
+msgid ""
+"Your library must be initialized before it can be used, to register the new "
+"types that it makes available. Also, the C library that you are wrapping "
+"might have its own initialization function that you should call. You can do "
+"this in an <function>init()</function> function that you can place in hand-"
+"coded <filename>init.h</filename> and <filename>init.cc</filename> files. "
+"This function should initialize your dependencies (such as the C function, "
+"and <application>gtkmm</application>) and call your generated "
+"<function>wrap_init()</function> function. For instance:"
+msgstr ""
+"你必须初始化你的库,以便注册库提供给的新类型,这样你才能使用它。另外你所封装"
+"的C库可能有自己需要调用的初始化函数。你可以将其放在手动编码的<filename>init."
+"h</filename>和<filename>init.cc</filename>文件中的<function>init()</function>"
+"函数中完成此操作。这个函数应该初始化你的依赖项和调用你生成的"
+"<function>wrap_init()</function>函数。例如:"
+
+#: C/index-in.docbook:10452
 #, no-wrap
 msgid ""
 "\n"
@@ -18214,25 +18179,7 @@ msgstr ""
 "  wrap_init(); //Tells the Glib::wrap() table about the libsomethingmm classes.\n"
 "}\n"
 
-#: C/index-in.docbook:10512
-msgid ""
-"Your library must be initialized before it can be used, to register the new "
-"types that it makes available. Also, the C library that you are wrapping "
-"might have its own initialization function that you should call. You can do "
-"this in an <function>init()</function> function that you can place in hand-"
-"coded <filename>init.h</filename> and <filename>init.cc</filename> files. "
-"This function should initialize your dependencies (such as the C function, "
-"and <application>gtkmm</application>) and call your generated "
-"<function>wrap_init()</function> function. For instance: <_:programlisting-1/"
-">"
-msgstr ""
-"你必须初始化你的库,以便注册库提供给的新类型,这样你才能使用它。另外你所封装"
-"的C库可能有自己需要调用的初始化函数。你可以将其放在手动编码的<filename>init."
-"h</filename>和<filename>init.cc</filename>文件中的<function>init()</function>"
-"函数中完成此操作。这个函数应该初始化你的依赖项和调用你生成的"
-"<function>wrap_init()</function>函数。例如:<_:programlisting-1/>"
-
-#: C/index-in.docbook:10528
+#: C/index-in.docbook:10459
 msgid ""
 "The implementation of the <function>wrap_init()</function> method in "
 "<filename>wrap_init.cc</filename> is generated by "
@@ -18247,11 +18194,11 @@ msgstr ""
 "<filename>wrap_init.h</filename>文件以使<function>wrap_init()</function>函数"
 "出现在正确的C++命名空间中。"
 
-#: C/index-in.docbook:10537
+#: C/index-in.docbook:10468
 msgid "Problems in the C API."
 msgstr "C API中的问题"
 
-#: C/index-in.docbook:10538
+#: C/index-in.docbook:10469
 msgid ""
 "You are likely to encounter some problems in the library that you are "
 "wrapping, particularly if it is a new project. Here are some common "
@@ -18260,11 +18207,16 @@ msgstr ""
 "你可能会在封装库的过程中遇到一些问题。特别是它是一个新项目的时候。以下是一些"
 "常见问题以及解决方案。"
 
-#: C/index-in.docbook:10540
+#: C/index-in.docbook:10471
 msgid "Unable to predeclare structs"
 msgstr "无法提前声明的结构体"
 
-#: C/index-in.docbook:10542
+#: C/index-in.docbook:10472
+msgid "By convention, structs are declared in glib/GTK-style headers like so:"
+msgstr ""
+"按照约定,glib/GTK风格的头文件中结构体声明应如下所示:"
+
+#: C/index-in.docbook:10473
 #, no-wrap
 msgid ""
 "\n"
@@ -18283,14 +18235,7 @@ msgstr ""
 "  ...\n"
 "};\n"
 
-#: C/index-in.docbook:10541
-msgid ""
-"By convention, structs are declared in glib/GTK-style headers like so: <_:"
-"programlisting-1/>"
-msgstr ""
-"按照约定,glib/GTK风格的头文件中结构体声明应如下所示:<_:programlisting-1/>"
-
-#: C/index-in.docbook:10551
+#: C/index-in.docbook:10481
 msgid ""
 "The extra typedef allows the struct to be used in a header without including "
 "its full definition, simply by predeclaring it, by repeating that typedef. "
@@ -18304,7 +18249,7 @@ msgstr ""
 "件。,从而将其排除在你的公共API之外。<command>gmmproc</command>假定使用了这个"
 "技术,因此如果没使用这种技术就会遇到编译错误。"
 
-#: C/index-in.docbook:10558
+#: C/index-in.docbook:10488
 #, no-wrap
 msgid ""
 "\n"
@@ -18317,7 +18262,7 @@ msgstr ""
 "../../libexample/libexamplemm/example-widget.h:34: error: 'ExampleWidget' has a previous declaration here\n"
 "make[4]: *** [example-widget.lo] Error 1\n"
 
-#: C/index-in.docbook:10564
+#: C/index-in.docbook:10494
 #, no-wrap
 msgid ""
 "\n"
@@ -18328,7 +18273,7 @@ msgstr ""
 "example-widget.h:60: error: '_ExampleWidget ExampleWidget' redeclared as different kind of symbol\n"
 "../../libexample/libexamplemm/example-widget.h:34: error: previous declaration of 'typedef struct 
_ExampleWidget ExampleWidget'\n"
 
-#: C/index-in.docbook:10556
+#: C/index-in.docbook:10486
 msgid ""
 "This compiler error might look like this: <_:programlisting-1/> or this: <_:"
 "programlisting-2/>"
@@ -18336,17 +18281,31 @@ msgstr ""
 "编译错误看起来可能如下所示:<_:programlisting-1/>或如下所示:<_:"
 "programlisting-2/>"
 
-#: C/index-in.docbook:10569
+#: C/index-in.docbook:10499
 msgid ""
 "This is easy to correct in the C library, so do send a patch to the relevant "
 "maintainer."
 msgstr "这很容易在C库中修复,你可以向相关库的维护者发送补丁。"
 
-#: C/index-in.docbook:10573
+#: C/index-in.docbook:10503
 msgid "Lack of properties"
 msgstr "缺少属性"
 
-#: C/index-in.docbook:10580
+#: C/index-in.docbook:10504
+msgid ""
+"By convention, glib/GTK-style objects have <function>*_new()</function> "
+"functions, such as <function>example_widget_new()</function> that do nothing "
+"more than call <function>g_object_new()</function> and return the result. "
+"The input parameters are supplied to <function>g_object_new()</function> "
+"along with the names of the properties for which they are values. For "
+"instance,"
+msgstr ""
+"按照约定,glib/GTK风格对象应具有<function>*_new()</function>函数,例如"
+"<function>example_widget_new()</function>仅调用<function>g_object_new()</"
+"function>并返回其结果。输入参数为<function>g_object_new()</function>函数提供"
+"属性名和属性值。例如:"
+
+#: C/index-in.docbook:10510
 #, no-wrap
 msgid ""
 "\n"
@@ -18361,21 +18320,7 @@ msgstr ""
 "        return g_object_new (EXAMPLE_TYPE_WIDGET, \"something\", something, \"thing\", thing, NULL);\n"
 "}\n"
 
-#: C/index-in.docbook:10574
-msgid ""
-"By convention, glib/GTK-style objects have <function>*_new()</function> "
-"functions, such as <function>example_widget_new()</function> that do nothing "
-"more than call <function>g_object_new()</function> and return the result. "
-"The input parameters are supplied to <function>g_object_new()</function> "
-"along with the names of the properties for which they are values. For "
-"instance, <_:programlisting-1/>"
-msgstr ""
-"按照约定,glib/GTK风格对象应具有<function>*_new()</function>函数,例如"
-"<function>example_widget_new()</function>仅调用<function>g_object_new()</"
-"function>并返回其结果。输入参数为<function>g_object_new()</function>函数提供"
-"属性名和属性值。例如:<_:programlisting-1/>"
-
-#: C/index-in.docbook:10587
+#: C/index-in.docbook:10516
 msgid ""
 "This allows language bindings to implement their own equivalents (such as C+"
 "+ constructors), without using the <function>*_new()</function> function. "
@@ -18386,7 +18331,7 @@ msgstr ""
 "<function>*_new()</function>函数。这通常是必须的,这是为了让它们可以实例化派"
 "生的GType,这样就可以为信号处理函数和虚函数添加自己的钩子。"
 
-#: C/index-in.docbook:10591
+#: C/index-in.docbook:10520
 msgid ""
 "At the least, the <function>_new()</function> function should not use any "
 "private API (functions that are only in a .c file). Even when there are no "
@@ -18398,7 +18343,16 @@ msgstr ""
 "对应的函数,有时我们也可以在<function>_new()</function>函数中重新实现2到3行代"
 "码,只要这些行使用的API是可用的。"
 
-#: C/index-in.docbook:10599
+#: C/index-in.docbook:10525
+msgid ""
+"Another workaround is to add a <function>*_construct()</function> function "
+"that the C++ constructor can call after instantiating its own type. For "
+"instance,"
+msgstr ""
+"另一个解决方法是添加一个C++构造函数可以在实例化自身类型后调用的"
+"<function>*_construct()</function>函数。例如:"
+
+#: C/index-in.docbook:10528
 #, no-wrap
 msgid ""
 "\n"
@@ -18431,16 +18385,7 @@ msgstr ""
 "        do_something(something);\n"
 "}\n"
 
-#: C/index-in.docbook:10596
-msgid ""
-"Another workaround is to add a <function>*_construct()</function> function "
-"that the C++ constructor can call after instantiating its own type. For "
-"instance, <_:programlisting-1/>"
-msgstr ""
-"另一个解决方法是添加一个C++构造函数可以在实例化自身类型后调用的"
-"<function>*_construct()</function>函数。例如:<_:programlisting-1/>"
-
-#: C/index-in.docbook:10615
+#: C/index-in.docbook:10543
 msgid ""
 "Adding properties, and ensuring that they interact properly with each other, "
 "is relatively difficult to correct in the C library, but it is possible, so "
@@ -18450,11 +18395,11 @@ msgstr ""
 "的。若你发现了一个bug请联系相关的维护人员并向其提供相关信息以便尽快修复该"
 "bug。"
 
-#: C/index-in.docbook:10623
+#: C/index-in.docbook:10551
 msgid "Documentation"
 msgstr "文档"
 
-#: C/index-in.docbook:10624
+#: C/index-in.docbook:10552
 msgid ""
 "In general, gtkmm-style projects use Doxygen, which reads specially "
 "formatted C++ comments and generates HTML documentation. You may write these "
@@ -18463,11 +18408,11 @@ msgstr ""
 "通常,gtkmm风格项目使用Doxygen生成文档,它会读取特殊格式的C++注释并生成HTML文"
 "档。你可以直接将这些doxygen可读的注释写到头文件中。"
 
-#: C/index-in.docbook:10627
+#: C/index-in.docbook:10555
 msgid "Reusing C documentation"
 msgstr "重用C文档"
 
-#: C/index-in.docbook:10628
+#: C/index-in.docbook:10556
 msgid ""
 "You might wish to reuse documentation that exists for the C library that you "
 "are wrapping. GTK-style C libraries typically use gtk-doc and therefore have "
@@ -18485,12 +18430,12 @@ msgstr ""
 "doxygen注释。<command>gmmproc</command>甚至会尝试转换文档以使其更适合C++ "
 "API。"
 
-#: C/index-in.docbook:10638
+#: C/index-in.docbook:10566
 #, no-wrap
 msgid "./docextract_to_xml.py -s ~/checkout/gnome/gtk/gtk/ &gt; gtk_docs.xml\n"
 msgstr "./docextract_to_xml.py -s ~/checkout/gnome/gtk/gtk/ &gt; gtk_docs.xml\n"
 
-#: C/index-in.docbook:10641
+#: C/index-in.docbook:10568
 msgid ""
 "Because this automatic transformation is not always appropriate, you might "
 "want to provide hand-written text for a particular method. You can do this "
@@ -18504,11 +18449,11 @@ msgstr ""
 "<filename>something_docs_override.xml</filename>文件并更改其内容。你也可以在"
 "<filename>.hg</filename>文件中编写自己的文档。"
 
-#: C/index-in.docbook:10651
+#: C/index-in.docbook:10578
 msgid "Documentation build structure"
 msgstr "文档构建结构"
 
-#: C/index-in.docbook:10652
+#: C/index-in.docbook:10579
 msgid ""
 "If you copied the skeleton source tree in <application>mm-common</"
 "application> and substituted the placeholder text, then you will already "
@@ -18528,6 +18473,44 @@ msgstr ""
 "入文件不是通过Doxygen配置文件定义的,而是由<command>meson/ninja</command>传递"
 "文件内容到<command>doxygen</command>的标准输入。"
 
+#~ msgid "For instance, <_:programlisting-1/>"
+#~ msgstr "例如:<_:programlisting-1/>"
+
+#~ msgid ""
+#~ "For instance, from <filename>accelgroup.hg</filename>: <_:"
+#~ "programlisting-1/>"
+#~ msgstr ""
+#~ "来自<filename>accelgroup.hg</filename>文件中的例子:<_:programlisting-1/>"
+
+#~ msgid ""
+#~ "\n"
+#~ "_CLASS_OPAQUE_REFCOUNTED(Coverage, PangoCoverage, pango_coverage_new, pango_coverage_ref, 
pango_coverage_unref)\n"
+#~ msgstr ""
+#~ "\n"
+#~ "_CLASS_OPAQUE_REFCOUNTED(Coverage, PangoCoverage, pango_coverage_new, pango_coverage_ref, 
pango_coverage_unref)\n"
+
+#~ msgid ""
+#~ "For instance, for <classname>Pango::Coverage</classname>: <_:"
+#~ "programlisting-1/>"
+#~ msgstr ""
+#~ "示例来自<classname>Pango::Coverage</classname>:<_:programlisting-1/>"
+
+#~ msgid ""
+#~ "\n"
+#~ "_CLASS_GENERIC(AttrIter, PangoAttrIterator)\n"
+#~ msgstr ""
+#~ "\n"
+#~ "_CLASS_GENERIC(AttrIter, PangoAttrIterator)\n"
+
+#~ msgid ""
+#~ "For instance, for <classname>Pango::AttrIter</classname>: <_:"
+#~ "programlisting-1/>"
+#~ msgstr ""
+#~ "示例来自<classname>Pango::AttrIter</classname>:<_:programlisting-1/>"
+
+#~ msgid "For example: <_:programlisting-1/>"
+#~ msgstr "例如:<_:programlisting-1/>"
+
 #~ msgid "Murray"
 #~ msgstr "Murray"
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]