Detlef Riekenberg : mlang: Implement IMultiLanguage2_GetRfc1766Info.
Alexandre Julliard
julliard at winehq.org
Mon Jun 8 09:44:49 CDT 2009
Module: wine
Branch: master
Commit: ec8bb185c61a2e9d9b66f229fefd8e1fe96fcca2
URL: http://source.winehq.org/git/wine.git/?a=commit;h=ec8bb185c61a2e9d9b66f229fefd8e1fe96fcca2
Author: Detlef Riekenberg <wine.dev at web.de>
Date: Sat Jun 6 16:07:06 2009 +0200
mlang: Implement IMultiLanguage2_GetRfc1766Info.
---
dlls/mlang/mlang.c | 41 +++++++++++++++++++++++++++++++++++++++--
1 files changed, 39 insertions(+), 2 deletions(-)
diff --git a/dlls/mlang/mlang.c b/dlls/mlang/mlang.c
index 4d2f7be..6199da0 100644
--- a/dlls/mlang/mlang.c
+++ b/dlls/mlang/mlang.c
@@ -2871,8 +2871,45 @@ static HRESULT WINAPI fnIMultiLanguage2_GetRfc1766Info(
LANGID LangId,
PRFC1766INFO pRfc1766Info)
{
- FIXME("\n");
- return E_NOTIMPL;
+ static LANGID last_lang = -1;
+ LCTYPE type = LOCALE_SLANGUAGE;
+
+ TRACE("(%p, 0x%04x, 0x%04x, %p)\n", iface, Locale, LangId, pRfc1766Info);
+
+ if (!pRfc1766Info)
+ return E_INVALIDARG;
+
+ if ((PRIMARYLANGID(Locale) == LANG_ENGLISH) ||
+ (PRIMARYLANGID(Locale) == LANG_CHINESE) ||
+ (PRIMARYLANGID(Locale) == LANG_ARABIC)) {
+
+ if (!SUBLANGID(Locale))
+ type = LOCALE_SENGLANGUAGE; /* suppress country */
+ }
+ else
+ {
+ if (!SUBLANGID(Locale)) {
+ TRACE("SUBLANGID missing in 0x%04x\n", Locale);
+ return E_FAIL;
+ }
+ }
+
+ pRfc1766Info->lcid = Locale;
+ pRfc1766Info->wszRfc1766[0] = 0;
+ pRfc1766Info->wszLocaleName[0] = 0;
+
+ if ((PRIMARYLANGID(LangId) != LANG_ENGLISH) &&
+ (last_lang != LangId)) {
+ FIXME("Only english names supported (requested: 0x%04x)\n", LangId);
+ last_lang = LangId;
+ }
+
+ if ((!lcid_to_rfc1766W(Locale, pRfc1766Info->wszRfc1766, MAX_RFC1766_NAME)) &&
+ (GetLocaleInfoW(Locale, type, pRfc1766Info->wszLocaleName, MAX_LOCALE_NAME) > 0))
+ return S_OK;
+
+ /* Locale not supported */
+ return E_INVALIDARG;
}
static HRESULT WINAPI fnIMultiLanguage2_CreateConvertCharset(
More information about the wine-cvs
mailing list