Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
 
akk
44 / 44 / 17
Регистрация: 28.01.2012
Сообщений: 341
#1

Консольное приложение на нескольких языках - C++

23.03.2013, 21:36. Просмотров 1038. Ответов 20
Метки нет (Все метки)

Собственно, интересно, как можно сделать свое приложение мультиязычным?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.03.2013, 21:36
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Консольное приложение на нескольких языках (C++):

консольное приложение (при запуске приложение открывалось на весь экран)
Как сделать, чтобы при запуске приложение открывалось на весь экран?

Написание программ на нескольких языках программирования
Написание программ на нескольких языках программирования - слышал, что так...

Как писать программу на нескольких языках программирования?
Что за прикол? Я в Википедии смотрю там разные популярные проги, а там написано...

Консольное приложение
Здравствуйте! Имеется консольное приложение, которое при наборе команды...

Консольное приложение на С++
народ помогите плиз решить проблему написал игру под консоль. типа змейки как...

консольное приложение
Помогите разобраться с задачкой! Написать на С++ код консольного...

20
sovaz1997
CEO SOVAZ Corp.
380 / 226 / 51
Регистрация: 17.12.2011
Сообщений: 819
Записей в блоге: 1
Завершенные тесты: 1
23.03.2013, 21:52 #2
Дай код твоего приложения (если оно у тебя есть)
0
go
Эксперт С++
3636 / 1368 / 243
Регистрация: 16.04.2009
Сообщений: 4,527
23.03.2013, 22:07 #3
akk, написать длл.
Цитата Сообщение от akk Посмотреть сообщение
мультиязычным?
Как это понять?
1
akk
44 / 44 / 17
Регистрация: 28.01.2012
Сообщений: 341
23.03.2013, 22:15  [ТС] #4
Цитата Сообщение от go Посмотреть сообщение
Как это понять?
При запуске приложение спрашивает на каком языке взаимодействовать с пользователем, т е к примеру на русском введите 1 или на английском введите 2.
0
sovaz1997
CEO SOVAZ Corp.
380 / 226 / 51
Регистрация: 17.12.2011
Сообщений: 819
Записей в блоге: 1
Завершенные тесты: 1
23.03.2013, 22:21 #5
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include <iostream>
#include <string>
 
using namespace std;
 
int main() {
    setlocale(0,""); //русский язык в консоли
    string a;
    int n = 0;
    cout << "Выберите язык (0 - Русский) (1 - Английский): ";
    cin >> n;
    if(n == 0) {
        cout << "Введите ваше имя: ";
        cin >> a;
        cout << "Привет, " << a;
    }
 
    else if(n == 1) {
        cout << "Enter your name: ";
        cin >> a;
        cout << "Hello, " << a;
    }
 
    else {
        return 0;
    }
}
Как-то так
1
akk
44 / 44 / 17
Регистрация: 28.01.2012
Сообщений: 341
23.03.2013, 22:28  [ТС] #6
Спасибо, но так делать не вариант, это для каждого языка, свою ветку вести надо, если бы как то через файл сделать.
0
Кудаив
409 / 408 / 72
Регистрация: 27.05.2012
Сообщений: 1,168
Завершенные тесты: 2
23.03.2013, 22:39 #7
везде пихаю Qt))) тут он как нельзя подойдёт - есть функция tr в которую передаются выражения требующие перевода, потом нужно подключить файлы с переводами этих выражений и можно переключать языки
2
akk
44 / 44 / 17
Регистрация: 28.01.2012
Сообщений: 341
23.03.2013, 22:43  [ТС] #8
А без qt ни как?
0
Jupiter
Каратель
Эксперт С++
6568 / 3989 / 400
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
23.03.2013, 23:05 #9
сам создай файл, сам его и читай
0
BumerangSP
4287 / 1409 / 463
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
23.03.2013, 23:06 #10
Можно в текстовых файлах хранить языки. В коде будут переменные, считывающие слова из определенного файла.

Добавлено через 22 секунды

Не по теме:

поздно)

1
Кудаив
409 / 408 / 72
Регистрация: 27.05.2012
Сообщений: 1,168
Завершенные тесты: 2
23.03.2013, 23:09 #11
как я понял ты хочешь иметь txt файлы с фразами на разных языках?
нужен контейнер в который загружаются строки, соответственно при выборе языка - выбирается файл строки которого будут загружаться в контейнер, а в необходимых местах в программе выводятся ячейки контейнера
2
akk
44 / 44 / 17
Регистрация: 28.01.2012
Сообщений: 341
23.03.2013, 23:12  [ТС] #12
BumerangSP, Кудаив, можно пример кода, пожалуйста.
0
sovaz1997
CEO SOVAZ Corp.
380 / 226 / 51
Регистрация: 17.12.2011
Сообщений: 819
Записей в блоге: 1
Завершенные тесты: 1
23.03.2013, 23:25 #13
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#include <iostream>
#include <fstream>
#include <vector>
#include <string>
 
using namespace std;
 
int main() {
    setlocale(0, ""); //русский язык в консоли
 
    string str;
    vector<string> v;
 
    int n = 0;
    cout << "Введите язык (1 - русский; 2 - английский): ";
    cin >> n;
 
    if(n == 1) {
        ifstream rus("Rus.txt");
        while(!rus.eof()) {
            getline(rus, str);
            v.push_back(str);
        }
    }
 
    if(n == 2) {
        ifstream en("En.txt");
        while(!en.eof()) {
            getline(en, str);
            v.push_back(str);
        }
    }
 
    for(int i = 0; i < v.size(); ++i) {
        cout << endl << v[i];
    }
}
Надо создать файлы "Rus.txt" и "En.txt" и прописать в них нужные строки. Думаю, реализация ясна
1
Kastaneda
Jesus loves me
Эксперт С++
4760 / 2963 / 341
Регистрация: 12.12.2009
Сообщений: 7,524
Записей в блоге: 2
Завершенные тесты: 1
23.03.2013, 23:29 #14
Выше уже писали про файлы, расжую по-подробней.
Я видел как люди делают так:
есть функция, определяющая дефолтный язык в ОС, назовем ее getLanguage(). Есть файлы, например ru.txt и en.txt, которые содержат нечто подобное
ru.txt
Код
hello: привет
en.txt
Код
hello: hello
в зависимости от того, что вернула getLanguage() открывается тот или иной файл, потом они парсятся (если файлы держать в каком-нибудь xml или json, то можно взять готовый парсер) и создаются строки
C++
1
std::string hello = getString ("hello"); // getString() функция абстрактного парсера
ну а потом просто
C++
1
std::cout << hello;
2
BumerangSP
4287 / 1409 / 463
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
23.03.2013, 23:32 #15
sovaz1997, тогда уж так как-то:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
    int n = 0;
    const char* lng;
    cout << "Ââåäèòå ÿçûê (1 - ðóññêèé; 2 - Г*Г*ãëèéñêèé): ";
    cin >> n;
    switch(n)
    {
    case 1: lng = "Rus.txt";
      break;
     case 2: lng = "Eng.txt";
       break;
     default: lng = "Eng.txt";    
     }
     
    ifstream lang(lng);    
   while(!lang.eof()) {
     getline(lang, str);
   v.push_back(str);
   }
2
akk
44 / 44 / 17
Регистрация: 28.01.2012
Сообщений: 341
23.03.2013, 23:37  [ТС] #16
Цитата Сообщение от BumerangSP Посмотреть сообщение
v.push_back(str);
Ну это тоже если в файле несколько десятков строк, а так, я понял, просто весь файл в память загоняется.
0
BumerangSP
4287 / 1409 / 463
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
23.03.2013, 23:45 #17
akk, можно сказать и так.
0
akk
44 / 44 / 17
Регистрация: 28.01.2012
Сообщений: 341
23.03.2013, 23:53  [ТС] #18
BumerangSP, а как тогда локализуются другие программы, например NotePad++, слова подгружаются через XML?
0
BumerangSP
4287 / 1409 / 463
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
23.03.2013, 23:57 #19
akk, может, как Kastaneda описал, может, через хеш-функцию какую-нибудь
1
0x10
2554 / 1734 / 285
Регистрация: 24.11.2012
Сообщений: 4,361
24.03.2013, 09:35 #20
akk, посмотрите в сторону gettext, boost::locale.
1
24.03.2013, 09:35
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.03.2013, 09:35
Привет! Вот еще темы с решениями:

Консольное приложение
как можно поставить обработчики на нажатие клавишь ctrl+c и того типа

Консольное приложение на С++
Задание такое: 1. Розробити функцію, що повертає абсолютне значення частки...

Вылетает консольное приложение
При написании любой даже самой простой задачи или программы, а также в...

Консольное приложение + DDE
Здравствуйте, товарищи! Есть необходимость написать консольное приложение для...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru