Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
18.04.2018, 16:34
|
|||
---|---|---|---|
Как вычислить имя папки текущей языковой локализации OS? |
|||
#18+
Пояснить надо. Например папка C:\Program Files\Windows Media Player Если система русская, там есть папка ru-Ru c русскими .mui Если EN, то папка en-US c английскими .mui Для системных файлов: C:\Windows\System32\ru-Ru C:\Windows\System32\en-US и т.д. Могут быть обе, или еще какие-то другие, в зависимости от установленных языковых пакетов. Некоторые замечания: 1) При запуске приложения оно первым делом пытается брать локализацию из папки, которая соответствует тек. языку OS. Т.е. на русской OS первым делом лезет в ru-Ru 2) Если папка/файлы с нужным языком отсутствует, то пытается загрузить другой язык, думаю с упором на en-US (не проверял) 3) Если оставить только файлы с одной локализацией, убив все остальные, то именно этот язык и загрузится. Т.е. можно управлять локализацией конкретного приложения вне зависимости от языка OS. 4) Если эти файлы вообще отсутствуют для "всех" языков, то скорее всего вообще не запустится, кроме м.б. случая когда в код вшиты дефолты. Т.е. мой вопрос, на русской OS вычислить "ru-Ru" на английской OS вычислить "en-US" на французской "fr... и т.д. P.S. до кучи неплохо бы получить список всех возможных папок. Хотя их очень много, но если решать задачу "оставить только файлы с одной локализацией" то желательно проверять отсутствие .mui со всеми другими локализациями. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
18.04.2018, 17:25
|
|||
---|---|---|---|
Как вычислить имя папки текущей языковой локализации OS? |
|||
#18+
Дмитрий77, зачем так сурово...? вы бы описали какую проблему борете? Может есть возможность стартовать процесс с нужной калчей? список калч ... |
|||
:
Нравится:
Не нравится:
|
|||
|
18.04.2018, 18:40
|
|||
---|---|---|---|
Как вычислить имя папки текущей языковой локализации OS? |
|||
#18+
buserкакую проблему борете? Восстанавливаю классический Windows Mail на Win7-Win10. Задача локализации. mui -файлы грамотно можно взять только из языковых пакетов висты. Т.е. напр. C:\Program Files\Windows Mail\MSOERES.dll + C:\Program Files\Windows Mail\MSOERES.dll\<ru-RU>\msoeres.dll.mui C:\Windows\System32\INETRES.dll + C:\Windows\System32\<ru-RU>\inetres.dll.mui Подходов может быть несколько: 1) Класть все .mui файлы в нужные места для "поддерживаемых" языков тупо скопом(напр. английский, русский, французский, итальянский). Тогда сработает системная автоматика и выберется тек. язык OS (если он есть в списке) либо английский (если нету в списке). 2) Вычислять язык OS и класть только .mui текущего языка (либо английский). По сути тоже что и (1) но не устанавливаю всю "солянку". 3) Задавать язык "принудительно" извне и вне зависимости от языка OS. Т.е. устанавливается только .mui принудительно заданного языка, остальные удаляются (чтоб не срабатывала системная автоматика). buserМожет есть возможность стартовать процесс с нужной калчей? Я не уверен что это возможно. Приложение хоть его полу-выпилили как бы часть OS, соответственно и язык оно автоустанавливает в соответствии с языком OS (естественно при наличии соответствующих .mui) Понятно что можно запустить через "переходник" OpenProcess и т.д. с заданием там языка, но стандартный способ (щелкнуть на WinMail.exe) будет ориентироваться на язык OS. Поэтому "подрегулировать" язык можно только подкидывая/убирая .mui файлы из соотв. <ru-Ru><en-US>... подпапочек. buserсписок калч ну то что копать надо cultureinfo, кажется да. "Коды" языков как раз соответствуют названиям "папочек", оттуда же можно взять "перечисление всех возможных". ... |
|||
:
Нравится:
Не нравится:
|
|||
|
18.04.2018, 19:24
|
|||
---|---|---|---|
Как вычислить имя папки текущей языковой локализации OS? |
|||
#18+
Ну т.е. получается на русской OS вычислить "ru-Ru" на английской OS вычислить "en-US" Код: vbnet 1. 2. 3.
Оно выводит "ru-Ru" OK. А вот со списком возможных локализаций я чет засомневался. Код: vbnet 1. 2. 3. 4. 5. 6. 7.
Вывод: aa aa-DJ aa-ER aa-ET af af-NA af-ZA agq agq-CM ak ak-GH am am-ET ar ar-001 ar-AE ar-BH ar-DJ ar-DZ ar-EG ar-ER ar-IL ar-IQ ar-JO ar-KM ar-KW ar-LB ar-LY ar-MA ar-MR ar-OM ar-PS ar-QA ar-SA ar-SD ar-SO ar-SS ar-SY ar-TD ar-TN ar-YE arn arn-CL as as-IN asa asa-TZ ast ast-ES az az-Cyrl az-Cyrl-AZ az-Latn az-Latn-AZ ba ba-RU bas bas-CM be be-BY bem bem-ZM bez bez-TZ bg bg-BG bin bin-NG bm bm-Latn bm-Latn-ML bn bn-BD bn-IN bo bo-CN bo-IN br br-FR brx brx-IN bs bs-Cyrl bs-Cyrl-BA bs-Latn bs-Latn-BA byn byn-ER ca ca-AD ca-ES ca-ES-valencia ca-FR ca-IT ce ce-RU cgg cgg-UG chr chr-Cher chr-Cher-US co co-FR cs cs-CZ cu cu-RU cy cy-GB da da-DK da-GL dav dav-KE de de-AT de-BE de-CH de-DE de-IT de-LI de-LU dje dje-NE dsb dsb-DE dua dua-CM dv dv-MV dyo dyo-SN dz dz-BT ebu ebu-KE ee ee-GH ee-TG el el-CY el-GR en en-001 en-029 en-150 en-AG en-AI en-AS en-AT en-AU en-BB en-BE en-BI en-BM en-BS en-BW en-BZ en-CA en-CC en-CH en-CK en-CM en-CX en-CY en-DE en-DK en-DM en-ER en-FI en-FJ en-FK en-FM en-GB en-GD en-GG en-GH en-GI en-GM en-GU en-GY en-HK en-ID en-IE en-IL en-IM en-IN en-IO en-JE en-JM en-KE en-KI en-KN en-KY en-LC en-LR en-LS en-MG en-MH en-MO en-MP en-MS en-MT en-MU en-MW en-MY en-NA en-NF en-NG en-NL en-NR en-NU en-NZ en-PG en-PH en-PK en-PN en-PR en-PW en-RW en-SB en-SC en-SD en-SE en-SG en-SH en-SI en-SL en-SS en-SX en-SZ en-TC en-TK en-TO en-TT en-TV en-TZ en-UG en-UM en-US en-VC en-VG en-VI en-VU en-WS en-ZA en-ZM en-ZW eo eo-001 es es-419 es-AR es-BO es-BR es-BZ es-CL es-CO es-CR es-CU es-DO es-EC es-ES es-GQ es-GT es-HN es-MX es-NI es-PA es-PE es-PH es-PR es-PY es-SV es-US es-UY es-VE et et-EE eu eu-ES ewo ewo-CM fa fa-IR ff ff-CM ff-GN ff-Latn ff-Latn-SN ff-MR ff-NG fi fi-FI fil fil-PH fo fo-DK fo-FO fr fr-029 fr-BE fr-BF fr-BI fr-BJ fr-BL fr-CA fr-CD fr-CF fr-CG fr-CH fr-CI fr-CM fr-DJ fr-DZ fr-FR fr-GA fr-GF fr-GN fr-GP fr-GQ fr-HT fr-KM fr-LU fr-MA fr-MC fr-MF fr-MG fr-ML fr-MQ fr-MR fr-MU fr-NC fr-NE fr-PF fr-PM fr-RE fr-RW fr-SC fr-SN fr-SY fr-TD fr-TG fr-TN fr-VU fr-WF fr-YT fur fur-IT fy fy-NL ga ga-IE gd gd-GB gl gl-ES gn gn-PY gsw gsw-CH gsw-FR gsw-LI gu gu-IN guz guz-KE gv gv-IM ha ha-Latn ha-Latn-GH ha-Latn-NE ha-Latn-NG haw haw-US he he-IL hi hi-IN hr hr-BA hr-HR hsb hsb-DE hu hu-HU hy hy-AM ia ia-001 ia-FR ibb ibb-NG id id-ID ig ig-NG ii ii-CN is is-IS it it-CH it-IT it-SM it-VA iu iu-Cans iu-Cans-CA iu-Latn iu-Latn-CA ja ja-JP jgo jgo-CM jmc jmc-TZ jv jv-Java jv-Java-ID jv-Latn jv-Latn-ID ka ka-GE kab kab-DZ kam kam-KE kde kde-TZ kea kea-CV khq khq-ML ki ki-KE kk kk-KZ kkj kkj-CM kl kl-GL kln kln-KE km km-KH kn kn-IN ko ko-KP ko-KR kok kok-IN kr kr-NG ks ks-Arab ks-Arab-IN ks-Deva ks-Deva-IN ksb ksb-TZ ksf ksf-CM ksh ksh-DE ku ku-Arab ku-Arab-IQ ku-Arab-IR kw kw-GB ky ky-KG la la-001 lag lag-TZ lb lb-LU lg lg-UG lkt lkt-US ln ln-AO ln-CD ln-CF ln-CG lo lo-LA lrc lrc-IQ lrc-IR lt lt-LT lu lu-CD luo luo-KE luy luy-KE lv lv-LV mas mas-KE mas-TZ mer mer-KE mfe mfe-MU mg mg-MG mgh mgh-MZ mgo mgo-CM mi mi-NZ mk mk-MK ml ml-IN mn mn-Cyrl mn-MN mn-Mong mn-Mong-CN mn-Mong-MN mni mni-IN moh moh-CA mr mr-IN ms ms-BN ms-MY ms-SG mt mt-MT mua mua-CM my my-MM mzn mzn-IR naq naq-NA nb nb-NO nb-SJ nd nd-ZW nds nds-DE nds-NL ne ne-IN ne-NP nl nl-AW nl-BE nl-BQ nl-CW nl-NL nl-SR nl-SX nmg nmg-CM nn nn-NO nnh nnh-CM no nqo nqo-GN nr nr-ZA nso nso-ZA nus nus-SS nyn nyn-UG oc oc-FR om om-ET om-KE or or-IN os os-GE os-RU pa pa-Arab pa-Arab-PK pa-IN pap pap-029 pl pl-PL prg prg-001 prs prs-AF ps ps-AF pt pt-AO pt-BR pt-CH pt-CV pt-GQ pt-GW pt-LU pt-MO pt-MZ pt-PT pt-ST pt-TL quc quc-Latn quc-Latn-GT quz quz-BO quz-EC quz-PE rm rm-CH rn rn-BI ro ro-MD ro-RO rof rof-TZ ru ru-BY ru-KG ru-KZ ru-MD ru-RU ru-UA rw rw-RW rwk rwk-TZ sa sa-IN sah sah-RU saq saq-KE sbp sbp-TZ sd sd-Arab sd-Arab-PK sd-Deva sd-Deva-IN se se-FI se-NO se-SE seh seh-MZ ses ses-ML sg sg-CF shi shi-Latn shi-Latn-MA shi-Tfng shi-Tfng-MA si si-LK sk sk-SK sl sl-SI sma sma-NO sma-SE smj smj-NO smj-SE smn smn-FI sms sms-FI sn sn-Latn sn-Latn-ZW so so-DJ so-ET so-KE so-SO sq sq-AL sq-MK sq-XK sr sr-Cyrl sr-Cyrl-BA sr-Cyrl-ME sr-Cyrl-RS sr-Cyrl-XK sr-Latn sr-Latn-BA sr-Latn-ME sr-Latn-RS sr-Latn-XK ss ss-SZ ss-ZA ssy ssy-ER st st-LS st-ZA sv sv-AX sv-FI sv-SE sw sw-CD sw-KE sw-TZ sw-UG syr syr-SY ta ta-IN ta-LK ta-MY ta-SG te te-IN teo teo-KE teo-UG tg tg-Cyrl tg-Cyrl-TJ th th-TH ti ti-ER ti-ET tig tig-ER tk tk-TM tn tn-BW tn-ZA to to-TO tr tr-CY tr-TR ts ts-ZA tt tt-RU twq twq-NE tzm tzm-Arab tzm-Arab-MA tzm-Latn tzm-Latn-DZ tzm-Latn-MA tzm-Tfng tzm-Tfng-MA ug ug-CN uk uk-UA ur ur-IN ur-PK uz uz-Arab uz-Arab-AF uz-Cyrl uz-Cyrl-UZ uz-Latn uz-Latn-UZ vai vai-Latn vai-Latn-LR vai-Vaii vai-Vaii-LR ve ve-ZA vi vi-VN vo vo-001 vun vun-TZ wae wae-CH wal wal-ET wo wo-SN xh xh-ZA xog xog-UG yav yav-CM yi yi-001 yo yo-BJ yo-NG zgh zgh-Tfng zgh-Tfng-MA zh zh-CN zh-Hans zh-Hans-HK zh-Hans-MO zh-Hant zh-HK zh-MO zh-SG zh-TW zu zu-ZA zh-CHS zh-CHT Но в этом списке явный перебор. Т.е. я хочу получить список папочек соответствующих реальным допустимым локализациям OS (язык интерфейса Windows). Они там конечно все присутствуют, но кроме них вагон мусора. Не существует столько локализаций (GUI -морд виндов). К примеру для Висты: http://www.froggie.sk/7lp64rtm.html Я 35 насчитал (+1 "нелегальный"), но под спойлером тупо много больше. Любой перебор по такому списку - это оч. большие "излишки производства". Чего не догоняю? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
18.04.2018, 19:28
|
|||
---|---|---|---|
Как вычислить имя папки текущей языковой локализации OS? |
|||
#18+
Дмитрий77К примеру для Висты: http://www.froggie.sk/7lp64rtm.html Сорри, это для Win7, там слева вверху ссылки на другие OS. Не суть. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
19.04.2018, 19:15
|
|||
---|---|---|---|
Как вычислить имя папки текущей языковой локализации OS? |
|||
#18+
3) Если оставить только файлы с одной локализацией, убив все остальные, то именно этот язык и загрузится. Т.е. можно управлять локализацией конкретного приложения вне зависимости от языка OS. Проверил, утверждение как бы неверно в общем случае. Т.е. пробую на операционке Win10 Домашняя для одного языка (русский) Подкидываем 1) либо только ru-RU 2) либо ru-RU + en-US (+ ...) Запускается интерфейс "русский" Подкидываем 3) только en-US Запускается интерфейс "английский" Подкидываем 3) только fr-FR выводит msg с ошибкой, не запускается Т.е. английскую папку на русской OS ест на ура, а французскую не хочет. .mui во французской папке точно из правильного пакета (т.е. соответствуют файлам, которые хотим локализовать) Ну OK, а если другим путем, хотя б для теста. buserМожет есть возможность стартовать процесс с нужной калчей? список калч Дмитрий77Понятно что можно запустить через "переходник" OpenProcess и т.д. с заданием там языка, На самом деле непонятно. Есть unmanage приложение. И вот как его из кода "переходника" запустить с заданной калчей fr-FR? ну или en-US (на русской OS, предполагаем что папочки ru-RU + en-US + fr-FR на своих местах все 3). ... |
|||
:
Нравится:
Не нравится:
|
|||
|
19.04.2018, 22:41
|
|||
---|---|---|---|
Как вычислить имя папки текущей языковой локализации OS? |
|||
#18+
Дмитрий77, похоже что не выйдет. что-то недоперло, что это унманажед и не ваш, хотя, может и есть какая магия... ... |
|||
:
Нравится:
Не нравится:
|
|||
|
19.04.2018, 23:40
|
|||
---|---|---|---|
Как вычислить имя папки текущей языковой локализации OS? |
|||
#18+
buser, ну вот пока играюсь, пока безрезультатно. Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
Но при неубитой папке ru-Ru он запускается на русском (на русской OS). SetThreadUILanguage(1033) не помогает. Но оно и понятно, новооткрытый процесс это другой Thread, и обращается к системным установкам. Если убить ru-Ru, то цепляется к en-US, запускается на английском (без всяких кодо-прокладок). А вот к fr-FR вообще никак не цепляется. Т.е. чего хочу, при запуске чтоб он думал что приоритетный en-US (ну хотя бы), а не системный ru-RU. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
20.04.2018, 03:20
|
|||
---|---|---|---|
Как вычислить имя папки текущей языковой локализации OS? |
|||
#18+
Ну, похоже принудительно абы где язык не запустить. Установил на тестовую Win10 французский пакет, переключил интерфейс OS на французский, фрацузские mui из fr-FR сразу автоматом подцепились. Хорошо хоть так. Т.е. принудительно можно только en-US делать, удалив папку тек. языка. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
20.04.2018, 04:22
|
|||
---|---|---|---|
Как вычислить имя папки текущей языковой локализации OS? |
|||
#18+
Дмитрий77Восстанавливаю классический Windows Mail на Win7-Win10. А программирование тут при чём? И тем более .NET ... |
|||
:
Нравится:
Не нравится:
|
|||
|
20.04.2018, 05:48
|
|||
---|---|---|---|
Как вычислить имя папки текущей языковой локализации OS? |
|||
#18+
hVosttА программирование тут при чём? Шо значит причем? Программка, которая запускает этот WinMail напр. по французки на чиста-русской OS (французские mui прилагаются). Слабо? Ну вот если слабо, то уже ни причем (в контексте данного топика). Мне вот подсказали в C-форуме (там хоть не язвят по каждому слову) 21353410 Внедриться в запускаемый процесс и вызвать SetProcessPrefrredUILanguages(), например. Знаешь как? Я - нет. Но собственно ответ на вопрос топика получен. Код: vbnet 1.
Не .Net, нэт? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
20.04.2018, 11:51
|
|||
---|---|---|---|
Как вычислить имя папки текущей языковой локализации OS? |
|||
#18+
Дмитрий77Шо значит причем? Программка, которая запускает этот WinMail напр. по французки на чиста-русской OS (французские mui прилагаются). Слабо? Ну вот если слабо, то уже ни причем (в контексте данного топика). При том, что твоя задача это не программирование, а запуск какой-то там старой программки. При чём ты не понимаешь, что локаль для текущего потока устанавливается программистом. По умолчанию она берётся из текущего пользователя ОС. Нет и не предусмотрено вообще в принципе изменение локали чужих потоков, потому что ПО может работать сразу в нескольких локалях, какие пожелал разработчик. Если разработчик предусмотрел выбор локали при запуске, например, из конфига, или из аргументов командной строки, из переменной окружения... то пожалуйста. Но при чём тут программирование и попытки закостылять ПО. Давай ещё тут начнём обсуждать как сделать свои касмотные сборки Windows XP и подобный шлак? Я-то подумал, эти времена ушли с уходом на пенсию армии "айтишников". ... |
|||
:
Нравится:
Не нравится:
|
|||
|
20.04.2018, 11:51
|
|||
---|---|---|---|
Как вычислить имя папки текущей языковой локализации OS? |
|||
#18+
Дмитрий77Не .Net, нэт? Нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
20.04.2018, 12:25
|
|||
---|---|---|---|
Как вычислить имя папки текущей языковой локализации OS? |
|||
#18+
hVosttДмитрий77Не .Net, нэт? Нет. Странно, а Microsoft пишет .NET Framework (current version) Свойство CultureInfo.Name Ну да бог с ним. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
20.04.2018, 16:36
|
|||
---|---|---|---|
Как вычислить имя папки текущей языковой локализации OS? |
|||
#18+
Дмитрий77Странно, а Microsoft пишет .NET Framework (current version) Свойство CultureInfo.Name Ну да бог с ним. Сателлитные сборки могут находиться в папках ru-RU, en-US и т.д. Но это вовсе не обязательно будет так для всех программ. Можно вообще свою культуру создавать, для планеты Катрук. Не возбраняется. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
|
start [/forum/topic.php?fid=20&tablet=1&tid=1399410]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
139ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
58ms |
get tp. blocked users: |
1ms |
others: | 313ms |
total: | 558ms |
0 / 0 |