Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения

Boost.Locale: Using Localization Backends

Boost , ,

Using Localization Backends

По умолчанию, Boost. Locale использует ICU для всех задач локализации и манипулирования текстом. Это самая мощная библиотека, но иногда нам не нужна полная мощность этой библиотеки, или мы хотим уменьшить зависимость от сторонних библиотек, и ICU ни в коем случае не маленькая библиотека.

Повышаю. Locale предоставляет возможность использования бэкэндов локализации, не основанных на ICU. Хотя обычно они менее мощные, они часто предоставляют все, что вам нужно: форматирование сообщений, валюта, дата, время, форматирование чисел, базовое сопоставление и манипулирование случаем. Они реализуются с использованием стандартного OS API или библиотеки C или C++.

When to use non-ICU backends

Существуют ситуации, когда целесообразно использовать не основанную на ИКУ локализацию:

  • Встроенные системы, где библиотека ICU очень здорова.
  • Приложения, в которых требуются только базовые функции, такие как форматирование сообщений, даты и времени, а также базовое сопоставление, и использование сторонней библиотеки, такой как ICU, было бы слишком сложным.
  • Выступление. ICU — очень мощная библиотека, но обычно она медленнее, чем стандартная библиотека. Иногда лучше использовать более простой, но быстрый бэкэнд локализации.

Non-ICU Backends

Все альтернативные бэкэнды имеют такие ограничения:

  • Поддерживается только григорианский календарь, основанный на капабилитах функциональности mktime (включая диапазон дат).
  • Никакого пограничного анализа.
  • Обработка кейсов очень проста и основана на одном преобразовании кодовых точек, хотя они по-прежнему обрабатывают UTF-8 лучше, чем стандартная библиотека.
  • Спецификация часового пояса очень ограничена: либо локальное время, либо часовой пояс в формате «GMT+HH:MM».
  • Нет форматирования процентов, нет орфографии или порядкового форматирования чисел.
  • За исключениемwinapiбэкэнда, сбор ограничен одним уровнем, аналогичным тому, что делаетсяstrcoll.

std - The standard C++ library backend

Этот бэкэнд локализации основан на стандартной библиотеке C++.

Он поддерживается на всех платформах, но на самом деле полезен только на платформах, где стандартная библиотека поддерживает локализации помимо «C» и «POSIX»: на Linux с компиляторами GCC или Intel и под компилятором MSVC.

Он работает с некоторыми распространенными ошибками стандартной библиотеки, такими как недействительное поколение UTF-8 для численного форматирования, и он дает в противном случае отсутствующие имена POSIX и поддержку UTF-8 в MSVC.

Это очень полезно, когда компилятор и библиотека действительно обеспечивают хорошую поддержку локализации, например, GCC под Linux или MSVC под Windows.

posix - POSIX 2008 C library

Этот бэкэнд основан на последних стандартах POSIX 2008 и использует функции POSIX api, такие как<newlocale>,<freelocale>,<strftime_l>и т. Д. Он доступен на платформах Linux и Mac OS X.

Он обеспечивает простую и готовую поддержку локализации, особенно в Mac OS X, где GCC<libstdc++>не поддерживает локализации.

Note
The POSIX backend only supports UTF-8, single-byte, and double-byte encodings.

winapi - Win32 API.

Поддержка локализации на основе Win32API обеспечивает достойную поддержку UTF-8/UTF-16. Он основан на функциях Windows API, таких как<GetLocaleInfoW>,<LCMapStringW>,<GetDateFormatW>и т. д., и обеспечивает хорошую поддержку локализации даже на платформах MinGW и Cygwin, которые обычно имеют проблемы с этим.

Note
  • Если вы используете компилятор GCC под Windows, для его использования вам нужна серия GCC-4.x, GCC-3.4 не поддерживается.
  • Поддерживаются только UTF-8 как узкое локальное кодирование и UTF-16 как широкое кодирование.

Supported Features

Backend icuposixwinapistd
Message Formatting Да.Да.Да.Да.
Non UTF-8 encodings Да.Да.Нет.Да.
Date/Time Formatting/Parsing Да.Только форматированиеТолько форматированиеТолько форматирование
Monetary Formatting/Parsing Да.Только форматированиеТолько форматированиеДа.
Number Formatting/Parsing Да.Да.Да.Да.
Numbers as Percent, Spelled Out Да.Нет.Нет.Нет.
Case Manipulation Да.БазовыйБазовыйБазовый
Collation ПолныйLinux - 1 уровень
Mac OS X - сломан
3 уровня1 уровень
Calendar Да.Только григорианскийТолько григорианскийТолько григорианский
Boundary Analysis Да.Нет.Нет.Нет.
Unicode Normalization Да.Нет.Vista и вышеНет.
C++0x characters Да.Нет.Нет.Да.
OS Support ЛюбойLinux, Mac OS XWindows, CygwinЛюбой
Useful on Любая платформаLinux и Mac OS XWindows/MinGW/CygwinLinux с GCC или Intel
Windows с MSVC

Using Localization Backends

Доступ к бэкэнду локализации осуществляется черезboost::locale::localization_backend_managerкласс.

Вы можете создать свой собственныйboost::locale::localization_backend_manager, начав с глобального backend черезboost::locale::localization_backend_manager::globalстатическую функцию члена и изменив ее.

Например:

localization_backend_manager my = localization_backend_manager::global();
// Get global backend
my.select("std");
// select std backend as default
generator gen(my);
// create a generator that uses this backend.
localization_backend_manager::global(my);
// set this backend globally
generator gen2();
// now this one would use the new global backend.

Вы также можете создать смесь из нескольких бэкэндов, используя, например,<icu>для одного вида операции и<std>для всех других:

localization_backend_manager my = localization_backend_manager::global();
// Get global backend
my.select("std");
// select std backend as default for all categories
my.select("icu",boundary_facet);
// select icu backend for boundary analysis (since it is not supported by \c std)

Статья Boost.Locale: Using Localization Backends раздела может быть полезна для разработчиков на c++ и boost.




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.



:: Главная :: ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-30 11:47:00
2025-05-20 00:26:42/0.0042109489440918/0