Multilingual solutions


                            Florian Loretan
                            Co-Founder

                            Wunderkraut
                            florian.loretan@wunderkraut.com




Wednesday, June 13, 2012
Sponsors

                        Генеральный спонсор
     Организатор




 Серебряный спонсор   Серебряный спонсор




 Бронзовый спонсор    Бронзовый спонсор
Suzanne Kennedy   Florian Loretan
Before you start
                           • What kind of site are you building?
                           • Planning your multilingual site

                           Building a Multilingual Site
                           • Getting Set Up
                           • Translating the UI
                           • Translating Content
                           • Translating Everything Else

                           What’s Next?
                           • Challenges in Drupal 7 Multilingual
                           • Learn More & Contribute
Wednesday, June 13, 2012
What Kind of Multilingual
                     Site are You Building?



Wednesday, June 13, 2012
Foreign Language Site




Wednesday, June 13, 2012
Multilingual Site




Wednesday, June 13, 2012
Multilingual Site + Translation




Wednesday, June 13, 2012
Questions to Ask
                           Before You Start



Wednesday, June 13, 2012
1. What Language Support
                      Are You Providing?



Wednesday, June 13, 2012
ouce: http://www.flickr.com/photos/caribb/89857146/   Source: http://www.lilith-ezine.com
Fully Symmetric Experience
English                    Polish
Asymmetric Experience
French                           English
Mixed Language Experience
French                  English
2. Do You Want to Show
                        Untranslated Content?



Wednesday, June 13, 2012
Showing Untranslated Content




Wednesday, June 13, 2012
Hiding Untranslated Content
French                     English
3. Are language and region
                             related?



Wednesday, June 13, 2012
Language = Region




Wednesday, June 13, 2012
4. Who’s Doing the
                              Translation?



Wednesday, June 13, 2012
Translation Workflow




Wednesday, June 13, 2012
Translating the Admin UI




Wednesday, June 13, 2012
5. Default Language of the
                               Site?



Wednesday, June 13, 2012
Default Language

                 Content Language Fallback
Site User
Default Language


Site Builder     Language used User-entered Strings
6. How Will Language Affect
                  the Design?



Wednesday, June 13, 2012
Space Requirements

        English




         French



Wednesday, June 13, 2012
Right-to-Left Languages




Wednesday, June 13, 2012
7. What Type of Text are
                               You Translating?



Wednesday, June 13, 2012
Different Types of Text




Wednesday, June 13, 2012
UI: Variables




Wednesday, June 13, 2012
UI: Text in Code




Wednesday, June 13, 2012
UI: User-Entered Strings




Wednesday, June 13, 2012
Content: Nodes




Wednesday, June 13, 2012
Content: Other Entities




Wednesday, June 13, 2012
Text Groups




Wednesday, June 13, 2012
Text Groups




Wednesday, June 13, 2012
Translation Checklist:
      UI Text
                    Variables
                    Text in Code
                      User-Entered Strings
       Content
                    Nodes
                           Entities (comments, users, terms...)
                           Text Groups (blocks, paths, menu items...)
Wednesday, June 13, 2012
Building Your
                           Multilingual Website



Wednesday, June 13, 2012
STEP 1:
                           Setting up Languages



Wednesday, June 13, 2012
Installing a Language
                           Configuration > Regional & language > Languages




Wednesday, June 13, 2012
Configuring a Language




Wednesday, June 13, 2012
Choosing a Default
                           Configuration > Regional & language > Languages




Wednesday, June 13, 2012
Detection and Selection
             Configuration > Regional & language > Languages > Detection and Selection




Wednesday, June 13, 2012
Detection and Selection
                                example.com/fr/user




Wednesday, June 13, 2012
Detection and Selection
                                 example.com/user




Wednesday, June 13, 2012
STEP 2:
                           Translating UI Text



Wednesday, June 13, 2012
Translating Variables




Wednesday, June 13, 2012
Translating Variables
                 Configuration > Regional & language > Multilingual Settings > Variables




Wednesday, June 13, 2012
Translating Variables




Wednesday, June 13, 2012
Translating Variables




Wednesday, June 13, 2012
Translating Text from Code




Wednesday, June 13, 2012
Translating Text from Code
                  Configuration > Regional & language > Translation Interface > Translate




Wednesday, June 13, 2012
Translating Text from Code




