![]() |
![]() ![]() ![]() ![]() ![]() |
![]() |
Boost.Locale: Using Localization BackendsBoost , ,
Using Localization Backends По умолчанию, Boost. Locale использует ICU для всех задач локализации и манипулирования текстом. Это самая мощная библиотека, но иногда нам не нужна полная мощность этой библиотеки, или мы хотим уменьшить зависимость от сторонних библиотек, и ICU ни в коем случае не маленькая библиотека. Повышаю. Locale предоставляет возможность использования бэкэндов локализации, не основанных на ICU. Хотя обычно они менее мощные, они часто предоставляют все, что вам нужно: форматирование сообщений, валюта, дата, время, форматирование чисел, базовое сопоставление и манипулирование случаем. Они реализуются с использованием стандартного OS API или библиотеки C или C++. When to use non-ICU backendsСуществуют ситуации, когда целесообразно использовать не основанную на ИКУ локализацию:
Non-ICU BackendsВсе альтернативные бэкэнды имеют такие ограничения:
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, такие как< Он обеспечивает простую и готовую поддержку локализации, особенно в Mac OS X, где GCC<
winapi - Win32 API.Поддержка локализации на основе Win32API обеспечивает достойную поддержку UTF-8/UTF-16. Он основан на функциях Windows API, таких как<
Supported Features
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.
Вы также можете создать смесь из нескольких бэкэндов, используя, например,< 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 |