SlideShare a Scribd company logo
1 of 48
Download to read offline
i18n for Web 2.0
Why and how to internationalize your Web 2.0
                application

          Lars Trieloff, Mindquarry
Why internationalize?
International audiences want localized user interfaces.
Lars Trieloff
•   Entrepreneur, Blogger,
    Open Source Coder

•   Languages I understand:

    •   German, English

•   Languages I do not
    understand:

    •   Mandarin, Hindi,
        Spanish, Arabic, Russian,
        Portuguese, Bengali, Malay,
        French, Japanese, Farsi, Urdu,
        Punjabi, Vietnamese, Tamil, Wu, Javanese,
        Turkish, Telugu, Korean, Marathi, Italian, Thai, cantonese, gujarati,   polish,
        kannada, burmese (and all other)
Do it yourself, or someone else
           will do it
Do it yourself, or someone else
           will do it
Do it yourself, or someone else
           will do it
Do it yourself, or someone else
           will do it
Do it yourself, or someone else
           will do it
What is different in
      Web 2.0
internationalization?
Web 2.0
        internationalization
•   Web sites become Web applications

•   The Web as a platform

•   This means:

    •   Internationalize your plain old Web site

    •   Internationalize your rich internet applications

        •   Javascript, Flash, Silverlight, and more to come

    •   Internationalize your desktop applications
Challenge

The internationalization problem is multiplied
 due to use of different technologies in Web
   and rich internet applications as well as
             desktop applications
Solution

 Consolidation of internationalization technology: Each
technology has its own internationalization framework:
    We need a common framework for all of them
What to do
• Keep all internationalization data in one
  place
• Extract internationalization strings from
  application parts
  • repeatedly
  • automatically
• Let the applications pull the i18n strings
What do do
    Web
                                                            Web
 application
                                                         application
source code
                            Translator




RIA source      String     Localization
                                                            RIA
   code        Extractor    Database
                                          Intermediate
                                            Converter




  desktop
                                          Intermediate    desktop
 application
                                             Format      application
source code
                            Translator
Example
How we did it in Mindquarry
Our technology
       Our problem
• Web application framework: Apache
  Cocoon, with Cocoon i18n Transformer
• Rich internet application framework: Dojo
  Toolkit, with dojo.i18n.*
• Desktop client: Java and SWT, with Java
  Message Bundles
Steps to consolidated
         i18n
1. Find a common i18n database
   format
2. Extract internationalizable content
   automatically
3. Attach applications to i18n
   database
1. i18n database
     format
• QT Linguist .ts files
• XML files, easy to process
• QT Linguist is a good, easy-to-
  use and free translation editor
• Can be used by non-
  programmers
2. Automatic string
       extraction
• We have three types of source code: XML,
  Java and Javascript
• XML
 • Ruby script parses all XML source code,
    finds internationalizable strings not yet in
    database and adds them
 • Java and Javascript, similar with a more
    complex parser
3.1. Attach Cocoon
                                  messages.ts
                                  (QT Linguist)

•   Apache Cocoon‘s
    internationalization
    databases are XML files           XSLT




•   Transformation via XSLT
                                messages_de.xml
                                 messages_de.xml
                                 (Cocoon i18n)

•
                                  (Cocoon i18n)
    Multiple output files, one
    for each language
                                Apache Cocoon
3.2. Attach Dojo
                                messages.ts
                                (QT Linguist)




•   Dojo uses JSON as              XSLT


    internationalization
    format                    messages_de.xml
                               messages_de.xml
                               (Cocoon i18n)
                                (Cocoon i18n)



•   Transformation via XSLT
                              Apache Cocoon



•   Handled dynamically via
    Cocoon                    messages_de.js
                               messages_de.js
                                (Dojo i18n)
                                  (Dojo i18n)




                                Dojo Widget
3.3. Attach Java
•   Message Bundle Reader        messages.ts
    is overwritten               (QT Linguist)


•   Uses internationalization
    database directory

•   Internationalization        i18n Adapter
    database is being
    distributed with desktop    Desktop Client
    client
How to get translations
How to get translations




do it yourself
How to get translations

                 ¥         $
                      €




do it yourself       pay someone
How to get translations

                 ¥         $
                      €




do it yourself       pay someone   ask your users
User-contributed
        internationalization
•   The holy grail

•   Build a community and
    website at the same time

•   But hard to achieve

    •   Wikipedia

    •   Open Source projects
User-contributed
        internationalization
•   The holy grail

•   Build a community and
    website at the same time

•   But hard to achieve

    •   Wikipedia

    •   Open Source projects
Build your own
  translation
    website
    Allows users to sign-up,
 contribute localization strings,
costly, but allows for automatic
post-processing, validation and
         quality-control.
Build your own
  translation
    website
    Allows users to sign-up,
 contribute localization strings,
costly, but allows for automatic
post-processing, validation and
         quality-control.
Build your own
  translation
    website
    Allows users to sign-up,
 contribute localization strings,
costly, but allows for automatic
post-processing, validation and
         quality-control.
Ad-hoc-
translations: use
     a wiki
   Allows users to contribute
localization strings without sign-
 up, easy to deploy, but requires
      manual post-processing,
  validation and quality-control.
Pootle: OSS for
   web-based
  translations
GPL-software, based on Python,
    works with .po or XLIFF,
integration with version control,
 basic project management, used
  by 20+ open source projects

  http://pootle.wordforge.org
Pootle: OSS for
   web-based
  translations
GPL-software, based on Python,
    works with .po or XLIFF,
integration with version control,
 basic project management, used
  by 20+ open source projects

  http://pootle.wordforge.org
More challenges in Web
2.0 internationalization

• User-generated content
• Rich Web design
• User-contributed translations
User-generated content
• User-generated content is great
• But hard to translate
• But translating it increases network effects
 • English speaking users benefit from
    content generated by German speaking
    users
• Is there a (partial) solution?
Solution
•   Structured Content

•   Sometimes easier to
    translate

    •   ratings

    •   locations

    •   time & date

•   Sometimes it is still hard

    •   tags
Solution
•   Structured Content

•   Sometimes easier to
    translate

    •   ratings

    •   locations

    •   time & date

•   Sometimes it is still hard

    •   tags
Solution
•   Structured Content

•   Sometimes easier to
    translate

    •   ratings

    •   locations

    •   time & date

•   Sometimes it is still hard

    •   tags
Solution
•   Structured Content

•   Sometimes easier to
    translate

    •   ratings

    •   locations

    •   time & date

•   Sometimes it is still hard

    •   tags
Solution
•   Structured Content

•   Sometimes easier to
    translate

    •   ratings

    •   locations

    •   time & date

•   Sometimes it is still hard

    •   tags
Solution
•   Structured Content

•   Sometimes easier to
    translate

    •   ratings

    •   locations

    •   time & date

•   Sometimes it is still hard

    •   tags
Solution
•   Structured Content

•   Sometimes easier to
    translate

    •   ratings

    •   locations

    •   time & date

•   Sometimes it is still hard

    •   tags
Solution
•   Structured Content

•   Sometimes easier to
    translate

    •   ratings

    •   locations

    •   time & date

•   Sometimes it is still hard

    •   tags
Graphical text
•   Looks great
•   But hard to internationalize
  •   can break calculated box sizes,
  •   re-creation necessary
•   Do not do it
  •   unless you can do it right
  •   create dynamically on server
Graphical text
•   Looks great
•   But hard to internationalize
  •   can break calculated box sizes,
  •   re-creation necessary
•   Do not do it
  •   unless you can do it right
  •   create dynamically on server
Graphical text
•   Looks great
•   But hard to internationalize
  •   can break calculated box sizes,
  •   re-creation necessary
•   Do not do it
  •   unless you can do it right
  •   create dynamically on server
Thank you very much
              lars@trieloff.net




 For more information, see my weblog at
 http://weblogs.goshaky.com/weblog/lars

More Related Content

What's hot

Translation Markup Language and Universal Translation Memory
Translation Markup Language and Universal Translation MemoryTranslation Markup Language and Universal Translation Memory
Translation Markup Language and Universal Translation MemoryMichael Berkovich
 
Symfony2 components to the rescue of your PHP projects
Symfony2 components to the rescue of your PHP projectsSymfony2 components to the rescue of your PHP projects
Symfony2 components to the rescue of your PHP projectsXavier Lacot
 
Taking PHP to the next level
Taking PHP to the next levelTaking PHP to the next level
Taking PHP to the next levelDavid Coallier
 
Rcs project Training Bangalore
Rcs project Training BangaloreRcs project Training Bangalore
Rcs project Training BangaloreSunil Kumar
 
DOT NET TRaining
DOT NET TRainingDOT NET TRaining
DOT NET TRainingsunil kumar
 
Developing for LinkedIn's Application Platform
Developing for LinkedIn's Application PlatformDeveloping for LinkedIn's Application Platform
Developing for LinkedIn's Application PlatformTaylor Singletary
 
Ekon23 (1) Kingdom-Driven-Design
Ekon23 (1) Kingdom-Driven-DesignEkon23 (1) Kingdom-Driven-Design
Ekon23 (1) Kingdom-Driven-DesignArnaud Bouchez
 
Best Practices with Zend Framework - Matthew Weier O'Phinney
Best Practices with Zend Framework - Matthew Weier O'PhinneyBest Practices with Zend Framework - Matthew Weier O'Phinney
Best Practices with Zend Framework - Matthew Weier O'Phinneydpc
 
The Ring programming language version 1.5.1 book - Part 4 of 180
The Ring programming language version 1.5.1 book - Part 4 of 180The Ring programming language version 1.5.1 book - Part 4 of 180
The Ring programming language version 1.5.1 book - Part 4 of 180Mahmoud Samir Fayed
 
Oh the compilers you'll build
Oh the compilers you'll buildOh the compilers you'll build
Oh the compilers you'll buildMark Stoodley
 
Python Intro For Managers
Python Intro For ManagersPython Intro For Managers
Python Intro For ManagersAtul Shridhar
 
Livecode widget course
Livecode widget courseLivecode widget course
Livecode widget coursecrazyaxe
 
Jfokus 2016 - A JVMs Journey into Polyglot Runtimes
Jfokus 2016 - A JVMs Journey into Polyglot RuntimesJfokus 2016 - A JVMs Journey into Polyglot Runtimes
Jfokus 2016 - A JVMs Journey into Polyglot RuntimesCharlie Gracie
 
Grigory Naumovets.Multilingual sites.DrupalCamp Kyiv 2011
Grigory Naumovets.Multilingual sites.DrupalCamp Kyiv 2011Grigory Naumovets.Multilingual sites.DrupalCamp Kyiv 2011
Grigory Naumovets.Multilingual sites.DrupalCamp Kyiv 2011camp_drupal_ua
 

What's hot (20)

Translation Markup Language and Universal Translation Memory
Translation Markup Language and Universal Translation MemoryTranslation Markup Language and Universal Translation Memory
Translation Markup Language and Universal Translation Memory
 
Symfony2 components to the rescue of your PHP projects
Symfony2 components to the rescue of your PHP projectsSymfony2 components to the rescue of your PHP projects
Symfony2 components to the rescue of your PHP projects
 
Taking PHP to the next level
Taking PHP to the next levelTaking PHP to the next level
Taking PHP to the next level
 
Cloud Native API Design and Management
Cloud Native API Design and ManagementCloud Native API Design and Management
Cloud Native API Design and Management
 
Rcs project Training Bangalore
Rcs project Training BangaloreRcs project Training Bangalore
Rcs project Training Bangalore
 
DOT NET TRaining
DOT NET TRainingDOT NET TRaining
DOT NET TRaining
 
Developing for LinkedIn's Application Platform
Developing for LinkedIn's Application PlatformDeveloping for LinkedIn's Application Platform
Developing for LinkedIn's Application Platform
 
Ekon23 (1) Kingdom-Driven-Design
Ekon23 (1) Kingdom-Driven-DesignEkon23 (1) Kingdom-Driven-Design
Ekon23 (1) Kingdom-Driven-Design
 
Best Practices with Zend Framework - Matthew Weier O'Phinney
Best Practices with Zend Framework - Matthew Weier O'PhinneyBest Practices with Zend Framework - Matthew Weier O'Phinney
Best Practices with Zend Framework - Matthew Weier O'Phinney
 
The Ring programming language version 1.5.1 book - Part 4 of 180
The Ring programming language version 1.5.1 book - Part 4 of 180The Ring programming language version 1.5.1 book - Part 4 of 180
The Ring programming language version 1.5.1 book - Part 4 of 180
 
Drupal entity translation
Drupal entity translationDrupal entity translation
Drupal entity translation
 
Analysis
AnalysisAnalysis
Analysis
 
Drupal7 multilingual
Drupal7 multilingualDrupal7 multilingual
Drupal7 multilingual
 
Php Vs Phyton
Php Vs PhytonPhp Vs Phyton
Php Vs Phyton
 
Amoocon May 2009 Germany
Amoocon May 2009   GermanyAmoocon May 2009   Germany
Amoocon May 2009 Germany
 
Oh the compilers you'll build
Oh the compilers you'll buildOh the compilers you'll build
Oh the compilers you'll build
 
Python Intro For Managers
Python Intro For ManagersPython Intro For Managers
Python Intro For Managers
 
Livecode widget course
Livecode widget courseLivecode widget course
Livecode widget course
 
Jfokus 2016 - A JVMs Journey into Polyglot Runtimes
Jfokus 2016 - A JVMs Journey into Polyglot RuntimesJfokus 2016 - A JVMs Journey into Polyglot Runtimes
Jfokus 2016 - A JVMs Journey into Polyglot Runtimes
 
Grigory Naumovets.Multilingual sites.DrupalCamp Kyiv 2011
Grigory Naumovets.Multilingual sites.DrupalCamp Kyiv 2011Grigory Naumovets.Multilingual sites.DrupalCamp Kyiv 2011
Grigory Naumovets.Multilingual sites.DrupalCamp Kyiv 2011
 

Viewers also liked

Breaking Down The Barriers: Design for Accessibility
Breaking Down The Barriers: Design for AccessibilityBreaking Down The Barriers: Design for Accessibility
Breaking Down The Barriers: Design for Accessibilityadunne
 
The Beauty in Standards and Accessiblity
The Beauty in Standards and AccessiblityThe Beauty in Standards and Accessiblity
The Beauty in Standards and Accessiblityadunne
 
Your User's Privacy
Your User's PrivacyYour User's Privacy
Your User's Privacyadunne
 
Microformats: The Nanotechnology of the Semantic Web
Microformats: The Nanotechnology of the Semantic WebMicroformats: The Nanotechnology of the Semantic Web
Microformats: The Nanotechnology of the Semantic Webadunne
 
Get Conversational!
Get Conversational!Get Conversational!
Get Conversational!adunne
 

Viewers also liked (6)

Breaking Down The Barriers: Design for Accessibility
Breaking Down The Barriers: Design for AccessibilityBreaking Down The Barriers: Design for Accessibility
Breaking Down The Barriers: Design for Accessibility
 
The Beauty in Standards and Accessiblity
The Beauty in Standards and AccessiblityThe Beauty in Standards and Accessiblity
The Beauty in Standards and Accessiblity
 
Believe in your Brand
Believe in your BrandBelieve in your Brand
Believe in your Brand
 
Your User's Privacy
Your User's PrivacyYour User's Privacy
Your User's Privacy
 
Microformats: The Nanotechnology of the Semantic Web
Microformats: The Nanotechnology of the Semantic WebMicroformats: The Nanotechnology of the Semantic Web
Microformats: The Nanotechnology of the Semantic Web
 
Get Conversational!
Get Conversational!Get Conversational!
Get Conversational!
 

Similar to Living in a Multi-lingual World: Internationalization in Web and Desktop Applications

symfony: An Open-Source Framework for Professionals (Dutch Php Conference 2008)
symfony: An Open-Source Framework for Professionals (Dutch Php Conference 2008)symfony: An Open-Source Framework for Professionals (Dutch Php Conference 2008)
symfony: An Open-Source Framework for Professionals (Dutch Php Conference 2008)Fabien Potencier
 
Ajax Tutorial
Ajax TutorialAjax Tutorial
Ajax Tutorialoscon2007
 
How To Build And Launch A Successful Globalized App From Day One Or All The ...
How To Build And Launch A Successful Globalized App From Day One  Or All The ...How To Build And Launch A Successful Globalized App From Day One  Or All The ...
How To Build And Launch A Successful Globalized App From Day One Or All The ...agileware
 
Presentation eXo Foss Bridge
Presentation eXo Foss BridgePresentation eXo Foss Bridge
Presentation eXo Foss BridgeJeremi Joslin
 
COMPUTER LANGUAGES AND THERE DIFFERENCE
COMPUTER LANGUAGES AND THERE DIFFERENCE COMPUTER LANGUAGES AND THERE DIFFERENCE
COMPUTER LANGUAGES AND THERE DIFFERENCE Pavan Kalyan
 
APIs and SDKs: Breaking Into and Succeeding in a Specialty Market
APIs and SDKs: Breaking Into and Succeeding in a Specialty MarketAPIs and SDKs: Breaking Into and Succeeding in a Specialty Market
APIs and SDKs: Breaking Into and Succeeding in a Specialty MarketScott Abel
 
iPhone Development For Experienced Web Developers
iPhone Development For Experienced Web DevelopersiPhone Development For Experienced Web Developers
iPhone Development For Experienced Web Developerslisab517
 
What is the best programming language for your web product?
What is the best programming language for your web product?What is the best programming language for your web product?
What is the best programming language for your web product?MobiDev
 
Pylons + Tokyo Cabinet
Pylons + Tokyo CabinetPylons + Tokyo Cabinet
Pylons + Tokyo CabinetBen Cheng
 
Pipeline as code for your infrastructure as Code
Pipeline as code for your infrastructure as CodePipeline as code for your infrastructure as Code
Pipeline as code for your infrastructure as CodeKris Buytaert
 
Modern javascript localization with c-3po and the good old gettext
Modern javascript localization with c-3po and the good old gettextModern javascript localization with c-3po and the good old gettext
Modern javascript localization with c-3po and the good old gettextAlexander Mostovenko
 
Introduction to Python Programming
Introduction to Python ProgrammingIntroduction to Python Programming
Introduction to Python ProgrammingAkhil Kaushik
 
Barcelona Multilanguage
Barcelona MultilanguageBarcelona Multilanguage
Barcelona Multilanguageguest3a6661
 
Dynamic Languages In The Enterprise (4developers march 2009)
Dynamic Languages In The Enterprise (4developers march 2009)Dynamic Languages In The Enterprise (4developers march 2009)
Dynamic Languages In The Enterprise (4developers march 2009)Ivo Jansch
 
Week01 jan19 introductionto_php
Week01 jan19 introductionto_phpWeek01 jan19 introductionto_php
Week01 jan19 introductionto_phpJeanho Chu
 
Open Social Summit Korea Overview
Open Social Summit Korea OverviewOpen Social Summit Korea Overview
Open Social Summit Korea OverviewChris Schalk
 
Session 01 - Introduction to Java
Session 01 - Introduction to JavaSession 01 - Introduction to Java
Session 01 - Introduction to JavaPawanMM
 

Similar to Living in a Multi-lingual World: Internationalization in Web and Desktop Applications (20)

Titanium Desktop Intro
Titanium Desktop IntroTitanium Desktop Intro
Titanium Desktop Intro
 
symfony: An Open-Source Framework for Professionals (Dutch Php Conference 2008)
symfony: An Open-Source Framework for Professionals (Dutch Php Conference 2008)symfony: An Open-Source Framework for Professionals (Dutch Php Conference 2008)
symfony: An Open-Source Framework for Professionals (Dutch Php Conference 2008)
 
Ajax Tutorial
Ajax TutorialAjax Tutorial
Ajax Tutorial
 
How To Build And Launch A Successful Globalized App From Day One Or All The ...
How To Build And Launch A Successful Globalized App From Day One  Or All The ...How To Build And Launch A Successful Globalized App From Day One  Or All The ...
How To Build And Launch A Successful Globalized App From Day One Or All The ...
 
Presentation eXo Foss Bridge
Presentation eXo Foss BridgePresentation eXo Foss Bridge
Presentation eXo Foss Bridge
 
COMPUTER LANGUAGES AND THERE DIFFERENCE
COMPUTER LANGUAGES AND THERE DIFFERENCE COMPUTER LANGUAGES AND THERE DIFFERENCE
COMPUTER LANGUAGES AND THERE DIFFERENCE
 
APIs and SDKs: Breaking Into and Succeeding in a Specialty Market
APIs and SDKs: Breaking Into and Succeeding in a Specialty MarketAPIs and SDKs: Breaking Into and Succeeding in a Specialty Market
APIs and SDKs: Breaking Into and Succeeding in a Specialty Market
 
iPhone Development For Experienced Web Developers
iPhone Development For Experienced Web DevelopersiPhone Development For Experienced Web Developers
iPhone Development For Experienced Web Developers
 
wt mod3.pdf
wt mod3.pdfwt mod3.pdf
wt mod3.pdf
 
What is the best programming language for your web product?
What is the best programming language for your web product?What is the best programming language for your web product?
What is the best programming language for your web product?
 
Pylons + Tokyo Cabinet
Pylons + Tokyo CabinetPylons + Tokyo Cabinet
Pylons + Tokyo Cabinet
 
Pipeline as code for your infrastructure as Code
Pipeline as code for your infrastructure as CodePipeline as code for your infrastructure as Code
Pipeline as code for your infrastructure as Code
 
Modern javascript localization with c-3po and the good old gettext
Modern javascript localization with c-3po and the good old gettextModern javascript localization with c-3po and the good old gettext
Modern javascript localization with c-3po and the good old gettext
 
Introduction to Python Programming
Introduction to Python ProgrammingIntroduction to Python Programming
Introduction to Python Programming
 
Rest Vs Soap Yawn2289
Rest Vs Soap Yawn2289Rest Vs Soap Yawn2289
Rest Vs Soap Yawn2289
 
Barcelona Multilanguage
Barcelona MultilanguageBarcelona Multilanguage
Barcelona Multilanguage
 
Dynamic Languages In The Enterprise (4developers march 2009)
Dynamic Languages In The Enterprise (4developers march 2009)Dynamic Languages In The Enterprise (4developers march 2009)
Dynamic Languages In The Enterprise (4developers march 2009)
 
Week01 jan19 introductionto_php
Week01 jan19 introductionto_phpWeek01 jan19 introductionto_php
Week01 jan19 introductionto_php
 
Open Social Summit Korea Overview
Open Social Summit Korea OverviewOpen Social Summit Korea Overview
Open Social Summit Korea Overview
 
Session 01 - Introduction to Java
Session 01 - Introduction to JavaSession 01 - Introduction to Java
Session 01 - Introduction to Java
 

More from adunne

Seedcamp Overview
Seedcamp OverviewSeedcamp Overview
Seedcamp Overviewadunne
 
Netvibes Preview
Netvibes PreviewNetvibes Preview
Netvibes Previewadunne
 
Community Practices: From Forums to Social Networks
Community Practices: From Forums to Social NetworksCommunity Practices: From Forums to Social Networks
Community Practices: From Forums to Social Networksadunne
 
Designing Tag Navigation
Designing Tag NavigationDesigning Tag Navigation
Designing Tag Navigationadunne
 
Social Commerce and Community
Social Commerce and CommunitySocial Commerce and Community
Social Commerce and Communityadunne
 
The Starfish and the Spider
The Starfish and the SpiderThe Starfish and the Spider
The Starfish and the Spideradunne
 
