Динамический перевод сообщений программ — КиберПедия 

Наброски и зарисовки растений, плодов, цветов: Освоить конструктивное построение структуры дерева через зарисовки отдельных деревьев, группы деревьев...

Состав сооружений: решетки и песколовки: Решетки – это первое устройство в схеме очистных сооружений. Они представляют...

Динамический перевод сообщений программ

2021-01-29 108
Динамический перевод сообщений программ 0.00 из 5.00 0 оценок
Заказать работу

 

Только что освещенные интерфейсы стандартной библиотеки С решают простые части проблемы локализации. Для денежных, числовых значений, значений времени и даты, также, как для проблем сортировки строк, применяется управление посредством таблиц специфичных для локали данных (таких, как списки названий месяцев и дней).

Однако, большая часть взаимодействия пользователя с текстовой программой осуществляется в виде выводимых сообщений, таких, как приглашения или сообщения об ошибках. Проблема заключается в необходимости избежания множества версий одной и той же программы, которые отличаются лишь содержанием строк сообщений. Решением де‑факто в мире GNU является GNU. (GNU программы сталкиваются с подобными проблемами с элементами меню; обычно у каждого большого инструментария пользовательского интерфейса свой способ решения этой проблемы.)

GNU дает возможность перевода сообщений программы на другие языки во время исполнения. Внутри кода программы этот перевод включает несколько шагов, каждый из которых использует свои библиотечные функции. Когда сама программа должным образом подготовлена, несколько утилит на уровне оболочки дают возможность подготовить переводы на другие языки. Каждый такой перевод называется списком сообщений (message catalog).

 

Установка текстового домена:

 

Законченное приложение может содержать множество компонентов: отдельные исполняемые файлы, написанные на С или C++ или на языках сценариев, которые также могут получить доступ к возможностям, таких, как или оболочка Bash Все компоненты приложения разделяют один и тот же текстовый домен, который является строкой, уникально идентифицирующей приложение. (Примерами могут быть «» или «»; первое является простой программой, а последнее – целым набором программ.) Текстовый домен устанавливается функцией:

 

Каждый компонент должен вызывать эту функцию со строкой, указывающей на текстовый домен, в составе первоначальной инициализации в. Возвращаемое значение является текущим текстовым доменом. Если аргумент равен, возвращается текущий домен; в противном случае, он устанавливается в указанное значение, а последнее возвращается. Возвращаемое значение указывает на какую‑нибудь разновидность ошибки.

Если текстовый домен не установлен с помощью, по умолчанию используется «».

 

Перевод сообщений:

 

Следующим после установки текстового домена шагом является использование функции (или ее разновидности) для каждой строки, которая должна быть переведена. Несколько функций предоставляют службы перевода:

 

Аргументы, используемые в этих функциях, следующие:

 

Переводимая строка. Она действует в качестве ключа к базе данных переводов.

 

Текстовый домен, из которого нужно получить перевод. Таким образом, хотя вызвала для установки собственного домена приложения, сообщения могут быть получены из других текстовых доменов. (Это наиболее применимо к сообщениям, которые могли бы быть, например, в текстовом домене библиотеки от третьей стороны.)

 

Одна из описанных ранее категорий доменов (и т.п.). Доменом по умолчанию является то, что было раньше установлено с помощью («», если никогда не вызывалась). Категорией по умолчанию является. Предположим, делает следующий вызов:

 

Тогда '' эквивалентно ''. Обе функции, в свою очередь, эквивалентны ''.

В 99,9% времени бывает нужно использовать. Однако, другие функции обеспечивают гибкость при работе с другими текстовыми доменами или категориями локалей. Скорее всего, эта гибкость потребуется при программировании библиотек, поскольку автономная библиотека почти наверняка будет использовать свой собственный текстовый домен.

Все функции возвращают строки. Строка является либо переводом данного, либо, если перевода не существует, первоначальной строкой. Таким образом, всегда имеется какой‑нибудь вывод, даже если это первоначальное сообщение (предположительно на английском). Например:

 

 

Хотя сообщение является простой строкой, мы не используем ее непосредственно в форматирующей строке, поскольку в общем перевод может содержать символы.

Вскоре, в разделе 13.3.4 «Упрощение использования», мы увидим, как облегчить использование в крупномасштабных, реальных программах.

 


Поделиться с друзьями:

Таксономические единицы (категории) растений: Каждая система классификации состоит из определённых соподчиненных друг другу...

Двойное оплодотворение у цветковых растений: Оплодотворение - это процесс слияния мужской и женской половых клеток с образованием зиготы...

История создания датчика движения: Первый прибор для обнаружения движения был изобретен немецким физиком Генрихом Герцем...

Биохимия спиртового брожения: Основу технологии получения пива составляет спиртовое брожение, - при котором сахар превращается...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.007 с.