Desidero che l'applicazione Grails supporti solo una lingua, che posso definire da qualche parte, ignorando completamente le intestazioni del client o il parametro "lang". C'è un modo per farlo? Grazie.Come posso forzare Grails ad usare solo una lingua?
risposta
Definire un bean LocaleResolver
nel proprio config/spring/resources.groovy
per impostare le impostazioni locali predefinite.
beans = {
localeResolver(org.springframework.web.servlet.i18n.SessionLocaleResolver) {
defaultLocale = new Locale("de","DE")
java.util.Locale.setDefault(defaultLocale)
}
}
Ciò è utile se non si ha a che fare con il parametro lang
- altrimenti sarebbe ottenere sovrascritto. Per ignorare anche il valore del parametro lang
è possibile impostare il locale in un Filter
su ogni richiesta:
import org.springframework.web.servlet.support.RequestContextUtils as RCU
...
def filters = {
all(controller:'*', action:'*') {
before = {
def locale = new Locale("sv","SV")
RCU.getLocaleResolver(request).setLocale(request, response, locale)
}
}
}
Questo approccio sembra un po 'ripetitivo come Locale è re-impostato su ogni richiesta. Sarebbe più elegante disabilitare il rilevamento delle impostazioni internazionali dei browser tramite un'opzione di configurazione.
rimuovere tutti i file messages_xx.properties
e conservare solo i file messages.properties
. Questo è il pacchetto di messaggi predefinito a cui il sistema ricade sempre se non riesce a trovare il pacchetto di messaggi corretto.
In questo modo è ancora possibile utilizzare i messaggi (e quindi mantenere l'opzione per nazionalizzare la propria app) ma gli utenti avranno sempre la stessa lingua.
L'impostazione predefinita LocaleResolver
di Grails è SessionLocaleResolver
. Se vuoi sempre usare de_DE puoi cambiarlo in FixedLocaleResolver
.
beans {
localeResolver(FixedLocaleResolver) {
locale = new Locale("de", "DE")
}
}
Se si desidera limitare a una serie di locali, allora si avrà bisogno di un filtro, e utilizzare il metodo SessionLocaleResolver#setLocale(HttpServletRequest request, HttpServletResponse response, Locale locale)
.
Ho problemi con la soluzione "Locale" della proprietà Bean non è scrivibile o ha un metodo setter non valido. " ... "proprietà locale" non valida della classe bean [org.springframework.web.servlet.i18n.FixedLocaleResolver] " – Rafael
Questo sembra funzionare -> localResolver (FixedLocaleResolver, Locale.US) – Rafael
- 1. Forzare https in Grails
- 2. Come forzare Visual Studio ad usare l'architettura x64 DNX SDK
- 3. Come forzare eclissi per utilizzare una lingua di interfaccia specificata?
- 4. Come posso usare htaccess per forzare www. su più domini
- 5. Come posso forzare Rails ad usare la versione di Ruby (gestita con rbenv) che voglio?
- 6. Come posso forzare Vaadin ad aggiornare lo schermo?
- 7. Come forzare grails per scaricare file csv?
- 8. Come posso forzare Tor a usare una nuova identità senza usare Vidalia?
- 9. come posso forzare cdn.rawgit.com usare il file aggiornato
- 10. Forzare NSLocalizedString per utilizzare una lingua specifica utilizzando Swift
- 11. come usare la sessione in grails
- 12. Come forzare QGLWidget ad aggiornare lo schermo?
- 13. Come posso usare una lingua .net diversa (F #) per asp.net vnext
- 14. Come tradurre da una lingua ad un'altra in Android
- 15. Carica solo una lingua con require.js i18n
- 16. Come posso limitare i parametri QuickCheck, ad es. usare solo valori non negativi?
- 17. Come forzare npm per usare jquery 2.1.1
- 18. Come posso forzare window.location a fare una richiesta HTTP invece di usare la cache?
- 19. Come forzare Sonatype Nexus ad aggiornare?
- 20. come forzare il linker ad usare la libreria condivisa invece della libreria statica?
- 21. Come posso forzare tutte le classi derivate ad implementare un metodo o una proprietà astratta?
- 22. Come forzare OpenMPI ad usare GCC invece di ICC? È necessario ricompilare OpenMPI?
- 23. Come forzare solo l'istanza di puntatori intelligenti per una classe?
- 24. Come forzare la mia applicazione ad aprire un solo exe? qt, linux
- 25. Come usare Gradle dietro un firewall senza impostare una password, solo un utente?
- 26. Posso forzare gVim ad aprire i file trascinati in una nuova scheda?
- 27. Come aggiungere un ulteriore input di lingua ad Android?
- 28. come forzare https
- 29. Come posso collegarmi ad una specifica versione di glibc?
- 30. Posso forzare una funzione membro predefinita predefinita come non valida?
Questa non è una risposta alla domanda di cui sopra. ArmlessJohn richiede specificamente la possibilità di * scavalcare * l'impostazione della lingua dall'utente. Questo imposta solo il valore predefinito. Si prega di leggere la risposta che hai collegato di nuovo. – OverZealous
Grazie per l'avviso - Ho aggiornato la mia risposta di conseguenza. – david
ATTENZIONE! java.util.Locale.setDefault (defaultLocale) cambierà le impostazioni locali predefinite per l'intera JVM, il che potrebbe essere molto brutto, poiché un sacco di codice pensa che "i" .toUpperCase(). equals ("I") in tutte le versioni locali . Non ... Un sacco di utilities intelligenti fanno supposizioni del genere. – JesperSM