Feature Requests item #1015548, was opened at 2004-08-24 22:38 Message generated for change (Tracker Item Submitted) made by Item Submitter You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=536616&aid=1015548&group_id=73068
Category: main taglib Group: planned for 1.0 Status: Open Resolution: None Priority: 5 Submitted By: Christoph Beck (beckchr) Assigned to: Nobody/Anonymous (nobody) Summary: i18n, support browser locale Initial Comment: As far as I can see, displaytag doesn't support i18n by browser locale. This is, however, an important feature in web applications we build. I went a bit into the code, to see what could be done with minimal effort and without breaking compatibility. Unfortionately, displaytag mixes functional properties, layout and localized strings in one properties file. To avoid copying everything for every language, local strings should to be taken out of that ensemble. This could be done by allowing property values to have embedded resource bundle keys. Eg, a pattern of the form #{key} in the property value is replaced by the resource value for 'key' at runtime. See the modified TableTag.properties file... The last two properties in this file are new. - the 'i18n.bundle' property contains the bundle name to resolve the #{key} parts in properties. - the 'i18n.language' property contains a default locale to use. As usual, these can be overridden by users in their displaytag.properties. You can find english and german versions of the externalized strings in the files TableTagStrings.properties and TableTagStrings_de.properties. So far, so good. Next, class org.displaytag.properties.TableProperties has to be changed. Basically, - we construct instances by optionally passing in a locale. - the bundle is loaded according to the specified locale. - if no locale has been specified, we take the locale from the 'i18n.language' property. - if that isn't set either, we use Locale.getDefault(). - when serving property values, we replace the #{key} parts in our properties. Up to now, changes are 99.99% backward compatible (the 0.01% is due to the fact, that the string '#{' in a property value now has a special meaning). Now, if we do not always want to use a default locale, the table tag has to compute and pass the desired locale to the TableProperties constructor. One way is to simply use pageContext.getRequest ().getLocale() to take the locale preferred by the user (single line change in TableTag.doStartTag()). I have done things up to this point and it works fine. However, it is probably desired to explicitely state the locale (or at least language) to be used. One possibility was to add an optional 'locale' attribute to the table tag which would take a locale string like 'en_US', or one of the values: - 'server' to take Locale.getDefault() - 'request' to take request.getLocale() - 'default' take locale constructed from 'i18n.language' property Now, what would be the default? To keep backward compativility, it would be 'default', since displaytag nowerdays always uses english text as default. On the other hand, I would expect that it is almost always better to use the user locale from the request. It would be nice, if this (or some other) solution for i18n support would be included into displaytag 1.0. ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=536616&aid=1015548&group_id=73068 ------------------------------------------------------- SF.Net email is sponsored by Shop4tech.com-Lowest price on Blank Media 100pk Sonic DVD-R 4x for only $29 -100pk Sonic DVD+R for only $33 Save 50% off Retail on Ink & Toner - Free Shipping and Free Gift. http://www.shop4tech.com/z/Inkjet_Cartridges/9_108_r285 _______________________________________________ displaytag-devel mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/displaytag-devel