HTML lang标签显示语言

时间:2018-03-05 01:30:14

标签: php html lang

我纯粹是出于教育目的而要求这一点,在浏览HTML5的一些参考信息时,我遇到了lang属性,而我理解它是一种定义语言的方式,如果我要说的是多语言网站,而不是再次制作每一页我会假设它是一种基于浏览器语言隐藏各种div的方法,即

<div lang='en'>Hello</div>
<div lang='ja'>こんいちは</div>

所以我的第一个想法是,如果我的浏览器设置为英语,它应该只显示英文标签,但是在进一步阅读时,似乎lang标签似乎只告诉浏览器它是什么语言并添加了支持对于TTS,Braile和其他东西。

这是正确的,还是我只是忘记了它的一些其他潜在用途?

如果它只是一个读者或类似的东西,在单个html / php网站上交换语言的最佳方式是:

<?php if ($_GET['lang'] == "en") { ?>
    <div>Hello</div>
<?php } else if ($_GET['lang'] == "ja") { ?>
    <div>こんいちは</div>
<?php } else { ?>
    <div>Language not supported</div>
<?php } ?>

虽然我多年来一直是程序员,但我之前有很多这样的小事情,我以前根本就没有遇到过。

此致

1 个答案:

答案 0 :(得分:1)

可以使用CSS来显示或隐藏元素,具体取决于他们的lang属性。你只会浪费很多带宽。

语言标记

语言标记的目的是使您能够标记链接,引号等,以便您可以设置样式,例如,在指向日语博文中的英文文章的链接上添加英国国旗,以及使屏幕阅读器能够提供正确的发音。

翻译

如果您想根据参数提供翻译文本,则应该在HTML代码的外部进行翻译(就像任何其他处理一样)。混合只会使代码难以辨认并成为维护的噩梦。

常见的解决方案是在单独的语言文件中提供翻译数据,主要是.ini个文件。在您的情况下,它们看起来像:

languages/ja.ini

LANG="ja"
HELLO="こんいちは"

languages/en.ini

LANG="en"
HELLO="Hello"

现在,您可以在HTML文件中使用这些文件。

index.php

<?php
$language    = $_GET['lang'] ?: 'en';
$translation = "languages/{$language}.ini";

if (!is_readable($translation)) {
    throw new \RuntimeException("Language file {$translation} not found");
}

$_ = parse_ini_file($translation);
?>

<div lang="<?= $_['LANG']; ?>"><?= $_['HELLO']; ?></div>

您的PHP和HTML代码都更容易理解,语言文件也易于维护。