Tłumaczenia - poprawki.
This commit is contained in:
@@ -3,25 +3,24 @@
|
||||
declare(strict_types=1);
|
||||
|
||||
/**
|
||||
* Odświeża cache menu raz na dobę (cron) lub ręcznie.
|
||||
* Odświeża cache menu ręcznie (tylko CLI / terminal).
|
||||
*
|
||||
* 1) Upstream PL/EN/DE → api/cache/menu_{lang}.json
|
||||
* 2) Języki source=ai (ES/IT/KO): tłumaczenie OpenAI ChatGPT z PL
|
||||
* tylko gdy fingerprint PL się zmienił (lub brak cache AI).
|
||||
* (z --force-ai zawsze; bez flagi tylko gdy zmienił się fingerprint PL)
|
||||
*
|
||||
* Użycie:
|
||||
* php scripts/refresh_menu_cache.php
|
||||
* php scripts/refresh_menu_cache.php --force-ai
|
||||
*
|
||||
* Cron (raz dziennie, np. 04:15):
|
||||
* 15 4 * * * php /path/to/scripts/refresh_menu_cache.php >> /var/log/menu_refresh.log 2>&1
|
||||
*
|
||||
* Klucz OpenAI: skopiuj config/menu_ai.local.php.example → config/menu_ai.local.php
|
||||
* Klucz OpenAI: config/menu_ai.local.php
|
||||
* Instrukcja: README.md → „Odświeżanie cache menu”
|
||||
*/
|
||||
|
||||
require_once __DIR__ . '/../api/menu_helpers.php';
|
||||
|
||||
$forceAi = in_array('--force-ai', $argv ?? [], true);
|
||||
$hadError = false;
|
||||
|
||||
$config = require __DIR__ . '/../config/menu.php';
|
||||
$languages = is_array($config['languages'] ?? null) ? $config['languages'] : [];
|
||||
@@ -33,6 +32,13 @@ function logLine(string $msg): void
|
||||
echo '[' . date('Y-m-d H:i:s') . '] ' . $msg . PHP_EOL;
|
||||
}
|
||||
|
||||
try {
|
||||
assertMenuCacheWritable();
|
||||
} catch (Throwable $e) {
|
||||
logLine('ERROR: ' . $e->getMessage());
|
||||
exit(1);
|
||||
}
|
||||
|
||||
function targetLanguageName(string $code): string
|
||||
{
|
||||
return match ($code) {
|
||||
@@ -325,11 +331,17 @@ foreach ($languages as $code => $meta) {
|
||||
$raw = fetchUpstreamMenu($url, $timeout);
|
||||
if ($raw === null) {
|
||||
logLine("Upstream {$code}: FAILED — keeping old cache if any");
|
||||
$hadError = true;
|
||||
continue;
|
||||
}
|
||||
$mapped = mapUpstreamMenu($raw, $code, 'upstream');
|
||||
writeMenuCache(menuCachePath($code), $mapped);
|
||||
logLine("Upstream {$code}: OK (" . count($mapped['sections'] ?? []) . ' sections)');
|
||||
try {
|
||||
$mapped = mapUpstreamMenu($raw, $code, 'upstream');
|
||||
writeMenuCache(menuCachePath($code), $mapped);
|
||||
logLine("Upstream {$code}: OK (" . count($mapped['sections'] ?? []) . ' sections)');
|
||||
} catch (Throwable $e) {
|
||||
logLine("Upstream {$code}: ERROR " . $e->getMessage());
|
||||
$hadError = true;
|
||||
}
|
||||
}
|
||||
|
||||
$plMenu = readMenuCache(menuCachePath('pl'));
|
||||
@@ -343,13 +355,17 @@ $fpFile = menuFingerprintPath();
|
||||
$prevFp = is_file($fpFile) ? trim((string) file_get_contents($fpFile)) : '';
|
||||
$plChanged = $forceAi || $prevFp === '' || !hash_equals($prevFp, $fp);
|
||||
|
||||
file_put_contents($fpFile, $fp, LOCK_EX);
|
||||
logLine('PL fingerprint: ' . substr($fp, 0, 12) . '… changed=' . ($plChanged ? 'yes' : 'no'));
|
||||
if (@file_put_contents($fpFile, $fp, LOCK_EX) === false) {
|
||||
logLine('ERROR: nie zapisano fingerprint: ' . $fpFile);
|
||||
$hadError = true;
|
||||
} else {
|
||||
logLine('PL fingerprint: ' . substr($fp, 0, 12) . '… changed=' . ($plChanged ? 'yes' : 'no'));
|
||||
}
|
||||
|
||||
$aiCfg = loadMenuAiConfig();
|
||||
if ($aiCfg === null) {
|
||||
logLine('No config/menu_ai.local.php — skip AI languages (copy from .example)');
|
||||
exit(0);
|
||||
logLine('No config/menu_ai.local.php — skip AI languages');
|
||||
exit($hadError ? 1 : 0);
|
||||
}
|
||||
|
||||
foreach ($languages as $code => $meta) {
|
||||
@@ -371,7 +387,9 @@ foreach ($languages as $code => $meta) {
|
||||
logLine("AI {$code}: wrote cache");
|
||||
} catch (Throwable $e) {
|
||||
logLine('AI ' . $code . ': ERROR ' . $e->getMessage());
|
||||
$hadError = true;
|
||||
}
|
||||
}
|
||||
|
||||
logLine('Done.');
|
||||
exit($hadError ? 1 : 0);
|
||||
|
||||
Reference in New Issue
Block a user