Skip to content

Commit

Permalink
charset.xml : relecture vs 14β2 - suite 3
Browse files Browse the repository at this point in the history
  • Loading branch information
Krysztophe authored and gleu committed Jul 23, 2021
1 parent f87956e commit 964f99e
Showing 1 changed file with 52 additions and 50 deletions.
102 changes: 52 additions & 50 deletions postgresql/charset.xml
Original file line number Diff line number Diff line change
Expand Up @@ -664,15 +664,16 @@ SELECT a COLLATE "C" < b COLLATE "POSIX" FROM test1;
<title>Collations ICU</title>

<para>
Avec ICU, il n'est pas nécessaire d'énumérer tous les noms de locales
Avec ICU, il n'est pas raisonnable 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 n'y a
actuellement de locales distinctes. <command>initdb</command>
utilise l'API ICU pour extraire un jeu de locales distinct afin de
locales, mais il y a plus de façons de nommer une locale qu'il n'y en a
réellement de distinctes. <command>initdb</command>
utilise les API d'ICU pour extraire un jeu de locales distinctes, afin de
peupler le jeu initial de collations. Les collations fournies par ICU sont
créées dans l'environnement SQL avec des noms en 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.
créées dans l'environnement SQL avec des noms suivant le format d'étiquettes
<!-- https://fr.wikipedia.org/wiki/%C3%89tiquette_d%27identification_de_langues_IETF -->
de langues BCP 47, plus une extension d'<quote>utilisation privée</quote>
<literal>-x-icu</literal>, ajoutée pour les distinguer des locales de libc.
</para>

<para>
Expand All @@ -692,8 +693,8 @@ SELECT a COLLATE "C" &lt; b COLLATE "POSIX" FROM test1;
<para>Collation allemande pour l'Autriche, variante par défaut</para>
<para>
(Il y a aussi, par exemple, <literal>de-DE-x-icu</literal> ou
<literal>de-CH-x-icu</literal> mais, lorsque cette partie fut rédigée,
elles étaient équivalentes à <literal>de-x-icu</literal>.)
<literal>de-CH-x-icu</literal> mais, au moment de l'écriture de ces lignes,
elles sont équivalentes à <literal>de-x-icu</literal>.)
</para>
</listitem>
</varlistentry>
Expand All @@ -702,16 +703,16 @@ SELECT a COLLATE "C" &lt; b COLLATE "POSIX" FROM test1;
<term><literal>und-x-icu</literal> (pour <quote>undefined</quote>)</term>
<listitem>
<para>
Collation <quote>root</quote> ICU. Utilisez ceci pour avoir un ordre de tri
linguistique agnostique raisonnable.
Collation <quote>racine</quote> ICU. Utilisez ceci pour avoir un ordre de tri
raisonnable et linguistiquement agnostique.
</para>
</listitem>
</varlistentry>
</variablelist>
</para>

<para>
Certains encodages parmi les moins fréquemment utilisés ne sont pas
Certains encodages (les moins fréquemment utilisés) ne sont pas
supportés par ICU. Si c'est le cas pour l'encodage de la base de données,
les enregistrements de collations ICU dans <literal>pg_collation</literal>
sont ignorés. Tenter d'en utiliser un renverra une erreur du type
Expand Down Expand Up @@ -745,19 +746,19 @@ SELECT a COLLATE "C" &lt; b COLLATE "POSIX" FROM test1;
<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
Les valeurs exactes de la clause <literal>locale</literal>
acceptées par 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 seraient 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
l'instance, il n'est pas souvent nécessaire d'en créer de nouvelles.
Des raisons possibles sont l'utilisation d'un autre système
de nommage (auquel cas, voir aussi <xref linkend="collation-copy"/>), ou
une mise à jour du système d'exploitation 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>
Expand All @@ -767,15 +768,14 @@ CREATE COLLATION german (provider = libc, locale = 'de_DE');
<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
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.
pour adapter le comportement du tri à 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.
pour plus d'informations sur le nommage des locales ICU. L'ensemble des
noms et attributs acceptables dépend de la version ICU précise.
</para>

<para>
Expand All @@ -790,16 +790,16 @@ CREATE COLLATION german (provider = libc, locale = 'de_DE');
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
<quote>étiquette 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
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
Notez que, dans l'environnement SQL, vous pouvez nommer les objets de
collation comme vous le voulez. 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
lui-même BCP 47, mais ce n'est pas obligatoire pour les collations définies
par l'utilisateur.
</para>
</listitem>
Expand Down Expand Up @@ -880,26 +880,28 @@ CREATE COLLATION german (provider = libc, locale = 'de_DE');
</para>

<para>
Notez qu'alors que ce système permet la création de collations qui
Notez qu'alors que, si ce système permet la création de collations qui
<quote>ignorent la casse</quote> ou <quote>ignorent les accents</quote> ou
quelque chose de similaire (en utilisant la clé <literal>ks</literal>),
pour que ces collations se comportent d'une manière réellement insensible
à la casse ou aux accents, elles doivent aussi être déclarées comme
non <firstterm>déterministes</firstterm> dans
<command>CREATE COLLATION</command>;
voir <xref linkend="collation-nondeterministic"/>.
Le cas échéant, les chaînes qui sont considérées comme égales d'après
la collation mais ne sont pas équivalentes au niveau de l'octet seront
Sinon, les chaînes qui sont considérées comme égales d'après
la collation, mais non équivalentes au niveau des octets seront
triées en fonction des valeurs de leurs 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
De par sa conception, ICU acceptera pratiquement
n'importe quelle chaîne comme nom de locale,
et la fera correspondre à la locale la plus proche qu'il peut fournir, en
utilisant la procédure de «&nbsp;fallback&nbsp;» décrite dans sa documentation. De ce
<!-- https://unicode-org.github.io/icu/userguide/locale/#fallback -->
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
collation est composée avec 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.
Expand All @@ -912,8 +914,8 @@ CREATE COLLATION german (provider = libc, locale = 'de_DE');

<para>
La commande <xref linkend="sql-createcollation"/> peut également être utilisée pour
créer une nouvelle collation depuis une collation existante, ce qui peut être utile afin
d'être capable d'utiliser une collation indépendante du système dans
créer une nouvelle collation depuis une collation existante, ce qui peut être utile
pour utiliser une collation indépendante du système dans
les applications, de créer des noms compatibles, ou d'utiliser une collation fournie par ICU
avec un nom plus lisible. Par exemple&nbsp;:
<programlisting>
Expand All @@ -932,14 +934,14 @@ CREATE COLLATION french FROM "fr-x-icu";
<firstterm>non déterministe</firstterm>. Une collation déterministe utilise
des comparaisons déterministes, ce qui signifie qu'elle considère les chaînes
de caractères comme égales seulement si elles sont constituées des mêmes
séquences d'octets. Les comparaisons non déterministes peuvent conclure
que des chaînes sont égales même si elles sont constituées d'octets différents.
Les cas d'usage typiques comprennent la comparaison insensible à la casse,
insensible aux accents, de même que la comparaison de chaînes
de différentes formes normales Unicode. C'est au fournisseur de collation
d'implémenter des comparaisons de ce type&nbsp;; le drapeau disant que
la collation est déterministe indique seulement si les chaînes égales
seront départagées ou non par une comparaison au niveau de l'octet.
séquences d'octets. Les comparaisons non déterministes peuvent considérer
des chaînes comme égales même si elles sont constituées d'octets différents.
Les cas d'usage typiques comprennent des comparaisons insensible à la casse,
ou insensible aux accents, de même que la comparaison de chaînes
dans différentes formes normales Unicode. C'est au fournisseur de collation
d'implémenter de telles comparaisons insensibles&nbsp;; le drapeau
donnant la collation comme déterministe n'indique que si les chaînes égales
doivent être départagées ou non par une comparaison au niveau de l'octet.
Voir aussi <ulink url="https://www.unicode.org/reports/tr10">Unicode Technical
Standard 10</ulink> pour plus d'information sur la terminologie.
</para>
Expand Down Expand Up @@ -968,16 +970,16 @@ CREATE COLLATION ignore_accents (provider = icu, locale = 'und-u-ks-level1-kc-tr
Toutes les collations standards et prédéfinies sont déterministes, et
toutes les collations définies par les utilisateurs sont déterministes
par défaut.
Alors que les collations non déterministes ont un comportement plus
Bien que les collations non déterministes aient un comportement plus
<quote>correct</quote>, particulièrement considérant la puissance
d'Unicode et ses nombreux cas spécifiques, elles ont aussi quelques
inconvénients.
D'abord, leur utilisation génère une pénalité de performance.
Il est à noter en particulier que le B-tree ne peut pas utiliser
la déduplication avec les index utilisant une collation non déterministe.
Il est à noter en particulier qu'un B-tree ne peut pas utiliser
la déduplication dans les index utilisant une collation non déterministe.
Par ailleurs, certaines opérations ne sont pas possibles avec des
collations non déterministes, comme la recherche par motif.
Par conséquent, elles devraient être utilisées uniquement dans les cas
Par conséquent, elles ne devraient être utilisées que dans les cas
où elles sont spécifiquement désirables.
</para>

Expand Down

0 comments on commit 964f99e

Please sign in to comment.