it-swarm.com.de

So löschen Sie Übersetzungszeichenfolgen in großen Mengen

Ich habe einige Übersetzungen mit dem Gebietsschema-Aktualisierungsmodul importiert, aber die Übersetzungen sind schrecklich und es wäre besser, auf Englisch zurückzukehren.

Wie lösche ich alle importierten Übersetzungen in Drupal 8?

Ich habe ein Problem mit Hinzufügen der Option zum Löschen von D7-Übersetzungszeichenfolgen zur Benutzeroberfläche gefunden, aber ich möchte alle Zeichenfolgen und nicht einzelne Zeichenfolgen massenweise löschen.

Drupal 7 Version dieser Frage

[~ # ~] edit [~ # ~] : Das Löschen der Sprache ist ein Ansatz, aber ich kann das nicht tun, weil ich bereits viel habe von Inhalten in die Sprache übersetzt. Ich möchte den Inhalt, den ich in die Sprache übersetzt habe, beibehalten, aber alle Zeichenfolgen der Benutzeroberfläche löschen, die durch das Lokalisierungsupdate importiert wurden.

2
Patrick Kenny

Wenn Sie ALLE Zeichenfolgen entfernen möchten, die durch die Schnittstellenübersetzung importiert wurden, können Sie Folgendes ausführen:

// Replace the empty string with your target language code.
$langcode = '';
\Drupal::database()
  ->delete('locales_target');
  ->condition('language', $langcode)
  ->condition('customized', 0)
  ->execute();

Möglicherweise möchten Sie auch die Verlaufsinformationen der Quelldatei zurücksetzen, damit Sie - wenn Sie Ihre Meinung später ändern - dieselben Übersetzungen erneut importieren können:

\Drupal::database()
  ->delete('locale_file')
  ->condition('language', $langcode)
  ->execute();

oder

locale_translation_file_history_delete([], [$langcode]);

Da das Gebietsschemamodul statische Caches stark nutzt, können Sie die obigen Befehle in einem dedizierten Prozess ausführen, z. Drush PHP CLI (drush php:cli).

3
Mario Steinitz
  • Vorschlag 1

wenn Sie alle Übersetzungen einer Sprache entfernen möchten, löschen Sie einfach die Sprache in / admin/config/regional/language

  • Vorschlag 2

    wenn es eine bestimmte Zeichenfolge gibt, die nicht übersetzt werden soll, gehen Sie zu locales_source, um diese Zeichenfolgendeckel zu identifizieren, und führen Sie dann den folgenden Code aus (devel/php oder custom hook_update_N oder drush ev ...)

    
$lids = [4, 5];
db_delete('locales_target')->condition('lid', $lids, 'IN')->execute();

hoffe das hilft

1
izus