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

Вниз

принцип вставления смайликов в ICQ.   Найти похожие ветки 

 
Elvis   (2005-06-03 12:43) [0]

Расскажите мне пожалуйста по какому принципу вставляются смайлики в ICQ.
И тот кто получает сообщение видит смайлик который был вставлен .....


 
dmitry501 ©   (2005-06-03 12:51) [1]

Elvis   (03.06.05 12:43)
Смайлики передаются обычними символами, например :), :( а клиент преобразует его в картинку


 
Jeer ©   (2005-06-03 12:54) [2]

:-&       лишившийся дара речи; смутившийся; косноязычный
:-р       высовывающий язык
:-s       непоследовательный, бессвязный
:-/       скептик
:-\       нерешившийся
о:-)      ангел
>:-)      дьявол
:-q       пытающийся достать языком до носа
:-а       то же самое, но с другой стороны
:-е       разочарованный
:-о       ox-ox
:-9       облизывающий губы
:-О       не ори! (также оратор)


 
Eraser ©   (2005-06-03 13:03) [3]

Elvis   (03.06.05 12:43)

То, что описАл dmitry501 ©   (03.06.05 12:51) [1] это ещё пол беды -- реализуется не так сложно, главная проблема обратный процесс, т.е. преобразование картинки в смайлик. Сам давно хочу выяснить, как это работает.


 
Digitman ©   (2005-06-03 13:09) [4]


> Расскажите мне пожалуйста по какому принципу вставляются
> смайлики в ICQ


в ICQ никакие "смайлики" не вставляются, ICQ - это сеть, работающая по спецпротоколу, в котором ни каких смайликов не было и нет.

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


 
Elvis   (2005-06-03 13:17) [5]

>>>программа-клиент, "умеющая" в поступающих текстовых сообщениях распознавать комбинации символов (см.выше) и интерпретировать их как команды на отрисовку в соотв.позициях соотв.смайликов
>>>
ну дык а как такое сделать-то??


 
Alexander Panov ©   (2005-06-03 13:20) [6]

Elvis   (03.06.05 13:17) [5]
ну дык а как такое сделать-то??


Так в чем проблема?
Алгоритм простой.
Перед передачей кода смайлика вставляешь неотображаемый символ-флажок в передаваемый поток данных.
На приемной стороне проверяй. Вот и весь алгоритм.


 
iskatel ©   (2005-06-03 15:51) [7]

на кой икс флажок? просто в полученной строчки ищешь комбинации символов образующих смайлики...


 
Alexander Panov ©   (2005-06-03 15:58) [8]

iskatel ©   (03.06.05 15:51) [7]

А на такой, что такая комбинация символов - не обязательно смайлик.


 
Eraser ©   (2005-06-03 16:00) [9]

Alexander Panov ©   (03.06.05 15:58) [8]

Не... iskatel ©   (03.06.05 15:51) [7] прав, никаких флажков там нету, т.к. даже если вручную набрать смайли - его преобразует в картинку.


 
Kerk ©   (2005-06-03 16:02) [10]

Флажков там нету :)) идет простой текст вида :) :( и и.д... как юзер миранды хорошо с этим знаком :)) Периодически набиваю вещи вроде *JOKINGLY* :))))


 
Fay ©   (2005-06-03 16:14) [11]

(.)(.) Ms. Dos


 
Alexander Panov ©   (2005-06-03 16:36) [12]

Eraser ©   (03.06.05 16:00) [9]
никаких флажков там нету, т.к. даже если вручную набрать смайли - его преобразует в картинку.


Причем здесь "Там"?
Человеу надо сделать подобную вещь, как я понимаю.
И делать надо не как там, а как правильно.


 
Игорь Шевченко ©   (2005-06-03 16:39) [13]

Alexander Panov ©   (03.06.05 16:36) [12]


> И делать надо не как там, а как правильно.


Посмотри протокол мастаковского чата. Смайлики есть, а невидимых флажков нету.


 
Eraser ©   (2005-06-03 16:43) [14]

Alexander Panov ©   (03.06.05 16:36) [12]

По той же причине, что я написал в [9] по-другому сделать нельзя, т.к. некоторым пользователям, например Kerk"у удобнее "набирать" смайлик вручную, при этом не о каких флажках не может быть и речи.

