HTML lang标签显示语言

问题描述 投票:0回答:1

我问这纯粹是为了教育目的,在浏览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 } ?>

虽然我已经做了很多年的程序员,但是有很多这样的小事我以前根本就没有遇到过。

问候

php html lang
1个回答
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代码都更容易理解,语言文件易于维护。

© www.soinside.com 2019 - 2024. All rights reserved.