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

Table des matières

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 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:

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 ä 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:

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):

    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:

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

Lectures complémentaires