Maison  >  Article  >  développement back-end  >  Comment PHP utilise-t-il le composant Symfony Translation pour le support multilingue ?

Comment PHP utilise-t-il le composant Symfony Translation pour le support multilingue ?

WBOY
WBOYoriginal
2024-03-27 08:12:04584parcourir

php如何使用Symfony Translation组件进行多语言支持?

Le composant Symfony Translation est un outil puissant qui peut être utilisé pour simplifier le développement de sites multilingues. Dans cet article, nous présenterons comment utiliser les composants PHP et Symfony Translation pour implémenter un site Web multilingue.

Qu'est-ce que le composant Symfony Translation ?

Le composant Symfony Translation fait partie du framework Symfony et est utilisé pour simplifier le développement de sites multilingues. Il offre un moyen simple et flexible de localiser et de traduire des ressources. Vous pouvez l'utiliser dans des projets personnels ou professionnels.

Comment utiliser le composant Symfony Translation pour obtenir un support multilingue ?

Pour utiliser le composant Symfony Translation, vous devez créer un fichier de traduction. Il s'agit généralement d'un fichier YAML qui répertorie les fichiers à traduire et les traductions correspondantes. Disons que vous créez un site en anglais et en chinois et que vous souhaitez traduire tous les champs de texte dans les deux langues. Vous pouvez créer le fichier comme suit.

Première étape : créer des fichiers de traduction

1. Créez le répertoire src/translations pour stocker les fichiers.

2. Créez deux fichiers : messages.en.yaml (anglais) et messages.zh.yaml (chinois).

3. Ajoutez des traductions dans chaque fichier comme suit :

messages.en.yaml :

welcome: Welcome to our website!
about: About us
contact: Contact us

messages.zh.yaml :

welcome: 欢迎来到我们的网站!
about: 关于我们
contact: 联系我们

Étape 2 : Utilisez le composant de traduction dans le projet Symfony

Pour utiliser le Composant Symfony Translation, vous devez l'ajouter dans votre projet Symfony. En supposant que vous avez créé un projet Symfony et installé le composant Symfony Translation, vous devez l'appeler dans un contrôleur ou un modèle pour implémenter le support multilingue. Ici, je vais montrer comment l'implémenter dans un contrôleur.

1. Ajoutez l'espace de noms nécessaire

use SymfonyComponentTranslationTranslatorInterface;
use SymfonyComponentHttpFoundationResponse;

2. Créez le contrôleur

public function index(TranslatorInterface $translator)
{
    $welcome = $translator->trans('welcome');
    $about = $translator->trans('about');
    $contact = $translator->trans('contact');

    return new Response(
        '<html><body>'.$welcome.' '.$about.' '.$contact.'</body></html>'
    );
}

3. Appelez le composant Symfony Translation dans le contrôleur

Dans cet exemple, nous utilisons le mécanisme d'injection de service automatique de Symfony. Vous pouvez commenter soit ajouter des services dépendants. ou utilisez l'injection de constructeur. Dans la méthode contrôleur, nous instancions le traducteur et utilisons la méthode trans pour obtenir la traduction correspondante. Dans cet exemple, nous appelons la méthode trans pour obtenir le contenu traduit du texte de bienvenue, à propos et de contact à partir des fichiers messages.en.yaml ou messages.zh.yaml.

4. Liez le contrôleur dans la route

index:
    path: /{_locale}
    controller: AppControllerDefaultController::index
    requirements:
        _locale: '%app_locales%'

Dans la route ci-dessus, nous utilisons {_locale} pour représenter le paramètre de langue du site Web. C'est un paramètre qui identifie la langue parlée par l'utilisateur. Par exemple, si l'utilisateur parle anglais, vous pouvez passer « en » à la variable _locale afin que le traducteur puisse rechercher la traduction dans le fichier messages.en.yaml.

Enfin, ajoutez la configuration dans le fichier config/packages/translations.yaml pour spécifier les langues prises en charge.

# config/packages/translations.yaml
framework:
    default_locale: '%locale%'  # 站点默认语言
    translator:
        default_path: '%kernel.project_dir%/translations'
        fallbacks:
          - '%locale%'
        paths:
          - '%kernel.project_dir%/tests/translations'
          - '%kernel.project_dir%/vendor/symfony/form/Resources/translations'
          - '%kernel.project_dir%/vendor/symfony/security-bundle/Resources/translations'
          - '%kernel.project_dir%/src/MyBundle/Resources/translations'
        loaders:
          xlf: 'SymfonyComponentTranslationLoaderXliffFileLoader'
          yaml: 'SymfonyComponentTranslationLoaderYamlFileLoader'

Il s'agit du processus d'utilisation du composant Symfony Translation pour obtenir une prise en charge multilingue. Vous pouvez suivre les étapes ci-dessus pour créer le site multilingue de votre choix. Cette approche est multiplateforme et prend en charge toutes les principales langues et régions.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn