Не глядя на файлы вашего проекта, я бы предположил, что страницы, которые не читают свои ресурсы из корневой папки App_LocalResources, - это те, чье имя файла совпадает с другой страницей. Например. если у вас есть /cart/Default.aspx, а также /myaccount/Default.aspx, то ASP.NET не будет знать, какой из них соответствует /App_LocalResources/Default.aspx.resx. Вот почему требуется, чтобы файлы ресурсов этих страниц находились в своих собственных подпапках: чтобы было понятно, какой странице они соответствуют.
Я думаю, что если вы хотите избежать этого, у вас есть три варианта:
- Измените все на глобальные ресурсы. Это не так уж и плохо, если вы убедитесь, что имена ресурсов хорошо организованы, и очевидно, к какой странице они относятся.
- Измените имена файлов страниц, чтобы они были уникальными. Это довольно уродливо, так как это может нарушить перенаправления в приложении, а также в SEO.
- Не используйте ресурсы ASP.NET для локализации, сверните свое собственное решение. Серьезно, ресурсы - это одна из многих полезных, казалось бы, полезных функций в ASP.NET (см. Также «Темы», «Мобильная поддержка», «Роли»), которые, по моему опыту, плохо масштабируются для крупных проектов, и их лучше игнорировать в пользу пользовательских решений. , Например, что произойдет, если ваше приложение ASP.NET вызывает библиотеку DLL среднего уровня, которая должна возвращать локализованный текст? В этом случае гораздо лучше иметь собственную систему локализации ресурсов более низкого уровня.