2 Language related HII Library implementation.
4 Copyright (c) 2006, Intel Corporation<BR>
5 All rights reserved. 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
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.
16 #include "InternalHiiLib.h"
20 HiiLibGetCurrentLanguage (
27 ASSERT (Lang
!= NULL
);
30 // Get current language setting
32 Size
= RFC_3066_ENTRY_SIZE
;
33 Status
= gRT
->GetVariable (
35 &gEfiGlobalVariableGuid
,
41 if (EFI_ERROR (Status
)) {
42 AsciiStrCpy (Lang
, (CHAR8
*) PcdGetPtr (PcdUefiVariableDefaultPlatformLang
));
51 HiiLibGetNextLanguage (
52 IN OUT CHAR8
**LangCode
,
59 ASSERT (LangCode
!= NULL
);
60 ASSERT (Lang
!= NULL
);
63 StringPtr
= *LangCode
;
64 while (StringPtr
[Index
] != 0 && StringPtr
[Index
] != ';') {
68 CopyMem (Lang
, StringPtr
, Index
);
71 if (StringPtr
[Index
] == ';') {
74 *LangCode
= StringPtr
+ Index
;
80 HiiLibGetSupportedLanguages (
81 IN EFI_HII_HANDLE HiiHandle
86 CHAR8
*LanguageString
;
88 ASSERT (HiiHandle
!= NULL
);
89 ASSERT (IsHiiHandleRegistered (HiiHandle
));
91 // Collect current supported Languages for given HII handle
94 LanguageString
= AllocatePool (BufferSize
);
95 Status
= mHiiStringProt
->GetLanguages (mHiiStringProt
, HiiHandle
, LanguageString
, &BufferSize
);
97 if (Status
== EFI_BUFFER_TOO_SMALL
) {
98 gBS
->FreePool (LanguageString
);
99 LanguageString
= AllocatePool (BufferSize
);
100 Status
= mHiiStringProt
->GetLanguages (mHiiStringProt
, HiiHandle
, LanguageString
, &BufferSize
);
103 if (EFI_ERROR (Status
)) {
104 LanguageString
= NULL
;
107 return LanguageString
;
113 HiiLibGetSupportedLanguageNumber (
114 IN EFI_HII_HANDLE HiiHandle
118 CHAR8
*LanguageString
;
120 CHAR8 Lang
[RFC_3066_ENTRY_SIZE
];
122 Languages
= HiiLibGetSupportedLanguages (HiiHandle
);
123 if (Languages
== NULL
) {
128 LanguageString
= Languages
;
129 while (*LanguageString
!= 0) {
130 HiiLibGetNextLanguage (&LanguageString
, Lang
);
133 gBS
->FreePool (Languages
);