CRM-17914: Support right-to-left languages in the CiviCRM installer.
authorMathieu Lutfy <mathieu@bidon.ca>
Sun, 31 Jan 2016 22:39:38 +0000 (17:39 -0500)
committerMathieu Lutfy <mathieu@bidon.ca>
Sun, 31 Jan 2016 22:39:38 +0000 (17:39 -0500)
CRM/Core/I18n.php
CRM/Core/I18n/PseudoConstant.php
install/index.php
install/template.css
install/template.html

index 59a5f7b2c7a611098affa59f9e14f959681736a3..61a932ef5652c2695597c5ddff24b8fae72cd7be 100644 (file)
@@ -542,6 +542,21 @@ class CRM_Core_I18n {
     return (bool) $domain->locales;
   }
 
+  /**
+   * Is the language written "right-to-left"?
+   *
+   * @param $language
+   *   Language (for example 'en_US', or 'fr_CA').
+   *
+   * @return Bool
+   *   True if it is an RTL language.
+   */
+  public static function isLanguageRTL($language) {
+    $rtl = CRM_Core_I18n_PseudoConstant::getRTLlanguages();
+    $short = CRM_Core_I18n_PseudoConstant::shortForLong($language);
+
+    return (in_array($short, $rtl));
+  }
 
   /**
    * Change the processing language without changing the current user language
index 555f2ec237f9b09faa585b95d91a513abd982b18..91d850fef0dbd013f34ff28d57f07407b4a19388 100644 (file)
@@ -78,4 +78,20 @@ class CRM_Core_I18n_PseudoConstant {
     return substr($long, 0, 2);
   }
 
+  /**
+   * Returns a list of ISO 639-1 "right-to-left" language codes.
+   *
+   * @return array
+   */
+  public static function getRTLlanguages() {
+    $rtl = array(
+      'ar',
+      'fa',
+      'he',
+      'ur',
+    );
+
+    return $rtl;
+  }
+
 }
index adc88051aed2ef3faedb7c11647d495ec5a9bbcd..1cfaf0b35e755d271402777041a038bbd9714f56 100644 (file)
@@ -185,6 +185,11 @@ $GLOBALS['civicrm_default_error_scope'] = NULL;
 // The translation files are in the parent directory (l10n)
 $i18n = CRM_Core_I18n::singleton();
 
+// Support for Arabic, Hebrew, Farsi, etc.
+// Used in the template.html
+$short_lang_code = CRM_Core_I18n_PseudoConstant::shortForLong($tsLocale);
+$text_direction = (CRM_Core_I18n::isLanguageRTL($tsLocale) ? 'rtl' : 'ltr');
+
 global $cmsPath;
 if ($installType == 'drupal') {
   //CRM-6840 -don't force to install in sites/all/modules/
index ff81f26af33e8bb1e55382bec9448c49ae504043..7c96816e54a72f86dbc65a20edf9a614f080be6a 100644 (file)
@@ -13,6 +13,10 @@ body {
   max-width: 1200px;
 }
 
+.civicrm-logo {
+  float: right;
+}
+
 form {
   margin: 0;
 }
index d63821166cd08148b3835dea78526b71adc4e727..7fcd53e4cbce32b1a9c538b5be2054305e8032a9 100644 (file)
@@ -1,15 +1,19 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<?php echo $short_lang_code; ?>" lang="<?php echo $short_lang_code; ?>" dir="<?php echo $text_direction; ?>">
 <head>
-<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
-<title><?php echo ts('CiviCRM Installer'); ?></title>
-<link rel="stylesheet" type="text/css" href=<?php echo $installURLPath . "template.css"?> />
+  <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
+  <title><?php echo ts('CiviCRM Installer'); ?></title>
+  <link rel="stylesheet" type="text/css" href=<?php echo $installURLPath . "template.css"?> />
+<?php
+if ($text_direction == 'rtl') {
+  echo "  <link rel='stylesheet' type='text/css' href='{$installURLPath}template-rtl.css' />\n";
+}
+?>
 </head>
-
 <body>
 
 <div id="All">
-  <div style="float: right"><strong><?php echo ts('Version %1', array(1 => "{$civicrm_version['version']} {$civicrm_version['cms']}")); ?></strong><br/>
+  <div class="civicrm-logo"><strong><?php echo ts('Version %1', array(1 => "{$civicrm_version['version']} {$civicrm_version['cms']}")); ?></strong><br/>
     <span><img src=<?php echo $installURLPath . "block_small.png"?> /></span>
   </div>