diff -r 2c70ae736e88 svl/source/numbers/zformat.cxx --- a/svl/source/numbers/zformat.cxx Fri Nov 12 10:40:36 2010 +0100 +++ b/svl/source/numbers/zformat.cxx Thu Dec 02 10:24:04 2010 +0700 @@ -1134,7 +1134,7 @@ return LANGUAGE_DONTKNOW; ++nPos; } - return (nNum && (cToken == ']' || nPos == nLen)) ? (LanguageType)nNum : + return ((cToken == ']' || nPos == nLen)) ? (LanguageType)nNum : LANGUAGE_DONTKNOW; } @@ -1220,6 +1220,16 @@ { if ( rString.GetChar(nPos) == '-' ) { // [$-xxx] locale + if ( rString.GetChar(nPos+2) == '0' && rString.GetChar(nPos+3) == '7' ) // calendar type code "07" = Thai + { + rString.InsertAscii( "[~buddhist]", nPos+9 ); + nLen += 11; + } + if ( rString.GetChar(nPos+1) == 'D' ) // numeral shape code "D" = Thai digits + { + rString.InsertAscii( "[NatNum1]", nPos+9 ); + nLen += 9; + } sSymbol.EraseAllChars('['); eSymbolType = BRACKET_SYMBOLTYPE_LOCALE; eState = SsGetPrefix; @@ -4211,6 +4221,7 @@ nSem++; String aPrefix; + bool LCIDInserted = FALSE; if ( !bDefaults ) { @@ -4244,14 +4255,6 @@ } const SvNumberNatNum& rNum = NumFor[n].GetNatNum(); - // The Thai T NatNum modifier during Xcl export. - if (rNum.IsSet() && rNum.GetNatNum() == 1 && - rKeywords[NF_KEY_THAI_T].EqualsAscii( "T") && - MsLangId::getRealLanguage( rNum.GetLang()) == - LANGUAGE_THAI) - { - aPrefix += 't'; // must be lowercase, otherwise taken as literal - } USHORT nAnz = NumFor[n].GetnAnz(); if ( nSem && (nAnz || aPrefix.Len()) ) @@ -4311,6 +4314,24 @@ aStr += '"'; } break; + case NF_SYMBOLTYPE_CALDEL : + if ( pStr[j+1].EqualsAscii("buddhist") ) + { + aStr.InsertAscii( "[$-", aStr.Len() ); + if ( rNum.IsSet() && rNum.GetNatNum() == 1 && + MsLangId::getRealLanguage( rNum.GetLang() ) == + LANGUAGE_THAI ) + { + aStr.InsertAscii( "D07041E]", aStr.Len() ); // date in Thai digit, Buddhist era + } + else + { + aStr.InsertAscii( "107041E]", aStr.Len() ); // date in Arabic digit, Buddhist era + } + j = j+2; + } + LCIDInserted = TRUE; + break; default: aStr += pStr[j]; } @@ -4318,6 +4339,15 @@ } } } + // The Thai T NatNum modifier during Xcl export. + if (rNum.IsSet() && rNum.GetNatNum() == 1 && + rKeywords[NF_KEY_THAI_T].EqualsAscii( "T") && + MsLangId::getRealLanguage( rNum.GetLang()) == + LANGUAGE_THAI && !LCIDInserted ) + { + + aStr.InsertAscii( "[$-D00041E]", 0 ); // number in Thai digit + } } for ( ; nSub<4 && bDefault[nSub]; ++nSub ) { // append empty subformats