lingo.dev 0.77.7 → 0.78.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/build/cli.mjs CHANGED
@@ -1665,12 +1665,16 @@ function createXcodeStringsdictLoader() {
1665
1665
 
1666
1666
  // src/cli/loaders/xcode-xcstrings.ts
1667
1667
  import _9 from "lodash";
1668
- function createXcodeXcstringsLoader() {
1668
+ function createXcodeXcstringsLoader(defaultLocale) {
1669
1669
  return createLoader({
1670
- async pull(locale, input2) {
1670
+ async pull(locale, input2, initCtx) {
1671
1671
  const resultData = {};
1672
+ const isSourceLanguage = locale === defaultLocale;
1672
1673
  for (const [translationKey, _translationEntity] of Object.entries(input2.strings)) {
1673
1674
  const rootTranslationEntity = _translationEntity;
1675
+ if (rootTranslationEntity.shouldTranslate === false) {
1676
+ continue;
1677
+ }
1674
1678
  const langTranslationEntity = rootTranslationEntity?.localizations?.[locale];
1675
1679
  if (langTranslationEntity) {
1676
1680
  if ("stringUnit" in langTranslationEntity) {
@@ -1686,6 +1690,11 @@ function createXcodeXcstringsLoader() {
1686
1690
  }
1687
1691
  }
1688
1692
  }
1693
+ } else if (isSourceLanguage) {
1694
+ const hasOtherLocalizations = rootTranslationEntity?.localizations && Object.keys(rootTranslationEntity.localizations).length > 0;
1695
+ if (hasOtherLocalizations) {
1696
+ resultData[translationKey] = translationKey;
1697
+ }
1689
1698
  }
1690
1699
  }
1691
1700
  return resultData;
@@ -1693,7 +1702,12 @@ function createXcodeXcstringsLoader() {
1693
1702
  async push(locale, payload, originalInput) {
1694
1703
  const langDataToMerge = {};
1695
1704
  langDataToMerge.strings = {};
1705
+ const input2 = _9.cloneDeep(originalInput) || { sourceLanguage: locale, strings: {} };
1696
1706
  for (const [key, value] of Object.entries(payload)) {
1707
+ if (value === null || value === void 0) {
1708
+ continue;
1709
+ }
1710
+ const hasDoNotTranslateFlag = originalInput && originalInput.strings && originalInput.strings[key] && originalInput.strings[key].shouldTranslate === false;
1697
1711
  if (typeof value === "string") {
1698
1712
  langDataToMerge.strings[key] = {
1699
1713
  extractionState: "manual",
@@ -1706,6 +1720,9 @@ function createXcodeXcstringsLoader() {
1706
1720
  }
1707
1721
  }
1708
1722
  };
1723
+ if (hasDoNotTranslateFlag) {
1724
+ langDataToMerge.strings[key].shouldTranslate = false;
1725
+ }
1709
1726
  } else {
1710
1727
  const updatedVariations = {};
1711
1728
  for (const form in value) {
@@ -1726,6 +1743,9 @@ function createXcodeXcstringsLoader() {
1726
1743
  }
1727
1744
  }
1728
1745
  };
1746
+ if (hasDoNotTranslateFlag) {
1747
+ langDataToMerge.strings[key].shouldTranslate = false;
1748
+ }
1729
1749
  }
1730
1750
  }
1731
1751
  const result = _9.merge({}, originalInput, langDataToMerge);
@@ -2840,7 +2860,7 @@ function escapePhpString(str) {
2840
2860
  }
2841
2861
 
2842
2862
  // src/cli/loaders/index.ts
2843
- function createBucketLoader(bucketType, bucketPathPattern, { isCacheRestore = false } = {}) {
2863
+ function createBucketLoader(bucketType, bucketPathPattern, options) {
2844
2864
  switch (bucketType) {
2845
2865
  default:
2846
2866
  throw new Error(`Unsupported bucket type: ${bucketType}`);
@@ -2850,7 +2870,7 @@ function createBucketLoader(bucketType, bucketPathPattern, { isCacheRestore = fa
2850
2870
  createAndroidLoader(),
2851
2871
  createFlatLoader(),
2852
2872
  createSyncLoader(),
2853
- createUnlocalizableLoader(isCacheRestore)
2873
+ createUnlocalizableLoader(options.isCacheRestore)
2854
2874
  );
2855
2875
  case "csv":
2856
2876
  return composeLoaders(
@@ -2858,7 +2878,7 @@ function createBucketLoader(bucketType, bucketPathPattern, { isCacheRestore = fa
2858
2878
  createCsvLoader(),
2859
2879
  createFlatLoader(),
2860
2880
  createSyncLoader(),
2861
- createUnlocalizableLoader(isCacheRestore)
2881
+ createUnlocalizableLoader(options.isCacheRestore)
2862
2882
  );
2863
2883
  case "html":
2864
2884
  return composeLoaders(
@@ -2866,7 +2886,7 @@ function createBucketLoader(bucketType, bucketPathPattern, { isCacheRestore = fa
2866
2886
  createPrettierLoader({ parser: "html", alwaysFormat: true }),
2867
2887
  createHtmlLoader(),
2868
2888
  createSyncLoader(),
2869
- createUnlocalizableLoader(isCacheRestore)
2889
+ createUnlocalizableLoader(options.isCacheRestore)
2870
2890
  );
2871
2891
  case "json":
2872
2892
  return composeLoaders(
@@ -2875,7 +2895,7 @@ function createBucketLoader(bucketType, bucketPathPattern, { isCacheRestore = fa
2875
2895
  createJsonLoader(),
2876
2896
  createFlatLoader(),
2877
2897
  createSyncLoader(),
2878
- createUnlocalizableLoader(isCacheRestore)
2898
+ createUnlocalizableLoader(options.isCacheRestore)
2879
2899
  );
2880
2900
  case "markdown":
2881
2901
  return composeLoaders(
@@ -2883,7 +2903,7 @@ function createBucketLoader(bucketType, bucketPathPattern, { isCacheRestore = fa
2883
2903
  createPrettierLoader({ parser: "markdown" }),
2884
2904
  createMarkdownLoader(),
2885
2905
  createSyncLoader(),
2886
- createUnlocalizableLoader(isCacheRestore)
2906
+ createUnlocalizableLoader(options.isCacheRestore)
2887
2907
  );
2888
2908
  case "po":
2889
2909
  return composeLoaders(
@@ -2891,7 +2911,7 @@ function createBucketLoader(bucketType, bucketPathPattern, { isCacheRestore = fa
2891
2911
  createPoLoader(),
2892
2912
  createFlatLoader(),
2893
2913
  createSyncLoader(),
2894
- createUnlocalizableLoader(isCacheRestore),
2914
+ createUnlocalizableLoader(options.isCacheRestore),
2895
2915
  createVariableLoader({ type: "python" })
2896
2916
  );
2897
2917
  case "properties":
@@ -2899,14 +2919,14 @@ function createBucketLoader(bucketType, bucketPathPattern, { isCacheRestore = fa
2899
2919
  createTextFileLoader(bucketPathPattern),
2900
2920
  createPropertiesLoader(),
2901
2921
  createSyncLoader(),
2902
- createUnlocalizableLoader(isCacheRestore)
2922
+ createUnlocalizableLoader(options.isCacheRestore)
2903
2923
  );
2904
2924
  case "xcode-strings":
2905
2925
  return composeLoaders(
2906
2926
  createTextFileLoader(bucketPathPattern),
2907
2927
  createXcodeStringsLoader(),
2908
2928
  createSyncLoader(),
2909
- createUnlocalizableLoader(isCacheRestore)
2929
+ createUnlocalizableLoader(options.isCacheRestore)
2910
2930
  );
2911
2931
  case "xcode-stringsdict":
2912
2932
  return composeLoaders(
@@ -2914,17 +2934,17 @@ function createBucketLoader(bucketType, bucketPathPattern, { isCacheRestore = fa
2914
2934
  createXcodeStringsdictLoader(),
2915
2935
  createFlatLoader(),
2916
2936
  createSyncLoader(),
2917
- createUnlocalizableLoader(isCacheRestore)
2937
+ createUnlocalizableLoader(options.isCacheRestore)
2918
2938
  );
2919
2939
  case "xcode-xcstrings":
2920
2940
  return composeLoaders(
2921
2941
  createTextFileLoader(bucketPathPattern),
2922
2942
  createPlutilJsonTextLoader(),
2923
2943
  createJsonLoader(),
2924
- createXcodeXcstringsLoader(),
2944
+ createXcodeXcstringsLoader(options.defaultLocale),
2925
2945
  createFlatLoader(),
2926
2946
  createSyncLoader(),
2927
- createUnlocalizableLoader(isCacheRestore),
2947
+ createUnlocalizableLoader(options.isCacheRestore),
2928
2948
  createVariableLoader({ type: "ieee" })
2929
2949
  );
2930
2950
  case "yaml":
@@ -2934,7 +2954,7 @@ function createBucketLoader(bucketType, bucketPathPattern, { isCacheRestore = fa
2934
2954
  createYamlLoader(),
2935
2955
  createFlatLoader(),
2936
2956
  createSyncLoader(),
2937
- createUnlocalizableLoader(isCacheRestore)
2957
+ createUnlocalizableLoader(options.isCacheRestore)
2938
2958
  );
2939
2959
  case "yaml-root-key":
2940
2960
  return composeLoaders(
@@ -2944,7 +2964,7 @@ function createBucketLoader(bucketType, bucketPathPattern, { isCacheRestore = fa
2944
2964
  createRootKeyLoader(true),
2945
2965
  createFlatLoader(),
2946
2966
  createSyncLoader(),
2947
- createUnlocalizableLoader(isCacheRestore)
2967
+ createUnlocalizableLoader(options.isCacheRestore)
2948
2968
  );
2949
2969
  case "flutter":
2950
2970
  return composeLoaders(
@@ -2954,7 +2974,7 @@ function createBucketLoader(bucketType, bucketPathPattern, { isCacheRestore = fa
2954
2974
  createFlutterLoader(),
2955
2975
  createFlatLoader(),
2956
2976
  createSyncLoader(),
2957
- createUnlocalizableLoader(isCacheRestore)
2977
+ createUnlocalizableLoader(options.isCacheRestore)
2958
2978
  );
2959
2979
  case "xliff":
2960
2980
  return composeLoaders(
@@ -2962,7 +2982,7 @@ function createBucketLoader(bucketType, bucketPathPattern, { isCacheRestore = fa
2962
2982
  createXliffLoader(),
2963
2983
  createFlatLoader(),
2964
2984
  createSyncLoader(),
2965
- createUnlocalizableLoader(isCacheRestore)
2985
+ createUnlocalizableLoader(options.isCacheRestore)
2966
2986
  );
2967
2987
  case "xml":
2968
2988
  return composeLoaders(
@@ -2970,28 +2990,28 @@ function createBucketLoader(bucketType, bucketPathPattern, { isCacheRestore = fa
2970
2990
  createXmlLoader(),
2971
2991
  createFlatLoader(),
2972
2992
  createSyncLoader(),
2973
- createUnlocalizableLoader(isCacheRestore)
2993
+ createUnlocalizableLoader(options.isCacheRestore)
2974
2994
  );
2975
2995
  case "srt":
2976
2996
  return composeLoaders(
2977
2997
  createTextFileLoader(bucketPathPattern),
2978
2998
  createSrtLoader(),
2979
2999
  createSyncLoader(),
2980
- createUnlocalizableLoader(isCacheRestore)
3000
+ createUnlocalizableLoader(options.isCacheRestore)
2981
3001
  );
2982
3002
  case "dato":
2983
3003
  return composeLoaders(
2984
3004
  createDatoLoader(bucketPathPattern),
2985
3005
  createSyncLoader(),
2986
3006
  createFlatLoader(),
2987
- createUnlocalizableLoader(isCacheRestore)
3007
+ createUnlocalizableLoader(options.isCacheRestore)
2988
3008
  );
2989
3009
  case "vtt":
2990
3010
  return composeLoaders(
2991
3011
  createTextFileLoader(bucketPathPattern),
2992
3012
  createVttLoader(),
2993
3013
  createSyncLoader(),
2994
- createUnlocalizableLoader(isCacheRestore)
3014
+ createUnlocalizableLoader(options.isCacheRestore)
2995
3015
  );
2996
3016
  case "php":
2997
3017
  return composeLoaders(
@@ -2999,7 +3019,7 @@ function createBucketLoader(bucketType, bucketPathPattern, { isCacheRestore = fa
2999
3019
  createPhpLoader(),
3000
3020
  createSyncLoader(),
3001
3021
  createFlatLoader(),
3002
- createUnlocalizableLoader()
3022
+ createUnlocalizableLoader(options.isCacheRestore)
3003
3023
  );
3004
3024
  }
3005
3025
  }
@@ -3185,7 +3205,10 @@ var i18n_default = new Command6().command("i18n").description("Run Localization
3185
3205
  for (const bucket of buckets) {
3186
3206
  for (const bucketConfig of bucket.config) {
3187
3207
  const sourceLocale = resolveOverridenLocale3(i18nConfig.locale.source, bucketConfig.delimiter);
3188
- const bucketLoader = createBucketLoader(bucket.type, bucketConfig.pathPattern);
3208
+ const bucketLoader = createBucketLoader(bucket.type, bucketConfig.pathPattern, {
3209
+ isCacheRestore: false,
3210
+ defaultLocale: sourceLocale
3211
+ });
3189
3212
  bucketLoader.setDefaultLocale(sourceLocale);
3190
3213
  await bucketLoader.init();
3191
3214
  const sourceData = await bucketLoader.pull(i18nConfig.locale.source);
@@ -3207,7 +3230,10 @@ var i18n_default = new Command6().command("i18n").description("Run Localization
3207
3230
  const bucketOra = Ora5({ indent: 4 });
3208
3231
  bucketOra.info(`Processing path: ${bucketConfig.pathPattern}`);
3209
3232
  const sourceLocale = resolveOverridenLocale3(i18nConfig.locale.source, bucketConfig.delimiter);
3210
- const bucketLoader = createBucketLoader(bucket.type, bucketConfig.pathPattern, { isCacheRestore: true });
3233
+ const bucketLoader = createBucketLoader(bucket.type, bucketConfig.pathPattern, {
3234
+ isCacheRestore: true,
3235
+ defaultLocale: sourceLocale
3236
+ });
3211
3237
  bucketLoader.setDefaultLocale(sourceLocale);
3212
3238
  await bucketLoader.init();
3213
3239
  const sourceData = await bucketLoader.pull(sourceLocale);
@@ -3242,7 +3268,10 @@ var i18n_default = new Command6().command("i18n").description("Run Localization
3242
3268
  for (const bucket of buckets) {
3243
3269
  for (const bucketConfig of bucket.config) {
3244
3270
  const sourceLocale = resolveOverridenLocale3(i18nConfig.locale.source, bucketConfig.delimiter);
3245
- const bucketLoader = createBucketLoader(bucket.type, bucketConfig.pathPattern);
3271
+ const bucketLoader = createBucketLoader(bucket.type, bucketConfig.pathPattern, {
3272
+ isCacheRestore: false,
3273
+ defaultLocale: sourceLocale
3274
+ });
3246
3275
  bucketLoader.setDefaultLocale(sourceLocale);
3247
3276
  await bucketLoader.init();
3248
3277
  const sourceData = await bucketLoader.pull(i18nConfig.locale.source);
@@ -3268,7 +3297,10 @@ var i18n_default = new Command6().command("i18n").description("Run Localization
3268
3297
  for (const bucketConfig of bucket.config) {
3269
3298
  const bucketOra = Ora5({ indent: 2 }).info(`Processing path: ${bucketConfig.pathPattern}`);
3270
3299
  const sourceLocale = resolveOverridenLocale3(i18nConfig.locale.source, bucketConfig.delimiter);
3271
- const bucketLoader = createBucketLoader(bucket.type, bucketConfig.pathPattern);
3300
+ const bucketLoader = createBucketLoader(bucket.type, bucketConfig.pathPattern, {
3301
+ isCacheRestore: false,
3302
+ defaultLocale: sourceLocale
3303
+ });
3272
3304
  bucketLoader.setDefaultLocale(sourceLocale);
3273
3305
  await bucketLoader.init();
3274
3306
  let sourceData = await bucketLoader.pull(sourceLocale);
@@ -3592,7 +3624,7 @@ var lockfile_default = new Command7().command("lockfile").description("Create a
3592
3624
  for (const bucket of buckets) {
3593
3625
  for (const bucketConfig of bucket.config) {
3594
3626
  const sourceLocale = resolveOverridenLocale4(i18nConfig.locale.source, bucketConfig.delimiter);
3595
- const bucketLoader = createBucketLoader(bucket.type, bucketConfig.pathPattern);
3627
+ const bucketLoader = createBucketLoader(bucket.type, bucketConfig.pathPattern, { isCacheRestore: false, defaultLocale: sourceLocale });
3596
3628
  bucketLoader.setDefaultLocale(sourceLocale);
3597
3629
  const sourceData = await bucketLoader.pull(sourceLocale);
3598
3630
  lockfileHelper.registerSourceData(bucketConfig.pathPattern, sourceData);
@@ -3629,7 +3661,7 @@ var cleanup_default = new Command8().command("cleanup").description("Remove keys
3629
3661
  for (const bucketConfig of bucket.config) {
3630
3662
  const sourceLocale = resolveOverridenLocale5(i18nConfig.locale.source, bucketConfig.delimiter);
3631
3663
  const bucketOra = Ora7({ indent: 2 }).info(`Processing path: ${bucketConfig.pathPattern}`);
3632
- const bucketLoader = createBucketLoader(bucket.type, bucketConfig.pathPattern);
3664
+ const bucketLoader = createBucketLoader(bucket.type, bucketConfig.pathPattern, { isCacheRestore: false, defaultLocale: sourceLocale });
3633
3665
  bucketLoader.setDefaultLocale(sourceLocale);
3634
3666
  const sourceData = await bucketLoader.pull(sourceLocale);
3635
3667
  const sourceKeys = Object.keys(sourceData);
@@ -3752,7 +3784,7 @@ var mcp_default = new Command9().command("mcp").description("Use Lingo.dev model
3752
3784
  // package.json
3753
3785
  var package_default = {
3754
3786
  name: "lingo.dev",
3755
- version: "0.77.7",
3787
+ version: "0.78.0",
3756
3788
  description: "Lingo.dev CLI",
3757
3789
  private: false,
3758
3790
  publishConfig: {