laminas / laminas-i18n-resources

Provides validator and captcha translations for laminas-i18n's Translator
https://docs.laminas.dev/laminas-i18n-resources/
BSD 3-Clause "New" or "Revised" License
9 stars 9 forks source link

Problem with pattern and locale long code like 'en_US' or 'fr_FR #9

Open weierophinney opened 4 years ago

weierophinney commented 4 years ago

I see that this package only provides translation for locale short codes like fr or en. It is a problem when you want to translate framework messages with a locale detected as fr_FR or en_US and using the pattern method.

Why not providing those messages in folder names using the long code format ?

Anyway, I managed to get this working by adding this peace of code in my translator delegator factory:

    $languageMap = array(
        'fr' => array(
            'fr_BE',
            'fr_CA',
            'fr_CH',
            'fr_FR',
            'fr_LU',
            'fr_MC'
        ),
        'en' => array(
            'en_029',
            'en_AU',
            'en_BZ',
            'en_CA',
            'en_GB',
            'en_IE',
            'en_IN',
            'en_JM',
            'en_MY',
            'en_NZ',
            'en_PH',
            'en_SG',
            'en_TT',
            'en_US',
            'en_ZA',
            'en_ZW',
        )
    );
    foreach($languageMap as $shortCode => $shortCodeMap) {
        foreach($shortCodeMap as $longCode) {
            // Insère les traductions du framework dans le translator pour les validators et le Captcha
            $i18ntrans->addTranslationFile('phpArray', Resources::getBasePath() . '/' . $shortCode . '/Zend_Validate.php', 'default', $longCode);
            $i18ntrans->addTranslationFile('phpArray', Resources::getBasePath() . '/' . $shortCode . '/Zend_Captcha.php', 'default', $longCode);
        }
    }

Originally posted by @berturion at https://github.com/zendframework/zend-i18n/issues/6