如何在单页面应用程序中提供多语言支持?

时间:2014-02-24 08:13:12

标签: javascript single-page-application multilingual

我们希望所有静态资源(HTML,CSS,JS)都是静态页面(而不是在服务器上呈现),但遇到了问题。为了支持多语言,我们必须在代码中嵌入不同语言的上下文。因此,在开发过程中,我们必须在每次文件更改时将源文件编译为多个副本。 随着项目变得越来越大,编译可能会非常缓慢,并且项目难以管理。

是否有在单页面应用程序中支持多语言的最佳实践?

1 个答案:

答案 0 :(得分: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']?>');
}

<强>赞成

  • 不会影响页面加载速度,请求大小,浏览器缓存文件(保持性能)

<强>缺点

  • 在服务器端需要更多的工作,或者你应该构建一个小框架来做到这一点。

这只是我个人的想法,我认为人们已经为此创造了一些设计模式。