Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 代码内容结构中的多语言网站_Php_Arrays - Fatal编程技术网

Php 代码内容结构中的多语言网站

Php 代码内容结构中的多语言网站,php,arrays,Php,Arrays,试图找到制作多语言网站的最佳方法。这就是我在这一刻所做的: <?php if (isset($_GET['lang'])) { $lang = $_GET['lang']; } $content = array( 'bg' => array( 'word1' => 'Начало', 'word2' => 'Тест'

试图找到制作多语言网站的最佳方法。这就是我在这一刻所做的:

<?php
    if (isset($_GET['lang'])) {
        $lang = $_GET['lang'];
    }

    $content = array(
            'bg' => array(
                'word1' => 'Начало',
                'word2' => 'Тест'
            ),


            'en' => array(
                'word1' => 'Home',
                'word2' => 'Test'
            ),
        );
?>

然后按以下方式打印内容:

<?= $content[$lang]['word1'] ?>
<?= $content[$lang]['word2'] ?>

我是第一次这样做,所以可能我做错了什么。如何改进此结构?

此外,我正在对页面上显示的所有内容进行transalte,而不仅仅是内容,因此我认为将其放入数据库是错误的。

您目前的做法完全正确,但我建议您将翻译与代码分开,以保持文件干净

这样做,您仍然可以对翻译文件使用PHP,但您不必在每个文件中声明翻译(并且可能多次声明)

bg.php

<?php
return [
    'word1' => '...',
    'word2' => '...'
];
?>
进行此操作时,还应检查给定的语言是否有效

$valid_languages = ['bg', 'en'];
if (!in_array($lang, $valid_languages)) die('usefull message');

您目前的做法是完全正确的,但我建议您将翻译与代码分开,以保持文件干净

这样做,您仍然可以对翻译文件使用PHP,但您不必在每个文件中声明翻译(并且可能多次声明)

bg.php

<?php
return [
    'word1' => '...',
    'word2' => '...'
];
?>
进行此操作时,还应检查给定的语言是否有效

$valid_languages = ['bg', 'en'];
if (!in_array($lang, $valid_languages)) die('usefull message');

哦,这真是个好主意!谢谢。最后一个问题:单词1、单词2、单词n是最佳实践吗?因为这样的代码不是很清楚。你应该给他们一些更有意义的全名。一个想法是一个简单的键,另一个想法是原始字符串,因此如果没有给出翻译,您将得到一个简单的回退。但是这样做会有一些困难,如果你以后改变字符串的话。哦,这真是个好主意!谢谢。最后一个问题:单词1、单词2、单词n是最佳实践吗?因为这样的代码不是很清楚。你应该给他们一些更有意义的全名。一个想法是一个简单的键,另一个想法是原始字符串,因此如果没有给出翻译,您将得到一个简单的回退。但是如果以后更改字符串,这样做会带来一些困难