Wednesday, June 13, 2012
User-Entered Strings




Wednesday, June 13, 2012
User-Entered Strings




Wednesday, June 13, 2012
User-Entered Strings
                  Configuration > Regional & language > Translation Interface > Translate




Wednesday, June 13, 2012
User-Entered Strings




Wednesday, June 13, 2012
STEP 3:
                           Translating Content



Wednesday, June 13, 2012
Translating Content




Wednesday, June 13, 2012
Settings per Content Type




Wednesday, June 13, 2012
Node Translation


                       • Content Translation module (core)


                       • New node for each translation


                       • Nodes are mapped together

Wednesday, June 13, 2012
Translating a Node




Wednesday, June 13, 2012
Field-Level Translation

                      • Entity Translation module (contrib)




                      • Translation of fields instead of nodes



Wednesday, June 13, 2012
$node->field_body['en'][0]['value']




Wednesday, June 13, 2012
Semantic structure




Wednesday, June 13, 2012
Setting up Field Translation




Wednesday, June 13, 2012
works for
                                   nodes
                                    users
                           taxonomy terms
                                comments
                                       ...
Wednesday, June 13, 2012
Translatability
• Can be translated   • Can’t be translated
 • All fields           • Author
• Additional           • Promoted
  per-translation
  metadata             •
                       • Creation date
                       •
                          Modification date
Title Module
              $node->title
              $term->name
               $term->description



                                    $node->field_title
                                    $term->field_name
                                     $term->field_description


Wednesday, June 13, 2012
Use field_title in
                           views, not title


Wednesday, June 13, 2012
Language fallback




Wednesday, June 13, 2012
Combination with i18n

               • Enable               • Disable
                • i18n_menu            • i18n_select

                    • i18n_fields       • i18n_taxonomy


Wednesday, June 13, 2012
:-)



Wednesday, June 13, 2012
:-(

            integration with other modules
                      needs work



Wednesday, June 13, 2012
:-(

                           revisioning


Wednesday, June 13, 2012
:-(

                           menu items needs to be
                            translated separately



Wednesday, June 13, 2012
:-)

                           for many use cases,
               it’s still a lot better than the standard
                            content translation




Wednesday, June 13, 2012
Adding a Translation




Wednesday, June 13, 2012
Comments per Language




Wednesday, June 13, 2012
STEP 4:
                Translating Everything Else



Wednesday, June 13, 2012
Other Elements to Translate

                    • Blocks
                     • Field settings


                     • Taxonomy terms
                     • Menu items


                     • Paths

Wednesday, June 13, 2012
Translating Field Settings




Wednesday, June 13, 2012
Translating Field Settings


                      • Field Translation module (i18n)


                      • Translate field settings


                      • Only core field settings

Wednesday, June 13, 2012
Translating Field Settings




Wednesday, June 13, 2012
Translating Field Settings




Wednesday, June 13, 2012
Translating Menus




Wednesday, June 13, 2012
Translating Menu Items


                      • Menu Translation module (i18n)




                      • Menu per language OR


Wednesday, June 13, 2012
Translating Menu Items




Wednesday, June 13, 2012
Translating Menu Items
                                Menu Link to a Node




Wednesday, June 13, 2012
Translating Menu Items
                           Menu Link to a Single-Language Page
                                    i.e. Events View




Wednesday, June 13, 2012
Translating Menu Items
                              Menu Link to a Generic Page
                                   i.e. Home Page




Wednesday, June 13, 2012
Translating Menu Items




Wednesday, June 13, 2012
Translating Menu Items




Wednesday, June 13, 2012
STEP 5:
                           Extending Multilingual
                               Functionality


Wednesday, June 13, 2012
Localization Update
                               localize.drupal.org




Wednesday, June 13, 2012
Localization Client




Wednesday, June 13, 2012
Drupal 8


                • Clean Up
               • Entity translation
               • Symphony localization component


Wednesday, June 13, 2012
Спасибо за внимание


                                      Florian Lorétan
                                      Co-Founder

                                      Wunderkraut
                                      florian.loretan@wunderkraut.com




Wednesday, June 13, 2012
Sponsors

                        Генеральный спонсор
     Организатор




 Серебряный спонсор   Серебряный спонсор




 Бронзовый спонсор    Бронзовый спонсор

Multilingual solutions florian loretan