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

Вниз

Парсер XML   Найти похожие ветки 

 
KilkennyCat ©   (2009-05-25 01:24) [80]


> огромное количество раз встречается <Compiler Name="...">.
> ..</Compiler>.


<Compiler>
    <Compiler Name="A">8</Compiler>
</Compiler>

я бы так создал
<Compiler>
    <A value="8"></A>
</Compiler>

Тем самым избежав возможной ошибки закрывающего тэга


 
Mystic ©   (2009-05-25 01:29) [81]


> Я правда не совсем понимаю, нафига 3 миллиона "открывать",
>  но у шахматистов свои тараканы


"Открытие" условно говоря равно экспорту с свой формат. А открывать надо не все три миллиона партий, а, например, чтобы узнать статистику по позиции. Например, челябинский вариант (обычно возникает после ходов 1. e4 e5 2. Nf3 Nc6 3. d4 cxd4 4. Nxd4 Nf6 5. Nc3 e5 6. Ndb5 d6 7. Bg5 a6 8. Na3 b5, но может получиться и из схевиненгена 1.e4 c5 2.Nf3 e6 3.Nc3 Nc6 4.d4 cxd4 5.Nxd4 Nf6 6.Ndb5 d6 7.Bf4 e5 8.Bg5 a6 9.Na3 b5) встретился по моей базе в 6578-партиях. В этой позиции основные (примерно равноценные) продолжения 9. Bxf6 (3289 партий) и 9.Nd5. Вот статистика:


   Move   ECO       Frequency    Score  AvElo Perf AvYear %Draws
1: Bxf6   B33s     3289: 50.0%   55.7%  2368  2395  1999   32%
2: Nd5    B33l     3273: 49.7%   52.2%  2331  2348  1998   42%
3: Nab1              12:  0.1%   54.1%  2348  2432  1992   58%
4: [end]  B33l        3:  0.0%   50.0%              2001  100%
5: Naxb5              1:  0.0%   50.0%              2005  100%
_______________________________________________________________
TOTAL:              6578:100.0%   54.0%  2350  2372  1998   37%


из которой видно, что Nd5 ведет к более спокойной игре (больше процент ничьих). И что небольшой акцент сместился в сторону Bxf6 (и рейтинг на чуть-чуть выше и средний год).


 
KilkennyCat ©   (2009-05-25 01:38) [82]


> Mystic ©   (25.05.09 01:29) [81]

Прикольно. Обожаю такие анализы. Можно все в студию? Иль сие - коммерческое?


 
Игорь Шевченко ©   (2009-05-25 01:41) [83]

Mystic ©   (25.05.09 01:29) [81]


> из которой видно, что Nd5 ведет к более спокойной игре (больше
> процент ничьих). И что небольшой акцент сместился в сторону
> Bxf6 (и рейтинг на чуть-чуть выше и средний год).


Для меня это китайская грамота. Но, насколько мне известно, шахматные программы, разбирающие партию(и) для анализа использу.т механизмы, аналогичные СУБД и мало того, даже и хранят такие разобранные партии в своем внутреннем двоичном формате (а не в тексте и не в XML). Опять же, потому что им так удобнее. Поэтому для партии текстовое представление и XML - это промежуточные звенья, необходимые для создания рюмки коньяка с ломтиком лимона, а следовательно, твой наезд на XML с этой точки зрения ничем не обоснован.


 
Mystic ©   (2009-05-25 01:50) [84]

Это не анализ, это статистическая обработка на лету. Программа Scid небольшая, в свободном доступе, ее можно скачать. Базу я экспортировал из коммерческой версии Fritz, там около миллиона партий. Если надо больше и свежее, обычно по конкретному варианту, то смотрю в online базе http://www.chesslive.de/ потом экспортирую в PGN, потом открываю в scid. Базы можно поискать на этом форуме http://immortal223.borda.ru/ но там обычно используется формат Chess Base CBV. Он закрытый, приходится конвертировать в PGN, потом экспортировать в Scid.

