Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.01.2012, 14:32   #1
demiancz
Форумчанин
 
Регистрация: 28.09.2010
Сообщений: 246
По умолчанию Создание английской и русской версии программы используя XML

Здравствуйте. Хочу создать английскую и русскую версию программы используя XML.
Допустим есть программа на ней 2 кнопки "Ru" и "En" для выбора языка, ну и к примеру кнопки: "Яблоки", "Груши", "Сливы"
И есть XML файл для перевода:
<?xml version="1.0" encoding="windows-1251"?>
<words>

<i>
<n>Apples</n>
<v>Яблоки</v>
</i>

<i>
<n>Pears</n>
<v>Груши</v>
</i>


<i>
<n>plums</n>
<v>Сливы</v>
</i>
</words>

Как можно использовать этот XML файл что бы при нажатии например на кнопку "Ru" был русский язык, а при нажатии на кнопку "En" был английский язык.
Помогите пожалуйста!
Смотреть фильмы HD Фильмы для планшетов
demiancz вне форума Ответить с цитированием
Старый 09.01.2012, 14:40   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Не мешало бы в тег i добавить идентификкатор слова. По идентификатору поиск и выбор нужного варианта. Можно использовать компонент XmlDocument, есть и другие варианты
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 09.01.2012, 14:51   #3
FaTaL
Участник клуба
 
Аватар для FaTaL
 
Регистрация: 09.11.2007
Сообщений: 1,762
По умолчанию

Для этого будет намного удобнее и быстрее использовать INI-файл.
FaTaL вне форума Ответить с цитированием
Старый 09.01.2012, 14:56   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

И чем удобнее и быстрей? Небольшая в 5-10 строк функция поиска по идентификатору с возвратом нужного слова
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 09.01.2012, 15:50   #5
demiancz
Форумчанин
 
Регистрация: 28.09.2010
Сообщений: 246
По умолчанию

А может кто то пример кинуть. Не совсем понимаю как делать.
Смотреть фильмы HD Фильмы для планшетов
demiancz вне форума Ответить с цитированием
Старый 09.01.2012, 16:16   #6
ReportCube
Форумчанин
 
Аватар для ReportCube
 
Регистрация: 11.03.2011
Сообщений: 426
По умолчанию

Я у себя использую разные файлы для разных языков - выбранный переименовывается в базовый и именно он будет использован как основной при каждой загрузке.
ReportCube вне форума Ответить с цитированием
Старый 09.01.2012, 17:52   #7
demiancz
Форумчанин
 
Регистрация: 28.09.2010
Сообщений: 246
По умолчанию

Цитата:
Сообщение от ReportCube Посмотреть сообщение
Я у себя использую разные файлы для разных языков - выбранный переименовывается в базовый и именно он будет использован как основной при каждой загрузке.
Тоесть это как? Используете 2 exe файла? Один на английском, другой на русском? Это не то.
Мне надо что то типа такого:
Условие. Если выбран язык "Русский", то BitBtn3.Caption := ru, если "Английский", то BitBtn5.Caption := en
Вид XML такой к примеру:
<?xml version="1.0" encoding="windows-1251"?>
<words>

<i>
<en>Apples</en>
<ru>Яблоки</ru>
</i>

<i>
<en>Pears</en>
<ru>Груши</ru>
</i>


<i>
<en>plums</en>
<ru>Сливы</ru>
</i>
</words>

Только BitBtn на форме не один. А к примеру 100. Да еще и Label. И все это надо называть в зависимости от языка. На английском или на русском
Смотреть фильмы HD Фильмы для планшетов
demiancz вне форума Ответить с цитированием
Старый 09.01.2012, 18:16   #8
ReportCube
Форумчанин
 
Аватар для ReportCube
 
Регистрация: 11.03.2011
Сообщений: 426
По умолчанию

Зачем же два EXE? Ваш единственный читает свой "языковый" файл, где для каждого Вашего контрола свои языковые строки. Пользователь выбирает Russian.lng или English.lng. Выбранный файл копируется вместо Вашего Base.lng, именно из Base.lng приложение и читает все языковые настройки.
ReportCube вне форума Ответить с цитированием
Старый 09.01.2012, 18:23   #9
demiancz
Форумчанин
 
Регистрация: 28.09.2010
Сообщений: 246
По умолчанию

Все же хотелось бы реализовать так как предложил Аватар. Вот только у меня по видимому руки кривоваты.
Смотреть фильмы HD Фильмы для планшетов
demiancz вне форума Ответить с цитированием
Старый 09.01.2012, 18:35   #10
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Структуры XML есть необходимость использовать если есть структуры с иерархической вложенностью. Для организации многоязычного интерфейса достаточно использовать INI файл.
Вот пример таких файлов для разных языков одной из моих прог и код к нему:

Код:
TIniFile *ini = new TIniFile(LngFile());
// Главное меню
File->Caption = ini->ReadString("MainMenu","File","File");
NewFile->Caption = ini->ReadString("MainMenu","New","New");
OpenFile->Caption = ini->ReadString("MainMenu","Open","Open");
SaveFile->Caption = ini->ReadString("MainMenu","Sawe","Sawe");
delete ini;
Вложения
Тип файла: rar Language.rar (7.3 Кб, 15 просмотров)
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder

Последний раз редактировалось Smitt&Wesson; 09.01.2012 в 18:41.
Smitt&Wesson вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
4 версии программы gunis7 Фриланс 2 27.11.2011 12:41
с русской версии на английскую WIN 7 СУПЕР ЧАЙНИК Windows 2 16.05.2011 22:07
Добавить в XML дополнительное поле используя appendChild. Alfiks Microsoft Office Excel 1 14.03.2011 12:59
Создание портабл версии программы. Dartar Общие вопросы Delphi 2 26.12.2010 16:41
Добавить информацию о версии программы Alex Cones Общие вопросы Delphi 2 27.11.2009 09:18