Joh*_*son 4 html css localization internationalization
CSS规则text-transform的效果是什么:如果HTML标记中包含的文本为意大利语,西班牙语,葡萄牙语,法语等,则大写(这些语言AFAIK不使用大写)每个单词的第一个字母,因为它专用于英语,而不是特定于这些语言环境。我想到的是您有一个多语言站点,可以在其中选择要从数据库中提取内容的语言,并从右上角的下拉菜单中将其显示在页面上。在这种情况下,由于CSS可能与语言相同且无关紧要,因此,例如,当开始标记为
<html lang =“ fr”>,<html lang =“ pt”>,<html lang =“ es”>,<html lang =“ it”>等。
代替
<html lang =“ zh-CN”>
?
恕我直言,这应该关闭“文本转换:大写”的行为,如果我错了,请纠正我,或者如果应该以其他方式实现,也许只能通过用每个CSS覆盖另一个CSS文件来覆盖基本CSS文件支持的语言。
感谢您对有关CSS的I18N问题的答复。
根据CSS 2.1的定义,text-transform: capitalize“将每个单词的首字母大写;其他字符不受影响”。
没有对“单词”的严格定义,这是模糊的,但是对于“大写”,唯一可行的解释是,它是Unicode标准对字符的大写映射。
该规范补充说:“每种情况下的实际转换都取决于书面语言。”合理的解释是,这指的是某些与语言有关的案例映射异常。例如,在土耳其语中,“ i”映射到“?”(上面有点的大写字母I),而不是通用的“ I”。
对于以拉丁字母书写的文本,“单词”通常是字母字符的最大序列,尽管可以断定诸如“免税”之类的连字单词是两个单词还是一个单词。无论如何,原则是每个单词都大写。这使得该设置变得毫无用处,因为几乎所有语言都没有这样的规则。用英语,当作品的标题大写时,冠词和介词例外。但是CSS属性不知道此类规则。
该定义的CSS文本模块级别3(一个最后呼叫工作草案)是较为明确的:用于‘利用’字‘“的定义’是UA-依赖; 建议(但不是必需)[UAX29]来确定此类单词边界。作者不应期望“大写”遵循特定于语言的标题惯例(例如跳过英语文章)。”
这也意味着,我们无意遵守与特定语言有关的规则,即有关作品标题和可比表达方式一般应大写的问题。大多数语言没有这样的原则。
如果指定text-transform: capitalize,则无论语言是什么,无论上下文是什么,无论什么词,都要求所有单词都大写。如果您认为这样会使设置变得毫无用处,那么您就得出了正确的结论。
适当的本地化在需要时将实际情况下的单词大写。
我同意你的看法,许多 CSS 指令的行为应该取决于lang属性的值。然而,问题是它没有。
因此,使用任何文本转换指令都会向页面引入 I18n 错误。有(至少)原因:
在前面的案例中,人们通常会给出这三个例子:
有更多具体案例转换的例子(尤其是希腊语),我只是想指出您确实需要语言信息才能正确转换案例。
在后一种情况下(附加含义),我只想指出,在德语中名词应该以大写字母开头,但其他单词不应该。如果您只是将句子中的所有单词大写(“标题大小写”),它实际上可能会改变句子的含义。
这个故事的寓意很简单:不要使用 text-transform 指令。交给翻译人员,他们会知道使用什么大小写。
哦,顺便说一句,根据上下文,相同的词可能会以不同的方式翻译,因此重新使用翻译并“纠正”案例确实是个坏主意。
| 归档时间: |
|
| 查看次数: |
2549 次 |
| 最近记录: |