SlideShare uma empresa Scribd logo
1 de 43
五行完成 網頁多國語系
         Amos Tsai
 August 19, 2012@COSCUP
●
  萬華社區大學、救國團 電腦老師
●
  曾經出沒地: H4, CloudTW, GTUG
●
  目前擔任 H4 值日生
目前使用的技能 :
Nginx, uWSGI, bottle, Python,
MySQL, MySQLdb, Javascript,
jQuery, HTML5, CSS3
amos.tsai@gmail.com
      amos.tsai
amos-tsai.blogspot.com
五行真的可以開發出網頁版多國語系嗎
係真ㄟ
以前用 gettext 好像有點複雜
會不會網頁版也一樣複雜?
不會,反而更簡單!
jQuery.i18n 有什麼優點
●
    相依性低
      –   jquery-1.3.0.min.js 以上
      –   jquery.i18n.js
●
    體積小,載入速度快 - 3.2KB 無壓縮
●
    適合各種 framework
●
    開發速度快
●
    學習曲線低
JQuery i18n
●
    2009 年由 Bryan W Berry 開發
●   MIT license
●   https://github.com/bryanwb/jquery-i18n/
原本的作法
<script type='text/javascript' src='./jquery-1.3.2.min.js'></script>
<script type='text/javascript' src='./jquery.i18n.js'></script>
<script type='text/javascript' src='./jquery.ne.json'></script>
<script type='text/javascript' src='example.ne.json'></script>

<script type='text/javascript'>
$(document).ready(function(){
  $._.setLocale('ne');
  $('#example1').append("<div>" + $._('Welcome')+"</div>");
  $('#example1').append("<div>" + $._n(90) + "</div>");
});
</script>

<div id='example1'>Example using strings application-wide <br />
現有作法不足之處
●
    手動預先加入語系檔
      –   就算使用者用不到也要花費流量讀取檔案
●
    手動輸入使用者語系
      –   可以直接讀取瀏覽器語系設定
●
    轉換文字必須放在 <script> 中
      –   破壞 HTML 文字可閱讀性
OpenSource 的精神
覺得少了些什麼?
自己改
緊張刺激的 Demo
其實只有講者會緊張 ....orz
撰寫一個 HTML 檔
<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
</head>
<body>
  <span>Hello</span><span>World</span>
</body>
</html>
載入 2 個 javascript 檔案
●   jquery-1.8.0.min.js
●   jquery.i18n.js
在要轉換的標籤加上
 class='gettext'
執行 genLocaleJson.py
    產生語系檔
根據每個語系檔進行翻譯
移動語系檔到 language 資料夾
// 幫 class="gettext" 的元素增加 gettext 屬性
$._.setAnchorByClass( 'gettext' );

// 根據語系設定替換網頁文字
$._.replaceByLocale( "language/hellow
orld." + $._.getLocale() + ".json" );
Just this!
線上即時轉換語系
$('.change').click( function() {

   // 根據按鈕更改語系設定
   $._.setLocale( $(this).text() )

  // 根據語系設定替換網頁文字
   $._.replaceByLocale( "language/helloworld."
+ $._.getLocale() + ".json" );

 });
製作語系切換鈕
<button class="change">jp</button>
<button class="change">zh_TW</button>
It's All
Source Code 下載
https://bitbucket.org/amostsai/jquery.i18n
歡迎加入 Hacking Thursday
Welcome to Hacking Thursday
ハッキング木曜日へようこそ
1. 討論
   web, network, programming,
   system, blablah….
2. 交流系統工具 & 使用技巧
3. 八卦
聚會地點

店家 : MarketPlace ( 市集 台北 站前 )
地址 : 台北市重慶南路一段 1 號 2 樓
電話 : (02) 7725-2525
時間 : 每週四晚上 19:30-22:00
最後 ...
未來打算建立數位學習平台
如果您對這個計畫有興趣
  或是對相關技術有興趣
歡迎在任何場合與我聯繫:)
Amos Tsai
   0982-460-210
amos.tsai@gmail.com
Q&A
thank you

Mais conteúdo relacionado

Mais procurados

LogbackからLog4j 2への移行によるアプリケーションのスループット改善 ( JJUG CCC 2021 Fall )
LogbackからLog4j 2への移行によるアプリケーションのスループット改善 ( JJUG CCC 2021 Fall ) LogbackからLog4j 2への移行によるアプリケーションのスループット改善 ( JJUG CCC 2021 Fall )
LogbackからLog4j 2への移行によるアプリケーションのスループット改善 ( JJUG CCC 2021 Fall )
Hironobu Isoda
 

Mais procurados (20)

Dockerイメージの理解とコンテナのライフサイクル
Dockerイメージの理解とコンテナのライフサイクルDockerイメージの理解とコンテナのライフサイクル
Dockerイメージの理解とコンテナのライフサイクル
 
