diff options
author | Eike Rathke <erack@redhat.com> | 2017-03-14 11:52:52 +0100 |
---|---|---|
committer | Eike Rathke <erack@redhat.com> | 2017-03-14 12:48:22 +0100 |
commit | bde834ee6b0cb43cebece47cac55cc9b80aadc24 (patch) | |
tree | ef3f5ebe8340d0e0392905ec3cfab033953a6425 | |
parent | bf63e5a3a6ae458ffe10061c1bcf969a534760c5 (diff) |
display raw language tags in curly brackets
Place raw language tags in curly brackets {}, so all on-the-fly tags are
grouped together at the top of a listbox (but behind the "[None]"
entry).
Change-Id: I01d388150241a8482a1f39f8eda26cdd5bb1d832
-rw-r--r-- | include/svtools/langtab.hxx | 2 | ||||
-rw-r--r-- | svtools/source/misc/langtab.cxx | 15 |
2 files changed, 14 insertions, 3 deletions
diff --git a/include/svtools/langtab.hxx b/include/svtools/langtab.hxx index 56d06188266c..5cfe392a10ab 100644 --- a/include/svtools/langtab.hxx +++ b/include/svtools/langtab.hxx @@ -48,7 +48,7 @@ public: @param rString UI visible description string. If empty, the rLanguageTag Bcp47 - string is used instead. + string placed in curly brackets is used instead, e.g. "{en-DK}" */ static sal_uInt32 AddLanguageTag( const LanguageTag& rLanguageTag, const OUString& rString ); }; diff --git a/svtools/source/misc/langtab.cxx b/svtools/source/misc/langtab.cxx index 1c303f9fb72b..9214780ca1ef 100644 --- a/svtools/source/misc/langtab.cxx +++ b/svtools/source/misc/langtab.cxx @@ -175,6 +175,17 @@ bool SvtLanguageTable::HasLanguageType( const LanguageType eType ) return theLanguageTable::get().HasType( eType ); } +OUString lcl_getDescription( const OUString& rBcp47 ) +{ + // Place in curly brackets, so all on-the-fly tags are grouped together at + // the top of a listbox (but behind the "[None]" entry), and not sprinkled + // all over, which alphabetically might make sense in an English UI only + // anyway. Also a visual indicator that it is a programmatical name, IMHO. + /* TODO: pulling descriptive names (language, script, country, subtags) + * from liblangtag or ISO databases might be nice, but those are English + * only. Maybe ICU, that has translations for language and country. */ + return "{" + rBcp47 + "}"; +} const OUString SvtLanguageTableImpl::GetString( const LanguageType eType, bool bUserInterfaceSelection ) const { @@ -185,7 +196,7 @@ const OUString SvtLanguageTableImpl::GetString( const LanguageType eType, bool b return ResStringArray::GetString( nPos ); //Rather than return a fairly useless "Unknown" name, return a geeky but usable-in-a-pinch lang-tag - OUString sLangTag(LanguageTag::convertToBcp47(eType)); + OUString sLangTag( lcl_getDescription( LanguageTag::convertToBcp47(eType))); SAL_WARN("svtools.misc", "Language: 0x" << std::hex << eType << " with unknown name, so returning lang-tag of: " @@ -259,7 +270,7 @@ LanguageType SvtLanguageTable::GetLanguageTypeAtIndex( sal_uInt32 nIndex ) sal_uInt32 SvtLanguageTable::AddLanguageTag( const LanguageTag& rLanguageTag, const OUString& rString ) { - return theLanguageTable::get().AddItem( (rString.isEmpty() ? rLanguageTag.getBcp47() : rString), + return theLanguageTable::get().AddItem( (rString.isEmpty() ? lcl_getDescription(rLanguageTag.getBcp47()) : rString), rLanguageTag.getLanguageType()); } |