IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Zend Framework PHP Discussion :

[ZF2.x] translator - découper sa traduction en plusieurs fichiers


Sujet :

Zend Framework PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Avatar de narmataru
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 548
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 548
    Par défaut [ZF2.x] translator - découper sa traduction en plusieurs fichiers
    Bonjour,

    J'utilise des fichiers de traduction de type phparray pour mon application.

    Ce fichier commence a être volumineux. Est-il possible de le découper et d'avoir ainsi plusieurs fichiers pour une seule traduction ?

    merci

    Voici une partie de ma configuration :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    return array(
        'service_manager' => array(
            'factories' => array(
                'translator' => 'Zend\I18n\Translator\TranslatorServiceFactory',
    		),
    	),
        'translator' => array(
            'locale' => 'fr_FR',
            'translation_file_patterns' => array(
                array(
                    'type'     => 'phpArray',
                    'base_dir' => __DIR__ . '/../language',
                    'pattern'  => '%s.lang.php',
                ),
            ),
        ),
    );
    Mes fichies de langue sont des fichiers .php qui contiennent juste :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    return array(
        "CLEF1" => "Traduction 1",
        "CLEF2" => "Traduction 2",
        "CLEF3" => "Traduction 3",
        ....
    );

  2. #2
    Membre chevronné

    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2003
    Messages
    253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Février 2003
    Messages : 253
    Par défaut
    Bonsoir,

    Quelques idées en vrac :
    • Renseigner plusieurs patterns pour une même locale dans la configuration, comme dans l'exemple ci-dessous.
    • Splitter la configuration en plusieurs modules, mais si un seul module devient plus gros c'est compliqué...
    • Si ça ne convient toujours pas, créer ta propre implémentation de FileLoaderInterface, là tu ferais pile poil ce que tu veux.


    Pour revenir à la piste la plus plausible, plusieurs patterns pour une même locale, ça ne fonctionnerait pas ça ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    return array(
        'service_manager' => array(
        'factories' => array(
            'translator' => 'Zend\I18n\Translator\TranslatorServiceFactory',
        ),
        'translator' => array(
            'locale' => 'fr_FR',
            'translation_file_patterns' => array(
                array(
                    'type' => 'phpArray',
                    'base_dir' => __DIR__ . '/../language',
                    'pattern' => '%s.lang.1.php',
                ),
                array(
                    'type' => 'phpArray',
                    'base_dir' => __DIR__ . '/../language',
                    'pattern' => '%s.lang.2.php',
                ),
            ...
            ),
        ),
    );

  3. #3
    Membre Expert
    Avatar de narmataru
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 548
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 548
    Par défaut
    Je viens d'essayer cette solution :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    'translation_file_patterns' => array(
    		array(
    				'type'     => 'phpArray',
    				'base_dir' => __DIR__ . '/../language',
    				'pattern'  => '%s.lang.php',
    		),
    		array(
    				'type'     => 'phpArray',
    				'base_dir' => __DIR__ . '/../language',
    				'pattern'  => '%s.countries.php',
    		),
    ),
    Seul le fichier '%s.lang.php' est chargé. Si je mets la première config en commentaire, alors '%s.countries.php' est bien chargé.

    Pourtant cette solution me semblait bonne, sinon pourquoi 'translation_file_patterns' serait un tableau ?

  4. #4
    Membre Expert
    Avatar de narmataru
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 548
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 548
    Par défaut
    Il faut rajouter un text-domain :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    'translator' => array(
    	'locale' => 'fr_FR',
    	'translation_file_patterns' => array(
    		array(
    			'type'     => 'phpArray',
    			'base_dir' => __DIR__ . '/../language',
    			'pattern'  => '%s.lang.php',
    		),
    		array(
    			'type'     => 'phpArray',
    			'base_dir' => __DIR__ . '/../language',
    			'pattern'  => '%s.countries.php',
    			'text_domain' => 'lst_countries'
    		),
    	),
    ),
    et dans la vue :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <p><?php echo $this->escapeHtml($this->translate('ENGLAND', 'lst_countries')) ?></p>
    Le text-domain par défaut est 'default'.

  5. #5
    Membre chevronné

    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2003
    Messages
    253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Février 2003
    Messages : 253
    Par défaut
    Merci pour avoir précisé la solution. En jetant un oeil dans le source ça devient plus logique effectivement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
        public function addTranslationFilePattern(
            $type,
            $baseDir,
            $pattern,
            $textDomain = 'default'
        ) {
            if (!isset($this->patterns[$textDomain])) {
                $this->patterns[$textDomain] = array();
            }
     
            $this->patterns[$textDomain][] = array(
                'type'    => $type,
                'baseDir' => rtrim($baseDir, '/'),
                'pattern' => $pattern,
            );
     
            return $this;
        }
    Du coup donner plusieurs entrées qans textDomain différents écrase les précédentes.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [2.x] Découper la traduction en plusieurs fichiers mais un seul domaine
    Par khayyam90 dans le forum Symfony
    Réponses: 0
    Dernier message: 05/02/2015, 09h28
  2. Réponses: 10
    Dernier message: 27/02/2009, 17h19
  3. Découper une classe en plusieurs fichiers de code
    Par Christophe_ dans le forum Visual Studio
    Réponses: 1
    Dernier message: 21/06/2007, 20h54
  4. Réponses: 2
    Dernier message: 07/09/2006, 12h17
  5. Traduction en plusieurs langues d'une application
    Par Furlaz dans le forum C++Builder
    Réponses: 5
    Dernier message: 08/06/2006, 10h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo