@quenty/metricutils 2.4.3 → 2.5.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.
Files changed (64) hide show
  1. package/CHANGELOG.md +16 -54
  2. package/README.md +80 -2
  3. package/deploy.nevermore.json +10 -0
  4. package/package.json +22 -4
  5. package/src/Shared/Definitions/MetricUnitDefinitions.lua +1082 -0
  6. package/src/Shared/Definitions/MetricUnitDefinitions.spec.lua +55 -0
  7. package/src/Shared/Definitions/MetricUnitDimensionUtils.lua +164 -0
  8. package/src/Shared/Definitions/MetricUnitDimensionUtils.spec.lua +49 -0
  9. package/src/Shared/Definitions/MetricUnitKinds.lua +237 -0
  10. package/src/Shared/Definitions/MetricUnitKinds.spec.lua +51 -0
  11. package/src/Shared/Formatting/MetricUnitDisplayUnitUtils.lua +129 -0
  12. package/src/Shared/Formatting/MetricUnitFormatUtils.lua +924 -0
  13. package/src/Shared/Formatting/MetricUnitFormatUtils.spec.lua +280 -0
  14. package/src/Shared/Formatting/RxMetricUnitFormatUtils.lua +62 -0
  15. package/src/Shared/Localization/MetricUnitFallbackStrings.lua +289 -0
  16. package/src/Shared/Localization/MetricUnitFallbackStrings.spec.lua +82 -0
  17. package/src/Shared/Localization/MetricUnitTranslator/ar.json.txt +182 -0
  18. package/src/Shared/Localization/MetricUnitTranslator/de.json.txt +182 -0
  19. package/src/Shared/Localization/MetricUnitTranslator/en.json.txt +182 -0
  20. package/src/Shared/Localization/MetricUnitTranslator/es.json.txt +182 -0
  21. package/src/Shared/Localization/MetricUnitTranslator/fr.json.txt +182 -0
  22. package/src/Shared/Localization/MetricUnitTranslator/id.json.txt +182 -0
  23. package/src/Shared/Localization/MetricUnitTranslator/init.lua +92 -0
  24. package/src/Shared/Localization/MetricUnitTranslator/it.json.txt +182 -0
  25. package/src/Shared/Localization/MetricUnitTranslator/ja.json.txt +182 -0
  26. package/src/Shared/Localization/MetricUnitTranslator/ko.json.txt +182 -0
  27. package/src/Shared/Localization/MetricUnitTranslator/pl.json.txt +182 -0
  28. package/src/Shared/Localization/MetricUnitTranslator/pt.json.txt +182 -0
  29. package/src/Shared/Localization/MetricUnitTranslator/ru.json.txt +182 -0
  30. package/src/Shared/Localization/MetricUnitTranslator/th.json.txt +182 -0
  31. package/src/Shared/Localization/MetricUnitTranslator/tr.json.txt +182 -0
  32. package/src/Shared/Localization/MetricUnitTranslator/vi.json.txt +182 -0
  33. package/src/Shared/Localization/MetricUnitTranslator/zh-cn.json.txt +182 -0
  34. package/src/Shared/Localization/MetricUnitTranslator/zh-tw.json.txt +182 -0
  35. package/src/Shared/Localization/MetricUnitTranslator.spec.lua +309 -0
  36. package/src/Shared/Localization/PluralCategoryUtils.lua +103 -0
  37. package/src/Shared/Localization/PluralCategoryUtils.spec.lua +77 -0
  38. package/src/Shared/Logarithmic/DecibelUtils.lua +72 -0
  39. package/src/Shared/Logarithmic/DecibelUtils.spec.lua +35 -0
  40. package/src/Shared/MetricUnit.Angles.spec.lua +80 -0
  41. package/src/Shared/MetricUnit.Customary.spec.lua +104 -0
  42. package/src/Shared/MetricUnit.Derived.spec.lua +173 -0
  43. package/src/Shared/MetricUnit.Display.spec.lua +153 -0
  44. package/src/Shared/MetricUnit.Electrical.spec.lua +114 -0
  45. package/src/Shared/MetricUnit.Math.spec.lua +112 -0
  46. package/src/Shared/MetricUnit.Roblox.spec.lua +34 -0
  47. package/src/Shared/MetricUnit.SI.spec.lua +127 -0
  48. package/src/Shared/MetricUnit.Spring.spec.lua +94 -0
  49. package/src/Shared/MetricUnit.Temperature.spec.lua +212 -0
  50. package/src/Shared/MetricUnit.Time.spec.lua +202 -0
  51. package/src/Shared/MetricUnit.Units.spec.lua +210 -0
  52. package/src/Shared/MetricUnit.lua +1730 -0
  53. package/src/Shared/MetricUnit.spec.lua +362 -0
  54. package/src/Shared/MetricUtils.lua +47 -16
  55. package/src/Shared/MetricUtils.spec.lua +76 -0
  56. package/src/Shared/Parsing/MetricUnitParseUtils.lua +799 -0
  57. package/src/Shared/Parsing/MetricUnitParseUtils.spec.lua +189 -0
  58. package/src/Shared/Systems/MetricUnitSystem.lua +322 -0
  59. package/src/Shared/Systems/MetricUnitSystem.spec.lua +181 -0
  60. package/src/Shared/Systems/MetricUnitSystems.lua +225 -0
  61. package/src/jest.config.lua +3 -0
  62. package/src/node_modules.project.json +7 -0
  63. package/test/default.project.json +25 -0
  64. package/test/scripts/Server/ServerMain.server.lua +14 -0
