slang-i18n / slang

Type-safe i18n for Dart and Flutter
https://pub.dev/packages/slang
MIT License
459 stars 39 forks source link

slang_gpt duplicate keys when there are modifiers #192

Closed aureat closed 7 months ago

aureat commented 7 months ago

Hi, I've recently started using slang. And it's a great solution for flutter localization :)

I keep my translations in a yaml format. Whenever there are modifiers in a key, slang_gpt adds the same key both with and without modifiers. Example:

Base Locale:

locale(map):
  tr: "Turkish"
  en: "English"

Generated:

locale(map):
  tr: "Turkish"
  en: "English"
locale:
  tr: "Turkish"
  en: "English"

GPT logs show no duplication. The duplication seems to arise when applyMapRecursive from package:slang/src/runner/apply.dart is called on line 293 in package:slang_gpt/lib/runner.dart.

      result = applyMapRecursive(
        baseMap: originalTranslations,
        newMap: response.jsonMessage,
        oldMap: result,
        verbose: false,
      );

When I call print before and after this line,

Before:

result = {}

After:

result = {
  test(context=SomeContext): {please: Bitte, clear: Löschen}, 
  test: {please: Bitte, clear: Löschen}
}
Tienisto commented 7 months ago

Fixed in slang_gpt 0.10.1