superarts / XStringCatalog

A framework that generates enum from xcstring - Swift enumerations from String Catalog for iOS / iPadOS / macOS / tvOS.
MIT License
4 stars 9 forks source link

StringCatalogEnum: Create Decodable Models to decode xcstrings JSON file #1

Open superarts opened 10 months ago

superarts commented 10 months ago

Currently, only first level keys in the strings object are used to generate enum.

Decodable models should be created so that xcstrings JSON file can be decoded to native objects, to support more features.

For example, if we can extract $key.localizations.en.stringUnit.value, we can add inline documents to enum case, so that when developer option-click a case name, the whole copy of a chosen language (en in this case) will be displayed.

Formats to be supported

Generated from SwiftUI

    "Home" : {

    },

Generated from SwiftUI, and an English translation is added

    "Login" : {
      "localizations" : {
        "en" : {
          "stringUnit" : {
            "state" : "translated",
            "value" : "Login"
          }
        }
      }
    }

Manually added, English only

    "welcomeBack" : {
      "extractionState" : "manual",
      "localizations" : {
        "en" : {
          "stringUnit" : {
            "state" : "translated",
            "value" : "Welcome back"
          }
        }
      }
    },
superarts commented 9 months ago

Thank you @Uni-boy for your PR! We have some remaining works that will be addressed in future: https://github.com/superarts/XStringCatalog/pull/14#discussion_r1442501350