Often, organizations have big plans for multilingual Drupal. A website might be launched with only one or two languages in place, but the infrastructure is there to add more languages as soon as the translations are ready. Even if you already have two languages in place, there are many steps to adding an additional language.
Note that you'll definitely want to test out these steps in a development environment rather than doing them on your production site. This assumes that you already have a couple languages enabled on your website, and that you're just adding an extra language.
Adding the Language
First, you'll need to tell Drupal about the new language. Go to Configuration > Languages and click Add language. Find the language and add it.
Ensure that the language switcher still works as expected (design and functionality). You might have some code in a custom module that modifies the language switcher to hide the active language, or some CSS that assumes that there are only a couple languages on the website.
Before you start translating the user interface, you'll want to import existing translations of UI elements from localize.drupal.org. If you already have the Localization Update module enabled, you can just go to Configuration > Regional and language > Translation interface > Update. Otherwise, download and enable the module so that you can easily pull in existing translation files for your new language.
Adding Custom Translations
Make a list of needed custom translations (spreadsheet). You might not need to translate all the strings in the administrative user interface, in this case you can focus on the front-end interface that appears to anonymous users. You can either add these manually at Configuration > Regional and language > Translation interface or import them from a .po file Configuration > Regional and language > Translation interface > Import.
Translate the Content
If you have a lot of content, the hardest part of adding a language is going to be translating all that content.
- Create a spreadsheet of the nodes that you need to translate. Make sure you have the node ID of each item in your spreadsheet.
- Send the spreadsheet to your translators. Make sure that they add each field in a separate column in the spreadsheet.
- Check which content translation method you're using for each content type: it could be not translated, use node-level translation or field-level translation (provided by the entity translation module).
- Add content translations manually or using the Migrate module.
- Menus: For language-specific menu items, add a new menu item for the new language. Otherwise, you can translate the title or title and link of each menu item.
- Blocks: Check block-visibility logic, if you have a block per language, add the new blocks for your new language
- Taxonomy Terms: Add translations of taxonomy term for localized vocabularies. You'll want to edit each vocabulary to check the translation settings.
- Variables: For things like the site title and slogan, these are variables that you can translation by going to the "Site Information" config page and switching the site into your new language.
At this point, you'll need to test your site to see which elements are missing in your new language. Depending on how the site was originally configured, you might have Views, Node Queues, Panels, and other elements which you'll need to clone and adjust for your new language.
Depending on how much configuration and content you have on your site, adding a new language can be a huge site building task, so make sure you do an audit of how much work this will be before you start!