# Coppermine Photo Gallery v1.5.x: Documentation et manuel

# Guide de traduction

## Nous recherchons des traducteurs !

Une des fonctions les plus importante de Coppermine est le fait que le contenu de chaque page puisse être affiché dans différentes langues, avec la traduction contenue dans un fichier (qui se trouve dans le répertoire lang de Coppermine). Si vous utilisez Coppermine et que vous souhaitez donner quelque chose en retour à la communauté, pourquoi ne pas commencer la traduction de Coppermine pour votre langue ?

Voici les règles et la marche à suivre pur vous aider à commencer.

## Pourquoi traduire ?

- Pour partager quelque chose avec la communauté
- Parce que vous avez besoin d'une traduction...
- Pour avoir votre nom sur la liste des crédits
- Pour promouvoir votre activité (avoir un lien depuis une page comme celle de Coppermine team/credits augmentera votre page rank)
- Parce que vous êtes super sympa...

## Pour quelles langues a t'on pour besoin d'une traduction ?

Il y a déjà beaucoup de langues supportées par Coppermine; pour le nombre de fichiers de langues pour Coppermine augmente, il y a peut être des traductions s qui ne sont pas inclues dans le paquet que vous avez téléchargé. Avant de commencer à travailler sur une traduction, regardez ici:

- Est ce que la langue que vous cherchez est inclue dans le paquetage de Coppermine que vous avez téléchargé ?
- Est ce que le fichier langue existe déjà sur le SVN ? Regardez dans http://svn.code.sf.net/p/coppermine/code/trunk/cpg1.5.x/lang/
- Ets ce que quelqu'un a récemment dit qu'il faisait cette traduction dans le sujet du forum "[Help wanted]: Translations for CPG1.5.x"? Lisez ce sujet attentivement afin de vérifier que cette traduction n'a pas déjà été faite ou est en train d'être faite. Nous apprécions votre effort, et nous connaissons également la valeur de votre temps, de sorte qu'il serait dommage que vous et un autre traducteur ayez passé du temps pour présenter deux versions de la même langue. Vous trouverez aussi des informations qui ne se trouvent pas dans cette documentation ...

## Qui peut faire une traduction ?

Toute personne ayant une bonne connaissance d'une langue le peut, mais, lorsqu'une nouvelle version de Coppermine est en préparation pour une mise à disposition, l'équipe de développement contacte le traducteur de la version précédente et lui demande s'il veut bien faire la traduction de la nouvelle version. Ces traducteurs "originels" doivent faire savoir à l'équipe de développement s'ils veulent et sont en mesure de faire cette traduction (avant le début du travail sur les traductions). Les langues qui avaient été précédemment assignées à des traducteurs ayant répondu qu'ils ne pouvaient pas faire cette "nouvelle" traduction ou aux traducteurs qui n'ont pas répondu, après un temps donné, sont placées dans une liste dans le sujet du forum "[Help wanted]: Translations for CPG1.5.x". Les personnes intéressées par la traduction d'une de ces langues "orphelines" doit répondre dans ce sujet et prendre la traduction à son compte.

Si vous parlez couramment une langue qui n'a pas encore été traduite et n'a pas été attribué à quelqu'un, prenez là à votre compte.

## Encodage des caractères

Beaucoup de langues ont des alphabets spéciaux différents de l'alphabet Latin, ou utilisent des caractères particuliers (comme ä ß à á â ã å æ ç þ ð ø). Beaucoup de ces caractères spéciaux ont ce que l'on appelle des équivalents html (Par exemple &auml; pour ä), mais vous ne devez pas utiliser ces équivalents html pour les caractères spécifiques à votre langue lors de la traduction, parce que vous risquez d'avoir des effets indésirables lors de l'utilisation du JavaScript!

L'encodage que vous utilisez pour votre traduction n'a pas d'importance, l'encodage avec lequel votre traduction sera ajoutée au pack sera UTF-8. En d'autres tèrme: certains développeurs devront transformer votre propre encodage vers UTF-8 avant de pouvoir l'utiliser, donc, si vous le pouvez utilisez tout de suite UTF-8.

