我正在开发一个国际化/本地化Web应用程序的项目。我正在研究CSS构造可以插入或生成文本内容。
我知道::before and ::after pseudo-elements并且基于MDN content CSS property文档,我认为这就是全部。我应该注意其他结构吗?
element:after { style properties } /* CSS2 syntax */
element::after { style properties } /* CSS3 syntax */
另外,我知道我有一些图像(和图像精灵),其中包含background-url
构造中使用的英文单词。
编辑:我原来的问题并不清楚,但我在整个应用程序中重构了硬编码的语言字符串,并试图找到CSS可能存在的位置。我对服务器和客户端生成的视图充满信心,对文本内容的图像不太感兴趣,并且不清楚CSS构造可能包含英文可显示文本。
答案 0 :(得分:2)
你在问题中提到的是,如果我们不计算CSS3 Generated and Replaced Content Module,那么CSS必须生成文本内容,这是2003年的工作草案。草案使content
属性适用于普通元素也是如此,这样你就可以替换元素内容,而不仅仅是添加内容(所以你可以拥有.greeting:lang(en) { content: "Hello world!" } .greeting:lang(es) { content: "¡Hola, mundo!" }
)。但这只在Opera中实现。
使用CSS进行本地化的一种更现实的方法是将所有语言变体放在HTML文档中作为具有lang
属性的不同元素,并在CSS中进行选择,例如。
<style>
[lang=es] [lang=en],
[lang=en] [lang=es]
{ display: none; }
</style>
<body lang=en>
<p lang=en>Hello world!</p>
<p lang=es>¡Hola, mundo!</p>
然后,您只需更改lang
元素上body
属性的值即可更改可见文字的语言。
这种方法存在一些重要缺陷,因此我基本上将此描述为显示 CSS不是本地化的答案。这是您可以获得的最佳方式,并且它并不好。对于网页,您不希望为搜索引擎提供包含内容中混合语言的页面。对于应用程序,JavaScript是一个更好的工具。
另一方面,本地化为样式提供了一些特定的challenges,例如文本耗尽,因为某些翻译比视觉设计师预期的长两倍。