translateapplication.pas

Переключить прокрутку окна
Загрузить этот исходный код

{
    TranslateApplication переводит некоторые ресурсные строки на язык приложения.

    Copyright © 2016—2017 Малик Разработчик

    Это свободная программа: вы можете перераспространять её и/или
    изменять её на условиях Меньшей Стандартной общественной лицензии GNU в том виде,
    в каком она была опубликована Фондом свободного программного обеспечения;
    либо версии 3 лицензии, либо (по вашему выбору) любой более поздней версии.

    Эта программа распространяется в надежде, что она может быть полезна,
    но БЕЗО ВСЯКИХ ГАРАНТИЙ; даже без неявной гарантии ТОВАРНОГО ВИДА
    или ПРИГОДНОСТИ ДЛЯ ОПРЕДЕЛЁННЫХ ЦЕЛЕЙ. Подробнее см. в Меньшей Стандартной
    общественной лицензии GNU.

    Вы должны были получить копию Меньшей Стандартной общественной лицензии GNU
    вместе с этой программой. Если это не так, см.
    <http://www.gnu.org/licenses/>.
}

unit TranslateApplication;

{$MODE DELPHI,EXTENDEDSYNTAX ON}

interface

uses
    Lang;

{$ASMMODE INTEL,CALLING REGISTER,INLINE ON,GOTO ON}
{$H+,I-,J-,M-,Q-,R-,T-}

implementation

var
    TRANSLATE_LIST: String_Array2d;

function translateResourceString(name, value: AnsiString; hash: int; arg: Pointer): AnsiString;
var
    i: int;
    s: String;
begin
    s := stringToLowerCase(name);
    for i := 0 to length(TRANSLATE_LIST) - 1 do begin
        if s = stringToLowerCase(TRANSLATE_LIST[i][0]) then begin
            result := TRANSLATE_LIST[i][1];
            exit;
        end;
    end;
    result := value;
end;

initialization
    TRANSLATE_LIST := String_Array2d_create([
        { Список ресурсных строк на изменение. Каждая строка имеет вид:
        String_Array1d_create(['<имя модуля>.<имя ресурсной строки>', '<желаемое значение>']) }
        String_Array1d_create(['LCLStrConsts.rsMbYes', '&Да']),
        String_Array1d_create(['LCLStrConsts.rsMbNo', '&Нет']),
        String_Array1d_create(['LCLStrConsts.rsMbOK', 'OK']),
        String_Array1d_create(['LCLStrConsts.rsMbCancel', 'Отмена']),
        String_Array1d_create(['LCLStrConsts.rsMbAbort', 'Прервать']),
        String_Array1d_create(['LCLStrConsts.rsMbRetry', '&Повторить']),
        String_Array1d_create(['LCLStrConsts.rsMbIgnore', '&Игнорировать']),
        String_Array1d_create(['LCLStrConsts.rsMbAll', '&Все']),
        String_Array1d_create(['LCLStrConsts.rsMbNoToAll', 'Нет для всех']),
        String_Array1d_create(['LCLStrConsts.rsMbYesToAll', 'Да для &всех']),
        String_Array1d_create(['LCLStrConsts.rsMbHelp', '&Справка']),
        String_Array1d_create(['LCLStrConsts.rsMbClose', '&Закрыть'])
    ]);
    setResourceStrings(translateResourceString, nil);

end.