From a19ce92425f288c0de7d09c8b7a219751ff90847 Mon Sep 17 00:00:00 2001 From: FunkyFr3sh Date: Tue, 10 Aug 2021 01:29:53 +0200 Subject: [PATCH] #102 add russian translation by shikulja --- config/ConfigFormUnit.cpp | 68 ++++- config/ConfigFormUnit.dfm | 379 ++++++++++++++------------- config/Resources/RU.png | Bin 0 -> 420 bytes config/cnc-ddraw config.cbproj | 10 + config/cnc-ddraw config_resources.rc | 1 + src/config.c | 2 +- 6 files changed, 268 insertions(+), 192 deletions(-) create mode 100644 config/Resources/RU.png diff --git a/config/ConfigFormUnit.cpp b/config/ConfigFormUnit.cpp index 8070150..e8fb24d 100644 --- a/config/ConfigFormUnit.cpp +++ b/config/ConfigFormUnit.cpp @@ -78,7 +78,7 @@ void TConfigForm::ApplyTranslation(TIniFile *ini) RendererCbx->Items->Clear(); RendererCbx->AddItem(L"自动", NULL); - RendererCbx->AddItem(L"Direct3D9", NULL); + RendererCbx->AddItem(L"Direct3D 9", NULL); RendererCbx->AddItem(L"OpenGL", NULL); RendererCbx->AddItem(L"GDI", NULL); @@ -128,7 +128,7 @@ void TConfigForm::ApplyTranslation(TIniFile *ini) RendererCbx->Items->Clear(); RendererCbx->AddItem(L"Automático", NULL); - RendererCbx->AddItem(L"Direct3D9", NULL); + RendererCbx->AddItem(L"Direct3D 9", NULL); RendererCbx->AddItem(L"OpenGL", NULL); RendererCbx->AddItem(L"GDI", NULL); @@ -178,7 +178,7 @@ void TConfigForm::ApplyTranslation(TIniFile *ini) RendererCbx->Items->Clear(); RendererCbx->AddItem(L"Automatisch", NULL); - RendererCbx->AddItem(L"Direct3D9", NULL); + RendererCbx->AddItem(L"Direct3D 9", NULL); RendererCbx->AddItem(L"OpenGL", NULL); RendererCbx->AddItem(L"GDI", NULL); @@ -199,6 +199,60 @@ void TConfigForm::ApplyTranslation(TIniFile *ini) MaxgameticksCbx->AddItem(L"25 Ticks pro Sekunde", NULL); MaxgameticksCbx->AddItem(L"15 Ticks pro Sekunde", NULL); } + else if (lang == "russian" || (lang == "auto" && priID == LANG_RUSSIAN)) { + LanguageImg->Visible = true; + ClientWidth *= 1.13; + DisplayPnl->Width *= 1.184; + AdvancedPnl->Width *= 1.184; + CompatibilityPnl->Width *= 1.184; + + /* -Russian- made by shikulja @ github */ + + ConfigForm->Caption = L"Настройки cnc-ddraw"; + DisplayBtn->Caption = L"Настройки отображения"; + AdvancedBtn->Caption = L"Расширенные настройки"; + CompatibilityBtn->Caption = L"Настройки совместимости"; + PresentationLbl->Caption = L"Отображение"; + MaintasLbl->Caption = L"Сохранять соотношение сторон"; + VsyncLbl->Caption = L"Включить VSync"; + AdjmouseLbl->Caption = L"Регулировка чувствительности мыши"; + DevmodeLbl->Caption = L"Зафиксировать курсор на окне / экране"; + RendererLbl->Caption = L"Рендер"; + BorderLbl->Caption = L"Отображение границ окна в оконном режиме"; + SavesettingsLbl->Caption = L"Запомнить положение и размер окна"; + ShaderLbl->Caption = L"Шейдер OpenGL"; + MaxfpsLbl->Caption = L"Ограничить частоту кадров"; + BoxingLbl->Caption = L"Включить windowboxing / целочисленное масштабирование"; + MaxgameticksLbl->Caption = L"Ограничить скорость игры"; + NoactivateappLbl->Caption = L"Исправить сломанный Alt+Tab"; + HookLbl->Caption = L"Исправить сломанный оконный режим или масштабированние"; + MinfpsLbl->Caption = L"Принудительно высокий FPS / Исправить заикание при Freesync/G-Sync"; + FixpitchLbl->Caption = L"Исправить проблемы с отображением отрисовки по диагонали"; + NonexclusiveLbl->Caption = L"Исправить невидимые видео / элементы пользовательского интерфейса"; + + RendererCbx->Items->Clear(); + RendererCbx->AddItem(L"Автоматический", NULL); + RendererCbx->AddItem(L"Direct3D 9", NULL); + RendererCbx->AddItem(L"OpenGL", NULL); + RendererCbx->AddItem(L"GDI", NULL); + + PresentationCbx->Items->Clear(); + PresentationCbx->AddItem(L"Полноэкранный", NULL); + PresentationCbx->AddItem(L"Полноэкранный масштабированный", NULL); + PresentationCbx->AddItem(L"Без границ", NULL); + PresentationCbx->AddItem(L"Оконный", NULL); + + MaxgameticksCbx->Items->Clear(); + MaxgameticksCbx->AddItem(L"Без ограничений", NULL); + MaxgameticksCbx->AddItem(L"Синхронизация с частотой обновления монитора", NULL); + MaxgameticksCbx->AddItem(L"Эмуляция частоты обновления монитора 60 Гц", NULL); + MaxgameticksCbx->AddItem(L"1000 тиков в секунду", NULL); + MaxgameticksCbx->AddItem(L"500 тиков в секунду", NULL); + MaxgameticksCbx->AddItem(L"60 тиков в секунду", NULL); + MaxgameticksCbx->AddItem(L"30 тиков в секунду", NULL); + MaxgameticksCbx->AddItem(L"25 тиков в секунду", NULL); + MaxgameticksCbx->AddItem(L"15 тиков в секунду", NULL); + } else { IsEnglish = true; @@ -221,6 +275,12 @@ void TConfigForm::ApplyTranslation(TIniFile *ini) LanguageImg->Picture->Graphic = png; LanguageImg->Visible = true; } + else if (priID == LANG_RUSSIAN) { + TPngImage *png = new TPngImage(); + png->LoadFromResourceName((int)HInstance, "PngImage_RU"); + LanguageImg->Picture->Graphic = png; + LanguageImg->Visible = true; + } } catch (...) { } @@ -249,7 +309,7 @@ void TConfigForm::ApplyTranslation(TIniFile *ini) RendererCbx->Items->Clear(); RendererCbx->AddItem(L"Automatic", NULL); - RendererCbx->AddItem(L"Direct3D9", NULL); + RendererCbx->AddItem(L"Direct3D 9", NULL); RendererCbx->AddItem(L"OpenGL", NULL); RendererCbx->AddItem(L"GDI", NULL); diff --git a/config/ConfigFormUnit.dfm b/config/ConfigFormUnit.dfm index 53231c4..0e04389 100644 --- a/config/ConfigFormUnit.dfm +++ b/config/ConfigFormUnit.dfm @@ -2682,189 +2682,6 @@ object ConfigForm: TConfigForm OnCreate = FormCreate PixelsPerInch = 96 TextHeight = 13 - object CompatibilityPnl: TPanel - Left = 201 - Top = 8 - Width = 499 - Height = 465 - BevelOuter = bvNone - Color = clWhite - ParentBackground = False - ShowCaption = False - TabOrder = 3 - Visible = False - StyleElements = [seFont, seBorder] - object MaxgameticksLbl: TLabel - Left = 40 - Top = 28 - Width = 123 - Height = 21 - Caption = 'Limit game speed' - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -16 - Font.Name = 'Segoe UI' - Font.Style = [] - ParentFont = False - StyleElements = [seClient, seBorder] - end - object NoactivateappLbl: TLabel - Left = 40 - Top = 105 - Width = 129 - Height = 21 - Margins.Top = 18 - Caption = 'Fix broken Alt+Tab' - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -16 - Font.Name = 'Segoe UI' - Font.Style = [] - ParentFont = False - StyleElements = [seClient, seBorder] - end - object HookLbl: TLabel - Left = 40 - Top = 173 - Width = 281 - Height = 21 - Margins.Top = 18 - Caption = 'Fix broken windowed mode or upscaling' - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -16 - Font.Name = 'Segoe UI' - Font.Style = [] - ParentFont = False - StyleElements = [seClient, seBorder] - end - object MinfpsLbl: TLabel - Left = 40 - Top = 241 - Width = 350 - Height = 21 - Margins.Top = 18 - Caption = 'Force high FPS / Fix stuttering on Freesync/G-Sync' - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -16 - Font.Name = 'Segoe UI' - Font.Style = [] - ParentFont = False - StyleElements = [seClient, seBorder] - end - object FixpitchLbl: TLabel - Left = 40 - Top = 309 - Width = 272 - Height = 21 - Margins.Top = 18 - Caption = 'Fix diagonally displayed drawing issues' - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -16 - Font.Name = 'Segoe UI' - Font.Style = [] - ParentFont = False - StyleElements = [seClient, seBorder] - end - object NonexclusiveLbl: TLabel - Left = 40 - Top = 377 - Width = 225 - Height = 21 - Margins.Top = 18 - Caption = 'Fix invisible videos / UI elements' - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -16 - Font.Name = 'Segoe UI' - Font.Style = [] - ParentFont = False - StyleElements = [seClient, seBorder] - end - object MaxgameticksPbox: TPaintBox - Left = 40 - Top = 54 - Width = 342 - Height = 31 - OnPaint = PboxPaint - end - object MaxgameticksCbx: TComboBox - Left = 41 - Top = 55 - Width = 340 - Height = 29 - BevelEdges = [] - BevelInner = bvNone - BevelOuter = bvSpace - Style = csDropDownList - DropDownCount = 10 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -16 - Font.Name = 'Segoe UI' - Font.Style = [] - ParentFont = False - TabOrder = 0 - OnChange = MaxgameticksCbxChange - Items.Strings = ( - 'No limit' - 'Sync with monitor refresh rate' - 'Emulate 60hz refresh rate monitor' - '1000 ticks per second' - '500 ticks per second' - '60 ticks per second' - '30 ticks per second' - '25 ticks per second' - '15 ticks per second') - end - object NoactivateappChk: TToggleSwitch - Left = 40 - Top = 132 - Width = 50 - Height = 20 - ShowStateCaption = False - TabOrder = 1 - OnClick = NoactivateappChkClick - end - object HookChk: TToggleSwitch - Left = 40 - Top = 200 - Width = 50 - Height = 20 - ShowStateCaption = False - TabOrder = 2 - OnClick = HookChkClick - end - object MinfpsChk: TToggleSwitch - Left = 40 - Top = 268 - Width = 50 - Height = 20 - ShowStateCaption = False - TabOrder = 3 - OnClick = MinfpsChkClick - end - object FixpitchChk: TToggleSwitch - Left = 40 - Top = 336 - Width = 50 - Height = 20 - ShowStateCaption = False - TabOrder = 4 - OnClick = FixpitchChkClick - end - object NonexclusiveChk: TToggleSwitch - Left = 40 - Top = 404 - Width = 50 - Height = 20 - ShowStateCaption = False - TabOrder = 5 - OnClick = NonexclusiveChkClick - end - end object AdvancedPnl: TPanel Left = 201 Top = 8 @@ -2999,7 +2816,7 @@ object ConfigForm: TConfigForm OnChange = RendererCbxChange Items.Strings = ( 'Automatic' - 'Direct3D9' + 'Direct3D 9' 'OpenGL' 'GDI') end @@ -3070,6 +2887,9 @@ object ConfigForm: TConfigForm ShowCaption = False TabOrder = 1 StyleElements = [seFont, seBorder] + DesignSize = ( + 499 + 465) object PresentationLbl: TLabel Left = 40 Top = 28 @@ -3147,15 +2967,16 @@ object ConfigForm: TConfigForm object PresentationPbox: TPaintBox Left = 40 Top = 54 - Width = 207 + Width = 282 Height = 31 OnPaint = PboxPaint end object LanguageImg: TImage - Left = 473 + Left = 477 Top = 8 Width = 16 Height = 11 + Anchors = [akTop, akRight] Picture.Data = { 0954506E67496D61676589504E470D0A1A0A0000000D49484452000000100000 000B0802000000F9809A6E0000000467414D410000AFC837058AE90000001974 @@ -3178,11 +2999,12 @@ object ConfigForm: TConfigForm Stretch = True Visible = False OnClick = LanguageImgClick + ExplicitLeft = 569 end object PresentationCbx: TComboBox Left = 41 Top = 55 - Width = 205 + Width = 280 Height = 29 BevelEdges = [] BevelInner = bvNone @@ -3239,6 +3061,189 @@ object ConfigForm: TConfigForm OnClick = DevmodeChkClick end end + object CompatibilityPnl: TPanel + Left = 201 + Top = 8 + Width = 499 + Height = 465 + BevelOuter = bvNone + Color = clWhite + ParentBackground = False + ShowCaption = False + TabOrder = 3 + Visible = False + StyleElements = [seFont, seBorder] + object MaxgameticksLbl: TLabel + Left = 40 + Top = 28 + Width = 123 + Height = 21 + Caption = 'Limit game speed' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -16 + Font.Name = 'Segoe UI' + Font.Style = [] + ParentFont = False + StyleElements = [seClient, seBorder] + end + object NoactivateappLbl: TLabel + Left = 40 + Top = 105 + Width = 129 + Height = 21 + Margins.Top = 18 + Caption = 'Fix broken Alt+Tab' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -16 + Font.Name = 'Segoe UI' + Font.Style = [] + ParentFont = False + StyleElements = [seClient, seBorder] + end + object HookLbl: TLabel + Left = 40 + Top = 173 + Width = 281 + Height = 21 + Margins.Top = 18 + Caption = 'Fix broken windowed mode or upscaling' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -16 + Font.Name = 'Segoe UI' + Font.Style = [] + ParentFont = False + StyleElements = [seClient, seBorder] + end + object MinfpsLbl: TLabel + Left = 40 + Top = 241 + Width = 350 + Height = 21 + Margins.Top = 18 + Caption = 'Force high FPS / Fix stuttering on Freesync/G-Sync' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -16 + Font.Name = 'Segoe UI' + Font.Style = [] + ParentFont = False + StyleElements = [seClient, seBorder] + end + object FixpitchLbl: TLabel + Left = 40 + Top = 309 + Width = 272 + Height = 21 + Margins.Top = 18 + Caption = 'Fix diagonally displayed drawing issues' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -16 + Font.Name = 'Segoe UI' + Font.Style = [] + ParentFont = False + StyleElements = [seClient, seBorder] + end + object NonexclusiveLbl: TLabel + Left = 40 + Top = 377 + Width = 225 + Height = 21 + Margins.Top = 18 + Caption = 'Fix invisible videos / UI elements' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -16 + Font.Name = 'Segoe UI' + Font.Style = [] + ParentFont = False + StyleElements = [seClient, seBorder] + end + object MaxgameticksPbox: TPaintBox + Left = 40 + Top = 54 + Width = 394 + Height = 31 + OnPaint = PboxPaint + end + object MaxgameticksCbx: TComboBox + Left = 41 + Top = 55 + Width = 392 + Height = 29 + BevelEdges = [] + BevelInner = bvNone + BevelOuter = bvSpace + Style = csDropDownList + DropDownCount = 10 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -16 + Font.Name = 'Segoe UI' + Font.Style = [] + ParentFont = False + TabOrder = 0 + OnChange = MaxgameticksCbxChange + Items.Strings = ( + 'No limit' + 'Sync with monitor refresh rate' + 'Emulate 60hz refresh rate monitor' + '1000 ticks per second' + '500 ticks per second' + '60 ticks per second' + '30 ticks per second' + '25 ticks per second' + '15 ticks per second') + end + object NoactivateappChk: TToggleSwitch + Left = 40 + Top = 132 + Width = 50 + Height = 20 + ShowStateCaption = False + TabOrder = 1 + OnClick = NoactivateappChkClick + end + object HookChk: TToggleSwitch + Left = 40 + Top = 200 + Width = 50 + Height = 20 + ShowStateCaption = False + TabOrder = 2 + OnClick = HookChkClick + end + object MinfpsChk: TToggleSwitch + Left = 40 + Top = 268 + Width = 50 + Height = 20 + ShowStateCaption = False + TabOrder = 3 + OnClick = MinfpsChkClick + end + object FixpitchChk: TToggleSwitch + Left = 40 + Top = 336 + Width = 50 + Height = 20 + ShowStateCaption = False + TabOrder = 4 + OnClick = FixpitchChkClick + end + object NonexclusiveChk: TToggleSwitch + Left = 40 + Top = 404 + Width = 50 + Height = 20 + ShowStateCaption = False + TabOrder = 5 + OnClick = NonexclusiveChkClick + end + end object MenuPnl: TPanel Left = 0 Top = 8 diff --git a/config/Resources/RU.png b/config/Resources/RU.png new file mode 100644 index 0000000000000000000000000000000000000000..47da4214fd9edb383687c1d4f84fe8b42a51ceb2 GIT binary patch literal 420 zcmV;V0bBlwP)X|NRSO0LlM<{-BURBqYRGSojej zfLOL~|EH_V_~;P>Nc10*D0|Jxss< zFi1)Q<$$6LU}rIc*dU*QNFV}+9T))>0|XG`SD?F)5CbX~O$rDA0t^5@iDe$xIAIn5 O0000RCDATA PngImage_ES + + RCDATA + PngImage_RU + RCDATA PngImage_US @@ -249,6 +253,12 @@ true + + + .\ + true + + cnc-ddraw_config.exe diff --git a/config/cnc-ddraw config_resources.rc b/config/cnc-ddraw config_resources.rc index b737b81..a8c1a26 100644 --- a/config/cnc-ddraw config_resources.rc +++ b/config/cnc-ddraw config_resources.rc @@ -1,4 +1,5 @@ PngImage_CN RCDATA "Resources\\CN.png" PngImage_DE RCDATA "Resources\\DE.png" PngImage_ES RCDATA "Resources\\ES.png" +PngImage_RU RCDATA "Resources\\RU.png" PngImage_US RCDATA "Resources\\US.png" diff --git a/src/config.c b/src/config.c index 43268c6..efea4a8 100644 --- a/src/config.c +++ b/src/config.c @@ -288,7 +288,7 @@ static void cfg_create_ini() "; Enable upscale hack for high resolution patches (Supports C&C1, Red Alert 1 and KKND Xtreme)\n" "vhack=false\n" "\n" - "; cnc-ddraw config program language, possible values: auto, english, chinese, german, spanish\n" + "; cnc-ddraw config program language, possible values: auto, english, chinese, german, spanish, russian\n" "configlang=auto\n" "\n" "\n"