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

Вниз

Несколько вопросов по StringGrid   Найти похожие ветки 

 
_Guest_   (2008-07-02 11:57) [40]

Кстати, Дубна - это подмосковье? И чем примерно занимаьтся?


 
Ega23 ©   (2008-07-02 12:00) [41]


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


А ты зарегистрируйся и в анкету данные введи. Тогда всем будет понятно какой ты - молодой или старый. :)


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


Ну моё дело предложить...  :)


 
Ega23 ©   (2008-07-02 12:05) [42]


> Кстати, Дубна - это подмосковье? И чем примерно занимаьтся?


Там у нас сейчас центр программирования строят. Типа, одна из Медведевских программ. В Дубне, В Академгородке под Новосибом и где-то ещё. В принципе, судя по планам - город в городе будет. Строят в бешеном темпе, что крайне удивительно.
Уже сейчас потихоньку компании начинают перебираться: Luxsoft, Agava, StarSoft (это что-то питерское вроде...). По инсайдерской информации, зарплаты в целом у нормальных специалистов (IT-шников, естественно) уже сейчас от 35 до 50 тыр. Что будет, когда через пару лет первую очередь сдадут - неизвестно. Но, как мне кажется, хуже точно не будет...  :)


 
_Guest_   (2008-07-02 12:11) [43]

О-о! я тут пост один интересный для себя пропустил:
> Sergey13 ©   (02.07.08 10:47) [23]
> > [18] _Guest_   (02.07.08 10:35)> Мне не хватает только
> дерева с узлами в одном из столбцов.Это, ИМХО, немножко
> странное желание. Обычно (из того что я видел разумеется)
> грид привязывают к дереву в качестве рядом стоящего детализирующего
> прибамбаса. И это мне кажется логичным. Но вот показывать
> конкретно в гриде несколько деревьев - это как минимум дорого
> с точки зрения вычислений. В этом случае более логично сбоку
> (можно снизу 8-) от грида воткнуть какой-нибудь деревянный
> компонент и, лучше, если он будет срабатывать по отдельной
> кнопке.

Может натолкнете на идею, задача такова:
есть некие действия(задачи), каждое из которых может иметь подзадачи. Для этого нужно дерево. Все они имеют довольно много свойств, которые необходимо редактировать, таблица для этого необязательна, но можно в ней, а дальше из свойств подзадач вычисляются свойства их родителей и так вплоть до верхнего уровня. Пользователю хочется видеть сразу все элементы и все их свойства и тут же их менять. Если использовать связку дерева с таблицей, то я не могу придумать как их синхронизировать. Красиво, по крайней мере у меня, не получается. Набор свойств от уровня вложенности не зависит. Таблица мне кажется нагляднее, но если есть идеи буду благодарен.


 
Ega23 ©   (2008-07-02 12:17) [44]


> _Guest_   (02.07.08 12:11) [43]


У TTreeNode есть свойство Data, куда можно положить указатель на что угодно. Например, PInteger, по адресу которого лежит значение ключевого поля набора данных.
Также у TTreeView есть событие OnChangeNode.
Также у TTreeVew есть свойство Selected.


 
_Guest_   (2008-07-02 12:18) [45]


>Ega23 ©   (02.07.08 12:00) [41]
>А ты зарегистрируйся и
> в анкету данные введи. Тогда всем будет понятно какой ты
> - молодой или старый. :)

Да точно помню, что пару-тройку лет назад регистрировался, мыло не менялось, сейчас поискал по нему - нету. А бываю здесь редко и, как правило, читателем. Надо будет еще раз зарегистрироваться.
>Ну моё дело предложить...
>  :)

Так и за это спасибо :)


 
_Guest_   (2008-07-02 12:23) [46]


> Ega23 ©   (02.07.08 12:17) [44]
> > _Guest_   (02.07.08 12:11) [43]У TTreeNode есть свойство
> Data, куда можно положить указатель на что угодно. Например,
>  PInteger, по адресу которого лежит значение ключевого поля
> набора данных.Также у TTreeView есть событие OnChangeNode.
> Также у TTreeVew есть свойство Selected.

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


 
Anatoly Podgoretsky ©   (2008-07-02 15:12) [47]


> Ega23 ©   (02.07.08 11:21) [29]

За ваши деньги выполним любой каприз :-)


 
Sergey13 ©   (2008-07-02 15:18) [48]