Coppermine ajoute une balise META jeux de caractères à l'en-tête de chaque fichier, afin d'indiquer au navigateur comment faire pour interpréter les caractères spéciaux. Vous devez ajouter le nom du jeu de caractères que vous utilisez pour votre traduction au tout début du fichier de langue, par exemple

    $lang_charset = 'iso-8859-1';

Vous pouvez trouver une liste de jeux de caractères à l'adresse http://www.w3.org/International/O-charset-lang.html. Dans la mesure du possible, vous ne devriez pas choisir un jeu de caractères propre à une plate-forme (par exemple, windows-1252), mais multi plates-formes (par exemple iso-8859-1).

Vous aurez remarqué que les fichiers langues de Coppermine sont encodés en utf-8. Vous n'avez pas à vous préoccuper de la création de la version utf-8 si vous ne savez pas comment faire - L'équipe de développement s'en occupera. Cependant, votre fichier langue qui sera intégré au pack sera encodé en utf-8. Néanmoins, si vous voulez créer un fichier langue parfait, créez-le en utf-8 dès le départ.

## Éditeurs & outils

De fait, vous pouvez utiliser n'importe quel éditeur de texte avec lequel vous êtes à l'aise et qui vous permets de sauvegarder votre texte au format ANSI - Windows Notepad (appelé "Editor" dans Windows 2000/XP) le fait tout à fait bien.

Bien sûr vous pouvez utiliser d'autres éditeurs de texte plus puissants et utiliser (si vous le pouvez) l'encodage utf-8.

Pour savoir si votre éditeur de texte favori peut gérer correctement l'encodage nécessaire, commencez par traduite uniquement certaines lignes (de préférence contenant des caractères spéciaux de votre langue), sauvegardez le fichier de traduction et fermez le. Puis essayez de l'ouvrir avec un éditeur de texte simple sur votre ordinateur (par exemple Notepad) - Si tout s'affiche correctement, l'éditeur que vous avez choisi pour faire la traduction fonctionne correctement.

L'inconvénient lors de l'utilisation des outils qui sont livrés avec Microsoft Windows, est le fait qu'ils n'ont pas été crées avec Unicode (UT-8) en ligne de mire, mais dans la plupart des cas, pour le format propriétaire ANSI qui a été introduit avec MS DOS. En conséquence, si votre langue utilise des caractères non-latins, vous aurez des problèmes pour tester le fichier langue sur votre galerie de test avant de le proposer comme contribution.

Outils recommandés: pour voir ce qui à changé entre le fichier langue de cpg1.4.x et cpg1.5.x, nous recommandons l'utilisation d'un comparateur de fichiers qui peut mettre en évidence les différences dans les deux fichiers. Les utilisateurs de Windows peuvent opter pour le formidable visualisateur de différences dans les fichiers: WinMerge (disponible comme freeware; 1.95 MB, avec des fichiers langues disponibles): Vous pouvez ainsi ouvrir les fichiers avec cet outil (352 des 1152 lignes ont été changées ou ajoutées). Chaque ligne nouvelle/changée est commentée à la fin comme ceci: `//cpg1.5.x`.
Si vous avez besoin d'un puissant éditeur gratuit pour Windows, l'équipe de développement recommande l'utilisation de Notepad++.

Pour une liste plus complète regardez la section "Outils recommandés par l'équipe de développement"

Un traitement de texte comme MS Word n'est définitivement pas le bon outil pour travailler sur un fichier langue, parce qu'il essaye de "d'améliorer" l'aspect du code dans le fichier langue, ce qui va corrompre le fichier langue.

Si vous êtes concernés par le fait d'installer un autre outil sur votre système d'exploitation, pas de panique: la plupart des éditeurs (comme Notepad++) sont publiés en packages qui vous permettent de les lancer sans installation, avec pour conséquence le fait que votre système d'exploitation ne sera pas ralenti ni pollué par une nouvelle application.

## Traduction complète uniquement

Jusqu'à la version 1.2 de Coppermine nous ne transmettions que les lignes qui avaient changées dans les fichiers langue des versions précédentes aux traducteurs. Si cela semble une solution simple et facile, nous avons vite découvert que cette méthode avait de gros inconvénients:

- Le traducteur ne pouvait pas tester son code immédiatement - si une seule apostrophe manque dans le fichier langue, c'est l'ensemble qui ne fonctionne pas
- Trop souvent, les corrections ont dû faire le va-et-vient entre l'équipe de développement et les traducteurs
- L'équipe de développement devait fusionner le fichier précédent avec les éléments nouvellement traduits - ce qui se traduisait par une charge de travail supplémentaire pour l'équipe de développement, retardant la sortie d'une nouvelle version et les éloignant de ce qu'ils faisaient mieux (l'amélioration du script)/li>
- Le traducteur ne connaissait pas le contexte de certaines phrases, rendant impossible une traduction correcte

Pour ces raisons, nous livrons aux traducteurs le fichier de langue anglaise le plus récent avec tous les fichiers langues existants de la précédente version comme références. En plus nous mettons à disposition ce guide que vous êtes en train de lire, en lui demandant (le traducteur: vous dans ce cas particulier) de traduire le fichier dans sa totalité. Bien entendu, vous pouvez (et y êtes encouragés) à regarder dans le fichier langue de la précédente version, et adopter (ou adapter) le contenu qui existait déjà dans l'ancienne version si c'est possible.

Cela ne signifie bien sur pas que vous deviez attendre que votre travail soit complètement terminé avant de proposer la traduction complète: Nous comprenons que c'est un gros travail que de faire une traduction pour chaque chaine dans un fichier langue, c'est pourquoi il est tout à fait possible de soumettre un fichier partiellement traduit avec une partie du fichier langue encore en anglais. Mais n'oubliez pas de nous signaler que vous nous soumettez un fichier langue partiellement traduit.

## Pas à pas

Nous allons détailler ici les étapes pour la traduction d'un fichier langue de Coppermine:

1. Ouvrez english.php avec votre éditeur de texte
2. Sauvegarder immédiatement le fichier avec un nom différent dès l'ouverture (afin d'être sur de toujours avoie un fichier langue Anglais non modifié qui puisse être utilisé en référence) - Le nom de fichier du fichier langue va décider de la manière dont le nom de la langue va apparaitre dans la liste déroulante de Coppermine - utilisez le nom anglais (caractères latins) de votre langue comme nom de fichier, utilisez les minuscules pour le nom, sans espaces ni caractères spéciaux (sauf "-" and "_" et le point pour marquer l'extension. Si le nom de la langue n'est pas suffisamment parlant par lui même, ajoutez une info avec un caractère de soulignement "_".
   Exemples: german.php, italian.php, greek.php, brazilian_portuguese.php
3. Modifiez les infos de l'en-tête (header) (l'exemple de contenu est surligné):
   `// info about translators and translated language`
   `'lang_name_english' => 'French',`Le nom de votre langue en Anglais
   `'lang_name_native' => 'Francais',`Le nom de votre langue dans votre langue maternelle
   `'lang_country_code' => 'fr',`Le code du pays représentant votre langue. Si votre langue est parlée dans plusieurs pays, choisissez celui ou il y a le plus de monde relatif à votre langue
   `'trans_name'=> 'Frantz',`Votre nom (ou plutôt le nom que vous souhaitez voir apparaitre dans la page des crédits)
   `'trans_email' => '',`Si vous le souhaitez, votre adresse de courriel, qui apparaitra dans la page des crédits. Vous pouvez aussi laisser vide
   `'trans_website' => 'http://francois.photo.free.fr/',`Votre site internet (apparaitra dans la page de crédits). Si vous n'en indiquez pas, votre page de profil sera affichée à la place
   `'trans_date' => '2004-03-17',`La date de la traduction/la date du dernier changement dans le fichier langue
   `);`
   Remplissez avec les données que vous souhaitez voir apparaitre dans la page de crédits comme indiqué dans les exemples ci-dessus.
4. Le fichier langue de Coppermine est utilisé pour remplacer dynamiquement des variables/tableaux de variables php avec leur contenu correspondant. Il y a différentes façons dont ces tableaux de variables sont remplis - comme montré dans les exemples ci-dessous (les choses qui doivent être traduites sont surlignées):
   - `$lang_day_of_week = array('Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat');` Une simple liste de valeurs dans un tableau. Traduisez chaque mot entre les guillemets simples.
   - `$lang_yes = 'Yes';`
   Une valeur assignée à une variable. Traduisez tout ce qui se trouve entre les guillemets simples.
   - `$lang_common['keyword_separators'] = array(' '=>'space', ','=>'comma', ';'=>'semicolon');` Un tableau avec la clé => un certain nombre de valeurs. Ne traduisez que les valeurs, la clé doit rester comme elle est!
     `'albums' => 'Albums',
     'pictures' => 'Fichiers',
     );`
   - Les tableaux multidimensionnels ont été enlevés de cpg1.4.x à cpg1.5.X, vous n'aurez donc pas à vous en occuper.
   - Définitions de variables utilisant la syntaxe heredoc: $lang_forgot_passwd_php['account_verify_email'] = <<< EOT You have requested a new password. If you would like to proceed with having a new password sent to you, click on the following link: <a href="{VERIFY_LINK}">{VERIFY_LINK}</a> Regards, The management of {SITE_NAME} EOT; Assurez-vous de ne traduire que le texte, laissant ce qui se trouve entre les accolades et toutes les balises HTML intactes

   Traduisez l'ensemble du fichier langue comme décrit plus haut - vous trouverez comment faire en un rien de temps, même si vous n'êtes pas un codeur PHP chevronné.

5. Testez votre traduction: téléchargez votre fichier langue sur votre serveur et naviguez dans votre galerie, en ajoutant le paramètre `lang=votre_nom_de_langue` à l'URL (par exemple: `http://votresite.com/coppermine/?lang=french)`. Assurez-vous de tester le plus de choses possibles de votre fichier, en particulier la création, le renommage et l'effacement d'utilisateurs, de catégories, d'albums, d'images et de commentaires.
6. Test extérieur: si vous le pouvez, faites tester votre traduction par quelqu'un d'autre (de préférence non connaisseur en informatique). Vous risquez d'être surpris par ce qu'il découvrira...
7. Postez votre fichier langue compressé dans une archive dans ce sujet "[Help wanted]: Translations for CPG1.5.x".
   Vous pouvez attacher votre fichier comme fichier texte ou le placer dans une archive .zip, mais s'il vous plait, n'utilisez pas de formats de compression exotiques comme .rar, .ace, etc.

## Problèmes particuliers

### Échappement des guillemets simples

Comme vous l'avez certainement remarqué, toutes les chaines à traduire se trouvent entre une paire de guillemets simples ou apostrophes - c'est la bonne manière de faire en PHP. Toutefois, si vous voulez que votre traduction contienne des guillemets simples ou des apostrophes, vous devez "signaler" à PHP que cette apostrophe (guillemet simple) contenu dans une chaîne de caractères fait partie intégrante de la chaîne et pas le signe de fin de cette chaîne. Pour cela, on utilise le caractère antislash (\) pour signaler à PHP que le caractère qui suit immédiatement est un caractère de "chaîne" et non une partie du code PHP. Cela s'appelle échapper un caractère en langage de programmation. PHP utilise l'antislash (\) pour échapper les caractères, c'est pourquoi il faut faire attention à ne pas faire ça:

`$lang_errors['access_denied'] = 'Vous n'avez pas la permission d'accéder à cette page.';`
Mais faites plutôt ceci:
`$lang_errors['access_denied'] = 'Vous n\'avez pas la permission d\'accéder à cette page.';`

### Apostrophes en JavaScript (//js-alert)

Les choses sont un peu plus compliquées si la sortie n'est pas uniquement utilisé dans du pur HTML, mais aussi en JavaScript. Les apostrophes qui apparaissent dans la sortie HTML du fichier langue, doivent aussi être échappées pour une utilisation dans une routine JavaScript avec un antislash. C'est pourquoi il y a des lignes particulières dans le fichier langue qui sont utilisées avec JavaScript dans les sorties de Coppermine et qui sont signalées en fin de ligne de cette manière: `//js-alert`. Si vous voulez voir une apostrophe dans l'affichage final, vous devrez ajouter 3 antislashs devant l'apostrophe, comme dans cet exemple:

    'no_change' => 'Vous n\\\'avez effectué aucun changement !', //js-alert

### Conteneurs avec " % "

Vous aurez aussi noté qu'à différents endroits du fichier langue, il y a des textes qui contiennent le signe de pourcentage (%), suivi immédiatement par une lettre. Cette combinaison ne doit pas être traduite ou séparée - elles sont là intentionnellement et seront utilisées plus tard comme argument spécifique, ou appels, à des variables de remplacement et/ou le formatage nécessaires à cet emplacement.

`$lang_rate_pic['rating'] = '(Current rating : %s / %s with %s votes)';`

Ce qui se passe dans ce code (utilisant généralement la commande PHP sprintf; en référence au spécificateur de type) est le remplacement du conteneur (généralement `%s`) par du contenu dynamique.

## Version du fichier langue

### Découverte d'une faute de frappe/d'une erreur de traduction ?

Il se peut qu'une traduction dans votre langue existe, mais vous n'êtes pas satisfait de celle-ci: s'il y a des bugs (erreurs de traduction etc...), commencez par vérifier la page de téléchargement pour voir si une version corrigée (mise à jour) n'a pas déjà été soumise. Si ce n'est pas le cas, rapportez vos trouvailles sur le forum accompagnées de vos suggestions de corrections, comme ceci:

dans lang/votrelangue.php cherchez
`$lang_example['une_definition'] = 'bar foo';`
et remplacez par
`$lang_example['une_definition'] = 'foo bar';`

### Une autre traduction ?

Chacun qui connait une langue sait qu'il n'y a pas "qu'une seule et unique traduction" - il y a parfois plusieurs manières de traduire une expression, ou toute une phrase. Il se peut que vous trouviez que la version existante de votre langue ne convient pas à vos aspirations; peut être parce que le traducteur avait en tête une autre cible d'audience que vous, ou parce que vous souhaitez avoir une traduction plus formelle (dans certaines langues, il y a des différences importantes entre le langage formel et le langage courant).
Merci de ne pas agresser le traducteur sur le forum, mais proposez une traduction alternative avec le détail de ce que vous proposez comme changements et quelle cible vous voulez atteindre avec cette nouvelle version.

## Travail en constante progression

Coppermine, comme tout le contenu sur la toile, est un travail en constante évolution. Votre copie du fichier english.php (qui doit toujours être utilisé comme fichier de référence pour votre traduction) est peut être dépassé. C'est la raison pour laquelle il est indispensable de toujours vous référer a la Section des langues sur le SVN afin d'être sur de toujours avoir le plus récent fichier de langue anglaise (version traducteur) devant vous avant de commencer votre traduction (et bien sur la version la plus récente de ce document, parce qu'il peut ya avoir de nouvelles choses qui y ont été ajoutées depuis la publication initiale de celui-ci). Rappel: si une option/chaîne de remplacement n'est pas traduite, elle ne sera pas visible dans votre langue.

## Traduction initiale pour publication

Lors de la préparation de la publication d'une version, l'équipe de développement gèle le travail de développement afin de permettre aux traducteurs de soumettre leurs traductions. Si vous souhaitez traduire, faites le, le plus rapidement possible et renvoyez votre traduction immédiatement pour être sur que la nouvelle version de Coppermine sera publiée avec votre fichier langue.

## Utilisation d'anciens fichiers langue

Nous comprenons que le fait de devoir faire une traduction complète peut être une tache difficile à faire, vous pourrez donc être tentés de contourner la difficulté en d'aller vers une solution qui semble plus facile au premier abord: vous voudrez utiliser un fichier langue qui a été créer pour une version précédente de Coppermine (par exemple cpg1.4.x) et de travailler sur ce fichier (au lieu de faire comme expliqué dans cette section de la documentation et de commencer votre travail en utilisant la version actuelle de `lang/english.php`).

Même si cette méthode "de fainéant" semble attractive, vous ne pouvez pas l'utiliser pour plusieurs raisons. Pour n'en citer que quelques unes:

- La manière dont les tableaux sont définis a changé de

      $lang_meta_album_names = array(
        'random' => 'Fichiers aléatoires',
        'lastup' => 'Derniers ajouts',
        'lastalb'=> 'Derniers albums modifiés',
        'lastcom' => 'Derniers commentaires',
        'topn' => 'Les plus vus',
        'toprated' => 'Les mieux notés',
        'lasthits' => 'Derniers visualisés',
        'search' => 'Résultat de la recherche',
        'favpics'=> 'Fichiers favorits',  //cpg1.4
      );

  à

      $lang_meta_album_names['random'] = 'Fichiers alléatoires';
      $lang_meta_album_names['lastup'] = 'derniers ajouts';
      $lang_meta_album_names['lastalb'] = 'Derniers albums modifiés';
      $lang_meta_album_names['lastcom'] = 'Derniers commentaires';
      $lang_meta_album_names['topn'] = 'Les plus vus';
      $lang_meta_album_names['toprated'] = 'Les mieux notés';
      $lang_meta_album_names['lasthits'] = 'Derniers visualisés';
      $lang_meta_album_names['search'] = 'Résultats de la recherche d\'images';
      $lang_meta_album_names['album_search'] = 'Résultats de la recherche dans les albums';
      $lang_meta_album_names['category_search'] = 'Résulats de la recherce dans les catégories';
      $lang_meta_album_names['favpics'] = 'Fichiers favorits';
      $lang_meta_album_names['datebrowse'] = 'Naviguer par date'; //cpg1.5

- Les noms de variables ont changés (ex: `$album_date_fmt = '%B %d, %Y';` a été changé en `$lang_date['album'] = '%B %d, %Y';`
- La définition complète des tableaux pour la section de configuration a été entièrement changée.

Il est clair que vous ne devez pas commencer par modifier un fichier langue pour cpg1.4.x et ensuite essayer de le porter vers cpg1.5.x - vous serez obligés de faire des changements à chaque ligne.

A la place, nous vous recommandons de faire comme expliqué en utilisant une copie de english.php pour cpg1.5.x et de l'utiliser comme base pour une nouvelle traduction. Nous recommandons d'ouvrir une copie du fichier langue obsolète dans votre éditeur de texte et de juste faire des copies des chaines individuelles dans votre nouvelle copie.

## Traduction de la documentation

Comme il est dit plus haut, toute contribution est la bienvenue. Bien que ce soit déjà un grand travail de faire une traduction d'un fichier langue de Coppermine, c'est une tache encore bien plus énorme de faire une traduction complète de la documentation de Coppermine. C'est la raison pour laquelle la documentation qui était un seul et unique document (une énorme page HTML) a été coupée en fichiers séparés à partir de cpg1.5.x.

Pour le bien de la communauté, il vous est aussi demandé de traduire une partie de la documentation (et pourquoi pas la totalité). Pour cela, faites la même chose que ce qui est suggéré plus haut: assurez vous que la traduction n'existe pas encore en vérifiant le dépôt SVN et en regardant si il n'y a pas un sujet sur le forum qui traite de la traduction dans votre langue. Si ce n'est pas le cas, allez-y pour votre traduction.

### Étapes pour la traduction de la documentation dans votre langue

- #### Assurez-vous que la traduction n'existe pas encore

  Comme expliqué plus haut, assurez-vous que vous n'allez pas faire de travail en double - vérifiez d'abord le dépôt SVN et le forum correspondant avant de commencer

- #### Créez la structure

  Votre traduction ira par la suite dans un sous-répertoire (qui représente le code langue) du répertoire docs, vous devez donc créer un dossier dans le répertoire docs de votre copie locale de Coppermine si il n'existe pas déjà - Il y a peut être déjà une traduction partielle, vous n'aurez donc à créer le sous-répertoire que si il n'existe pas déjà. Si, par exemple, vous voulez créer une traduction Hongroise, créez un sous-répertoire dans le répertoire docs nommé `hu`. Dans ce nouveau répertoire, créez un sous-répertoire `images` (même si le mot pour "images" est différent dans votre langue - Il s'agit simplement d'un nom de dossier qui ne concerne pas les autres. Le dossier images contiendra vos copies d'écran.

- #### Copiez le noyau des fichiers langues

  Copiez les fichiers de base depuis le répertoire de la documentation en anglais (`votre_repertoire_local_coppermine/docs/en/`) dans votre répertoire langue nouvellement crée (dans l'exemple ci-dessus pour le Hongrois cela donne `votre_repertoire_local_coppermine/docs/hu/`). Les fichiers que vous devez absolument copier et modifier par la suite sont `index.htm`, `script.js` and `toc.htm`, mais si vous comptez faire une traduction complète, vous pouvez copier tous les fichiers depuis le répertoire `en`. Bien entendu cette étape ne s'applique que s'il n'y a pas déjà une traduction partielle qui existe. S'il y a déjà des fichiers dans votre répertoire langue, ne copiez pas les fichiers depuis le répertoire "en", mais utilisez ceux existant (comme expliqué plus bas).

- #### Commencer la traduction

  Vous devriez commencer la traduction par la toute première page de la documentation (`index.htm`) en utilisant un simple éditeur de texte. Vous pouvez aussi utiliser un visualisateur de différences, de manière à avoir le fichier Anglais original et celui de votre traduction côte à côte.

- #### Parties où il faut faire attention

  - Laissez la ligne `<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en" dir="ltr">` intacte! Ne changez rien pour l'adapter à votre langue - c'est une partie des spécifications XHTML, pas des META informations sur la langue de votre document
  - Par contre, faites la traduction de la balise titre (quelque chose comme `<title>Coppermine Photo Gallery - Documentation & Manual - some chapter name</title>`)
  - Pour une meilleur accessibilité des moteurs de recherche, vous devrez modifier la ligne `<meta name="language" content="en" />` - le contenu ("en") devra être remplacé par le code langage de votre langue. Si vous n'êtes pas sûr, laissez-le comme ça (un membre de l'équipe de développement de Coppermine le fera après que vous ayez soumis votre contribution).
  - Modifiez la balise META de description (`<meta name="description" content="...">`) de manière a avoir une description sommaire du contenu de la page (dans votre langue).
  - Laissez le nom de fichier intact: Ne traduisez pas les noms de fichiers!
  - Laissez le nom des ancres intact: le modifiez pas les noms d'ancres (comme `<a name="copyright"></a>`), même si le mot "copyright" dans cet exemple ne veut pas dire la même chose (ou même si il ne veut rien dire) dans votre langue.
    Cette disposition vise à faire en sorte que les supporters et les utilisateurs puissent facilement se référer aux sections de la doc qu'ils ne comprennent pas.
  - Laissez les sections JavaScript-sections intactes: elles sont utilisées pour permettre la navigation par la suite - n'y touchez pas. Particulièrement la ligne `dateRevision(' $LastChangedDate: 2013-05-22 11:43:15 +0200 (Mi, 22 Mai 2013) $ ', ' $Revision: 8570 $ ');` ou similaire qui ne doit pas être modifiée par vous: elle sera mise à jour lorsque votre contribution sera ajoutée au pack de Coppermine.
  - Ne modifiez pas la section infos de version SVN en haut de page (qui sont commentées) - elle doit être utilisée pour des besoins internes par la suite.
  - N'améliorez pas votre version de la doc (celle que vous avez traduite): vous pouvez trouver qu'il manque des choses importantes dans la documentation en Anglais ou qu'il y a des choses inappropriées ou manquantes, n'ajoutez pas de sections dans votre traduction de la doc qui n'existerait pas dans la doc originale en Anglais. Malgré tout, nous ne pensons pas que ce soit une bonne idée: si vous avez une suggestion pour améliorer la documentation, nous aimerions pouvoir en faire profiter l'ensemble de la communauté. Ceci dit: merci de ne pas juste ajouter des sections dans vote copie locale de votre traduction - Postez vos suggestions publiquement afin que vos améliorations puissent aller aussi bien dans votre traduction que dans le fichier Anglais.
  - Traduisez les exemples si c'est possible: Il est conseillé de traduite les exemples dans votre langue: l'exemple de nom d'utilisateur Anglais "John Doe" peut bien entendu être changé dans un nom d'exemple typiquement Français comme "Jean Dupont" par exemple. L'exemple d'URL `http://yoursite.tld/your_coppermine_folder/` peut être traduit en `http://votre_site.com/votre_repertoire_coppermine/` dans la partie Française de la doc.
  - Une fois que vous avez commencé la traduction d'un fichier de la documentation, vous pouvez sans problème remplacer la ligne <div id="doc_en_only">Pas de traduction disponible</div> par <div id="doc_en_partial">Traduction partielle</div>
  - Après avoir terminé la traduction d'une page de documentation, merci d'effacer complètement la ligne <div id="doc_en_only">Pas de traduction disponible</div> ou <div id="doc_en_partial">Tradcution partielle</div>.

- #### Faites attention à la table des matières

  Une fois que vous avez terminé la traduction des fichiers que vous vouliez traduire (dans un monde idéal: tous les fichiers), regardez dans les fichiers `script.js` et `toc.htm`. Le premier fichier est le fichier JavaScript qui créera par la suite le menu de navigation dans toutes les pages, le deuxième est son équivalent en simple HTML (pour ceux qui ont désactivé JavaScript).
  Dans script.js, descendez un peu dans le code jusqu'a ce que vous trouviez la structure de navigation (qui commence avec la ligne `var doc_toc = '';` - chacune des lignes suivante représente un élément de la navigation. Vous devez les traduire aussi (surtout les éléments que vous avez traduits). Bien sur, vous ne devez pas modifier les noms de fichiers (qui doivent rester en anglais), mais uniquement la partie texte. Si vous n'êtes pas sur de vous regardez dans une traduction existante comment cela a été fait.
  Il faut faire la même chose dans toc.htm, qui est la version HTML de "la table des matières"; à nouveau, ne traduisez que les étiquettes, mais pas le nom des ancres.
- Il y a quelques chaines dans script.js qui doivent aussi être traduites: cherchez
  - `$('#docheader').text('Coppermine Photo Gallery v1.5.1: Documentation and Manual');` et remplacez le texte actuel de cette ligne (`Documentation and Manual`) avec la traduction dans votre langue
  - `overall_doc_footer += '<a href="#top">Back to Top</a>';` et remplacez le texte actuel de cette ligne (`Back to Top`) avec la traduction dans votre langue
  - `$('#doc_last_changed').text('About this document: ' + 'last changed on ' + lastChangeDate);` et remplacez le texte actuel de cette ligne (`About this document` and `last changed on`, but not `lastChangeDate`) avec la traduction dans votre langue
  - `$('#doc_revision').text(', SVN revision ' + revisionNumber);` et remplacez le texte actuel de cette ligne (`SVN revision`) avec la traduction dans votre langue. Si vous ne savez pas ce qu'est une révision SVN, laissez cette ligne comme elle est!
  - La fonction `cpgDocSearch` détermine l'emplacement du moteur de recherche, Toutefois, il demande à ce que l'équipe de développement créer un moteur de recherche personnalisé d'abord, c'est pourquoi, vous (comme traducteur) ne devez pas toucher à cette fonction
  - La fonction `cpgDocTranslationWarning` ne fait rien dans la partie Anglophone de la documentation. Elle doit être modifiée dans votre copie de la documentation, en remplaçant les chaines entre guillemets.

- #### Compressez votre traduction

  Enfin, lorsque votre traduction est terminée, compressez votre répertoire langue et attachez le zip dans le sujet correspondant du forum de Coppermine. Bien entendu, votre nom et l'adresse de votre site sera mentionnée dans la page des crédits, assurez vous de bien avoir donné tous les détails de ce que vous souhaitez voir apparaitre dans la liste des contributeurs.

## Lectures complémentaires

- Le minimum absolu que chaque développeur devrait savoir à propos de l'unicode et des jeux de caractères par Joel Spolsky