Supporting Multiple Clients and Content in Multiple Cultures in One Site

This forum is only for questions or discussions about working with the mojoPortal source code in Visual Studio, obtaining the source code from the repository, developing custom features, etc. If your question is not along these lines this is not the right forum. Please try to post your question in the appropriate forum.

Please do not post questions about design, CSS, or skinning here. Use the Help With Skins Forum for those questions.

This forum is for discussing mojoPortal development

This forum is only for questions or discussions about working with the mojoPortal source code in Visual Studio, obtaining the source code from the repository, developing custom features, etc. If your question is not along these lines this is not the right forum. Please try to post your question in the appropriate forum.

You can monitor commits to the repository from this page. We also recommend developers to subscribe to email notifications in the developer forum as occasionally important things are announced.

Before posting questions here you might want to review the developer documentation.

Do not post questions about design, CSS, or skinning here. Use the Help With Skins Forum for those questions.
This thread is closed to new posts. You must sign in to post in the forums.
9/26/2011 4:05:28 PM
Gravatar
Total Posts 2

Supporting Multiple Clients and Content in Multiple Cultures in One Site

I am new to mojoPortal and this is basically both a "How can I integrate mojoPortal with x" post and a "How can I build y" post and I apologize doubly up front.  I have read all mojoPortal's excellent and very thorough documentation more than once.  I also installed both the mojoPortal distribution, full mojoPortal sources and then merged the distribution with the sources so I could have one VS 2010 solution and everything works and builds flawlessly.  I haven't ever been able to move things around and merge things with any other application without things breaking and a lot of tweaking and debugging to get things to work.  Pretty impressive.  So I had to buy Joe a beer and a cup of coffee just for that.  I also did some searching through the forums to see if anyone had addressed my same or similar topic but did not find anything that fully matched.

A couple of things in documentation were clear: don't fork the code and the recommended approach to localization is to make separate sites by culture.  I don't want to fork the code because I would like to use mojoPortal to run my marketing website as well as a possible basis for allowing clients to localize their content in my web application and I want to be able to take advantage of future versions and features.  But although separate culture sites will work great for my marketing site, creating separate sites for each culture will not work for my web application. 

I have a ASP.Net web application that has been running successfully as a SAAS since 2006. The application can be conceptualized as a content management system for a special kind of content - job and position descriptions for organizations.  The web application is similar to a CMS in the sense that the job and position content is maintained in a database and then templates are created for serving up the content in various formats as needed by the client.  (Well, to me it seems similar to a CMS.)

I am at a point now where several clients want to localize their content.  In other words, these clients want to maintain the job and position descriptions in multiple cultures within a single site.  So for example, a client could maintain a job description for Software Architect in multiple cultures so that the description of the Software Architect job would be available in the local culture of each country where they operate.  The content would normally be translated from the primary culture (usually English-US) by a bilingual human into the other culture.  It's not an automated translation although it could be initially aided by a translation widget.

I would like to use mojoPortal as the basis to model my application as a job content management system (aka JCMS or moJOBPortal) that is able to serve multiple clients (the application is the same for each client, but parameter-ized for each clients) and that allows each client to serve job and position content in multiple cultures.  I would like to maintain one site with multiple clients although multiple client sites could be created but this would require additional administration and maintenance beyond what I do now with the current web application.  However, even if the sites are separated by client, each client must be able to serve job and position content in multiple cultures.  Each piece of job or position content stored in the database would need to be tagged or somehow associated with the client and the culture.

Please let me know if you have any suggestions on how I could approach this using mojoPortal (or not).  If I am barking up the wrong application or my basic approach is totally flawed then that feedback would be good to hear as well, especially if accompanied by the reasons why.  If there are other articles that already address this kind of request please refer me to those articles.

Thanks

Chad

 

 

 

9/27/2011 7:29:39 AM
Gravatar
Total Posts 18439

Re: Supporting Multiple Clients and Content in Multiple Cultures in One Site

Hi Chad,

All I can say is making content support translations requires a more complicated db schema and adds a lot of complexity to any sql logic. That is why I have avoided it and recommend the multi site approach, it keeps things much simpler at the implementation level.

In your own custom feature you can do whatever you like, but you are faced with the same challenge that will require a lot more complexity. Nothing in mojoPortal limits you in your custom feature. Even if you have a specific culture set for the site, all that does is set the culture of the executing thread and you can reset it in your own feature to whatever you want based on a dropdown list of cultures or a cookie (set by a dropdown list or link click) or something. Of course setting the thread culture only affects string formatting and which resource files are used, you would have to figure out your own logic to store and retrieve culture specific content from the database, or a default culture if nothing exists for the requested culture. But again you will have to figure out the best way to structure your schema in order to efficiently retrieve the right data. It will add a lot of complexity to your app but it can be done. 

Hope that helps,

Joe

9/28/2011 6:37:11 AM
Gravatar
Total Posts 2

Re: Supporting Multiple Clients and Content in Multiple Cultures in One Site

Dear Joe

Thank you very much for the response!  And yes, that is very helpful. 

My current db schema and sql logic already has to handle the multiple clients in one site so the addition of the culture to any content related entities (pretty much everything in the db) adds another huge dimension of complexity.  I am going through the use cases now to spec out how this will work.  The nice thing about it is that I can set a primary culture for each document and then the documents in the secondary cultures are considered translations that must remain in lockstep with the primary culture.  Well, at least it seems nice from a logical point of view.  It seems that the complexity here comes at the business and presentation layers to make sure it's easy for the user to keep everything in sync.  (I am sure there is more complexity lurking there that I just can't see yet.)

As you point out in your documentation once you have your interface localized your content is still coming in its original culture.  And the content is king here too.  In fact in my case for English-US clients they are fine with the interface being English-US but they want to be able to localize their content using the English-US interface.  So at this point I can just concentrate on localizing content and worry about the interface later.

I use CodeSmith and netTiers to build my DAL and BLL and found the articles by Jarick Rager from the KeySysConsulting blog on Integrating mojoPortal and .netTiers Part 1, 2 and 3 helpful.

Happy to know that my custom feature is not limited by mojoPortal in any way.  And the complexity of the localizing the content is already keeping me up at night.

I think your "Easy Web Applications" on the mojoPortal home page describes exactly what i want to do and why I want to do it.  I want to save time and money on my localization project by developing my custom functionality on top of mojoPortal and I want to allow mojoPortal to do the heavy lifting to provide elegant plumbing for role based security, navigation, skinnable design, and more, so I can focus on my application features.  As you say, I just have to figure out the best way to do it in my custom feature.

I will keep you posted on my progress.

Thanks again.

Chad

 

You must sign in to post in the forums. This thread is closed to new posts.