Tue, 22 Oct 2013 21:21:33 +0530
Updated plugin_i18n.xml to gtk-doc style
| doc/reference/libpurple/libpurple-docs.xml | file | annotate | diff | comparison | revisions | |
| doc/reference/libpurple/plugin_i18n.xml | file | annotate | diff | comparison | revisions |
--- a/doc/reference/libpurple/libpurple-docs.xml Tue Oct 22 02:52:36 2013 +0530 +++ b/doc/reference/libpurple/libpurple-docs.xml Tue Oct 22 21:21:33 2013 +0530 @@ -138,9 +138,9 @@ <xi:include href="signals_jabber.xml" /> </reference> - <xi:include href="ui_ops.xml" /> + <xi:include href="plugin_ids.xml" /> <xi:include href="plugin_i18n.xml" /> - <xi:include href="plugin_ids.xml" /> + <xi:include href="ui_ops.xml" /> <index id="api-index-full"> <title>Index</title>
--- a/doc/reference/libpurple/plugin_i18n.xml Tue Oct 22 02:52:36 2013 +0530 +++ b/doc/reference/libpurple/plugin_i18n.xml Tue Oct 22 21:21:33 2013 +0530 @@ -5,35 +5,57 @@ <chapter id="chapter-plugin-i18n"> <title>Third Party Plugin Translation</title> - <programlisting> - @section Introduction + <sect2 id="plugin-i18n-introduction"> + <title>Introduction</title> + + <para> For the purpose of this document we're going to assume that your plugin: - - Is set up to use autotools. It may be possible to add translation support - without autotools, but we have no idea how. We may not want to know, either ;) - - Has an autogen.sh. You may have also called this bootstrap.sh or similar. - - Resides in a source tree that has @c configure.ac and @c Makefile.am in the - top-level directory as well as a @c src directory in which the plugin's source - is located. A @c Makefile.am should also exist in the @c src directory. + <itemizedlist> + <listitem><para> +Is set up to use autotools. It may be possible to add translation support +without autotools, but we have no idea how. We may not want to know, either ;) + </para></listitem> + <listitem><para> +Has an autogen.sh. You may have also called this bootstrap.sh or similar. + </para></listitem> + <listitem><para> +Resides in a source tree that has <literal>configure.ac</literal> and +<literal>Makefile.am</literal> in the top-level directory as well as a +<literal>src</literal> directory in which the plugin's source is located. A +<literal>Makefile.am</literal> should also exist in the <literal>src</literal> +directory. + </para></listitem> + </itemizedlist> + </para> + </sect2> + <sect2 id="plugin-i18n-steps"> + <title>Steps to follow</title> + + <para> For a plugin to have translation support there are a few steps that need to followed: - - In your autogen.sh, add the following after your other utility checks: - @code + <itemizedlist> + <listitem><para> +In your autogen.sh, add the following after your other utility checks: +<programlisting> (intltoolize --version) < /dev/null > /dev/null 2>&1 || { echo; echo "You must have intltool installed to compile <YOUR PLUGIN NAME>"; echo; exit; } - @endcode - Then before your call to aclocal add: - @code +</programlisting> +Then before your call to aclocal add: +<programlisting> intltoolize --force --copy - @endcode - - Now edit configure.ac and add the following: - @code +</programlisting> + </para></listitem> + <listitem><para> +Now edit configure.ac and add the following: +<programlisting> AC_PROG_INTLTOOL GETTEXT_PACKAGE=<YOUR PLUGIN NAME> @@ -42,47 +64,77 @@ ALL_LINGUAS="" AM_GLIB_GNU_GETTEXT - @endcode - The position of these macros in the file don't really matter, but if you - have issues either play around with it or feel free to ask one of the Pidgin - developers. Finally add 'po/Makefile.in' to you 'AC_OUTPUT' command. - - Now create a directory named 'po'. - - 'cd' into the 'po' directory. - - Create/edit the file 'POTFILE.in' in your favorite editor. Each line - should be the name of a file that could or does have strings marked for - translating (we're getting to that step). These file names should be - relative to the top directory of your plugin's source tree. - - 'cd' back to the top directory of your plugin's source tree. - - Open 'Makefile.am' and add 'po' to your 'SUBDIRS' variable. - - While still in the top directory of your plugin's source tree, execute - 'intltool-prepare'. This will setup anything extra that intltool needs. - - Fire off 'autogen.sh' and when it's completed, verify that you have a - 'po/POTFILES' (notice the lack of a .in). If you do, everything should be - set on the autotools side. - - Take a break, stretch your legs, smoke a cigarette, whatever, because - we're done with the autotools part. - - When you're ready, 'cd' into the directory with the source files for your - plugin. - - Open the file containing the PurplePluginInfo structure. - - If you're not already, please make sure that you are including the - 'config.h' file for you plugin. Note that 'config.h' could be whatever - you told autohead to use with AM_CONFIG_HEADER. Also add the following: - @code +</programlisting> +The position of these macros in the file don't really matter, but if you +have issues either play around with it or feel free to ask one of the Pidgin +developers. Finally add 'po/Makefile.in' to you 'AC_OUTPUT' command. + </para></listitem> + <listitem><para> +Now create a directory named 'po'. + </para></listitem> + <listitem><para> +'cd' into the 'po' directory. + </para></listitem> + <listitem><para> +Create/edit the file 'POTFILE.in' in your favorite editor. Each line +should be the name of a file that could or does have strings marked for +translating (we're getting to that step). These file names should be +relative to the top directory of your plugin's source tree. + </para></listitem> + <listitem><para> +'cd' back to the top directory of your plugin's source tree. + </para></listitem> + <listitem><para> +Open 'Makefile.am' and add 'po' to your 'SUBDIRS' variable. + </para></listitem> + <listitem><para> +While still in the top directory of your plugin's source tree, execute +'intltool-prepare'. This will setup anything extra that intltool needs. + </para></listitem> + <listitem><para> +Fire off 'autogen.sh' and when it's completed, verify that you have a +'po/POTFILES' (notice the lack of a .in). If you do, everything should be +set on the autotools side. + </para></listitem> + <listitem><para> +Take a break, stretch your legs, smoke a cigarette, whatever, because +we're done with the autotools part. + </para></listitem> + <listitem><para> +When you're ready, 'cd' into the directory with the source files for your +plugin. + </para></listitem> + <listitem><para> +Open the file containing the PurplePluginInfo structure. + </para></listitem> + <listitem><para> +If you're not already, please make sure that you are including the +'config.h' file for you plugin. Note that 'config.h' could be whatever +you told autohead to use with AM_CONFIG_HEADER. Also add the following: +<programlisting> #include <glib/gi18n-lib.h> - @endcode - Make sure that this include is after you include of your 'config.h', - otherwise you will break your build. Also note that if you wish to - maintain compatibility with older versions of GLib, you will need to - include additional preprocessor directives, which we won't cover here. - - This is where things get a bit goofy. libpurple is going to try to - translate our strings using the libpurple gettext package. So we have to - convert them before libpurple attempts to. - - To do this, we're going to change the entries for name, summary, and - description to NULL. - - Next, locate your 'plugin_load' function. Your name for this function - may vary, but it's the third parameter to 'PURPLE_PLUGIN_INIT'. - - Now add the following within your 'plugin_load' function: - @code +</programlisting> +Make sure that this include is after you include of your 'config.h', +otherwise you will break your build. Also note that if you wish to +maintain compatibility with older versions of GLib, you will need to +include additional preprocessor directives, which we won't cover here. + </para></listitem> + <listitem><para> +This is where things get a bit goofy. libpurple is going to try to +translate our strings using the libpurple gettext package. So we have to +convert them before libpurple attempts to. + </para></listitem> + <listitem><para> +To do this, we're going to change the entries for name, summary, and +description to NULL. + </para></listitem> + <listitem><para> +Next, locate your 'plugin_load' function. Your name for this function +may vary, but it's the third parameter to 'PURPLE_PLUGIN_INIT'. + </para></listitem> + <listitem><para> +Now add the following within your 'plugin_load' function: +<programlisting> #ifdef ENABLE_NLS bindtextdomain(GETTEXT_PACKAGE, LOCALEDIR); bind_textdomain_codeset(GETTEXT_PACKAGE, "UTF-8"); @@ -91,25 +143,35 @@ info.name = _("<YOUR PLUGIN NAME>"); info.summary = _("<YOUR PLUGIN SUMMARY>"); info.description = _("<YOUR PLUGIN DESCRIPTION>"); - @endcode - Note that the _() is intentional, and that it is telling intltool that - this string should be translated. There is also N_() which says that a - string should only be marked for translation but should not be translated - yet. - - Go through the rest of your code and mark all the other strings for - translation with _(). - - When thats done, feel free to commit your work, create your po template - (pot file) or whatever. - - To create you po template, 'cd' to 'po' and execute: - @code +</programlisting> +Note that the _() is intentional, and that it is telling intltool that +this string should be translated. There is also N_() which says that a +string should only be marked for translation but should not be translated +yet. + </para></listitem> + <listitem><para> +Go through the rest of your code and mark all the other strings for +translation with _(). + </para></listitem> + <listitem><para> +When thats done, feel free to commit your work, create your po template +(pot file) or whatever. + </para></listitem> + <listitem><para> +To create you po template, 'cd' to 'po' and execute: +<programlisting> intltool-update --pot - @endcode - - To add new translations to your plugin, all you have to do is add the - language code to the 'ALL_LINGUAS' variable in your configure.ac. Take - note that this list of languages should be separated by a space. After - you have added the language code to 'ALL_LINGUAS', drop the xx.po file - into 'po', and re-'autogen.sh'. After a full build you should now be - able to use the translation. - - </programlisting> +</programlisting> + </para></listitem> + <listitem><para> +To add new translations to your plugin, all you have to do is add the +language code to the 'ALL_LINGUAS' variable in your configure.ac. Take +note that this list of languages should be separated by a space. After +you have added the language code to 'ALL_LINGUAS', drop the xx.po file +into 'po', and re-'autogen.sh'. After a full build you should now be +able to use the translation. + </para></listitem> + </itemizedlist> + </para> + </sect2> </chapter>