mouf/utils.i18n.fine.translation-interface

该软件包包含所有翻译服务共享的两个接口。LanguageDetectionInterface 用于检测用户的当前语言,而 TranslatorInterface 用于翻译字符串。

4.0.x-dev 2016-07-08 08:28 UTC

This package is auto-updated.

Last update: 2024-09-15 04:41:59 UTC


README

Fine 是一个 PHP 国际化软件包。它将帮助您开发支持多种语言的应用程序。FINE 的意思是:FINE 不是英语 :)

默认情况下,翻译使用 PHP 映射文件执行,但也可以使用其他实现(数据库存储)。Fine 是一个 Mouf 软件包。这意味着您将在 Mouf 框架内部拥有一个精美的图形界面来编写自己的翻译消息。

在本文档中,我们将描述如何使用 FINE 支持您应用程序中的多种语言。

TODO 截图界面 !!!

安装

依赖项

Fine 是一个 Composer 软件包,需要 "Mouf" 框架才能运行。因此,第一步是首先 安装 Mouf

Mouf 安装完成后,您可以继续安装 Fine。

安装 Fine

编辑您的 composer.json 文件,并添加对 mouf/utils.i18n.fine 的依赖项。

一个典型的 composer.json 文件可能如下所示

    {
        "require": {
            "mouf/mouf": "~2.0.0",
            "mouf/utils.i18n.fine.translation-interface": "~4.0",
            "mouf/utils.i18n.fine.language-detection": "~4.0",
            "mouf/utils.i18n.fine.file-translator": "~4.0",
            "mouf/utils.i18n.fine.manage.bo": "~4.0",
            "mouf/utils.i18n.fine.common": "~4.0"
        },
        "autoload": {
            "psr-4": {
                "Test\\": "src/"
            }
        }
    }

如你所见,包括了许多软件包

要安装软件包,在运行 composer 后,您必须转到 Mouf 界面并选择项目 -> 安装任务 Fine 任务菜单

您可以查看必须安装的精美包列表。精美任务安装

点击“运行x个任务”按钮。

安装会创建所有使用精美的实例。

  • FineCacadingTranslator类用于级联所有翻译器。如果第一个没有翻译,则请求第二个……第一个翻译器有响应就返回。因此,翻译器的顺序非常重要。

  • 在Mouf中找到defaultTranslationService实例,点击它。有一个TranslatorInterface表格精美默认实例截图

  • 要添加新实例,请点击“添加实例”,别忘了配置它!精美添加实例截图

  • 要更改顺序,只需将实例拖放到另一个实例之前或之后精美实例顺序截图

您的包已准备好编写代码!

使用接口

创建翻译

此接口可用于添加、编辑或删除翻译。您可以通过菜单HTML -> 精美 -> 管理翻译访问此接口。精美安装菜单截图

在此接口中有一个按钮用于添加新翻译。精美安装接口截图

会出现一个模态框,在标题输入框中您可以设置您的精美键,在此示例中是“test.key”。选择您的语言,例如英语,然后点击“添加”按钮。精美安装新翻译截图

在文本区域输入消息。然后点击“保存所有翻译”按钮。精美安装消息截图

在此页面上您可以查看您的翻译。精美安装显示截图

右上角的选项用于在模态框底部显示语言。使用此翻译,您可以轻松地翻译所有消息。精美安装翻译截图

编辑翻译

要编辑翻译,请点击键或直接点击翻译。您可以在模态框的“添加”选项卡中添加新语言。

删除翻译

您可以通过语言旁边的交叉符号删除一个翻译。之后,您可以验证仅删除该语言 Fine安装删除翻译截图

要删除整个键,请单击底部的“删除键”按钮并验证。 Fine安装删除键截图

在您的代码中

在您的代码中,您可以使用这些函数。它们默认绑定到defaultTranslationService

  • iMsg函数:返回键的翻译,参数(可选)和LanguageDetection(可选)
  • eMsg函数:执行iMsg的echo

示例

$string = iMsg('mykey', array('parameter1' => 'value'));
eMsg('mykey', array('parameter1' => 'value'));

消息键mykey是:"A test with {parameter1}"

您可以在代码中间添加一个LanguageDetectionInterface实例(例如更改语言)。示例:在这个控制器中,您已经绑定了一个名为$fixEnglishLanguage的LanguageDetetionInterface实例。因此,您可以调用该函数

iMsg('myKey', array('parameter1' => 'value'), $this->fixEnglishLanguage);

接口实现

如果您想创建自己的包,您可以查看实现