generateStrings static method

void generateStrings(
  1. Map<String, String> strings, {
  2. String languageCode = "",
})

Implementation

static void generateStrings(
  Map<String, String> strings, {
  String languageCode = "",
}) {
  String filePath = "android/app/src/main/res/values/strings.xml";
  if (languageCode != "") {
    filePath = "android/app/src/main/res/values-$languageCode/strings.xml";
  }
  File file = FileCreator.openFile(filePath);
  String content = file.readAsStringSync();
  XmlDocument document = XmlDocument.parse(content);
  XmlElement? resources = document.getElement("resources");

  if (resources == null) {
    log(
      "Eine falsch formatierte Xml-Datei '$filePath' wurde gefunden. Bitte löschen.",
      color: PrintColor.red,
    );
    return;
  }

  // Entferne alle "shortcut_"-Einträge
  resources.children.removeWhere((element) {
    if (element is XmlElement) {
      final name = element.getAttribute("name");
      return name != null && name.startsWith("ssc_");
    }
    return false;
  });

  for (MapEntry<String, String> entry in strings.entries) {
    final newString = XmlElement(
      XmlName("string"),
      [XmlAttribute(XmlName("name"), entry.key)],
      [XmlText(entry.value)],
    );

    resources.children.add(XmlText("\n  "));
    resources.children.add(newString);
  }

  resources.children.add(XmlText('\n'));
  final updatedXml = document.toXmlString(pretty: true, indent: "  ");
  file.writeAsStringSync(updatedXml);
}