waha-shared 1.0.211 → 1.0.213

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.
Files changed (124) hide show
  1. package/dist/data/areas/areas.schema.json +53 -19
  2. package/dist/data/areas/areas.zod.d.ts +12 -15
  3. package/dist/data/aslTimestamps/aslTimestamps.schema.json +11 -18
  4. package/dist/data/aslTimestamps/aslTimestamps.zod.d.ts +34 -4
  5. package/dist/data/bibleAudios/bibleAudios.schema.json +11 -14
  6. package/dist/data/bibleAudios/bibleAudios.zod.d.ts +15 -11
  7. package/dist/data/bibleAudios/bibleAudios.zod.js +4 -5
  8. package/dist/data/bibleAudios/index.d.ts +2 -5
  9. package/dist/data/bibleBooks/bibleBooks.schema.json +50 -71
  10. package/dist/data/bibleBooks/bibleBooks.zod.d.ts +51 -5
  11. package/dist/data/bibleBooks/index.d.ts +2 -2
  12. package/dist/data/bibleChaptersList/bibleChaptersList.schema.json +2 -5
  13. package/dist/data/bibleChaptersList/bibleChaptersList.zod.d.ts +1 -1
  14. package/dist/data/bibleStatuses/bibleStatuses.json +110 -2
  15. package/dist/data/bibleStatuses/bibleStatuses.schema.json +40 -46
  16. package/dist/data/bibleStatuses/bibleStatuses.zod.d.ts +25 -5
  17. package/dist/data/bibleStatuses/bibleStatuses.zod.js +27 -2
  18. package/dist/data/bibleTexts/bibleTexts.schema.json +24 -40
  19. package/dist/data/bibleTexts/bibleTexts.zod.d.ts +39 -11
  20. package/dist/data/bibleTexts/index.d.ts +3 -3
  21. package/dist/data/clones/clones.schema.json +26 -27
  22. package/dist/data/clones/clones.zod.d.ts +24 -2
  23. package/dist/data/clones/clones.zod.js +1 -1
  24. package/dist/data/clones/index.d.ts +3 -3
  25. package/dist/data/countries/countries.schema.json +90 -91
  26. package/dist/data/countries/countries.zod.d.ts +88 -19
  27. package/dist/data/countries/countries.zod.js +138 -49
  28. package/dist/data/countriesAndLanguages/countriesAndLanguages.schema.json +8 -19
  29. package/dist/data/countriesAndLanguages/countriesAndLanguages.zod.d.ts +28 -2
  30. package/dist/data/countriesAndLanguages/index.d.ts +2 -2
  31. package/dist/data/crowdinLanguages/crowdinLanguages.schema.json +4 -13
  32. package/dist/data/crowdinLanguages/crowdinLanguages.zod.d.ts +13 -1
  33. package/dist/data/crowdinLanguages/index.d.ts +1 -1
  34. package/dist/data/curriculumFoundations/curriculumFoundations.schema.json +8 -16
  35. package/dist/data/curriculumFoundations/curriculumFoundations.zod.d.ts +10 -2
  36. package/dist/data/curriculumQuestions/curriculumQuestions.schema.json +13 -24
  37. package/dist/data/curriculumQuestions/curriculumQuestions.zod.d.ts +23 -3
  38. package/dist/data/curriculumTopics/curriculumTopics.schema.json +8 -16
  39. package/dist/data/curriculumTopics/curriculumTopics.zod.d.ts +10 -2
  40. package/dist/data/iosVoiceOverLanguages/iosVoiceOverLanguages.schema.json +2 -5
  41. package/dist/data/iosVoiceOverLanguages/iosVoiceOverLanguages.zod.d.ts +1 -1
  42. package/dist/data/iso6933LanguageCodes/iso6933LanguageCodes.schema.json +2 -8
  43. package/dist/data/iso6933LanguageCodes/iso6933LanguageCodes.zod.js +1 -1
  44. package/dist/data/languageAssets/languageAssets.json +37702 -0
  45. package/dist/data/languageAssets/languageAssets.schema.json +12 -15
  46. package/dist/data/languageAssets/languageAssets.zod.d.ts +1 -1
  47. package/dist/data/languageAssets/languageAssets.zod.js +43 -3
  48. package/dist/data/languages/index.d.ts +4 -8
  49. package/dist/data/languages/languages.json +1 -1
  50. package/dist/data/languages/languages.schema.json +89 -136
  51. package/dist/data/languages/languages.zod.d.ts +116 -194
  52. package/dist/data/languages/languages.zod.js +1 -7
  53. package/dist/data/mediaDurations/mediaDurations.schema.json +14 -21
  54. package/dist/data/mediaDurations/mediaDurations.zod.d.ts +1 -1
  55. package/dist/data/mediaDurations/mediaDurations.zod.js +41 -3
  56. package/dist/data/notification/notification.schema.json +57 -67
  57. package/dist/data/notification/notification.zod.d.ts +39 -15
  58. package/dist/data/notification/notification.zod.js +134 -4
  59. package/dist/data/numeralMaps/numeralMaps.schema.json +62 -62
  60. package/dist/data/numeralMaps/numeralMaps.zod.d.ts +46 -2
  61. package/dist/data/numeralMaps/numeralMaps.zod.js +64 -14
  62. package/dist/data/phoneLanguages/index.d.ts +1 -1
  63. package/dist/data/phoneLanguages/phoneLanguages.schema.json +8 -18
  64. package/dist/data/phoneLanguages/phoneLanguages.zod.d.ts +22 -2
  65. package/dist/data/questions/index.d.ts +1 -1
  66. package/dist/data/questions/questions.schema.json +11 -11
  67. package/dist/data/questions/questions.zod.d.ts +14 -6
  68. package/dist/data/releaseNotes/index.d.ts +1 -1
  69. package/dist/data/releaseNotes/releaseNotes.schema.json +11 -23
  70. package/dist/data/releaseNotes/releaseNotes.zod.d.ts +9 -1
  71. package/dist/data/releaseNotes/releaseNotes.zod.js +1 -1
  72. package/dist/data/screenshots/screenshots.schema.json +6 -12
  73. package/dist/data/screenshots/screenshots.zod.d.ts +5 -1
  74. package/dist/data/scripts/scripts.schema.json +4 -11
  75. package/dist/data/scripts/scripts.zod.d.ts +7 -1
  76. package/dist/data/sets/index.d.ts +2 -2
  77. package/dist/data/sets/sets.schema.json +22 -25
  78. package/dist/data/sets/sets.zod.d.ts +39 -61
  79. package/dist/data/specialIds/specialIds.schema.json +1 -5
  80. package/dist/data/specialIds/specialIds.zod.d.ts +41 -11
  81. package/dist/data/translationsApp/index.d.ts +9 -9
  82. package/dist/data/translationsApp/translationsApp.json +1 -0
  83. package/dist/data/translationsApp/translationsApp.schema.json +668 -667
  84. package/dist/data/translationsApp/translationsApp.zod.d.ts +631 -1
  85. package/dist/data/translationsApp/translationsApp.zod.js +2 -2
  86. package/dist/data/translationsFtb/translationsFtb.json +884 -0
  87. package/dist/data/translationsFtb/translationsFtb.schema.json +149 -147
  88. package/dist/data/translationsFtb/translationsFtb.zod.d.ts +135 -1
  89. package/dist/data/translationsFtb/translationsFtb.zod.js +1 -1
  90. package/dist/data/translationsIntroduction/translationsIntroduction.schema.json +18 -15
  91. package/dist/data/translationsIntroduction/translationsIntroduction.zod.d.ts +160 -2
  92. package/dist/data/translationsIntroduction/translationsIntroduction.zod.js +1 -1
  93. package/dist/data/translationsQuestion/translationsQuestion.json +480 -0
  94. package/dist/data/translationsQuestion/translationsQuestion.schema.json +14 -9
  95. package/dist/data/translationsQuestion/translationsQuestion.zod.js +1 -1
  96. package/dist/data/translationsSet/translationsSet.json +20694 -11135
  97. package/dist/data/translationsSet/translationsSet.schema.json +56 -52
  98. package/dist/data/translationsSet/translationsSet.zod.d.ts +19 -1
  99. package/dist/data/translationsSet/translationsSet.zod.js +4 -4
  100. package/dist/data/translationsSolarSpeaker/translationsSolarSpeaker.schema.json +100 -98
  101. package/dist/data/translationsSolarSpeaker/translationsSolarSpeaker.zod.d.ts +87 -1
  102. package/dist/data/translationsSolarSpeaker/translationsSolarSpeaker.zod.js +1 -1
  103. package/dist/data/translationsSpokenQuestion/translationsSpokenQuestion.json +480 -0
  104. package/dist/data/translationsSpokenQuestion/translationsSpokenQuestion.schema.json +23 -18
  105. package/dist/data/translationsSpokenQuestion/translationsSpokenQuestion.zod.js +1 -1
  106. package/dist/data/youtubePlaylists/youtubePlaylists.schema.json +2 -9
  107. package/dist/data/youtubePlaylists/youtubePlaylists.zod.js +1 -1
  108. package/dist/data/youtubeVideos/youtubeVideos.schema.json +2 -9
  109. package/dist/data/youtubeVideos/youtubeVideos.zod.js +1 -1
  110. package/dist/types/analytics.d.ts +1 -14
  111. package/dist/types/articles.d.ts +344 -94
  112. package/dist/types/articles.js +13 -13
  113. package/dist/types/bibleChapters.d.ts +91 -13
  114. package/dist/types/bibleChapters.js +1 -1
  115. package/dist/types/feedback.d.ts +41 -3
  116. package/dist/types/feedback.js +1 -1
  117. package/dist/types/microLessons.d.ts +869 -70
  118. package/dist/types/microLessons.js +29 -29
  119. package/dist/types/notifications.d.ts +119 -19
  120. package/dist/types/scripturePassages.d.ts +34 -4
  121. package/dist/types/users.d.ts +776 -221
  122. package/dist/types/users.js +1 -2
  123. package/dist/types/webContent.d.ts +20 -8
  124. package/package.json +3 -3
@@ -6,23 +6,20 @@
6
6
  "type": "string"
7
7
  },
8
8
  "data": {
9
- "$schema": "https://json-schema.org/draft/2020-12/schema",
9
+ "title": "Media Durations",
10
+ "description": "Schema for media duration data organized by language code",
10
11
  "type": "object",
11
- "propertyNames": {
12
- "type": "string",
13
- "pattern": "^[a-z]{3}$"
12
+ "patternProperties": {
13
+ "^[a-z]{3}$": {
14
+ "type": "array",
15
+ "items": {
16
+ "type": "string"
17
+ },
18
+ "description": "Language code (3-letter ISO code) containing media file durations"
19
+ }
14
20
  },
15
- "additionalProperties": {
16
- "type": "array",
17
- "items": {
18
- "type": "string"
19
- },
20
- "description": "Language code (3-letter ISO code) containing assets"
21
- }
21
+ "additionalProperties": false
22
22
  }
23
23
  },
24
- "required": [
25
- "$schema",
26
- "data"
27
- ]
24
+ "required": ["$schema", "data"]
28
25
  }
@@ -1,3 +1,3 @@
1
1
  import { z } from 'zod';
2
- export declare const LanguageAssets: z.ZodRecord<z.ZodString, z.ZodArray<z.ZodString>>;
2
+ export declare const LanguageAssets: z.ZodEffects<z.ZodRecord<z.ZodString, z.ZodUnion<[z.ZodArray<z.ZodString, "many">, z.ZodNever]>>, Record<string, string[]>, Record<string, string[]>>;
3
3
  export type LanguageAssets = z.infer<typeof LanguageAssets>;
