Когда и как использовать std :: locale :: messages?

Стандарт C ++ определяет шесть категорий аспектов: collate, ctype, monetary, numeric, time, а также messages,

Я знал, как использовать первые пять, но я не знаю, когда и как использовать последние: std::locale::messages,

Какие-нибудь наглядные примеры?

8

Решение

std::locale::messages используется для открытия каталогов сообщений (чаще всего GNU gettext) включая переведенные строки. Вот пример который открывает существующий каталог сообщений с использованием в Linux (для sed) на немецком языке, извлекает (используя get()) и выводит переводы для английских строк:

#include <iostream>
#include <locale>

int main()
{
std::locale loc("de_DE.utf8");
std::cout.imbue(loc);
auto& facet = std::use_facet<std::messages<char>>(loc);
auto cat = facet.open("sed", loc);
if(cat < 0 )
std::cout << "Could not open german \"sed\" message catalog\n";
else
std::cout << "\"No match\" in German: "<< facet.get(cat, 0, 0, "No match") << '\n'
<< "\"Memory exhausted\" in German: "<< facet.get(cat, 0, 0, "Memory exhausted") << '\n';
facet.close(cat);
}

какие выводы:

"No match" in German: Keine Übereinstimmung
"Memory exhausted" in German: Speicher erschöpft

редактировать: Уточнение по этот комментарий.

8

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]