Если интересно, то из начальной позиции статистика такая:

   Move   ECO       Frequency    Score  AvElo Perf AvYear %Draws
1: e4     B00a   476394: 47.5%   53.2%  2316  2343  1993   32%
2: d4     A40a   338257: 33.7%   55.0%  2363  2392  1992   36%
3: Nf3    A04     88738:  8.8%   55.3%  2378  2403  1993   40%
4: c4     A10     72635:  7.2%   55.1%  2367  2391  1991   37%
5: g3     A00t     8136:  0.8%   55.4%  2373  2391  1993   37%
6: f4     A02      4519:  0.4%   46.9%  2175  2184  1992   27%
7: [end]  A00a     3495:  0.3%   54.9%  2311  2359  1991   19%
8: b3     A01      3448:  0.3%   51.6%  2301  2312  1996   31%
9: Nc3    A00l     2088:  0.2%   50.5%  2215  2249  1997   27%
10: b4     A00p     1270:  0.1%   48.1%  2138  2150  1997   25%
11: e3     A00k      605:  0.0%   42.8%  2149  2146  1991   20%
12: d3     A00j      447:  0.0%   48.3%  2241  2221  1995   26%
13: a3     A00f      344:  0.0%   47.6%  2193  2204  1998   24%
14: c3     A00i      199:  0.0%   44.4%  2237  2225  1994   29%
15: g4     A00n      187:  0.0%   46.2%  2260  2197  1997   14%
16: h3     A00d       56:  0.0%   53.5%  2242  2321  1998   21%
17: h4     A00c       41:  0.0%   32.9%  2169  2035  2001   22%
18: Nh3    A00g       21:  0.0%   38.0%  2163  2169  1994   38%
19: f3     A00b       15:  0.0%   26.6%  2143  1907  2001   13%
20: a4     A00e       14:  0.0%   53.5%              1999   21%
21: Na3    A00h        7:  0.0%   78.5%              1997   14%
_______________________________________________________________
TOTAL:           1000916:100.0%   54.1%  2342  2369  1993   35%



 
KilkennyCat ©   (2009-05-25 01:51) [85]


> Mystic ©   (25.05.09 01:50) [84]

спасибо.


 
Mystic ©   (2009-05-25 02:02) [86]

> Игорь Шевченко ©   (25.05.09 01:41) [83]

Ну это как я укажу. Во-первых, PGN используется для обмена. Например, сыгран турнир, все партии турнира выкладываются в PGN, я могу их экспортнуль в свою базу. Или, например, базы данных игровых серверов. Во-вторых, я могу PGN просмотреть глазами. Так даже удобнее. Если прошел турнир, я его открываю как текстовый файл и смотрю кто что сыграл. В целом сразу смотрю те варианты, что играю сам и смотрю что там нового произошло. В-третьих небольшие базы я храню непосредственно в PGN. Которые посвящены отдельному варианту, который я использую. Да и просто, избранная база партий французской защитой в PGN занимает 56 Mb. Читается это файл 10 секунд, после чего с ним можно нормально работать. Базы поменьше пополняю руками. Например, если я сыграл интересную партию на сервере, я ее экспортну в PGN (или, еще проще, скопирую PGN в буфер) и вставлю в нужный файлик (файлики). Так быстрее и удобнее. Все эти операции были бы затруднены с XML.


 
Mystic ©   (2009-05-25 02:13) [87]

Залезая немного вовнутрь, могу попытаться объяснить, за счет чего можно добиться ускорения работы. PGN формат текстовый. В 56 Mb текста содержится 56000 партий. Прочитать 56 Mb надо 10 секунд. Поскольку скорость считывания данных с диска медленна, то можно на лету их обрабатывать, дольше не будет. Для каждой партии я могу отмечать в качестве битовых масок где были пешки и фигуры за всю партию. И в итоге в памяти хранить нечто такое: партия #1, смещение 0, белые пешки были на полях a2, b2, c2, d2, d4, ... партия #2, смещение 1560, ... Таким образом при поиске позиции я вначале проверяю, могла ли возникнуть позиция в партиях по той информации, что я сохранил в кэше. Если могла, я перехожу к партии в файлике и читаю его уже проверяя на каждом ходу.

Насколько я знаю, стандартные XML-парсеры таким образом мне манипулировать не позволят. Они абстрагируют меня от таких ньюансов, как строка/столбец узла, и не позволяют перечитать часть файла...


 
Игорь Шевченко ©   (2009-05-25 02:23) [88]

Mystic ©   (25.05.09 02:13) [87]

Я вот одного не понимаю - религия запрещает использовать XML для обмена, переводя его в нужное для анализа представление ?

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


 
Mystic ©   (2009-05-25 02:37) [89]


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


На моей машине файл 50 Mb читается 10 секунд, при этом происходит полная проверка: допустимые символы, допустимые ходы. Если под рукой не будет никаких утилит, то писать валидатор придется самому. Но формат очень простой. На XML я могу проверить синтаксис, но вот легкой проверки семантики я не вижу. Как легко определить, является ли ход

<move n="34" piece="N" from="b5" to="c3" display="Nc3"/>

допустимым с точки зрения правил шахмат? Есть ли в этот момент на доске конь на поле b5? Свободно ли поле c3? Не открывает ли этот отскок шах королю? Ошибки такого рода достаточно часты в PGN.

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


 
Игорь Шевченко ©   (2009-05-25 02:45) [90]

Mystic ©   (25.05.09 02:37) [89]


> Можно ли как-то из поврежденного XML вытащить максимум данных?


Все зависит от семантики и парсера.


> На XML я могу проверить синтаксис, но вот легкой проверки
> семантики я не вижу. Как легко определить, является ли ход
>
>
> <move n="34" piece="N" from="b5" to="c3" display="Nc3"/>
>
> допустимым с точки зрения правил шахмат?


По меньшей мере можно проверить, что ход

<move n="34" piece="N" from="n5" to="c9" display="Nc3"/>

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


> Есть ли в этот момент на доске конь на поле b5? Свободно
> ли поле c3?


XML вообще-то декларативный язык, потому выражения "в этот момент" мне не представляются осмысленными именно с этой точки зрения.


 
T&amp;F   (2009-05-25 16:06) [91]

Господа, простите, что помешаю дискуссии насчёт "какашка ли XML или не совсем какашка", а также верну обсуждение к сабжу - выбору XML-парсера:

> Насчёт парсеров - тоже актуальный
> вопрос для меня. Хочется услышать мнение об OmniXML. Что
> за зверь? Кто с ним работал? С чем можно сравнить по скорости?
>  В идеале бы даже неплохо кусочек кода, чтобы оценить основные
> возможности, но это уже второстепенное

Итак, кто использовал OmniXML? Если никто - признавайтесь :)

И ещё раз - TXMLDocument - класс, супер, лучший вариант для делфи, однако ещё раз повторюсь, что он тормознутый для обработки приличных размеров файлов, а также "педант" - не переваривает малейшие ошибки в структуре XML-документа и тут же заматерится error-ами, хотя сторонние парсеры могут в этом случае продолжить парсинг дальше

Поэтому хочется альтернативу. Судя по ветке, тут все либо используют биндинги, либо свои наработки, которые невозмодно сюда запостить, так как они слишком индивидуальные, либо не используют XML из принципа ))) Вопрос - есть хоть кто-то, кто использует сторонний более-менее известный сторонний парсер? В интернете вообще что-то по этому поводу глухо, какие-то факты и сравнения столетней давности, хочется услышать СВЕЖЕЕ МНЕНИЕ, свежую информацию :) АУ!

