Difference between revisions of "ARK2/Localization"
From ARK
(Created page with "= Localization = Localization is the process of translating the user interface and data into the language and formats of the user. ARK2 uses the following components for loc...") |
(→Localization) |
||
Line 4: | Line 4: | ||
ARK2 uses the following components for localization and translation: | ARK2 uses the following components for localization and translation: | ||
− | * The [http://symfony.com/doc/current/components/intl.html Symfony Intl] component as a wrapper for the [http://php.net/manual/en/book.intl.php PHP Intl] extension and | + | * The [http://symfony.com/doc/current/components/intl.html Symfony Intl] component as a wrapper for the [http://php.net/manual/en/book.intl.php PHP Intl] extension and ICU, for collation, formatting and parsing |
* The [http://symfony.com/doc/current/components/translation.html Symfony Translation] component for translation | * The [http://symfony.com/doc/current/components/translation.html Symfony Translation] component for translation | ||
* [http://punic.github.io/ Punic], using CLDR, as a source of some translations | * [http://punic.github.io/ Punic], using CLDR, as a source of some translations | ||
+ | == Translation == | ||
− | + | * Translations are stored and transmitted in the XLIFF file format | |
− | + | * Translations uses keys rather than source strings | |
− | |||
− | * Translations | ||
− | |||
− | * Translations | ||
* Translations will be split in a number of catalogues: | * Translations will be split in a number of catalogues: | ||
** Core interface | ** Core interface | ||
Line 20: | Line 17: | ||
** Admin interface | ** Admin interface | ||
** Schema (one for each created) | ** Schema (one for each created) | ||
+ | * Actor and User IDs are translated using a custom loader from the database | ||
− | + | The Admin Interface provides a basic interface for the maintaining of translation. Export and import interfaces are provided for the ???? online translation community. | |
− | |||
− | |||
− | |||
+ | == Design Decisions To Be Made == | ||
Potential online portals include: | Potential online portals include: |
Revision as of 16:58, 29 October 2016
Localization
Localization is the process of translating the user interface and data into the language and formats of the user.
ARK2 uses the following components for localization and translation:
- The Symfony Intl component as a wrapper for the PHP Intl extension and ICU, for collation, formatting and parsing
- The Symfony Translation component for translation
- Punic, using CLDR, as a source of some translations
Translation
- Translations are stored and transmitted in the XLIFF file format
- Translations uses keys rather than source strings
- Translations will be split in a number of catalogues:
- Core interface
- User interface
- Admin interface
- Schema (one for each created)
- Actor and User IDs are translated using a custom loader from the database
The Admin Interface provides a basic interface for the maintaining of translation. Export and import interfaces are provided for the ???? online translation community.
Design Decisions To Be Made
Potential online portals include:
- Transifex - Market leader, but now closed source, offers free hosting to open source projects, large community, great features and automated workflow, API, Github integration, etc.
- Zanata - A Red Hat open-source project (in response to Transifex going closed) with free hosting and large existing community, or can be self-hosted (JBoss based), great features and automated workflow, API, Github integration, etc. No RTL?
- Weblate - An open-source project with free and paid-for hosting, but no central community, or can be self-hosted, good features, API, Github integration, etc. Django based.
- Translation Project - A FSF open-source project with free hosting and large existing community, but very basic features and manual workflow.
- Pootle - An open-source project, self-hosted, Django based
Zanata would seem the preferred option for a hosted service, but Weblate might be better if self-hosting.
A number of options exist for automating extraction of Symfony translations, or for allowing interactive editing inside the admin panel or profiler panel:
- https://jolicode.com/blog/translation-workflow-with-symfony2
- https://github.com/deanc/silex-web-translator
- https://github.com/Aecf/TranslatorToolBundle
- https://github.com/instaclick/TranslationEditorBundle
- https://github.com/lexik/LexikTranslationBundle
- https://github.com/manuelj555/ManuelTranslationBundle
None of these quite match our requirements, but may be adapted to achieve our workflow.