La langue de remplacement est ce que vous devriez utiliser. Voir la docs
Vous pouvez également configurer un « langage de secours », qui sera utilisé lorsque la langue active ne contient pas une ligne de langue donnée. Comme la langue par défaut , la langue de repli est également configuré dans le fichier de configuration app/config/app.php
:
'fallback_locale' => 'en',
Il va sûrement vous prendre autant de temps à écrire dans une solution de repli en ligne comme il écrit simplement le repli dans un fichier de traduction parallèle lorsque vous écrivez dans la clé de traduction. Le temps passé à penser d'une manière alternative par rapport à simplement le faire va être négligeable à la fin.
Si vous voulez vraiment un retour en ligne, alors vous devez créer une nouvelle méthode d'assistance qui fait quelque chose de différent. Préparez-vous donc pour une certaine maison brassée awesomeness. Créons une nouvelle fonction que nous pouvons utiliser dans n'importe quelle vue.
Je vais utiliser la méthode décrite par Joseph Sibler. Créez un fichier appelé helpers.php
à l'intérieur de app
. Puis ajoutez ceci à votre composer.json
dans l'objet autoload
sous un tableau files
en tant que "app/helpers.php"
. Vous ne savez pas ce que je veux dire? Voir sa réponse. Après l'ajout, exécutez composer dump-autoload
.
Maintenant, ajoutons une méthode trans_fb()
qui prendra tous les paramètres de la méthode trans()
, mais avec un repli aussi. Je vais définir cette méthode de manière à ce que les deux premiers arguments soient obligatoires (la clé et le repli).Si Laravel ne trouve pas la clé de traduction (il recherche resources/lang/en/auth.php
par exemple auth.failed
en tant que clé), il utilisera fallback à la place, et passera tout autre argument optionnel pour la méthode originale.
<?php
if (! function_exists('trans_fb')) {
/**
* Translate the given message with a fallback string if none exists.
*
* @param string $id
* @param string $fallback
* @param array $parameters
* @param string $domain
* @param string $locale
* @return \Symfony\Component\Translation\TranslatorInterface|string
*/
function trans_fb($id, $fallback, $parameters = [], $domain = 'messages', $locale = null)
{
return ($id === ($translation = trans($id, $parameters, $domain, $locale))) ? $fallback : $translation;
}
}
Vous pouvez alors l'utiliser dans un modèle comme ceci:
{{ trans_fb("i.love.laravel", "I love Laravel!") }}
J'avais déjà prêt sur la langue de repli mais ne pas l'air viable dans ma situation. Je vais essayer d'utiliser une autre fonction d'assistance comme suggéré. Merci. –
Si ce n'était pas viable alors cela devrait être tout ce dont vous avez besoin :) Bonne chance. – Jonathan
Génial. Utiliser la fonction d'aide fait la magie. Merci. –