目前我在一个多语言的大型网站上遇到了一个棘手的问题。到达该网站后,它会检测您来自哪个国家/地区并提示您进行确认。确认后,它从数据库中换出页面语言并显示相关语言。这是使用 jQuery 完成的。现在的问题是阿拉伯语读取 rtl,所以我需要:
-- 换掉“rtl”版本的样式表
或
-- 更改 HTML 标签并包含一个 "dir='rtl'"属性
现在,我已经尝试了这两种方法,但都失败了。当我查看页面源代码时,它仍然显示没有“dir”属性的旧 Css 文件或 HTML 标记。如果我错了,请纠正我,但我认为这是由于 DOM 没有注册新的更改,因为它们是在 DOM 实例化后通过 jQuery 异步发生的。
在经历了那么多废话之后;
有没有更简单的方法来动态换出文本方向?如果这是 DOM 问题,如何在异步回调后重新加载 DOM?
我已经处理这个问题好几个小时了,但在 interwebz 上运气不佳。
欢迎并非常感谢任何帮助。
亲切的问候,
威廉·弗朗西斯
编辑:
经过大量调查后,我发现真正以阿拉伯语方式工作的唯一方法是使用回发。一旦选择了语言,您就可以进行回发,这只是一个从代码隐藏更改样式表 HREF 属性的简单过程。似乎没有任何形式的 JavaScript 或 jQuery 可以在没有回发的情况下更改它并且仍然反射(reflect)新的样式表。注意:您需要在每次回发时设置样式表 HREF,即通过母版页。样式表更改不会跨页面持续存在。
这是一个帮助很大的网站,它解释了很多关于使用 JavaScript 更改样式表的内容。遗憾的是,它对我不起作用。
最佳答案
可能有几件事情正在发生。当我处理类似的事情时,我发现这个页面非常有帮助,所以我强烈推荐它:
http://www.w3.org/International/tutorials/bidi-xhtml/
此外,如果您还没有这样做,请在 AJAX 运行后使用 Firebug 等工具检查生成的 DOM,以确保您看到的是 DOM 的更改状态,而不是页面的初始源。 可以动态更改目录——您可以使用 Firebug 向该页面的 HTML 标记添加一个新属性(设置 dir="rtl")以查看它的动态变化。可能是其他元素覆盖了方向,可能是 AJAX 更改未正确加载,或其他原因。如果您可以发布更多代码,那么给出更好的答案会很有帮助,但我希望这会有所帮助。
关于c# - 在 C# 中将网站动态翻译成阿拉伯语,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13496469/