当前位置: 首页 > 面试题库 >

PHP本地化最佳做法?gettext?

司马作人
2023-03-14
问题内容

我们正在使我们的网站国际化,允许多种语言。

我研究了php的“ gettext”,但是,如果我理解正确的话,我会发现一个很大的缺陷:

如果我的网页上有“ Hello World”作为静态文本。我可以将字符串作为<?php echo gettext("Hello World"); ?>,使用工具生成po / mo文件。然后,我将文件交给翻译人员进行处理。

几天后,我们想将英文文本更改为“ Hello Small
World”吗?是否更改gettext中的值?我是否可以创建英文PO文件并在那里进行更改?如果您更改gettext,它将认为它是一个新字符串,您将立即失去当前的翻译…

在我看来,php文件的内容将逐渐到处都是旧文本。否则,翻译人员可能会被告知“当您看到Hello World时,而是翻译Hello Small World”。

我不知道我很困惑。

在其他编程语言中,我已经看到它们使用诸如的关键字web.home.featured.HelloWorld

在PHP中处理翻译的最佳方法是什么?

谢谢


问题答案:

您基本上是问并回答了自己的问题,答案可能只是对PO文件的工作html" target="_blank">原理有了更好的了解。

在PO文件中,您有一个msgid和一个msgstr。msgid是根据本地化在PHP文件中替换为msgstr的值。

现在,您可以将这些msgid变成任何您想要的东西,您可以很好地做到:

<?php echo _("web.home.featured.HelloWorld"); ?>

然后,您再也不会在源中再次触摸此字符串,只需通过PO文件编辑该字符串。

因此,基本上,您的问题的答案是,您为字符串应说的内容指定了gettext值标识符,但是翻译人员通常使用默认语言文件文本作为转换的基础,而不是标识符本身。

我希望这很清楚。



 类似资料:
  • 问题内容: 问题 在处理产品和订单的Web应用程序中,我想维护前雇员(用户)与其处理的订单之间的信息和关系。我想维护过时产品与包括这些产品的订单之间的信息和关系。 但是我希望员工能够整理管理界面,例如删除前员工,过时的产品,过时的产品组等。 我正在考虑实施软删除。那么,通常如何做到这一点? 我的即时想法 我的第一个想法是在应该可以软删除的每个对象表中粘贴“ TINYINT NOT NULL DEF

  • 问题内容: 我一直在学习PHP的语法并进行实践。我来自.NET背景,因此对于页眉和页脚,母版页始终使我很轻松。 到目前为止,我有一个mainHeader.php和mainFooter.php,其中包含我的头菜单和我的页脚html。我创建了一个mainBody.php,在顶部放了 对于页脚,我把 这样做非常好,让我微笑,因为我的页面都很好地融合在一起。mainHeader有我的,而mainFoote

  • 问题内容: 在我一直在构建的应用程序中,我们相当依赖于SharedPreferences,这使我思考了访问SharedPreferences时的最佳实践。例如,许多人说通过此调用可以访问它: 但是,这似乎很危险。如果您有依赖于SharedPreferences的大型应用程序,则可能会有密钥重复,尤其是在使用某些也依赖SharedPreferences的第三方库的情况下。在我看来,更好的使用方法是:

  • 问题内容: 当前,正在讨论具有单个sql连接体系结构的优缺点。 为了详细说明我们正在讨论的是,在应用程序创建时打开一个sql连接,在应用程序关闭或错误关闭该sql连接时。根本不创建另一个连接,而只使用那个与数据库进行通信。 我们想知道社区的想法。 问题答案: 一旦您在不确定的时间内不再需要连接,请立即将其关闭。这样,连接将返回到连接池(如果启用了连接池),并且可以被其他人(重新使用)。 (连接是昂

  • 问题内容: Web服务REST API版本是否存在任何已知的操作方法或最佳做法? 我注意到,AWS通过端点的URL进行版本控制。这是唯一的方法还是有其他方法可以实现相同的目标?如果有多种方法,每种方法的优点是什么? 问题答案: 这是一个很好且棘手的问题。URI设计主题同时是REST API的最突出部分,因此,对于该API的用户可能是长期的承诺。 由于应用程序的发展以及在较小程度上其API的存在是不

  • 问题内容: 我整理了一个非常类似于flickr照片流功能的脚本。两个缩略图彼此相邻,当您单击下一个或上一个链接时,下一个(或上一个)两个图像就会滑入其中。 当前,页面加载时将加载两个图像。第一次使用nxt / prv时,随后的两个图像或前两个图像通过ajax加载,第一个图像的ID在url中传递,而两个新图像的HTML通过ajax返回并显示。 足够简单,但是我不得不考虑在连接速度慢或服务器负载重的情