Total Commander Forum Index Total Commander
Форум поддержки пользователей Total Commander
Сайты: Все о Total Commander | Totalcmd.net | Ghisler.com | RU.TCKB
 
 RulesRules   SearchSearch   FAQFAQ   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Автоопределение языка

 
Post new topic   Reply to topic    Total Commander Forum Index -> Написание плагинов для Total Commander printer-friendly view
View previous topic :: View next topic  
Author Message
Моторокер



Joined: 06 May 2005
Posts: 1517
Location: г. Пермь (читается Перьмь)

Post (Separately) Posted: Fri May 25, 2007 15:29    Post subject: Автоопределение языка Reply with quote

Добавляю в плагин автоопределение языка.
При первой загрузке сравниваю этой функцией название текущего языка со строкой Name в lng файле.
Code:
{ Определение текущего языка }
function WhichLanguage: string;
var
  ID: LangID;
  Language: array [0..100] of char;
begin
  ID:= GetSystemDefaultLangID;
  VerLanguageName(ID, Language, 100);
  Result:= String(Language);
end;

Проблемы например с украинским – название языка хранится на украинском, в русская винда выдаёт его как «Украинский», т.е. автоопределение не срабатывает.
Maximus предложил делать по другому – хранить в lng файле id и сравнивать его с GetSystemDefaultLangID, как в decClipboardFS.

Думаю сделать подобное в дополнение к первому способу, только в id указывать несколько значений, чтобы автоматом определять язык для языков, используемых в нескольких странах.

Залез в Windows.pas, там есть такие строчки:
Code:
(*
 *  Language IDs.
 *
 *  The following two combinations of primary language ID and
 *  sublanguage ID have special semantics:
 *
 *    Primary Language ID   Sublanguage ID      Result
 *    -------------------   ---------------     ------------------------
 *    LANG_NEUTRAL          SUBLANG_NEUTRAL     Language neutral
 *    LANG_NEUTRAL          SUBLANG_DEFAULT     User default language
 *    LANG_NEUTRAL          SUBLANG_SYS_DEFAULT System default language
 *)

const
{ Primary language IDs. }

Типа язык и подъязык. Не понял, как их можно использовать и можно ли.
_________________
плагины для Total Commander, статьи Graphics Converter; NSCopy; SEO HTML; KillOK; Плагин на Delphi
ПармаСруб - строительство домов и бань в Перми
Back to top
View user's profile Send private message
Nik



Joined: 01 Jan 2005
Posts: 583
Location: Киров

Post (Separately) Posted: Sat Jul 14, 2007 18:48    Post subject: Reply with quote

Английское название языка можно вытащить функцией (возвращает значение типа string)

Code:
GetLocaleInformation(LOCALE_SENGLANGUAGE)


Использую этот способ уже давно (в AmpView и не только) - никаких проблем ни с одним языком не возникало.

Выглядит всё примерно так:

Code:

 if FileExists(PlugDir+'\Language\'+GetIniString('main', 'language', GetLocaleInformation(LOCALE_SENGLANGUAGE)+'.lng', IniFile))
  then LoadLang(PlugDir+'\Language\'+GetIniString('main', 'language', GetLocaleInformation(LOCALE_SENGLANGUAGE)+'.lng', IniFile))

_________________
Качественный хостинг.
Back to top
View user's profile Send private message
Моторокер



Joined: 06 May 2005
Posts: 1517
Location: г. Пермь (читается Перьмь)

Post (Separately) Posted: Mon Jul 16, 2007 14:29    Post subject: Reply with quote

Maximus предложил использовать только id языка, я так и сделал + если совпадает id полностью, открывают этот файл. Если полностью не совпадает, сравниваю только первые 2 байта. Таким образом, неважно что за язык и как он назван – русский например сработает для всех стран, где основной язык – русский. А то есть всякие подъязыки экзотические, на каждый не запасёшься английских названий.
_________________
плагины для Total Commander, статьи Graphics Converter; NSCopy; SEO HTML; KillOK; Плагин на Delphi
ПармаСруб - строительство домов и бань в Перми
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Total Commander Forum Index -> Написание плагинов для Total Commander All times are GMT + 4 Hours
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group