Ginger Preview
Ginger PreviewGinger Preview
Ginger Previewadunne
 
Add Powerful Full Text Search to Your Web App with Solr
Add Powerful Full Text Search to Your Web App with SolrAdd Powerful Full Text Search to Your Web App with Solr
Add Powerful Full Text Search to Your Web App with Solradunne
 
Web 2.0 Performance and Reliability: How to Run Large Web Apps
Web 2.0 Performance and Reliability: How to Run Large Web AppsWeb 2.0 Performance and Reliability: How to Run Large Web Apps
Web 2.0 Performance and Reliability: How to Run Large Web Appsadunne
 
The Impact of Mobile Web 2.0 on the Telecoms Industry
The Impact of Mobile Web 2.0 on the Telecoms IndustryThe Impact of Mobile Web 2.0 on the Telecoms Industry
The Impact of Mobile Web 2.0 on the Telecoms Industryadunne
 
Building Web 2.0: Next-Generation Data Centers
Building Web 2.0: Next-Generation Data CentersBuilding Web 2.0: Next-Generation Data Centers
Building Web 2.0: Next-Generation Data Centersadunne
 
Killing the Org Chart: Organizational, Cultural and Leadership Models on the ...
Killing the Org Chart: Organizational, Cultural and Leadership Models on the ...Killing the Org Chart: Organizational, Cultural and Leadership Models on the ...
Killing the Org Chart: Organizational, Cultural and Leadership Models on the ...adunne
 
Designing for a Web of Data
Designing for a Web of DataDesigning for a Web of Data
Designing for a Web of Dataadunne
 
Web 2.0 Performance and Reliability: How to Run Large Web Apps
Web 2.0 Performance and Reliability: How to Run Large Web AppsWeb 2.0 Performance and Reliability: How to Run Large Web Apps
Web 2.0 Performance and Reliability: How to Run Large Web Appsadunne
 
Disrupting the Platform: Harnessing social analytics and other musings on the...
Disrupting the Platform: Harnessing social analytics and other musings on the...Disrupting the Platform: Harnessing social analytics and other musings on the...
Disrupting the Platform: Harnessing social analytics and other musings on the...adunne
 
Under the Hood: How Geonames Aggregates Over 35 Sources into One Data Set
Under the Hood: How Geonames Aggregates Over 35 Sources into One Data SetUnder the Hood: How Geonames Aggregates Over 35 Sources into One Data Set
Under the Hood: How Geonames Aggregates Over 35 Sources into One Data Setadunne
 
Scalable Web Architectures: Common Patterns and Approaches
Scalable Web Architectures: Common Patterns and ApproachesScalable Web Architectures: Common Patterns and Approaches
Scalable Web Architectures: Common Patterns and Approachesadunne
 
Trends in Search Engine Optimization and Search Engine Marketing
Trends in Search Engine Optimization and Search Engine MarketingTrends in Search Engine Optimization and Search Engine Marketing
Trends in Search Engine Optimization and Search Engine Marketingadunne
 
Wuala, P2P Online Storage
Wuala, P2P Online StorageWuala, P2P Online Storage
Wuala, P2P Online Storageadunne
 
Web 2.0 Design Patterns, Models and Analysis
Web 2.0 Design Patterns, Models and AnalysisWeb 2.0 Design Patterns, Models and Analysis
Web 2.0 Design Patterns, Models and Analysisadunne
 

More from adunne (20)

Seedcamp Overview
Seedcamp OverviewSeedcamp Overview
Seedcamp Overview
 
Netvibes Preview
Netvibes PreviewNetvibes Preview
Netvibes Preview
 
Community Practices: From Forums to Social Networks
Community Practices: From Forums to Social NetworksCommunity Practices: From Forums to Social Networks
Community Practices: From Forums to Social Networks
 
Designing Tag Navigation
Designing Tag NavigationDesigning Tag Navigation
Designing Tag Navigation
 
Social Commerce and Community
Social Commerce and CommunitySocial Commerce and Community
Social Commerce and Community
 
The Starfish and the Spider
The Starfish and the SpiderThe Starfish and the Spider
The Starfish and the Spider
 
Ginger Preview
Ginger PreviewGinger Preview
Ginger Preview
 
Add Powerful Full Text Search to Your Web App with Solr
Add Powerful Full Text Search to Your Web App with SolrAdd Powerful Full Text Search to Your Web App with Solr
Add Powerful Full Text Search to Your Web App with Solr
 
Web 2.0 Performance and Reliability: How to Run Large Web Apps
Web 2.0 Performance and Reliability: How to Run Large Web AppsWeb 2.0 Performance and Reliability: How to Run Large Web Apps
Web 2.0 Performance and Reliability: How to Run Large Web Apps
 
The Impact of Mobile Web 2.0 on the Telecoms Industry
The Impact of Mobile Web 2.0 on the Telecoms IndustryThe Impact of Mobile Web 2.0 on the Telecoms Industry
The Impact of Mobile Web 2.0 on the Telecoms Industry
 
Building Web 2.0: Next-Generation Data Centers
Building Web 2.0: Next-Generation Data CentersBuilding Web 2.0: Next-Generation Data Centers
Building Web 2.0: Next-Generation Data Centers
 
Killing the Org Chart: Organizational, Cultural and Leadership Models on the ...
Killing the Org Chart: Organizational, Cultural and Leadership Models on the ...Killing the Org Chart: Organizational, Cultural and Leadership Models on the ...
Killing the Org Chart: Organizational, Cultural and Leadership Models on the ...
 
Designing for a Web of Data
Designing for a Web of DataDesigning for a Web of Data
Designing for a Web of Data
 
Web 2.0 Performance and Reliability: How to Run Large Web Apps
Web 2.0 Performance and Reliability: How to Run Large Web AppsWeb 2.0 Performance and Reliability: How to Run Large Web Apps
Web 2.0 Performance and Reliability: How to Run Large Web Apps
 
