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

Вниз

Рисунок через сокет   Найти похожие ветки 

 
Romm ©   (2007-04-15 11:30) [0]

******************************************************************************** **********************************
Я как-то говорил о этой проблеме, но решил повториться, т.к. мне никто не дал вразумительного ответа.
Подскажите пожалуйста как с сервера передать клиенту снимок рабочего стола, не сохраняя его на харде?
Спасиб


 
homm ©   (2007-04-15 11:52) [1]

> *************************************************************************
> ******* **********************************

Что ЭТО?


 
Virgo_Style ©   (2007-04-15 11:57) [2]

Romm ©   (15.04.07 11:30)
Подскажите пожалуйста как с сервера передать клиенту снимок рабочего стола, не сохраняя его на харде?


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


 
Romm ©   (2007-04-15 12:14) [3]


> Что ЭТО?

пароль :)


> Virgo_Style ©   (15.04.07 11:57) [2]

ясно, но непонятно :)

Может я что-то не понимаю, но! программа должна передавать, для начала, снимков 10 в секунду. Представь, что запрос приходит на машину с 50Мб памяти, какая же будет производительность?А вот если снимочек сделать-тут же передать и освободить память...Да кому я обьясняю-то? Вы и так все понимаете. Короч, хорош глумиться, совет лучше дайте :))


 
MikePetrichenko ©   (2007-04-15 12:29) [4]

Hm..

800х600х8bit (самое хреновое граф разрешение и передача цвета) = 3Mb

Т. е. вы собираетеся за секунду передать 30 мегабайт на машину (с машины) с 50 мегабайтами памяти....

Начните с оптимизации.


 
Romm ©   (2007-04-15 12:35) [5]


> MikePetrichenko ©   (15.04.07 12:29) [4]

ну про машину с 50 Мб - это просто пример, но все же. Локальная сеть. Вообще это теория про снимки моя, поэтому может из нее не выйдет ничего. Но вот, что как-то можно просматривать действия, совершаемые на удаленной машине я знаю. Это мне и нужно. Если есть теории лучше, чем 10 снимков/сек - предложите плиз.

PS. Видел я прогу которая штампует до 10000 экземпляров/сек - как работает не знаю, но факт.


 
проходивший мимо   (2007-04-15 15:32) [6]

делаешь каким-то умным способом снимок с экрана (мой способ 1 снимок делает около 1-1,5 секунд)
сохраняешь его, например в
BitMap:TBitmap;
Str:TStream;


на севере:
Bitmap сохраняешь в Str
Socket.SendStream(str) //в названии этой функции "SendStream" могу ошибиться


на клиенте:
событие о том, что серве что-то отрпавил нам:
принимаем поток и делаем с ним чё-нить


 
Romm ©   (2007-04-15 15:46) [7]


> проходивший мимо   (15.04.07 15:32) [6]

спасиб, а можно не сохраняя сразу передать? Меня заклинило конечно на этом несохранении, но подругому ведь не получится..


 
DrPass ©   (2007-04-15 15:59) [8]


> заклинило конечно на этом несохранении

Да, заклинило. Что плохого в сохранении в поток? Это ж не на диск писать


 
Romm ©   (2007-04-15 16:04) [9]

А! Ну в поток-то можно, наверно :) Нужно попробовать :))


 
homm ©   (2007-04-15 17:34) [10]

> 800х600х8bit (самое хреновое граф разрешение и передача
> цвета) = 3Mb

Вообще-то 480 кб.


 
Romm ©   (2007-04-17 13:01) [11]

Мастера, отправляю поток с сервера клиенту таким образом:
procedure TMainForm.GrabScreen;
var
 DeskTopDC: HDc;
 DeskTopCanvas: TCanvas;
 DeskTopRect: TRect;
 Bitmap:TBitmap;
 Str:TStream;
begin
 DeskTopDC := GetWindowDC(GetDeskTopWindow);
 DeskTopCanvas := TCanvas.Create;
 DeskTopCanvas.Handle := DeskTopDC;
 DeskTopRect := Rect(0, 0, Screen.Width, Screen.Height);
 Bitmap:=TBitmap.Create;
 Bitmap.Canvas.CopyRect(DeskTopRect, DeskTopCanvas, DeskTopRect);
 Str:=TStream.Create;
 Str.Write(Bitmap,sizeof(Bitmap));
 ServerSocket1.Socket.SendStream(str);
 ReleaseDC(GetDeskTopWindow, DeskTopDC);
 Bitmap.Free;
 Str.Free;
end;


правильно?

Вот только у TClientSocket я не нашел события Socket.ReceiveStream. Есть Socket.ReceiveText, Socket.ReceiveBuf и Socket.ReceiveLength, а как поток принять? подскажите пожалуйста


 
grisme ©   (2007-04-17 13:12) [12]

юзай RecieveBuf - фактически поток и получишь
RecieveText ограничивает ведь до строковой переменной.


 
Рамиль ©   (2007-04-17 13:15) [13]

Ты ответы в своих темах читаешь?
http://delphimaster.net/view/2-1175695178/


 
Romm ©   (2007-04-17 13:26) [14]


> Рамиль ©   (17.04.07 13:15) [13]

сорь, я уж и забыл про ту тему :( Щас пробую


 
Сергей М. ©   (2007-04-17 13:36) [15]


> Romm ©   (17.04.07 13:01) [11]


> правильно?


Нет, неправильно.

Читай справку (она не для Пушкина, меж прочим, писана) :

Note: The Stream passed as a parameter to SendStream becomes “owned” by the windows socket object.  The Windows socket object frees the stream when it is finished with it.  Do not attempt to free the stream after it has been passed as a parameter.


 
Romm ©   (2007-04-17 13:45) [16]


> Do not attempt to free the stream after it has been passed
> as a parameter

эээ.. мне кажется, что тут написано, что не нужно уничтожать "Str" правильнО? :))


 
Сергей М. ©   (2007-04-17 14:16) [17]


> мне кажется


Что значит "кажется" ?

Подчеркнутая строка вроде бы не двусмысленна в своем содержании)


 
Romm ©   (2007-04-17 14:20) [18]

что-то не получается ничего :(( посмотрите пожалуйста, может бы я где нибудь ошибку допустил:

if cmd="go" then
   begin
     Timer1.Enabled:=true;
   end;

procedure TMainForm.Timer1Timer(Sender: TObject);
begin
 GrabScreen;
end;

procedure TMainForm.GrabScreen;
var
 DeskTopDC: HDc;
 DeskTopCanvas: TCanvas;
 DeskTopRect: TRect;
 Bitmap:TBitmap;
 Str:TStream;
 Size:int64;
begin
 DeskTopDC := GetWindowDC(GetDeskTopWindow);
 DeskTopCanvas := TCanvas.Create;
 DeskTopCanvas.Handle := DeskTopDC;
 DeskTopRect := Rect(0, 0, Screen.Width, Screen.Height);
 Bitmap:=TBitmap.Create;
 Bitmap.Canvas.CopyRect(DeskTopRect, DeskTopCanvas, DeskTopRect);
 Str:=TStream.Create;
 Str.Write(Bitmap,sizeof(Bitmap));
 Size:=Str.Size;
 ServerSocket1.Socket.SendBuf(Size,sizeof(Size));
 ServerSocket1.Socket.SendStream(str);
 ReleaseDC(GetDeskTopWindow, DeskTopDC);
 Bitmap.Free;
end;

*********

   10:
     begin
       sc.Socket.SendText("go");
       Reciveing:=false;
       VidioForm.ShowModal;
     end;

procedure TMainForm.ClientSocket1Read(Sender: TObject;
 Socket: TCustomWinSocket);
var
 Buf: array[0..8191] of byte;
 RecivedSize: integer;
 Size: int64;
 AllSize: int64;
 Stream: TMemoryStream;
 Bitmap:TBitmap;
begin
 if not Reciveing then
   begin
     TClientSocket(Sender).Socket.ReceiveBuf(Size, SizeOf(Size));
     Reciveing := true;
     Stream := TMemoryStream.Create;
     AllSize := 0;
   end
 else
   begin
     RecivedSize := TClientSocket(sender).Socket.ReceiveBuf(Buf, SizeOf(Buf));
     Stream.Write(Buf, RecivedSize);
     inc(AllSize, RecivedSize);
     if AllSize = Size then
       begin
         Reciveing := false;
         Bitmap:=TBitmap.Create;
         Stream.Position := 0;
         Bitmap.LoadFromStream(Stream);
         Stream.Free;
         VidioForm.Canvas.Assign(Bitmap);
         Bitmap.Free;
       end;
   end;
end;


ошибка возникает когда сервер пытается передать данные клиенту


 
Steep ©   (2007-04-17 14:22) [19]

У меня такой подвопрос, а если сжимать в jpeg а потом передавать? так можно

jpg.Assign(bmp);
...
Send
...
jpg.free;


 
Romm ©   (2007-04-17 14:24) [20]


> Steep ©   (17.04.07 14:22) [19]

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


 
Romm ©   (2007-04-17 14:26) [21]


> ошибка возникает когда сервер пытается передать данные клиенту

Abstract Error


 
Сергей М. ©   (2007-04-17 14:27) [22]


> ошибка возникает


Какая ? И что показывает отладчик ?


 
Сергей М. ©   (2007-04-17 14:28) [23]


> Abstract Error


Потому что TStream - абстрактный класс.
Пользуй , к примеру, TMemoryStream


 
Рамиль ©   (2007-04-17 14:31) [24]


> Romm ©   (17.04.07 14:26) [21]
>
> > ошибка возникает когда сервер пытается передать данные
> клиенту
>
> Abstract Error

Это называется смотрю в книгу, вижу фигу.
В клиенте TMemoryStream просто так что ли? По аналогии можно было додумать.


 
Romm ©   (2007-04-17 14:36) [25]


> Сергей М. ©   (17.04.07 14:28) [23]


> Рамиль ©   (17.04.07 14:31) [24]

спасиб-исправил :)
только опять ошибка отправки данных с сервер сокета.
сокет нужно как-то настраивать на клиент, если клиент один?
windows говорит, что нет адреса on API "send"


 
Сергей М. ©   (2007-04-17 14:41) [26]

ServerSocket.Socket.Connections[такое-то соединение].SendЧегоТоТам(..)


 
Romm ©   (2007-04-17 14:45) [27]

вот и я только что туда же пришел :) проверяю...


 
Steep ©   (2007-04-17 14:53) [28]


> У меня такой подвопрос, а если сжимать в jpeg а потом передавать?
>  так можноjpg.Assign(bmp);...Send...jpg.free;

Собственно это был вопрос мастерам :) так можно?


 
Сергей М. ©   (2007-04-17 14:55) [29]


> Steep ©   (17.04.07 14:53) [28]


> так можно?


А подумать ?)


 
Steep ©   (2007-04-17 14:56) [30]

нет я подумал что можно, просто я с сокетом (и вобще с сетью) не работал и не знаю как он функционирует :(


 
Сергей М. ©   (2007-04-17 14:59) [31]


> просто я с сокетом (и вобще с сетью) не работал и не знаю
> как он функционирует


А причем здесь сокеты ?

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

Подумай)


 
Romm ©   (2007-04-17 15:02) [32]

О, боже! Теперь клиент не работает :(( щас с ума сойду :)

Access violation at address 004798C3 in module "Client.exe". Read of address 7836663


 
Сергей М. ©   (2007-04-17 15:04) [33]


> Romm ©   (17.04.07 15:02) [32]


см. меню Search -> Find Error ..


 
Рамиль ©   (2007-04-17 15:12) [34]

object Form1: TForm1
 Left = 582
 Top = 308
 Width = 276
 Height = 125
 Caption = "Form1"
 Color = clBtnFace
 Font.Charset = DEFAULT_CHARSET
 Font.Color = clWindowText
 Font.Height = -11
 Font.Name = "MS Sans Serif"
 Font.Style = []
 OldCreateOrder = False
 PixelsPerInch = 96
 TextHeight = 13
 object ServerSocket: TServerSocket
   Active = True
   Port = 4050
   ServerType = stNonBlocking
   OnClientRead = ServerSocketClientRead
   Left = 16
   Top = 8
 end
end

object Form2: TForm2
 Left = 274
 Top = 204
 Width = 761
 Height = 601
 Caption = "Form2"
 Color = clBtnFace
 Font.Charset = DEFAULT_CHARSET
 Font.Color = clWindowText
 Font.Height = -11
 Font.Name = "MS Sans Serif"
 Font.Style = []
 OldCreateOrder = False
 PixelsPerInch = 96
 TextHeight = 13
 object Image: TImage
   Left = 8
   Top = 32
   Width = 713
   Height = 513
   Stretch = True
 end
 object Button3: TButton
   Left = 152
   Top = 0
   Width = 75
   Height = 25
   Caption = "Recive"
   TabOrder = 0
   OnClick = Button3Click
 end
 object Button1: TButton
   Left = 56
   Top = 0
   Width = 75
   Height = 25
   Caption = "Connect"
   TabOrder = 1
   OnClick = Button1Click
 end
 object Button2: TButton
   Left = 264
   Top = 0
   Width = 75
   Height = 25
   Caption = "Disconnect"
   TabOrder = 2
   OnClick = Button2Click
 end
 object ClientSocket: TClientSocket
   Active = False
   ClientType = ctNonBlocking
   Host = "127.0.0.1"
   Port = 4050
   OnRead = ClientSocketRead
   Left = 16
   Top = 8
 end
end


 
Romm ©   (2007-04-17 15:12) [35]

procedure TMainForm.ClientSocket1Read(Sender: TObject;
Socket: TCustomWinSocket);
var
Buf: array[0..8191] of byte;
RecivedSize: integer;
Size: int64;
AllSize: int64;
Stream: TMemoryStream;
Bitmap:TBitmap;
begin
if not Reciveing then
  begin
    TClientSocket(Sender).Socket.ReceiveBuf(Size, SizeOf(Size));
    Reciveing := true;
    Stream := TMemoryStream.Create;
    AllSize := 0;
  end
else
  begin
    RecivedSize := TClientSocket(sender).Socket.ReceiveBuf(Buf, SizeOf(Buf));
    Stream.Write(Buf, RecivedSize); // компилятор тут останавливается!
    inc(AllSize, RecivedSize);
    if AllSize = Size then
      begin
        Reciveing := false;
        Bitmap:=TBitmap.Create;
        Stream.Position := 0;
        Bitmap.LoadFromStream(Stream);
        Stream.Free;
        VidioForm.Canvas.Assign(Bitmap);
        Bitmap.Free;
      end;
  end;
end;


 
Romm ©   (2007-04-17 15:21) [36]


> Рамиль ©   (17.04.07 15:12) [34]

а это что такое? :)


 
Рамиль ©   (2007-04-17 15:23) [37]

А подумать?


 
Сергей М. ©   (2007-04-17 15:23) [38]


> Stream.Write(Buf, RecivedSize); // компилятор тут останавливается!


Компилятор никогда не останавливается - он делает свою работу до конца)

А по сабжу - сделай переменную Stream статической.


 
Romm ©   (2007-04-17 15:27) [39]


> статической

это опять на Stream поменять тип?
> А подумать?

просто я, извени, ничего полезного от туда не узнал :) А может просто плохо прочитал :)


 
Рамиль ©   (2007-04-17 15:32) [40]


> Romm ©   (17.04.07 15:27) [39]

Это дфмки от моего рабочего примера.

А так Сергей прав, скорее всего в разрушенный/несозданный Stream пытаешься писать.


 
Сергей М. ©   (2007-04-17 15:32) [41]


> это опять на Stream поменять тип?


Причем здесь тип ?

Сейчас эта переменная у тебя локальная, время ее жизни равно времени  работы метода, в котором она объявлена. А тебе надо чтобы эта переменная была жива по кр.мере все то время, пока жив объект TMemoryStream, на который ссылается значение этой переменной. Для этого как раз и подходят статические переменные, потому что время их жизни равно времени работы приложения.


 
Romm ©   (2007-04-17 15:33) [42]


> Stream := TMemoryStream.Create;

как же так?


 
Romm ©   (2007-04-17 15:34) [43]


> Сергей М. ©   (17.04.07 15:32) [41]


> Рамиль ©   (17.04.07 15:32) [40]

ок, я просто не понял с лету :)


 
Сергей М. ©   (2007-04-17 15:36) [44]


> как же так?


Что "как же так" ?

Что тебя смущает в этой строчке ?


 
Romm ©   (2007-04-17 15:40) [45]


> Сергей М. ©   (17.04.07 15:36) [44]

да не, все ок. ошибка пошла пить чай. Только на форме графика не отображается...
VidioForm.Canvas.Assign(Bitmap);
так вообще делать можно? :) или лучше TImage на всю форму растянуть?


 
Romm ©   (2007-04-17 15:43) [46]

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


 
Сергей М. ©   (2007-04-17 15:46) [47]


> так вообще делать можно?


А сам-то как думаешь ?


 
Romm ©   (2007-04-17 15:48) [48]

я думаю, что можно, но не очень-то уверен :)


 
Сергей М. ©   (2007-04-17 15:49) [49]

Если исключение не схлопотал, значит можно)
А по идее ты должен был его схлопотать)


 
Romm ©   (2007-04-17 15:54) [50]

да вроде все компилируется :)
кстати, я пробовал jpeg.assign(bitmap) - все компилируется.. дельфи потупело?? или компилятор ослеп?


 
Сергей М. ©   (2007-04-17 15:56) [51]


> или компилятор ослеп?


А что он, компилятор, по-твоему, должен был увидеть криминального в этих строчках ?)


 
Romm ©   (2007-04-17 16:17) [52]


> криминального

ну например несоответствие типов, или это я придумал? :)


 
Сергей М. ©   (2007-04-17 16:23) [53]

Типы-то как раз соответствуют)
И компилятор это видит, потому и не "ругается"

А вот в ран-тайм грабли тебе, думаю, обеспечены)
Ну а к ран-тайму компилятор уже не имеет никакого отношения -  к.г., "мавр сделал своё дело")


 
Romm ©   (2007-04-17 16:25) [54]

Пока Вы не ушли буду заполнять пробелы в своем мозге! :) С вашей помощью конечно :)

Итак, посоветуйте мне пожалуйста каким образом лучше всего и проще  создать файл, например *.dat (главное чтобы содержимое блокнотом нельзя было прочитать) :)

assignfile
closefile
?

пытался через потоки - около часа кодил и ниче не накодил :) руки-то кривые :)

ну а TStrings/TStringsList тут, кажется, не к месту


 
Romm ©   (2007-04-17 16:27) [55]


> Сергей М. ©   (17.04.07 16:23) [53]

значит TImage
?

а мерцать не будет, если каждую секунду будет обновляться? Мне кажется, что будет... :(( Что же делать?


 
Сергей М. ©   (2007-04-17 16:39) [56]


> Romm ©   (17.04.07 16:25) [54]


> главное чтобы содержимое блокнотом нельзя было прочитать


Создай пустой файл - ни один "блокнот" его не "прочитает")


> значит TImage


Чего "значит TImage" ?)


 
Romm ©   (2007-04-17 16:49) [57]


> Чего "значит TImage"

цель:
на форме изобразить :)  рабочий стол удаленного компьютера.
для этого я делал так:
VidioForm.Canvas.Assign(Bitmap);, где VidioForm-форма(экран)
и непосредственно "на нее" выгружаем битмапку, но
> грабли тебе, думаю, обеспечены
, поэтому может быть так:
Image1.Picture.Assign(Bitmap);
?
> Создай пустой файл

