Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.08.09;
Скачать: CL | DM;

Вниз

Посоветуйте компонент для локализации ПО, для D2009   Найти похожие ветки 

 
Кто б сомневался ©   (2009-06-08 12:54) [0]

Пожалуйста не закрывайте топик.

Посоветуйте компонент для локализации программы, для D2009

Желательно:
Небольшой размер, производительность.
Было б еще лучше если б он был бесплатный.

Возможно у кого то есть недописанный модуль, который не жалко дать, - я попробую его дописать.

Спасибо.


 
Кто б сомневался ©   (2009-06-08 12:56) [1]

Кто чем пользуется? Что посоветуете?


 
Dimka Maslov ©   (2009-06-08 12:59) [2]

У меня есть такой модуль недописанный:
unit Locaizator;

interface

uses

 Windows, SysUtils, Classes;

implementation

end.


 
Кто б сомневался ©   (2009-06-08 13:03) [3]


> У меня есть такой модуль недописанный:


Смешно, согласен.


 
oldman ©   (2009-06-08 13:12) [4]


> Кто б сомневался ©   (08.06.09 12:54)  
>
> Посоветуйте компонент для локализации программы, для D2009


Что он с твоей точки зрения должен делать? Именно как компонент.
И как он это должен делать? Именно как компонент.


 
oldman ©   (2009-06-08 13:17) [5]


> Кто б сомневался ©   (08.06.09 12:54)  


Локализаций ПО занимаются целые фирмы.
А тебе компонент всего лишь...
:)


 
test ©   (2009-06-08 13:39) [6]

Ресурсы в DLL и при выборе выводить все заголовки из Dll для языка Х.


 
Andy BitOff ©   (2009-06-08 13:41) [7]


> Кто б сомневался ©   (08.06.09 12:54) 

http://delphimaster.net/view/16-1238483355/


 
Кто б сомневался ©   (2009-06-08 14:23) [8]


> Что он с твоей точки зрения должен делать? Именно как компонент.
>
> И как он это должен делать? Именно как компонент.


Локализировать форму.


>  И как он это должен делать?


Неважно. Как угодно.


 
Andy BitOff ©   (2009-06-08 14:37) [9]


> Кто б сомневался ©   (08.06.09 14:23) [8]

Значит по ссылке то, что надо. Текстовой файл в формате ини. Точно не помню, но что-то типа того;
[frmMain]
lblMyLabel.Caption=КепшонМоегоЛабела
btnMyButton.Caption=КаптионМайБутон
btnMyButton.Hint=ХинтФорМайБутон

P.S. Сорри, за мой француский.


 
Кто б сомневался ©   (2009-06-08 14:44) [10]


> Andy BitOff ©   (08.06.09 14:37) [9]


Да это вариант первый.
Но возможно будут еще варианты?


 
oldman ©   (2009-06-08 15:20) [11]


> Кто б сомневался ©   (08.06.09 14:23) [8]
>
> > Что он с твоей точки зрения должен делать? Именно как
> компонент.
> >
> > И как он это должен делать? Именно как компонент.
>
>
> Локализировать форму.


Что такое по-твоему "локализовать"?
И почему этим должен заниматься "компонент"?
Может таки нанять переводчика и перевести сырцы на нужный тебе язык?


 
oldman ©   (2009-06-08 15:24) [12]


> Кто б сомневался ©  


Локализация ведь подразумевает не только подстрочный, а и смысловой перевод, так?
Представляю я себе этот "компонент" с прикрученным словарем...
Получишь ведь вместо "Use mouse driver" "Позови погонщика мышей" :)


 
Онотоле   (2009-06-08 16:00) [13]

TsiLang


 
Кто б сомневался ©   (2009-06-08 16:04) [14]


> Онотоле   (08.06.09 16:00) [13]
>
> TsiLang


Я так понимаю вы пользовались им. Не подскажите, программу надо перезагружать после смены языка?


 
Кто б сомневался ©   (2009-06-08 16:07) [15]


> Что такое по-твоему "локализовать"?
> И почему этим должен заниматься "компонент"?
> Может таки нанять переводчика и перевести сырцы на нужный
> тебе язык?


Локализация - это привязка (адаптация) программно-аппаратных средств к условиям и стандартам страны пользователя. Втч и отображение языка.
Это не синоним слова "перевод".


 
Онотоле   (2009-06-08 16:10) [16]


> Кто б сомневался ©   (08.06.09 16:04) [14]
>
>
> > Онотоле   (08.06.09 16:00) [13]
> >
> > TsiLang
>
>
> Я так понимаю вы пользовались им. Не подскажите, программу
> надо перезагружать после смены языка?


не надо


 
Игорь Шевченко ©   (2009-06-08 16:13) [17]

а что, в D2009 Integrated translation environment убрали ?


 
oldman ©   (2009-06-08 16:30) [18]


> Кто б сомневался ©   (08.06.09 16:07) [15]
> Локализация - это привязка (адаптация) программно-аппаратных
> средств к условиям и стандартам страны пользователя. Втч
> и отображение языка.
> Это не синоним слова "перевод".


Это долгая и муторная работа.
И компонент или процедура с этим не справятся.


 
Кто б сомневался ©   (2009-06-08 16:50) [19]


> Это долгая и муторная работа.
> И компонент или процедура с этим не справятся.


Это один из остальных инструментов. Причем это базовый инструмент.


> Игорь Шевченко ©   (08.06.09 16:13) [17]
>
> а что, в D2009 Integrated translation environment убрали
> ?


Мне он не подходит. К тому же он вываливается с кучей ошибок (Update 3 установлен).


 
Игорь Шевченко ©   (2009-06-08 16:53) [20]

Кто б сомневался ©   (08.06.09 16:50) [19]


> Мне он не подходит


Ну парься...

Промежду прочим, он решает все твои задачи. Правда, глючен и неудобен, но реальной готовой альтернативы я не подобрал. То, что я видел (всякие локалайзеры) во-первых, еще более глючные, во-вторых, стоят денег.

Сам в итоге локализую руками, в смысле полусамостоятельно пишу ресурсы и вставляю в нужное место код для их загрузки.


 
Кто б сомневался ©   (2009-06-08 16:56) [21]


> Игорь Шевченко ©   (08.06.09 16:53) [20]
>>Ну парься...


Наоборот не хочу с ним парится.. Да и идея нужна другая - чтобы был один exe, а языки были в отдельных txt редактируемых файлах.


 
Игорь Шевченко ©   (2009-06-08 17:18) [22]

Кто б сомневался ©   (08.06.09 16:56) [21]

Я к этому пришел путем ручного труда. Только не в txt, а в rc-файлах, и редактируются не абы как, а сначала редактируются, потом компилируются компилятором ресурсов, потом работают.


 
Sapersky   (2009-06-08 19:46) [23]

Ну вот мне не жалко. Тем более что "ядро" ProcessProperties явно откуда-то скопипастено, стиль не мой... откуда - уже не помню.


// TIniBase - самописный аналог TIniFile, можно заменить на стандартный
procedure ProcessProperties(Parent : TPersistent; Ini : TIniBase;
                           Const NamePrefix : String = "";
                           CustomClassProc : TCustomClassProc = nil);
var
 I, n, Count: Integer;
 PropInfo: PPropInfo;
 PropList: PPropList;
 PropType: PTypeInfo;
 Name : String;
 Comp : TComponent;

 procedure ProcessStrProp;
 Var Value: string;
 begin
 Value := GetStrProp(Parent, PropInfo);
 If (Value <> "") then
   If (Ini.Mode = fmWrite) then
     Ini.WriteString(Name + PropInfo.Name, Value)
else
     If Ini.ReadStringEx(Name + PropInfo.Name, Value) then
       SetStrProp(Parent, PropInfo, Value);
 end;

 procedure ProcessObjProp;
 Var Obj : TObject;
     Str : TStrings;
     Coll : TCollection;
     n : Integer;
     Value, nm : String;
 begin
 Obj := GetObjectProp(Parent, PropInfo, TStrings);
 If (Obj <> nil) then begin
   Str := Obj as TStrings; nm := Name + PropInfo.Name;
   If (Ini.Mode = fmWrite) then
     For n:=0 to Str.Count-1 do
       Ini.WriteString(nm + Num_2Str(n), Str[n])
   else
     For n:=0 to Str.Count-1 do
       If Ini.ReadStringEx(nm + Num_2Str(n), Value) then Str[n] := Value;
 end else begin
   Obj := GetObjectProp(Parent, PropInfo, TCollection);
   If (Obj <> nil) then begin
     Coll := Obj as TCollection; nm := Name + PropInfo.Name;
     For n:=0 to Coll.Count-1 do
       ProcessProperties(Coll.Items[n], Ini, nm + Num_2Str(n));
   end else
     If Assigned(CustomClassProc) then CustomClassProc(Ini, Name, Parent, PropInfo);
 end;
 end;

begin
If Parent is TComponent then begin
 Comp := Parent as TComponent;
 Name := Comp.Name + ".";
end else begin
 Comp := nil;
 Name := NamePrefix + ".";
end;

Count := GetTypeData(Parent.ClassInfo)^.PropCount;
If (Count > 0) then begin
 GetMem(PropList, Count * SizeOf(Pointer));
 try
   GetPropInfos(Parent.ClassInfo, PropList);
   For I := 0 to Count - 1 do begin
     PropInfo := PropList^[I];

     If PropInfo = nil then break;

     If ( IsStoredProp(Parent, PropInfo) ) and
        ( PPropInfo(PropInfo)^.SetProc <> nil ) and
        ( PPropInfo(PropInfo)^.GetProc <> nil ) then
     begin
       PropType := PPropInfo(PropInfo)^.PropType^;
       Case PropType^.Kind of
         tkString, tkLString {$IFDEF UNICODE}, tkUString {$ENDIF}:
           ProcessStrProp;
         tkClass : ProcessObjProp;
       end;
     end;
   end;
 finally
   FreeMem(PropList, Count * SizeOf(Pointer));
 end;
end;

If (Comp <> nil) then
 For n := 0 to Comp.ComponentCount-1 do
   ProcessProperties(Comp.Components[n], Ini, "", CustomClassProc);
end;

procedure SaveTextProperties(Comp : TComponent; Const Filename : String;
                            Section : String = "";
                            CustomProc : TCustomClassProc = nil);
Var Ini : TIniBase;
begin
Ini := TIniFile.Create(Filename);
Ini.Mode := fmWrite;
Ini.SetSection(Section);
ProcessProperties(Comp, Ini, "", CustomProc);
Ini.Free;
end;

function LoadTextProperties(Comp : TComponent; Const Filename, Section : String;
                           CustomProc : TCustomClassProc = nil): Boolean;
Var ini : TIniBase;// TIniFile;
begin
ini := TIniFile.Create(Filename, False);
If ( ini.Enabled ) and ( ini.SetSection(Section) ) then begin
 ProcessProperties(Comp, Ini, "", CustomProc);
 Result := True;
end else
 Result := False;
Ini.Free;
end;


 
Кто б сомневался ©   (2009-06-08 22:37) [24]

Минус что код в двух постах, не поддерживает комбинированные компоненты типа TLabeledEdit.

Хм, будем искать. Не верю чтобы не было готового компонента для D2009 .


 
Игорь Шевченко ©   (2009-06-08 22:41) [25]


> Не верю чтобы не было готового компонента для D2009


"Компонента для локализации" вообще-то не существует


 
Кто б сомневался ©   (2009-06-09 10:35) [26]


> "Компонента для локализации" вообще-то не существует


что все юзают  D2009 Integrated translation environment?
не верю..


 
oldman ©   (2009-06-09 11:37) [27]


> Игорь Шевченко ©   (08.06.09 22:41) [25]
> "Компонента для локализации" вообще-то не существует


Я ему с самого начала намекаю, но он непробиваем...


 
TIF ©   (2009-06-09 11:43) [28]

Кто б сомневался ©   (09.06.09 10:35) [26]
> что все юзают  D2009 Integrated translation environment?


Игорь Шевченко ©   (08.06.09 16:53) [20]
> То, что я видел (всякие локалайзеры) во-первых, еще более
> глючные, во-вторых, стоят денег.


Компоненты - это из другой оперы
http://ru.wikipedia.org/wiki/Компонентно-ориентированное_программирование

