[RESOLU] Problème gettext

Eléphant du PHP | 385 Messages

27 oct. 2015, 18:08

Bonjour à tous,

J'essaye de m'initier à gextext, j'ai plusieurs question sans la version pro car je suis étudiant il est possible de générer une traduction? j'ai aussi du mal à faire des test avec wampserver auriez-vous des conseils s'il vous plaît?

Merci de votre aide.

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9783 Messages

27 oct. 2015, 20:00

Bonjour,

La version pro de quoi ?
Gettext est une librairie gratuite

Si tu veux éditer des fichiers *.po *.mo, tu peux utiliser par exemple Poedit http://poedit.net dont la version gratuite est opensource et permet de faire tout ce que tu veux.

Et sinon, des conseils bah ça dépend des problèmes que tu rencontres...
Qu'as tu essayé ? Qu'est-ce qui ne marche pas ? Quels sont les messages d'erreurs ?
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphant du PHP | 385 Messages

28 oct. 2015, 10:56

Bonjour et merci pour votre réponse,

quand je lance poedit il-y a un icône passer en Pro je peux donc traduire mes fichiers sans cela? également quel est la différence entre le fichier .po et .pot? également je n'ai pas bien compris le .po génère un fichier compilé donc quand je modifie le .po je dois recompiler le fichier avec poedit mais comment je fais cela?

Merci

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9783 Messages

28 oct. 2015, 12:26

Les fonctions "Pro" de poedit sont clairement optionnelles, c'est davantage pour soutenir le développeur si tu utilises beaucoup le logiciel et que tu l'apprécies.

Pour la différence entre les fichiers :
  • POT – Portable Object Template : C'est le fichier source qui contient toutes les phrases à traduire.
  • PO – Portable Object : C'est le fichier qui contient toutes les traductions dans la langue d'origine <-> la langue voulue
  • MO – Machine Object : C'est le mêem fichier que le PO mais compilé pour pouvoir être utilisé par gettext.
Pour compiler un fichier .po en .mo, c'est dans le menu Fichier de Poedit, si ma mémoire est bonne
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphant du PHP | 385 Messages

28 oct. 2015, 14:07

Finalement j'ai un autre problème désoler, voilà ma traduction n'ai pas faite mon fichier index
<?php require"localization.php";?>
 <h1><?php echo _("chaine") ?></h1>
mon fichier localization.php
<?php
/*
   Copyright (c) 2003,2004,2005,2009 Danilo Segan <[email protected]>.
   Copyright (c) 2005,2006 Steven Armstrong <[email protected]>

   This file is part of PHP-gettext.

   PHP-gettext is free software; you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
   the Free Software Foundation; either version 2 of the License, or
   (at your option) any later version.

   PHP-gettext is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   GNU General Public License for more details.

   You should have received a copy of the GNU General Public License
   along with PHP-gettext; if not, write to the Free Software
   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA

*/

error_reporting(E_ALL | E_STRICT);

// define constants
define('PROJECT_DIR', realpath('./'));
define('LOCALE_DIR', PROJECT_DIR .'/locale');
define('DEFAULT_LOCALE', 'en');

require_once('lib/gettext/gettext.inc');

$supported_locales = array('en');
$encoding = 'UTF-8';

$locale = (isset($_GET['lang']))? $_GET['lang'] : DEFAULT_LOCALE;
// gettext setup
T_setlocale(LC_MESSAGES, $locale);
// Set the text domain as 'messages'
$domain = 'messages';
bindtextdomain($domain, LOCALE_DIR);
// bind_textdomain_codeset is supported only in PHP 4.2.0+
if (function_exists('bind_textdomain_codeset')) 
  bind_textdomain_codeset($domain, $encoding);
textdomain($domain);

header("Content-type: text/html; charset=$encoding");
?>
mon fichier de traduction situé dans C:\wamp\www\gettext\international\locale\en_US\LC_MESSAGES
msgid ""
msgstr ""
"Project-Id-Version: \n"
"POT-Creation-Date: 2015-10-28 13:47+0100\n"
"PO-Revision-Date: 2015-10-28 13:51+0100\n"
"Last-Translator: \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 1.8.5\n"
"X-Poedit-Basepath: .\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"Language: en\n"

msgid "chaine"
msgstr "string array here yeah!!!!"
j'ai du oublié quelque chose mais je ne sais pas quoi par contre dans poedit je n'ai pas trouvé pour sélectionner les mots clés, merci encore de votre aide.