public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
* Localization help need: national symbols are not displayed on BIOS screen after adding a new language
@ 2017-05-31  0:03 Nikolay Bodunov
  2017-05-31  0:35 ` Kinney, Michael D
  0 siblings, 1 reply; 2+ messages in thread
From: Nikolay Bodunov @ 2017-05-31  0:03 UTC (permalink / raw)
  To: edk2-devel

Hello

I added 3 new languages in MdeModulePks/Application/UiApp example from EDK2
and I got a problem with strings output. Using Nt32Pkg emulator with Win 7.

My problem is: when I add Russian language, I also add new string on that
language to existing token, but I can't see that string shown on screen.
Specifically, I can see English part of the string only.
I mean, if I write the first half of the string on English and the second
half on Russian, I can see only English half of the string on BIOS screen.
Here are my problem on the screenshot:
https://yadi.sk/i/mgh_-dBH3JbYtp
I didn't added corresponding Russian strings to any other tokens, so
displaying "!" instead for them is ok. If I switch back to English or
French, correct strings are shown again.

What I did:
1. Added new languages in MdePkg.dec:
  gEfiMdePkgTokenSpaceGuid.PcdUefiVariableDefaultPlatform
LangCodes|"en;fr;en-US;fr-FR;ru;de;zh-cn"|VOID*|0x0000001e

2. Opened UNI file in Notepad++ and added new languages, after English and
French:
#langdef   en-US "English"
#langdef   fr-FR "Francais"
#langdef   en    "Standard English"
#langdef   fr    "Standard Francais"
#langdef   ru    "Russian"
//#langdef   ru-RU "Russian"
#langdef   de    "German"
#langdef   zh-cn "Chinese (PRC)"

3. Switched (in Windows 7) on Russian codepage and added new string for
"ru" locale that token "STR_LANGUAGE_SELECT"
https://yadi.sk/i/quf2Gd003JbZez

I also located my string in .efi output file in HEX to investigate what
could be wrong, but I see exactly what I expected: codepage 04 and symbol
codes which conforms corresponding Russian symbols in UCS-2: 2004 4304 4104
4104 3A04 3804 3904 (and English symbols, too):
https://yadi.sk/i/QIEqcqKg3JbaiL

>From the other side, I got support for German locale in that way, having
typical German symbols in string attached ot that token.

Any suggestions, what I did wrong or what I should do else? I suppose there
should be some "magical" function call that adds more than one locale, but
I don't know what it is.
Maybe default font just does not support Russian locale? Which font should
I use instead and where I can read about it? Text search in EDK2 source
tree does't find string "ru-RU"

I cannot diagnose it in programming way: when I add non-existing locale
"xz" to MdePkg.dec, I have no error during compilation and I can see this
pseudo-locale in PlatformLangCodes variable then.

With best regards,
Nikolay Bodunov


^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2017-05-31  0:34 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-05-31  0:03 Localization help need: national symbols are not displayed on BIOS screen after adding a new language Nikolay Bodunov
2017-05-31  0:35 ` Kinney, Michael D

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox