Top Banner
Multilingual Content in Drupal 7 and 8 Suzanne Kennedy
93
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Multilingual Content in Drupal 7 & 8 at DrupalCon Munich

Multilingual Content in Drupal 7 and 8

Suzanne Kennedy

Page 2: Multilingual Content in Drupal 7 & 8 at DrupalCon Munich

Multilingual Content in Drupal 7 and 8

Page 3: Multilingual Content in Drupal 7 & 8 at DrupalCon Munich

About Me

Co-founder of Evolving Web

Training, Development, Consulting

evolvingweb.ca

@suzanne_kennedy

Multilingual Content in Drupal 7 and 8

Page 4: Multilingual Content in Drupal 7 & 8 at DrupalCon Munich

Multilingual Drupal Training

evolvingweb.ca/training

Page 5: Multilingual Content in Drupal 7 & 8 at DrupalCon Munich

1. Getting Started• Multilingual Requirements• What is Multilingual Drupal?• Types of Drupal Text

2. Translating Content• The Lifecycle of Drupal

Content• Translation Methods• Planning Multilingual Content

3. Content Translation Workflows• Why it’s Important• Translation Management

Modules

4. What’s Next?• Challenges in Drupal 7

Multilingual• Learn More & Contribute

Multilingual Content in Drupal 7 and 8

Page 6: Multilingual Content in Drupal 7 & 8 at DrupalCon Munich

Multilingual Requirements

Page 7: Multilingual Content in Drupal 7 & 8 at DrupalCon Munich

Why Multilingual?

• Reach a wider audience• Expand to new markets• Improve usability• Search engine optimization• Government regulations• Company policy

Page 8: Multilingual Content in Drupal 7 & 8 at DrupalCon Munich

Personnel

• User-Interface Translators

• Content Translators

• QA for each Language

• Translation Manager

Resources

• Contributed Translations (localize.drupal.og)

• Machine Translation

Multilingual Resources

Page 9: Multilingual Content in Drupal 7 & 8 at DrupalCon Munich

• aka i18n• Developing a website that enables localization

of content and other elements. • Separating elements that should be localized

so they can be specified for each locale.

Internationalization

Page 10: Multilingual Content in Drupal 7 & 8 at DrupalCon Munich

• aka l10n• Process of adapting a website for a certain

locale including:• Translation of text and graphics• Numeric, date and time formats• Currency• Time zones• Legal requirements

Localization

Page 11: Multilingual Content in Drupal 7 & 8 at DrupalCon Munich

What kind of site are you building?

• How many languages do you need to support?• Does the user interface need to be fully

translated?• Do you have content in all languages? Is all the

content translated?• What happens to untranslated content?

Page 12: Multilingual Content in Drupal 7 & 8 at DrupalCon Munich

What is Multilingual Drupal?

Page 13: Multilingual Content in Drupal 7 & 8 at DrupalCon Munich

Foreign-language site

Page 14: Multilingual Content in Drupal 7 & 8 at DrupalCon Munich

Multilingual Site

Page 15: Multilingual Content in Drupal 7 & 8 at DrupalCon Munich

Multilingual Site with Translation

Page 16: Multilingual Content in Drupal 7 & 8 at DrupalCon Munich

Multilingual Modules

• Core:• Locale• Content Translation

• Contrib:• i18n (Internationalization)• Entity Translation

Page 17: Multilingual Content in Drupal 7 & 8 at DrupalCon Munich

Types of Text in Drupal

Page 18: Multilingual Content in Drupal 7 & 8 at DrupalCon Munich

User interface (User-Defined)

Types of TextUser interface (Code)

Content

Variables

i18n Strings

Page 19: Multilingual Content in Drupal 7 & 8 at DrupalCon Munich

Built-in interface (User-Defined)Built-in interface (Code)

ContentVariables

i18n Strings

i18n Strings

Translation Interfacesin Drupal

Page 20: Multilingual Content in Drupal 7 & 8 at DrupalCon Munich

Built-in interface (User-Defined)

Types of TextBuilt-in interface (Code)

Content

Variables

i18n Strings

Page 21: Multilingual Content in Drupal 7 & 8 at DrupalCon Munich

Multilingual Content

Page 22: Multilingual Content in Drupal 7 & 8 at DrupalCon Munich

What content experience are you building?

Page 23: Multilingual Content in Drupal 7 & 8 at DrupalCon Munich

Fully Symmetric Experience

PoilshEnglish

Page 24: Multilingual Content in Drupal 7 & 8 at DrupalCon Munich

Asymmetric ExperienceEnglishFrench

Page 25: Multilingual Content in Drupal 7 & 8 at DrupalCon Munich

What about untranslated content?

Page 26: Multilingual Content in Drupal 7 & 8 at DrupalCon Munich

Show Untranslated Content

Page 27: Multilingual Content in Drupal 7 & 8 at DrupalCon Munich

EnglishFrench

Hide Untranslated Content

Page 28: Multilingual Content in Drupal 7 & 8 at DrupalCon Munich

Content Translation Methods

Page 29: Multilingual Content in Drupal 7 & 8 at DrupalCon Munich

Content Translation Methods

Node-Level Translation Field-Level Translation

Node 1(English)

Node 2(French)

Node 3(German)

Node 1

Title (English)

Title (French)

Title (German)

Image

Title (French)

Title (English)

Title (German)

Image Image Image

Page 30: Multilingual Content in Drupal 7 & 8 at DrupalCon Munich

Node-Level Translation

Page 31: Multilingual Content in Drupal 7 & 8 at DrupalCon Munich

• Content Translation module (Drupal core)• New node for each translation• Nodes are mapped together in a translation

set

Node-Level Translation

Page 32: Multilingual Content in Drupal 7 & 8 at DrupalCon Munich

Translating Nodes

Node 1(English)

Node 2(French)

tnid = 1 tnid = 1

Node 3(German)

tnid = 1

Translation Set

Title (English)

Title (French)

Title (German)

Image Image Image

Page 33: Multilingual Content in Drupal 7 & 8 at DrupalCon Munich

Benefits of Node-Level Translation

• Asymmetric menus per language• Language-specific features (flagging, sign-up,

moderation)• Curation of content per language• Works for node-based functionality (i.e. search)• Use built-in ‘Flag as translation needs update’

Page 34: Multilingual Content in Drupal 7 & 8 at DrupalCon Munich

• Everything is language-specific by default• Need to ‘synchronize’ data between nodes• Too many nodes• Doesn’t work for modelling language-neutral

things (groups of people, products, data)• Only works for nodes

Drawbacks of Node-Level Translation

Page 35: Multilingual Content in Drupal 7 & 8 at DrupalCon Munich

Translating a Node

Page 36: Multilingual Content in Drupal 7 & 8 at DrupalCon Munich

Language-Specific Properties

Page 37: Multilingual Content in Drupal 7 & 8 at DrupalCon Munich

Properties per Translation

Node 1(English)

Node 2(French)

tnid = 1 tnid = 1

Node 3(German)

tnid = 1

Translation Set

Title (English)

Title (French)

Title (German)

Image Image Image

MenuSettings

Published Date

MenuSettings

Published Date

MenuSettings

Published Date

Page 38: Multilingual Content in Drupal 7 & 8 at DrupalCon Munich

Field-Level Translation

Page 39: Multilingual Content in Drupal 7 & 8 at DrupalCon Munich

• Entity Translation module (contrib) provides the UI

• Translation of fields instead of nodes • Fields are translatable in core

Field-Level Translation

Page 40: Multilingual Content in Drupal 7 & 8 at DrupalCon Munich

Translating Fields

A single node, with translations of certain fields.

Title (English)

Node 1

Title (French)

Title (German)

Body (English)

Body (French)

Body (German)

Image Author

Post Date Facebook Likes

Language-Specific Fields Language Independent

Page 41: Multilingual Content in Drupal 7 & 8 at DrupalCon Munich

Language-Independent Properties

• Flags

• Voting Data

• Signups

• Nodequeue or Draggable Views Data

• Moderation / Scheduler settings

• Entity references

• Panels nodes’ layout

• Content Access

• Social Media Integration (Add This)

Page 42: Multilingual Content in Drupal 7 & 8 at DrupalCon Munich

Benefits of Field-Level Translation

• Better model for language-neutral content:• No need to sync properties• 1 node ID

• Works with all kinds of entities:• Taxonomy terms, users, etc.

• It’s the future!

Page 43: Multilingual Content in Drupal 7 & 8 at DrupalCon Munich

Drawbacks of Field-Level Translating

• Doesn’t work with core search or revisions• Different UI for translators to learn• Not compatible with node options or

multilingual select features from i18n• Doesn’t work with ‘Flag as needs translation

update’• Properties can’t be translated

Page 44: Multilingual Content in Drupal 7 & 8 at DrupalCon Munich

Setting up Field Translationfor a Content Type

Page 45: Multilingual Content in Drupal 7 & 8 at DrupalCon Munich

Setting up Field Translation

Page 46: Multilingual Content in Drupal 7 & 8 at DrupalCon Munich

Translating the Title

drupal.org/project/title

Page 47: Multilingual Content in Drupal 7 & 8 at DrupalCon Munich

Field Translation UI

Page 48: Multilingual Content in Drupal 7 & 8 at DrupalCon Munich

Field Translation UI

Page 49: Multilingual Content in Drupal 7 & 8 at DrupalCon Munich

Examples: Field vs. Node-Level Translation

Page 50: Multilingual Content in Drupal 7 & 8 at DrupalCon Munich

Example: Conference Session

Page 51: Multilingual Content in Drupal 7 & 8 at DrupalCon Munich

Example: Carousel Item

Page 52: Multilingual Content in Drupal 7 & 8 at DrupalCon Munich

Example: Webform

Page 53: Multilingual Content in Drupal 7 & 8 at DrupalCon Munich

Content Translation Methods

Node-Level Translation Field-Level Translation

Node 1(English)

Node 2(French)

Node 3(German) Node 1

Title (English)

Title (French)

Title (German)

Image

Title (French)

Title (English)

Title (German)

Image Image Image

Page 54: Multilingual Content in Drupal 7 & 8 at DrupalCon Munich

Life-cycle of a node

Node 1

Node Creation

User ‘Likes’ the Node

Node 1

Node 1

Update

Node 1

+ CommentNode 1

Flag as Offensive

Node 1

Published

Node 1

Unpublished Node 1

Deleted

xCSV

Page 55: Multilingual Content in Drupal 7 & 8 at DrupalCon Munich

Field vs. Node Translation:Conclusion

• Field-level translation is the right data model for most use cases

• Will be default method for D8 core• You can use it today on D7, but only if you’re

not afraid to get your hands dirty

Page 56: Multilingual Content in Drupal 7 & 8 at DrupalCon Munich

Translating Other Entity Types

Page 57: Multilingual Content in Drupal 7 & 8 at DrupalCon Munich

Translate Core EntitiesTranslation of entities from core modules

Page 58: Multilingual Content in Drupal 7 & 8 at DrupalCon Munich

Translate Users

Permissions

Configure Fields Translate Users

Page 59: Multilingual Content in Drupal 7 & 8 at DrupalCon Munich

Translate Users: Use Cases

• Team member profiles• Multilingual community site• Users who offer a service to users in more than

one language

Page 60: Multilingual Content in Drupal 7 & 8 at DrupalCon Munich

Translate Users: Drawbacks

• Single permission for users (can translate any user entity)

• UI is not self-explanatory

Page 61: Multilingual Content in Drupal 7 & 8 at DrupalCon Munich

Translate TermsConfigure Fields

Permissions

Translate Terms

Page 62: Multilingual Content in Drupal 7 & 8 at DrupalCon Munich

Translate Terms:Use Cases

• Any vocabulary that is symmetric across languages:• Categories• Destinations• Medical Topics

Page 63: Multilingual Content in Drupal 7 & 8 at DrupalCon Munich

Translate Terms:Drawbacks

• Time-consuming to use translation UI• Single permission for translating all

vocabularies• Alphabetical listings in Views will use source

language

Page 64: Multilingual Content in Drupal 7 & 8 at DrupalCon Munich

Translate CommentsConfigure Fields

Permissions

Translate Comments

Page 65: Multilingual Content in Drupal 7 & 8 at DrupalCon Munich

Translate Comments:Use Cases

• Travel website (machine translation of reviews)• Government website (human translation of

questions + answers)

Page 66: Multilingual Content in Drupal 7 & 8 at DrupalCon Munich

Translate Other Entities

Entities need to have fields and include translation support in hook_entity_info()

Translation of entities from contributed modules

Page 67: Multilingual Content in Drupal 7 & 8 at DrupalCon Munich

Commerce Product Entity

Language-specific

• Title• Description • URL

Language-neutral

• SKU• Status • Image• Price• Quantity