Другой вопрос это обратное преобразование. ICQ клиент (и не только, VyPress тоже так умеет) умеет "преобразовывать" картинку-смайлик в текстовый смайлик, т.е. в картинках-смайликах есть какие-то иднтификаторы... так и не разобрался как оно сделано.. если кто знает раскажите, буду очень благодарен ;-)


 
Игорь Шевченко ©   (2005-06-03 16:52) [15]

Eraser ©   (03.06.05 16:43) [14]


> это обратное преобразование


Какое обратное преобразование ? Ты о чем ? Картинки возникают только в момент отображения сообщения.


 
Eraser ©   (2005-06-03 16:55) [16]

Игорь Шевченко ©   (03.06.05 16:52) [15]

Не... когда в ICQ-клиенте в менюшке выбираешь смайлик - он появляется в тексте отправителя в ГРАФИЧЕСКОМ виде, т.е. картинкой. Если эту картинку перетащит на какой-нибудь RichEdit, например WordPad, то картинка преобразуется в текстовое представление... попробуйте.


 
Gero ©   (2005-06-03 17:00) [17]


> Alexander Panov ©   (03.06.05 16:36)

Это смотря что требуется.
Если нужно преборазование текста в смайлы — то флажки не нужны.
Если предполагается, что юзер будет каждый раз наживать «вставить смайл», то нужны. Но это не очень удобно.


 
BasiL_666_ ©   (2005-06-03 17:02) [18]

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


 
Eraser ©   (2005-06-03 17:06) [19]

BasiL_666_ ©   (03.06.05 17:02) [18]

Дык не везде вставляются текстовые варианты, ICQ 2003, 4, 5 видел? При нажатии "вставить смайл" вставляется картинка.


 
Игорь Шевченко ©   (2005-06-03 17:09) [20]

Eraser ©   (03.06.05 17:06) [19]


> При нажатии "вставить смайл" вставляется картинка.


Отображается, а не появляется. Почувствуйте разницу.


 
Eraser ©   (2005-06-03 17:16) [21]

Игорь Шевченко ©   (03.06.05 17:09) [20]

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


 
Игорь Шевченко ©   (2005-06-03 17:20) [22]

Eraser ©   (03.06.05 17:16) [21]


>  только где вот этот текст хранится...


Внутре :) Путешествует промеж клиентом и сервером и обратно.


 
BasiL_666_ ©   (2005-06-03 17:39) [23]

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


 
Alexander Panov ©   (2005-06-03 17:44) [24]

Ну так про то и речь идет.
ICQ-клиенту без разницы, что ъхотел пользователь. Если в тексте встретится определенная комбинация символов, он смайл отобразит. Но это ведь неправильно.


 
Eraser ©   (2005-06-03 17:46) [25]

BasiL_666_ ©   (03.06.05 17:39) [23]
вставляетсмя в любом случае текстовый вариант смайла


Куда вставляется?

передается тоже текстовый вариант

Откуда передаётся?


 
Eraser ©   (2005-06-03 17:47) [26]

BasiL_666_ ©   (03.06.05 17:39) [23]

Ты хочешь сказать, что имеется скрытая копия редактора ввода, где смайлы всегда текстовые... врядли.


 
BasiL_666_ ©   (2005-06-03 17:49) [27]

куда те нада туда и вставляется (Memo, RichEdit и тд..)...
а передается по сети или по инету все зависит от клиента...
наскока я понял делается именно сообственный ICQ-клиент...


 
Eraser ©   (2005-06-03 17:51) [28]

BasiL_666_ ©   (03.06.05 17:49) [27]

Делается новая версия одной моей проги ) не, с ICQ пока не связано...


 
BasiL_666_ ©   (2005-06-03 17:52) [29]

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


 
Eraser ©   (2005-06-03 17:55) [30]

BasiL_666_ ©   (03.06.05 17:52) [29]
я не понимаю а в чем может быть проблема при написание сообщения заменять их сразу на картинки???


Да хочется, чтобы при написании сообщения, если выбрать в меню картинку-смайл вставлялась НЕ надпись *LOL*, а картинка, как в ICQ.


 
Игорь Шевченко ©   (2005-06-03 17:58) [31]

Eraser ©   (03.06.05 17:55) [30]

В ICQ вставляется надпись. Которая отображается, как картинка.


 
Eraser ©   (2005-06-03 18:00) [32]

Игорь Шевченко ©   (03.06.05 17:58) [31]

А как это можно самому организовать? Возможно ли это сделать на базе TJvRichEdit?


 
BasiL_666_ ©   (2005-06-03 18:01) [33]

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


 
Alexander Panov ©   (2005-06-03 18:09) [34]

