![]() |
Модераторы: THandle, bems |
![]() ![]() ![]() |
|
Akella |
|
||||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 7 Всего: 329 |
Кто-нибудь выполнял локализацию своих приложений, написанных на Delphi?
Я смотрю в сторону компонентов TsiLang. Говорят, что неплохое решение. Что ещё посоветуете? Пока что в гугле ищу инфу по локализации. Какие грабли могут быть на пути? На данный момент я пока убираю все тексты и сообщения из кода и выношу их в отдельный модуль с константами. Т.е. вместо
будет
Ну а после буду подключать движок для перевода. D2007. Добавлено через 10 минут и 45 секунд Вот ещё нашел бесплатный движок Это сообщение отредактировал(а) Akella - 27.9.2010, 11:17 |
||||
|
|||||
CodeMonkey |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1839 Регистрация: 24.6.2008 Где: Россия, Тверь Репутация: 4 Всего: 89 |
ITE?
-------------------- Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. |
|||
|
||||
Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 7 Всего: 329 |
Разве ITE может без перекомпиляции?
Разве с помощью ITE можно на ходу менять язык? Добавлено через 5 минут и 50 секунд Я так понял, что ITE может переводить только константы? А как же текстовые свойства компонент? Например, Caption? А если есть у постоянных датасетов свойство DisplayLabel? |
|||
|
||||
Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 7 Всего: 329 |
интересно, откуда у GunSmoker-а столько времени на содержание блога и изучения дельфи
![]() |
|||
|
||||
CodeMonkey |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1839 Регистрация: 24.6.2008 Где: Россия, Тверь Репутация: 4 Всего: 89 |
Это похоже на константы?
-------------------- Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. |
|||
|
||||
Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 7 Всего: 329 |
не
|
|||
|
||||
kami |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1806 Регистрация: 25.8.2007 Где: Санкт-Петербург Репутация: 1 Всего: 72 |
DKLang ? (я им пользуюсь - более чем устраивает)
Это сообщение отредактировал(а) kami - 2.10.2010, 18:04 |
|||
|
||||
Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 7 Всего: 329 |
Посмотрел мельком страничку. Я там не вижу поддержку D2007+
Добавлено через 6 минут и 17 секунд Мало того:
|
|||
|
||||
casinosoftguru |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 138 Регистрация: 22.12.2008 Репутация: нет Всего: нет |
я руками писал также в константы, но этот способ подойдет если текста немного в приложении
|
|||
|
||||
Xenag |
|
|||
![]() Шустрый ![]() Профиль Группа: Awaiting Authorisation Сообщений: 51 Регистрация: 6.3.2010 Репутация: нет Всего: нет |
Главная проблема - визуальное программирование.
Там локализацию прикрутить проблемно. А на уровне кода я бы посоветовал вариант с функцией локализации. То есть не ShowMessage(constMsgHelloWorld); а ShowMessage(lc(constMsgHelloWorld)); Где constMsgHelloWorld - номер фразы. lc - функция, превращающая номер в текст. Это даст: 1. Можно менять язык на лету. 2. Можно применить любой способ локализации. Не понравился нам такой вариант, пробуем другой. Изменить нужно только одну функцию. Для экспериментов - самое оно. |
|||
|
||||
roschinspb |
|
|||
Новичок Профиль Группа: Участник Сообщений: 20 Регистрация: 27.1.2010 Где: С-Пб Репутация: нет Всего: нет |
1. Без перкомпиляции нет, по ходу менять язык нельзя. Язык приложения автоматом выбирается в соответствии с выбраным языком ОС (Control Panel/Regional and Language options/Regional Options) 2. Переводить можно только ресурсы, т.е. всё что в resourcestring и dfm. Caption, DisplayLabel и т.п., естесственно тоже. Const — не канает. Ну еще есть полезная функция это возможность делать свои словари терминов. Для стандарнтых сообщений об ошибках в базовую поставку Delphi входят словари на французском, немецком и японском языках. Русских, понятное дело, нет :( , но можно найти ![]() Можно в фалы языковой поддержки и свои ресурсы грузить напр. картинки, тогда при загрузке ресурсов, в качестве хэндла модуля надо использовать FindResourceHInstance P.S. Локализовывать пробовал. |
|||
|
||||
Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 7 Всего: 329 |
![]() |
|||
|
||||
Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 7 Всего: 329 |
А кто-нибудь использовал EMS Advanced Localizer?
|
|||
|
||||
CodeMonkey |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1839 Регистрация: 24.6.2008 Где: Россия, Тверь Репутация: 4 Всего: 89 |
-------------------- Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. |
|||
|
||||
roschinspb |
|
|||
Новичок Профиль Группа: Участник Сообщений: 20 Регистрация: 27.1.2010 Где: С-Пб Репутация: нет Всего: нет |
Вот, гдето выкачал, ... первоисточник не могу найти, на авторство не претендую. В этот файл добавил все ангоязычные ресурсные строки взятые из исходников Delphi 2010. Добавлялись они автоматически с помощью самопального, типа, синтаксического анализатора, поэтому есть всякие "левые" строки. Потом дополнил некоторыми своими переводами и сделал программку, которая добавляет этот словарь в Translation Repository. P.S. Если добавишь свои переводы, вышли мне пож. свой вариант, по адресу мой_ник + сабака + mail.ru |
|||
|
||||
lukas |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 771 Регистрация: 23.2.2007 Репутация: нет Всего: 15 |
Можно использовать еще хитрее трюк, чем трюк с кодами фраз. Но он несет в себе опасность, зато программы переводить очень легко:
Функция t переводит фразу, где нибудь у нас есть база соответствий всех фраз англ и другого языка. Если необходимо вставить в фразу какой-то динамический контент, используем Format.
Функции можно укоротить , превратить в одну. -------------------- http://code.google.com/p/orionphp/ - opensource скриптовой язык Orion (аналог PHP) для freepascal/delphi. |
||||
|
|||||
imageman |
|
||||||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 66 Регистрация: 30.9.2004 Репутация: нет Всего: 1 |
я немного переработал
1. Определяем глобальные переменные (отдельный юнит) 2. Переводим все глобальные переменные на другой язык (процедура) 3. Используем эти переменные по мере необходимости пункт 2 выглядит так:
DetektorTeksta без кавычек - глобальная переменная 'DetektorTeksta' в кавычках - название строки в ini файле, который отвечает за перевод 'Детектор текста' - если в ini файле перевода нету, то переменной присвоить это значение. А заодно при выходе из программы написать в ini файл: DetektorTeksta=Детектор текста при этом как только мы исправим ini файл при следующем запуске мы получим новое значение глобальной переменной Пункт 2 делал следующим образом. Создал монитор clipboardа. Прошелся в редакторе по всем строковым константам (find ' ). Выбираем вместе с '' строку, копируем в буфер обмена. Программа-монитор берет оттуда, в один файл пишет
в другой
и в буфер обмена помещает DetektorTeksta т.е. мы вручную выбираем в редакторе кода строку - Ctrl-X Ctrl-V а потом подсоединяем пару файлов к проекту. Насчет перевода формы сделал довольно монстрообразную функцию, которая перебирает все компоненты на форме, определяет что за компонент (класс) и перебирает все строковые поля компонента. Ну и переводит их через функцию Translate. Результирующая строка в ini файле перевода что-то вроде такого
Это сообщение отредактировал(а) imageman - 29.11.2010, 14:49 |
||||||||
|
|||||||||
remax |
|
|||
![]() Доцент ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 686 Регистрация: 7.4.2002 Где: Украина, Харьков Репутация: нет Всего: 5 |
а JEDI VCL не подходит? (компонент TJvTranslator и связанные с ним...) Работает в runtime. Переводить можно все - resourcestring, caption's и т.д, и т.п. Сама либа (v3.38) идет вплоть до D2010.
P.S. Я пользую этот функционал под D7. Нормально работает.... Это сообщение отредактировал(а) remax - 30.11.2010, 03:54 -------------------- Как бы ты не старался быть хорошим и правильным человеком с принципами и уважительным отношением к другим, всегда найдется кто-то, кто бросит в тебя какашку |
|||
|
||||
imageman |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 66 Регистрация: 30.9.2004 Репутация: нет Всего: 1 |
на досуге посмотрю. Интересно, как он работает с юникодами и с Ansi строками |
|||
|
||||
Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 7 Всего: 329 |
||||
|
||||
remax |
|
|||
![]() Доцент ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 686 Регистрация: 7.4.2002 Где: Украина, Харьков Репутация: нет Всего: 5 |
Вот еще "Пример достаточно мощной многоязыковой поддержки. Языки хранятся в отдельных ини-файлах. Поддерживается ANSI, UTF-8 и Unicode. Можно изменять значение любого свойства любого компонента на любой форме. Все это делается одной командой:
LangReader.SetLanguage(nil, LangFileName). Проверено на D7, D2007, D2010. " Имя файла: multilang.zip Размер файла: 567057 байт Дата закачки: 12.12.2009 22:59:21 GMT Количество скачиваний: 514 Автор: Логинов Дмитрий сайт:http://matrix.kladovka.net.ru (в разделе разное) скачать multilang.zip П.С. Я сам еще не проверял..... Это сообщение отредактировал(а) remax - 4.12.2010, 23:50 -------------------- Как бы ты не старался быть хорошим и правильным человеком с принципами и уважительным отношением к другим, всегда найдется кто-то, кто бросит в тебя какашку |
|||
|
||||
Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 7 Всего: 329 |
remax, спасибо. Там есть много вкусного
![]() |
|||
|
||||
Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 7 Всего: 329 |
||||
|
||||
klyaksa |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 187 Регистрация: 15.9.2005 Репутация: нет Всего: нет |
||||
|
||||
Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 7 Всего: 329 |
Кто-нибудь использовал Lingobit Localizer?
Я пощупал TSiLang в течение нескольких дней. Продукт вроде хороший, мощный. Но я его удалил. Глючит. Константы переводит не так, как я ожидал. Встроить в программу переводчик не получится, нужно пользователям отдавать их специальный редактор переводов. Пока что не буду использовать. |
|||
|
||||
Rohoss |
|
|||
![]() Начальник интернета ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1308 Регистрация: 9.10.2006 Где: Matrix Репутация: 3 Всего: 18 |
А учитываете динамическую смену языка в элементах управления? Конечно, данная возможность может показаться не существенной, так как используется всего один раз за весь цикл жизни программы, однако в большинства популярных программ такая возможность есть.
|
|||
|
||||
Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 7 Всего: 329 |
||||
|
||||
Rohoss |
|
|||
![]() Начальник интернета ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1308 Регистрация: 9.10.2006 Где: Matrix Репутация: 3 Всего: 18 |
А если использовать такой алгоритм:
Есть класс, LanguageManager который имеет статическую коллекцию windows, в которой хранятся ссылки на окна. Когда окно создаётся, оно добавляется в эту коллекцию, когда уничтожается уберается из неё. Хотя может такая коллекция в какой-то части приложения и так существует... Дальше, этот класс LanguageManager имеет метод ChangeLanguage, который проходит эту коллекцию циклом и находит все элементы управления. Если имя элемента управления содержится в сопоставленном ини-файле, значит мы меняем свойство Caption на соответствующее в ини-файле. Метод ChangeLanguage нужно вызывать каждый раз при создании окна и после инициализации элементов управления. Ну и соответственно в LanguageManager хранить текущий язык. Как мне кажется реализовать не сложно, хотя могу ошибаться, так как давно с делфи не работал. Но в результате язык приложения должен меняться динамически (при вызове метода ChangeLanguage), который можно реализовать не только при загрузке окна а и на какой то кнопке вроде (сменить язык). Потом, локализировать может кто угодно, так как достаточно добавить новый ини.файл(Где то будет директория, в которой будут содержатся эти файлы). И потом, не нужно никаких компонентов ![]() |
|||
|
||||
Keeper89 |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2580 Регистрация: 26.2.2009 Репутация: нет Всего: 58 |
Так это сделано в CnPack, по крайней мере визуально )
Кстати, их компоненты что-то никто не перечисляет - вкладка CnMultiLang, 4 компонента, пробуйте. Это сообщение отредактировал(а) Keeper89 - 16.6.2011, 12:07 |
|||
|
||||
Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 7 Всего: 329 |
А никто и не знал. А есть инструкция? Может есть на русском? Примеры... картинки...
Добавлено через 42 секунды Гугл про CnMultiLang ваще ниче не ведает |
|||
|
||||
Keeper89 |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2580 Регистрация: 26.2.2009 Репутация: нет Всего: 58 |
На русском нет. Надо скачать CnVCL, поставить и там будет куча примеров
|
|||
|
||||
Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 7 Всего: 329 |
||||
|
||||
Keeper89 |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2580 Регистрация: 26.2.2009 Репутация: нет Всего: 58 |
Типа, но гораздо меньше
![]() Это сообщение отредактировал(а) Keeper89 - 16.6.2011, 13:44 |
|||
|
||||
Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 7 Всего: 329 |
Не, мне нужен конкретно пакет локализации, а не куча разных компонент.
|
|||
|
||||
Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 7 Всего: 329 |
Бесплатный пакет локализации для Delphi2009+ i18n Package
|
|||
|
||||
Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 7 Всего: 329 |
Вот интересно. А зачем переключение языка на ходу?
|
|||
|
||||
Rohoss |
|
|||
![]() Начальник интернета ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1308 Регистрация: 9.10.2006 Где: Matrix Репутация: 3 Всего: 18 |
Потому что круто. Хотя, скорее всего только раз будет использоватся ![]() |
|||
|
||||
Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 7 Всего: 329 |
В чем крутизна?
Я вот смотрю на Оперу, Огнелиса, офисные программы, фотошоп, винду, линукс, Delphi, на другие программы. Там нет переключения языка. Просто при установке выбираешь язык программы и фсё. Ну действительно, зачем переключение нужно? |
|||
|
||||
Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 7 Всего: 329 |
Вышла новая версия TsiLang. Но ошибку при переводе констант так и не исправили. До сих пор переводи русский в иероглифы ((((
Я сейчас пробую Lingobit Localizer. Переводит саму программу, EXE-шник. Можно переводить двумя кликами с разу несколько строк (свойств, компонентов) с помощью онлайн переводчиков гугл и майкрософт. Мне перевод от гугл больше понравился, хотя есть нюансы, ну т.е. ручками править некоторые переводы нужно. Программа подглючивает немного, хотя версия уже 7. Можно переводить данные из базы. Подключаешься к любой базе и переводишь прямо в программе. В общем удобно. Но стоимость....... 1200 долларов О_о ![]() Добавлено через 1 минуту и 26 секунд Я ещё не щупал Korzh Lokalizer. И я пока не знаю, что мне делать с константами. Надо было мне их в базу запихать ![]() |
|||
|
||||
Rohoss |
|
|||
![]() Начальник интернета ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1308 Регистрация: 9.10.2006 Где: Matrix Репутация: 3 Всего: 18 |
Там язык переключить не так просто. Хз, не нужно наверное... просто круто ![]() Akella, ты кстати на сильвелайт забил? |
|||
|
||||
Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 7 Всего: 329 |
Пока да, временно, т.к. дома ремонт (делаю своими силами), но всё ещё впереди
![]() |
|||
|
||||
Rohoss |
|
|||
![]() Начальник интернета ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1308 Регистрация: 9.10.2006 Где: Matrix Репутация: 3 Всего: 18 |
А, понятно. ну главное не на долго забивать
![]() |
|||
|
||||
Keeper89 |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2580 Регистрация: 26.2.2009 Репутация: нет Всего: 58 |
Rohoss, Akella просто культурно свалил на ремонт, зачем ему этот Сильверлайт
![]() ![]() |
|||
|
||||
Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 7 Всего: 329 |
честно ремонт
![]() Добавлено через 10 секунд а сильверлайт очень хочу |
|||
|
||||
Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 7 Всего: 329 |
Radialix неплохой аналог (а может и лучше) Lingobit`а, но цена... у Radialix 1200 рублей, а у Lingobit 1200 долларов О_о
http://www.radialix.ru/index.php/radialix-2-overview |
|||
|
||||
Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 7 Всего: 329 |
В общем Radialix это круто!
![]() Перевод программы с помощью PROMPT (8, 9), Google, Bing, Systran 6 Русскоязычная поддержка. Сама программа на русском. Я забросил лингобит, и купил radialix ![]() radialix лучше и на много дешевле. Да, есть, конечно, недочёты, но идеальных программ не бывает ![]() |
|||
|
||||
Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 7 Всего: 329 |
Забыл совсем... У Радиаликса справка на русском!! Это большой плюс.
А у Лингобита нету даже новостей о том, что добавлено/исправлено в новых версиях. Т.е. новую версию выпустили, а что там исправлено или добавлено вкусного нифига неизвестно (( |
|||
|
||||
Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 7 Всего: 329 |
Оказывается, купив лицензию для Радиаликс, можно активировать программу на 4х своих компьютерах. Это очень удобно. Я активировал на рабочем компе, а потом на домашнем и на ноуте.
![]() |
|||
|
||||
Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 7 Всего: 329 |
А ещё, если отдавать радиаликс-проект другому человеку для перевода, например, переводчику, то переводчик, скачав и установив программу, может её активировать бесплатно, это так называемый режим переводчика. Перевод программы не требует обязательного наличия исходного EXE файла.
|
|||
|
||||
Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 7 Всего: 329 |
||||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi" | |
|
Добро пожаловать в форум группы "Delphi". В разделе разрешается:
Строго запрещено:
Если Вам понравилась атмосфера форума, заходите к нам чаще! Люблю, целую, вечно Ваш, THandle. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Форум группы: delphi | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |