如何从 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();

文档在这里https://pimcore.com/docs/pimcore/current/Development_Documentation/Objects/Object_Classes/Data_Types/Localized_Fields.html

正如我在原始问题中看到的那样,作者正在为 DataObject 创建一些具有所有可用翻译的导出。 在这种情况下,我们需要禁用后备语言:

\Pimcore\Model\DataObject\Localizedfield::setGetFallbackValues(false);

这将允许我们为没有翻译的字段获取一个空值,而不是默认语言值。