Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Locale value does not include the locale code! #1374

Closed
pixelzoom opened this issue Feb 1, 2023 · 6 comments
Closed

Locale value does not include the locale code! #1374

pixelzoom opened this issue Feb 1, 2023 · 6 comments
Assignees

Comments

@pixelzoom
Copy link
Contributor

For #1302, localeInfoModule.js and localeProperty.ts were created. Entries in localeInfoModule.js look like this:

aa: {
    name: 'Afar',
    localizedName: 'Afar',
    direction: 'ltr'
  },

localeProperty looks like this:

class LocaleProperty extends Property<Locale>

In Number Play development, it would have been very useful (for debugging) to display the locale code. That information is not in a Locale. So given a Locale, it really difficult to map back to the locale code.

Is this an oversight? Should something like localeCode: string be included in each localeModule.js entry?

@samreid
Copy link
Member

samreid commented Feb 1, 2023

I agree this would be good to add. I'm not familiar with how this file is created or used, perhaps it would be best for @jonathanolson to comment. Also, I used multi-cursor to add them in this patch:

Subject: [PATCH] Make cue arrow visibility depend on atomDragArea.inputEnabledProperty, rename dragArea=>atomDragArea, rearrange order of child creation, see https://github.com/phetsims/friction/issues/333
---
Index: js/data/localeInfoModule.js
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
diff --git a/js/data/localeInfoModule.js b/js/data/localeInfoModule.js
--- a/js/data/localeInfoModule.js	(revision 6f1b9dfbce1d37b4439a5de8cbe4adfb90cf8822)
+++ b/js/data/localeInfoModule.js	(date 1675278051795)
@@ -26,1006 +26,1207 @@
 
 export default {
   aa: {
+    locale: 'aa',
     name: 'Afar',
     localizedName: 'Afar',
     direction: 'ltr'
   },
   ab: {
+    locale: 'ab',
     name: 'Abkhazian',
     localizedName: 'Abkhazian',
     direction: 'ltr'
   },
   ae: {
+    locale: 'ae',
     name: 'Avestan',
     localizedName: 'Avestan',
     direction: 'rtl'
   },
   af: {
+    locale: 'af',
     name: 'Afrikaans',
     localizedName: 'Afrikaans',
     direction: 'ltr'
   },
   ak: {
+    locale: 'ak',
     name: 'Akan',
     localizedName: 'Akan',
     direction: 'ltr'
   },
   am: {
+    locale: 'am',
     name: 'Amharic',
     localizedName: 'Amharic',
     direction: 'ltr'
   },
   an: {
+    locale: 'an',
     name: 'Aragonese',
     localizedName: 'Aragonese',
     direction: 'ltr'
   },
   ar: {
+    locale: 'ar',
     name: 'Arabic',
     localizedName: 'العربية',
     direction: 'rtl'
   },
   ar_MA: {
+    locale: 'ar_MA',
     name: 'Arabic, Morocco',
     localizedName: 'العربية (المغرب)',
     direction: 'rtl'
   },
   ar_SA: {
+    locale: 'ar_SA',
     name: 'Arabic, Saudi Arabia',
     localizedName: 'العربية (السعودية)',
     direction: 'rtl'
   },
   as: {
+    locale: 'as',
     name: 'Assamese',
     localizedName: 'Assamese',
     direction: 'ltr'
   },
   av: {
+    locale: 'av',
     name: 'Avaric',
     localizedName: 'Avaric',
     direction: 'ltr'
   },
   ay: {
+    locale: 'ay',
     name: 'Aymara',
     localizedName: 'Aymara',
     direction: 'ltr'
   },
   az: {
+    locale: 'az',
     name: 'Azerbaijani',
     localizedName: 'Azerbaijani',
     direction: 'ltr'
   },
   ba: {
+    locale: 'ba',
     name: 'Bashkir',
     localizedName: 'Bashkir',
     direction: 'ltr'
   },
   be: {
+    locale: 'be',
     name: 'Belarusian',
     localizedName: 'беларускі',
     direction: 'ltr'
   },
   bg: {
+    locale: 'bg',
     name: 'Bulgarian',
     localizedName: 'български',
     direction: 'ltr'
   },
   bh: {
+    locale: 'bh',
     name: 'Bihari',
     localizedName: 'Bihari',
     direction: 'ltr'
   },
   bi: {
+    locale: 'bi',
     name: 'Bislama',
     localizedName: 'Bislama',
     direction: 'ltr'
   },
   bm: {
+    locale: 'bm',
     name: 'Bambara',
     localizedName: 'Bambara',
     direction: 'ltr'
   },
   bn: {
+    locale: 'bn',
     name: 'Bengali',
     localizedName: 'Bengali',
     direction: 'ltr'
   },
   bo: {
+    locale: 'bo',
     name: 'Tibetan',
     localizedName: 'Tibetan',
     direction: 'ltr'
   },
   br: {
+    locale: 'br',
     name: 'Breton',
     localizedName: 'Breton',
     direction: 'ltr'
   },
   bs: {
+    locale: 'bs',
     name: 'Bosnian',
     localizedName: 'Bosnian',
     direction: 'ltr'
   },
   ca: {
+    locale: 'ca',
     name: 'Catalan',
     localizedName: 'català',
     direction: 'ltr'
   },
   ce: {
+    locale: 'ce',
     name: 'Chechen',
     localizedName: 'Chechen',
     direction: 'ltr'
   },
   ch: {
+    locale: 'ch',
     name: 'Chamorro',
     localizedName: 'Chamorro',
     direction: 'ltr'
   },
   co: {
+    locale: 'co',
     name: 'Corsican',
     localizedName: 'Corsican',
     direction: 'ltr'
   },
   cr: {
+    locale: 'cr',
     name: 'Cree',
     localizedName: 'Cree',
     direction: 'ltr'
   },
   cs: {
+    locale: 'cs',
     name: 'Czech',
     localizedName: 'čeština',
     direction: 'ltr'
   },
   cu: {
+    locale: 'cu',
     name: 'Church Slavic',
     localizedName: 'Church Slavic',
     direction: 'ltr'
   },
   cv: {
+    locale: 'cv',
     name: 'Chuvash',
     localizedName: 'Chuvash',
     direction: 'ltr'
   },
   cy: {
+    locale: 'cy',
     name: 'Welsh',
     localizedName: 'Welsh',
     direction: 'ltr'
   },
   da: {
+    locale: 'da',
     name: 'Danish',
     localizedName: 'Dansk',
     direction: 'ltr'
   },
   de: {
+    locale: 'de',
     name: 'German',
     localizedName: 'Deutsch',
     direction: 'ltr'
   },
   dv: {
+    locale: 'dv',
     name: 'Divehi',
     localizedName: 'Divehi',
     direction: 'ltr'
   },
   dz: {
+    locale: 'dz',
     name: 'Dzongkha',
     localizedName: 'Dzongkha',
     direction: 'ltr'
   },
   ee: {
+    locale: 'ee',
     name: 'Ewe',
     localizedName: 'Ewe',
     direction: 'ltr'
   },
   el: {
+    locale: 'el',
     name: 'Greek',
     localizedName: 'Ελληνικά',
     direction: 'ltr'
   },
   en: {
+    locale: 'en',
     name: 'English',
     localizedName: 'English',
     direction: 'ltr'
   },
   en_CA: {
+    locale: 'en_CA',
     name: 'English, Canada',
     localizedName: 'English (Canada)',
     direction: 'ltr'
   },
   en_GB: {
+    locale: 'en_GB',
     name: 'English, United Kingdom',
     localizedName: 'English (United Kingdom)',
     direction: 'ltr'
   },
   eo: {
+    locale: 'eo',
     name: 'Esperanto',
     localizedName: 'Esperanto',
     direction: 'ltr'
   },
   es: {
+    locale: 'es',
     name: 'Spanish',
     localizedName: 'español',
     direction: 'ltr'
   },
   es_CO: {
+    locale: 'es_CO',
     name: 'Spanish, Colombia',
     localizedName: 'español (Colombia)',
     direction: 'ltr'
   },
   es_CR: {
+    locale: 'es_CR',
     name: 'Spanish, Costa Rica',
     localizedName: 'español (Costa Rica)',
     direction: 'ltr'
   },
   es_ES: {
+    locale: 'es_ES',
     name: 'Spanish, Spain',
     localizedName: 'español (España)',
     direction: 'ltr'
   },
   es_MX: {
+    locale: 'es_MX',
     name: 'Spanish, Mexico',
     localizedName: 'español (México)',
     direction: 'ltr'
   },
   es_PE: {
+    locale: 'es_PE',
     name: 'Spanish, Peru',
     localizedName: 'español (Perú)',
     direction: 'ltr'
   },
   et: {
+    locale: 'et',
     name: 'Estonian',
     localizedName: 'Eesti',
     direction: 'ltr'
   },
   eu: {
+    locale: 'eu',
     name: 'Basque',
     localizedName: 'Basque',
     direction: 'ltr'
   },
   fa: {
+    locale: 'fa',
     name: 'Persian',
     localizedName: 'Persian',
     direction: 'rtl'
   },
   ff: {
+    locale: 'ff',
     name: 'Fulah',
     localizedName: 'Fulah',
     direction: 'ltr'
   },
   fi: {
+    locale: 'fi',
     name: 'Finnish',
     localizedName: 'suomi',
     direction: 'ltr'
   },
   fj: {
+    locale: 'fj',
     name: 'Fijian',
     localizedName: 'Fijian',
     direction: 'ltr'
   },
   fo: {
+    locale: 'fo',
     name: 'Faroese',
     localizedName: 'Faroese',
     direction: 'ltr'
   },
   fr: {
+    locale: 'fr',
     name: 'French',
     localizedName: 'français',
     direction: 'ltr'
   },
   fu: {
+    locale: 'fu',
     name: 'Friulian',
     localizedName: 'fu',
     direction: 'ltr'
   },
   fy: {
+    locale: 'fy',
     name: 'Western Frisian',
     localizedName: 'Frisian',
     direction: 'ltr'
   },
   ga: {
+    locale: 'ga',
     name: 'Irish',
     localizedName: 'Gaeilge',
     direction: 'ltr'
   },
   gd: {
+    locale: 'gd',
     name: 'Scottish Gaelic',
     localizedName: 'Scottish Gaelic',
     direction: 'ltr'
   },
   gl: {
+    locale: 'gl',
     name: 'Galician',
     localizedName: 'Gallegan',
     direction: 'ltr'
   },
   gn: {
+    locale: 'gn',
     name: 'Guarani',
     localizedName: 'Guarani',
     direction: 'ltr'
   },
   gu: {
+    locale: 'gu',
     name: 'Gujarati',
     localizedName: 'Gujarati',
     direction: 'ltr'
   },
   gv: {
+    locale: 'gv',
     name: 'Manx',
     localizedName: 'Manx',
     direction: 'ltr'
   },
   ha: {
+    locale: 'ha',
     name: 'Hausa',
     localizedName: 'Hausa',
     direction: 'ltr'
   },
   hi: {
+    locale: 'hi',
     name: 'Hindi',
     localizedName: 'हिंदी',
     direction: 'ltr'
   },
   ho: {
+    locale: 'ho',
     name: 'Hiri Motu',
     localizedName: 'Hiri Motu',
     direction: 'ltr'
   },
   hr: {
+    locale: 'hr',
     name: 'Croatian',
     localizedName: 'hrvatski',
     direction: 'ltr'
   },
   ht: {
+    locale: 'ht',
     name: 'Haitian',
     localizedName: 'Haitian',
     direction: 'ltr'
   },
   hu: {
+    locale: 'hu',
     name: 'Hungarian',
     localizedName: 'magyar',
     direction: 'ltr'
   },
   hy: {
+    locale: 'hy',
     name: 'Armenian',
     localizedName: 'Armenian',
     direction: 'ltr'
   },
   hz: {
+    locale: 'hz',
     name: 'Herero',
     localizedName: 'Herero',
     direction: 'ltr'
   },
   ia: {
+    locale: 'ia',
     name: 'Interlingua',
     localizedName: 'Interlingua',
     direction: 'ltr'
   },
   ie: {
+    locale: 'ie',
     name: 'Interlingue',
     localizedName: 'Interlingue',
     direction: 'ltr'
   },
   ig: {
+    locale: 'ig',
     name: 'Igbo',
     localizedName: 'Igbo',
     direction: 'ltr'
   },
   ii: {
+    locale: 'ii',
     name: 'Sichuan Yi',
     localizedName: 'Sichuan Yi',
     direction: 'ltr'
   },
   ik: {
+    locale: 'ik',
     name: 'Inupiaq',
     localizedName: 'Inupiaq',
     direction: 'ltr'
   },
   in: {
+    locale: 'in',
     name: 'Indonesian',
     localizedName: 'Bahasa Indonesia',
     direction: 'ltr'
   },
   io: {
+    locale: 'io',
     name: 'Ido',
     localizedName: 'Ido',
     direction: 'ltr'
   },
   is: {
+    locale: 'is',
     name: 'Icelandic',
     localizedName: 'íslenska',
     direction: 'ltr'
   },
   it: {
+    locale: 'it',
     name: 'Italian',
     localizedName: 'italiano',
     direction: 'ltr'
   },
   iu: {
+    locale: 'iu',
     name: 'Inuktitut',
     localizedName: 'Inuktitut',
     direction: 'ltr'
   },
   iw: {
+    locale: 'iw',
     name: 'Hebrew',
     localizedName: 'עברית',
     direction: 'rtl'
   },
   ja: {
+    locale: 'ja',
     name: 'Japanese',
     localizedName: '日本語',
     direction: 'ltr'
   },
   ji: {
+    locale: 'ji',
     name: 'Yiddish',
     localizedName: 'Yiddish',
     direction: 'ltr'
   },
   jv: {
+    locale: 'jv',
     name: 'Javanese',
     localizedName: 'Javanese',
     direction: 'ltr'
   },
   ka: {
+    locale: 'ka',
     name: 'Georgian',
     localizedName: 'Georgian',
     direction: 'ltr'
   },
   kg: {
+    locale: 'kg',
     name: 'Kongo',
     localizedName: 'Kongo',
     direction: 'ltr'
   },
   ki: {
+    locale: 'ki',
     name: 'Kikuyu',
     localizedName: 'Kikuyu',
     direction: 'ltr'
   },
   kj: {
+    locale: 'kj',
     name: 'Kwanyama',
     localizedName: 'Kwanyama',
     direction: 'ltr'
   },
   kk: {
+    locale: 'kk',
     name: 'Kazakh',
     localizedName: 'Kazakh',
     direction: 'ltr'
   },
   kl: {
+    locale: 'kl',
     name: 'Kalaallisut',
     localizedName: 'Greenlandic',
     direction: 'ltr'
   },
   km: {
+    locale: 'km',
     name: 'Khmer',
     localizedName: 'Khmer',
     direction: 'ltr'
   },
   kn: {
+    locale: 'kn',
     name: 'Kannada',
     localizedName: 'Kannada',
     direction: 'ltr'
   },
   ko: {
+    locale: 'ko',
     name: 'Korean',
     localizedName: '한국어',
     direction: 'ltr'
   },
   kr: {
+    locale: 'kr',
     name: 'Kanuri',
     localizedName: 'Kanuri',
     direction: 'ltr'
   },
   ks: {
+    locale: 'ks',
     name: 'Kashmiri',
     localizedName: 'Kashmiri',
     direction: 'ltr'
   },
   ku: {
+    locale: 'ku',
     name: 'Kurdish',
     localizedName: 'Kurdish',
     direction: 'ltr'
   },
   ku_TR: {
+    locale: 'ku_TR',
     name: 'Kurdish, Turkey',
     localizedName: 'Kurdish (Turkey)',
     direction: 'ltr'
   },
   kv: {
+    locale: 'kv',
     name: 'Komi',
     localizedName: 'Komi',
     direction: 'ltr'
   },
   kw: {
+    locale: 'kw',
     name: 'Cornish',
     localizedName: 'Cornish',
     direction: 'ltr'
   },
   ky: {
+    locale: 'ky',
     name: 'Kirghiz',
     localizedName: 'Kirghiz',
     direction: 'ltr'
   },
   la: {
+    locale: 'la',
     name: 'Latin',
     localizedName: 'Latin',
     direction: 'ltr'
   },
   lb: {
+    locale: 'lb',
     name: 'Luxembourgish',
     localizedName: 'Luxembourgish',
     direction: 'ltr'
   },
   lg: {
+    locale: 'lg',
     name: 'Ganda',
     localizedName: 'Ganda',
     direction: 'ltr'
   },
   li: {
+    locale: 'li',
     name: 'Limburgish',
     localizedName: 'Limburgish',
     direction: 'ltr'
   },
   lk: {
+    locale: 'lk',
     name: 'Lakota',
     localizedName: 'Lakota',
     direction: 'ltr'
   },
   ln: {
+    locale: 'ln',
     name: 'Lingala',
     localizedName: 'Lingala',
     direction: 'ltr'
   },
   lo: {
+    locale: 'lo',
     name: 'Lao',
     localizedName: 'Lao',
     direction: 'ltr'
   },
   lt: {
+    locale: 'lt',
     name: 'Lithuanian',
     localizedName: 'Lietuvių',
     direction: 'ltr'
   },
   lu: {
+    locale: 'lu',
     name: 'Luba-Katanga',
     localizedName: 'Luba-Katanga',
     direction: 'ltr'
   },
   lv: {
+    locale: 'lv',
     name: 'Latvian',
     localizedName: 'Latviešu',
     direction: 'ltr'
   },
   mg: {
+    locale: 'mg',
     name: 'Malagasy',
     localizedName: 'Malagasy',
     direction: 'ltr'
   },
   mh: {
+    locale: 'mh',
     name: 'Marshallese',
     localizedName: 'Marshallese',
     direction: 'ltr'
   },
   mi: {
+    locale: 'mi',
     name: 'Maori',
     localizedName: 'Maori',
     direction: 'ltr'
   },
   mk: {
+    locale: 'mk',
     name: 'Macedonian',
     localizedName: 'македонски',
     direction: 'ltr'
   },
   ml: {
+    locale: 'ml',
     name: 'Malayalam',
     localizedName: 'Malayalam',
     direction: 'ltr'
   },
   mn: {
+    locale: 'mn',
     name: 'Mongolian',
     localizedName: 'Mongolian',
     direction: 'ltr'
   },
   mo: {
+    locale: 'mo',
     name: 'Moldavian',
     localizedName: 'Moldavian',
     direction: 'ltr'
   },
   mr: {
+    locale: 'mr',
     name: 'Marathi',
     localizedName: 'Marathi',
     direction: 'ltr'
   },
   ms: {
+    locale: 'ms',
     name: 'Malay',
     localizedName: 'Bahasa Melayu',
     direction: 'ltr'
   },
   mt: {
+    locale: 'mt',
     name: 'Maltese',
     localizedName: 'Malti',
     direction: 'ltr'
   },
   my: {
+    locale: 'my',
     name: 'Burmese',
     localizedName: 'Burmese',
     direction: 'ltr'
   },
   na: {
+    locale: 'na',
     name: 'Nauru',
     localizedName: 'Nauru',
     direction: 'ltr'
   },
   nb: {
+    locale: 'nb',
     name: 'Norwegian Bokmal',
     localizedName: 'Norwegian Bokmål',
     direction: 'ltr'
   },
   nd: {
+    locale: 'nd',
     name: 'North Ndebele',
     localizedName: 'North Ndebele',
     direction: 'ltr'
   },
   ne: {
+    locale: 'ne',
     name: 'Nepali',
     localizedName: 'Nepali',
     direction: 'ltr'
   },
   ng: {
+    locale: 'ng',
     name: 'Ndonga',
     localizedName: 'Ndonga',
     direction: 'ltr'
   },
   nl: {
+    locale: 'nl',
     name: 'Dutch',
     localizedName: 'Nederlands',
     direction: 'ltr'
   },
   nn: {
+    locale: 'nn',
     name: 'Norwegian Nynorsk',
     localizedName: 'Norwegian Nynorsk',
     direction: 'ltr'
   },
   nr: {
+    locale: 'nr',
     name: 'South Ndebele',
     localizedName: 'South Ndebele',
     direction: 'ltr'
   },
   nv: {
+    locale: 'nv',
     name: 'Navajo',
     localizedName: 'Navajo',
     direction: 'ltr'
   },
   ny: {
+    locale: 'ny',
     name: 'Chichewa',
     localizedName: 'Nyanja',
     direction: 'ltr'
   },
   oc: {
+    locale: 'oc',
     name: 'Occitan',
     localizedName: 'Occitan',
     direction: 'ltr'
   },
   oj: {
+    locale: 'oj',
     name: 'Ojibwa',
     localizedName: 'Ojibwa',
     direction: 'ltr'
   },
   om: {
+    locale: 'om',
     name: 'Oromo',
     localizedName: 'Oromo',
     direction: 'ltr'
   },
   or: {
+    locale: 'or',
     name: 'Oriya',
     localizedName: 'Oriya',
     direction: 'ltr'
   },
   os: {
+    locale: 'os',
     name: 'Ossetian',
     localizedName: 'Ossetian',
     direction: 'ltr'
   },
   pa: {
+    locale: 'pa',
     name: 'Panjabi',
     localizedName: 'Panjabi',
     direction: 'ltr'
   },
   pi: {
+    locale: 'pi',
     name: 'Pali',
     localizedName: 'Pali',
     direction: 'ltr'
   },
   pl: {
+    locale: 'pl',
     name: 'Polish',
     localizedName: 'polski',
     direction: 'ltr'
   },
   ps: {
+    locale: 'ps',
     name: 'Pashto',
     localizedName: 'Pushto',
     direction: 'ltr'
   },
   pt: {
+    locale: 'pt',
     name: 'Portuguese',
     localizedName: 'português',
     direction: 'ltr'
   },
   pt_BR: {
+    locale: 'pt_BR',
     name: 'Portuguese, Brazil',
     localizedName: 'português (Brasil)',
     direction: 'ltr'
   },
   qu: {
+    locale: 'qu',
     name: 'Quechua',
     localizedName: 'Quechua',
     direction: 'ltr'
   },
   rm: {
+    locale: 'rm',
     name: 'Raeto-Romance',
     localizedName: 'Raeto-Romance',
     direction: 'ltr'
   },
   rn: {
+    locale: 'rn',
     name: 'Kirundi',
     localizedName: 'Rundi',
     direction: 'ltr'
   },
   ro: {
+    locale: 'ro',
     name: 'Romanian',
     localizedName: 'română',
     direction: 'ltr'
   },
   ru: {
+    locale: 'ru',
     name: 'Russian',
     localizedName: 'русский',
     direction: 'ltr'
   },
   rw: {
+    locale: 'rw',
     name: 'Kinyarwanda',
     localizedName: 'Kinyarwanda',
     direction: 'ltr'
   },
   ry: {
+    locale: 'ry',
     name: 'Rusyn',
     localizedName: 'ry',
     direction: 'ltr'
   },
   sa: {
+    locale: 'sa',
     name: 'Sanskrit',
     localizedName: 'Sanskrit',
     direction: 'ltr'
   },
   sc: {
+    locale: 'sc',
     name: 'Sardinian',
     localizedName: 'Sardinian',
     direction: 'ltr'
   },
   sd: {
+    locale: 'sd',
     name: 'Sindhi',
     localizedName: 'Sindhi',
     direction: 'ltr'
   },
   se: {
+    locale: 'se',
     name: 'Northern Sami',
     localizedName: 'Northern Sami',
     direction: 'ltr'
   },
   sg: {
+    locale: 'sg',
     name: 'Sango',
     localizedName: 'Sango',
     direction: 'ltr'
   },
   sh: {
+    locale: 'sh',
     name: 'Serbo-Croatian',
     localizedName: 'sh',
     direction: 'ltr'
   },
   si: {
+    locale: 'si',
     name: 'Sinhalese',
     localizedName: 'Sinhalese',
     direction: 'ltr'
   },
   sk: {
+    locale: 'sk',
     name: 'Slovak',
     localizedName: 'Slovenčina',
     direction: 'ltr'
   },
   sl: {
+    locale: 'sl',
     name: 'Slovenian',
     localizedName: 'Slovenščina',
     direction: 'ltr'
   },
   sm: {
+    locale: 'sm',
     name: 'Samoan',
     localizedName: 'Samoan',
     direction: 'ltr'
   },
   sn: {
+    locale: 'sn',
     name: 'Shona',
     localizedName: 'Shona',
     direction: 'ltr'
   },
   so: {
+    locale: 'so',
     name: 'Somali',
     localizedName: 'Somali',
     direction: 'ltr'
   },
   sq: {
+    locale: 'sq',
     name: 'Albanian',
     localizedName: 'shqipe',
     direction: 'ltr'
   },
   sr: {
+    locale: 'sr',
     name: 'Serbian',
     localizedName: 'Српски',
     direction: 'ltr'
   },
   ss: {
+    locale: 'ss',
     name: 'Swati',
     localizedName: 'Swati',
     direction: 'ltr'
   },
   st: {
+    locale: 'st',
     name: 'Sotho',
     localizedName: 'Southern Sotho',
     direction: 'ltr'
   },
   su: {
+    locale: 'su',
     name: 'Sundanese',
     localizedName: 'Sundanese',
     direction: 'ltr'
   },
   sv: {
+    locale: 'sv',
     name: 'Swedish',
     localizedName: 'svenska',
     direction: 'ltr'
   },
   sw: {
+    locale: 'sw',
     name: 'Swahili',
     localizedName: 'Swahili',
     direction: 'ltr'
   },
   ta: {
+    locale: 'ta',
     name: 'Tamil',
     localizedName: 'Tamil',
     direction: 'ltr'
   },
   te: {
+    locale: 'te',
     name: 'Telugu',
     localizedName: 'Telugu',
     direction: 'ltr'
   },
   tg: {
+    locale: 'tg',
     name: 'Tajik',
     localizedName: 'Tajik',
     direction: 'ltr'
   },
   th: {
+    locale: 'th',
     name: 'Thai',
     localizedName: 'ไทย',
     direction: 'ltr'
   },
   ti: {
+    locale: 'ti',
     name: 'Tigrinya',
     localizedName: 'Tigrinya',
     direction: 'ltr'
   },
   tk: {
+    locale: 'tk',
     name: 'Turkmen',
     localizedName: 'Turkmen',
     direction: 'ltr'
   },
   tl: {
+    locale: 'tl',
     name: 'Tagalog',
     localizedName: 'Tagalog',
     direction: 'ltr'
   },
   tn: {
+    locale: 'tn',
     name: 'Tswana',
     localizedName: 'Tswana',
     direction: 'ltr'
   },
   to: {
+    locale: 'to',
     name: 'Tonga',
     localizedName: 'Tonga',
     direction: 'ltr'
   },
   tr: {
+    locale: 'tr',
     name: 'Turkish',
     localizedName: 'Türkçe',
     direction: 'ltr'
   },
   ts: {
+    locale: 'ts',
     name: 'Tsonga',
     localizedName: 'Tsonga',
     direction: 'ltr'
   },
   tt: {
+    locale: 'tt',
     name: 'Tatar',
     localizedName: 'Tatar',
     direction: 'ltr'
   },
   tw: {
+    locale: 'tw',
     name: 'Twi',
     localizedName: 'Twi',
     direction: 'ltr'
   },
   ty: {
+    locale: 'ty',
     name: 'Tahitian',
     localizedName: 'Tahitian',
     direction: 'ltr'
   },
   ug: {
+    locale: 'ug',
     name: 'Uighur',
     localizedName: 'Uighur',
     direction: 'ltr'
   },
   uk: {
+    locale: 'uk',
     name: 'Ukrainian',
     localizedName: 'українська',
     direction: 'ltr'
   },
   ur: {
+    locale: 'ur',
     name: 'Urdu',
     localizedName: 'Urdu',
     direction: 'rtl'
   },
   uz: {
+    locale: 'uz',
     name: 'Uzbek',
     localizedName: 'Uzbek',
     direction: 'ltr'
   },
   ve: {
+    locale: 've',
     name: 'Venda',
     localizedName: 'Venda',
     direction: 'ltr'
   },
   vi: {
+    locale: 'vi',
     name: 'Vietnamese',
     localizedName: 'Tiếng Việt',
     direction: 'ltr'
   },
   vo: {
+    locale: 'vo',
     name: 'Volapuk',
     localizedName: 'Volapük',
     direction: 'ltr'
   },
   wa: {
+    locale: 'wa',
     name: 'Walloon',
     localizedName: 'Walloon',
     direction: 'ltr'
   },
   wo: {
+    locale: 'wo',
     name: 'Wolof',
     localizedName: 'Wolof',
     direction: 'ltr'
   },
   xh: {
+    locale: 'xh',
     name: 'Xhosa',
     localizedName: 'Xhosa',
     direction: 'ltr'
   },
   yo: {
+    locale: 'yo',
     name: 'Yoruba',
     localizedName: 'Yoruba',
     direction: 'ltr'
   },
   za: {
+    locale: 'za',
     name: 'Zhuang',
     localizedName: 'Zhuang',
     direction: 'ltr'
   },
   zh_CN: {
+    locale: 'zh_CN',
     name: 'Chinese, Simplified',
     localizedName: '中文 (中国)',
     direction: 'ltr'
   },
   zh_HK: {
+    locale: 'zh_HK',
     name: 'Chinese, Hong Kong',
     localizedName: '中文 (香港)',
     direction: 'ltr'
   },
   zh_TW: {
+    locale: 'zh_TW',
     name: 'Chinese, Traditional',
     localizedName: '中文 (台灣)',
     direction: 'ltr'
   },
   zu: {
+    locale: 'zu',
     name: 'Zulu',
     localizedName: 'Zulu',
     direction: 'ltr'

@pixelzoom want to apply this patch and test in your circumstances?

@pixelzoom
Copy link
Contributor Author

pixelzoom commented Feb 1, 2023

I'm not familiar with how this file is created or used,

You requested it and reviewed it in #1302.

@pixelzoom want to apply this patch and test in your circumstances?

Not really, it's another bandaid. The patch requires duplicating the locale code as the key and value for every entry. That's unnecessary and error prone. E.g. 'aa' appears twice, and must match:

   aa: {
+    locale: 'aa',
     name: 'Afar',
     localizedName: 'Afar',
     direction: 'ltr'
   },

When harvesting Locale values from localeInfoModule.js, why not add each key as a field in Locale?

That would cause code like this to fail:

const isLocaleValid = ( locale?: Locale ) => {
  return locale && localeInfoModule[ locale ];
};

... but that could and should be addressed.

Which illustrates another problem -- localeInfoModule.js is in JavaScript. Why? Its entires are supposedly of type Locale, but there's no type info in that file.

@samreid
Copy link
Member

samreid commented Feb 1, 2023

It's unclear what the proposal is for this issue. Generally, I would encourage @pixelzoom to make improvements like this, but perhaps we are waiting to hear back from @jonathanolson to see if there's a better way.

@pixelzoom
Copy link
Contributor Author

I guess the proposal is to actually finish this work, as mentioned in #1375. This is yet-another example of PhET building on top of stuff that's not done, with no plan to finishing it.

@samreid
Copy link
Member

samreid commented Feb 1, 2023

I sent the following messages over slack:

Want to chat about #1374 ? It’s unclear how you want it to work.
Also, the Locale type is defined like so: export type Locale = keyof typeof localeInfoModule; So this sentence doesn’t make much sense:

In Number Play development, it would have been very useful (for debugging) to display the locale code. That information is not in a Locale. So given a Locale, it really difficult to map back to the locale code.

@pixelzoom
Copy link
Contributor Author

@samreid and I had a meeting about this. He helped me understand that the value of localeProperty is actually the locale code. So I have what I need for Number Play - thanks! Closing.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants