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.