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);
}