Pathauto for a multilingual site not generating alias for non-default languages I have a site with 90% content in Chinese, and only 10% in English.

Thus the requirement of the client is that when viewing an article in English, everything around it remains in Chinese. Blocks, menus etc 

a) Enable language prefix

What this does is sets english article with en/[node:title] which is acceptable. But the problem occurs as it appends that to every url in the menu, and other places. So they become like en/categories/CHINESE-CHARACTERS which is not right, and no content is displayed.

In pathauto for English articles, I thus tried, specifically giving it [node:title]. Yet it prepends the en.

b) Disable language prefix. 

Now all my links are fine. But the english article is now a node/[nid]. The url aliases just don't seem to be working in this case. If I could just have the URL alias working in this case, things would be great too. 

Any solution to my misery is welcome.
Aliases indeed disappear from nodes with non-default language after disabling language prefix in URLs. The solution to that is easy, but you have to do it in code, using Pathauto's hook_pathauto_alias_alter(). 

Basically all you need to do is:

function yourcustommodule_pathauto_alias_alter(&amp;$alias, array &amp;$context) {
  // Force all aliases to be saved as language neutral.
  $context['language'] = LANGUAGE_NONE;
}


This way you make sure that the language of the saved alias (not of node!) will always be und, meaning it will show for nodes of all languages.

Note: For existing aliases it is not enough to re-save the node. You have to delete the alias first and then have it recreated. Often the easiest is to do it in bulk via Pathauto's configuration interface. First delete all paths, then bulk-recreate them.

For more, see https://www.drupal.org/node/1234924