End-to-end internationalization of Web applications


News: End-to-end internationalization of Web applications

  1. Building an internationalized web application is not often a trivial task.

    You need more than just tools and supplies to build a house. Hammer and nails are indispensable, but, before you start hammering together boards, you need to know the house's electrical needs, plumbing placement, and appropriate building codes. Likewise, when building an internationalized Web application, you need to know more than simply what tools the JDK offers to support your efforts. Reader, Locale, and ResourceBundle classes are your tools, but you still must confront other complexities that will drive how you use those tools as you nail together your application. Internationalization and localization are about more than rendering pages in locale-specific languages. They're about building applications to be globally aware from the browser all the way through to the database. In this article, you look at where to address character encoding when building internationalized Web applications, how localization affects data format, and additional internationalization tools provided by Apache Struts. You also learn how to overcome gaps in the standards and in the Struts framework as well as what pitfalls you might face during implementation.
    Read End-to-end internationalization of Web applications

    NOTE: Does anyone in TheServerSide Community have any tips and tricks for i18n?
  2. add Tiles to the mix...[ Go to top ]

    The article briefly mentions problems with 'accommodating languages rendered left-to-right and right-to-left' but offers no specific solution.

    I myself found Tiles in conjuntion with struts an eccelent way to help solve this problem - a simple config file for each target locale and you can start moving menu's, specifiying different sizes for them (essential when you find a translated eord is twice as big as the english equivilent!), etc on the fly.

  3. Tapestry and I18N[ Go to top ]

    Tapestry has some significant features w.r.t. I18N:

    Each page and component can have its own bundle of localized messages files (i.e., Home.properties, Home_fr.properties)

    Easy access to those properties, i.e.: <span jwcid="@Border" title="message:title"> gets the title message key and passes it to the Border component as the title parameter.

    Easy injection of localized content into templates, i.e. <span key="a-message"> ... sample text ... </span> will replace the sample text with the localized a-message message.

    Assets are localized automatically, so you can have Button.gif, Button_de.gif, Button_fr.gif and Tapestry will select the correct locale-specific one at runtime

    Pages and components can have localized templates (to address large scale changes, such as left-to-right issues)

    In addition, Mindbridge and crew have put a lot of support for handling charsets and locales in places; you can declare these things as meta data in your page specification and it all happens automatically. Detail's in the User's Guide.
  4. Hello,
    xTier™ 2.0 ships with powerful "i18n" service in Standard Edition. To save on typing here are the links:
    xTier Overview
    I18n service example, APIs, articles

    xTier – Service Oriented Middlware
  5. JSF[ Go to top ]

    JSF has a lot of really nifty i18n features. Things like dates get formatted properly depending on the locale automagically. Additionally the framework handles details such as determining the character encoding of Forms.
  6. For internationalization of a database-driven J2EE applications, it is often makes sense (or required) to go deeper than web and service layers, and incorporate i18n into database design too. This should be decided at requirements analysis phase and then designed with a great care because there are many wrong ways to do it (plus it's application-specific), and it is impossible to modify the data structure once the application is built on top of it and launched into production.

  7. Hi Valeri,

       Having faced this problem before, I couldn't find a solution I was satisfied with. Would you share with us any design ideas?


    Leonardo Bueno