SlideShare ist ein Scribd-Unternehmen logo
1 von 62
Downloaden Sie, um offline zu lesen
不用 Framework 
 一天完成網站的
  多國語系製作
        Tsung

   2010 / 08 / 14
    tsunghao@gmail.com
本投影片
 採用
CC 授權
1.為何要多國語系
2.一般都如何做多國語系
3.如何使用 Gettext
4.常見問題
Who am
  I
 
SiteTag
I can do ....
Why
多國語系
中國
15 億人
前進
世界
取自 : http://www.vagabondjourney.com/travelogue/study-spanish-rosetta-stone/
問題
流程彈性
名詞統一
製作時間
流程彈性
名詞統一
製作時間
彈性
+++
cp ­r
tw/ en/
網址 : http://www.foxconn.com.tw/
網址 : http://www.foxconn.com.tw/GroupProfile.htm
不用 Framwork 
一天完成網站的
 多國語系製作
不用
Framwork 
symfony
symfony | Chapter 13 - I18n And L10n
$product = ProductPeer::retrieveByPk(1);
$product->setCulture('fr');
$product->setName('Nom du produit');
$product->save();

$product->setCulture('en');
$product->setName('Product name');
$product->save();

echo $product->getName();
 => 'Product name'

$product->setCulture('fr');
echo $product->getName();
 => 'Nom du produit'
Yii
   Yii - Internationalization (I18N)
Yii:t()

Yii::t('app', 'Path alias "{alias}" is redefined.',
   array('{alias}'=>$alias))

Yii::t('Xyz.categoryName', 'message to be translated')
protected/messages/LocaleID/CategoryName.php
CodeIgniter
CodeIgniter | Internationalization Views i18n
http://www.example.com/it/...
   1. view_name_it.php
   2. view_name.php

http://www.example.com/fr/...
   1. view_name_fr.php
   2. view_name.php
CakePHP
CakePHP :: Internationalizing Your Application

 Gettext, 使用 __()

 /app/locale/<locale>/LC_MESSAGES/<domain>.po


 /app/locale/eng/LC_MESSAGES/default.po (English)
 /app/locale/fre/LC_MESSAGES/default.po (French)
 /app/locale/por/LC_MESSAGES/default.po (Portuguese)
如何做
多國語系
網址 : http://golangd.com/
Source: phpBB3
Source: discuz
文字
抽離
檔案
分隔
名詞統一
變數命名
不用 Framwork 
一天完成網站的
 多國語系製作
Gettext
1994
July
● 1994 年 7 月 開始構想
● 1995 年 4 月 正式發布

● 1997 年 加入 textdomain, bindtextdomain

● 2000 年 加入 UTF­8 ...  等支援




     History of GNU gettext
支援
C, C++, Objective C, sh, bash, Python, Common 
   Lisp, clisp C, Emacs Lisp, librep, Scheme, 
 Smalltalk, Java, C#, gawk, Pascal, wxWidgets, 
  YCP, Tcl, Perl, PHP, Pike, GCC­source, ruby, 
                    javascript

          詳見 : List of Programming Languages - GNU `gettext' utilities
優點
名詞統一
變數命名
製作時間
_()
_('hello')
<?php
echo _('hello, world');
?>

嗨 ,  世界
Gettext
套件 & 使用
xgettext
 ­ extract gettext strings from source



msgfmt
 ­ compile message catalog to binary format


apt­get install gettext
po
 ­  人



mo
 ­  機器
mo
 +

系統環境
環境設定
Locale
zh_TW  UTF­8
zh_CN  UTF­8
en_US  UTF­8
語系路徑
mkdir  ­p  locale/zh_TW/LC_MESSAGES
mkdir  ­p  locale/zh_CN/LC_MESSAGES
mkdir  ­p  locale/en_US/LC_MESSAGES
流程
xgettext –from­code=UTF­8 ­d hello hello.php
msgmerge ­o hello.po
    locale/zh_TW/LC_MESSAGES/hello.po 
    hello.po

vim hello.po #  翻譯

msgfmt ­o
    locale/zh_TW/LC_MESSAGES/hello.mo
    hello.po
程式設定
define('PACKAGE', 'hello');

putenv('LANG=zh_TW');
setlocale(LC_ALL, 'zh_TW');
bindtextdomain(PACKAGE, 'locale');
textdomain(PACKAGE);
Demo
常見問題
JavaScript
 多國語系
Po 
編輯器
不用 Framwork 
3 分鐘完成網站
 多國語系製作
3 分鐘
http://translate.google.com/translate_tools
http://www.microsofttranslator.com/wi




http://www.microsofttranslator.com/widget/
FAQ
相關網頁

●   使用 gettext 來實做 PHP 多國語系支援(I18N)
●   PHP 使用 sprintf 調換變數順序
●   Gettext po 檔的編輯器 - poedit
●   Gettext mo 轉回 po 和 PHP 讀取 mo 檔
聯絡資料
Tsung

tsunghao@gmail.com

http://plog.longwin.com.tw

Weitere ähnliche Inhalte

Was ist angesagt?

用十分鐘瞭解JavaScript的模組 -- 《還有關於npm套件管理的那些事情》
用十分鐘瞭解JavaScript的模組 -- 《還有關於npm套件管理的那些事情》用十分鐘瞭解JavaScript的模組 -- 《還有關於npm套件管理的那些事情》
用十分鐘瞭解JavaScript的模組 -- 《還有關於npm套件管理的那些事情》鍾誠 陳鍾誠
 
用最潮的 Java script 盡情開發 kde qt 程式
用最潮的 Java script 盡情開發 kde qt 程式用最潮的 Java script 盡情開發 kde qt 程式
用最潮的 Java script 盡情開發 kde qt 程式Fred Chien
 
軟體人甘苦談
軟體人甘苦談軟體人甘苦談
軟體人甘苦談Fred Chien
 
用JavaScript 實踐《軟體工程》的那些事兒!
用JavaScript  實踐《軟體工程》的那些事兒!用JavaScript  實踐《軟體工程》的那些事兒!
用JavaScript 實踐《軟體工程》的那些事兒!鍾誠 陳鍾誠
 
學好 node.js 不可不知的事
學好 node.js 不可不知的事學好 node.js 不可不知的事
學好 node.js 不可不知的事Ben Lue
 
北護樂學程式冬令營 2017
北護樂學程式冬令營 2017北護樂學程式冬令營 2017
北護樂學程式冬令營 2017Hamilton Wong
 
利用Javascript 與 html5開發線上遊戲_0基本概念
利用Javascript 與 html5開發線上遊戲_0基本概念利用Javascript 與 html5開發線上遊戲_0基本概念
利用Javascript 與 html5開發線上遊戲_0基本概念azole Lai
 
Non-MVC Web Framework
Non-MVC Web FrameworkNon-MVC Web Framework
Non-MVC Web FrameworkFred Chien
 
深度學習的機器翻譯技術 (使用node.js的neataptic套件實作)
深度學習的機器翻譯技術  (使用node.js的neataptic套件實作)深度學習的機器翻譯技術  (使用node.js的neataptic套件實作)
深度學習的機器翻譯技術 (使用node.js的neataptic套件實作)鍾誠 陳鍾誠
 
Codeigniter 3.0 之 30 分鐘就上手
Codeigniter 3.0 之 30 分鐘就上手Codeigniter 3.0 之 30 分鐘就上手
Codeigniter 3.0 之 30 分鐘就上手Piece Chao
 
Node.js 淺談socket.io
Node.js   淺談socket.ioNode.js   淺談socket.io
Node.js 淺談socket.ioSimon Su
 
NODEjs Lesson1
NODEjs Lesson1NODEjs Lesson1
NODEjs Lesson13dmodeldiy
 
用十分鐘瞭解 《JavaScript的程式世界》
用十分鐘瞭解  《JavaScript的程式世界》用十分鐘瞭解  《JavaScript的程式世界》
用十分鐘瞭解 《JavaScript的程式世界》鍾誠 陳鍾誠
 
人造交談語言 (使用有BNF的口語透過機器翻譯和外國人溝通)
人造交談語言  (使用有BNF的口語透過機器翻譯和外國人溝通)人造交談語言  (使用有BNF的口語透過機器翻譯和外國人溝通)
人造交談語言 (使用有BNF的口語透過機器翻譯和外國人溝通)鍾誠 陳鍾誠
 
用十分鐘將你的網站送上雲端
用十分鐘將你的網站送上雲端用十分鐘將你的網站送上雲端
用十分鐘將你的網站送上雲端鍾誠 陳鍾誠
 
Serious clojurescript
Serious clojurescript Serious clojurescript
Serious clojurescript Young Lee
 
用十分鐘 向jserv學習作業系統設計
用十分鐘  向jserv學習作業系統設計用十分鐘  向jserv學習作業系統設計
用十分鐘 向jserv學習作業系統設計鍾誠 陳鍾誠
 
用十分鐘學會道本語 (用120個單字就能和外國人交談)
用十分鐘學會道本語  (用120個單字就能和外國人交談)用十分鐘學會道本語  (用120個單字就能和外國人交談)
用十分鐘學會道本語 (用120個單字就能和外國人交談)鍾誠 陳鍾誠
 
基于Android ndk的软件开发简介 放映
基于Android ndk的软件开发简介 放映基于Android ndk的软件开发简介 放映
基于Android ndk的软件开发简介 放映heyfluke
 
深度學習的捲積神經網路 -- (使用JavaScript / node.js實作)
深度學習的捲積神經網路 -- (使用JavaScript / node.js實作)深度學習的捲積神經網路 -- (使用JavaScript / node.js實作)
深度學習的捲積神經網路 -- (使用JavaScript / node.js實作)鍾誠 陳鍾誠
 

Was ist angesagt? (20)

用十分鐘瞭解JavaScript的模組 -- 《還有關於npm套件管理的那些事情》
用十分鐘瞭解JavaScript的模組 -- 《還有關於npm套件管理的那些事情》用十分鐘瞭解JavaScript的模組 -- 《還有關於npm套件管理的那些事情》
用十分鐘瞭解JavaScript的模組 -- 《還有關於npm套件管理的那些事情》
 
用最潮的 Java script 盡情開發 kde qt 程式
用最潮的 Java script 盡情開發 kde qt 程式用最潮的 Java script 盡情開發 kde qt 程式
用最潮的 Java script 盡情開發 kde qt 程式
 
軟體人甘苦談
軟體人甘苦談軟體人甘苦談
軟體人甘苦談
 
用JavaScript 實踐《軟體工程》的那些事兒!
用JavaScript  實踐《軟體工程》的那些事兒!用JavaScript  實踐《軟體工程》的那些事兒!
用JavaScript 實踐《軟體工程》的那些事兒!
 
學好 node.js 不可不知的事
學好 node.js 不可不知的事學好 node.js 不可不知的事
學好 node.js 不可不知的事
 
北護樂學程式冬令營 2017
北護樂學程式冬令營 2017北護樂學程式冬令營 2017
北護樂學程式冬令營 2017
 
利用Javascript 與 html5開發線上遊戲_0基本概念
利用Javascript 與 html5開發線上遊戲_0基本概念利用Javascript 與 html5開發線上遊戲_0基本概念
利用Javascript 與 html5開發線上遊戲_0基本概念
 
Non-MVC Web Framework
Non-MVC Web FrameworkNon-MVC Web Framework
Non-MVC Web Framework
 
深度學習的機器翻譯技術 (使用node.js的neataptic套件實作)
深度學習的機器翻譯技術  (使用node.js的neataptic套件實作)深度學習的機器翻譯技術  (使用node.js的neataptic套件實作)
深度學習的機器翻譯技術 (使用node.js的neataptic套件實作)
 
Codeigniter 3.0 之 30 分鐘就上手
Codeigniter 3.0 之 30 分鐘就上手Codeigniter 3.0 之 30 分鐘就上手
Codeigniter 3.0 之 30 分鐘就上手
 
Node.js 淺談socket.io
Node.js   淺談socket.ioNode.js   淺談socket.io
Node.js 淺談socket.io
 
NODEjs Lesson1
NODEjs Lesson1NODEjs Lesson1
NODEjs Lesson1
 
用十分鐘瞭解 《JavaScript的程式世界》
用十分鐘瞭解  《JavaScript的程式世界》用十分鐘瞭解  《JavaScript的程式世界》
用十分鐘瞭解 《JavaScript的程式世界》
 
人造交談語言 (使用有BNF的口語透過機器翻譯和外國人溝通)
人造交談語言  (使用有BNF的口語透過機器翻譯和外國人溝通)人造交談語言  (使用有BNF的口語透過機器翻譯和外國人溝通)
人造交談語言 (使用有BNF的口語透過機器翻譯和外國人溝通)
 
用十分鐘將你的網站送上雲端
用十分鐘將你的網站送上雲端用十分鐘將你的網站送上雲端
用十分鐘將你的網站送上雲端
 
Serious clojurescript
Serious clojurescript Serious clojurescript
Serious clojurescript
 
用十分鐘 向jserv學習作業系統設計
用十分鐘  向jserv學習作業系統設計用十分鐘  向jserv學習作業系統設計
用十分鐘 向jserv學習作業系統設計
 
用十分鐘學會道本語 (用120個單字就能和外國人交談)
用十分鐘學會道本語  (用120個單字就能和外國人交談)用十分鐘學會道本語  (用120個單字就能和外國人交談)
用十分鐘學會道本語 (用120個單字就能和外國人交談)
 
基于Android ndk的软件开发简介 放映
基于Android ndk的软件开发简介 放映基于Android ndk的软件开发简介 放映
基于Android ndk的软件开发简介 放映
 
深度學習的捲積神經網路 -- (使用JavaScript / node.js實作)
深度學習的捲積神經網路 -- (使用JavaScript / node.js實作)深度學習的捲積神經網路 -- (使用JavaScript / node.js實作)
深度學習的捲積神經網路 -- (使用JavaScript / node.js實作)
 

Ähnlich wie 2010 08-14 web-sitei18n

Openshift by mtchang
Openshift by mtchangOpenshift by mtchang
Openshift by mtchangChang Mt
 
互联网创业服务器运维工具集
互联网创业服务器运维工具集互联网创业服务器运维工具集
互联网创业服务器运维工具集zhen chen
 
Go语言: 互联网时代的C
Go语言: 互联网时代的CGo语言: 互联网时代的C
Go语言: 互联网时代的CGoogol Lee
 
數位出版2.0 it
數位出版2.0 it數位出版2.0 it
數位出版2.0 it志賢 黃
 
DevOpsDays Taipei 2018 - Puppet 古早味、新感受:改造老牌企業進入自動化時代
DevOpsDays Taipei 2018 - Puppet 古早味、新感受:改造老牌企業進入自動化時代DevOpsDays Taipei 2018 - Puppet 古早味、新感受:改造老牌企業進入自動化時代
DevOpsDays Taipei 2018 - Puppet 古早味、新感受:改造老牌企業進入自動化時代scott liao
 
Proxmox VE 功能概觀、案例分享與實用工具 [2019/12/07] @Proxmox VE 中文使用者社團 2019 年會
Proxmox VE 功能概觀、案例分享與實用工具 [2019/12/07] @Proxmox VE 中文使用者社團 2019 年會Proxmox VE 功能概觀、案例分享與實用工具 [2019/12/07] @Proxmox VE 中文使用者社團 2019 年會
Proxmox VE 功能概觀、案例分享與實用工具 [2019/12/07] @Proxmox VE 中文使用者社團 2019 年會Jason Cheng
 
軟體組裝心得分享
軟體組裝心得分享軟體組裝心得分享
軟體組裝心得分享Wen Liao
 
Qml 培訓課程 multi media
Qml 培訓課程   multi mediaQml 培訓課程   multi media
Qml 培訓課程 multi mediadiro fan
 
2012 java two-desktop-appliction-using-j-ruby-with-swt
2012 java two-desktop-appliction-using-j-ruby-with-swt2012 java two-desktop-appliction-using-j-ruby-with-swt
2012 java two-desktop-appliction-using-j-ruby-with-swttka
 
Using google appengine (2)
Using google appengine (2)Using google appengine (2)
Using google appengine (2)Wei Sun
 
Island arch
Island archIsland arch
Island archfaryang
 
用Cython封装c++代码为python模块的一点经验
用Cython封装c++代码为python模块的一点经验用Cython封装c++代码为python模块的一点经验
用Cython封装c++代码为python模块的一点经验Leo Zhou
 
2016-04-07-清大-國際化開源專案技術實務與經驗分享
2016-04-07-清大-國際化開源專案技術實務與經驗分享2016-04-07-清大-國際化開源專案技術實務與經驗分享
2016-04-07-清大-國際化開源專案技術實務與經驗分享Jen Yee Hong
 
Phalcon the fastest php framework 阿土伯
Phalcon   the fastest php framework 阿土伯Phalcon   the fastest php framework 阿土伯
Phalcon the fastest php framework 阿土伯Hash Lin
 
Phalcon phpconftw2012
Phalcon phpconftw2012Phalcon phpconftw2012
Phalcon phpconftw2012Rack Lin
 

Ähnlich wie 2010 08-14 web-sitei18n (20)

Openshift by mtchang
Openshift by mtchangOpenshift by mtchang
Openshift by mtchang
 
互联网创业服务器运维工具集
互联网创业服务器运维工具集互联网创业服务器运维工具集
互联网创业服务器运维工具集
 
Go语言: 互联网时代的C
Go语言: 互联网时代的CGo语言: 互联网时代的C
Go语言: 互联网时代的C
 
數位出版2.0 it
數位出版2.0 it數位出版2.0 it
數位出版2.0 it
 
DevOpsDays Taipei 2018 - Puppet 古早味、新感受:改造老牌企業進入自動化時代
DevOpsDays Taipei 2018 - Puppet 古早味、新感受:改造老牌企業進入自動化時代DevOpsDays Taipei 2018 - Puppet 古早味、新感受:改造老牌企業進入自動化時代
DevOpsDays Taipei 2018 - Puppet 古早味、新感受:改造老牌企業進入自動化時代
 
Hadoop ecosystem
Hadoop ecosystemHadoop ecosystem
Hadoop ecosystem
 
Proxmox VE 功能概觀、案例分享與實用工具 [2019/12/07] @Proxmox VE 中文使用者社團 2019 年會
Proxmox VE 功能概觀、案例分享與實用工具 [2019/12/07] @Proxmox VE 中文使用者社團 2019 年會Proxmox VE 功能概觀、案例分享與實用工具 [2019/12/07] @Proxmox VE 中文使用者社團 2019 年會
Proxmox VE 功能概觀、案例分享與實用工具 [2019/12/07] @Proxmox VE 中文使用者社團 2019 年會
 
軟體組裝心得分享
軟體組裝心得分享軟體組裝心得分享
軟體組裝心得分享
 
Qml 培訓課程 multi media
Qml 培訓課程   multi mediaQml 培訓課程   multi media
Qml 培訓課程 multi media
 
2012 java two-desktop-appliction-using-j-ruby-with-swt
2012 java two-desktop-appliction-using-j-ruby-with-swt2012 java two-desktop-appliction-using-j-ruby-with-swt
2012 java two-desktop-appliction-using-j-ruby-with-swt
 
Using google appengine (2)
Using google appengine (2)Using google appengine (2)
Using google appengine (2)
 
Island arch
Island archIsland arch
Island arch
 
Html5
Html5Html5
Html5
 
Linuxguide4f2e
Linuxguide4f2eLinuxguide4f2e
Linuxguide4f2e
 
LinuxGuide4F2E
LinuxGuide4F2ELinuxGuide4F2E
LinuxGuide4F2E
 
用Cython封装c++代码为python模块的一点经验
用Cython封装c++代码为python模块的一点经验用Cython封装c++代码为python模块的一点经验
用Cython封装c++代码为python模块的一点经验
 
2016-04-07-清大-國際化開源專案技術實務與經驗分享
2016-04-07-清大-國際化開源專案技術實務與經驗分享2016-04-07-清大-國際化開源專案技術實務與經驗分享
2016-04-07-清大-國際化開源專案技術實務與經驗分享
 
Phalcon the fastest php framework 阿土伯
Phalcon   the fastest php framework 阿土伯Phalcon   the fastest php framework 阿土伯
Phalcon the fastest php framework 阿土伯
 
Phalcon phpconftw2012
Phalcon phpconftw2012Phalcon phpconftw2012
Phalcon phpconftw2012
 
42qu thrift1
42qu thrift142qu thrift1
42qu thrift1
 

2010 08-14 web-sitei18n