ARK2/Localization

From ARK
Revision as of 16:46, 29 October 2016 by John Layt (talk | contribs) (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...")

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

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 using ICU, for collation, formatting and parsing
  • The Symfony Translation component for translation
  • Punic, using CLDR, as a source of some translations


A key to providing Ark-As-A-Service will be translating the user interface and schemas into as many languages as possible to maximise the potential user base. ARK does not have the tools to make this process easy to perform or manage, and it would be a waste of resources to build them. It is recommended to use one of the existing online open-source translation projects to crowd-source the translations. This will allow interested parties and potential clients to translate ARK for themselves and to grow a local community to support ARK in their country.

Changes will be made to the translation process to bring ARK into line with industry best practices and tooling, allowing for common features such as correct plural forms.

  • Translations would be performed using the Symfony Translation package
  • Translations will be stored and transmitted in the XLIFF file format
  • Translations will use keys (similar to current, but expanded)
  • Translations will be split in a number of catalogues:
    • Core interface
    • User interface
    • Admin interface
    • Schema (one for each created)

Inparticular

  • Markup table will be dropped entirely
  • Aliases will be kept as table-driven translations using a custom catalogue loader
  • A custom Address Book catalogue loader will be used to provide names via the translation system


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:

None of these quite match our requirements, but may be adapted to achieve our workflow.