MakeLangId rewritten from scratch to support EnumSystemLocales and our internal list
git-svn-id: https://svn.code.sf.net/p/nsis/code/NSIS/trunk@6815 212acab6-be3b-0410-9dea-997c60f758d6
This commit is contained in:
parent
70e21917ae
commit
deb811e453
4 changed files with 422 additions and 357 deletions
|
@ -1,300 +1,367 @@
|
|||
// Unicode support by Jim Park -- 08/23/2007
|
||||
/*********
|
||||
MakeLangID
|
||||
**********
|
||||
|
||||
History
|
||||
=======
|
||||
20161207 - anders_k
|
||||
* Rewritten from scratch to support languages from EnumSystemLocales
|
||||
+ New icon ("Swerica" by anders_k, ZLib & CC BY-SA 4.0 dual license)
|
||||
|
||||
20130906 - anders_k
|
||||
+ 64-bit support
|
||||
|
||||
20100326 - wizou & anders_k
|
||||
+ Unicode support
|
||||
|
||||
20040818 - kichik
|
||||
* Initial release
|
||||
|
||||
Reference
|
||||
=========
|
||||
https://msdn.microsoft.com/en-us/library/windows/desktop/dd318693(v=vs.85).aspx#Language Identifier Constants and Strings
|
||||
https://wayback.archive.org/web/20021221200122/http://msdn.microsoft.com/library/en-us/intl/nls_8rse.asp#LOCALE_* (95/98/ME/NT4/2000/XP)
|
||||
|
||||
*/
|
||||
|
||||
#include "../../Source/Platform.h"
|
||||
#include <commctrl.h>
|
||||
#include "resource.h"
|
||||
|
||||
#ifndef LANG_SCOTTISH_GAELIC
|
||||
#define LANG_SCOTTISH_GAELIC 0x91
|
||||
#define SUBLANG_SCOTTISH_GAELIC 0x01
|
||||
#ifndef LOCALE_SNAME
|
||||
#define LOCALE_SNAME 0x005C
|
||||
#endif
|
||||
#ifndef LANG_CHEROKEE
|
||||
#define LANG_CHEROKEE 0x5C
|
||||
#define SUBLANG_CHEROKEE_CHEROKEE 0x01
|
||||
#ifndef LOCALE_SENGLISHDISPLAYNAME
|
||||
#define LOCALE_SENGLISHDISPLAYNAME 0x0072
|
||||
#endif
|
||||
#ifndef LANG_CORSICAN
|
||||
#define LANG_CORSICAN 0x83
|
||||
#define SUBLANG_CORSICAN_FRANCE 0x01
|
||||
#ifndef LOCALE_SNATIVEDISPLAYNAME
|
||||
#define LOCALE_SNATIVEDISPLAYNAME 0x0073
|
||||
#endif
|
||||
#ifndef LANG_FILIPINO
|
||||
#define LANG_FILIPINO 0x64
|
||||
#define SUBLANG_FILIPINO_PHILIPPINES 0x01
|
||||
#endif
|
||||
#ifndef LANG_HAWAIIAN
|
||||
#define LANG_HAWAIIAN 0x75
|
||||
#define SUBLANG_HAWAIIAN_US 0x01
|
||||
#endif
|
||||
#ifndef LANG_KHMER
|
||||
#define LANG_KHMER 0x53
|
||||
#define SUBLANG_KHMER_CAMBODIA 0x01
|
||||
#endif
|
||||
#ifndef LANG_LAO
|
||||
#define LANG_LAO 0x54
|
||||
#define SUBLANG_LAO_LAO 0x01
|
||||
#endif
|
||||
#ifndef LANG_MALTESE
|
||||
#define LANG_MALTESE 0x3A
|
||||
#define SUBLANG_MALTESE_MALTA 0x01
|
||||
#endif
|
||||
#ifndef LANG_TIBETAN
|
||||
#define LANG_TIBETAN 0x51
|
||||
#define SUBLANG_TIBETAN_PRC 0x01
|
||||
#endif
|
||||
#ifndef LANG_WELSH
|
||||
#define LANG_WELSH 0x52
|
||||
#define SUBLANG_WELSH_UNITED_KINGDOM 0x01
|
||||
#ifndef CB_SETCUEBANNER
|
||||
#define CB_SETCUEBANNER (0x1700+3)
|
||||
#endif
|
||||
|
||||
|
||||
#define CBL(x) {x,_T(#x)}
|
||||
|
||||
struct line {
|
||||
unsigned short id;
|
||||
const TCHAR *name;
|
||||
};
|
||||
|
||||
line primary[] = {
|
||||
CBL(LANG_NEUTRAL),
|
||||
CBL(LANG_INVARIANT),
|
||||
CBL(LANG_AFRIKAANS),
|
||||
CBL(LANG_ALBANIAN),
|
||||
CBL(LANG_ARABIC),
|
||||
CBL(LANG_ARMENIAN),
|
||||
CBL(LANG_ASSAMESE),
|
||||
CBL(LANG_AZERI),
|
||||
CBL(LANG_BASQUE),
|
||||
CBL(LANG_BELARUSIAN),
|
||||
CBL(LANG_BENGALI),
|
||||
CBL(LANG_BULGARIAN),
|
||||
CBL(LANG_CATALAN),
|
||||
CBL(LANG_CHEROKEE),
|
||||
CBL(LANG_CHINESE),
|
||||
CBL(LANG_CORSICAN),
|
||||
CBL(LANG_CROATIAN),
|
||||
CBL(LANG_CZECH),
|
||||
CBL(LANG_DANISH),
|
||||
CBL(LANG_DIVEHI),
|
||||
CBL(LANG_DUTCH),
|
||||
CBL(LANG_ENGLISH),
|
||||
CBL(LANG_ESTONIAN),
|
||||
CBL(LANG_FAEROESE),
|
||||
CBL(LANG_FARSI), // AKA LANG_PERSIAN
|
||||
CBL(LANG_FILIPINO),
|
||||
CBL(LANG_FINNISH),
|
||||
CBL(LANG_FRENCH),
|
||||
CBL(LANG_GALICIAN),
|
||||
CBL(LANG_GEORGIAN),
|
||||
CBL(LANG_GERMAN),
|
||||
CBL(LANG_GREEK),
|
||||
CBL(LANG_GUJARATI),
|
||||
CBL(LANG_HAWAIIAN),
|
||||
CBL(LANG_HEBREW),
|
||||
CBL(LANG_HINDI),
|
||||
CBL(LANG_HUNGARIAN),
|
||||
CBL(LANG_ICELANDIC),
|
||||
CBL(LANG_INDONESIAN),
|
||||
CBL(LANG_ITALIAN),
|
||||
CBL(LANG_JAPANESE),
|
||||
CBL(LANG_KANNADA),
|
||||
CBL(LANG_KASHMIRI),
|
||||
CBL(LANG_KAZAK),
|
||||
CBL(LANG_KHMER),
|
||||
CBL(LANG_KONKANI),
|
||||
CBL(LANG_KOREAN),
|
||||
CBL(LANG_KYRGYZ),
|
||||
CBL(LANG_LAO),
|
||||
CBL(LANG_LATVIAN),
|
||||
CBL(LANG_LITHUANIAN),
|
||||
CBL(LANG_MACEDONIAN),
|
||||
CBL(LANG_MALAY),
|
||||
CBL(LANG_MALAYALAM),
|
||||
CBL(LANG_MALTESE),
|
||||
CBL(LANG_MANIPURI),
|
||||
CBL(LANG_MARATHI),
|
||||
CBL(LANG_MONGOLIAN),
|
||||
CBL(LANG_NEPALI),
|
||||
CBL(LANG_NORWEGIAN),
|
||||
CBL(LANG_ORIYA),
|
||||
CBL(LANG_POLISH),
|
||||
CBL(LANG_PORTUGUESE),
|
||||
CBL(LANG_PUNJABI),
|
||||
CBL(LANG_ROMANIAN),
|
||||
CBL(LANG_RUSSIAN),
|
||||
CBL(LANG_SANSKRIT),
|
||||
CBL(LANG_SCOTTISH_GAELIC),
|
||||
CBL(LANG_SERBIAN),
|
||||
CBL(LANG_SINDHI),
|
||||
CBL(LANG_SLOVAK),
|
||||
CBL(LANG_SLOVENIAN),
|
||||
CBL(LANG_SPANISH),
|
||||
CBL(LANG_SWAHILI),
|
||||
CBL(LANG_SWEDISH),
|
||||
CBL(LANG_SYRIAC),
|
||||
CBL(LANG_TAMIL),
|
||||
CBL(LANG_TATAR),
|
||||
CBL(LANG_TELUGU),
|
||||
CBL(LANG_THAI),
|
||||
CBL(LANG_TIBETAN),
|
||||
CBL(LANG_TURKISH),
|
||||
CBL(LANG_UKRAINIAN),
|
||||
CBL(LANG_URDU),
|
||||
CBL(LANG_UZBEK),
|
||||
CBL(LANG_VIETNAMESE),
|
||||
CBL(LANG_WELSH)
|
||||
};
|
||||
|
||||
line sub[] = {
|
||||
CBL(SUBLANG_NEUTRAL),
|
||||
CBL(SUBLANG_DEFAULT),
|
||||
CBL(SUBLANG_SYS_DEFAULT),
|
||||
CBL(SUBLANG_ARABIC_SAUDI_ARABIA),
|
||||
CBL(SUBLANG_ARABIC_IRAQ),
|
||||
CBL(SUBLANG_ARABIC_EGYPT),
|
||||
CBL(SUBLANG_ARABIC_LIBYA),
|
||||
CBL(SUBLANG_ARABIC_ALGERIA),
|
||||
CBL(SUBLANG_ARABIC_MOROCCO),
|
||||
CBL(SUBLANG_ARABIC_TUNISIA),
|
||||
CBL(SUBLANG_ARABIC_OMAN),
|
||||
CBL(SUBLANG_ARABIC_YEMEN),
|
||||
CBL(SUBLANG_ARABIC_SYRIA),
|
||||
CBL(SUBLANG_ARABIC_JORDAN),
|
||||
CBL(SUBLANG_ARABIC_LEBANON),
|
||||
CBL(SUBLANG_ARABIC_KUWAIT),
|
||||
CBL(SUBLANG_ARABIC_UAE),
|
||||
CBL(SUBLANG_ARABIC_BAHRAIN),
|
||||
CBL(SUBLANG_ARABIC_QATAR),
|
||||
CBL(SUBLANG_AZERI_LATIN),
|
||||
CBL(SUBLANG_AZERI_CYRILLIC),
|
||||
CBL(SUBLANG_CHINESE_TRADITIONAL),
|
||||
CBL(SUBLANG_CHINESE_SIMPLIFIED),
|
||||
CBL(SUBLANG_CHINESE_HONGKONG),
|
||||
CBL(SUBLANG_CHINESE_SINGAPORE),
|
||||
CBL(SUBLANG_CHINESE_MACAU),
|
||||
CBL(SUBLANG_DUTCH),
|
||||
CBL(SUBLANG_DUTCH_BELGIAN),
|
||||
CBL(SUBLANG_ENGLISH_US),
|
||||
CBL(SUBLANG_ENGLISH_UK),
|
||||
CBL(SUBLANG_ENGLISH_AUS),
|
||||
CBL(SUBLANG_ENGLISH_CAN),
|
||||
CBL(SUBLANG_ENGLISH_NZ),
|
||||
CBL(SUBLANG_ENGLISH_EIRE),
|
||||
CBL(SUBLANG_ENGLISH_SOUTH_AFRICA),
|
||||
CBL(SUBLANG_ENGLISH_JAMAICA),
|
||||
CBL(SUBLANG_ENGLISH_CARIBBEAN),
|
||||
CBL(SUBLANG_ENGLISH_BELIZE),
|
||||
CBL(SUBLANG_ENGLISH_TRINIDAD),
|
||||
CBL(SUBLANG_ENGLISH_ZIMBABWE),
|
||||
CBL(SUBLANG_ENGLISH_PHILIPPINES),
|
||||
CBL(SUBLANG_FRENCH),
|
||||
CBL(SUBLANG_FRENCH_BELGIAN),
|
||||
CBL(SUBLANG_FRENCH_CANADIAN),
|
||||
CBL(SUBLANG_FRENCH_SWISS),
|
||||
CBL(SUBLANG_FRENCH_LUXEMBOURG),
|
||||
CBL(SUBLANG_FRENCH_MONACO),
|
||||
CBL(SUBLANG_GERMAN),
|
||||
CBL(SUBLANG_GERMAN_SWISS),
|
||||
CBL(SUBLANG_GERMAN_AUSTRIAN),
|
||||
CBL(SUBLANG_GERMAN_LUXEMBOURG),
|
||||
CBL(SUBLANG_GERMAN_LIECHTENSTEIN),
|
||||
CBL(SUBLANG_ITALIAN),
|
||||
CBL(SUBLANG_ITALIAN_SWISS),
|
||||
CBL(SUBLANG_KASHMIRI_INDIA),
|
||||
CBL(SUBLANG_KOREAN),
|
||||
CBL(SUBLANG_LITHUANIAN),
|
||||
CBL(SUBLANG_MALAY_MALAYSIA),
|
||||
CBL(SUBLANG_MALAY_BRUNEI_DARUSSALAM),
|
||||
CBL(SUBLANG_NEPALI_INDIA),
|
||||
CBL(SUBLANG_NORWEGIAN_BOKMAL),
|
||||
CBL(SUBLANG_NORWEGIAN_NYNORSK),
|
||||
CBL(SUBLANG_PORTUGUESE),
|
||||
CBL(SUBLANG_PORTUGUESE_BRAZILIAN),
|
||||
CBL(SUBLANG_SCOTTISH_GAELIC),
|
||||
CBL(SUBLANG_SERBIAN_LATIN),
|
||||
CBL(SUBLANG_SERBIAN_CYRILLIC),
|
||||
CBL(SUBLANG_SPANISH),
|
||||
CBL(SUBLANG_SPANISH_MEXICAN),
|
||||
CBL(SUBLANG_SPANISH_MODERN),
|
||||
CBL(SUBLANG_SPANISH_GUATEMALA),
|
||||
CBL(SUBLANG_SPANISH_COSTA_RICA),
|
||||
CBL(SUBLANG_SPANISH_PANAMA),
|
||||
CBL(SUBLANG_SPANISH_DOMINICAN_REPUBLIC),
|
||||
CBL(SUBLANG_SPANISH_VENEZUELA),
|
||||
CBL(SUBLANG_SPANISH_COLOMBIA),
|
||||
CBL(SUBLANG_SPANISH_PERU),
|
||||
CBL(SUBLANG_SPANISH_ARGENTINA),
|
||||
CBL(SUBLANG_SPANISH_ECUADOR),
|
||||
CBL(SUBLANG_SPANISH_CHILE),
|
||||
CBL(SUBLANG_SPANISH_URUGUAY),
|
||||
CBL(SUBLANG_SPANISH_PARAGUAY),
|
||||
CBL(SUBLANG_SPANISH_BOLIVIA),
|
||||
CBL(SUBLANG_SPANISH_EL_SALVADOR),
|
||||
CBL(SUBLANG_SPANISH_HONDURAS),
|
||||
CBL(SUBLANG_SPANISH_NICARAGUA),
|
||||
CBL(SUBLANG_SPANISH_PUERTO_RICO),
|
||||
CBL(SUBLANG_SWEDISH),
|
||||
CBL(SUBLANG_SWEDISH_FINLAND),
|
||||
CBL(SUBLANG_URDU_PAKISTAN),
|
||||
CBL(SUBLANG_URDU_INDIA),
|
||||
CBL(SUBLANG_UZBEK_LATIN),
|
||||
CBL(SUBLANG_UZBEK_CYRILLIC)
|
||||
};
|
||||
|
||||
static void SelectDefaultSublanguage(HWND hwndDlg)
|
||||
static INT_PTR StrToIntptr(LPCTSTR s, bool ForceHex = false)
|
||||
{
|
||||
SendDlgItemMessage(hwndDlg, IDC_SUB, CB_SELECTSTRING, -1, (LPARAM) _T("SUBLANG_DEFAULT"));
|
||||
UINT_PTR val = 0;
|
||||
int sign = 1, base = 10, numtop = '9';
|
||||
if (*s == TEXT('-')) s++, sign = -1;
|
||||
if (*s == TEXT('0'))
|
||||
{
|
||||
s++;
|
||||
if ((s[0] & ~0x20) == TEXT('X')) ++s, base = 16;
|
||||
}
|
||||
if (ForceHex) base = 16;
|
||||
for (;;)
|
||||
{
|
||||
int c = *s++;
|
||||
if (c >= _T('0') && c <= numtop) c -= TEXT('0');
|
||||
else if (base == 16 && (c & ~0x20) >= TEXT('A') && (c & ~0x20) <= TEXT('F')) c = (c & 7) + 9;
|
||||
else break;
|
||||
val *= base, val += c;
|
||||
}
|
||||
return ((INT_PTR)val) * sign;
|
||||
}
|
||||
|
||||
INT_PTR CALLBACK DialogProc(HWND hwndDlg,UINT uMsg,WPARAM wParam,LPARAM lParam) {
|
||||
size_t i;
|
||||
switch (uMsg) {
|
||||
case WM_INITDIALOG:
|
||||
SendMessage(hwndDlg, WM_SETICON, 0, 0);
|
||||
for (i = 0; i < sizeof(primary)/sizeof(line); i++)
|
||||
SendDlgItemMessage(hwndDlg, IDC_PRIMARY, CB_ADDSTRING, 0, (LPARAM)primary[i].name);
|
||||
for (i = 0; i < sizeof(sub)/sizeof(line); i++)
|
||||
SendDlgItemMessage(hwndDlg, IDC_SUB, CB_ADDSTRING, 0, (LPARAM)sub[i].name);
|
||||
SelectDefaultSublanguage(hwndDlg);
|
||||
break;
|
||||
case WM_COMMAND:
|
||||
if (LOWORD(wParam) == IDCANCEL) {
|
||||
EndDialog(hwndDlg, 0);
|
||||
PostQuitMessage(0);
|
||||
}
|
||||
else if (HIWORD(wParam) == CBN_SELCHANGE) {
|
||||
// When the language changes you probably need to update the sublanguage as well
|
||||
// so we set it to something safe.
|
||||
if (LOWORD(wParam) == IDC_PRIMARY)
|
||||
SelectDefaultSublanguage(hwndDlg);
|
||||
typedef struct { WORD id; LPCSTR name; } INTLNG; // Storing the names as ASCII saves 4 KiB
|
||||
|
||||
if (SendDlgItemMessage(hwndDlg, IDC_PRIMARY, CB_GETCURSEL, 0, 0) != CB_ERR && SendDlgItemMessage(hwndDlg, IDC_SUB, CB_GETCURSEL, 0, 0) != CB_ERR) {
|
||||
TCHAR lidbuf[50+11+!0], cpdispbuf[50+11+!0], cpbuf[11+!0];
|
||||
WORD langid = MAKELANGID(primary[SendDlgItemMessage(hwndDlg, IDC_PRIMARY, CB_GETCURSEL, 0, 0)].id, sub[SendDlgItemMessage(hwndDlg, IDC_SUB, CB_GETCURSEL, 0, 0)].id);
|
||||
wsprintf(lidbuf, _T("Language ID: %d"), langid);
|
||||
SetDlgItemText(hwndDlg, IDC_RESULT, lidbuf);
|
||||
if (!GetLocaleInfo(MAKELCID(langid, SORT_DEFAULT), LOCALE_IDEFAULTANSICODEPAGE, cpbuf, 11+!0))
|
||||
wsprintf(cpbuf, _T("N/A"));
|
||||
else if (!lstrcmp(cpbuf, _T("0")))
|
||||
wsprintf(cpbuf, _T("1200 (Unicode-only)"));
|
||||
wsprintf(cpdispbuf, _T("Codepage: %s"), cpbuf);
|
||||
SetDlgItemText(hwndDlg, IDC_CODEPAGE, cpdispbuf);
|
||||
}
|
||||
#define IL(p, s, pn, sn) { MAKELANGID(p, s), #pn ":" #sn }
|
||||
static const INTLNG g_IntLoc[] = {
|
||||
//(0x00, 0x00, NEUTRAL, NEUTRAL),
|
||||
//(0x00, 0x01, NEUTRAL, DEFAULT),
|
||||
IL(0x7f, 0x00, INVARIANT, NEUTRAL), // Invariant locale
|
||||
IL(0x36, 0x01, AFRIKAANS, AFRIKAANS_SOUTH_AFRICA),
|
||||
IL(0x1c, 0x01, ALBANIAN, ALBANIAN_ALBANIA),
|
||||
IL(0x01, 0x01, ARABIC, ARABIC_SAUDI_ARABIA),
|
||||
IL(0x01, 0x02, ARABIC, ARABIC_IRAQ),
|
||||
IL(0x01, 0x03, ARABIC, ARABIC_EGYPT),
|
||||
IL(0x01, 0x04, ARABIC, ARABIC_LIBYA),
|
||||
IL(0x01, 0x05, ARABIC, ARABIC_ALGERIA),
|
||||
IL(0x01, 0x06, ARABIC, ARABIC_MOROCCO),
|
||||
IL(0x01, 0x07, ARABIC, ARABIC_TUNISIA),
|
||||
IL(0x01, 0x08, ARABIC, ARABIC_OMAN),
|
||||
IL(0x01, 0x09, ARABIC, ARABIC_YEMEN),
|
||||
IL(0x01, 0x0a, ARABIC, ARABIC_SYRIA),
|
||||
IL(0x01, 0x0b, ARABIC, ARABIC_JORDAN),
|
||||
IL(0x01, 0x0c, ARABIC, ARABIC_LEBANON),
|
||||
IL(0x01, 0x0d, ARABIC, ARABIC_KUWAIT),
|
||||
IL(0x01, 0x0e, ARABIC, ARABIC_UAE),
|
||||
IL(0x01, 0x0f, ARABIC, ARABIC_BAHRAIN),
|
||||
IL(0x01, 0x10, ARABIC, ARABIC_QATAR),
|
||||
IL(0x2b, 0x01, ARMENIAN, ARMENIAN_ARMENIA),
|
||||
IL(0x4d, 0x01, ASSAMESE, ASSAMESE_INDIA),
|
||||
IL(0x2c, 0x01, AZERI, AZERI_LATIN),
|
||||
IL(0x2c, 0x02, AZERI, AZERI_CYRILLIC),
|
||||
IL(0x2d, 0x01, BASQUE, BASQUE_BASQUE),
|
||||
IL(0x23, 0x01, BELARUSIAN, BELARUSIAN_BELARUS),
|
||||
IL(0x45, 0x01, BENGALI, BENGALI_INDIA),
|
||||
IL(0x45, 0x02, BENGALI, BENGALI_BANGLADESH),
|
||||
IL(0x02, 0x01, BULGARIAN, BULGARIAN_BULGARIA),
|
||||
IL(0x03, 0x01, CATALAN, CATALAN_CATALAN),
|
||||
IL(0x5c, 0x01, CHEROKEE, CHEROKEE_CHEROKEE),
|
||||
IL(0x04, 0x01, CHINESE, CHINESE_TRADITIONAL),
|
||||
IL(0x04, 0x02, CHINESE, CHINESE_SIMPLIFIED),
|
||||
IL(0x04, 0x03, CHINESE, CHINESE_HONGKONG),
|
||||
IL(0x04, 0x04, CHINESE, CHINESE_SINGAPORE),
|
||||
IL(0x04, 0x05, CHINESE, CHINESE_MACAU),
|
||||
IL(0x83, 0x01, CORSICAN, CORSICAN_FRANCE),
|
||||
IL(0x1a, 0x01, CROATIAN, CROATIAN_CROATIA),
|
||||
IL(0x1a, 0x04, CROATIAN, CROATIAN_BOSNIA_HERZEGOVINA_LATIN),
|
||||
IL(0x05, 0x01, CZECH, CZECH_CZECH_REPUBLIC),
|
||||
IL(0x06, 0x01, DANISH, DANISH_DENMARK),
|
||||
IL(0x65, 0x01, DIVEHI, DIVEHI_MALDIVES),
|
||||
IL(0x13, 0x01, DUTCH, DUTCH),
|
||||
IL(0x13, 0x02, DUTCH, DUTCH_BELGIAN),
|
||||
IL(0x09, 0x01, ENGLISH, ENGLISH_US),
|
||||
IL(0x09, 0x02, ENGLISH, ENGLISH_UK),
|
||||
IL(0x09, 0x03, ENGLISH, ENGLISH_AUS),
|
||||
IL(0x09, 0x04, ENGLISH, ENGLISH_CAN),
|
||||
IL(0x09, 0x05, ENGLISH, ENGLISH_NZ),
|
||||
IL(0x09, 0x06, ENGLISH, ENGLISH_EIRE),
|
||||
IL(0x09, 0x07, ENGLISH, ENGLISH_SOUTH_AFRICA),
|
||||
IL(0x09, 0x08, ENGLISH, ENGLISH_JAMAICA),
|
||||
IL(0x09, 0x09, ENGLISH, ENGLISH_CARIBBEAN),
|
||||
IL(0x09, 0x0a, ENGLISH, ENGLISH_BELIZE),
|
||||
IL(0x09, 0x0b, ENGLISH, ENGLISH_TRINIDAD),
|
||||
IL(0x09, 0x0c, ENGLISH, ENGLISH_ZIMBABWE),
|
||||
IL(0x09, 0x0d, ENGLISH, ENGLISH_PHILIPPINES),
|
||||
IL(0x09, 0x10, ENGLISH, ENGLISH_INDIA),
|
||||
IL(0x09, 0x11, ENGLISH, ENGLISH_MALAYSIA),
|
||||
IL(0x09, 0x12, ENGLISH, ENGLISH_SINGAPORE),
|
||||
IL(0x25, 0x01, ESTONIAN, ESTONIAN_ESTONIA),
|
||||
IL(0x38, 0x01, FAEROESE, FAEROESE_FAROE_ISLANDS),
|
||||
IL(0x29, 0x01, FARSI, PERSIAN_IRAN), // LANG_FARSI AKA LANG_PERSIAN
|
||||
IL(0x64, 0x01, FILIPINO, FILIPINO_PHILIPPINES),
|
||||
IL(0x0b, 0x01, FINNISH, FINNISH_FINLAND),
|
||||
IL(0x0c, 0x01, FRENCH, FRENCH),
|
||||
IL(0x0c, 0x02, FRENCH, FRENCH_BELGIAN),
|
||||
IL(0x0c, 0x03, FRENCH, FRENCH_CANADIAN),
|
||||
IL(0x0c, 0x04, FRENCH, FRENCH_SWISS),
|
||||
IL(0x0c, 0x05, FRENCH, FRENCH_LUXEMBOURG),
|
||||
IL(0x0c, 0x06, FRENCH, FRENCH_MONACO),
|
||||
IL(0x56, 0x01, GALICIAN, GALICIAN_GALICIAN),
|
||||
IL(0x37, 0x01, GEORGIAN, GEORGIAN_GEORGIA),
|
||||
IL(0x07, 0x01, GERMAN, GERMAN),
|
||||
IL(0x07, 0x02, GERMAN, GERMAN_SWISS),
|
||||
IL(0x07, 0x03, GERMAN, GERMAN_AUSTRIAN),
|
||||
IL(0x07, 0x04, GERMAN, GERMAN_LUXEMBOURG),
|
||||
IL(0x07, 0x05, GERMAN, GERMAN_LIECHTENSTEIN),
|
||||
IL(0x08, 0x01, GREEK, GREEK_GREECE),
|
||||
IL(0x47, 0x01, GUJARATI, GUJARATI_INDIA),
|
||||
IL(0x75, 0x01, HAWAIIAN, HAWAIIAN_US),
|
||||
IL(0x0d, 0x01, HEBREW, HEBREW_ISRAEL),
|
||||
IL(0x39, 0x01, HINDI, HINDI_INDIA),
|
||||
IL(0x0e, 0x01, HUNGARIAN, HUNGARIAN_HUNGARY),
|
||||
IL(0x0f, 0x01, ICELANDIC, ICELANDIC_ICELAND),
|
||||
IL(0x21, 0x01, INDONESIAN, INDONESIAN_INDONESIA),
|
||||
IL(0x10, 0x01, ITALIAN, ITALIAN),
|
||||
IL(0x10, 0x02, ITALIAN, ITALIAN_SWISS),
|
||||
IL(0x11, 0x01, JAPANESE, JAPANESE_JAPAN),
|
||||
IL(0x60, 0x02, KASHMIRI, KASHMIRI_SASIA),
|
||||
IL(0x3f, 0x01, KAZAK, KAZAK_KAZAKHSTAN),
|
||||
IL(0x53, 0x01, KHMER, KHMER_CAMBODIA),
|
||||
IL(0x12, 0x01, KOREAN, KOREAN),
|
||||
IL(0x40, 0x01, KYRGYZ, KYRGYZ_KYRGYZSTAN),
|
||||
IL(0x54, 0x01, LAO, LAO_LAO),
|
||||
IL(0x26, 0x01, LATVIAN, LATVIAN_LATVIA),
|
||||
IL(0x27, 0x01, LITHUANIAN, LITHUANIAN),
|
||||
IL(0x2f, 0x01, MACEDONIAN, MACEDONIAN_MACEDONIA),
|
||||
IL(0x3e, 0x01, MALAY, MALAY_MALAYSIA),
|
||||
IL(0x3e, 0x02, MALAY, MALAY_BRUNEI_DARUSSALAM),
|
||||
IL(0x4c, 0x01, MALAYALAM, MALAYALAM_INDIA),
|
||||
IL(0x3a, 0x01, MALTESE, MALTESE_MALTA),
|
||||
//(0x58, 0x01, MANIPURI, ?),
|
||||
IL(0x4e, 0x01, MARATHI, MARATHI_INDIA),
|
||||
IL(0x50, 0x01, MONGOLIAN, MONGOLIAN_CYRILLIC_MONGOLIA),
|
||||
IL(0x50, 0x02, MONGOLIAN, MONGOLIAN_PRC),
|
||||
IL(0x61, 0x01, NEPALI, NEPALI_NEPAL),
|
||||
IL(0x61, 0x02, NEPALI, NEPALI_INDIA),
|
||||
IL(0x14, 0x01, NORWEGIAN, NORWEGIAN_BOKMAL),
|
||||
IL(0x14, 0x02, NORWEGIAN, NORWEGIAN_NYNORSK),
|
||||
IL(0x48, 0x01, ORIYA, ORIYA_INDIA),
|
||||
IL(0x15, 0x01, POLISH, POLISH_POLAND),
|
||||
IL(0x16, 0x01, PORTUGUESE, PORTUGUESE_BRAZILIAN),
|
||||
IL(0x16, 0x02, PORTUGUESE, PORTUGUESE),
|
||||
IL(0x18, 0x01, ROMANIAN, ROMANIAN_ROMANIA),
|
||||
IL(0x19, 0x01, RUSSIAN, RUSSIAN_RUSSIA),
|
||||
IL(0x4f, 0x01, SANSKRIT, SANSKRIT_INDIA),
|
||||
IL(0x91, 0x01, SCOTTISH_GAELIC, SCOTTISH_GAELIC),
|
||||
IL(0x1a, 0x01, SERBIAN, SERBIAN_CROATIA),
|
||||
IL(0x1a, 0x02, SERBIAN, SERBIAN_LATIN), // Serbia and Montenegro (former)
|
||||
IL(0x1a, 0x03, SERBIAN, SERBIAN_CYRILLIC), // Serbia and Montenegro (former)
|
||||
IL(0x1a, 0x06, SERBIAN, SERBIAN_BOSNIA_HERZEGOVINA_LATIN),
|
||||
IL(0x1a, 0x07, SERBIAN, SERBIAN_BOSNIA_HERZEGOVINA_CYRILLIC),
|
||||
IL(0x1b, 0x01, SLOVAK, SLOVAK_SLOVAKIA),
|
||||
IL(0x24, 0x01, SLOVENIAN, SLOVENIAN_SLOVENIA),
|
||||
IL(0x0a, 0x01, SPANISH, SPANISH),
|
||||
IL(0x0a, 0x02, SPANISH, SPANISH_MEXICAN),
|
||||
IL(0x0a, 0x03, SPANISH, SPANISH_MODERN),
|
||||
IL(0x0a, 0x04, SPANISH, SPANISH_GUATEMALA),
|
||||
IL(0x0a, 0x05, SPANISH, SPANISH_COSTA_RICA),
|
||||
IL(0x0a, 0x06, SPANISH, SPANISH_PANAMA),
|
||||
IL(0x0a, 0x07, SPANISH, SPANISH_DOMINICAN_REPUBLIC),
|
||||
IL(0x0a, 0x08, SPANISH, SPANISH_VENEZUELA),
|
||||
IL(0x0a, 0x09, SPANISH, SPANISH_COLOMBIA),
|
||||
IL(0x0a, 0x0a, SPANISH, SPANISH_PERU),
|
||||
IL(0x0a, 0x0b, SPANISH, SPANISH_ARGENTINA),
|
||||
IL(0x0a, 0x0c, SPANISH, SPANISH_ECUADOR),
|
||||
IL(0x0a, 0x0d, SPANISH, SPANISH_CHILE),
|
||||
IL(0x0a, 0x0e, SPANISH, SPANISH_URUGUAY),
|
||||
IL(0x0a, 0x0f, SPANISH, SPANISH_PARAGUAY),
|
||||
IL(0x0a, 0x10, SPANISH, SPANISH_BOLIVIA),
|
||||
IL(0x0a, 0x11, SPANISH, SPANISH_EL_SALVADOR),
|
||||
IL(0x0a, 0x12, SPANISH, SPANISH_HONDURAS),
|
||||
IL(0x0a, 0x13, SPANISH, SPANISH_NICARAGUA),
|
||||
IL(0x0a, 0x14, SPANISH, SPANISH_PUERTO_RICO),
|
||||
IL(0x0a, 0x15, SPANISH, SPANISH_US),
|
||||
IL(0x41, 0x01, SWAHILI, SWAHILI),
|
||||
IL(0x1d, 0x01, SWEDISH, SWEDISH),
|
||||
IL(0x1d, 0x02, SWEDISH, SWEDISH_FINLAND),
|
||||
IL(0x5a, 0x01, SYRIAC, SYRIAC_SYRIA),
|
||||
IL(0x1e, 0x01, THAI, THAI_THAILAND),
|
||||
IL(0x51, 0x01, TIBETAN, TIBETAN_PRC),
|
||||
IL(0x1f, 0x01, TURKISH, TURKISH_TURKEY),
|
||||
IL(0x22, 0x01, UKRAINIAN, UKRAINIAN_UKRAINE),
|
||||
IL(0x43, 0x01, UZBEK, UZBEK_LATIN),
|
||||
IL(0x43, 0x02, UZBEK, UZBEK_CYRILLIC),
|
||||
IL(0x2a, 0x01, VIETNAMESE, VIETNAMESE_VIETNAM),
|
||||
IL(0x52, 0x01, WELSH, WELSH_UNITED_KINGDOM)
|
||||
};
|
||||
|
||||
HWND g_hList;
|
||||
|
||||
static UINT AddLocale(HWND hCtl, LPCTSTR Name, UINT LangId)
|
||||
{
|
||||
UINT idx = SendMessage(hCtl, CB_ADDSTRING, 0, (LPARAM) Name);
|
||||
if (idx != CB_ERR) SendMessage(hCtl, CB_SETITEMDATA, idx, LangId);
|
||||
return idx;
|
||||
}
|
||||
|
||||
static BOOL CALLBACK EnumSysLocalesProc(LPTSTR lpLocaleString)
|
||||
{
|
||||
const UINT cchbuf1 = 80+2+80+1+2+85+1+!0, cchbuf2 = 85+!0;
|
||||
TCHAR buf1[cchbuf1], buf2[cchbuf2];
|
||||
UINT lid = StrToIntptr(lpLocaleString, true), lcid = MAKELCID(lid, SORT_DEFAULT);
|
||||
|
||||
UINT retval = GetLocaleInfo(lcid, LOCALE_SENGLISHDISPLAYNAME|LOCALE_NOUSEROVERRIDE, buf1, cchbuf1);
|
||||
if (!retval) // LOCALE_SENGLISHDISPLAYNAME is Win7+
|
||||
{
|
||||
GetLocaleInfo(lcid, LOCALE_SENGCOUNTRY|LOCALE_NOUSEROVERRIDE, buf2, cchbuf2);
|
||||
retval = GetLocaleInfo(lcid, LOCALE_SENGLANGUAGE|LOCALE_NOUSEROVERRIDE, buf1, cchbuf1);
|
||||
retval += wsprintf(buf1+retval, retval ? TEXT(" (%s)") : TEXT("?"), buf2);
|
||||
}
|
||||
AddLocale(g_hList, buf1, lid);
|
||||
return true;
|
||||
}
|
||||
|
||||
static void InitSysLangList(HWND hCtl)
|
||||
{
|
||||
g_hList = hCtl; // EnumSystemLocales is stupid and does not have a callback parameter
|
||||
SendMessage(hCtl, CB_SETCUEBANNER, 0, (LPARAM) L"Select a language...");
|
||||
EnumSystemLocales(EnumSysLocalesProc, LCID_SUPPORTED);
|
||||
}
|
||||
|
||||
static void InitIntLangList(HWND hCtl)
|
||||
{
|
||||
g_hList = hCtl;
|
||||
SendMessage(hCtl, CB_SETCUEBANNER, 0, (LPARAM) L"Select a language...");
|
||||
for (UINT i = 0; i < sizeof(g_IntLoc)/sizeof(INTLNG); ++i)
|
||||
{
|
||||
#ifdef UNICODE
|
||||
WCHAR name[200];
|
||||
wsprintf(name, L"%S", g_IntLoc[i].name);
|
||||
#else
|
||||
LPCTSTR name = g_IntLoc[i].name;
|
||||
#endif
|
||||
AddLocale(hCtl, name, g_IntLoc[i].id);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
static void OnLanguageChanged(HWND hDlg)
|
||||
{
|
||||
const UINT cchbuf1 = 80+2+80+1+2+85+1+!0, cchbuf2 = 85+!0;
|
||||
TCHAR buf1[cchbuf1], buf2[cchbuf2];
|
||||
HWND hList = g_hList;
|
||||
|
||||
INT idx = SendMessage(hList, CB_GETCURSEL, 0, 0);
|
||||
UINT lid = SendMessage(hList, CB_GETITEMDATA, idx, 0), lcid = MAKELCID(lid, SORT_DEFAULT);
|
||||
EnableWindow(GetDlgItem(hDlg, IDOK), idx != CB_ERR);
|
||||
if (idx == CB_ERR)
|
||||
{
|
||||
SetDlgItemText(hDlg, IDC_INFO, TEXT(""));
|
||||
SetDlgItemText(hDlg, IDC_LANGID, TEXT(""));
|
||||
SetDlgItemText(hDlg, IDC_CODEPAGE, TEXT(""));
|
||||
return ;
|
||||
}
|
||||
|
||||
UINT retval = GetLocaleInfo(lcid, LOCALE_SNATIVEDISPLAYNAME|LOCALE_NOUSEROVERRIDE, buf1, cchbuf1);
|
||||
if (!retval) // LOCALE_SNATIVEDISPLAYNAME is Win7+
|
||||
{
|
||||
GetLocaleInfo(lcid, LOCALE_SNATIVECTRYNAME|LOCALE_NOUSEROVERRIDE, buf2, cchbuf2);
|
||||
retval = GetLocaleInfo(lcid, LOCALE_SNATIVELANGNAME|LOCALE_NOUSEROVERRIDE, buf1, cchbuf1);
|
||||
retval += wsprintf(buf1+retval, retval ? TEXT(" (%s)") : TEXT("?"), buf2);
|
||||
}
|
||||
|
||||
if (retval && GetLocaleInfo(lcid, LOCALE_SNAME|LOCALE_NOUSEROVERRIDE, buf2, cchbuf2) && *buf2)
|
||||
{
|
||||
wsprintf(buf1+retval-1, TEXT(" [%s]"), buf2);
|
||||
}
|
||||
SetDlgItemText(hDlg, IDC_INFO, buf1);
|
||||
|
||||
wsprintf(buf1, TEXT("%u (0x%X)"), lid, lid);
|
||||
SetDlgItemText(hDlg, IDC_LANGID, buf1);
|
||||
wsprintf(buf1, TEXT("%u"), lid);
|
||||
SetDlgItemText(hDlg, IDC_COPYHELPER, buf1);
|
||||
|
||||
retval = GetLocaleInfo(lcid, LOCALE_IDEFAULTANSICODEPAGE|LOCALE_NOUSEROVERRIDE, buf2, cchbuf2);
|
||||
LPCTSTR cpstr = retval ? lstrcmp(buf2, TEXT("0")) ? buf2 : TEXT("1200 (Unicode-only)") : TEXT("?");
|
||||
SetDlgItemText(hDlg, IDC_CODEPAGE, cpstr);
|
||||
}
|
||||
|
||||
INT_PTR CALLBACK DialogProc(HWND hDlg, UINT Msg, WPARAM wp, LPARAM lp)
|
||||
{
|
||||
HWND hCtl, hCtl2;
|
||||
switch(Msg)
|
||||
{
|
||||
case WM_COMMAND:
|
||||
switch(wp)
|
||||
{
|
||||
case MAKELONG(IDOK, BN_CLICKED):
|
||||
// Using a secret edit box to copy to the clipboard
|
||||
hCtl = GetDlgItem(hDlg, IDC_COPYHELPER);
|
||||
SendMessage(hCtl, EM_SETSEL, 0, -1);
|
||||
SendMessage(hCtl, WM_COPY, 0, 0);
|
||||
break;
|
||||
|
||||
case MAKELONG(IDCANCEL, BN_CLICKED):
|
||||
return EndDialog(hDlg, 0);
|
||||
|
||||
case MAKELONG(IDC_SOURCE, CBN_SELCHANGE):
|
||||
hCtl = GetDlgItem(hDlg, IDC_SYSLANGLIST), hCtl2 = GetDlgItem(hDlg, IDC_INTLANGLIST);
|
||||
if (g_hList == hCtl) { HWND h; h = hCtl, hCtl = hCtl2, hCtl2 = h; }
|
||||
ShowWindow(g_hList = hCtl, SW_SHOW);
|
||||
ShowWindow(hCtl2, SW_HIDE);
|
||||
// fallthrough
|
||||
|
||||
case MAKELONG(IDC_SYSLANGLIST, CBN_SELCHANGE):
|
||||
case MAKELONG(IDC_INTLANGLIST, CBN_SELCHANGE):
|
||||
OnLanguageChanged(hDlg);
|
||||
break;
|
||||
}
|
||||
else if (LOWORD(wParam) == IDOK) {
|
||||
if (SendDlgItemMessage(hwndDlg, IDC_PRIMARY, CB_GETCURSEL, 0, 0) != CB_ERR && SendDlgItemMessage(hwndDlg, IDC_SUB, CB_GETCURSEL, 0, 0) != CB_ERR) {
|
||||
HGLOBAL hMem = GlobalAlloc(GMEM_MOVEABLE, 16*sizeof(TCHAR));
|
||||
if (!hMem) return 0;
|
||||
TCHAR *lang_id = (TCHAR *)GlobalLock(hMem);
|
||||
wsprintf(lang_id, _T("%u"), MAKELANGID(primary[SendDlgItemMessage(hwndDlg, IDC_PRIMARY, CB_GETCURSEL, 0, 0)].id, sub[SendDlgItemMessage(hwndDlg, IDC_SUB, CB_GETCURSEL, 0, 0)].id));
|
||||
GlobalUnlock(hMem);
|
||||
if (!OpenClipboard(hwndDlg)) return FALSE;
|
||||
EmptyClipboard();
|
||||
#ifdef _UNICODE
|
||||
SetClipboardData(CF_UNICODETEXT,hMem);
|
||||
#else
|
||||
SetClipboardData(CF_TEXT,hMem);
|
||||
#endif
|
||||
CloseClipboard();
|
||||
}
|
||||
break;
|
||||
|
||||
case WM_INITDIALOG:
|
||||
{
|
||||
SendMessage(hDlg, WM_SETICON, ICON_BIG, lp);
|
||||
InitSysLangList(GetDlgItem(hDlg, IDC_SYSLANGLIST));
|
||||
InitIntLangList(GetDlgItem(hDlg, IDC_INTLANGLIST));
|
||||
hCtl = GetDlgItem(hDlg, IDC_SOURCE);
|
||||
SendMessage(hCtl, CB_ADDSTRING, 0, (LPARAM) TEXT("System"));
|
||||
SendMessage(hCtl, CB_ADDSTRING, 0, (LPARAM) TEXT("Internal"));
|
||||
SendMessage(hCtl, CB_SETCURSEL, 0, 0); // Select "System"...
|
||||
SendMessage(hDlg, WM_COMMAND, MAKELONG(IDC_SOURCE, CBN_SELCHANGE), (LPARAM) hCtl); // ...and notify
|
||||
PostMessage(hDlg, WM_NEXTDLGCTL, 0, FALSE); // Switches focus to the 2nd combobox
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
@ -305,14 +372,8 @@ NSIS_ENTRYPOINT_GUINOCRT
|
|||
EXTERN_C void NSISWinMainNOCRT()
|
||||
{
|
||||
InitCommonControls();
|
||||
|
||||
DialogBox(
|
||||
GetModuleHandle(0),
|
||||
MAKEINTRESOURCE(IDD_DIALOG),
|
||||
0,
|
||||
DialogProc
|
||||
);
|
||||
|
||||
HINSTANCE hInst = GetModuleHandle(0);
|
||||
HANDLE hIco = LoadImage(hInst, MAKEINTRESOURCE(IDI_ICON), IMAGE_ICON, 0, 0, LR_DEFAULTSIZE|LR_SHARED);
|
||||
DialogBoxParam(hInst, MAKEINTRESOURCE(IDD_DIALOG), 0, DialogProc, (LPARAM) hIco);
|
||||
ExitProcess(0);
|
||||
}
|
||||
|
||||
|
|
BIN
Contrib/MakeLangId/MakeLangId.ico
Normal file
BIN
Contrib/MakeLangId/MakeLangId.ico
Normal file
Binary file not shown.
After Width: | Height: | Size: 13 KiB |
|
@ -4,18 +4,22 @@
|
|||
//
|
||||
#define IDR_MANIFEST 1
|
||||
#define IDD_DIALOG 101
|
||||
#define IDC_SUB 1001
|
||||
#define IDC_PRIMARY 1002
|
||||
#define IDC_RESULT 1003
|
||||
#define IDC_CODEPAGE 1004
|
||||
#define IDI_ICON 102
|
||||
#define IDC_SOURCE 1001
|
||||
#define IDC_SYSLANGLIST 1002
|
||||
#define IDC_INTLANGLIST 1003
|
||||
#define IDC_INFO 1004
|
||||
#define IDC_LANGID 1005
|
||||
#define IDC_CODEPAGE 1006
|
||||
#define IDC_COPYHELPER 1007
|
||||
|
||||
// Next default values for new objects
|
||||
//
|
||||
#ifdef APSTUDIO_INVOKED
|
||||
#ifndef APSTUDIO_READONLY_SYMBOLS
|
||||
#define _APS_NEXT_RESOURCE_VALUE 104
|
||||
#define _APS_NEXT_RESOURCE_VALUE 103
|
||||
#define _APS_NEXT_COMMAND_VALUE 40001
|
||||
#define _APS_NEXT_CONTROL_VALUE 1005
|
||||
#define _APS_NEXT_CONTROL_VALUE 1008
|
||||
#define _APS_NEXT_SYMED_VALUE 101
|
||||
#endif
|
||||
#endif
|
||||
|
|
|
@ -21,64 +21,6 @@ LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
|
|||
#pragma code_page(1252)
|
||||
#endif //_WIN32
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Dialog
|
||||
//
|
||||
|
||||
IDD_DIALOG DIALOG DISCARDABLE 0, 0, 135, 85
|
||||
STYLE DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "MakeLangID"
|
||||
FONT 8, "MS Sans Serif"
|
||||
BEGIN
|
||||
COMBOBOX IDC_PRIMARY,7,7,121,100,CBS_DROPDOWNLIST | WS_VSCROLL |
|
||||
WS_TABSTOP
|
||||
COMBOBOX IDC_SUB,7,24,121,100,CBS_DROPDOWNLIST | WS_VSCROLL |
|
||||
WS_TABSTOP
|
||||
DEFPUSHBUTTON "Copy",IDOK,78,64,50,14
|
||||
PUSHBUTTON "Exit",IDCANCEL,7,64,50,14
|
||||
LTEXT "",IDC_RESULT,7,41,121,8
|
||||
LTEXT "",IDC_CODEPAGE,7,51,121,8
|
||||
END
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// RT_MANIFEST
|
||||
//
|
||||
|
||||
1 RT_MANIFEST "MakeLangId.xml"
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// DESIGNINFO
|
||||
//
|
||||
|
||||
#ifdef APSTUDIO_INVOKED
|
||||
GUIDELINES DESIGNINFO DISCARDABLE
|
||||
BEGIN
|
||||
IDD_DIALOG, DIALOG
|
||||
BEGIN
|
||||
LEFTMARGIN, 7
|
||||
RIGHTMARGIN, 128
|
||||
TOPMARGIN, 7
|
||||
BOTTOMMARGIN, 78
|
||||
END
|
||||
END
|
||||
#endif // APSTUDIO_INVOKED
|
||||
|
||||
#endif // English (U.S.) resources
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// Unknown language: 0xD, 0x1 resources
|
||||
|
||||
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_HEB)
|
||||
#ifdef _WIN32
|
||||
LANGUAGE 0xD, 0x1
|
||||
#pragma code_page(1255)
|
||||
#endif //_WIN32
|
||||
|
||||
#ifdef APSTUDIO_INVOKED
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
|
@ -92,7 +34,7 @@ END
|
|||
|
||||
2 TEXTINCLUDE DISCARDABLE
|
||||
BEGIN
|
||||
"#include ""afxres.h""\r\n"
|
||||
"#include <windows.h>\r\n"
|
||||
"\0"
|
||||
END
|
||||
|
||||
|
@ -104,8 +46,66 @@ END
|
|||
|
||||
#endif // APSTUDIO_INVOKED
|
||||
|
||||
#endif // Unknown language: 0xD, 0x1 resources
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Icon
|
||||
//
|
||||
|
||||
IDI_ICON ICON "MakeLangId.ico"
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Dialog
|
||||
//
|
||||
|
||||
IDD_DIALOG DIALOGEX DISCARDABLE 0, 0, 185, 95
|
||||
STYLE DS_SETFONT | DS_FIXEDSYS | DS_SETFOREGROUND | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX
|
||||
CAPTION "MakeLangID"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
COMBOBOX IDC_SOURCE, 7, 7, 171, 100, CBS_DROPDOWNLIST | WS_CHILD | WS_VISIBLE | WS_VSCROLL | WS_TABSTOP
|
||||
COMBOBOX IDC_SYSLANGLIST, 7, 24, 171, 100, CBS_DROPDOWNLIST | CBS_SORT | WS_CHILD | WS_VISIBLE | WS_VSCROLL | WS_TABSTOP
|
||||
COMBOBOX IDC_INTLANGLIST, 7, 24, 171, 100, CBS_DROPDOWNLIST | CBS_SORT | WS_CHILD | WS_VISIBLE | WS_VSCROLL | WS_TABSTOP
|
||||
LTEXT "", IDC_INFO, 7, 41, 171, 8
|
||||
LTEXT "Language ID:", -1, 7, 51, 45, 8
|
||||
CONTROL "", IDC_LANGID, "EDIT", ES_LEFT | ES_READONLY | ES_AUTOHSCROLL | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 58, 51, 119, 8
|
||||
LTEXT "Codepage:", -1, 7, 61, 45, 8
|
||||
CONTROL "", IDC_CODEPAGE, "EDIT", ES_LEFT | ES_READONLY | ES_AUTOHSCROLL | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 58, 61, 119, 8
|
||||
DEFPUSHBUTTON "Copy", IDOK, 128, 74, 50, 14
|
||||
PUSHBUTTON "Exit", IDCANCEL, 7, 74, 50, 14
|
||||
CONTROL "", IDC_COPYHELPER, "EDIT", ES_LEFT | ES_READONLY | WS_CHILD | WS_VISIBLE, 0, 0, 0, 0
|
||||
END
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// RT_MANIFEST
|
||||
//
|
||||
|
||||
1 RT_MANIFEST "MakeLangId.xml"
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// DESIGNINFO
|
||||
//
|
||||
|
||||
#ifdef APSTUDIO_INVOKED
|
||||
GUIDELINES DESIGNINFO DISCARDABLE
|
||||
BEGIN
|
||||
IDD_DIALOG, DIALOG
|
||||
BEGIN
|
||||
LEFTMARGIN, 7
|
||||
RIGHTMARGIN, 178
|
||||
TOPMARGIN, 7
|
||||
BOTTOMMARGIN, 88
|
||||
END
|
||||
END
|
||||
#endif // APSTUDIO_INVOKED
|
||||
|
||||
#endif // English (U.S.) resources
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue