Translations: Start documentation for translations.

This commit is contained in:
Mario Hüttel 2020-01-16 23:34:04 +01:00
parent 29212b0a92
commit e61d660ecc
2 changed files with 53 additions and 0 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

53
doxygen/translation.dox Normal file
View File

@ -0,0 +1,53 @@
/**
@page translation Translations / Internationalization
@section lang-available Available Languages
The development, documentation and default application language of gds-render is English.
Translations of GUI and console output exist for the following locales/languages
- de German (Deutsch)
- ja Japanese (日本語) (Work in progess)
On how to add new languages, see @ref lang-add
@section lang-internals Internals
This progamm uses gettext for translations.
@subsection lang-coding Make Strings Translatable in Code
Only strings, that are marked as translatable are actually available for translation and shown in the user's language.
All other text is displayed as written in the source files.
@subsubsection lang-add-glade Make GUI Elements in Glade Files Translatable
Text inside Glade's GUI files can be made translatable by checking the *translatable* option for the specific text property.
The following image shows the label property of a button. Notice the checked Translatable option.
@image html translate-glade.png
@image latex translate-glade.png
@subsubsection lang-add-c Make C Strings Translatable
In order to make strings in C code translatable, the following header has to be included:
@code
#inlcude <glib/gi18n.h>
@endcode
This header provides a few macros useful for translation. The most important one is the function-like macro
@code
_("Text here")
@endcode
which is just a underline character.
You can use this marco to encapsulate all static strings that shall be translated. The whole expression is still usable like any other string (except for compile time concatenation, like: "This is foo" " and this is bar")
Example:
@code
printf(_("The value of foo is %d\n"), foo);
@endcode
Text that must not be translated can be encapsulated inside a N_ macro like
@code
N_("This has to stay in English")
@endcode
The N_ macro is basically an empty macro and just for visualization.
@subsection lang-add Add a New Language
*/