Кстати, Google выдаёт 25200 вариантов для азпроса про локализацию в Delphi:
http://www.google.com/search?q=%D0%BB%D0%BE%D0%BA%D0%B0%D0%BB%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F+delphi


 
TIF ©   (2009-06-09 11:46) [29]

PS: ссылку из вики воспринимать не как ссылку на что-то полезное и в тему, а как ссылку на что-то, что отвлечёт автора от симбиоза локализации и компонентов :) Хотя вообще-то надо было тогда кинуть ссылку на развлекательный сайт...


 
oldman ©   (2009-06-09 11:47) [30]


> TIF ©   (09.06.09 11:43) [28]
> Компонентно-ориентированное программирование


На Вику не пойду, попытаюсь перевести сам...
:)


 
Игорь Шевченко ©   (2009-06-09 11:51) [31]

TIF ©   (09.06.09 11:43) [28]


>
> Компоненты - это из другой оперы
> http://ru.wikipedia.org/wiki/Компонентно-ориентированное_программирование


А солнце - шар, дающий свет


 
Кто б сомневался ©   (2009-06-09 12:26) [32]


> Я ему с самого начала намекаю, но он непробиваем...


Откройте словарь ,и посмотрите что есть локализация. Это не перевод.. Однин из базовых инструментов локализации, это компонент, загружающий языки на форму, который я и ищу. Так что сформулировано все правильно.


 
test ©   (2009-06-09 12:34) [33]

Одно время были вопросы какой компонент надо использовать чтобы запуздырить туда где часики, через некоторе время он появился, может это следующий вопрос?


 
oldman ©   (2009-06-09 13:05) [34]


> Один из базовых инструментов локализации, это компонент


Где ты это вычитал?


 
oldman ©   (2009-06-09 13:08) [35]


> загружающий языки на форму


Интересно, откудова он их "загружает"?
И что такое "загрузить языки на форму"?


 
oldman ©   (2009-06-09 13:10) [36]

Вот что такое "загрузить на форуме" я теперь догадываюсь...


 
TIF ©   (2009-06-09 13:33) [37]

Кажется автор ищет большой мультиязычный энциклопедический толково-компьютерно-программерский словарь в виде компонента :) С заранее переведенными на все языки мира наиболее часто встречающимися пунктами меню и названиями кнопок %-)

> Откройте словарь

Открыл словарь. Электронный. Стало тошно

локализация:
привязка программно-аппаратных средств к условиям и стандартам страны пользователя - internationalization
обнаружение, выявление - localization


Странно, но википедия оказалась умнее словаря
http://ru.wikipedia.org/wiki/Локализация


 
Sapersky   (2009-06-09 16:37) [38]

Минус что код в двух постах, не поддерживает комбинированные компоненты типа TLabeledEdit.

Вот так вроде работает:

var
 <...>
 Child : TComponent;
begin
If Parent is TComponent then begin
 Comp := Parent as TComponent;
 Name := Comp.Name + ".";
 If NamePrefix <> "" then Name := NamePrefix + Name;
end
<...>
If (Comp <> nil) then begin
 For n := 0 to Comp.ComponentCount-1 do begin
   Child := Comp.Components[n];
   If csSubComponent in Child.ComponentStyle then
     ProcessProperties(Child, Ini, Name, CustomClassProc)
   else
     ProcessProperties(Child, Ini, "", CustomClassProc);
 end;


 
любитель дельфинов   (2009-06-09 16:45) [39]

TcxLocalizer



Страницы: 1 вся ветка

Текущий архив: 2009.08.09;
Скачать: CL | DM;

Наверх




Память: 0.58 MB
Время: 0.022 c
15-1244615651
brother
2009-06-10 10:34
2009.08.09
есть у кого Gold аккаунт на depositfiles.com?


15-1243950098
turbouser
2009-06-02 17:41
2009.08.09
Семинар Embarcadero Technologies


6-1205611995
art36
2008-03-15 23:13
2009.08.09
Обмен данными с тайм-сервером (сервером точного времени)


15-1244814956
easy
2009-06-12 17:55
2009.08.09
Клиент для местного чата под linux


2-1245049095
DDR2
2009-06-15 10:58
2009.08.09
Найти все ссылки