set-english-defaults.js 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. const fs = require('fs');
  2. const path = require('path');
  3. const pluralize = require('pluralize');
  4. const common = require('./common.js');
  5. const publicDir = path.join(__dirname, './../locales/');
  6. function determineRule(key) {
  7. if (key.includes('WithCount_plural')) {
  8. return 0;
  9. }
  10. if (key.includes('WithCount')) {
  11. return 1;
  12. }
  13. if (key.includes('_plural')) {
  14. return 2;
  15. }
  16. return 3;
  17. }
  18. function updateFile(fileName) {
  19. const file = require(fileName);
  20. const updatedFile = {};
  21. const keys = Object.keys(file);
  22. let originalKey;
  23. for (let i = 0; i < keys.length; i++) {
  24. if (file[keys[i]] === '') {
  25. // follow i18next rules
  26. // "key": "item",
  27. // "key_plural": "items",
  28. // "keyWithCount": "{{count}} item",
  29. // "keyWithCount_plural": "{{count}} items"
  30. switch (determineRule(keys[i])) {
  31. case 0:
  32. [originalKey] = keys[i].split('WithCount_plural');
  33. updatedFile[keys[i]] = `{{count}} ${pluralize(originalKey)}`;
  34. break;
  35. case 1:
  36. [originalKey] = keys[i].split('WithCount');
  37. updatedFile[keys[i]] = `{{count}} ${originalKey}`;
  38. break;
  39. case 2:
  40. [originalKey] = keys[i].split('_plural');
  41. updatedFile[keys[i]] = pluralize(originalKey);
  42. break;
  43. default:
  44. updatedFile[keys[i]] = keys[i];
  45. }
  46. } else {
  47. updatedFile[keys[i]] = file[keys[i]];
  48. }
  49. }
  50. fs.promises
  51. .writeFile(fileName, JSON.stringify(updatedFile, null, 2))
  52. .catch((e) => console.error(fileName, e));
  53. }
  54. function processLocalesFolder(filePath) {
  55. if (path.basename(filePath) === 'en') {
  56. common.parseFolder(filePath, updateFile);
  57. }
  58. }
  59. common.parseFolder(publicDir, processLocalesFolder);