run_loop 2.1.3 → 2.1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/run_loop.rb +119 -4
- data/lib/run_loop/{host_cache.rb → cache.rb} +8 -3
- data/lib/run_loop/codesign.rb +3 -3
- data/lib/run_loop/core.rb +26 -5
- data/lib/run_loop/core_simulator.rb +14 -13
- data/lib/run_loop/detect_aut/detect.rb +1 -1
- data/lib/run_loop/device.rb +2 -2
- data/lib/run_loop/device_agent/Frameworks.zip +0 -0
- data/lib/run_loop/device_agent/app/CBX-Runner.app.zip +0 -0
- data/lib/run_loop/device_agent/bin/iOSDeviceManager +0 -0
- data/lib/run_loop/device_agent/cbxrunner.rb +3 -2
- data/lib/run_loop/device_agent/frameworks.rb +7 -13
- data/lib/run_loop/device_agent/{xctestctl.rb → ios_device_manager.rb} +36 -24
- data/lib/run_loop/device_agent/ipa/CBX-Runner.app.zip +0 -0
- data/lib/run_loop/device_agent/launcher.rb +8 -0
- data/lib/run_loop/device_agent/xcodebuild.rb +5 -0
- data/lib/run_loop/dnssd.rb +148 -0
- data/lib/run_loop/dot_dir.rb +1 -1
- data/lib/run_loop/dylib_injector.rb +1 -1
- data/lib/run_loop/encoding.rb +17 -0
- data/lib/run_loop/environment.rb +15 -5
- data/lib/run_loop/instruments.rb +2 -2
- data/lib/run_loop/language.rb +4 -0
- data/lib/run_loop/locale.rb +4 -1
- data/lib/run_loop/otool.rb +1 -1
- data/lib/run_loop/process_terminator.rb +1 -1
- data/lib/run_loop/shell.rb +2 -2
- data/lib/run_loop/sim_control.rb +5 -5
- data/lib/run_loop/simctl.rb +2 -2
- data/lib/run_loop/strings.rb +1 -1
- data/lib/run_loop/version.rb +1 -1
- data/lib/run_loop/xcode.rb +15 -0
- data/lib/run_loop/xcrun.rb +7 -3
- data/lib/run_loop/xcuitest.rb +155 -68
- metadata +41 -21
- data/lib/run_loop/cache/cache.rb +0 -68
- data/lib/run_loop/device_agent/bin/xctestctl +0 -0
- data/lib/run_loop/device_agent/frameworks/Frameworks.zip +0 -0
data/lib/run_loop/language.rb
CHANGED
@@ -45,6 +45,10 @@ module RunLoop
|
|
45
45
|
# printf("\"%s\",", [langCode cStringUsingEncoding:NSUTF8StringEncoding]);
|
46
46
|
# }
|
47
47
|
LANGUAGE_CODES = {
|
48
|
+
RunLoop::Version.new("10.0") => [
|
49
|
+
"af","af-NA","af-ZA","agq","agq-CM","ak","ak-GH","am","am-ET","ar","ar-001","ar-AE","ar-BH","ar-DJ","ar-DZ","ar-EG","ar-EH","ar-ER","ar-IL","ar-IQ","ar-JO","ar-KM","ar-KW","ar-LB","ar-LY","ar-MA","ar-MR","ar-OM","ar-PS","ar-QA","ar-SA","ar-SD","ar-SO","ar-SS","ar-SY","ar-TD","ar-TN","ar-YE","ars","as","as-IN","asa","asa-TZ","ast","ast-ES","az","az-Cyrl","az-Cyrl-AZ","az-AZ","bas","bas-CM","be","be-BY","bem","bem-ZM","bez","bez-TZ","bg","bg-BG","bm","bm-ML","bn","bn-BD","bn-IN","bo","bo-CN","bo-IN","br","br-FR","brx","brx-IN","bs","bs-Cyrl","bs-Cyrl-BA","bs-BA","ca","ca-AD","ca-ES","ca-FR","ca-IT","ce","ce-RU","cgg","cgg-UG","chr","chr-US","ckb","ckb-IQ","ckb-IR","cs","cs-CZ","cy","cy-GB","da","da-DK","da-GL","dav","dav-KE","de","de-AT","de-BE","de-CH","de-DE","de-LI","de-LU","dje","dje-NE","dsb","dsb-DE","dua","dua-CM","dyo","dyo-SN","dz","dz-BT","ebu","ebu-KE","ee","ee-GH","ee-TG","el","el-CY","el-GR","en","en-001","en-150","en-AD","en-AG","en-AI","en-AL","en-AS","en-AT","en-AU","en-BA","en-BB","en-BE","en-BI","en-BM","en-BR","en-BS","en-BW","en-BZ","en-CA","en-CC","en-CH","en-CK","en-CM","en-CN","en-CX","en-CY","en-CZ","en-DE","en-DG","en-DK","en-DM","en-EE","en-ER","en-ES","en-FI","en-FJ","en-FK","en-FM","en-FR","en-GB","en-GD","en-GG","en-GH","en-GI","en-GM","en-GR","en-GU","en-GY","en-HK","en-HR","en-HU","en-IE","en-IL","en-IM","en-IN","en-IO","en-IS","en-IT","en-JE","en-JM","en-JP","en-KE","en-KI","en-KN","en-KR","en-KY","en-LC","en-LR","en-LS","en-LT","en-LU","en-LV","en-ME","en-MG","en-MH","en-MO","en-MP","en-MS","en-MT","en-MU","en-MV","en-MW","en-MY","en-NA","en-NF","en-NG","en-NL","en-NO","en-NR","en-NU","en-NZ","en-PG","en-PH","en-PK","en-PL","en-PN","en-PR","en-PT","en-PW","en-RO","en-RU","en-RW","en-SB","en-SC","en-SD","en-SE","en-SG","en-SH","en-SI","en-SK","en-SL","en-SS","en-SX","en-SZ","en-TC","en-TK","en-TO","en-TR","en-TT","en-TV","en-TW","en-TZ","en-UG","en-UM","en-US","en-US-POSIX","en-VC","en-VG","en-VI","en-VU","en-WS","en-ZA","en-ZM","en-ZW","eo","es","es-419","es-AR","es-BO","es-CL","es-CO","es-CR","es-CU","es-DO","es-EA","es-EC","es-ES","es-GQ","es-GT","es-HN","es-IC","es-MX","es-NI","es-PA","es-PE","es-PH","es-PR","es-PY","es-SV","es-US","es-UY","es-VE","et","et-EE","eu","eu-ES","ewo","ewo-CM","fa","fa-AF","fa-IR","ff","ff-CM","ff-GN","ff-MR","ff-SN","fi","fi-FI","fil","fil-PH","fo","fo-DK","fo-FO","fr","fr-BE","fr-BF","fr-BI","fr-BJ","fr-BL","fr-CA","fr-CD","fr-CF","fr-CG","fr-CH","fr-CI","fr-CM","fr-DJ","fr-DZ","fr-FR","fr-GA","fr-GF","fr-GN","fr-GP","fr-GQ","fr-HT","fr-KM","fr-LU","fr-MA","fr-MC","fr-MF","fr-MG","fr-ML","fr-MQ","fr-MR","fr-MU","fr-NC","fr-NE","fr-PF","fr-PM","fr-RE","fr-RW","fr-SC","fr-SN","fr-SY","fr-TD","fr-TG","fr-TN","fr-VU","fr-WF","fr-YT","fur","fur-IT","fy","fy-NL","ga","ga-IE","gd","gd-GB","gl","gl-ES","gsw","gsw-CH","gsw-FR","gsw-LI","gu","gu-IN","guz","guz-KE","gv","gv-IM","ha","ha-GH","ha-NE","ha-NG","haw","haw-US","he","he-IL","hi","hi-IN","hr","hr-BA","hr-HR","hsb","hsb-DE","hu","hu-HU","hy","hy-AM","id","id-ID","ig","ig-NG","ii","ii-CN","is","is-IS","it","it-CH","it-IT","it-SM","iu","iu-CA","ja","ja-JP","jgo","jgo-CM","jmc","jmc-TZ","ka","ka-GE","kab","kab-DZ","kam","kam-KE","kde","kde-TZ","kea","kea-CV","khq","khq-ML","ki","ki-KE","kk","kk-KZ","kkj","kkj-CM","kl","kl-GL","kln","kln-KE","km","km-KH","kn","kn-IN","ko","ko-KP","ko-KR","kok","kok-IN","ks","ks-IN","ksb","ksb-TZ","ksf","ksf-CM","ksh","ksh-DE","kw","kw-GB","ky","ky-KG","lag","lag-TZ","lb","lb-LU","lg","lg-UG","lkt","lkt-US","ln","ln-AO","ln-CD","ln-CF","ln-CG","lo","lo-LA","lrc","lrc-IQ","lrc-IR","lt","lt-LT","lu","lu-CD","luo","luo-KE","luy","luy-KE","lv","lv-LV","mas","mas-KE","mas-TZ","mer","mer-KE","mfe","mfe-MU","mg","mg-MG","mgh","mgh-MZ","mgo","mgo-CM","mk","mk-MK","ml","ml-IN","mn","mn-MN","mr","mr-IN","ms","ms-Arab","ms-Arab-BN","ms-Arab-MY","ms-BN","ms-MY","ms-SG","mt","mt-MT","mua","mua-CM","my","my-MM","mzn","mzn-IR","naq","naq-NA","nb","nb-NO","nb-SJ","nd","nd-ZW","ne","ne-IN","ne-NP","nl","nl-AW","nl-BE","nl-BQ","nl-CW","nl-NL","nl-SR","nl-SX","nmg","nmg-CM","nn","nn-NO","nnh","nnh-CM","nus","nus-SS","nyn","nyn-UG","om","om-ET","om-KE","or","or-IN","os","os-GE","os-RU","pa","pa-Arab","pa-Arab-PK","pa-IN","pl","pl-PL","ps","ps-AF","pt","pt-AO","pt-BR","pt-CV","pt-GW","pt-MO","pt-MZ","pt-PT","pt-ST","pt-TL","qu","qu-BO","qu-EC","qu-PE","rm","rm-CH","rn","rn-BI","ro","ro-MD","ro-RO","rof","rof-TZ","ru","ru-BY","ru-KG","ru-KZ","ru-MD","ru-RU","ru-UA","rw","rw-RW","rwk","rwk-TZ","sah","sah-RU","saq","saq-KE","sbp","sbp-TZ","se","se-FI","se-NO","se-SE","seh","seh-MZ","ses","ses-ML","sg","sg-CF","shi","shi-MA","shi-Tfng","shi-Tfng-MA","si","si-LK","sk","sk-SK","sl","sl-SI","smn","smn-FI","sn","sn-ZW","so","so-DJ","so-ET","so-KE","so-SO","sq","sq-AL","sq-MK","sq-XK","sr","sr-BA","sr-ME","sr-RS","sr-XK","sr-Latn","sr-Latn-BA","sr-Latn-ME","sr-Latn-RS","sr-Latn-XK","sv","sv-AX","sv-FI","sv-SE","sw","sw-CD","sw-KE","sw-TZ","sw-UG","ta","ta-IN","ta-LK","ta-MY","ta-SG","te","te-IN","teo","teo-KE","teo-UG","tg","tg-TJ","th","th-TH","ti","ti-ER","ti-ET","tk","tk-TM","to","to-TO","tr","tr-CY","tr-TR","twq","twq-NE","tzm","tzm-MA","ug","ug-CN","uk","uk-UA","ur","ur-IN","ur-PK","uz","uz-Arab","uz-Arab-AF","uz-UZ","uz-Latn","uz-Latn-UZ","vai","vai-Latn","vai-Latn-LR","vai-LR","vi","vi-VN","vun","vun-TZ","wae","wae-CH","xog","xog-UG","yav","yav-CM","yi","yi-001","yo","yo-BJ","yo-NG","yue","yue-HK","zgh","zgh-MA","zh","zh-Hans","zh-Hans-CN","zh-Hans-HK","zh-Hans-MO","zh-Hans-SG","zh-Hant","zh-Hant-HK","zh-Hant-MO","zh-Hant-TW","zu","zu-ZA"
|
50
|
+
],
|
51
|
+
|
48
52
|
RunLoop::Version.new("9.0") => [
|
49
53
|
"af","af-NA","af-ZA","agq","agq-CM","ak","ak-GH","am","am-ET","ar","ar-001","ar-AE","ar-BH","ar-DJ","ar-DZ","ar-EG","ar-EH","ar-ER","ar-IL","ar-IQ","ar-JO","ar-KM","ar-KW","ar-LB","ar-LY","ar-MA","ar-MR","ar-OM","ar-PS","ar-QA","ar-SA","ar-SD","ar-SO","ar-SS","ar-SY","ar-TD","ar-TN","ar-YE","as","as-IN","asa","asa-TZ","az","az-Cyrl","az-Cyrl-AZ","az-AZ","bas","bas-CM","be","be-BY","bem","bem-ZM","bez","bez-TZ","bg","bg-BG","bm","bm-ML","bn","bn-BD","bn-IN","bo","bo-CN","bo-IN","br","br-FR","brx","brx-IN","bs","bs-Cyrl","bs-Cyrl-BA","bs-BA","ca","ca-AD","ca-ES","ca-FR","ca-IT","cgg","cgg-UG","chr","chr-US","ckb","ckb-IQ","ckb-IR","cs","cs-CZ","cy","cy-GB","da","da-DK","da-GL","dav","dav-KE","de","de-AT","de-BE","de-CH","de-DE","de-LI","de-LU","dje","dje-NE","dsb","dsb-DE","dua","dua-CM","dyo","dyo-SN","dz","dz-BT","ebu","ebu-KE","ee","ee-GH","ee-TG","el","el-CY","el-GR","en","en-001","en-150","en-AD","en-AG","en-AI","en-AL","en-AS","en-AT","en-AU","en-BA","en-BB","en-BE","en-BM","en-BS","en-BW","en-BZ","en-CA","en-CC","en-CH","en-CK","en-CM","en-CX","en-CY","en-CZ","en-DE","en-DG","en-DK","en-DM","en-EE","en-ER","en-ES","en-FI","en-FJ","en-FK","en-FM","en-FR","en-GB","en-GD","en-GG","en-GH","en-GI","en-GM","en-GR","en-GU","en-GY","en-HK","en-HR","en-HU","en-IE","en-IL","en-IM","en-IN","en-IO","en-IS","en-IT","en-JE","en-JM","en-KE","en-KI","en-KN","en-KY","en-LC","en-LR","en-LS","en-LT","en-LU","en-LV","en-ME","en-MG","en-MH","en-MO","en-MP","en-MS","en-MT","en-MU","en-MW","en-MY","en-NA","en-NF","en-NG","en-NL","en-NO","en-NR","en-NU","en-NZ","en-PG","en-PH","en-PK","en-PL","en-PN","en-PR","en-PT","en-PW","en-RO","en-RU","en-RW","en-SB","en-SC","en-SD","en-SE","en-SG","en-SH","en-SI","en-SK","en-SL","en-SS","en-SX","en-SZ","en-TC","en-TK","en-TO","en-TR","en-TT","en-TV","en-TZ","en-UG","en-UM","en-US","en-US-POSIX","en-VC","en-VG","en-VI","en-VU","en-WS","en-ZA","en-ZM","en-ZW","eo","es","es-419","es-AR","es-BO","es-CL","es-CO","es-CR","es-CU","es-DO","es-EA","es-EC","es-ES","es-GQ","es-GT","es-HN","es-IC","es-MX","es-NI","es-PA","es-PE","es-PH","es-PR","es-PY","es-SV","es-US","es-UY","es-VE","et","et-EE","eu","eu-ES","ewo","ewo-CM","fa","fa-AF","fa-IR","ff","ff-CM","ff-GN","ff-MR","ff-SN","fi","fi-FI","fil","fil-PH","fo","fo-FO","fr","fr-BE","fr-BF","fr-BI","fr-BJ","fr-BL","fr-CA","fr-CD","fr-CF","fr-CG","fr-CH","fr-CI","fr-CM","fr-DJ","fr-DZ","fr-FR","fr-GA","fr-GF","fr-GN","fr-GP","fr-GQ","fr-HT","fr-KM","fr-LU","fr-MA","fr-MC","fr-MF","fr-MG","fr-ML","fr-MQ","fr-MR","fr-MU","fr-NC","fr-NE","fr-PF","fr-PM","fr-RE","fr-RW","fr-SC","fr-SN","fr-SY","fr-TD","fr-TG","fr-TN","fr-VU","fr-WF","fr-YT","fur","fur-IT","fy","fy-NL","ga","ga-IE","gd","gd-GB","gl","gl-ES","gsw","gsw-CH","gsw-FR","gsw-LI","gu","gu-IN","guz","guz-KE","gv","gv-IM","ha","ha-GH","ha-NE","ha-NG","haw","haw-US","he","he-IL","hi","hi-IN","hr","hr-BA","hr-HR","hsb","hsb-DE","hu","hu-HU","hy","hy-AM","id","id-ID","ig","ig-NG","ii","ii-CN","is","is-IS","it","it-CH","it-IT","it-SM","iu","iu-Cans","iu-Cans-CA","ja","ja-JP","jgo","jgo-CM","jmc","jmc-TZ","ka","ka-GE","kab","kab-DZ","kam","kam-KE","kde","kde-TZ","kea","kea-CV","khq","khq-ML","ki","ki-KE","kk","kk-KZ","kkj","kkj-CM","kl","kl-GL","kln","kln-KE","km","km-KH","kn","kn-IN","ko","ko-KP","ko-KR","kok","kok-IN","ks","ks-Arab","ks-Arab-IN","ksb","ksb-TZ","ksf","ksf-CM","ksh","ksh-DE","kw","kw-GB","ky","ky-KG","lag","lag-TZ","lb","lb-LU","lg","lg-UG","lkt","lkt-US","ln","ln-AO","ln-CD","ln-CF","ln-CG","lo","lo-LA","lt","lt-LT","lu","lu-CD","luo","luo-KE","luy","luy-KE","lv","lv-LV","mas","mas-KE","mas-TZ","mer","mer-KE","mfe","mfe-MU","mg","mg-MG","mgh","mgh-MZ","mgo","mgo-CM","mk","mk-MK","ml","ml-IN","mn","mn-MN","mr","mr-IN","ms","ms-Arab","ms-Arab-BN","ms-Arab-MY","ms-BN","ms-MY","ms-SG","mt","mt-MT","mua","mua-CM","my","my-MM","naq","naq-NA","nb","nb-NO","nb-SJ","nd","nd-ZW","ne","ne-IN","ne-NP","nl","nl-AW","nl-BE","nl-BQ","nl-CW","nl-NL","nl-SR","nl-SX","nmg","nmg-CM","nn","nn-NO","nnh","nnh-CM","nus","nus-SD","nyn","nyn-UG","om","om-ET","om-KE","or","or-IN","os","os-GE","os-RU","pa","pa-Arab","pa-Arab-PK","pa-IN","pl","pl-PL","ps","ps-AF","pt","pt-AO","pt-BR","pt-CV","pt-GW","pt-MO","pt-MZ","pt-PT","pt-ST","pt-TL","qu","qu-BO","qu-EC","qu-PE","rm","rm-CH","rn","rn-BI","ro","ro-MD","ro-RO","rof","rof-TZ","ru","ru-BY","ru-KG","ru-KZ","ru-MD","ru-RU","ru-UA","rw","rw-RW","rwk","rwk-TZ","sah","sah-RU","saq","saq-KE","sbp","sbp-TZ","se","se-FI","se-NO","se-SE","seh","seh-MZ","ses","ses-ML","sg","sg-CF","shi","shi-MA","shi-Tfng","shi-Tfng-MA","si","si-LK","sk","sk-SK","sl","sl-SI","smn","smn-FI","sn","sn-ZW","so","so-DJ","so-ET","so-KE","so-SO","sq","sq-AL","sq-MK","sq-XK","sr","sr-BA","sr-ME","sr-RS","sr-XK","sr-Latn","sr-Latn-BA","sr-Latn-ME","sr-Latn-RS","sr-Latn-XK","sv","sv-AX","sv-FI","sv-SE","sw","sw-CD","sw-KE","sw-TZ","sw-UG","ta","ta-IN","ta-LK","ta-MY","ta-SG","te","te-IN","teo","teo-KE","teo-UG","tg","tg-TJ","th","th-TH","ti","ti-ER","ti-ET","tk","tk-TM","to","to-TO","tr","tr-CY","tr-TR","twq","twq-NE","tzm","tzm-MA","ug","ug-Arab","ug-Arab-CN","uk","uk-UA","ur","ur-IN","ur-PK","uz","uz-Arab","uz-Arab-AF","uz-UZ","uz-Latn","uz-Latn-UZ","vai","vai-Latn","vai-Latn-LR","vai-LR","vi","vi-VN","vun","vun-TZ","wae","wae-CH","xog","xog-UG","yav","yav-CM","yi","yi-001","yo","yo-BJ","yo-NG","zgh","zgh-MA","zh","zh-Hans","zh-Hans-CN","zh-Hans-HK","zh-Hans-MO","zh-Hans-SG","zh-Hant","zh-Hant-HK","zh-Hant-MO","zh-Hant-TW","zu","zu-ZA",
|
50
54
|
],
|
data/lib/run_loop/locale.rb
CHANGED
@@ -78,13 +78,16 @@ module RunLoop
|
|
78
78
|
# NSArray *identifiers = [[NSLocale availableLocaleIdentifiers]
|
79
79
|
# sortedArrayUsingSelector:@selector(localizedCaseInsensitiveCompare:)];
|
80
80
|
# NSLocale *locale = [NSLocale localeWithLocaleIdentifier:@"en_US"];
|
81
|
-
# NSMutableOrderedSet *set = [NSMutableOrderedSet new];
|
82
81
|
# for (NSString *localeId in identifiers) {
|
83
82
|
# printf("\"%s\" => \"%s\",", [localeId cStringUsingEncoding:NSUTF8StringEncoding],
|
84
83
|
# [[locale displayNameForKey:NSLocaleIdentifier
|
85
84
|
# value:localeId] cStringUsingEncoding:NSUTF8StringEncoding]);
|
86
85
|
# }
|
87
86
|
LOCALES = {
|
87
|
+
RunLoop::Version.new("10.0") => {
|
88
|
+
"af" => "Afrikaans","af_NA" => "Afrikaans (Namibia)","af_ZA" => "Afrikaans (South Africa)","agq" => "Aghem","agq_CM" => "Aghem (Cameroon)","ak" => "Akan","ak_GH" => "Akan (Ghana)","am" => "Amharic","am_ET" => "Amharic (Ethiopia)","ar" => "Arabic","ar_001" => "Arabic (World)","ar_AE" => "Arabic (United Arab Emirates)","ar_BH" => "Arabic (Bahrain)","ar_DJ" => "Arabic (Djibouti)","ar_DZ" => "Arabic (Algeria)","ar_EG" => "Arabic (Egypt)","ar_EH" => "Arabic (Western Sahara)","ar_ER" => "Arabic (Eritrea)","ar_IL" => "Arabic (Israel)","ar_IQ" => "Arabic (Iraq)","ar_JO" => "Arabic (Jordan)","ar_KM" => "Arabic (Comoros)","ar_KW" => "Arabic (Kuwait)","ar_LB" => "Arabic (Lebanon)","ar_LY" => "Arabic (Libya)","ar_MA" => "Arabic (Morocco)","ar_MR" => "Arabic (Mauritania)","ar_OM" => "Arabic (Oman)","ar_PS" => "Arabic (Palestinian Territories)","ar_QA" => "Arabic (Qatar)","ar_SA" => "Arabic (Saudi Arabia)","ar_SD" => "Arabic (Sudan)","ar_SO" => "Arabic (Somalia)","ar_SS" => "Arabic (South Sudan)","ar_SY" => "Arabic (Syria)","ar_TD" => "Arabic (Chad)","ar_TN" => "Arabic (Tunisia)","ar_YE" => "Arabic (Yemen)","ars" => "Najdi Arabic","as" => "Assamese","as_IN" => "Assamese (India)","asa" => "Asu","asa_TZ" => "Asu (Tanzania)","ast" => "Asturian","ast_ES" => "Asturian (Spain)","az" => "Azerbaijani","az_Cyrl" => "Azerbaijani (Cyrillic)","az_Cyrl_AZ" => "Azerbaijani (Cyrillic, Azerbaijan)","az_Latn" => "Azerbaijani (Latin)","az_Latn_AZ" => "Azerbaijani (Latin, Azerbaijan)","bas" => "Basaa","bas_CM" => "Basaa (Cameroon)","be" => "Belarusian","be_BY" => "Belarusian (Belarus)","bem" => "Bemba","bem_ZM" => "Bemba (Zambia)","bez" => "Bena","bez_TZ" => "Bena (Tanzania)","bg" => "Bulgarian","bg_BG" => "Bulgarian (Bulgaria)","bm" => "Bambara","bm_ML" => "Bambara (Mali)","bn" => "Bengali","bn_BD" => "Bengali (Bangladesh)","bn_IN" => "Bengali (India)","bo" => "Tibetan","bo_CN" => "Tibetan (China)","bo_IN" => "Tibetan (India)","br" => "Breton","br_FR" => "Breton (France)","brx" => "Bodo","brx_IN" => "Bodo (India)","bs" => "Bosnian","bs_Cyrl" => "Bosnian (Cyrillic)","bs_Cyrl_BA" => "Bosnian (Cyrillic, Bosnia & Herzegovina)","bs_Latn" => "Bosnian (Latin)","bs_Latn_BA" => "Bosnian (Latin, Bosnia & Herzegovina)","ca" => "Catalan","ca_AD" => "Catalan (Andorra)","ca_ES" => "Catalan (Spain)","ca_FR" => "Catalan (France)","ca_IT" => "Catalan (Italy)","ce" => "Chechen","ce_RU" => "Chechen (Russia)","cgg" => "Chiga","cgg_UG" => "Chiga (Uganda)","chr" => "Cherokee","chr_US" => "Cherokee (United States)","ckb" => "Central Kurdish","ckb_IQ" => "Central Kurdish (Iraq)","ckb_IR" => "Central Kurdish (Iran)","cs" => "Czech","cs_CZ" => "Czech (Czech Republic)","cy" => "Welsh","cy_GB" => "Welsh (United Kingdom)","da" => "Danish","da_DK" => "Danish (Denmark)","da_GL" => "Danish (Greenland)","dav" => "Taita","dav_KE" => "Taita (Kenya)","de" => "German","de_AT" => "German (Austria)","de_BE" => "German (Belgium)","de_CH" => "German (Switzerland)","de_DE" => "German (Germany)","de_LI" => "German (Liechtenstein)","de_LU" => "German (Luxembourg)","dje" => "Zarma","dje_NE" => "Zarma (Niger)","dsb" => "Lower Sorbian","dsb_DE" => "Lower Sorbian (Germany)","dua" => "Duala","dua_CM" => "Duala (Cameroon)","dyo" => "Jola-Fonyi","dyo_SN" => "Jola-Fonyi (Senegal)","dz" => "Dzongkha","dz_BT" => "Dzongkha (Bhutan)","ebu" => "Embu","ebu_KE" => "Embu (Kenya)","ee" => "Ewe","ee_GH" => "Ewe (Ghana)","ee_TG" => "Ewe (Togo)","el" => "Greek","el_CY" => "Greek (Cyprus)","el_GR" => "Greek (Greece)","en" => "English","en_001" => "English (World)","en_150" => "English (Europe)","en_AD" => "English (Andorra)","en_AG" => "English (Antigua & Barbuda)","en_AI" => "English (Anguilla)","en_AL" => "English (Albania)","en_AS" => "English (American Samoa)","en_AT" => "English (Austria)","en_AU" => "English (Australia)","en_BA" => "English (Bosnia & Herzegovina)","en_BB" => "English (Barbados)","en_BE" => "English (Belgium)","en_BI" => "English (Burundi)","en_BM" => "English (Bermuda)","en_BR" => "English (Brazil)","en_BS" => "English (Bahamas)","en_BW" => "English (Botswana)","en_BZ" => "English (Belize)","en_CA" => "English (Canada)","en_CC" => "English (Cocos [Keeling] Islands)","en_CH" => "English (Switzerland)","en_CK" => "English (Cook Islands)","en_CM" => "English (Cameroon)","en_CN" => "English (China)","en_CX" => "English (Christmas Island)","en_CY" => "English (Cyprus)","en_CZ" => "English (Czech Republic)","en_DE" => "English (Germany)","en_DG" => "English (Diego Garcia)","en_DK" => "English (Denmark)","en_DM" => "English (Dominica)","en_EE" => "English (Estonia)","en_ER" => "English (Eritrea)","en_ES" => "English (Spain)","en_FI" => "English (Finland)","en_FJ" => "English (Fiji)","en_FK" => "English (Falkland Islands)","en_FM" => "English (Micronesia)","en_FR" => "English (France)","en_GB" => "English (United Kingdom)","en_GD" => "English (Grenada)","en_GG" => "English (Guernsey)","en_GH" => "English (Ghana)","en_GI" => "English (Gibraltar)","en_GM" => "English (Gambia)","en_GR" => "English (Greece)","en_GU" => "English (Guam)","en_GY" => "English (Guyana)","en_HK" => "English (Hong Kong [China])","en_HR" => "English (Croatia)","en_HU" => "English (Hungary)","en_IE" => "English (Ireland)","en_IL" => "English (Israel)","en_IM" => "English (Isle of Man)","en_IN" => "English (India)","en_IO" => "English (British Indian Ocean Territory)","en_IS" => "English (Iceland)","en_IT" => "English (Italy)","en_JE" => "English (Jersey)","en_JM" => "English (Jamaica)","en_JP" => "English (Japan)","en_KE" => "English (Kenya)","en_KI" => "English (Kiribati)","en_KN" => "English (St. Kitts & Nevis)","en_KR" => "English (South Korea)","en_KY" => "English (Cayman Islands)","en_LC" => "English (St. Lucia)","en_LR" => "English (Liberia)","en_LS" => "English (Lesotho)","en_LT" => "English (Lithuania)","en_LU" => "English (Luxembourg)","en_LV" => "English (Latvia)","en_ME" => "English (Montenegro)","en_MG" => "English (Madagascar)","en_MH" => "English (Marshall Islands)","en_MO" => "English (Macau [China])","en_MP" => "English (Northern Mariana Islands)","en_MS" => "English (Montserrat)","en_MT" => "English (Malta)","en_MU" => "English (Mauritius)","en_MV" => "English (Maldives)","en_MW" => "English (Malawi)","en_MY" => "English (Malaysia)","en_NA" => "English (Namibia)","en_NF" => "English (Norfolk Island)","en_NG" => "English (Nigeria)","en_NL" => "English (Netherlands)","en_NO" => "English (Norway)","en_NR" => "English (Nauru)","en_NU" => "English (Niue)","en_NZ" => "English (New Zealand)","en_PG" => "English (Papua New Guinea)","en_PH" => "English (Philippines)","en_PK" => "English (Pakistan)","en_PL" => "English (Poland)","en_PN" => "English (Pitcairn Islands)","en_PR" => "English (Puerto Rico)","en_PT" => "English (Portugal)","en_PW" => "English (Palau)","en_RO" => "English (Romania)","en_RU" => "English (Russia)","en_RW" => "English (Rwanda)","en_SB" => "English (Solomon Islands)","en_SC" => "English (Seychelles)","en_SD" => "English (Sudan)","en_SE" => "English (Sweden)","en_SG" => "English (Singapore)","en_SH" => "English (St. Helena)","en_SI" => "English (Slovenia)","en_SK" => "English (Slovakia)","en_SL" => "English (Sierra Leone)","en_SS" => "English (South Sudan)","en_SX" => "English (Sint Maarten)","en_SZ" => "English (Swaziland)","en_TC" => "English (Turks & Caicos Islands)","en_TK" => "English (Tokelau)","en_TO" => "English (Tonga)","en_TR" => "English (Turkey)","en_TT" => "English (Trinidad & Tobago)","en_TV" => "English (Tuvalu)","en_TW" => "English (Taiwan)","en_TZ" => "English (Tanzania)","en_UG" => "English (Uganda)","en_UM" => "English (U.S. Outlying Islands)","en_US" => "English (United States)","en_US_POSIX" => "English (United States, Computer)","en_VC" => "English (St. Vincent & Grenadines)","en_VG" => "English (British Virgin Islands)","en_VI" => "English (U.S. Virgin Islands)","en_VU" => "English (Vanuatu)","en_WS" => "English (Samoa)","en_ZA" => "English (South Africa)","en_ZM" => "English (Zambia)","en_ZW" => "English (Zimbabwe)","eo" => "Esperanto","es" => "Spanish","es_419" => "Spanish (Latin America)","es_AR" => "Spanish (Argentina)","es_BO" => "Spanish (Bolivia)","es_CL" => "Spanish (Chile)","es_CO" => "Spanish (Colombia)","es_CR" => "Spanish (Costa Rica)","es_CU" => "Spanish (Cuba)","es_DO" => "Spanish (Dominican Republic)","es_EA" => "Spanish (Ceuta & Melilla)","es_EC" => "Spanish (Ecuador)","es_ES" => "Spanish (Spain)","es_GQ" => "Spanish (Equatorial Guinea)","es_GT" => "Spanish (Guatemala)","es_HN" => "Spanish (Honduras)","es_IC" => "Spanish (Canary Islands)","es_MX" => "Spanish (Mexico)","es_NI" => "Spanish (Nicaragua)","es_PA" => "Spanish (Panama)","es_PE" => "Spanish (Peru)","es_PH" => "Spanish (Philippines)","es_PR" => "Spanish (Puerto Rico)","es_PY" => "Spanish (Paraguay)","es_SV" => "Spanish (El Salvador)","es_US" => "Spanish (United States)","es_UY" => "Spanish (Uruguay)","es_VE" => "Spanish (Venezuela)","et" => "Estonian","et_EE" => "Estonian (Estonia)","eu" => "Basque","eu_ES" => "Basque (Spain)","ewo" => "Ewondo","ewo_CM" => "Ewondo (Cameroon)","fa" => "Persian","fa_AF" => "Persian (Afghanistan)","fa_IR" => "Persian (Iran)","ff" => "Fulah","ff_CM" => "Fulah (Cameroon)","ff_GN" => "Fulah (Guinea)","ff_MR" => "Fulah (Mauritania)","ff_SN" => "Fulah (Senegal)","fi" => "Finnish","fi_FI" => "Finnish (Finland)","fil" => "Filipino","fil_PH" => "Filipino (Philippines)","fo" => "Faroese","fo_DK" => "Faroese (Denmark)","fo_FO" => "Faroese (Faroe Islands)","fr" => "French","fr_BE" => "French (Belgium)","fr_BF" => "French (Burkina Faso)","fr_BI" => "French (Burundi)","fr_BJ" => "French (Benin)","fr_BL" => "French (St. Barthélemy)","fr_CA" => "French (Canada)","fr_CD" => "French (Congo - Kinshasa)","fr_CF" => "French (Central African Republic)","fr_CG" => "French (Congo - Brazzaville)","fr_CH" => "French (Switzerland)","fr_CI" => "French (Côte d’Ivoire)","fr_CM" => "French (Cameroon)","fr_DJ" => "French (Djibouti)","fr_DZ" => "French (Algeria)","fr_FR" => "French (France)","fr_GA" => "French (Gabon)","fr_GF" => "French (French Guiana)","fr_GN" => "French (Guinea)","fr_GP" => "French (Guadeloupe)","fr_GQ" => "French (Equatorial Guinea)","fr_HT" => "French (Haiti)","fr_KM" => "French (Comoros)","fr_LU" => "French (Luxembourg)","fr_MA" => "French (Morocco)","fr_MC" => "French (Monaco)","fr_MF" => "French (St. Martin)","fr_MG" => "French (Madagascar)","fr_ML" => "French (Mali)","fr_MQ" => "French (Martinique)","fr_MR" => "French (Mauritania)","fr_MU" => "French (Mauritius)","fr_NC" => "French (New Caledonia)","fr_NE" => "French (Niger)","fr_PF" => "French (French Polynesia)","fr_PM" => "French (St. Pierre & Miquelon)","fr_RE" => "French (Réunion)","fr_RW" => "French (Rwanda)","fr_SC" => "French (Seychelles)","fr_SN" => "French (Senegal)","fr_SY" => "French (Syria)","fr_TD" => "French (Chad)","fr_TG" => "French (Togo)","fr_TN" => "French (Tunisia)","fr_VU" => "French (Vanuatu)","fr_WF" => "French (Wallis & Futuna)","fr_YT" => "French (Mayotte)","fur" => "Friulian","fur_IT" => "Friulian (Italy)","fy" => "Western Frisian","fy_NL" => "Western Frisian (Netherlands)","ga" => "Irish","ga_IE" => "Irish (Ireland)","gd" => "Scottish Gaelic","gd_GB" => "Scottish Gaelic (United Kingdom)","gl" => "Galician","gl_ES" => "Galician (Spain)","gsw" => "Swiss German","gsw_CH" => "Swiss German (Switzerland)","gsw_FR" => "Swiss German (France)","gsw_LI" => "Swiss German (Liechtenstein)","gu" => "Gujarati","gu_IN" => "Gujarati (India)","guz" => "Gusii","guz_KE" => "Gusii (Kenya)","gv" => "Manx","gv_IM" => "Manx (Isle of Man)","ha" => "Hausa","ha_GH" => "Hausa (Ghana)","ha_NE" => "Hausa (Niger)","ha_NG" => "Hausa (Nigeria)","haw" => "Hawaiian","haw_US" => "Hawaiian (United States)","he" => "Hebrew","he_IL" => "Hebrew (Israel)","hi" => "Hindi","hi_IN" => "Hindi (India)","hr" => "Croatian","hr_BA" => "Croatian (Bosnia & Herzegovina)","hr_HR" => "Croatian (Croatia)","hsb" => "Upper Sorbian","hsb_DE" => "Upper Sorbian (Germany)","hu" => "Hungarian","hu_HU" => "Hungarian (Hungary)","hy" => "Armenian","hy_AM" => "Armenian (Armenia)","id" => "Indonesian","id_ID" => "Indonesian (Indonesia)","ig" => "Igbo","ig_NG" => "Igbo (Nigeria)","ii" => "Sichuan Yi","ii_CN" => "Sichuan Yi (China)","is" => "Icelandic","is_IS" => "Icelandic (Iceland)","it" => "Italian","it_CH" => "Italian (Switzerland)","it_IT" => "Italian (Italy)","it_SM" => "Italian (San Marino)","iu" => "Inuktitut","iu_CA" => "Inuktitut (Canada)","ja" => "Japanese","ja_JP" => "Japanese (Japan)","jgo" => "Ngomba","jgo_CM" => "Ngomba (Cameroon)","jmc" => "Machame","jmc_TZ" => "Machame (Tanzania)","ka" => "Georgian","ka_GE" => "Georgian (Georgia)","kab" => "Kabyle","kab_DZ" => "Kabyle (Algeria)","kam" => "Kamba","kam_KE" => "Kamba (Kenya)","kde" => "Makonde","kde_TZ" => "Makonde (Tanzania)","kea" => "Kabuverdianu","kea_CV" => "Kabuverdianu (Cape Verde)","khq" => "Koyra Chiini","khq_ML" => "Koyra Chiini (Mali)","ki" => "Kikuyu","ki_KE" => "Kikuyu (Kenya)","kk" => "Kazakh","kk_KZ" => "Kazakh (Kazakhstan)","kkj" => "Kako","kkj_CM" => "Kako (Cameroon)","kl" => "Kalaallisut","kl_GL" => "Kalaallisut (Greenland)","kln" => "Kalenjin","kln_KE" => "Kalenjin (Kenya)","km" => "Khmer","km_KH" => "Khmer (Cambodia)","kn" => "Kannada","kn_IN" => "Kannada (India)","ko" => "Korean","ko_KP" => "Korean (North Korea)","ko_KR" => "Korean (South Korea)","kok" => "Konkani","kok_IN" => "Konkani (India)","ks" => "Kashmiri","ks_IN" => "Kashmiri (India)","ksb" => "Shambala","ksb_TZ" => "Shambala (Tanzania)","ksf" => "Bafia","ksf_CM" => "Bafia (Cameroon)","ksh" => "Colognian","ksh_DE" => "Colognian (Germany)","kw" => "Cornish","kw_GB" => "Cornish (United Kingdom)","ky" => "Kyrgyz","ky_KG" => "Kyrgyz (Kyrgyzstan)","lag" => "Langi","lag_TZ" => "Langi (Tanzania)","lb" => "Luxembourgish","lb_LU" => "Luxembourgish (Luxembourg)","lg" => "Ganda","lg_UG" => "Ganda (Uganda)","lkt" => "Lakota","lkt_US" => "Lakota (United States)","ln" => "Lingala","ln_AO" => "Lingala (Angola)","ln_CD" => "Lingala (Congo - Kinshasa)","ln_CF" => "Lingala (Central African Republic)","ln_CG" => "Lingala (Congo - Brazzaville)","lo" => "Lao","lo_LA" => "Lao (Laos)","lrc" => "Northern Luri","lrc_IQ" => "Northern Luri (Iraq)","lrc_IR" => "Northern Luri (Iran)","lt" => "Lithuanian","lt_LT" => "Lithuanian (Lithuania)","lu" => "Luba-Katanga","lu_CD" => "Luba-Katanga (Congo - Kinshasa)","luo" => "Luo","luo_KE" => "Luo (Kenya)","luy" => "Luyia","luy_KE" => "Luyia (Kenya)","lv" => "Latvian","lv_LV" => "Latvian (Latvia)","mas" => "Masai","mas_KE" => "Masai (Kenya)","mas_TZ" => "Masai (Tanzania)","mer" => "Meru","mer_KE" => "Meru (Kenya)","mfe" => "Morisyen","mfe_MU" => "Morisyen (Mauritius)","mg" => "Malagasy","mg_MG" => "Malagasy (Madagascar)","mgh" => "Makhuwa-Meetto","mgh_MZ" => "Makhuwa-Meetto (Mozambique)","mgo" => "Metaʼ","mgo_CM" => "Metaʼ (Cameroon)","mk" => "Macedonian","mk_MK" => "Macedonian (Macedonia)","ml" => "Malayalam","ml_IN" => "Malayalam (India)","mn" => "Mongolian","mn_MN" => "Mongolian (Mongolia)","mr" => "Marathi","mr_IN" => "Marathi (India)","ms" => "Malay","ms_Arab" => "Malay (Arabic)","ms_Arab_BN" => "Malay (Arabic, Brunei)","ms_Arab_MY" => "Malay (Arabic, Malaysia)","ms_BN" => "Malay (Brunei)","ms_MY" => "Malay (Malaysia)","ms_SG" => "Malay (Singapore)","mt" => "Maltese","mt_MT" => "Maltese (Malta)","mua" => "Mundang","mua_CM" => "Mundang (Cameroon)","my" => "Burmese","my_MM" => "Burmese (Myanmar [Burma])","mzn" => "Mazanderani","mzn_IR" => "Mazanderani (Iran)","naq" => "Nama","naq_NA" => "Nama (Namibia)","nb" => "Norwegian Bokmål","nb_NO" => "Norwegian Bokmål (Norway)","nb_SJ" => "Norwegian Bokmål (Svalbard & Jan Mayen)","nd" => "North Ndebele","nd_ZW" => "North Ndebele (Zimbabwe)","ne" => "Nepali","ne_IN" => "Nepali (India)","ne_NP" => "Nepali (Nepal)","nl" => "Dutch","nl_AW" => "Dutch (Aruba)","nl_BE" => "Dutch (Belgium)","nl_BQ" => "Dutch (Caribbean Netherlands)","nl_CW" => "Dutch (Curaçao)","nl_NL" => "Dutch (Netherlands)","nl_SR" => "Dutch (Suriname)","nl_SX" => "Dutch (Sint Maarten)","nmg" => "Kwasio","nmg_CM" => "Kwasio (Cameroon)","nn" => "Norwegian Nynorsk","nn_NO" => "Norwegian Nynorsk (Norway)","nnh" => "Ngiemboon","nnh_CM" => "Ngiemboon (Cameroon)","nus" => "Nuer","nus_SS" => "Nuer (South Sudan)","nyn" => "Nyankole","nyn_UG" => "Nyankole (Uganda)","om" => "Oromo","om_ET" => "Oromo (Ethiopia)","om_KE" => "Oromo (Kenya)","or" => "Oriya","or_IN" => "Oriya (India)","os" => "Ossetic","os_GE" => "Ossetic (Georgia)","os_RU" => "Ossetic (Russia)","pa" => "Punjabi","pa_Arab" => "Punjabi (Arabic)","pa_Arab_PK" => "Punjabi (Arabic, Pakistan)","pa_Guru" => "Punjabi (Gurmukhi)","pa_Guru_IN" => "Punjabi (Gurmukhi, India)","pl" => "Polish","pl_PL" => "Polish (Poland)","ps" => "Pashto","ps_AF" => "Pashto (Afghanistan)","pt" => "Portuguese","pt_AO" => "Portuguese (Angola)","pt_BR" => "Portuguese (Brazil)","pt_CV" => "Portuguese (Cape Verde)","pt_GW" => "Portuguese (Guinea-Bissau)","pt_MO" => "Portuguese (Macau [China])","pt_MZ" => "Portuguese (Mozambique)","pt_PT" => "Portuguese (Portugal)","pt_ST" => "Portuguese (São Tomé & Príncipe)","pt_TL" => "Portuguese (Timor-Leste)","qu" => "Quechua","qu_BO" => "Quechua (Bolivia)","qu_EC" => "Quechua (Ecuador)","qu_PE" => "Quechua (Peru)","rm" => "Romansh","rm_CH" => "Romansh (Switzerland)","rn" => "Rundi","rn_BI" => "Rundi (Burundi)","ro" => "Romanian","ro_MD" => "Romanian (Moldova)","ro_RO" => "Romanian (Romania)","rof" => "Rombo","rof_TZ" => "Rombo (Tanzania)","ru" => "Russian","ru_BY" => "Russian (Belarus)","ru_KG" => "Russian (Kyrgyzstan)","ru_KZ" => "Russian (Kazakhstan)","ru_MD" => "Russian (Moldova)","ru_RU" => "Russian (Russia)","ru_UA" => "Russian (Ukraine)","rw" => "Kinyarwanda","rw_RW" => "Kinyarwanda (Rwanda)","rwk" => "Rwa","rwk_TZ" => "Rwa (Tanzania)","sah" => "Sakha","sah_RU" => "Sakha (Russia)","saq" => "Samburu","saq_KE" => "Samburu (Kenya)","sbp" => "Sangu","sbp_TZ" => "Sangu (Tanzania)","se" => "Northern Sami","se_FI" => "Northern Sami (Finland)","se_NO" => "Northern Sami (Norway)","se_SE" => "Northern Sami (Sweden)","seh" => "Sena","seh_MZ" => "Sena (Mozambique)","ses" => "Koyraboro Senni","ses_ML" => "Koyraboro Senni (Mali)","sg" => "Sango","sg_CF" => "Sango (Central African Republic)","shi" => "Tachelhit","shi_Latn" => "Tachelhit (Latin)","shi_Latn_MA" => "Tachelhit (Latin, Morocco)","shi_Tfng" => "Tachelhit (Tifinagh)","shi_Tfng_MA" => "Tachelhit (Tifinagh, Morocco)","si" => "Sinhala","si_LK" => "Sinhala (Sri Lanka)","sk" => "Slovak","sk_SK" => "Slovak (Slovakia)","sl" => "Slovenian","sl_SI" => "Slovenian (Slovenia)","smn" => "Inari Sami","smn_FI" => "Inari Sami (Finland)","sn" => "Shona","sn_ZW" => "Shona (Zimbabwe)","so" => "Somali","so_DJ" => "Somali (Djibouti)","so_ET" => "Somali (Ethiopia)","so_KE" => "Somali (Kenya)","so_SO" => "Somali (Somalia)","sq" => "Albanian","sq_AL" => "Albanian (Albania)","sq_MK" => "Albanian (Macedonia)","sq_XK" => "Albanian (Kosovo)","sr" => "Serbian","sr_Cyrl" => "Serbian (Cyrillic)","sr_Cyrl_BA" => "Serbian (Cyrillic, Bosnia & Herzegovina)","sr_Cyrl_ME" => "Serbian (Cyrillic, Montenegro)","sr_Cyrl_RS" => "Serbian (Cyrillic, Serbia)","sr_Cyrl_XK" => "Serbian (Cyrillic, Kosovo)","sr_Latn" => "Serbian (Latin)","sr_Latn_BA" => "Serbian (Latin, Bosnia & Herzegovina)","sr_Latn_ME" => "Serbian (Latin, Montenegro)","sr_Latn_RS" => "Serbian (Latin, Serbia)","sr_Latn_XK" => "Serbian (Latin, Kosovo)","sv" => "Swedish","sv_AX" => "Swedish (Åland Islands)","sv_FI" => "Swedish (Finland)","sv_SE" => "Swedish (Sweden)","sw" => "Swahili","sw_CD" => "Swahili (Congo - Kinshasa)","sw_KE" => "Swahili (Kenya)","sw_TZ" => "Swahili (Tanzania)","sw_UG" => "Swahili (Uganda)","ta" => "Tamil","ta_IN" => "Tamil (India)","ta_LK" => "Tamil (Sri Lanka)","ta_MY" => "Tamil (Malaysia)","ta_SG" => "Tamil (Singapore)","te" => "Telugu","te_IN" => "Telugu (India)","teo" => "Teso","teo_KE" => "Teso (Kenya)","teo_UG" => "Teso (Uganda)","tg" => "Tajik","tg_TJ" => "Tajik (Tajikistan)","th" => "Thai","th_TH" => "Thai (Thailand)","ti" => "Tigrinya","ti_ER" => "Tigrinya (Eritrea)","ti_ET" => "Tigrinya (Ethiopia)","tk" => "Turkmen","tk_TM" => "Turkmen (Turkmenistan)","to" => "Tongan","to_TO" => "Tongan (Tonga)","tr" => "Turkish","tr_CY" => "Turkish (Cyprus)","tr_TR" => "Turkish (Turkey)","twq" => "Tasawaq","twq_NE" => "Tasawaq (Niger)","tzm" => "Central Atlas Tamazight","tzm_MA" => "Central Atlas Tamazight (Morocco)","ug" => "Uyghur","ug_CN" => "Uyghur (China)","uk" => "Ukrainian","uk_UA" => "Ukrainian (Ukraine)","ur" => "Urdu","ur_IN" => "Urdu (India)","ur_PK" => "Urdu (Pakistan)","uz" => "Uzbek","uz_Arab" => "Uzbek (Arabic)","uz_Arab_AF" => "Uzbek (Arabic, Afghanistan)","uz_Cyrl" => "Uzbek (Cyrillic)","uz_Cyrl_UZ" => "Uzbek (Cyrillic, Uzbekistan)","uz_Latn" => "Uzbek (Latin)","uz_Latn_UZ" => "Uzbek (Latin, Uzbekistan)","vai" => "Vai","vai_Latn" => "Vai (Latin)","vai_Latn_LR" => "Vai (Latin, Liberia)","vai_Vaii" => "Vai (Vai)","vai_Vaii_LR" => "Vai (Vai, Liberia)","vi" => "Vietnamese","vi_VN" => "Vietnamese (Vietnam)","vun" => "Vunjo","vun_TZ" => "Vunjo (Tanzania)","wae" => "Walser","wae_CH" => "Walser (Switzerland)","xog" => "Soga","xog_UG" => "Soga (Uganda)","yav" => "Yangben","yav_CM" => "Yangben (Cameroon)","yi" => "Yiddish","yi_001" => "Yiddish (World)","yo" => "Yoruba","yo_BJ" => "Yoruba (Benin)","yo_NG" => "Yoruba (Nigeria)","yue" => "Cantonese","yue_HK" => "Cantonese (Hong Kong [China])","zgh" => "Standard Moroccan Tamazight","zgh_MA" => "Standard Moroccan Tamazight (Morocco)","zh" => "Chinese","zh_Hans" => "Chinese (Simplified)","zh_Hans_CN" => "Chinese (Simplified, China)","zh_Hans_HK" => "Chinese (Simplified, Hong Kong [China])","zh_Hans_MO" => "Chinese (Simplified, Macau [China])","zh_Hans_SG" => "Chinese (Simplified, Singapore)","zh_Hant" => "Chinese (Traditional)","zh_Hant_HK" => "Chinese (Traditional, Hong Kong [China])","zh_Hant_MO" => "Chinese (Traditional, Macau [China])","zh_Hant_TW" => "Chinese (Traditional, Taiwan)","zu" => "Zulu","zu_ZA" => "Zulu (South Africa)"
|
89
|
+
},
|
90
|
+
|
88
91
|
RunLoop::Version.new("9.0") => {
|
89
92
|
"af" => "Afrikaans","af_NA" => "Afrikaans (Namibia)","af_ZA" => "Afrikaans (South Africa)","agq" => "Aghem","agq_CM" => "Aghem (Cameroon)","ak" => "Akan","ak_GH" => "Akan (Ghana)","am" => "Amharic","am_ET" => "Amharic (Ethiopia)","ar" => "Arabic","ar_001" => "Arabic (World)","ar_AE" => "Arabic (United Arab Emirates)","ar_BH" => "Arabic (Bahrain)","ar_DJ" => "Arabic (Djibouti)","ar_DZ" => "Arabic (Algeria)","ar_EG" => "Arabic (Egypt)","ar_EH" => "Arabic (Western Sahara)","ar_ER" => "Arabic (Eritrea)","ar_IL" => "Arabic (Israel)","ar_IQ" => "Arabic (Iraq)","ar_JO" => "Arabic (Jordan)","ar_KM" => "Arabic (Comoros)","ar_KW" => "Arabic (Kuwait)","ar_LB" => "Arabic (Lebanon)","ar_LY" => "Arabic (Libya)","ar_MA" => "Arabic (Morocco)","ar_MR" => "Arabic (Mauritania)","ar_OM" => "Arabic (Oman)","ar_PS" => "Arabic (Palestinian Territories)","ar_QA" => "Arabic (Qatar)","ar_SA" => "Arabic (Saudi Arabia)","ar_SD" => "Arabic (Sudan)","ar_SO" => "Arabic (Somalia)","ar_SS" => "Arabic (South Sudan)","ar_SY" => "Arabic (Syria)","ar_TD" => "Arabic (Chad)","ar_TN" => "Arabic (Tunisia)","ar_YE" => "Arabic (Yemen)","as" => "Assamese","as_IN" => "Assamese (India)","asa" => "Asu","asa_TZ" => "Asu (Tanzania)","az" => "Azerbaijani","az_Cyrl" => "Azerbaijani (Cyrillic)","az_Cyrl_AZ" => "Azerbaijani (Cyrillic, Azerbaijan)","az_Latn" => "Azerbaijani (Latin)","az_Latn_AZ" => "Azerbaijani (Latin, Azerbaijan)","bas" => "Basaa","bas_CM" => "Basaa (Cameroon)","be" => "Belarusian","be_BY" => "Belarusian (Belarus)","bem" => "Bemba","bem_ZM" => "Bemba (Zambia)","bez" => "Bena","bez_TZ" => "Bena (Tanzania)","bg" => "Bulgarian","bg_BG" => "Bulgarian (Bulgaria)","bm" => "Bambara","bm_Latn" => "Bambara (Latin)","bm_Latn_ML" => "Bambara (Latin, Mali)","bn" => "Bengali","bn_BD" => "Bengali (Bangladesh)","bn_IN" => "Bengali (India)","bo" => "Tibetan","bo_CN" => "Tibetan (China)","bo_IN" => "Tibetan (India)","br" => "Breton","br_FR" => "Breton (France)","brx" => "Bodo","brx_IN" => "Bodo (India)","bs" => "Bosnian","bs_Cyrl" => "Bosnian (Cyrillic)","bs_Cyrl_BA" => "Bosnian (Cyrillic, Bosnia & Herzegovina)","bs_Latn" => "Bosnian (Latin)","bs_Latn_BA" => "Bosnian (Latin, Bosnia & Herzegovina)","ca" => "Catalan","ca_AD" => "Catalan (Andorra)","ca_ES" => "Catalan (Spain)","ca_FR" => "Catalan (France)","ca_IT" => "Catalan (Italy)","cgg" => "Chiga","cgg_UG" => "Chiga (Uganda)","chr" => "Cherokee","chr_US" => "Cherokee (United States)","ckb" => "Central Kurdish","ckb_IQ" => "Central Kurdish (Iraq)","ckb_IR" => "Central Kurdish (Iran)","cs" => "Czech","cs_CZ" => "Czech (Czech Republic)","cy" => "Welsh","cy_GB" => "Welsh (United Kingdom)","da" => "Danish","da_DK" => "Danish (Denmark)","da_GL" => "Danish (Greenland)","dav" => "Taita","dav_KE" => "Taita (Kenya)","de" => "German","de_AT" => "German (Austria)","de_BE" => "German (Belgium)","de_CH" => "German (Switzerland)","de_DE" => "German (Germany)","de_LI" => "German (Liechtenstein)","de_LU" => "German (Luxembourg)","dje" => "Zarma","dje_NE" => "Zarma (Niger)","dsb" => "Lower Sorbian","dsb_DE" => "Lower Sorbian (Germany)","dua" => "Duala","dua_CM" => "Duala (Cameroon)","dyo" => "Jola-Fonyi","dyo_SN" => "Jola-Fonyi (Senegal)","dz" => "Dzongkha","dz_BT" => "Dzongkha (Bhutan)","ebu" => "Embu","ebu_KE" => "Embu (Kenya)","ee" => "Ewe","ee_GH" => "Ewe (Ghana)","ee_TG" => "Ewe (Togo)","el" => "Greek","el_CY" => "Greek (Cyprus)","el_GR" => "Greek (Greece)","en" => "English","en_001" => "English (World)","en_150" => "English (Europe)","en_AD" => "English (Andorra)","en_AG" => "English (Antigua & Barbuda)","en_AI" => "English (Anguilla)","en_AL" => "English (Albania)","en_AS" => "English (American Samoa)","en_AT" => "English (Austria)","en_AU" => "English (Australia)","en_BA" => "English (Bosnia & Herzegovina)","en_BB" => "English (Barbados)","en_BE" => "English (Belgium)","en_BM" => "English (Bermuda)","en_BS" => "English (Bahamas)","en_BW" => "English (Botswana)","en_BZ" => "English (Belize)","en_CA" => "English (Canada)","en_CC" => "English (Cocos [Keeling] Islands)","en_CH" => "English (Switzerland)","en_CK" => "English (Cook Islands)","en_CM" => "English (Cameroon)","en_CX" => "English (Christmas Island)","en_CY" => "English (Cyprus)","en_CZ" => "English (Czech Republic)","en_DE" => "English (Germany)","en_DG" => "English (Diego Garcia)","en_DK" => "English (Denmark)","en_DM" => "English (Dominica)","en_EE" => "English (Estonia)","en_ER" => "English (Eritrea)","en_ES" => "English (Spain)","en_FI" => "English (Finland)","en_FJ" => "English (Fiji)","en_FK" => "English (Falkland Islands)","en_FM" => "English (Micronesia)","en_FR" => "English (France)","en_GB" => "English (United Kingdom)","en_GD" => "English (Grenada)","en_GG" => "English (Guernsey)","en_GH" => "English (Ghana)","en_GI" => "English (Gibraltar)","en_GM" => "English (Gambia)","en_GR" => "English (Greece)","en_GU" => "English (Guam)","en_GY" => "English (Guyana)","en_HK" => "English (Hong Kong SAR China)","en_HR" => "English (Croatia)","en_HU" => "English (Hungary)","en_IE" => "English (Ireland)","en_IL" => "English (Israel)","en_IM" => "English (Isle of Man)","en_IN" => "English (India)","en_IO" => "English (British Indian Ocean Territory)","en_IS" => "English (Iceland)","en_IT" => "English (Italy)","en_JE" => "English (Jersey)","en_JM" => "English (Jamaica)","en_KE" => "English (Kenya)","en_KI" => "English (Kiribati)","en_KN" => "English (St. Kitts & Nevis)","en_KY" => "English (Cayman Islands)","en_LC" => "English (St. Lucia)","en_LR" => "English (Liberia)","en_LS" => "English (Lesotho)","en_LT" => "English (Lithuania)","en_LU" => "English (Luxembourg)","en_LV" => "English (Latvia)","en_ME" => "English (Montenegro)","en_MG" => "English (Madagascar)","en_MH" => "English (Marshall Islands)","en_MO" => "English (Macau SAR China)","en_MP" => "English (Northern Mariana Islands)","en_MS" => "English (Montserrat)","en_MT" => "English (Malta)","en_MU" => "English (Mauritius)","en_MW" => "English (Malawi)","en_MY" => "English (Malaysia)","en_NA" => "English (Namibia)","en_NF" => "English (Norfolk Island)","en_NG" => "English (Nigeria)","en_NL" => "English (Netherlands)","en_NO" => "English (Norway)","en_NR" => "English (Nauru)","en_NU" => "English (Niue)","en_NZ" => "English (New Zealand)","en_PG" => "English (Papua New Guinea)","en_PH" => "English (Philippines)","en_PK" => "English (Pakistan)","en_PL" => "English (Poland)","en_PN" => "English (Pitcairn Islands)","en_PR" => "English (Puerto Rico)","en_PT" => "English (Portugal)","en_PW" => "English (Palau)","en_RO" => "English (Romania)","en_RU" => "English (Russia)","en_RW" => "English (Rwanda)","en_SB" => "English (Solomon Islands)","en_SC" => "English (Seychelles)","en_SD" => "English (Sudan)","en_SE" => "English (Sweden)","en_SG" => "English (Singapore)","en_SH" => "English (St. Helena)","en_SI" => "English (Slovenia)","en_SK" => "English (Slovakia)","en_SL" => "English (Sierra Leone)","en_SS" => "English (South Sudan)","en_SX" => "English (Sint Maarten)","en_SZ" => "English (Swaziland)","en_TC" => "English (Turks & Caicos Islands)","en_TK" => "English (Tokelau)","en_TO" => "English (Tonga)","en_TR" => "English (Turkey)","en_TT" => "English (Trinidad & Tobago)","en_TV" => "English (Tuvalu)","en_TZ" => "English (Tanzania)","en_UG" => "English (Uganda)","en_UM" => "English (U.S. Outlying Islands)","en_US" => "English (United States)","en_US_POSIX" => "English (United States, Computer)","en_VC" => "English (St. Vincent & Grenadines)","en_VG" => "English (British Virgin Islands)","en_VI" => "English (U.S. Virgin Islands)","en_VU" => "English (Vanuatu)","en_WS" => "English (Samoa)","en_ZA" => "English (South Africa)","en_ZM" => "English (Zambia)","en_ZW" => "English (Zimbabwe)","eo" => "Esperanto","es" => "Spanish","es_419" => "Spanish (Latin America)","es_AR" => "Spanish (Argentina)","es_BO" => "Spanish (Bolivia)","es_CL" => "Spanish (Chile)","es_CO" => "Spanish (Colombia)","es_CR" => "Spanish (Costa Rica)","es_CU" => "Spanish (Cuba)","es_DO" => "Spanish (Dominican Republic)","es_EA" => "Spanish (Ceuta & Melilla)","es_EC" => "Spanish (Ecuador)","es_ES" => "Spanish (Spain)","es_GQ" => "Spanish (Equatorial Guinea)","es_GT" => "Spanish (Guatemala)","es_HN" => "Spanish (Honduras)","es_IC" => "Spanish (Canary Islands)","es_MX" => "Spanish (Mexico)","es_NI" => "Spanish (Nicaragua)","es_PA" => "Spanish (Panama)","es_PE" => "Spanish (Peru)","es_PH" => "Spanish (Philippines)","es_PR" => "Spanish (Puerto Rico)","es_PY" => "Spanish (Paraguay)","es_SV" => "Spanish (El Salvador)","es_US" => "Spanish (United States)","es_UY" => "Spanish (Uruguay)","es_VE" => "Spanish (Venezuela)","et" => "Estonian","et_EE" => "Estonian (Estonia)","eu" => "Basque","eu_ES" => "Basque (Spain)","ewo" => "Ewondo","ewo_CM" => "Ewondo (Cameroon)","fa" => "Persian","fa_AF" => "Persian (Afghanistan)","fa_IR" => "Persian (Iran)","ff" => "Fulah","ff_CM" => "Fulah (Cameroon)","ff_GN" => "Fulah (Guinea)","ff_MR" => "Fulah (Mauritania)","ff_SN" => "Fulah (Senegal)","fi" => "Finnish","fi_FI" => "Finnish (Finland)","fil" => "Filipino","fil_PH" => "Filipino (Philippines)","fo" => "Faroese","fo_FO" => "Faroese (Faroe Islands)","fr" => "French","fr_BE" => "French (Belgium)","fr_BF" => "French (Burkina Faso)","fr_BI" => "French (Burundi)","fr_BJ" => "French (Benin)","fr_BL" => "French (St. Barthélemy)","fr_CA" => "French (Canada)","fr_CD" => "French (Congo - Kinshasa)","fr_CF" => "French (Central African Republic)","fr_CG" => "French (Congo - Brazzaville)","fr_CH" => "French (Switzerland)","fr_CI" => "French (Côte d’Ivoire)","fr_CM" => "French (Cameroon)","fr_DJ" => "French (Djibouti)","fr_DZ" => "French (Algeria)","fr_FR" => "French (France)","fr_GA" => "French (Gabon)","fr_GF" => "French (French Guiana)","fr_GN" => "French (Guinea)","fr_GP" => "French (Guadeloupe)","fr_GQ" => "French (Equatorial Guinea)","fr_HT" => "French (Haiti)","fr_KM" => "French (Comoros)","fr_LU" => "French (Luxembourg)","fr_MA" => "French (Morocco)","fr_MC" => "French (Monaco)","fr_MF" => "French (St. Martin)","fr_MG" => "French (Madagascar)","fr_ML" => "French (Mali)","fr_MQ" => "French (Martinique)","fr_MR" => "French (Mauritania)","fr_MU" => "French (Mauritius)","fr_NC" => "French (New Caledonia)","fr_NE" => "French (Niger)","fr_PF" => "French (French Polynesia)","fr_PM" => "French (St. Pierre & Miquelon)","fr_RE" => "French (Réunion)","fr_RW" => "French (Rwanda)","fr_SC" => "French (Seychelles)","fr_SN" => "French (Senegal)","fr_SY" => "French (Syria)","fr_TD" => "French (Chad)","fr_TG" => "French (Togo)","fr_TN" => "French (Tunisia)","fr_VU" => "French (Vanuatu)","fr_WF" => "French (Wallis & Futuna)","fr_YT" => "French (Mayotte)","fur" => "Friulian","fur_IT" => "Friulian (Italy)","fy" => "Western Frisian","fy_NL" => "Western Frisian (Netherlands)","ga" => "Irish","ga_IE" => "Irish (Ireland)","gd" => "Scottish Gaelic","gd_GB" => "Scottish Gaelic (United Kingdom)","gl" => "Galician","gl_ES" => "Galician (Spain)","gsw" => "Swiss German","gsw_CH" => "Swiss German (Switzerland)","gsw_FR" => "Swiss German (France)","gsw_LI" => "Swiss German (Liechtenstein)","gu" => "Gujarati","gu_IN" => "Gujarati (India)","guz" => "Gusii","guz_KE" => "Gusii (Kenya)","gv" => "Manx","gv_IM" => "Manx (Isle of Man)","ha" => "Hausa","ha_Latn" => "Hausa (Latin)","ha_Latn_GH" => "Hausa (Latin, Ghana)","ha_Latn_NE" => "Hausa (Latin, Niger)","ha_Latn_NG" => "Hausa (Latin, Nigeria)","haw" => "Hawaiian","haw_US" => "Hawaiian (United States)","he" => "Hebrew","he_IL" => "Hebrew (Israel)","hi" => "Hindi","hi_IN" => "Hindi (India)","hr" => "Croatian","hr_BA" => "Croatian (Bosnia & Herzegovina)","hr_HR" => "Croatian (Croatia)","hsb" => "Upper Sorbian","hsb_DE" => "Upper Sorbian (Germany)","hu" => "Hungarian","hu_HU" => "Hungarian (Hungary)","hy" => "Armenian","hy_AM" => "Armenian (Armenia)","id" => "Indonesian","id_ID" => "Indonesian (Indonesia)","ig" => "Igbo","ig_NG" => "Igbo (Nigeria)","ii" => "Sichuan Yi","ii_CN" => "Sichuan Yi (China)","is" => "Icelandic","is_IS" => "Icelandic (Iceland)","it" => "Italian","it_CH" => "Italian (Switzerland)","it_IT" => "Italian (Italy)","it_SM" => "Italian (San Marino)","iu" => "Inuktitut","iu_Cans" => "Inuktitut (Unified Canadian Aboriginal Syllabics)","iu_Cans_CA" => "Inuktitut (Unified Canadian Aboriginal Syllabics, Canada)","ja" => "Japanese","ja_JP" => "Japanese (Japan)","jgo" => "Ngomba","jgo_CM" => "Ngomba (Cameroon)","jmc" => "Machame","jmc_TZ" => "Machame (Tanzania)","ka" => "Georgian","ka_GE" => "Georgian (Georgia)","kab" => "Kabyle","kab_DZ" => "Kabyle (Algeria)","kam" => "Kamba","kam_KE" => "Kamba (Kenya)","kde" => "Makonde","kde_TZ" => "Makonde (Tanzania)","kea" => "Kabuverdianu","kea_CV" => "Kabuverdianu (Cape Verde)","khq" => "Koyra Chiini","khq_ML" => "Koyra Chiini (Mali)","ki" => "Kikuyu","ki_KE" => "Kikuyu (Kenya)","kk" => "Kazakh","kk_Cyrl" => "Kazakh (Cyrillic)","kk_Cyrl_KZ" => "Kazakh (Cyrillic, Kazakhstan)","kkj" => "Kako","kkj_CM" => "Kako (Cameroon)","kl" => "Kalaallisut","kl_GL" => "Kalaallisut (Greenland)","kln" => "Kalenjin","kln_KE" => "Kalenjin (Kenya)","km" => "Khmer","km_KH" => "Khmer (Cambodia)","kn" => "Kannada","kn_IN" => "Kannada (India)","ko" => "Korean","ko_KP" => "Korean (North Korea)","ko_KR" => "Korean (South Korea)","kok" => "Konkani","kok_IN" => "Konkani (India)","ks" => "Kashmiri","ks_Arab" => "Kashmiri (Arabic)","ks_Arab_IN" => "Kashmiri (Arabic, India)","ksb" => "Shambala","ksb_TZ" => "Shambala (Tanzania)","ksf" => "Bafia","ksf_CM" => "Bafia (Cameroon)","ksh" => "Colognian","ksh_DE" => "Colognian (Germany)","kw" => "Cornish","kw_GB" => "Cornish (United Kingdom)","ky" => "Kyrgyz","ky_Cyrl" => "Kyrgyz (Cyrillic)","ky_Cyrl_KG" => "Kyrgyz (Cyrillic, Kyrgyzstan)","lag" => "Langi","lag_TZ" => "Langi (Tanzania)","lb" => "Luxembourgish","lb_LU" => "Luxembourgish (Luxembourg)","lg" => "Ganda","lg_UG" => "Ganda (Uganda)","lkt" => "Lakota","lkt_US" => "Lakota (United States)","ln" => "Lingala","ln_AO" => "Lingala (Angola)","ln_CD" => "Lingala (Congo - Kinshasa)","ln_CF" => "Lingala (Central African Republic)","ln_CG" => "Lingala (Congo - Brazzaville)","lo" => "Lao","lo_LA" => "Lao (Laos)","lt" => "Lithuanian","lt_LT" => "Lithuanian (Lithuania)","lu" => "Luba-Katanga","lu_CD" => "Luba-Katanga (Congo - Kinshasa)","luo" => "Luo","luo_KE" => "Luo (Kenya)","luy" => "Luyia","luy_KE" => "Luyia (Kenya)","lv" => "Latvian","lv_LV" => "Latvian (Latvia)","mas" => "Masai","mas_KE" => "Masai (Kenya)","mas_TZ" => "Masai (Tanzania)","mer" => "Meru","mer_KE" => "Meru (Kenya)","mfe" => "Morisyen","mfe_MU" => "Morisyen (Mauritius)","mg" => "Malagasy","mg_MG" => "Malagasy (Madagascar)","mgh" => "Makhuwa-Meetto","mgh_MZ" => "Makhuwa-Meetto (Mozambique)","mgo" => "Metaʼ","mgo_CM" => "Metaʼ (Cameroon)","mk" => "Macedonian","mk_MK" => "Macedonian (Macedonia)","ml" => "Malayalam","ml_IN" => "Malayalam (India)","mn" => "Mongolian","mn_Cyrl" => "Mongolian (Cyrillic)","mn_Cyrl_MN" => "Mongolian (Cyrillic, Mongolia)","mr" => "Marathi","mr_IN" => "Marathi (India)","ms" => "Malay","ms_Arab" => "Malay (Arabic)","ms_Arab_BN" => "Malay (Arabic, Brunei)","ms_Arab_MY" => "Malay (Arabic, Malaysia)","ms_Latn" => "Malay (Latin)","ms_Latn_BN" => "Malay (Latin, Brunei)","ms_Latn_MY" => "Malay (Latin, Malaysia)","ms_Latn_SG" => "Malay (Latin, Singapore)","mt" => "Maltese","mt_MT" => "Maltese (Malta)","mua" => "Mundang","mua_CM" => "Mundang (Cameroon)","my" => "Burmese","my_MM" => "Burmese (Myanmar [Burma])","naq" => "Nama","naq_NA" => "Nama (Namibia)","nb" => "Norwegian Bokmål","nb_NO" => "Norwegian Bokmål (Norway)","nb_SJ" => "Norwegian Bokmål (Svalbard & Jan Mayen)","nd" => "North Ndebele","nd_ZW" => "North Ndebele (Zimbabwe)","ne" => "Nepali","ne_IN" => "Nepali (India)","ne_NP" => "Nepali (Nepal)","nl" => "Dutch","nl_AW" => "Dutch (Aruba)","nl_BE" => "Dutch (Belgium)","nl_BQ" => "Dutch (Caribbean Netherlands)","nl_CW" => "Dutch (Curaçao)","nl_NL" => "Dutch (Netherlands)","nl_SR" => "Dutch (Suriname)","nl_SX" => "Dutch (Sint Maarten)","nmg" => "Kwasio","nmg_CM" => "Kwasio (Cameroon)","nn" => "Norwegian Nynorsk","nn_NO" => "Norwegian Nynorsk (Norway)","nnh" => "Ngiemboon","nnh_CM" => "Ngiemboon (Cameroon)","nus" => "Nuer","nus_SD" => "Nuer (Sudan)","nyn" => "Nyankole","nyn_UG" => "Nyankole (Uganda)","om" => "Oromo","om_ET" => "Oromo (Ethiopia)","om_KE" => "Oromo (Kenya)","or" => "Oriya","or_IN" => "Oriya (India)","os" => "Ossetic","os_GE" => "Ossetic (Georgia)","os_RU" => "Ossetic (Russia)","pa" => "Punjabi","pa_Arab" => "Punjabi (Arabic)","pa_Arab_PK" => "Punjabi (Arabic, Pakistan)","pa_Guru" => "Punjabi (Gurmukhi)","pa_Guru_IN" => "Punjabi (Gurmukhi, India)","pl" => "Polish","pl_PL" => "Polish (Poland)","ps" => "Pashto","ps_AF" => "Pashto (Afghanistan)","pt" => "Portuguese","pt_AO" => "Portuguese (Angola)","pt_BR" => "Portuguese (Brazil)","pt_CV" => "Portuguese (Cape Verde)","pt_GW" => "Portuguese (Guinea-Bissau)","pt_MO" => "Portuguese (Macau SAR China)","pt_MZ" => "Portuguese (Mozambique)","pt_PT" => "Portuguese (Portugal)","pt_ST" => "Portuguese (São Tomé & Príncipe)","pt_TL" => "Portuguese (Timor-Leste)","qu" => "Quechua","qu_BO" => "Quechua (Bolivia)","qu_EC" => "Quechua (Ecuador)","qu_PE" => "Quechua (Peru)","rm" => "Romansh","rm_CH" => "Romansh (Switzerland)","rn" => "Rundi","rn_BI" => "Rundi (Burundi)","ro" => "Romanian","ro_MD" => "Romanian (Moldova)","ro_RO" => "Romanian (Romania)","rof" => "Rombo","rof_TZ" => "Rombo (Tanzania)","ru" => "Russian","ru_BY" => "Russian (Belarus)","ru_KG" => "Russian (Kyrgyzstan)","ru_KZ" => "Russian (Kazakhstan)","ru_MD" => "Russian (Moldova)","ru_RU" => "Russian (Russia)","ru_UA" => "Russian (Ukraine)","rw" => "Kinyarwanda","rw_RW" => "Kinyarwanda (Rwanda)","rwk" => "Rwa","rwk_TZ" => "Rwa (Tanzania)","sah" => "Sakha","sah_RU" => "Sakha (Russia)","saq" => "Samburu","saq_KE" => "Samburu (Kenya)","sbp" => "Sangu","sbp_TZ" => "Sangu (Tanzania)","se" => "Northern Sami","se_FI" => "Northern Sami (Finland)","se_NO" => "Northern Sami (Norway)","se_SE" => "Northern Sami (Sweden)","seh" => "Sena","seh_MZ" => "Sena (Mozambique)","ses" => "Koyraboro Senni","ses_ML" => "Koyraboro Senni (Mali)","sg" => "Sango","sg_CF" => "Sango (Central African Republic)","shi" => "Tachelhit","shi_Latn" => "Tachelhit (Latin)","shi_Latn_MA" => "Tachelhit (Latin, Morocco)","shi_Tfng" => "Tachelhit (Tifinagh)","shi_Tfng_MA" => "Tachelhit (Tifinagh, Morocco)","si" => "Sinhala","si_LK" => "Sinhala (Sri Lanka)","sk" => "Slovak","sk_SK" => "Slovak (Slovakia)","sl" => "Slovenian","sl_SI" => "Slovenian (Slovenia)","smn" => "Inari Sami","smn_FI" => "Inari Sami (Finland)","sn" => "Shona","sn_ZW" => "Shona (Zimbabwe)","so" => "Somali","so_DJ" => "Somali (Djibouti)","so_ET" => "Somali (Ethiopia)","so_KE" => "Somali (Kenya)","so_SO" => "Somali (Somalia)","sq" => "Albanian","sq_AL" => "Albanian (Albania)","sq_MK" => "Albanian (Macedonia)","sq_XK" => "Albanian (Kosovo)","sr" => "Serbian","sr_Cyrl" => "Serbian (Cyrillic)","sr_Cyrl_BA" => "Serbian (Cyrillic, Bosnia & Herzegovina)","sr_Cyrl_ME" => "Serbian (Cyrillic, Montenegro)","sr_Cyrl_RS" => "Serbian (Cyrillic, Serbia)","sr_Cyrl_XK" => "Serbian (Cyrillic, Kosovo)","sr_Latn" => "Serbian (Latin)","sr_Latn_BA" => "Serbian (Latin, Bosnia & Herzegovina)","sr_Latn_ME" => "Serbian (Latin, Montenegro)","sr_Latn_RS" => "Serbian (Latin, Serbia)","sr_Latn_XK" => "Serbian (Latin, Kosovo)","sv" => "Swedish","sv_AX" => "Swedish (Åland Islands)","sv_FI" => "Swedish (Finland)","sv_SE" => "Swedish (Sweden)","sw" => "Swahili","sw_CD" => "Swahili (Congo - Kinshasa)","sw_KE" => "Swahili (Kenya)","sw_TZ" => "Swahili (Tanzania)","sw_UG" => "Swahili (Uganda)","ta" => "Tamil","ta_IN" => "Tamil (India)","ta_LK" => "Tamil (Sri Lanka)","ta_MY" => "Tamil (Malaysia)","ta_SG" => "Tamil (Singapore)","te" => "Telugu","te_IN" => "Telugu (India)","teo" => "Teso","teo_KE" => "Teso (Kenya)","teo_UG" => "Teso (Uganda)","tg" => "Tajik","tg_Cyrl" => "Tajik (Cyrillic)","tg_Cyrl_TJ" => "Tajik (Cyrillic, Tajikistan)","th" => "Thai","th_TH" => "Thai (Thailand)","ti" => "Tigrinya","ti_ER" => "Tigrinya (Eritrea)","ti_ET" => "Tigrinya (Ethiopia)","tk" => "Turkmen","tk_Latn" => "Turkmen (Latin)","tk_Latn_TM" => "Turkmen (Latin, Turkmenistan)","to" => "Tongan","to_TO" => "Tongan (Tonga)","tr" => "Turkish","tr_CY" => "Turkish (Cyprus)","tr_TR" => "Turkish (Turkey)","twq" => "Tasawaq","twq_NE" => "Tasawaq (Niger)","tzm" => "Central Atlas Tamazight","tzm_Latn" => "Central Atlas Tamazight (Latin)","tzm_Latn_MA" => "Central Atlas Tamazight (Latin, Morocco)","ug" => "Uyghur","ug_Arab" => "Uyghur (Arabic)","ug_Arab_CN" => "Uyghur (Arabic, China)","uk" => "Ukrainian","uk_UA" => "Ukrainian (Ukraine)","ur" => "Urdu","ur_IN" => "Urdu (India)","ur_PK" => "Urdu (Pakistan)","uz" => "Uzbek","uz_Arab" => "Uzbek (Arabic)","uz_Arab_AF" => "Uzbek (Arabic, Afghanistan)","uz_Cyrl" => "Uzbek (Cyrillic)","uz_Cyrl_UZ" => "Uzbek (Cyrillic, Uzbekistan)","uz_Latn" => "Uzbek (Latin)","uz_Latn_UZ" => "Uzbek (Latin, Uzbekistan)","vai" => "Vai","vai_Latn" => "Vai (Latin)","vai_Latn_LR" => "Vai (Latin, Liberia)","vai_Vaii" => "Vai (Vai)","vai_Vaii_LR" => "Vai (Vai, Liberia)","vi" => "Vietnamese","vi_VN" => "Vietnamese (Vietnam)","vun" => "Vunjo","vun_TZ" => "Vunjo (Tanzania)","wae" => "Walser","wae_CH" => "Walser (Switzerland)","xog" => "Soga","xog_UG" => "Soga (Uganda)","yav" => "Yangben","yav_CM" => "Yangben (Cameroon)","yi" => "Yiddish","yi_001" => "Yiddish (World)","yo" => "Yoruba","yo_BJ" => "Yoruba (Benin)","yo_NG" => "Yoruba (Nigeria)","zgh" => "Standard Moroccan Tamazight","zgh_MA" => "Standard Moroccan Tamazight (Morocco)","zh" => "Chinese","zh_Hans" => "Chinese (Simplified)","zh_Hans_CN" => "Chinese (Simplified, China)","zh_Hans_HK" => "Chinese (Simplified, Hong Kong SAR China)","zh_Hans_MO" => "Chinese (Simplified, Macau SAR China)","zh_Hans_SG" => "Chinese (Simplified, Singapore)","zh_Hant" => "Chinese (Traditional)","zh_Hant_HK" => "Chinese (Traditional, Hong Kong SAR China)","zh_Hant_MO" => "Chinese (Traditional, Macau SAR China)","zh_Hant_TW" => "Chinese (Traditional, Taiwan)","zu" => "Zulu","zu_ZA" => "Zulu (South Africa)"
|
90
93
|
},
|
data/lib/run_loop/otool.rb
CHANGED
@@ -101,7 +101,7 @@ module RunLoop
|
|
101
101
|
# @!visibility private
|
102
102
|
# The details of the process reported by `ps`.
|
103
103
|
def ps_details
|
104
|
-
`
|
104
|
+
`ps -p #{pid} -o pid,comm | grep #{pid}`.strip
|
105
105
|
end
|
106
106
|
|
107
107
|
# @!visibility private
|
data/lib/run_loop/shell.rb
CHANGED
@@ -5,7 +5,7 @@ module RunLoop
|
|
5
5
|
require "run_loop/encoding"
|
6
6
|
include RunLoop::Encoding
|
7
7
|
|
8
|
-
# Controls the behavior of Shell#
|
8
|
+
# Controls the behavior of Shell#run_shell_command.
|
9
9
|
#
|
10
10
|
# You can override these values if they do not work in your environment.
|
11
11
|
#
|
@@ -26,7 +26,7 @@ module RunLoop
|
|
26
26
|
# Raised when shell command times out.
|
27
27
|
class TimeoutError < RuntimeError; end
|
28
28
|
|
29
|
-
def
|
29
|
+
def run_shell_command(args, options={})
|
30
30
|
|
31
31
|
merged_options = DEFAULT_OPTIONS.merge(options)
|
32
32
|
|
data/lib/run_loop/sim_control.rb
CHANGED
@@ -153,10 +153,10 @@ module RunLoop
|
|
153
153
|
# @todo Maybe should try to send -TERM first and -KILL if TERM fails.
|
154
154
|
# @todo Needs benchmarking.
|
155
155
|
processes.each do |process_name|
|
156
|
-
descripts = `
|
156
|
+
descripts = `ps x -o pid,command | grep "#{process_name}" | grep -v grep`.strip.split("\n")
|
157
157
|
descripts.each do |process_desc|
|
158
158
|
pid = process_desc.split(' ').first
|
159
|
-
Open3.popen3("
|
159
|
+
Open3.popen3("kill -9 #{pid} && xcrun wait #{pid}") do |_, stdout, stderr, _|
|
160
160
|
if ENV['DEBUG_UNIX_CALLS'] == '1'
|
161
161
|
out = stdout.read.strip
|
162
162
|
err = stderr.read.strip
|
@@ -601,7 +601,7 @@ module RunLoop
|
|
601
601
|
# @return [String, nil] The pid as a String or nil if no process is found.
|
602
602
|
def sim_pid
|
603
603
|
process_name = "MacOS/#{sim_name}"
|
604
|
-
`
|
604
|
+
`ps x -o pid,command | grep "#{process_name}" | grep -v grep`.strip.split(' ').first
|
605
605
|
end
|
606
606
|
|
607
607
|
# @!visibility private
|
@@ -1137,7 +1137,7 @@ module RunLoop
|
|
1137
1137
|
# @see #simctl_list
|
1138
1138
|
def simctl_list_devices
|
1139
1139
|
args = ['simctl', 'list', 'devices']
|
1140
|
-
hash = xcrun.
|
1140
|
+
hash = xcrun.run_command_in_context(args)
|
1141
1141
|
|
1142
1142
|
current_sdk = nil
|
1143
1143
|
simulators = {}
|
@@ -1220,7 +1220,7 @@ module RunLoop
|
|
1220
1220
|
# @see #simctl_list
|
1221
1221
|
def simctl_list_runtimes
|
1222
1222
|
args = ['simctl', 'list', 'runtimes']
|
1223
|
-
hash = xcrun.
|
1223
|
+
hash = xcrun.run_command_in_context(args)
|
1224
1224
|
|
1225
1225
|
# Ex.
|
1226
1226
|
# == Runtimes ==
|
data/lib/run_loop/simctl.rb
CHANGED
@@ -115,7 +115,7 @@ module RunLoop
|
|
115
115
|
# @!visibility private
|
116
116
|
def execute(array, options)
|
117
117
|
merged = DEFAULTS.merge(options)
|
118
|
-
xcrun.
|
118
|
+
xcrun.run_command_in_context(array, merged)
|
119
119
|
end
|
120
120
|
|
121
121
|
# @!visibility private
|
@@ -272,4 +272,4 @@ is not an iOS, tvOS, or watchOS device"
|
|
272
272
|
@sim_control ||= RunLoop::SimControl.new
|
273
273
|
end
|
274
274
|
end
|
275
|
-
end
|
275
|
+
end
|
data/lib/run_loop/strings.rb
CHANGED
data/lib/run_loop/version.rb
CHANGED
data/lib/run_loop/xcode.rb
CHANGED
@@ -24,6 +24,14 @@ module RunLoop
|
|
24
24
|
to_s
|
25
25
|
end
|
26
26
|
|
27
|
+
# Returns a version instance for `Xcode 8.0`; used to check for the
|
28
|
+
# availability of features and paths to various items on the filesystem.
|
29
|
+
#
|
30
|
+
# @return [RunLoop::Version] 8.0
|
31
|
+
def v80
|
32
|
+
fetch_version(:v80)
|
33
|
+
end
|
34
|
+
|
27
35
|
# Returns a version instance for `Xcode 7.3`; used to check for the
|
28
36
|
# availability of features and paths to various items on the filesystem.
|
29
37
|
#
|
@@ -112,6 +120,13 @@ module RunLoop
|
|
112
120
|
fetch_version(:v50)
|
113
121
|
end
|
114
122
|
|
123
|
+
# Is the active Xcode version 8.0 or above?
|
124
|
+
#
|
125
|
+
# @return [Boolean] `true` if the current Xcode version is >= 8.0
|
126
|
+
def version_gte_8?
|
127
|
+
version >= v80
|
128
|
+
end
|
129
|
+
|
115
130
|
# Is the active Xcode version 7.3 or above?
|
116
131
|
#
|
117
132
|
# @return [Boolean] `true` if the current Xcode version is >= 7.3
|
data/lib/run_loop/xcrun.rb
CHANGED
@@ -5,7 +5,7 @@ module RunLoop
|
|
5
5
|
require "run_loop/encoding"
|
6
6
|
include RunLoop::Encoding
|
7
7
|
|
8
|
-
# Controls the behavior of Xcrun#
|
8
|
+
# Controls the behavior of Xcrun#run_command_in_context.
|
9
9
|
#
|
10
10
|
# You can override these values if they do not work in your environment.
|
11
11
|
#
|
@@ -26,8 +26,8 @@ module RunLoop
|
|
26
26
|
# Raised when Xcrun times out.
|
27
27
|
class TimeoutError < RuntimeError; end
|
28
28
|
|
29
|
-
|
30
|
-
|
29
|
+
# Aliased to #exec, which will be removed in 3.0
|
30
|
+
def run_command_in_context(args, options={})
|
31
31
|
merged_options = DEFAULT_OPTIONS.merge(options)
|
32
32
|
|
33
33
|
timeout = merged_options[:timeout]
|
@@ -98,6 +98,10 @@ with a timeout of #{timeout}
|
|
98
98
|
|
99
99
|
hash
|
100
100
|
end
|
101
|
+
|
102
|
+
# TODO Remove in 3.0
|
103
|
+
# https://github.com/calabash/run_loop/issues/478
|
104
|
+
alias_method :exec, :run_command_in_context
|
101
105
|
end
|
102
106
|
end
|
103
107
|
|
data/lib/run_loop/xcuitest.rb
CHANGED
@@ -6,6 +6,11 @@ module RunLoop
|
|
6
6
|
require "run_loop/shell"
|
7
7
|
include RunLoop::Shell
|
8
8
|
|
9
|
+
require "run_loop/encoding"
|
10
|
+
include RunLoop::Encoding
|
11
|
+
|
12
|
+
require "run_loop/cache"
|
13
|
+
|
9
14
|
class HTTPError < RuntimeError; end
|
10
15
|
|
11
16
|
# @!visibility private
|
@@ -23,7 +28,7 @@ module RunLoop
|
|
23
28
|
xcode = options[:xcode] || RunLoop::Xcode.new
|
24
29
|
instruments = options[:instruments] || RunLoop::Instruments.new
|
25
30
|
|
26
|
-
# Find the Device under test, the App under test,
|
31
|
+
# Find the Device under test, the App under test, and reset options.
|
27
32
|
device = RunLoop::Device.detect_device(options, xcode, simctl, instruments)
|
28
33
|
app_details = RunLoop::DetectAUT.detect_app_under_test(options)
|
29
34
|
reset_options = RunLoop::Core.send(:detect_reset_options, options)
|
@@ -45,6 +50,16 @@ module RunLoop
|
|
45
50
|
|
46
51
|
xcuitest = RunLoop::XCUITest.new(bundle_id, device, cbx_launcher)
|
47
52
|
xcuitest.launch
|
53
|
+
|
54
|
+
if !RunLoop::Environment.xtc?
|
55
|
+
cache = {
|
56
|
+
:cbx_launcher => cbx_launcher.name,
|
57
|
+
:udid => device.udid,
|
58
|
+
:app => bundle_id,
|
59
|
+
:gesture_performer => :device_agent
|
60
|
+
}
|
61
|
+
RunLoop::Cache.default.write(cache)
|
62
|
+
end
|
48
63
|
xcuitest
|
49
64
|
end
|
50
65
|
|
@@ -52,7 +67,7 @@ module RunLoop
|
|
52
67
|
#
|
53
68
|
# @param [RunLoop::Device] device the device under test
|
54
69
|
def self.default_cbx_launcher(device)
|
55
|
-
RunLoop::DeviceAgent::
|
70
|
+
RunLoop::DeviceAgent::IOSDeviceManager.new(device)
|
56
71
|
end
|
57
72
|
|
58
73
|
# @!visibility private
|
@@ -63,11 +78,11 @@ module RunLoop
|
|
63
78
|
if value
|
64
79
|
if value == :xcodebuild
|
65
80
|
RunLoop::DeviceAgent::Xcodebuild.new(device)
|
66
|
-
elsif value == :
|
67
|
-
RunLoop::DeviceAgent::
|
81
|
+
elsif value == :ios_device_manager
|
82
|
+
RunLoop::DeviceAgent::IOSDeviceManager.new(device)
|
68
83
|
else
|
69
84
|
raise(ArgumentError,
|
70
|
-
"Expected :cbx_launcher => #{value} to be :xcodebuild or :
|
85
|
+
"Expected :cbx_launcher => #{value} to be :xcodebuild or :ios_device_manager")
|
71
86
|
end
|
72
87
|
else
|
73
88
|
XCUITest.default_cbx_launcher(device)
|
@@ -81,7 +96,9 @@ module RunLoop
|
|
81
96
|
# The app with `bundle_id` needs to be installed.
|
82
97
|
#
|
83
98
|
# @param [String] bundle_id The identifier of the app under test.
|
84
|
-
# @param [RunLoop::Device] device The device
|
99
|
+
# @param [RunLoop::Device] device The device under test.
|
100
|
+
# @param [RunLoop::DeviceAgent::Launcher] cbx_launcher The entity that
|
101
|
+
# launches the CBXRunner.
|
85
102
|
def initialize(bundle_id, device, cbx_launcher)
|
86
103
|
@bundle_id = bundle_id
|
87
104
|
@device = device
|
@@ -140,6 +157,45 @@ module RunLoop
|
|
140
157
|
expect_200_response(response)
|
141
158
|
end
|
142
159
|
|
160
|
+
# @!visibility private
|
161
|
+
def tree
|
162
|
+
options = http_options
|
163
|
+
request = request("tree")
|
164
|
+
client = client(options)
|
165
|
+
response = client.get(request)
|
166
|
+
expect_200_response(response)
|
167
|
+
end
|
168
|
+
|
169
|
+
# @!visibility private
|
170
|
+
def keyboard_visible?
|
171
|
+
options = http_options
|
172
|
+
parameters = { :type => "Keyboard" }
|
173
|
+
request = request("query", parameters)
|
174
|
+
client = client(options)
|
175
|
+
response = client.post(request)
|
176
|
+
hash = expect_200_response(response)
|
177
|
+
result = hash["result"]
|
178
|
+
result.count != 0
|
179
|
+
end
|
180
|
+
|
181
|
+
# @!visibility private
|
182
|
+
def enter_text(string)
|
183
|
+
if !keyboard_visible?
|
184
|
+
raise RuntimeError, "Keyboard must be visible"
|
185
|
+
end
|
186
|
+
options = http_options
|
187
|
+
parameters = {
|
188
|
+
:gesture => "enter_text",
|
189
|
+
:options => {
|
190
|
+
:string => string
|
191
|
+
}
|
192
|
+
}
|
193
|
+
request = request("gesture", parameters)
|
194
|
+
client = client(options)
|
195
|
+
response = client.post(request)
|
196
|
+
expect_200_response(response)
|
197
|
+
end
|
198
|
+
|
143
199
|
# @!visibility private
|
144
200
|
def query(mark)
|
145
201
|
options = http_options
|
@@ -157,46 +213,29 @@ module RunLoop
|
|
157
213
|
end
|
158
214
|
|
159
215
|
# @!visibility private
|
160
|
-
def
|
216
|
+
def touch(mark, options={})
|
161
217
|
coordinate = query_for_coordinate(mark)
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
# @!visibility private
|
166
|
-
def tap_coordinate(x, y, options)
|
167
|
-
make_coordinate_gesture_request("touch", x, y)
|
168
|
-
end
|
169
|
-
|
170
|
-
# @!visibility private
|
171
|
-
def double_tap(x, y)
|
172
|
-
make_coordinate_gesture_request("double_tap", x, y)
|
218
|
+
perform_coordinate_gesture("touch",
|
219
|
+
coordinate[:x], coordinate[:y],
|
220
|
+
options)
|
173
221
|
end
|
174
222
|
|
175
|
-
|
176
|
-
def coordinate_gesture_parameters(name, x, y, options={})
|
177
|
-
{
|
178
|
-
:gesture => name,
|
179
|
-
:specifiers => {
|
180
|
-
:coordinate => [x, y]
|
181
|
-
},
|
182
|
-
:options => options
|
183
|
-
}
|
184
|
-
end
|
223
|
+
alias_method :tap, :touch
|
185
224
|
|
186
225
|
# @!visibility private
|
187
|
-
def
|
188
|
-
|
189
|
-
|
226
|
+
def double_tap(mark, options={})
|
227
|
+
coordinate = query_for_coordinate(mark)
|
228
|
+
perform_coordinate_gesture("double_tap",
|
229
|
+
coordinate[:x], coordinate[:y],
|
230
|
+
options)
|
190
231
|
end
|
191
232
|
|
192
233
|
# @!visibility private
|
193
|
-
def
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
response = client.post(request)
|
199
|
-
expect_200_response(response)
|
234
|
+
def two_finger_tap(mark, options={})
|
235
|
+
coordinate = query_for_coordinate(mark)
|
236
|
+
perform_coordinate_gesture("two_finger_tap",
|
237
|
+
coordinate[:x], coordinate[:y],
|
238
|
+
options)
|
200
239
|
end
|
201
240
|
|
202
241
|
# @!visibility private
|
@@ -265,6 +304,22 @@ Sending request to perform '#{gesture}' with:
|
|
265
304
|
:y => touchy}
|
266
305
|
end
|
267
306
|
|
307
|
+
|
308
|
+
# @!visibility private
|
309
|
+
def change_volume(up_or_down)
|
310
|
+
string = up_or_down.to_s
|
311
|
+
parameters = {
|
312
|
+
:volume => string
|
313
|
+
}
|
314
|
+
request = request("volume", parameters)
|
315
|
+
client = client(http_options)
|
316
|
+
response = client.post(request)
|
317
|
+
json = expect_200_response(response)
|
318
|
+
# Set in the route
|
319
|
+
sleep(0.2)
|
320
|
+
json
|
321
|
+
end
|
322
|
+
|
268
323
|
private
|
269
324
|
|
270
325
|
# @!visibility private
|
@@ -274,27 +329,63 @@ Sending request to perform '#{gesture}' with:
|
|
274
329
|
|
275
330
|
# @!visibility private
|
276
331
|
def url
|
277
|
-
@url ||=
|
278
|
-
|
279
|
-
|
280
|
-
|
281
|
-
|
282
|
-
|
283
|
-
|
284
|
-
|
285
|
-
|
286
|
-
|
287
|
-
|
288
|
-
|
289
|
-
|
290
|
-
|
291
|
-
|
292
|
-
|
293
|
-
|
294
|
-
|
295
|
-
|
296
|
-
|
297
|
-
end
|
332
|
+
@url ||= detect_device_agent_url
|
333
|
+
end
|
334
|
+
|
335
|
+
# @!visibility private
|
336
|
+
def detect_device_agent_url
|
337
|
+
url_from_environment ||
|
338
|
+
url_for_simulator ||
|
339
|
+
url_from_device_endpoint ||
|
340
|
+
url_from_device_name
|
341
|
+
end
|
342
|
+
|
343
|
+
# @!visibility private
|
344
|
+
def url_from_environment
|
345
|
+
url = RunLoop::Environment.device_agent_url
|
346
|
+
return if url.nil?
|
347
|
+
|
348
|
+
if url.end_with?("/")
|
349
|
+
url
|
350
|
+
else
|
351
|
+
"#{url}/"
|
352
|
+
end
|
353
|
+
end
|
354
|
+
|
355
|
+
# @!visibility private
|
356
|
+
def url_for_simulator
|
357
|
+
if device.simulator?
|
358
|
+
"http://#{DEFAULTS[:simulator_ip]}:#{DEFAULTS[:port]}/"
|
359
|
+
else
|
360
|
+
nil
|
361
|
+
end
|
362
|
+
end
|
363
|
+
|
364
|
+
# @!visibility private
|
365
|
+
def url_from_device_endpoint
|
366
|
+
calabash_endpoint = RunLoop::Environment.device_endpoint
|
367
|
+
if calabash_endpoint
|
368
|
+
base = calabash_endpoint.split(":")[0..1].join(":")
|
369
|
+
"#{base}:#{DEFAULTS[:port]}/"
|
370
|
+
else
|
371
|
+
nil
|
372
|
+
end
|
373
|
+
end
|
374
|
+
|
375
|
+
# @!visibility private
|
376
|
+
# TODO This block is not well tested
|
377
|
+
# TODO extract to a module; Calabash can use to detect device endpoint
|
378
|
+
def url_from_device_name
|
379
|
+
# Transforms the default "Joshua's iPhone" to a DNS name.
|
380
|
+
device_name = device.name.gsub(/[']/, "").gsub(/[\s]/, "-")
|
381
|
+
|
382
|
+
# Replace diacritic markers and unknown characters.
|
383
|
+
transliterated = transliterate(device_name).tr("?", "")
|
384
|
+
|
385
|
+
# Anything that cannot be transliterated is a ?
|
386
|
+
replaced = transliterated.tr("?", "")
|
387
|
+
|
388
|
+
"http://#{replaced}.local:#{DEFAULTS[:port]}/"
|
298
389
|
end
|
299
390
|
|
300
391
|
# @!visibility private
|
@@ -309,11 +400,7 @@ Sending request to perform '#{gesture}' with:
|
|
309
400
|
|
310
401
|
# @!visibility private
|
311
402
|
def versioned_route(route)
|
312
|
-
|
313
|
-
route
|
314
|
-
else
|
315
|
-
"#{DEFAULTS[:version]}/#{route}"
|
316
|
-
end
|
403
|
+
"#{DEFAULTS[:version]}/#{route}"
|
317
404
|
end
|
318
405
|
|
319
406
|
# @!visibility private
|
@@ -339,7 +426,7 @@ Sending request to perform '#{gesture}' with:
|
|
339
426
|
# @!visibility private
|
340
427
|
def session_delete
|
341
428
|
options = ping_options
|
342
|
-
request = request("
|
429
|
+
request = request("session")
|
343
430
|
client = client(options)
|
344
431
|
begin
|
345
432
|
response = client.delete(request)
|
@@ -387,9 +474,9 @@ Sending request to perform '#{gesture}' with:
|
|
387
474
|
shutdown
|
388
475
|
|
389
476
|
options = {:log_cmd => true}
|
390
|
-
|
391
|
-
|
392
|
-
|
477
|
+
run_shell_command(["pkill", "iOSDeviceManager"], options)
|
478
|
+
run_shell_command(["pkill", "testmanagerd"], options)
|
479
|
+
run_shell_command(["pkill", "xcodebuild"], options)
|
393
480
|
|
394
481
|
start = Time.now
|
395
482
|
RunLoop.log_debug("Waiting for CBX-Runner to launch...")
|