@@ -0,0 +1,182 @@
1
+ {
2
+ "units": {
3
+ "microsecond": {"long":{"zero":"{n} mikrodetik","one":"{n} mikrodetik","two":"{n} mikrodetik","few":"{n} mikrodetik","many":"{n} mikrodetik","other":"{n} mikrodetik"},"short":{"zero":"{n} μd","one":"{n} μd","two":"{n} μd","few":"{n} μd","many":"{n} μd","other":"{n} μd"}},
4
+ "hertz": {"long":{"zero":"{n} hertz","one":"{n} hertz","two":"{n} hertz","few":"{n} hertz","many":"{n} hertz","other":"{n} hertz"},"short":{"zero":"{n} Hz","one":"{n} Hz","two":"{n} Hz","few":"{n} Hz","many":"{n} Hz","other":"{n} Hz"}},
5
+ "percent": {"long":{"zero":"{n} persen","one":"{n} persen","two":"{n} persen","few":"{n} persen","many":"{n} persen","other":"{n} persen"},"short":{"zero":"{n}%","one":"{n}%","two":"{n}%","few":"{n}%","many":"{n}%","other":"{n}%"}},
6
+ "permille": {"long":{"zero":"{n} permil","one":"{n} permil","two":"{n} permil","few":"{n} permil","many":"{n} permil","other":"{n} permil"},"short":{"zero":"{n}‰","one":"{n}‰","two":"{n}‰","few":"{n}‰","many":"{n}‰","other":"{n}‰"}},
7
+ "millimeter": {"long":{"zero":"{n} milimeter","one":"{n} milimeter","two":"{n} milimeter","few":"{n} milimeter","many":"{n} milimeter","other":"{n} milimeter"},"short":{"zero":"{n} mm","one":"{n} mm","two":"{n} mm","few":"{n} mm","many":"{n} mm","other":"{n} mm"}},
8
+ "centimeter": {"long":{"zero":"{n} sentimeter","one":"{n} sentimeter","two":"{n} sentimeter","few":"{n} sentimeter","many":"{n} sentimeter","other":"{n} sentimeter"},"short":{"zero":"{n} cm","one":"{n} cm","two":"{n} cm","few":"{n} cm","many":"{n} cm","other":"{n} cm"}},
9
+ "meter": {"long":{"zero":"{n} meter","one":"{n} meter","two":"{n} meter","few":"{n} meter","many":"{n} meter","other":"{n} meter"},"short":{"zero":"{n} m","one":"{n} m","two":"{n} m","few":"{n} m","many":"{n} m","other":"{n} m"}},
10
+ "kilometer": {"long":{"zero":"{n} kilometer","one":"{n} kilometer","two":"{n} kilometer","few":"{n} kilometer","many":"{n} kilometer","other":"{n} kilometer"},"short":{"zero":"{n} km","one":"{n} km","two":"{n} km","few":"{n} km","many":"{n} km","other":"{n} km"}},
11
+ "inch": {"long":{"zero":"{n} inci","one":"{n} inci","two":"{n} inci","few":"{n} inci","many":"{n} inci","other":"{n} inci"},"short":{"zero":"{n} in","one":"{n} in","two":"{n} in","few":"{n} in","many":"{n} in","other":"{n} in"}},
12
+ "foot": {"long":{"zero":"{n} kaki","one":"{n} kaki","two":"{n} kaki","few":"{n} kaki","many":"{n} kaki","other":"{n} kaki"},"short":{"zero":"{n} ft","one":"{n} ft","two":"{n} ft","few":"{n} ft","many":"{n} ft","other":"{n} ft"}},
13
+ "yard": {"long":{"zero":"{n} yard","one":"{n} yard","two":"{n} yard","few":"{n} yard","many":"{n} yard","other":"{n} yard"},"short":{"zero":"{n} yd","one":"{n} yd","two":"{n} yd","few":"{n} yd","many":"{n} yd","other":"{n} yd"}},
14
+ "mile": {"long":{"zero":"{n} mil","one":"{n} mil","two":"{n} mil","few":"{n} mil","many":"{n} mil","other":"{n} mil"},"short":{"zero":"{n} mi","one":"{n} mi","two":"{n} mi","few":"{n} mi","many":"{n} mi","other":"{n} mi"}},
15
+ "stud": {"long":{"zero":"{n} studs","one":"{n} studs","two":"{n} studs","few":"{n} studs","many":"{n} studs","other":"{n} studs"},"short":{"zero":"{n} studs","one":"{n} studs","two":"{n} studs","few":"{n} studs","many":"{n} studs","other":"{n} studs"}},
16
+ "squareMillimeter": {"long":{"zero":"{n} milimeter persegi","one":"{n} milimeter persegi","two":"{n} milimeter persegi","few":"{n} milimeter persegi","many":"{n} milimeter persegi","other":"{n} milimeter persegi"},"short":{"zero":"{n} mm²","one":"{n} mm²","two":"{n} mm²","few":"{n} mm²","many":"{n} mm²","other":"{n} mm²"}},
17
+ "squareCentimeter": {"long":{"zero":"{n} sentimeter persegi","one":"{n} sentimeter persegi","two":"{n} sentimeter persegi","few":"{n} sentimeter persegi","many":"{n} sentimeter persegi","other":"{n} sentimeter persegi"},"short":{"zero":"{n} cm²","one":"{n} cm²","two":"{n} cm²","few":"{n} cm²","many":"{n} cm²","other":"{n} cm²"}},
18
+ "squareMeter": {"long":{"zero":"{n} meter persegi","one":"{n} meter persegi","two":"{n} meter persegi","few":"{n} meter persegi","many":"{n} meter persegi","other":"{n} meter persegi"},"short":{"zero":"{n} m²","one":"{n} m²","two":"{n} m²","few":"{n} m²","many":"{n} m²","other":"{n} m²"}},
19
+ "hectare": {"long":{"zero":"{n} hektare","one":"{n} hektare","two":"{n} hektare","few":"{n} hektare","many":"{n} hektare","other":"{n} hektare"},"short":{"zero":"{n} ha","one":"{n} ha","two":"{n} ha","few":"{n} ha","many":"{n} ha","other":"{n} ha"}},
20
+ "squareKilometer": {"long":{"zero":"{n} kilometer persegi","one":"{n} kilometer persegi","two":"{n} kilometer persegi","few":"{n} kilometer persegi","many":"{n} kilometer persegi","other":"{n} kilometer persegi"},"short":{"zero":"{n} km²","one":"{n} km²","two":"{n} km²","few":"{n} km²","many":"{n} km²","other":"{n} km²"}},
21
+ "squareFoot": {"long":{"zero":"{n} kaki persegi","one":"{n} kaki persegi","two":"{n} kaki persegi","few":"{n} kaki persegi","many":"{n} kaki persegi","other":"{n} kaki persegi"},"short":{"zero":"{n} ft²","one":"{n} ft²","two":"{n} ft²","few":"{n} ft²","many":"{n} ft²","other":"{n} ft²"}},
22
+ "acre": {"long":{"zero":"{n} ekar","one":"{n} ekar","two":"{n} ekar","few":"{n} ekar","many":"{n} ekar","other":"{n} ekar"},"short":{"zero":"{n} ac","one":"{n} ac","two":"{n} ac","few":"{n} ac","many":"{n} ac","other":"{n} ac"}},
23
+ "milliliter": {"long":{"zero":"{n} mililiter","one":"{n} mililiter","two":"{n} mililiter","few":"{n} mililiter","many":"{n} mililiter","other":"{n} mililiter"},"short":{"zero":"{n} mL","one":"{n} mL","two":"{n} mL","few":"{n} mL","many":"{n} mL","other":"{n} mL"}},
24
+ "liter": {"long":{"zero":"{n} liter","one":"{n} liter","two":"{n} liter","few":"{n} liter","many":"{n} liter","other":"{n} liter"},"short":{"zero":"{n} L","one":"{n} L","two":"{n} L","few":"{n} L","many":"{n} L","other":"{n} L"}},
25
+ "cubicMeter": {"long":{"zero":"{n} meter kubik","one":"{n} meter kubik","two":"{n} meter kubik","few":"{n} meter kubik","many":"{n} meter kubik","other":"{n} meter kubik"},"short":{"zero":"{n} m³","one":"{n} m³","two":"{n} m³","few":"{n} m³","many":"{n} m³","other":"{n} m³"}},
26
+ "usFluidOunce": {"long":{"zero":"{n} fluid ounce","one":"{n} fluid ounce","two":"{n} fluid ounce","few":"{n} fluid ounce","many":"{n} fluid ounce","other":"{n} fluid ounce"},"short":{"zero":"{n} fl oz","one":"{n} fl oz","two":"{n} fl oz","few":"{n} fl oz","many":"{n} fl oz","other":"{n} fl oz"}},
27
+ "usGallon": {"long":{"zero":"{n} galon","one":"{n} galon","two":"{n} galon","few":"{n} galon","many":"{n} galon","other":"{n} galon"},"short":{"zero":"{n} gal","one":"{n} gal","two":"{n} gal","few":"{n} gal","many":"{n} gal","other":"{n} gal"}},
28
+ "imperialGallon": {"long":{"zero":"{n} galon Imp.","one":"{n} galon Imp.","two":"{n} galon Imp.","few":"{n} galon Imp.","many":"{n} galon Imp.","other":"{n} galon Imp."},"short":{"zero":"{n} gal Imp.","one":"{n} gal Imp.","two":"{n} gal Imp.","few":"{n} gal Imp.","many":"{n} gal Imp.","other":"{n} gal Imp."}},
29
+ "bit": {"long":{"zero":"{n} bit","one":"{n} bit","two":"{n} bit","few":"{n} bit","many":"{n} bit","other":"{n} bit"},"short":{"zero":"{n} bit","one":"{n} bit","two":"{n} bit","few":"{n} bit","many":"{n} bit","other":"{n} bit"}},
30
+ "kilobit": {"long":{"zero":"{n} kilobit","one":"{n} kilobit","two":"{n} kilobit","few":"{n} kilobit","many":"{n} kilobit","other":"{n} kilobit"},"short":{"zero":"{n} kb","one":"{n} kb","two":"{n} kb","few":"{n} kb","many":"{n} kb","other":"{n} kb"}},
31
+ "megabit": {"long":{"zero":"{n} megabit","one":"{n} megabit","two":"{n} megabit","few":"{n} megabit","many":"{n} megabit","other":"{n} megabit"},"short":{"zero":"{n} Mb","one":"{n} Mb","two":"{n} Mb","few":"{n} Mb","many":"{n} Mb","other":"{n} Mb"}},
32
+ "gigabit": {"long":{"zero":"{n} gigabit","one":"{n} gigabit","two":"{n} gigabit","few":"{n} gigabit","many":"{n} gigabit","other":"{n} gigabit"},"short":{"zero":"{n} Gb","one":"{n} Gb","two":"{n} Gb","few":"{n} Gb","many":"{n} Gb","other":"{n} Gb"}},
33
+ "byte": {"long":{"zero":"{n} byte","one":"{n} byte","two":"{n} byte","few":"{n} byte","many":"{n} byte","other":"{n} byte"},"short":{"zero":"{n} byte","one":"{n} byte","two":"{n} byte","few":"{n} byte","many":"{n} byte","other":"{n} byte"}},
34
+ "kilobyte": {"long":{"zero":"{n} kilobyte","one":"{n} kilobyte","two":"{n} kilobyte","few":"{n} kilobyte","many":"{n} kilobyte","other":"{n} kilobyte"},"short":{"zero":"{n} kB","one":"{n} kB","two":"{n} kB","few":"{n} kB","many":"{n} kB","other":"{n} kB"}},
35
+ "megabyte": {"long":{"zero":"{n} megabyte","one":"{n} megabyte","two":"{n} megabyte","few":"{n} megabyte","many":"{n} megabyte","other":"{n} megabyte"},"short":{"zero":"{n} MB","one":"{n} MB","two":"{n} MB","few":"{n} MB","many":"{n} MB","other":"{n} MB"}},
36
+ "gigabyte": {"long":{"zero":"{n} gigabyte","one":"{n} gigabyte","two":"{n} gigabyte","few":"{n} gigabyte","many":"{n} gigabyte","other":"{n} gigabyte"},"short":{"zero":"{n} GB","one":"{n} GB","two":"{n} GB","few":"{n} GB","many":"{n} GB","other":"{n} GB"}},
37
+ "bitPerSecond": {"long":{"zero":"{n} bit per detik","one":"{n} bit per detik","two":"{n} bit per detik","few":"{n} bit per detik","many":"{n} bit per detik","other":"{n} bit per detik"},"short":{"zero":"{n} bit/dtk","one":"{n} bit/dtk","two":"{n} bit/dtk","few":"{n} bit/dtk","many":"{n} bit/dtk","other":"{n} bit/dtk"}},
38
+ "kilobitPerSecond": {"long":{"zero":"{n} kilobit per detik","one":"{n} kilobit per detik","two":"{n} kilobit per detik","few":"{n} kilobit per detik","many":"{n} kilobit per detik","other":"{n} kilobit per detik"},"short":{"zero":"{n} kb/dtk","one":"{n} kb/dtk","two":"{n} kb/dtk","few":"{n} kb/dtk","many":"{n} kb/dtk","other":"{n} kb/dtk"}},
39
+ "megabitPerSecond": {"long":{"zero":"{n} megabit per detik","one":"{n} megabit per detik","two":"{n} megabit per detik","few":"{n} megabit per detik","many":"{n} megabit per detik","other":"{n} megabit per detik"},"short":{"zero":"{n} Mb/dtk","one":"{n} Mb/dtk","two":"{n} Mb/dtk","few":"{n} Mb/dtk","many":"{n} Mb/dtk","other":"{n} Mb/dtk"}},
40
+ "gigabitPerSecond": {"long":{"zero":"{n} gigabit per detik","one":"{n} gigabit per detik","two":"{n} gigabit per detik","few":"{n} gigabit per detik","many":"{n} gigabit per detik","other":"{n} gigabit per detik"},"short":{"zero":"{n} Gb/dtk","one":"{n} Gb/dtk","two":"{n} Gb/dtk","few":"{n} Gb/dtk","many":"{n} Gb/dtk","other":"{n} Gb/dtk"}},
41
+ "bytePerSecond": {"long":{"zero":"{n} byte per detik","one":"{n} byte per detik","two":"{n} byte per detik","few":"{n} byte per detik","many":"{n} byte per detik","other":"{n} byte per detik"},"short":{"zero":"{n} byte/dtk","one":"{n} byte/dtk","two":"{n} byte/dtk","few":"{n} byte/dtk","many":"{n} byte/dtk","other":"{n} byte/dtk"}},
42
+ "kilobytePerSecond": {"long":{"zero":"{n} kilobyte per detik","one":"{n} kilobyte per detik","two":"{n} kilobyte per detik","few":"{n} kilobyte per detik","many":"{n} kilobyte per detik","other":"{n} kilobyte per detik"},"short":{"zero":"{n} kB/dtk","one":"{n} kB/dtk","two":"{n} kB/dtk","few":"{n} kB/dtk","many":"{n} kB/dtk","other":"{n} kB/dtk"}},
43
+ "milligram": {"long":{"zero":"{n} miligram","one":"{n} miligram","two":"{n} miligram","few":"{n} miligram","many":"{n} miligram","other":"{n} miligram"},"short":{"zero":"{n} mg","one":"{n} mg","two":"{n} mg","few":"{n} mg","many":"{n} mg","other":"{n} mg"}},
44
+ "gram": {"long":{"zero":"{n} gram","one":"{n} gram","two":"{n} gram","few":"{n} gram","many":"{n} gram","other":"{n} gram"},"short":{"zero":"{n} g","one":"{n} g","two":"{n} g","few":"{n} g","many":"{n} g","other":"{n} g"}},
45
+ "kilogram": {"long":{"zero":"{n} kilogram","one":"{n} kilogram","two":"{n} kilogram","few":"{n} kilogram","many":"{n} kilogram","other":"{n} kilogram"},"short":{"zero":"{n} kg","one":"{n} kg","two":"{n} kg","few":"{n} kg","many":"{n} kg","other":"{n} kg"}},
46
+ "tonne": {"long":{"zero":"{n} metrik ton","one":"{n} metrik ton","two":"{n} metrik ton","few":"{n} metrik ton","many":"{n} metrik ton","other":"{n} metrik ton"},"short":{"zero":"{n} t","one":"{n} t","two":"{n} t","few":"{n} t","many":"{n} t","other":"{n} t"}},
47
+ "ounce": {"long":{"zero":"{n} ounce","one":"{n} ounce","two":"{n} ounce","few":"{n} ounce","many":"{n} ounce","other":"{n} ounce"},"short":{"zero":"{n} oz","one":"{n} oz","two":"{n} oz","few":"{n} oz","many":"{n} oz","other":"{n} oz"}},
48
+ "pound": {"long":{"zero":"{n} pound","one":"{n} pound","two":"{n} pound","few":"{n} pound","many":"{n} pound","other":"{n} pound"},"short":{"zero":"{n} lb","one":"{n} lb","two":"{n} lb","few":"{n} lb","many":"{n} lb","other":"{n} lb"}},
49
+ "stone": {"long":{"zero":"{n} stone","one":"{n} stone","two":"{n} stone","few":"{n} stone","many":"{n} stone","other":"{n} stone"},"short":{"zero":"{n} st","one":"{n} st","two":"{n} st","few":"{n} st","many":"{n} st","other":"{n} st"}},
50
+ "robloxMassUnit": {"long":{"zero":"{n} Roblox mass units","one":"{n} Roblox mass units","two":"{n} Roblox mass units","few":"{n} Roblox mass units","many":"{n} Roblox mass units","other":"{n} Roblox mass units"},"short":{"zero":"{n} RMU","one":"{n} RMU","two":"{n} RMU","few":"{n} RMU","many":"{n} RMU","other":"{n} RMU"}},
51
+ "meterPerSecond": {"long":{"zero":"{n} meter per detik","one":"{n} meter per detik","two":"{n} meter per detik","few":"{n} meter per detik","many":"{n} meter per detik","other":"{n} meter per detik"},"short":{"zero":"{n} m/dtk","one":"{n} m/dtk","two":"{n} m/dtk","few":"{n} m/dtk","many":"{n} m/dtk","other":"{n} m/dtk"}},
52
+ "kilometerPerHour": {"long":{"zero":"{n} kilometer per jam","one":"{n} kilometer per jam","two":"{n} kilometer per jam","few":"{n} kilometer per jam","many":"{n} kilometer per jam","other":"{n} kilometer per jam"},"short":{"zero":"{n} km/j","one":"{n} km/j","two":"{n} km/j","few":"{n} km/j","many":"{n} km/j","other":"{n} km/j"}},
53
+ "milePerHour": {"long":{"zero":"{n} mil per jam","one":"{n} mil per jam","two":"{n} mil per jam","few":"{n} mil per jam","many":"{n} mil per jam","other":"{n} mil per jam"},"short":{"zero":"{n} mpj","one":"{n} mpj","two":"{n} mpj","few":"{n} mpj","many":"{n} mpj","other":"{n} mpj"}},
54
+ "knot": {"long":{"zero":"{n} knot","one":"{n} knot","two":"{n} knot","few":"{n} knot","many":"{n} knot","other":"{n} knot"},"short":{"zero":"{n} kn","one":"{n} kn","two":"{n} kn","few":"{n} kn","many":"{n} kn","other":"{n} kn"}},
55
+ "studPerSecond": {"long":{"zero":"{n} studs per detik","one":"{n} studs per detik","two":"{n} studs per detik","few":"{n} studs per detik","many":"{n} studs per detik","other":"{n} studs per detik"},"short":{"zero":"{n} studs/dtk","one":"{n} studs/dtk","two":"{n} studs/dtk","few":"{n} studs/dtk","many":"{n} studs/dtk","other":"{n} studs/dtk"}},
56
+ "meterPerSecondSquared": {"long":{"zero":"{n} meter per detik persegi","one":"{n} meter per detik persegi","two":"{n} meter per detik persegi","few":"{n} meter per detik persegi","many":"{n} meter per detik persegi","other":"{n} meter per detik persegi"},"short":{"zero":"{n} m/dtk²","one":"{n} m/dtk²","two":"{n} m/dtk²","few":"{n} m/dtk²","many":"{n} m/dtk²","other":"{n} m/dtk²"}},
57
+ "studPerSecondSquared": {"long":{"zero":"{n} studs per detik persegi","one":"{n} studs per detik persegi","two":"{n} studs per detik persegi","few":"{n} studs per detik persegi","many":"{n} studs per detik persegi","other":"{n} studs per detik persegi"},"short":{"zero":"{n} studs/dtk²","one":"{n} studs/dtk²","two":"{n} studs/dtk²","few":"{n} studs/dtk²","many":"{n} studs/dtk²","other":"{n} studs/dtk²"}},
58
+ "newton": {"long":{"zero":"{n} newton","one":"{n} newton","two":"{n} newton","few":"{n} newton","many":"{n} newton","other":"{n} newton"},"short":{"zero":"{n} N","one":"{n} N","two":"{n} N","few":"{n} N","many":"{n} N","other":"{n} N"}},
59
+ "poundForce": {"long":{"zero":"{n} pound gaya","one":"{n} pound gaya","two":"{n} pound gaya","few":"{n} pound gaya","many":"{n} pound gaya","other":"{n} pound gaya"},"short":{"zero":"{n} lbf","one":"{n} lbf","two":"{n} lbf","few":"{n} lbf","many":"{n} lbf","other":"{n} lbf"}},
60
+ "joule": {"long":{"zero":"{n} joule","one":"{n} joule","two":"{n} joule","few":"{n} joule","many":"{n} joule","other":"{n} joule"},"short":{"zero":"{n} J","one":"{n} J","two":"{n} J","few":"{n} J","many":"{n} J","other":"{n} J"}},
61
+ "kilojoule": {"long":{"zero":"{n} kilojoule","one":"{n} kilojoule","two":"{n} kilojoule","few":"{n} kilojoule","many":"{n} kilojoule","other":"{n} kilojoule"},"short":{"zero":"{n} kJ","one":"{n} kJ","two":"{n} kJ","few":"{n} kJ","many":"{n} kJ","other":"{n} kJ"}},
62
+ "kilowattHour": {"long":{"zero":"{n} kilowatt-jam","one":"{n} kilowatt-jam","two":"{n} kilowatt-jam","few":"{n} kilowatt-jam","many":"{n} kilowatt-jam","other":"{n} kilowatt-jam"},"short":{"zero":"{n} kWh","one":"{n} kWh","two":"{n} kWh","few":"{n} kWh","many":"{n} kWh","other":"{n} kWh"}},
63
+ "kilocalorie": {"long":{"zero":"{n} kilokalori","one":"{n} kilokalori","two":"{n} kilokalori","few":"{n} kilokalori","many":"{n} kilokalori","other":"{n} kilokalori"},"short":{"zero":"{n} kkal","one":"{n} kkal","two":"{n} kkal","few":"{n} kkal","many":"{n} kkal","other":"{n} kkal"}},
64
+ "watt": {"long":{"zero":"{n} watt","one":"{n} watt","two":"{n} watt","few":"{n} watt","many":"{n} watt","other":"{n} watt"},"short":{"zero":"{n} W","one":"{n} W","two":"{n} W","few":"{n} W","many":"{n} W","other":"{n} W"}},
65
+ "kilowatt": {"long":{"zero":"{n} kilowatt","one":"{n} kilowatt","two":"{n} kilowatt","few":"{n} kilowatt","many":"{n} kilowatt","other":"{n} kilowatt"},"short":{"zero":"{n} kW","one":"{n} kW","two":"{n} kW","few":"{n} kW","many":"{n} kW","other":"{n} kW"}},
66
+ "megawatt": {"long":{"zero":"{n} megawatt","one":"{n} megawatt","two":"{n} megawatt","few":"{n} megawatt","many":"{n} megawatt","other":"{n} megawatt"},"short":{"zero":"{n} MW","one":"{n} MW","two":"{n} MW","few":"{n} MW","many":"{n} MW","other":"{n} MW"}},
67
+ "pascal": {"long":{"zero":"{n} pascal","one":"{n} pascal","two":"{n} pascal","few":"{n} pascal","many":"{n} pascal","other":"{n} pascal"},"short":{"zero":"{n} Pa","one":"{n} Pa","two":"{n} Pa","few":"{n} Pa","many":"{n} Pa","other":"{n} Pa"}},
68
+ "kilopascal": {"long":{"zero":"{n} kilopascal","one":"{n} kilopascal","two":"{n} kilopascal","few":"{n} kilopascal","many":"{n} kilopascal","other":"{n} kilopascal"},"short":{"zero":"{n} kPa","one":"{n} kPa","two":"{n} kPa","few":"{n} kPa","many":"{n} kPa","other":"{n} kPa"}},
69
+ "megapascal": {"long":{"zero":"{n} megapascal","one":"{n} megapascal","two":"{n} megapascal","few":"{n} megapascal","many":"{n} megapascal","other":"{n} megapascal"},"short":{"zero":"{n} MPa","one":"{n} MPa","two":"{n} MPa","few":"{n} MPa","many":"{n} MPa","other":"{n} MPa"}},
70
+ "bar": {"long":{"zero":"{n} bar","one":"{n} bar","two":"{n} bar","few":"{n} bar","many":"{n} bar","other":"{n} bar"},"short":{"zero":"{n} bar","one":"{n} bar","two":"{n} bar","few":"{n} bar","many":"{n} bar","other":"{n} bar"}},
71
+ "poundForcePerSquareInch": {"long":{"zero":"{n} pound per inci persegi","one":"{n} pound per inci persegi","two":"{n} pound per inci persegi","few":"{n} pound per inci persegi","many":"{n} pound per inci persegi","other":"{n} pound per inci persegi"},"short":{"zero":"{n} psi","one":"{n} psi","two":"{n} psi","few":"{n} psi","many":"{n} psi","other":"{n} psi"}},
72
+ "kilogramPerCubicMeter": {"long":{"zero":"{n} kilogram per meter kubik","one":"{n} kilogram per meter kubik","two":"{n} kilogram per meter kubik","few":"{n} kilogram per meter kubik","many":"{n} kilogram per meter kubik","other":"{n} kilogram per meter kubik"},"short":{"zero":"{n} kg/m³","one":"{n} kg/m³","two":"{n} kg/m³","few":"{n} kg/m³","many":"{n} kg/m³","other":"{n} kg/m³"}},
73
+ "gramPerCubicCentimeter": {"long":{"zero":"{n} gram per sentimeter kubik","one":"{n} gram per sentimeter kubik","two":"{n} gram per sentimeter kubik","few":"{n} gram per sentimeter kubik","many":"{n} gram per sentimeter kubik","other":"{n} gram per sentimeter kubik"},"short":{"zero":"{n} g/cm³","one":"{n} g/cm³","two":"{n} g/cm³","few":"{n} g/cm³","many":"{n} g/cm³","other":"{n} g/cm³"}},
74
+ "kelvin": {"long":{"zero":"{n} kelvin","one":"{n} kelvin","two":"{n} kelvin","few":"{n} kelvin","many":"{n} kelvin","other":"{n} kelvin"},"short":{"zero":"{n} K","one":"{n} K","two":"{n} K","few":"{n} K","many":"{n} K","other":"{n} K"}},
75
+ "celsius": {"long":{"zero":"{n} derajat Celsius","one":"{n} derajat Celsius","two":"{n} derajat Celsius","few":"{n} derajat Celsius","many":"{n} derajat Celsius","other":"{n} derajat Celsius"},"short":{"zero":"{n}°C","one":"{n}°C","two":"{n}°C","few":"{n}°C","many":"{n}°C","other":"{n}°C"}},
76
+ "fahrenheit": {"long":{"zero":"{n} derajat Fahrenheit","one":"{n} derajat Fahrenheit","two":"{n} derajat Fahrenheit","few":"{n} derajat Fahrenheit","many":"{n} derajat Fahrenheit","other":"{n} derajat Fahrenheit"},"short":{"zero":"{n}°F","one":"{n}°F","two":"{n}°F","few":"{n}°F","many":"{n}°F","other":"{n}°F"}},
77
+ "radian": {"long":{"zero":"{n} radian","one":"{n} radian","two":"{n} radian","few":"{n} radian","many":"{n} radian","other":"{n} radian"},"short":{"zero":"{n} rad","one":"{n} rad","two":"{n} rad","few":"{n} rad","many":"{n} rad","other":"{n} rad"}},
78
+ "degree": {"long":{"zero":"{n} derajat","one":"{n} derajat","two":"{n} derajat","few":"{n} derajat","many":"{n} derajat","other":"{n} derajat"},"short":{"zero":"{n}°","one":"{n}°","two":"{n}°","few":"{n}°","many":"{n}°","other":"{n}°"}},
79
+ "revolution": {"long":{"zero":"{n} revolusi","one":"{n} revolusi","two":"{n} revolusi","few":"{n} revolusi","many":"{n} revolusi","other":"{n} revolusi"},"short":{"zero":"{n} rev","one":"{n} rev","two":"{n} rev","few":"{n} rev","many":"{n} rev","other":"{n} rev"}},
80
+ "radianPerSecond": {"long":{"zero":"{n} radian per detik","one":"{n} radian per detik","two":"{n} radian per detik","few":"{n} radian per detik","many":"{n} radian per detik","other":"{n} radian per detik"},"short":{"zero":"{n} rad/dtk","one":"{n} rad/dtk","two":"{n} rad/dtk","few":"{n} rad/dtk","many":"{n} rad/dtk","other":"{n} rad/dtk"}},
81
+ "degreePerSecond": {"long":{"zero":"{n} derajat per detik","one":"{n} derajat per detik","two":"{n} derajat per detik","few":"{n} derajat per detik","many":"{n} derajat per detik","other":"{n} derajat per detik"},"short":{"zero":"{n}°/dtk","one":"{n}°/dtk","two":"{n}°/dtk","few":"{n}°/dtk","many":"{n}°/dtk","other":"{n}°/dtk"}},
82
+ "revolutionPerMinute": {"long":{"zero":"{n} revolusi per menit","one":"{n} revolusi per menit","two":"{n} revolusi per menit","few":"{n} revolusi per menit","many":"{n} revolusi per menit","other":"{n} revolusi per menit"},"short":{"zero":"{n} rev/mnt","one":"{n} rev/mnt","two":"{n} rev/mnt","few":"{n} rev/mnt","many":"{n} rev/mnt","other":"{n} rev/mnt"}},
83
+ "radianPerSecondSquared": {"long":{"zero":"{n} radian per detik persegi","one":"{n} radian per detik persegi","two":"{n} radian per detik persegi","few":"{n} radian per detik persegi","many":"{n} radian per detik persegi","other":"{n} radian per detik persegi"},"short":{"zero":"{n} rad/dtk²","one":"{n} rad/dtk²","two":"{n} rad/dtk²","few":"{n} rad/dtk²","many":"{n} rad/dtk²","other":"{n} rad/dtk²"}},
84
+ "milliampere": {"long":{"zero":"{n} miliampere","one":"{n} miliampere","two":"{n} miliampere","few":"{n} miliampere","many":"{n} miliampere","other":"{n} miliampere"},"short":{"zero":"{n} mA","one":"{n} mA","two":"{n} mA","few":"{n} mA","many":"{n} mA","other":"{n} mA"}},
85
+ "ampere": {"long":{"zero":"{n} ampere","one":"{n} ampere","two":"{n} ampere","few":"{n} ampere","many":"{n} ampere","other":"{n} ampere"},"short":{"zero":"{n} A","one":"{n} A","two":"{n} A","few":"{n} A","many":"{n} A","other":"{n} A"}},
86
+ "coulomb": {"long":{"zero":"{n} coulomb","one":"{n} coulomb","two":"{n} coulomb","few":"{n} coulomb","many":"{n} coulomb","other":"{n} coulomb"},"short":{"zero":"{n} C","one":"{n} C","two":"{n} C","few":"{n} C","many":"{n} C","other":"{n} C"}},
87
+ "volt": {"long":{"zero":"{n} volt","one":"{n} volt","two":"{n} volt","few":"{n} volt","many":"{n} volt","other":"{n} volt"},"short":{"zero":"{n} V","one":"{n} V","two":"{n} V","few":"{n} V","many":"{n} V","other":"{n} V"}},
88
+ "ohm": {"long":{"zero":"{n} ohm","one":"{n} ohm","two":"{n} ohm","few":"{n} ohm","many":"{n} ohm","other":"{n} ohm"},"short":{"zero":"{n} Ω","one":"{n} Ω","two":"{n} Ω","few":"{n} Ω","many":"{n} Ω","other":"{n} Ω"}},
89
+ "siemens": {"long":{"zero":"{n} siemen","one":"{n} siemen","two":"{n} siemen","few":"{n} siemen","many":"{n} siemen","other":"{n} siemen"},"short":{"zero":"{n} S","one":"{n} S","two":"{n} S","few":"{n} S","many":"{n} S","other":"{n} S"}},
90
+ "farad": {"long":{"zero":"{n} farad","one":"{n} farad","two":"{n} farad","few":"{n} farad","many":"{n} farad","other":"{n} farad"},"short":{"zero":"{n} F","one":"{n} F","two":"{n} F","few":"{n} F","many":"{n} F","other":"{n} F"}},
91
+ "henry": {"long":{"zero":"{n} henry","one":"{n} henry","two":"{n} henry","few":"{n} henry","many":"{n} henry","other":"{n} henry"},"short":{"zero":"{n} H","one":"{n} H","two":"{n} H","few":"{n} H","many":"{n} H","other":"{n} H"}},
92
+ "weber": {"long":{"zero":"{n} weber","one":"{n} weber","two":"{n} weber","few":"{n} weber","many":"{n} weber","other":"{n} weber"},"short":{"zero":"{n} Wb","one":"{n} Wb","two":"{n} Wb","few":"{n} Wb","many":"{n} Wb","other":"{n} Wb"}},
93
+ "tesla": {"long":{"zero":"{n} tesla","one":"{n} tesla","two":"{n} tesla","few":"{n} tesla","many":"{n} tesla","other":"{n} tesla"},"short":{"zero":"{n} T","one":"{n} T","two":"{n} T","few":"{n} T","many":"{n} T","other":"{n} T"}},
94
+ "becquerel": {"long":{"zero":"{n} becquerel","one":"{n} becquerel","two":"{n} becquerel","few":"{n} becquerel","many":"{n} becquerel","other":"{n} becquerel"},"short":{"zero":"{n} Bq","one":"{n} Bq","two":"{n} Bq","few":"{n} Bq","many":"{n} Bq","other":"{n} Bq"}},
95
+ "mole": {"long":{"zero":"{n} mol","one":"{n} mol","two":"{n} mol","few":"{n} mol","many":"{n} mol","other":"{n} mol"},"short":{"zero":"{n} mol","one":"{n} mol","two":"{n} mol","few":"{n} mol","many":"{n} mol","other":"{n} mol"}},
96
+ "gramPerMole": {"long":{"zero":"{n} gram per mol","one":"{n} gram per mol","two":"{n} gram per mol","few":"{n} gram per mol","many":"{n} gram per mol","other":"{n} gram per mol"},"short":{"zero":"{n} g/mol","one":"{n} g/mol","two":"{n} g/mol","few":"{n} g/mol","many":"{n} g/mol","other":"{n} g/mol"}},
97
+ "molePerLiter": {"long":{"zero":"{n} mol per liter","one":"{n} mol per liter","two":"{n} mol per liter","few":"{n} mol per liter","many":"{n} mol per liter","other":"{n} mol per liter"},"short":{"zero":"{n} mol/L","one":"{n} mol/L","two":"{n} mol/L","few":"{n} mol/L","many":"{n} mol/L","other":"{n} mol/L"}},
98
+ "millimolePerLiter": {"long":{"zero":"{n} millimol per liter","one":"{n} millimol per liter","two":"{n} millimol per liter","few":"{n} millimol per liter","many":"{n} millimol per liter","other":"{n} millimol per liter"},"short":{"zero":"{n} mmol/L","one":"{n} mmol/L","two":"{n} mmol/L","few":"{n} mmol/L","many":"{n} mmol/L","other":"{n} mmol/L"}},
99
+ "katal": {"long":{"zero":"{n} katal","one":"{n} katal","two":"{n} katal","few":"{n} katal","many":"{n} katal","other":"{n} katal"},"short":{"zero":"{n} kat","one":"{n} kat","two":"{n} kat","few":"{n} kat","many":"{n} kat","other":"{n} kat"}},
100
+ "candela": {"long":{"zero":"{n} candela","one":"{n} candela","two":"{n} candela","few":"{n} candela","many":"{n} candela","other":"{n} candela"},"short":{"zero":"{n} cd","one":"{n} cd","two":"{n} cd","few":"{n} cd","many":"{n} cd","other":"{n} cd"}},
101
+ "steradian": {"long":{"zero":"{n} steradian","one":"{n} steradian","two":"{n} steradian","few":"{n} steradian","many":"{n} steradian","other":"{n} steradian"},"short":{"zero":"{n} sr","one":"{n} sr","two":"{n} sr","few":"{n} sr","many":"{n} sr","other":"{n} sr"}},
102
+ "lumen": {"long":{"zero":"{n} lumen","one":"{n} lumen","two":"{n} lumen","few":"{n} lumen","many":"{n} lumen","other":"{n} lumen"},"short":{"zero":"{n} lm","one":"{n} lm","two":"{n} lm","few":"{n} lm","many":"{n} lm","other":"{n} lm"}},
103
+ "lux": {"long":{"zero":"{n} lux","one":"{n} lux","two":"{n} lux","few":"{n} lux","many":"{n} lux","other":"{n} lux"},"short":{"zero":"{n} lx","one":"{n} lx","two":"{n} lx","few":"{n} lx","many":"{n} lx","other":"{n} lx"}},
104
+ "gray": {"long":{"zero":"{n} gray","one":"{n} gray","two":"{n} gray","few":"{n} gray","many":"{n} gray","other":"{n} gray"},"short":{"zero":"{n} Gy","one":"{n} Gy","two":"{n} Gy","few":"{n} Gy","many":"{n} Gy","other":"{n} Gy"}},
105
+ "sievert": {"long":{"zero":"{n} sievert","one":"{n} sievert","two":"{n} sievert","few":"{n} sievert","many":"{n} sievert","other":"{n} sievert"},"short":{"zero":"{n} Sv","one":"{n} Sv","two":"{n} Sv","few":"{n} Sv","many":"{n} Sv","other":"{n} Sv"}},
106
+ "kilohm": {"long":{"zero":"{n} kiloohm","one":"{n} kiloohm","two":"{n} kiloohm","few":"{n} kiloohm","many":"{n} kiloohm","other":"{n} kiloohm"},"short":{"zero":"{n} kΩ","one":"{n} kΩ","two":"{n} kΩ","few":"{n} kΩ","many":"{n} kΩ","other":"{n} kΩ"}},
107
+ "megohm": {"long":{"zero":"{n} megaohm","one":"{n} megaohm","two":"{n} megaohm","few":"{n} megaohm","many":"{n} megaohm","other":"{n} megaohm"},"short":{"zero":"{n} MΩ","one":"{n} MΩ","two":"{n} MΩ","few":"{n} MΩ","many":"{n} MΩ","other":"{n} MΩ"}},
108
+ "nauticalMile": {"long":{"zero":"{n} mil laut","one":"{n} mil laut","two":"{n} mil laut","few":"{n} mil laut","many":"{n} mil laut","other":"{n} mil laut"},"short":{"zero":"{n} nmi","one":"{n} nmi","two":"{n} nmi","few":"{n} nmi","many":"{n} nmi","other":"{n} nmi"}},
109
+ "literPer100Kilometers": {"long":{"zero":"{n} liter per 100 kilometer","one":"{n} liter per 100 kilometer","two":"{n} liter per 100 kilometer","few":"{n} liter per 100 kilometer","many":"{n} liter per 100 kilometer","other":"{n} liter per 100 kilometer"},"short":{"zero":"{n} L/100 km","one":"{n} L/100 km","two":"{n} L/100 km","few":"{n} L/100 km","many":"{n} L/100 km","other":"{n} L/100 km"}},
110
+ "squareInch": {"long":{"zero":"{n} inci persegi","one":"{n} inci persegi","two":"{n} inci persegi","few":"{n} inci persegi","many":"{n} inci persegi","other":"{n} inci persegi"},"short":{"zero":"{n} in²","one":"{n} in²","two":"{n} in²","few":"{n} in²","many":"{n} in²","other":"{n} in²"}},
111
+ "squareYard": {"long":{"zero":"{n} yard persegi","one":"{n} yard persegi","two":"{n} yard persegi","few":"{n} yard persegi","many":"{n} yard persegi","other":"{n} yard persegi"},"short":{"zero":"{n} yd²","one":"{n} yd²","two":"{n} yd²","few":"{n} yd²","many":"{n} yd²","other":"{n} yd²"}},
112
+ "squareMile": {"long":{"zero":"{n} mil persegi","one":"{n} mil persegi","two":"{n} mil persegi","few":"{n} mil persegi","many":"{n} mil persegi","other":"{n} mil persegi"},"short":{"zero":"{n} mi²","one":"{n} mi²","two":"{n} mi²","few":"{n} mi²","many":"{n} mi²","other":"{n} mi²"}},
113
+ "cubicInch": {"long":{"zero":"{n} inci kubik","one":"{n} inci kubik","two":"{n} inci kubik","few":"{n} inci kubik","many":"{n} inci kubik","other":"{n} inci kubik"},"short":{"zero":"{n} in³","one":"{n} in³","two":"{n} in³","few":"{n} in³","many":"{n} in³","other":"{n} in³"}},
114
+ "cubicFoot": {"long":{"zero":"{n} kaki kubik","one":"{n} kaki kubik","two":"{n} kaki kubik","few":"{n} kaki kubik","many":"{n} kaki kubik","other":"{n} kaki kubik"},"short":{"zero":"{n} ft³","one":"{n} ft³","two":"{n} ft³","few":"{n} ft³","many":"{n} ft³","other":"{n} ft³"}},
115
+ "cubicYard": {"long":{"zero":"{n} yard kubik","one":"{n} yard kubik","two":"{n} yard kubik","few":"{n} yard kubik","many":"{n} yard kubik","other":"{n} yard kubik"},"short":{"zero":"{n} yd³","one":"{n} yd³","two":"{n} yd³","few":"{n} yd³","many":"{n} yd³","other":"{n} yd³"}},
116
+ "usTeaspoon": {"long":{"zero":"{n} sendok teh","one":"{n} sendok teh","two":"{n} sendok teh","few":"{n} sendok teh","many":"{n} sendok teh","other":"{n} sendok teh"},"short":{"zero":"{n} sdt","one":"{n} sdt","two":"{n} sdt","few":"{n} sdt","many":"{n} sdt","other":"{n} sdt"}},
117
+ "usTablespoon": {"long":{"zero":"{n} sendok makan","one":"{n} sendok makan","two":"{n} sendok makan","few":"{n} sendok makan","many":"{n} sendok makan","other":"{n} sendok makan"},"short":{"zero":"{n} sdm","one":"{n} sdm","two":"{n} sdm","few":"{n} sdm","many":"{n} sdm","other":"{n} sdm"}},
118
+ "usCup": {"long":{"zero":"{n} cup","one":"{n} cup","two":"{n} cup","few":"{n} cup","many":"{n} cup","other":"{n} cup"},"short":{"zero":"{n} c","one":"{n} c","two":"{n} c","few":"{n} c","many":"{n} c","other":"{n} c"}},
119
+ "usPint": {"long":{"zero":"{n} pint","one":"{n} pint","two":"{n} pint","few":"{n} pint","many":"{n} pint","other":"{n} pint"},"short":{"zero":"{n} pt","one":"{n} pt","two":"{n} pt","few":"{n} pt","many":"{n} pt","other":"{n} pt"}},
120
+ "usQuart": {"long":{"zero":"{n} quart","one":"{n} quart","two":"{n} quart","few":"{n} quart","many":"{n} quart","other":"{n} quart"},"short":{"zero":"{n} qt","one":"{n} qt","two":"{n} qt","few":"{n} qt","many":"{n} qt","other":"{n} qt"}},
121
+ "imperialFluidOunce": {"long":{"zero":"{n} Imp. fluid ounce","one":"{n} Imp. fluid ounce","two":"{n} Imp. fluid ounce","few":"{n} Imp. fluid ounce","many":"{n} Imp. fluid ounce","other":"{n} Imp. fluid ounce"},"short":{"zero":"{n} fl oz Imp.","one":"{n} fl oz Imp.","two":"{n} fl oz Imp.","few":"{n} fl oz Imp.","many":"{n} fl oz Imp.","other":"{n} fl oz Imp."}},
122
+ "imperialPint": {"long":{"zero":"{n} pt Imp.","one":"{n} pt Imp.","two":"{n} pt Imp.","few":"{n} pt Imp.","many":"{n} pt Imp.","other":"{n} pt Imp."},"short":{"zero":"{n} pt Imp.","one":"{n} pt Imp.","two":"{n} pt Imp.","few":"{n} pt Imp.","many":"{n} pt Imp.","other":"{n} pt Imp."}},
123
+ "imperialQuart": {"long":{"zero":"{n} quart Imp.","one":"{n} quart Imp.","two":"{n} quart Imp.","few":"{n} quart Imp.","many":"{n} quart Imp.","other":"{n} quart Imp."},"short":{"zero":"{n} qt Imp.","one":"{n} qt Imp.","two":"{n} qt Imp.","few":"{n} qt Imp.","many":"{n} qt Imp.","other":"{n} qt Imp."}},
124
+ "shortTon": {"long":{"zero":"{n} ton Amerika Serikat","one":"{n} ton Amerika Serikat","two":"{n} ton Amerika Serikat","few":"{n} ton Amerika Serikat","many":"{n} ton Amerika Serikat","other":"{n} ton Amerika Serikat"},"short":{"zero":"{n} tn AS","one":"{n} tn AS","two":"{n} tn AS","few":"{n} tn AS","many":"{n} tn AS","other":"{n} tn AS"}},
125
+ "footPerSecond": {"long":{"zero":"{n} kaki per detik","one":"{n} kaki per detik","two":"{n} kaki per detik","few":"{n} kaki per detik","many":"{n} kaki per detik","other":"{n} kaki per detik"},"short":{"zero":"{n} ft/dtk","one":"{n} ft/dtk","two":"{n} ft/dtk","few":"{n} ft/dtk","many":"{n} ft/dtk","other":"{n} ft/dtk"}},
126
+ "footPerSecondSquared": {"long":{"zero":"{n} kaki per detik persegi","one":"{n} kaki per detik persegi","two":"{n} kaki per detik persegi","few":"{n} kaki per detik persegi","many":"{n} kaki per detik persegi","other":"{n} kaki per detik persegi"},"short":{"zero":"{n} ft/dtk²","one":"{n} ft/dtk²","two":"{n} ft/dtk²","few":"{n} ft/dtk²","many":"{n} ft/dtk²","other":"{n} ft/dtk²"}},
127
+ "newtonMeter": {"long":{"zero":"{n} newton meter","one":"{n} newton meter","two":"{n} newton meter","few":"{n} newton meter","many":"{n} newton meter","other":"{n} newton meter"},"short":{"zero":"{n} N⋅m","one":"{n} N⋅m","two":"{n} N⋅m","few":"{n} N⋅m","many":"{n} N⋅m","other":"{n} N⋅m"}},
128
+ "britishThermalUnit": {"long":{"zero":"{n} satuan panas Britania","one":"{n} satuan panas Britania","two":"{n} satuan panas Britania","few":"{n} satuan panas Britania","many":"{n} satuan panas Britania","other":"{n} satuan panas Britania"},"short":{"zero":"{n} Btu","one":"{n} Btu","two":"{n} Btu","few":"{n} Btu","many":"{n} Btu","other":"{n} Btu"}},
129
+ "poundFoot": {"long":{"zero":"{n} pound kaki","one":"{n} pound kaki","two":"{n} pound kaki","few":"{n} pound kaki","many":"{n} pound kaki","other":"{n} pound kaki"},"short":{"zero":"{n} lbf⋅ft","one":"{n} lbf⋅ft","two":"{n} lbf⋅ft","few":"{n} lbf⋅ft","many":"{n} lbf⋅ft","other":"{n} lbf⋅ft"}},
130
+ "metricHorsepower": {"long":{"zero":"{n} PS","one":"{n} PS","two":"{n} PS","few":"{n} PS","many":"{n} PS","other":"{n} PS"},"short":{"zero":"{n} PS","one":"{n} PS","two":"{n} PS","few":"{n} PS","many":"{n} PS","other":"{n} PS"}},
131
+ "horsepower": {"long":{"zero":"{n} daya kuda","one":"{n} daya kuda","two":"{n} daya kuda","few":"{n} daya kuda","many":"{n} daya kuda","other":"{n} daya kuda"},"short":{"zero":"{n} hp","one":"{n} hp","two":"{n} hp","few":"{n} hp","many":"{n} hp","other":"{n} hp"}},
132
+ "inchOfMercury": {"long":{"zero":"{n} inci raksa","one":"{n} inci raksa","two":"{n} inci raksa","few":"{n} inci raksa","many":"{n} inci raksa","other":"{n} inci raksa"},"short":{"zero":"{n} inHg","one":"{n} inHg","two":"{n} inHg","few":"{n} inHg","many":"{n} inHg","other":"{n} inHg"}},
133
+ "poundPerCubicFoot": {"long":{"zero":"{n} pound per kaki kubik","one":"{n} pound per kaki kubik","two":"{n} pound per kaki kubik","few":"{n} pound per kaki kubik","many":"{n} pound per kaki kubik","other":"{n} pound per kaki kubik"},"short":{"zero":"{n} lb/ft³","one":"{n} lb/ft³","two":"{n} lb/ft³","few":"{n} lb/ft³","many":"{n} lb/ft³","other":"{n} lb/ft³"}},
134
+ "kilometerPerLiter": {"long":{"zero":"{n} kilometer per liter","one":"{n} kilometer per liter","two":"{n} kilometer per liter","few":"{n} kilometer per liter","many":"{n} kilometer per liter","other":"{n} kilometer per liter"},"short":{"zero":"{n} km/L","one":"{n} km/L","two":"{n} km/L","few":"{n} km/L","many":"{n} km/L","other":"{n} km/L"}},
135
+ "milePerUsGallon": {"long":{"zero":"{n} mil per galon","one":"{n} mil per galon","two":"{n} mil per galon","few":"{n} mil per galon","many":"{n} mil per galon","other":"{n} mil per galon"},"short":{"zero":"{n} mpg","one":"{n} mpg","two":"{n} mpg","few":"{n} mpg","many":"{n} mpg","other":"{n} mpg"}},
136
+ "milePerImperialGallon": {"long":{"zero":"{n} mil per galon Imp.","one":"{n} mil per galon Imp.","two":"{n} mil per galon Imp.","few":"{n} mil per galon Imp.","many":"{n} mil per galon Imp.","other":"{n} mil per galon Imp."},"short":{"zero":"{n} mpg Imp.","one":"{n} mpg Imp.","two":"{n} mpg Imp.","few":"{n} mpg Imp.","many":"{n} mpg Imp.","other":"{n} mpg Imp."}},
137
+ "rankine": {"long":{"zero":"{n} °R","one":"{n} °R","two":"{n} °R","few":"{n} °R","many":"{n} °R","other":"{n} °R"},"short":{"zero":"{n} °R","one":"{n} °R","two":"{n} °R","few":"{n} °R","many":"{n} °R","other":"{n} °R"}}
138
+ },
139
+ "per": {
140
+ "second": {"long":"{n} per detik","short":"{n}/dtk"},
141
+ "minute": {"long":"{n} per menit","short":"{n}/mnt"},
142
+ "hour": {"long":"{n} per jam","short":"{n}/j"},
143
+ "day": {"long":"{n} per hari","short":"{n}/hr"},
144
+ "week": {"long":"{n} per minggu","short":"{n}/mgg"},
145
+ "month": {"long":"{n} per bulan","short":"{n}/bln"},
146
+ "year": {"long":"{n} per tahun","short":"{n}/thn"}
147
+ },
148
+ "prefixes": {
149
+ "quecto": {"long":"quecto{unit}","short":"q{unit}"},
150
+ "ronto": {"long":"ronto{unit}","short":"r{unit}"},
151
+ "yocto": {"long":"yocto{unit}","short":"y{unit}"},
152
+ "zepto": {"long":"zepto{unit}","short":"z{unit}"},
153
+ "atto": {"long":"atto{unit}","short":"a{unit}"},
154
+ "femto": {"long":"femto{unit}","short":"f{unit}"},
155
+ "pico": {"long":"piko{unit}","short":"p{unit}"},
156
+ "nano": {"long":"nano{unit}","short":"n{unit}"},
157
+ "micro": {"long":"mikro{unit}","short":"μ{unit}"},
158
+ "milli": {"long":"mili{unit}","short":"m{unit}"},
159
+ "centi": {"long":"senti{unit}","short":"c{unit}"},
160
+ "deci": {"long":"desi{unit}","short":"d{unit}"},
161
+ "deca": {"long":"deka{unit}","short":"da{unit}"},
162
+ "hecto": {"long":"hekto{unit}","short":"h{unit}"},
163
+ "kilo": {"long":"kilo{unit}","short":"k{unit}"},
164
+ "mega": {"long":"mega{unit}","short":"M{unit}"},
165
+ "giga": {"long":"giga{unit}","short":"G{unit}"},
166
+ "tera": {"long":"tera{unit}","short":"T{unit}"},
167
+ "peta": {"long":"peta{unit}","short":"P{unit}"},
168
+ "exa": {"long":"eksa{unit}","short":"E{unit}"},
169
+ "zetta": {"long":"zetta{unit}","short":"Z{unit}"},
170
+ "yotta": {"long":"yotta{unit}","short":"Y{unit}"},
171
+ "ronna": {"long":"ronna{unit}","short":"R{unit}"},
172
+ "quetta": {"long":"quetta{unit}","short":"Q{unit}"},
173
+ "kibi": {"long":"kibi{unit}","short":"Ki{unit}"},
174
+ "mebi": {"long":"mebi{unit}","short":"Mi{unit}"},
175
+ "gibi": {"long":"gibi{unit}","short":"Gi{unit}"},
176
+ "tebi": {"long":"tebi{unit}","short":"Ti{unit}"},
177
+ "pebi": {"long":"pebi{unit}","short":"Pi{unit}"},
178
+ "exbi": {"long":"eksbi{unit}","short":"Ei{unit}"},
179
+ "zebi": {"long":"zebi{unit}","short":"Zi{unit}"},
180
+ "yobi": {"long":"yobi{unit}","short":"Yi{unit}"}
181
+ }
182
+ }
@@ -0,0 +1,92 @@
1
+ --!strict
2
+ --[=[
3
+ Translated unit names and symbols, streamed to each client one locale at a time. A `JSONTranslator` over the
4
+ `<locale>.json` files beside this module, so a player downloads only the English source and their own language.
5
+ Get it from the [ServiceBag] and pass it to [MetricUnit.format] or [RxMetricUnitFormatUtils.observeFormat].
6
+
7
+ ```lua
8
+ local translator = serviceBag:GetService(require("MetricUnitTranslator"))
9
+
10
+ maid:GiveTask(RxMetricUnitFormatUtils.observeFormat(translator, MetricUnit.new(3, "mile"):ToUSCustomary(), {
11
+ unitDisplay = "long",
12
+ }):Subscribe(function(text)
13
+ label.Text = text -- "3 miles", "3 millas", "3 Meilen", "3 мили"
14
+ end))
15
+ ```
16
+
17
+ Seventeen languages ship, the ones `NumberLocalizationUtils` formats numbers for: English, Spanish, French,
18
+ German, Portuguese, Italian, Russian, Polish, Turkish, Indonesian, Vietnamese, Thai, Arabic, Simplified and
19
+ Traditional Chinese, Japanese and Korean. Every file has every key:
20
+
21
+ - `units.<unitId>.long.<category>` and `units.<unitId>.short.<category>` for each of CLDR's plural categories
22
+ (`zero`, `one`, `two`, `few`, `many`, `other`), picked by [PluralCategoryUtils.getPluralCategory].
23
+ - `per.<timeUnit>.long` and `per.<timeUnit>.short`, where `{n}` is the whole "number unit" before them.
24
+
25
+ `{n}` is the number, written for the locale. The files are maintained by hand. English matches
26
+ [MetricUnitDefinitions], which a spec checks; the other languages come from Unicode CLDR's unit patterns (see the
27
+ Unicode notice in this module's source). A no-break space joins a number to its unit.
28
+
29
+ @class MetricUnitTranslator
30
+ ]=]
31
+
32
+ --[[
33
+ Unicode CLDR data
34
+
35
+ The locale files in this folder other than en.json.txt are derived from the Unicode Common Locale Data
36
+ Repository (CLDR), version 49.0.0, as published in the unicode-org/cldr-json repository: the long and short unit
37
+ patterns of cldr-units-full and the cardinal plural rules of cldr-core. PluralCategoryUtils
38
+ implements those plural rules.
39
+
40
+ The data was modified: {0} became {n}; U+202F narrow no-break spaces became U+00A0 no-break spaces, and a space
41
+ touching the number became U+00A0; units CLDR does not list (such as square millimetres, kibibytes and radians per
42
+ second) were composed with CLDR's own prefix, per and power2 patterns; and every plural category any shipped
43
+ language uses is filled in every file, a language's other form standing in for categories it does not use. The
44
+ names of the Roblox units (stud, Roblox mass unit) are not CLDR data.
45
+
46
+ UNICODE LICENSE V3
47
+
48
+ COPYRIGHT AND PERMISSION NOTICE
49
+
50
+ Copyright © 2015-2024 Unicode, Inc.
51
+
52
+ NOTICE TO USER: Carefully read the following legal agreement. BY
53
+ DOWNLOADING, INSTALLING, COPYING OR OTHERWISE USING DATA FILES, AND/OR
54
+ SOFTWARE, YOU UNEQUIVOCALLY ACCEPT, AND AGREE TO BE BOUND BY, ALL OF THE
55
+ TERMS AND CONDITIONS OF THIS AGREEMENT. IF YOU DO NOT AGREE, DO NOT
56
+ DOWNLOAD, INSTALL, COPY, DISTRIBUTE OR USE THE DATA FILES OR SOFTWARE.
57
+
58
+ Permission is hereby granted, free of charge, to any person obtaining a
59
+ copy of data files and any associated documentation (the "Data Files") or
60
+ software and any associated documentation (the "Software") to deal in the
61
+ Data Files or Software without restriction, including without limitation
62
+ the rights to use, copy, modify, merge, publish, distribute, and/or sell
63
+ copies of the Data Files or Software, and to permit persons to whom the
64
+ Data Files or Software are furnished to do so, provided that either (a)
65
+ this copyright and permission notice appear with all copies of the Data
66
+ Files or Software, or (b) this copyright and permission notice appear in
67
+ associated Documentation.
68
+
69
+ THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
70
+ KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
71
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF
72
+ THIRD PARTY RIGHTS.
73
+
74
+ IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE
75
+ BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES,
76
+ OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
77
+ WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
78
+ ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA
79
+ FILES OR SOFTWARE.
80
+
81
+ Except as contained in this notice, the name of a copyright holder shall
82
+ not be used in advertising or otherwise to promote the sale, use or other
83
+ dealings in these Data Files or Software without prior written
84
+ authorization of the copyright holder.
85
+
86
+ SPDX-License-Identifier: Unicode-3.0
87
+ ]]
88
+
89
+ local require = require(script.Parent.loader).load(script)
90
+
91
+ -- JSONTranslator.new is typed for its (locale, table) form; this is its documented folder form
92
+ return require("JSONTranslator").new("MetricUnitTranslator", script :: any, nil :: any)