![]() |
1
1
从长远来看,你尝试的解决方案会对你不利。 在不同语言的不同文件之间切换似乎是一个简单的解决方案,但假设您的网站变得更加动态,而不是*。要处理的html文件*。php文件,然后需要在每个本地化文件中具有相同的逻辑。它的伸缩性不好。 我建议使用翻译库,有很多可用的,我在 symfony's translation ,也可以包含在任何php项目中。 然后翻译变成:
然后可以在yaml文件中维护翻译,并根据语言环境选择正确的语言,每个未翻译的字符串将默认为英语。 现在,每当你的逻辑发生变化时,你只需要在一个地方进行调整。 |
![]() |
2
0
我同意K0pernikus的观点,因为您的解决方案无法很好地扩展。您可以在不到一个小时的时间内自己编写一个简单的翻译库,然后对其进行测试,看看它是否能够满足您的需要。 想法是让语言文件中没有任何逻辑。您只需调用所需的文件。库中包含关于哪种语言、文件、翻译键等的所有逻辑。 我将保持它非常简单,并简化为一个文件;当然,实际的翻译也需要存储在一个文件中。 目录结构:
在每个
接下来,您需要一个库来阅读这些翻译并将实际的翻译文本返回给您。该文件可以是助手函数的集合,也可以是成熟的OOP系统。
为了简单起见,下面是一组帮助器方法,可以完成工作。它不实现参数化替换,您可以通过
这里的主要方法是
首先,它试图确定使用哪种语言。它按优先级顺序执行:URL、会话、浏览器、回退。
一旦找到一种语言,它就会将其放入会话中,这样下一个请求就不需要再次进行所有这些操作。它还加载适当的
最后,一旦找到语言并将正确的文件加载到内存中,它就会搜索给定的
要使用它,请将这些方法保存到名为
示例:
编辑 我要说的最后一件事是,有一个关于本地化、国际化(通常缩写为i18n)的完整世界,您可以了解它。 在我的示例中,我简单地将其称为语言,但人们通常将其称为语言环境,但这具有不同的含义和语法。例如,en\u CA与en\u US和en\u GB之间存在差异;他们都是英语,但有地区差异。
|
![]() |
code-geek · Jquery根据单选按钮选择隐藏或显示文本字段 4 月前 |
|
Jamie · 在CSS链接的文件名中添加Jinja占位符 4 月前 |
![]() |
ptownbro · 重叠分区标签,同时保持以下所有分区和内容就位 4 月前 |
![]() |
john Rizzo · 按钮背景颜色、悬停和活动状态存在问题 4 月前 |