2012-07-25 58 views
0

我希望能夠使用本地化功能測試我的cakephp網頁。如何做本地化 - CakePHP

我使用翻譯功能__(),我也使用的日期和時間功能:toLocaleString()

我想知道我怎麼可以測試以簡單的方式翻譯和本地化。

我知道toLocaleString()會以本地格式輸出日期和時間。

我想在我的控制器的beforeFilter()使用下面的代碼:

$this->Session->write('Config.langauge', 'ger'); 
Configure::write('Config.language', 'fre'); 

上面的兩行代碼沒有工作。 這也沒有工作:

setlocale(LC_ALL, 'de', 'ge'); 

我使用Ubuntu 10.04。 我還安裝了西班牙語,法語和德語語言包。

在cakephp調試工具包中,它顯示語言已更改,但日期和時間字符串根本不變。 我不知道我在做什麼錯。

至於測試,一旦設置了語言環境,日期和時間應該工作,但是對於翻譯功能,我該如何測試? 我看着cakephp文檔,但它說使用i18n控制檯commang。 我試着運行命令來提取鍋文件,我選擇了我的源代碼和輸出目錄,但是當它完成時沒有在目錄中顯示出來。

感謝

回答

3

見下面的網址

http://book.cakephp.org/2.0/en/core-libraries/internationalization-and-localization.html

或者試試這個:

//Internationalizing Your Application 

<h2><?php echo __('Posts'); ?></h2> 

The default domain is ‘default’, therefore your locale folder would look something like this: 

/app/Locale/eng/LC_MESSAGES/default.po (English) 
/app/Locale/fre/LC_MESSAGES/default.po (French) 
/app/Locale/por/LC_MESSAGES/default.po (Portuguese) 


<?php 
// App Controller Code. 
public function beforeFilter() { 
    $locale = Configure::read('Config.language'); 
    if ($locale && file_exists(VIEWS . $locale . DS . $this->viewPath)) { 
     // e.g. use /app/View/fre/Pages/tos.ctp instead of /app/View/Pages/tos.ctp 
     $this->viewPath = $locale . DS . $this->viewPath; 
    } 
} 


or: 


<?php 
// View code 
echo $this->element(Configure::read('Config.language') . '/tos'); 




//Localization in CakePHP 

<?php 
Configure::write('Config.language', 'fre'); 
?> 

<?php 
$this->Session->write('Config.language', 'fre'); 
?> 


<?php 
class AppController extends Controller { 
    public function beforeFilter() { 
     Configure::write('Config.language', $this->Session->read('Config.language')); 
    } 
} 
?> 


///Translating model validation errors 

<?php 
class User extends AppModel { 

    public $validationDomain = 'validation'; 

    public $validate = array(
     'username' => array(
       'length' => array(
       'rule' => array('between', 2, 10), 
       'message' => 'Username should be between %d and %d characters' 
      ) 
     ) 
    ) 
} 
?> 

//Which will do the following internal call: 

<?php 
__d('validation', 'Username should be between %d and %d characters', array(2, 10)); 
+0

感謝您的回答,它幫助了很多。 – RXC 2012-07-26 12:39:23