我正在为asp经典网站添加多语言功能。我试图通过使用if else语句来选择我想要加载的包含来做到这一点。经过一些研究后,我发现在处理任何代码之前会加载包含文件。
如何解决此问题并加载正确的包含文件?有没有更好的方法呢?
谢谢!
答案 0 :(得分:1)
正如您所发现的,您不能动态选择包含。在执行任何脚本之前,会静态处理包含。
下一个最好的事情是Server.Execute
。您可以使用逻辑来选择要执行的其他文件,但这是否适合您的解决方案是另一回事。您的包含目前包含哪些内容?
另一种方法是将您的“多语言”选择放在某种数据格式中,例如一组CSV文件或XML文件。然后,您的代码将加载相应的“语言文件”。
答案 1 :(得分:1)
经过无数个小时后,我想我终于找到了解决方案。我为每种语言(en.xml,fr.xml)创建了一个超简单结构的xml文件(只是一个带有id和value的标签元素)。
通过使用与我想要替换的标签具有相似名称的属性,我可以找出所有需要去的地方,并且只需拉取值。
答案 2 :(得分:0)
可以这样做 - 只需使用包含虚拟而不是文件
修改强>
我的立场得到了纠正 - 显然我很难忘记那些黑暗时代。
多年前,我参与了一个项目,我们将为每个语言版本创建一个“容器页面”,然后包含相应的常量部分。
working spinoff is still running,如果您查看page source of this site,就可以了解我们如何将网页整合在一起。 由SVN id标签识别的一些包含的脚本甚至包含更多脚本,并且保持这种慢慢变成了一场噩梦。
对不起,我对条件包含错了,应该有一个比上面提到的更好的解决方案。
答案 3 :(得分:0)
我不确定这个想法是否有帮助,但你可以在一个ASP文件中调暗语言字符串变量,然后在单独的ASP函数中设置变量。然后你的if语句可以调用正确的函数来设置ASP语言字符串变量。您不会将语言字符串分解为单独的文件,但它可能会实现您要实现的目标。
例如:
dim str1, str2
sub SetLangX
str1 = "String val 1 for lang X"
str2 = "String val 2 for lang X"
end sub
sub SetLangY
str1 = "String val 1 for lang Y"
str2 = "String val 2 for lang Y"
end sub
答案 4 :(得分:0)
4guysfromrolla有一篇非常好的文章。链接如下......
http://www.4guysfromrolla.com/ASPScripts/PrintPage.asp?REF=/webtech/022504-1.shtml