Maison  >  Article  >  cadre php  >  Comment implémenter la prise en charge multilingue basée sur les autorisations dans Laravel

Comment implémenter la prise en charge multilingue basée sur les autorisations dans Laravel

PHPz
PHPzoriginal
2023-11-02 08:22:02938parcourir

Comment implémenter la prise en charge multilingue basée sur les autorisations dans Laravel

Comment implémenter la prise en charge multilingue basée sur les autorisations dans Laravel

Introduction :
Dans les sites Web et les applications modernes, la prise en charge multilingue est une exigence très courante. Pour certains systèmes complexes, nous pouvons également avoir besoin d'afficher dynamiquement différentes traductions linguistiques en fonction des autorisations de l'utilisateur. Laravel est un framework PHP très populaire qui fournit de nombreuses fonctionnalités puissantes pour simplifier le processus de développement. Cet article présentera comment implémenter la prise en charge multilingue basée sur les autorisations dans Laravel et fournira des exemples de code spécifiques.

Étape 1 : Configurer le support multilingue

Tout d'abord, nous devons configurer le support multilingue dans Laravel. Ouvrez le fichier config/app.php, recherchez le champ « locale » et définissez-le sur la langue par défaut. Ce langage deviendra le langage de base de nos applications.

Ensuite, recherchez le champ « locales » dans le fichier config/app.php et définissez-le sur la liste des langues prises en charge. Par exemple, nous pouvons le définir sur anglais et français :

'locales' => [

'en',
'fr'

],

Ensuite, nous devons créer les fichiers de langue correspondants dans le répertoire resources/lang. Laravel chargera automatiquement le fichier de langue correspondant en fonction des paramètres régionaux actuels.

Étape 2 : Créer une table de contrôle des autorisations

Afin d'implémenter l'affichage du langage basé sur les autorisations, nous devons créer une table de contrôle des autorisations. On peut créer une table nommée permissions dans la base de données pour stocker les identifiants de langue correspondant aux différentes permissions.

Tout d'abord, utilisez l'outil de migration de Laravel pour générer un fichier de migration et exécutez la commande suivante :

php artisan make:migration create_permissions_table --create=permissions

Ensuite, ouvrez le fichier de migration généré et modifiez le code avec le contenu suivant :

utilisez IlluminateDatabaseMigrationsMigration;
utilisez IlluminateDatabaseSchemaBlueprint;
utilisez IlluminateSupportFacadesSchema;

class CreatePermissionsTable extends Migration
{

/**
 * Run the migrations.
 *
 * @return void
 */
public function up()
{
    Schema::create('permissions', function (Blueprint $table) {
        $table->id();
        $table->string('name');
        $table->string('key');
        $table->timestamps();
    });
}

/**
 * Reverse the migrations.
 *
 * @return void
 */
public function down()
{
    Schema::dropIfExists('permissions');
}

}

Exécutez la commande de migration pour créer la structure de la table :

php artisan migrate

Étape 3 : Configurer les autorisations Traduction

us Le contenu de traduction lié à l'autorisation doit être ajouté au fichier de langue. Ouvrez le fichier de langue correspondant dans le répertoire resources/lang et créez un fichier nommé permissions.php.

Ensuite, ajoutez le code suivant au fichier permissions.php :

return [

'admin' => 'Admin',
'user' => 'User',
'guest' => 'Guest',

];

Les 'admin', 'user' et 'guest' correspondent ici à des autorisations différentes. L'identification de la langue peut être ajustée en fonction des besoins réels.

Étape 4 : Fonction de traduction de langue d'autorisation d'écriture

Ensuite, nous devons écrire une fonction dans l'application pour obtenir la traduction de langue correspondante en fonction des autorisations de l'utilisateur.

Ouvrez le répertoire app/Helpers Si le répertoire n'existe pas, vous pouvez en créer un vous-même.

Create un fichier nommé LanguageHelper.php dans le répertoire des aides et ajoutez le code suivant:

& lt ;? Php

Namespace Apphelpers;

Use illuminateSupportFacadesAuth;

Class LanguageHelper
{

public static function getPermissionTranslation($key)
{
    $permissions = [
        'admin' => __('permissions.admin'),
        'user' => __('permissions.user'),
        'guest' => __('permissions.guest'),
    ];

    $user = Auth::user();
    $role = $user->role->key;

    if (array_key_exists($role, $permissions)) {
        return $permissions[$role];
    }

    return '';
}

} La fonction getPermissionTranslation est utilisée pour obtenir la traduction linguistique des autorisations correspondantes en fonction du rôle de l'utilisateur.

Étape 5 : Utiliser la traduction du langage d'autorisation dans la vue

Enfin, nous pouvons utiliser la traduction du langage d'autorisation dans la vue. Ouvrez le fichier de vue et ajoutez le code suivant :

{{ AppHelpersLanguageHelper::getPermissionTranslation(Auth::user()->role->key) }}

Auth:: ici user()->role->key est la clé pour obtenir le rôle d'utilisateur actuel et obtenir la traduction d'autorisation correspondante via LanguageHelper.

Conclusion :

Grâce aux étapes ci-dessus, nous avons mis en œuvre avec succès la prise en charge multilingue basée sur les autorisations. Lorsque les autorisations d'un utilisateur changent, les traductions linguistiques sur la page sont actualisées en conséquence. Laravel fournit de nombreuses fonctions et outils puissants pour nous aider à répondre plus facilement à divers besoins. J'espère que cet article vous sera utile pour implémenter une prise en charge multilingue basée sur les autorisations dans Laravel, et j'espère que vous pourrez écrire de meilleures applications.

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