Skonfigurowałem wielojęzyczną witrynę w Drupal 7. W szablonie muszę dodać link do określonego węzła treści. Ten węzeł zawiera tłumaczenia i aliasy ścieżek:
node/42 = pathalias_de (german version)
node/43 = pathalias_en (english version)
W szablonie chciałbym zadzwonić, url()
aby uzyskać link do aliasu wersji węzła treści w bieżącym języku.
Na stronie niemieckiej powinien link do /de/pathalias_de
strony angielskiej do/en/pathalias_en
Próbowałem kilku odmian, takich jak wywołanie nid, wywołanie aliasu, przekazanie bieżącego obiektu językowego url()
.
Czy to coś url()
powinno być w stanie zrobić, czy potrzebuję innej funkcji? Dzięki!
źródło
$translations = translation_path_get_translations(drupal_get_normal_path("pathalias_de","de"));
do wyszukiwania aliasu zamiast identyfikatora węzła, jest bardziej elastyczny. Musisz jednak podać poprawny język.źródło
Spójrz na funkcję drupal_get_path_alias
Jak widać, wymaga parametru path_language. Abyś mógł znaleźć aktualny język, a następnie przejść do tej funkcji.
Lub po prostu użyj modułu Multilink
źródło
drupal_get_path_alias()
nie będzie szukał tłumaczeń danego węzła, tylko aliasy już w danym języku. Znalazłem inne obejście, zobacz moją odpowiedź poniżej.Wydaje się, że żadna z powyższych odpowiedzi nie używa poprawnie ścieżki i18n_path. Jeśli chcesz połączyć się z przetłumaczonym węzłem, po prostu włącz moduł i18n_path i sformatuj ścieżkę w ten sposób,
źródło
Prawdopodobnie powinieneś użyć funkcji link . Pozwala przekazać język jako parametr i odpowiednią funkcją jest utworzenie łącza do Drupala.
źródło
l()
używaurl()
wewnętrznie, więc w tym przypadku nie ma to znaczenia.Za pomocą przekierowania tłumaczenia można łączyć się z węzłami z prefiksem języka.
Oto co mówi:
Na przykład, jeśli nid 22 jest dla wersji angielskiej i ma francuską i niemiecką, możesz po prostu połączyć się z nimi jako fr / node / 22 i de / node / 22. Ten 22 może być również dowolnym nid wersji przetłumaczonej.
Jeśli konkretne tłumaczenie nie zostanie znalezione, na przykład, jeśli nie zostało dodane dla języka japońskiego, to ja / node / 22 da 404 użytkownikom anonimowym.
źródło
Aby uzyskać poprawną ścieżkę do prefiksu, używam:
Drupal_get_path_alias () zwraca tylko alias, url () to ten, który dodaje prefiks („en /”).
źródło