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

Вниз

Как определить наличие Embedded версий баз?   Найти похожие ветки 

 
Piter ©   (2004-08-10 15:23) [0]

Вот моя программа использует IB/FB базу. Компоненты IB в дельфе сами загружают необходимую gds32.dll - но она может быть как от сервера Ib/FB, так и локальная Embedded (Firebird Embedded, Yaffi embedded). Программе в общем все равно (обрщение идет к локальной базе).
Но дело в том, что у серверной gds32.dll есть аутентификация, а у локальной нету. Так вот вопрос - а как определить какая gds32.dll используется - серверный вариант или локальный? Это для того, чтобы выводить или не выводить окошко запроса логина/пароля


 
Sergey13 ©   (2004-08-10 15:29) [1]

Проверить наличие длл-ки в папке программы?


 
Danilka ©   (2004-08-10 15:32) [2]

[1] Sergey13 ©   (10.08.04 15:29)
не факт. там может быть и длл-ка от нормальной версии.


 
Vlad ©   (2004-08-10 15:33) [3]


> Piter ©   (10.08.04 15:23)  

Я так понимаю, речь о твоем клиенте форума?
Одно только неясно. Зачем искать уже установленную версию IB, когда есть прекрасная весчь - Yaffil Personal. Представляет собой всего одну библиотеку gds32, там и клиент и сервер в одном флаконе. Достаточно кинуть ее в одну папку с твоей программой и ни о чем более не думать, твоя программа автоматом подхватит именно ее.


 
Sergey13 ©   (2004-08-10 15:36) [4]

2[2] Danilka ©   (10.08.04 15:32)
Может. А нафига?

2Piter ©   (10.08.04 15:23)
А может проще. Не прошел конект - выдавать запрос логина.


 
Danilka ©   (2004-08-10 15:37) [5]

[3] Vlad ©   (10.08.04 15:33)
FB Embedded  - то-же самое.
А с другой стороны, зачем эта длл-ка, если у юзера установлен полноценный сервер?

Piter ©   (10.08.04 15:23)
Можно попробовать подключиться без пароля и в случае неудачи запросить имя и пароль. правда, как-то не слишком серьездно. :)
Проще в настройках галочка. И полный путь до клиентской библиотеки, а то, если не ошибаюсь, ты ее переименовываешь? :))


 
Danilka ©   (2004-08-10 15:38) [6]

[4] Sergey13 ©   (10.08.04 15:36)
> Может. А нафига?

Всякое может быть. :)) Я когда разные версии смотрел на всякий случай клиентскую библиотеку в каталог с программой пихал. :))


 
Vlad ©   (2004-08-10 16:04) [7]


> Danilka ©   (10.08.04 15:37) [5]
> [3] Vlad ©   (10.08.04 15:33)
> FB Embedded  - то-же самое.
> А с другой стороны, зачем эта длл-ка, если у юзера установлен
> полноценный сервер?

А зачем себе морочить голову с определением версии установленного сервера. Плюс еще такая деталь. Если имеется установленный сервер, то в нем скорее всего будут логин/пароль отличные от sysdba masterkey, значит еще одну настройку в программе делать надо для логина/пароля сервера. А оно надо?


 
Rule ©   (2004-08-10 16:12) [8]

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


 
Piter ©   (2004-08-10 16:39) [9]

Vlad ©   (10.08.04 16:04) [7]
А оно надо?


надо. Тогда не придется качать из интернета embedded версию библиотек. Это около 1,5 Mb - что для некоторых достаточно критично, тем более на клиенте они хотят сэкономить трафик.

И если у них уже есть сервер - почему бы им не пользоваться...

Sergey13 ©   (10.08.04 15:36) [4]
А может проще. Не прошел конект - выдавать запрос логина

Danilka ©   (10.08.04 15:37) [5]
Можно попробовать подключиться без пароля и в случае неудачи запросить имя и пароль


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


 
Vlad ©   (2004-08-10 17:55) [10]


> Piter ©   (10.08.04 16:39) [9]


> Тогда не придется качать из интернета embedded версию библиотек

Ну во-первых скачивают-то всего один раз.
Во вторых зачем им отдельно скачивать, зашей ее в дистрибутив.
Кстати, та библиотека gds32.dll обычным rar жмется до 500 кб
Зато ты не будешь зависеть ни от чьего там сервера, у тебя будут 100% собственное средство доступа.


 
Danilka ©   (2004-08-10 18:10) [11]

Vlad ©   (10.08.04 16:04) [7]

> А зачем себе морочить голову с определением версии
> установленного сервера.

Например, мне интересно самому в базе поковыряться, своими запросами, сиквелом найти то-что именно мне надо. Если будет версия embedded, то надо вырубать клиента, а если полноценный сервер, то можно параллельно запустить ИБЭксперт.


> с еще такая деталь. Если имеется установленный сервер,
> то в нем скорее всего будут логин/пароль отличные от
> sysdba masterkey

Дык, добавить в настройки клиента параметры подклучения - какие проблемы?


 
VID ©   (2004-08-10 18:25) [12]

to Piter: я посмотрел у себя, сравнил два варианта gds32.dll: обычную для клиентов серверов и Embedded.
Так вот при просмотре инфе о версии каждой из этих библиотек (совйства, вкладка "версия"), в последней строке Special Build Description , у
Embedded значение EM
Super Server значение SS
Classic Server значение CS.

Это всё имеет отношение к Yaffil. Я не знаю как там обстоят с этим дела у FireBird и собственно Interbase, но это может быть неплохой зацепкой.

Второй вариант: банально по размеру этой библиотеки. Если она больше метра то это точно Embedded. Метод это конечно халтурный, кривоватый.

Третий вариант: лишь при ошибке подключения выводить окно, где попросят ввести пароль (а в поле "Логин" должно быть уже написано слово SYSDBA и оно не должно подлежать редактирования ReadOnly = True). И кто сказал что это плохой вариант ? Это очень и очень естественное поведение программы: если она найдёт embedded-сервер в путях поиска, то быстренько подключится никто ничё и не заметит, если же этой библиотеки не будет, а будет обычная библиотека для клиентов сервера, то при неудачном коннекте (это кстати, тоже выяснится очень быстро, клиент долго ждать не будет) появится окошко где надо будет указать пароль.

А теперь внимание! Вполне может возникнуть ситуация, что gds-сервер может быть установлен на другой машине ! Соответственно, в окне где ты будешь просить ввести пароль, так же предусмотри поле, где юзер сможет указать сетевой адрем машины, где установлен gds-сервер.

Лично я больше предпочтение отдаю третьему варианту, как максимально надёжному.

offtop: ты Raize Components - 3 посмотрел ? Ну и как ?


 
VID ©   (2004-08-10 18:34) [13]

А ещё я щас посмотрел внутрь твоей базы, вижу практически в любой таблице есть поле ID и значением этого поля является крупное число типа 1091711935,000 (double precission). Для чего это поле 7


 
Danilka ©   (2004-08-10 18:56) [14]

VID ©   (10.08.04 18:25) [12]
1. Дык Длл-ку еще найти надо, а она может быть не только в каталоге с программой. :))
2. третий вариант - вполне нормальный... но только для тех, у кого эмбеддед версия, ибо другим придется каждый раз при подключении ввобить имя и пароль.
Все-таки я считаю что лучше все это хранить в настройках: сервер или эмбеддед, параметры подключения и т.д.


 
VID ©   (2004-08-10 19:01) [15]

Danilka ©   (10.08.04 18:56) [14]
Блин ну нельзя же всё так плоско воспринимать :)

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

>>Длл-ку еще найти надо
что значит надо найти ? Загрузчик приложений в Windows сам занимается поиском dll, запрашиваемых приложением.
Сначала ищет в каталоге программы, потом в системных путях... ты о чём ?


 
Danilka ©   (2004-08-10 19:13) [16]

VID ©   (10.08.04 19:01) [15]
> Загрузчик приложений в Windows сам занимается поиском
> dll

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


 
VID ©   (2004-08-10 19:17) [17]

Danilka ©   (10.08.04 19:13) [16]
Опять мыслим однобоко :)

Сначала приложение запускается. К нему подключаются нужные библиотеки. А потом ты уже получаешь список библиотек используемых приложением, и информацию о месторасположении каждой из них. Среди этого списка ищем gds32.dll и у нас в кармане путь к той, единственной и неповторимой gds32.dll.


 
Danilka ©   (2004-08-10 19:27) [18]

VID ©   (10.08.04 19:17) [17]
gds32.dll
Кстати, в фиребирде она имеет другое название - fbclient.dll. При этом, в ИБ эксперте можно ее выбрать. :))
Впрочем, все равно, анализировать версию или размер файла, не думаю что самое правильное решение - это нигде не документированно, в любой момент времени разработчик захочет и что-нибудь изменит.
Все-таки, настройки мне больше нравяцца. :))


 
VID ©   (2004-08-10 19:42) [19]

gds32.dll

FB предоставляет свою gds32.dll - это "библиотека-заглушка", все вызовы через неё переадресуются уже на fbclient.dll.
Сделано это для того, что бы старые приложения написаные под интербейз могли бы беспроблемно работать. Конечно новые компоненты доступа к серверу, могут работать напрямую fbclient.dll (наверняка это так, лично я не знаю, до сих пор юзаю fibplus 4.8) и вполне может возникнуть ситуация, что будет заюзана библиотека fbclient.dll. Ну в таком случае можнно в списке подключённых библиотек для анализа искать gds32.dll либо fbclient.dll. Одна из двух точно будет. Впрочем, наш спор - это лишь сотрясание воздуха, так как, всё равно самый приоритетный вариант - третий, а вариант с явно указываемыми настройками подключения в проге тебе нравится потому что это твой вариант ;)


 
Piter ©   (2004-08-10 19:50) [20]

Vlad ©   (10.08.04 17:55) [10]
Ну во-первых скачивают-то всего один раз.
Во вторых зачем им отдельно скачивать, зашей ее в дистрибутив


хех. Если я зашью в дистрибутив - то как раз каждый раз человек будет качать сервер ЗАНОВО

Vlad ©   (10.08.04 17:55) [10]
Кстати, та библиотека gds32.dll обычным rar жмется до 500 кб


Embedded версии это не только одна библиотека, как ошибочно многие думают, их там несколько.

VID ©   (10.08.04 18:25) [12]
Лично я больше предпочтение отдаю третьему варианту, как максимально надёжному.


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

VID ©   (10.08.04 18:25) [12]
А теперь внимание! Вполне может возникнуть ситуация, что gds-сервер может быть установлен на другой машине !


ну это перебор. Это что, и базы данных BASE.GDB ты будешь хранить на удаленном сервере?


offtop: ты Raize Components - 3 посмотрел ? Ну и как

нет, я сейчас на диалапе, а он весит 14 Mb с оф. сайта. Договорился с человеком - он мне скинет исходники 4 Mb - тогда посмотрю. Ок?

VID ©   (10.08.04 18:34) [13]
вижу практически в любой таблице есть поле ID и значением этого поля является крупное число типа 1091711935,000 (double precission). Для чего это поле 7


ну это ID ветки блин. Вот смотри URL данного топика - http://delphimaster.net/view/3-1092137014/

Вот 1092137014 и есть ID этой ветки, на самом деле это просто время ее создания в Unix формате...


 
Piter ©   (2004-08-10 19:51) [21]

Danilka ©   (10.08.04 18:56) [14]
ибо другим придется каждый раз при подключении ввобить имя и пароль.


ну так запросить пароль, если возникло исключение и сохранить его...


 
VID ©   (2004-08-10 20:14) [22]

>>ну это перебор. Это что, и базы данных BASE.GDB ты будешь >>хранить на удаленном сервере?

Блин, что значит перебор ??? твоя прога копирует свою базу в папку, ..\Base\ это правильно, но представь что САМ СЕРВЕР (я надеюсь ты отличаешь понятия GDS-Server и GDS-DataBase) установлен и запущен на другой машине в сети. а на лок машине нету сервера. Вот как ты будешь коннектится к свой базе данных, а ?

ты будет это делать так: Remote_Server_addr:С:\program files\magic forum\base\...

а по-твоему, откуда программе знать remote_server_addr ? его пользователь должен указать.

Перебора тут никакого нет ! Я тебе хороший совет даю, а ты почему то не хочешь принять.


 
Piter ©   (2004-08-10 21:36) [23]

VID ©   (10.08.04 20:14) [22]
установлен и запущен на другой машине в сети. а на лок машине нету сервера. Вот как ты будешь коннектится к свой базе данных, а ?


пользователь должен будет установить у себя сервер или локальную версию Embedded.

Ты сам представляешь что говоришь? По твоему сервер будет обращаться к базе на другом компьютере?! Ты в своем уме?


 
VID ©   (2004-08-10 21:56) [24]

Piter ©   (10.08.04 21:36) [23]
Слушай, приятель, не надо меня тут оскорблять, понял ? Если у тебя не хватает мозгов для полного понимания клиент-серверной технологии, и если ты думаешь что весь мир это лишь то что ты видишь своими глазами, то это твои проблемы.

Умерь свой пыл, и вообще научись разговаривать !


 
sniknik ©   (2004-08-10 23:49) [25]

> По твоему сервер будет обращаться к базе на другом компьютере?!
при чем сдесь сервер? в [22] про клиента, а сервер может быть на любой установлен (обычно на выделенной машине с названием "server %";о)), на то он и сервер.

ты не только читай ответы, старайся еще и понять... (мой добрый совет тебе ;)

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


 
sniknik ©   (2004-08-10 23:53) [26]

VID ©   (10.08.04 21:56) [24]

VID ©   (09.08.04 22:55) [41]

sniknik ©   (09.08.04 22:12) [40]
Бывает период когда человек воспринимает только прямые ответы, он ещё не готов саморазвиваться, "видеть между строк" и тому подобное. Ему просто нужен код. Просто я сам прошёл через такой этап, и сколь сильно это бесит мастеров столь сильно это необходимо новичкам.

Лично мне в своё время в период активного изучения мною Interbase помогал один мой друг через интернет, и чаще всего методом "прямого ответа" - т.е. код давал. Это было на самом начальном этапе, и я бездумно использовал этот код говоря спасибо и развивая проект дальше.

А потом стали возникать вопросы: Почему это именно так работает, и что если.... Как правило эти вопросы возникли, когда полученный код после некоторого использования требовалось всё-таки немного модифицировать. Вот на этом этапе новичёк готов к анализу советов.

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

В конце-концов, ведь не зря в гостевой книге готовых решений для дельфи (UBPFD) столько благодарных отзывов.

ИМХО.


;о)))

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


 
Piter ©   (2004-08-10 23:57) [27]

VID ©   (10.08.04 21:56) [24]
не надо меня тут оскорблять, понял ? Если у тебя не хватает мозгов


непонятно кто кого оскорбляет :)

VID, ладно, хватит, давай подумаем.
Значит, база хранится у тебя на компьютере, так? Но ты хочешь использовать удаленный сервер, так?
Значит, тебе придется как миниум расшарить для сервера папку Base с базой.

Далее, что произойдет при заросе. Клиент запрашивает данные из базы, отправляет запрос на сервер. Сервер в свою очередь ПО СЕТИ начнет обращаться к файлу на твоем компьютере! А потом обработва запрос опять же тебе пошлет результат. Тебе не кажется, что сервер тут несколько лишнее звено?
Ты посылаешь запросы на удаленный компьютер для работы с твоей ЛОКАЛЬНОЙ базой.

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

Потеря производительности тебе гарантирована, сервер выполняет тупую работу - гоняет по сети данные от твоего компьютера и возвращает тебе же их. По твоему это верно? :)


 
sniknik ©   (2004-08-11 00:14) [28]

> По твоему это верно? :)
все наоборот. база лежит рядом на машине с сервером, а доступ организуется с клиента.
считай от этого(сервера) и все станет кристально ясным. VID тебе другого не предлагал.
есть сервер, подключаешся к нему где бы он не был и работаеш с той базой что на сервере. нету, работай с ембедед, кто тебе не дает? с той базой что лежит локально.


 
Piter ©   (2004-08-11 00:14) [29]

sniknik ©   (10.08.04 23:49) [25]
при чем сдесь сервер? в [22] про клиента, а сервер может быть на любой установлен (обычно на выделенной машине с названием "server %";о)), на то он и сервер


Да? А вот когда под сервер Interbae выделена машина - что, разве сама база не хранится на этой же машине? Или я чего не понимаю?

Или теперь модно каждому хранить локальную базу?

Вот запросил Vasya у сервереа данные. Сервер обратился к базе на ВАСИНОМ компьютере и вернул ему данные, так? А потом обратился к серверу Ivan и сервер прочитал базу теперь уже на компьютере ИВАНА и вернул тому данные из ЕГО базы. Значит, теперь так происходит работа серверов?

Ну что же.. учту

sniknik ©   (10.08.04 23:49) [25]
ты не только читай ответы, старайся еще и понять


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


 
sniknik ©   (2004-08-11 00:27) [30]

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

> вероятно ты не понял постановку задачи.
наверняка. ;о) наверное потому что прочитал только последние посты...
но всетаки понял что
> я надеюсь ты отличаешь понятия GDS-Server и GDS-DataBase
ты говориш, и подразумеваеш, базу. а тебе отвечают о сервере.


 
Piter ©   (2004-08-11 00:37) [31]

sniknik ©   (11.08.04 0:14) [28]
все наоборот. база лежит рядом на машине с сервером


а, вот так. Ты думаешь это VID предлагал, значит я его не правильно понял.

sniknik ©   (11.08.04 0:14) [28]
есть сервер, подключаешся к нему где бы он не был и работаеш с той базой что на сервере


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

И вообще, где это может применяться? Дома? Это бред, дома все будет локально. В какой-то организации? И что, есть надежда, что администратор базы разрешит поместить на сервер какую-то базы от некоего Magic Forum, чтобы Васе Пупкину было удобнее по инету лазить на delphimaster?!
Да к тому же он еще и пароль от SYSDBA должен будет сказать. Хех, не туда вы смотрите...

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


 
sniknik ©   (2004-08-11 01:34) [32]

> И вообще, где это может применяться? Дома? Это бред, дома все будет локально.
если пишеш для дома для семьи, то это бери ембедед фаребирд (как уже советовали) и не парься, он сам определит и сделает подключение к серверу если он есть.

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

> от некоего Magic Forum
а, ... вот теперь становится более менее ясно. ;о)

> Хех, не туда вы смотрите...
ага. куда повернули туда и смотрим (а поворот определяется вопросом и инфой к нему)
на accecc не хочеш взглянуть? и локальный и несколько подключений позволяет.

> А если другому человеку захочется использовать клиент? Он что, должен использовать ту же базу?
конечно! тогда ему не придется повторно качать то что первый уже скачал. а вообще про настройки тоже уже было. можно к примеру сделать авторизацию до конекта а по ней определять сохраненный профиль этого человека, логин и пароль к базе и путь и название базы ханить в профиле. чем не вариант? а если так, то почему нельзя для сервера (если он есть и админ добрый) предусмотреть многопользовательность? тогда на 10 василиев пупкиных будет всего 1 скачка данных с сайта! (экономится 9/10 трафика)


 
Piter ©   (2004-08-11 02:18) [33]

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

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


 
Vlad ©   (2004-08-11 10:31) [34]


> Piter ©   (10.08.04 19:50) [20]
>
>
> Embedded версии это не только одна библиотека, как ошибочно
> многие думают, их там несколько.

в Yaffil Personal для работы требуется только ОДНА библиотека gds32.dll. Все остальное - это библиотека с UDF(ее можно не использовать или если очень надо, написать свою - меньших размеров) и менеджер памяти msvcr70.dll, который тоже нафиг не нужен, если ты не используешь UDF, или используешь, но не выделяешь в них память собственноручно.


 
-SeM-   (2004-08-11 13:41) [35]

Версию сервера можно получить через API isc_database_info с isc_info_version


 
Piter ©   (2004-08-11 16:57) [36]

Vlad ©   (11.08.04 10:31) [34]
в Yaffil Personal для работы требуется только ОДНА библиотека gds32.dll


А ты пробовал, всего лишь с одной gds32.dll collate работает?


 
Vlad ©   (2004-08-11 17:32) [37]


> Piter ©   (11.08.04 16:57) [36]

у меня с одной gds32  работает с русскими буквами и без явного collate, достаточно при создании базы указать кодировку win1251
В любом случае, те дополнительные библиотеки не влияют на collate


 
Vlad ©   (2004-08-11 17:34) [38]


> Vlad ©   (11.08.04 17:32) [37]


> В любом случае, те дополнительные библиотеки не влияют на
> collate

Имеется ввиду только Yaffil Personal


 
Piter ©   (2004-08-11 19:30) [39]

Vlad ©   (11.08.04 17:34) [38]
Имеется ввиду только Yaffil Personal


там в полной поставке подкаталог INTL есть?


 
Vlad ©   (2004-08-12 12:53) [40]

Да нет у YaP никакой полной/неполной поставки.
Когда скачиваешь что-то там "сборка классик-супер-персонал", там есть папка Yaffil.em, в которой он и лежит.
То есть всего три библиотеки: gds32, ib_util, msvcr70
Все что надо, так это взять gds32 и сунуть в одну папку с твоей программой (ну или какую нибудь системную).



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

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

Наверх





Память: 0.6 MB
Время: 0.034 c
1-1093845591
Zhekson
2004-08-30 09:59
2004.09.12
AdvStringGrid for Delphi7


14-1093462970
YurikGL
2004-08-25 23:42
2004.09.12
Совет по железу


3-1092651951
Lizka
2004-08-16 14:25
2004.09.12
как редактировать DBEdit?


1-1093373344
Rlz
2004-08-24 22:49
2004.09.12
Вопрос по функциям


4-1090914593
ASMiD
2004-07-27 11:49
2004.09.12
Программирование пультов ДУ





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