From 470298433c5bfa9e816ea8868fbb17676f8d0a99 Mon Sep 17 00:00:00 2001 From: Stefan Csomor Date: Mon, 30 Mar 2009 18:13:42 +0000 Subject: [PATCH] adding more symbols to translation, using better matching formats git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@59943 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- src/common/intl.cpp | 64 ++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 58 insertions(+), 6 deletions(-) diff --git a/src/common/intl.cpp b/src/common/intl.cpp index 13e89b61ad..f1e1ad9fc9 100644 --- a/src/common/intl.cpp +++ b/src/common/intl.cpp @@ -2618,6 +2618,8 @@ static wxString TranslateFromUnicodeFormat(const wxString& fmt) "dghHmMsSy" #ifdef __WXMSW__ "t" +#else + "EawD" #endif ; for ( wxString::const_iterator p = fmt.begin(); /* end handled inside */; ++p ) @@ -2654,7 +2656,7 @@ static wxString TranslateFromUnicodeFormat(const wxString& fmt) // between 1 and 2 digits for days fmtWX += "%d"; break; - +#ifdef __WXMSW__ case 3: // ddd fmtWX += "%a"; break; @@ -2662,12 +2664,57 @@ static wxString TranslateFromUnicodeFormat(const wxString& fmt) case 4: // dddd fmtWX += "%A"; break; - +#endif default: wxFAIL_MSG( "too many 'd's" ); } break; +#ifndef __WXMSW__ + case 'D': + switch ( lastCount ) + { + case 1: // D + case 2: // DD + case 3: // DDD + fmtWX += "%j"; + break; + + default: + wxFAIL_MSG( "wrong number of 'D's" ); + } + break; + case 'w': + switch ( lastCount ) + { + case 1: // w + case 2: // ww + fmtWX += "%W"; + break; + + default: + wxFAIL_MSG( "wrong number of 'w's" ); + } + break; + case 'E': + switch ( lastCount ) + { + case 1: // E + case 2: // EE + case 3: // EEE + fmtWX += "%a"; + break; + case 4: // EEEE + fmtWX += "%A"; + break; + case 5: // EEEEE + fmtWX += "%a"; + break; + default: + wxFAIL_MSG( "wrong number of 'E's" ); + } + break; +#endif case 'M': switch ( lastCount ) { @@ -2763,11 +2810,13 @@ static wxString TranslateFromUnicodeFormat(const wxString& fmt) // strftime() doesn't have era string, // ignore this format wxASSERT_MSG( lastCount <= 2, "too many 'g's" ); + break; - +#ifndef __WXMSW__ case 'a': fmtWX += "%p"; break; +#endif #ifdef __WXMSW__ case 't': switch ( lastCount ) @@ -2940,13 +2989,13 @@ wxString wxLocale::GetInfo(wxLocaleInfo index, wxLocaleCategory WXUNUSED(cat)) switch (index ) { case wxLOCALE_SHORT_DATE_FMT: - dateStyle = kCFDateFormatterMediumStyle; + dateStyle = kCFDateFormatterShortStyle; break; case wxLOCALE_LONG_DATE_FMT: dateStyle = kCFDateFormatterLongStyle; break; case wxLOCALE_DATE_TIME_FMT: - dateStyle = kCFDateFormatterMediumStyle; + dateStyle = kCFDateFormatterFullStyle; timeStyle = kCFDateFormatterMediumStyle; break; case wxLOCALE_TIME_FMT: @@ -2959,7 +3008,10 @@ wxString wxLocale::GetInfo(wxLocaleInfo index, wxLocaleCategory WXUNUSED(cat)) wxCFRef dateFormatter( CFDateFormatterCreate (NULL, userLocaleRef, dateStyle, timeStyle)); wxCFStringRef cfs = wxCFRetain( CFDateFormatterGetFormat(dateFormatter )); - return TranslateFromUnicodeFormat(cfs.AsString()); + wxString format = TranslateFromUnicodeFormat(cfs.AsString()); + // we always want full years + format.Replace("%y","%Y"); + return format; } break; -- 2.45.2