我对AngularJs 2感兴趣,因此我打算在我的新项目中使用它。但是,我想用Php gettext启用i18n。
我在之前的项目中使用了Php gettext,如下所示(在javascript中嵌入Php)
//saved as "js-functions.php"
var msg = '<?php echo _('Hello, I am newbie in programming'); ?>';
但是,如果我使用Typescript,我不知道如何在Typescript文件中使用“ include ”Php标签。
//saved as "app-template.ts"
let msg = '<?php echo _('How should I include this in .ts file?'); ?>';
在Javascript中转换Typescript会有问题吗?还是有问题的intellisense?
相关问题:
此外,我已经看到一些教程建议我们应该让Angular Js 2处理所有视图,并且应该从服务器发送这些数据(包括字符串)以使其成为RESTful。那么,我是否需要重新构建程序并尝试在服务器中翻译这些字符串,然后发送到客户端进行显示?
嗯...如果我有一个privacy-policy.ts
文件,该文件定义了template
,包括静态内容(即bla bla bla,所有那些无聊的单词),我应该翻译那些服务器中的单词,并发送到客户端进行显示?在Angular Js 2 template
编写所有这些单词是正确的做法吗?
嗯......或者对于Typescript来说它们是 php gettext replacement ,我正在寻找一种能够自动从我的项目中获取所有gettext字符串的工具,包括Php,js和ts文件。
或者,如果您对处理i18n的Typescript + Php项目有任何更好的想法,请随时咨询。
答案 0 :(得分:1)
回答一个老问题。希望对在此居住的任何人都有用。
有两种方法可以实现此目的,但我建议不要沿用将PHP标记嵌入javascript变量的方法。
您在正确的轨道上,您可以拥有一个包含所有翻译的文件,并且它将导出一个函数,该函数使用该数据将字符串转换为相应的语言环境。这些翻译数据既可以与您的主要javascript文件捆绑在一起,然后发送给客户端,也可以将其提取到单独的文件中,以便浏览器可以同时加载数据并减小捆绑包的大小。
或者您可以托管一个API,该API根据您尝试转换为的语言环境为您提供翻译数据,并将其注入到您的应用程序中。
无论走什么路径,如果您自己都不打算这样做的话,可以在npm中找到几个i18n库。