1 /** @file 2 Provides functions for language conversion between ISO 639-2 and RFC 4646 styles. 3 4 Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.<BR> 5 This program and the accompanying materials 6 are licensed and made available under the terms and conditions of the BSD License 7 which accompanies this distribution. The full text of the license may be found at 8 http://opensource.org/licenses/bsd-license.php. 9 10 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, 11 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. 12 13 **/ 14 15 #ifndef __LANGUAGE_LIB__ 16 #define __LANGUAGE_LIB__ 17 18 /** 19 Converts an ISO 639-2 language code to an RFC 4646 language code. 20 If the ISO 639-2 language code has a corresponding ISO 639-1 code, then that ISO 639-1 21 code is returned in the out parameter. Else the original ISO 639-2 code is returned. The returned RFC 4646 22 language code is composed of only a primary language subtag. 23 24 If Iso639Language is NULL, then ASSERT(). 25 If Rfc4646Language is NULL, then ASSERT(). 26 27 @param[out] Rfc4646Language Pointers to a buffer large enough for an ASCII string 28 representing an RFC 4646 language code containing only 29 either a ISO 639-1 or ISO 639-2 primary language subtag. 30 This string is Null-terminated. 31 @param[in] Iso639Language The pointer to a 3-letter ASCII string that represents 32 an ISO 639-2 language code. This string is not required 33 to be Null-terminated. 34 35 @retval TRUE The ISO 639-2 language code was converted to an ISO 639-1 code. 36 @retval FALSE The language code does not have a corresponding ISO 639-1 code. 37 38 **/ 39 BOOLEAN 40 EFIAPI 41 ConvertIso639ToRfc4646 ( 42 OUT CHAR8 *Rfc4646Language, 43 IN CONST CHAR8 *Iso639Language 44 ); 45 46 /** 47 Converts an RFC 4646 language code to an ISO 639-2 language code. The primary language 48 subtag of the RFC 4646 code must be either an ISO 639-1 or 639-2 code. If the primary 49 language subtag is an ISO 639-1 code, then it is converted to its corresponding ISO 639-2 50 code (T code if applies). Else the ISO 639-2 code is returned. 51 52 If Rfc4646Language is NULL, then ASSERT(). 53 If Iso639Language is NULL, then ASSERT(). 54 55 @param[out] Iso639Language Pointers to a buffer large enough for a 3-letter ASCII string 56 representing an ISO 639-2 language code. The string 57 is Null-terminated. 58 @param[in] Rfc4646Language The pointer to a RFC 4646 language code string. 59 This string is terminated 60 by a NULL or a ';' character. 61 62 @retval TRUE Language code converted successfully. 63 @retval FALSE The RFC 4646 language code is invalid or unsupported. 64 65 **/ 66 BOOLEAN 67 EFIAPI 68 ConvertRfc4646ToIso639 ( 69 OUT CHAR8 *Iso639Language, 70 IN CONST CHAR8 *Rfc4646Language 71 ); 72 73 /** 74 Converts ISO 639-2 language codes to RFC 4646 codes and returns the converted codes. 75 Caller is responsible for freeing the allocated buffer. 76 77 If Iso639Languages is NULL, then ASSERT. 78 79 @param[in] Iso639Languages Pointers to Null-terminated ISO 639-2 language code strings containing 80 one or more ISO 639-2 3-letter language codes. 81 82 @retval NULL Invalid ISO 639-2 language code found. 83 @retval NULL Out of memory. 84 @return The pointer to the allocate buffer containing the 85 Null-terminated converted language codes string. 86 This string is composed of one or more RFC4646 87 language codes each of which has only 88 ISO 639-1 2-letter primary language subtag. 89 90 **/ 91 CHAR8 * 92 EFIAPI 93 ConvertLanguagesIso639ToRfc4646 ( 94 IN CONST CHAR8 *Iso639Languages 95 ); 96 97 /** 98 Converts RFC 4646 language codes to ISO 639-2 codes and returns the converted codes. 99 The primary language subtag of the RFC 4646 code must be either an ISO 639-1 or 639-2 code. 100 Caller is responsible for freeing the allocated buffer. 101 102 If Rfc4646Languages is NULL, then ASSERT. 103 104 @param[in] Rfc4646Languages Pointers to a Null-terminated RFC 4646 language codes 105 string containing one or more RFC 4646 language codes. 106 107 @retval NULL Invalid or unsupported RFC 4646 language code found. 108 @retval NULL Out of memory. 109 @return The pointer to the allocate buffer containing the 110 Null-terminated converted language codes string. 111 This string is composed of one or more ISO 639-2 112 language codes. 113 114 **/ 115 CHAR8 * 116 EFIAPI 117 ConvertLanguagesRfc4646ToIso639 ( 118 IN CONST CHAR8 *Rfc4646Languages 119 ); 120 121 122 #endif 123