如何在 CakePHP 中使用 TranslateBehavior?

2023-12-06

cakephp.org 上没有文档,我无法在 google 上找到文档。请给我链接一些文档或提供一份!


翻译行为是 CakePHP 的另一个非常有用但文档很少的功能。我已经在多语言网站上实施了几次,并取得了一定的成功,遵循以下原则。

首先,翻译行为只会国际化您网站的数据库内容。如果您有更多静态内容,您将需要查看 Cake's__('string')包装函数和gettext(有一些关于此的有用信息here)

假设我们要使用以下数据库表转换内容:

CREATE TABLE `contents` (
    `id` int(11) unsigned NOT NULL auto_increment,
    `title` varchar(255) default NULL,
    `body` text,
  PRIMARY KEY  (`id`),
) ENGINE=InnoDB  DEFAULT CHARSET=utf8;

content.php 模型有:

var $actsAs = array('Translate' => array('title'   => 'titleTranslation',
                     'body'    => 'bodyTranslation'
                     ));

在其定义中。然后您需要将 i18n 表添加到数据库中:

CREATE TABLE `i18n` (
  `id` int(10) NOT NULL auto_increment,
  `locale` varchar(6) NOT NULL,
  `model` varchar(255) NOT NULL,
  `foreign_key` int(10) NOT NULL,
  `field` varchar(255) NOT NULL,
  `content` mediumtext,
  PRIMARY KEY  (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8;

然后,当您将数据保存到控制器中的数据库时,将区域设置设置为您想要的语言(此示例适用于波兰语):

$this->Content->locale = 'pol';
$result = $this->Content->save($this->data);

这将在 i18n 表中为 pol 语言环境的标题和正文字段创建条目。 Finds 将根据用户浏览器中设置的当前区域设置进行查找,返回一个数组,例如:

[Content]
  [id]
  [titleTranslation]
  [bodyTranslation]

我们用优秀的p28n成分实现一个与 gettext 和翻译行为配合良好的语言切换解决方案。

它不是一个完美的系统 - 因为它会动态创建 HABTM 关系,所以可能会导致您手动创建的其他关系出现一些问题,但如果您小心的话,它可以很好地工作。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 CakePHP 中使用 TranslateBehavior? 的相关文章

  • 任何嵌入式文档查看器

    我希望在我的 CakePHP 应用程序中包含一个文档查看器 用于上传文档 我想要一个支持 Microsoft Word DOC 和 DOCX Microsoft PowerPoint PPT 和 PPTX 和 Adob e 便携式文档格式
  • 将数据保存到另一个模型 cakePHP 3.5

    我还是 cakephp 的初学者 我有表格问题和问题测验 我在问题控制器中创建了名为existingQuestion 的表单 并希望将其保存在表questionQuizzes 中 但是 该表格无法保存 我已经关注了这个example htt
  • 使用前缀路由时 url 中的 CakePHP3.x 控制器名称

    我正在尝试在 CakePHP3 中使用前缀路由 我将以下几行添加到 config routes php Router prefix admin function routes All routes here will be prefixed
  • CakePhp - 关联数据未保存(但主模型数据确实保存)

    所以 我在 CakePhp 中有一个使用 Formhelper 的表单 此表单中有两个关联模型 Booking 和 Guest 数据库表似乎设置正确 因为页面通过模型中的关联足够准确地填充了值 保存表单数据时 会保存预订信息 但不会保存宾客
  • 在 cakephp 中分配布局

    我们可以在该特定控制器中为整个控制器定义一个布局吗 我之前已经在应用程序控制器的过滤器之前用于此目的 但它不再解决它 所以我需要在控制器中应该有一些适用于的布局定义该控制器的所有操作 Regards use it 在你的行动中 this g
  • 错误:数据库连接“Sqlite”丢失,或无法创建 Cakephp 2.9.0

    您好 我正在使用 phpdesktop 构建桌面应用程序 我遇到了这个问题Error Database connection Sqlite is missing or could not be created 使用时cake bake 我能
  • Cake 无法连接到数据库

    我正在使用 Wamp 服务器 并尝试安装 CakePHP 2 0 0 但遇到了问题 我把 CakePHP 2 0 0 文件放在我的wamp服务器文件夹 www 进而 cake 文件夹 当我输入地址时http localhost cake在我
  • Cakephp 3 - 运行 phpunit 测试时出现 MissingDatasourceConfigException

    我正在尝试使用 PHPUnit 4 7 3 在 CakePHP 3 中运行一些单元测试 但出现以下错误 PHPUnit 4 7 3 by Sebastian Bergmann and contributors There was 1 err
  • CakePHP 错误:无法配置会话,设置 session.auto_start 失败

    我收到此错误 Error CakeSessionException Unable to configure the session setting session auto start failed 我正在使用 Cakephp 2 2 4
  • 在 CakePHP 应用程序中启用 CORS

    我正在尝试为 CakePHP 中内置的 API 启用 CORS 以便可以通过 AppController 中的以下内容访问所有请求 public function beforeFilter header Access Control All
  • Python 中的意外列表行为

    我想颠倒一个列表 我成功地做到了 但在工作的过程中我发现了一些奇怪的事情 以下程序按预期工作 但未注释行list reversed i list len list 1 i and 打印 列表 i 评论最后一行当然 导致了改变list 我没看
  • 缓存文件模型 cakePHP

    将模型文件缓存在 app tmp cache models 中 我设置配置 Cache config default array engine gt File duration gt 3600000 serialize gt false 为
  • CakePHP 3.0:如何在重复键更新时进行插入?

    我有一个数组 articles像这样 int 0 gt id gt 940039 xe dsca gt P2768G 1 xe citg gt 1F0200 xe cuni gt stk xe seak gt P2768G 1 xe sea
  • 我可以停止 CakePHP 获取查询的所有行吗?

    我正在使用 CakePHP 和 modelName gt find 调用选择相当多的行 可能是数百行 通常 在 PHP MySQL 中这当然不会成为问题 因为您在 while 循环中获取它们 但是 CakePHP 将所有行加载到一个数组中
  • cakePHP 命名约定如何工作?

    我对 PHP 比较陌生 开始学习 PHP 但后来遇到了 cakePHP 它应该可以加快开发时间 阅读文档和博客教程后 我仍然不明白命名约定 我想直到我开始做一些例子我才会知道 但是为了让我开始 有人可以向我解释 cakePHP 如何将数据库
  • CakePHP 验证错误消息

    我正在尝试修改 CakePHP 显示错误消息的方式 下面是用于显示错误的通用模板 div class error message Please enter at least 3 characters div 我想像下面这样设置错误的样式
  • 将变量从 PHP 传递到 JavaScript 的有效方法[重复]

    这个问题在这里已经有答案了 有时我必须将一些变量从 PHP 传递到 JS 脚本 现在我是这样做的 var js variable 但这非常丑陋 我无法在 js 文件中隐藏我的 JS 脚本 因为它必须由 PHP 解析 处理这个问题的最佳解决方
  • 按 ID 分组和按日期排序

    lastComments this gt Comment gt find all array fields gt array Comment news id Comment date Comment content group gt arr
  • CakePHP 3.X 中的自定义 404 页面

    我想为生产环境中出现的所有错误创建一个自定义 404 页面 例如 如果我收到缺少控制器或视图错误 那么它将重定向到http example com 404 html 另外在某些情况下我会故意重定向它http example com 404
  • CakePHP 3 API 的 POST 请求不起作用

    我正在使用 CakePHP 3 x 文档开发 API 为了开发这个 API 我使用了他们的官方文档 https book cakephp org 3 0 en development rest html https book cakephp

随机推荐

  • 异步ajax请求锁定浏览器

    这是启动一个简单的代码片段异步阿贾克斯请求 请求的处理时间为故意长 10 秒或更长时间 Why 浏览器阻止我的用户点击在异步请求过程中在 href 链接上 已尝试使用 Firefox 和 Chrome The 异步请求通常被调用并且 就绪
  • 如何将Python项目转换为可执行文件

    我有一个 Python 项目 我想将其转换为可执行文件 我已经安装了Pyinstaller 我只知道如何将一个脚本转换为 exe 但我有多个包含多个 python 脚本的包 我成功使用的命令行是 pyinstaller noupx onef
  • 是否可以将 Xamarin ios 应用程序连接到 swift watchOS 扩展

    我已经有一个在 swift 下开发的 WatchOSExtension 是否可以将其连接到新开发的 xamarin ios 项目 不 不可能将 Swift 扩展与 Xamarin 应用程序一起使用 这也适用于任何形式的 iOS 扩展 您将需
  • 按值返回的右值引用参数是 xvalue 吗?

    我的理解是 在下面的函数中 表达式foo在声明中return foo 是一个 xvalue 因为它表示的对象即将过期 即使foo是前面语句中的左值 Foo bar Foo foo change foo return foo 此类到期值不属于
  • 跟进术语,寻找行动项目

    我想编写一个快速脚本来提醒自己将后续操作项目放在各种谷歌文档上 从谷歌驱动器中受益 以便从 API list 中受益 然而 似乎followup actionitems搜索查询不适用于 API 因为搜索词未知 它返回 400 错误 例如 这
  • 尝试 listview.getChildAt() 时出现 java.lang.NullPointerException

    ListView 具有正确的值 public class FragmentTab1 extends SherlockFragment ListView list LazyAdapter adapter Override public voi
  • 获取父 ID 的子页面并显示自定义图像字段以及 WordPress 中页面的链接

    我需要获取子页面列表 但我需要排除第一个子页面 我还需要显示一个名为 page icon 的自定义图像字段 其中包含每个图像的 url 和页面标题 这将充当子菜单 将显示在每个子页面上 每个菜单项都需要将当前类附加到 a 标签 我尝试了多种
  • Accumulo 支持聚合吗?

    我是 Accumulo 的新手 我知道我可以编写 Java 代码来使用 Hadoop 和 MapReduce 扫描 插入 更新和删除数据 我想知道的是 Accumulo 中是否可以进行聚合 我知道在MySql中我们可以使用groupby o
  • Windows 中用于生物识别身份验证的凭据提供程序

    我有一个定制的基于 USB 的指纹识别设备 如何将设备上的指纹与 Windows 计算机的用户关联起来 使用 CredentialProvider 首先 我希望在指纹扫描时自动登录 而不提示输入用户名 密码 我意识到应该有一些注册过程来将指
  • Chome 扩展:将 chrome.storage 数据从后台脚本发送到 popup/contentscript

    如标题中所述 我正在尝试编写一个后台脚本 该脚本将侦听来自 popup js 或 contentscript js 的加载请求 当它接收到负载时 它会获取 chrome storage local 的内容 执行一些数据处理 for 循环 并
  • 如何使用 Pharo 每 60 秒刷新一次会话并将其显示在成绩单上?

    a b a ZnClient new a get http cloud storage com login a formAt username put jom formAt password put mypass post get http
  • 自定义或可重复使用的 HTML 组件

    我们可以在 HTML 中创建自定义或可重用的组件吗 我的页面具有帐户搜索功能 该功能是使用 HTML JS jQuery 代码实现的 我的页面由不同地方的帐户搜索组成 功能同样困难 每次使用时 只有 div 的 ID 会发生变化 那么我们能
  • 控制中心中的“播放/暂停下一个/上一个”按钮显示为灰色

    在我的应用程序中 播放是从控制中心控制的 当在 AVPlayer 中进行播放时 此时播放控件在控制中心工作正常 我正在加载带有其他流 URL 的 Web 视图 一旦流再次完成 我就开始从 AVPlayer 播放 此后 控制中心的播放控件将显
  • javascript Thrift 客户端挂起

    我在 javascript 中有以下 Thrift 客户端代码
  • JAXB 解组 XML 字符串 - 循环遍历所有标签

    我是 Java 编程新手 正在解组以下 XML 字符串 我的任务是获取客户的姓名 这个字符串 我已经为一位客户做过 我需要获取所有客户姓名 我需要有关循环部分的帮助 这适用于一位客户 我的Java代码 XMLInputFactory xif
  • Sprite Kit - iOS 7.1 更新后由于缩放而导致对象碰撞

    没有问题 但在 iOS 7 1 更新后 物体碰撞 2pipes 的间隙 之前有人说过 这可能是因为 yScale 但我找不到解决方案 一些代码 Pipe pipe Pipe alloc initWithImageNamed pipeImag
  • @onclick="(() => SomeMethod(参数))"

    我正在研究 Blazor 偶然发现了这个表达式 onclick gt SomeMethod parameter 我无法在任何地方找到 谷歌这个 我猜 lambda 表达式实际上在做什么 谁能帮我解释一下这部分 gt 以及为什么使用它以及在哪
  • 如何使用 Webpack 2 获取数据属性内的图像?

    我在用 pug我的 HTML 和标准模板src我的图像上的属性如下所示 img src images image 当我跑步时webpack p 任何定义在src我的图像被 Webpack 找到并放入我的dist目录 这正是我所期望发生的事情
  • asp.net 树形视图复选框选择

    我有几个父节点 每个父节点都包含一个子节点列表 我的显示复选框设置为全部 我的问题 在客户端 当我检查父节点时 如何在不进行回发或使用 ajax 的情况下检查所有子节点 Regards tv Attributes Add onclick O
  • 如何在 CakePHP 中使用 TranslateBehavior?

    cakephp org 上没有文档 我无法在 google 上找到文档 请给我链接一些文档或提供一份 翻译行为是 CakePHP 的另一个非常有用但文档很少的功能 我已经在多语言网站上实施了几次 并取得了一定的成功 遵循以下原则 首先 翻译