vikingowl b59eebcddb feat: Add chat message translation feature
Enable translation of non-English chat messages to help users understand
international communications.

## Changes

### Translation Detection
- Added `mightNeedTranslation()` function to detect non-English text
- Checks for Cyrillic, Chinese, Japanese, Korean, and Arabic characters
- Uses Unicode range pattern matching for language detection

### Translation UI
- Added Languages icon from lucide-svelte
- Display translate button next to messages that contain non-English text
- Button shows icon only on mobile, "Translate" text on desktop
- Positioned using flexbox to prevent text wrapping issues

### Translation Functionality
- `translateMessage()` opens Google Translate in new popup window
- Auto-detects source language, translates to English
- Uses Google Translate's free web interface (no API key required)
- Opens in 800x600 popup for optimal translation viewing

## Implementation Details

The feature works by:
1. Scanning each message for non-ASCII character ranges
2. Showing translate button only for messages likely in foreign languages
3. Opening Google Translate web UI in popup when clicked
4. Preserving original message while providing translation access

**Why Google Translate Web Interface:**
- No API keys or authentication required
- Free and unlimited usage
- Familiar translation interface for users
- Supports all languages Google Translate offers
- Popup window keeps context while showing translation

This approach avoids the complexity and cost of translation APIs while
providing full-featured translation capabilities to users.

This completes Phase 2 Feature 4 and ALL Phase 2 features! 🎉

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-12 20:12:09 +01:00
2022-01-31 01:25:06 +01:00

CS2.WTF

SvelteKit TypeScript Tailwind CSS GPL3 Liberapay status-badge

Statistics for CS2 matchmaking matches - A complete rewrite of CSGOW.TF with modern web technologies.


🚀 Quick Start

Prerequisites

  • Node.js ≥ 18.0.0 (v20.11.0 recommended - see .nvmrc)
  • npm or yarn

Installation

# Clone the repository
git clone https://somegit.dev/CSGOWTF/csgowtf.git
cd csgowtf

# Switch to the cs2-port branch
git checkout cs2-port

# Install dependencies
npm install

# Copy environment variables
cp .env.example .env

# Start development server
npm run dev

The app will be available at http://localhost:5173


📦 Tech Stack

Core Framework

  • SvelteKit 2.0 - Full-stack framework with SSR/SSG
  • Svelte 5 - Reactive UI framework
  • TypeScript 5.3 - Type safety (strict mode)
  • Vite 5 - Build tool and dev server

Styling

  • Tailwind CSS 3.4 - Utility-first CSS framework
  • DaisyUI 4.0 - Component library with CS2 custom themes
  • PostCSS - CSS processing

Data & State

  • Axios - HTTP client for API requests
  • Zod - Runtime type validation and parsing
  • Svelte Stores - State management

Testing

  • Vitest - Unit and component testing
  • Playwright - End-to-end testing
  • Testing Library - Component testing utilities
  • MSW - API mocking

Code Quality

  • ESLint - Linting (TypeScript + Svelte)
  • Prettier - Code formatting
  • Stylelint - CSS linting
  • Husky - Git hooks
  • lint-staged - Pre-commit linting

🛠️ Development

Available Scripts

# Development
npm run dev              # Start dev server
npm run dev -- --host    # Expose to network

# Type Checking
npm run check            # Run type check
npm run check:watch      # Type check in watch mode

# Linting & Formatting
npm run lint             # Run ESLint + Prettier check
npm run lint:fix         # Auto-fix linting issues
npm run format           # Format code with Prettier

# Testing
npm run test             # Run unit tests
npm run test:watch       # Run tests in watch mode
npm run test:coverage    # Generate coverage report
npm run test:e2e         # Run E2E tests (headless)
npm run test:e2e:ui      # Run E2E tests with UI
npm run test:e2e:debug   # Debug E2E tests

# Building
npm run build            # Build for production
npm run preview          # Preview production build

Project Structure

csgowtf/
├── src/
│   ├── lib/
│   │   ├── api/              # API client & endpoints
│   │   ├── components/       # Reusable Svelte components
│   │   │   ├── layout/       # Header, Footer, Nav
│   │   │   ├── ui/           # Base UI components
│   │   │   ├── charts/       # Data visualization
│   │   │   ├── match/        # Match-specific components
│   │   │   └── player/       # Player-specific components
│   │   ├── stores/           # Svelte stores (state)
│   │   ├── types/            # TypeScript types
│   │   ├── utils/            # Helper functions
│   │   └── i18n/             # Internationalization
│   ├── routes/               # SvelteKit routes (pages)
│   ├── mocks/                # MSW mock handlers
│   ├── tests/                # Test setup
│   ├── app.html              # HTML shell
│   └── app.css               # Global styles
├── tests/
│   ├── unit/                 # Unit tests
│   ├── integration/          # Integration tests
│   └── e2e/                  # E2E tests
├── docs/                     # Documentation
│   ├── API.md                # Backend API reference
│   └── TODO.md               # Project roadmap
├── public/                   # Static assets
└── static/                   # Additional static files

🎨 Features

Current (Phase 1 - Complete)

  • SvelteKit project scaffolded with TypeScript strict mode
  • Tailwind CSS + DaisyUI with CS2-themed color palette
  • Complete development tooling (ESLint, Prettier, Husky)
  • Testing infrastructure (Vitest + Playwright)
  • CI/CD pipeline (Woodpecker)
  • Backend API documented

Planned (See docs/TODO.md for details)

  • 🏠 Homepage with featured matches
  • 📊 Match listing with advanced filters
  • 👤 Player profiles with stats & charts
  • 🎮 Match detail pages (overview, economy, flashes, damage, chat)
  • 🌍 Multi-language support (i18n)
  • 🌙 Dark/Light theme toggle (default: dark)
  • 📱 Mobile-responsive design
  • WCAG 2.1 AA accessibility
  • 🎯 CS2-specific features (MR12, Premier rating, volumetric smokes)

🔗 Backend

This frontend connects to the csgowtfd backend.

  • Language: Go
  • Framework: Gin
  • Database: PostgreSQL
  • Cache: Redis
  • API Docs: See docs/API.md

Default API endpoint: http://localhost:8000


🧪 Testing

Unit & Component Tests

# Run all tests
npm run test

# Watch mode for TDD
npm run test:watch

# Generate coverage report
npm run test:coverage

End-to-End Tests

# Run E2E tests (headless)
npm run test:e2e

# Run with Playwright UI
npm run test:e2e:ui

# Debug mode
npm run test:e2e:debug

🚢 Deployment

Build for Production

npm run build

The built app will be in the build/ directory, ready to be deployed to any Node.js hosting platform.

Environment Variables

See .env.example for all available configuration options:

  • VITE_API_BASE_URL - Backend API URL
  • VITE_API_TIMEOUT - API request timeout
  • VITE_ENABLE_LIVE_MATCHES - Feature flag for live matches
  • VITE_ENABLE_ANALYTICS - Feature flag for analytics

CI/CD

Woodpecker CI automatically builds and deploys:

  • master branch → Production
  • dev branch → Development/Staging
  • cs2-port branch → CS2 Preview (during rewrite)

🤝 Contributing

We welcome contributions! Please follow these guidelines:

Before You Start

  • Check existing issues or create one describing your feature/fix
  • Comment on the issue to avoid duplicate work
  • Fork the repository and create a feature branch

Code Standards

  • Follow TypeScript strict mode (no any types)
  • Write tests for new features
  • Follow existing code style (enforced by ESLint/Prettier)
  • Keep components under 300 lines
  • Write meaningful commit messages (Conventional Commits)

Pull Request Process

  1. Create a feature branch: feature/your-feature-name
  2. Make your changes and commit with clear messages
  3. Run linting and tests: npm run lint && npm run test
  4. Push to your fork and create a PR to the cs2-port branch
  5. Ensure CI passes and address review feedback

Git Workflow

  • Branch naming: feature/, fix/, refactor/, docs/
  • Commit messages: feat:, fix:, docs:, test:, refactor:
  • Only one feature/fix per PR
  • Squash commits before merging

📚 Documentation


📄 License

GPL-3.0 © CSGOW.TF Team


💖 Support

If you find this project helpful, consider supporting us:

Liberapay



Status: 🚧 Phase 1 Complete - Active rewrite for CS2 support

Description
csgow.tf frontend
https://csgow.tf
Readme 412 MiB
1.0.9 Latest
2022-12-07 07:14:08 +01:00
Languages
Vue 86%
JavaScript 11.8%
HTML 1.3%
SCSS 0.9%