PS: взрослые дяди, а насчёт таких вопросов спорите :) XML - естественно не панацея, но и не стоит его сравнивать с реестром или INI-файлами. Выбор способа сохранения данных определяется индивидуально для каждого случая (и для каждого индивидуума, так и хочется добавить), это ж ежу понятно. XML иногда вредит своей избыточностью, например, реестр - не подойдёт для хранения крупных массивов данных (разве что в Windows 7 можно этим заняться: теперь чтение выполняется из файла подкачки и обращения в реестр не требуют размещения данных в таблице памяти), INI - часто заставляют тратить силы на защиту "от дураков" (если программа ориентирована на аудиторию с шаловливыми пальчиками, то пальчики так и стараются что-то там изменить. Залезть в XML решаются лишь самые отважные :) само собой, "дуракозащита" должна быть в каждой программе, хоть XML там юзают, хоть INI, но есть случаи, когда нужно сэкономить на этом драгоценное время, хоть и вопреки качеству).
JSON - вещь хорошая, но это именно альтернатива XML, использовать её для чего-то, кроме веб-программирования (обмен информацией через AJAX), как-то даже неприлично, imho, а уж для Delphi-программ o_O

PPS: ну вот. сам ввязался в спросы и нафлудил. Хотя интересуюсь только ХОРОШИМ ПАРСЕРОМ ;-)


 
Медвежонок Пятачок ©   (2009-05-25 16:21) [92]

TXMLDocument - для студентов,школьников и их лабораторных.

наш выбор - IXMLDOMDocument.
если данных на гигабайты - sax парсер от того же MS

проверено, шустрее не бывает чтобы использовать что-то другое.


 
Sergey Masloff   (2009-05-25 16:25) [93]

T&F   (25.05.09 16:06) [91]
>И ещё раз - TXMLDocument - класс, супер, лучший вариант для делфи
TXMLDocument это просто обертка над msxml. Никогда его не использовал. Чем он лучший не знаю.

Сам msxml никаких проблем с производительсностью не имеет (последний раз его производительность смущала в версии 2.6 с тех пор все хорошо). Есть и DOM и SAX. Что еще надо?

Какие размеры документов вызывают проблемы?


 
Sergey Masloff   (2009-05-25 16:27) [94]

Медвежонок Пятачок ©   (25.05.09 16:21) [92]
>если данных на гигабайты - sax парсер от того же MS
+ 1
мегабайт до 100 DOM вполне прилично работает.
Дальше не пробовал - зачем если для SAX размер вообще значения не имеет


 
sniknik ©   (2009-05-25 16:38) [95]

> JSON - вещь хорошая, но это именно альтернатива XML, ...
> а уж для Delphi-программ o_O
а чего нет то? во всяком случае парсеры самые свежие прямо на родном сайте для всех языков включая дельфи выложены. и есть все возможности xml. + скорость разбора быстрее TXMLDocument. - многие xml-ные заморочки.
не этого ли тебе желалось?
если выбирать "индивидуально для каждого случая" то ничего у тебя такого нет почему бы он не подошел. или это все таки дань моде на поводке у мифов? (тут однозначно, json отдыхает)


 
T&amp;F   (2009-05-25 16:41) [96]


> Sergey Masloff   (25.05.09 16:25) [93]
> T&F   (25.05.09 16:06) [91] >И ещё раз - TXMLDocument -
> класс, супер, лучший вариант для делфиTXMLDocument это просто
> обертка над msxml. Никогда его не использовал. Чем он лучший
> не знаю.

Я кажется уже запутался. Похоже уже под TXMLDocument подразуеваю и msxml


> тут же заматерится error-ами, хотя сторонние парсеры могут
> в этом случае продолжить парсинг дальше

А как насчёт этого?


 
Медвежонок Пятачок ©   (2009-05-25 16:42) [97]

а как насчет поддержки этого джейсона на sql серверах?


 
sniknik ©   (2009-05-25 16:49) [98]

> Какие размеры документов вызывают проблемы?
SAX не пробовал, а DOM где то от 500 мг. попросту виснет (для пробы можно открывать в IE, он его тоже через DOM обрабатывает). а на чтобы составить файлик 2гб, людям знаю, пришлось на сервере с 16гб оперативки неделю обработку выполнять...
сколько бы потребовалось чтобы его открыть не знаю, я сразу отказался это делать (и не потому, что думал, что не смогу или подобное, а потому что знал, нужных мне данных там нет, по определению, зная как и формат его составления. (нужен был простой бэкап базы mssql)).

