2011-10-18 59 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. 
"; 
} 
?>