Prometheus入門から運用まで徹底解説
Prometheus入門から運用まで徹底解説Prometheus入門から運用まで徹底解説
Prometheus入門から運用まで徹底解説
 
NGINX: Basics & Best Practices - EMEA Broadcast
NGINX: Basics & Best Practices - EMEA BroadcastNGINX: Basics & Best Practices - EMEA Broadcast
NGINX: Basics & Best Practices - EMEA Broadcast
 
perfを使ったPostgreSQLの解析(前編)
perfを使ったPostgreSQLの解析(前編)perfを使ったPostgreSQLの解析(前編)
perfを使ったPostgreSQLの解析(前編)
 
Javaトラブルに備えよう #jjug_ccc #ccc_h2
Javaトラブルに備えよう #jjug_ccc #ccc_h2Javaトラブルに備えよう #jjug_ccc #ccc_h2
Javaトラブルに備えよう #jjug_ccc #ccc_h2
 
Optimizing Servers for High-Throughput and Low-Latency at Dropbox
Optimizing Servers for High-Throughput and Low-Latency at DropboxOptimizing Servers for High-Throughput and Low-Latency at Dropbox
Optimizing Servers for High-Throughput and Low-Latency at Dropbox
 
[MeetUp][1st] 오리뎅이의_쿠버네티스_네트워킹
[MeetUp][1st] 오리뎅이의_쿠버네티스_네트워킹[MeetUp][1st] 오리뎅이의_쿠버네티스_네트워킹
[MeetUp][1st] 오리뎅이의_쿠버네티스_네트워킹
 
kube-system落としてみました
kube-system落としてみましたkube-system落としてみました
kube-system落としてみました
 
PostgreSQL Streaming Replication Cheatsheet
PostgreSQL Streaming Replication CheatsheetPostgreSQL Streaming Replication Cheatsheet
PostgreSQL Streaming Replication Cheatsheet
 
webエンジニアのためのはじめてのredis
webエンジニアのためのはじめてのrediswebエンジニアのためのはじめてのredis
webエンジニアのためのはじめてのredis
 
TIME_WAITに関する話
TIME_WAITに関する話TIME_WAITに関する話
TIME_WAITに関する話
 
CloudNativePGを動かしてみた! ~PostgreSQL on Kubernetes~(第34回PostgreSQLアンカンファレンス@オンライ...
CloudNativePGを動かしてみた! ~PostgreSQL on Kubernetes~(第34回PostgreSQLアンカンファレンス@オンライ...CloudNativePGを動かしてみた! ~PostgreSQL on Kubernetes~(第34回PostgreSQLアンカンファレンス@オンライ...
CloudNativePGを動かしてみた! ~PostgreSQL on Kubernetes~(第34回PostgreSQLアンカンファレンス@オンライ...
 
P2P Container Image Distribution on IPFS With containerd and nerdctl
P2P Container Image Distribution on IPFS With containerd and nerdctlP2P Container Image Distribution on IPFS With containerd and nerdctl
P2P Container Image Distribution on IPFS With containerd and nerdctl
 
5 things you didn't know nginx could do
5 things you didn't know nginx could do5 things you didn't know nginx could do
5 things you didn't know nginx could do
 
KVM環境におけるネットワーク速度ベンチマーク
KVM環境におけるネットワーク速度ベンチマークKVM環境におけるネットワーク速度ベンチマーク
KVM環境におけるネットワーク速度ベンチマーク
 
Linux Performance Analysis in 15 minutes
Linux Performance Analysis in 15 minutesLinux Performance Analysis in 15 minutes
Linux Performance Analysis in 15 minutes
 
あなたの知らないPostgreSQL監視の世界
あなたの知らないPostgreSQL監視の世界あなたの知らないPostgreSQL監視の世界
あなたの知らないPostgreSQL監視の世界
 
LogbackからLog4j 2への移行によるアプリケーションのスループット改善 ( JJUG CCC 2021 Fall )
LogbackからLog4j 2への移行によるアプリケーションのスループット改善 ( JJUG CCC 2021 Fall ) LogbackからLog4j 2への移行によるアプリケーションのスループット改善 ( JJUG CCC 2021 Fall )
LogbackからLog4j 2への移行によるアプリケーションのスループット改善 ( JJUG CCC 2021 Fall )
 
コンテナネットワーキング(CNI)最前線
コンテナネットワーキング(CNI)最前線コンテナネットワーキング(CNI)最前線
コンテナネットワーキング(CNI)最前線
 
Stargz Snapshotter: イメージのpullを省略しcontainerdでコンテナを高速に起動する
Stargz Snapshotter: イメージのpullを省略しcontainerdでコンテナを高速に起動するStargz Snapshotter: イメージのpullを省略しcontainerdでコンテナを高速に起動する
Stargz Snapshotter: イメージのpullを省略しcontainerdでコンテナを高速に起動する
 

Semelhante a 五行完成網頁多國語系

July.2011.w3ctech
July.2011.w3ctechJuly.2011.w3ctech
July.2011.w3ctech
Kai Cui
 
Web设计 3 java_script初探(程序员与设计师的双重眼光)
Web设计 3 java_script初探(程序员与设计师的双重眼光)Web设计 3 java_script初探(程序员与设计师的双重眼光)
Web设计 3 java_script初探(程序员与设计师的双重眼光)
ziggear
 
给聚划算后端开发的前端培训
给聚划算后端开发的前端培训给聚划算后端开发的前端培训
给聚划算后端开发的前端培训
j5726
 
浅析浏览器解析和渲染
浅析浏览器解析和渲染浅析浏览器解析和渲染
浅析浏览器解析和渲染
Ailsa126
 
构建可维护的Javascript 小米网
构建可维护的Javascript 小米网构建可维护的Javascript 小米网
构建可维护的Javascript 小米网
yang alex
 
从无阻塞并行脚本加载(Lab.js)到浏览器消息模型
从无阻塞并行脚本加载(Lab.js)到浏览器消息模型从无阻塞并行脚本加载(Lab.js)到浏览器消息模型
从无阻塞并行脚本加载(Lab.js)到浏览器消息模型
Jackson Tian
 
Web设计 2 工欲善其事(开发web项目工具的选择)
Web设计 2 工欲善其事(开发web项目工具的选择)Web设计 2 工欲善其事(开发web项目工具的选择)
Web设计 2 工欲善其事(开发web项目工具的选择)
ziggear
 
使用Javascript及HTML5打造協同運作系統
使用Javascript及HTML5打造協同運作系統使用Javascript及HTML5打造協同運作系統
使用Javascript及HTML5打造協同運作系統
Hsu Ping Feng
 

Semelhante a 五行完成網頁多國語系 (20)

July.2011.w3ctech
July.2011.w3ctechJuly.2011.w3ctech
July.2011.w3ctech
 
Web设计 3 java_script初探(程序员与设计师的双重眼光)
Web设计 3 java_script初探(程序员与设计师的双重眼光)Web设计 3 java_script初探(程序员与设计师的双重眼光)
Web设计 3 java_script初探(程序员与设计师的双重眼光)
 
TypeScript
TypeScriptTypeScript
TypeScript
 
给聚划算后端开发的前端培训
给聚划算后端开发的前端培训给聚划算后端开发的前端培训
给聚划算后端开发的前端培训
 
浅析浏览器解析和渲染
浅析浏览器解析和渲染浅析浏览器解析和渲染
浅析浏览器解析和渲染
 
前端開發學習簡介
前端開發學習簡介前端開發學習簡介
前端開發學習簡介
 
构建可维护的Javascript 小米网
构建可维护的Javascript 小米网构建可维护的Javascript 小米网
构建可维护的Javascript 小米网
 
日新培训
日新培训日新培训
日新培训
 
Exam 98-375 HTML5 Application Development Fundamentals
Exam 98-375 HTML5 Application Development FundamentalsExam 98-375 HTML5 Application Development Fundamentals
Exam 98-375 HTML5 Application Development Fundamentals
 
Node.js 進攻桌面開發
Node.js 進攻桌面開發Node.js 進攻桌面開發
Node.js 進攻桌面開發
 
从无阻塞并行脚本加载(Lab.js)到浏览器消息模型
从无阻塞并行脚本加载(Lab.js)到浏览器消息模型从无阻塞并行脚本加载(Lab.js)到浏览器消息模型
从无阻塞并行脚本加载(Lab.js)到浏览器消息模型
 
移动Web开发框架jqm探讨
移动Web开发框架jqm探讨移动Web开发框架jqm探讨
移动Web开发框架jqm探讨
 
Dynamic JS Loader
Dynamic JS LoaderDynamic JS Loader
Dynamic JS Loader
 
Web设计 2 工欲善其事(开发web项目工具的选择)
Web设计 2 工欲善其事(开发web项目工具的选择)Web设计 2 工欲善其事(开发web项目工具的选择)
Web设计 2 工欲善其事(开发web项目工具的选择)
 
使用Javascript及HTML5打造協同運作系統
使用Javascript及HTML5打造協同運作系統使用Javascript及HTML5打造協同運作系統
使用Javascript及HTML5打造協同運作系統
 
Html5
Html5Html5
Html5
 
Cocoa on Rails 4th
Cocoa on Rails 4thCocoa on Rails 4th
Cocoa on Rails 4th
 
Web Development Roadmap
Web Development RoadmapWeb Development Roadmap
Web Development Roadmap
 
React.js what do you really mean?
React.js what do you really mean?React.js what do you really mean?
React.js what do you really mean?
 
Elixir 好用的編輯器
Elixir 好用的編輯器Elixir 好用的編輯器
Elixir 好用的編輯器
 

五行完成網頁多國語系