Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2009.08.09;
Скачать: [xml.tar.bz2];

Вниз

Посоветуйте компонент для локализации ПО, для 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.57 MB
Время: 0.007 c
15-1244579405
Юрий
2009-06-10 00:30
2009.08.09
С днем рождения ! 10 июня 2009 среда


2-1244911018
Б
2009-06-13 20:36
2009.08.09
Зачем для многих Win-структур нужно поле Size?


15-1244308171
oldman
2009-06-06 21:09
2009.08.09
Прикрутить значек к сайту в "Избранное"


15-1244539317
Тимохов_
2009-06-09 13:21
2009.08.09
Как проверить есть ли доступ по TCP порту на компьютер


6-1205532264
dake
2008-03-15 01:04
2009.08.09
Тунелестроение или back proxy





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский