I18nIntercepteur


L'intercepteur I18nInterceptor est un composant international fourni pour les applications Web. Voici un exemple utilisé dans le modèle freemarker :

//Configurez d'abord I18nInterceptor en tant qu'intercepteur global
public void configInterceptor(Interceptors me) { me .add( new I18nInterceptor());
}

// Ensuite, vous pouvez obtenir les données internationalisées via l'objet _res dans freemarker
${_res.get("msg")}

Le code ci-dessus est configuré I18nInterceptor intercepte la demande d'action , puis vous pouvez obtenir les données internationalisées via l'objet nommé _res dans le fichier modèle freemarker. Le flux de travail spécifique de I18nInterceptor est le suivant :


  • l tente de transmettre controller.getPara( "_locale") à récupérez le paramètre locale, s'il est obtenu, enregistrez-le dans cookie
  • Si controller.getPara("_locale") n'obtient pas la valeur du paramètre, essayez de transmettre controller .getCookie("_locale") obtient la locale paramètre
  • Si la valeur du paramètre locale n'est toujours pas obtenue dans les deux étapes ci-dessus, utilisez la valeur de I18n.defaultLocale comme valeur locale
  • Utilisez les trois étapes précédentes Obtenez la valeur locale, obtenez l'objet Res via I18n.use(locale), et transmettez l'objet Res à la page pour utilisation via controller.setAttr("_res", res)
  • Si I18nInterceptor.isSwitchView est la vraie valeur, cela modifiera également la valeur d'affichage de rendu pour réaliser la commutation du fichier de modèle global. Veuillez consulter le code source pour plus de détails.


Dans les étapes ci-dessus, les noms de variables "_locale" et "_res" dans I18nInterceptor peuvent être spécifiés lors de la création de l'objet I18nInterceptor. S'ils ne sont pas spécifiés, la valeur par défaut sera utilisée. Vous pouvez également personnaliser des fonctions plus personnalisées en héritant de I18nInterceptor et en remplaçant getLocalPara, getResName et getBaseName.

Dans certains systèmes Web, les pages nécessitent trop de texte internationalisé, et les CSS et HTML sont également très différents en raison de l'internationalisation. Pour ce scénario d'application, créez d'abord directement plusieurs ensembles de vues internationalisées portant le même nom, puis ces vues. sont stockés dans les sous-répertoires des paramètres régionaux. Enfin, l'intercepteur I18nInterceptor est utilisé pour changer dynamiquement la vue en fonction des paramètres régionaux. Au lieu d'avoir à changer le texte de la vue au niveau international un par un, il vous suffit de définir I18nInterceptor.isSwitchView sur true, ce qui est le cas. Gain de temps.