Here is the case:

One website has two languages enabled. English and French.

If user who uses French as his/her language post a node, set node url alias, the url alias will only apply to French interface. That means the alias link wont work for those users using English.

The solution is to change the 'Language' value of that node's url alias to 'All' (admin/config/search/path)

I found it is annoying, because I have to change the Language value one by one for every node.

Not sure it is a feature or a bug?

That would be great that if when we set url alias for nodes, the system set it for ALL language by default.

What do you think? Any suggestions?

Support from Acquia helps fund testing for Drupal Acquia logo

Comments

Alessandro Pezzato’s picture

This is very annoying.

Suggestion

Add an option in admin page "admin/config/search/path/settings" to configure this behaviour:

  • All languages
  • Node language

If "All languages" is selected, every created alias will be available for all languages.
If "Node language" is selected, every created alias will be available only for respective node.

spacediver’s picture

+1 For Alessandro suggestion. Or there is another way to fix it?

q0rban’s picture

Version: 7.12 » 7.x-dev

I did some digging into the code in Path module, and there is no clean fix for this in contrib or custom code. While the form itself does have the path language set, overriding it with a form alter does nothing, as the language is then set to the node language in both the element_validate callback, and the hook_node_insert/update calls. I'm not sure why it's happening in both—I think this is cruft.

q0rban’s picture

Title: Make url alias works for all languages by default? » Cannot programmatically specify node path alias language
Version: 7.x-dev » 8.x-dev
Category: feature » bug

I'm switching this to a bug report and changing the version to 8.x. The reason I believe this to be a bug is that there is no way to programmatically set the language on the alias, as the language is forced to match the node language in hook_node_insert / hook_node_update, ignoring what might be set in $node->path['language'].

q0rban’s picture

Status: Active » Needs review
FileSize
2.01 KB

Here is a patch with just a test to prove the issue.

q0rban’s picture

And here is a patch with the above tests and a fix. Note: there was a fair bit of duplicate code in path_node_insert() and path_node_update(), so I refactored the latter to allow for being called from the former, to consolidate the code.

q0rban’s picture

Here is a patch against 7.x that does the same. Marked as do-not-test.

q0rban’s picture

I was hoping that applying this patch in d7 and adding a form alter like so would fix my issue:

function example_form_node_form_alter(&$form) {
  // Ensure node path aliases are always language neutral.
  if (isset($form['path']['language'])) {
    $form['path']['language']['#value'] = LANGUAGE_NONE;
  }
}

Alas, Pathauto also doesn't respect $node->path['language']. See #1155132: Add Entity Translation support to Pathauto.

q0rban’s picture

Status: Needs review » Needs work

The last submitted patch, 6: 1499532-alter-node-alias-language-6.patch, failed testing.

DamienMcKenna’s picture

Any thoughts on how this should work, given there have been two years' of changes since the last patch?

Version: 8.0.x-dev » 8.1.x-dev

Drupal 8.0.6 was released on April 6 and is the final bugfix release for the Drupal 8.0.x series. Drupal 8.0.x will not receive any further development aside from security fixes. Drupal 8.1.0-rc1 is now available and sites should prepare to update to 8.1.0.

Bug reports should be targeted against the 8.1.x-dev branch from now on, and new development or disruptive changes should be targeted against the 8.2.x-dev branch. For more information see the Drupal 8 minor version schedule and the Allowed changes during the Drupal 8 release cycle.

Version: 8.1.x-dev » 8.2.x-dev

Drupal 8.1.9 was released on September 7 and is the final bugfix release for the Drupal 8.1.x series. Drupal 8.1.x will not receive any further development aside from security fixes. Drupal 8.2.0-rc1 is now available and sites should prepare to upgrade to 8.2.0.

Bug reports should be targeted against the 8.2.x-dev branch from now on, and new development or disruptive changes should be targeted against the 8.3.x-dev branch. For more information see the Drupal 8 minor version schedule and the Allowed changes during the Drupal 8 release cycle.

Version: 8.2.x-dev » 8.3.x-dev

Drupal 8.2.6 was released on February 1, 2017 and is the final full bugfix release for the Drupal 8.2.x series. Drupal 8.2.x will not receive any further development aside from critical and security fixes. Sites should prepare to update to 8.3.0 on April 5, 2017. (Drupal 8.3.0-alpha1 is available for testing.)

Bug reports should be targeted against the 8.3.x-dev branch from now on, and new development or disruptive changes should be targeted against the 8.4.x-dev branch. For more information see the Drupal 8 minor version schedule and the Allowed changes during the Drupal 8 release cycle.

Version: 8.3.x-dev » 8.4.x-dev

Drupal 8.3.6 was released on August 2, 2017 and is the final full bugfix release for the Drupal 8.3.x series. Drupal 8.3.x will not receive any further development aside from critical and security fixes. Sites should prepare to update to 8.4.0 on October 4, 2017. (Drupal 8.4.0-alpha1 is available for testing.)

Bug reports should be targeted against the 8.4.x-dev branch from now on, and new development or disruptive changes should be targeted against the 8.5.x-dev branch. For more information see the Drupal 8 minor version schedule and the Allowed changes during the Drupal 8 release cycle.

Version: 8.4.x-dev » 8.5.x-dev

Drupal 8.4.4 was released on January 3, 2018 and is the final full bugfix release for the Drupal 8.4.x series. Drupal 8.4.x will not receive any further development aside from critical and security fixes. Sites should prepare to update to 8.5.0 on March 7, 2018. (Drupal 8.5.0-alpha1 is available for testing.)

Bug reports should be targeted against the 8.5.x-dev branch from now on, and new development or disruptive changes should be targeted against the 8.6.x-dev branch. For more information see the Drupal 8 minor version schedule and the Allowed changes during the Drupal 8 release cycle.

Version: 8.5.x-dev » 8.6.x-dev

Drupal 8.5.6 was released on August 1, 2018 and is the final bugfix release for the Drupal 8.5.x series. Drupal 8.5.x will not receive any further development aside from security fixes. Sites should prepare to update to 8.6.0 on September 5, 2018. (Drupal 8.6.0-rc1 is available for testing.)

Bug reports should be targeted against the 8.6.x-dev branch from now on, and new development or disruptive changes should be targeted against the 8.7.x-dev branch. For more information see the Drupal 8 minor version schedule and the Allowed changes during the Drupal 8 release cycle.

Chris Charlton’s picture

Bump.

Version: 8.6.x-dev » 8.8.x-dev

Drupal 8.6.x will not receive any further development aside from security fixes. Bug reports should be targeted against the 8.8.x-dev branch from now on, and new development or disruptive changes should be targeted against the 8.9.x-dev branch. For more information see the Drupal 8 and 9 minor version schedule and the Allowed changes during the Drupal 8 and 9 release cycles.

Version: 8.8.x-dev » 8.9.x-dev

Drupal 8.8.7 was released on June 3, 2020 and is the final full bugfix release for the Drupal 8.8.x series. Drupal 8.8.x will not receive any further development aside from security fixes. Sites should prepare to update to Drupal 8.9.0 or Drupal 9.0.0 for ongoing support.

Bug reports should be targeted against the 8.9.x-dev branch from now on, and new development or disruptive changes should be targeted against the 9.1.x-dev branch. For more information see the Drupal 8 and 9 minor version schedule and the Allowed changes during the Drupal 8 and 9 release cycles.

Version: 8.9.x-dev » 9.2.x-dev

Drupal 8 is end-of-life as of November 17, 2021. There will not be further changes made to Drupal 8. Bugfixes are now made to the 9.3.x and higher branches only. For more information see the Drupal core minor version schedule and the Allowed changes during the Drupal core release cycle.

Version: 9.2.x-dev » 9.3.x-dev

Version: 9.3.x-dev » 9.4.x-dev

Drupal 9.3.15 was released on June 1st, 2022 and is the final full bugfix release for the Drupal 9.3.x series. Drupal 9.3.x will not receive any further development aside from security fixes. Drupal 9 bug reports should be targeted for the 9.4.x-dev branch from now on, and new development or disruptive changes should be targeted for the 9.5.x-dev branch. For more information see the Drupal core minor version schedule and the Allowed changes during the Drupal core release cycle.

Version: 9.4.x-dev » 9.5.x-dev

Drupal 9.4.9 was released on December 7, 2022 and is the final full bugfix release for the Drupal 9.4.x series. Drupal 9.4.x will not receive any further development aside from security fixes. Drupal 9 bug reports should be targeted for the 9.5.x-dev branch from now on, and new development or disruptive changes should be targeted for the 10.1.x-dev branch. For more information see the Drupal core minor version schedule and the Allowed changes during the Drupal core release cycle.

Version: 9.5.x-dev » 11.x-dev

Drupal core is moving towards using a “main” branch. As an interim step, a new 11.x branch has been opened, as Drupal.org infrastructure cannot currently fully support a branch named main. New developments and disruptive changes should now be targeted for the 11.x branch. For more information, see the Drupal core minor version schedule and the Allowed changes during the Drupal core release cycle.