Eraser ©   (03.06.05 18:00) [32]

Да реализвать можно как угодно.
Тот же клиент ICQ хранит информацию, связанную с любым отображаемым объектом.

Точно так же реализуется и для своей реализации.
Отрисовываешь рисунок на канве - в массиве сохраняешь свойства этого рисунка(ам же хранятся и координаты рисунка, естественно).
При начале Drag извлекатеся информация из этого массива.


 
Alexander Panov ©   (2005-06-03 18:10) [35]

Eraser ©   (03.06.05 18:00) [32]
я так полагаю это трудно реализуемо


Это не сложно.


 
Eraser ©   (2005-06-03 18:11) [36]

BasiL_666_ ©   (03.06.05 18:01) [33]

Просто в посте [29] ты напсал 2 противоречащие друг другу мысли "заменять их сразу на картинки" и "то есть вставляется не картинка, а ее текстовый вариант" прочитал это несклько раз, так и не понял, что ты имел ввиду.


 
Alexander Panov ©   (2005-06-03 18:14) [37]

Eraser ©   (03.06.05 18:11) [36]

Для того, чтобы понять раз и навсегда, поробуй определить проблемы с написанием собственного редактора. Причем использовать только канву без готовых редакторов.

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


 
Eraser ©   (2005-06-03 18:14) [38]

Alexander Panov ©   (03.06.05 18:09) [34]

О, это уже ближе к телу )
Просто хотелось бы на 100% узанть, что не сществует типовых вариантов.
А насчёт координат - опять же врядли... в том, то и проблема - идентифицировать рисунок.

Буду разбираться.


 
Eraser ©   (2005-06-03 18:16) [39]

Alexander Panov ©   (03.06.05 18:14) [37]

Класс окна ввода в ICQ 5 - RichEdit20A....


 
Alexander Panov ©   (2005-06-03 18:18) [40]

Eraser ©   (03.06.05 18:14) [38]
А насчёт координат - опять же врядли... в том, то и проблема - идентифицировать рисунок.


Ну вот. Опять снова то же самое.

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

Как минимум, в этой структуре хранятся:
 позиция для отображения на канве(x,y)
 размеры либо ссылка на исходный объект.

При любых перерисовках канвы эти сруктуры динамически изменяются для актуализации тех же координат отображения на канве.

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


 
Eraser ©   (2005-06-03 18:22) [41]

Alexander Panov ©   (03.06.05 18:14)

Полностью согласен. Так делается, если писать тестовый редактор с нуля. Но ICQ-редактор НЕ написан с нуля см. [39].


 
Alexander Panov ©   (2005-06-03 18:30) [42]

Eraser ©   (03.06.05 18:22) [41]
Но ICQ-редактор НЕ написан с нуля см.


а при чем тут ICQ?
Если надо вытаскивать именно из ICQ-клиета, то необходимо разобраться, как хранятся данные в его редакторе в исходном коде.


 
Eraser ©   (2005-06-03 18:37) [43]

Alexander Panov ©   (03.06.05 18:30) [42]
а при чем тут ICQ?


ICQ при том, что использует тот же компонент, что и обёртка TJvRichEdit, а именно RichEdit20A, соответственно "как хранятся данные в его редакторе" относится не к коду ICQ, а к коду этого самого RichEdit20A, соответственно, это можно сделать и через TJvRichEdit или напрямую обращаясь к RichEdit20A через дескриптор в TJvRichEdit, весь вопрос "как"...


 
Игорь Шевченко ©   (2005-06-03 21:50) [44]

Eraser ©   (03.06.05 18:37) [43]

Можно сделать. Как - очень просто, ищещь способ вставить в RichEdit картинку, находишь его, потом, анализируя текст, который надо вставить в RichEdit, вместо нужных фрагментов текста вставляешь картинки найденным выше способом. Собственно так же, как любой browser видя тэг <img> вставляет вместо него картинку :)

Hint: html-страницы внутрь себя картинку не вставляют, являясь текстом :) В них картинка указывается именем файла. Тебе проще, так как набор смайликов ограничен, то для того, чтобы вставить смайлик, достаточно его кода (например ":)"), по которому ты его однозначно идентифицируешь.


 
Eraser ©   (2005-06-03 22:12) [45]

Игорь Шевченко ©   (03.06.05 21:50) [44]

ищещь способ вставить в RichEdit картинку


Нашёл. Метод InsertBitmap, основанный на технологии OLE.

