Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Многоязычное приложение 
:(
    Опции темы
DCamer
Дата 29.3.2010, 16:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 232
Регистрация: 29.1.2010

Репутация: нет
Всего: нет



Цитата(RatHat @  29.3.2010,  17:07 Найти цитируемый пост)
писал не проверяя кода

"Пройти, не поднимая глаз"  smile 
--------------------
Нуб!   Windows 7 Ultimate x64, Embarcadero RAD Studio 2010 - C++Builder 2010
PM MAIL   Вверх
DCamer
Дата 29.3.2010, 16:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 232
Регистрация: 29.1.2010

Репутация: нет
Всего: нет



RatHat, А зачем месседж?

Добавлено 29.03.2010, 18:01
--------------------------------------
А как в ComboBox вставить список языков?

Это сообщение отредактировал(а) DCamer - 29.3.2010, 17:02
--------------------
Нуб!   Windows 7 Ultimate x64, Embarcadero RAD Studio 2010 - C++Builder 2010
PM MAIL   Вверх
RatHat
Дата 29.3.2010, 17:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вождь индейцев
*


Профиль
Группа: Участник
Сообщений: 234
Регистрация: 5.9.2005

Репутация: -1
Всего: 1



DCamer, да я тебе к примеру написал) Ну у тебя же там будут какие-то сообщения, тексты, еще что-то)
Я просто на примере ShowMessage() показал, как получать текст для пользователя на том языке, на котором ты хочешь)
Вот тебе другой пример:

Код

TIniFile * MyFile = new TIniFile("MyProgram.ini"); //конфигурационный файл программы.
AnsiString lang = MyIni->ReadString("system","language","rus"); /*считываешь из кофигурационного файла значение параметра "language"*/
AnsiString LangFileName = AnsiString("\\langs\\messages_" + lang + ".lng"); //файл, например, "messages_rus.lng"
TIniFile *LangFile = new TiniFile(LangFileName); 

Label1->Caption  = LangFile->ReadString("Labels", "lbl1","Введите слово для перевода");
Label2->Caption  = LangFile->ReadString("Labels", "lbl2","Перевод вашего слова");
Button1->Caption = LangFile->ReadString("Buttons", "btn1","Перевести слово");


Ну и так далее smile


В КомбоБокс...проще всего (и удобнее всего в плане расширяемости) загружать в него список из файла.
Код

ComboBox1->Items->LoadFromFile(<some file name>);


Тогда ты легко можешь добавлять поддержку других языков, дописывая в файл списка еще одну строку и добавляя еще один файл *.lng с текстами на нужном языке)

Это сообщение отредактировал(а) RatHat - 29.3.2010, 17:11
--------------------
Ma a kis' hi ve'ist i wan'i na e'ho ho wan'i
PM MAIL   Вверх
DCamer
Дата 29.3.2010, 17:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 232
Регистрация: 29.1.2010

Репутация: нет
Всего: нет



RatHat, Это точно относится к списку языков (русский, английский и т.д.)?
Вот, например как в uTorrent:
user posted image

Это сообщение отредактировал(а) DCamer - 29.3.2010, 17:20
--------------------
Нуб!   Windows 7 Ultimate x64, Embarcadero RAD Studio 2010 - C++Builder 2010
PM MAIL   Вверх
RatHat
Дата 29.3.2010, 17:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вождь индейцев
*


Профиль
Группа: Участник
Сообщений: 234
Регистрация: 5.9.2005

Репутация: -1
Всего: 1



DCamer, ну блин)) Ты просто делаешь файл текстовый, например:
Код

eng
rus
ukr
grm
frn
jap
itl
alb
...

Потом, чтобы загрузить в КомбоБокс список из файла, пишешь ComboBox1->Items->LoadFromFile(<filename>);
И всё. Потом при изменении языка просто сохраняешь значение в переменную lang:
lang = ComboBox1->Text;

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

Ну слушай, я же не буду за тебя всё писать, правильно?) Я тебе вроде бы идею расписал уже) Дальше только подробный код)
--------------------
Ma a kis' hi ve'ist i wan'i na e'ho ho wan'i
PM MAIL   Вверх
DCamer
Дата 29.3.2010, 18:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 232
Регистрация: 29.1.2010

Репутация: нет
Всего: нет



RatHat, не работает смена языка
--------------------
Нуб!   Windows 7 Ultimate x64, Embarcadero RAD Studio 2010 - C++Builder 2010
PM MAIL   Вверх
RatHat
Дата 29.3.2010, 18:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вождь индейцев
*


Профиль
Группа: Участник
Сообщений: 234
Регистрация: 5.9.2005

Репутация: -1
Всего: 1



DCamer, код показывай. Если ты написал только то, что у меня было в примере, то оно и не будет особо работать) Потому что там только идея, а не полная реализация, улавливаешь? ;) Я могу написать за тебя полную реализацию, но какой в этом смысл? 
Ты ведь хочешь сам разобраться и в последствии стать толковым программистом (а не таким бездарным быдлокодером, как я), правда?smile
--------------------
Ma a kis' hi ve'ist i wan'i na e'ho ho wan'i
PM MAIL   Вверх
DCamer
Дата 29.3.2010, 18:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 232
Регистрация: 29.1.2010

Репутация: нет
Всего: нет



