@quenty/clienttranslator 14.19.3 → 14.19.4-canary.11a5dcf.0

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.
package/CHANGELOG.md CHANGED
@@ -3,6 +3,22 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ ## [14.19.4-canary.11a5dcf.0](https://github.com/Quenty/NevermoreEngine/compare/@quenty/clienttranslator@14.19.3...@quenty/clienttranslator@14.19.4-canary.11a5dcf.0) (2025-05-10)
7
+
8
+
9
+ ### Bug Fixes
10
+
11
+ * Additional type checking updates ([05ba29a](https://github.com/Quenty/NevermoreEngine/commit/05ba29a03efc9f3feed74b34f1d9dfb237496214))
12
+
13
+
14
+ ### Features
15
+
16
+ * Add even more types ([b31717d](https://github.com/Quenty/NevermoreEngine/commit/b31717d8c9f7620c457f5018a2affa760a65334a))
17
+
18
+
19
+
20
+
21
+
6
22
  ## [14.19.3](https://github.com/Quenty/NevermoreEngine/compare/@quenty/clienttranslator@14.19.2...@quenty/clienttranslator@14.19.3) (2025-04-10)
7
23
 
8
24
  **Note:** Version bump only for package @quenty/clienttranslator
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@quenty/clienttranslator",
3
- "version": "14.19.3",
3
+ "version": "14.19.4-canary.11a5dcf.0",
4
4
  "description": "Gets local translator for player",
5
5
  "keywords": [
6
6
  "Roblox",
@@ -25,20 +25,20 @@
25
25
  "Quenty"
26
26
  ],
27
27
  "dependencies": {
28
- "@quenty/blend": "^12.18.3",
29
- "@quenty/instanceutils": "^13.17.3",
30
- "@quenty/loader": "^10.8.3",
31
- "@quenty/maid": "^3.4.3",
32
- "@quenty/promise": "^10.10.4",
33
- "@quenty/promisemaid": "^5.10.4",
34
- "@quenty/pseudolocalize": "^3.4.2",
35
- "@quenty/rx": "^13.17.3",
36
- "@quenty/string": "^3.3.3",
37
- "@quenty/table": "^3.7.4",
38
- "@quenty/valueobject": "^13.17.3"
28
+ "@quenty/blend": "12.18.4-canary.11a5dcf.0",
29
+ "@quenty/instanceutils": "13.17.4-canary.11a5dcf.0",
30
+ "@quenty/loader": "10.8.4-canary.11a5dcf.0",
31
+ "@quenty/maid": "3.4.4-canary.11a5dcf.0",
32
+ "@quenty/promise": "10.10.5-canary.11a5dcf.0",
33
+ "@quenty/promisemaid": "5.10.5-canary.11a5dcf.0",
34
+ "@quenty/pseudolocalize": "3.4.3-canary.11a5dcf.0",
35
+ "@quenty/rx": "13.17.4-canary.11a5dcf.0",
36
+ "@quenty/string": "3.3.3",
37
+ "@quenty/table": "3.7.5-canary.11a5dcf.0",
38
+ "@quenty/valueobject": "13.17.4-canary.11a5dcf.0"
39
39
  },
40
40
  "publishConfig": {
41
41
  "access": "public"
42
42
  },
43
- "gitHead": "b06c070ae91d5dab7bd8de6e290ad2caabb15d8f"
43
+ "gitHead": "11a5dcf7d4c7a0bfbf3337e97d30e8346ea09d3f"
44
44
  }
@@ -14,7 +14,7 @@ local PseudoLocalize = require("PseudoLocalize")
14
14
 
15
15
  local LocalizationEntryParserUtils = {}
16
16
 
17
- function LocalizationEntryParserUtils.decodeFromInstance(tableName, sourceLocaleId, folder)
17
+ function LocalizationEntryParserUtils.decodeFromInstance(tableName: string, sourceLocaleId: string, folder: Instance)
18
18
  assert(type(tableName) == "string", "Bad tableName")
19
19
  assert(typeof(folder) == "Instance", "Bad folder")
20
20
 
@@ -26,12 +26,26 @@ function LocalizationEntryParserUtils.decodeFromInstance(tableName, sourceLocale
26
26
  local localeId = LocalizationEntryParserUtils._parseLocaleFromName(descendant.Name)
27
27
  local decodedTable = HttpService:JSONDecode(descendant.Value)
28
28
 
29
- LocalizationEntryParserUtils._parseTableToResultsList(lookupTable, sourceLocaleId, localeId, baseKey, decodedTable, tableName)
29
+ LocalizationEntryParserUtils._parseTableToResultsList(
30
+ lookupTable,
31
+ sourceLocaleId,
32
+ localeId,
33
+ baseKey,
34
+ decodedTable,
35
+ tableName
36
+ )
30
37
  elseif descendant:IsA("ModuleScript") then
31
38
  local localeId = LocalizationEntryParserUtils._parseLocaleFromName(descendant.Name)
32
39
  local decodedTable = require(descendant)
33
40
 
34
- LocalizationEntryParserUtils._parseTableToResultsList(lookupTable, sourceLocaleId, localeId, baseKey, decodedTable, tableName)
41
+ LocalizationEntryParserUtils._parseTableToResultsList(
42
+ lookupTable,
43
+ sourceLocaleId,
44
+ localeId,
45
+ baseKey,
46
+ decodedTable,
47
+ tableName
48
+ )
35
49
  end
36
50
  end
37
51
 
@@ -42,7 +56,7 @@ function LocalizationEntryParserUtils.decodeFromInstance(tableName, sourceLocale
42
56
  return results
43
57
  end
44
58
 
45
- function LocalizationEntryParserUtils.decodeFromTable(tableName, localeId, dataTable)
59
+ function LocalizationEntryParserUtils.decodeFromTable(tableName: string, localeId: string, dataTable)
46
60
  assert(type(tableName) == "string", "Bad tableName")
47
61
  assert(type(localeId) == "string", "Bad localeId")
48
62
  assert(type(dataTable) == "table", "Bad dataTable")
@@ -66,15 +80,22 @@ function LocalizationEntryParserUtils.decodeFromTable(tableName, localeId, dataT
66
80
  return results
67
81
  end
68
82
 
69
- function LocalizationEntryParserUtils._parseLocaleFromName(name)
83
+ function LocalizationEntryParserUtils._parseLocaleFromName(name: string)
70
84
  if string.sub(name, -5) == ".json" then
71
- return string.sub(name, 1, #name-5)
85
+ return string.sub(name, 1, #name - 5)
72
86
  else
73
87
  return name
74
88
  end
75
89
  end
76
90
 
77
- function LocalizationEntryParserUtils._parseTableToResultsList(lookupTable, sourceLocaleId, localeId, baseKey, dataTable, tableName)
91
+ function LocalizationEntryParserUtils._parseTableToResultsList(
92
+ lookupTable,
93
+ sourceLocaleId: string,
94
+ localeId: string,
95
+ baseKey: string,
96
+ dataTable,
97
+ tableName: string
98
+ )
78
99
  assert(type(lookupTable) == "table", "Bad lookupTable")
79
100
  assert(type(sourceLocaleId) == "string", "Bad sourceLocaleId")
80
101
  assert(type(localeId) == "string", "Bad localeId")
@@ -85,20 +106,27 @@ function LocalizationEntryParserUtils._parseTableToResultsList(lookupTable, sour
85
106
  for index, text in dataTable do
86
107
  local key = baseKey .. index
87
108
  if type(text) == "table" then
88
- LocalizationEntryParserUtils._parseTableToResultsList(lookupTable, sourceLocaleId, localeId, key .. ".", text, tableName)
109
+ LocalizationEntryParserUtils._parseTableToResultsList(
110
+ lookupTable,
111
+ sourceLocaleId,
112
+ localeId,
113
+ key .. ".",
114
+ text,
115
+ tableName
116
+ )
89
117
  elseif type(text) == "string" then
90
118
  local found = lookupTable[key]
91
119
  if found then
92
120
  found.Values[localeId] = text
93
121
  else
94
122
  found = {
95
- Example = text;
96
- Key = key;
97
- Context = string.format("[TEMP] - Generated from %s with key %s", tableName, key);
98
- Source = text; -- Tempt!
123
+ Example = text,
124
+ Key = key,
125
+ Context = string.format("[TEMP] - Generated from %s with key %s", tableName, key),
126
+ Source = text, -- Tempt!
99
127
  Values = {
100
- [localeId] = text;
101
- };
128
+ [localeId] = text,
129
+ },
102
130
  }
103
131
 
104
132
  lookupTable[key] = found
@@ -121,4 +149,4 @@ function LocalizationEntryParserUtils._parseTableToResultsList(lookupTable, sour
121
149
  end
122
150
  end
123
151
 
124
- return LocalizationEntryParserUtils
152
+ return LocalizationEntryParserUtils
@@ -21,16 +21,16 @@ local RunService = game:GetService("RunService")
21
21
  local Blend = require("Blend")
22
22
  local LocalizationEntryParserUtils = require("LocalizationEntryParserUtils")
23
23
  local Maid = require("Maid")
24
+ local NumberLocalizationUtils = require("NumberLocalizationUtils")
25
+ local Observable = require("Observable")
26
+ local Promise = require("Promise")
24
27
  local PseudoLocalize = require("PseudoLocalize")
25
28
  local Rx = require("Rx")
26
29
  local RxInstanceUtils = require("RxInstanceUtils")
30
+ local ServiceBag = require("ServiceBag")
27
31
  local TranslationKeyUtils = require("TranslationKeyUtils")
28
32
  local TranslatorService = require("TranslatorService")
29
33
  local ValueObject = require("ValueObject")
30
- local NumberLocalizationUtils = require("NumberLocalizationUtils")
31
- local _ServiceBag = require("ServiceBag")
32
- local _Observable = require("Observable")
33
- local _Promise = require("Promise")
34
34
 
35
35
  local JSONTranslator = {}
36
36
  JSONTranslator.ClassName = "JSONTranslator"
@@ -40,7 +40,7 @@ JSONTranslator.__index = JSONTranslator
40
40
  export type JSONTranslator = typeof(setmetatable(
41
41
  {} :: {
42
42
  _maid: Maid.Maid,
43
- _serviceBag: _ServiceBag.ServiceBag,
43
+ _serviceBag: ServiceBag.ServiceBag,
44
44
  _translatorService: TranslatorService.TranslatorService,
45
45
  _translatorName: string,
46
46
  _entries: { [string]: any },
@@ -102,7 +102,7 @@ function JSONTranslator.new(translatorName: string, localeId: string, dataTable)
102
102
  return self :: any
103
103
  end
104
104
 
105
- function JSONTranslator.Init(self: JSONTranslator, serviceBag: _ServiceBag.ServiceBag)
105
+ function JSONTranslator.Init(self: JSONTranslator, serviceBag: ServiceBag.ServiceBag)
106
106
  self._serviceBag = assert(serviceBag, "No serviceBag")
107
107
  self._translatorService = self._serviceBag:GetService(TranslatorService) :: any
108
108
 
@@ -130,7 +130,7 @@ function JSONTranslator.Init(self: JSONTranslator, serviceBag: _ServiceBag.Servi
130
130
  )
131
131
  end
132
132
 
133
- function JSONTranslator.ObserveNumber(self: JSONTranslator, number: number): _Observable.Observable<string>
133
+ function JSONTranslator.ObserveNumber(self: JSONTranslator, number: number): Observable.Observable<string>
134
134
  return Rx.combineLatest({
135
135
  localeId = self:ObserveLocaleId(),
136
136
  number = number,
@@ -174,7 +174,7 @@ function JSONTranslator.ObserveFormatByKey(
174
174
  self: JSONTranslator,
175
175
  translationKey: string,
176
176
  translationArgs
177
- ): _Observable.Observable<string>
177
+ ): Observable.Observable<string>
178
178
  assert((self :: any) ~= JSONTranslator, "Construct a new version of this class to use it")
179
179
  assert(type(translationKey) == "string", "Key must be a string")
180
180
 
@@ -252,7 +252,7 @@ end
252
252
  Returns a promise that will resolve once the Roblox translator is loaded from the cloud.
253
253
  @return Promise<Translator>
254
254
  ]=]
255
- function JSONTranslator.PromiseTranslator(self: JSONTranslator): _Promise.Promise<Translator>
255
+ function JSONTranslator.PromiseTranslator(self: JSONTranslator): Promise.Promise<Translator>
256
256
  return self._translatorService:PromiseTranslator()
257
257
  end
258
258
 
@@ -261,7 +261,7 @@ end
261
261
 
262
262
  @return Observable<Translator>
263
263
  ]=]
264
- function JSONTranslator.ObserveTranslator(self: JSONTranslator): _Observable.Observable<Translator>
264
+ function JSONTranslator.ObserveTranslator(self: JSONTranslator): Observable.Observable<Translator>
265
265
  return self._translatorService:ObserveTranslator()
266
266
  end
267
267
 
@@ -270,7 +270,7 @@ end
270
270
 
271
271
  @return Observable<string>
272
272
  ]=]
273
- function JSONTranslator.ObserveLocaleId(self: JSONTranslator): _Observable.Observable<string>
273
+ function JSONTranslator.ObserveLocaleId(self: JSONTranslator): Observable.Observable<string>
274
274
  return self._translatorService:ObserveLocaleId()
275
275
  end
276
276
 
@@ -325,7 +325,7 @@ function JSONTranslator.ObserveTranslation(
325
325
  prefix: string,
326
326
  text: string,
327
327
  translationArgs
328
- ): _Observable.Observable<string>
328
+ ): Observable.Observable<string>
329
329
  assert(type(prefix) == "string", "Bad text")
330
330
  assert(type(text) == "string", "Bad text")
331
331
 
@@ -374,7 +374,7 @@ end
374
374
  Returns a promise that will resolve once the translator is loaded from the cloud.
375
375
  @return Promise
376
376
  ]=]
377
- function JSONTranslator.PromiseLoaded(self: JSONTranslator): _Promise.Promise<()>
377
+ function JSONTranslator.PromiseLoaded(self: JSONTranslator): Promise.Promise<()>
378
378
  return self:PromiseTranslator()
379
379
  end
380
380
 
@@ -402,7 +402,7 @@ function JSONTranslator.FormatByKey(self: JSONTranslator, translationKey: string
402
402
  return self:_doTranslation(translator, translationKey, args)
403
403
  end
404
404
 
405
- function JSONTranslator._observeArgs(_self: JSONTranslator, translationArgs): _Observable.Observable<any>
405
+ function JSONTranslator._observeArgs(_self: JSONTranslator, translationArgs): Observable.Observable<any>
406
406
  if translationArgs == nil then
407
407
  return Rx.of(nil)
408
408
  end
@@ -475,4 +475,4 @@ function JSONTranslator.Destroy(self: JSONTranslator)
475
475
  setmetatable(self :: any, nil)
476
476
  end
477
477
 
478
- return JSONTranslator
478
+ return JSONTranslator
@@ -227,7 +227,11 @@ local function addGroupDelimiters(numberStr, delimiter: string): string
227
227
  return formatted
228
228
  end
229
229
 
230
- local function findDenominationEntry(localeInfo, number: number, roundingBehaviourType)
230
+ local function findDenominationEntry(
231
+ localeInfo,
232
+ number: number,
233
+ roundingBehaviourType: RoundingBehaviourTypes.RoundingBehaviourType
234
+ )
231
235
  local denominationEntry = localeInfo[1] -- Default to base denominations
232
236
  local absOfNumber = math.abs(number)
233
237
  for i = #localeInfo, 2, -1 do
@@ -283,7 +287,12 @@ end
283
287
  @param numSignificantDigits number?
284
288
  @return string
285
289
  ]=]
286
- function NumberLocalizationUtils.abbreviate(number: number, locale: string, roundingBehaviourType: RoundingBehaviourTypes.RoundingBehaviourType?, numSignificantDigits: number?): string
290
+ function NumberLocalizationUtils.abbreviate(
291
+ number: number,
292
+ locale: string,
293
+ roundingBehaviourType: RoundingBehaviourTypes.RoundingBehaviourType?,
294
+ numSignificantDigits: number?
295
+ ): string
287
296
  assert(type(number) == "number", "Bad number")
288
297
  local roundingBehavior = roundingBehaviourType or RoundingBehaviourTypes.ROUND_TO_CLOSEST
289
298
  local significantDigits = numSignificantDigits or 3
@@ -1,4 +1,5 @@
1
- local require = require(game:GetService("ServerScriptService"):FindFirstChild("LoaderUtils", true).Parent).bootstrapStory(script)
1
+ local require =
2
+ require(game:GetService("ServerScriptService"):FindFirstChild("LoaderUtils", true).Parent).bootstrapStory(script)
2
3
 
3
4
  local Jest = require("Jest")
4
5
  local NumberLocalizationUtils = require("NumberLocalizationUtils")
@@ -7,18 +7,18 @@
7
7
 
8
8
  local require = require(script.Parent.loader).load(script)
9
9
 
10
+ local LocalizationService = game:GetService("LocalizationService")
10
11
  local Players = game:GetService("Players")
11
12
  local RunService = game:GetService("RunService")
12
- local LocalizationService = game:GetService("LocalizationService")
13
13
 
14
14
  local LocalizationServiceUtils = require("LocalizationServiceUtils")
15
15
  local Maid = require("Maid")
16
+ local Observable = require("Observable")
16
17
  local Promise = require("Promise")
17
18
  local Rx = require("Rx")
18
19
  local RxInstanceUtils = require("RxInstanceUtils")
20
+ local ServiceBag = require("ServiceBag")
19
21
  local ValueObject = require("ValueObject")
20
- local _Observable = require("Observable")
21
- local _ServiceBag = require("ServiceBag")
22
22
 
23
23
  local TranslatorService = {}
24
24
  TranslatorService.ServiceName = "TranslatorService"
@@ -26,18 +26,18 @@ TranslatorService.ServiceName = "TranslatorService"
26
26
  export type TranslatorService = typeof(setmetatable(
27
27
  {} :: {
28
28
  _maid: Maid.Maid,
29
- _serviceBag: _ServiceBag.ServiceBag,
29
+ _serviceBag: ServiceBag.ServiceBag,
30
30
  _translator: ValueObject.ValueObject<Translator>,
31
31
  _localizationTable: LocalizationTable?,
32
32
  _pendingTranslatorPromise: Promise.Promise<Translator>?,
33
33
  _localeIdValue: ValueObject.ValueObject<string>?,
34
- _loadedPlayerObservable: _Observable.Observable<Player>?,
34
+ _loadedPlayerObservable: Observable.Observable<Player>?,
35
35
  _loadedPlayer: Player?,
36
36
  },
37
37
  {} :: typeof({ __index = TranslatorService })
38
38
  ))
39
39
 
40
- function TranslatorService.Init(self: TranslatorService, serviceBag: _ServiceBag.ServiceBag)
40
+ function TranslatorService.Init(self: TranslatorService, serviceBag: ServiceBag.ServiceBag)
41
41
  assert(not self._serviceBag, "Already initialized")
42
42
  self._serviceBag = assert(serviceBag, "No serviceBag")
43
43
  self._maid = Maid.new()
@@ -77,7 +77,7 @@ end
77
77
 
78
78
  @return Observable<Translator>
79
79
  ]=]
80
- function TranslatorService.ObserveTranslator(self: TranslatorService): _Observable.Observable<Translator>
80
+ function TranslatorService.ObserveTranslator(self: TranslatorService): Observable.Observable<Translator>
81
81
  return self._translator:Observe()
82
82
  end
83
83
 
@@ -135,7 +135,7 @@ end
135
135
 
136
136
  @return Observable<string>
137
137
  ]=]
138
- function TranslatorService.ObserveLocaleId(self: TranslatorService): _Observable.Observable<string>
138
+ function TranslatorService.ObserveLocaleId(self: TranslatorService): Observable.Observable<string>
139
139
  if self._localeIdValue then
140
140
  return self._localeIdValue:Observe()
141
141
  end
@@ -185,7 +185,7 @@ function TranslatorService.GetLocaleId(self: TranslatorService): string
185
185
  end
186
186
  end
187
187
 
188
- function TranslatorService._observeTranslatorImpl(self: TranslatorService): _Observable.Observable<Translator>
188
+ function TranslatorService._observeTranslatorImpl(self: TranslatorService): Observable.Observable<Translator>
189
189
  return self:_observeLoadedPlayer():Pipe({
190
190
  Rx.switchMap(function(loadedPlayer: Player): any
191
191
  if loadedPlayer then
@@ -202,7 +202,7 @@ function TranslatorService._observeTranslatorImpl(self: TranslatorService): _Obs
202
202
  }) :: any
203
203
  end
204
204
 
205
- function TranslatorService._observeLoadedPlayer(self: TranslatorService): _Observable.Observable<Player>
205
+ function TranslatorService._observeLoadedPlayer(self: TranslatorService): Observable.Observable<Player>
206
206
  if self._loadedPlayerObservable then
207
207
  return self._loadedPlayerObservable
208
208
  end
@@ -235,4 +235,4 @@ function TranslatorService.Destroy(self: TranslatorService)
235
235
  self._maid:DoCleaning()
236
236
  end
237
237
 
238
- return TranslatorService
238
+ return TranslatorService
@@ -74,4 +74,4 @@ function LocalizationServiceUtils.promisePlayerTranslator(player: Player)
74
74
  end)
75
75
  end
76
76
 
77
- return LocalizationServiceUtils
77
+ return LocalizationServiceUtils
@@ -1,3 +1,4 @@
1
+ --!strict
1
2
  --[=[
2
3
  @class TranslationKeyUtils
3
4
  ]=]
@@ -8,11 +9,18 @@ local String = require("String")
8
9
 
9
10
  local TranslationKeyUtils = {}
10
11
 
11
- function TranslationKeyUtils.getTranslationKey(prefix, text)
12
+ --[=[
13
+ Converts a string to a translation key in a fixed format, with a maximum length
14
+
15
+ @param prefix string
16
+ @param text string
17
+ @return string
18
+ ]=]
19
+ function TranslationKeyUtils.getTranslationKey(prefix: string, text: string): string
12
20
  local firstWordsBeginning = string.sub(string.gsub(text, "%s", ""), 1, 20)
13
21
  local firstWords = String.toLowerCamelCase(firstWordsBeginning)
14
22
 
15
23
  return prefix .. "." .. firstWords
16
24
  end
17
25
 
18
- return TranslationKeyUtils
26
+ return TranslationKeyUtils