У меня есть исходный файл, который содержит переводимые строки. Каждая строка файлов кэша перевода содержит Source string
, затем разделитель / separatpr █
, затем translated string
Оригинальный старый автор написал хороший скрипт очистки, который очищает файлы кэша от дубликатов или удаляет целые строки из кэша, если старый источник больше их не использовал.
Теперь я хотел бы добавить еще одну функцию в этот существующий код (соответствующая часть ниже), а именно: удалить всю строку, когда абсолютно нет ничего ''
после ключа разделения █
для той же строки, что его рассмотрение.
У меня такое чувство, что где-то внизу будет 1 строка кода. Но где эта линия выглядит?
Ваша помощь очень ценится. Заранее большое спасибо.
ФАЙЛ С ТЕКУЩИМ КЕШОМ:
Bla blaaaa bla blaa blaaaaa bla█Bla blaaaa bla blaa blaaaaa bla
Zorro in zeppelin from zimbabwe█
Bla blaaaa bla blaa blaaaaa bla█Bla blaaaa bla blaa blaaaaa bla
Water wave with whistling whale█
ФАЙЛ МОЕЙ ЦЕЛИ:
Bla blaaaa bla blaa blaaaaa bla█Bla blaaaa bla blaa blaaaaa bla
Bla blaaaa bla blaa blaaaaa bla█Bla blaaaa bla blaa blaaaaa bla
СУЩЕСТВУЮЩИЙ КОД:
$translation_key_value_separator = '█';
// Read file contents and create a used keys array
$used_keys = array();
get_used_keys($dir_to_clean, &$used_keys);
// Cleanup translations: removes an entire line from the translation cache file
// if the LEFT part of the █ is not existend (anymore) in the source files.
$removed = array();
$counter = 0;
foreach (glob($dir_translation_files . "/*.$translation_ext") as $filepath) {
$filename = get_filename($filepath);
$key_values = explode("\n", file_get_contents($filepath));
$clean_file = array();
foreach($key_values as $key_value){
list($key, $value) = explode($translation_key_value_separator, $key_value);
if($key != ''){
if(in_array($key, $used_keys)){
$clean_file[] = $key . $translation_key_value_separator . $value;
}else{
$removed[$filename][] = $key;
$counter++;
}
}
}