Zend Framework:模型内的可翻译内容

发布于 2024-10-15 09:54:08 字数 185 浏览 2 评论 0原文

我的应用程序中有一个模型,负责创建初始数据库结构(类似于安装程序)。我最近添加了可翻译内容(使用 gettext)。我想让初始内容依赖于语言。

在模型中使用可翻译内容的最佳方法是什么?有没有办法在模型内部使用 view->translate() 函数,或者我是否需要从外部传递已经翻译的字符串,例如作为参数?

I have a model in my app that takes care of creating the initial database structure (sort of an installer). I recently added translatable content (uses gettext). I would like to make the initial content language dependent.

What's the best way to use translatable content inside a model? Is there a way to use the view->translate() function inside the model or do I need to pass the already translated strings from the outside, e.g. as a parameter?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

浅暮の光 2024-10-22 09:54:08

假设您已经引导了 Zend_Locale 和 Zend_Translate,并且它们保存在 Zend_Registry 中(默认情况下,它们分别位于注册表中的键“Zend_Locale”和“Zend_Translate”下),您可以在您的文件中访问 translate() 方法模型如下:

    /*@var $translator Zend_Translate */
    $translator = Zend_Registry::get('Zend_Translate');

    /*@var $adapter Zend_Translate_Adapter */
    $adapter = $translator->getAdapter();

    var_dump($adapter->translate('Text to be translated'));

上例中的翻译将根据您的 Zend_Locale 进行。

在模型中转换数据的最佳方法是什么?我不知道。如果您想让翻译对您的控制器甚至模型“不可见”或“透明”,您可以重载 Zend_DB_Table_Row 的神奇方法 __get 和 __set 并在那里嵌入 translate() 方法。

Assuming that you have bootsraped Zend_Locale and Zend_Translate, and they are saved in the Zend_Registry (by default they are in registry under keys 'Zend_Locale' and 'Zend_Translate' respectively) you can access translate() method in your models as follows:

    /*@var $translator Zend_Translate */
    $translator = Zend_Registry::get('Zend_Translate');

    /*@var $adapter Zend_Translate_Adapter */
    $adapter = $translator->getAdapter();

    var_dump($adapter->translate('Text to be translated'));

The translation in the above example will be performed according to your Zend_Locale.

And what would be the best way to translate data in your models? I'm not sure. If you want to make the translation 'invisible' or 'transparent' to your controllers or even models, you could maybe overload magical methods __get and __set of Zend_DB_Table_Row and embed translate() method there.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文