Retire language conversion APIs from HII library class.
authorrsun3 <rsun3@6f19259b-4bc3-4df7-8a09-765794883524>
Thu, 16 Apr 2009 08:46:28 +0000 (08:46 +0000)
committerrsun3 <rsun3@6f19259b-4bc3-4df7-8a09-765794883524>
Thu, 16 Apr 2009 08:46:28 +0000 (08:46 +0000)
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@8104 6f19259b-4bc3-4df7-8a09-765794883524

EdkCompatibilityPkg/Compatibility/FrameworkHiiOnUefiHiiThunk/HiiDatabase.h
EdkCompatibilityPkg/Compatibility/FrameworkHiiOnUefiHiiThunk/Strings.c
EdkCompatibilityPkg/Compatibility/Uc2OnUcThunk/Uc2OnUcThunk.c
EdkCompatibilityPkg/Compatibility/Uc2OnUcThunk/Uc2OnUcThunk.inf
EdkCompatibilityPkg/Compatibility/UcOnUc2Thunk/UcOnUc2Thunk.c
EdkCompatibilityPkg/Compatibility/UcOnUc2Thunk/UcOnUc2Thunk.inf
IntelFrameworkModulePkg/Universal/BdsDxe/FrontPage.c
IntelFrameworkModulePkg/Universal/BdsDxe/Language.c
IntelFrameworkModulePkg/Universal/BdsDxe/Language.h
MdeModulePkg/Include/Library/HiiLib.h
MdeModulePkg/Library/UefiHiiLib/HiiString.c

index a1e9c1a..1583745 100644 (file)
@@ -480,6 +480,55 @@ InitSetBrowserStrings (
   )\r
 ;\r
 \r
+/**\r
+  Convert language code from RFC3066 to ISO639-2.\r
+\r
+  LanguageRfc3066 contain a single RFC 3066 code such as\r
+  "en-US" or "fr-FR".\r
+\r
+  The LanguageRfc3066 must be a buffer large enough\r
+  for ISO_639_2_ENTRY_SIZE characters.\r
+\r
+  If LanguageRfc3066 is NULL, then ASSERT.\r
+  If LanguageIso639 is NULL, then ASSERT.\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
+\r
+/**\r
+  Convert language code from ISO639-2 to RFC3066 and return the converted language.\r
+  Caller is responsible for freeing the allocated buffer.\r
+\r
+  LanguageIso639 contain a single ISO639-2 code such as\r
+  "eng" or "fra".\r
+\r
+  If LanguageIso639 is NULL, then ASSERT.\r
+  If LanguageRfc3066 is NULL, then ASSERT.\r
+\r
+  @param  LanguageIso639         ISO639-2 language code.\r
+\r
+  @return the allocated buffer or NULL, if the language is not found.\r
+\r
+**/\r
+CHAR8*\r
+EFIAPI\r
+ConvertIso639LanguageToRfc3066Language (\r
+  IN  CONST CHAR8   *LanguageIso639\r
+  )\r
+;\r
+\r
 #include "Utility.h"\r
 #include "ConfigAccess.h"\r
 \r