Disrupting the Platform: Harnessing social analytics and other musings on the...
Disrupting the Platform: Harnessing social analytics and other musings on the...Disrupting the Platform: Harnessing social analytics and other musings on the...
Disrupting the Platform: Harnessing social analytics and other musings on the...
 
Under the Hood: How Geonames Aggregates Over 35 Sources into One Data Set
Under the Hood: How Geonames Aggregates Over 35 Sources into One Data SetUnder the Hood: How Geonames Aggregates Over 35 Sources into One Data Set
Under the Hood: How Geonames Aggregates Over 35 Sources into One Data Set
 
Scalable Web Architectures: Common Patterns and Approaches
Scalable Web Architectures: Common Patterns and ApproachesScalable Web Architectures: Common Patterns and Approaches
Scalable Web Architectures: Common Patterns and Approaches
 
Trends in Search Engine Optimization and Search Engine Marketing
Trends in Search Engine Optimization and Search Engine MarketingTrends in Search Engine Optimization and Search Engine Marketing
Trends in Search Engine Optimization and Search Engine Marketing
 
Wuala, P2P Online Storage
Wuala, P2P Online StorageWuala, P2P Online Storage
Wuala, P2P Online Storage
 
Web 2.0 Design Patterns, Models and Analysis
Web 2.0 Design Patterns, Models and AnalysisWeb 2.0 Design Patterns, Models and Analysis
Web 2.0 Design Patterns, Models and Analysis
 

Recently uploaded

Market Sizes Sample Report - 2024 Edition
Market Sizes Sample Report - 2024 EditionMarket Sizes Sample Report - 2024 Edition
Market Sizes Sample Report - 2024 EditionMintel Group
 
Traction part 2 - EOS Model JAX Bridges.
Traction part 2 - EOS Model JAX Bridges.Traction part 2 - EOS Model JAX Bridges.
Traction part 2 - EOS Model JAX Bridges.Anamaria Contreras
 
Appkodes Tinder Clone Script with Customisable Solutions.pptx
Appkodes Tinder Clone Script with Customisable Solutions.pptxAppkodes Tinder Clone Script with Customisable Solutions.pptx
Appkodes Tinder Clone Script with Customisable Solutions.pptxappkodes
 
APRIL2024_UKRAINE_xml_0000000000000 .pdf
APRIL2024_UKRAINE_xml_0000000000000 .pdfAPRIL2024_UKRAINE_xml_0000000000000 .pdf
APRIL2024_UKRAINE_xml_0000000000000 .pdfRbc Rbcua
 
8447779800, Low rate Call girls in New Ashok Nagar Delhi NCR
8447779800, Low rate Call girls in New Ashok Nagar Delhi NCR8447779800, Low rate Call girls in New Ashok Nagar Delhi NCR
8447779800, Low rate Call girls in New Ashok Nagar Delhi NCRashishs7044
 
Guide Complete Set of Residential Architectural Drawings PDF
Guide Complete Set of Residential Architectural Drawings PDFGuide Complete Set of Residential Architectural Drawings PDF
Guide Complete Set of Residential Architectural Drawings PDFChandresh Chudasama
 
Innovation Conference 5th March 2024.pdf
Innovation Conference 5th March 2024.pdfInnovation Conference 5th March 2024.pdf
Innovation Conference 5th March 2024.pdfrichard876048
 
Call US-88OO1O2216 Call Girls In Mahipalpur Female Escort Service
Call US-88OO1O2216 Call Girls In Mahipalpur Female Escort ServiceCall US-88OO1O2216 Call Girls In Mahipalpur Female Escort Service
Call US-88OO1O2216 Call Girls In Mahipalpur Female Escort Servicecallgirls2057
 
Ten Organizational Design Models to align structure and operations to busines...
Ten Organizational Design Models to align structure and operations to busines...Ten Organizational Design Models to align structure and operations to busines...
Ten Organizational Design Models to align structure and operations to busines...Seta Wicaksana
 
NewBase 19 April 2024 Energy News issue - 1717 by Khaled Al Awadi.pdf
NewBase  19 April  2024  Energy News issue - 1717 by Khaled Al Awadi.pdfNewBase  19 April  2024  Energy News issue - 1717 by Khaled Al Awadi.pdf
NewBase 19 April 2024 Energy News issue - 1717 by Khaled Al Awadi.pdfKhaled Al Awadi
 
PSCC - Capability Statement Presentation
PSCC - Capability Statement PresentationPSCC - Capability Statement Presentation
PSCC - Capability Statement PresentationAnamaria Contreras
 
8447779800, Low rate Call girls in Saket Delhi NCR
8447779800, Low rate Call girls in Saket Delhi NCR8447779800, Low rate Call girls in Saket Delhi NCR
8447779800, Low rate Call girls in Saket Delhi NCRashishs7044
 
Flow Your Strategy at Flight Levels Day 2024
Flow Your Strategy at Flight Levels Day 2024Flow Your Strategy at Flight Levels Day 2024
Flow Your Strategy at Flight Levels Day 2024Kirill Klimov
 
Organizational Structure Running A Successful Business
Organizational Structure Running A Successful BusinessOrganizational Structure Running A Successful Business
Organizational Structure Running A Successful BusinessSeta Wicaksana
 
Entrepreneurship lessons in Philippines
Entrepreneurship lessons in  PhilippinesEntrepreneurship lessons in  Philippines
Entrepreneurship lessons in PhilippinesDavidSamuel525586
 
Darshan Hiranandani [News About Next CEO].pdf
Darshan Hiranandani [News About Next CEO].pdfDarshan Hiranandani [News About Next CEO].pdf
Darshan Hiranandani [News About Next CEO].pdfShashank Mehta
 
FULL ENJOY Call girls in Paharganj Delhi | 8377087607
FULL ENJOY Call girls in Paharganj Delhi | 8377087607FULL ENJOY Call girls in Paharganj Delhi | 8377087607
FULL ENJOY Call girls in Paharganj Delhi | 8377087607dollysharma2066
 
Cyber Security Training in Office Environment
Cyber Security Training in Office EnvironmentCyber Security Training in Office Environment
Cyber Security Training in Office Environmentelijahj01012
 

Recently uploaded (20)

Market Sizes Sample Report - 2024 Edition
Market Sizes Sample Report - 2024 EditionMarket Sizes Sample Report - 2024 Edition
Market Sizes Sample Report - 2024 Edition
 
Traction part 2 - EOS Model JAX Bridges.
Traction part 2 - EOS Model JAX Bridges.Traction part 2 - EOS Model JAX Bridges.
Traction part 2 - EOS Model JAX Bridges.
 
Appkodes Tinder Clone Script with Customisable Solutions.pptx
Appkodes Tinder Clone Script with Customisable Solutions.pptxAppkodes Tinder Clone Script with Customisable Solutions.pptx
Appkodes Tinder Clone Script with Customisable Solutions.pptx
 
APRIL2024_UKRAINE_xml_0000000000000 .pdf
APRIL2024_UKRAINE_xml_0000000000000 .pdfAPRIL2024_UKRAINE_xml_0000000000000 .pdf
APRIL2024_UKRAINE_xml_0000000000000 .pdf
 
8447779800, Low rate Call girls in New Ashok Nagar Delhi NCR
8447779800, Low rate Call girls in New Ashok Nagar Delhi NCR8447779800, Low rate Call girls in New Ashok Nagar Delhi NCR
8447779800, Low rate Call girls in New Ashok Nagar Delhi NCR
 
Guide Complete Set of Residential Architectural Drawings PDF
Guide Complete Set of Residential Architectural Drawings PDFGuide Complete Set of Residential Architectural Drawings PDF
Guide Complete Set of Residential Architectural Drawings PDF
 
Innovation Conference 5th March 2024.pdf
Innovation Conference 5th March 2024.pdfInnovation Conference 5th March 2024.pdf
Innovation Conference 5th March 2024.pdf
 
Enjoy ➥8448380779▻ Call Girls In Sector 18 Noida Escorts Delhi NCR
Enjoy ➥8448380779▻ Call Girls In Sector 18 Noida Escorts Delhi NCREnjoy ➥8448380779▻ Call Girls In Sector 18 Noida Escorts Delhi NCR
Enjoy ➥8448380779▻ Call Girls In Sector 18 Noida Escorts Delhi NCR
 
Call US-88OO1O2216 Call Girls In Mahipalpur Female Escort Service
Call US-88OO1O2216 Call Girls In Mahipalpur Female Escort ServiceCall US-88OO1O2216 Call Girls In Mahipalpur Female Escort Service
Call US-88OO1O2216 Call Girls In Mahipalpur Female Escort Service
 
Ten Organizational Design Models to align structure and operations to busines...
Ten Organizational Design Models to align structure and operations to busines...Ten Organizational Design Models to align structure and operations to busines...
Ten Organizational Design Models to align structure and operations to busines...
 
NewBase 19 April 2024 Energy News issue - 1717 by Khaled Al Awadi.pdf
NewBase  19 April  2024  Energy News issue - 1717 by Khaled Al Awadi.pdfNewBase  19 April  2024  Energy News issue - 1717 by Khaled Al Awadi.pdf
NewBase 19 April 2024 Energy News issue - 1717 by Khaled Al Awadi.pdf
 
PSCC - Capability Statement Presentation
PSCC - Capability Statement PresentationPSCC - Capability Statement Presentation
PSCC - Capability Statement Presentation
 
8447779800, Low rate Call girls in Saket Delhi NCR
8447779800, Low rate Call girls in Saket Delhi NCR8447779800, Low rate Call girls in Saket Delhi NCR
8447779800, Low rate Call girls in Saket Delhi NCR
 
Flow Your Strategy at Flight Levels Day 2024
Flow Your Strategy at Flight Levels Day 2024Flow Your Strategy at Flight Levels Day 2024
Flow Your Strategy at Flight Levels Day 2024
 
Organizational Structure Running A Successful Business
Organizational Structure Running A Successful BusinessOrganizational Structure Running A Successful Business
Organizational Structure Running A Successful Business
 
Entrepreneurship lessons in Philippines
Entrepreneurship lessons in  PhilippinesEntrepreneurship lessons in  Philippines
Entrepreneurship lessons in Philippines
 
Darshan Hiranandani [News About Next CEO].pdf
Darshan Hiranandani [News About Next CEO].pdfDarshan Hiranandani [News About Next CEO].pdf
Darshan Hiranandani [News About Next CEO].pdf
 
Call Us ➥9319373153▻Call Girls In North Goa
Call Us ➥9319373153▻Call Girls In North GoaCall Us ➥9319373153▻Call Girls In North Goa
Call Us ➥9319373153▻Call Girls In North Goa
 
FULL ENJOY Call girls in Paharganj Delhi | 8377087607
FULL ENJOY Call girls in Paharganj Delhi | 8377087607FULL ENJOY Call girls in Paharganj Delhi | 8377087607
FULL ENJOY Call girls in Paharganj Delhi | 8377087607
 
Cyber Security Training in Office Environment
Cyber Security Training in Office EnvironmentCyber Security Training in Office Environment
Cyber Security Training in Office Environment
 

Living in a Multi-lingual World: Internationalization in Web and Desktop Applications

  • 1. i18n for Web 2.0 Why and how to internationalize your Web 2.0 application Lars Trieloff, Mindquarry
  • 2. Why internationalize? International audiences want localized user interfaces.
  • 3. Lars Trieloff • Entrepreneur, Blogger, Open Source Coder • Languages I understand: • German, English • Languages I do not understand: • Mandarin, Hindi, Spanish, Arabic, Russian, Portuguese, Bengali, Malay, French, Japanese, Farsi, Urdu, Punjabi, Vietnamese, Tamil, Wu, Javanese, Turkish, Telugu, Korean, Marathi, Italian, Thai, cantonese, gujarati, polish, kannada, burmese (and all other)
  • 4. Do it yourself, or someone else will do it
  • 5. Do it yourself, or someone else will do it
  • 6. Do it yourself, or someone else will do it
  • 7. Do it yourself, or someone else will do it
  • 8. Do it yourself, or someone else will do it
  • 9. What is different in Web 2.0 internationalization?
  • 10. Web 2.0 internationalization • Web sites become Web applications • The Web as a platform • This means: • Internationalize your plain old Web site • Internationalize your rich internet applications • Javascript, Flash, Silverlight, and more to come • Internationalize your desktop applications
  • 11. Challenge The internationalization problem is multiplied due to use of different technologies in Web and rich internet applications as well as desktop applications
  • 12. Solution Consolidation of internationalization technology: Each technology has its own internationalization framework: We need a common framework for all of them
  • 13. What to do • Keep all internationalization data in one place • Extract internationalization strings from application parts • repeatedly • automatically • Let the applications pull the i18n strings
  • 14. What do do Web Web application application source code Translator RIA source String Localization RIA code Extractor Database Intermediate Converter desktop Intermediate desktop application Format application source code Translator
  • 15. Example How we did it in Mindquarry
  • 16. Our technology Our problem • Web application framework: Apache Cocoon, with Cocoon i18n Transformer • Rich internet application framework: Dojo Toolkit, with dojo.i18n.* • Desktop client: Java and SWT, with Java Message Bundles
  • 17. Steps to consolidated i18n 1. Find a common i18n database format 2. Extract internationalizable content automatically 3. Attach applications to i18n database
  • 18. 1. i18n database format • QT Linguist .ts files • XML files, easy to process • QT Linguist is a good, easy-to- use and free translation editor • Can be used by non- programmers
  • 19. 2. Automatic string extraction • We have three types of source code: XML, Java and Javascript • XML • Ruby script parses all XML source code, finds internationalizable strings not yet in database and adds them • Java and Javascript, similar with a more complex parser
  • 20. 3.1. Attach Cocoon messages.ts (QT Linguist) • Apache Cocoon‘s internationalization databases are XML files XSLT • Transformation via XSLT messages_de.xml messages_de.xml (Cocoon i18n) • (Cocoon i18n) Multiple output files, one for each language Apache Cocoon
  • 21. 3.2. Attach Dojo messages.ts (QT Linguist) • Dojo uses JSON as XSLT internationalization format messages_de.xml messages_de.xml (Cocoon i18n) (Cocoon i18n) • Transformation via XSLT Apache Cocoon • Handled dynamically via Cocoon messages_de.js messages_de.js (Dojo i18n) (Dojo i18n) Dojo Widget
  • 22. 3.3. Attach Java • Message Bundle Reader messages.ts is overwritten (QT Linguist) • Uses internationalization database directory • Internationalization i18n Adapter database is being distributed with desktop Desktop Client client
  • 23. How to get translations
  • 24. How to get translations do it yourself
  • 25. How to get translations ¥ $ € do it yourself pay someone
  • 26. How to get translations ¥ $ € do it yourself pay someone ask your users
  • 27. User-contributed internationalization • The holy grail • Build a community and website at the same time • But hard to achieve • Wikipedia • Open Source projects
  • 28. User-contributed internationalization • The holy grail • Build a community and website at the same time • But hard to achieve • Wikipedia • Open Source projects
  • 29. Build your own translation website Allows users to sign-up, contribute localization strings, costly, but allows for automatic post-processing, validation and quality-control.
  • 30. Build your own translation website Allows users to sign-up, contribute localization strings, costly, but allows for automatic post-processing, validation and quality-control.
  • 31. Build your own translation website Allows users to sign-up, contribute localization strings, costly, but allows for automatic post-processing, validation and quality-control.
  • 32. Ad-hoc- translations: use a wiki Allows users to contribute localization strings without sign- up, easy to deploy, but requires manual post-processing, validation and quality-control.
  • 33. Pootle: OSS for web-based translations GPL-software, based on Python, works with .po or XLIFF, integration with version control, basic project management, used by 20+ open source projects http://pootle.wordforge.org
  • 34. Pootle: OSS for web-based translations GPL-software, based on Python, works with .po or XLIFF, integration with version control, basic project management, used by 20+ open source projects http://pootle.wordforge.org
  • 35. More challenges in Web 2.0 internationalization • User-generated content • Rich Web design • User-contributed translations
  • 36. User-generated content • User-generated content is great • But hard to translate • But translating it increases network effects • English speaking users benefit from content generated by German speaking users • Is there a (partial) solution?
  • 37. Solution • Structured Content • Sometimes easier to translate • ratings • locations • time & date • Sometimes it is still hard • tags
  • 38. Solution • Structured Content • Sometimes easier to translate • ratings • locations • time & date • Sometimes it is still hard • tags
  • 39. Solution • Structured Content • Sometimes easier to translate • ratings • locations • time & date • Sometimes it is still hard • tags
  • 40. Solution • Structured Content • Sometimes easier to translate • ratings • locations • time & date • Sometimes it is still hard • tags
  • 41. Solution • Structured Content • Sometimes easier to translate • ratings • locations • time & date • Sometimes it is still hard • tags
  • 42. Solution • Structured Content • Sometimes easier to translate • ratings • locations • time & date • Sometimes it is still hard • tags
  • 43. Solution • Structured Content • Sometimes easier to translate • ratings • locations • time & date • Sometimes it is still hard • tags
  • 44. Solution • Structured Content • Sometimes easier to translate • ratings • locations • time & date • Sometimes it is still hard • tags
  • 45. Graphical text • Looks great • But hard to internationalize • can break calculated box sizes, • re-creation necessary • Do not do it • unless you can do it right • create dynamically on server
  • 46. Graphical text • Looks great • But hard to internationalize • can break calculated box sizes, • re-creation necessary • Do not do it • unless you can do it right • create dynamically on server
  • 47. Graphical text • Looks great • But hard to internationalize • can break calculated box sizes, • re-creation necessary • Do not do it • unless you can do it right • create dynamically on server
  • 48. Thank you very much lars@trieloff.net For more information, see my weblog at http://weblogs.goshaky.com/weblog/lars