@@ -2,6 +2,46 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.LanguageAssets = void 0;
4
4
  const zod_1 = require("zod");
5
- exports.LanguageAssets = zod_1.z.record(zod_1.z.string().regex(new RegExp('^[a-z]{3}$')), zod_1.z
6
- .array(zod_1.z.string())
7
- .describe('Language code (3-letter ISO code) containing assets'));
5
+ exports.LanguageAssets = zod_1.z
6
+ .record(zod_1.z.union([
7
+ zod_1.z
8
+ .array(zod_1.z.string())
9
+ .describe('Language code (3-letter ISO code) containing media file durations'),
10
+ zod_1.z.never(),
11
+ ]))
12
+ .superRefine((value, ctx) => {
13
+ for (const key in value) {
14
+ let evaluated = false;
15
+ if (key.match(new RegExp('^[a-z]{3}$'))) {
16
+ evaluated = true;
17
+ const result = zod_1.z
18
+ .array(zod_1.z.string())
19
+ .describe('Language code (3-letter ISO code) containing media file durations')
20
+ .safeParse(value[key]);
21
+ if (!result.success) {
22
+ ctx.addIssue({
23
+ path: [...ctx.path, key],
24
+ code: 'custom',
25
+ message: `Invalid input: Key matching regex /${key}/ must match schema`,
26
+ params: {
27
+ issues: result.error.issues,
28
+ },
29
+ });
30
+ }
31
+ }
32
+ if (!evaluated) {
33
+ const result = zod_1.z.never().safeParse(value[key]);
34
+ if (!result.success) {
35
+ ctx.addIssue({
36
+ path: [...ctx.path, key],
37
+ code: 'custom',
38
+ message: `Invalid input: must match catchall schema`,
39
+ params: {
40
+ issues: result.error.issues,
41
+ },
42
+ });
43
+ }
44
+ }
45
+ }
46
+ })
47
+ .describe('Schema for media duration data organized by language code');
@@ -1,20 +1,20 @@
1
1
  export declare const languages: {
2
+ status: "notStarted" | "inProgress" | "testing" | "launched";
2
3
  languageId: string;
3
4
  exonym: string;
4
5
  appInterface: boolean;
5
6
  curriculum: {
6
- foundations: string;
7
7
  questions: string;
8
+ foundations: string;
8
9
  topics: string | null;
9
10
  };
10
11
  dmCourseStatus: "notStarted" | "inProgress" | "testing" | "launched";
11
12
  gdmcStatus: "notStarted" | "inProgress" | "testing" | "launched";
12
13
  questionSource: "unknown" | "recorded" | "mms" | "elevenLabs";
13
14
  script: "arabic" | "bengali" | "burmese" | "chinese" | "cyrillic" | "devanagari" | "geez" | "georgian" | "greek" | "gujarati" | "gurmukhi" | "hebrew" | "japanese" | "kannada" | "khmer" | "korean" | "latin" | "malayalam" | "tamil" | "telugu" | "thai" | "uyghur";
14
- status: "notStarted" | "inProgress" | "testing" | "launched";
15
15
  uuid: string;
16
- bcpLanguageId?: string | undefined;
17
16
  bible?: string | undefined;
17
+ bcpLanguageId?: string | undefined;
18
18
  bibleFallback?: string | undefined;
19
19
  countries?: string[] | undefined;
20
20
  crowdinId?: string | undefined;
@@ -29,11 +29,7 @@ export declare const languages: {
29
29
  speakersPrimary?: number | undefined;
30
30
  speakersSecondary?: number | undefined;
31
31
  speakersTotal?: number | undefined;
32
- specialThanks?: {
33
- text: string;
34
- imageUrl?: string | undefined;
35
- url?: string | undefined;
36
- } | undefined;
32
+ specialThanks?: any;
37
33
  storeIdAndroid?: "id" | "sw" | "af" | "sq" | "am" | "ar" | "hy-AM" | "az-AZ" | "bn-BD" | "eu-ES" | "be" | "bg" | "my-MM" | "ca" | "zh-HK" | "zh-CN" | "zh-TW" | "hr" | "cs-CZ" | "da-DK" | "nl-NL" | "en-AU" | "en-CA" | "en-GB" | "en-IN" | "en-SG" | "en-US" | "en-ZA" | "et" | "fil" | "fi-FI" | "fr-CA" | "fr-FR" | "gl-ES" | "ka-GE" | "de-DE" | "el-GR" | "gu" | "iw-IL" | "hi-IN" | "hu-HU" | "is-IS" | "it-IT" | "ja-JP" | "kn-IN" | "kk" | "km-KH" | "ko-KR" | "ky-KG" | "lo-LA" | "lv" | "lt" | "mk-MK" | "ms-MY" | "ms" | "ml-IN" | "mr-IN" | "mn-MN" | "ne-NP" | "no-NO" | "fa" | "fa-AE" | "fa-AF" | "fa-IR" | "pl-PL" | "pt-BR" | "pt-PT" | "pa" | "ro" | "rm" | "ru-RU" | "sr" | "si-LK" | "sk" | "sl" | "es-419" | "es-ES" | "es-US" | "sv-SE" | "ta-IN" | "te-IN" | "th" | "tr-TR" | "uk" | "ur" | "vi" | "zu" | undefined;
38
34
  storeIdIos?: "id" | "ca" | "hr" | "nl-NL" | "en-AU" | "en-CA" | "en-GB" | "en-US" | "fr-CA" | "fr-FR" | "de-DE" | "ms" | "pt-BR" | "pt-PT" | "ro" | "sk" | "es-ES" | "th" | "uk" | "vi" | "ar-SA" | "cs" | "da" | "el" | "es-MX" | "fi" | "he" | "hi" | "hu" | "it" | "ja" | "ko" | "no" | "pl" | "ru" | "sv" | "tr" | "zh-Hans" | "zh-Hant" | undefined;
39
35
  supportsSolarSpeakers?: boolean | undefined;
@@ -339,7 +339,7 @@
339
339
  "speakersPrimary": 33332360,
340
340
  "speakersSecondary": 9000000,
341
341
  "speakersTotal": 42332360,
342
- "status": "notStarted",
342
+ "status": "inProgress",
343
343
  "uuid": "13575bbb-0239-4f14-8704-106c026ecd46",
344
344
  "videoBridgeLanguage": "ara"
345
345
  },
@@ -6,55 +6,56 @@
6
6
  "type": "string"
7
7
  },
8
8
  "data": {
9
- "$schema": "https://json-schema.org/draft/2020-12/schema",
10
9
  "type": "array",
11
10
  "items": {
12
- "type": "object",
11
+ "additionalProperties": false,
13
12
  "properties": {
14
13
  "languageId": {
15
- "type": "string",
16
- "description": "A 3 letter id used to represent a language in Waha. Use the standard ISO 693-3 id found in data/iso6933LanguageCodes.json. If the language isn't there, use a unique custom 3 letter id that isn't already taken and add it to that file so it doesn't get taken by another language."
14
+ "description": "A 3 letter id used to represent a language in Waha. Use the standard ISO 693-3 id found in data/iso6933LanguageCodes.json. If the language isn't there, use a unique custom 3 letter id that isn't already taken and add it to that file so it doesn't get taken by another language.",
15
+ "type": "string"
17
16
  },
18
17
  "exonym": {
19
- "type": "string",
20
- "description": "The name of a language in English, i.e. \"Spanish\". This helps Waha team members identify the language."
18
+ "description": "The name of a language in English, i.e. \"Spanish\". This helps Waha team members identify the language.",
19
+ "type": "string"
21
20
  },
22
21
  "appInterface": {
22
+ "markdownDescription": "Whether or not this language should be available as an app interface language. The app interface language controls the language of labels, alerts, buttons, etc. and is separate from the meet language. If a language is present in data/languageResources/phoneLanguages.json, this property should be true.",
23
23
  "type": "boolean"
24
24
  },
25
25
  "bcpLanguageId": {
26
- "type": "string",
27
- "description": "A language ID used for iOS's screen reader support. Should be in BCP 47 format. Should only be included if language is supported by iOS's screen reader. List of supported languages can be found here: https://www.apple.com/ios/feature-availability/"
26
+ "description": "A language ID used for iOS's screen reader support. Should be in BCP 47 format. Should only be included if language is supported by iOS's screen reader. List of supported languages can be found here: https://www.apple.com/ios/feature-availability/",
27
+ "type": "string"
28
28
  },
29
29
  "bible": {
30
- "type": "string",
31
- "description": "Determines what scripture translation this language will use."
30
+ "description": "Determines what scripture translation this language will use.",
31
+ "type": "string"
32
32
  },
33
33
  "bibleFallback": {
34
- "type": "string",
35
- "description": "Bible to use as a fallback if a chapter isn't available in the main bible. For example, if a language has only an NT bible available, specify a translation that has the OT available here to use for OT passages."
34
+ "description": "Bible to use as a fallback if a chapter isn't available in the main bible. For example, if a language has only an NT bible available, specify a translation that has the OT available here to use for OT passages.",
35
+ "type": "string"
36
36
  },
37
37
  "countries": {
38
- "type": "array",
38
+ "description": "A list of country ids that this language is spoken in. This gets added automatically by the script found in scripts/mapCountriesToLanguages.ts which uses shared/data/languageResources/countriesAndLanguages.json to generate a list of countries where the language is spoken. This is used for determing the recommended list of meet languages based on the user's country location.",
39
39
  "items": {
40
40
  "type": "string"
41
41
  },
42
- "description": "A list of country ids that this language is spoken in. This gets added automatically by the script found in scripts/mapCountriesToLanguages.ts which uses shared/data/languageResources/countriesAndLanguages.json to generate a list of countries where the language is spoken. This is used for determing the recommended list of meet languages based on the user's country location."
42
+ "type": "array"
43
43
  },
44
44
  "crowdinId": {
45
- "type": "string",
46
- "description": "The Id of this language in Crowdin. For language's that crowdin supports, this can be found in <https://developer.crowdin.com/language-codes>. Otherwise, it will be a custom id created at the time the language was added to crowdin."
45
+ "description": "The Id of this language in Crowdin. For language's that crowdin supports, this can be found in <https://developer.crowdin.com/language-codes>. Otherwise, it will be a custom id created at the time the language was added to crowdin.",
46
+ "type": "string"
47
47
  },
48
48
  "curriculum": {
49
- "type": "object",
49
+ "additionalProperties": false,
50
+ "description": "Determines what curriculums this language will use for its various content. Each must be linked to objects in data/foundationsCurriculums.json, data/topicsCurriculums.json , or data/questionsCurriculums.json.",
50
51
  "properties": {
51
52
  "foundations": {
52
- "type": "string",
53
- "description": "The id for the foundations curriculum for this language."
53
+ "description": "The id for the foundations curriculum for this language.",
54
+ "type": "string"
54
55
  },
55
56
  "questions": {
56
- "type": "string",
57
- "description": "The id for the foundations curriculum for this language."
57
+ "description": "The id for the foundations curriculum for this language.",
58
+ "type": "string"
58
59
  },
59
60
  "topics": {
60
61
  "anyOf": [
@@ -68,79 +69,56 @@
68
69
  "description": "The id for the foundations curriculum for this language."
69
70
  }
70
71
  },
71
- "required": [
72
- "foundations",
73
- "questions",
74
- "topics"
75
- ],
76
- "additionalProperties": false,
77
- "description": "Determines what curriculums this language will use for its various content. Each must be linked to objects in data/foundationsCurriculums.json, data/topicsCurriculums.json , or data/questionsCurriculums.json."
72
+ "required": ["foundations", "questions", "topics"],
73
+ "type": "object"
78
74
  },
79
75
  "dmCourseStatus": {
80
- "type": "string",
81
- "enum": [
82
- "notStarted",
83
- "inProgress",
84
- "testing",
85
- "launched"
86
- ],
87
- "description": "The status of this language's disciple making course."
76
+ "description": "The status of this language's disciple making course.",
77
+ "enum": ["notStarted", "inProgress", "testing", "launched"]
88
78
  },
89
79
  "endonym": {
90
- "type": "string",
80
+ "description": "The name of the language in its native language and script, e.g. \"Español\"",
91
81
  "pattern": "^.+$",
92
- "description": "The name of the language in its native language and script, e.g. \"Español\""
82
+ "type": "string"
93
83
  },
94
84
  "gdmcStatus": {
95
- "type": "string",
96
- "enum": [
97
- "notStarted",
98
- "inProgress",
99
- "testing",
100
- "launched"
101
- ],
102
- "description": "The status of this language's growing as a dmc sets."
85
+ "description": "The status of this language's growing as a dmc sets.",
86
+ "enum": ["notStarted", "inProgress", "testing", "launched"]
103
87
  },
104
88
  "givingId": {
105
- "type": "string",
106
- "description": "This is a designation id with FundraiseUp that will be tacked onto the end of waha's giving url. It's used to open waha's giving page and designate the donation to this language. It can be found in the big table of designation ids here: https://dashboard.fundraiseup.com/ABJRDUBH/settings/designations"
89
+ "description": "This is a designation id with FundraiseUp that will be tacked onto the end of waha's giving url. It's used to open waha's giving page and designate the donation to this language. It can be found in the big table of designation ids here: https://dashboard.fundraiseup.com/ABJRDUBH/settings/designations",
90
+ "type": "string"
107
91
  },
108
92
  "hideDonateButton": {
109
- "type": "boolean",
110
- "description": "Whether or not to hide the donate button in the app when this language is selected as the meet language."
93
+ "description": "Whether or not to hide the donate button in the app when this language is selected as the meet language.",
94
+ "type": "boolean"
111
95
  },
112
96
  "introBridge": {
113
- "type": "string",
114
- "description": "The language id of the language that will be used as the bridge language for the intro content."
97
+ "description": "The language id of the language that will be used as the bridge language for the intro content.",
98
+ "type": "string"
115
99
  },
116
100
  "likelyAppInterfacePair": {
117
- "type": "string",
118
- "description": "The language id of the language that is most likely to be used as the app interface language for this language."
101
+ "description": "The language id of the language that is most likely to be used as the app interface language for this language.",
102
+ "type": "string"
119
103
  },
120
104
  "mmsLanguageId": {
121
- "type": "string",
122
- "description": "Id of a supported MMS language for running forced alignment."
105
+ "description": "Id of a supported MMS language for running forced alignment.",
106
+ "type": "string"
123
107
  },
124
108
  "notes": {
125
- "type": "string",
126
- "description": "Any notes about this language that might be helpful for Waha team members."
109
+ "description": "Any notes about this language that might be helpful for Waha team members.",
110
+ "type": "string"
127
111
  },
128
112
  "pm": {
129
- "type": "string",
130
- "description": "The id of the project manager for this language. This is the person who is responsible for the language's content and progress."
113
+ "description": "The id of the project manager for this language. This is the person who is responsible for the language's content and progress.",
114
+ "type": "string"
131
115
  },
132
116
  "questionSource": {
133
- "type": "string",
134
- "enum": [
135
- "recorded",
136
- "mms",
137
- "elevenLabs",
138
- "unknown"
139
- ],
140
- "description": "The source for question audio generation for this language."
117
+ "description": "The source for question audio generation for this language.",
118
+ "enum": ["recorded", "mms", "elevenLabs", "unknown"]
141
119
  },
142
120
  "script": {
143
- "type": "string",
121
+ "description": "The script that a language uses. Each script has a specific font so that we can display all scripts correctly.",
144
122
  "enum": [
145
123
  "arabic",
146
124
  "bengali",
@@ -164,23 +142,22 @@
164
142
  "telugu",
165
143
  "thai",
166
144
  "uyghur"
167
- ],
168
- "description": "The script that a language uses. Each script has a specific font so that we can display all scripts correctly."
145
+ ]
169
146
  },
170
147
  "speakersPrimary": {
171
- "type": "number",
172
- "description": "The number of speakers of this language who speak it as their first language."
148
+ "description": "The number of speakers of this language who speak it as their first language.",
149
+ "type": "number"
173
150
  },
174
151
  "speakersSecondary": {
175
- "type": "number",
176
- "description": "The number of speakers of this language who speak it as a second language."
152
+ "description": "The number of speakers of this language who speak it as a second language.",
153
+ "type": "number"
177
154
  },
178
155
  "speakersTotal": {
179
- "type": "number",
180
- "description": "The total number of speakers of this language worldwide."
156
+ "description": "The total number of speakers of this language worldwide.",
157
+ "type": "number"
181
158
  },
182
159
  "specialThanks": {
183
- "type": "object",
160
+ "additionalProperties": false,
184
161
  "properties": {
185
162
  "imageUrl": {
186
163
  "type": "string"
@@ -192,23 +169,14 @@
192
169
  "type": "string"
193
170
  }
194
171
  },
195
- "required": [
196
- "text"
197
- ],
198
- "additionalProperties": false
172
+ "required": ["text"]
199
173
  },
200
174
  "status": {
201
- "type": "string",
202
- "enum": [
203
- "notStarted",
204
- "inProgress",
205
- "testing",
206
- "launched"
207
- ],
208
- "description": "The overall status of this language. Determines whether or not the language will show up in the app. Only language's marked `launched` will be selectable in Waha."
175
+ "description": "The overall status of this language. Determines whether or not the language will show up in the app. Only language's marked `launched` will be selectable in Waha.",
176
+ "enum": ["notStarted", "inProgress", "testing", "launched"]
209
177
  },
210
178
  "storeIdAndroid": {
211
- "type": "string",
179
+ "description": "The id of this language in the play store, if it's supported.\nAfrikaans:af\nAlbanian:sq\nAmharic:am\nArabic:ar\nArmenian:hy-AM\nAzerbaijani:az-AZ\nBangla:bn-BD\nBasque:eu-ES\nBelarusian:be\nBulgarian:bg\nBurmese:my-MM\nCatalan:ca\nChinese (Hong Kong):zh-HK\nChinese (Simplified):zh-CN\nChinese (Traditional):zh-TW\nCroatian:hr\nCzech:cs-CZ\nDanish:da-DK\nDutch:nl-NL\nEnglish (Australia):en-AU\nEnglish (Canada):en-CA\nEnglish (United Kingdom):en-GB\nEnglish:en-IN\nEnglish (US):en-US\nEnglish:en-SG\nEnglish:en-ZA\nEstonian:et\nFilipino:fil\nFinnish:fi-FI\nFrench (Canada):fr-CA\nFrench (France):fr-FR\nGalician:gl-ES\nGeorgian:ka-GE\nGerman:de-DE\nGreek:el-GR\nGujarati:gu\nHebrew:iw-IL\nHindi:hi-IN\nHungarian:hu-HU\nIcelandic:is-IS\nIndonesian:id\nItalian:it-IT\nJapanese:ja-JP\nKannada:kn-IN\nKazakh:kk\nKhmer:km-KH\nKorean:ko-KR\nKyrgyz:ky-KG\nLao:lo-LA\nLatvian:lv\nLithuanian:lt\nMacedonian:mk-MK\nMalay (Malaysia):ms-MY\nMalay:ms\nMalayalam:ml-IN\nMarathi:mr-IN\nMongolian:mn-MN\nNepali:ne-NP\nNorwegian:no-NO\nPersian:fa\nPersian:fa-AE\nPersian:fa-AF\nPersian:fa-IR\nPolish:pl-PL\nPortuguese (Brazil):pt-BR\nPortuguese (Portugal):pt-PT\nPunjabi:pa\nRomanian:ro\nRomansh:rm\nRussian:ru-RU\nSerbian:sr\nSinhala:si-LK\nSlovak:sk\nSlovenian:sl\nSpanish (Latin America):es-419\nSpanish (Spain):es-ES\nSpanish (United States):es-US\nSwahili:sw\nSwedish:sv-SE\nTamil:ta-IN\nTelugu:te-IN\nThai:th\nTurkish:tr-TR\nUkrainian:uk\nUrdu:ur\nVietnamese:vi\nZulu:zu",
212
180
  "enum": [
213
181
  "af",
214
182
  "sq",
@@ -297,11 +265,10 @@
297
265
  "ur",
298
266
  "vi",
299
267
  "zu"
300
- ],
301
- "description": "The id of this language in the play store, if it's supported.\nAfrikaans:af\nAlbanian:sq\nAmharic:am\nArabic:ar\nArmenian:hy-AM\nAzerbaijani:az-AZ\nBangla:bn-BD\nBasque:eu-ES\nBelarusian:be\nBulgarian:bg\nBurmese:my-MM\nCatalan:ca\nChinese (Hong Kong):zh-HK\nChinese (Simplified):zh-CN\nChinese (Traditional):zh-TW\nCroatian:hr\nCzech:cs-CZ\nDanish:da-DK\nDutch:nl-NL\nEnglish (Australia):en-AU\nEnglish (Canada):en-CA\nEnglish (United Kingdom):en-GB\nEnglish:en-IN\nEnglish (US):en-US\nEnglish:en-SG\nEnglish:en-ZA\nEstonian:et\nFilipino:fil\nFinnish:fi-FI\nFrench (Canada):fr-CA\nFrench (France):fr-FR\nGalician:gl-ES\nGeorgian:ka-GE\nGerman:de-DE\nGreek:el-GR\nGujarati:gu\nHebrew:iw-IL\nHindi:hi-IN\nHungarian:hu-HU\nIcelandic:is-IS\nIndonesian:id\nItalian:it-IT\nJapanese:ja-JP\nKannada:kn-IN\nKazakh:kk\nKhmer:km-KH\nKorean:ko-KR\nKyrgyz:ky-KG\nLao:lo-LA\nLatvian:lv\nLithuanian:lt\nMacedonian:mk-MK\nMalay (Malaysia):ms-MY\nMalay:ms\nMalayalam:ml-IN\nMarathi:mr-IN\nMongolian:mn-MN\nNepali:ne-NP\nNorwegian:no-NO\nPersian:fa\nPersian:fa-AE\nPersian:fa-AF\nPersian:fa-IR\nPolish:pl-PL\nPortuguese (Brazil):pt-BR\nPortuguese (Portugal):pt-PT\nPunjabi:pa\nRomanian:ro\nRomansh:rm\nRussian:ru-RU\nSerbian:sr\nSinhala:si-LK\nSlovak:sk\nSlovenian:sl\nSpanish (Latin America):es-419\nSpanish (Spain):es-ES\nSpanish (United States):es-US\nSwahili:sw\nSwedish:sv-SE\nTamil:ta-IN\nTelugu:te-IN\nThai:th\nTurkish:tr-TR\nUkrainian:uk\nUrdu:ur\nVietnamese:vi\nZulu:zu"
268
+ ]
302
269
  },
303
270
  "storeIdIos": {
304
- "type": "string",
271
+ "description": "The id of this language in the app store, if it's supported.\nArabic:ar-SA\nCatalan:ca\nChinese (Simplified):zh-Hans\nChinese (Traditional):zh-Hant\nCroatian:hr\nCzech:cs\nDanish:da\nDutch:nl-NL\nEnglish (Australia):en-AU\nEnglish (Canada):en-CA\nEnglish (U.K.):en-GB\nEnglish (U.S.):en-US\nFinnish:fi\nFrench:fr-FR\nFrench (Canada):fr-CA\nGerman:de-DE\nGreek:el\nHebrew:he\nHindi:hi\nHungarian:hu\nIndonesian:id\nItalian:it\nJapanese:ja\nKorean:ko\nMalay:ms\nNorwegian:no \nPolish:pl\nPortuguese (Brazil):pt-BR\nPortuguese (Portugal):pt-PT\nRomanian:ro\nRussian:ru\nSlovak:sk\nSpanish (Mexico):es-MX\nSpanish (Spain):es-ES\nSwedish:sv\nThai:th\nTurkish:tr\nUkrainian:uk\nVietnamese:vi",
305
272
  "enum": [
306
273
  "ar-SA",
307
274
  "ca",
@@ -342,80 +309,66 @@
342
309
  "vi",
343
310
  "zh-Hans",
344
311
  "zh-Hant"
345
- ],
346
- "description": "The id of this language in the app store, if it's supported.\nArabic:ar-SA\nCatalan:ca\nChinese (Simplified):zh-Hans\nChinese (Traditional):zh-Hant\nCroatian:hr\nCzech:cs\nDanish:da\nDutch:nl-NL\nEnglish (Australia):en-AU\nEnglish (Canada):en-CA\nEnglish (U.K.):en-GB\nEnglish (U.S.):en-US\nFinnish:fi\nFrench:fr-FR\nFrench (Canada):fr-CA\nGerman:de-DE\nGreek:el\nHebrew:he\nHindi:hi\nHungarian:hu\nIndonesian:id\nItalian:it\nJapanese:ja\nKorean:ko\nMalay:ms\nNorwegian:no \nPolish:pl\nPortuguese (Brazil):pt-BR\nPortuguese (Portugal):pt-PT\nRomanian:ro\nRussian:ru\nSlovak:sk\nSpanish (Mexico):es-MX\nSpanish (Spain):es-ES\nSwedish:sv\nThai:th\nTurkish:tr\nUkrainian:uk\nVietnamese:vi"
312
+ ]
347
313
  },
348
314
  "supportsSolarSpeakers": {
349
- "type": "boolean",
350
- "description": "Whether or not this language supports solar speakers."
315
+ "description": "Whether or not this language supports solar speakers.",
316
+ "type": "boolean"
351
317
  },
352
318
  "titles": {
353
- "type": "string",
354
- "description": "This is the language of the language's story set and lesson titles. Often, this will be the same as the language itself. Occasionally, this is not the case, such as all of the Arabic languages using standard Arabic as their titles language."
319
+ "description": "This is the language of the language's story set and lesson titles. Often, this will be the same as the language itself. Occasionally, this is not the case, such as all of the Arabic languages using standard Arabic as their titles language.",
320
+ "type": "string"
355
321
  },
356
322
  "unsupportedDbsSets": {
357
- "type": "array",
323
+ "description": "A list of foundations or topics (01.x or 02.x) set ids that are not supported in this language. See data/sets.json for a list of set ids.",
358
324
  "items": {
359
325
  "type": "string"
360
326
  },
361
- "description": "A list of foundations or topics (01.x or 02.x) set ids that are not supported in this language. See data/sets.json for a list of set ids."
327
+ "type": "array"
362
328
  },
363
329
  "uuid": {
364
- "type": "string",
365
- "description": "A unique identifier for this language. Can be generated at <https://www.uuidgenerator.net>."
330
+ "description": "A unique identifier for this language. Can be generated at <https://www.uuidgenerator.net>.",
331
+ "type": "string"
366
332
  },
367
333
  "videoBridgeLanguage": {
368
- "type": "string",
369
- "description": "If the language is not doing the dmc videos, or if the dmc videos are in progress, you can specify one or more bridge languages that will be used in the meantime. If a language does not have a launched dm course and if they don't specify any bridge languages, the training content will not be available in the app."
334
+ "description": "If the language is not doing the dmc videos, or if the dmc videos are in progress, you can specify one or more bridge languages that will be used in the meantime. If a language does not have a launched dm course and if they don't specify any bridge languages, the training content will not be available in the app.",
335
+ "type": "string"
370
336
  },
371
337
  "web": {
372
- "type": "object",
338
+ "additionalProperties": false,
373
339
  "properties": {
374
340
  "name": {
375
- "type": "string",
376
- "description": "The name of the language to display in the website's language switcher."
341
+ "description": "The name of the language to display in the website's language switcher.",
342
+ "type": "string"
377
343
  },
378
344
  "code": {
379
- "type": "string",
380
- "description": "The html standard code used to represent the language on the web. Allows the website to associate the user's browser language with this Waha language."
345
+ "description": "The html standard code used to represent the language on the web. Allows the website to associate the user's browser language with this Waha language.",
346
+ "type": "string"
381
347
  },
382
348
  "status": {
383
- "type": "string",
384
- "enum": [
385
- "notStarted",
386
- "inProgress",
387
- "testing",
388
- "launched"
389
- ],
390
- "description": "The status of this language's website localization on https://waha.app."
349
+ "description": "The status of this language's website localization on https://waha.app.",
350
+ "enum": ["notStarted", "inProgress", "testing", "launched"]
391
351
  }
392
352
  },
393
- "required": [
394
- "name",
395
- "code",
396
- "status"
397
- ],
398
- "additionalProperties": false
353
+ "required": ["code", "name", "status"],
354
+ "type": "object"
399
355
  }
400
356
  },
401
357
  "required": [
402
358
  "languageId",
359
+ "dmCourseStatus",
403
360
  "exonym",
404
- "appInterface",
361
+ "status",
362
+ "uuid",
363
+ "script",
405
364
  "curriculum",
406
- "dmCourseStatus",
365
+ "appInterface",
407
366
  "gdmcStatus",
408
- "questionSource",
409
- "script",
410
- "status",
411
- "uuid"
367
+ "questionSource"
412
368
  ],
413
- "additionalProperties": false
369
+ "type": "object"
414
370
  }
415
371
  }
416
372
  },
417
- "required": [
418
- "$schema",
419
- "data"
420
- ]
373
+ "required": ["$schema", "data"]
421
374
  }