you have a point there. i thought about it. if like the settings for
date is business knowledge or view.
at the end i like my jsp to be simple so i moved it into my model.
tibi
sarat.pediredla wrote:
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]
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]