如何从 pimcore 的本地化字段中获取所有可用语言?
How to get all available languages from Localized Fields in pimcore?
我对此有点困惑:我有一个控制器,我在其中收集 pimcore 中对象的所有可用语言。
现在我只是从该对象中获取一个本地化字段,运行 通过 foreach
通过它并用本地化字段的键填充一个数组。所以我得到了那个对象的所有语言。但这是我编写过的最丑陋的代码:)
更新 - 这是代码:
$o = Object_Product::getById(SOME_ID);
$availableLanguages = array();
// 'category' is an attribute of my product-object that uses Localized Fields
foreach ($o->getCategory()->getLocalizedfields()->getItems() as $language => $value) {
$availableLanguages[] = $language;
}
所以我得到一个如下所示的数组:
$availableLanguages(
0 => 'en',
1 => 'de',
2 => 'it'
// etc.
);
恐怕我想得太多了,现在我只见树木不见森林 - 必须有一种(更)优雅的方式来解决这个问题。基本上 Zend_Locale 应该也有这个信息,但我不明白。
有人知道我的线索吗?提前致谢!
在浏览了大量的 pimcore-backend-类 之后,我找到了解决方案 here:
$config = \Zend_Registry::get("pimcore_config_system");
$validLanguages = strval($config->general->validLanguages);
在 Pimcore 中获取所有可用语言(启用翻译):
从 Pimcore 6.9 开始,在当前可用的 Pimcore 10 中,我们使用:
$languages = \Pimcore\Tool::getValidLanguages();
正如我在原始问题中看到的那样,作者正在为 DataObject 创建一些具有所有可用翻译的导出。
在这种情况下,我们需要禁用后备语言:
\Pimcore\Model\DataObject\Localizedfield::setGetFallbackValues(false);
这将允许我们为没有翻译的字段获取一个空值,而不是默认语言值。
我对此有点困惑:我有一个控制器,我在其中收集 pimcore 中对象的所有可用语言。
现在我只是从该对象中获取一个本地化字段,运行 通过 foreach
通过它并用本地化字段的键填充一个数组。所以我得到了那个对象的所有语言。但这是我编写过的最丑陋的代码:)
更新 - 这是代码:
$o = Object_Product::getById(SOME_ID);
$availableLanguages = array();
// 'category' is an attribute of my product-object that uses Localized Fields
foreach ($o->getCategory()->getLocalizedfields()->getItems() as $language => $value) {
$availableLanguages[] = $language;
}
所以我得到一个如下所示的数组:
$availableLanguages(
0 => 'en',
1 => 'de',
2 => 'it'
// etc.
);
恐怕我想得太多了,现在我只见树木不见森林 - 必须有一种(更)优雅的方式来解决这个问题。基本上 Zend_Locale 应该也有这个信息,但我不明白。
有人知道我的线索吗?提前致谢!
在浏览了大量的 pimcore-backend-类 之后,我找到了解决方案 here:
$config = \Zend_Registry::get("pimcore_config_system");
$validLanguages = strval($config->general->validLanguages);
在 Pimcore 中获取所有可用语言(启用翻译): 从 Pimcore 6.9 开始,在当前可用的 Pimcore 10 中,我们使用:
$languages = \Pimcore\Tool::getValidLanguages();
正如我在原始问题中看到的那样,作者正在为 DataObject 创建一些具有所有可用翻译的导出。 在这种情况下,我们需要禁用后备语言:
\Pimcore\Model\DataObject\Localizedfield::setGetFallbackValues(false);
这将允许我们为没有翻译的字段获取一个空值,而不是默认语言值。