index 05a885c..caa702d 100644 (file)
@@ -25,6 +25,150 @@ ISO639TORFC3066MAP Iso639ToRfc3066Map [] = {
     {"fra", "fr-FR"},\r
 };\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
 CHAR8 *\r
 ConvertIso639ToRfc3066 (\r
   CHAR8 *Iso638Lang\r
@@ -51,6 +195,78 @@ ConvertIso639ToRfc3066 (
   return (CHAR8 *) 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
+/**\r
+  Convert language code from ISO639-2 to RFC3066 and return the converted language.\r
+  Caller is responsible for freeing the allocated buffer.\r
+\r
+  LanguageIso639 contain a single ISO639-2 code such as\r
+  "eng" or "fra".\r
+\r
+  If LanguageIso639 is NULL, then ASSERT.\r
+  If LanguageRfc3066 is NULL, then ASSERT.\r
+\r
+  @param  LanguageIso639         ISO639-2 language code.\r
+\r
+  @return the allocated buffer or NULL, if the language is not found.\r
+\r
+**/\r
+CHAR8*\r
+EFIAPI\r
+ConvertIso639LanguageToRfc3066Language (\r
+  IN  CONST CHAR8   *LanguageIso639\r
+  )\r
+{\r
+  UINTN Index;\r
+  CHAR8 *Rfc3066Language;\r
+  \r
+  for (Index = 0; Iso639ToRfc3066ConversionTable[Index] != 0; Index += 5) {\r
+    if (CompareMem (LanguageIso639, &Iso639ToRfc3066ConversionTable[Index], 3) == 0) {\r
+      Rfc3066Language = AllocateZeroPool (3);\r
+      if (Rfc3066Language != NULL) {\r
+        Rfc3066Language = CopyMem (Rfc3066Language, &Iso639ToRfc3066ConversionTable[Index + 3], 2);\r
+      }\r
+      return Rfc3066Language;\r
+    }\r
+  }\r
+\r
+  return NULL;\r
+}\r
+\r
 /**\r
   Test if all of the characters in a string have corresponding font characters.\r
 \r
index 4ab74ba..33c8510 100644 (file)
@@ -30,6 +30,7 @@ Module Name:
 #include <Library/UefiLib.h>\r
 #include <Library/MemoryAllocationLib.h>\r
 #include <Library/HiiLib.h>\r
+#include <Library/BaseMemoryLib.h>\r
 \r
 \r
 ///\r
@@ -37,6 +38,187 @@ Module Name:
 ///\r
 #define ISO_639_2_ENTRY_SIZE            3\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
+/**\r
+  Convert language code from ISO639-2 to RFC3066 and return the converted language.\r
+  Caller is responsible for freeing the allocated buffer.\r
+\r
+  LanguageIso639 contain a single ISO639-2 code such as\r
+  "eng" or "fra".\r
+\r
+  If LanguageIso639 is NULL, then ASSERT.\r
+  If LanguageRfc3066 is NULL, then ASSERT.\r
+\r
+  @param  LanguageIso639         ISO639-2 language code.\r
+\r
+  @return the allocated buffer or NULL, if the language is not found.\r
+\r
+**/\r
+CHAR8*\r
+EFIAPI\r
+ConvertIso639LanguageToRfc3066Language (\r
+  IN  CONST CHAR8   *LanguageIso639\r
+  )\r
+{\r
+  UINTN Index;\r
+  CHAR8 *Rfc3066Language;\r
+  \r
+  for (Index = 0; Iso639ToRfc3066ConversionTable[Index] != 0; Index += 5) {\r
+    if (CompareMem (LanguageIso639, &Iso639ToRfc3066ConversionTable[Index], 3) == 0) {\r
+      Rfc3066Language = AllocateZeroPool (3);\r
+      if (Rfc3066Language != NULL) {\r
+        Rfc3066Language = CopyMem (Rfc3066Language, &Iso639ToRfc3066ConversionTable[Index + 3], 2);\r
+      }\r
+      return Rfc3066Language;\r
+    }\r
+  }\r
+\r
+  return NULL;\r
+}\r
+\r
 /**\r
   Performs a case-insensitive comparison of two Null-terminated Unicode \r
   strings.\r
index 5e02669..be9db28 100644 (file)
@@ -53,6 +53,7 @@
   UefiLib\r
   MemoryAllocationLib\r
   HiiLib\r
+  BaseMemoryLib\r
 \r
 [Protocols]\r
   gEfiUnicodeCollation2ProtocolGuid\r
index 8fbffce..76fec60 100644 (file)
@@ -30,6 +30,7 @@ Module Name:
 #include <Library/UefiLib.h>\r
 #include <Library/MemoryAllocationLib.h>\r
 #include <Library/HiiLib.h>\r
+#include <Library/BaseMemoryLib.h>\r
 \r
 \r
 ///\r
@@ -37,6 +38,183 @@ Module Name:
 ///\r
 #define ISO_639_2_ENTRY_SIZE            3\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
+/**\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
   Performs a case-insensitive comparison of two Null-terminated Unicode \r
index ffe2d3f..600a0e6 100644 (file)
@@ -53,6 +53,7 @@
   UefiLib\r
   MemoryAllocationLib\r
   HiiLib\r
+  BaseMemoryLib\r
 \r
 [Protocols]\r
   gEfiUnicodeCollation2ProtocolGuid\r
index bda75e1..99abf14 100644 (file)
@@ -14,6 +14,7 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 \r
 #include "Bds.h"\r
 #include "FrontPage.h"\r
+#include "Language.h"\r
 \r
 EFI_GUID  mFrontPageGuid      = FRONT_PAGE_FORMSET_GUID;\r
 \r
index fe3f0e0..5b154e9 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
index 39dd1ec..91bbe9b 100644 (file)
@@ -17,6 +17,23 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 \r
 #include "String.h"\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
 /**\r
   Determine the current language that will be used\r
   based on language related EFI Variables.\r
index 80278b2..17420b4 100644 (file)
@@ -268,73 +268,6 @@ HiiGetSupportedLanguages (
   )\r
 ;\r
 \r
-/**\r
-  Convert language code from RFC3066 to ISO639-2.\r
-\r
-  LanguageRfc3066 contain a single RFC 3066 code such as\r
-  "en-US" or "fr-FR".\r
-\r
-  The LanguageRfc3066 must be a buffer large enough\r
-  for ISO_639_2_ENTRY_SIZE characters.\r
-\r
-  If LanguageRfc3066 is NULL, then ASSERT.\r
-  If LanguageIso639 is NULL, then ASSERT.\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
-\r
-/**\r
-  Convert language code from ISO639-2 to RFC3066 and return the converted language.\r
-  Caller is responsible for freeing the allocated buffer.\r
-\r
-  LanguageIso639 contain a single ISO639-2 code such as\r
-  "eng" or "fra".\r
-\r
-  If LanguageIso639 is NULL, then ASSERT.\r
-  If LanguageRfc3066 is NULL, then ASSERT.\r
-\r
-  @param  LanguageIso639         ISO639-2 language code.\r
-\r
-  @return the allocated buffer or NULL, if the language is not found.\r
-\r
-**/\r
-CHAR8*\r
-EFIAPI\r
-ConvertIso639LanguageToRfc3066Language (\r
-  IN  CONST CHAR8   *LanguageIso639\r
-  )\r
-;\r
-\r
-/**\r
-  Convert language code list from RFC3066 to ISO639-2, e.g. "en-US;fr-FR" will\r
-  be converted to "engfra".\r
-\r
-  If SupportedLanguages is NULL, then ASSERT.\r
-\r
-  @param  SupportedLanguages     The RFC3066 language list.\r
-\r
-  @return The ISO639-2 language list.\r
-\r
-**/\r
-CHAR8 *\r
-EFIAPI\r
-Rfc3066ToIso639 (\r
-  CHAR8  *SupportedLanguages\r
-  )\r
-;\r
-\r
 /**\r
   Allocates and returns a Null-terminated Unicode <ConfigHdr> string using routing \r
   information that includes a GUID, an optional Unicode string name, and a device\r
index 2c317e5..f656975 100644 (file)
 \r
 #include "InternalHiiLib.h"\r
 \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
-\r
-\r
 /**\r
   This function create a new string in String Package or updates an existing \r
   string in a String Package.  If StringId is 0, then a new string is added to\r
@@ -497,129 +350,3 @@ Error:
   return String;\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
-/**\r
-  Convert language code from ISO639-2 to RFC3066 and return the converted language.\r
-  Caller is responsible for freeing the allocated buffer.\r
-\r
-  LanguageIso639 contain a single ISO639-2 code such as\r
-  "eng" or "fra".\r
-\r
-  If LanguageIso639 is NULL, then ASSERT.\r
-  If LanguageRfc3066 is NULL, then ASSERT.\r
-\r
-  @param  LanguageIso639         ISO639-2 language code.\r
-\r
-  @return the allocated buffer or NULL, if the language is not found.\r
-\r
-**/\r
-CHAR8*\r
-EFIAPI\r
-ConvertIso639LanguageToRfc3066Language (\r
-  IN  CONST CHAR8   *LanguageIso639\r
-  )\r
-{\r
-  UINTN Index;\r
-  CHAR8 *Rfc3066Language;\r
-  \r
-  for (Index = 0; Iso639ToRfc3066ConversionTable[Index] != 0; Index += 5) {\r
-    if (CompareMem (LanguageIso639, &Iso639ToRfc3066ConversionTable[Index], 3) == 0) {\r
-      Rfc3066Language = AllocateZeroPool (3);\r
-      if (Rfc3066Language != NULL) {\r
-        Rfc3066Language = CopyMem (Rfc3066Language, &Iso639ToRfc3066ConversionTable[Index + 3], 2);\r
-      }\r
-      return Rfc3066Language;\r
-    }\r
-  }\r
-\r
-  return NULL;\r
-}\r
-\r
-/**\r
-  Convert language code list from RFC3066 to ISO639-2, e.g. "en-US;fr-FR" will\r
-  be converted to "engfra".\r
-\r
-  @param  SupportedLanguages     The RFC3066 language list.\r
-\r
-  @return The ISO639-2 language list.\r
-\r
-**/\r
-CHAR8 *\r
-EFIAPI\r
-Rfc3066ToIso639 (\r
-  CHAR8  *SupportedLanguages\r
-  )\r
-{\r
-  CHAR8       *Languages;\r
-  CHAR8       *ReturnValue;\r
-  CHAR8       *LangCodes;\r
-  CHAR8       *LangRfc3066;\r
-  CHAR8       LangIso639[ISO_639_2_ENTRY_SIZE];\r
-  UINTN       LanguageSize;\r
-  EFI_STATUS  Status;\r
-\r
-  LanguageSize = AsciiStrSize (SupportedLanguages);\r
-  ReturnValue = AllocateZeroPool (LanguageSize);\r
-  if (ReturnValue == NULL) {\r
-    return ReturnValue;\r
-  }\r
-\r
-  //\r
-  // Allocate working buffer to contain substring in SupportedLanguages;\r
-  //\r
-  LangRfc3066 = AllocatePool (LanguageSize);\r
-  if (LangRfc3066 == NULL) {\r
-    FreePool (ReturnValue);\r
-    return NULL;\r
-  }\r
-  Languages = ReturnValue;\r
-  LangCodes = SupportedLanguages;\r
-  while (*LangCodes != 0) {\r
-    HiiLibGetNextLanguage (&LangCodes, LangRfc3066);\r
-\r
-    Status = ConvertRfc3066LanguageToIso639Language (LangRfc3066, LangIso639);\r
-    if (!EFI_ERROR (Status)) {\r
-      CopyMem (Languages, LangIso639, 3);\r
-      Languages = Languages + 3;\r
-    }\r
-  }\r
-\r
-  FreePool (LangRfc3066);\r
-  return ReturnValue;\r
-}\r
-\r
-\r