Actualmente, tengo la siguiente ruta en mi aplicación web.
Route::get(__('routes.account.dogs'), [DogController::class, 'index'])->name('dog.index')->middleware('auth');Especifico la traducción de URL para la ruta en dos archivos de idioma diferentes.
return [ //Account 'account' => [ 'dogs' => 'honden', ] ]; Cuando envío un correo electrónico en cola con este enlace, quiero traducir el enlace en la configuración regional del usuario (guardado en la base de datos). Así que quiero obtener esta ruta en función de la configuración regional del usuario, pero app()->setLocale($user->locale); no se puede usar porque es un trabajo en cola. ¿Cómo puedo arreglar esto?
En un mundo perfecto sería algo como:
route('dog.index', [], $user->locale);La función auxiliar de laravel __() también acepta el tercer argumento opcional $locale para configurar la configuración regional para traducir.
Entonces podría usar $user->locale en el ayudante de la siguiente manera.
url(__('account.dogs', [], $user->locale));Como sugirió @Vincent Decaux , necesita una biblioteca para hacer su vida más fácil. Podrías usar el que usan ellos o el que uso arcanedev/localization .
Una vez que configure un middleware, todo se solucionará. Pero me preocupa tu comentario:
¡Sí, de hecho! pero entonces todavía necesito hacer algo con el dominio. Por ejemplo .de o .com
¿Por qué no usar el dominio actual (.com?) y simplemente agregar un directorio /en o cualquier configuración regional que necesite en su lugar? Me parece inconveniente cambiar todo el dominio.
Cuando usa Mail::to(), puede usar locale() para elegir la traducción
Mail::to($user->email) ->locale($user->locale) ->queue(new YourEmail());