在网页中使用两种嵌入式CSS语言样式,以适应不同的文本语言类型。

5
我正在使用HTML、CSS、PHP和JS制作一个多语言网站,根据用户输入,文本可能是英语或法语,因为我从数据库中获取数据。
CSS是否有一种自动检查文本语言的方法,以便应用嵌入的英文字体,如果是法语,则应用嵌入的法文字体。
如果我之前知道语言,我会将一些CSS类应用于文本HTML元素,例如

。但是我不知道语言,因为文本来自数据库。

你是怎么学会这门语言的?我猜是用 PHP 学的吧? - Youness
1
不,CSS 没有自动识别文本语言的方法。为什么你不能使用一个特定的 CSS 类呢?它只需要包装所有用户生成的内容即可。 - Reiner Gerecke
我同意@ReinerGerecke的看法,但如果你现在能用php知道语言(一个包含值“en,fr,ar ...”的get变量),那么我可能有一个解决方案。 - Youness
这种编程语言叫做“法语”,而不是“法国语”。 :-) (或者可以说,这种语言叫做Français。) - T.J. Crowder
抱歉英语不好,但我不知道语言。但我知道应该是英语或法语,如果我之前知道语言,我会将一些CSS类应用于文本HTML元素,例如<p class="en"></p>或<p class="fr"></p>。 - Hadi.M
2个回答

8

浏览器不会根据文本检测语言,但是如果您使用正确的标记指定语言:

<html lang="fr">

然后您可以使用语言伪类

html:lang(fr) {
    /* your rules */
}

那个有多好的支持呢?相对于使用 html[lang=fr] 或者使用类(class)的方式? - T.J. Crowder
:lang(X) 是 CSS Level 2 Revision 1 规范的推荐内容,最初作为 CSS Level 2 规范的一部分推荐。 - misterManSam
@T.J.Crowder — 很遗憾,我找不到任何相关的统计数据,而且它似乎也没有列在 caniuse 上。 - Quentin
@misterManSam — 哦,我不知道它在2.1版中。太好了。 - Quentin
1
人们也会对IE实现感兴趣 - 这个伪类要求Windows Internet Explorer处于IE8标准模式或更高模式下 - misterManSam
1
@T.J. Crowder:请注意,属性选择器只有在元素上显式设置了属性才能起作用。我写了一个回答来解释它们之间的区别: https://dev59.com/Amox5IYBdhLWcg3w3YL-#8916417 - BoltClock

4

在CSS中没有原生的方法来实现这个,但是你的服务器可能知道它是用英语还是法语响应的。因此,您可以像Modernizr一样向<html>标签添加一个类:

 <html class='french'>

然后你可以有基于此的CSS规则:
 .french body { font-family: YourFrenchFont, sans-serif; }

编辑 — Quentin的答案类似,但更好,因为它使用了专门为此目的设计的标准符号。然而,对于那些不得不关心旧版本IE的人来说,这也可以起作用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接