I'm in a project which supports several, currently nine, languages.

Following best practices, we use webtemplates, and bind our content type to the pages library using a content type binding element.

This works fine in our development boxes, and usually fine also in our test and QA boxes. Usually. "Usually" s not a word we developers like… (nor users, if truth be told)

We managed to track it down to Spanish sites.

Long story etc.; Spanish sites create a "paginas" library, but our content binder expected "pages".

Changing

<Elements xmlns="http://schemas.microsoft.com/sharepoint/">
<!-- Bind our content type (AcmeContentType) to pages library -->
<ContentTypeBinding ContentTypeId="0x010100C56..." ListUrl="$Resources:cmscore,List_Pages_UrlName;" />
</Elements>

to

<Elements xmlns="http://schemas.microsoft.com/sharepoint/">
<!-- Bind our content type (AcmeContentType) to pages library -->
<ContentTypeBinding ContentTypeId="0x010100C56..." ListUrl="$Resources:osrvcore,List_Pages_UrlName;" />
</Elements>

solved the issue.

TL;DR: Cmscore and osrvcore both have List_Pages_UrlName; for Spanish these do not match.