get('language_manager') ); } /** * Constructs a new MaterioDecoupledLanguageLinks object. * * @param \Drupal\Core\Language\LanguageManagerInterface $language_manager * The language manager. */ public function __construct(LanguageManagerInterface $language_manager) { $this->languageManager = $language_manager; } /** * getPathTranslationLinks * * @return string * Return translations links given a path. */ public function getPathTranslationLinks(Request $request) { $post_data = json_decode( $request->getContent(),TRUE); $path = $post_data['path']; $data = []; // build the links $url_object = \Drupal::service('path.validator')->getUrlIfValid($path); $languages = $this->languageManager->getNativeLanguages(); if (!$url_object) { // if path does not exists $data["error"] = "path {$path} is not valid"; $route_name = ""; $route_parameters = null; }else{ $route_name = $url_object->getRouteName(); $route_parameters = $url_object->getrouteParameters(); } foreach ($languages as $key => $language) { $url = Url::fromRoute($route_name, $route_parameters, ["language"=>$language]); $links[$key] = [ "title" => $language->get('label'), "url" => $url->toString(), "sys_path" => $url->getInternalPath() ]; } $data["links"] = $links; return new JsonResponse($data); } }