RatHat, Ан нет, работает  smile 
Но, уж точно не из .lng  smile 

Это сообщение отредактировал(а) DCamer - 29.3.2010, 18:59
--------------------
Нуб!   Windows 7 Ultimate x64, Embarcadero RAD Studio 2010 - C++Builder 2010
PM MAIL   Вверх
RatHat
Дата 29.3.2010, 22:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вождь индейцев
*


Профиль
Группа: Участник
Сообщений: 234
Регистрация: 5.9.2005

Репутация: -1
Всего: 1



Покажи хоть код же)
Может, подскажем чего интересного) 
--------------------
Ma a kis' hi ve'ist i wan'i na e'ho ho wan'i
PM MAIL   Вверх
DCamer
Дата 30.3.2010, 14:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 232
Регистрация: 29.1.2010

Репутация: нет
Всего: нет



RatHat, а смысл? 
Цитата(RatHat @  29.3.2010,  18:45 Найти цитируемый пост)
Я тебе вроде бы идею расписал уже

"Снова меня пытаются на «идею» купить" ©
--------------------
Нуб!   Windows 7 Ultimate x64, Embarcadero RAD Studio 2010 - C++Builder 2010
PM MAIL   Вверх
RatHat
Дата 30.3.2010, 14:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вождь индейцев
*


Профиль
Группа: Участник
Сообщений: 234
Регистрация: 5.9.2005

Репутация: -1
Всего: 1



DCamer, бебебе smile
Не хочешь - не надо)
--------------------
Ma a kis' hi ve'ist i wan'i na e'ho ho wan'i
PM MAIL   Вверх
SenkraD
Дата 30.3.2010, 14:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 933
Регистрация: 3.2.2006
Где: Украина::Киев

Репутация: 9
Всего: 23



DCamer,  как мы узнаем, что у вас не работает, если вы
не показываете код реализаций одной из идей, что вам здесь предложили?

P.S. DCamer, возникает ощущение, что вы не понимаете что делаете
    и берёте всё в том виде, в котором вам дают, а это бред так, как никто за
    вас весь код писать не будет - для этого есть другие разделы + у людей есть
    свои задачи, которы им нужно выполнять!!!



--------------------
 Имеющий язык - да не убоится спросить! 
user posted image
PM MAIL ICQ   Вверх
DCamer
Дата 30.3.2010, 14:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 232
Регистрация: 29.1.2010

Репутация: нет
Всего: нет



Код

//---------------------------------------------------------------------------
void __fastcall TForm3::FormCreate(TObject *Sender)
{
 TIniFile *Settings = new TIniFile("settings.ini"); // конфигурационный файл программы.
 AnsiString lang = Settings->ReadString("sys","lang","rus"); // считывание из кофигурационного файла
 lang = LangList->Text;
 AnsiString FileName = AnsiString("D:\\langs\\msg_" + lang + ".lng"); // языковой файл
 TIniFile *Lang = new TIniFile("FileName");
 LangList->Items->LoadFromFile("lang.txt");
}
//---------------------------------------------------------------------------
void __fastcall TForm3::LangListSelect(TObject *Sender)
{
 AnsiString lang = LangList->Text;
 AnsiString FileName = AnsiString("D:\\langs\\msg_" +lang+ ".lng"); // языковой файл
 TIniFile *Lang = new TIniFile("FileName");
 SaveChg->Caption = Lang->ReadString("btns","1","Сохранить изменения");
}
//---------------------------------------------------------------------------
void __fastcall TForm3::SaveChgClick(TObject *Sender)
{
 TIniFile *Settings = new TIniFile("settings.ini"); // конфигурационный файл программы.
 Settings->WriteString("sys","lang","rus"); // запись в кофигурационный файл
}
//---------------------------------------------------------------------------


user posted image


Это сообщение отредактировал(а) DCamer - 30.3.2010, 14:39
--------------------
Нуб!   Windows 7 Ultimate x64, Embarcadero RAD Studio 2010 - C++Builder 2010
PM MAIL   Вверх
SenkraD
Дата 30.3.2010, 15:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 933
Регистрация: 3.2.2006
Где: Украина::Киев

Репутация: 9
Всего: 23



Вы бы указали, что именно не работает!

1.) DCamer,  обьясните (извольте за вольности) что за
     бред вы творите TForm3::FormCreate? Я имею ввиду первые
     3 строчки, а в частности строку №3.
2.) TIniFile *Lang = new TIniFile("FileName"); - это очепятка?
      может хотели так:  TIniFile *Lang = new TIniFile(FileName);

P.S. Вас освобождать ресурсы учили? - я ниодного delete не вижу


Это сообщение отредактировал(а) SenkraD - 30.3.2010, 15:03


--------------------
 Имеющий язык - да не убоится спросить! 
user posted image
PM MAIL ICQ   Вверх
DCamer
Дата 30.3.2010, 15:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 232
Регистрация: 29.1.2010

Репутация: нет
Всего: нет



SenkraD, спасибо, вот только путь файла settings.ini получается - C:\Windows\settings.ini
--------------------
Нуб!   Windows 7 Ultimate x64, Embarcadero RAD Studio 2010 - C++Builder 2010
PM MAIL   Вверх
Страницы: (4) Все 1 [2] 3 4 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.0527 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.