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

Вниз

Системный трей   Найти похожие ветки 

 
DimOk ©   (2007-08-29 09:39) [0]

Добрый день всем. Подскажите пожалусто как программу свернуть в системный трей.
Заранее всем благодарен.


 
iXT ©   (2007-08-29 09:44) [1]

Я ожидал в другой ветке :) Ищи Запуздырить в трей


 
DimOk ©   (2007-08-29 09:47) [2]


> Я ожидал в другой ветке :) Ищи Запуздырить в трей

Оригинально...... :)


 
Человек   (2007-08-29 09:50) [3]

abfComponents ищи


 
DimOk ©   (2007-08-29 09:52) [4]


> abfComponents ищи

А без этого....?


 
alshtam ©   (2007-08-29 09:53) [5]

function TaskBarAddIcon(hWindow: THandle; ID: Cardinal;
 ICON: hicon; CallbackMessage: Cardinal; Tip: string): Boolean;
var
 NID: TNotifyIconData;
begin
 FillChar(NID, SizeOf(TNotifyIconData), 0);
 with NID do
 begin
   cbSize := SizeOf(TNotifyIconData);
   Wnd := hWindow;
   uID := ID;
   uFlags := NIF_MESSAGE or NIF_ICON or NIF_TIP;
   uCallbackMessage := CallbackMessage;
   hIcon := Icon;
   if Length(Tip) > 63 then
     SetLength(Tip, 63);
   StrPCopy(szTip, Tip);
 end;
 Result := Shell_NotifyIcon(NIM_ADD, @NID);
end;


 
DimOk ©   (2007-08-29 09:54) [6]


> alshtam

Спасибо :)


 
DimOk ©   (2007-08-29 10:06) [7]


>  NID: TNotifyIconData;

[Error] MainFormUnit.pas(535): Undeclared identifier: "TNotifyIconData"
На этапе компиляции


 
Anatoly Podgoretsky ©   (2007-08-29 10:08) [8]

Ну наконец то, а то я думал, что с выходом Д2006 эти вопросы канули в небытие.


 
DimOk ©   (2007-08-29 10:08) [9]


> abfComponents ищи

Нашел, скачал, установил. Спасибо :)


 
Сергей М. ©   (2007-08-29 10:08) [10]


> как программу свернуть в системный трей


Никак.


> Undeclared identifier: "TNotifyIconData"


uses ShellAPI


 
DimOk ©   (2007-08-29 10:09) [11]


> Ну наконец то, а то я думал, что с выходом Д2006 эти вопросы
> канули в небытие.

Delphi 7 :)


 
DimOk ©   (2007-08-29 10:10) [12]


> Никак.

[5]


 
Rouse_ ©   (2007-08-29 10:15) [13]


> DimOk ©   (29.08.07 10:10) [12]
>
> > Никак.
>
> [5]

Этот код не сворачивает программу в системный трей :)


 
@!!ex ©   (2007-08-29 10:16) [14]

unit TrayUnit;

interface

uses
 Windows, Messages;

const
 WM_IconMessage=WM_User;
var  
 Handle:integer=0;

procedure TrayCreate(const i,N:string);overload;
procedure TrayModify(const i,N:string);overload;
procedure TrayCreate(I:integer;const N:string);overload;
procedure TrayModify(I:integer;const N:string);overload;
procedure TrayDelete;

implementation

uses ShellAPI;

function StrCopy(Dest: PChar; const Source: PChar): PChar; assembler;
asm
       PUSH    EDI
       PUSH    ESI
       MOV     ESI,EAX
       MOV     EDI,EDX
       MOV     ECX,0FFFFFFFFH
       XOR     AL,AL
       REPNE   SCASB
       NOT     ECX
       MOV     EDI,ESI
       MOV     ESI,EDX
       MOV     EDX,ECX
       MOV     EAX,EDI
       SHR     ECX,2
       REP     MOVSD
       MOV     ECX,EDX
       AND     ECX,3
       REP     MOVSB
       POP     ESI
       POP     EDI
end;

var
 nid: TNotifyIconData;

