Форум программистов, компьютерный форум CyberForum.ru

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

Восстановить пароль Регистрация
 
 
akk
 Аватар для akk
44 / 44 / 7
Регистрация: 28.01.2012
Сообщений: 341
23.03.2013, 21:36     Консольное приложение на нескольких языках #1
Собственно, интересно, как можно сделать свое приложение мультиязычным?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.03.2013, 21:36     Консольное приложение на нескольких языках
Посмотрите здесь:

C++ Консольное приложение + DDE
консольное приложение C++
C++ Консольное приложение на С++
C++ консольное приложение (при запуске приложение открывалось на весь экран)
Консольное приложение на С++ C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
sovaz1997
CEO SOVAZ Corp.
 Аватар для sovaz1997
379 / 225 / 2
Регистрация: 17.12.2011
Сообщений: 816
Записей в блоге: 1
23.03.2013, 21:52     Консольное приложение на нескольких языках #2
Дай код твоего приложения (если оно у тебя есть)
go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
23.03.2013, 22:07     Консольное приложение на нескольких языках #3
akk, написать длл.
Цитата Сообщение от akk Посмотреть сообщение
мультиязычным?
Как это понять?
akk
 Аватар для akk
44 / 44 / 7
Регистрация: 28.01.2012
Сообщений: 341
23.03.2013, 22:15  [ТС]     Консольное приложение на нескольких языках #4
Цитата Сообщение от go Посмотреть сообщение
Как это понять?
При запуске приложение спрашивает на каком языке взаимодействовать с пользователем, т е к примеру на русском введите 1 или на английском введите 2.
sovaz1997
CEO SOVAZ Corp.
 Аватар для sovaz1997
379 / 225 / 2
Регистрация: 17.12.2011
Сообщений: 816
Записей в блоге: 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;
    }
}
Как-то так
akk
 Аватар для akk
44 / 44 / 7
Регистрация: 28.01.2012
Сообщений: 341
23.03.2013, 22:28  [ТС]     Консольное приложение на нескольких языках #6
Спасибо, но так делать не вариант, это для каждого языка, свою ветку вести надо, если бы как то через файл сделать.
Кудаив
329 / 406 / 24
Регистрация: 27.05.2012
Сообщений: 1,163
Завершенные тесты: 2
23.03.2013, 22:39     Консольное приложение на нескольких языках #7
везде пихаю Qt))) тут он как нельзя подойдёт - есть функция tr в которую передаются выражения требующие перевода, потом нужно подключить файлы с переводами этих выражений и можно переключать языки
akk
 Аватар для akk
44 / 44 / 7
Регистрация: 28.01.2012
Сообщений: 341
23.03.2013, 22:43  [ТС]     Консольное приложение на нескольких языках #8
А без qt ни как?
Jupiter
Каратель
Эксперт C++
6543 / 3963 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
23.03.2013, 23:05     Консольное приложение на нескольких языках #9
сам создай файл, сам его и читай
BumerangSP
 Аватар для BumerangSP
4283 / 1405 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
23.03.2013, 23:06     Консольное приложение на нескольких языках #10
Можно в текстовых файлах хранить языки. В коде будут переменные, считывающие слова из определенного файла.

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

Не по теме:

поздно)

Кудаив
329 / 406 / 24
Регистрация: 27.05.2012
Сообщений: 1,163
Завершенные тесты: 2
23.03.2013, 23:09     Консольное приложение на нескольких языках #11
как я понял ты хочешь иметь txt файлы с фразами на разных языках?
нужен контейнер в который загружаются строки, соответственно при выборе языка - выбирается файл строки которого будут загружаться в контейнер, а в необходимых местах в программе выводятся ячейки контейнера
akk
 Аватар для akk
44 / 44 / 7
Регистрация: 28.01.2012
Сообщений: 341
23.03.2013, 23:12  [ТС]     Консольное приложение на нескольких языках #12
BumerangSP, Кудаив, можно пример кода, пожалуйста.
sovaz1997
CEO SOVAZ Corp.
 Аватар для sovaz1997
379 / 225 / 2
Регистрация: 17.12.2011
Сообщений: 816
Записей в блоге: 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" и прописать в них нужные строки. Думаю, реализация ясна
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4237 / 2770 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 1
Завершенные тесты: 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;
BumerangSP
 Аватар для BumerangSP
4283 / 1405 / 121
Регистрация: 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);
   }
akk
 Аватар для akk
44 / 44 / 7
Регистрация: 28.01.2012
Сообщений: 341
23.03.2013, 23:37  [ТС]     Консольное приложение на нескольких языках #16
Цитата Сообщение от BumerangSP Посмотреть сообщение
v.push_back(str);
Ну это тоже если в файле несколько десятков строк, а так, я понял, просто весь файл в память загоняется.
BumerangSP
 Аватар для BumerangSP
4283 / 1405 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
23.03.2013, 23:45     Консольное приложение на нескольких языках #17
akk, можно сказать и так.
akk
 Аватар для akk
44 / 44 / 7
Регистрация: 28.01.2012
Сообщений: 341
23.03.2013, 23:53  [ТС]     Консольное приложение на нескольких языках #18
BumerangSP, а как тогда локализуются другие программы, например NotePad++, слова подгружаются через XML?
BumerangSP
 Аватар для BumerangSP
4283 / 1405 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
23.03.2013, 23:57     Консольное приложение на нескольких языках #19
akk, может, как Kastaneda описал, может, через хеш-функцию какую-нибудь
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.03.2013, 09:35     Консольное приложение на нескольких языках
Еще ссылки по теме:

Консольное приложение. sizeof; C++
Консольное приложение C++
C++ Написание программ на нескольких языках программирования

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

Или воспользуйтесь поиском по форуму:
0x10
2425 / 1597 / 232
Регистрация: 24.11.2012
Сообщений: 3,919
24.03.2013, 09:35     Консольное приложение на нескольких языках #20
akk, посмотрите в сторону gettext, boost::locale.
Yandex
Объявления
24.03.2013, 09:35     Консольное приложение на нескольких языках
Ответ Создать тему
Опции темы

Текущее время: 16:24. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru