Magento Translation Community Project

·

·

Today, I joined Magento 2 architect and community engineering team member Volodymyr Kublytskyi and other community members in the first meeting for the new Magento translation community project.

Screenshot Magento Translation Weekly Video Call

I’ve been maintaining the German Magento 2 translation for Switzerland (de_CH) on Github since the beginning of Magento 2. It’s a fork (modified copy) of the German translation for Germany (de_DE).

At Magento Live Europe in Barcelona last year, I already became aware of crowdin.com/project/magento-2 and today, as per my request, Volodymyr created the de_CH locale.

It’s not yet clear how we can best use the existing German translation in combination with CrowdIn, but I will either update this post once I found out or you can read this Github issue for the answer.

Screenshot CrowdIn: de_DE and de_CH

To give you a general overview of translation in Magento, here’s a post from Lori Krell from Magento which was originally posted on community.magento.com:

Merchants use Magento world-wide to create and manage their storefronts. To provide the best experience for all merchants and customers, we need to take into account national and cultural aspects and regional traditions. Magento has extensibility and customizability built-in in its DNA. It’s no surprise that it offers full support for multiple locales and languages.

Localization vs Internationalization

However, localization is one of the areas in software development that looks easy at first glance but is extremely complex to get it right. Misunderstanding and underestimation of the task begins from the start with terminology. Pretty naive but widely used is segregation of localization (l10n) and internationalization (i18n): i18n usually means software translation, and l10n is UI translation such us numbers, dates, and currencies.

Internationalization (i18n) is a set of architectural, engineering practices, and approaches for building software. These components help developers adapt software to specific regional requirements such as language, number and date formats, sort order, etc. without the need of explicit handling in code.

Localization (l10n) is a process of implementing requirements for a particular region. One of the main steps in localization is translation of the user interface for text strings, button names, etc. Content loads based on locale detection.

Globalization

Another related term is globalization (g10n) – a process of making software ready to be used in multiple countries. It includes internalization and localization, but expands beyond engineering tasks to cover business aspects such as marketing, sales, legal, support, etc. Software development may not initially include globalization, but Magento is an e-commerce solution that is used by businesses that operate around the globe. As such, g10n should always be considered as a requirement. Globalization has direct impact on how order management, billing, shipping and taxation should be implemented and what extensions and customization points are required.

Magento support of g10n, 18n, and l10n

Magento has a lot to offer in g10n, i18n, and l10n to provide the best in class solution for business wherever it operates.  But we also realize that support and processes can be improved. To that end, Magento Community Engineering is starting a new project dedicated to localization capabilities in Magento. As translation is one of the greatest concerns for localization, we will start with improving the current process and enable more possibilities for the Magento Community to have impact on which translation packages are available and how they may be delivered.

Magento Translations Project

Magento supports translation packages which are first class components on a par with modules and themes. Translation packages are distributed as Composer packages and contain content declaration XML and CSV file with translations.

To receive, collect, and review translation strings from all interested contributions, Magento has a public project available through the translation platform Crowdin. Everyone can submit translations of terms, UI strings, button names, etc.

With the translations collected and approved, we needed a straight-forward process to fetch translations as Composer packages. Any developer may download available translations and pack them into language package by their own. However, the translation process at Crowdin further complicates the packages due to multiple version releases of Magento that are in use and unclear processes for proofreading and approving translations.

We are simplifying the translation process and develop tools that allow us to automate a lot of routine tasks. We also hope the developed tools will help translate not only Magento but also 3rd party Magento modules.

Translation Tools and Processes

The high-level concept is to have single translation branch at Crowdin that will include all phrases from all released Magento versions. The branch allows us to generate language packages from Crowdin that are compatible with all available Magento versions. This significantly simplifies translation and release management and seems a reasonable tradeoff.

All translations will be synchronized to GitHub. We plan to develop tools allowing Community members to contribute translations directly from GitHub.

To solve issues with translation approvals, we are going to accept all proposed phrases from the beginning. To reduce impacts of mistakes, a new CICD infrastructure will produce daily builds of Composer packages. The frequency of releases provides quick updates as issues are discovered, providing fast corrections and new additions. Using a single master branch with translation for all Magento versions will allow us to use GitHub and Crowding branches to stabilize releases for particular languages. At later stages of the project, we will switch from “accept everything” to a voting model.

Help us get started!

For this initial step, we have a lot work to do. And to get started, we seek the support and aid of the Magento Community. This project requires extensive help and contributions to succeed, and you are one of the best and supportive Open Source communities! The Magento Community has experts in many languages and has valuable experience, understanding, and feedback and help us implement all required tools.

We are inviting all volunteers to provide any kind contribution possible to the project. Help and contribute as a translator, an architect, or developer that enjoys coding in green-field projects while selecting all of the libraries, frameworks, or languages that you dreamed to try. As we are only starting, we are open to any ideas and proposals and will are thankful for any help with building and prioritizing the backlog.

 Meetings and Slack

The kick-of meeting was on Tuesday, 26 March 2019 at 17:00 CET, 11am CDT. The meetings will continue weekly at the same time and Bluejeans link. Follow project progress on Twitter by following the #MagentoTranslation hashtag. And join the #translations Slack channel (or self signup).

Planning for the Future

Once we will establish a transparent process for translations, we can continue to even more interesting tasks and topics!

  • Improvement of translation formats. Hey, why not use ICU format in phrases with all it benefits? Why not use some more standard file format (gettext, xliff) to allow translation with software of your choice?
  • Performance improvement of applying translations in Magento.
  • QA automatization and providing more context for translators, which will require research and non-trivial engineering solutions. Just imagine how cool it may be not only seeing phrases to translate with a screenshot of where this phrase appears! Or even pick a phrase that should be translated and navigate to place where it is rendered in a live Magento instance!

And finally, with having good translation coverage, we will be able to start work on another aspects of internationalization and globalization improvements.

But to start dreaming on such features we firstly need to build a solid base. Make Magento fluently speak your native language!