Une des fonctions les plus imporante 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.
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:
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 si ils veullent et sont en mesure de fair cette traduction (avant le début du travail sur les traductions). Les langues qui avaient été précédemment asigné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 interressées par la traduction d'une de ces langues "orphalines" 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, prennez là à votre compte.
Beaucoup de langues ont des alphabets spéciaux différent 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 equivalents 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 termee: certains développeurs devront transformer votre propre encodage vers UTF-8 avant de pouvoir l'utiliser, donc, si vous le pouvezn 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.
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 sur vous pouvez utiliser d'autres éditeurs de texte plus puissants et utlisiser (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 votres langue), sauvegardez le fichier de traduction et fermez le. Puis essayez de l'ouvrir avec une é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é indroduit avec MS DOS. En concéquence, si votre langue utilise des cacartè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éfinitevent 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'eploitation, pas de panique: la plupart des éditeurs (comme Notepad++) sont publiés en packages qui vous permettent de les lancer sans installation, avec pour concéquence le fait que votre système d'eploitation ne sera pas ralenti ni pollué par une nouvelle application.
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 avc 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 tracucteur: 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 chque 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.
Nous allons détailler ici les étapes pour la traduction d'un fichier langue de Coppermine:
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é.
Comme vous l'avez certainement remarqué, toutes les chaines à traduire se trouvent en tres guillemets simples ou apostrophe - 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 caratère anti-slash (\) 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 language de programmation. PHP utilise l'anti-slash (\) 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.';
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 dzns la sortie HTML du fichier langue, doivent aussi être échappés pour une utilisation dans une routine javaScript avec un antislash. C'est pourquoi il y a des lignes particulières dans le ficheir langue qui sont utilisées avec JavaScript dans les sortie de Coppermine et qui sont signalées en fin de ligne de cette manière: //js-alert. Si vous voulez voir une apostrophe dan sl'affichage final, vous devrez ajouter 3 antislash devant l'apostrophe, comme dans cet exemple:
'no_change' => 'Vous n\\\'avez effectué aucun changement !', //js-alert
Vous aurez ausi noté qu'a 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écéssaires à 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.
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(errurs 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';
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 language formel et le language courrant).
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 voullez atteindre avec cette nouvelle version.
Coppermine, comme tout le contenu sur la toile, est un travail en constante évolution. Votre copie du fichier english.php (qui doit toujours être utiliser comme fichier de référence pour votre traduction) est peut être dépassé. C'est la raison pour laquelle il est indispenssable de toujours vous réferrer 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.
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. Sivous souhaitez traduire, faite sle 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.
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 dificulté en d'aller vers une solution qui semble plus facile au premier abbord: 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 methode "de fénéant" semble attractive, vous ne pouvez pas l'utiliser pour plusieurs raisons. Pour n'en citer que quelques unes:
$lang_meta_album_names = array( 'random' => 'Fichiers allé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
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 changeents à chaque ligne.
A la place, nous vous recommendons 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 recommendons 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.
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 Copermine, c'est une tache encore bien plus énorme de faire uen 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épot 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.