пароли в фале будут :)
и все таки каким способом лучше?
я тут погаричился и "снес" весь код записи в файл и проверки пароля, поэтому похвастаться нечем :)


 
Сергей М. ©   (2007-04-17 16:57) [58]


> поэтому может быть так:
> Image1.Picture.Assign(Bitmap);


Это уже ближе к истине.


> пароли в фале будут


Ты уж потрудись не месить разнородные вопросы в одну кучу)
Вынеси свои вопросы по работе с файлами в отдельную ветку.


 
Romm ©   (2007-04-17 17:02) [59]


> отдельную ветку


> пока Вы не ушли



> ближе к истине

но не есть истина?


 
Сергей М. ©   (2007-04-17 17:03) [60]

Проверь сам)


 
Romm ©   (2007-04-17 17:05) [61]


> Проверь сам

с радостью бы, да
> я прогу тестирую на 1 компе. сервер и клиент на одной машине

:((


 
Сергей М. ©   (2007-04-17 17:09) [62]


> прогу тестирую на 1 компе. сервер и клиент на одной машине


И что ?

Это как-то мешает разработке приложений для их эксплуатации в реальных условиях ?


 
Romm ©   (2007-04-17 17:16) [63]


> Сергей М. ©   (17.04.07 17:09) [62]


> Ясно, что если у меня форма на весь экран - она себя и отображает

хотя...


 
Romm ©   (2007-04-17 17:46) [64]

вот и проверил. сервер файлы шлет, клиент принимает, а на форме/картинке ничего не отображается. Вот незадача-то...


 
SlymRO ©   (2007-04-18 06:14) [65]

Romm ©   (17.04.07 17:46) [64]
Возможно потому что ClientSocket1Read не вся посылка, а ее часть...
Ты считаешь что на один ServerSocket1.Socket.SendStream(str);
придется один ClientSocket1Read? нет это самое основное заблуждение! ClientSocket1Readов может быть много


 
SlymRO ©   (2007-04-18 10:02) [66]

Лови рабочий пример...
Мануал: Скопировать содержимое поста в файл mail.eml и открыть
Содержимое поста:
From: Slym
To: All
MIME-Version: 1.0
Content-Type: multipart/mixed;
boundary="----------1259B1FADE1354"

------------1259B1FADE1354
Content-Type: text/plain; charset=windows-1251

For all
------------1259B1FADE1354
Content-Type: application/octet-stream;
name="NetScreen.rar"
Content-transfer-encoding: base64
Content-Disposition: attachment;
filename="NetScreen.rar"

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
vBiUYr3EPXsAQAcA
------------1259B1FADE1354--


 
Romm ©   (2007-04-18 16:35) [67]


> SlymRO ©   (18.04.07 06:14) [65]

понял, а как быть?


> SlymRO ©   (18.04.07 10:02) [66]

вот это не понял :)


 
SlymRO ©   (2007-04-19 07:48) [68]

Romm ©   (18.04.07 16:35) [67]
вот это не понял

И чего не понятно?
1. создать файл mail.eml
2. Скопировать с одержимое поста в созданный файл
3. Сохранить сайл и запустить, откроется письмо в почтовике по умолчанию
4. В письме аттачмент с кодом


 
Romm ©   (2007-04-19 07:53) [69]


> SlymRO ©   (19.04.07 07:48) [68]

ну шифровальщик млин... :)



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

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

Наверх





Память: 0.65 MB
Время: 0.042 c
15-1175974189
mike888777666
2007-04-07 23:29
2007.05.06
антиспам


2-1176558179
Romm
2007-04-14 17:42
2007.05.06
help meee


2-1176807939
allucard
2007-04-17 15:05
2007.05.06
Обрезка файла


1-1173598733
RWolf
2007-03-11 10:38
2007.05.06
передача PChar в DLL


8-1155671586
Denisich
2006-08-15 23:53
2007.05.06
DSPack





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