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
15e274a3
Kaydet (Commit)
15e274a3
authored
Kas 16, 2012
tarafından
Eike Rathke
Dosyalara gözat
Seçenekler
Dosyalara Gözat
İndir
Eposta Yamaları
Sade Fark
added LanguageTag::makeFallback()
Change-Id: I6a89dd2c5e34035ac1e6c9b7e4723d881c5ceaa9
üst
43cd14d3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
56 additions
and
8 deletions
+56
-8
languagetag.hxx
i18npool/inc/i18npool/languagetag.hxx
+10
-0
mslangid.hxx
i18npool/inc/i18npool/mslangid.hxx
+8
-3
languagetag.cxx
i18npool/source/languagetag/languagetag.cxx
+38
-5
No files found.
i18npool/inc/i18npool/languagetag.hxx
Dosyayı görüntüle @
15e274a3
...
...
@@ -187,6 +187,15 @@ public:
/** Reset with LanguageType MS-LangID. */
void
reset
(
LanguageType
nLanguage
);
/** Fall back to a known locale.
If the current tag does not represent a known (by us) locale, fall back
to the most likely locale possible known.
If the current tag is known, no change occurs.
*/
LanguageTag
&
makeFallback
();
private
:
enum
Decision
...
...
@@ -213,6 +222,7 @@ private:
mutable
bool
mbCachedLanguage
:
1
;
mutable
bool
mbCachedScript
:
1
;
mutable
bool
mbCachedCountry
:
1
;
bool
mbIsFallback
:
1
;
void
convertLocaleToBcp47
();
void
convertLocaleToLang
();
...
...
i18npool/inc/i18npool/mslangid.hxx
Dosyayı görüntüle @
15e274a3
...
...
@@ -149,6 +149,14 @@ private:
const
::
com
::
sun
::
star
::
lang
::
Locale
&
rLocale
);
/** To be used only by LanguageTag. */
I18NISOLANG_DLLPRIVATE
static
LanguageType
lookupFallbackLanguage
(
LanguageType
nLang
);
/** To be used only by LanguageTag. */
I18NISOLANG_DLLPRIVATE
static
::
com
::
sun
::
star
::
lang
::
Locale
lookupFallbackLocale
(
const
::
com
::
sun
::
star
::
lang
::
Locale
&
rLocale
);
#if I18NPOOL_FORCE_LANGUAGETAG
public
:
#endif
...
...
@@ -317,12 +325,9 @@ private:
I18NISOLANG_DLLPRIVATE
static
inline
LanguageType
simplifySystemLanguages
(
LanguageType
nLang
);
// Several locale lookups with fall-back
I18NISOLANG_DLLPRIVATE
static
LanguageType
lookupFallbackLanguage
(
LanguageType
nLang
);
I18NISOLANG_DLLPRIVATE
static
LanguageType
lookupFallbackLanguage
(
const
::
com
::
sun
::
star
::
lang
::
Locale
&
rLocale
);
I18NISOLANG_DLLPRIVATE
static
::
com
::
sun
::
star
::
lang
::
Locale
lookupFallbackLocale
(
LanguageType
nLang
);
I18NISOLANG_DLLPRIVATE
static
::
com
::
sun
::
star
::
lang
::
Locale
lookupFallbackLocale
(
const
::
com
::
sun
::
star
::
lang
::
Locale
&
rLocale
);
};
...
...
i18npool/source/languagetag/languagetag.cxx
Dosyayı görüntüle @
15e274a3
...
...
@@ -162,7 +162,8 @@ LanguageTag::LanguageTag( const rtl::OUString & rBcp47LanguageTag, bool bCanonic
mbInitializedLangID
(
false
),
mbCachedLanguage
(
false
),
mbCachedScript
(
false
),
mbCachedCountry
(
false
)
mbCachedCountry
(
false
),
mbIsFallback
(
false
)
{
theDataRef
::
get
().
incRef
();
...
...
@@ -185,7 +186,8 @@ LanguageTag::LanguageTag( const com::sun::star::lang::Locale & rLocale )
mbInitializedLangID
(
false
),
mbCachedLanguage
(
false
),
mbCachedScript
(
false
),
mbCachedCountry
(
false
)
mbCachedCountry
(
false
),
mbIsFallback
(
false
)
{
theDataRef
::
get
().
incRef
();
}
...
...
@@ -204,7 +206,8 @@ LanguageTag::LanguageTag( LanguageType nLanguage )
mbInitializedLangID
(
!
mbSystemLocale
),
mbCachedLanguage
(
false
),
mbCachedScript
(
false
),
mbCachedCountry
(
false
)
mbCachedCountry
(
false
),
mbIsFallback
(
false
)
{
theDataRef
::
get
().
incRef
();
}
...
...
@@ -224,7 +227,8 @@ LanguageTag::LanguageTag( const rtl::OUString& rLanguage, const rtl::OUString& r
mbInitializedLangID
(
false
),
mbCachedLanguage
(
false
),
mbCachedScript
(
false
),
mbCachedCountry
(
false
)
mbCachedCountry
(
false
),
mbIsFallback
(
false
)
{
theDataRef
::
get
().
incRef
();
}
...
...
@@ -249,7 +253,8 @@ LanguageTag::LanguageTag( const LanguageTag & rLanguageTag )
mbInitializedLangID
(
rLanguageTag
.
mbInitializedLangID
),
mbCachedLanguage
(
rLanguageTag
.
mbCachedLanguage
),
mbCachedScript
(
rLanguageTag
.
mbCachedScript
),
mbCachedCountry
(
rLanguageTag
.
mbCachedCountry
)
mbCachedCountry
(
rLanguageTag
.
mbCachedCountry
),
mbIsFallback
(
rLanguageTag
.
mbIsFallback
)
{
theDataRef
::
get
().
incRef
();
}
...
...
@@ -276,6 +281,7 @@ LanguageTag& LanguageTag::operator=( const LanguageTag & rLanguageTag )
mbCachedLanguage
=
rLanguageTag
.
mbCachedLanguage
;
mbCachedScript
=
rLanguageTag
.
mbCachedScript
;
mbCachedCountry
=
rLanguageTag
.
mbCachedCountry
;
mbIsFallback
=
rLanguageTag
.
mbIsFallback
;
return
*
this
;
}
...
...
@@ -313,6 +319,7 @@ void LanguageTag::resetVars()
mbCachedLanguage
=
false
;
mbCachedScript
=
false
;
mbCachedCountry
=
false
;
mbIsFallback
=
false
;
}
...
...
@@ -806,4 +813,30 @@ bool LanguageTag::isSystemLocale() const
}
LanguageTag
&
LanguageTag
::
makeFallback
()
{
if
(
!
mbIsFallback
)
{
if
(
mbInitializedLangID
)
{
LanguageType
nLang1
=
getLanguageType
();
LanguageType
nLang2
=
MsLangId
::
lookupFallbackLanguage
(
nLang1
);
if
(
nLang1
!=
nLang2
)
reset
(
nLang2
);
}
else
{
const
lang
::
Locale
&
rLocale1
=
getLocale
();
lang
::
Locale
aLocale2
(
MsLangId
::
lookupFallbackLocale
(
rLocale1
));
if
(
rLocale1
.
Language
!=
aLocale2
.
Language
||
rLocale1
.
Country
!=
aLocale2
.
Country
||
rLocale1
.
Variant
!=
aLocale2
.
Variant
)
reset
(
aLocale2
);
}
mbIsFallback
=
true
;
}
return
*
this
;
}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
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