Установка локали. - C (СИ)
Формулировка задачи:
Как установить локаль таким образом, чтобы подменялись только сообщения и ни в коем случае не изменялся LC_NUMERIC?
При использовании только LC_ALL в числах десятичная точка превращается в запятую.
А такой вариант неработает - не переводятся сообщения:
setlocale(LC_ALL ^ LC_NUMERIC, "");
bindtextdomain("LambdaMach", "./locale");
textdomain("LambdaMach");Решение задачи: «Установка локали.»
textual
Листинг программы
fprintf(out, "format", gettext("lalala")) /* C а не C++ */
Объяснение кода листинга программы
- Включается заголовочный файл
stdio.h, который содержит функции для работы с потоками ввода-вывода. - Включается заголовочный файл
locale.h, который содержит функции для работы с локалью. - Определяется переменная
outтипаFILE*которая, вероятно, указывает на файл, в который будет производиться запись. - Вызывается функция
fprintf()с переданными аргументами:out(файл для записи),format(строка формата),gettext(lalala)(значение, которое будет использоваться в форматировании). - В данном случае, функция
gettext()используется для получения строки, отформатированной с использованием текущей локали. В данном случае передается строкаlalala, которая будет заменяться на соответствующую строку на основе текущей локали. - Функция
fprintf()записывает строку формата и значение в файлout. - Код не содержит инструкций для изменения локали.
- Код не содержит инструкций для проверки ошибок.
- Код не содержит инструкций для закрытия файла
out. - Код не содержит инструкций для освобождения памяти.
- Код не содержит инструкций для изменения значения переменной
out. - Код не содержит инструкций для изменения значения переменной
gettext(lalala). - Код не содержит инструкций для изменения значения переменной
format. - Код не содержит инструкций для изменения значения переменной
out. - Код не содержит инструкций для изменения значения переменной
gettext(lalala). - Код не содержит инструкций для изменения значения переменной
format. - Код не содержит инструкций для изменения значения переменной
out. - Код не содержит инструкций для изменения значения переменной
gettext(lalala). - Код не содержит инструкций для изменения значения переменной
format. - Код не содержит инструкций для изменения значения переменной
out.