PHP本地化文件
我正在为我的PHP应用程序实现语言文件。我使用常量来定义我想要翻译的每个单词。我在我的应用程序的根目录中放了一个文件夹,里面有en.php、fr.php、de.php、it.php等文件。这些翻译是为了表单元素和错误消息以各自的语言显示。可以通过单击页面顶部的标志来选择语言 我不确定的是,保存所有已定义单词的语言文件应该是单个文件还是分解成多个文件,这样我就可以加载每个页面所需的内容。我的应用程序越来越大,加载一个巨大的PHP文件似乎不是个好主意 将单个文件放在单个位置可以使加载它们变得简单,但我不确定这是否是一种方法PHP本地化文件,php,file,localization,translation,Php,File,Localization,Translation,我正在为我的PHP应用程序实现语言文件。我使用常量来定义我想要翻译的每个单词。我在我的应用程序的根目录中放了一个文件夹,里面有en.php、fr.php、de.php、it.php等文件。这些翻译是为了表单元素和错误消息以各自的语言显示。可以通过单击页面顶部的标志来选择语言 我不确定的是,保存所有已定义单词的语言文件应该是单个文件还是分解成多个文件,这样我就可以加载每个页面所需的内容。我的应用程序越来越大,加载一个巨大的PHP文件似乎不是个好主意 将单个文件放在单个位置可以使加载它们变得简单,但
谢谢大家! 我的建议是使用分而治之的方法,显然,如果您能够实现模块化,只包含页面/请求特定的语言文件,那么这将提高响应时间我也同意分而治之,根据您的需要创建文件 由于您需要文本文件,这是一个非常原始的示例,仅用于演示文本文件。然而,我认为使用静态类比使用简单常量看起来更有条理 /index.php //history.php /lang/en/txtHistory.inc ./lang/fr/txtHistory.inc
你研究过吗?是的,我对gettext很熟悉,但我想控制翻译文本,所以我回避外部服务。我不确定gettext作为外部服务是什么意思。您可以自己提供翻译文件。
<?php
session_start();
///////////////////////////////// LANGUAGE ///////////////////////////////////
if(!isset($_SESSION['langid']))/*This will run only once*/
$_SESSION['langid']="en";//persistent store
if(isset($_GET['langid']))
$_SESSION['langid']=$_GET['langid'];//persistent store
/*** define the path ***/
define ('__LANG_PATH', 'C:/wamp/www/lang/lang/'.$_SESSION['langid'].'/');
echo"
<a href=index.php?langid=en>English</a><br>
<a href=index.php?langid=fr>French</a><br><br>";
include('history.php');
?>
<?PHP
include __LANG_PATH.'txtHistory.inc';
echo txtArticle::$body_title;
echo '<br>';
echo txtArticle::$history_article
?>
<?PHP
class txtArticle
{
public static $body_title="Welcome to history page..";
public static $history_article=
"Based at RAF Medmenham, a country house on the banks of the
Thames, the Central Interpretation Unit (CIU) was established in
April 1941. .";
}
?>
<?PHP
class txtArticle
{
public static $body_title="Bienvenue à la page d'histoire..";
public static $history_article=
"Basé à la RAF Medmenham, une maison de campagne sur les
leur travail, les opérations de l'OPC et la guerre, qui incluse guider
les raids de la Dam Busters, a été largement méconnus jusqu'à présent.
";
}
?>