作者:手丷机用户2515108295 | 来源:互联网 | 2024-10-28 10:50
在进行前端JavaScript国际化(i18n)的过程中,为了从cookie中获取语言信息并动态加载相应资源,我决定将语言检测逻辑和i18n初始化代码直接嵌入到index页面中,使用了Velocity模板引擎的语法。这种方法不仅简化了代码结构,还提高了语言切换的灵活性和响应速度。
昨天在做前端js的国际化的时候,因为遇到了需要从COOKIE中获取语言信息再进行资源加载的情况,索性就直接将判断的条件以及i18n的初始化写到了index页面中,这里是velocity的语法。
<script src="$link.contextPath/assets/Javascripts/jquery/jquery.min.js?v=$appUitl.revision">script>
<script src="$link.contextPath/assets/Javascripts/jquery-i18n-properties/jquery.i18n.properties.js?v=$appUitl.revision">script>
#foreach($gc in $request.getCOOKIEs())
#if($gc.value=='zh_CN')
<script src="$link.contextPath/assets/Javascripts/jquery-validation-engine/js/jquery.validationEngine-zh_CN.js?v=$appUitl.revision">script>
<script>
$.i18n.properties({
name : 'messages',
path : '$link.contextPath/i18n/',
mode : 'map',
language : 'zh_CN',
});
script>
#elseif($gc.value=='en_US')
<script src="$link.contextPath/assets/Javascripts/jquery-validation-engine/js/jquery.validationEngine-en_US.js?v=$appUitl.revision">script>
<script>
$.i18n.properties({
name : 'messages',
path : '$link.contextPath/i18n/',
mode : 'map',
language : 'en_US',
});
script>
#end
#end
其中加载的资源文件为
这样就成功了,再在js中通过prop方法调用配置文件中的key值就行了
var message = $.i18n.prop('index.modal.message')
配置文件中
- messages_en_US.properties
index.modal.message=Choose
- messages_zh_CN.properties
index.modal.message=请选择项目
大功告成