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

Использование русского языка в DevC++ - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Прошу помочь с прогой, если можно) надо её оживить... http://www.cyberforum.ru/cpp-beginners/thread331376.html
#include <conio.h> #include <stdio.h> #include <stdlib.h> #include <graphics.h> #include <time.h> #include <math.h> #include <iostream.h> #include <dos.h>
C++ Типы Данных Извиняюсь, за тупой вопрос, но какой самый большой целочисленный тип данных доступный в компиляторе visual c++ express edition 2010, по возможности с примером кода. http://www.cyberforum.ru/cpp-beginners/thread331363.html
Материал по ООП C++
Сейчас изучаю начало начал в с++. То есть простейшие консольные программы строю. Хотелось бы уже попробовать поработать с настоящим программо-строем. То есть посоздавать программы на WindowsForm с кнопочками, с полями.. Не знаю как точно объяснить. Чтобы программы были не консольные а с помощью различных диалоговых окон общались с пользователем. Не могли бы помочь мне и дать мне материала по этой...
C++ Структура,которая представляет односвязные списки
Помогите пожалуйста если не трудно.Во-первых ,почему то программа не хочет компилироваться.Во-вторых каким образом для данного класса объекты могут выделяться динамически. #include <stdio.h> struct Item { int x,y; Item *next; Item() {
C++ inline аксессоры/мутаторы http://www.cyberforum.ru/cpp-beginners/thread331349.html
собстно почему аксесоры/мутаторы некто не инлайнит ? поглядел пару опенсорсных проектов, везде вся реализация в .спп.
C++ Для чего необходимы списки. Существуют различные списка наподобие "Односвязный список", "Двусвязный список ". Объясните для чего они и где обычно используются. их достоинства и недостатки! подробнее

Показать сообщение отдельно
grizlik78
Эксперт C++
 Аватар для grizlik78
1882 / 1414 / 101
Регистрация: 29.05.2011
Сообщений: 2,958
10.07.2011, 17:55     Использование русского языка в DevC++
Цитата Сообщение от easybudda Посмотреть сообщение
C этого места, если можно, чуть подробнее... Как из такого файла правильнее строки в программу внедрить?
На самом деле, если кто знает какие удобные, надёжные и кроссплатформенные средства для этого, то и сам с удовольствием послушаю.

Я же, в первую очередь подразумевал gettext. Но это, главным образом, инструмент интернационализации, так что для маленьких программ — как из пушки по воробьям может быть.

В программе записываются id-строки латиницей. Эти строки используются, если не удалось загрузить перевод для заданной локали (или в C-локали)
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
// main.c
#include <stdio.h>
#include <locale.h>
// библиотека интернационализации
#include <libintl.h>
 
// макрос для краткой формы _() вместо gettext()
#define _(string) gettext (string)
 
int main()
{
    setlocale (LC_ALL, "");
    // перевод в домене test (файл test.mo),
    // дополнительно искать в текущей папке
    bindtextdomain ("test", ".");
    textdomain ("test");
    
    // через макрос
    char * str = _("this is main string!");
    // полная форма
    char * str2 = gettext("string2");
 
    printf("%s\n", str);
    printf("%s\n", str2);
    // или сразу в нужном месте
    printf("%s\n", _("test 3"));
 
    return 0;
}
создаём файл шаблона test.pot
Bash
1
$ xgettext --from-code=utf-8 -k_ main.c -o test.pot
создаём файл русского перевода ru.po (новые строки можно будет добавлять с помощью msgmerge)
Bash
1
$ msginit --locale=ru_RU.UTF-8
редактируем по вкусу
Код
# Russian translations for PACKAGE package
# Русские переводы для пакета PACKAGE.
# Copyright (C) 2011 THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#  <grizlik78@test.only>, 2011.
#
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2011-07-10 17:31+0400\n"
"PO-Revision-Date: 2011-07-10 17:43+0400\n"
"Last-Translator:  <grizlik78@test.only>\n"
"Language-Team: Russian\n"
"Language: ru\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"

#: main.c:19
msgid "this is main string!"
msgstr "Это главная строка!"

#: main.c:21
msgid "string2"
msgstr "строка2"

#: main.c:26
msgid "test 3"
msgstr "тест 3"
осталось только создать бинарный файл перевода test.mo в нужном месте
Bash
1
$ msgfmt ru.po -o ru/LC_MESSAGES/test.mo
и можно запускать программу
Bash
1
2
3
4
5
6
7
8
9
$ ./a.out 
Это главная строка!
строка2
тест 3
 
$ LANG=C ./a.out 
this is main string!
string2
test 3

Не по теме:

Может теперь мне будет проще всё это вспоминать?

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