procedure TrayCreate(I:integer;const N:string);
begin
 nid.cbSize := sizeof (nid);
 nid.wnd := Handle;
 nid.uID := 1; // icon ID
 nid.uCallBAckMessage := WM_IconMessage;
 nid.hIcon := LoadIcon(HInstance,MakeIntResource(I));
 strcopy (nid.szTip, PChar(N));
 nid.uFlags := 7;
 Shell_NotifyIcon (0, @nid);
end;

procedure TrayModify(I:integer;const N:string);
begin
 nid.hIcon := LoadIcon(HInstance,MakeIntResource(I));;
 strcopy (nid.szTip, PChar(N));
 nid.uFlags := 6;
 if Shell_NotifyIcon(1, @nid) then
  TrayCreate(i,N);
end;

procedure TrayCreate(const i,N:string);
begin
 nid.cbSize := sizeof (nid);
 nid.wnd := Handle;
 nid.uID := 1; // icon ID
 nid.uCallBAckMessage := WM_IconMessage;
 nid.hIcon := LoadIcon(HInstance,PChar(I));
 strcopy (nid.szTip, PChar(N));
 nid.uFlags := 7;
 Shell_NotifyIcon (0, @nid);
end;

procedure TrayModify(const i,N:string);
begin
 nid.hIcon := LoadIcon(HInstance,PChar(I));;
 strcopy (nid.szTip, PChar(N));
 nid.uFlags := 6;
 if Shell_NotifyIcon(1, @nid) then
  TrayCreate(i,N);
end;

procedure TrayDelete;
begin
 nid.uFlags := 0;
 Shell_NotifyIcon (2, @nid);
end;

end.

Это модуль для запуздыривания иконки туда, где часики.

Для того, чтобы работать с ним, нужно в одной из форм прописать:
TRayUnit.Handle:=Form.Handle;
указанная форма будет получать сообщения, которые будут генериться иконкой в трее.
Не забывай удалять иконки в конце работы, иначе после закрытия иконка останется в трее и умрети только при наведении мыши(иконка также будет умирать, если не указать окно для приема сообщение).

Вот это будет обрабатывать сообщения иконки:
procedure WMICON(var msg:TMessage);

У меня обработка выглядит так:
procedure TQuestionForm.WMICON(var msg: TMessage);
var
Point:TPoint;
begin
if (Msg.LParam=WM_LBUTTONDOWN) or (Msg.LParam=WM_RBUTTONDOWN) then
 begin
  GetCursorPos(Point);
  PopupMenu1.Popup(Point.x,Point.y);
 end;
end;

P.S.
забыл сказать, в качестве иконок используется те, что находяться в ресурсах exe шникак.
Функцию для открытия иконки из файла напишешь сам, если оно тебе надо, лично я с такой необходимостью не встречался.
 message WM_User;


 
@!!ex ©   (2007-08-29 10:17) [15]

P.P.S.
Действительно. И мой код тоже не сворачивает приложение в трей.
Он лишь позволяет создать в трее иконку.
А уж куда ты будешь сворачивать приложение, это твое дело, трэй тут ни при чем.


 
DimOk ©   (2007-08-29 10:19) [16]

Всем большое спасибо, буду переваривать :)


 
DimOk ©   (2007-08-29 10:21) [17]


> Он лишь позволяет создать в трее иконку.
> А уж куда ты будешь сворачивать приложение, это твое дело,
>  трэй тут ни при чем.

Я это понял. Окно достаточно скрывать по определенному событию..


 
DimOk ©   (2007-08-29 10:22) [18]

Хотя abfComponents на все 200% делает этузадачу и многие другие, как я уже вижу :)


 
@!!ex ©   (2007-08-29 10:23) [19]

Упс. Косяк в моем сообщении.
Правильно так:
Вот это будет обрабатывать сообщения иконки:
procedure WMICON(var msg:TMessage);
message WM_User;


У меня обработка выглядит так:
procedure TQuestionForm.WMICON(var msg: TMessage);
var
Point:TPoint;
begin
if (Msg.LParam=WM_LBUTTONDOWN) or (Msg.LParam=WM_RBUTTONDOWN) then
begin
 GetCursorPos(Point);
 PopupMenu1.Popup(Point.x,Point.y);
end;
end;


P.S.
забыл сказать, в качестве иконок используется те, что находяться в ресурсах exe шникак.
Функцию для открытия иконки из файла напишешь сам, если оно тебе надо, лично я с такой необходимостью не встречался.


 
@!!ex ©   (2007-08-29 10:24) [20]

> [18] DimOk ©   (29.08.07 10:22)

Компонеты - путь ламеров. ИМХО ИМХО ИМХО ИМХО ИМХО
Что будешь делать, есть у проги не будет формы? Скажем все на WinAPI.


 
Человек   (2007-08-29 10:28) [21]


> @!!ex ©   (29.08.07 10:24) [20]


Видимо у него форма есть :)


 
DimOk ©   (2007-08-29 10:31) [22]


> Компонеты - путь ламеров. ИМХО ИМХО ИМХО ИМХО ИМХО
> Что будешь делать, есть у проги не будет формы? Скажем все
> на WinAPI.

Я понимаю, поэтому мне интересны все варианты, спасибо за помощь.
Компоненты  - это как MathCad Умного делает умнее, а глупого глупее.... :)
Я думаю их стоит использовать с достаточно большим занием методик программирования. Но есть простые задачи, для решения которых нет необходимости использовать WinAPI и раздувать код программы.


 
DimOk ©   (2007-08-29 10:32) [23]


> Видимо у него форма есть :)

А как ты догадался :)


 
@!!ex ©   (2007-08-29 10:34) [24]

> Но есть простые задачи, для решения которых нет необходимости
> использовать WinAPI и раздувать код программы.

Бугага. ЛОл.


 
DimOk ©   (2007-08-29 10:34) [25]

К стати я сейчас вспомнил, что скачивал программу DesctopFire там есть реализация функций связанных с системным трейем. Надо посмотреть исходник :)


 
DimOk ©   (2007-08-29 10:44) [26]

Вот код:
//////////////////////////////////////////////////////////////////
/////////////////// tray icons ///////////////////////////////////
//////////////////////////////////////////////////////////////////

function AddTrayIcon(wHandle : THandle; Const IconName, Hint : String;
                    PopupMenuStrings : array of String;
                    TrayEventProc : TTrayEventProc = nil): Boolean;
Var n,m,i,c : Integer;
   s : String;
begin
TrayIcon.cbSize := SizeOf(TrayIcon);
TrayIcon.Wnd := wHandle;
TrayIcon.uID := 100;
TrayIcon.uFlags := NIF_MESSAGE + NIF_ICON + NIF_TIP;
TrayIcon.uCallbackMessage := WM_MYTRAYMSG;
TrayIcon.hIcon :=LoadIcon(hInstance, PChar(IconName));
Move(PChar(Hint)^,TrayIcon.szTip,Length(Hint));
TrayEnabled:=Shell_NotifyIcon(NIM_ADD,@TrayIcon);
Result:=TrayEnabled;

TrayProc:=TrayEventProc;

MItemCount:=Length(PopupMenuStrings);
If (TrayEnabled) and (MItemCount>0) then begin
 PopupMenu:=CreatePopupMenu;
 SetLength(MenuKeys,MItemCount);
 i:=0;
 For n:=0 to MItemCount-1 do begin
   MenuKeys[n]:=0;
   If PopupMenuStrings[n]="-" then AppendMenu(PopupMenu,MF_SEPARATOR,0,nil)
     else begin
       s:=PopupMenuStrings[n]; m:=Pos("[",s);
       If m<>0 then begin
         Val(Copy(s,m+1,Length(s)-m-1),MenuKeys[n],c);
//          MenuKeys[n]:=Str_2Num(Copy(s,m+1,Length(s)-m-1));
         Delete(s,m,Length(s)-m+1);
       end;

       AppendMenu(PopupMenu,0,n,PChar(s));

       Inc(i);
     end;
 end;
end;
end;
Надеюсь автор не будет предъявлять претензий, эту прогу я скачивал из роздела "Статьи" этого сайта.


 
DrPass ©   (2007-08-29 10:52) [27]


> Ну наконец то, а то я думал, что с выходом Д2006 эти вопросы
> канули в небытие

Все равно надо кончать на месте и афтаров этих вопросов, и тех, кто им дает правильные ответы - за вред, который они наносят эволюции человечества


 
DimOk ©   (2007-08-29 10:56) [28]


> Все равно надо кончать на месте и афтаров этих вопросов,
>  и тех, кто им дает правильные ответы - за вред, который
> они наносят эволюции человечества

А пояснить можно......?


 
Человек   (2007-08-29 11:00) [29]


> DimOk ©   (29.08.07 10:56) [28]
</I
> А пояснить можно......?

>

Не обращай внимания


 
Gydvin ©   (2007-08-29 11:02) [30]


> А пояснить можно......?


Гугл рулит. Только на этом форуме, пока я тут нахожусь (2 или 3 года) этот вопрос задают как минимум раз в две недели. А по всем тырнету...
Все дело в ДНК.


 
DimOk ©   (2007-08-29 11:05) [31]


> Гугл рулит. Только на этом форуме, пока я тут нахожусь (2
> или 3 года) этот вопрос задают как минимум раз в две недели.
>  А по всем тырнету...
> Все дело в ДНК.

Просто кто не заметил эта ветка форума называется "Начинающим" :)

> Не обращай внимания

Да я просто интересуюсь, может быть этот вопрос даже к этой категории не относится :)


 
Gydvin ©   (2007-08-29 11:09) [32]

Причем здесь ветка "Начинающим"?
Смотри.
http://www.google.ru/search?hl=ru&newwindow=1&q=%D1%81%D0%BA%D1%80%D1%8B%D1%82%D1%8C+%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D1%83+%D0%B2+%D1%82%D1%80%D0%B5%D0%B9+delphi&btnG=%D0%9F%D0%BE%D0%B8%D1%81%D0%BA&lr=


 
Anatoly Podgoretsky ©   (2007-08-29 11:09) [33]


> Видимо у него форма есть :)

У него нет Д2006


 
DimOk ©   (2007-08-29 11:11) [34]


> procedure TrayModify(I:integer;const N:string);
> begin
>  nid.hIcon := LoadIcon(HInstance,MakeIntResource(I));;
>  strcopy (nid.szTip, PChar(N));
>  nid.uFlags := 6;
>  if Shell_NotifyIcon(1, @nid) then
>   TrayCreate(i,N);
> end;
>
> procedure TrayCreate(const i,N:string);
> begin
>  nid.cbSize := sizeof (nid);
>  nid.wnd := Handle;
>  nid.uID := 1; // icon ID
>  nid.uCallBAckMessage := WM_IconMessage;
>  nid.hIcon := LoadIcon(HInstance,PChar(I));
>  strcopy (nid.szTip, PChar(N));
>  nid.uFlags := 7;
>  Shell_NotifyIcon (0, @nid);
> end;
>
> procedure TrayModify(const i,N:string);
> begin
>  nid.hIcon := LoadIcon(HInstance,PChar(I));;
>  strcopy (nid.szTip, PChar(N));
>  nid.uFlags := 6;
>  if Shell_NotifyIcon(1, @nid) then
>   TrayCreate(i,N);
> end;

В чем разница...?


 
DimOk ©   (2007-08-29 11:12) [35]


> У него нет Д2006

Да у меня D7 и Windows хрюша.


 
@!!ex ©   (2007-08-29 11:12) [36]

> В чем разница...?

В коде? :))


 
DimOk ©   (2007-08-29 11:16) [37]


> В коде? :))

Может быть дурацкий вопрос, но не вижу..... :)


 
@!!ex ©   (2007-08-29 11:18) [38]

> [37] DimOk ©   (29.08.07 11:16)

А получше посмотреть?


 
@!!ex ©   (2007-08-29 11:20) [39]

i - идентефиактор иконки
N - Строка, которая выводить при наведении мыши на иконку.
С практической стоорны разница в том, что в одном случае иконка выбираеться по номеру, во втором - по названию.


 
DimOk ©   (2007-08-29 11:30) [40]


> nid.hIcon := LoadIcon(HInstance,MakeIntResource(I));;


> nid.hIcon := LoadIcon(HInstance,PChar(I));;

Все понял, извеняюсь просмотрел


 
DimOk ©   (2007-08-29 11:34) [41]


> Причем здесь ветка "Начинающим"?
> Смотри.
> http://www.google.ru/search?hl=ru&newwindow=1&q=%D1%81%D0%BA%D1%80%D1%8B%D1%82%D1%8C+%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D1%83+%D0%B2+%D1%82%D1%80%D0%B5%D0%B9+delphi&btnG=%D0%9F%D0%BE%D0%B8%D1%81%D0%BA&lr=

Может быть я так и делал, и нашел я www.delphimaster.ru. Кроме того  попросите админа что бы добавил баннер (основной) - "ПО ВОПРОСАМ СВЯЗАННЫХ С СИСТЕМНЫМ ТРЕЙЕМ НЕ ВХОДИТЬ. УБЪЕТ!" или что то другое..... :))


 
DimOk ©   (2007-08-29 12:18) [42]


> procedure WMICON(var msg:TMessage);
> message WM_User;

Иконка рисуется, но событий ни каких нет.....


 
Anatoly Podgoretsky ©   (2007-08-29 12:52) [43]


> Кроме того  попросите админа что бы добавил баннер (основной)
> - "ПО ВОПРОСАМ СВЯЗАННЫХ С СИСТЕМНЫМ ТРЕЙЕМ НЕ ВХОДИТЬ.
> УБЪЕТ!" или что то другое..... :))

Ну еще из-за этого беспокоить администратора, с этим мы и сами справимся.


 
DimOk ©   (2007-08-29 12:55) [44]


> Ну еще из-за этого беспокоить администратора, с этим мы
> и сами справимся.

Дерзайте, удачи :))


 
@!!ex ©   (2007-08-29 13:36) [45]

> Иконка рисуется, но событий ни каких нет.....

Хэндл формы присвоить не забыл?


 
DimOk ©   (2007-08-29 14:49) [46]


> Хэндл формы присвоить не забыл?

Unit2.Handle := Form1.Handle;


 
DimOk ©   (2007-08-29 14:55) [47]

Можно еще вопрос не совсем в тему. Как зделать так что бы пр сворачивании форма скрывалась и не отображалась на панели?


 
@!!ex ©   (2007-08-29 16:01) [48]

> [47] DimOk ©   (29.08.07 14:55)

ShowWindow(Application.Handle, SW_HIDE);


 
DVM ©   (2007-08-29 16:22) [49]

Системный трей - это все окно панели задач. Поэтому, чтобы свернуть окно в "трей" очевидно достаточно нажать кнопку минимизации окна.

То место где часики - это область уведомлений трея, но никак не сам трей.


 
Anatoly Podgoretsky ©   (2007-08-29 16:23) [50]

> DVM  (29.08.2007 16:22:49)  [49]

Это так, только в друзьях согласья нет.


 
DimOk ©   (2007-08-29 16:35) [51]


> Системный трей - это все окно панели задач. Поэтому, чтобы
> свернуть окно в "трей" очевидно достаточно нажать кнопку
> минимизации окна.
>
> То место где часики - это область уведомлений трея, но никак
> не сам трей.

Я поражон Вашими знаниями..... :)) Спасибо что помогли....


 
DimOk ©   (2007-08-29 16:37) [52]


> ShowWindow(Application.Handle, SW_HIDE);

Понятно, а событие OnMinimize есть то у формы, что то я не нашел....


 
{RASkov} ©   (2007-08-29 16:43) [53]

> [52] DimOk ©   (29.08.07 16:37)
> Понятно, а событие OnMinimize есть то у формы, что то я
> не нашел....

Поищи его у Application...


 
DimOk ©   (2007-08-29 16:48) [54]


> Поищи его у Application...

Ok. спасибо


 
DVM ©   (2007-08-29 16:48) [55]


> DimOk ©   (29.08.07 16:35) [51]


> Я поражон Вашими знаниями

MSDN читай - будешь такой же умный.


 
DimOk ©   (2007-08-29 16:56) [56]


> MSDN читай - будешь такой же умный.

Вах-вах-вах. На форум иду за помощью не из-за того что мне влом читать MSDN, а из-за того что мне непонятны некоторые вещи которые там написаны...
к примеру читал про дерективу overload, так и ни чего не понял, так что наверное таким умным мне и не быть......:)


 
DVM ©   (2007-08-29 17:00) [57]


