Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 11-11-2009 10:36:00

GueloSuperStar
Membre
Lieu: Paris
Date d'inscription: 05-08-2009
Messages: 107

code langue

Bonjour les Zender's

Je sais que c'est un jour férié aujourd'hui mais pas pour tout le monde... smile

Alors ma question est simple (je crois smile )

Pour les code iso de la langue dans les urls, le bon format est :

- fr,en,it,us
- fr_FR,en_EN,it_IT,en_US
- fr-FR,en-EN,it-IT,en-US

En fait j'ai vu un peu de tout donc je sais pas quel format prendre pour faire mes url.

Merci pour votre aide.


A+ Guelo Super Star

Hors ligne

 

#2 11-11-2009 11:42:03

mikaelkael
Administrateur
Lieu: Donges
Date d'inscription: 18-06-2007
Messages: 1176
Site web

Re: code langue

Hello,

Dans fr_FR, fr correspond à la langue ("french") et FR à la localisation ("FRANCE"). Si tu cherches un code pour la langue, c'est donc "fr".

Langue => http://fr.wikipedia.org/wiki/ISO_639 et http://fr.wikipedia.org/wiki/Liste_des_codes_ISO_639-1
Pays (Région) => http://fr.wikipedia.org/wiki/ISO_3166-1

@+


Less code = less bugs
Contributeur ZF - ZCE - ZFCE - Doc ZF (CHM & PDF) - Vice-trésorier AFUP 2011
Ubuntu 11.04 - ZendServer

Hors ligne

 

#3 12-11-2009 08:37:47

GueloSuperStar
Membre
Lieu: Paris
Date d'inscription: 05-08-2009
Messages: 107

Re: code langue

mikaelkael ,

Je suis d'accord avec toi que le fr c'est la langue et l'autre partie la localisation.
Moi je cherche justement le bonne syntaxe d'écriture car je veux pourvoir identifier par exemple le français de franque du français de Belgique ou encore du français suisse.

ce qui me donnerais soit :

fr_FR , fr_BE, fr_CH

ou soit

fr-fr , fr-be , fr-ch

Mais je ne sais pas quel est la bonne notation.

Tu vois ce que je veux faire ?


A+ Guelo Super Star

Hors ligne

 

#4 12-11-2009 08:42:37

philippe
Administrateur
Lieu: Grenoble
Date d'inscription: 01-03-2007
Messages: 1624

Re: code langue

c'est fr_BE pour la belgique.

le pays c'est en majuscule et la langue en minuscule (regarde les 2 liens de mickaelkael pour les codes de pays et le codes de langue). après c'est un "_" entre les 2, regardes la doc du ZF à la page suivante :
http://framework.zend.com/manual/en/zen … ale.whatis

A+, Philippe


twitter : @plv ; kitpages.fr : Création de sites internet à Grenoble et Paris

Hors ligne

 

#5 12-11-2009 12:36:44

GueloSuperStar
Membre
Lieu: Paris
Date d'inscription: 05-08-2009
Messages: 107

Re: code langue

Merci pour vos réponses les Zender's

Mais maintenant j'ai un petit soucis avec Zend_translate :

Code:

$translate = new Zend_Translate('array', APPLICATION_PATH. '/languages',null,array('scan' => Zend_Translate::LOCALE_DIRECTORY));

$translate->setLocale('fr');

Architecture
languages/fr/mesfichiers
languages/en_US/mesfichiers

j'ai une erreur comme quoi la langue fr

Code:

Notice: The language 'fr' has to be added before it can be used. in C:\php5\pear\Zend\Translate\Adapter.php on line 320

Notice: No translation for the language 'fr' available. in C:\php5\pear\Zend\Translate\Adapter.php on line 333

Je vais voir dans les fichiers car je trouve pas ça normal et donc quand il scan les dossiers de langue, il y a un test pour voir si la taille du  nom du fichier d'avant ou égal ou supérieur au nouveau nom

donc en gros :

Code:

  if (strlen('fr') <= strlen('en_US'))

ça fait que les test est false et il ne passe pas dans la condition et ne fait pas le traitement pour la langue français.


Vous savez comment je peux faire?


A+ Guelo Super Star

Hors ligne

 

#6 03-12-2009 18:46:58

GueloSuperStar
Membre
Lieu: Paris
Date d'inscription: 05-08-2009
Messages: 107

Re: code langue

Salut les Zender's

Je vois que mon problème n'a inspiré personne smile

je vais le reformuler autrement en espérant être plus clair.

Je voudrais faire un site multilingue .

Mon architecture :
application/languages/fr/mesfichiers
application/languages/fr_CH/mesfichiers
application/languages/en/mesfichier
application/languages/en_US/mesfichier

Donc dans un plugin que j'ai créé je fait :

Code:

$locale = 'fr' ou $locale = 'fr_CH' ou $locale = 'en' ou $locale = 'en_US'

$translate = new Zend_Translate('array', APPLICATION_PATH. '/languages',$locale,array('scan' => Zend_Translate::LOCALE_DIRECTORY));

Mais le problème est qu'il y a une erreur( ah bon c'esty vrai smile )

Code:

Notice: The language 'fr' has to be added before it can be used. in C:\php5\pear\Zend\Translate\Adapter.php on line 320

Notice: No translation for the language 'fr' available. in C:\php5\pear\Zend\Translate\Adapter.php on line 333

En gros il me dit qu'il ne trouve pas la traduction pour la langue en "fr" alors qu'elle y est bien...sad

Donc quand je regarder dans les codes sources, c'est normal qu'il y a cette erreur car il ne rentre pas dans mon dossier 'fr' a cause d'un test :

Code:

Zend/Translate/adapter.php
Ligne 158 : 
                    if (($this->_options['scan'] === self::LOCALE_DIRECTORY) and (Zend_Locale::isLocale($file, true, false))) {
                        if (strlen($prev) <= strlen($file)) {
                            $locale = $file;
                            $prev   = (string) $locale;
                        }
                    }

Donc ce test  se résume comme sa dans mon cas

if (strlen('en_US') <= strlen('fr'))

Par conséquent il ne rentre dans le IF et ne détecte pas la langue 'fr'

Merci pour votre aide, vos idée ou vos façon de faire.

Dernière modification par GueloSuperStar (03-12-2009 18:48:02)


A+ Guelo Super Star

Hors ligne

 

#7 04-12-2009 08:31:00

philippe
Administrateur
Lieu: Grenoble
Date d'inscription: 01-03-2007
Messages: 1624

Re: code langue

Bonjour,

Si tu utilises l'adapter 'array', tu n'envoies pas un fichier et encore moins un répertoire, tu envoies un tableau en paramètre à Zend_Translate. Et tu peux oublier l'option "scan" également parce qu'elle ne peut fonctionner qu'avec des types de fichiers de traduction qui contiennent la langue de traduction (dans le fichier lui même, pas juste dans le nom du fichier).

Bref si dans tes fichiers de trad, tu as un truc du genre

Code:

$trad = array(
    'message1' => 'trad1',
    'message2' => 'trad2',
    'message3' => 'trad3');

il faut faire dans ton code :

Code:

include APPLICATION_PATH. '/languages/'.$locale.'/monFichierDeTrad.php';
$translate = new Zend_Translate('array', $trad,$locale);

A+, Philippe


twitter : @plv ; kitpages.fr : Création de sites internet à Grenoble et Paris

Hors ligne

 

#8 04-12-2009 09:26:22

GueloSuperStar
Membre
Lieu: Paris
Date d'inscription: 05-08-2009
Messages: 107

Re: code langue

@philippe tu as surement raison pour le 'scan' et comment appeler les traductions.
Mais tu vois quand je nomme met dossiers avec le même nombre de lettre tout fonctionne correctement par exemple :

si je fait fr_FR, en_EN, en_US ou fr,en,it

Il me récupère bien les fichiers de langue avec la langue que je lui passe en paramètre.

Mais l'inconvénient on peut le voir facilement, dans le premier pour le français il faut que je mette fr_FR dans l'url et dans le deuxième cas je ne peux pas avoir de fr_CH ou bien de en_US.

Je veux bien appliquer ta méthode mais comment je peux faire vu que j'ai plusieurs fichiers pour une même traduction, je met tout tout dans un seul fichier?

Merci pour ton aide Zender's philippe et aux autre Zender's aussi smile

Dernière modification par GueloSuperStar (04-12-2009 09:27:27)


A+ Guelo Super Star

Hors ligne

 

#9 04-12-2009 10:30:58

philippe
Administrateur
Lieu: Grenoble
Date d'inscription: 01-03-2007
Messages: 1624

Re: code langue

Je n'ai jamais utilisé cette option "scan", j'ai peut-être (sans doute) dit une bêtise. Mais si j'ai bien compris tu as un cas assez particulier (en général c'est un fichier par locale et on répète les trads communes à fr_FR et fr_CH).

Je suis pas certain d'avoir bien compris ton problème : tu veux avoir un fichier pour 'fr', puis des fichiers 'fr_CH' et 'fr_CA' qui contiennent uniquement les différences de traductions entre le "fr" générique et les traductions suisses ou canadiennes ?
Si c'est ça, à ta place je ferais un truc à la main avec des include manuels de tes fichiers et des array_merge pour inclure les versions CH ou CA.

Par contre j'ai l'impression que tu te lances dans un truc dangereux : si tu as bcp de langues et beaucoup de traductions, n'essaye pas de gérer le truc avec des array. Regarde du coté de l'adapteur gettext (il faut regarder dans google du coté de gettext, poedit, .po, .mo, .pot). C'est un peu compliqué à mettre en place, mais une fois que ça tourne ça te facilite grandement la vie.
Sur des sites "complexes en termes de traduction" c'est le seul système qui te permettra d'avoir des traductions qui restent à peu près à jour quand ton site évolue...

A+, Philippe


twitter : @plv ; kitpages.fr : Création de sites internet à Grenoble et Paris

Hors ligne

 

#10 04-12-2009 11:12:40

GueloSuperStar
Membre
Lieu: Paris
Date d'inscription: 05-08-2009
Messages: 107

Re: code langue

Ce que je voulais faire est d'avoir plusieurs dossiers (fr,fr_CH,en,en_US) et dans ses dossier des fichiers genre :

-fr/menu.php
-fr/contenu.php
-fr/log.php
-fr_CH/menu.php
-fr_CH/contenu.php
-fr_CH/log.php
-en/menu.php
-en/contenu.php
-en/log.php
.........

et donc avec le scan je voulais qu'il me récupère tous les fichiers lié à ma langue.

tu vois mieux mon pti bordel hi hi:)

En faite ses fichiers de langue correspond au  contenu 'static' de mon site.


Mais la je viens de voir mais avec le système que je te parlais le scan des dossiers quand je fait fr_FR,fr_Ca,en_EN, il me récupéré pas seulement les traduction de la langue en cour mais toutes les langues déclarées.

Donc au final plus j'aurais de langue plus mon "Zend_Registry::set('Zend_Translate', $translate);" serra volumineux.

je ne sais pas si sa demande beaucoup de ressource pour mettre/accéder à tout ce contenu dans le Registry.....

Je vais essayer de regarder du côté de gettext comme tu me l'as conseillé et voir si ça me prend pas trop de temps pour refaire ma partie de localisation.


A+ Guelo Super Star

Hors ligne

 

#11 04-12-2009 13:56:18

lyrix
Membre
Date d'inscription: 04-04-2009
Messages: 15

Re: code langue

wahoo, c'est grandement se compliquer la vie que ce que tu nous fait la. Il ne faut avoir qu'un seul fichier par action : 1 menu 1 contenu 1 log etc... et dans ce fichier tu mets des textes dans aucunes langues, juste des codes en fait. Et ensuite tu fais tes fichiers de traduction. Un par langue. Et enfin dans le bootstrap tu recupère la valeur de la langue du client et tu traduit si c'est possible ...

Hors ligne

 

#12 04-12-2009 14:25:38

philippe
Administrateur
Lieu: Grenoble
Date d'inscription: 01-03-2007
Messages: 1624

Re: code langue

@lyrix :

dans ce fichier tu mets des textes dans aucunes langues, juste des codes en fait

En fait en général on met le texte dans la langue de référence et pas un code, ça simplifie les choses, notamment quand on utilise des systèmes genre gettext. Le principe de gettext est de lire l'ensemble de ton code et d'en extraire toutes les chaînes de caractères à traduire, ensuite tu as un outil (poEdit) qui te permet d'enregistrer les traductions pour chaque chaîne trouvée dans le code.

A+, Philippe


twitter : @plv ; kitpages.fr : Création de sites internet à Grenoble et Paris

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages