- Update language samples upon selection of a new language.
authorEric Kohl <eric.kohl@reactos.org>
Sat, 8 Sep 2007 15:43:19 +0000 (15:43 +0000)
committerEric Kohl <eric.kohl@reactos.org>
Sat, 8 Sep 2007 15:43:19 +0000 (15:43 +0000)
- Add a workaround for a special case: "Spanish (Spain)" uses two sorting methods but two sublang ids are used to distinguish them instead of two sort ids. Ensure they don't appear twice in the language list.
- Add "Spanish (Spain)" as a translatable string resource.

svn path=/trunk/; revision=28950

reactos/dll/cpl/intl/generalp.c
reactos/dll/cpl/intl/lang/de-DE.rc
reactos/dll/cpl/intl/lang/en-US.rc
reactos/dll/cpl/intl/lang/it-IT.rc
reactos/dll/cpl/intl/lang/ru-RU.rc
reactos/dll/cpl/intl/lang/uk-UA.rc
reactos/dll/cpl/intl/resource.h

index e9636a1..d20382e 100644 (file)
@@ -40,6 +40,7 @@
 
 HWND hList;
 HWND hLocaleList, hGeoList;
+BOOL bSpain = FALSE;
 
 static BOOL CALLBACK
 LocalesEnumProc(LPTSTR lpLocale)
@@ -47,12 +48,30 @@ LocalesEnumProc(LPTSTR lpLocale)
     LCID lcid;
     TCHAR lang[255];
     INT index;
+    BOOL bNoShow = FALSE;
 
-    //swscanf(lpLocale, L"%lx", &lcid); // maybe use wcstoul?
     lcid = _tcstoul(lpLocale, NULL, 16);
 
-    GetLocaleInfo(lcid, LOCALE_SLANGUAGE, lang, sizeof(lang));
+    if (lcid == MAKELCID(MAKELANGID(LANG_SPANISH, SUBLANG_SPANISH), SORT_DEFAULT) ||
+        lcid == MAKELCID(MAKELANGID(LANG_SPANISH, SUBLANG_SPANISH_MODERN), SORT_DEFAULT))
+    {
+        if (bSpain == FALSE)
+        {
+            LoadString(hApplet, IDS_SPAIN, lang, 255);
+            bSpain = TRUE;
+        }
+        else
+        {
+            bNoShow = TRUE;
+        }
+    }
+    else
+    {
+        GetLocaleInfo(lcid, LOCALE_SLANGUAGE, lang, sizeof(lang));
+    }
 
+    if (bNoShow == FALSE)
+    {
     index = SendMessage(hList,
                         CB_ADDSTRING,
                         0,
@@ -62,6 +81,7 @@ LocalesEnumProc(LPTSTR lpLocale)
                 CB_SETITEMDATA,
                 index,
                 (LPARAM)lcid);
+    }
 
     return TRUE;
 }
@@ -110,6 +130,7 @@ CreateLanguagesList(HWND hwnd)
     TCHAR langSel[255];
 
     hList = hwnd;
+    bSpain = FALSE;
     EnumSystemLocales(LocalesEnumProc, LCID_SUPPORTED);
 
     /* Select current locale */
@@ -322,6 +343,25 @@ GeneralPageProc(HWND hwndDlg,
                 case IDC_LANGUAGELIST:
                     if (HIWORD(wParam) == CBN_SELCHANGE)
                     {
+                        LCID NewLcid;
+                        INT iCurSel;
+
+                        iCurSel = SendMessage(hList,
+                                              CB_GETCURSEL,
+                                              0,
+                                              0);
+                        if (iCurSel == CB_ERR)
+                            break;
+
+                        NewLcid = SendMessage(hList,
+                                              CB_GETITEMDATA,
+                                              iCurSel,
+                                              0);
+                        if (NewLcid == (LCID)CB_ERR)
+                            break;
+
+                        UpdateLocaleSample(hwndDlg, NewLcid);
+
                         PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
                     }
                     break;
index a0f2809..5e6b1ab 100644 (file)
@@ -175,11 +175,12 @@ END
 
 STRINGTABLE
 BEGIN
-       IDS_CUSTOMIZE_TITLE "Regionale Einstellungen bearbeiten"
+    IDS_CUSTOMIZE_TITLE "Regionale Einstellungen bearbeiten"
+    IDS_SPAIN "Spanisch (Spanien)"
 END
 
 STRINGTABLE
 BEGIN
-  IDS_CPLNAME "Regionale Einstellungen"
-  IDS_CPLDESCRIPTION "Wählen Sie Anzeigeeinstellungen für Sprache, Zahlen, Währung, Uhrzeit und Datum aus."
+    IDS_CPLNAME "Regionale Einstellungen"
+    IDS_CPLDESCRIPTION "Wählen Sie Anzeigeeinstellungen für Sprache, Zahlen, Währung, Uhrzeit und Datum aus."
 END
index 61a3ab1..6abbe1f 100644 (file)
@@ -178,11 +178,12 @@ END
 
 STRINGTABLE
 BEGIN
-       IDS_CUSTOMIZE_TITLE "Customize Regional Options"
+    IDS_CUSTOMIZE_TITLE "Customize Regional Options"
+    IDS_SPAIN "Spanish (Spain)"
 END
 
 STRINGTABLE
 BEGIN
-  IDS_CPLNAME "Regional Options"
-  IDS_CPLDESCRIPTION "Select languages and format numbers, currencies, times and date."
+    IDS_CPLNAME "Regional Options"
+    IDS_CPLDESCRIPTION "Select languages and format numbers, currencies, times and date."
 END
index 9bc752d..fae80e4 100644 (file)
@@ -179,11 +179,12 @@ END
 
 STRINGTABLE
 BEGIN
-       IDS_CUSTOMIZE_TITLE "Opzioni internazionali e della lingua"
+    IDS_CUSTOMIZE_TITLE "Opzioni internazionali e della lingua"
+    IDS_SPAIN "Spanish (Spain)"
 END
 
 STRINGTABLE
 BEGIN
-  IDS_CPLNAME "Opzioni internazionali e della lingua"
-  IDS_CPLDESCRIPTION "Personalizza le impostazioni per la visualizzazione delle lingue, numeri, ora e data."
+    IDS_CPLNAME "Opzioni internazionali e della lingua"
+    IDS_CPLDESCRIPTION "Personalizza le impostazioni per la visualizzazione delle lingue, numeri, ora e data."
 END
index c8305c4..3fb1720 100644 (file)
@@ -178,11 +178,12 @@ END
 
 STRINGTABLE
 BEGIN
-       IDS_CUSTOMIZE_TITLE "Íàñòðîéêà ðåãèîíàëüíûõ ïàðàìåòðîâ"
+    IDS_CUSTOMIZE_TITLE "Íàñòðîéêà ðåãèîíàëüíûõ ïàðàìåòðîâ"
+    IDS_SPAIN "Spanish (Spain)"
 END
 
 STRINGTABLE
 BEGIN
-  IDS_CPLNAME "ßçûê è ðåãèîíàëüíûå ñòàíäàðòû"
-  IDS_CPLDESCRIPTION "Âûáîð ÿçûêà, ôîðìàòà ÷èñåë, äåíåæíûõ åäèíèö, âðåìåíè è äàòû."
+    IDS_CPLNAME "ßçûê è ðåãèîíàëüíûå ñòàíäàðòû"
+    IDS_CPLDESCRIPTION "Âûáîð ÿçûêà, ôîðìàòà ÷èñåë, äåíåæíûõ åäèíèö, âðåìåíè è äàòû."
 END
index caf30c4..1af2b89 100644 (file)
@@ -184,11 +184,12 @@ END
 
 STRINGTABLE
 BEGIN
-       IDS_CUSTOMIZE_TITLE "Íàñòðîéêà ðåã³îíàëüíèõ ïàðàìåòð³â"
+    IDS_CUSTOMIZE_TITLE "Íàñòðîéêà ðåã³îíàëüíèõ ïàðàìåòð³â"
+    IDS_SPAIN "Spanish (Spain)"
 END
 
 STRINGTABLE
 BEGIN
-  IDS_CPLNAME "Ðåã³îíàëüí³ ñòàíäàðòè"
-  IDS_CPLDESCRIPTION "Íàñòðîéêà ìîâíèõ ïàðàìåòð³â ³ ôîðìàòó ÷èñåë, ãðîøîâèõ îäèíèöü, ÷àñó é äàò."
+    IDS_CPLNAME "Ðåã³îíàëüí³ ñòàíäàðòè"
+    IDS_CPLDESCRIPTION "Íàñòðîéêà ìîâíèõ ïàðàìåòð³â ³ ôîðìàòó ÷èñåë, ãðîøîâèõ îäèíèöü, ÷àñó é äàò."
 END
index ed61348..ce6c1db 100644 (file)
@@ -74,7 +74,7 @@
 #define IDS_CPLNAME                1000
 #define IDS_CPLDESCRIPTION     1001
 #define IDS_CUSTOMIZE_TITLE 1002
-
+#define IDS_SPAIN 1003
 
 #endif /* __CPL_RESOURCE_H */