> к примеру читал про дерективу overload, так и ни чего не
> понял

Прискорбно, что могу сказать. Тем более, что в MSDN про паскалевский overload нет ни строчки :)


 
{RASkov} ©   (2007-08-29 17:00) [58]

> [56] DimOk ©   (29.08.07 16:56)
> к примеру читал про дерективу overload

На МСДН? Т.е. про делфевую overload на MSDN?


 
Anatoly Podgoretsky ©   (2007-08-29 17:02) [59]


> читал про дерективу overload

Капитан, никогда ты не станешь майором.


 
DimOk ©   (2007-08-29 17:02) [60]


> > к примеру читал про дерективу overload, так и ни чего
> не
> > понял
>
> Прискорбно, что могу сказать. Тем более, что в MSDN про
> паскалевский overload нет ни строчки :)
> <Цитата>
>
>
> {RASkov} ©   (29.08.07 17:00) [58]
> > [56] DimOk ©   (29.08.07 16:56)
> > к примеру читал про дерективу overload
>
> На МСДН? Т.е. про делфевую overload на MSDN?

Ну лоханулся, ну и что.... я же себя в грудь не бью, что я мол........ :)


 
DimOk ©   (2007-08-29 17:08) [61]


> Капитан, никогда ты не станешь майором.

Славо Богу что не сержант.... :)


 
DimOk ©   (2007-08-29 17:11) [62]

MSDN я снес вместе с VisualStudio. Диски найду и поставлю себе. Может быть перестану тогда задовать глупые вопросы :)


 
DVM ©   (2007-08-29 17:14) [63]


> MSDN я снес вместе с VisualStudio

Кусочек у тебя все равно остался - тот что в справке Delphi. Его достаточно на 90% случаев. Он просто устаревший немного.


 
DimOk ©   (2007-08-29 17:18) [64]


> Кусочек у тебя все равно остался - тот что в справке Delphi.
>  Его достаточно на 90% случаев. Он просто устаревший немного.
>

Это который Windows SDK? или MS SDK Help Files?


 
DVM ©   (2007-08-29 17:20) [65]

Тот который в меню Delphi: Help - > Windows SDK


 
iXT ©   (2007-08-29 17:24) [66]

А еще в инете можно сразу читать, не ставя себе ничего.


 
DimOk ©   (2007-08-29 17:25) [67]


> Тот который в меню Delphi: Help - > Windows SDK

Спасибо, буду теперь знать и почаще в него заглядывать, всем спасибо за помощь!


 
TStas ©   (2007-08-29 23:36) [68]

У Розыча на сайте есть компонент, который сворачивает в трей, притом с прибамбасами какими-то. Компонент реально хороший, но с одним глюком: поднимает исключение зря. А вот адрес сайта Розыча я забыл. :(


 
Германн ©   (2007-08-30 01:20) [69]


> TStas ©   (29.08.07 23:36) [68]
>
> У Розыча на сайте есть компонент, который сворачивает в
> трей, притом с прибамбасами какими-то. Компонент реально
> хороший, но с одним глюком: поднимает исключение зря. А
> вот адрес сайта Розыча я забыл. :(
>

А он его и не прячет. Как был в анкете, так и до сих пор есть. Токмо Розычу, имхо, лень было возиться с недавней путаницей с анкетами и у него сейчас немного другой ник Rouse_ :) Анкета тут http://www.delphimaster.ru/cgi-bin/anketa.pl?id=1084946849



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

Форум: "Начинающим";
Текущий архив: 2007.09.23;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.64 MB
Время: 0.038 c
15-1188053110
@!!ex
2007-08-25 18:45
2007.09.23
Модераторы!!!


8-1166134844
Доцент
2006-12-15 01:20
2007.09.23
Как затормозить MediaPleer?


15-1188287010
infom
2007-08-28 11:43
2007.09.23
Не могу использовать на форме TWebBrowser в BDS 2006 !


2-1188556457
новЫчек
2007-08-31 14:34
2007.09.23
остановка работы цикла


15-1186482211
oldman
2007-08-07 14:23
2007.09.23
Я, конечно, рад за Россию, но...





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский