I can't see how i18n is a model/business layer technology? i18n purely
relates to presentation and the view layer technology and hence should be
dealt with in the view. If the data is international, using UTF-8 charsets
on your DB makes it i18n enabled by default. The very fact that a
application can have one core model and controller but be represented in
many international formats deems it is a presentation/view layer
responsibility.
tibi-3 wrote:
>
> have now:
> not thread safe etc.... just a start
>
> import java.util.ResourceBundle;
>
> import org.apache.log4j.Logger;
> import org.appfuse.Constants;
> import org.appfuse.model.BaseObject;
> import org.springframework.context.i18n.LocaleContextHolder;
>
> public abstract class MyBaseObject extends BaseObject {
>
> static Logger logger = Logger.getLogger(MyBaseObject.class);
> ResourceBundle messages =
> ResourceBundle.getBundle(Constants.BUNDLE_KEY,
> LocaleContextHolder.getLocale());
>
> public String getText(String key) {
> try {
> return messages.getString(key);
> } catch (RuntimeException e) {
> logger.info("Could not find the key: '" + key + "'");
> return "??" + key + "??";
> }
>
> }
> }
>
>
> tibi wrote:
>> yes works great:
>>
>> ResourceBundle messages =
>> ResourceBundle.getBundle(Constants.BUNDLE_KEY,
>> LocaleContextHolder.getLocale());
>> logger.debug(messages.getString("company.url"));
>>
>> and make sure you import:
>> import org.appfuse.Constants;
>>
>> i will make a myBaseObject with a getText method in it.. than it will
>> be nice and equal to my action ;)
>>
>> tibi
>>
>> Matt Raible wrote:
>>> On 4/26/07, Jonathan Tse <[EMAIL PROTECTED]> wrote:
>>>> I see your point.
>>>>
>>>> And I agree that Model can reach MessageSourceAccessor.
>>>>
>>>> Currently in Spring MVC, i18n is not supported very well too (or i miss
>>>> something?).
>>>> I duplicated BaseFormController to a BaseController so that all
>>>> controllers which implements
>>>> org.springframework.web.servlet.mvc.Controller are changed to extend
>>>> this class.
>>>>
>>>> So, is there anyway that we can provide a MessageSourceAcceessor to
>>>> BaseObject?
>>>
>>> Why not use a regular ol' ResourceBundle. You should be able to do
>>> this in your model object:
>>>
>>> ResourceBundle messages =
>>> ResourceBundle.getBundle(Constants.BUNDLE_KEY,
>>> LocaleContextHolder.getLocale());
>>>
>>> The user's locale is stored in a ThreadLocale from the LocaleFilter.
>>> I don't know how thread-safe this is, but it should work. Of course,
>>> you might have to manipulate your DAO tests so
>>> ApplicationResources.properties is on your classpath - but this should
>>> work. I don't know how thread safe it is or how it'll work if you
>>> transport your model objects as DTOs over web services.
>>>
>>> Matt
>>>
>>>>
>>>> Jonathan
>>>>
>>>>
>>>> tibi wrote:
>>>> > there are more situations where it could be handy to have i18n if you
>>>> > want to keep your jsp clean.
>>>> > like get fullname
>>>> >
>>>> > class user{
>>>> >
>>>> > string getFullname(){
>>>> > return super.getText("fullname",first, last);// en: matt raible - hu:
>>>> > raible, matt
>>>> > }
>>>> >
>>>> > }
>>>> >
>>>> > offcoure this could be done in the jsp but i like java in model and
>>>> > tags in jsp ;)
>>>> >
>>>> >
>>>> > tibi
>>>> >
>>>> >
>>>> >
>>>> > tibi wrote:
>>>> >> and the model can't be i18n?
>>>> >>
>>>> >> if i would put the i18n into the database that would be realy a lot
>>>> >> of overhead. than i rather do iets the strange why ;)
>>>> >>
>>>> >> tibi
>>>> >>
>>>> >> Matt Raible wrote:
>>>> >>> On 4/26/07, tibi <[EMAIL PROTECTED]> wrote:
>>>> >>>> why does the BaseObject not have a getText method?
>>>> >>>
>>>> >>> Because it's part of the model/dao layer. You might want to use
>>>> >>> something like the following to 1i8n-ize your data tier.
>>>> >>>
>>>> >>>
>>>> http://www.theserverside.com/tt/blogs/showblog.tss?id=HibernateInternational
>>>>
>>>>
>>>> >>>
>>>> >>>
>>>> >>> Matt
>>>> >>>
>>>> >>>>
>>>> >>>> tibi
>>>> >>>>
>>>> >>>> tibi wrote:
>>>> >>>> > mmm its business knowledge i like it to be in the model.
>>>> >>>> > and i like to simplify my jsp as much as possible.
>>>> >>>> > i could push my action into my model and use the getText method.
>>>> >>>> >
>>>> >>>> > a bit wierd but seems logical.
>>>> >>>> >
>>>> >>>> > there are more examples where a getText comes in handy. like
>>>> if you
>>>> >>>> > want the date.format
>>>> >>>> >
>>>> >>>> > tibi
>>>> >>>> >
>>>> >>>> > Matt Raible wrote:
>>>> >>>> >> I would do some checking in your view - i.e. <c:if
>>>> test="${empty
>>>> >>>> >> locations}"><fmt:message key="traveling.key"/></c:if>,
>>>> otherwise
>>>> >>>> show
>>>> >>>> >> city.
>>>> >>>> >>
>>>> >>>> >> Matt
>>>> >>>> >>
>>>> >>>> >> On 4/26/07, tibi <[EMAIL PROTECTED]> wrote:
>>>> >>>> >>> pseudo code:
>>>> >>>> >>>
>>>> >>>> >>> class Event
>>>> >>>> >>>
>>>> >>>> >>> list locations
>>>> >>>> >>>
>>>> >>>> >>> String getSimpleLocation(){
>>>> >>>> >>> if(locations.size()==1){
>>>> >>>> >>> return location.get(0).getCity();
>>>> >>>> >>> }
>>>> >>>> >>> return 'traveling';
>>>> >>>> >>> }
>>>> >>>> >>>
>>>> >>>> >>> someting like this?
>>>> >>>> >>>
>>>> >>>> >>> tibi
>>>> >>>> >>>
>>>> >>>> >>>
>>>> >>>> >>> Matt Raible wrote:
>>>> >>>> >>> > I don't understand what you're trying to do - can you
>>>> post code?
>>>> >>>> >>> >
>>>> >>>> >>> > On 4/26/07, tibi <[EMAIL PROTECTED]> wrote:
>>>> >>>> >>> >> i have an event with a getSimpleLocation in it.
>>>> >>>> >>> >> my object can have multiple location
>>>> >>>> >>> >> if there is 1 location return the location
>>>> >>>> >>> >> if there are multple return 'traveling'
>>>> >>>> >>> >>
>>>> >>>> >>> >> tibi
>>>> >>>> >>> >>
>>>> >>>> >>> >> Matt Raible wrote:
>>>> >>>> >>> >> > How do you want to use i18n in your models?
>>>> >>>> >>> >> >
>>>> >>>> >>> >> > On 4/26/07, tibi <[EMAIL PROTECTED]> wrote:
>>>> >>>> >>> >> >> ok it works in actions but how can i use it in my
>>>> models?
>>>> >>>> >>> >> >> should i pass my action into the moddel to use her
>>>> getText
>>>> >>>> >>> method?
>>>> >>>> >>> >> >>
>>>> >>>> >>> >> >> tibi
>>>> >>>> >>> >> >>
>>>> >>>> >>> >> >> tibi wrote:
>>>> >>>> >>> >> >> > ahhh it must be the super.getText("") method ;)
>>>> >>>> >>> >> >> >
>>>> >>>> >>> >> >> > tibi
>>>> >>>> >>> >> >> >
>>>> >>>> >>> >> >> > tibi wrote:
>>>> >>>> >>> >> >> >> hi,
>>>> >>>> >>> >> >> >>
>>>> >>>> >>> >> >> >> i can't find an example of how to use i18n from
>>>> within my
>>>> >>>> >>> actions.
>>>> >>>> >>> >> >> >> in struts it used to something like this:
>>>> >>>> >>> >> >> >> errors.add(ActionErrors.GLOBAL_ERROR, new
>>>> >>>> >>> >> >> >> ActionError("key.order.no.item"));
>>>> >>>> >>> >> >> >>
>>>> >>>> >>> >> >> >> but in struts2 this will not work.
>>>> >>>> >>> >> >> >>
>>>> >>>> >>> >> >> >> anyone?
>>>> >>>> >>> >> >> >>
>>>> >>>> >>> >> >> >> thanks
>>>> >>>> >>> >> >> >>
>>>> >>>> >>> >> >> >> tibi
>>>> >>>> >>> >> >> >>
>>>> >>>> >>> >> >> >>
>>>> >>>> >>> >>
>>>> >>>> >>>
>>>> >>>>
>>>> ---------------------------------------------------------------------
>>>> >>>> >>> >> >> >> To unsubscribe, e-mail:
>>>> >>>> [EMAIL PROTECTED]
>>>> >>>> >>> >> >> >> For additional commands, e-mail:
>>>> >>>> >>> [EMAIL PROTECTED]
>>>> >>>> >>> >> >> >>
>>>> >>>> >>> >> >> >>
>>>> >>>> >>> >> >> >
>>>> >>>> >>> >> >> >
>>>> >>>> >>> >>
>>>> >>>> >>>
>>>> >>>>
>>>> ---------------------------------------------------------------------
>>>> >>>> >>> >> >> > To unsubscribe, e-mail:
>>>> >>>> [EMAIL PROTECTED]
>>>> >>>> >>> >> >> > For additional commands, e-mail:
>>>> >>>> >>> [EMAIL PROTECTED]
>>>> >>>> >>> >> >> >
>>>> >>>> >>> >> >> >
>>>> >>>> >>> >> >>
>>>> >>>> >>> >> >>
>>>> >>>> >>>
>>>> >>>>
>>>> ---------------------------------------------------------------------
>>>> >>>> >>> >> >> To unsubscribe, e-mail:
>>>> >>>> [EMAIL PROTECTED]
>>>> >>>> >>> >> >> For additional commands, e-mail:
>>>> >>>> [EMAIL PROTECTED]
>>>> >>>> >>> >> >>
>>>> >>>> >>> >> >>
>>>> >>>> >>> >> >
>>>> >>>> >>> >> >
>>>> >>>> >>> >>
>>>> >>>> >>> >>
>>>> >>>> >>>
>>>> >>>>
>>>> ---------------------------------------------------------------------
>>>> >>>> >>> >> To unsubscribe, e-mail:
>>>> [EMAIL PROTECTED]
>>>> >>>> >>> >> For additional commands, e-mail:
>>>> >>>> [EMAIL PROTECTED]
>>>> >>>> >>> >>
>>>> >>>> >>> >>
>>>> >>>> >>> >
>>>> >>>> >>> >
>>>> >>>> >>>
>>>> >>>> >>>
>>>> >>>>
>>>> ---------------------------------------------------------------------
>>>> >>>> >>> To unsubscribe, e-mail: [EMAIL PROTECTED]
>>>> >>>> >>> For additional commands, e-mail:
>>>> [EMAIL PROTECTED]
>>>> >>>> >>>
>>>> >>>> >>>
>>>> >>>> >>
>>>> >>>> >>
>>>> >>>> >
>>>> >>>> >
>>>> >>>>
>>>> ---------------------------------------------------------------------
>>>> >>>> > To unsubscribe, e-mail: [EMAIL PROTECTED]
>>>> >>>> > For additional commands, e-mail: [EMAIL PROTECTED]
>>>> >>>> >
>>>> >>>> >
>>>> >>>>
>>>> >>>>
>>>> ---------------------------------------------------------------------
>>>> >>>> To unsubscribe, e-mail: [EMAIL PROTECTED]
>>>> >>>> For additional commands, e-mail: [EMAIL PROTECTED]
>>>> >>>>
>>>> >>>>
>>>> >>>
>>>> >>>
>>>> >>
>>>> >>
>>>> ---------------------------------------------------------------------
>>>> >> To unsubscribe, e-mail: [EMAIL PROTECTED]
>>>> >> For additional commands, e-mail: [EMAIL PROTECTED]
>>>> >>
>>>> >>
>>>> >
>>>> > ---------------------------------------------------------------------
>>>> > To unsubscribe, e-mail: [EMAIL PROTECTED]
>>>> > For additional commands, e-mail: [EMAIL PROTECTED]
>>>> >
>>>>
>>>> ---------------------------------------------------------------------
>>>> To unsubscribe, e-mail: [EMAIL PROTECTED]
>>>> For additional commands, e-mail: [EMAIL PROTECTED]
>>>>
>>>>
>>>
>>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: [EMAIL PROTECTED]
>> For additional commands, e-mail: [EMAIL PROTECTED]
>>
>>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
>
>
--
View this message in context:
http://www.nabble.com/i18n-in-action-tf3652048s2369.html#a10266613
Sent from the AppFuse - User mailing list archive at Nabble.com.
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]