Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/237.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.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_File_Localization_Translation - Fatal编程技术网

PHP本地化文件

PHP本地化文件,php,file,localization,translation,Php,File,Localization,Translation,我正在为我的PHP应用程序实现语言文件。我使用常量来定义我想要翻译的每个单词。我在我的应用程序的根目录中放了一个文件夹,里面有en.php、fr.php、de.php、it.php等文件。这些翻译是为了表单元素和错误消息以各自的语言显示。可以通过单击页面顶部的标志来选择语言 我不确定的是,保存所有已定义单词的语言文件应该是单个文件还是分解成多个文件,这样我就可以加载每个页面所需的内容。我的应用程序越来越大,加载一个巨大的PHP文件似乎不是个好主意 将单个文件放在单个位置可以使加载它们变得简单,但

我正在为我的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.
";  
} 
?>