1. Use multisite concept over Domain Access
    Many a times we tend to go with Domain access as there are few sites initially, but keep in mind that markets grow and in future you might be required to handled 30-40 sites in Drupal. At such times if you continue with Domain Access then it will have a heavy load and performance issues. So its better to start with multisites if the sites are not static. It will gie your Drupal setup felxibility to grow.

  2. Make Drupal nodes/blocks/taxonomy terms translatable
    While creating any new Content Type, Bloks and taxonomy terms ensure that the content and its fields are translatable. This will help you to translate the contents to any number of langauges.

  3. Always use url() or l() while calling any links
    url() and l() functions adds the path prefixs to the links. So ensure that all your links are created either with url() or l().

  4. Do not use "und" in code instead use LANGUAGE_NONE or node->langauge
    Its Drupal standard not use und in code. Also if you are translaing the fields then und wil not work. So go for node->language and LANGUAGE_NONE where ever required.

  5. Restrict views using langauge
    If you are going to show langauge specific content in view page or block then add condition to check current langauge.

  6. Use Drupal.settings.pathPrefix for ajax calls
    For multilingual sites call the ajax calls with Drupa.settings.pathPrefix which will ensure that the url is called from the current langauge.
    For Example if you want to call "nl/my-ajax-call" then use the following

 var url =  Drupal.settings.pathPrefix + "color-question-yes-slider"; 
  1. Create all cache key with language codes attached to it

You can explore more about Drupal7 and Drupal8 at