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

Вниз

Как проще всего преобразовать программу в компонент ?   Найти похожие ветки 

 
Кен   (2003-06-29 05:45) [0]

Один TEdit, одна кнопка, один ЛистБокс. И вся программа. Есть ли какие нибудь конверторы для преобразования её в компонент ? Или как это проще сделать ?
Как вообще лучше отлаживать компоненты ? Перекомпилировать каждый раз, загружать программу которая компонент испоьзует, потом выгружать и опять перекомпелировать ? Очень муторно это.

Или добавить там таймер в компонент. Почему нельзя просто перетащить его мышью на форму ? Почему так всё сложно ? Или я просто чего то не знаю ?


 
Юрий Зотов   (2003-06-29 09:45) [1]

> Есть ли какие нибудь конверторы для преобразования её в
> компонент?
Нет.

> Или как это проще сделать?
Для D5 и выше - оформить все это в виде фрейма (см. TFrame) и зарегистрировать его в палитре. Для D4 и ниже - написать комбинированный компонент. В любом случае - ручками.

> Как вообще лучше отлаживать компоненты?
Так же, как и программы - головой и дебаггером. В run-time можно встроенным, в design-time - только внешним. Но в первую очередь все-таки головой.

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

> Или добавить там таймер в компонент. Почему нельзя просто
> перетащить его мышью на форму?
А где у компонентов форма? Вот, например, TLabel - это компонент. Где у него форма?

> Почему так всё сложно?
Потому что это и есть программирование. А таскание компонентов по форме - это НЕ программирование.

> Или я просто чего то не знаю?
Да. Вы не знаете, что такое компонент и что такое программирование.


 
Bayer_Linse   (2003-06-29 10:03) [2]

> Или добавить там таймер в компонент. Почему нельзя просто
> перетащить его мышью на форму?
> А где у компонентов форма? Вот, например, TLabel - это компонент. Где у него форма?

Никак нет. Не могу согласиться. В Visual Studio .NET реализована возможность перетаскивания компонентов на форму с components bar.


 
Anatoly Podgoretsky   (2003-06-29 10:18) [3]

В дельфи тоже можещь перетаскивать компоненты на форму с components bar.


 
Юрий Зотов   (2003-06-29 10:36) [4]

> Bayer_Linse © (29.06.03 10:03)

> В Visual Studio .NET реализована возможность перетаскивания
> компонентов на форму с components bar.

Ну что ж, тогда остается только поздравить разработчиков этой замечательной штуки. Не прошло и 10 лет после появления Delphi - и вот, пожалуйста - сделали то же самое. Уря!

Правда, непонятно, при чем тут сабж.


 
Palladin   (2003-06-29 12:45) [5]


> Bayer_Linse © (29.06.03 10:03)

ну сказал... и это на этом форуме... :)


 
Кен   (2003-06-30 01:46) [6]

> Юрий Зотов © (29.06.03 09:45)
> > Очень муторно это.
> Писать программы - это вообще довольно кропотливое занятие.
> Впрочем, никто ведь не заставляет.

Я говорил про постоянную переустановку компонента после внесения в него изменений.

> > Или добавить там таймер в компонент. Почему нельзя просто
> > перетащить его мышью на форму?
> А где у компонентов форма? Вот, например, TLabel - это компонент.
> Где у него форма?

А у меня панель. На панель можно и Лэйбл и Эдит, и ещё кучу всего накидать.

> > Почему так всё сложно?
> Потому что это и есть программирование. А таскание компонентов
> по форме - это НЕ программирование.

Не программирование, а упрощение рутинных операций, экономия времени и уменьшение колличества ошибок.

А заводить машину стартёром - это автомобилизм или ламерство ? Наверно настоящие автомобилисты должны заводить машину только с толчка.

> > Или я просто чего то не знаю?
> Да. Вы не знаете, что такое компонент и что такое программирование.

А вы похоже не знаете что такое отвечать за хамство ?


> Anatoly Podgoretsky © (29.06.03 10:18)
> В дельфи тоже можещь перетаскивать компоненты на форму с
> components bar.

А как мне это сделать при написании компонента ?


 
Юрий Зотов   (2003-06-30 04:12) [7]

> Кен © (30.06.03 01:46)

> Я говорил про постоянную переустановку компонента после
> внесения в него изменений.

Один клик мышью по кнопке Compile в окне пакета. Архисложно и архидолго.


> А у меня панель. На панель можно и Лэйбл и Эдит, и ещё кучу
> всего накидать.

Если есть форма. А если ее нет, то нельзя. У компонентов форм нет. Значит, нельзя. Даже и на панель.


> Не программирование, а упрощение рутинных операций, экономия
> времени и уменьшение колличества ошибок.

Вы говорили о разработке компонентов. Это не есть рутинная операция.


> А заводить машину стартёром - это автомобилизм или ламерство?
> Наверно настоящие автомобилисты должны заводить машину только
> с толчка.

Настоящие автомобилисты должны ЗНАТЬ, как завести машину с толчка и ПОНИМАТЬ, что при этом происходит в ее недрах. Если, конечно, они настоящие, а не только стартер с баранкой крутить умеют.


> А вы похоже не знаете что такое отвечать за хамство?

Я сказал правду. Доказательство - Ваши вопросы. Если правда не нравится, то это еще не значит, что Вам хамят.


>> В дельфи тоже можещь перетаскивать компоненты на форму с
>> components bar.
> А как мне это сделать при написании компонента ?

Вот это и есть прямое доказательство моих слов. Причем, не первое.


> По сабжу.

Если Вы действительно хотите написать комбинированный компонент, то о набрасывании чего-то там на форму забудьте сразу. Пока не забудете - ничего не напишете, это совершенно точно. Либо фрейм, либо ручками - о чем Вам уже говорилось. Еще можно использовать эксперт CCPack Сергея Орлика. Но о формах забудьте в любом случае.


 
Кен   (2003-06-30 05:40) [8]

> Юрий Зотов © (30.06.03 04:12)
> > А вы похоже не знаете что такое отвечать за хамство?
> Я сказал правду. Доказательство - Ваши вопросы. Если правда
> не нравится, то это еще не значит, что Вам хамят.

Ну давайте. Доказывайте, что матив моих вопросов - незнание, а не иные причины.

Раз вы такой правдолюб, то и я вам скажу правду.

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


 
AZ   (2003-06-30 05:51) [9]

>Кен © (30.06.03 05:40)
Не делайте волны, юноша.
Зотов сказал Вам о вашем уровне знаний горькую правду.

О предмете.
Найдите книгу Рэя Конопки "Написание компонентов..." (точного названия к сожалению, не помню). Лучшей книги на эту тему мне не попадалось.
Прочитав ее, Вы сами придете к тому же выводу, что высказал Ю.Зотов.


 
Palladin   (2003-06-30 08:04) [10]


> Кен © (30.06.03 05:40)

Мотив твоих вопросов не незнание, а, как было уже указано, сверхтяга к утопическому программизму, коим ты стремишься заниматся... Сколько можно жить с вопросом "для чего все делать, если можно использовать уже сделаное?", это справедливо не во всех случаях. Или у вас там секта утопических артпрогеров, которые мечтают когда IDE можно будет рассказать что хочется и она сама все сварганит? Сколько раз уже ты поднимал эту тему и, заметь, ни одного человека принявшего твою сторону здесь не нашлось. Ибо здесь больше программистов-практиков, чем программистов-теоретиков. Для чего ты тогда вообще практическим программированием занялся? Сиди придумывай как надо, а когданибудь практики возьмут чтонибудь из твоих идей и реализуют, но не все, ибо если взять и реализовать все твои идеи, то львинная доля их (практиков) останется без работы.
Так что либо, действительно, смени род занятий, либо получай на каждом шагу поучения на счет того, что же есть программирование на практике.


 
Zergling   (2003-06-30 08:35) [11]

> Юрий Зотов © (30.06.03 04:12)

> Кен © (30.06.03 01:46)

> Я говорил про постоянную переустановку компонента после
> внесения в него изменений.

> Один клик мышью по кнопке Compile в окне пакета. Архисложно и > > архидолго.

Лень кнопку давить, пущай динамически компонент для теста в проекте создает.


 
Anatoly Podgoretsky   (2003-06-30 09:02) [12]

Кен © (30.06.03 01:46)
А никак или пиши эксперта под свой компонент.


 
cyborg   (2003-06-30 10:47) [13]

Местная сказка про Ивана Дурака :).
Кен иди сходи на пруд и поймай щуку, все твои желания исполнятся, будешь на печи бока пролёживать и программы выпускать конвеером.


 
Юрий Зотов   (2003-06-30 11:36) [14]

> Кен © (30.06.03 05:40)

> Ну давайте. Доказывайте, что матив моих вопросов - незнание, а
> не иные причины.

Зачем еще раз доказывать то, что Вы уже сами своими собственными вопросами вполне успешно доказали?


> Раз вы такой правдолюб, то и я вам скажу правду.
> Правда в том, что Вы любитель самоудовлетворения.

Совершенно верно, это истинная правда. Причем самое большое самоудовлетворение я получаю, когда удается хорошо сделать сложную работу. В том числе, хорошо написать сложный компонент.

Но есть одна неточность. Я в этом деле все же не любитель, а профессионал. Поскольку получаю самоудовлетворение за зарплату.


> Ибо я вас не спрашивал знаю я что такое программирование, или
> нет.

Неправда. Спрашивали. Цитирую:
> Кен © (29.06.03 05:45)
> Или я просто чего то не знаю?


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

=============

Сказано и разжевано уже все. Толку нет. Видимо, и не будет, ибо уровень амбиций значительно выше уровня знаний. Значит, пора заканчивать. Так что, если уж Вам так угодно, Вы пока продолжайте преобразовывать программы в компоненты с помощью мыши, а я, с Вашего разрешения, откланяюсь и займусь чем-нибудь менее глобальным, но зато более полезным. Например, книжку по программированию почитаю. Чтобы лучше понять "почему все так сложно".


 
k-man   (2003-06-30 11:39) [15]

А кен и есть Емеля...


 
Кен   (2003-07-01 03:32) [16]

> Юрий Зотов © (30.06.03 11:36)
> > Кен © (30.06.03 05:40)
>
> > Ну давайте. Доказывайте, что матив моих вопросов - незнание,
> а
> > не иные причины.
>
> Зачем еще раз доказывать то, что Вы уже сами своими собственными
> вопросами вполне успешно доказали?

Матив моих вопросов может быть самый разный. Например, желание спровоцировать какого нибудь чудачка на приступ нарцисизма.


> Совершенно верно, это истинная правда. Причем самое большое
> самоудовлетворение я получаю, когда удается хорошо сделать
> сложную работу. В том числе, хорошо написать сложный компонент.
>
> Но есть одна неточность. Я в этом деле все же не любитель,
> а профессионал. Поскольку получаю самоудовлетворение за
> зарплату.

Передёргиваете. Речь не о зарпалате а о банальном хамстве через интернет и удовлетворении от невозможности того, что либо вас заставят за это извиняться, либо набьют морду ( на выбор ).


> Неправда. Спрашивали. Цитирую:
> > Кен © (29.06.03 05:45)
> > Или я просто чего то не знаю?
>
> В Вашем первом же посте содержалось семь прямых вопросов.
> На каждый из них я дал такие же прямые ответы. В том числе,
> и на этот.

Очередное передёргивание. Выдирание цитаты из контекста. Ну так чего же полностью то не процитировали ?

О чём можно говорить с тем кто постоянно передёргивает ? Ни о чём.


 
Asteroid   (2003-07-01 04:32) [17]

> Кен © (01.07.03 03:32)
Твоя проблема в том, что ты не хочешь искать знания. Ты хочешь, чтобы их дали тебе.
Впрочем, приятно видеть, что ты уже перешел от "нет ли где компонента" к "как написать компонент" :) Серьезно, прогресс. Так вот...
Чуть не забыл: программа и компонент - разные вещи, если ты этого не знал.

Нет никакой формы. Нет никакого окна. Добрые люди, которым ты по-хорошему должен был заплатить энную сумму денег, предоставили тебе базовую "обертку", чтобы ты не чувствовал себя слишком одиноко. Они вырастили целый огород всяких классов. Среди них, кстати, есть и класс формы. Вот только он тебе не нужен, потому что твой компонент - это не форма, а панель с другими компонентами, которую безвестный юзер положит на форму. Поэтому тебе и нужен класс TPanel, чтобы от него образовать новый, собственный - например, TKenPanel, на котором будут какие-то другие компоненты, объединенные известными только тебе связями.

Только одна проблема - нету визуальной части построения такого компонента. Наверное, разработчики решили, что те, кто пишут компоненты, знают, как они устроены. Они, видимо, ошиблись, но ты пока что считаешься исключением из правил. Как быть?

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

2. (по существу) Когда ты бросаешь компонент на форму, автоматически создается код, который тебе меперь придется написать самому. Что поделать - это и есть издержки быстрой разработки приложений; иначе тебе бы пришлось писать такой же код при написании любых программ.
1) создаешь новый класс, отходящий от TPanel, с именем, например, TKenPanel
2) вводишь в нем новые переменные с типами TEdit, TButton и TListBox, в количестве, соответствующем твоим требованиям (по штуке каждого типа) (я их буду называть Edit, Button и ListBox).
3) в конструкторе описываешь создание этих компонентов, в деструкторе их удаление. Не забудь их родителем указать Self, который относится в данном случае к TKenPanel. Задай также их местположение и свойства.
4) задай обработчики событий для того, что надо (думаю, этьо будет OnClick для кнопки). Описываю детальнее:
- пишешь procedure TKenPanel.ButtonClick( Sender: TObject ) так же, как ты бы ее писал для кнопки на форме. Вот только тут ты процедуру еще и создаешь - две строчки написать, одну я уже написал, другая почти такая же
- на создании TKenPanel задаешь Button.OnClick = ButtonClick; (вместо Button - имя переменной для кнопкой).
- собственно все. Дальше - только то, что ты бы написал в визуальном методе. Обращение к другим элементам - так же, как в визуальном методе. Все, что он тебе предоставил, ты можешь написать сам.
5) больше пунктов нет.

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


 
Anatoly Podgoretsky   (2003-07-01 08:00) [18]

Кен © (01.07.03 03:32)
Решение номер 1. Огласите список людей и ответов, которые тебе не могут отвечать.

Решение номер 2. Огласите список ответов, которые тебе нельзя давать.

Решение номер 3. Создайье свой приватный форум - это комплексное решение вместо номер 1 и 2.

Решнеия номер 4 и далее явно нереальные.


 
Кен   (2003-07-02 02:59) [19]

> Asteroid © (01.07.03 04:32)
> > Кен © (01.07.03 03:32)
> Поэтому тебе и нужен класс TPanel, чтобы от него образовать
> новый, собственный - например, TKenPanel, на котором будут
> какие-то другие компоненты, объединенные известными только
> тебе связями.

C TPanel, как и с TFrame, всё бы хорошо, но они непрозрачные. Поэтому нельзя положить лэйблы на панель, а панель на картинку, потому, что панель закроет картинку.
Я пытался найти на Торри прозрачные панели. Нормальноработающих не нашёл.
Пытался заменять
TFrame2 = class(TFrame) на
TFrame2 = class(TGraphicControl)
Ругается Дельфи. Видимо чего то ещё надо подправлять. Только непонятно чего.

Может есть какие-нбидуь преобрзаователи типа Frame2Component ?
--------
(по существу)
Я просто ищу простые решения. Жизнь слишком коротка, чтобы тратить её на геморой.


> Anatoly Podgoretsky © (01.07.03 08:00)
Решнеия номер 4 и далее явно нереальные.

Решение номер 5. Отпустить. И пусть всё идёт как идёт.


 
Asteroid   (2003-07-02 03:17) [20]

С чего ты решил, что Panel закроет Label?
Рисунок можно разместить и на панели.
И на что же оно ругается?
Преобразователей нет.
Одно дело геморрой, другое дело "база знаний".


 
Кен   (2003-07-02 03:38) [21]

> Asteroid © (02.07.03 03:17)
> С чего ты решил, что Panel закроет Label?

Я попробывал. Закрывает.

> Рисунок можно разместить и на панели.
Фрэймов много. Они все должны быть поверх одного рисунка. (или нескольких рисунков)

> на что же оно ругается?
Cannot paste a form or datamodule into another form or datamodule


 
k-man   (2003-07-02 09:48) [22]

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


 
Andryk   (2003-07-02 11:35) [23]

Напиши свой копонент от TWinControl, перекрой у него прорисовку, и рисуй его как хочешь хочешь прозрачным, хочешь полупрозрачным...

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

ЗЫ А если ты всетаки хочешь научится писать компоненты достань книгу Конопки.


 
Andryk   (2003-07-02 11:46) [24]

Да а если ты еще хочешь чтобы на твой копонент можно было кидать другие компоненты в дизайтайме, то его нужно сделать контейнером.
ControlStyle должен содержать csAcceptsControls.

И лучше наследоваться от TCustomControl, посмотри как написан TPanel.


 
Asteroid   (2003-07-02 16:21) [25]

> k-man © (02.07.03 09:48)
Да фиг с ним. Я даже не знаю, выйдет ли из меня хоть что-нибудь :) Код я все равно не пишу, почему бы и не объяснить челу в чем он неправ и как из этого выбраться. В конце концов, хоть что-то он уже написал - и явно хочет написать еще больше. Зачем же мешать человеку?


 
Кен   (2003-07-03 05:34) [26]

> Andryk © (02.07.03 11:35)
> А по поводу легких решений: Здесь нету людей которым больше
> нечего делать как писать за других программы или копоненты,
> у каждого есть свои дела.

А может есть ? А как же ПО с отрытыми исходниками ? Кто то же и зачем то их пишет. И не говорит, что есть более важные дела.


> Andryk © (02.07.03 11:35)
> Напиши свой копонент от TWinControl, перекрой у него прорисовку,
> и рисуй его как хочешь хочешь прозрачным, хочешь полупрозрачным...

