Home | History | Annotate | Download | only in Library
      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