【问题标题】:HTML lang Tag display languageHTML lang 标签显示语言
【发布时间】:2018-08-12 15:02:08
【问题描述】:

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

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

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

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

如果它只是一个阅读器或类似的东西,在单个 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 中做那些肮脏的事情。类似&lt;div&gt;&lt;?= translate($message, $_GET['lang']) ?&gt;&lt;/div&gt; 或更好的&lt;div&gt;&lt;?= translate($message) ?&gt;&lt;/div&gt;$_GET['lang'] 将在translate 函数内。

标签: php html lang


【解决方案1】:

可以根据元素的lang 属性使用CSS 来显示或隐藏元素。你只会浪费很多带宽。

语言标签

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

翻译

如果您想根据参数提供翻译文本,您应该在 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 代码都更易于理解,语言文件易于维护。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-05-28
    • 1970-01-01
    • 1970-01-01
    • 2019-02-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-31
    • 2020-04-19
    相关资源
    最近更新 更多