Added a translation howto
A short overview of groups portal related translation tools and process. Change-Id: I4ea83b684ef070b539302b6afc57735b60489fec
This commit is contained in:
parent
d2366b1ca4
commit
91af384eaa
104
doc/translation.md
Normal file
104
doc/translation.md
Normal file
@ -0,0 +1,104 @@
|
|||||||
|
Groups portal translation howto
|
||||||
|
===============================
|
||||||
|
|
||||||
|
Overview
|
||||||
|
--------
|
||||||
|
|
||||||
|
The Groups portal is based on Drupal Commons, which is based on Drupal distribution,
|
||||||
|
extended with community features and functionality. If you want to translate
|
||||||
|
the user interface to your local language basically you need to follow the
|
||||||
|
same rules that are used for a standard Drupal deployment. As Drupal is based
|
||||||
|
on modules, you need to consider the concept that you are translating the strings
|
||||||
|
defined in those modules. Upstream modules are usually translated
|
||||||
|
by the Drupal community, so in our case you need to focus on your custom
|
||||||
|
modules only, that are located under modules/groups directory.
|
||||||
|
|
||||||
|
### Directory structure
|
||||||
|
|
||||||
|
[profiles/groups]
|
||||||
|
...
|
||||||
|
translations/
|
||||||
|
templates/ - translation template files (.pot)
|
||||||
|
<langcode>/ - directory with langauge specific .po files
|
||||||
|
groups_<name>-<version>.po - translated module resources
|
||||||
|
scripts/
|
||||||
|
pot-extract.sh
|
||||||
|
pot-lang.sh
|
||||||
|
|
||||||
|
### Translation process
|
||||||
|
|
||||||
|
Localization files can be found under translations/<langcode> directory.
|
||||||
|
If you are using a deployed portal, full path is
|
||||||
|
profiles/groups/translations/<langcode>. If your language is not present
|
||||||
|
there, you need to create the skeleton, see the `how to add a new language`
|
||||||
|
section.
|
||||||
|
|
||||||
|
After you have successfully modified the .po files, either manually or using a tool
|
||||||
|
like PoEdit, simply follow the steps of the Contribution Guide and
|
||||||
|
send your patch for a review.
|
||||||
|
|
||||||
|
If you want to test the changes locally, follow the steps of
|
||||||
|
`Import updated .po files into Drupal`
|
||||||
|
|
||||||
|
### Add a new language
|
||||||
|
|
||||||
|
$> bash scripts/pot-lang.sh <langcode>
|
||||||
|
|
||||||
|
`Notice` the language codes are based on ISO 639 standard.
|
||||||
|
|
||||||
|
### Update translation template files (.pot)
|
||||||
|
|
||||||
|
When either a new feature is added to your custom module, or some interface elements
|
||||||
|
are changed in module files, it is important to regenerate the translation
|
||||||
|
template files.
|
||||||
|
|
||||||
|
$> bash scripts/pot-extract.sh
|
||||||
|
|
||||||
|
Carefully check the output of this script. If you experience
|
||||||
|
any lines marked with error, try to solve the issue in Drupal
|
||||||
|
module, and upload a patch with a resolution to groups repository.
|
||||||
|
|
||||||
|
### Import updated .po files into Drupal
|
||||||
|
|
||||||
|
$> drush l10n-update-refresh
|
||||||
|
$> drush l10n-update
|
||||||
|
|
||||||
|
This two commands will refetch the .po files and import the translation strings
|
||||||
|
into Drupal database.
|
||||||
|
|
||||||
|
### FAQ
|
||||||
|
|
||||||
|
#### What to do when an interface element is missing from po files?
|
||||||
|
|
||||||
|
Elements rendered by Drupal portal can be originated from multiple places:
|
||||||
|
a content or a translatable string in Drupal module. If you
|
||||||
|
found the element in a module, but it is not covered by the t() function
|
||||||
|
the solution is easy: cover the string with t(), regenerate the .pot files
|
||||||
|
and synchronize the .po file content. (PoEdit and GetText utils are
|
||||||
|
supporting the merge process, so you need to translate the updated
|
||||||
|
resources only, and old translations won't lost)
|
||||||
|
|
||||||
|
`Example`
|
||||||
|
|
||||||
|
-- function groups_homepage_views_pre_build(&$view) {
|
||||||
|
-- ...
|
||||||
|
-- $view->display_handler->set_option('title', 'Upcoming Events');
|
||||||
|
|
||||||
|
+++ function groups_homepage_views_pre_build(&$view) {
|
||||||
|
+++ ...
|
||||||
|
+++ $view->display_handler->set_option('title', t('Upcoming Events'));
|
||||||
|
|
||||||
|
References
|
||||||
|
----------
|
||||||
|
|
||||||
|
[1] OpenStack Developer's Guide
|
||||||
|
http://docs.openstack.org/infra/manual/developers.html
|
||||||
|
|
||||||
|
[2] OpenStack Groups Portal Contribution Guide
|
||||||
|
https://groups.openstack.org/content/openstack-groups-portal-contribution-guide
|
||||||
|
|
||||||
|
[3] Drupal Localization
|
||||||
|
https://localize.drupal.org
|
||||||
|
|
||||||
|
[4] ISO 639 Language codes
|
||||||
|
http://people.w3.org/rishida/names/languages.html
|
Loading…
Reference in New Issue
Block a user