@quenty/clienttranslator 14.19.3-canary.550.afa1b3b.0 → 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 +17 -1
- package/package.json +12 -12
- package/src/Shared/Conversion/LocalizationEntryParserUtils.lua +43 -15
- package/src/Shared/JSONTranslator.lua +15 -15
- package/src/Shared/Numbers/NumberLocalizationUtils.lua +11 -2
- package/src/Shared/Numbers/NumberLocalizationUtils.spec.lua +2 -1
- package/src/Shared/TranslatorService.lua +11 -11
- package/src/Shared/Utils/LocalizationServiceUtils.lua +1 -1
- package/src/Shared/Utils/TranslationKeyUtils.lua +10 -2
package/CHANGELOG.md
CHANGED
|
@@ -3,7 +3,23 @@
|
|
|
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.
|
|
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
|
+
|
|
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
|
|
9
25
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@quenty/clienttranslator",
|
|
3
|
-
"version": "14.19.
|
|
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.
|
|
29
|
-
"@quenty/instanceutils": "13.17.
|
|
30
|
-
"@quenty/loader": "10.8.
|
|
31
|
-
"@quenty/maid": "3.4.
|
|
32
|
-
"@quenty/promise": "10.10.
|
|
33
|
-
"@quenty/promisemaid": "5.10.
|
|
34
|
-
"@quenty/pseudolocalize": "3.4.
|
|
35
|
-
"@quenty/rx": "13.17.
|
|
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
36
|
"@quenty/string": "3.3.3",
|
|
37
|
-
"@quenty/table": "3.7.
|
|
38
|
-
"@quenty/valueobject": "13.17.
|
|
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": "
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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
|
|
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:
|
|
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:
|
|
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):
|
|
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
|
-
):
|
|
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):
|
|
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):
|
|
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):
|
|
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
|
-
):
|
|
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):
|
|
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):
|
|
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(
|
|
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(
|
|
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 =
|
|
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:
|
|
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:
|
|
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:
|
|
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):
|
|
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):
|
|
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):
|
|
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):
|
|
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
|
|
@@ -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
|
-
|
|
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
|