Локализация DevExpress - PullRequest
       29

Локализация DevExpress

1 голос
/ 28 марта 2012

Здесь, в Дании, я работаю над созданием приложения с использованием DevExpress.Но мне нужно локализовать элементы управления DevExpress, чтобы говорить по-датски.Но прежде чем я пошел на работу и сделал перевод сам, мне было интересно, если кто-то уже сделал это.Я использую cxLocalizerEditor для создания INI-файла с переводом.

Уже существует датский перевод?

Кто-нибудь получил локализацию пользовательских строк ресурсов для работы?Я не могу заставить его работать.

  • Отредактированный пост для добавления примера кода, о котором я поговорю позже.

Пример из справки похож на следующий.Но я не могу заставить это работать вообще.использует cxLocalization, dxCore, cxClasses,;

type
  TForm1 = class(TForm, IdxLocalizerListener)
  cxLocalizer1: TcxLocalizer;
  constructor Create(AOwner: TComponent); override;
  destructor Destroy; override;
// ...
  public
    procedure TranslationChanged;
  end;
// ...

procedure TForm1.Create(AOwner: TComponent);
begin
  dxResourceStringsRepository.AddListener(Self);
  inherited Create(AOwner);
end;

procedure TForm1.Destroy;
begin
  dxResourceStringsRepository.RemoveListener(Self);
  inherited;
end;

procedure TForm1.TranslationChanged;
begin
  Caption := cxGetResourceString(@sAppName);
  // ...
end;

Но я могу приступить к работе: (cxLanguage - это модуль, который я создал с помощью пользовательских строк ресурсов с помощью пользовательского интерфейса Localizer, а @sHpDbSettingsCaption - просто случайная строка ресурсов)1014 *

unit Unit1;

interface

uses
  cxLocalization, dxCore, cxClasses, cxLanguage,
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs;

type
  TForm1 = class(TForm, IdxLocalizerListener)
  procedure FormShow(Sender: TObject);
  private
  public
    procedure TranslationChanged;
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormShow(Sender: TObject);
begin
  TranslationChanged;
end;

procedure TForm1.TranslationChanged;
begin
  Caption := cxGetResourceString(@sHpDbSettingsCaption);
end;


end.

Ответы [ 3 ]

3 голосов
/ 28 марта 2012

VCL локализации существуют для голландского, немецкого и итальянского здесь . Я не знаю ничего доступного на датском.

Что касается локализации пользовательских строк ресурсов, у вас недостаточно четкого представления о вашей конкретной проблеме, но в центре поддержки есть несколько связанных с этим проблем:

cxLocalizerEditor - Сделать созданные пользовательские единицы ресурса компилируемыми с помощью директивы компилятора {$ TYPEDADDRESS ON}

TcxLocalizer - добавьте возможность создавать несколько пользовательских продуктов

Если ничего из этого не помогло, я предлагаю вам открыть новый вопрос на форумах поддержки DevExpress.

3 голосов
/ 28 марта 2012

Я не использовал cxLocalizerEditor, но для ResourceString я сделал постоянный модуль для перевода с помощью cxSetResourceString, и он работает.

unit craDevExpressConsts;

interface

uses
  Classes,
  cxClasses,
  sysutils;

//GetDevExpressResourceString changed in ChangeResourceStrings
procedure ChangeResourceStrings;    
 implementation

uses
  cxFilterConsts,
  cxFilterControlStrs,
  cxEditConsts,
  cxGridStrs;

procedure ChangeResourceStrings;      
begin
  //================================
  // cxFilterControlStrs
  //================================
  // cxFilterBoolOperator
  cxSetResourceString(@cxSFilterBoolOperatorAnd, 'EN');
  cxSetResourceString(@cxSFilterBoolOperatorOr, 'OF');
  cxSetResourceString(@cxSFilterBoolOperatorNotAnd, 'NIET EN'); // not all
  cxSetResourceString(@cxSFilterBoolOperatorNotOr, 'NIET OF'); // not any
  cxSetResourceString(@cxSFilterFooterAddCondition, 'Selectie Toevoegen');


  //================================
  // cxEditConsts
  //================================
  // Invalid input value. Use escape key to abandon changes.
  cxSetResourceString(@cxSEditValidateErrorText, 'Ongeldige invoer waarde. Gebruik escape toets om wijzigingen te annuleren.');

  // Date
  cxSetResourceString(@cxSDatePopupClear, 'Ledigen'); // Clear
  cxSetResourceString(@cxSDatePopupNow, 'Nu'); // Now
  cxSetResourceString(@cxSDatePopupOK, 'Ok'); // OK
  cxSetResourceString(@cxSDatePopupToday, 'Vandaag'); // Today
  cxSetResourceString(@cxSDateError, 'Ongeldige Datum'); // Invalid Date

  ...

 end;

end.
0 голосов
/ 18 апреля 2017

1 - создать класс локализатора для каждого элемента управления

using DevExpress.XtraGrid.Localization;


 using System;    
    using System.Collections.Generic;
    using System.Linq;

    class cls_GridLocalizer : GridLocalizer
        {
 public override string Language { get { return "Arabic"; } }
        public override string GetLocalizedString(GridStringId id)
        {
            string ret = "";
            switch (id)
            {
                case GridStringId.MenuColumnSortAscending: return "فرز تصاعدي";
                case GridStringId.MenuColumnSortDescending: return "فرز تنازلي";
                case GridStringId.MenuColumnClearSorting: return "الغاء 

الفرز";
                    case GridStringId.MenuColumnGroup: return "تجميع حسب هذا العمود";
.
.
.
.
  default:
                    ret = base.GetLocalizedString(id);

                    break;
            }
            return ret;
        }
    }
}

2 - вызвать класс из формы, содержащей сетку:

GridLocalizer.Active = new cls_GridLocalizer();

3 - наслаждаться

это арабская сетка

...