Skip to content
Projeler
Gruplar
Parçacıklar
Yardım
Yükleniyor...
Oturum aç / Kaydol
Gezinmeyi değiştir
C
core
Proje
Proje
Ayrıntılar
Etkinlik
Cycle Analytics
Depo (repository)
Depo (repository)
Dosyalar
Kayıtlar (commit)
Dallar (branch)
Etiketler
Katkıda bulunanlar
Grafik
Karşılaştır
Grafikler
Konular (issue)
0
Konular (issue)
0
Liste
Pano
Etiketler
Kilometre Taşları
Birleştirme (merge) Talepleri
0
Birleştirme (merge) Talepleri
0
CI / CD
CI / CD
İş akışları (pipeline)
İşler
Zamanlamalar
Grafikler
Paketler
Paketler
Wiki
Wiki
Parçacıklar
Parçacıklar
Üyeler
Üyeler
Collapse sidebar
Close sidebar
Etkinlik
Grafik
Grafikler
Yeni bir konu (issue) oluştur
İşler
Kayıtlar (commit)
Konu (issue) Panoları
Kenar çubuğunu aç
LibreOffice
core
Commits
087ee660
Kaydet (Commit)
087ee660
authored
Agu 23, 2013
tarafından
Eike Rathke
Dosyalara gözat
Seçenekler
Dosyalara Gözat
İndir
Eposta Yamaları
Sade Fark
encapsulate IsoLangEntry again
Change-Id: I66475eb3914b07b4c7a045e295ef77a5de9439d4
üst
5b2a740b
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
49 additions
and
45 deletions
+49
-45
test_languagetag.cxx
i18nlangtag/qa/cppunit/test_languagetag.cxx
+11
-12
isolang.cxx
i18nlangtag/source/isolang/isolang.cxx
+24
-13
mslangid.hxx
include/i18nlangtag/mslangid.hxx
+9
-15
rscibas.cxx
rsc/source/parser/rscibas.cxx
+5
-5
No files found.
i18nlangtag/qa/cppunit/test_languagetag.cxx
Dosyayı görüntüle @
087ee660
...
@@ -299,25 +299,24 @@ void TestLanguageTag::testAllTags()
...
@@ -299,25 +299,24 @@ void TestLanguageTag::testAllTags()
void
TestLanguageTag
::
testAllIsoLangEntries
()
void
TestLanguageTag
::
testAllIsoLangEntries
()
{
{
const
MsLangId
::
IsoLangEntry
*
pLangEntry
;
const
::
std
::
vector
<
MsLangId
::
LanguagetagMapping
>
aList
(
MsLangId
::
getDefinedLanguagetags
());
sal_Int32
nIndex
=
0
;
for
(
::
std
::
vector
<
MsLangId
::
LanguagetagMapping
>::
const_iterator
it
(
aList
.
begin
());
it
!=
aList
.
end
();
++
it
)
while
(((
pLangEntry
=
MsLangId
::
getIsoLangEntry
(
nIndex
++
))
!=
NULL
)
&&
(
pLangEntry
->
mnLang
!=
LANGUAGE_DONTKNOW
))
{
{
LanguageTag
aTagString
(
pLangEntry
->
getTagString
()
,
true
);
LanguageTag
aTagString
(
(
*
it
).
maBcp47
,
true
);
LanguageTag
aTagID
(
pLangEntry
->
mnLang
);
LanguageTag
aTagID
(
(
*
it
).
mnLang
);
if
(
pLangEntry
->
getTagString
()
!=
aTagString
.
getBcp47
())
if
(
(
*
it
).
maBcp47
!=
aTagString
.
getBcp47
())
{
{
OString
aMessage
(
OUStringToOString
(
pLangEntry
->
getTagString
()
,
RTL_TEXTENCODING_ASCII_US
));
OString
aMessage
(
OUStringToOString
(
(
*
it
).
maBcp47
,
RTL_TEXTENCODING_ASCII_US
));
aMessage
+=
" -> "
+
OUStringToOString
(
aTagString
.
getBcp47
(),
RTL_TEXTENCODING_ASCII_US
);
aMessage
+=
" -> "
+
OUStringToOString
(
aTagString
.
getBcp47
(),
RTL_TEXTENCODING_ASCII_US
);
CPPUNIT_ASSERT_MESSAGE
(
aMessage
.
getStr
(),
pLangEntry
->
getTagString
()
==
aTagString
.
getBcp47
());
CPPUNIT_ASSERT_MESSAGE
(
aMessage
.
getStr
(),
(
*
it
).
maBcp47
==
aTagString
.
getBcp47
());
}
}
if
(
pLangEntry
->
getTagString
()
!=
aTagID
.
getBcp47
())
if
(
(
*
it
).
maBcp47
!=
aTagID
.
getBcp47
())
{
{
// There are multiple mappings, ID must be equal after conversions.
// There are multiple mappings, ID must be equal after conversions.
LanguageTag
aTagBack
(
aTagID
.
getBcp47
(),
true
);
LanguageTag
aTagBack
(
aTagID
.
getBcp47
(),
true
);
if
(
aTagString
.
getLanguageType
()
!=
aTagBack
.
getLanguageType
())
if
(
aTagString
.
getLanguageType
()
!=
aTagBack
.
getLanguageType
())
{
{
OString
aMessage
(
OUStringToOString
(
pLangEntry
->
getTagString
()
,
RTL_TEXTENCODING_ASCII_US
));
OString
aMessage
(
OUStringToOString
(
(
*
it
).
maBcp47
,
RTL_TEXTENCODING_ASCII_US
));
aMessage
+=
" "
+
OString
::
number
(
aTagString
.
getLanguageType
(),
16
)
+
aMessage
+=
" "
+
OString
::
number
(
aTagString
.
getLanguageType
(),
16
)
+
" -> "
+
OString
::
number
(
aTagBack
.
getLanguageType
(),
16
);
" -> "
+
OString
::
number
(
aTagBack
.
getLanguageType
(),
16
);
CPPUNIT_ASSERT_MESSAGE
(
aMessage
.
getStr
(),
aTagString
.
getLanguageType
()
==
aTagBack
.
getLanguageType
());
CPPUNIT_ASSERT_MESSAGE
(
aMessage
.
getStr
(),
aTagString
.
getLanguageType
()
==
aTagBack
.
getLanguageType
());
...
@@ -327,13 +326,13 @@ void TestLanguageTag::testAllIsoLangEntries()
...
@@ -327,13 +326,13 @@ void TestLanguageTag::testAllIsoLangEntries()
// This does not hold, there are cases like 'ar'
// This does not hold, there are cases like 'ar'
// LANGUAGE_ARABIC_PRIMARY_ONLY that when mapped back results in
// LANGUAGE_ARABIC_PRIMARY_ONLY that when mapped back results in
// 'ar-SA' as default locale.
// 'ar-SA' as default locale.
if (
pLangEntry->
mnLang != aTagString.getLanguageType())
if (
(*it).
mnLang != aTagString.getLanguageType())
{
{
// There are multiple mappings, string must be equal after conversions.
// There are multiple mappings, string must be equal after conversions.
LanguageTag aTagBack( aTagString.getLanguageType());
LanguageTag aTagBack( aTagString.getLanguageType());
if (aTagID.getBcp47() != aTagBack.getBcp47())
if (aTagID.getBcp47() != aTagBack.getBcp47())
{
{
OString aMessage( OUStringToOString(
pLangEntry->getTagString()
, RTL_TEXTENCODING_ASCII_US));
OString aMessage( OUStringToOString(
(*it).maBcp47
, RTL_TEXTENCODING_ASCII_US));
aMessage += " " + OUStringToOString( aTagID.getBcp47(), RTL_TEXTENCODING_ASCII_US) +
aMessage += " " + OUStringToOString( aTagID.getBcp47(), RTL_TEXTENCODING_ASCII_US) +
" -> " + OUStringToOString( aTagBack.getBcp47(), RTL_TEXTENCODING_ASCII_US);
" -> " + OUStringToOString( aTagBack.getBcp47(), RTL_TEXTENCODING_ASCII_US);
CPPUNIT_ASSERT_MESSAGE( aMessage.getStr(), aTagID.getBcp47() == aTagBack.getBcp47());
CPPUNIT_ASSERT_MESSAGE( aMessage.getStr(), aTagID.getBcp47() == aTagBack.getBcp47());
...
...
i18nlangtag/source/isolang/isolang.cxx
Dosyayı görüntüle @
087ee660
...
@@ -27,6 +27,16 @@
...
@@ -27,6 +27,16 @@
// =======================================================================
// =======================================================================
struct
IsoLangEntry
{
LanguageType
mnLang
;
sal_Char
maLangStr
[
4
];
sal_Char
maCountry
[
3
];
/** Obtain a language tag string with '-' separator. */
OUString
getTagString
()
const
;
};
struct
IsoLangEngEntry
struct
IsoLangEngEntry
{
{
LanguageType
mnLang
;
LanguageType
mnLang
;
...
@@ -89,7 +99,7 @@ struct IsoLangOtherEntry
...
@@ -89,7 +99,7 @@ struct IsoLangOtherEntry
* LANGUAGE_AZERI LANGUAGE_URDU LANGUAGE_KASHMIRI
* LANGUAGE_AZERI LANGUAGE_URDU LANGUAGE_KASHMIRI
*/
*/
static
MsLangId
::
IsoLangEntry
const
aImplIsoLangEntries
[]
=
static
IsoLangEntry
const
aImplIsoLangEntries
[]
=
{
{
// MS-LANGID codes ISO639-1/2/3 ISO3166
// MS-LANGID codes ISO639-1/2/3 ISO3166
{
LANGUAGE_ENGLISH
,
"en"
,
""
},
{
LANGUAGE_ENGLISH
,
"en"
,
""
},
...
@@ -524,10 +534,10 @@ static MsLangId::IsoLangEntry const aImplIsoLangEntries[] =
...
@@ -524,10 +534,10 @@ static MsLangId::IsoLangEntry const aImplIsoLangEntries[] =
{
LANGUAGE_DONTKNOW
,
""
,
""
}
// marks end of table
{
LANGUAGE_DONTKNOW
,
""
,
""
}
// marks end of table
};
};
static
MsLangId
::
IsoLangEntry
aLastResortFallbackEntry
=
static
IsoLangEntry
aLastResortFallbackEntry
=
{
LANGUAGE_ENGLISH_US
,
"en"
,
"US"
};
{
LANGUAGE_ENGLISH_US
,
"en"
,
"US"
};
OUString
MsLangId
::
IsoLangEntry
::
getTagString
()
const
OUString
IsoLangEntry
::
getTagString
()
const
{
{
if
(
maCountry
[
0
])
if
(
maCountry
[
0
])
return
OUString
(
OUString
::
createFromAscii
(
maLangStr
)
+
"-"
+
OUString
::
createFromAscii
(
maCountry
));
return
OUString
(
OUString
::
createFromAscii
(
maLangStr
)
+
"-"
+
OUString
::
createFromAscii
(
maCountry
));
...
@@ -695,7 +705,7 @@ void MsLangId::Conversion::convertLanguageToLocaleImpl( LanguageType nLang,
...
@@ -695,7 +705,7 @@ void MsLangId::Conversion::convertLanguageToLocaleImpl( LanguageType nLang,
// -----------------------------------------------------------------------
// -----------------------------------------------------------------------
static
const
MsLangId
::
IsoLangEntry
&
lcl_lookupFallbackEntry
(
static
const
IsoLangEntry
&
lcl_lookupFallbackEntry
(
const
::
com
::
sun
::
star
::
lang
::
Locale
&
rLocale
)
const
::
com
::
sun
::
star
::
lang
::
Locale
&
rLocale
)
{
{
// language is lower case in table
// language is lower case in table
...
@@ -705,8 +715,8 @@ static const MsLangId::IsoLangEntry & lcl_lookupFallbackEntry(
...
@@ -705,8 +715,8 @@ static const MsLangId::IsoLangEntry & lcl_lookupFallbackEntry(
sal_Int32
nCountryLen
=
aUpperCountry
.
getLength
();
sal_Int32
nCountryLen
=
aUpperCountry
.
getLength
();
// Search for locale and remember first lang-only.
// Search for locale and remember first lang-only.
const
MsLangId
::
IsoLangEntry
*
pFirstLang
=
NULL
;
const
IsoLangEntry
*
pFirstLang
=
NULL
;
const
MsLangId
::
IsoLangEntry
*
pEntry
=
aImplIsoLangEntries
;
const
IsoLangEntry
*
pEntry
=
aImplIsoLangEntries
;
do
do
{
{
if
(
aLowerLang
.
equalsAscii
(
pEntry
->
maLangStr
))
if
(
aLowerLang
.
equalsAscii
(
pEntry
->
maLangStr
))
...
@@ -762,7 +772,7 @@ static const MsLangId::IsoLangEntry & lcl_lookupFallbackEntry(
...
@@ -762,7 +772,7 @@ static const MsLangId::IsoLangEntry & lcl_lookupFallbackEntry(
::
com
::
sun
::
star
::
lang
::
Locale
MsLangId
::
Conversion
::
lookupFallbackLocale
(
::
com
::
sun
::
star
::
lang
::
Locale
MsLangId
::
Conversion
::
lookupFallbackLocale
(
const
::
com
::
sun
::
star
::
lang
::
Locale
&
rLocale
)
const
::
com
::
sun
::
star
::
lang
::
Locale
&
rLocale
)
{
{
const
MsLangId
::
IsoLangEntry
&
rEntry
=
lcl_lookupFallbackEntry
(
rLocale
);
const
IsoLangEntry
&
rEntry
=
lcl_lookupFallbackEntry
(
rLocale
);
return
::
com
::
sun
::
star
::
lang
::
Locale
(
return
::
com
::
sun
::
star
::
lang
::
Locale
(
OUString
::
createFromAscii
(
rEntry
.
maLangStr
),
OUString
::
createFromAscii
(
rEntry
.
maLangStr
),
OUString
::
createFromAscii
(
rEntry
.
maCountry
),
OUString
::
createFromAscii
(
rEntry
.
maCountry
),
...
@@ -985,15 +995,16 @@ LanguageType MsLangId::convertUnxByteStringToLanguage(
...
@@ -985,15 +995,16 @@ LanguageType MsLangId::convertUnxByteStringToLanguage(
return
Conversion
::
convertIsoNamesToLanguage
(
aLang
,
aCountry
);
return
Conversion
::
convertIsoNamesToLanguage
(
aLang
,
aCountry
);
}
}
// -----------------------------------------------------------------------
// pass one IsoLangEntry to the outer world of the resource compiler
// static
// static
const
MsLangId
::
IsoLangEntry
*
MsLangId
::
getIsoLangEntry
(
size_t
nIndex
)
::
std
::
vector
<
MsLangId
::
LanguagetagMapping
>
MsLangId
::
getDefinedLanguagetags
(
)
{
{
if
(
nIndex
<
SAL_N_ELEMENTS
(
aImplIsoLangEntries
))
::
std
::
vector
<
LanguagetagMapping
>
aVec
;
return
&
aImplIsoLangEntries
[
nIndex
];
for
(
const
IsoLangEntry
*
pEntry
=
aImplIsoLangEntries
;
pEntry
->
mnLang
!=
LANGUAGE_DONTKNOW
;
++
pEntry
)
return
0
;
{
aVec
.
push_back
(
LanguagetagMapping
(
pEntry
->
getTagString
(),
pEntry
->
mnLang
));
}
return
aVec
;
}
}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
include/i18nlangtag/mslangid.hxx
Dosyayı görüntüle @
087ee660
...
@@ -25,6 +25,7 @@
...
@@ -25,6 +25,7 @@
#include "i18nlangtag/i18nlangtagdllapi.h"
#include "i18nlangtag/i18nlangtagdllapi.h"
#include "i18nlangtag/lang.h"
#include "i18nlangtag/lang.h"
#include <com/sun/star/lang/Locale.hpp>
#include <com/sun/star/lang/Locale.hpp>
#include <vector>
/** Methods related to Microsoft language IDs. For details about MS-LANGIDs
/** Methods related to Microsoft language IDs. For details about MS-LANGIDs
please see lang.h */
please see lang.h */
...
@@ -173,26 +174,19 @@ public:
...
@@ -173,26 +174,19 @@ public:
// ---------------------------------------------------------------------------
// ---------------------------------------------------------------------------
/** @internal - Access to fields of an element of the simple conversion table.
struct
LanguagetagMapping
For resource compiler build environment usage only! */
struct
IsoLangEntry
{
{
LanguageType
mnLang
;
OUString
maBcp47
;
sal_Char
maLangStr
[
4
];
LanguageType
mnLang
;
sal_Char
maCountry
[
3
];
/** Obtain a language tag string with '-' separator. */
LanguagetagMapping
(
const
OUString
&
rBcp47
,
LanguageType
nLang
)
:
maBcp47
(
rBcp47
),
mnLang
(
nLang
)
{}
I18NLANGTAG_DLLPUBLIC
OUString
getTagString
()
const
;
};
};
/** @internal - Return a pointer to the IsoLangEntry of the underlying table,
/** @internal - Obtain a list of known locales (i.e. those that have a
matching the offset passed by nIndex. Only meaningful for the resource
defined mapping between MS-LangID and ISO codes or tags) as BCP 47
compiler to build a list of known languages.
language tag strings.
@returns address of IsoLangEntry, or NULL pointer if nIndex exceeds the
table elements' count.
*/
*/
static
const
IsoLangEntry
*
getIsoLangEntry
(
size_t
nIndex
);
static
::
std
::
vector
<
LanguagetagMapping
>
getDefinedLanguagetags
(
);
// ---------------------------------------------------------------------------
// ---------------------------------------------------------------------------
...
...
rsc/source/parser/rscibas.cxx
Dosyayı görüntüle @
087ee660
...
@@ -81,18 +81,18 @@ void RscLangEnum::Init( RscNameTable& rNames )
...
@@ -81,18 +81,18 @@ void RscLangEnum::Init( RscNameTable& rNames )
sal_Int32
nIndex
=
0
;
sal_Int32
nIndex
=
0
;
mnLangId
=
0x400
;
// stay away from selfdefined...
mnLangId
=
0x400
;
// stay away from selfdefined...
const
MsLangId
::
IsoLangEntry
*
pLangEntry
;
while
(
NULL
!=
(
pLangEntry
=
MsLangId
::
getIsoLangEntry
(
nIndex
))
&&
(
pLangEntry
->
mnLang
!=
LANGUAGE_DONTKNOW
))
const
::
std
::
vector
<
MsLangId
::
LanguagetagMapping
>
aList
(
MsLangId
::
getDefinedLanguagetags
());
for
(
::
std
::
vector
<
MsLangId
::
LanguagetagMapping
>::
const_iterator
iTag
(
aList
.
begin
());
iTag
!=
aList
.
end
();
++
iTag
)
{
{
#if OSL_DEBUG_LEVEL > 2
#if OSL_DEBUG_LEVEL > 2
fprintf
(
stderr
,
"ISO Language in : %d, 0x%04x, %s
\n
"
,
fprintf
(
stderr
,
"ISO Language in : %d, 0x%04x, %s
\n
"
,
(
int
)
nIndex
,
(
int
)
nIndex
,
(
unsigned
)
pLangEntry
->
mnLang
,
(
unsigned
)
(
*
iTag
).
mnLang
,
OUStringToOString
(
pLangEntry
->
getTagString
()
,
RTL_TEXTENCODING_ASCII_US
).
getStr
());
OUStringToOString
(
(
*
iTag
).
maBcp47
,
RTL_TEXTENCODING_ASCII_US
).
getStr
());
fprintf
(
stderr
,
"ISO Language out:"
);
fprintf
(
stderr
,
"ISO Language out:"
);
#endif
#endif
LanguageTag
aLanguageTag
(
pLangEntry
->
getTagString
()
);
LanguageTag
aLanguageTag
(
(
*
iTag
).
maBcp47
);
::
std
::
vector
<
OUString
>
aFallbacks
(
aLanguageTag
.
getFallbackStrings
());
::
std
::
vector
<
OUString
>
aFallbacks
(
aLanguageTag
.
getFallbackStrings
());
for
(
::
std
::
vector
<
OUString
>::
const_iterator
it
(
aFallbacks
.
begin
());
it
!=
aFallbacks
.
end
();
++
it
)
for
(
::
std
::
vector
<
OUString
>::
const_iterator
it
(
aFallbacks
.
begin
());
it
!=
aFallbacks
.
end
();
++
it
)
{
{
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment