Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C++ Builder > Как организовать мультиязыковую поддержку


Автор: new_web 12.2.2008, 21:17
Решил себя попробовать в поддерже двух языков.

Делал файл констант
Код

AnsiString strProlot;
const AnsiString STR_PROLOT_UA="Будинок";
const AnsiString STR_PROLOT_RU="Дом";

AnsiString strLong;
const AnsiString strLong_UA="Довжина";
const AnsiString strLong_RU="Длина";


Потом сравнивал

Код

if(ukr)
{
strProlot=STR_PROLOT_UA;
strLong=strLong_UA;
}
if(ru)
{
strProlot=STR_PROLOT_RU;
strLong=strLong_RU;
}


Больше ничего умного не мог придумать! А как правильно?

Автор: sergejzr 12.2.2008, 23:17
ищи реализацию хэш-таблиц в билдере(или std:map). Затем можно делать так:

Код

Hashtable * ru=new Hashtable();
ru->put('HOUSE',"Дом");
ru->put('LENGTH',"Длина");

Hashtable * ua=new Hashtable();
ua->put('HOUSE',"Будинок");
ua->put('LENGTH',"Довжина");



Ну а в самом коде:

Код

Hashtable *workingTable;
if(ukr)
{
workingTable=ua;
}else
{
workingTable=ru;
}
strProlot=workingTable->get("HOUSE");
strLong=workingTable->get("LENGTH");


Всё красиво и понятно. Ключи в таблице - слова на англицком. Ребята из раздела CPP возможно обьяснят, как пользоваться std:map, сам я уже забыл т.к пару лет не писал на сях. Но ключевое решение описно верно. 

Хотя возможно Бильдер предоставляет какие нибудь Properties именно для перевода. (Насколько я знаю, приложения дельфи одними из первых появились многоязычные)

Автор: new_web 13.2.2008, 01:00
sergejzr, Спасибо за совет!

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


Автор: artsb 13.2.2008, 10:10
У Билдера есть свои средства. Открываем нужный проект, далее:

Project->Languages->Add

Автор: new_web 13.2.2008, 10:19
Цитата(artsb @  13.2.2008,  10:10 Найти цитируемый пост)
У Билдера есть свои средства. Открываем нужный проект, далее:Project->Languages->Add


Может. моя версия билдера устарела
Version 6.0   (Build 10.157)
или, я чего-то недопонял? У меня в меню  Project- нету Languages smile 

Автор: artsb 13.2.2008, 10:51
У меня тоже 6-ой Билдер.

user posted image

Автор: new_web 13.2.2008, 19:21
Цитата(artsb @ 13.2.2008,  10:51)
У меня тоже 6-ой Билдер.

user posted image

user posted image

Такое состояние дел у меня изменяемое?

Автор: artsb 13.2.2008, 19:39
Цитата(new_web @  13.2.2008,  19:21 Найти цитируемый пост)

Такое состояние дел у меня изменяемое? 

Хм...
У тебя какой Билдер?
У меня 6.0 Enterprise Suite.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)