> а как насчет поддержки этого джейсона на sql серверах?
хреново, нет у него поддержки от MS.


 
Sergey Masloff   (2009-05-25 16:54) [99]

>> тут же заматерится error-ами, хотя сторонние парсеры могут
>> в этом случае продолжить парсинг дальше

>А как насчёт этого?
ISAXErrorHandler реализовать например


 
Sergey Masloff   (2009-05-25 16:55) [100]

sniknik ©   (25.05.09 16:49) [98]
>
>сколько бы потребовалось чтобы его открыть не знаю, я сразу отказался >это делать (и не потому, что думал, что не смогу или подобное, а потому >что знал, нужных мне данных там нет, по определению, зная как и формат >его составления. (нужен был простой бэкап базы mssql)).
Да ты описывал тот случай. Для той задачи это конечно была бредовая идея заказчиков ;-)


 
T&amp;F   (2009-05-25 17:03) [101]


> ISAXErrorHandler реализовать например

Хм.
http://rsdn.ru/forum/xml/292647.flat.aspx
Это видно тоже не панацея


 
Игорь Шевченко ©   (2009-05-25 17:04) [102]

sniknik ©   (25.05.09 16:49) [98]

Можно конечно и видео в XML передавать, дурное дело нехитрое. Только вот беда какая - сам XML тут не причем, как не причем TMemo, применяемое для чтения текстового файла и последующей обработки строк, компрене ву ?


 
sniknik ©   (2009-05-25 17:05) [103]

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


 
sniknik ©   (2009-05-25 17:08) [104]

> сам XML тут не причем
я не говорил что он при чем, причем то что его навязывают, причем люди в этом совершенно не соображающие, на поводу у менеджмента.


 
makvell   (2009-05-25 17:16) [105]

а какой топик был... :)


 
Sergey Masloff   (2009-05-25 17:23) [106]

T&F   (25.05.09 17:03) [101]
>http://rsdn.ru/forum/xml/292647.flat.aspx
Вы всегда форумы вместо документации читаете? Плохая привычка.
Чтобы обрабатывать результат возвращаемый методами ISAXErrorHandler вообще-то нужно свойства ридера настроить.
 Естественно если это FatalError парсинг остановится в любом случае. Для просто error останавливается ПО УМОЛЧАНИЮ также вне зависимости от возвращаемого результата. Это можно изменить.


 
Sergey Masloff   (2009-05-25 17:28) [107]

Игорь Шевченко ©   (25.05.09 17:04) [102]
>Можно конечно и видео в XML передавать, дурное дело нехитрое.
А почему дурное? Иногда и видео передают. Если это видео привязано к другим данным иногда довольно удобно в одном флаконе иметь. Я делал интерфейс к одной системе в которой хранятся результаты испытаний. Они как раз отдают все одним xml файлом - там условия проведения, видеосъемка опыта и фото результатов. А дальше обрабатывай как хочешь. Не скажу что однозначно лучшее решение но вобщем-то и не самое плохое.


 
Игорь Шевченко ©   (2009-05-25 17:45) [108]

Sergey Masloff   (25.05.09 17:28) [107]

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


 
T&amp;F   (2009-05-25 18:10) [109]


> Вы всегда форумы вместо документации читаете? Плохая привычка.

Нет, форумы - для быстрой оценки возможных проблем, почитать отзывы и всё такое прочее

Вообще-то вообще не хотел кидать ссылку эту, самому показалась проблема слишком искуственной.


 
atruhin ©   (2009-05-25 18:41) [110]

> [104] sniknik ©   (25.05.09 17:08)

В качестве примера, экспорт/импорт данных в 1С, пробовал варианты: OLE, dbf, XML.
Ole - просто, но очень медленно.
dbf - приходится создавать кучу таблиц под разные справочники, деревья.
xml - скорость на 10-20 тыс. записей сопоставима с dbf, но проще и удобней,
ничего не нужно придумывать, структура древовидного справочника, мастер/деталь
переносится 1-1.
У меня в программе в XML храняться все настройки интерфейса, меню/тулбары/позиции и настройки окон,
с трудом представляю более удобный формат хранения.


 
blackman ©   (2009-05-25 22:04) [111]

xml - скорость на 10-20 тыс. записей сопоставима с dbf, но проще и удобней
А чем проще? Отнюдь не проще, особенно при последующем его использовании и скорость будет не сопоставима


 
atruhin ©   (2009-05-25 22:38) [112]

> [111] blackman ©   (25.05.09 22:04)
> А чем проще? Отнюдь не проще

Проще тем, что например, нужно выгрузить документы и связанные с ними 2-5 справочников.
Придется создавать под каждого справочника таблицу, для документов по несколько таблиц.
Все это делать в динамике. Т.к справочники древовидные, то нужно выгружать дерево
например ID <-> PARENT_ID.
Соответственно при загрузке, необходимо грузить дерево от корня, и если для SQL я могу получить
упорядоченное дерево 1 запросом, то тут ручками.
А в XML дерево выгружается/загружается "нативно".
В общем все это пробовали, для XML кода в 2-3 раза меньше.

> Отнюдь не проще, особенно при последующем его использовании
> и скорость будет не сопоставима

А чего ей сильно отличаться? Скорость выгрузки одинаковая, что dbf, что xml по сути текстовые файлы.
Скорость загрузки зависит от того как разбирать деревья в dbf, но на глаз примерно как и XML.
Ну и размер файла выгрузки у XML меньше. Несмотря на теги.


 
SPeller ©   (2009-05-26 05:41) [113]

А я заюзал libxml. Написал пару классов-оберток и живу не тужу :)


 
iZEN ©   (2009-05-28 01:31) [114]

Хранить конфиги в XML — МОВЕТОН.

Иерархические структуры записей лучше хранить в виде:
кагория.подкатегория.параметр="значение"
Никакого парсера не нужно — достаточно лишь вызвать properties-ридер и загнать значения в хэш-таблицу.


 
DVM ©   (2009-05-28 01:43) [115]


> кагория.подкатегория.параметр="значение"

+1
Такое мне нравится.


 
SPeller ©   (2009-05-28 01:51) [116]

Все зависит от ситуации. Нет идеальных решений )


 
Игорь Шевченко ©   (2009-05-28 02:17) [117]


> Иерархические структуры записей лучше хранить в виде:
> кагория.подкатегория.параметр="значение"


неудобно


 
SPeller ©   (2009-05-28 08:20) [118]

Структура DFM, кстати, напоминает XML :)


 
DVM ©   (2009-05-28 10:45) [119]


> SPeller ©   (28.05.09 08:20) [118]

Не. Весьма отдаленно. Ini напоминает еще больше.


 
Mystic ©   (2009-05-28 11:26) [120]


> Иерархические структуры записей лучше хранить в виде:


Я еще видел вариант, когда иерархия записывается  примерно так:


[Delphi/Compiler]
APPTYPE=CONSOLE
IMAGEBASE=$04000000

[Delphi/Directories]
SearchPath=...



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

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

Наверх




Память: 0.73 MB
Время: 0.008 c
15-1244237635
Галинка
2009-06-06 01:33
2009.08.09
серверы для командных онлайн-игр


2-1244657306
dnepr
2009-06-10 22:08
2009.08.09
Окно программы виснет


11-1204892019
nikfel
2008-03-07 15:13
2009.08.09
Как определить Checked выбранного элемента в списке.


15-1244565458
Rimdus
2009-06-09 20:37
2009.08.09
Перекрыть приватный метод


2-1244727308
pest
2009-06-11 17:35
2009.08.09
Вставить из буфера в cxShellListView





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