🔏
Laravel 4.2 入門
  • 前言
  • Laravel 介紹
    • Laravel 介紹
    • 認識 Laravel
    • 開始之前
  • 進入 Laravel 的世界
    • 進入 Laravel 的世界
    • 安裝 Composer
    • 建立 Laravel 專案
    • Laravel 框架目錄說明
    • Artisan 常用指令說明
  • 基本配置設定
    • 基本配置設定
    • 設定伺服器
    • 建立開發環境
    • 設定 Laravel 網站
  • 動手做-入門
    • 動手做-入門
    • Laravel 的 MVC 模型
    • 使用 Route
    • 使用 View
    • 使用 Controller
    • 使用 Migration 和 Model
    • 使用 Form
    • 第一個小專案:迷你部落格
  • 動手做 - 進階
    • 動手做 - 進階
    • Route 進階
    • Blade 樣板系統
    • Form 進階
    • Form 的資料驗證
  • 資料庫
    • 資料庫
    • Query Builder
    • Eloquent ORM
    • Schema Builder
    • Migrations & Seeding
  • 常用功能實作
    • 常用功能實作
    • 登入驗證
    • 在地化 (多國語言)
    • 分頁
    • 寄信
  • 附錄
    • 附錄
    • 移除 public 結尾
    • Sublime Text 的開發套件
Powered by GitBook
On this page
  • 概念
  • 建立語系檔
  • 預設語系
  • 指定語系

Was this helpful?

  1. 常用功能實作

在地化 (多國語言)

Previous登入驗證Next分頁

Last updated 5 years ago

Was this helpful?

概念

所謂的在地化,就是讓網站中的文字以當地的語言來表示。在 Laravel 中製作多國語言的方法,是在 app/lang 目錄下,建立以各國的名稱命名的目錄,雖然這些目錄的命名並沒有特別規定,但是你可以使用 [1] 的標準來命名,例如:

app/lang/en
app/lang/tw
app/lang/jp
app/lang/fr

各個語言目錄中會使用 php 檔來儲存相對應的語言文字,這個檔案的只做一件事,回傳陣列型態的語言文字。

當你的多國語言資料都設定好後,Laravel 提供 Lang 類別在程式中取用指定的語言的字串。

建立語系檔

我們先在預設的 app/lang/en 中新增一個 default.php:

<?php

return array(
    'title' => 'My Blog'
);

回傳一個陣列,該陣列只有一筆資料。接著建立第 2 個語言的目錄 app/lang/tw,直接把 en 目錄中的 default.php 複製到 tw 目錄中,編輯:

<?php

return array(
    'title' => '我的部落格'
);

現在我們有兩種語言的文字了,兩個檔案裡的陣列 key 必須是一樣的,value 就換成該語系的內容。

預設語系

每個 Laravel 網站都有一個預設語系,在 app/config/app.php 中可以修改預設的語系:

'locale' => 'en',
'fallback_locale' => 'en',

將 'en' 改成你要的語系,例如 'tw',如此網站就會載入 tw 目錄中的語言文字。

指定語系

你也可以在每個 Controller 中指定目前要顯示哪個語系的內容。假設要指定以 tw 來顯示:

App::setLocale('tw');

這行必須寫在最前面,這樣之後要取語言文字時才知道要取哪一個,所以 HomeController@index 可以改成:

public function index()
{
    App::setLocale('tw');
    $title = Lang::get('default.title');

    $posts = Post::all();

    return View::make('site.home')
            ->with('title', $title)
            ->with('posts', $posts);
}

使用 Lang::get('檔案名稱.key'); 就能取得某一語言檔案內某 key 的值。所以,記得語言檔案在任何語言目錄中都必須是同樣的名稱,key 也必須是同一名稱。

如果要在 View 裡面使用語言文字:

@lang('default.title')

它會依預設語系或在 Controller 中指定的語系來取得文字。

[1]

ISO 639-1
https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes