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

Call Girls In Panjim North Goa 9971646499 Genuine Service
Call Girls In Panjim North Goa 9971646499 Genuine ServiceCall Girls In Panjim North Goa 9971646499 Genuine Service
Call Girls In Panjim North Goa 9971646499 Genuine Serviceritikaroy0888
 
VIP Call Girl Jamshedpur Aashi 8250192130 Independent Escort Service Jamshedpur
VIP Call Girl Jamshedpur Aashi 8250192130 Independent Escort Service JamshedpurVIP Call Girl Jamshedpur Aashi 8250192130 Independent Escort Service Jamshedpur
VIP Call Girl Jamshedpur Aashi 8250192130 Independent Escort Service JamshedpurSuhani Kapoor
 
Russian Faridabad Call Girls(Badarpur) : ☎ 8168257667, @4999
Russian Faridabad Call Girls(Badarpur) : ☎ 8168257667, @4999Russian Faridabad Call Girls(Badarpur) : ☎ 8168257667, @4999
Russian Faridabad Call Girls(Badarpur) : ☎ 8168257667, @4999Tina Ji
 
Vip Female Escorts Noida 9711199171 Greater Noida Escorts Service
Vip Female Escorts Noida 9711199171 Greater Noida Escorts ServiceVip Female Escorts Noida 9711199171 Greater Noida Escorts Service
Vip Female Escorts Noida 9711199171 Greater Noida Escorts Serviceankitnayak356677
 
Call Girls In Connaught Place Delhi ❤️88604**77959_Russian 100% Genuine Escor...
Call Girls In Connaught Place Delhi ❤️88604**77959_Russian 100% Genuine Escor...Call Girls In Connaught Place Delhi ❤️88604**77959_Russian 100% Genuine Escor...
Call Girls In Connaught Place Delhi ❤️88604**77959_Russian 100% Genuine Escor...lizamodels9
 
BEST Call Girls In Old Faridabad ✨ 9773824855 ✨ Escorts Service In Delhi Ncr,
BEST Call Girls In Old Faridabad ✨ 9773824855 ✨ Escorts Service In Delhi Ncr,BEST Call Girls In Old Faridabad ✨ 9773824855 ✨ Escorts Service In Delhi Ncr,
BEST Call Girls In Old Faridabad ✨ 9773824855 ✨ Escorts Service In Delhi Ncr,noida100girls
 
Grateful 7 speech thanking everyone that has helped.pdf
Grateful 7 speech thanking everyone that has helped.pdfGrateful 7 speech thanking everyone that has helped.pdf
Grateful 7 speech thanking everyone that has helped.pdfPaul Menig
 
Call Girls Pune Just Call 9907093804 Top Class Call Girl Service Available
Call Girls Pune Just Call 9907093804 Top Class Call Girl Service AvailableCall Girls Pune Just Call 9907093804 Top Class Call Girl Service Available
Call Girls Pune Just Call 9907093804 Top Class Call Girl Service AvailableDipal Arora
 
A DAY IN THE LIFE OF A SALESMAN / WOMAN
A DAY IN THE LIFE OF A  SALESMAN / WOMANA DAY IN THE LIFE OF A  SALESMAN / WOMAN
A DAY IN THE LIFE OF A SALESMAN / WOMANIlamathiKannappan
 
Keppel Ltd. 1Q 2024 Business Update Presentation Slides
Keppel Ltd. 1Q 2024 Business Update  Presentation SlidesKeppel Ltd. 1Q 2024 Business Update  Presentation Slides
Keppel Ltd. 1Q 2024 Business Update Presentation SlidesKeppelCorporation
 
Eni 2024 1Q Results - 24.04.24 business.
Eni 2024 1Q Results - 24.04.24 business.Eni 2024 1Q Results - 24.04.24 business.
Eni 2024 1Q Results - 24.04.24 business.Eni
 
M.C Lodges -- Guest House in Jhang.
M.C Lodges --  Guest House in Jhang.M.C Lodges --  Guest House in Jhang.
M.C Lodges -- Guest House in Jhang.Aaiza Hassan
 
Non Text Magic Studio Magic Design for Presentations L&P.pptx
Non Text Magic Studio Magic Design for Presentations L&P.pptxNon Text Magic Studio Magic Design for Presentations L&P.pptx
Non Text Magic Studio Magic Design for Presentations L&P.pptxAbhayThakur200703
 
BEST Call Girls In Greater Noida ✨ 9773824855 ✨ Escorts Service In Delhi Ncr,
BEST Call Girls In Greater Noida ✨ 9773824855 ✨ Escorts Service In Delhi Ncr,BEST Call Girls In Greater Noida ✨ 9773824855 ✨ Escorts Service In Delhi Ncr,
BEST Call Girls In Greater Noida ✨ 9773824855 ✨ Escorts Service In Delhi Ncr,noida100girls
 
Cash Payment 9602870969 Escort Service in Udaipur Call Girls
Cash Payment 9602870969 Escort Service in Udaipur Call GirlsCash Payment 9602870969 Escort Service in Udaipur Call Girls
Cash Payment 9602870969 Escort Service in Udaipur Call GirlsApsara Of India
 
2024 Numerator Consumer Study of Cannabis Usage
2024 Numerator Consumer Study of Cannabis Usage2024 Numerator Consumer Study of Cannabis Usage
2024 Numerator Consumer Study of Cannabis UsageNeil Kimberley
 
Enhancing and Restoring Safety & Quality Cultures - Dave Litwiller - May 2024...
Enhancing and Restoring Safety & Quality Cultures - Dave Litwiller - May 2024...Enhancing and Restoring Safety & Quality Cultures - Dave Litwiller - May 2024...
Enhancing and Restoring Safety & Quality Cultures - Dave Litwiller - May 2024...Dave Litwiller
 
Vip Dewas Call Girls #9907093804 Contact Number Escorts Service Dewas
Vip Dewas Call Girls #9907093804 Contact Number Escorts Service DewasVip Dewas Call Girls #9907093804 Contact Number Escorts Service Dewas
Vip Dewas Call Girls #9907093804 Contact Number Escorts Service Dewasmakika9823
 
Tech Startup Growth Hacking 101 - Basics on Growth Marketing
Tech Startup Growth Hacking 101  - Basics on Growth MarketingTech Startup Growth Hacking 101  - Basics on Growth Marketing
Tech Startup Growth Hacking 101 - Basics on Growth MarketingShawn Pang
 

Recently uploaded (20)

Call Girls In Panjim North Goa 9971646499 Genuine Service
Call Girls In Panjim North Goa 9971646499 Genuine ServiceCall Girls In Panjim North Goa 9971646499 Genuine Service
Call Girls In Panjim North Goa 9971646499 Genuine Service
 
VIP Call Girl Jamshedpur Aashi 8250192130 Independent Escort Service Jamshedpur
VIP Call Girl Jamshedpur Aashi 8250192130 Independent Escort Service JamshedpurVIP Call Girl Jamshedpur Aashi 8250192130 Independent Escort Service Jamshedpur
VIP Call Girl Jamshedpur Aashi 8250192130 Independent Escort Service Jamshedpur
 
Russian Faridabad Call Girls(Badarpur) : ☎ 8168257667, @4999
Russian Faridabad Call Girls(Badarpur) : ☎ 8168257667, @4999Russian Faridabad Call Girls(Badarpur) : ☎ 8168257667, @4999
Russian Faridabad Call Girls(Badarpur) : ☎ 8168257667, @4999
 
Vip Female Escorts Noida 9711199171 Greater Noida Escorts Service
Vip Female Escorts Noida 9711199171 Greater Noida Escorts ServiceVip Female Escorts Noida 9711199171 Greater Noida Escorts Service
Vip Female Escorts Noida 9711199171 Greater Noida Escorts Service
 
Call Girls In Connaught Place Delhi ❤️88604**77959_Russian 100% Genuine Escor...
Call Girls In Connaught Place Delhi ❤️88604**77959_Russian 100% Genuine Escor...Call Girls In Connaught Place Delhi ❤️88604**77959_Russian 100% Genuine Escor...
Call Girls In Connaught Place Delhi ❤️88604**77959_Russian 100% Genuine Escor...
 
BEST Call Girls In Old Faridabad ✨ 9773824855 ✨ Escorts Service In Delhi Ncr,
BEST Call Girls In Old Faridabad ✨ 9773824855 ✨ Escorts Service In Delhi Ncr,BEST Call Girls In Old Faridabad ✨ 9773824855 ✨ Escorts Service In Delhi Ncr,
BEST Call Girls In Old Faridabad ✨ 9773824855 ✨ Escorts Service In Delhi Ncr,
 
