我需要一点帮助!我正在用php创建多语言站点,但出现了问题。我想将数组包含在另一个数组中。
有一个php文件
<?php
$lang = array(
'en' => array(
include ('translations/nav-translation/en.php');
),
'lv' => array(
include ('translations/nav-translation/lv.php');
),
);
?>
我要包含的php文件
<?php
"home" => "Home",
"blog" => "Blog",
"about" => "About me",
?>
答案 0 :(得分:1)
如果您不想使用yaml,最好从lang文件中返回数组
en.php:
<?php
return ["home" => "Home",....]
?>
index.php:
<?php
$lang = array(
'en' => include("translations/nav-translation/en.php"),
'lv' => ....
答案 1 :(得分:0)
要创建一个多语言的PHP网站,建议使用一种功能,该功能检查用户指定的语言,然后从数据库中加载文本或使用JSON。
使用JSON
创建一个扩展名为.txt的文件,以JSON格式创建翻译并通过PHP读取,以使用PHP读取文件:
$json = json_decode(file_get_contents($file),TRUE);
然后您可以使用JSON数据在PHP中设置变量以显示正确的语言。
使用数据库
具有这样的数据库设置:
---------------------------
Lang | Short | Text
---------------------------
在数据库中,根据需要设置尽可能多的语言,在lang列中使用语言名称的两个字母缩写,短名称应为文本名称,因此,如果它是首页标题,名称简短的home-title
,然后该文本应该是您希望以所需语言显示的文本。
使用数据库可让您通过数据库添加/编辑语言和翻译。
答案 2 :(得分:0)
您不能像这样设置包含文件吗?
translations / nav-translation / en.php
<Context antiResourceLocking="false" privileged="true" >
<!--
Remove the comment markers from around the Valve below to limit access to
the manager application to clients connecting from localhost
-->
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="149\.4\.223\.238|127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
</Context>
然后:
<?php
$lang['en'] = array(
"home" => "Home",
"blog" => "Blog",
"about" => "About me"
);
?>
似乎没有其他建议那么复杂。
答案 3 :(得分:0)
$path = 'translations/nav-translation';
$user_lang = 'nl'; // determine what the user actually wants
$fallback_lang = 'en';
if (file_exists("{$path}/{$user_lang}.php")) {
include ("{$path}/{$user_lang}.php");
} else {
include ("{$path}/{$fallback_lang}.php"); // nominate a default
}
在语言文件(例如translations/nav-translation/en.php
)中,提供完整的关联数组:
$lang = [
"home" => "Home",
"blog" => "Blog",
"about" => "About me"
];
然后,在条件包含调用之后返回到原始文件,您可以引用$lang['home']
或 [cringe] 使用extract()
*生成类似{{1}的变量}。
*请注意,我从未在我的任何项目中使用过$home
,使用它存在风险-我只是说你可以。