Skip to content

Commit

Permalink
Mise à jour en version 10.0.
Browse files Browse the repository at this point in the history
  • Loading branch information
gleu committed Oct 5, 2017
1 parent 0b8946d commit cbaf541
Show file tree
Hide file tree
Showing 23 changed files with 975 additions and 265 deletions.
148 changes: 117 additions & 31 deletions postgresql/charset.xml
Original file line number Diff line number Diff line change
Expand Up @@ -537,7 +537,9 @@ SELECT * FROM test1 ORDER BY a || b COLLATE "fr_FR";

<para>
Un objet de type collation fourni par <literal>libc</literal> pointe sur
une combinaison de paramètres <symbol>LC_COLLATE</symbol> et <symbol>LC_CTYPE</symbol>.
une combinaison de paramètres <symbol>LC_COLLATE</symbol> et
<symbol>LC_CTYPE</symbol>, comme accepté par l'appel système
<literal>setlocale()</literal>.
(Comme le nom le suggère, le principal objectif d'une collation est de
positionner <symbol>LC_COLLATE</symbol> qui contrôle l'ordre de tri.
Dans la pratique, il est très rarement nécessaire de définir un
Expand Down Expand Up @@ -663,24 +665,20 @@ SELECT a COLLATE "C" &lt; b COLLATE "POSIX" FROM test1;
<sect4>
<title>Collations ICU</title>

<para>
Les collations fournies par ICU sont créées avec des noms correspondant au format de balises de langage BCP 47,
avec l'ajout d'une
extension <literal>-x-icu</literal> à <quote>usage privé</quote>, pour les distinguer des
locales libc. Donc <literal>de-x-icu</literal> serait un exemple.
</para>

<para>
Avec ICU, il n'est pas nécessaire d'énumérer tous les noms de locales
possibles. ICU utilise un système de nommage particulier pour les
locales, mais il y a plus de façons de nommer une locale qu'il y a
actuellement de locales distinctes. (En fait, n'importe quelle chaine de
caractères sera acceptée en tant que nom de locale.) Consultez <ulink
url="http://userguide.icu-project.org/locale"></ulink> pour des
informations sur le nommage des locales ICU. <command>initdb</command>
actuellement de locales distinctes. <command>initdb</command>
utilise l'API ICU pour extraire un jeu de locales distinctes afin de
peupler le jeu initial de collations. Voici quelques exemples de
collations pouvant être créées&nbsp;:
peupler le jeu initial de collations. Les collations fournies par ICU sont
créées dans l'environnement SQL avec des noms suivant le format de balises
de langues BCP 47, avec une extension d'<quote>utilisation privée</quote>
<literal>-x-icu</literal> ajoutée pour les distinguer des locales de libc.
</para>

<para>
Voici quelques exemples de collations pouvant être créées&nbsp;:

<variablelist>
<varlistentry>
Expand Down Expand Up @@ -721,35 +719,112 @@ SELECT a COLLATE "C" &lt; b COLLATE "POSIX" FROM test1;
sont ignorés. Tenter d'en utiliser un renverra une erreur du type
<quote>collation "de-x-icu" for encoding "WIN874" does not exist</quote>.
</para>
</sect4>
</sect3>

<sect3 id="collation-create">
<title>Créer de nouveaux objets de collation</title>

<para>
Si les collations standards et prédéfinies ne sont pas suffisantes, les
utilisateurs peuvent créer leur propres objets de collation en utilisant la
commande SQL <xref linkend="sql-createcollation"/>.
</para>

<para>
Les collations standards et prédéfinies sont dans le schéma schema
<literal>pg_catalog</literal>, comme tous les objets prédéfinis. Les
collations définies par les utilisateurs doivent être créés dans des
schémas utilisateurs. Ceci assure aussi qu'elles sont sauvegarder par
<command>pg_dump</command>.
</para>

<sect4>
<title>Collations libc</title>

<para>
Les nouvelles collations libc peuvent être créées ainsi&nbsp;:
<programlisting>
CREATE COLLATION german (provider = libc, locale = 'de_DE');
</programlisting>
Les valeurs exactes qui sont acceptables pour la clause
<literal>locale</literal> dans cette commande dépendent du système
d'exploitation. Sur les systèmes Unix, la commande <literal>locale
-a</literal> affichera une liste.
</para>

<para>
Comme les collations libc prédéfinies incluent déjà toutes les collations
définies dans le système d'exploitation au moment de l'initialisation de
l'instance, il est souvent nécessaire de créer celles qui sont ajoutées
après coup. Des raisons possibles serait l'utilisation d'un autre système
de nommage (auquel cas, voir aussi <xref linkend="collation-copy"/>) ou si
le système d'exploitation a été mis à jour pour fournir les définitions
des nouvelles locales (auquel cas, voir aussi <link
linkend="functions-admin-collation"><function>pg_import_system_collations()</function></link>).
</para>
</sect4>

<sect4>
<title>Collations ICU</title>

<para>
ICU permet la personnalisation des collations en dehors de l'ensemble pré-
enregistré langue/pays, préchargé par <command>initdb</command>. Les
utilisateurs sont encouragés à définir leur propres objets de collation
utilisant ces fonctionnalités pour rendre le comportement de tri
compatible avec leurs besoins. Voici quelques exemples&nbsp;:
compatible avec leurs besoins.
Voir <ulink url="http://userguide.icu-project.org/locale"></ulink>
et <ulink url="http://userguide.icu-project.org/collation/api"></ulink>
pour plus d'informations sur le nommage des locales ICU. L'ensemble de
noms et attributs acceptables dépend de la version ICU spécifique.
</para>

<para>
Voici quelques exemples&nbsp;:

<variablelist>
<varlistentry>
<term><literal>CREATE COLLATION "de-u-co-phonebk-x-icu" (provider = icu, locale = 'de-u-co-phonebk')</literal></term>
<term><literal>CREATE COLLATION "de-u-co-phonebk-x-icu" (provider = icu, locale = 'de-u-co-phonebk');</literal></term>
<term><literal>CREATE COLLATION "de-u-co-phonebk-x-icu" (provider = icu, locale = 'de@collation=phonebook');</literal></term>
<listitem>
<para>Collationnement allemand avec le type de collationnement d'un
carnet d'adresses</para>
<para>
Le premier exemple sélectionne la locale ICU en utilisant une
<quote>balise de langue</quote> d'après BCP 47. Le deuxième exemple
utilise la syntaxe de locale traditionnelle spécifique à ICU. La
préférence va au premier style mais il n'est pas supporté par les
anciennes versions d'ICU.
</para>
<para>
Notez que vous pouvez nommer comme vous le voulez les objets de
collation dans l'environnement SQL. Dans cet exemple, nous suivons le
style de nommage que les collations prédéfinies utilisent, qui suit
aussi BCP 47, mais qui n'est pas requis pour les collations définis
par l'utilisateur.
</para>
</listitem>
</varlistentry>

<varlistentry>
<term><literal>CREATE COLLATION "und-u-co-emoji-x-icu" (provider = icu, locale = 'und-u-co-emoji')</literal></term>
<term><literal>CREATE COLLATION "und-u-co-emoji-x-icu" (provider = icu, locale = 'und-u-co-emoji');</literal></term>
<term><literal>CREATE COLLATION "und-u-co-emoji-x-icu" (provider = icu, locale = '@collation=emoji');</literal></term>
<listitem>
<para>
Collationnement racine avec un type de collationnement Emoji, d'après
l'Unicode Technical Standard #51
</para>
<para>
Observez comment, dans le système de nommage traditionnel des locales
ICU, la locale racine est sélectionnée par une chaîne vide.
</para>
</listitem>
</varlistentry>

<varlistentry>
<term><literal>CREATE COLLATION digitslast (provider = icu, locale = 'en-u-kr-latn-digit')</literal></term>
<term><literal>CREATE COLLATION digitslast (provider = icu, locale = 'en-u-kr-latn-digit');</literal></term>
<term><literal>CREATE COLLATION digitslast (provider = icu, locale = 'en@colReorder=latn-digit');</literal></term>
<listitem>
<para>
Trie les chiffres après les lettres latines. (Par défaut, les chiffres
Expand All @@ -759,7 +834,8 @@ SELECT a COLLATE "C" &lt; b COLLATE "POSIX" FROM test1;
</varlistentry>

<varlistentry>
<term><literal>CREATE COLLATION upperfirst (provider = icu, locale = 'en-u-kf-upper')</literal></term>
<term><literal>CREATE COLLATION upperfirst (provider = icu, locale = 'en-u-kf-upper');</literal></term>
<term><literal>CREATE COLLATION upperfirst (provider = icu, locale = 'en@colCaseFirst=upper');</literal></term>
<listitem>
<para>
Trie les lettres majuscules avant les lettres minuscules. (La valeur
Expand All @@ -769,7 +845,8 @@ SELECT a COLLATE "C" &lt; b COLLATE "POSIX" FROM test1;
</varlistentry>

<varlistentry>
<term><literal>CREATE COLLATION special (provider = icu, locale = 'en-u-kf-upper-kr-latn-digit')</literal></term>
<term><literal>CREATE COLLATION special (provider = icu, locale = 'en-u-kf-upper-kr-latn-digit');</literal></term>
<term><literal>CREATE COLLATION special (provider = icu, locale = 'en@colCaseFirst=upper;colReorder=latn-digit');</literal></term>
<listitem>
<para>
Combine ces deux options.
Expand All @@ -778,7 +855,8 @@ SELECT a COLLATE "C" &lt; b COLLATE "POSIX" FROM test1;
</varlistentry>

<varlistentry>
<term><literal>CREATE COLLATION numeric (provider = icu, locale = 'en-u-kn-true')</literal></term>
<term><literal>CREATE COLLATION numeric (provider = icu, locale = 'en-u-kn-true');</literal></term>
<term><literal>CREATE COLLATION numeric (provider = icu, locale = 'en@colNumeric=yes');</literal></term>
<listitem>
<para>
Ordre numérique, trie les séquences de chiffres par leur valeur
Expand All @@ -798,7 +876,9 @@ SELECT a COLLATE "C" &lt; b COLLATE "POSIX" FROM test1;
url="http://www.unicode.org/repos/cldr/trunk/common/bcp47/collation.xml">dépôt
CLDR</ulink>. Le <ulink url="https://ssl.icu-project.org/icu-
bin/locexp">ICU Locale Explorer</ulink> peut être utilisé pour vérifier
les détails de la définition d'une locale particulière.
les détails de la définition d'une locale particulière. Les exemples
utilisant les sous-balises <literal>k*</literal> requièrent au moins la
version 54 d'ICU.
</para>

<para>
Expand All @@ -811,10 +891,22 @@ SELECT a COLLATE "C" &lt; b COLLATE "POSIX" FROM test1;
mais qui n'est pas identique octet à octet, sera trié suivant la valeurs
des octets.
</para>

<note>
<para>
Par design, ICU acceptera pratiquement toute chaîne comme nom de locale
et la fera correspondre à la locale la plus proche qu'il peut fournir en
utilisant la procédure fallback décrite dans sa documentation. De ce
fait, il n'y aura pas de retour direct si la spécification d'une
collation est composée en utilisant des fonctionnalités que
l'installation ICU donnée ne supporte pas. Il est donc recommandé de
créer des cas de tests au niveau applicatif pour vérifier que les
définitions de collations satisfont les besoins.
</para>
</note>
</sect4>
</sect3>

<sect3>
<sect4 id="collation-copy">
<title>Copier les collations</title>

<para>
Expand All @@ -828,13 +920,7 @@ CREATE COLLATION german FROM "de_DE";
CREATE COLLATION french FROM "fr-x-icu";
</programlisting>
</para>

<para>
Les collations standards et prédéfinies se trouvent dans
le schéma <literal>pg_catalog</literal>, comme tout objet prédéfini.
Les collations définies par l'utilisateur devraient être créées dans les schémas utilisateur.
Ceci permet également de s'assurer qu'ils sont sauvegardés par <command>pg_dump</command>.
</para>
</sect4>
</sect3>
</sect2>
</sect1>
Expand Down

0 comments on commit cbaf541

Please sign in to comment.