Grateful 7 speech thanking everyone that has helped.pdf
Grateful 7 speech thanking everyone that has helped.pdfGrateful 7 speech thanking everyone that has helped.pdf
Grateful 7 speech thanking everyone that has helped.pdf
 
Call Girls Pune Just Call 9907093804 Top Class Call Girl Service Available
Call Girls Pune Just Call 9907093804 Top Class Call Girl Service AvailableCall Girls Pune Just Call 9907093804 Top Class Call Girl Service Available
Call Girls Pune Just Call 9907093804 Top Class Call Girl Service Available
 
A DAY IN THE LIFE OF A SALESMAN / WOMAN
A DAY IN THE LIFE OF A  SALESMAN / WOMANA DAY IN THE LIFE OF A  SALESMAN / WOMAN
A DAY IN THE LIFE OF A SALESMAN / WOMAN
 
Keppel Ltd. 1Q 2024 Business Update Presentation Slides
Keppel Ltd. 1Q 2024 Business Update  Presentation SlidesKeppel Ltd. 1Q 2024 Business Update  Presentation Slides
Keppel Ltd. 1Q 2024 Business Update Presentation Slides
 
Eni 2024 1Q Results - 24.04.24 business.
Eni 2024 1Q Results - 24.04.24 business.Eni 2024 1Q Results - 24.04.24 business.
Eni 2024 1Q Results - 24.04.24 business.
 
M.C Lodges -- Guest House in Jhang.
M.C Lodges --  Guest House in Jhang.M.C Lodges --  Guest House in Jhang.
M.C Lodges -- Guest House in Jhang.
 
Non Text Magic Studio Magic Design for Presentations L&P.pptx
Non Text Magic Studio Magic Design for Presentations L&P.pptxNon Text Magic Studio Magic Design for Presentations L&P.pptx
Non Text Magic Studio Magic Design for Presentations L&P.pptx
 
BEST Call Girls In Greater Noida ✨ 9773824855 ✨ Escorts Service In Delhi Ncr,
BEST Call Girls In Greater Noida ✨ 9773824855 ✨ Escorts Service In Delhi Ncr,BEST Call Girls In Greater Noida ✨ 9773824855 ✨ Escorts Service In Delhi Ncr,
BEST Call Girls In Greater Noida ✨ 9773824855 ✨ Escorts Service In Delhi Ncr,
 
Best Practices for Implementing an External Recruiting Partnership
Best Practices for Implementing an External Recruiting PartnershipBest Practices for Implementing an External Recruiting Partnership
Best Practices for Implementing an External Recruiting Partnership
 
Cash Payment 9602870969 Escort Service in Udaipur Call Girls
Cash Payment 9602870969 Escort Service in Udaipur Call GirlsCash Payment 9602870969 Escort Service in Udaipur Call Girls
Cash Payment 9602870969 Escort Service in Udaipur Call Girls
 
2024 Numerator Consumer Study of Cannabis Usage
2024 Numerator Consumer Study of Cannabis Usage2024 Numerator Consumer Study of Cannabis Usage
2024 Numerator Consumer Study of Cannabis Usage
 
Enhancing and Restoring Safety & Quality Cultures - Dave Litwiller - May 2024...
Enhancing and Restoring Safety & Quality Cultures - Dave Litwiller - May 2024...Enhancing and Restoring Safety & Quality Cultures - Dave Litwiller - May 2024...
Enhancing and Restoring Safety & Quality Cultures - Dave Litwiller - May 2024...
 
Vip Dewas Call Girls #9907093804 Contact Number Escorts Service Dewas
Vip Dewas Call Girls #9907093804 Contact Number Escorts Service DewasVip Dewas Call Girls #9907093804 Contact Number Escorts Service Dewas
Vip Dewas Call Girls #9907093804 Contact Number Escorts Service Dewas
 
Tech Startup Growth Hacking 101 - Basics on Growth Marketing
Tech Startup Growth Hacking 101  - Basics on Growth MarketingTech Startup Growth Hacking 101  - Basics on Growth Marketing
Tech Startup Growth Hacking 101 - Basics on Growth Marketing
 

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