21 public function run($file =
'')
23 Loc::loadLanguageFile(__DIR__.
'/operation.php');
24 Loc::loadLanguageFile(__FILE__);
33 if ($normalized != $file)
41 $this->
addError(
new Main\
Error(Loc::getMessage(
'TR_EDIT_ERROR_FILE_NOT_LANG', [
'#FILE#' => $file])));
50 $request = $this->controller->getRequest();
52 $phraseIdsToDrop = $languagesToDrop = $phraseIdsToUpdate = $languagesToUpdate = [];
57 $currentLang = Loc::getCurrentLang();
60 $isEncodingCompatible =
function ($langId) use ($limitEncoding, $currentEncoding, $currentLang)
66 $langId == $currentLang ||
76 $phraseIdsToDropTmp =
$request->getPost(
'DROP');
77 if ($phraseIdsToDropTmp !==
null && \is_array($phraseIdsToDropTmp) && \
count($phraseIdsToDropTmp) > 0)
79 $phraseIdsToDrop = $phraseIdsToDropTmp;
82 unset($phraseIdsToDropTmp);
85 $phraseIdsToUpdateTmp =
$request->getPost(
'KEYS');
86 if ($phraseIdsToUpdateTmp !==
null && \is_array($phraseIdsToUpdateTmp) && \
count($phraseIdsToUpdateTmp) > 0)
88 $phraseIdsToUpdate = $phraseIdsToUpdateTmp;
90 unset($phraseIdsToUpdateTmp);
93 $languagesToUpdateTmp =
$request->getPost(
'LANGS');
94 if ($languagesToUpdateTmp !==
null && \is_array($languagesToUpdateTmp) && \
count($languagesToUpdateTmp) > 0)
98 unset($languagesToUpdateTmp);
101 if (empty($phraseIdsToUpdate) && empty($phraseIdsToDrop))
103 $result[
'SUMMARY'] = Loc::getMessage(
'TR_EDIT_SAVING_COMPLETED');
106 if (!empty($phraseIdsToUpdate) && empty($languagesToUpdate))
120 if (!\in_array($langId, $languagesToUpdate) && !\in_array($langId, $languagesToDrop))
134 if (\in_array($langId, $languagesToUpdate))
136 $langFile->setOperatingEncoding($currentEncoding);
139 elseif (\in_array($langId, $languagesToDrop))
150 if (
$error->getCode() !==
'EMPTY_CONTENT')
162 $hasDataToUpdate =
false;
165 if (\in_array($langId, $languagesToDrop))
167 foreach ($phraseIdsToDrop as $phraseId)
173 $hasDataToUpdate =
true;
174 if (!\in_array($phraseId,
$result[
'DROPPED']))
176 $result[
'DROPPED'][] = $phraseId;
183 if (\in_array($langId, $languagesToUpdate) && $isEncodingCompatible($langId))
185 foreach ($phraseIdsToUpdate as $phraseId)
188 if (\in_array($phraseId, $phraseIdsToDrop))
193 $fldName = $this->generateFieldName($phraseId, $langId);
198 $inpValue =
$request->getPost($fldName);
201 if (!empty($inpValue) || $inpValue ===
'0')
207 $hasDataToUpdate =
true;
208 if (!\in_array($fldName,
$result[
'UPDATED']))
210 $result[
'UPDATED'][] = $fldName;
219 $hasDataToUpdate =
true;
220 if (!\in_array($fldName,
$result[
'CLEANED']))
222 $result[
'CLEANED'][] = $fldName;
228 if ($hasDataToUpdate)
253 $result[
'SUMMARY'] = Loc::getMessage(
'TR_EDIT_SAVING_COMPLETED');
268 private function generateFieldName($phraseId, $suffix =
'', $prefix =
'')
271 (!empty($prefix) ? $prefix.
'_' :
'').
272 \str_replace([
'.',
'-',
' '],
'_', $phraseId).
273 (!empty($suffix) ?
'_'.$suffix :
'')
static getSourceEncoding($lang)
static useTranslationRepository()
static getCurrentEncoding()
static convertLangPath($langFile, $language)
if( $daysToExpire >=0 &&$daysToExpire< 60 elseif)( $daysToExpire< 0)