feat(i18n): migrate all hardcoded Russian text to i18n

- Replace all hardcoded Russian strings with t() calls across 30+ files
- Add ~500 new translation keys to all 4 locales (ru, en, zh, fa)
- Convert module-level config objects to labelKey pattern
- Remove Russian fallbacks from t() calls (fallbackLng handles it)
- Replace DeepLinkRedirect custom i18n with standard t() calls
- Fix subscription.servers key collision (string vs object)
This commit is contained in:
c0mrade
2026-01-27 22:19:41 +03:00
parent d837f8050c
commit 9707ad97a4
34 changed files with 5275 additions and 1075 deletions

View File

@@ -74,14 +74,20 @@ export function SettingsSearchResults({
searchQuery: string;
resultsCount: number;
}) {
const { t } = useTranslation();
if (!searchQuery.trim()) return null;
return (
<div className="mt-3 flex items-center gap-2 text-sm">
<span className="text-dark-400">
{resultsCount > 0 ? `Найдено: ${resultsCount}` : 'Ничего не найдено'}
{resultsCount > 0
? t('admin.settings.foundCount', { count: resultsCount })
: t('admin.settings.notFound')}
</span>
{resultsCount > 0 && <span className="text-dark-500">по запросу «{searchQuery}»</span>}
{resultsCount > 0 && (
<span className="text-dark-500">{t('admin.settings.byQuery', { query: searchQuery })}</span>
)}
</div>
);
}