早上好,
我有一个多语言的后端应用程序,需要支持n种语言。这些语言存储在数据库中,可以随时添加。
现在,为了我的后端功能,我需要根据数据库中存储的语言动态生成字段,例如:
我有一个多语言的后端应用程序,需要支持n种语言。这些语言存储在数据库中,可以随时添加。
现在,为了我的后端功能,我需要根据数据库中存储的语言动态生成字段,例如:
我目前使用Zend_Form进行添加。
- 德语:
<input type="text" id="title_de">
- 英语:
<input type="text" id="title_en">
- 意大利语:
<input type="text" id="title_it">
- ...
foreach($languages as $language){
$title = new Zend_Form_Element_Text("title_" . $language->getPrefix());
$title->setLabel("Title " . $language->getPrefix())
->setRequired(true)
$this->addElements(array($title));
}
以下是我使用Doctrine将字段保存到数据库的步骤:
//get language-dependent title and write to DB
foreach($languages as $language){
$title->setLanguage($language);
$title->setContent($form->getValue("title_" . $language->getPrefix()));
$touristArea->addTitle($title);
//persist and flush
$em->persist($touristArea);
$em->flush();
}
无论如何,由于我有许多与语言相关的字段(标题、说明等),处理表单的代码可能会变得非常混乱,我必须始终查询我的数据库中的语言表以了解生成了哪些输入。 是否有更好的方法来做到这一点?比如使用输入数组或类似的东西?感谢任何建议 :)
Zend_Translate
,我会去看看它。 - AdrenaxusZend_Translate
来翻译我的<input>
标签的 ID,而不是像这样手动设置$title = new Zend_Form_Element_Text("title_" . $language->getPrefix());
吗? - AdrenaxusZend_Translate
只会使您比手动执行操作更具优势,并为您的应用程序提供更大的灵活性。您以后会感谢自己的选择。 - divide by zeroZend_Translate
更像是一个用于多语言应用程序翻译字符串输出的简单工具。虽然这很好,我肯定会需要它,但我认为它不是解决我的初始问题(涉及根据存储在DB表中的语言数量创建和处理输入字段)的解决方案... - Adrenaxus