• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Re: Localized Date Formatting
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Localized Date Formatting


  • Subject: Re: Localized Date Formatting
  • From: Francis Labrie <email@hidden>
  • Date: Fri, 18 Nov 2005 08:42:47 -0500

Hi,


Le 18 nov. 2005, à 04:22, Johan Henselmans a écrit :
I am trying to get localized date formatting to work.

My first Idea was to use the browser accept-language to format the data, but I am already stuck before that:

How do I get the localized data format?

I tried this one, which should work according to the Class definition
NSTimestampFormatter dateTimeFormatter = new NSTimestampFormatter( "%A %e %B %Y", new Locale("DUTCH"));
return dateTimeFormatter.format(perfDate());


That did not work, it could not resolve the symbol:
Trainingdata.java:45: cannot resolve symbol
symbol : constructor NSTimestampFormatter (java.lang.String,java.util.Locale)


You must perform something like this instead (code not compiled, written from memory):


DateFormatSymbols dateFormatSymbols; Locale locale; timestampFormat NSTimestampFormartter;

// "nl" is the ISO-639 symbol for Dutch
locale = new Locale("nl");
dateFormatSymbols = new DateFormatSymbols(locale);
timestampFormat = new NSTimestampFormartter("%A %e %B %Y", dateFormatSymbols);



If you want to get the proper Locale class for a particular language name string as found in Session object, you can perform a search with a Qualifier :


    NSArray locales, results;
    EOQualifier qualifier;
    Locale locale;

// Assuming "language" is an existing language string get from the session, like "Dutch" or "French"
qualifier = EOKeyValueQualifier("getDisplayLanguage", EOQualifier.QualifierOperatorEqual, language);
locales = new NSArray(Locale.getAvailableLocales());
results = EOQualifier.filteredArrayWithQualifier(locales, qualifier);


    if(results.count() == 1) {
	    locale = (Locale)results.lastObject();
    }
    ...

While performing this filtering, default locale (i.e. Locale.getDefault()) _MUST_ be an english one, because the "getDisplayLanguage()" method return the language name for the default locale. If this is not the case, you'll have to find the locale using a loop:

    int index;
    Locale[] locales;
    Locale local;

locale = null;
locales = Locale.getAvailableLocales();
for(index = locales.length; ((index-- > 0) && (locale == null)); ) {
if(locales[index].getDisplayLanguage(Locale.ENGLISH).equals(language)) {
locale = locales[index];
}
}



Then I tried the code from Chuck's book on localized Date Formatting:

java.text.SimpleDateFormat aFormat = new java.text.SimpleDateFormat("EEEE,d MMMM yyyy", new Locale("Dutch"));
return aFormat.format(perfDate());


This one returns the english date format.

What is even more interesting: in Mozilla (set to Dutch Accept-Language, to compare)

the date format is: Wed 28 Dec 2005 20:30 uur:

In Safari the date format is: Wednesday,28 December 2005

Anyone that can shed light on this subject?

-- Francis Labrie Saint-Bruno-de-Montarville, Québec, Canada

_______________________________________________
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list      (email@hidden)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden


References: 
 >Localized Date Formatting (From: Johan Henselmans <email@hidden>)

  • Prev by Date: Re: Xcode 2.2 Error reporting
  • Next by Date: Re: Xcode 2.2 Error reporting
  • Previous by thread: Localized Date Formatting
  • Next by thread: Simple Newbie Question
  • Index(es):
    • Date
    • Thread