I am building a CMS that will support 7 different languages/cultures. For images that cannot be changed through the CMS I think I am going to use different resource files. As for the content I was thinking of separate databases. If the user needs to change the current culure I have a drop down that stores the chosen culture in a cookie then I read the cookie and set the culture in the Application_BeginRequest of the global.asax. How can I go about using different connection strings for the different cultures? Will the resource file handle this too? Is it even a good idea to have multiple databases? This is all a first for me and am looking for any pointers anyone may have. Thanks!
Edit: The different languages/cultures will be managed by different users in the CMS so the content may be different for a given page not just a translation.
Based on what you said, it sounds like the content in the database doesn’t actually need to be translated to different languages so you probably don’t need separate databases to handle that.
If there is shared database content, you can use a translation table, similar to what @Xabatcha mentioned, though I would suggest a simpler table structure. Something like…
Any table that required translated text could just reference the TextID. The key would actually need to be a composite of TextID and LanguageID. If you are using SqlServer, you might want to create a database function to get the translated text to make it so you don’t have to do a join for every sql statement where you need to get the value.