2014-02-24 33 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