0

我正在用德语编写一个 webapp,所以所有按钮、文本、工具提示等现在都是德语。但我想为 webapp 使用某种模板文件,以便在需要时快速更改为另一种语言。我想到了我explode使用"\n"并加载到会话变量中的文本文件,以始终拥有用户在其会话中需要的所有文本。另一种方法是解析这样的文件,即这样的 XML 文档:

<?xml version="1.0"?>
<phrase>
    <placeholder></placeholder>
    <value></value>
</phrase>

每个字段都有自己的名称/值,代表文本片段或按钮或网站上的任何内容,然后将其转换为对象并为每个人缓存。我认为第二种方法最适合为 webapp 使用多种语言。任何人都可以指点我可以做得更好的地方,或者只是发布您过去如何为跨国网页/网络应用程序进行这种语言模板。

4

3 回答 3

1

由于您正在寻找翻译解决方案,我知道您不使用框架来开发您的网站,因为它们中的大多数都为您提供了处理翻译的解决方案。

我在php中看到的大多数框架和应用程序都使用数组,其中原句是键,翻译是值。因此,为了更容易将其翻译成多种语言,关键是英文。

如果您按照建议使用 gettext 或其他方法,解析您的代码以捕获所有要自动翻译的字符串也会很有用,因为当基本代码增长并且您想要保留时手动执行它可能会很麻烦更新您的翻译。

于 2013-07-16T12:23:00.720 回答
1

看看GNU Gettext,它对于多语言支持非常方便。

主要思想是您只需将单词或短语包装到一个函数中,例如

echo _g('Hello');

所以你没有任何引擎变化。您必须为您使用的每种语言添加翻译文件。

于 2013-07-16T12:11:34.327 回答
0

您已经提出了 2 个存储数据的解决方案,但我建议您需要进一步考虑架构并更全面地了解每个请求的生命周期。

关于架构:这两种解决方案都无法很好地描述广泛的词汇——尽管一页或两页就足够了。另一种方法是管理翻译数据库(例如 gettext),这可能是多余的 - 并且在少量页面上执行得不太理想,但重要的是,对于大型/多个字典,性能不会显着下降。一种折衷的解决方案可能是为每种 URL/语言(可能从统一数据库中提取)提供一个数据集。

如果是我,我不会使用您建议的任何一种方法来存储数据:解析 XML 会为每个页面请求创建一个巨大的开销:使用 \n 作为分隔符会排除在翻译中使用 \n 的可能性。使用序列化 PHP 数组似乎是最便宜的解决方案。

于 2013-07-16T12:41:36.707 回答