Multilanguage Website - multilingual

I'm building a website for the company of my parents. However they want multi-language support. I was thinking of the different ways to implement this. However I am curious as to the best practices and how to make the website have a minimal upkeep.
It's just a static front-end (based on Bootstrap) informative website without CMS or active conten management.
Solutions I came up with so far:
Built all the pages twice in each language. Set the links manual: High upkeep
Built a front-end js script that reroutes dependant on the language cookie set? (Is this even possible)
Are there other best practices to implement this without resorting to a clunky CMS like Drupal / WordPress ...

The optimal solution also depends on how extensive the site is, how many languages it contains, and what functionality, scalability or Online Marketing is required for the future. Drupal meets all these requirements also in terms of language switcher, different META-Tags etc. Okay, Drupal needs a bit workforce for understanding, structured way of working and documentation. Django is more programmer friendly which demands more technical but Drupal is more user friendly.
With little effort you can offer your websites in other languages with Google Translate: https://support.google.com/translate/answer/2534601?hl=en

After thorough research: for a proper multilingual website which is easy to maintain. A framework / CMS is required:
Wordpress
Rails
Django
Drupal
...

One suggestion to your solution of building pages twice. You can have a template:
home_page.html_template:
<body>
<div> ${INTRODUCTION_TEXT} </div>
<div> ${SOME_OTHER_TEXT} </div>
</body>
I.e. you code the whole page structure once, but don't specify what text will be added. You store translations for each piece of text in two languages in two different files. Then you run a script to generate separate html pages for each language.
You could even go one step further and use google translate API to translate text for you on the server side, before generating html.

Related

Building a Single Page Application with AngularJS and Sitecore (SPA)

I want to implement Sitecore application (single page design with angular js) :
Is that possible ?
If it is possible, what about experience editor, it will work with it ?
What about Sitecore personalization ?
I have no experience with angular js. what should I take in my consideration to achieve this
I will use Sitecore 8. i found this helpful blog about that but as he mentioned, page editor simply won't work
Thanks.
1.
Yes it is possible, I implemented a SPA in Sitecore 7 using AngularJS for the front-end and WebAPI to serve the data from Sitecore Items and it all worked really well together.
You could look into using Sitecore MVC Controllers which will work just as well as WebAPI. Or if you have time to learn a new Sitecore Technology you can look into using Sitecore's Entity Service. Either will work for serving data from Sitecore.
From experience I recommend you make controllers which are responsible for a single type of data consumed by the AnglarJS. The models passed by the controllers should be lean, containing only data relevant to the controllers purpose.
2.
For my implementation, the Experience Editor would not work as I used AngularJS to manipulate and present the data. It could be possible to use Sitecore Controls if you don't pull out the data using AngularJS but I don't think it'll be possible without hacking at it with code.
3.
Personalisation through the Experience Editor should be possible if you use Sitecore Controls. Personalisation through the Content Editor and code will be possible. I recommend you build your SPA as you would most Sitecore implementations; Layout, Sublayout etc. You can implement personalisation through code in the Controllers, Application Logic etc
4.
I had no experience with AngularJs either but I learned everything I needed to know from tutorials and the rest is logical enough for you to figure out if you're familiar with any programming language. I recommend you work through this Codecademy Tutorial that has you completing exercises - its how I learned.
I've yet to write a blog on how I achieved it but Dave Peterson has written two blogs on his experiences with SPA with Sitecore and AngularJs that might be worth a read.
Yes it is possible
Yes you can use the experience editor, BUT you have to build the site in a specific way. Not in the "normal" way.
Again, same as experience editor, you can use it, but the site has to be built to accommodate that.
Not sure on Angular - I have used backbone, but the principles are very similar.
I have a blog post on how we achieved this for a client: http://www.sitecorenutsbolts.net/2015/12/07/Single-Page-Applications-in-Sitecore-Part-I/
Have a read of that, it gives the principles you should follow to enable Sitecore in an SPA.
Anything is possible in Sitecore, but some customization are too complex to be considered practical.
You can easily build SPA application with the following limitations:
Display various views with either
a) server generated templates, or
b) static .html template with Sitecore-managed content (retrieved as json via custom controllers or Content API) and bound to template using AngularJS.
Limit the scope of personalization to just content.
Have experience or page editor view significantly different from the end-user experience. And even then, this will require separate design to create and maintain.
What is significantly more challenging is:
Utilize Personalization to dynamically display different renderings. Hide/show renderings, etc.
Have Experience Editor reflect the actual design of the SPA experience

how to add multiple languages to an English website

I am trying to add two additional languages to my website - Chinese, Japanese. User inputs could be in native language, in English or be mixed. E.g. search by product name. Likewise output can be all-English or be in mixed languages, depending on a user's preferences. I already have applicable translations so that is not a problem. It is a data intensive site. It uses web APIs to fetch JSON data objects, and uses angular and backbone, and jquery.
I will appreciate if you possibly refer me to some good books or pages that provide guidance for building multilingual sites. Are there any particular web standards that must be followed by websites and by browsers?
Googling yields a ton of links, but the discussion appears centered around specific packages such as wordpress, joomla, .net, drupal, etc. and appears more around automated translations. It still left me confused about the basics requirements of multilingual sites as I do not use any of these packages.
Thanks a lot.
ps: if you need to leave me a -1, np. But I would very much appreciate a comment as to why - so that it doesn't appear as if you just vented and offered me no opportunity for improvement.
Wells... when i need to build a bilingual website i just use a language selector menu and build the whole website in 2 languages (i think this way its more professional) cause usually translators doesnt 100% translate correctly and at the end you just get a bunch of stuff making no sense.
Maybe you could use Google Website Translator gadget for what you trying to do?? its paid service tho, you could use also the plugin for Wordpress http://wordpress.org/plugins/google-language-translator/
Or use the Google Ajax Language API https://code.google.com/p/jquery-translate/

CakePHP: Internationalizing a web application - Design and Examples?

I have a web application built using CakePHP framework and now I am in the process of internationalizing it. I started with the base set-up as outlined in the below article -
http://puskin.in/blog/2010/08/cakephp-manage-multiple-language-in-application/
and also add little bit of customization based on my previous question -
CakePHP: Internationalizing Web Application
To completely internationalize my web app, I would need to translate my drop-down/look-up content as well, like - categories, favorites, countries, bucket list etc.
What is the best way to design my tables and CakePHP samples? Can someone explain with a simple example and classes? Links or articles?
Lets say we have something like -
A user can create multiple posts, and each post has a category [science article, match article] etc in the drop-down and same we need to internationalize drop-down as well.
Two hints:
Read the manual of cakephp.
Look into the code of a available application (maybe croogo)
My open source project is translated.
It call CandyCane. A port of Redmine into CakePHP.
I also imported translation files from Redmine, so CandyCane supports numbers of languages from the beginning.
https://github.com/yandod/candycane
It might be helpful for you.

Suggested Language for Web-Based Intranet/Database

Hate to ask a question this borderline generic, but I'm looking to build a web based program that combines our company intranet with a forms-based database. I would be looking at Oracle's database product except that this definitely needs to be web based.
I'm currently investigating using Alfresco (java-based) as a repository, and some PHP engine for the front end. Does anyone know of PHP issues when the task at hand becomes too involved (I'm an amateur, mind you), compared to Python, for example? I would eventually like to be able to scale this project upward, even if I hired someone else to do it.
Pre-built modules would definitely help with the workload. I know Drupal has many, but I've never perused compilations of modules for other languages. I think the availability of modules may be the most important factor!
Alfresco is great for managing content (e.g. documents or static html pages) in a collaborative manner. It has excellent tie-ins to the desktop with WebDav integration. Drupal is better for more dynamic web content and more flexible web pages. Not quite sure what you mean by forms-based content.
With Drupal's CCK module (now mostly built into Drupal 7) and Views - you can create forms (as content types) for people to fill out and then present the results as either lists, tables, grids of nodes or almost any other filterable, list presentation you can think of using Views.
Every page in Drupal is really just a form that collects content to present in a particular way (e.g. the standard page is a Title field and a Body field), but a user profile is just another type of content form with a different set of fields.
Alfresco is currently getting better at Web Content Management (WCM). They recently rewrote the WCM feature set completely, and provide a Quick Start sample to, well, get you started quickly. Alfresco would provide you with a collaborative editing platform, with workflows, ACLs and extensive remoting capabilities (huge, extensible REST API, WebDAV, CMIS). You'll have configurable forms based content creation, plus a platform for your intranet.
The front end for Alfresco WCM would be than written using CMIS to retrieve content from Alfresco, APIs are available for Java, Python and PHP.

Which is the easier CMS to integrate with CakePHP?

I was trying develop a website with Cakephp and Joomla... But lately I've been founding a lot of barriers that create difficulties implementing things that would have been a lot easier if I only developped using one of the components.
So, in your point of view (as someone with more experience than me), is it worth to integrate CakePhp with a CMS?
If yes, what do you think its the best and easier CMS to integrate with?
Or use Croogo (http://croogo.org/)
A CakePHP CMS. I like Croogo's implementation more than Wildflower and the admin UI looks a bit similar to Wordpress.
From my point of view i wouldn't try. I think there would be a lot of crossover functionality and a lot of conflict. Either use Cake and write a CMS and the other elements you want or pick a CMS and develop the other elements you want as add-ins/plugins.
Joomla, Drupal, Xaraya, Expression-engine etc are all extensible so pick the one that is the best fit and has the ability to be extended or maybe already has plugins you require.
Another option would be to use Joomla as the CMS and Cake for the other element you want, keep them as separate entities but skin then identically and make the navigation seamless. In this case about the only thing you would need to integrate would be state.
There are some out there already that are on Cake from the ground up. Wildflower for example
http://wf.klevo.sk/
I have a cakephp site that is running wordpress in it's public_html/blog folder and it is doing great.
They are basically two separate sites, with two separate backend but it is fairly easy to create a model for the wordpress database if you want to pull in any data (eg. posts, pages, comments) and use it in the cakephp site.
As far a integrating the two I don't think it is a good idea if it needs to be a seamless experience for the backend users, most frontend users won't notice the difference because you can use the same style sheet and images.
If you want any more about my experiences with the combination let me know!
Cakeui is a rip of Croogo. Infinitas CMS could be what you're looking for if you want a full blown application or check this site for a list of good CakePHP Cms
As the developer of Croogo, I will be biased and recommend you to check it out at http://croogo.org. It comes with a web based installer too and you should be up and running in minutes.
Another CakePHP based CMS is Infinitas which has more features (including shopping cart). Both are based on the latest version of the framework (1.3 at the moment) and are actively developed.
I wrote a lot of CMS type apps with Cake and was thinking along the same lines. I've tried Joomla, Drupal and Wordpress but still had a dirty feeling in my mouth that I was failing by using Cake just for the sake of it or vice versa.
The most important common denominator, in my experience, is the back-end. It is re-used most often, but gets the least input.
Now I have built my own CMS with CakePHP. The intention is to 'opensource' it, but it's not quite ready yet.
I don't think it is worth the headache trying to combine, then maintain Cake and a 3rd party CMS. Save your best modules and components and build your own. The blog tutorial will give you a good head start and you can cherrypick what you like from other sources, rewriting it to suit your ideals. The benefit is you will then know the CMS inside out and have it working just the way you want. You'll learn a lot along the way as well.

Resources