HTML中的多语言PHP内联替换([en]..[/en]等)

  • 本文关键字:en 替换 语言 PHP HTML php html
  • 更新时间 :
  • 英文 :


我是一个编码初学者,我的PHP/HTML web项目是德语的。现在我想以最简单的方式提供英文版。我不想在未来添加其他语言,所以我想以最简单的方式(也许不是最合适的(尝试它。

我有一些PHP文件,其中包含HTML内容和var中可用的选定语言,即:

<?php
$lang = "en";
?> 
<h1>Title in German</h1>

所以所有的德语单词都是内联HTML。我的想法是创建这样的东西:

<h1>[de]Title in German[/de][en]Title in English[/en]</h1>

但我不知道如何以智能的方式在每个负载上更换它。因此,它更多地是一个关于";"带电替换";。

使用外部语言文件中的常量当然也是一种选择,就像我在Stackoverflow上找到的所有其他选项一样,可以创建一个多语言网站。

但也许有一个";快速而肮脏";像我提到的那个可能性选项?

谢谢你的每一个提示!

您可以尝试这样做,几乎只会使用HTML和CSS。您需要在页面顶部添加以下内容:

<?php
$pageLanguage = "en";
function getLanguageStyle($showLanguage)
{ 
global $pageLanguage;
$display = ($showLanguage == $pageLanguage ? 'inline' : 'none');
return "  span.$showLanguage { display: $display }n";         
}
echo "<style>n".
getLanguageStyle('en').
getLanguageStyle('de').
"</style>n";
?> 

它为每种语言设置了一种风格,然后你可以这样使用:

<h1><span class="de">Title in German</span><span class="en">Title in English</span></h1>

这里的优点是不需要混合HTML和PHP。这不是一种正常的方式,但它会起作用。在非常复杂的页面上,在第一次渲染后应用这些样式,这可能会让访问者感到不愉快。

通常翻译是这样进行的:

您有每个语言的翻译映射的密钥,然后您请求一些函数,该函数为该语言获取正确的映射并返回翻译:

function translate(string $lang, string $key) {
/*
* This usually sits in some file in dir like `/src/i18n/en.json`
* And you do then `$translations = json_decode(require "/src/i18n/{$lang}.json")`
*/
$translations = [
'en' => [
'page.title' => 'Page Title',
...
],
'de' => [
'page.title' => 'Page Title In German',
...
],
];
return $translations[$lang][$key] ?? $key;
}
<h1><?= translate($lang, 'page.title'); ?></h1>

最新更新