22.1. ÐоддеÑжка ÑзÑковÑÑ ÑÑандаÑÑов
ÐоддеÑжка ÑзÑковÑÑ ÑÑандаÑÑов в пÑиложениÑÑ Ð¾ÑноÑиÑÑÑ Ðº кÑлÑÑÑÑнÑм пÑедпоÑÑениÑм, коÑоÑÑе каÑаÑÑÑÑ Ð°Ð»ÑавиÑа, поÑÑдка ÑоÑÑиÑовки, ÑоÑмаÑиÑÐ¾Ð²Ð°Ð½Ð¸Ñ ÑиÑел и Ñ. п. Postgres Pro иÑполÑзÑÐµÑ ÑооÑвеÑÑÑвÑÑÑие ÑÑандаÑÑам ISO C и POSIX возможноÑÑи локали, пÑедоÑÑавлÑемÑе опеÑаÑионной ÑиÑÑемой ÑеÑвеÑа. Ðа дополниÑелÑной инÑоÑмаÑией обÑаÑайÑеÑÑ Ðº докÑменÑаÑии ваÑей ÑиÑÑемÑ.
22.1.1. ÐбзоÑ
ÐоддеÑжка локали авÑомаÑиÑеÑки иниÑиализиÑÑеÑÑÑ, когда клаÑÑÐµÑ Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ
ÑоздаÑÑÑÑ Ð¿Ñи помоÑи initdb. initdb иниÑиализиÑÑÐµÑ ÐºÐ»Ð°ÑÑÐµÑ Ð±Ð°Ð· даннÑÑ
по ÑмолÑÐ°Ð½Ð¸Ñ Ñ Ð»Ð¾ÐºÐ°Ð»ÑÑ Ð¸Ð· окÑÑÐ¶ÐµÐ½Ð¸Ñ Ð²ÑполнениÑ. ÐоÑÑомÑ, еÑли ваÑа ÑиÑÑема Ñже иÑполÑзÑÐµÑ Ð»Ð¾ÐºÐ°Ð»Ñ, коÑоÑÑÑ Ð²Ñ Ñ
оÑиÑе вÑбÑаÑÑ Ð´Ð»Ñ Ð²Ð°Ñего клаÑÑеÑа баз даннÑÑ
, вам не ÑÑебÑеÑÑÑ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸ÑелÑно ÑовеÑÑаÑÑ Ð½Ð¸ÐºÐ°ÐºÐ¸Ñ
дейÑÑвий. ÐÑли Ð²Ñ Ñ
оÑиÑе иÑполÑзоваÑÑ Ð´ÑÑгÑÑ Ð»Ð¾ÐºÐ°Ð»Ñ (или Ð²Ñ ÑоÑно не знаеÑе, ÐºÐ°ÐºÐ°Ñ Ð»Ð¾ÐºÐ°Ð»Ñ Ð¸ÑполÑзÑеÑÑÑ Ð² ваÑей ÑиÑÑеме), Ð²Ñ Ð¼Ð¾Ð¶ÐµÑе ÑказаÑÑ Ð´Ð»Ñ initdb, какÑÑ Ð¸Ð¼ÐµÐ½Ð½Ð¾ Ð»Ð¾ÐºÐ°Ð»Ñ Ð¸ÑполÑзоваÑÑ, задав паÑамеÑÑ --locale. ÐапÑимеÑ:
initdb --locale=ru_RU
ÐаннÑй пÑÐ¸Ð¼ÐµÑ Ð´Ð»Ñ Unix-ÑиÑÑем задаÑÑ ÑÑÑÑкий ÑзÑк (ru), на коÑоÑом говоÑÑÑ Ð² РоÑÑии (RU) ÐÑÑгими ваÑианÑами могÑÑ Ð±ÑÑÑ en_US (амеÑиканÑкий английÑкий) и fr_CA (канадÑкий ÑÑанÑÑзÑкий). ÐÑли в ÑзÑковом окÑÑжении Ð¼Ð¾Ð¶ÐµÑ Ð¸ÑполÑзоваÑÑÑÑ Ð±Ð¾Ð»ÐµÐµ одного набоÑа Ñимволов, знаÑение Ð¼Ð¾Ð¶ÐµÑ Ð¿ÑинимаÑÑ Ð²Ð¸Ð´ language_territory.codeset. ÐапÑимеÑ, fr_BE.UTF-8 обознаÑÐ°ÐµÑ ÑÑанÑÑзÑкий ÑзÑк (fr), на коÑоÑом говоÑÑÑ Ð² ÐелÑгии (BE), Ñ ÐºÐ¾Ð´Ð¸Ñовкой UTF-8.
То, какие локали и под какими именами доÑÑÑÐ¿Ð½Ñ Ð½Ð° ваÑей ÑиÑÑеме, завиÑÐ¸Ñ Ð¾Ñ Ñого, ÑÑо бÑло вклÑÑено в опеÑаÑионнÑÑ ÑиÑÑÐµÐ¼Ñ Ð¿ÑоизводиÑелем и ÑÑо из ÑÑого бÑло ÑÑÑановлено. РболÑÑинÑÑве Unix-ÑиÑÑем команда locale -a вÑÐ²ÐµÐ´ÐµÑ ÑпиÑок доÑÑÑпнÑÑ
локалей. Windows иÑполÑзÑÐµÑ Ð±Ð¾Ð»ÐµÐµ ÑазвÑÑнÑÑÑе имена локалей, Ñакие как German_Germany или Russian_Russia.1251, но пÑинÑÐ¸Ð¿Ñ Ð¾ÑÑаÑÑÑÑ Ñеми же.
Ðногда ÑелеÑообÑазно обÑединиÑÑ Ð¿Ñавила из ÑазлиÑнÑÑ Ð»Ð¾ÐºÐ°Ð»ÐµÐ¹, напÑимеÑ, иÑполÑзоваÑÑ Ð°Ð½Ð³Ð»Ð¸Ð¹Ñкие пÑавила ÑÑÐ°Ð²Ð½ÐµÐ½Ð¸Ñ Ð¸ иÑпанÑкие ÑообÑениÑ. ÐÐ»Ñ ÑÑой Ñели ÑÑÑеÑÑвÑÐµÑ Ð½Ð°Ð±Ð¾Ñ ÐºÐ°ÑегоÑий локали, ÐºÐ°Ð¶Ð´Ð°Ñ Ð¸Ð· коÑоÑÑÑ ÑпÑавлÑÐµÑ ÑолÑко опÑеделÑннÑми аÑпекÑами пÑавил локализаÑии:
LC_COLLATE | ÐоÑÑдок ÑоÑÑиÑовки ÑÑÑок |
LC_CTYPE | ÐлаÑÑиÑикаÑÐ¸Ñ Ñимволов (ЧÑо пÑедÑÑавлÑÐµÑ Ñобой бÑква? Ðаков ÐµÑ ÑÐºÐ²Ð¸Ð²Ð°Ð»ÐµÐ½Ñ Ð² веÑÑ Ð½ÐµÐ¼ ÑегиÑÑÑе?) |
LC_MESSAGES | ЯзÑк ÑообÑений |
LC_MONETARY | ФоÑмаÑиÑование валÑÑнÑÑ ÑÑмм |
LC_NUMERIC | ФоÑмаÑиÑование ÑиÑел |
LC_TIME | ФоÑмаÑиÑование даÑÑ Ð¸ вÑемени |
ÐÑи имена каÑегоÑий initdb пÑÐ¸Ð½Ð¸Ð¼Ð°ÐµÑ Ð² каÑеÑÑве имÑн ÑооÑвеÑÑÑвÑÑÑиÑ
паÑамеÑÑов, позволÑÑÑиÑ
пеÑеопÑеделиÑÑ Ð²ÑÐ±Ð¾Ñ Ð»Ð¾ÐºÐ°Ð»Ð¸ в опÑеделÑнной каÑегоÑии. ÐапÑимеÑ, ÑÑÐ¾Ð±Ñ Ð½Ð°ÑÑÑоиÑÑ Ð»Ð¾ÐºÐ°Ð»Ñ Ð½Ð° канадÑкий ÑÑанÑÑзÑкий, но пÑи ÑÑом иÑполÑзоваÑÑ Ð°Ð¼ÐµÑиканÑкие пÑавила ÑоÑмаÑиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð´ÐµÐ½ÐµÐ¶Ð½ÑÑ
ÑÑмм, иÑполÑзÑйÑе initdb --locale=fr_CA --lc-monetary=en_US.
ÐÑли Ð²Ñ Ñ
оÑиÑе, ÑÑÐ¾Ð±Ñ ÑиÑÑема ÑабоÑала без ÑзÑковой поддеÑжки, иÑполÑзÑйÑе ÑпеÑиалÑное Ð¸Ð¼Ñ Ð»Ð¾ÐºÐ°Ð»Ð¸ C либо ÑквиваленÑное ÐµÐ¼Ñ POSIX.
ÐнаÑÐµÐ½Ð¸Ñ Ð½ÐµÐºÐ¾ÑоÑÑÑ
каÑегоÑий локали Ð´Ð¾Ð»Ð¶Ð½Ñ Ð±ÑÑÑ Ð·Ð°Ð´Ð°Ð½Ñ Ð¿Ñи Ñоздании Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ
. ÐÑ Ð¼Ð¾Ð¶ÐµÑе иÑполÑзоваÑÑ ÑазлиÑнÑе паÑамеÑÑÑ Ð»Ð¾ÐºÐ°Ð»Ð¸ Ð´Ð»Ñ ÑазлиÑнÑÑ
баз даннÑÑ
, но поÑле ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð±Ð°Ð·Ñ Ð²Ñ Ñже не ÑможеÑе измениÑÑ Ð¸Ñ
Ð´Ð»Ñ ÑÑой Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ
. LC_COLLATE и LC_CTYPE ÑвлÑÑÑÑÑ ÑÑими каÑегоÑиÑми. Ðни влиÑÑÑ Ð½Ð° поÑÑдок ÑоÑÑиÑовки в индекÑаÑ
, поÑÑÐ¾Ð¼Ñ Ð¾Ð½Ð¸ Ð´Ð¾Ð»Ð¶Ð½Ñ Ð±ÑÑÑ Ð·Ð°ÑикÑиÑованÑ, инаÑе индекÑÑ Ð½Ð° ÑекÑÑовÑÑ
ÑÑолбÑаÑ
могÑÑ Ð¿Ð¾Ð²ÑедиÑÑÑÑ. (Ðднако можно ÑмÑгÑиÑÑ ÑÑи огÑаниÑÐµÐ½Ð¸Ñ ÑеÑез задание пÑавил ÑÑавнениÑ, как ÑÑо опиÑано в Ñазделе Раздел 22.2.) ÐнаÑÐµÐ½Ð¸Ñ Ð¿Ð¾ ÑмолÑÐ°Ð½Ð¸Ñ Ð´Ð»Ñ ÑÑиÑ
каÑегоÑий опÑеделÑÑÑÑÑ Ð¿Ñи запÑÑке initdb, и ÑÑи знаÑÐµÐ½Ð¸Ñ Ð¸ÑполÑзÑÑÑÑÑ Ð¿Ñи Ñоздании новÑÑ
баз даннÑÑ
, еÑли дÑÑгие знаÑÐµÐ½Ð¸Ñ Ð½Ðµ ÑÐºÐ°Ð·Ð°Ð½Ñ Ñвно в команде CREATE DATABASE.
ÐÑоÑие каÑегоÑии локали Ð²Ñ Ð¼Ð¾Ð¶ÐµÑе измениÑÑ Ð² лÑбое вÑемÑ, наÑÑÑоив паÑамеÑÑÑ ÐºÐ¾Ð½ÑигÑÑаÑии ÑеÑвеÑа, коÑоÑÑе имеÑÑ Ñакое же Ð¸Ð¼Ñ ÐºÐ°Ðº и каÑегоÑии локали (подÑобнее Ñм. ÐодÑаздел 18.11.2). ÐнаÑениÑ, вÑбÑаннÑе ÑеÑез initdb, ÑакÑиÑеÑки запиÑÑваÑÑÑÑ Ð»Ð¸ÑÑ Ð² Ñайл конÑигÑÑаÑии postgresql.conf, ÑÑÐ¾Ð±Ñ Ð¸ÑполÑзоваÑÑÑÑ Ð¿Ð¾ ÑмолÑÐ°Ð½Ð¸Ñ Ð¿Ñи запÑÑке ÑеÑвеÑа. ÐÑли Ð²Ñ ÑдалиÑе ÑÑи знаÑÐµÐ½Ð¸Ñ Ð¸Ð· postgresql.conf, ÑеÑÐ²ÐµÑ Ð¿Ð¾Ð»ÑÑÐ¸Ñ ÑооÑвеÑÑÑвÑÑÑие знаÑÐµÐ½Ð¸Ñ Ð¸Ð· Ñвоей ÑÑÐµÐ´Ñ Ð²ÑполнениÑ.
ÐбÑаÑиÑе внимание на Ñо, ÑÑо поведение локали ÑеÑвеÑа опÑеделÑеÑÑÑ Ð¿ÐµÑеменнÑми ÑÑедÑ, ÑÑÑановленнÑми на ÑÑоÑоне ÑеÑвеÑа, а не ÑÑедой клиенÑа. Таким обÑазом, Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾ пÑавилÑно ÑконÑигÑÑиÑоваÑÑ Ð»Ð¾ÐºÐ°Ð»Ñ Ð¿ÐµÑед запÑÑком ÑеÑвеÑа. ÐÑли же ÐºÐ»Ð¸ÐµÐ½Ñ Ð¸ ÑеÑÐ²ÐµÑ ÑабоÑаÑÑ Ñ ÑазнÑми локалÑми, Ñо ÑообÑениÑ, возможно, бÑдÑÑ Ð¿Ð¾ÑвлÑÑÑÑÑ Ð½Ð° ÑазнÑÑ ÑзÑÐºÐ°Ñ Ð² завиÑимоÑÑи Ð¾Ñ Ñого, где они возникаÑÑ.
ÐÑимеÑание
Ðогда Ð¼Ñ Ð³Ð¾Ð²Ð¾Ñим о наÑледовании локали Ð¾Ñ ÑÑÐµÐ´Ñ Ð²ÑполнениÑ, ÑÑо ознаÑÐ°ÐµÑ ÑледÑÑÑее Ð´Ð»Ñ Ð±Ð¾Ð»ÑÑинÑÑва опеÑаÑионнÑÑ
ÑиÑÑем: Ð´Ð»Ñ Ð¾Ð¿ÑеделÑнной каÑегоÑии локали, к пÑимеÑÑ, Ð´Ð»Ñ Ð¿Ñавил ÑоÑÑиÑовки, ÑледÑÑÑие пеÑеменнÑе ÑÑÐµÐ´Ñ Ð°Ð½Ð°Ð»Ð¸Ð·Ð¸ÑÑÑÑÑÑ Ð² пÑиведÑнном ниже поÑÑдке до ÑеÑ
поÑ, пока одна из ниÑ
не окажеÑÑÑ Ð·Ð°Ð´Ð°Ð½Ð½Ð¾Ð¹: LC_ALL, LC_COLLATE (или пеÑеменнаÑ, оÑноÑÑÑаÑÑÑ Ðº ÑооÑвеÑÑÑвÑÑÑей каÑегоÑии), LANG. ÐÑли ни одна из ÑÑиÑ
пеÑеменнÑÑ
ÑÑÐµÐ´Ñ Ð½Ðµ задана, знаÑение локали ÑÑÑанавливаеÑÑÑ Ð¿Ð¾ ÑмолÑÐ°Ð½Ð¸Ñ Ð² C.
ÐекоÑоÑÑе библиоÑеки локализаÑии ÑообÑений Ñакже обÑаÑаÑÑÑÑ Ðº пеÑеменной ÑÑÐµÐ´Ñ LANGUAGE, коÑоÑÐ°Ñ Ð·Ð°Ð¼ÐµÐ½ÑÐµÑ Ð²Ñе пÑоÑие паÑамеÑÑÑ Ð»Ð¾ÐºÐ°Ð»Ð¸Ð·Ð°Ñии пÑи вÑбоÑе ÑзÑка ÑообÑений. Ð ÑлÑÑае заÑÑÑднений, пожалÑйÑÑа, воÑполÑзÑйÑеÑÑ Ð´Ð¾ÐºÑменÑаÑией по ваÑей опеÑаÑионной ÑиÑÑеме, в ÑаÑÑноÑÑи, ÑпÑавкой по gettext.
ÐÐ»Ñ Ñого ÑÑÐ¾Ð±Ñ ÑÑал возможен пеÑевод ÑообÑений на ÑзÑк, вÑбÑаннÑй полÑзоваÑелем, NLS должен бÑÑÑ Ð²ÑбÑан на Ð¼Ð¾Ð¼ÐµÐ½Ñ ÑбоÑки (configure --enable-nls). РоÑÑалÑном поддеÑжка локализаÑии оÑÑÑеÑÑвлÑеÑÑÑ Ð°Ð²ÑомаÑиÑеÑки.
22.1.2. Ðоведение
ÐÐ¾ÐºÐ°Ð»Ñ Ð²Ð»Ð¸ÑÐµÑ Ð½Ð° ÑледÑÑÑÑÑ ÑÑнкÑионалÑноÑÑÑ SQL:
ÐоÑÑдок ÑоÑÑиÑовки в запÑоÑÐ°Ñ Ñ Ð¸ÑполÑзованием
ORDER BYили ÑÑандаÑÑнÑÑ Ð¾Ð¿ÐµÑаÑоÑÐ°Ñ ÑÑÐ°Ð²Ð½ÐµÐ½Ð¸Ñ ÑекÑÑовÑÑ Ð´Ð°Ð½Ð½ÑÑÐпеÑаÑоÑÑ Ð¿Ð¾Ð¸Ñка по ÑÐ°Ð±Ð»Ð¾Ð½Ñ (
LIKE,SIMILAR TO, и ÑегÑлÑÑнÑе вÑÑÐ°Ð¶ÐµÐ½Ð¸Ñ Ð² ÑÑиле POSIX); Ð»Ð¾ÐºÐ°Ð»Ñ Ð²Ð»Ð¸ÑÐµÑ ÐºÐ°Ðº на поиÑк без ÑÑÑÑа ÑегиÑÑÑа, Ñак и на клаÑÑиÑикаÑÐ¸Ñ Ð·Ð½Ð°ÐºÐ¾Ð² по клаÑÑам Ñимволов ÑегÑлÑÑнÑÑ Ð²ÑÑаженийÐозможноÑÑÑ Ð¸ÑполÑзоваÑÑ Ð¸Ð½Ð´ÐµÐºÑÑ Ñ Ð¿ÑедложениÑми
LIKE
ÐедоÑÑаÑком иÑполÑÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¾ÑлиÑаÑÑиÑ
ÑÑ Ð¾Ñ C или POSIX локалей в Postgres Pro ÑвлÑеÑÑÑ Ð²Ð»Ð¸Ñние на пÑоизводиÑелÑноÑÑÑ. ÐÑо замедлÑÐµÑ Ð¾Ð±ÑабоÑÐºÑ Ñимволов и меÑÐ°ÐµÑ LIKE иÑполÑзоваÑÑ Ð¾Ð±ÑÑнÑе индекÑÑ. Ðо ÑÑой пÑиÑине иÑполÑзÑйÑе локали ÑолÑко в Ñом ÑлÑÑае, еÑли они дейÑÑвиÑелÑно вам нÑжнÑ.
РкаÑеÑÑве обÑ
одного ÑеÑениÑ, коÑоÑое Ð¿Ð¾Ð·Ð²Ð¾Ð»Ð¸Ñ Postgres Pro полÑзоваÑÑÑÑ Ð¸Ð½Ð´ÐµÐºÑами Ñ Ð¿ÑедложениÑми LIKE Ñ Ð¸ÑполÑзованием локали, оÑлиÑной Ð¾Ñ Ð¡, ÑÑÑеÑÑвÑÐµÑ Ð½ÐµÑколÑко клаÑÑов полÑзоваÑелÑÑкиÑ
опеÑаÑоÑов. Ðни позволÑÑÑ ÑоздаÑÑ Ð¸Ð½Ð´ÐµÐºÑ, коÑоÑÑй вÑполнÑÐµÑ ÑÑÑогое поÑимволÑное ÑÑавнение, игноÑиÑÑÑ Ð¿Ñавила ÑÑавнениÑ, ÑооÑвеÑÑÑвÑÑÑие локали. Ðа дополниÑелÑнÑми ÑведениÑми обÑаÑиÑеÑÑ Ðº РазделÑ 11.10. ÐÑÑ Ð¾Ð´Ð¸Ð½ подÑ
од заклÑÑаеÑÑÑ Ð² Ñоздании индекÑов Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ Ð¿Ñавил ÑоÑÑиÑовки C, как бÑло Ñказано в Разделе 22.2.
22.1.3. ÐÑÐ±Ð¾Ñ Ð»Ð¾ÐºÐ°Ð»ÐµÐ¹
Ðокали могÑÑ Ð²ÑбиÑаÑÑÑÑ Ð½Ð° ÑазнÑÑ
ÑÑовнÑÑ
в завиÑимоÑÑи Ð¾Ñ ÑÑебований. РобзоÑе вÑÑе показано, как вÑбÑаÑÑ Ð»Ð¾ÐºÐ°Ð»Ñ Ð¿Ñи вÑзове initdb, ÑÑÐ¾Ð±Ñ Ð½Ð° ÑÑовне клаÑÑеÑа ÑÑÑановиÑÑ Ð´Ð»Ñ Ð¿Ð°ÑамеÑÑов локали знаÑениÑ, коÑоÑÑе бÑдÑÑ Ð¸ÑполÑзоваÑÑÑÑ Ð¿Ð¾ ÑмолÑаниÑ. Ð ÑледÑÑÑем ÑпиÑке показано, где еÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ вÑбиÑаÑÑ Ð»Ð¾ÐºÐ°Ð»Ð¸. Ркаждом пÑнкÑе ÑÑÑанавливаÑÑÑÑ Ð·Ð½Ð°ÑÐµÐ½Ð¸Ñ Ð¿Ð¾ ÑмолÑÐ°Ð½Ð¸Ñ Ð´Ð»Ñ Ð¿Ð¾ÑледÑÑÑиÑ
пÑнкÑов, и в каждом поÑледÑÑÑем пÑнкÑе можно пеÑеопÑеделиÑÑ Ð·Ð°Ð´Ð°Ð½Ð½Ñе вÑÑе знаÑÐµÐ½Ð¸Ñ Ð½Ð° более низком ÑÑовне.
Ðак обÑÑÑнÑлоÑÑ Ð²ÑÑе, по ÑмолÑÐ°Ð½Ð¸Ñ Ð·Ð½Ð°ÑÐµÐ½Ð¸Ñ ÑзÑковÑÑ Ð¿Ð°ÑамеÑÑов в иниÑиализиÑÑемом клаÑÑеÑе ÐРопÑеделÑÑÑÑÑ Ð¿ÐµÑеменнÑми ÑÑÐµÐ´Ñ ÐС. Ðо Ð¼Ð½Ð¾Ð³Ð¸Ñ ÑлÑÑаÑÑ ÑÑого доÑÑаÑоÑно: еÑли опеÑаÑÐ¸Ð¾Ð½Ð½Ð°Ñ ÑиÑÑема наÑÑÑоена Ð´Ð»Ñ Ð½Ñжного ÑзÑка/Ñегиона, Ñо Postgres Pro по ÑмолÑÐ°Ð½Ð¸Ñ Ñакже бÑÐ´ÐµÑ Ð²ÐµÑÑи ÑÐµÐ±Ñ Ð² ÑооÑвеÑÑÑвии Ñ ÑÑой локалÑÑ.
Ðак показано вÑÑе, знаÑÐµÐ½Ð¸Ñ Ð¿Ð°ÑамеÑÑов локали Ð´Ð»Ñ Ð¸Ð½Ð¸ÑиализиÑÑемого клаÑÑеÑа Ñакже можно ÑказаÑÑ Ð² аÑгÑменÑÐ°Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¾Ð¹ ÑÑÑоки
initdb. ÐÑполÑзÑйÑе ÑÑÑ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ÑÑÑ, еÑли Ð²Ñ Ñ Ð¾ÑиÑе вÑбÑаÑÑ Ð´Ð»Ñ Ð²Ð°Ñей СУÐРлокалÑ, оÑлиÑнÑÑ Ð¾Ñ ÑекÑÑей локали опеÑаÑионной ÑиÑÑемÑ.ÐÐ¾ÐºÐ°Ð»Ñ Ð¼Ð¾Ð¶Ð½Ð¾ вÑбÑаÑÑ Ð´Ð»Ñ Ð¾ÑделÑной Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ . ÐÑедназнаÑеннÑе Ð´Ð»Ñ ÑÑого паÑамеÑÑÑ Ð¸Ð¼ÐµÑÑÑÑ Ñ SQL-командÑ
CREATE DATABASEи ÑооÑвеÑÑÑвÑÑÑей ей внеÑней командÑcreatedb. ÐÑо полезно, напÑимеÑ, когда в одном клаÑÑеÑе ÑодеÑжаÑÑÑ Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ , пÑинадлежаÑие ÑазлиÑнÑм клиенÑам Ñ ÑазнÑми поÑÑебноÑÑÑми.ÐаÑамеÑÑÑ Ð»Ð¾ÐºÐ°Ð»Ð¸ можно задаÑÑ Ð´Ð»Ñ Ð¾ÑделÑнÑÑ ÑÑолбÑов ÑаблиÑÑ. ÐÐ»Ñ ÑÑого иÑполÑзÑÑÑÑÑ Ð¾Ð±ÑекÑÑ SQL, коÑоÑÑе назÑваÑÑÑÑ Ð¿Ñавила ÑоÑÑиÑовки и опиÑÐ°Ð½Ñ Ð² Разделе 22.2. ÐÑо полезно Ð´Ð»Ñ ÑоÑÑиÑовки даннÑÑ Ð½Ð° ÑазнÑÑ ÑзÑÐºÐ°Ñ Ð¸Ð»Ð¸ Ð´Ð»Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¿Ð¾ÑÑдка ÑоÑÑиÑовки конкÑеÑной ÑаблиÑÑ.
ÐаконеÑ, локали можно вÑбиÑаÑÑ Ð½Ð° ÑÑовне запÑоÑов. ÐÑи ÑÑом Ñакже иÑполÑзÑÑÑÑÑ Ð¾Ð±ÑекÑÑ Ð¿Ñавил ÑоÑÑиÑовки SQL. ÐÑо Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¿Ð¾Ð»ÐµÐ·Ð½Ð¾ Ð´Ð»Ñ Ð´Ð¸Ð½Ð°Ð¼Ð¸ÑеÑкого Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¿Ð¾ÑÑдка ÑоÑÑиÑовки во вÑÐµÐ¼Ñ Ð²ÑÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Ð¸Ð»Ð¸ Ð´Ð»Ñ ÑкÑпеÑименÑов Ñ ÑазнÑми локалÑми.
22.1.4. ÐÑовайдеÑÑ Ð»Ð¾ÐºÐ°Ð»ÐµÐ¹
Postgres Pro поддеÑÐ¶Ð¸Ð²Ð°ÐµÑ ÑазлиÑнÑÑ
пÑовайдеÑов локалей, Ñо еÑÑÑ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñеки, пÑедоÑÑавлÑÑÑие даннÑе локалей. СÑандаÑÑнÑй пÑÐ¾Ð²Ð°Ð¹Ð´ÐµÑ Ñ Ð¸Ð¼ÐµÐ½ÐµÐ¼ libc иÑполÑзÑÐµÑ ÑиÑÑемнÑÑ Ð±Ð¸Ð±Ð»Ð¸Ð¾ÑÐµÐºÑ C и пÑедоÑÑавлÑÐµÑ ÐµÑ Ð»Ð¾ÐºÐ°Ð»Ð¸. Ðменно ÑÑи локали иÑполÑзÑÑÑÑÑ Ð±Ð¾Ð»ÑÑинÑÑвом ÑÑÐ¸Ð»Ð¸Ñ Ð¾Ð¿ÐµÑаÑионной ÑиÑÑемÑ. Также еÑÑÑ Ð¿ÑÐ¾Ð²Ð°Ð¹Ð´ÐµÑ icu, коÑоÑÑй иÑполÑзÑÐµÑ Ð²Ð½ÐµÑнÑÑ Ð±Ð¸Ð±Ð»Ð¸Ð¾ÑÐµÐºÑ ICU. Ðокали ICU можно иÑполÑзоваÑÑ, ÑолÑко еÑли поддеÑжка ICU бÑла вклÑÑена в конÑигÑÑаÑии ÑбоÑки Postgres Pro.
ÐÑе ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ Ð¸ ÑÑилиÑÑ, позволÑÑÑие ÑÑÑанавливаÑÑ Ð¿Ð°ÑамеÑÑÑ Ð»Ð¾ÐºÐ°Ð»Ð¸, как опиÑано вÑÑе, позволÑÑÑ Ð²ÑбÑаÑÑ Ð¸ пÑовайдеÑа локали. Ðо вÑеÑ
пÑедÑдÑÑиÑ
пÑимеÑаÑ
иÑполÑзовалÑÑ Ð¿ÑÐ¾Ð²Ð°Ð¹Ð´ÐµÑ libc (вÑбиÑаемÑй по ÑмолÑаниÑ). ÐÑбÑаÑÑ Ð¿ÑовайдеÑа ICU можно Ñак:
initdb --locale-provider=icu --icu-locale=en
Ðа подÑобноÑÑÑми обÑаÑиÑеÑÑ Ðº опиÑÐ°Ð½Ð¸Ñ ÑооÑвеÑÑÑвÑÑÑиÑ
команд и пÑогÑамм. ÐбÑаÑиÑе внимание, ÑÑо Ð²Ñ Ð¼Ð¾Ð¶ÐµÑе иÑполÑзоваÑÑ ÑазлиÑнÑÑ
пÑовайдеÑов локалей на ÑазнÑÑ
ÑÑовнÑÑ
, напÑимеÑ, иÑполÑзоваÑÑ libc по ÑмолÑÐ°Ð½Ð¸Ñ Ð´Ð»Ñ ÐºÐ»Ð°ÑÑеÑа, но имеÑÑ Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ
, иÑполÑзÑÑÑÑÑ Ð¿ÑовайдеÑа icu, а Ñакже имеÑÑ Ð² ÑÑиÑ
базаÑ
даннÑÑ
обÑекÑÑ Ð¿Ñавил ÑоÑÑиÑовки, иÑполÑзÑÑÑие лÑбÑÑ
доÑÑÑпнÑÑ
пÑовайдеÑов.
РекомендаÑии по вÑбоÑÑ Ð¿ÑовайдеÑа локали завиÑÑÑ Ð¾Ñ ÐºÐ¾Ð½ÐºÑеÑнÑÑ ÑÑебований. ÐÐ»Ñ Ð±Ð¾Ð»ÑÑинÑÑва обÑÑнÑÑ Ð·Ð°Ð´Ð°Ñ Ð¿Ð¾Ð´Ð¾Ð¹Ð´ÑÑ Ð»Ñбой пÑовайдеÑ. ÐозможноÑÑи пÑовайдеÑа libc завиÑÑÑ Ð¾Ñ Ð¾Ð¿ÐµÑаÑионной ÑиÑÑÐµÐ¼Ñ â в Ð¾Ð´Ð½Ð¸Ñ ÑиÑÑÐµÐ¼Ð°Ñ Ð¾Ð½ более ÑÑнкÑионален, Ñем в дÑÑÐ³Ð¸Ñ . ÐÐ»Ñ Ð·Ð°Ð´Ð°Ñ ÑложнÑÑ ÑекомендÑеÑÑÑ Ð¸ÑполÑзоваÑÑ Ð¿ÑовайдеÑа ICU, Ñак как он пÑÐµÐ´Ð»Ð°Ð³Ð°ÐµÑ Ð±Ð¾Ð»ÑÑе ваÑианÑов локалей и ÑаÑÑиÑеннÑе возможноÑÑи.
22.1.5. ÐÑоблемÑ
ÐÑли поддеÑжка локализаÑии не ÑабоÑÐ°ÐµÑ Ð² ÑооÑвеÑÑÑвии Ñ Ð¾Ð±ÑÑÑнением, даннÑм вÑÑе, пÑовеÑÑÑе, наÑколÑко коÑÑекÑна конÑигÑÑаÑÐ¸Ñ Ð¿Ð¾Ð´Ð´ÐµÑжки локализаÑии в ваÑей опеÑаÑионной ÑиÑÑеме. ЧÑÐ¾Ð±Ñ Ð¿ÑовеÑиÑÑ, какие локали ÑÑÑÐ°Ð½Ð¾Ð²Ð»ÐµÐ½Ñ Ð½Ð° ваÑей ÑиÑÑеме, Ð²Ñ Ð¼Ð¾Ð¶ÐµÑе иÑполÑзоваÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ locale -a, еÑли ваÑа опеÑаÑÐ¸Ð¾Ð½Ð½Ð°Ñ ÑиÑÑема поддеÑÐ¶Ð¸Ð²Ð°ÐµÑ ÑÑо.
ÐÑовеÑÑÑе, дейÑÑвиÑелÑно ли Postgres Pro иÑполÑзÑÐµÑ Ð»Ð¾ÐºÐ°Ð»Ñ, коÑоÑÑÑ Ð²Ñ Ð¿Ð¾Ð´ÑазÑмеваеÑе. ÐаÑамеÑÑÑ LC_COLLATE и LC_CTYPE опÑеделÑÑÑÑÑ Ð¿Ñи Ñоздании Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ
, и не могÑÑ Ð±ÑÑÑ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ñ, за иÑклÑÑением ÑлÑÑаев, когда ÑоздаÑÑÑÑ Ð½Ð¾Ð²Ð°Ñ Ð±Ð°Ð·Ð° даннÑÑ
. ÐÑоÑие паÑамеÑÑÑ Ð»Ð¾ÐºÐ°Ð»Ð¸, вклÑÑÐ°Ñ LC_MESSAGES и LC_MONETARY пеÑвонаÑалÑно опÑÐµÐ´ÐµÐ»ÐµÐ½Ñ ÑÑедой, в коÑоÑой запÑÑкаеÑÑÑ ÑеÑвеÑ, но могÑÑ Ð±ÑÑÑ Ð¾Ð¿ÐµÑаÑивно измененÑ. ÐÑ Ð¼Ð¾Ð¶ÐµÑе пÑовеÑиÑÑ ÑекÑÑие паÑамеÑÑÑ Ð»Ð¾ÐºÐ°Ð»Ð¸ Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ SHOW.
ÐлиенÑÑкие пÑиложениÑ, коÑоÑÑе обÑабаÑÑваÑÑ Ð¾Ñибки ÑеÑвеÑа, ÑазбиÑÐ°Ñ ÑекÑÑ ÑообÑÐµÐ½Ð¸Ñ Ð¾Ð± оÑибке, оÑевидно, ÑÑолкнÑÑÑÑ Ñ Ð¿Ñоблемами, когда ÑообÑÐµÐ½Ð¸Ñ ÑеÑвеÑа бÑдÑÑ Ð½Ð° дÑÑгом ÑзÑке. ÐвÑоÑам ÑÐ°ÐºÐ¸Ñ Ð¿Ñиложений ÑекомендÑеÑÑÑ Ð¿Ð¾Ð»ÑзоваÑÑÑÑ ÑиÑÑемой кодов оÑибок в каÑеÑÑве алÑÑеÑнаÑивÑ.