+/**\r
+ * This function checks the supported languages list for a target language,\r
+ * This only supports RFC 4646 Languages.\r
+ *\r
+ * @param SupportedLanguages The supported languages\r
+ * @param TargetLanguage The target language\r
+ *\r
+ * @return Returns EFI_SUCCESS if the language is supported,\r
+ * EFI_UNSUPPORTED otherwise\r
+ */\r
+EFI_STATUS\r
+EFIAPI\r
+IsLanguageSupported (\r
+ IN CONST CHAR8 *SupportedLanguages,\r
+ IN CONST CHAR8 *TargetLanguage\r
+ )\r
+{\r
+ UINTN Index;\r
+ while (*SupportedLanguages != 0) {\r
+ for (Index = 0; SupportedLanguages[Index] != 0 && SupportedLanguages[Index] != ';'; Index++);\r
+ if ((AsciiStrnCmp(SupportedLanguages, TargetLanguage, Index) == 0) && (TargetLanguage[Index] == 0)) {\r
+ return EFI_SUCCESS;\r
+ }\r
+ SupportedLanguages += Index;\r
+ for (; *SupportedLanguages != 0 && *SupportedLanguages == ';'; SupportedLanguages++);\r
+ }\r
+\r
+ return EFI_UNSUPPORTED;\r
+}\r
+\r