procedure TJvCustomRichEdit.InsertBitmap(ABitmap: TBitmap; const Sizeable: Boolean);
var
 OleClientSite: IOleClientSite;
 Storage: IStorage;
 OleObject: IOleObject;
 ReObject: TReObject;
 DataObject: IDataObject;
 Selection: TCharRange;
 FormatEtc: TFormatEtc;
begin
 if HandleAllocated and Assigned(FRichEditOle) then
 begin
   DataObject := TImageDataObject.Create(ABitmap);

   FillChar(ReObject, SizeOf(TReObject), 0);
   IRichEditOle(FRichEditOle).GetClientSite(OleClientSite);
   Storage := nil;
   OleObject := nil;
   try
     CreateStorage(Storage);

     FormatEtc.cfFormat := CF_METAFILEPICT;
     FormatEtc.ptd := nil;
     FormatEtc.dwAspect := DVASPECT_CONTENT;
     FormatEtc.lindex := -1;
     FormatEtc.tymed := TYMED_MFPICT;

     OleCheck(OleCreateStaticFromData(DataObject, IOleObject, OLERENDER_FORMAT,
       @FormatEtc, OleClientSite, Storage, OleObject));
     OleSetContainedObject(OleObject, True);
     try
       FillChar(ReObject, SizeOf(TReObject), #0);
       with ReObject do
       begin
         cbStruct := SizeOf(TReObject);
         cp := REO_CP_SELECTION;
         poleobj := OleObject;
         OleObject.GetUserClassID(clsid);
         pstg := Storage;
         polesite := OleClientSite;
         dvAspect := DVASPECT_CONTENT;
         if Sizeable then
           dwFlags := REO_RESIZABLE;
         //OleCheck(OleSetDrawAspect(OleObject,
         //  Data.dwFlags and PSF_CHECKDISPLAYASICON <> 0,
         //  Data.hMetaPict, dvAspect));
       end;
       SendMessage(Handle, EM_EXGETSEL, 0, Longint(@Selection));
       Selection.cpMax := Selection.cpMin + 1;
       OleCheck(IRichEditOle(FRichEditOle).InsertObject(ReObject));
       SendMessage(Handle, EM_EXSETSEL, 0, Longint(@Selection));
       IRichEditOle(FRichEditOle).SetDvaspect(
         Longint(REO_IOB_SELECTION), ReObject.dvAspect);
     finally
       ReleaseObject(OleObject);
     end;
   finally
     ReleaseObject(OleClientSite);
     ReleaseObject(Storage);
   end;
 end;
end;


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

Проанализировал, вставил.
А вот дальше проблема. Как отправалять данный текст. Есть 2 варианта:
1. Сохранять все данные rtf вместе с вндрёнными объектами, то бишь рисунками и отправлять. Этот вариант сейчас рабочий.
2. Преобразовывать картинки в текстовое представление и отправлять rtf без объектов (картинок), как это делает ICQ.

Хотелось бы применять 2 вариант. Но опять же повторюсь, проблема в идентификации УЖЕ вставленных смайликов, которые НЕ в виде *LOL* , а ввиде объектов (картинок).

Надеюсь на этот раз я понятно объяснил проблему ;-)


 
Игорь Шевченко ©   (2005-06-03 22:20) [46]


> Проанализировал, вставил.
> А вот дальше проблема. Как отправалять данный текст.


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


 
Eraser ©   (2005-06-03 22:33) [47]

Игорь Шевченко ©   (03.06.05 22:20) [46]

Эх... хотелось бы отправлять! ) Да где его взять то.
Тем более трюки в ICQ с перетаскиванием смайлика на другой контрол, о которых я писАл наводят на мысль, что инф-я о смайлики хранится в самом объекте рисунке, и этот объект имеет свойство в котором эта инфа хранится, а не в каком-то стороннем массиве с координатами.
ИМХО есть способ без изобретения велосипедов.
К сожалению с OLE знаком очень плохо.. :*(

Игорь Шевченко ©   (03.06.05 21:50) [44]
Hint: html-страницы внутрь себя картинку не вставляют, являясь текстом :) В них картинка указывается именем файла. Тебе проще, так как набор смайликов ограничен, то для того, чтобы вставить смайлик, достаточно его кода (например ":)"), по которому ты его однозначно идентифицируешь.


