多國語系目錄架構
language/ ---> englisg/ ---------> about.php ---> zh-tw/ ---------> about.php ---> zh-cn/ ---------> about.php這是大部分的專案設計模式,也最容易清楚了解,接著我們就寫一個簡單的 Language Class 來動態讀取各國語系。
撰寫 Language Class 在根目錄新增 index.php 及 language.php,當然還有 language 多國語系目錄,檔案內容如下
index.php
language.php load language class 畫面。接著必須規畫兩個 method,分別是載入 language 檔案,以及讀取資料,程式碼變成: language 陣列,並且將檔名複製到 $this->is_loaded 陣列,代表已載入,避免重複。接著看看程式碼: public function load($langfile = '', $idiom = 'english') { $langfile = str_replace('.php', '', $langfile); $langfile .= '.php'; if (in_array($langfile, $this->is_loaded, TRUE)) { return; } if ($idiom == '') { $idiom = ($deft_lang == '') ? 'english' : $deft_lang; } // Determine where the language file is and load it if (file_exists('language/'.$idiom.'/'.$langfile)) { include('language/'.$idiom.'/'.$langfile); } if ( ! isset($lang)) { return; } $this->is_loaded[] = $langfile; $this->language = array_merge($this->language, $lang); unset($lang); return TRUE; }最後實作讀取語系
public function line($line = '') { $value = ($line == '' OR ! isset($this->language[$line])) ? FALSE : $this->language[$line]; return $value; }$this->language 不存在此變數,則回傳布林函數 FALSE。最後來測試看看,先針對兩個語系 english 跟 zh-tw 目錄底下新增 about.php,內容如下
load("about", "english"); echo $lang->line("index") . "\n";這樣就完成了基本的多國語系 class 實作,當然還有很多應用,等下次有再繼續寫 XD。程式碼也同時放在
php-i18n @ github »»> 繼續閱讀 PHP 多國語系製作 i18n library 筆記 (二) ««<
See also
- 來聊聊 PHP & JavaScript & CSS 的 Coding Style
- 為什麼我選擇使用 Laravel Framework?
- Laravel 搭配 Google, Facebook, Twitter 第三方 OAuth 認證
- 將 wordpress 強制使用 SSL 連線
- PHP 7 vs HHVM Benchmark 比較
- Laravel 50 個小技巧 + Laravel 5.2 新功能
- Laravel Homestead 支援 MySQL 5.7 和 Node 5.0
- PHP-FIG 新網站
- Laravel Homestead 支援 PHP 7
- Laravel 5.1 is released