# -*- coding: utf-8 -*- """Fill Microsoft Store listing CSV text fields (default=RU, en=EN).""" import csv from pathlib import Path path = Path(__file__).resolve().parents[1] / "store.csv" ru = { "Description": ( "EvilFox — приложение для безопасного доступа в интернет на Windows.\n" "\n" "Защитите данные в публичных Wi‑Fi сетях: EvilFox шифрует трафик, " "скрывает ваш реальный IP-адрес и помогает предотвратить утечки DNS. " "Современный интерфейс на русском и английском, светлая и тёмная темы, " "удобный выбор серверов и понятный статус подключения.\n" "\n" "Возможности:\n" "• Шифрование трафика с поддержкой современных протоколов\n" "• Режим прокси и полный режим защиты (TUN) для всего трафика приложений\n" "• Защита от утечек (Kill Switch) при обрыве соединения\n" "• Автовыбор сервера с наименьшим пингом\n" "• Список серверов с флагами стран и группировкой по хосту\n" "• Добавление собственной конфигурации по URL\n" "• Мониторинг использования трафика и статистика сессий\n" "• Интерфейс на русском и английском языках\n" "\n" "EvilFox подходит для повседневной работы, путешествий и защиты приватности. " "Конфигурацию подключения вы добавляете самостоятельно; " "покупки внутри приложения не требуются.\n" "\n" "Сайт: https://evilfox.win/\n" "Поддержка: https://t.me/evilfox100Bot" ), "ReleaseNotes": ( "Обновление 4.2: улучшенный интерфейс для Microsoft Store, " "переключатель языка RU/EN, светлая тема по умолчанию, " "группировка серверов по IP с отображением доступных протоколов, " "исправления переключателей темы и языка, реальные флаги стран (SVG), " "Kill Switch и статистика." ), "Title": "EvilFox", "ShortTitle": "EvilFox", "SortTitle": "EvilFox", "VoiceTitle": "Evil Fox", "ShortDescription": ( "Безопасный доступ в интернет: шифрование трафика, скрытие IP, " "защита от утечек DNS. Русский и английский. Современные протоколы, " "Kill Switch, удобный выбор серверов." ), "DevStudio": "EvilFox", "CopyrightTrademarkInformation": ( "© EvilFox. All rights reserved. EvilFox and the EvilFox logo " "are trademarks of their respective owners." ), "AdditionalLicenseTerms": ( "Proprietary software. By installing EvilFox you agree to use the " "application in accordance with applicable laws. The app provides a " "client for encrypted network connections; server configurations are " "supplied by the user. See https://evilfox.win/ for support and terms." ), "Feature1": "Шифрование трафика и скрытие IP-адреса", "Feature2": "Режим прокси и полный режим защиты (TUN)", "Feature3": "Kill Switch — блокировка трафика при обрыве VPN", "Feature4": "Автовыбор сервера с лучшим пингом", "Feature5": "Серверы с флагами стран и группировкой протоколов", "Feature6": "Добавление конфигурации по URL", "Feature7": "Статистика трафика и сессий", "Feature8": "Интерфейс на русском и английском", "Feature9": "Светлая и тёмная темы оформления", "Feature10": "Защита от утечек DNS", "MinimumHardwareReq1": "Windows 10 version 1809 or later (x64)", "MinimumHardwareReq2": "Internet connection", "MinimumHardwareReq3": "100 MB free disk space", "RecommendedHardwareReq1": "Windows 11 (x64)", "RecommendedHardwareReq2": "Stable broadband connection", "SearchTerm1": "VPN", "SearchTerm2": "privacy", "SearchTerm3": "secure internet", "SearchTerm4": "encrypt traffic", "SearchTerm5": "EvilFox", "SearchTerm6": "proxy client", "SearchTerm7": "kill switch", "DesktopScreenshotCaption1": "Главный экран: подключение и статус защиты", "DesktopScreenshotCaption2": "Список серверов с флагами и пингом", "DesktopScreenshotCaption3": "Настройки: тема, язык, Kill Switch", "DesktopScreenshotCaption4": "Статистика использования", } en = { "Description": ( "EvilFox is a Windows app for private, secure internet access.\n" "\n" "Protect your data on public Wi‑Fi: EvilFox encrypts your traffic, " "hides your real IP address, and helps prevent DNS leaks. " "A modern interface in English and Russian, light and dark themes, " "an easy server list, and a clear connection status.\n" "\n" "Features:\n" "• Traffic encryption with modern protocol support\n" "• Proxy mode and full protection mode (TUN) for all app traffic\n" "• Leak protection (Kill Switch) if the connection drops\n" "• Auto-select the server with the lowest ping\n" "• Server list with country flags and host grouping\n" "• Add your own configuration via URL\n" "• Traffic usage monitoring and session stats\n" "• English and Russian interface\n" "\n" "EvilFox is built for everyday browsing, travel, and privacy. " "You add your own connection configuration; no in-app purchases are required.\n" "\n" "Website: https://evilfox.win/\n" "Support: https://t.me/evilfox100Bot" ), "ReleaseNotes": ( "Version 4.2: Microsoft Store–ready UI polish, RU/EN language switch, " "light theme by default, servers grouped by IP with available protocols, " "theme/language toggle fixes, real country flags (SVG), Kill Switch, " "and usage statistics." ), "Title": "EvilFox", "ShortTitle": "EvilFox", "SortTitle": "EvilFox", "VoiceTitle": "Evil Fox", "ShortDescription": ( "Secure internet access: encrypt traffic, hide your IP, help prevent " "DNS leaks. English & Russian. Modern protocols, Kill Switch, " "easy server selection." ), "DevStudio": "EvilFox", "CopyrightTrademarkInformation": ( "© EvilFox. All rights reserved. EvilFox and the EvilFox logo " "are trademarks of their respective owners." ), "AdditionalLicenseTerms": ( "Proprietary software. By installing EvilFox you agree to use the " "application in accordance with applicable laws. The app provides a " "client for encrypted network connections; server configurations are " "supplied by the user. See https://evilfox.win/ for support and terms." ), "Feature1": "Encrypt traffic and hide your IP address", "Feature2": "Proxy mode and full protection mode (TUN)", "Feature3": "Kill Switch blocks traffic if VPN drops", "Feature4": "Auto-select the lowest-ping server", "Feature5": "Servers with country flags and protocol grouping", "Feature6": "Add configuration via URL", "Feature7": "Traffic and session statistics", "Feature8": "English and Russian interface", "Feature9": "Light and dark themes", "Feature10": "DNS leak protection", "MinimumHardwareReq1": "Windows 10 version 1809 or later (x64)", "MinimumHardwareReq2": "Internet connection", "MinimumHardwareReq3": "100 MB free disk space", "RecommendedHardwareReq1": "Windows 11 (x64)", "RecommendedHardwareReq2": "Stable broadband connection", "SearchTerm1": "VPN", "SearchTerm2": "privacy", "SearchTerm3": "secure internet", "SearchTerm4": "encrypt traffic", "SearchTerm5": "EvilFox", "SearchTerm6": "proxy client", "SearchTerm7": "kill switch", "DesktopScreenshotCaption1": "Home: connect and protection status", "DesktopScreenshotCaption2": "Server list with flags and ping", "DesktopScreenshotCaption3": "Settings: theme, language, Kill Switch", "DesktopScreenshotCaption4": "Usage statistics", } def main() -> None: with path.open("r", encoding="utf-8-sig", newline="") as f: reader = csv.reader(f) header = next(reader) rows = [] for r in reader: while len(r) < len(header): r.append("") rows.append(r) # Field, ID, Type, default, en default_idx = header.index("default") en_idx = header.index("en") for r in rows: if not r or not r[0]: continue field = r[0] if field in ru: r[default_idx] = ru[field] if field in en: r[en_idx] = en[field] with path.open("w", encoding="utf-8-sig", newline="") as f: w = csv.writer(f, lineterminator="\n") w.writerow(header) w.writerows(rows) with path.open("r", encoding="utf-8-sig", newline="") as f: for row in csv.DictReader(f): if row["Field"] in ( "Description", "Title", "ShortDescription", "Feature1", "AdditionalLicenseTerms", "SearchTerm1", ): print( row["Field"], "default_len=", len(row.get("default") or ""), "en_len=", len(row.get("en") or ""), ) print("wrote", path) if __name__ == "__main__": main()