Насчёт HTML я подумывал, но пока что считаю, что RichEdit использовать удобнее. Тем более подкуает, что аська и VyPress Chat построены на RichEdit, а это лучшие прграммы в своих областях.


 
Игорь Шевченко ©   (2005-06-03 22:49) [48]

Eraser ©   (03.06.05 22:33) [47]

HTML - это данные.
RichEdit - элемент отображения данных.

Неужели трудно увидеть разницу ? Например, если тебе нужно передать данные для построения диаграммы в Excel, ты же передаешь набор значений, а не снимаешь ее изображение Print Screen"ом, и не передаешь получившееся изображение, правильно ?
Тоже самое и тут - то, что передается, отличается от того, каким образом оно отображается.


> аська и VyPress Chat построены на RichEdit


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


 
Eraser ©   (2005-06-03 22:57) [49]

Игорь Шевченко ©   (03.06.05 22:49) [48]
HTML - это данные.
RichEdit - элемент отображения данных.


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

Возьмём опять же пример с перетаскиванием. Пользователь ведь не нажимает, какую-то "левую" кнопку, чтобы перетащить выделеный смайл на другой контрол, он перетаскивает ОТОБРАЖАЕМЫЙ элимент..., в свою очередь RichEdit (т.е. интерфейс взаимодействия) может подменить этот элимент нужными текстовыми данными.
Проблема в том, что я не знаю как пользоваться этой "интерфейсной" возможность.


 
Игорь Шевченко ©   (2005-06-03 23:05) [50]

Eraser ©   (03.06.05 22:57) [49]

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


 
Eraser ©   (2005-06-03 23:14) [51]

Игорь Шевченко ©   (03.06.05 23:05) [50]

Так я ж имею ввиду обратный процесс. Возмём для "понятности" ту же ICQ.
Имеется контрол ввода сообщения, которое нужо отправить. Имеется меню, в котором отображены смайлика. Мы вибираем из этого меню нужный смайлик и он в графическом виде отображается на контроле ввода. Далее наводим мышу на этот смайлик и перетаскиваем в WordPad, там отображается смайлик в текстовом виде, т.е. :-).
Понятно что в момент начала операции dragNdrop ICQ подменила выделенный OLE объект-рисунок, на текст, но вопрос в том, откуда она ICQ узнала о том, что перетаскивается именно объект, обозначающий какой-то конкретный определённый смайлик ":-)"? Меня интерсует именно техническая сторона вопроса...


 
Игорь Шевченко ©   (2005-06-03 23:31) [52]


> на текст, но вопрос в том, откуда она ICQ узнала о том,
> что перетаскивается именно объект, обозначающий какой-то
> конкретный определённый смайлик


Определила, в какой позиции в RichEdit был перетаскиваемый объект, рассчитала длину текста, проанализировала текст в этом месте, отдала.


 
Eraser ©   (2005-06-03 23:38) [53]

Игорь Шевченко ©   (03.06.05 23:31) [52]

Чтож - логично... похоже на правду, почему бы и нет... Буду подробно разбираться в механизме dragNdrop.
Если у кого есть полезные ссылки по этой теме, буду признателен.


 
Игорь Шевченко ©   (2005-06-03 23:50) [54]


> Если у кого есть полезные ссылки по этой теме


Есть статья MBo на этом сайте в разделе "Статьи"


 
Eraser ©   (2005-06-03 23:59) [55]

Игорь Шевченко ©   (03.06.05 23:50) [54]

Статья хорошая, правда в моём случае нужен OLEDragNDrop.


 
аматор ©   (2005-06-04 10:37) [56]

http://www.everaldo.com/ - эт прога смахивающая на аську
зайди и полазь
там даже исходники


 
аматор ©   (2005-06-04 10:40) [57]

ссори сылки сплутал http://dmess.ytu.ru/


 
Eraser ©   (2005-06-04 13:39) [58]

аматор ©   (04.06.05 10:40) [57]

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



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

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

Наверх




Память: 0.62 MB
Время: 0.046 c
5-1087463513
Axar
2004-06-17 13:11
2005.06.29
Как соханять в файл StringGrid ?


1-1118288871
TUser
2005-06-09 07:47
2005.06.29
Глюк консольного компилятора?


14-1117554968
Новичоккк
2005-05-31 19:56
2005.06.29
Простой вопрос по ASM


1-1117779723
Хочу все знать
2005-06-03 10:22
2005.06.29
Взаимодействие приложения и нескольких dll


14-1117695099
Суслик
2005-06-02 10:51
2005.06.29
вроде смешно :)





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