> [43] _Guest_   (02.07.08 12:11)
> Может натолкнете на идею, задача такова:

Вообще-то недурно бы, ИМХО, завести СВОЮ ветку со СВОИМ вопросом. Хватит чужой топик насиловать. 8-)
В своем топике желательно обстоятельно рассказать про условия задачи, используемую СУБД и ь.д. и т.п.


 
_Guest_   (2008-07-02 16:44) [49]


> Sergey13 ©   (02.07.08 15:18) [48]
>Вообще-то недурно бы, ИМХО, завести СВОЮ
> ветку со СВОИМ вопросом. Хватит чужой топик насиловать.
> 8-)В своем топике желательно обстоятельно рассказать про
> условия задачи, используемую СУБД и ь.д. и т.п.

Да я еще в [30] предлагал переместиться куда-нибудь чтобы обсудить условия работы и финансы :). Ответ по компонентам, совмещающим свойства таблицы и дерева, я получил - бесплатного нет, про БД я ничего не говорил. Интересен Ваш [23], но там, в общем, все понятно. Спасибо за полезно и приятно проведенное время, пошел работать.


 
Sergey13 ©   (2008-07-02 16:56) [50]

> [49] _Guest_   (02.07.08 16:44)
> Ответ по компонентам, совмещающим свойства таблицы и дерева,
> я получил - бесплатного нет

Зато можно положить рядом два отдельных (при том возможно и бесплатных) компонента. 8-)


 
_Guest_   (2008-07-02 17:07) [51]


> Sergey13 ©   (02.07.08 16:56) [50]
> Зато можно положить рядом два отдельных (при том возможно
> и бесплатных) компонента. 8-)

Сергей, можно об этом в аське, а то правда некрасиво, тема то чужая?


 
MsGuns ©   (2008-07-02 17:22) [52]

Вот примерная схема использования мною гридов, "устаканенная" за 6 лет работы:

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

Таблица, редактируемая по принципу "объекта" (т.е. начал редактировать один объект - закончи) и отображающая данные ОДНОЙ ТАБЛИЦЫ БД (например, плоский справочник) - TDBGrid с ReadOnly = false. Сервисный "фарш"

То же самое, но с требованием управления транзакциями (контролем непосредственной записи данных в БД) - TDBGrid с ReadOnly = true и редактирование записей-объектов БД в модальном окне через обычные не DB-Aware контролы. Сервисный "фарш"

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

То же, но с графическими наворотами ("хитрые" или простые деревья, шаблоны, массивы и т.д.) -
TDrawGrid. Как правило, сервис не требуется

И еще. Для того чтобы реализовать поиск или сортировку в стрингриде хотя бы сопоставимую по скорости с ДБгридовой, надо очень хорошо попотеть. Поэтому в большинстве случаев достаточно вместо этого просто его (ДБгрид) и юзать


 
MsGuns ©   (2008-07-02 17:32) [53]

И вдогонку о компонентах.

Тут принято советовать всяческие сторонние компоненты, часто действительно хорошие и реально упрощающие разработку приложений (особенно интерфейсной части). Но я бы прежде чем "скачать, установить и не мучиться" подумал бы о последствиях - как только Вы используете сторонний компонент в своем проекте, с этого момента он перестанет компиллиться без этой библиотеки. А если таких библиотек - эн штук ? Ничего страшного, конечно, но только до тех пор, пока Вы проектируете в ЭТОЙ ДЕЛЬФЕ и на ЭТОМ ПК. Любой "переезд" чреват тем, что все Ваши распрекрасые проекты вместе с расудесными гридами, овальными кнопками и прозрачными "под мыльную пену" панельками станут просто не редактируемы. И для их "оживления" надо будет доустановить все библиотеки, компоненты которых Вы использовали в проекте.
Другими словами, если используемая Вами среда суть что-то постоянное (например, в отделе, где Вы работаете, эти компоненты являются частью стандарта) либо разрабатываемый проект "разовый" - сделал-отдал-забыл, тогда смело пользуйтесь. В других случаях я бы советовал поостеречься.


 
Sergey13 ©   (2008-07-03 08:48) [54]

> [51] _Guest_   (02.07.08 17:07)

Лучше здесь. Тем более, что обсуждение худо бедно идет.


 
clickmaker ©   (2008-07-03 09:34) [55]

Насчет "чем плохо редактировать в гриде".
Если объект сильно структурированный, т.е. свойства можно разложить по категориям, то ИМХО его удобней редактировать в модальной форме с закладками.
Можно, конечно, и в гриде замутить группирование подзаголовков, но во-первых, стандартный грид этого не умеет, во-вторых, при большом количестве полей все равно не наглядно.
К тому же, в форме проще делать валидацию, обозначать обязательные поля и все такое прочее.


 
Игорь Шевченко ©   (2008-07-03 09:54) [56]

clickmaker ©   (03.07.08 09:34) [55]


> Насчет "чем плохо редактировать в гриде".
> Если объект сильно структурированный, т.е. свойства можно
> разложить по категориям, то ИМХО его удобней редактировать
> в модальной форме с закладками.
> Можно, конечно, и в гриде замутить группирование подзаголовков,
>  но во-первых, стандартный грид этого не умеет, во-вторых,
>  при большом количестве полей все равно не наглядно.


Марксизм не догма, а руководство к действию. Почему из-за неудобства редактировать сложный объект с закладками в гриде делается вывод о неудобстве редактирования в гриде вообще чего-либо, я не совсем понимаю.
Кстати, в той же упоминаемой неоднократно MsMoney в гриде есть гайка - редактировать отдельно или в гриде. Но при том, никаких модальных форм в ней не появляется, просто внизу открывается подвал для редактирования (кстате, с закладками), и если тебе вольно покинуть страницу в гриде, то ты ее, соответственно, покидаешь (правда можешь вернуться назад и продолжить редактирование). А не вернулся - считается, что нажал на кнопку Cancel. Работать весьма удобно.


 
_Guest_   (2008-07-03 10:10) [57]

Ладно, раз обсуждение худо бедно идет, то продолжим. Посылы MsGuns © поняты и приняты к сведению.
Вопрос: как можно в гриде реализовать простенькую группировку строк по одному фиксированному столбцу? БД нет, столбцов с десяток, строк около 30, максимум 50. Количество уровней вложенности теоретически не ограничено, практически же 2-4. Сортировки и поиски не требуются. Это что то вроде плана работ с вычислением время- и трудозатрат и отслеживанием финансирования.


 
Sergey13 ©   (2008-07-03 10:19) [58]

> [57] _Guest_   (03.07.08 10:10)

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


 
Anatoly Podgoretsky ©   (2008-07-03 10:21) [59]

> _Guest_  (03.07.2008 10:10:57)  [57]

Группировка - это что?


 
MsGuns ©   (2008-07-03 10:22) [60]

>_Guest_   (03.07.08 10:10) [57]

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


 
Anatoly Podgoretsky ©   (2008-07-03 10:23) [61]


> Данных в гриде нет.

Мы вроде про StringGrid говорим? Не так ли?


 
Sergey13 ©   (2008-07-03 10:29) [62]

> [61] Anatoly Podgoretsky ©   (03.07.08 10:23)
> Мы вроде про StringGrid говорим? Не так ли?

Да я уже честно говоря запутался о чем мы говорим. Начали вроде со стринггрида, потом вроде переходили на ДБгрид.

Потому и предлагал _Guest_у организовать свою ветку с нормальным описанием условий.


 
Anatoly Podgoretsky ©   (2008-07-03 10:32) [63]

> Игорь Шевченко  (03.07.2008 9:54:56)  [56]

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


 
Anatoly Podgoretsky ©   (2008-07-03 10:34) [64]

> Sergey13  (03.07.2008 10:29:02)  [62]

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


 
_Guest_   (2008-07-03 10:51) [65]


> Sergey13 ©   (03.07.08 10:19) [58]
> Почему то мне кажется,
> что твоя задача идеально решается в екселе.Ты все хочешь
> из грида сделать некий инструмент для манипулирования данными.
>  А он изначально предназначен только для их визуализации.
>  Данных в гриде нет.

Заказчик не хочет покупать ексель :), но хочет получить некие вещи, которые в екселе можно сделать, тоько если его хоть немного знать, а это уже труд.
Есть такой грех: хочу немного поманипулировать данными в StringGrid"е. Но совсем немного, в основном отображать: пользователь видит все и только пометки ставит, и очередность, и прошла ли оплата.

> MsGuns ©   (03.07.08 10:22) [60]

Объекты имеют свою структуру общую для всех. Эта структура не является частью другой. На мой взгляд объекты линейны (возможно я не владею терминологией). Объекты созданы и существуют, имеют свойства парент и чилдкаунт.
Я все понял: зафиксирую нужный мне столбец и отрисую его сам, подставляя иконки свернутости/развернутости и отступы, а возможно даже линии вхождений. Просто была слабенькая надежда, что кто-нибудь когда-то это офрмил в компонент. Если все это доведу до ума и получится красиво, то выложу куда-нибудь, даже просто в качестве примера.


 
_Guest_   (2008-07-03 10:55) [66]


> Anatoly Podgoretsky ©   (03.07.08 10:34) [64]
> > Sergey13  (03.07.2008 10:29:02)  [62]Это конечно бардак
> использовать чужую ветку для своих целей, получается каша.
> Я вот теперь тоже не понимаю, а о чем мы говорим сейчас?
>

Я все время говорю о StringGride и тоже хотел уйти, но прислушался к старожилам [54].


 
Игорь Шевченко ©   (2008-07-03 11:20) [67]


> Заказчик не хочет покупать ексель :), но хочет получить
> некие вещи, которые в екселе можно сделать


пусть скачивает OpenOffice :)


 
Sergey13 ©   (2008-07-03 11:31) [68]

> [66] _Guest_   (03.07.08 10:55)

В [54], в ответ на предложение перейти в аську, я имел в виду форум (свою ветку), а не этот конкретный топик.

> [57] _Guest_   (03.07.08 10:10)
> БД нет

> [65] _Guest_   (03.07.08 10:51)
> Объекты имеют свою структуру общую для всех

Почему бы не перевести объекты в БД. Там УЖЕ реализовано многое из того, что тебе хотелось бы - сортировки/группировки и т.д. А ДБгриду оставить его функции отображения.
Кстати для БД есть и бесплатные компоненты для деревянных данных. EhLib например бесплатен (до версии 3.6) и вро де бы может отображать деревяшки (я лично этот функционал не юзал, но в описании он есть).


 
_Guest_   (2008-07-03 11:40) [69]


> Sergey13 ©   (03.07.08 11:31) [68]
> > [66] _Guest_   (03.07.08 10:55)В [54], в ответ на предложение
> перейти в аську, я имел в виду форум (свою ветку), а не
> этот конкретный топик.

Извиняюсь, недопонял.


 
Anatoly Podgoretsky ©   (2008-07-03 12:02) [70]

> _Guest_  (03.07.2008 10:51:05)  [65]

> Заказчик не хочет покупать ексель :), но хочет получить некие вещи, которые в екселе можно сделать, тоько если его хоть немного знать, а это уже труд.

Скажи ему - за ваши деньги исполнтим любой каприз, только если денег будет достаточно и предложи оплату этого каприза по цене 10 * Офис
И тебе хорошо и ему тоже, или тоже самое по покупке компонент аля офис * умноженое минимум на 1.2 (прибыль то должна быть). Воровать компоненты не смей. Клиент всегда прав, только пусть подтвердит эти права.


 
Anatoly Podgoretsky ©   (2008-07-03 12:09) [71]

> Anatoly Podgoretsky  (03.07.2008 12:02:10)  [70]

Ошибка это не прибыль, а стандартная торговая наценка.


 
_Guest_   (2008-07-03 12:24) [72]


> предложи оплату
> этого каприза по цене 10 * Офис И тебе хорошо и ему тоже,
>  или тоже самое по покупке компонент аля офис * умноженое
> минимум на 1.2 (прибыль то должна быть).

По моему, Вы что то недопоняли про оплаты у нас в городе. Можешь работать за 3 т.р. - работай, не можешь - не работай. Я могу придти и потребовать 30 т.р., но ни к чему кроме кручения пальца у виска это не приведет.

> Воровать компоненты
> не смей. Клиент всегда прав, только пусть подтвердит эти
> права.
Откуда такое дикое предположение, я, кажется, повода не давал. Всегда следую условиям распространения и использования.
Все. Здесь заканчиваю, следуя [68], пошел читать местную статью "Иерархические структуры данных в реляционных БД". Если будут вопросы создам свою ветку.


 
Anatoly Podgoretsky ©   (2008-07-03 13:44) [73]

> _Guest_  (03.07.2008 12:24:12)  [72]

> Откуда такое дикое предположение, я, кажется, повода не давал. Всегда следую условиям распространения и использования.

Никакого предположения я не делал, просто говорю не пытайся идти на поводу у заказчика. Докажи ему, что компоненты для работы стоят столько то, а разработка аналого столько то и столько то времени. Он или заплатит за компоненты/разработку или поставит офис или откажется от функциональности. Если же ты или другой разработчик пойдут на поводу и поставят ворованый компонент, то при первой же проверки виновным окажутся разработчики, а не заказчик, даже если он вам сам и даст этот ворованый компонент или ссылку где лежит "бесплатный".
Ну остальные выводы ты сам сделаешь.


 
MsGuns ©   (2008-07-03 14:40) [74]

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

ИМХО, было бы неплохо хоть в общих чертах изобразить здесь постановку задачи


 
Sergey13 ©   (2008-07-03 14:43) [75]

> [74] MsGuns ©   (03.07.08 14:40)
> где отображать текущую ноду дерева подробно

А если "текущая ноду дерева подробно" это набор данных.

ЗЫ: Прямо гридофобия какая то. 8-)


 
MsGuns ©   (2008-07-03 14:52) [76]

>Sergey13 ©   (03.07.08 14:43) [75]
>ЗЫ: Прямо гридофобия какая то. 8-)

Да пойми ты, что неудобно отображать древовидные структуры в сетке. Не наглядно, не видно уровней например. Особенно если у объекта масса артибутов, которые тоже надо показывать или они вообще отличаются друг от друга по набору атрибутов. Причем тут фобия ?


 
Sergey13 ©   (2008-07-03 15:02) [77]

> [76] MsGuns ©   (03.07.08 14:52)
> Да пойми ты, что неудобно отображать древовидные структуры в сетке.
А кто агитировал за это? Уж точно не я. Я предлагал визуализацию а-ля проводник - слева дерево справа детализация (какая - смотря по условиям).


 
_Guest_   (2008-07-03 15:07) [78]

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

> MsGuns ©   (03.07.08 14:40) [74]
> И все же я не понял, почему нельзя использовать тривью с
> "подвалом" ...
> ИМХО, было бы неплохо
> хоть в общих чертах изобразить здесь постановку задачи

Мне не надо видеть все узлы и подробности по выделенному, мне надо видеть подробности части (или всех если их не много) записей (строк, объектов, как их ни обзывай). И как подробности детей влияют на вычисляемые свойства родителей. В общих чертах - см. [57] - это план график с указанием когда что началось, сколько продолжалось и насколько оплачено. И очень хочется видеть всю информацию хоты бы по одному из этапов. Это не более 10-15 строк и менее 10 столбцов. Еще при этом хотелось бы иметь возможность тут же поправить процент оплаты или сроки и увидеть результаты перерасчета. Как уже выше говорили ексел удовлетворяет почти полностью. Но начинаются вопросы от разграничения прав доступа до взаимодействия с другими программами. Скажу честно, ексел знаю, но не до такой степени, да и от дурака в интефейсе своей программы защититься легче. А то "ой, я не ту кнопочку нажала", неужели не сталкивались.


 
MsGuns ©   (2008-07-03 16:46) [79]

Почти все, что, как Вы указали, делается в Экселе, можно сделать в сетке. В т.ч. и проверки "чтоб тетя не ввела не то" и пересчеты "на лету", И ИМХО, для этого лучше использовать именно стрингрид. Для отображения состояния взаиморасчетов (или что там у Вас) дерево действительно не нужно. Я же сказал, прежде чем обсасывать компоненты, лучше всего было осветить КАКАЯ ПОСТАВЛЕНА ЗАДАЧА. Тогда бы и ветка была бы не такой длинной, и обсуждение - много результативнее.


 
Игорь Шевченко ©   (2008-07-03 17:36) [80]


>  В общих чертах - см. [57] - это план график с указанием
> когда что началось, сколько продолжалось и насколько оплачено.
>  И очень хочется видеть всю информацию хоты бы по одному
> из этапов


а посмотри, как это сделано в Ms Project - он как раз под такие задачи и предназначен



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

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

Наверх





Память: 0.65 MB
Время: 0.01 c
15-1213716332
Dmitry S
2008-06-17 19:25
2008.08.03
Перестановки


15-1213701783
No_Dead
2008-06-17 15:23
2008.08.03
«околорезюмный» сабж


15-1213621467
Terr
2008-06-16 17:04
2008.08.03
Бесплатна ли программа


6-1191397323
Gydvin
2007-10-03 11:42
2008.08.03
Узнать IP


15-1213897933
savyhinst
2008-06-19 21:52
2008.08.03
Приходите на конференцию





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