23
Building Multilingual Websites in Drupal 7 Robin Puga Language embodies the intellectual wealth of the people who use it. ~ Kenneth Hale

Building Multilingual Websites in Drupal 7

Embed Size (px)

DESCRIPTION

We will share our experiences developing bilingual websites as well as adding a second language to an existing unilingual website. Building multilingual websites in Drupal has evolved over the years. New to version Drupal 7, we now have field and entity translations in addition to the trusted node-level translations. In this presentation we will cover: what’s new for multilingual websites in Drupal 7, differences between field, entity and node level translations, techniques for translating various parts of your site, experiences working with translators, and building multilingual websites while being a monoglot.

Citation preview

Page 1: Building Multilingual Websites in Drupal 7

Building Multilingual Websitesin Drupal 7

Robin Puga

Language embodies the intellectual wealth of the people who use it. ~ Kenneth Hale

Page 2: Building Multilingual Websites in Drupal 7

Overview

● Covering the basics

● Multilingual websites in Drupal 7

● Working with translators

● What’s happening in Drupal 8

http://affinitybridge.com

Page 3: Building Multilingual Websites in Drupal 7

Basics

● Gettext is an internationalization (i18n) system used for writing multilingual programs

● Drupal Code $str = t("My name is @name.\n", array('@name' => $user->name));

● fr.po file #: src/name.module:36 msgid "My name is @name.\n" msgstr "Je m'appelle @name.\n"

http://affinitybridge.com

Page 4: Building Multilingual Websites in Drupal 7

Blasts in the past - Drupal 5 & 6

http://affinitybridge.comhttp://s.coop/d6convertlang

Page 5: Building Multilingual Websites in Drupal 7

Drupal 7

● Definitive Guide by Gábor Hojtsyhttp://hojtsy.hu/multilingual-drupal7Read it!

● Books Drupal 7 Multilingual SitesBy Kristen Pol

http://affinitybridge.com

Page 6: Building Multilingual Websites in Drupal 7

Drupal 7

● University of Ottawa Calendarhttp://uocal.uottawa.ca English / French

● Participediahttp://Participedia.net English then German

http://affinitybridge.com

Page 7: Building Multilingual Websites in Drupal 7

Modules for Drupal 7

● Locale module in core

● Internationalization or i18n module

● Localization Update module

● Entity Translation module

http://affinitybridge.com

Page 8: Building Multilingual Websites in Drupal 7

Setup for Multiple Languages

● Add languages

● Import the .po files

● Configure detection and selection

● Configure your site content types

http://affinitybridge.com

Page 9: Building Multilingual Websites in Drupal 7

Node level translations

● Now using Entity Translation module

● Setting up the content type

● Synchronizing fields

● Translating content using translate tab

●http://affinitybridge.com

Page 10: Building Multilingual Websites in Drupal 7

Entity translations

● Allows translations for entities in Drupal

● User accounts fields

● Comments

● Any entities

http://affinitybridge.com

Page 11: Building Multilingual Websites in Drupal 7

Field level translations

● One node with translatable fields

● Use case: Products in Commerce

http://affinitybridge.com

Page 12: Building Multilingual Websites in Drupal 7

Other Modules for Drupal 7

● Variable module

● Translation Table module

● Potx module

● Localization Client module

● Translation Helpers modulehttp://affinitybridge.com

Page 13: Building Multilingual Websites in Drupal 7

Translating your site

● Menus● Same page hierarchy - translate menu links● Different page hierarchy options:

● One menu per language, or

● Add menu links in different languages

● Blocks ● Now translatable. Works great for static blocks

http://affinitybridge.com

Page 14: Building Multilingual Websites in Drupal 7

Translating your site

● Taxonomy terms● Localize - one term with translated title

● Translate - different terms per language

● Views● Filter content by user language● Translate view titles via Translation Interface

http://affinitybridge.com

Page 15: Building Multilingual Websites in Drupal 7

Translation Interface

● Overview● Translation Table● Translate - find strings & translate them● Import - import .po files● Strings - refresh translation strings● Update - grabs po files and updates strings● Export - export po files from db strings● Extract - export po files from code files

http://affinitybridge.com

Page 16: Building Multilingual Websites in Drupal 7

Potential Pitfalls

● Indexing in Solr● Index language fields and filter views by language

fields.

● Adding new language to existing site● Synchronized fields created in English that have

translations added later can cause problems.

●http://affinitybridge.com

Page 17: Building Multilingual Websites in Drupal 7

Code Example

Grab this install profile for En/Fr with tools:

https://github.com/robinpuga/multilang

drush make --working-copy

--translations=fr stub.make ../multilang_site

http://affinitybridge.com

Page 18: Building Multilingual Websites in Drupal 7

● Translation workflows offline ○ Working with .po files○ Can be difficult to understand string context

■ “Home” = house or homepage

● Translation workflows online○ Localization Client ○ Access to Translation Tools○ Identifying content that needs translation

Working with Translators

http://affinitybridge.com

Page 19: Building Multilingual Websites in Drupal 7

Basics

● Gettext is an internationalization (i18n) system used for writing multilingual programs

● Drupal Code $str = t("My name is @name.\n", array('@name' => $user->name));

● fr.po file #: src/name.module:36 msgid "My name is @name.\n" msgstr "Je m'appelle @name.\n"

http://affinitybridge.com

Page 20: Building Multilingual Websites in Drupal 7

.Po files beyond the basics

● Translation Contexts $str = t("Home", array(), array('context' => 'Navigation');

● Plural strings // These strings are run through the t() function. $str = format_plural($count, ‘1 comment‘, ‘@count comments’);

● fr.po file for plurals #: src/name.module:36msgid "1 comment"msgid_plural "@count comments"msgstr[0] "1 commentaire"msgstr[1] "@count commentaires"

http://affinitybridge.com

Page 21: Building Multilingual Websites in Drupal 7

What’s happening in Drupal 8

● Much more in core

● Much of i18n functionality rolled into core

● Better language detection and config

● Name transliteration for machine names

http://affinitybridge.com

Page 22: Building Multilingual Websites in Drupal 7

Where to find more info & support

● Follow Gábor - http://hojtsy.hu/

● https://localize.drupal.org/news

● https://groups.drupal.org/internationalization

● #drupal-i18n (i18n = internationalization)

● #drupal-l10n (l10n = localization)

http://affinitybridge.com

Page 23: Building Multilingual Websites in Drupal 7

[email protected]

Questions?