2011-10-18 61 views
0

我正在为我的PHP应用程序实现语言文件。我使用常量来定义每个我想要翻译的单词。我用en.php,fr.php,de.php,it.php等文件在我的应用程序的根目录中放置了一个文件夹。这些翻译是用于以各自语言显示的表单元素和错误消息。可以通过点击页面顶部的标记来选择语言。PHP本地化文件

我不确定的是,如果包含所有定义的单词的语言文件应该是单个文件或者分解成多个文件,那么我可以只加载每个页面所需的内容。我的应用程序越来越大,加载一个巨大的PHP文件似乎是个不错的主意。

将单个文件放在一个位置使得加载它们变得简单,但我不确定是否这样做。

谢谢!

+2

你有没有看着[gettext的(http://php.net/manual/en/book.gettext.php)? –

+0

是的,我对gettext很熟悉,但我想控制翻译文本,所以我避开了外部服务。 – user1002039

+0

不确定你的意思是关于gettext作为外部服务。您可以自己提供翻译文件。 –

回答

0

那么我的建议是使用分而治之的办法很明显,如果你能做到,你是只包括网页这样的模块/请求特定的语言文件比将提高响应时间

0

我也同意分它会根据您的需求创建文件。

既然你想要文本文件,这是一个非常原始的只是为了演示示例与文本文件。不过,我认为使用静态类可以看起来比简单的常量更有组织。

./index.php

<?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'); 
?> 

./history.php

<?PHP 
    include __LANG_PATH.'txtHistory.inc'; 
    echo txtArticle::$body_title; 
    echo '<br>'; 
    echo txtArticle::$history_article 
?> 

./lang/en/txtHistory.inc

<?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. ."; 
} 
?> 

./lang/fr/txtHistory.inc

<?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. 
"; 
} 
?>