@gooddata/i18n-toolkit 10.33.0-alpha.9 → 10.33.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/README.md CHANGED
@@ -63,6 +63,10 @@ Turn on validation of HTML marks inside localisation messages.
63
63
 
64
64
  Turn on localisation message id usage validation. This fill turn on feature that try to find if key is really used in application or not. There are more options related to this see [Configuration file](#configuration-file).
65
65
 
66
+ #### Option `-m, --comments`
67
+
68
+ Turn on validation of translation comments. This will check that all translation entries have non-empty comment fields to provide context for translators. The validation will fail with a clear error message when comments are missing.
69
+
66
70
  #### Option `-d, --debug`
67
71
 
68
72
  Turn on debug mode that shows more info on errors and spam console more often that in normal mode.
@@ -104,6 +108,7 @@ module.exports = {
104
108
  intl: true, //OPTIONAL, same as "--intl" option on command line
105
109
  html: true, //OPTIONAL, same as "--html" option on command line
106
110
  usage: true, //OPTIONAL, same as "--usage" option on command line
111
+ comments: true, //OPTIONAL, same as "--comments" option on command line
107
112
  debug: true, //OPTIONAL, same as "--debug" option on command line
108
113
  //REQUIRED if usage=true, source files with code from tool reads and parse usage of localisations messages
109
114
  source: "src/**/*.{ts,js,tsx,jsx}",
package/esm/data.d.ts CHANGED
@@ -12,6 +12,7 @@ export type ToolkitOptions = {
12
12
  html?: boolean;
13
13
  insightToReport?: boolean;
14
14
  usage?: boolean;
15
+ comments?: boolean;
15
16
  debug?: boolean;
16
17
  };
17
18
  export declare const DefaultConfigName = ".i18nrc.cjs";
package/esm/data.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"data.d.ts","sourceRoot":"","sources":["../src/data.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,aAAa,eAAe,CAAC;AAE1C,eAAO,MAAM,gBAAgB,aAAa,CAAC;AAC3C,eAAO,MAAM,eAAe,YAAY,CAAC;AAEzC,eAAO,MAAM,kBAAkB,cAAc,CAAC;AAC9C,eAAO,MAAM,iBAAiB,aAAa,CAAC;AAE5C,MAAM,MAAM,cAAc,GAAG;IACzB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF,eAAO,MAAM,iBAAiB,gBAAgB,CAAC;AAE/C,MAAM,MAAM,iBAAiB,GAAG,IAAI,CAAC,cAAc,EAAE,KAAK,CAAC,GAAG;IAC1D,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,sBAAsB,EAAE,CAAC;CACpC,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACjC,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACxB,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC3B,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,MAAM,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF,eAAO,MAAM,YAAY,iBAAiB,CAAC;AAE3C,MAAM,MAAM,WAAW,GAAG;IACtB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,EAAE;QACH,SAAS,EAAE,MAAM,CAAC;QAClB,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,IAAI,EAAE;QACF,eAAe,EAAE,MAAM,EAAE,CAAC;QAC1B,cAAc,EAAE,MAAM,EAAE,CAAC;QACzB,eAAe,EAAE,MAAM,EAAE,CAAC;KAC7B,CAAC;CACL,CAAC"}
1
+ {"version":3,"file":"data.d.ts","sourceRoot":"","sources":["../src/data.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,aAAa,eAAe,CAAC;AAE1C,eAAO,MAAM,gBAAgB,aAAa,CAAC;AAC3C,eAAO,MAAM,eAAe,YAAY,CAAC;AAEzC,eAAO,MAAM,kBAAkB,cAAc,CAAC;AAC9C,eAAO,MAAM,iBAAiB,aAAa,CAAC;AAE5C,MAAM,MAAM,cAAc,GAAG;IACzB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF,eAAO,MAAM,iBAAiB,gBAAgB,CAAC;AAE/C,MAAM,MAAM,iBAAiB,GAAG,IAAI,CAAC,cAAc,EAAE,KAAK,CAAC,GAAG;IAC1D,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,sBAAsB,EAAE,CAAC;CACpC,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACjC,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACxB,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC3B,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,MAAM,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF,eAAO,MAAM,YAAY,iBAAiB,CAAC;AAE3C,MAAM,MAAM,WAAW,GAAG;IACtB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,EAAE;QACH,SAAS,EAAE,MAAM,CAAC;QAClB,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,IAAI,EAAE;QACF,eAAe,EAAE,MAAM,EAAE,CAAC;QAC1B,cAAc,EAAE,MAAM,EAAE,CAAC;QACzB,eAAe,EAAE,MAAM,EAAE,CAAC;KAC7B,CAAC;CACL,CAAC"}
package/esm/data.js CHANGED
@@ -1,4 +1,4 @@
1
- // (C) 2021-2024 GoodData Corporation
1
+ // (C) 2021-2025 GoodData Corporation
2
2
  export const DefaultLocale = "en-US.json";
3
3
  export const CheckInsightPipe = "|insight";
4
4
  export const CheckReportPipe = "|report";
package/esm/data.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"data.js","sourceRoot":"","sources":["../src/data.ts"],"names":[],"mappings":"AAAA,qCAAqC;AAErC,MAAM,CAAC,MAAM,aAAa,GAAG,YAAY,CAAC;AAE1C,MAAM,CAAC,MAAM,gBAAgB,GAAG,UAAU,CAAC;AAC3C,MAAM,CAAC,MAAM,eAAe,GAAG,SAAS,CAAC;AAEzC,MAAM,CAAC,MAAM,kBAAkB,GAAG,WAAW,CAAC;AAC9C,MAAM,CAAC,MAAM,iBAAiB,GAAG,UAAU,CAAC;AAc5C,MAAM,CAAC,MAAM,iBAAiB,GAAG,aAAa,CAAC;AAc/C,MAAM,CAAC,MAAM,YAAY,GAAG,cAAc,CAAC"}
1
+ {"version":3,"file":"data.js","sourceRoot":"","sources":["../src/data.ts"],"names":[],"mappings":"AAAA,qCAAqC;AAErC,MAAM,CAAC,MAAM,aAAa,GAAG,YAAY,CAAC;AAE1C,MAAM,CAAC,MAAM,gBAAgB,GAAG,UAAU,CAAC;AAC3C,MAAM,CAAC,MAAM,eAAe,GAAG,SAAS,CAAC;AAEzC,MAAM,CAAC,MAAM,kBAAkB,GAAG,WAAW,CAAC;AAC9C,MAAM,CAAC,MAAM,iBAAiB,GAAG,UAAU,CAAC;AAe5C,MAAM,CAAC,MAAM,iBAAiB,GAAG,aAAa,CAAC;AAc/C,MAAM,CAAC,MAAM,YAAY,GAAG,cAAc,CAAC"}
package/esm/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- // (C) 2021-2022 GoodData Corporation
2
+ // (C) 2021-2025 GoodData Corporation
3
3
  import { program } from "commander";
4
4
  import { DefaultConfigName } from "./data.js";
5
5
  import { validate } from "./validate.js";
@@ -41,6 +41,7 @@ program
41
41
  .option("-h, --html", "enable html check")
42
42
  .option("-r, --insightToReport", "enable insightToReport check")
43
43
  .option("-u, --usage", "enable usage of messages check")
44
+ .option("-m, --comments", "enable comment validation check")
44
45
  .option("-d, --debug", "enable debug mode")
45
46
  .action(async (opts) => {
46
47
  const cwd = opts.cwd || process.cwd();
package/esm/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,qCAAqC;AAErC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,iBAAiB,EAAqC,MAAM,WAAW,CAAC;AACjF,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,oBAAoB,CAAC;AAE3D,KAAK,UAAU,UAAU,CAAC,GAAW,EAAE,IAAoB;IACvD,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;IAEvB,IAAI,CAAC;QACD,OAAO,MAAM,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACtC,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAChB,EAAE,CAAC,KAAK,CAAC,CAAC;QACV,IAAI,CAAC,2CAA2C,EAAE,IAAI,CAAC,CAAC;QACxD,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAClB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;AACL,CAAC;AAED,KAAK,UAAU,aAAa,CAAC,GAAW,EAAE,MAAyB;IAC/D,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC;IAEzB,IAAI,CAAC;QACD,MAAM,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QAC5B,EAAE,CAAC,KAAK,CAAC,CAAC;QACV,IAAI,CAAC,0BAA0B,EAAE,IAAI,CAAC,CAAC;QACvC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAChB,EAAE,CAAC,KAAK,CAAC,CAAC;QACV,IAAI,CAAC,4BAA4B,EAAE,IAAI,CAAC,CAAC;QACzC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAClB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;AACL,CAAC;AAED,OAAO;KACF,MAAM,CAAC,kBAAkB,EAAE,kDAAkD,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC;KAC9F,MAAM,CAAC,uBAAuB,EAAE,+CAA+C,CAAC;KAChF,MAAM,CAAC,qBAAqB,EAAE,oCAAoC,iBAAiB,GAAG,CAAC;KACvF,MAAM,CAAC,iBAAiB,EAAE,wBAAwB,CAAC;KACnD,MAAM,CAAC,YAAY,EAAE,mBAAmB,CAAC;KACzC,MAAM,CAAC,YAAY,EAAE,mBAAmB,CAAC;KACzC,MAAM,CAAC,uBAAuB,EAAE,8BAA8B,CAAC;KAC/D,MAAM,CAAC,aAAa,EAAE,gCAAgC,CAAC;KACvD,MAAM,CAAC,aAAa,EAAE,mBAAmB,CAAC;KAC1C,MAAM,CAAC,KAAK,EAAE,IAAoB,EAAE,EAAE;IACnC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IACtC,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAC3C,MAAM,aAAa,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;AACrC,CAAC,CAAC,CAAC;AAEP,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,qCAAqC;AAErC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,iBAAiB,EAAqC,MAAM,WAAW,CAAC;AACjF,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,oBAAoB,CAAC;AAE3D,KAAK,UAAU,UAAU,CAAC,GAAW,EAAE,IAAoB;IACvD,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;IAEvB,IAAI,CAAC;QACD,OAAO,MAAM,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACtC,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAChB,EAAE,CAAC,KAAK,CAAC,CAAC;QACV,IAAI,CAAC,2CAA2C,EAAE,IAAI,CAAC,CAAC;QACxD,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAClB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;AACL,CAAC;AAED,KAAK,UAAU,aAAa,CAAC,GAAW,EAAE,MAAyB;IAC/D,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC;IAEzB,IAAI,CAAC;QACD,MAAM,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QAC5B,EAAE,CAAC,KAAK,CAAC,CAAC;QACV,IAAI,CAAC,0BAA0B,EAAE,IAAI,CAAC,CAAC;QACvC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAChB,EAAE,CAAC,KAAK,CAAC,CAAC;QACV,IAAI,CAAC,4BAA4B,EAAE,IAAI,CAAC,CAAC;QACzC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAClB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;AACL,CAAC;AAED,OAAO;KACF,MAAM,CAAC,kBAAkB,EAAE,kDAAkD,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC;KAC9F,MAAM,CAAC,uBAAuB,EAAE,+CAA+C,CAAC;KAChF,MAAM,CAAC,qBAAqB,EAAE,oCAAoC,iBAAiB,GAAG,CAAC;KACvF,MAAM,CAAC,iBAAiB,EAAE,wBAAwB,CAAC;KACnD,MAAM,CAAC,YAAY,EAAE,mBAAmB,CAAC;KACzC,MAAM,CAAC,YAAY,EAAE,mBAAmB,CAAC;KACzC,MAAM,CAAC,uBAAuB,EAAE,8BAA8B,CAAC;KAC/D,MAAM,CAAC,aAAa,EAAE,gCAAgC,CAAC;KACvD,MAAM,CAAC,gBAAgB,EAAE,iCAAiC,CAAC;KAC3D,MAAM,CAAC,aAAa,EAAE,mBAAmB,CAAC;KAC1C,MAAM,CAAC,KAAK,EAAE,IAAoB,EAAE,EAAE;IACnC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IACtC,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAC3C,MAAM,aAAa,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;AACrC,CAAC,CAAC,CAAC;AAEP,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../src/validate.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAS9C,wBAAsB,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAiB,iBA0BlE"}
1
+ {"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../src/validate.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAU9C,wBAAsB,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAiB,iBA2BlE"}
package/esm/validate.js CHANGED
@@ -1,4 +1,4 @@
1
- // (C) 2021-2024 GoodData Corporation
1
+ // (C) 2021-2025 GoodData Corporation
2
2
  import * as path from "path";
3
3
  import { getLocalizationFiles, getParsedLocalizations, getLocalizationValues } from "./localizations.js";
4
4
  import { getDefaultLocalesCheck } from "./validations/defaultLocales.js";
@@ -7,6 +7,7 @@ import { getIntlMessageFormatCheck } from "./validations/messageFormat.js";
7
7
  import { getHtmlSyntaxCheck } from "./validations/htmlSyntax.js";
8
8
  import { getInsightToReportCheck } from "./validations/insightToReport.js";
9
9
  import { getUsageMessagesCheck } from "./validations/messagesUsage.js";
10
+ import { getCommentValidationCheck } from "./validations/commentValidation.js";
10
11
  export async function validate(cwd, opts) {
11
12
  const { paths = [], insightToReport } = opts;
12
13
  if (Array.isArray(paths) && paths.length === 0) {
@@ -17,6 +18,7 @@ export async function validate(cwd, opts) {
17
18
  const localizationValues = getLocalizationValues(localizations);
18
19
  await getDefaultLocalesCheck(localizationPaths, localizations, opts.debug);
19
20
  await getStructureCheck(localizations, opts.structure || false, opts.debug);
21
+ await getCommentValidationCheck(localizations, opts.comments || false, opts.debug);
20
22
  await getIntlMessageFormatCheck(localizationValues, opts.intl || false, opts.debug);
21
23
  await getHtmlSyntaxCheck(localizationValues, opts.html || false, opts.debug);
22
24
  await getInsightToReportCheck(localizations, opts.insightToReport || false, opts.debug);
@@ -1 +1 @@
1
- {"version":3,"file":"validate.js","sourceRoot":"","sources":["../src/validate.ts"],"names":[],"mappings":"AAAA,qCAAqC;AAErC,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAE7B,OAAO,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AACzG,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AACzE,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAC3E,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,EAAE,uBAAuB,EAAE,MAAM,kCAAkC,CAAC;AAC3E,OAAO,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AAEvE,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,GAAW,EAAE,IAAuB;IAC/D,MAAM,EAAE,KAAK,GAAG,EAAE,EAAE,eAAe,EAAE,GAAG,IAAI,CAAC;IAE7C,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC7C,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;IACvD,CAAC;IAED,MAAM,iBAAiB,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;IAElE,MAAM,aAAa,GAAG,sBAAsB,CAAC,MAAM,oBAAoB,CAAC,iBAAiB,CAAC,CAAC,CAAC;IAC5F,MAAM,kBAAkB,GAAG,qBAAqB,CAAC,aAAa,CAAC,CAAC;IAEhE,MAAM,sBAAsB,CAAC,iBAAiB,EAAE,aAAa,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IAC3E,MAAM,iBAAiB,CAAC,aAAa,EAAE,IAAI,CAAC,SAAS,IAAI,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IAC5E,MAAM,yBAAyB,CAAC,kBAAkB,EAAE,IAAI,CAAC,IAAI,IAAI,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IACpF,MAAM,kBAAkB,CAAC,kBAAkB,EAAE,IAAI,CAAC,IAAI,IAAI,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IAC7E,MAAM,uBAAuB,CAAC,aAAa,EAAE,IAAI,CAAC,eAAe,IAAI,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IAExF,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAC/B,MAAM,qBAAqB,CACvB,GAAG,EACH,aAAa,EACb,IAAI,CAAC,KAAK,IAAI,KAAK,EACnB,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,EAAE,EAClC,IAAI,CAAC,KAAK,CACb,CAAC;AACN,CAAC"}
1
+ {"version":3,"file":"validate.js","sourceRoot":"","sources":["../src/validate.ts"],"names":[],"mappings":"AAAA,qCAAqC;AAErC,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAE7B,OAAO,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AACzG,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AACzE,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAC3E,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,EAAE,uBAAuB,EAAE,MAAM,kCAAkC,CAAC;AAC3E,OAAO,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AACvE,OAAO,EAAE,yBAAyB,EAAE,MAAM,oCAAoC,CAAC;AAE/E,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,GAAW,EAAE,IAAuB;IAC/D,MAAM,EAAE,KAAK,GAAG,EAAE,EAAE,eAAe,EAAE,GAAG,IAAI,CAAC;IAE7C,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC7C,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;IACvD,CAAC;IAED,MAAM,iBAAiB,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;IAElE,MAAM,aAAa,GAAG,sBAAsB,CAAC,MAAM,oBAAoB,CAAC,iBAAiB,CAAC,CAAC,CAAC;IAC5F,MAAM,kBAAkB,GAAG,qBAAqB,CAAC,aAAa,CAAC,CAAC;IAEhE,MAAM,sBAAsB,CAAC,iBAAiB,EAAE,aAAa,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IAC3E,MAAM,iBAAiB,CAAC,aAAa,EAAE,IAAI,CAAC,SAAS,IAAI,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IAC5E,MAAM,yBAAyB,CAAC,aAAa,EAAE,IAAI,CAAC,QAAQ,IAAI,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IACnF,MAAM,yBAAyB,CAAC,kBAAkB,EAAE,IAAI,CAAC,IAAI,IAAI,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IACpF,MAAM,kBAAkB,CAAC,kBAAkB,EAAE,IAAI,CAAC,IAAI,IAAI,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IAC7E,MAAM,uBAAuB,CAAC,aAAa,EAAE,IAAI,CAAC,eAAe,IAAI,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IAExF,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAC/B,MAAM,qBAAqB,CACvB,GAAG,EACH,aAAa,EACb,IAAI,CAAC,KAAK,IAAI,KAAK,EACnB,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,EAAE,EAClC,IAAI,CAAC,KAAK,CACb,CAAC;AACN,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { LocalesStructure } from "../schema/localization.js";
2
+ export declare function getCommentValidationCheck(localizations: Array<[string, LocalesStructure]>, run: boolean, debug: boolean): Promise<void>;
3
+ //# sourceMappingURL=commentValidation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commentValidation.d.ts","sourceRoot":"","sources":["../../src/validations/commentValidation.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAe,MAAM,2BAA2B,CAAC;AAuC1E,wBAAsB,yBAAyB,CAC3C,aAAa,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC,EAChD,GAAG,EAAE,OAAO,EACZ,KAAK,EAAE,OAAO,GACf,OAAO,CAAC,IAAI,CAAC,CAiBf"}
@@ -0,0 +1,45 @@
1
+ // (C) 2021-2025 GoodData Corporation
2
+ import { message, error, skipped, done, fail } from "../utils/console.js";
3
+ const FILENAME_CHECK_ONLY = "en-US.json";
4
+ const COMMENT_PROPERTY = "comment";
5
+ const COMMENT_LENGTH_MIN = 3;
6
+ function hasValidComment(value) {
7
+ const comment = value[COMMENT_PROPERTY];
8
+ return comment && comment.toString().trim().length >= COMMENT_LENGTH_MIN;
9
+ }
10
+ function collectCommentErrors(localizations, debug) {
11
+ const errors = [];
12
+ for (const [file, content] of localizations) {
13
+ if (!file.includes(FILENAME_CHECK_ONLY)) {
14
+ continue;
15
+ }
16
+ for (const [key, value] of Object.entries(content)) {
17
+ if (typeof value === "string") {
18
+ continue;
19
+ }
20
+ if (!hasValidComment(value)) {
21
+ const errorMessage = ` ${errors.length + 1}. ${key} (${file})`;
22
+ errors.push(errorMessage);
23
+ if (debug) {
24
+ error(new Error(errorMessage));
25
+ }
26
+ }
27
+ }
28
+ }
29
+ return errors;
30
+ }
31
+ export async function getCommentValidationCheck(localizations, run, debug) {
32
+ if (!run) {
33
+ skipped("Comment validation check is skipped", true);
34
+ return;
35
+ }
36
+ message("Comment validation check is starting ...", debug);
37
+ const errors = collectCommentErrors(localizations, debug);
38
+ if (errors.length > 0) {
39
+ const errorMessage = `Missing comments for ${errors.length} strings:\n${errors.join("\n")}`;
40
+ fail(errorMessage, true);
41
+ throw new Error(`Missing translation comments for ${errors.length} strings`);
42
+ }
43
+ done("Done", debug);
44
+ }
45
+ //# sourceMappingURL=commentValidation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commentValidation.js","sourceRoot":"","sources":["../../src/validations/commentValidation.ts"],"names":[],"mappings":"AAAA,qCAAqC;AAGrC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAE1E,MAAM,mBAAmB,GAAG,YAAY,CAAC;AACzC,MAAM,gBAAgB,GAAsB,SAAS,CAAC;AACtD,MAAM,kBAAkB,GAAG,CAAC,CAAC;AAE7B,SAAS,eAAe,CAAC,KAAkB;IACvC,MAAM,OAAO,GAAG,KAAK,CAAC,gBAAgB,CAAC,CAAC;IACxC,OAAO,OAAO,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC,MAAM,IAAI,kBAAkB,CAAC;AAC7E,CAAC;AAED,SAAS,oBAAoB,CAAC,aAAgD,EAAE,KAAc;IAC1F,MAAM,MAAM,GAAa,EAAE,CAAC;IAE5B,KAAK,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,aAAa,EAAE,CAAC;QAC1C,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,CAAC;YACtC,SAAS;QACb,CAAC;QAED,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;YACjD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;gBAC5B,SAAS;YACb,CAAC;YAED,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC1B,MAAM,YAAY,GAAG,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,KAAK,GAAG,KAAK,IAAI,GAAG,CAAC;gBAC/D,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;gBAE1B,IAAI,KAAK,EAAE,CAAC;oBACR,KAAK,CAAC,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC;gBACnC,CAAC;YACL,CAAC;QACL,CAAC;IACL,CAAC;IAED,OAAO,MAAM,CAAC;AAClB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAC3C,aAAgD,EAChD,GAAY,EACZ,KAAc;IAEd,IAAI,CAAC,GAAG,EAAE,CAAC;QACP,OAAO,CAAC,qCAAqC,EAAE,IAAI,CAAC,CAAC;QACrD,OAAO;IACX,CAAC;IAED,OAAO,CAAC,0CAA0C,EAAE,KAAK,CAAC,CAAC;IAE3D,MAAM,MAAM,GAAG,oBAAoB,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;IAE1D,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpB,MAAM,YAAY,GAAG,wBAAwB,MAAM,CAAC,MAAM,cAAc,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAC5F,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;QACzB,MAAM,IAAI,KAAK,CAAC,oCAAoC,MAAM,CAAC,MAAM,UAAU,CAAC,CAAC;IACjF,CAAC;IAED,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AACxB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gooddata/i18n-toolkit",
3
- "version": "10.33.0-alpha.9",
3
+ "version": "10.33.0",
4
4
  "author": "GoodData",
5
5
  "description": "Localization validator to validate localization complexity and intl and html format.",
6
6
  "repository": {