| /* | |
| * Wine Message Compiler language and codepage support | |
| * | |
| * Copyright 2000 Bertho A. Stultiens (BS) | |
| * | |
| */ | |
| #include <stdio.h> | |
| #include <stdlib.h> | |
| #include <string.h> | |
| #include <assert.h> | |
| #include "wmc.h" | |
| #include "lang.h" | |
| /* | |
| * Languages supported | |
| * | |
| * MUST be sorting ascending on language ID | |
| */ | |
| static const language_t languages[] = { | |
| {0x0402, 866, 1251, "Bulgarian", "Bulgaria"}, | |
| {0x0403, 850, 1252, "Catalan", "Spain"}, | |
| {0x0405, 852, 1250, "Czech", "Czech Republic"}, | |
| {0x0406, 850, 1252, "Danish", "Denmark"}, | |
| {0x0407, 850, 1252, "German", "Germany"}, | |
| {0x0408, 737, 1253, "Greek", "Greece"}, | |
| {0x0409, 437, 1252, "English", "United States"}, | |
| {0x040A, 850, 1252, "Spanish - Traditional Sort", "Spain"}, | |
| {0x040B, 850, 1252, "Finnish", "Finland"}, | |
| {0x040C, 850, 1252, "French", "France"}, | |
| {0x040E, 852, 1250, "Hungarian", "Hungary"}, | |
| {0x040F, 850, 1252, "Icelandic", "Iceland"}, | |
| {0x0410, 850, 1252, "Italian", "Italy"}, | |
| {0x0411, 932, 932, "Japanese", "Japan"}, | |
| {0x0412, 949, 949, "Korean", "Korea (south)"}, | |
| {0x0413, 850, 1252, "Dutch", "Netherlands"}, | |
| {0x0414, 850, 1252, "Norwegian (Bokmål)", "Norway"}, | |
| {0x0415, 852, 1250, "Polish", "Poland"}, | |
| {0x0416, 850, 1252, "Portuguese", "Brazil"}, | |
| {0x0418, 852, 1250, "Romanian", "Romania"}, | |
| {0x0419, 866, 1251, "Russian", "Russia"}, | |
| {0x041A, 852, 1250, "Croatian", "Croatia"}, | |
| {0x041B, 852, 1250, "Slovak", "Slovakia"}, | |
| {0x041C, 852, 1250, "Albanian", "Albania"}, | |
| {0x041D, 850, 1252, "Swedish", "Sweden"}, | |
| {0x041F, 857, 1254, "Turkish", "Turkey"}, | |
| {0x0421, 850, 1252, "Indonesian", "Indonesia"}, | |
| {0x0422, 866, 1251, "Ukrainian", "Ukraine"}, | |
| {0x0423, 866, 1251, "Belarusian", "Belarus"}, | |
| {0x0424, 852, 1250, "Slovene", "Slovenia"}, | |
| {0x0425, 775, 1257, "Estonian", "Estonia"}, | |
| {0x0426, 775, 1257, "Latvian", "Latvia"}, | |
| {0x0427, 775, 1257, "Lithuanian", "Lithuania"}, | |
| /* {0x042A, ?, ?, "Vietnamese", "Vietnam"},*/ | |
| {0x042D, 850, 1252, "Basque", "Spain"}, | |
| {0x042F, 866, 1251, "Macedonian", "Former Yugoslav Republic of Macedonia"}, | |
| {0x0436, 850, 1252, "Afrikaans", "South Africa"}, | |
| /* {0x0438, 852, 1252, "Faroese", "Faroe Islands"}, FIXME: Not sure about codepages */ | |
| {0x043C, 437, 1252, "Irish", "Ireland"}, | |
| {0x043E, 850, 1252, "Malay", "Malaysia"}, | |
| /* {0x048F, ?, ?, "Esperanto", "<none>"},*/ | |
| /* {0x0804, ?, ?, "Chinese (People's replublic of China)", People's republic of China"},*/ | |
| {0x0807, 850, 1252, "German", "Switzerland"}, | |
| {0x0809, 850, 1252, "English", "United Kingdom"}, | |
| {0x080A, 850, 1252, "Spanish", "Mexico"}, | |
| {0x080C, 850, 1252, "French", "Belgium"}, | |
| {0x0810, 850, 1252, "Italian", "Switzerland"}, | |
| {0x0813, 850, 1252, "Dutch", "Belgium"}, | |
| {0x0814, 850, 1252, "Norwegian (Nynorsk)", "Norway"}, | |
| {0x0816, 850, 1252, "Portuguese", "Portugal"}, | |
| /* {0x081A, ?, ?, "Serbian (latin)", "Yugoslavia"},*/ | |
| {0x081D, 850, 1252, "Swedish (Finland)", "Finland"}, | |
| {0x0C07, 850, 1252, "German", "Austria"}, | |
| {0x0C09, 850, 1252, "English", "Australia"}, | |
| {0x0C0A, 850, 1252, "Spanish - International Sort", "Spain"}, | |
| {0x0C0C, 850, 1252, "French", "Canada"}, | |
| {0x0C1A, 855, 1251, "Serbian (Cyrillic)", "Serbia"}, | |
| {0x1007, 850, 1252, "German", "Luxembourg"}, | |
| {0x1009, 850, 1252, "English", "Canada"}, | |
| {0x100A, 850, 1252, "Spanish", "Guatemala"}, | |
| {0x100C, 850, 1252, "French", "Switzerland"}, | |
| {0x1407, 850, 1252, "German", "Liechtenstein"}, | |
| {0x1409, 850, 1252, "English", "New Zealand"}, | |
| {0x140A, 850, 1252, "Spanish", "Costa Rica"}, | |
| {0x140C, 850, 1252, "French", "Luxembourg"}, | |
| {0x1809, 850, 1252, "English", "Ireland"}, | |
| {0x180A, 850, 1252, "Spanish", "Panama"}, | |
| {0x1C09, 437, 1252, "English", "South Africa"}, | |
| {0x1C0A, 850, 1252, "Spanish", "Dominican Republic"}, | |
| {0x2009, 850, 1252, "English", "Jamaica"}, | |
| {0x200A, 850, 1252, "Spanish", "Venezuela"}, | |
| {0x2409, 850, 1252, "English", "Caribbean"}, | |
| {0x240A, 850, 1252, "Spanish", "Colombia"}, | |
| {0x2809, 850, 1252, "English", "Belize"}, | |
| {0x280A, 850, 1252, "Spanish", "Peru"}, | |
| {0x2C09, 437, 1252, "English", "Trinidad & Tobago"}, | |
| {0x2C0A, 850, 1252, "Spanish", "Argentina"}, | |
| {0x300A, 850, 1252, "Spanish", "Ecuador"}, | |
| {0x340A, 850, 1252, "Spanish", "Chile"}, | |
| {0x380A, 850, 1252, "Spanish", "Uruguay"}, | |
| {0x3C0A, 850, 1252, "Spanish", "Paraguay"}, | |
| {0x400A, 850, 1252, "Spanish", "Bolivia"}, | |
| {0x440A, 850, 1252, "Spanish", "El Salvador"}, | |
| {0x480A, 850, 1252, "Spanish", "Honduras"}, | |
| {0x4C0A, 850, 1252, "Spanish", "Nicaragua"}, | |
| {0x500A, 850, 1252, "Spanish", "Puerto Rico"} | |
| }; | |
| #define NLAN (sizeof(languages)/sizeof(languages[0])) | |
| void show_languages(void) | |
| { | |
| unsigned int i; | |
| printf(" Code | DOS-cp | WIN-cp | Language | Country\n"); | |
| printf("-------+--------+--------+--------------+---------\n"); | |
| for(i = 0; i < NLAN; i++) | |
| printf("0x%04x | %5d | %5d | %-12s | %s\n", | |
| languages[i].id, | |
| languages[i].doscp, | |
| languages[i].wincp, | |
| languages[i].name, | |
| languages[i].country); | |
| } | |
| static int langcmp(const void *p1, const void *p2) | |
| { | |
| return *(unsigned *)p1 - ((language_t *)p2)->id; | |
| } | |
| const language_t *find_language(unsigned id) | |
| { | |
| return (const language_t *)bsearch(&id, languages, NLAN, sizeof(languages[0]), langcmp); | |
| } | |
| void show_codepages(void) | |
| { | |
| unsigned i; | |
| const union cptable *cpp; | |
| printf("Codepages:\n"); | |
| for(i = 0; (cpp = cp_enum_table(i)); i++) | |
| { | |
| printf("%-5d %s\n", cpp->info.codepage, cpp->info.name); | |
| } | |
| } | |
| const union cptable *find_codepage(int id) | |
| { | |
| return cp_get_table(id); | |
| } | |