summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2014-09-12 10:47:50 +0100
committerCaolán McNamara <caolanm@redhat.com>2014-09-12 14:44:06 +0100
commit9a502e6b1d6044e6f00db798dc2931f57eab161f (patch)
tree2316138d6d474a09173e894f1e5c2acd286ed592
parentea053226f641075ec4c1ccc214a9d5ab206afd08 (diff)
map Apple LanguageId to LanguageTag
Change-Id: Ib203264ae89aef66f0e9b011ef9a34a8670500de
-rw-r--r--i18nlangtag/source/languagetag/languagetag.cxx367
-rw-r--r--include/i18nlangtag/applelangid.hxx143
2 files changed, 510 insertions, 0 deletions
diff --git a/i18nlangtag/source/languagetag/languagetag.cxx b/i18nlangtag/source/languagetag/languagetag.cxx
index 25b672388a2f..37e1893c52cd 100644
--- a/i18nlangtag/source/languagetag/languagetag.cxx
+++ b/i18nlangtag/source/languagetag/languagetag.cxx
@@ -10,6 +10,7 @@
#include <config_folders.h>
#include "i18nlangtag/languagetag.hxx"
+#include "i18nlangtag/applelangid.hxx"
#include "i18nlangtag/mslangid.hxx"
#include <rtl/ustrbuf.hxx>
#include <rtl/bootstrap.hxx>
@@ -2745,4 +2746,370 @@ bool LanguageTag::isValidBcp47( const OUString& rString, OUString* o_pCanonicali
return bValid;
}
+LanguageTag makeLanguageTagFromAppleLanguageId(AppleLanguageId nLanguage)
+{
+ //map the simple ones via LanguageTypes, and the hard ones explictly
+ LanguageType nLang(LANGUAGE_DONTKNOW);
+
+ switch (nLanguage)
+ {
+ case APPLE_LANG_ENGLISH:
+ nLang = LANGUAGE_ENGLISH;
+ break;
+ case APPLE_LANG_FRENCH:
+ nLang = LANGUAGE_FRENCH;
+ break;
+ case APPLE_LANG_GERMAN:
+ nLang = LANGUAGE_GERMAN;
+ break;
+ case APPLE_LANG_ITALIAN:
+ nLang = LANGUAGE_ITALIAN;
+ break;
+ case APPLE_LANG_DUTCH:
+ nLang = LANGUAGE_DUTCH;
+ break;
+ case APPLE_LANG_SWEDISH:
+ nLang = LANGUAGE_SWEDISH;
+ break;
+ case APPLE_LANG_SPANISH:
+ nLang = LANGUAGE_SPANISH;
+ break;
+ case APPLE_LANG_DANISH:
+ nLang = LANGUAGE_DANISH;
+ break;
+ case APPLE_LANG_PORTUGUESE:
+ nLang = LANGUAGE_PORTUGUESE;
+ break;
+ case APPLE_LANG_NORWEGIAN:
+ nLang = LANGUAGE_NORWEGIAN;
+ break;
+ case APPLE_LANG_HEBREW:
+ nLang = LANGUAGE_HEBREW;
+ break;
+ case APPLE_LANG_JAPANESE:
+ nLang = LANGUAGE_JAPANESE;
+ break;
+ case APPLE_LANG_ARABIC:
+ nLang = LANGUAGE_ARABIC_PRIMARY_ONLY;
+ break;
+ case APPLE_LANG_FINNISH:
+ nLang = LANGUAGE_FINNISH;
+ break;
+ case APPLE_LANG_GREEK:
+ nLang = LANGUAGE_GREEK;
+ break;
+ case APPLE_LANG_ICELANDIC:
+ nLang = LANGUAGE_ICELANDIC;
+ break;
+ case APPLE_LANG_MALTESE:
+ nLang = LANGUAGE_MALTESE;
+ break;
+ case APPLE_LANG_TURKISH:
+ nLang = LANGUAGE_TURKISH;
+ break;
+ case APPLE_LANG_CROATIAN:
+ nLang = LANGUAGE_CROATIAN;
+ break;
+ case APPLE_LANG_CHINESE_TRADITIONAL:
+ nLang = LANGUAGE_CHINESE_TRADITIONAL;
+ break;
+ case APPLE_LANG_URDU:
+ nLang = LANGUAGE_URDU_PAKISTAN; //probably, otherwise we need a LANGUAGE_URDU_PRIMARY_ONLY
+ break;
+ case APPLE_LANG_HINDI:
+ nLang = LANGUAGE_HINDI;
+ break;
+ case APPLE_LANG_THAI:
+ nLang = LANGUAGE_THAI;
+ break;
+ case APPLE_LANG_KOREAN:
+ nLang = LANGUAGE_KOREAN;
+ break;
+ case APPLE_LANG_LITHUANIAN:
+ nLang = LANGUAGE_LITHUANIAN;
+ break;
+ case APPLE_LANG_POLISH:
+ nLang = LANGUAGE_POLISH;
+ break;
+ case APPLE_LANG_HUNGARIAN:
+ nLang = LANGUAGE_HUNGARIAN;
+ break;
+ case APPLE_LANG_ESTONIAN:
+ nLang = LANGUAGE_ESTONIAN;
+ break;
+ case APPLE_LANG_LATVIAN:
+ nLang = LANGUAGE_LATVIAN;
+ break;
+ case APPLE_LANG_SAMI:
+ nLang = LANGUAGE_SAMI_NORTHERN_NORWAY; //maybe
+ break;
+ case APPLE_LANG_FAROESE:
+ nLang = LANGUAGE_FAEROESE;
+ break;
+ case APPLE_LANG_FARSI:
+ nLang = LANGUAGE_FARSI;
+ break;
+ case APPLE_LANG_RUSSIAN:
+ nLang = LANGUAGE_RUSSIAN;
+ break;
+ case APPLE_LANG_CHINESE_SIMPLIFIED:
+ nLang = LANGUAGE_CHINESE_SIMPLIFIED;
+ break;
+ case APPLE_LANG_FLEMISH:
+ nLang = LANGUAGE_DUTCH_BELGIAN;
+ break;
+ case APPLE_LANG_IRISH_GAELIC:
+ nLang = LANGUAGE_GAELIC_IRELAND;
+ break;
+ case APPLE_LANG_ALBANIAN:
+ nLang = LANGUAGE_ALBANIAN;
+ break;
+ case APPLE_LANG_ROMANIAN:
+ nLang = LANGUAGE_ROMANIAN;
+ break;
+ case APPLE_LANG_CZECH:
+ nLang = LANGUAGE_CZECH;
+ break;
+ case APPLE_LANG_SLOVAK:
+ nLang = LANGUAGE_SLOVAK;
+ break;
+ case APPLE_LANG_SLOVENIAN:
+ nLang = LANGUAGE_SLOVENIAN;
+ break;
+ case APPLE_LANG_YIDDISH:
+ nLang = LANGUAGE_YIDDISH;
+ break;
+ case APPLE_LANG_SERBIAN:
+ nLang = LANGUAGE_SERBIAN_CYRILLIC_SERBIA; //maybe
+ break;
+ case APPLE_LANG_MACEDONIAN:
+ nLang = LANGUAGE_MACEDONIAN;
+ break;
+ case APPLE_LANG_BULGARIAN:
+ nLang = LANGUAGE_BULGARIAN;
+ break;
+ case APPLE_LANG_UKRAINIAN:
+ nLang = LANGUAGE_UKRAINIAN;
+ break;
+ case APPLE_LANG_BYELORUSSIAN:
+ nLang = LANGUAGE_BELARUSIAN;
+ break;
+ case APPLE_LANG_UZBEK:
+ nLang = LANGUAGE_UZBEK_CYRILLIC; //maybe
+ break;
+ case APPLE_LANG_KAZAKH:
+ nLang = LANGUAGE_KAZAKH;
+ break;
+ case APPLE_LANG_AZERI_CYRILLIC:
+ nLang = LANGUAGE_AZERI_CYRILLIC;
+ break;
+ case APPLE_LANG_AZERI_ARABIC:
+ return LanguageTag("az-Arab");
+ break;
+ case APPLE_LANG_ARMENIAN:
+ nLang = LANGUAGE_ARMENIAN;
+ break;
+ case APPLE_LANG_GEORGIAN:
+ nLang = LANGUAGE_GEORGIAN;
+ break;
+ case APPLE_LANG_MOLDAVIAN:
+ nLang = LANGUAGE_ROMANIAN_MOLDOVA;
+ break;
+ case APPLE_LANG_KIRGHIZ:
+ nLang = LANGUAGE_KIRGHIZ;
+ break;
+ case APPLE_LANG_TAJIKI:
+ nLang = LANGUAGE_TAJIK;
+ break;
+ case APPLE_LANG_TURKMEN:
+ nLang = LANGUAGE_TURKMEN;
+ break;
+ case APPLE_LANG_MONGOLIAN_MONGOLIAN:
+ nLang = LANGUAGE_MONGOLIAN_MONGOLIAN_MONGOLIA;
+ break;
+ case APPLE_LANG_MONGOLIAN_CYRILLIC:
+ nLang = LANGUAGE_MONGOLIAN_CYRILLIC_MONGOLIA;
+ break;
+ case APPLE_LANG_PASHTO:
+ nLang = LANGUAGE_PASHTO;
+ break;
+ case APPLE_LANG_KURDISH:
+ nLang = LANGUAGE_USER_KURDISH_TURKEY; //maybe
+ break;
+ case APPLE_LANG_KASHMIRI:
+ nLang = LANGUAGE_KASHMIRI;
+ break;
+ case APPLE_LANG_SINDHI:
+ nLang = LANGUAGE_SINDHI;
+ break;
+ case APPLE_LANG_TIBETAN:
+ nLang = LANGUAGE_TIBETAN;
+ break;
+ case APPLE_LANG_NEPALI:
+ nLang = LANGUAGE_NEPALI;
+ break;
+ case APPLE_LANG_SANSKRIT:
+ nLang = LANGUAGE_SANSKRIT;
+ break;
+ case APPLE_LANG_MARATHI:
+ nLang = LANGUAGE_MARATHI;
+ break;
+ case APPLE_LANG_BENGALI:
+ nLang = LANGUAGE_BENGALI;
+ break;
+ case APPLE_LANG_ASSAMESE:
+ nLang = LANGUAGE_ASSAMESE;
+ break;
+ case APPLE_LANG_GUJARATI:
+ nLang = LANGUAGE_GUJARATI;
+ break;
+ case APPLE_LANG_PUNJABI:
+ nLang = LANGUAGE_PUNJABI;
+ break;
+ case APPLE_LANG_ORIYA:
+ nLang = LANGUAGE_ODIA;
+ break;
+ case APPLE_LANG_MALAYALAM:
+ nLang = LANGUAGE_MALAYALAM;
+ break;
+ case APPLE_LANG_KANNADA:
+ nLang = LANGUAGE_KANNADA;
+ break;
+ case APPLE_LANG_TAMIL:
+ nLang = LANGUAGE_TAMIL;
+ break;
+ case APPLE_LANG_TELUGU:
+ nLang = LANGUAGE_TELUGU;
+ break;
+ case APPLE_LANG_SINHALESE:
+ nLang = LANGUAGE_SINHALESE_SRI_LANKA;
+ break;
+ case APPLE_LANG_BURMESE:
+ nLang = LANGUAGE_BURMESE;
+ break;
+ case APPLE_LANG_KHMER:
+ nLang = LANGUAGE_KHMER;
+ break;
+ case APPLE_LANG_LAO:
+ nLang = LANGUAGE_LAO;
+ break;
+ case APPLE_LANG_VIETNAMESE:
+ nLang = LANGUAGE_VIETNAMESE;
+ break;
+ case APPLE_LANG_INDONESIAN:
+ nLang = LANGUAGE_INDONESIAN;
+ break;
+ case APPLE_LANG_TAGALONG:
+ nLang = LANGUAGE_USER_TAGALOG;
+ break;
+ case APPLE_LANG_MALAY_LATIN:
+ nLang = LANGUAGE_MALAY_MALAYSIA;
+ break;
+ case APPLE_LANG_MALAY_ARABIC:
+ return LanguageTag("ms-Arab");
+ break;
+ case APPLE_LANG_AMHARIC:
+ nLang = LANGUAGE_AMHARIC_ETHIOPIA;
+ break;
+ case APPLE_LANG_TIGRINYA:
+ nLang = LANGUAGE_TIGRIGNA_ETHIOPIA;
+ break;
+ case APPLE_LANG_GALLA:
+ nLang = LANGUAGE_OROMO;
+ break;
+ case APPLE_LANG_SOMALI:
+ nLang = LANGUAGE_SOMALI;
+ break;
+ case APPLE_LANG_SWAHILI:
+ nLang = LANGUAGE_SWAHILI;
+ break;
+ case APPLE_LANG_KINYARWANDA:
+ nLang = LANGUAGE_KINYARWANDA_RWANDA;
+ break;
+ case APPLE_LANG_RUNDI:
+ return LanguageTag("rn");
+ break;
+ case APPLE_LANG_NYANJA:
+ nLang = LANGUAGE_USER_NYANJA;
+ break;
+ case APPLE_LANG_MALAGASY:
+ nLang = LANGUAGE_MALAGASY_PLATEAU;
+ break;
+ case APPLE_LANG_ESPERANTO:
+ nLang = LANGUAGE_USER_ESPERANTO;
+ break;
+ case APPLE_LANG_WELSH:
+ nLang = LANGUAGE_WELSH;
+ break;
+ case APPLE_LANG_BASQUE:
+ nLang = LANGUAGE_BASQUE;
+ break;
+ case APPLE_LANG_CATALAN:
+ nLang = LANGUAGE_CATALAN;
+ break;
+ case APPLE_LANG_LATIN:
+ nLang = LANGUAGE_USER_LATIN;
+ break;
+ case APPLE_LANG_QUENCHUA:
+ nLang = LANGUAGE_QUECHUA_BOLIVIA; //maybe
+ break;
+ case APPLE_LANG_GUARANI:
+ nLang = LANGUAGE_GUARANI_PARAGUAY;
+ break;
+ case APPLE_LANG_AYMARA:
+ return LanguageTag("ay");
+ break;
+ case APPLE_LANG_TATAR:
+ nLang = LANGUAGE_TATAR;
+ break;
+ case APPLE_LANG_UIGHUR:
+ nLang = LANGUAGE_UIGHUR_CHINA;
+ break;
+ case APPLE_LANG_DZONGKHA:
+ nLang = LANGUAGE_DZONGKHA;
+ break;
+ case APPLE_LANG_JAVANESE_LATIN:
+ return LanguageTag("jv-Latn");
+ break;
+ case APPLE_LANG_SUNDANESE_LATIN:
+ return LanguageTag("su-Latn");
+ break;
+ case APPLE_LANG_GALICIAN:
+ nLang = LANGUAGE_GALICIAN;
+ break;
+ case APPLE_LANG_AFRIKAANS:
+ nLang = LANGUAGE_AFRIKAANS;
+ break;
+ case APPLE_LANG_BRETON:
+ nLang = LANGUAGE_BRETON_FRANCE;
+ break;
+ case APPLE_LANG_INUKTITUT:
+ nLang = LANGUAGE_INUKTITUT_LATIN_CANADA; //probably
+ break;
+ case APPLE_LANG_SCOTTISH_GAELIC:
+ nLang = LANGUAGE_GAELIC_SCOTLAND;
+ break;
+ case APPLE_LANG_MANX_GAELIC:
+ nLang = LANGUAGE_USER_MANX;
+ break;
+ case APPLE_LANG_IRISH_GAELIC_WITH_DOT_ABOVE:
+ return LanguageTag("ga-Latg");
+ break;
+ case APPLE_LANG_TONGAN:
+ return LanguageTag("to");
+ break;
+ case APPLE_LANG_GREEK_POLYTONIC:
+ nLang = LANGUAGE_USER_ANCIENT_GREEK;
+ break;
+ case APPLE_LANG_GREENLANDIC:
+ nLang = LANGUAGE_KALAALLISUT_GREENLAND;
+ break;
+ case APPLE_LANG_AZERI_LATIN:
+ nLang = LANGUAGE_AZERI_LATIN;
+ break;
+ }
+
+ return LanguageTag(nLang);
+}
+
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/include/i18nlangtag/applelangid.hxx b/include/i18nlangtag/applelangid.hxx
new file mode 100644
index 000000000000..5dc164a119b1
--- /dev/null
+++ b/include/i18nlangtag/applelangid.hxx
@@ -0,0 +1,143 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ */
+
+//as seen at http://www.microsoft.com/typography/otspec/name.htm
+
+#ifndef INCLUDED_I18NLANGTAG_APPLELANGID_H
+#define INCLUDED_I18NLANGTAG_APPLELANGID_H
+
+#include <i18nlangtag/languagetag.hxx>
+
+typedef unsigned short AppleLanguageId;
+
+/** Init LanguageTag with Apple LanguageId */
+I18NLANGTAG_DLLPUBLIC LanguageTag makeLanguageTagFromAppleLanguageId(AppleLanguageId nLanguage);
+
+#define APPLE_LANG_ENGLISH 0
+#define APPLE_LANG_FRENCH 1
+#define APPLE_LANG_GERMAN 2
+#define APPLE_LANG_ITALIAN 3
+#define APPLE_LANG_DUTCH 4
+#define APPLE_LANG_SWEDISH 5
+#define APPLE_LANG_SPANISH 6
+#define APPLE_LANG_DANISH 7
+#define APPLE_LANG_PORTUGUESE 8
+#define APPLE_LANG_NORWEGIAN 9
+#define APPLE_LANG_HEBREW 10
+#define APPLE_LANG_JAPANESE 11
+#define APPLE_LANG_ARABIC 12
+#define APPLE_LANG_FINNISH 13
+#define APPLE_LANG_GREEK 14
+#define APPLE_LANG_ICELANDIC 15
+#define APPLE_LANG_MALTESE 16
+#define APPLE_LANG_TURKISH 17
+#define APPLE_LANG_CROATIAN 18
+#define APPLE_LANG_CHINESE_TRADITIONAL 19
+#define APPLE_LANG_URDU 20
+#define APPLE_LANG_HINDI 21
+#define APPLE_LANG_THAI 22
+#define APPLE_LANG_KOREAN 23
+#define APPLE_LANG_LITHUANIAN 24
+#define APPLE_LANG_POLISH 25
+#define APPLE_LANG_HUNGARIAN 26
+#define APPLE_LANG_ESTONIAN 27
+#define APPLE_LANG_LATVIAN 28
+#define APPLE_LANG_SAMI 29
+#define APPLE_LANG_FAROESE 30
+#define APPLE_LANG_FARSI 31
+#define APPLE_LANG_RUSSIAN 32
+#define APPLE_LANG_CHINESE_SIMPLIFIED 33
+#define APPLE_LANG_FLEMISH 34
+#define APPLE_LANG_IRISH_GAELIC 35
+#define APPLE_LANG_ALBANIAN 36
+#define APPLE_LANG_ROMANIAN 37
+#define APPLE_LANG_CZECH 38
+#define APPLE_LANG_SLOVAK 39
+#define APPLE_LANG_SLOVENIAN 40
+#define APPLE_LANG_YIDDISH 41
+#define APPLE_LANG_SERBIAN 42
+#define APPLE_LANG_MACEDONIAN 43
+#define APPLE_LANG_BULGARIAN 44
+#define APPLE_LANG_UKRAINIAN 45
+#define APPLE_LANG_BYELORUSSIAN 46
+#define APPLE_LANG_UZBEK 47
+#define APPLE_LANG_KAZAKH 48
+#define APPLE_LANG_AZERI_CYRILLIC 49
+#define APPLE_LANG_AZERI_ARABIC 50
+#define APPLE_LANG_ARMENIAN 51
+#define APPLE_LANG_GEORGIAN 52
+#define APPLE_LANG_MOLDAVIAN 53
+#define APPLE_LANG_KIRGHIZ 54
+#define APPLE_LANG_TAJIKI 55
+#define APPLE_LANG_TURKMEN 56
+#define APPLE_LANG_MONGOLIAN_MONGOLIAN 57
+#define APPLE_LANG_MONGOLIAN_CYRILLIC 58
+#define APPLE_LANG_PASHTO 59
+#define APPLE_LANG_KURDISH 60
+#define APPLE_LANG_KASHMIRI 61
+#define APPLE_LANG_SINDHI 62
+#define APPLE_LANG_TIBETAN 63
+#define APPLE_LANG_NEPALI 64
+#define APPLE_LANG_SANSKRIT 65
+#define APPLE_LANG_MARATHI 66
+#define APPLE_LANG_BENGALI 67
+#define APPLE_LANG_ASSAMESE 68
+#define APPLE_LANG_GUJARATI 69
+#define APPLE_LANG_PUNJABI 70
+#define APPLE_LANG_ORIYA 71
+#define APPLE_LANG_MALAYALAM 72
+#define APPLE_LANG_KANNADA 73
+#define APPLE_LANG_TAMIL 74
+#define APPLE_LANG_TELUGU 75
+#define APPLE_LANG_SINHALESE 76
+#define APPLE_LANG_BURMESE 77
+#define APPLE_LANG_KHMER 78
+#define APPLE_LANG_LAO 79
+#define APPLE_LANG_VIETNAMESE 80
+#define APPLE_LANG_INDONESIAN 81
+#define APPLE_LANG_TAGALONG 82
+#define APPLE_LANG_MALAY_LATIN 83
+#define APPLE_LANG_MALAY_ARABIC 84
+#define APPLE_LANG_AMHARIC 85
+#define APPLE_LANG_TIGRINYA 86
+#define APPLE_LANG_GALLA 87
+#define APPLE_LANG_SOMALI 88
+#define APPLE_LANG_SWAHILI 89
+#define APPLE_LANG_KINYARWANDA 90
+#define APPLE_LANG_RUNDI 91
+#define APPLE_LANG_NYANJA 92
+#define APPLE_LANG_MALAGASY 93
+#define APPLE_LANG_ESPERANTO 94
+#define APPLE_LANG_WELSH 128
+#define APPLE_LANG_BASQUE 129
+#define APPLE_LANG_CATALAN 130
+#define APPLE_LANG_LATIN 131
+#define APPLE_LANG_QUENCHUA 132
+#define APPLE_LANG_GUARANI 133
+#define APPLE_LANG_AYMARA 134
+#define APPLE_LANG_TATAR 135
+#define APPLE_LANG_UIGHUR 136
+#define APPLE_LANG_DZONGKHA 137
+#define APPLE_LANG_JAVANESE_LATIN 138
+#define APPLE_LANG_SUNDANESE_LATIN 139
+#define APPLE_LANG_GALICIAN 140
+#define APPLE_LANG_AFRIKAANS 141
+#define APPLE_LANG_BRETON 142
+#define APPLE_LANG_INUKTITUT 143
+#define APPLE_LANG_SCOTTISH_GAELIC 144
+#define APPLE_LANG_MANX_GAELIC 145
+#define APPLE_LANG_IRISH_GAELIC_WITH_DOT_ABOVE 146
+#define APPLE_LANG_TONGAN 147
+#define APPLE_LANG_GREEK_POLYTONIC 148
+#define APPLE_LANG_GREENLANDIC 149
+#define APPLE_LANG_AZERI_LATIN 150
+
+#endif /* INCLUDED_I18NLANGTAG_APPLELANGID_H */
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */