Use MDTlLoader for loading translations

phpcs-errors:226 phpunit-status:successful phpstan-errors:201
This commit is contained in:
Joshua Ramon Enslin 2020-10-29 21:09:20 +01:00 committed by Stefan Rohde-Enslin
parent a8f73a4b86
commit a263c8dd7c
Signed by: jrenslin
GPG Key ID: 46016F84501B70AE
3 changed files with 60 additions and 61 deletions

View File

@ -10,6 +10,7 @@ declare(strict_types = 1);
const TL_FILE_DIRS = [
__DIR__ . "/../l10n/musdb/",
__DIR__ . "/../l10n/importer/",
__DIR__ . "/../classes/MDAllowedValueSets/l18n/",
];

View File

@ -27,7 +27,7 @@ else if (!isset($_SESSION['lang'])) {
}
$lang = $_SESSION['lang'];
require __DIR__ . "/translation-importer/$lang/csvxml-overview.php";
$tlLoader = new MDTlLoader("csxml_start", $lang);
$toInject = '
<script src="assets/js/newToolTip.js" type="text/javascript" defer></script>
@ -39,21 +39,21 @@ echo '
<div class="uploader">
<form enctype="multipart/form-data" action="upload.php" method="POST">
<input type="hidden" id="csrf-token" name="csrf-token" aria-label="Anti-CSRF Token" value="' . htmlspecialchars(getAntiCsrfToken()) . '" />
<label for="fileToUpload">' . $csvxml_overview['select_csv_file_for_upload'] . '</label>
<label for="fileToUpload">' . $tlLoader->tl("csvxml-overview", "csvxml_overview", 'select_csv_file_for_upload') . '</label>
<input name="uploaded" type="file" accept=".csv" id="fileToUpload" required />
<button type="submit">' . $csvxml_overview['upload'] . '</button>
<button type="submit">' . $tlLoader->tl("csvxml-overview", "csvxml_overview", 'upload') . '</button>
</form>
</div>
<div>
<h2>' . $csvxml_overview['currently_approved_tags'] . '</h2>
<h2>' . $tlLoader->tl("csvxml-overview", "csvxml_overview", 'currently_approved_tags') . '</h2>
<div class="options">
<a href="csv.php" class="buttonLike">' . $csvxml_overview['download_csv_all'] . '</a>
<a class="buttonLike invisible" id="csvBySelection">' . $csvxml_overview['download_csv_by_selection'] . '</a>
<a href="csv.php" class="buttonLike">' . $tlLoader->tl("csvxml-overview", "csvxml_overview", 'download_csv_all') . '</a>
<a class="buttonLike invisible" id="csvBySelection">' . $tlLoader->tl("csvxml-overview", "csvxml_overview", 'download_csv_by_selection') . '</a>
<br />
<a class="buttonLike" id="selectRequired">' . $csvxml_overview['select_required_fields'] . '</a>
<a class="buttonLike" id="selectAll">' . $csvxml_overview['select_all_fields'] . '</a>
<a class="buttonLike invisible" id="unsetSelection">' . $csvxml_overview['unset_selection'] . '</a>
<a class="buttonLike" id="selectRequired">' . $tlLoader->tl("csvxml-overview", "csvxml_overview", 'select_required_fields') . '</a>
<a class="buttonLike" id="selectAll">' . $tlLoader->tl("csvxml-overview", "csvxml_overview", 'select_all_fields') . '</a>
<a class="buttonLike invisible" id="unsetSelection">' . $tlLoader->tl("csvxml-overview", "csvxml_overview", 'unset_selection') . '</a>
</div>
';

View File

@ -9,8 +9,6 @@
*/
declare(strict_types = 1);
require __DIR__ . "/../translation-importer/$lang/csvxml-overview.php";
$tlLoader = new MDTlLoader("available_fields", $lang);
foreach (MD_STD::scandir(__DIR__ . "/../l10n/musdb/$lang/") as $fileName) {
@ -30,7 +28,7 @@ if (empty($fieldNoMultiplicator) or !is_numeric($fieldNoMultiplicator)) {
$availableFields = [
$csvxml_overview['object_base_data'] => [
$tlLoader->tl('csvxml-overview', 'csvxml_overview', 'object_base_data') => [
"inventory_number" => [
"required" => true,
"allowedValues" => [],
@ -946,7 +944,7 @@ for ($i = 1; $i <= 5 * $fieldNoMultiplicator; $i++) {
for ($i = 1; $i <= 2 * $fieldNoMultiplicator; $i++) {
$availableFields[$csvxml_overview['object_base_data']]["collection_name{$i}"] = [
$availableFields[$tlLoader->tl('csvxml-overview', 'csvxml_overview', 'object_base_data')]["collection_name{$i}"] = [
"required" => false,
"allowedValues" => [],
"dependsOn" => [],
@ -1018,7 +1016,7 @@ for ($i = 1; $i <= 2 * $fieldNoMultiplicator; $i++) {
"allowedValues" => ["y", "n"],
"dependsOn" => ["related_place{$i}"],
"remark" => '',
"name_human_readable" => "{$event['where']} [{$csvxml_overview['certainty']}]",
"name_human_readable" => "{$event['where']} [" . $tlLoader->tl('csvxml-overview', 'csvxml_overview', 'certainty') . "]",
"explica" => "",
],
]);
@ -1042,7 +1040,7 @@ for ($i = 1; $i <= 2 * $fieldNoMultiplicator; $i++) {
"allowedValues" => ["y", "n"],
"dependsOn" => ["related_actor{$i}"],
"remark" => '',
"name_human_readable" => "{$event['who']} [{$csvxml_overview['certainty']}]",
"name_human_readable" => "{$event['who']} [" . $tlLoader->tl('csvxml-overview', 'csvxml_overview', 'certainty') . "]",
"explica" => "",
],
"related_actor_gnd{$i}" => [
@ -1074,7 +1072,7 @@ for ($i = 1; $i <= 2 * $fieldNoMultiplicator; $i++) {
"allowedValues" => ["y", "n"],
"dependsOn" => ["related_time{$i}"],
"remark" => '',
"name_human_readable" => $event['when'] . " [{$csvxml_overview['certainty']}]",
"name_human_readable" => $event['when'] . " [" . $tlLoader->tl('csvxml-overview', 'csvxml_overview', 'certainty') . "]",
"explica" => "",
],
]);
@ -1092,7 +1090,7 @@ for ($i = 1; $i <= 5 * $fieldNoMultiplicator; $i++) {
"image_owner{$i}", "image_rights{$i}", "image_visible{$i}", "image_main{$i}"
],
"remark" => '',
"name_human_readable" => $csvxml_overview['image_filename'],
"name_human_readable" => $tlLoader->tl('csvxml-overview', 'csvxml_overview', 'image_filename'),
"explica" => "",
],
"image_description{$i}" => [
@ -1190,7 +1188,7 @@ for ($i = 1; $i <= 5 * $fieldNoMultiplicator; $i++) {
"resource_media_type{$i}", "resource_location{$i}", "resource_name{$i}", "resource_owner{$i}", "resource_rights{$i}", "resource_visible{$i}",
],
"remark" => 'e.g. pdf, mp3',
"name_human_readable" => $csvxml_overview['file_format'],
"name_human_readable" => $tlLoader->tl('csvxml-overview', 'csvxml_overview', 'file_format'),
"explica" => "",
],
"resource_location{$i}" => [
@ -1296,23 +1294,23 @@ function getSimpleAvailableFieldEntry(string $nameTL = "", string $explica = "",
* Function for building a generic event type definition.
*
* @param string[] $event Translation variable.
* @param string[] $csvxml_overview Translation variable.
* @param MDTlLoader $tlLoader Translation loader.
* @param string $typeName Translated name of event type.
* @param string $type Event type name (e.g. production).
* @param integer $number Number of event of this type.
*
* @return array
*/
function generateGenericFullEvent(array $event, array $csvxml_overview, string $typeName, string $type, int $number):array {
function generateGenericFullEvent(array $event, MDTlLoader $tlLoader, string $typeName, string $type, int $number):array {
return [
"{$type}_when{$number}" => getSimpleAvailableFieldEntry("{$typeName}: {$event['when']}", "", ["{$type}_when_sure{$number}"]),
"{$type}_when_sure{$number}" => getSimpleAvailableFieldEntry("{$typeName}: {$event['when']} [{$csvxml_overview['certainty']}]", "", ["{$type}_when{$number}"], ["y", "n"]),
"{$type}_when_sure{$number}" => getSimpleAvailableFieldEntry("{$typeName}: {$event['when']} [" . $tlLoader->tl('csvxml-overview', 'csvxml_overview', 'certainty') . "]", "", ["{$type}_when{$number}"], ["y", "n"]),
"{$type}_who{$number}" => getSimpleAvailableFieldEntry("{$typeName}: {$event['who']}", "", ["{$type}_who_sure{$number}"]),
"{$type}_who_sure{$number}" => getSimpleAvailableFieldEntry("{$typeName}: {$event['who']} [{$csvxml_overview['certainty']}]", "", ["{$type}_who{$number}"], ["y", "n"]),
"{$type}_who_sure{$number}" => getSimpleAvailableFieldEntry("{$typeName}: {$event['who']} [" . $tlLoader->tl('csvxml-overview', 'csvxml_overview', 'certainty') . "]", "", ["{$type}_who{$number}"], ["y", "n"]),
"{$type}_who_gnd{$number}" => getSimpleAvailableFieldEntry("{$typeName}: {$event['who']} ({$event['gnd']})", "", ["{$type}_who_sure{$number}", "{$type}_who{$number}"]),
"{$type}_where{$number}" => getSimpleAvailableFieldEntry("{$typeName}: {$event['where']}", "", ["{$type}_where_sure{$number}"]),
"{$type}_where_sure{$number}" => getSimpleAvailableFieldEntry("{$typeName}: {$event['where']} [{$csvxml_overview['certainty']}]", "", ["{$type}_where{$number}"], ["y", "n"]),
"{$type}_where_sure{$number}" => getSimpleAvailableFieldEntry("{$typeName}: {$event['where']} [" . $tlLoader->tl('csvxml-overview', 'csvxml_overview', 'certainty') . "]", "", ["{$type}_where{$number}"], ["y", "n"]),
"{$type}_annotation{$number}" => getSimpleAvailableFieldEntry("{$typeName}: {$event['classic_annotation_intro']}", ""),
];
@ -1321,28 +1319,28 @@ function generateGenericFullEvent(array $event, array $csvxml_overview, string $
for ($i = 1; $i <= 2 * $fieldNoMultiplicator; $i++) {
$availableFields[$basis['event'] . ': ' . $eventname[1]] = array_merge(
$availableFields[$basis['event'] . ': ' . $eventname[1]],
generateGenericFullEvent($event, $csvxml_overview, $eventname[1], "production", $i)
generateGenericFullEvent($event, $tlLoader, $eventname[1], "production", $i)
);
}
for ($i = 1; $i <= 2 * $fieldNoMultiplicator; $i++) {
$availableFields[$basis['event'] . ': ' . $eventname[2]] = array_merge(
$availableFields[$basis['event'] . ': ' . $eventname[2]],
generateGenericFullEvent($event, $csvxml_overview, $eventname[2], "finding", $i)
generateGenericFullEvent($event, $tlLoader, $eventname[2], "finding", $i)
);
}
for ($i = 1; $i <= 2 * $fieldNoMultiplicator; $i++) {
$availableFields[$basis['event'] . ': ' . $eventname[3]] = array_merge(
$availableFields[$basis['event'] . ': ' . $eventname[3]],
generateGenericFullEvent($event, $csvxml_overview, $eventname[3], "publication", $i)
generateGenericFullEvent($event, $tlLoader, $eventname[3], "publication", $i)
);
}
for ($i = 1; $i <= 2 * $fieldNoMultiplicator; $i++) {
$availableFields[$basis['event'] . ': ' . $eventname[4]] = array_merge(
$availableFields[$basis['event'] . ': ' . $eventname[4]],
generateGenericFullEvent($event, $csvxml_overview, $eventname[4], "template_creation", $i)
generateGenericFullEvent($event, $tlLoader, $eventname[4], "template_creation", $i)
);
}
@ -1363,7 +1361,7 @@ for ($i = 1; $i <= 5 * $fieldNoMultiplicator; $i++) {
"allowedValues" => ["y", "n"],
"dependsOn" => ["was_depicted_who{$i}"],
"remark" => '',
"name_human_readable" => $event['who'] . " [{$csvxml_overview['certainty']}]",
"name_human_readable" => $event['who'] . " [" . $tlLoader->tl('csvxml-overview', 'csvxml_overview', 'certainty') . "]",
"explica" => "",
],
]);
@ -1387,7 +1385,7 @@ for ($i = 1; $i <= 5 * $fieldNoMultiplicator; $i++) {
"allowedValues" => ["y", "n"],
"dependsOn" => ["was_depicted_place{$i}"],
"remark" => '',
"name_human_readable" => $event['where'] . " [{$csvxml_overview['certainty']}]",
"name_human_readable" => $event['where'] . " [" . $tlLoader->tl('csvxml-overview', 'csvxml_overview', 'certainty') . "]",
"explica" => "",
],
]);
@ -1397,182 +1395,182 @@ for ($i = 1; $i <= 5 * $fieldNoMultiplicator; $i++) {
for ($i = 1; $i <= 2 * $fieldNoMultiplicator; $i++) {
$availableFields[$basis['event'] . ': ' . $eventname[6]] = array_merge(
$availableFields[$basis['event'] . ': ' . $eventname[6]],
generateGenericFullEvent($event, $csvxml_overview, $eventname[6], "was_used", $i)
generateGenericFullEvent($event, $tlLoader, $eventname[6], "was_used", $i)
);
}
for ($i = 1; $i <= 2 * $fieldNoMultiplicator; $i++) {
$availableFields[$basis['event'] . ': ' . $eventname[7]] = array_merge(
$availableFields[$basis['event'] . ': ' . $eventname[7]],
generateGenericFullEvent($event, $csvxml_overview, $eventname[7], "written", $i)
generateGenericFullEvent($event, $tlLoader, $eventname[7], "written", $i)
);
}
for ($i = 1; $i <= 2 * $fieldNoMultiplicator; $i++) {
$availableFields[$basis['event'] . ': ' . $eventname[8]] = array_merge(
$availableFields[$basis['event'] . ': ' . $eventname[8]],
generateGenericFullEvent($event, $csvxml_overview, $eventname[8], "collected", $i)
generateGenericFullEvent($event, $tlLoader, $eventname[8], "collected", $i)
);
}
for ($i = 1; $i <= 2 * $fieldNoMultiplicator; $i++) {
$availableFields[$basis['event'] . ': ' . $eventname[9]] = array_merge(
$availableFields[$basis['event'] . ': ' . $eventname[9]],
generateGenericFullEvent($event, $csvxml_overview, $eventname[9], "painted", $i)
generateGenericFullEvent($event, $tlLoader, $eventname[9], "painted", $i)
);
}
for ($i = 1; $i <= 2 * $fieldNoMultiplicator; $i++) {
$availableFields[$basis['event'] . ': ' . $eventname[10]] = array_merge(
$availableFields[$basis['event'] . ': ' . $eventname[10]],
generateGenericFullEvent($event, $csvxml_overview, $eventname[10], "taken", $i)
generateGenericFullEvent($event, $tlLoader, $eventname[10], "taken", $i)
);
}
for ($i = 1; $i <= 2 * $fieldNoMultiplicator; $i++) {
$availableFields[$basis['event'] . ': ' . $eventname[11]] = array_merge(
$availableFields[$basis['event'] . ': ' . $eventname[11]],
generateGenericFullEvent($event, $csvxml_overview, $eventname[11], "received", $i)
generateGenericFullEvent($event, $tlLoader, $eventname[11], "received", $i)
);
}
for ($i = 1; $i <= 2 * $fieldNoMultiplicator; $i++) {
$availableFields[$basis['event'] . ': ' . $eventname[12]] = array_merge(
$availableFields[$basis['event'] . ': ' . $eventname[12]],
generateGenericFullEvent($event, $csvxml_overview, $eventname[12], "printing_plate_produced", $i)
generateGenericFullEvent($event, $tlLoader, $eventname[12], "printing_plate_produced", $i)
);
}
for ($i = 1; $i <= 2 * $fieldNoMultiplicator; $i++) {
$availableFields[$basis['event'] . ': ' . $eventname[13]] = array_merge(
$availableFields[$basis['event'] . ': ' . $eventname[13]],
generateGenericFullEvent($event, $csvxml_overview, $eventname[13], "sent", $i)
generateGenericFullEvent($event, $tlLoader, $eventname[13], "sent", $i)
);
}
for ($i = 1; $i <= 2 * $fieldNoMultiplicator; $i++) {
$availableFields[$basis['event'] . ': ' . $eventname[14]] = array_merge(
$availableFields[$basis['event'] . ': ' . $eventname[14]],
generateGenericFullEvent($event, $csvxml_overview, $eventname[14], "issued", $i)
generateGenericFullEvent($event, $tlLoader, $eventname[14], "issued", $i)
);
}
for ($i = 1; $i <= 2 * $fieldNoMultiplicator; $i++) {
$availableFields[$basis['event'] . ': ' . $eventname[15]] = array_merge(
$availableFields[$basis['event'] . ': ' . $eventname[15]],
generateGenericFullEvent($event, $csvxml_overview, $eventname[15], "signed", $i)
generateGenericFullEvent($event, $tlLoader, $eventname[15], "signed", $i)
);
}
for ($i = 1; $i <= 2 * $fieldNoMultiplicator; $i++) {
$availableFields[$basis['event'] . ': ' . $eventname[16]] = array_merge(
$availableFields[$basis['event'] . ': ' . $eventname[16]],
generateGenericFullEvent($event, $csvxml_overview, $eventname[16], "type_described", $i)
generateGenericFullEvent($event, $tlLoader, $eventname[16], "type_described", $i)
);
}
for ($i = 1; $i <= 2 * $fieldNoMultiplicator; $i++) {
$availableFields[$basis['event'] . ': ' . $eventname[19]] = array_merge(
$availableFields[$basis['event'] . ': ' . $eventname[19]],
generateGenericFullEvent($event, $csvxml_overview, $eventname[19], "drawn", $i)
generateGenericFullEvent($event, $tlLoader, $eventname[19], "drawn", $i)
);
}
for ($i = 1; $i <= 2 * $fieldNoMultiplicator; $i++) {
$availableFields[$basis['event'] . ': ' . $eventname[20]] = array_merge(
$availableFields[$basis['event'] . ': ' . $eventname[20]],
generateGenericFullEvent($event, $csvxml_overview, $eventname[20], "copied", $i)
generateGenericFullEvent($event, $tlLoader, $eventname[20], "copied", $i)
);
}
for ($i = 1; $i <= 2 * $fieldNoMultiplicator; $i++) {
$availableFields[$basis['event'] . ': ' . $eventname[25]] = array_merge(
$availableFields[$basis['event'] . ': ' . $eventname[25]],
generateGenericFullEvent($event, $csvxml_overview, $eventname[25], "commissioned", $i)
generateGenericFullEvent($event, $tlLoader, $eventname[25], "commissioned", $i)
);
}
for ($i = 1; $i <= 2 * $fieldNoMultiplicator; $i++) {
$availableFields[$basis['event'] . ': ' . $eventname[26]] = array_merge(
$availableFields[$basis['event'] . ': ' . $eventname[26]],
generateGenericFullEvent($event, $csvxml_overview, $eventname[26], "printed", $i)
generateGenericFullEvent($event, $tlLoader, $eventname[26], "printed", $i)
);
}
for ($i = 1; $i <= 2 * $fieldNoMultiplicator; $i++) {
$availableFields[$basis['event'] . ': ' . $eventname[27]] = array_merge(
$availableFields[$basis['event'] . ': ' . $eventname[27]],
generateGenericFullEvent($event, $csvxml_overview, $eventname[27], "spoken", $i)
generateGenericFullEvent($event, $tlLoader, $eventname[27], "spoken", $i)
);
}
for ($i = 1; $i <= 2 * $fieldNoMultiplicator; $i++) {
$availableFields[$basis['event'] . ': ' . $eventname[28]] = array_merge(
$availableFields[$basis['event'] . ': ' . $eventname[28]],
generateGenericFullEvent($event, $csvxml_overview, $eventname[28], "sung", $i)
generateGenericFullEvent($event, $tlLoader, $eventname[28], "sung", $i)
);
}
for ($i = 1; $i <= 2 * $fieldNoMultiplicator; $i++) {
$availableFields[$basis['event'] . ': ' . $eventname[29]] = array_merge(
$availableFields[$basis['event'] . ': ' . $eventname[29]],
generateGenericFullEvent($event, $csvxml_overview, $eventname[29], "decor_designed", $i)
generateGenericFullEvent($event, $tlLoader, $eventname[29], "decor_designed", $i)
);
}
for ($i = 1; $i <= 2 * $fieldNoMultiplicator; $i++) {
$availableFields[$basis['event'] . ': ' . $eventname[30]] = array_merge(
$availableFields[$basis['event'] . ': ' . $eventname[30]],
generateGenericFullEvent($event, $csvxml_overview, $eventname[30], "form_designed", $i)
generateGenericFullEvent($event, $tlLoader, $eventname[30], "form_designed", $i)
);
}
for ($i = 1; $i <= 2 * $fieldNoMultiplicator; $i++) {
$availableFields[$basis['event'] . ': ' . $eventname[31]] = array_merge(
$availableFields[$basis['event'] . ': ' . $eventname[31]],
generateGenericFullEvent($event, $csvxml_overview, $eventname[31], "modelled", $i)
generateGenericFullEvent($event, $tlLoader, $eventname[31], "modelled", $i)
);
}
for ($i = 1; $i <= 2 * $fieldNoMultiplicator; $i++) {
$availableFields[$basis['event'] . ': ' . $eventname[32]] = array_merge(
$availableFields[$basis['event'] . ': ' . $eventname[32]],
generateGenericFullEvent($event, $csvxml_overview, $eventname[32], "signed_artwork", $i)
generateGenericFullEvent($event, $tlLoader, $eventname[32], "signed_artwork", $i)
);
}
for ($i = 1; $i <= 2 * $fieldNoMultiplicator; $i++) {
$availableFields[$basis['event'] . ': ' . $eventname[33]] = array_merge(
$availableFields[$basis['event'] . ': ' . $eventname[33]],
generateGenericFullEvent($event, $csvxml_overview, $eventname[33], "was_mentioned", $i)
generateGenericFullEvent($event, $tlLoader, $eventname[33], "was_mentioned", $i)
);
}
for ($i = 1; $i <= 2 * $fieldNoMultiplicator; $i++) {
$availableFields[$basis['event'] . ': ' . $eventname[34]] = array_merge(
$availableFields[$basis['event'] . ': ' . $eventname[34]],
generateGenericFullEvent($event, $csvxml_overview, $eventname[34], "buried", $i)
generateGenericFullEvent($event, $tlLoader, $eventname[34], "buried", $i)
);
}
for ($i = 1; $i <= 2 * $fieldNoMultiplicator; $i++) {
$availableFields[$basis['event'] . ': ' . $eventname[35]] = array_merge(
$availableFields[$basis['event'] . ': ' . $eventname[35]],
generateGenericFullEvent($event, $csvxml_overview, $eventname[35], "intellectual_creation", $i)
generateGenericFullEvent($event, $tlLoader, $eventname[35], "intellectual_creation", $i)
);
}
for ($i = 1; $i <= 2 * $fieldNoMultiplicator; $i++) {
$availableFields[$basis['event'] . ': ' . $eventname[37]] = array_merge(
$availableFields[$basis['event'] . ': ' . $eventname[37]],
generateGenericFullEvent($event, $csvxml_overview, $eventname[37], "painted_on", $i)
generateGenericFullEvent($event, $tlLoader, $eventname[37], "painted_on", $i)
);
}
for ($i = 1; $i <= 2 * $fieldNoMultiplicator; $i++) {
$availableFields[$basis['event'] . ': ' . $eventname[38]] = array_merge(
$availableFields[$basis['event'] . ': ' . $eventname[38]],
generateGenericFullEvent($event, $csvxml_overview, $eventname[38], "illustrated", $i)
generateGenericFullEvent($event, $tlLoader, $eventname[38], "illustrated", $i)
);
}
@ -1593,7 +1591,7 @@ for ($i = 1; $i <= 2 * $fieldNoMultiplicator; $i++) {
"allowedValues" => ["y", "n"],
"dependsOn" => ["has_lived_when{$i}"],
"remark" => '',
"name_human_readable" => $event['when'] . " [{$csvxml_overview['certainty']}]",
"name_human_readable" => $event['when'] . " [" . $tlLoader->tl('csvxml-overview', 'csvxml_overview', 'certainty') . "]",
"explica" => "",
],
"has_lived_where{$i}" => [
@ -1609,7 +1607,7 @@ for ($i = 1; $i <= 2 * $fieldNoMultiplicator; $i++) {
"allowedValues" => ["y", "n"],
"dependsOn" => ["has_lived_where{$i}"],
"remark" => '',
"name_human_readable" => $event['where'] . " [{$csvxml_overview['certainty']}]",
"name_human_readable" => $event['where'] . " [" . $tlLoader->tl('csvxml-overview', 'csvxml_overview', 'certainty') . "]",
"explica" => "",
],
"has_lived_annotation{$i}" => [