mouf / utils.i18n.fine.translation-interface
该软件包包含所有翻译服务共享的两个接口。LanguageDetectionInterface 用于检测用户的当前语言,而 TranslatorInterface 用于翻译字符串。
Requires
- php: >=5.4.0
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/"
}
}
}
如你所见,包括了许多软件包
- mouf/utils.i18n.fine.translation-interface: Fine 是一个模块化软件包。您可以替换其任何部分(语言检测、翻译系统等...)。该软件包包含其他软件包实现的语言检测和翻译系统接口。
- mouf/utils.i18n.fine.language-detection: 该软件包包含用于检测用户语言(基于浏览器、会话等...)的类。
- mouf/utils.i18n.fine.file-translation: 存储翻译有多种解决方案。默认情况下,已启用文件存储。还有其他软件包
- mouf/utils.i18n.fine.bd-translation: 在数据库中存储翻译。
- mouf/utils.i18n.fine.manage.bo: 要管理翻译,此软件包在 Mouf 中添加了一个用于添加、编辑或删除翻译的人机界面。
- mouf/utils.i18n.fine.common: 该软件包包含安装程序,以帮助用户安装所有出色的软件包以开始,以及使用 Fine 或实现它的接口、功能或特质。
要安装软件包,在运行 composer 后,您必须转到 Mouf 界面并选择项目 -> 安装任务
点击“运行x个任务”按钮。
安装会创建所有使用精美的实例。
-
FineCacadingTranslator类用于级联所有翻译器。如果第一个没有翻译,则请求第二个……第一个翻译器有响应就返回。因此,翻译器的顺序非常重要。
-
在Mouf中找到defaultTranslationService实例,点击它。有一个TranslatorInterface表格
您的包已准备好编写代码!
使用接口
创建翻译
此接口可用于添加、编辑或删除翻译。您可以通过菜单HTML -> 精美 -> 管理翻译访问此接口。
会出现一个模态框,在标题输入框中您可以设置您的精美键,在此示例中是“test.key”。选择您的语言,例如英语,然后点击“添加”按钮。
右上角的选项用于在模态框底部显示语言。使用此翻译,您可以轻松地翻译所有消息。
编辑翻译
要编辑翻译,请点击键或直接点击翻译。您可以在模态框的“添加”选项卡中添加新语言。
删除翻译
您可以通过语言旁边的交叉符号删除一个翻译。之后,您可以验证仅删除该语言
在您的代码中
在您的代码中,您可以使用这些函数。它们默认绑定到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);
接口实现
如果您想创建自己的包,您可以查看实现