2014-02-24 77 views
0

我們希望我們所有的靜態資源(HTML,CSS,JS)都是靜態頁面(而不是在服務器上呈現),但遇到問題。爲了支持多種語言,我們必須在代碼中嵌入不同語言的上下文。因此,在開發過程中,我們必須在每次更改文件時將源文件編譯爲多個副本。 隨着項目越來越大,編制速度可能相當緩慢,項目難以管理。如何在單頁面應用程序中提供多語言支持?

在單頁面應用程序中是否支持多語言的最佳做法?

+0

檢查我的最新問題,我得到了一些很好的答案這個http://stackoverflow.com/questions/21896847/dynamically-generate-javascript-in-php-or-do-ajax-for-multilanguage-interface – user3256623

回答

0

我覺得使用服務器端腳本來響應HTML/CSS/JS文件是很好的方法。

一個小例子

的index.php

<?php 
    include_once 'lang.txt.php'; // Language dictionary file 
    $lang = isset($_GET['lang']) ? $_GET['lang'] : 'en'; // Default is English 
?> 
<!-- Include JS/CSS --> 
<script src="js/myScript.js.php?lang=<?=$lang?>"/> 
<link href="css/style.css.php?lang=<?=$lang?>" rel="stylesheet"/> 

<!-- Your HTML --> 
<div class="welcome-div"> 
    <!-- echo text base on $lang variable --> 
    You are viewing this page in <?=$getTextByLanguage[$lang]['welcome_message']?> 
    <script> 
     showMessage(); 
    </script> 
</div> 

myScript.js.php

<?php 
    include_once 'lang.txt.php'; 
    $lang = isset($_GET['lang']) ? $_GET['lang'] : 'en'; 
?> 
function showMessage() { 
    alert('<?=$getTextByLanguage[$lang]['welcome_message']?>'); 
} 

優點

  • 不會影響頁面加載速度,請求大小,瀏覽器緩存文件(保持性能)

缺點

  • 需要在服務器端更多的工作,也許你應該建立一個小框架來做到這一點。

這只是我個人的想法,我認爲人們已經對此創造了一些設計模式。

+0

東西如果我們可以在服務器端做這樣的事情就簡單多了。但是當他們決定在客戶端時,我們必須處理路由和封裝,甚至設置開發環境可能會很複雜。 – jiyinyiyong