@prosopo/locale 2.1.1

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 (56) hide show
  1. package/README.md +1 -0
  2. package/coverage/base.css +224 -0
  3. package/coverage/block-navigation.js +87 -0
  4. package/coverage/clover.xml +6 -0
  5. package/coverage/coverage-final.json +1 -0
  6. package/coverage/favicon.png +0 -0
  7. package/coverage/index.html +101 -0
  8. package/coverage/prettify.css +1 -0
  9. package/coverage/prettify.js +2 -0
  10. package/coverage/sort-arrow-sprite.png +0 -0
  11. package/coverage/sorter.js +196 -0
  12. package/dist/cjs/index.cjs +14 -0
  13. package/dist/cjs/locales/en.json.cjs +840 -0
  14. package/dist/cjs/locales/es.json.cjs +811 -0
  15. package/dist/cjs/locales/pt-BR.json.cjs +811 -0
  16. package/dist/cjs/locales/pt.json.cjs +811 -0
  17. package/dist/cjs/node/i18nBackend.cjs +13 -0
  18. package/dist/cjs/node/i18nMiddleware.cjs +8 -0
  19. package/dist/cjs/node/index.cjs +4 -0
  20. package/dist/cjs/translations.cjs +16 -0
  21. package/dist/cjs/util.cjs +29 -0
  22. package/dist/index.d.ts +5 -0
  23. package/dist/index.d.ts.map +1 -0
  24. package/dist/index.js +5 -0
  25. package/dist/index.js.map +1 -0
  26. package/dist/locales/en.json +409 -0
  27. package/dist/locales/es.json +398 -0
  28. package/dist/locales/pt-BR.json +398 -0
  29. package/dist/locales/pt.json +398 -0
  30. package/dist/node/i18nBackend.d.ts +3 -0
  31. package/dist/node/i18nBackend.d.ts.map +1 -0
  32. package/dist/node/i18nBackend.js +16 -0
  33. package/dist/node/i18nBackend.js.map +1 -0
  34. package/dist/node/i18nMiddleware.d.ts +4 -0
  35. package/dist/node/i18nMiddleware.d.ts.map +1 -0
  36. package/dist/node/i18nMiddleware.js +7 -0
  37. package/dist/node/i18nMiddleware.js.map +1 -0
  38. package/dist/node/index.d.ts +2 -0
  39. package/dist/node/index.d.ts.map +1 -0
  40. package/dist/node/index.js +2 -0
  41. package/dist/node/index.js.map +1 -0
  42. package/dist/tests/locales.unit.test.d.ts +2 -0
  43. package/dist/tests/locales.unit.test.d.ts.map +1 -0
  44. package/dist/tests/locales.unit.test.js +40 -0
  45. package/dist/tests/locales.unit.test.js.map +1 -0
  46. package/dist/translations.d.ts +1616 -0
  47. package/dist/translations.d.ts.map +1 -0
  48. package/dist/translations.js +13 -0
  49. package/dist/translations.js.map +1 -0
  50. package/dist/util.d.ts +5 -0
  51. package/dist/util.d.ts.map +1 -0
  52. package/dist/util.js +24 -0
  53. package/dist/util.js.map +1 -0
  54. package/package.json +56 -0
  55. package/vite.cjs.config.ts +20 -0
  56. package/vite.test.config.ts +33 -0
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ const i18n = require("i18next");
3
+ const Backend = require("i18next-http-backend");
4
+ const i18nextHttpMiddleware = require("i18next-http-middleware");
5
+ const translations = require("../translations.cjs");
6
+ const commonOptions = {
7
+ debug: false,
8
+ fallbackLng: "en",
9
+ resources: translations.translations
10
+ };
11
+ const nodeOptions = {};
12
+ i18n.use(new Backend(void 0, { reloadInterval: false })).use(i18nextHttpMiddleware.LanguageDetector).init({ ...commonOptions, ...nodeOptions });
13
+ module.exports = i18n;
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ const i18nextHttpMiddleware = require("i18next-http-middleware");
3
+ require("./i18nBackend.cjs");
4
+ const i18n = require("i18next");
5
+ function i18nMiddleware(options) {
6
+ return i18nextHttpMiddleware.handle(i18n, { ...options });
7
+ }
8
+ module.exports = i18nMiddleware;
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const i18nMiddleware = require("./i18nMiddleware.cjs");
4
+ exports.i18nMiddleware = i18nMiddleware;
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const z = require("zod");
4
+ const en = require("./locales/en.json.cjs");
5
+ const es = require("./locales/es.json.cjs");
6
+ const ptBR = require("./locales/pt-BR.json.cjs");
7
+ const pt = require("./locales/pt.json.cjs");
8
+ const LanguageSchema = z.enum(["en", "es", "pt", "pt-BR"]);
9
+ const translations = {
10
+ [LanguageSchema.enum.en]: { translation: en.default },
11
+ [LanguageSchema.enum.es]: { translation: es.default },
12
+ [LanguageSchema.enum.pt]: { translation: pt.default },
13
+ [LanguageSchema.enum["pt-BR"]]: { translation: ptBR.default }
14
+ };
15
+ exports.LanguageSchema = LanguageSchema;
16
+ exports.translations = translations;
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const z = require("zod");
4
+ const en = require("./locales/en.json.cjs");
5
+ function isClientSide() {
6
+ return !!(typeof window !== "undefined" && window.document && window.document.createElement);
7
+ }
8
+ function getLeafFieldPath(obj) {
9
+ if (typeof obj === "string") {
10
+ return [];
11
+ }
12
+ return Object.keys(obj).reduce((arr, key) => {
13
+ const value = obj[key];
14
+ if (value === void 0) {
15
+ throw new Error(`Undefined value for key ${key}`);
16
+ }
17
+ const children = getLeafFieldPath(value);
18
+ return arr.concat(
19
+ children.map((child) => {
20
+ return `${key}.${child}`;
21
+ })
22
+ );
23
+ }, []);
24
+ }
25
+ const TranslationKeysSchema = z.z.enum(
26
+ getLeafFieldPath(en.default)
27
+ );
28
+ exports.TranslationKeysSchema = TranslationKeysSchema;
29
+ exports.isClientSide = isClientSide;
@@ -0,0 +1,5 @@
1
+ export { default as i18n } from "./node/i18nBackend.js";
2
+ export * from "./util.js";
3
+ export * from "./node/index.js";
4
+ export * from "./translations.js";
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,uBAAuB,CAAC;AACxD,cAAc,WAAW,CAAC;AAC1B,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,5 @@
1
+ export { default as i18n } from "./node/i18nBackend.js";
2
+ export * from "./util.js";
3
+ export * from "./node/index.js";
4
+ export * from "./translations.js";
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,uBAAuB,CAAC;AACxD,cAAc,WAAW,CAAC;AAC1B,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC"}
@@ -0,0 +1,409 @@
1
+ {
2
+ "ACCOUNT": {
3
+ "NO_POLKADOT_EXTENSION": "Polkadot extension not found"
4
+ },
5
+ "WIDGET": {
6
+ "SELECT_ALL": "Select all containing the following",
7
+ "IF_NONE_CLICK_NEXT": "If there are none, click Next",
8
+ "NEXT": "Next",
9
+ "SUBMIT": "Submit",
10
+ "CANCEL": "Cancel",
11
+ "I_AM_HUMAN": "I am human",
12
+ "NO_ACCOUNTS_FOUND": "No accounts found",
13
+ "ACCOUNT_NOT_FOUND": "Account not found",
14
+ "NO_EXTENSION_FOUND": "No extension found"
15
+ },
16
+ "GENERAL": {
17
+ "JSON_LOAD_FAILED": "Failed to load JSON file",
18
+ "MNEMONIC_UNDEFINED": "Mnemonic Undefined. Please set the mnemonic in environment variables",
19
+ "NO_MNEMONIC_OR_SEED": "No mnemonic or seed provided",
20
+ "CANT_FIND_KEYRINGPAIR": "Can't find the keyringpair for {{address}}",
21
+ "ENVIRONMENT_NOT_READY": "Environment not ready",
22
+ "INVALID_SIGNATURE": "Invalid signature",
23
+ "NOT_IMPLEMENTED": "Not implemented",
24
+ "SITE_KEY_MISSING": "SITE KEY missing",
25
+ "ACCOUNT_NOT_FOUND": "Account not found",
26
+ "INVALID_TIMESTAMP": "Invalid timestamp"
27
+ },
28
+ "CONTRACT": {
29
+ "INVALID_METHOD": "Invalid contract method",
30
+ "TX_ERROR": "Error making tx",
31
+ "INVALID_ADDRESS": "Failed to encode invalid address",
32
+ "INVALID_STORAGE_NAME": "Failed to find given storage name",
33
+ "CAPTCHA_SOLUTION_COMMITMENT_DOES_NOT_EXIST": "Captcha solution commitment does not exist",
34
+ "CONTRACT_UNDEFINED": "Contract undefined",
35
+ "SIGNER_UNDEFINED": "Signer undefined",
36
+ "CANNOT_FIND_KEYPAIR": "Cannot find keypair",
37
+ "INTERRUPTED_EVENT": "Event interrupted",
38
+ "TOO_MANY_CALLS": "Too many calls",
39
+ "UNKNOWN_ERROR": "Unknown error",
40
+ "CHAIN_DECIMALS_UNDEFINED": "Chain decimals are not defined",
41
+ "INVALID_DATA_FORMAT": "Invalid data format",
42
+ "TX_QUEUE_ERROR": "Error in Transaction Queue",
43
+ "DISPATCH_ERROR": "Error dispatching transaction"
44
+ },
45
+ "CONFIG": {
46
+ "UNKNOWN_ENVIRONMENT": "Unknown environment requested",
47
+ "INVALID_CAPTCHA_NUMBER": "Please configure captchas configurations correctly",
48
+ "INVALID_LOG_LEVEL": "Invalid log level",
49
+ "INVALID_PACKAGE_DIR": "Invalid package directory"
50
+ },
51
+ "DATASET": {
52
+ "DATASET_PARSE_ERROR": "Error parsing dataset",
53
+ "SOLUTION_PARSE_ERROR": "Error parsing dataset",
54
+ "HASH_ERROR": "Error hashing dataset",
55
+ "DATASET_ID_UNDEFINED": "Dataset id undefined",
56
+ "NOT_ENOUGH_LABELS": "Not enough labels",
57
+ "NOT_ENOUGH_IMAGES": "Not enough images",
58
+ "CAPTCHAS_COUNT_LESS_THAN_CONFIGURED": "Number of captchas in dataset is less than configured number of captchas",
59
+ "SOLUTIONS_COUNT_LESS_THAN_CONFIGURED": "Number of solutions in dataset is less than configured number of solutions",
60
+ "DUPLICATE_IMAGE": "duplicate image detected",
61
+ "MERKLE_ERROR": "Error creating merkle tree"
62
+ },
63
+ "DATABASE": {
64
+ "DATABASE_IMPORT_FAILED": "Failed to import database engine",
65
+ "DATABASE_UNDEFINED": "Database client is not connected",
66
+ "DATABASE_HOST_UNDEFINED": "Database host address is not defined",
67
+ "DATASET_LOAD_FAILED": "Data set load failed",
68
+ "DATASET_GET_FAILED": "Failed to get dataset",
69
+ "CAPTCHA_GET_FAILED": "Failed to get captcha",
70
+ "CAPTCHA_UPDATE_FAILED": "Failed to update captcha",
71
+ "IMAGE_GET_FAILED": "Failed to get image",
72
+ "PENDING_RECORD_NOT_FOUND": "No pending record found",
73
+ "INVALID_HASH": "Invalid hash",
74
+ "SOLUTION_GET_FAILED": "Failed to get solution",
75
+ "DATASET_WITH_SOLUTIONS_GET_FAILED": "No datasets found with required number of solutions",
76
+ "SOLUTION_APPROVE_FAILED": "Failed to approve solution",
77
+ "SOLUTION_FLAG_FAILED": "Failed to flag solution as processed",
78
+ "TABLES_UNDEFINED": "Tables undefined",
79
+ "CONNECTION_UNDEFINED": "Connection undefined",
80
+ "COMMITMENT_FLAG_FAILED": "Failed to flag commitment as processed"
81
+ },
82
+ "CAPTCHA": {
83
+ "PARSE_ERROR": "Error parsing captcha",
84
+ "INVALID_CAPTCHA_ID": "Invalid captcha id",
85
+ "INVALID_ITEM_FORMAT": "Only image and text item types allowed",
86
+ "INVALID_SOLUTION_TYPE": "Invalid solution type",
87
+ "INVALID_ITEM_HASH": "Invalid item hash",
88
+ "DIFFERENT_DATASET_IDS": "Dataset ids do not match",
89
+ "INVALID_TIMESTAMP": "Invalid timestamp",
90
+ "ID_MISMATCH": "captcha id mismatch",
91
+ "MISSING_ITEM_HASH": "missing item hash",
92
+ "INVALID_CAPTCHA_CHALLENGE": "Invalid captcha challenge",
93
+ "DAPP_USER_SOLUTION_NOT_FOUND": "Dapp user solution not found",
94
+ "NO_CAPTCHA": "No captcha found",
95
+ "INVALID_TOKEN": "Invalid token",
96
+ "INVALID_SOLUTION": "Invalid solution"
97
+ },
98
+ "API": {
99
+ "CAPTCHA_FAILED": "You answered one or more captchas incorrectly. Please try again",
100
+ "CAPTCHA_PASSED": "You correctly answered the captchas",
101
+ "BAD_REQUEST": "BadRequest",
102
+ "USER_VERIFIED": "User verified",
103
+ "USER_NOT_VERIFIED": "User not verified",
104
+ "USER_NOT_VERIFIED_TIME_EXPIRED": "User not verified. Captcha solution has expired.",
105
+ "USER_NOT_VERIFIED_NO_SOLUTION": "User not verified. No captcha solution found.",
106
+ "USER_ALREADY_VERIFIED": "This solution has already been verified. User should complete a new captcha.",
107
+ "UNKNOWN": "Unknown API error",
108
+ "SITE_KEY_NOT_REGISTERED": "Site key not registered"
109
+ },
110
+ "CLI": {
111
+ "PARAMETER_ERROR": "Invalid parameter"
112
+ },
113
+ "DEVELOPER": {
114
+ "PROSOPO_SITE_KEY_MISSING": "PROSOPO_SITE_KEY is not set in .env file.",
115
+ "PROVIDER_NO_CAPTCHA": "No captchas returned from provider",
116
+ "MISSING_PROVIDER_PAIR": "Missing provider pair",
117
+ "MISSING_ENV_VARIABLE": "Missing environment variable",
118
+ "GENERAL": "General Dev Error, see context",
119
+ "MISSING_SECRET_KEY": "Missing secret key",
120
+ "KEY_ERROR": "Key error",
121
+ "METHOD_NOT_IMPLEMENTED": "Method not implemented"
122
+ },
123
+ "FS": {
124
+ "FILE_NOT_FOUND": "File not found",
125
+ "FILE_ALREADY_EXISTS": "File already exists",
126
+ "INVALID_DIR_FORMAT": "Invalid directory format"
127
+ },
128
+ "bird": "bird",
129
+ "bus": "bus",
130
+ "car": "car",
131
+ "cat": "cat",
132
+ "deer": "deer",
133
+ "dog": "dog",
134
+ "horse": "horse",
135
+ "plane": "plane",
136
+ "train": "train",
137
+ "animals": "animals",
138
+ "antelope": "antelope",
139
+ "backpack": "backpack",
140
+ "badger": "badger",
141
+ "baseball-bat": "baseball-bat",
142
+ "baseball-glove": "baseball-glove",
143
+ "basketball-hoop": "basketball-hoop",
144
+ "bat": "bat",
145
+ "bathtub": "bathtub",
146
+ "bear": "bear",
147
+ "bee": "bee",
148
+ "beer-mug": "beer-mug",
149
+ "beetle": "beetle",
150
+ "billiards": "billiards",
151
+ "binoculars": "binoculars",
152
+ "birdbath": "birdbath",
153
+ "bison": "bison",
154
+ "blimp": "blimp",
155
+ "boar": "boar",
156
+ "bonsai-tree": "bonsai-tree",
157
+ "boom-box": "boom-box",
158
+ "bowling-ball": "bowling-ball",
159
+ "bowling-pin": "bowling-pin",
160
+ "boxing-glove": "boxing-glove",
161
+ "breadmaker": "breadmaker",
162
+ "bulldozer": "bulldozer",
163
+ "butterfly": "butterfly",
164
+ "cactus": "cactus",
165
+ "cake": "cake",
166
+ "calculator": "calculator",
167
+ "camel": "camel",
168
+ "canoe": "canoe",
169
+ "car-tire": "car-tire",
170
+ "caterpillar": "caterpillar",
171
+ "cd": "cd",
172
+ "cereal-box": "cereal-box",
173
+ "chandelier": "chandelier",
174
+ "chess-board": "chess-board",
175
+ "chimpanzee": "chimpanzee",
176
+ "chopsticks": "chopsticks",
177
+ "cockroach": "cockroach",
178
+ "coffin": "coffin",
179
+ "coin": "coin",
180
+ "comet": "comet",
181
+ "computer-keyboard": "computer-keyboard",
182
+ "computer-monitor": "computer-monitor",
183
+ "computer-mouse": "computer-mouse",
184
+ "conch": "conch",
185
+ "cormorant": "cormorant",
186
+ "covered-wagon": "covered-wagon",
187
+ "cow": "cow",
188
+ "cowboy-hat": "cowboy-hat",
189
+ "coyote": "coyote",
190
+ "crab": "crab",
191
+ "crow": "crow",
192
+ "desk-globe": "desk-globe",
193
+ "diamond-ring": "diamond-ring",
194
+ "dice": "dice",
195
+ "dolphin": "dolphin",
196
+ "donkey": "donkey",
197
+ "doorknob": "doorknob",
198
+ "dragonfly": "dragonfly",
199
+ "drinking-straw": "drinking-straw",
200
+ "duck": "duck",
201
+ "dumb-bell": "dumb-bell",
202
+ "eagle": "eagle",
203
+ "eiffel-tower": "eiffel-tower",
204
+ "electric-guitar": "electric-guitar",
205
+ "elephant": "elephant",
206
+ "elk": "elk",
207
+ "eyeglasses": "eyeglasses",
208
+ "fern": "fern",
209
+ "fire-extinguisher": "fire-extinguisher",
210
+ "fire-hydrant": "fire-hydrant",
211
+ "fire-truck": "fire-truck",
212
+ "fireworks": "fireworks",
213
+ "flamingo": "flamingo",
214
+ "fly": "fly",
215
+ "fox": "fox",
216
+ "french-horn": "french-horn",
217
+ "fried-egg": "fried-egg",
218
+ "frisbee": "frisbee",
219
+ "frog": "frog",
220
+ "frying-pan": "frying-pan",
221
+ "galaxy": "galaxy",
222
+ "gas-pump": "gas-pump",
223
+ "giraffe": "giraffe",
224
+ "goat": "goat",
225
+ "golden-gate-bridge": "golden-gate-bridge",
226
+ "goldfish": "goldfish",
227
+ "golf-ball": "golf-ball",
228
+ "goose": "goose",
229
+ "gorilla": "gorilla",
230
+ "grapes": "grapes",
231
+ "grasshopper": "grasshopper",
232
+ "greyhound": "greyhound",
233
+ "guitar-pick": "guitar-pick",
234
+ "hamburger": "hamburger",
235
+ "hammock": "hammock",
236
+ "hamster": "hamster",
237
+ "hare": "hare",
238
+ "harmonica": "harmonica",
239
+ "harp": "harp",
240
+ "harpsichord": "harpsichord",
241
+ "head-phones": "head-phones",
242
+ "hedgehog": "hedgehog",
243
+ "helicopter": "helicopter",
244
+ "hibiscus": "hibiscus",
245
+ "hippopotamus": "hippopotamus",
246
+ "homer-simpson": "homer-simpson",
247
+ "hornbill": "hornbill",
248
+ "horseshoe-crab": "horseshoe-crab",
249
+ "hot-air-balloon": "hot-air-balloon",
250
+ "hot-dog": "hot-dog",
251
+ "hot-tub": "hot-tub",
252
+ "hourglass": "hourglass",
253
+ "house-fly": "house-fly",
254
+ "hummingbird": "hummingbird",
255
+ "hyena": "hyena",
256
+ "ice-cream-cone": "ice-cream-cone",
257
+ "iguana": "iguana",
258
+ "ipod": "ipod",
259
+ "jellyfish": "jellyfish",
260
+ "joy-stick": "joy-stick",
261
+ "kangaroo": "kangaroo",
262
+ "kayak": "kayak",
263
+ "killer-whale": "killer-whale",
264
+ "koala": "koala",
265
+ "ladder": "ladder",
266
+ "ladybugs": "ladybugs",
267
+ "laptop": "laptop",
268
+ "leopard": "leopard",
269
+ "license-plate": "license-plate",
270
+ "light-house": "light-house",
271
+ "lightbulb": "lightbulb",
272
+ "lightning": "lightning",
273
+ "lion": "lion",
274
+ "lizard": "lizard",
275
+ "llama": "llama",
276
+ "lobster": "lobster",
277
+ "mailbox": "mailbox",
278
+ "mandolin": "mandolin",
279
+ "mars": "mars",
280
+ "mattress": "mattress",
281
+ "megaphone": "megaphone",
282
+ "microscope": "microscope",
283
+ "microwave": "microwave",
284
+ "minaret": "minaret",
285
+ "minotaur": "minotaur",
286
+ "mosquito": "mosquito",
287
+ "moth": "moth",
288
+ "motorbikes": "motorbikes",
289
+ "mountain-bike": "mountain-bike",
290
+ "mouse": "mouse",
291
+ "mushroom": "mushroom",
292
+ "mussels": "mussels",
293
+ "necktie": "necktie",
294
+ "octopus": "octopus",
295
+ "okapi": "okapi",
296
+ "orangutan": "orangutan",
297
+ "ostrich": "ostrich",
298
+ "otter": "otter",
299
+ "owl": "owl",
300
+ "ox": "ox",
301
+ "oyster": "oyster",
302
+ "palm-pilot": "palm-pilot",
303
+ "palm-tree": "palm-tree",
304
+ "panda": "panda",
305
+ "paper-shredder": "paper-shredder",
306
+ "paperclip": "paperclip",
307
+ "parrot": "parrot",
308
+ "pci-card": "pci-card",
309
+ "pelecaniformes": "pelecaniformes",
310
+ "penguin": "penguin",
311
+ "photocopier": "photocopier",
312
+ "piano": "piano",
313
+ "picnic-table": "picnic-table",
314
+ "pig": "pig",
315
+ "pigeon": "pigeon",
316
+ "playing-card": "playing-card",
317
+ "porcupine": "porcupine",
318
+ "possum": "possum",
319
+ "pram": "pram",
320
+ "pyramid": "pyramid",
321
+ "raccoon": "raccoon",
322
+ "radio-telescope": "radio-telescope",
323
+ "rainbow": "rainbow",
324
+ "rat": "rat",
325
+ "refrigerator": "refrigerator",
326
+ "reindeer": "reindeer",
327
+ "rhinoceros": "rhinoceros",
328
+ "rotary-phone": "rotary-phone",
329
+ "roulette-wheel": "roulette-wheel",
330
+ "saddle": "saddle",
331
+ "sandpiper": "sandpiper",
332
+ "saturn": "saturn",
333
+ "school-bus": "school-bus",
334
+ "screwdriver": "screwdriver",
335
+ "seahorse": "seahorse",
336
+ "seal": "seal",
337
+ "segway": "segway",
338
+ "self-propelled-lawn-mower": "self-propelled-lawn-mower",
339
+ "shark": "shark",
340
+ "sheep": "sheep",
341
+ "sheet-music": "sheet-music",
342
+ "skateboard": "skateboard",
343
+ "skunk": "skunk",
344
+ "skyscraper": "skyscraper",
345
+ "smokestack": "smokestack",
346
+ "snail": "snail",
347
+ "snake": "snake",
348
+ "sneaker": "sneaker",
349
+ "snowmobile": "snowmobile",
350
+ "soccer-ball": "soccer-ball",
351
+ "socks": "socks",
352
+ "soda-can": "soda-can",
353
+ "spaghetti": "spaghetti",
354
+ "sparrow": "sparrow",
355
+ "speed-boat": "speed-boat",
356
+ "spoon": "spoon",
357
+ "squid": "squid",
358
+ "squirrel": "squirrel",
359
+ "stained-glass": "stained-glass",
360
+ "starfish": "starfish",
361
+ "steering-wheel": "steering-wheel",
362
+ "stirrups": "stirrups",
363
+ "sunflower": "sunflower",
364
+ "superman": "superman",
365
+ "sushi": "sushi",
366
+ "swan": "swan",
367
+ "t-shirt": "t-shirt",
368
+ "teapot": "teapot",
369
+ "teddy-bear": "teddy-bear",
370
+ "telephone-box": "telephone-box",
371
+ "tennis-ball": "tennis-ball",
372
+ "tennis-court": "tennis-court",
373
+ "tennis-racket": "tennis-racket",
374
+ "tiger": "tiger",
375
+ "toad": "toad",
376
+ "toaster": "toaster",
377
+ "tomato": "tomato",
378
+ "tombstone": "tombstone",
379
+ "top-hat": "top-hat",
380
+ "touring-bike": "touring-bike",
381
+ "tower-pisa": "tower-pisa",
382
+ "traffic-light": "traffic-light",
383
+ "treadmill": "treadmill",
384
+ "triceratops": "triceratops",
385
+ "tricycle": "tricycle",
386
+ "tripod": "tripod",
387
+ "tuning-fork": "tuning-fork",
388
+ "turkey": "turkey",
389
+ "turtle": "turtle",
390
+ "tweezer": "tweezer",
391
+ "umbrella": "umbrella",
392
+ "unicorn": "unicorn",
393
+ "video-projector": "video-projector",
394
+ "washing-machine": "washing-machine",
395
+ "watch": "watch",
396
+ "waterfall": "waterfall",
397
+ "watermelon": "watermelon",
398
+ "welding-mask": "welding-mask",
399
+ "whale": "whale",
400
+ "wheelbarrow": "wheelbarrow",
401
+ "windmill": "windmill",
402
+ "wine-bottle": "wine-bottle",
403
+ "wolf": "wolf",
404
+ "wombat": "wombat",
405
+ "woodpecker": "woodpecker",
406
+ "xylophone": "xylophone",
407
+ "yo-yo": "yo-yo",
408
+ "zebra": "zebra"
409
+ }