我有个视野
$view = \Drupal\views\Views::getView($view_id);
如何确定它是否已被翻译成其他可用的语言以及哪种语言
发布于 2022-01-26 19:33:18
我最近一直在与此斗争,我可以部分回答这个问题。如果您有$viewId
和$displayId
,那么以下内容似乎表明视图标签、标题和/或视图菜单项的翻译是否存在于任何语言中(但并不表示语言):
$viewConfig = \Drupal::configFactory()->get("views.view.$viewId");
$hasTranslation = $viewConfig && ($viewConfig->hasOverrides('label') ||
$viewConfig->hasOverrides("display.$displayId.display_options.menu.title") ||
$viewConfig->hasOverrides('display.default.display_options.title'));
发布于 2022-02-08 03:44:31
由于我们需要手动为已翻译的视图添加路径别名,所以集合别名确实提供了一个间接的机会来查看是否存在翻译。
您可以使用->lookupBySystemPath($path, $langcode)
检查视图是否具有给定语言的路径别名。
// Set route match.
$routeMatch = \Drupal::routeMatch();
// Get route object.
$routeObject = $routeMatch->getRouteObject();
// Check if route object.
if ($routeObject) {
// Get view id and display id from route.
$view_id = $routeObject->getDefault('view_id');
$display_id = $routeObject->getDefault('display_id');
// Check if view.
if (!empty($view_id) && !empty($display_id)) {
// Get current path.
$currentPath = \Drupal::service('path.current')->getPath();
// Get path alias repository.
$pathAliasRepository = \Drupal::service('path_alias.repository');
// Check if system path has Spanish alias.
if ($pathAliasRepository->lookupBySystemPath($currentPath, 'es')) {
// Do stuff...
}
}
}
https://drupal.stackexchange.com/questions/266461
复制相似问题