不用 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...
Yii
   Yii - Internationalization (I18N)
Yii:t()

Yii::t('app', 'Path alias "{alias}" is redefined.',
   array('{alias}'=>...
CodeIgniter
CodeIgniter | Internationalization Views i18n
http://www.example.com/it/...
   1. view_name_it.php
   2. view_...
CakePHP
CakePHP :: Internationalizing Your Application

 Gettext, 使用 __()

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

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

● 1997 年 加入 textdomain, bindtextdomain

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




     History o...
支援
C, C++, Objective C, sh, bash, Python, Common 
   Lisp, clisp C, Emacs Lisp, librep, Scheme, 
 Smalltalk, Java, C#, gaw...
優點
名詞統一
變數命名
製作時間
_()
_('hello')
<?php
echo _('hello, world');
?>

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



msgfmt
 ­ compile message catalog to binary format


apt­get install ge...
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

...
程式設定
define('PACKAGE', 'hello');

putenv('LANG=zh_TW');
setlocale(LC_ALL, 'zh_TW');
bindtextdomain(PACKAGE, 'locale');
tex...
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 和 P...
聯絡資料
Tsung

tsunghao@gmail.com

http://plog.longwin.com.tw
Upcoming SlideShare
Loading in...5
×

2010 08-14 web-sitei18n

2,908

Published on

不用Framework, 一天完成網站的多國語系製作

Published in: Technology
0 Comments
4 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
2,908
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
32
Comments
0
Likes
4
Embeds 0
No embeds

No notes for slide

2010 08-14 web-sitei18n

  1. 1. 不用 Framework  一天完成網站的 多國語系製作 Tsung 2010 / 08 / 14  tsunghao@gmail.com
  2. 2. 本投影片 採用 CC 授權
  3. 3. 1.為何要多國語系 2.一般都如何做多國語系 3.如何使用 Gettext 4.常見問題
  4. 4. Who am I
  5. 5.   SiteTag
  6. 6. I can do ....
  7. 7. Why 多國語系
  8. 8. 中國 15 億人
  9. 9. 前進 世界
  10. 10. 取自 : http://www.vagabondjourney.com/travelogue/study-spanish-rosetta-stone/
  11. 11. 問題
  12. 12. 流程彈性
  13. 13. 名詞統一
  14. 14. 製作時間
  15. 15. 流程彈性 名詞統一 製作時間
  16. 16. 彈性 +++
  17. 17. cp ­r tw/ en/
  18. 18. 網址 : http://www.foxconn.com.tw/
  19. 19. 網址 : http://www.foxconn.com.tw/GroupProfile.htm
  20. 20. 不用 Framwork  一天完成網站的 多國語系製作
  21. 21. 不用 Framwork 
  22. 22. 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'
  23. 23. 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
  24. 24. 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
  25. 25. 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)
  26. 26. 如何做 多國語系
  27. 27. 網址 : http://golangd.com/
  28. 28. Source: phpBB3
  29. 29. Source: discuz
  30. 30. 文字 抽離
  31. 31. 檔案 分隔
  32. 32. 名詞統一 變數命名
  33. 33. 不用 Framwork  一天完成網站的 多國語系製作
  34. 34. Gettext
  35. 35. 1994 July
  36. 36. ● 1994 年 7 月 開始構想 ● 1995 年 4 月 正式發布 ● 1997 年 加入 textdomain, bindtextdomain ● 2000 年 加入 UTF­8 ...  等支援 History of GNU gettext
  37. 37. 支援 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
  38. 38. 優點
  39. 39. 名詞統一 變數命名 製作時間
  40. 40. _()
  41. 41. _('hello')
  42. 42. <?php echo _('hello, world'); ?> 嗨 ,  世界
  43. 43. Gettext 套件 & 使用
  44. 44. xgettext  ­ extract gettext strings from source msgfmt  ­ compile message catalog to binary format apt­get install gettext
  45. 45. po  ­  人 mo  ­  機器
  46. 46. mo + 系統環境
  47. 47. 環境設定
  48. 48. Locale zh_TW  UTF­8 zh_CN  UTF­8 en_US  UTF­8
  49. 49. 語系路徑 mkdir  ­p  locale/zh_TW/LC_MESSAGES mkdir  ­p  locale/zh_CN/LC_MESSAGES mkdir  ­p  locale/en_US/LC_MESSAGES
  50. 50. 流程 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
  51. 51. 程式設定 define('PACKAGE', 'hello'); putenv('LANG=zh_TW'); setlocale(LC_ALL, 'zh_TW'); bindtextdomain(PACKAGE, 'locale'); textdomain(PACKAGE);
  52. 52. Demo
  53. 53. 常見問題
  54. 54. JavaScript 多國語系
  55. 55. Po  編輯器
  56. 56. 不用 Framwork  3 分鐘完成網站 多國語系製作
  57. 57. 3 分鐘
  58. 58. http://translate.google.com/translate_tools
  59. 59. http://www.microsofttranslator.com/wi http://www.microsofttranslator.com/widget/
  60. 60. FAQ
  61. 61. 相關網頁 ● 使用 gettext 來實做 PHP 多國語系支援(I18N) ● PHP 使用 sprintf 調換變數順序 ● Gettext po 檔的編輯器 - poedit ● Gettext mo 轉回 po 和 PHP 讀取 mo 檔
  62. 62. 聯絡資料 Tsung tsunghao@gmail.com http://plog.longwin.com.tw
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×