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
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
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
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