]> git.proxmox.com Git - mirror_edk2.git/blobdiff - IntelFrameworkModulePkg/Universal/BdsDxe/Language.c
Retire language conversion APIs from HII library class.
[mirror_edk2.git] / IntelFrameworkModulePkg / Universal / BdsDxe / Language.c
index fe3f0e0064d94c942d01b47a507fcbb618cec1cc..5b154e98ee18c958fda8117b85799881da737f1a 100644 (file)
@@ -15,6 +15,150 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 #include "Language.h"\r
 #include "FrontPage.h"\r
 \r
+//\r
+// Lookup table of ISO639-2 3 character language codes to ISO 639-1 2 character language codes\r
+// Each entry is 5 CHAR8 values long.  The first 3 CHAR8 values are the ISO 639-2 code.\r
+// The last 2 CHAR8 values are the ISO 639-1 code.\r
+//\r
+GLOBAL_REMOVE_IF_UNREFERENCED CONST CHAR8 Iso639ToRfc3066ConversionTable[] =\r
+"\\r
+aaraa\\r
+abkab\\r
+afraf\\r
+amham\\r
+araar\\r
+asmas\\r
+aymay\\r
+azeaz\\r
+bakba\\r
+belbe\\r
+benbn\\r
+bihbh\\r
+bisbi\\r
+bodbo\\r
+brebr\\r
+bulbg\\r
+catca\\r
+cescs\\r
+corkw\\r
+cosco\\r
+cymcy\\r
+danda\\r
+deude\\r
+dzodz\\r
+ellel\\r
+engen\\r
+epoeo\\r
+estet\\r
+euseu\\r
+faofo\\r
+fasfa\\r
+fijfj\\r
+finfi\\r
+frafr\\r
+fryfy\\r
+gaiga\\r
+gdhgd\\r
+glggl\\r
+grngn\\r
+gujgu\\r
+hauha\\r
+hebhe\\r
+hinhi\\r
+hrvhr\\r
+hunhu\\r
+hyehy\\r
+ikuiu\\r
+ileie\\r
+inaia\\r
+indid\\r
+ipkik\\r
+islis\\r
+itait\\r
+jawjw\\r
+jpnja\\r
+kalkl\\r
+kankn\\r
+kasks\\r
+katka\\r
+kazkk\\r
+khmkm\\r
+kinrw\\r
+kirky\\r
+korko\\r
+kurku\\r
+laolo\\r
+latla\\r
+lavlv\\r
+linln\\r
+litlt\\r
+ltzlb\\r
+malml\\r
+marmr\\r
+mkdmk\\r
+mlgmg\\r
+mltmt\\r
+molmo\\r
+monmn\\r
+mrimi\\r
+msams\\r
+myamy\\r
+nauna\\r
+nepne\\r
+nldnl\\r
+norno\\r
+ocioc\\r
+ormom\\r
+panpa\\r
+polpl\\r
+porpt\\r
+pusps\\r
+quequ\\r
+rohrm\\r
+ronro\\r
+runrn\\r
+rusru\\r
+sagsg\\r
+sansa\\r
+sinsi\\r
+slksk\\r
+slvsl\\r
+smise\\r
+smosm\\r
+snasn\\r
+sndsd\\r
+somso\\r
+sotst\\r
+spaes\\r
+sqisq\\r
+srpsr\\r
+sswss\\r
+sunsu\\r
+swasw\\r
+swesv\\r
+tamta\\r
+tattt\\r
+telte\\r
+tgktg\\r
+tgltl\\r
+thath\\r
+tsnts\\r
+tuktk\\r
+twitw\\r
+uigug\\r
+ukruk\\r
+urdur\\r
+uzbuz\\r
+vievi\\r
+volvo\\r
+wolwo\\r
+xhoxh\\r
+yidyi\\r
+zhaza\\r
+zhozh\\r
+zulzu\\r
+";\r
+\r
 #define NARROW_GLYPH_NUMBER 8\r
 #define WIDE_GLYPH_NUMBER   75\r
 \r
@@ -270,6 +414,40 @@ ExportFonts (
   ASSERT (HiiHandle != NULL);\r
 }\r
 \r
+/**\r
+  Convert language code from RFC3066 to ISO639-2.\r
+\r
+  @param  LanguageRfc3066        RFC3066 language code.\r
+  @param  LanguageIso639         ISO639-2 language code.\r
+\r
+  @retval EFI_SUCCESS            Language code converted.\r
+  @retval EFI_NOT_FOUND          Language code not found.\r
+\r
+**/\r
+EFI_STATUS\r
+EFIAPI\r
+ConvertRfc3066LanguageToIso639Language (\r
+  IN  CHAR8   *LanguageRfc3066,\r
+  OUT CHAR8   *LanguageIso639\r
+  )\r
+{\r
+  UINTN  Index;\r
+\r
+  if ((LanguageRfc3066[2] != '-') && (LanguageRfc3066[2] != 0)) {\r
+    CopyMem (LanguageIso639, LanguageRfc3066, 3);\r
+    return EFI_SUCCESS;\r
+  }\r
+\r
+  for (Index = 0; Iso639ToRfc3066ConversionTable[Index] != 0; Index += 5) {\r
+    if (CompareMem (LanguageRfc3066, &Iso639ToRfc3066ConversionTable[Index + 3], 2) == 0) {\r
+      CopyMem (LanguageIso639, &Iso639ToRfc3066ConversionTable[Index], 3);\r
+      return EFI_SUCCESS;\r
+    }\r
+  }\r
+\r
+  return EFI_NOT_FOUND;\r
+}\r
+\r
 /**\r
   Determine the current language that will be used\r
   based on language related EFI Variables.\r