Directus is maintained by a global community of contributors who speak many different languages. Not only does Directus allow you to manage multilingual content, the App itself also supports multiple languages.
# App Translations
Directus supports internationalization across its entire Admin App. Many languages are currently supported, with more being added all the time. You can add or refine any languages through our CrowdIn (opens new window) integration.
# Schema Translations
Directus uses database mirroring to dynamically pull in the technical names of your schema's tables (Collections) and columns (Fields), prettifying and formatting them for display throughout the App. You can then add additional schema translations to further support different languages.
Renaming Collections and Fields
If your project uses more technical table or column names (eg:
f_name), you can also use schema translations to rename Collections and Fields to something more intuitive (eg:
# Content Translations
One of the most important features in Directus is the ability to manage multilingual content. While there are many different ways to accomplish this, such as creating standard fields in the parent collection for each language, it is more extensible to use our relational translation fields. These allow you to dynamically manage content in as many languages as is required, using a more intuitive interface.
Mixing standard and translated fields also allows language-agnostic data (such as dates or toggles) to remain within the parent collection.
# Integrating with Translation Services
There are two common ways to integrate with a third-party translation service.
For human-powered translation services, you can create a dedicated Role with limited permissions to properly scope their access to only the content they will be translating. You can also create Workflows that require a certain internal Role to then approve the changes.
For machine-powered translation services, you could use the Directus API and Event Hooks to integrate the two platforms together. In this way, when your users create or update new content, an event hook can fire that fetches translations from the third-party service, saving that data into the translations.
Yet another option would be to create a Custom Interface that integrates with the third-party service to fetch translation in real-time.