}\r
\r
\r
+/**\r
+ Convert language code from ISO639-2 to RFC3066.\r
+\r
+ LanguageIso639 contain a single ISO639-2 code such as\r
+ "eng" or "fra".\r
+\r
+ The LanguageRfc3066 must be a buffer large enough\r
+ for RFC_3066_ENTRY_SIZE characters.\r
+\r
+ If LanguageIso639 is NULL, then ASSERT.\r
+ If LanguageRfc3066 is NULL, then ASSERT.\r
+\r
+ @param LanguageIso639 ISO639-2 language code.\r
+ @param LanguageRfc3066 RFC3066 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
+ConvertIso639LanguageToRfc3066Language (\r
+ IN CONST CHAR8 *LanguageIso639,\r
+ OUT CHAR8 *LanguageRfc3066\r
+ )\r
+{\r
+ UINTN Index;\r
+ \r
+ for (Index = 0; Iso639ToRfc3066ConversionTable[Index] != 0; Index += 5) {\r
+ if (CompareMem (LanguageIso639, &Iso639ToRfc3066ConversionTable[Index], 3) == 0) {\r
+ CopyMem (LanguageRfc3066, &Iso639ToRfc3066ConversionTable[Index + 3], 2);\r
+ return EFI_SUCCESS;\r
+ }\r
+ }\r
+\r
+ return EFI_NOT_FOUND;\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