在我的应用程序中,我有一个自定义插件,其形式大约有80个可翻译字段 . 该表单将在后端(针对管理员)和前端(针对最终用户)中提供相同的标签 .
我想使用Rainlab Translate插件翻译所有字段的标签,以便管理员可以轻松地更改它们以满足他们的需求 .
问题是所有后端翻译都存储在文件系统中(例如/plugins/my-plugin/lang/en/lang.php) .
是否可以使用Rainlab Translate插件管理自定义插件的翻译?这将避免PHP翻译文件和数据库之间的重复 .
到目前为止,我已经安装了Rainlab Translate插件,用法语和德语翻译前端 .
感谢你们!
2 回答
我想出了一个解决方案,创建了一个自定义插件,扩展了10月CMS后端翻译服务 . 我已将以下代码添加到我的插件的boot()方法中:
我创建了一个Translator类,它扩展了默认类并实现了翻译的数据库查找 . 如果未找到转换,它还会回退到基于默认数组文件的转换 .
以下Message类的代码:
欢迎提供此解决方案的任何反馈 .
从理论上讲,我认为应该可以返回通过Translate实例加载的数组,而不是返回预定义的数组 .
因此,不是在
lang/en/lang.php
中返回一个简单的数组,而是使用与前端的键匹配的键填充数组 .所以代替:
做这样的事情:
检索所有语言键
遍历所有键并获得正确的语言字符串
将关键字添加到关联数组
Update:
我能找到的最快捷的方法是创建一个包含所有相关键的配置文件,并在
rainlab_translate_messages
表的查询中使用它 . 您将所有值转换为正确的格式(assoc数组),并在lang.php
文件中返回此值 .这是疯狂的hacky,感觉很脏,可能非常容易出错 . 但应该工作 .
Note: If someone comes up with a better way, please use that. This isn't really something I would advise. But hey, I guess it works.