From 7c9d25ae76f53b3cf20f615ae8902eef1648c5b5 Mon Sep 17 00:00:00 2001 From: rsun3 Date: Fri, 8 May 2009 01:51:35 +0000 Subject: Refine language conversion in ECP. Create a new library LanguageLib providing functions for language conversion between ISO 639-2 and RFC 4646 styles. Update FrameworkHiiOnUefiHiiThunk, UcOnUc2Thunk and Uc2OnUcThunk modules to use this library. git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@8258 6f19259b-4bc3-4df7-8a09-765794883524 --- .../Compatibility/Include/Library/LanguageLib.h | 116 +++++++++++++++++++++ 1 file changed, 116 insertions(+) create mode 100644 EdkCompatibilityPkg/Compatibility/Include/Library/LanguageLib.h (limited to 'EdkCompatibilityPkg/Compatibility/Include/Library') diff --git a/EdkCompatibilityPkg/Compatibility/Include/Library/LanguageLib.h b/EdkCompatibilityPkg/Compatibility/Include/Library/LanguageLib.h new file mode 100644 index 0000000000..cc9a5d36ea --- /dev/null +++ b/EdkCompatibilityPkg/Compatibility/Include/Library/LanguageLib.h @@ -0,0 +1,116 @@ +/** @file + Provides functions for language conversion between ISO 639-2 and RFC 4646 styles. + +Copyright (c) 2009, Intel Corporation
+All rights reserved. This program and the accompanying materials +are licensed and made available under the terms and conditions of the BSD License +which accompanies this distribution. The full text of the license may be found at +http://opensource.org/licenses/bsd-license.php + +THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. + +**/ + +#ifndef __LANGUAGE_LIB__ +#define __LANGUAGE_LIB__ + +/** + Convert an ISO 639-2 language code to a RFC 4646 language code. + If the ISO 639-2 language code has a corresponding ISO 639-1 code, then the ISO 639-1 + code is returned. Else the original ISO 639-2 code is returned. The returned RFC 4646 + language code is composed of only a primary language subtag. + + If Iso639Language is NULL, then ASSERT. + If Rfc4646Language is NULL, then ASSERT. + + @param[out] Rfc4646Language Pointers to a buffer large enough for an ASCII string + which reprsents a RFC 4646 language code containging only + either a ISO 639-1 or ISO 639-2 primary language subtag. + This string is Null-terminated. + @param[in] Iso639Language Pointer to a 3-letter ASCII string which represents + an ISO 639-2 language code. This string is not required + to be Null-terminated. + + @retval TRUE The ISO 639-2 language code was converted to a ISO 639-1 code. + @retval FALSE The language code does not have corresponding ISO 639-1 code. + +**/ +BOOLEAN +EFIAPI +ConvertIso639ToRfc4646 ( + OUT CHAR8 *Rfc4646Language, + IN CONST CHAR8 *Iso639Language + ); + +/** + Convert a RFC 4646 language code to an ISO 639-2 language code. The primary language + subtag of the RFC 4646 code must be either an ISO 639-1 or 639-2 code. If the primary + language subtag is an ISO 639-1 code, then it is converted to its corresponding ISO 639-2 + code (T code if applies). Else the ISO 639-2 code is returned. + + If Rfc4646Language is NULL, then ASSERT. + If Iso639Language is NULL, then ASSERT. + + @param[out] Iso639Language Pointers to a buffer large enough for a 3-letter ASCII string + which reprsents an ISO 639-2 language code. The string is Null-terminated. + @param[in] Rfc4646Language Pointer to a RFC 4646 language code string. This string is terminated + by a NULL or a ';' character. + + @retval TRUE Language code converted successfully. + @retval FALSE The RFC 4646 language code is invalid or unsupported. + +**/ +BOOLEAN +EFIAPI +ConvertRfc4646ToIso639 ( + OUT CHAR8 *Iso639Language, + IN CONST CHAR8 *Rfc4646Language + ); + +/** + Convert ISO 639-2 language codes to RFC 4646 codes and return the converted codes. + Caller is responsible for freeing the allocated buffer. + + If Iso639Languages is NULL, then ASSERT. + + @param[in] Iso639Languages Pointers to a Null-terminated ISO 639-2 language codes string containing + one or more ISO 639-2 3-letter language codes. + + @retval NULL Invalid ISO 639-2 language code found. + @retval NULL Out of memory. + @retval !NULL Pointer to the allocate buffer containing the Null-terminated converted language codes string. + This string is composed of one or more RFC4646 language codes each of which has only + ISO 639-1 2-letter primary language subtag. + +**/ +CHAR8 * +EFIAPI +ConvertLanguagesIso639ToRfc4646 ( + IN CONST CHAR8 *Iso639Languages + ); + +/** + Convert RFC 4646 language codes to ISO 639-2 codes and return the converted codes. + The primary language subtag of the RFC 4646 code must be either an ISO 639-1 or 639-2 code. + Caller is responsible for freeing the allocated buffer. + + If Rfc4646Languages is NULL, then ASSERT. + + @param[in] Rfc4646Languages Pointers to a Null-terminated RFC 4646 language codes string containing + one or more RFC 4646 language codes. + + @retval NULL Invalid or unsupported RFC 4646 language code found. + @retval NULL Out of memory. + @retval !NULL Pointer to the allocate buffer containing the Null-terminated converted language codes string. + This string is composed of one or more ISO 639-2 language codes. + +**/ +CHAR8 * +EFIAPI +ConvertLanguagesRfc4646ToIso639 ( + IN CONST CHAR8 *Rfc4646Languages + ); + + +#endif -- cgit v1.2.3