Remaining• Shopping Cart

Status

Page 68: Multilingual Content in Drupal 7 & 8 at DrupalCon Munich

Commerce Product Entity

Page 69: Multilingual Content in Drupal 7 & 8 at DrupalCon Munich

Commerce Product Entity

Page 70: Multilingual Content in Drupal 7 & 8 at DrupalCon Munich

Commerce Product Entity

Page 71: Multilingual Content in Drupal 7 & 8 at DrupalCon Munich

Content Translation Workflows

Page 72: Multilingual Content in Drupal 7 & 8 at DrupalCon Munich

Cost of Translation• Time-consuming • Expensive• How can you speed up the process and

reduce the amount of text to be translated?

Page 73: Multilingual Content in Drupal 7 & 8 at DrupalCon Munich

Author Translator

1. Author creates a new node 2. Translator adds a translation

Content Translation Workflow

Page 74: Multilingual Content in Drupal 7 & 8 at DrupalCon Munich

Creating a Translation Workflow from Scratch

• Permissions for translators• Rules and Flag to trigger translation requests• Views for Translators

Page 75: Multilingual Content in Drupal 7 & 8 at DrupalCon Munich

Permissions for Translation• Node-Level Translation: Translators need to be

able to create content• Field-Level Translation: Permission to edit the

entity• No granular translation permissions per

content type by default (use i18n_access)

Page 76: Multilingual Content in Drupal 7 & 8 at DrupalCon Munich

Typical UI for Translators

PermissionsRulesViews

Page 77: Multilingual Content in Drupal 7 & 8 at DrupalCon Munich

Challenges• Different UI for Entity Translation/Content

Translation (Confusing)• Professional translators need to learn Drupal• Need to build system for reviewing translations

Page 78: Multilingual Content in Drupal 7 & 8 at DrupalCon Munich

Translation Workflows for Content: TMGMT Module

Page 79: Multilingual Content in Drupal 7 & 8 at DrupalCon Munich

Translation Management Tool (TMGMT)

drupal.org/project/tmgmt

Page 80: Multilingual Content in Drupal 7 & 8 at DrupalCon Munich

Translation Management Tool (TMGMT)

Drupal

Page 82: Multilingual Content in Drupal 7 & 8 at DrupalCon Munich

Microsoft Translator

Page 83: Multilingual Content in Drupal 7 & 8 at DrupalCon Munich

Microsoft Translator

Page 84: Multilingual Content in Drupal 7 & 8 at DrupalCon Munich

Requesting Translations

Page 85: Multilingual Content in Drupal 7 & 8 at DrupalCon Munich

Requesting Translations

Page 86: Multilingual Content in Drupal 7 & 8 at DrupalCon Munich

Review Translation

Page 87: Multilingual Content in Drupal 7 & 8 at DrupalCon Munich

Review Translation

Page 88: Multilingual Content in Drupal 7 & 8 at DrupalCon Munich

Translate in Bulk

Page 89: Multilingual Content in Drupal 7 & 8 at DrupalCon Munich

Benefits of TMGMT• Field-level and node-level translation• Also translate i18n strings (in development)• Easy to configure• Human/machine translator plugins• Write your own translator plugin

Page 90: Multilingual Content in Drupal 7 & 8 at DrupalCon Munich

Challenges in Drupal 7• Choosing a content translation method• Permissions for Translators• Choosing contributed modules• Translating custom elements (Webforms)• Improve Translation UI• Building translation workflows in Drupal

Page 91: Multilingual Content in Drupal 7 & 8 at DrupalCon Munich

Looking Forward to D8• Translatable properties• More things are entities• Better UI for adding/configuring languages• Come to Gábor’s Core Conversation tomorrow

Page 92: Multilingual Content in Drupal 7 & 8 at DrupalCon Munich

Contrib Modules for Entity Translation

• Entity Translation Feeds (et_feeds)• Search API Entity Translation (search_api_et)

Page 93: Multilingual Content in Drupal 7 & 8 at DrupalCon Munich

Learn More & Contribute• Multilingual Q&A BoF (Wed 10:15)• Drupal 8’s Multilingual Wonderland (Wed 1pm)• Apache Solr Multilingual BoF (Today 5pm)• Localize.Drupal.org BoF (Thurs 10:45)• TMGMT BoF (Thurs at 1pm)• Code Sprint (Friday-Sunday)