Eu configurei um site multilíngue no Drupal 7. Em um modelo, preciso adicionar um link a um nó de conteúdo específico. Este nó possui traduções e aliases de caminho da seguinte forma:
node/42 = pathalias_de (german version)
node/43 = pathalias_en (english version)
No modelo que eu gostaria de chamar url()
para obter o link para a versão com alias do nó de conteúdo no idioma atual.
Na página em alemão, deve ser linkado /de/pathalias_de
na página em inglês para/en/pathalias_en
Eu tentei várias variações, como chamar o nid, chamar o alias, passar o objeto de idioma atual para url()
.
Isso é algo que url()
deve ser capaz de fazer ou preciso de uma função diferente? Obrigado!
fonte
$translations = translation_path_get_translations(drupal_get_normal_path("pathalias_de","de"));
para procurar o alias em vez da identificação do nó, é mais flexível. Você precisa passar o idioma correto.fonte
Dê uma olhada no drupal_get_path_alias fuction
Como você pode perceber, é necessário um parâmetro path_language. Então você pode descobrir o idioma atual e depois passar para esta função.
Ou simplesmente use o módulo Multilink
fonte
drupal_get_path_alias()
não procurará traduções de um determinado nó, apenas aliases já no idioma especificado. Encontrei outra solução alternativa, veja minha resposta abaixo.Nenhuma das respostas acima parece fazer uso correto do i18n_path. Se você deseja vincular ao nó traduzido, basta ativar o módulo i18n_path e formatar o caminho assim,
fonte
Você provavelmente deve usar a função de link . Ele permite que você passe o idioma como parâmetro e é a função apropriada para criar um link com o Drupal.
fonte
l()
usaurl()
internamente, portanto, não importa nesse caso.Usando o redirecionamento de tradução, é possível vincular aos nós com prefixo de idioma.
Isto é o que diz:
Por exemplo, se o nid 22 for da versão em inglês e tiver francês e alemão, você poderá simplesmente vincular a eles como fr / node / 22 e de / node / 22. Este 22 também pode ser qualquer nid da versão traduzida.
Se uma tradução específica não for encontrada, por exemplo, se você não adicionou o japonês, então ja / node / 22 fornecerá 404 para usuários anônimos.
fonte
Para obter o caminho do prefixo correto, eu uso:
O drupal_get_path_alias () retorna apenas o alias, a url () é a que adiciona o prefixo ("en /").
fonte