Libreoffice Latvian format

Julien Nabet serval2412 at yahoo.fr
Mon May 3 20:02:57 UTC 2021


Hello Eike,

When cleaning LO profile and starting Calc then tools/options/languages, 
I noticed this log:

lv-LV requested
lv-LV loaded

warn:unotools.i18n:128132:128132:unotools/source/i18n/localedatawrapper.cxx:1529: 
LocaleDataWrapper::scanDateOrder: no magic applicable

By adding some debug, I found it was:

"

rCode=YYYY. "gada" DD. MMMM, NNNN

LocaleDataWrapper::scanDateOrder: no magic applicable nDay=13 nMonth=17 
nYear=0
lv-LV requested
lv-LV loaded
warn:unotools.i18n:128132:128132:unotools/source/i18n/localedatawrapper.cxx:1529: 
LocaleDataWrapper::scanDateOrder: no magic applicable nDay=13 nMonth=17 
nYear=0

"

i18npool/source/localedata/data/lv_LV.xml contains:

     110     <FormatElement msgid="DateFormatskey9" default="true" 
type="long" usage="DATE" formatindex="19">
     111       <FormatCode>YYYY. "gada" DD. MMMM, NNNN</FormatCode>
     112     </FormatElement>

     143     <FormatElement msgid="DateFormatskey15" default="false" 
type="long" usage="DATE" formatindex="30">
     144       <FormatCode>NNNN, YYYY. "gada" DD. MMMM</FormatCode>
     145     </FormatElement>

Taking a look at https://www.localeplanet.com/icu/lv-LV/index.html, I 
saw these formats:

Date.3     Example: 03.05.21
Pattern: dd.MM.yy
Local Pattern: dd.MM.yy

Date.2     Example: 2021. gada 3. maijs
Pattern: y. 'gada' d. MMM
Local Pattern: y. 'gada' d. MMM

Date.1     Example: 2021. gada 3. maijs
Pattern: y. 'gada' d. MMMM
Local Pattern: y. 'gada' d. MMMM

Date.0     Example: pirmdiena, 2021. gada 3. maijs
Pattern: EEEE, y. 'gada' d. MMMM
Local Pattern: EEEE, y. 'gada' d. MMMM

So I thought about this patch:

diff --git a/unotools/source/i18n/localedatawrapper.cxx 
b/unotools/source/i18n/localedatawrapper.cxx
index e0e91bbbac79..5ba530de2668 100644
--- a/unotools/source/i18n/localedatawrapper.cxx
+++ b/unotools/source/i18n/localedatawrapper.cxx
@@ -780,6 +780,12 @@ DateOrder LocaleDataWrapper::scanDateOrderImpl( 
const OUString& rCode ) const
          return DateOrder::YMD;
      else
      {
+        // lv_LV can use:
+        // - YYYY. "gada" DD. MMMM, NNNN
+        // - NNNN, YYYY. "gada" DD. MMMM
+        if ( nYear <= nDay && nDay << nMonth && rCode.indexOf('g') != -1)
+            return DateOrder::YDM;
+
          if (areChecksEnabled())
          {
              outputCheckMessage( appendLocaleInfo( 
"LocaleDataWrapper::scanDateOrder: no magic applicable" ) );

but DateOrder::YDM doesn't exist:

48  enum class DateOrder {
49      Invalid = -1,
50      MDY = 0,
51      DMY,
52      YMD,
53  };
See 
https://opengrok.libreoffice.org/xref/core/include/unotools/localedatawrapper.hxx?r=86b345a9&mo=1897&fi=48#48

Any thoughts here? Should I add this other DateOrder const?

Regards,

Julien



More information about the LibreOffice mailing list