> Да а если ты еще хочешь чтобы на твой копонент можно было
> кидать другие компоненты в дизайтайме, то его нужно сделать
> контейнером.
> ControlStyle должен содержать csAcceptsControls.
>
> И лучше наследоваться от TCustomControl, посмотри как написан
> TPanel.

На словах это всё сложно понять. Если бы был работающий пример с прозрачным фрэймом.
Кстати прозрачную форму я нашёл. В библиотеки JEDI JCL/JVCL , если кому надо.


 
Кулюкин Олег   (2003-07-03 09:29) [27]

2 Кен © (03.07.03 05:34)
> А как же ПО с отрытыми исходниками ? Кто то же и зачем то их пишет. И не говорит, что есть более важные дела.
:)))))))))))
Сам всегда понять пытался - кто их пишет и зачем


 
Кен   (2003-07-04 03:00) [28]

> Кулюкин Олег © (03.07.03 09:29)
> 2 Кен © (03.07.03 05:34)
> > А как же ПО с отрытыми исходниками ? Кто то же и зачем
> то их пишет. И не говорит, что есть более важные дела.
> :)))))))))))
> Сам всегда понять пытался - кто их пишет и зачем

Наверно причины разные. Например могут потому, что на Западе жизнь другая. У людей ( которые пишут ) всё есть, поэтому им ничего не жалко.

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

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

Если это OggVorbis, то это ещё и большая популярность. А она многим нравится сама по себе.

Надо Мистика спросит. Почему он свои шашки открыл.


 
Asteroid   (2003-07-04 03:54) [29]

> Кен © (04.07.03 03:00)
По-моему, когда пишут открытое ПО, ставят надпись вроде "Give credit where credit is due" - в общем, рассчитывают на сознательность пользователей.


 
kaif   (2003-07-04 04:07) [30]

У меня есть дельное предложение.
Значит так. Если ты считаешь, что такая технология очень нужна кому-нибудь кроме тебя, то предлагаю следующее решение.

1. Разбираешься в том, что такое COM и ActiveX, в частности.

2. Разбираешься в том, как писать эксперты для IDE Delphi.

3. Создаешь свой эксперт, который возьмет любую панель со всех хреномантией на ней, которую туда мышью напихали будущие потребители твоего эксперта и пускай этот эксперт сгенерит код ActiveX компонента, который на всякий пожарный будет еще иметь свойство Transparent, сделает для него стандартный TypeLibrary (или что там нужно для грамотного COM) и зарегистрирует его в COM-библиотеке. А если нужно что-то подправить, чтобы этот эксперт его перекомпилировал и с теми же GUID зарегистрировал в COM-библиотеке (хотя это некоторое нарушение спецификации COM - каждая версия должна быть навсегда и иметь свой GUID). В общем, если изучишь это все, то сам разберешься, что нужно конкретно для этой задачи.

4. Продаешь свой эксперт на свободном рынке и если ты тот гений, который понял, что это всем нужно, то станешь миллионером. А если его никто не купит, значит никому он на фиг не нужен. Весь этот подход. И тогда станет понятно, почему никто такой технологии пока не создал.

И наконец:
Возможно ты прав и эта технология нужна. Конечно, Зотов зря так резко выразился. Я скажу иначе. Если ты вправду веришь, что это кому-то нужно (хотя бы тебе самому) и если ты хочешь подойти профессионально, то у тебя хватит эрекции самому такое написать. А если не хватит - значит ты ошибался на счет того, что это так уж тебе нужно. И стоит это попробовать на практике для того, чтобы самому разобраться в своих мотивах. Уверяю тебя, что писать хорошие инструменты намного выгоднее, чем пользоваться готовыми. Как говорили на IBM "если сделать машину, на которой сможет работать каждый дурак, то только дурак и захочет на ней работать".

А вообще за такими технологиями будущее. Так как в будущем с компьютерами будут работать исключительно идиоты и те, кто стал таковыми, работая с компьютерами. :)

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



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

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

Наверх




Память: 0.58 MB
Время: 0.007 c
4-68135
Unknown user
2003-05-19 16:12
2003.07.21
Объясните, пожалуйста, как пользоваться SaveDC и RestoreDC.


1-67771
bestix
2003-07-07 15:31
2003.07.21
Изменить порядок Align


4-68106
_San_
2003-05-16 09:30
2003.07.21
Получить координаты мыши


3-67719
Till
2003-06-20 14:19
2003.07.21
IBDatabase


14-68045
Дмитрий К.К.
2003-07-04 06:24
2003.07.21
Именинники 4 июля





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