SlideShare uma empresa Scribd logo
1 de 62
Baixar para ler offline
不用 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

Mais conteúdo relacionado

Mais procurados

用JavaScript 實踐《軟體工程》的那些事兒!
用JavaScript  實踐《軟體工程》的那些事兒!用JavaScript  實踐《軟體工程》的那些事兒!
用JavaScript 實踐《軟體工程》的那些事兒!
鍾誠 陳鍾誠
 
深度學習的機器翻譯技術 (使用node.js的neataptic套件實作)
深度學習的機器翻譯技術  (使用node.js的neataptic套件實作)深度學習的機器翻譯技術  (使用node.js的neataptic套件實作)
深度學習的機器翻譯技術 (使用node.js的neataptic套件實作)
鍾誠 陳鍾誠
 
NODEjs Lesson1
NODEjs Lesson1NODEjs Lesson1
NODEjs Lesson1
3dmodeldiy
 
人造交談語言 (使用有BNF的口語透過機器翻譯和外國人溝通)
人造交談語言  (使用有BNF的口語透過機器翻譯和外國人溝通)人造交談語言  (使用有BNF的口語透過機器翻譯和外國人溝通)
人造交談語言 (使用有BNF的口語透過機器翻譯和外國人溝通)
鍾誠 陳鍾誠
 

Mais procurados (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實作)
 

Semelhante a 2010 08-14 web-sitei18n

Openshift by mtchang
Openshift by mtchangOpenshift by mtchang
Openshift by mtchang
Chang Mt
 
數位出版2.0 it
數位出版2.0 it數位出版2.0 it
數位出版2.0 it
志賢 黃
 
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
tka
 
Using google appengine (2)
Using google appengine (2)Using google appengine (2)
Using google appengine (2)
Wei Sun
 
Island arch
Island archIsland arch
Island arch
faryang
 
用Cython封装c++代码为python模块的一点经验
用Cython封装c++代码为python模块的一点经验用Cython封装c++代码为python模块的一点经验
用Cython封装c++代码为python模块的一点经验
Leo Zhou
 
Phalcon the fastest php framework 阿土伯
Phalcon   the fastest php framework 阿土伯Phalcon   the fastest php framework 阿土伯
Phalcon the fastest php framework 阿土伯
Hash Lin
 

Semelhante a 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