From 592e2235af3ab09172423b6356722db7911d16b5 Mon Sep 17 00:00:00 2001
From: florenttorregrosa <florenttorregrosa@2388214.no-reply.drupal.org>
Date: Mon, 6 Feb 2017 15:45:00 +0100
Subject: [PATCH] Issue #1279550 by ergonlogic, Steven Jones, Grimreaper: D8
 multi-language update during installation

---
 package/hosting_package.languages.inc | 112 ++++++++++++++++++++++++++++++++++
 package/hosting_package.module        |  16 +++++
 2 files changed, 128 insertions(+)
 create mode 100644 package/hosting_package.languages.inc

diff --git a/package/hosting_package.languages.inc b/package/hosting_package.languages.inc
new file mode 100644
index 0000000..0bc2f67
--- /dev/null
+++ b/package/hosting_package.languages.inc
@@ -0,0 +1,112 @@
+<?php
+
+/**
+ * @file
+ * Helper functions for Drupal 8 language list.
+ */
+
+/**
+ * Some common languages with their English and native names.
+ *
+ * See Drupal 8, core/lib/Drupal/Core/Language/LanguageManager.php
+ * getStandardLanguageList() method.
+ */
+function hosting_package_get_standard_language_list() {
+  return array(
+    'af' => array('Afrikaans', 'Afrikaans'),
+    'am' => array('Amharic', 'አማርኛ'),
+    'ar' => array('Arabic', /* Left-to-right marker "‭" */ 'العربية', 'rtl'),
+    'ast' => array('Asturian', 'Asturianu'),
+    'az' => array('Azerbaijani', 'Azərbaycanca'),
+    'be' => array('Belarusian', 'Беларуская'),
+    'bg' => array('Bulgarian', 'Български'),
+    'bn' => array('Bengali', 'বাংলা'),
+    'bo' => array('Tibetan', 'བོད་སྐད་'),
+    'bs' => array('Bosnian', 'Bosanski'),
+    'ca' => array('Catalan', 'Català'),
+    'cs' => array('Czech', 'Čeština'),
+    'cy' => array('Welsh', 'Cymraeg'),
+    'da' => array('Danish', 'Dansk'),
+    'de' => array('German', 'Deutsch'),
+    'dz' => array('Dzongkha', 'རྫོང་ཁ'),
+    'el' => array('Greek', 'Ελληνικά'),
+    'en' => array('English', 'English'),
+    'en-x-simple' => array('Simple English', 'Simple English'),
+    'eo' => array('Esperanto', 'Esperanto'),
+    'es' => array('Spanish', 'Español'),
+    'et' => array('Estonian', 'Eesti'),
+    'eu' => array('Basque', 'Euskera'),
+    'fa' => array('Persian, Farsi', /* Left-to-right marker "‭" */ 'فارسی', 'rtl'),
+    'fi' => array('Finnish', 'Suomi'),
+    'fil' => array('Filipino', 'Filipino'),
+    'fo' => array('Faeroese', 'Føroyskt'),
+    'fr' => array('French', 'Français'),
+    'fy' => array('Frisian, Western', 'Frysk'),
+    'ga' => array('Irish', 'Gaeilge'),
+    'gd' => array('Scots Gaelic', 'Gàidhlig'),
+    'gl' => array('Galician', 'Galego'),
+    'gsw-berne' => array('Swiss German', 'Schwyzerdütsch'),
+    'gu' => array('Gujarati', 'ગુજરાતી'),
+    'he' => array('Hebrew', /* Left-to-right marker "‭" */ 'עברית', 'rtl'),
+    'hi' => array('Hindi', 'हिन्दी'),
+    'hr' => array('Croatian', 'Hrvatski'),
+    'ht' => array('Haitian Creole', 'Kreyòl ayisyen'),
+    'hu' => array('Hungarian', 'Magyar'),
+    'hy' => array('Armenian', 'Հայերեն'),
+    'id' => array('Indonesian', 'Bahasa Indonesia'),
+    'is' => array('Icelandic', 'Íslenska'),
+    'it' => array('Italian', 'Italiano'),
+    'ja' => array('Japanese', '日本語'),
+    'jv' => array('Javanese', 'Basa Java'),
+    'ka' => array('Georgian', 'ქართული ენა'),
+    'kk' => array('Kazakh', 'Қазақ'),
+    'km' => array('Khmer', 'ភាសាខ្មែរ'),
+    'kn' => array('Kannada', 'ಕನ್ನಡ'),
+    'ko' => array('Korean', '한국어'),
+    'ku' => array('Kurdish', 'Kurdî'),
+    'ky' => array('Kyrgyz', 'Кыргызча'),
+    'lo' => array('Lao', 'ພາສາລາວ'),
+    'lt' => array('Lithuanian', 'Lietuvių'),
+    'lv' => array('Latvian', 'Latviešu'),
+    'mg' => array('Malagasy', 'Malagasy'),
+    'mk' => array('Macedonian', 'Македонски'),
+    'ml' => array('Malayalam', 'മലയാളം'),
+    'mn' => array('Mongolian', 'монгол'),
+    'mr' => array('Marathi', 'मराठी'),
+    'ms' => array('Bahasa Malaysia', 'بهاس ملايو'),
+    'my' => array('Burmese', 'ဗမာစကား'),
+    'ne' => array('Nepali', 'नेपाली'),
+    'nl' => array('Dutch', 'Nederlands'),
+    'nb' => array('Norwegian Bokmål', 'Norsk, bokmål'),
+    'nn' => array('Norwegian Nynorsk', 'Norsk, nynorsk'),
+    'oc' => array('Occitan', 'Occitan'),
+    'pa' => array('Punjabi', 'ਪੰਜਾਬੀ'),
+    'pl' => array('Polish', 'Polski'),
+    'pt-pt' => array('Portuguese, Portugal', 'Português, Portugal'),
+    'pt-br' => array('Portuguese, Brazil', 'Português, Brasil'),
+    'ro' => array('Romanian', 'Română'),
+    'ru' => array('Russian', 'Русский'),
+    'sco' => array('Scots', 'Scots'),
+    'se' => array('Northern Sami', 'Sámi'),
+    'si' => array('Sinhala', 'සිංහල'),
+    'sk' => array('Slovak', 'Slovenčina'),
+    'sl' => array('Slovenian', 'Slovenščina'),
+    'sq' => array('Albanian', 'Shqip'),
+    'sr' => array('Serbian', 'Српски'),
+    'sv' => array('Swedish', 'Svenska'),
+    'sw' => array('Swahili', 'Kiswahili'),
+    'ta' => array('Tamil', 'தமிழ்'),
+    'ta-lk' => array('Tamil, Sri Lanka', 'தமிழ், இலங்கை'),
+    'te' => array('Telugu', 'తెలుగు'),
+    'th' => array('Thai', 'ภาษาไทย'),
+    'tr' => array('Turkish', 'Türkçe'),
+    'tyv' => array('Tuvan', 'Тыва дыл'),
+    'ug' => array('Uyghur', 'Уйғур'),
+    'uk' => array('Ukrainian', 'Українська'),
+    'ur' => array('Urdu', /* Left-to-right marker "‭" */ 'اردو', 'rtl'),
+    'vi' => array('Vietnamese', 'Tiếng Việt'),
+    'xx-lolspeak' => array('Lolspeak', 'Lolspeak'),
+    'zh-hans' => array('Chinese, Simplified', '简体中文'),
+    'zh-hant' => array('Chinese, Traditional', '繁體中文'),
+  );
+}
diff --git a/package/hosting_package.module b/package/hosting_package.module
index 15b1a1b..b1384c1 100644
--- a/package/hosting_package.module
+++ b/package/hosting_package.module
@@ -168,6 +168,22 @@ function hosting_get_profile_platforms($profile, $check_old_short_name = FALSE)
  * @todo document this function
  */
 function hosting_get_profile_languages($profile = NULL, $platform = NULL) {
+  // D8 and above.
+  if ($platform) {
+    $platform_node = node_load($platform);
+    $core_major_version = $platform_node->release->version[0];
+    if ($core_major_version >= 8) {
+      // Inspired from Drupal 8 code in
+      // core/lib/Drupal/Core/Installer/Form/SelectLanguageForm.php.
+      require_once 'hosting_package.languages.inc';
+      $languages = array();
+      foreach (hosting_package_get_standard_language_list() as $langcode => $language_names) {
+        $languages[$langcode] = $language_names[0] . ' (' . $language_names[1] . ')';
+      }
+      return $languages;
+    }
+  }
+
   $languages['en'] = _hosting_language_name('en');
   if ($profile && $platform) {
     $instance = hosting_package_instance_load(array(
-- 
1.9.1

