commit 9ff09693ed422facebe97ff4ea9e61049ae60fea Author: Reindl David (IT-PTR-CEN2-SL10) Date: Wed Oct 7 01:16:57 2026 +0200 initialization diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..0c1cb13 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,18 @@ +.git +.gitignore +.github +.idea +.vscode +.env +.env.local +.env.* +!.env.example +logs/ +vendor/ +node_modules/ +coverage/ +.DS_Store +**/*.log +**/*.tmp +**/*.bak +**/~* diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..a863eab --- /dev/null +++ b/.env.example @@ -0,0 +1,21 @@ +# Local development defaults +APP_ENV=development +APP_DEBUG=true +APP_NAME="Password Generator API" +APP_VERSION="2.0.0" + +# Security +API_KEY_ENABLED=false +API_KEY="" + +# CORS (keep local development origin explicit instead of wildcard) +CORS_ORIGIN="http://localhost:8080" +CORS_METHODS="GET,POST,OPTIONS" +CORS_HEADERS="Content-Type,Authorization" + +# Logging +LOG_LEVEL=debug +LOG_PATH=logs/app.log + +# Rate limiting +RATE_LIMIT=60 diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..4d13c42 --- /dev/null +++ b/.gitignore @@ -0,0 +1,7 @@ +cache/ +vendor/ +config/config.local.php +logs/app.log +agent-prompts +.env +~* \ No newline at end of file diff --git a/AGENTS.md b/AGENTS.md new file mode 100644 index 0000000..9fc5b22 --- /dev/null +++ b/AGENTS.md @@ -0,0 +1,22 @@ +# Agent Instructions: Password Generator API & Web App + +This project is a stateless PHP 8.4 portal for issuing device setup payloads and provisioning configuration for authenticated users via Authentik OIDC. + +This project is about creating a modern, secure password generator with REST API and interactive multilingual web frontend. It must be built with a Slim PHP Framework, featuring multiple password generation algorithms, comprehensive password manager integrations, and full internationalization support. + +## Core Workflows & Responsibilities + +The project has two main features + +1. A multilingual web UI for the user to interactively create passwords using different algorithms. It must be intuitively understood and make it very easy for the user to select and copy a generated password of choice. +2. REST API to make the different password generation algorithms available via a well documented API. The API must be documents with a Swagger OpenAPI 3 specifications. + +## Dependencies + +Some algorithms rely on the shell commands xkcdpass and pwgen so these preferable should be available although this functionality is represented in PHP as a fallback as well. + +## Deployments + +Deployments is preferably via a docker image but can be done manually on bare metal as well. Both approaches must be possible and well documented. + +The docker image must contain the necessary shell commands. \ No newline at end of file diff --git a/DEPLOYMENT.md b/DEPLOYMENT.md new file mode 100644 index 0000000..fc3d36e --- /dev/null +++ b/DEPLOYMENT.md @@ -0,0 +1,303 @@ +# Deployment Guide + +## Quick Start + +### 1. Installation +```bash +# Make installation script executable +chmod +x install.sh + +# Run installation +./install.sh +``` + +### 2. Development Server +```bash +# Start with Composer +composer start + +# Or manually +php -S localhost:8080 -t public +``` + +### 3. Access Application +- **Web Interface**: http://localhost:8080 +- **API Documentation**: http://localhost:8080/docs +- **Health Check**: http://localhost:8080/api/v1/health + +## Production Deployment + +### Apache Configuration +```apache + + ServerName passwords.yourdomain.com + DocumentRoot /var/www/password-generator/public + + + AllowOverride All + Require all granted + + + # Security headers + Header always set X-Content-Type-Options nosniff + Header always set X-Frame-Options DENY + Header always set X-XSS-Protection "1; mode=block" + +``` + +### Nginx Configuration +```nginx +server { + listen 80; + server_name passwords.yourdomain.com; + root /var/www/password-generator/public; + index index.php; + + # Security headers + add_header X-Content-Type-Options nosniff; + add_header X-Frame-Options DENY; + add_header X-XSS-Protection "1; mode=block"; + + location / { + try_files $uri $uri/ /index.php?$query_string; + } + + location ~ \.php$ { + fastcgi_pass unix:/var/run/php/php8.1-fpm.sock; + fastcgi_index index.php; + fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name; + include fastcgi_params; + } + + # Cache static assets + location ~* \.(css|js|png|jpg|jpeg|gif|ico|svg)$ { + expires 1M; + add_header Cache-Control "public, immutable"; + } +} +``` + +### Docker Deployment +```dockerfile +FROM php:8.4-cli + +WORKDIR /var/www/html + +ENV APP_ENV=production \ + APP_DEBUG=false \ + PORT=8080 + +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + bash \ + ca-certificates \ + curl \ + git \ + unzip \ + pwgen \ + xkcdpass \ + && rm -rf /var/lib/apt/lists/* + +COPY --from=composer:2 /usr/bin/composer /usr/bin/composer +COPY . /var/www/html/ + +RUN composer install --no-dev --optimize-autoloader --no-interaction --prefer-dist \ + && mkdir -p logs \ + && chmod 755 logs \ + && cp -n .env.example .env + +EXPOSE 8080 + +HEALTHCHECK --interval=30s --timeout=5s --start-period=20s --retries=3 \ + CMD curl -fsS http://127.0.0.1:8080/ >/dev/null || exit 1 + +CMD ["php", "-S", "0.0.0.0:8080", "-t", "public"] +``` + +### Docker Compose +```yaml +services: + password-generator: + build: + context: . + dockerfile: Dockerfile + ports: + - "8080:8080" + environment: + APP_ENV: production + APP_DEBUG: "false" + LOG_LEVEL: warning + RATE_LIMIT: "120" + CORS_ORIGIN: "https://yourdomain.com" + CORS_METHODS: "GET,POST,OPTIONS" + CORS_HEADERS: "Content-Type,Authorization" + volumes: + - ./logs:/var/www/html/logs + restart: unless-stopped +``` + +## Environment Configuration + +### Production Environment Variables +```bash +# Application +APP_ENV=production +APP_DEBUG=false +APP_NAME="Password Generator API" +APP_VERSION="2.0.0" +APP_PUBLIC_BASE_URL="https://passwords.example.com" + +# Security +API_KEY_ENABLED=false +RATE_LIMIT=120 + +# CORS (adjust for your domain) +CORS_ORIGIN="https://yourdomain.com" +CORS_METHODS="GET,POST,OPTIONS" +CORS_HEADERS="Content-Type,Authorization" + +# Logging +LOG_LEVEL=warning +LOG_PATH=logs/app.log +``` + +### Secure Production Baseline +Use local development values from `.env.example` and set deployment values explicitly in the production environment. The application does not assume a public-safe default; it expects a secure deployment configuration to be provided at runtime. + +Production checklist: +- [ ] `APP_ENV=production` +- [ ] `APP_DEBUG=false` +- [ ] `LOG_LEVEL=warning` or `error` +- [ ] `CORS_ORIGIN` restricted to trusted frontend domains only +- [ ] `RATE_LIMIT` tuned for the production deployment and not left at dev defaults +- [ ] `require_https=true` enforced at the reverse proxy or load balancer +- [ ] TLS termination with HSTS and strict security headers in front of the PHP app +- [ ] Secrets and runtime hostnames stored outside the repository + +Remaining production hardening risks: +- In-memory rate limiting is still single-instance only; multi-node deployments should use shared storage. +- CORS must remain an explicit allow-list and should not be widened to wildcard origins. +- Log aggregation and retention should be added for production operations. +- Browser-facing security headers should be applied at the edge layer whenever the app is public. + +### Regenerate the OpenAPI File +The public OpenAPI document is generated from the live route registry and the configured public base URL. Regenerate it after route changes or deployment configuration changes: + +```bash +composer generate:openapi +# or +php utils/generate-openapi.php +``` + +This updates `public/pwgenerator-swagger-spec.json` with the current public API contract. + +### SSL/TLS Configuration +For production, always use HTTPS: + +```nginx +server { + listen 443 ssl http2; + server_name passwords.yourdomain.com; + + ssl_certificate /path/to/certificate.crt; + ssl_certificate_key /path/to/private.key; + + ssl_protocols TLSv1.2 TLSv1.3; + ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256; + ssl_prefer_server_ciphers off; + + # ... rest of configuration +} + +# Redirect HTTP to HTTPS +server { + listen 80; + server_name passwords.yourdomain.com; + return 301 https://$server_name$request_uri; +} +``` + +## Monitoring and Maintenance + +### Health Checks +```bash +# API health check +curl -f http://localhost:8080/api/v1/health || exit 1 + +# Test password generation +curl -X POST http://localhost:8080/api/v1/passwords/generate \ + -H "Content-Type: application/json" \ + -d '{"type":"high-entropy","count":1}' \ + | jq '.success' +``` + +### Log Monitoring +```bash +# Monitor application logs +tail -f logs/app.log + +# Check for errors +grep -i error logs/app.log +``` + +### Performance Optimization +```bash +# Enable OPcache for PHP +echo "opcache.enable=1" >> /etc/php/8.1/apache2/conf.d/99-opcache.ini +echo "opcache.memory_consumption=128" >> /etc/php/8.1/apache2/conf.d/99-opcache.ini + +# Restart Apache +systemctl restart apache2 +``` + +## Security Considerations + +1. **Rate Limiting**: Adjust `RATE_LIMIT` based on your needs +2. **CORS**: Configure `CORS_ORIGIN` for your domain only +3. **HTTPS**: Always use SSL/TLS in production +4. **Firewall**: Restrict access to necessary ports only +5. **Updates**: Keep PHP and dependencies updated +6. **Logs**: Monitor logs for suspicious activity + +## Backup Strategy + +### Files to Backup +- Configuration files (`.env`) +- Custom wordlists (if added) +- Application logs +- Web server configuration + +### Database +This application is stateless and doesn't require database backups. + +## Troubleshooting + +### Common Issues + +**Error: "Class not found"** +```bash +composer dump-autoload +``` + +**Error: "Permission denied on logs"** +```bash +chmod 755 logs/ +chown www-data:www-data logs/ +``` + +**Error: "CORS blocked"** +- Check `CORS_ORIGIN` in `.env` +- Ensure proper headers in web server config + +**High Memory Usage** +- Enable OPcache +- Increase PHP memory limit if needed + +### Debug Mode +For troubleshooting, enable debug mode: +```bash +APP_DEBUG=true +LOG_LEVEL=debug +``` + +Remember to disable debug mode in production! diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..ddbd66e --- /dev/null +++ b/Dockerfile @@ -0,0 +1,39 @@ +FROM php:8.4-cli + +WORKDIR /var/www/html + +ENV APP_ENV=production \ + APP_DEBUG=false \ + PHP_OPCACHE_ENABLE=1 \ + PHP_OPCACHE_VALIDATE_TIMESTAMPS=0 \ + PHP_OPCACHE_MAX_ACCELERATED_FILES=10000 \ + PHP_OPCACHE_MEMORY_CONSUMPTION=128 \ + PORT=8080 + +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + bash \ + ca-certificates \ + curl \ + git \ + unzip \ + pwgen \ + xkcdpass \ + && rm -rf /var/lib/apt/lists/* + +COPY --from=composer:2 /usr/bin/composer /usr/bin/composer + +COPY . /var/www/html/ + +RUN composer install --no-dev --optimize-autoloader --no-interaction --prefer-dist \ + && mkdir -p logs \ + && chmod 755 logs \ + && cp -n .env.example .env \ + && chown -R www-data:www-data /var/www/html + +EXPOSE 8080 + +HEALTHCHECK --interval=30s --timeout=5s --start-period=20s --retries=3 \ + CMD curl -fsS http://127.0.0.1:8080/ >/dev/null || exit 1 + +CMD ["php", "-S", "0.0.0.0:8080", "-t", "public"] diff --git a/README.md b/README.md new file mode 100644 index 0000000..930b003 --- /dev/null +++ b/README.md @@ -0,0 +1,270 @@ +# Password Generator API and Web App + +A modern, secure password generator with a public REST API and multilingual web UI. +The project is built with Slim PHP and focuses on production-ready password generation. + +## Features + +### Password Generators + +- High Entropy: cryptographically secure random passwords with configurable character sets. +- XKCD Passphrase: memorable multi-word passphrases with language-specific wordlists. +- Diceware: dice-style passphrases with security metadata. +- PWGen Enhanced: pronounceable passwords with optional separator logic. +- Passkey: Apple-style pronounceable strings using syllable patterns. + +### Product Capabilities + +- Public JSON API for password generation. +- Responsive browser UI. +- Localization support with runtime locale endpoint. +- Security controls (rate limiting, CORS, secure random generation). +- Generated OpenAPI contract. + +## Supported Languages + +- en +- de +- de_CH +- fr +- it +- es +- pt +- ja +- zh + +## Requirements + +- PHP 8.1+ +- Composer +- Optional CLI tools for enhanced generator behavior: pwgen, xkcdpass + +## Quick Start + +### 1. Install + +```bash +git clone +cd password-generator +composer install +``` + +### 2. Configure + +```bash +cp .env.example .env +cp config/config.example.json config/config.json +mkdir -p logs +chmod 755 logs +``` + +### 3. Run + +```bash +composer start +# or +php -S localhost:8080 -t public +``` + +Open: + +- [http://localhost:8080](http://localhost:8080) +- [http://localhost:8080/docs](http://localhost:8080/docs) + +## API Usage + +### List available generator types + +```bash +curl http://localhost:8080/api/v1/passwords +``` + +### Generate passwords + +```bash +curl -X POST http://localhost:8080/api/v1/passwords/generate \ + -H "Content-Type: application/json" \ + -d '{"type":"diceware","count":2,"options":{"words":6}}' +``` + +### Get locale payload + +```bash +curl http://localhost:8080/api/v1/locales/ja +``` + +## Generator Option Examples + +### High Entropy + +```json +{ + "type": "high-entropy", + "count": 1, + "options": { + "length": 16, + "include_lowercase": true, + "include_uppercase": true, + "include_numbers": true, + "include_symbols": true, + "safe_symbols_only": false, + "exclude_ambiguous": false + } +} +``` + +### XKCD Passphrase + +```json +{ + "type": "xkcdpass", + "count": 1, + "options": { + "words": 4, + "wordlist": "en", + "separator": "-", + "max_word_length": 0, + "space_handling": "allow", + "add_number": true, + "number_position": "end" + } +} +``` + +### Diceware + +```json +{ + "type": "diceware", + "count": 1, + "options": { + "words": 6, + "show_dice_rolls": true, + "uppercase_first": false + } +} +``` + +### PWGen Enhanced + +```json +{ + "type": "pwgen", + "count": 1, + "options": { + "length": 16, + "separator": "-_", + "include_numbers": true, + "include_capitals": true, + "secure_mode": false, + "no_ambiguous": false + } +} +``` + +### Passkey + +```json +{ + "type": "passkey", + "count": 1, + "options": { + "syllables": 6 + } +} +``` + +## Configuration Notes + +Primary runtime configuration files: + +- config/config.json +- .env + +Useful environment overrides: + +- LLM_DEFAULT_PROVIDER +- OPENAI_API_KEY +- CLAUDE_API_KEY +- GEMINI_API_KEY +- PERPLEXITY_API_KEY + +## OpenAPI Contract + +Regenerate the public API specification when routes or response schemas change: + +```bash +composer generate:openapi +# or +php utils/generate-openapi.php +``` + +Generated file: + +- public/pwgenerator-swagger-spec.json + +## Docker Deployment + +### Build image + +```bash +docker build -t password-generator:latest . +``` + +### Run image + +```bash +docker run --rm -p 8080:8080 --name password-generator password-generator:latest +``` + +### Docker Compose (project-local setup) + +The repository includes a project-specific Compose file for local development and testing. + +```bash +cp .env.example .env +cp config/config.example.json config/config.json +mkdir -p logs + +docker compose up --build -d +``` + +Then open: + +- [http://localhost:8080](http://localhost:8080) +- [http://localhost:8080/docs](http://localhost:8080/docs) + +Useful commands: + +```bash +docker compose logs -f password-generator +docker compose restart password-generator +docker compose down +``` + +### Docker Hub publish + +```bash +docker login +docker tag password-generator:latest YOUR_DOCKERHUB_USERNAME/password-generator:latest +docker push YOUR_DOCKERHUB_USERNAME/password-generator:latest +``` + +## Testing + +```bash +composer test +``` + +## Project Structure + +```text +public/ - web root and generated OpenAPI spec +src/ - API, generators, middleware, and utilities +config/ - route, dependency, and app configuration +assets/ - frontend CSS and JavaScript +templates/ - HTML templates +locales/ - translation files +data/ - source wordlists +tests/ - PHPUnit tests +``` diff --git a/assets/css/style-docs.css b/assets/css/style-docs.css new file mode 100644 index 0000000..c99b877 --- /dev/null +++ b/assets/css/style-docs.css @@ -0,0 +1,93 @@ +/* Enhanced styling for detailed documentation */ +.option-detail { + background: #f8f9fa; + border-left: 4px solid #007bff; + padding: 15px; + margin: 10px 0; + border-radius: 0 4px 4px 0; +} + +.option-detail h4 { + color: #007bff; + margin-bottom: 8px; +} + +.option-detail .option-type { + background: #6c757d; + color: white; + padding: 2px 6px; + border-radius: 3px; + font-size: 11px; + font-weight: bold; + margin-right: 8px; +} + +.option-detail .option-default { + background: #28a745; + color: white; + padding: 2px 6px; + border-radius: 3px; + font-size: 11px; + margin-right: 8px; +} + +.example-request, +.example-response { + background: #2d3748; + color: #e2e8f0; + padding: 15px; + border-radius: 5px; + font-family: 'Courier New', monospace; + font-size: 13px; + overflow-x: auto; + margin: 10px 0; +} + +.generator-section { + background: white; + margin: 20px 0; + border-radius: 8px; + box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1); + overflow: hidden; +} + +.generator-header { + background: #778491; + color: white; + padding: 20px; +} + +.generator-content { + padding: 30px; +} + +.language-selector { + position: fixed; + top: 20px; + right: 20px; + background: white; + border: 1px solid #ddd; + border-radius: 5px; + box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1); + z-index: 1000; +} + +.language-selector select { + border: none; + padding: 10px 15px; + font-size: 14px; + cursor: pointer; +} + +.security-note { + background: #fff3cd; + border: 1px solid #ffeaa7; + border-radius: 4px; + padding: 12px; + margin: 15px 0; +} + +.security-note::before { + content: "🔒 "; + font-weight: bold; +} \ No newline at end of file diff --git a/assets/css/style.css b/assets/css/style.css new file mode 100644 index 0000000..b22b46a --- /dev/null +++ b/assets/css/style.css @@ -0,0 +1,3096 @@ +:root { + /* Primitive Color Tokens */ + --color-white: rgba(255, 255, 255, 1); + --color-black: rgba(0, 0, 0, 1); + --color-cream-50: rgba(252, 252, 249, 1); + --color-cream-100: rgba(255, 255, 253, 1); + --color-gray-200: rgba(245, 245, 245, 1); + --color-gray-300: rgba(167, 169, 169, 1); + --color-gray-400: rgba(119, 124, 124, 1); + --color-slate-500: rgba(98, 108, 113, 1); + --color-brown-600: rgba(94, 82, 64, 1); + --color-charcoal-700: rgba(31, 33, 33, 1); + --color-charcoal-800: rgba(38, 40, 40, 1); + --color-slate-900: rgba(19, 52, 59, 1); + --color-teal-300: rgba(50, 184, 198, 1); + --color-teal-400: rgba(45, 166, 178, 1); + --color-teal-500: rgba(33, 128, 141, 1); + --color-teal-600: rgba(29, 116, 128, 1); + --color-teal-700: rgba(26, 104, 115, 1); + --color-teal-800: rgba(41, 150, 161, 1); + --color-red-400: rgba(255, 84, 89, 1); + --color-red-500: rgba(192, 21, 47, 1); + --color-orange-400: rgba(230, 129, 97, 1); + --color-orange-500: rgba(168, 75, 47, 1); + + /* RGB versions for opacity control */ + --color-brown-600-rgb: 94, 82, 64; + --color-teal-500-rgb: 33, 128, 141; + --color-slate-900-rgb: 19, 52, 59; + --color-slate-500-rgb: 98, 108, 113; + --color-red-500-rgb: 192, 21, 47; + --color-red-400-rgb: 255, 84, 89; + --color-orange-500-rgb: 168, 75, 47; + --color-orange-400-rgb: 230, 129, 97; + + /* Background color tokens (Light Mode) */ + --color-bg-1: rgba(59, 130, 246, 0.08); /* Light blue */ + --color-bg-2: rgba(245, 158, 11, 0.08); /* Light yellow */ + --color-bg-3: rgba(34, 197, 94, 0.08); /* Light green */ + --color-bg-4: rgba(239, 68, 68, 0.08); /* Light red */ + --color-bg-5: rgba(147, 51, 234, 0.08); /* Light purple */ + --color-bg-6: rgba(249, 115, 22, 0.08); /* Light orange */ + --color-bg-7: rgba(236, 72, 153, 0.08); /* Light pink */ + --color-bg-8: rgba(6, 182, 212, 0.08); /* Light cyan */ + + /* Semantic Color Tokens (Light Mode) */ + --color-background: var(--color-cream-50); + --color-surface: var(--color-cream-100); + --color-text: var(--color-slate-900); + --color-text-secondary: var(--color-slate-500); + --color-primary: var(--color-teal-500); + --color-primary-hover: var(--color-teal-600); + --color-primary-active: var(--color-teal-700); + --color-secondary: rgba(var(--color-brown-600-rgb), 0.12); + --color-secondary-hover: rgba(var(--color-brown-600-rgb), 0.2); + --color-secondary-active: rgba(var(--color-brown-600-rgb), 0.25); + --color-border: rgba(var(--color-brown-600-rgb), 0.2); + --color-btn-primary-text: var(--color-cream-50); + --color-card-border: rgba(var(--color-brown-600-rgb), 0.12); + --color-card-border-inner: rgba(var(--color-brown-600-rgb), 0.12); + --color-error: var(--color-red-500); + --color-success: var(--color-teal-800); + --color-warning: var(--color-orange-500); + --color-info: var(--color-slate-500); + --color-focus-ring: rgba(var(--color-teal-500-rgb), 0.4); + --color-select-caret: rgba(var(--color-slate-900-rgb), 0.8); + + /* Common style patterns */ + --focus-ring: 0 0 0 3px var(--color-focus-ring); + --focus-outline: 2px solid var(--color-primary); + --status-bg-opacity: 0.15; + --status-border-opacity: 0.25; + --select-caret-light: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%23134252' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E"); + --select-caret-dark: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%23f5f5f5' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E"); + + /* RGB versions for opacity control */ + --color-success-rgb: 33, 128, 141; + --color-error-rgb: 192, 21, 47; + --color-warning-rgb: 168, 75, 47; + --color-info-rgb: 98, 108, 113; + + /* Typography */ + --font-family-base: "FKGroteskNeue", "Geist", "Inter", -apple-system, + BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif; + --font-family-mono: "Berkeley Mono", ui-monospace, SFMono-Regular, Menlo, + Monaco, Consolas, monospace; + --font-size-xs: 11px; + --font-size-sm: 12px; + --font-size-base: 14px; + --font-size-md: 14px; + --font-size-lg: 16px; + --font-size-xl: 18px; + --font-size-2xl: 20px; + --font-size-3xl: 24px; + --font-size-4xl: 30px; + --font-weight-normal: 400; + --font-weight-medium: 500; + --font-weight-semibold: 550; + --font-weight-bold: 600; + --line-height-tight: 1.2; + --line-height-normal: 1.5; + --letter-spacing-tight: -0.01em; + + /* Spacing */ + --space-0: 0; + --space-1: 1px; + --space-2: 2px; + --space-4: 4px; + --space-6: 6px; + --space-8: 8px; + --space-10: 10px; + --space-12: 12px; + --space-16: 16px; + --space-20: 20px; + --space-24: 24px; + --space-32: 32px; + + /* Border Radius */ + --radius-sm: 6px; + --radius-base: 8px; + --radius-md: 10px; + --radius-lg: 12px; + --radius-full: 9999px; + + /* Shadows */ + --shadow-xs: 0 1px 2px rgba(0, 0, 0, 0.02); + --shadow-sm: 0 1px 3px rgba(0, 0, 0, 0.04), 0 1px 2px rgba(0, 0, 0, 0.02); + --shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.04), + 0 2px 4px -1px rgba(0, 0, 0, 0.02); + --shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.04), + 0 4px 6px -2px rgba(0, 0, 0, 0.02); + --shadow-inset-sm: inset 0 1px 0 rgba(255, 255, 255, 0.15), + inset 0 -1px 0 rgba(0, 0, 0, 0.03); + + /* Animation */ + --duration-fast: 150ms; + --duration-normal: 250ms; + --ease-standard: cubic-bezier(0.16, 1, 0.3, 1); + + /* Layout */ + --container-sm: 640px; + --container-md: 768px; + --container-lg: 1024px; + --container-xl: 1280px; +} + +/* Dark mode colors */ +@media (prefers-color-scheme: dark) { + :root { + /* RGB versions for opacity control (Dark Mode) */ + --color-gray-400-rgb: 119, 124, 124; + --color-teal-300-rgb: 50, 184, 198; + --color-gray-300-rgb: 167, 169, 169; + --color-gray-200-rgb: 245, 245, 245; + + /* Background color tokens (Dark Mode) */ + --color-bg-1: rgba(29, 78, 216, 0.15); /* Dark blue */ + --color-bg-2: rgba(180, 83, 9, 0.15); /* Dark yellow */ + --color-bg-3: rgba(21, 128, 61, 0.15); /* Dark green */ + --color-bg-4: rgba(185, 28, 28, 0.15); /* Dark red */ + --color-bg-5: rgba(107, 33, 168, 0.15); /* Dark purple */ + --color-bg-6: rgba(194, 65, 12, 0.15); /* Dark orange */ + --color-bg-7: rgba(190, 24, 93, 0.15); /* Dark pink */ + --color-bg-8: rgba(8, 145, 178, 0.15); /* Dark cyan */ + + /* Semantic Color Tokens (Dark Mode) */ + --color-background: var(--color-charcoal-700); + --color-surface: var(--color-charcoal-800); + --color-text: var(--color-gray-200); + --color-text-secondary: rgba(var(--color-gray-300-rgb), 0.7); + --color-primary: var(--color-teal-300); + --color-primary-hover: var(--color-teal-400); + --color-primary-active: var(--color-teal-800); + --color-secondary: rgba(var(--color-gray-400-rgb), 0.15); + --color-secondary-hover: rgba(var(--color-gray-400-rgb), 0.25); + --color-secondary-active: rgba(var(--color-gray-400-rgb), 0.3); + --color-border: rgba(var(--color-gray-400-rgb), 0.3); + --color-error: var(--color-red-400); + --color-success: var(--color-teal-300); + --color-warning: var(--color-orange-400); + --color-info: var(--color-gray-300); + --color-focus-ring: rgba(var(--color-teal-300-rgb), 0.4); + --color-btn-primary-text: var(--color-slate-900); + --color-card-border: rgba(var(--color-gray-400-rgb), 0.2); + --color-card-border-inner: rgba(var(--color-gray-400-rgb), 0.15); + --shadow-inset-sm: inset 0 1px 0 rgba(255, 255, 255, 0.1), + inset 0 -1px 0 rgba(0, 0, 0, 0.15); + --button-border-secondary: rgba(var(--color-gray-400-rgb), 0.2); + --color-border-secondary: rgba(var(--color-gray-400-rgb), 0.2); + --color-select-caret: rgba(var(--color-gray-200-rgb), 0.8); + + /* Common style patterns - updated for dark mode */ + --focus-ring: 0 0 0 3px var(--color-focus-ring); + --focus-outline: 2px solid var(--color-primary); + --status-bg-opacity: 0.15; + --status-border-opacity: 0.25; + --select-caret-light: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%23134252' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E"); + --select-caret-dark: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%23f5f5f5' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E"); + + /* RGB versions for dark mode */ + --color-success-rgb: var(--color-teal-300-rgb); + --color-error-rgb: var(--color-red-400-rgb); + --color-warning-rgb: var(--color-orange-400-rgb); + --color-info-rgb: var(--color-gray-300-rgb); + } +} + +/* Data attribute for manual theme switching */ +[data-color-scheme="dark"] { + /* RGB versions for opacity control (dark mode) */ + --color-gray-400-rgb: 119, 124, 124; + --color-teal-300-rgb: 50, 184, 198; + --color-gray-300-rgb: 167, 169, 169; + --color-gray-200-rgb: 245, 245, 245; + + /* Colorful background palette - Dark Mode */ + --color-bg-1: rgba(29, 78, 216, 0.15); /* Dark blue */ + --color-bg-2: rgba(180, 83, 9, 0.15); /* Dark yellow */ + --color-bg-3: rgba(21, 128, 61, 0.15); /* Dark green */ + --color-bg-4: rgba(185, 28, 28, 0.15); /* Dark red */ + --color-bg-5: rgba(107, 33, 168, 0.15); /* Dark purple */ + --color-bg-6: rgba(194, 65, 12, 0.15); /* Dark orange */ + --color-bg-7: rgba(190, 24, 93, 0.15); /* Dark pink */ + --color-bg-8: rgba(8, 145, 178, 0.15); /* Dark cyan */ + + /* Semantic Color Tokens (Dark Mode) */ + --color-background: var(--color-charcoal-700); + --color-surface: var(--color-charcoal-800); + --color-text: var(--color-gray-200); + --color-text-secondary: rgba(var(--color-gray-300-rgb), 0.7); + --color-primary: var(--color-teal-300); + --color-primary-hover: var(--color-teal-400); + --color-primary-active: var(--color-teal-800); + --color-secondary: rgba(var(--color-gray-400-rgb), 0.15); + --color-secondary-hover: rgba(var(--color-gray-400-rgb), 0.25); + --color-secondary-active: rgba(var(--color-gray-400-rgb), 0.3); + --color-border: rgba(var(--color-gray-400-rgb), 0.3); + --color-error: var(--color-red-400); + --color-success: var(--color-teal-300); + --color-warning: var(--color-orange-400); + --color-info: var(--color-gray-300); + --color-focus-ring: rgba(var(--color-teal-300-rgb), 0.4); + --color-btn-primary-text: var(--color-slate-900); + --color-card-border: rgba(var(--color-gray-400-rgb), 0.15); + --color-card-border-inner: rgba(var(--color-gray-400-rgb), 0.15); + --shadow-inset-sm: inset 0 1px 0 rgba(255, 255, 255, 0.1), + inset 0 -1px 0 rgba(0, 0, 0, 0.15); + --color-border-secondary: rgba(var(--color-gray-400-rgb), 0.2); + --color-select-caret: rgba(var(--color-gray-200-rgb), 0.8); + + /* Common style patterns - updated for dark mode */ + --focus-ring: 0 0 0 3px var(--color-focus-ring); + --focus-outline: 2px solid var(--color-primary); + --status-bg-opacity: 0.15; + --status-border-opacity: 0.25; + --select-caret-light: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%23134252' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E"); + --select-caret-dark: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%23f5f5f5' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E"); + + /* RGB versions for dark mode */ + --color-success-rgb: var(--color-teal-300-rgb); + --color-error-rgb: var(--color-red-400-rgb); + --color-warning-rgb: var(--color-orange-400-rgb); + --color-info-rgb: var(--color-gray-300-rgb); +} + +[data-color-scheme="light"] { + /* RGB versions for opacity control (light mode) */ + --color-brown-600-rgb: 94, 82, 64; + --color-teal-500-rgb: 33, 128, 141; + --color-slate-900-rgb: 19, 52, 59; + + /* Semantic Color Tokens (Light Mode) */ + --color-background: var(--color-cream-50); + --color-surface: var(--color-cream-100); + --color-text: var(--color-slate-900); + --color-text-secondary: var(--color-slate-500); + --color-primary: var(--color-teal-500); + --color-primary-hover: var(--color-teal-600); + --color-primary-active: var(--color-teal-700); + --color-secondary: rgba(var(--color-brown-600-rgb), 0.12); + --color-secondary-hover: rgba(var(--color-brown-600-rgb), 0.2); + --color-secondary-active: rgba(var(--color-brown-600-rgb), 0.25); + --color-border: rgba(var(--color-brown-600-rgb), 0.2); + --color-btn-primary-text: var(--color-cream-50); + --color-card-border: rgba(var(--color-brown-600-rgb), 0.12); + --color-card-border-inner: rgba(var(--color-brown-600-rgb), 0.12); + --color-error: var(--color-red-500); + --color-success: var(--color-teal-500); + --color-warning: var(--color-orange-500); + --color-info: var(--color-slate-500); + --color-focus-ring: rgba(var(--color-teal-500-rgb), 0.4); + + /* RGB versions for light mode */ + --color-success-rgb: var(--color-teal-500-rgb); + --color-error-rgb: var(--color-red-500-rgb); + --color-warning-rgb: var(--color-orange-500-rgb); + --color-info-rgb: var(--color-slate-500-rgb); +} + +/* Base styles */ +html { + font-size: var(--font-size-base); + font-family: var(--font-family-base); + line-height: var(--line-height-normal); + color: var(--color-text); + background-color: var(--color-background); + -webkit-font-smoothing: antialiased; + box-sizing: border-box; +} + +body { + margin: 0; + padding: 0; +} + +*, +*::before, +*::after { + box-sizing: inherit; +} + +/* Typography */ +h1, +h2, +h3, +h4, +h5, +h6 { + margin: 0; + font-weight: var(--font-weight-semibold); + line-height: var(--line-height-tight); + color: var(--color-text); + letter-spacing: var(--letter-spacing-tight); +} + +h1 { + font-size: var(--font-size-4xl); +} +h2 { + font-size: var(--font-size-3xl); +} +h3 { + font-size: var(--font-size-2xl); +} +h4 { + font-size: var(--font-size-xl); +} +h5 { + font-size: var(--font-size-lg); +} +h6 { + font-size: var(--font-size-md); +} + +p { + margin: 0 0 var(--space-16) 0; +} + +a { + color: var(--color-primary); + text-decoration: none; + transition: color var(--duration-fast) var(--ease-standard); +} + +a:hover { + color: var(--color-primary-hover); +} + +code, +pre { + font-family: var(--font-family-mono); + font-size: calc(var(--font-size-base) * 0.95); + background-color: var(--color-secondary); + border-radius: var(--radius-sm); +} + +code { + padding: var(--space-1) var(--space-4); +} + +pre { + padding: var(--space-16); + margin: var(--space-16) 0; + overflow: auto; + border: 1px solid var(--color-border); +} + +pre code { + background: none; + padding: 0; +} + +/* Buttons */ +.btn { + display: inline-flex; + align-items: center; + justify-content: center; + padding: var(--space-8) var(--space-16); + border-radius: var(--radius-base); + font-size: var(--font-size-base); + font-weight: 500; + line-height: 1.5; + cursor: pointer; + transition: all var(--duration-normal) var(--ease-standard); + border: none; + text-decoration: none; + position: relative; +} + +.btn:focus-visible { + outline: none; + box-shadow: var(--focus-ring); +} + +.btn--primary { + background: var(--color-primary); + color: var(--color-btn-primary-text); +} + +.btn--primary:hover { + background: var(--color-primary-hover); +} + +.btn--primary:active { + background: var(--color-primary-active); +} + +.btn--secondary { + background: var(--color-secondary); + color: var(--color-text); +} + +.btn--secondary:hover { + background: var(--color-secondary-hover); +} + +.btn--secondary:active { + background: var(--color-secondary-active); +} + +.btn--outline { + background: transparent; + border: 1px solid var(--color-border); + color: var(--color-text); +} + +.btn--outline:hover { + background: var(--color-secondary); +} + +.btn--sm { + padding: var(--space-4) var(--space-12); + font-size: var(--font-size-sm); + border-radius: var(--radius-sm); +} + +.btn--lg { + padding: var(--space-10) var(--space-20); + font-size: var(--font-size-lg); + border-radius: var(--radius-md); +} + +.btn--full-width { + width: 100%; +} + +.btn:disabled { + opacity: 0.5; + cursor: not-allowed; +} + +/* Form elements */ +.form-control { + display: block; + width: 100%; + padding: var(--space-8) var(--space-12); + font-size: var(--font-size-md); + line-height: 1.5; + color: var(--color-text); + background-color: var(--color-surface); + border: 1px solid var(--color-border); + border-radius: var(--radius-base); + transition: border-color var(--duration-fast) var(--ease-standard), + box-shadow var(--duration-fast) var(--ease-standard); +} + +textarea.form-control { + font-family: var(--font-family-base); + font-size: var(--font-size-base); +} + +select.form-control { + padding: var(--space-8) var(--space-12); + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + background-image: var(--select-caret-light); + background-repeat: no-repeat; + background-position: right var(--space-12) center; + background-size: 16px; + padding-right: var(--space-32); +} + +/* Add a dark mode specific caret */ +@media (prefers-color-scheme: dark) { + select.form-control { + background-image: var(--select-caret-dark); + } +} + +/* Also handle data-color-scheme */ +[data-color-scheme="dark"] select.form-control { + background-image: var(--select-caret-dark); +} + +[data-color-scheme="light"] select.form-control { + background-image: var(--select-caret-light); +} + +.form-control:focus { + border-color: var(--color-primary); + outline: var(--focus-outline); +} + +.form-label { + display: block; + margin-bottom: var(--space-8); + font-weight: var(--font-weight-medium); + font-size: var(--font-size-sm); +} + +.form-group { + margin-bottom: var(--space-16); +} + +/* Card component */ +.card { + background-color: var(--color-surface); + border-radius: var(--radius-lg); + border: 1px solid var(--color-card-border); + box-shadow: var(--shadow-sm); + overflow: hidden; + transition: box-shadow var(--duration-normal) var(--ease-standard); +} + +.card:hover { + box-shadow: var(--shadow-md); +} + +.card__body { + padding: var(--space-16); +} + +.card__header, +.card__footer { + padding: var(--space-16); + border-bottom: 1px solid var(--color-card-border-inner); +} + +/* Status indicators - simplified with CSS variables */ +.status { + display: inline-flex; + align-items: center; + padding: var(--space-6) var(--space-12); + border-radius: var(--radius-full); + font-weight: var(--font-weight-medium); + font-size: var(--font-size-sm); +} + +.status--success { + background-color: rgba( + var(--color-success-rgb, 33, 128, 141), + var(--status-bg-opacity) + ); + color: var(--color-success); + border: 1px solid + rgba(var(--color-success-rgb, 33, 128, 141), var(--status-border-opacity)); +} + +.status--error { + background-color: rgba( + var(--color-error-rgb, 192, 21, 47), + var(--status-bg-opacity) + ); + color: var(--color-error); + border: 1px solid + rgba(var(--color-error-rgb, 192, 21, 47), var(--status-border-opacity)); +} + +.status--warning { + background-color: rgba( + var(--color-warning-rgb, 168, 75, 47), + var(--status-bg-opacity) + ); + color: var(--color-warning); + border: 1px solid + rgba(var(--color-warning-rgb, 168, 75, 47), var(--status-border-opacity)); +} + +.status--info { + background-color: rgba( + var(--color-info-rgb, 98, 108, 113), + var(--status-bg-opacity) + ); + color: var(--color-info); + border: 1px solid + rgba(var(--color-info-rgb, 98, 108, 113), var(--status-border-opacity)); +} + +/* Container layout */ +.container { + width: 100%; + margin-right: auto; + margin-left: auto; + padding-right: var(--space-16); + padding-left: var(--space-16); +} + +@media (min-width: 640px) { + .container { + max-width: var(--container-sm); + } +} +@media (min-width: 768px) { + .container { + max-width: var(--container-md); + } +} +@media (min-width: 1024px) { + .container { + max-width: var(--container-lg); + } + main { + padding: 1em 2em; + } +} +@media (min-width: 1280px) { + .container { + max-width: var(--container-xl); + } +} + +/* Utility classes */ +.flex { + display: flex; +} +.flex-col { + flex-direction: column; +} +.items-center { + align-items: center; +} +.justify-center { + justify-content: center; +} +.justify-between { + justify-content: space-between; +} +.gap-4 { + gap: var(--space-4); +} +.gap-8 { + gap: var(--space-8); +} +.gap-16 { + gap: var(--space-16); +} + +.m-0 { + margin: 0; +} +.mt-8 { + margin-top: var(--space-8); +} +.mb-8 { + margin-bottom: var(--space-8); +} +.mx-8 { + margin-left: var(--space-8); + margin-right: var(--space-8); +} +.my-8 { + margin-top: var(--space-8); + margin-bottom: var(--space-8); +} + +.p-0 { + padding: 0; +} +.py-8 { + padding-top: var(--space-8); + padding-bottom: var(--space-8); +} +.px-8 { + padding-left: var(--space-8); + padding-right: var(--space-8); +} +.py-16 { + padding-top: var(--space-16); + padding-bottom: var(--space-16); +} +.px-16 { + padding-left: var(--space-16); + padding-right: var(--space-16); +} + +.block { + display: block; +} +.hidden { + display: none; +} + +/* Accessibility */ +.sr-only { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + white-space: nowrap; + border-width: 0; +} + +:focus-visible { + outline: var(--focus-outline); + outline-offset: 2px; +} + +/* Dark mode specifics */ +[data-color-scheme="dark"] .btn--outline { + border: 1px solid var(--color-border-secondary); +} + +@font-face { + font-family: 'FKGroteskNeue'; + src: url('https://r2cdn.perplexity.ai/fonts/FKGroteskNeue.woff2') + format('woff2'); +} + +/* END PERPLEXITY DESIGN SYSTEM */ +:root { + /* Primitive Color Tokens */ + --color-white: rgba(255, 255, 255, 1); + --color-black: rgba(0, 0, 0, 1); + --color-cream-50: rgba(252, 252, 249, 1); + --color-cream-100: rgba(255, 255, 253, 1); + --color-gray-200: rgba(245, 245, 245, 1); + --color-gray-300: rgba(167, 169, 169, 1); + --color-gray-400: rgba(119, 124, 124, 1); + --color-slate-500: rgba(98, 108, 113, 1); + --color-brown-600: rgba(94, 82, 64, 1); + --color-charcoal-700: rgba(31, 33, 33, 1); + --color-charcoal-800: rgba(38, 40, 40, 1); + --color-slate-900: rgba(19, 52, 59, 1); + --color-teal-300: rgba(50, 184, 198, 1); + --color-teal-400: rgba(45, 166, 178, 1); + --color-teal-500: rgba(33, 128, 141, 1); + --color-teal-600: rgba(29, 116, 128, 1); + --color-teal-700: rgba(26, 104, 115, 1); + --color-teal-800: rgba(41, 150, 161, 1); + --color-red-400: rgba(255, 84, 89, 1); + --color-red-500: rgba(192, 21, 47, 1); + --color-orange-400: rgba(230, 129, 97, 1); + --color-orange-500: rgba(168, 75, 47, 1); + + /* RGB versions for opacity control */ + --color-brown-600-rgb: 94, 82, 64; + --color-teal-500-rgb: 33, 128, 141; + --color-slate-900-rgb: 19, 52, 59; + --color-slate-500-rgb: 98, 108, 113; + --color-red-500-rgb: 192, 21, 47; + --color-red-400-rgb: 255, 84, 89; + --color-orange-500-rgb: 168, 75, 47; + --color-orange-400-rgb: 230, 129, 97; + + /* Background color tokens (Light Mode) */ + --color-bg-1: rgba(59, 130, 246, 0.08); + --color-bg-2: rgba(245, 158, 11, 0.08); + --color-bg-3: rgba(34, 197, 94, 0.08); + --color-bg-4: rgba(239, 68, 68, 0.08); + --color-bg-5: rgba(147, 51, 234, 0.08); + --color-bg-6: rgba(249, 115, 22, 0.08); + --color-bg-7: rgba(236, 72, 153, 0.08); + --color-bg-8: rgba(6, 182, 212, 0.08); + + /* Semantic Color Tokens (Light Mode) */ + --color-background: var(--color-cream-50); + --color-surface: var(--color-cream-100); + --color-surface-elevated: var(--color-white); + --color-text: var(--color-slate-900); + --color-text-secondary: var(--color-slate-500); + --color-text-muted: rgba(var(--color-slate-500-rgb), 0.7); + --color-primary: var(--color-teal-500); + --color-primary-hover: var(--color-teal-600); + --color-primary-active: var(--color-teal-700); + --color-secondary: rgba(var(--color-brown-600-rgb), 0.12); + --color-secondary-hover: rgba(var(--color-brown-600-rgb), 0.2); + --color-secondary-active: rgba(var(--color-brown-600-rgb), 0.25); + --color-border: rgba(var(--color-brown-600-rgb), 0.2); + --color-border-light: rgba(var(--color-brown-600-rgb), 0.1); + --color-border-strong: rgba(var(--color-brown-600-rgb), 0.3); + --color-btn-primary-text: var(--color-cream-50); + --color-card-border: rgba(var(--color-brown-600-rgb), 0.12); + --color-card-border-inner: rgba(var(--color-brown-600-rgb), 0.12); + --color-error: var(--color-red-500); + --color-success: var(--color-teal-500); + --color-warning: var(--color-orange-500); + --color-info: var(--color-slate-500); + --color-focus-ring: rgba(var(--color-teal-500-rgb), 0.4); + --color-select-caret: rgba(var(--color-slate-900-rgb), 0.8); + + /* Common style patterns */ + --focus-ring: 0 0 0 3px var(--color-focus-ring); + --focus-outline: 2px solid var(--color-primary); + --status-bg-opacity: 0.15; + --status-border-opacity: 0.25; + --select-caret-light: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%23134252' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E"); + --select-caret-dark: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%23f5f5f5' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E"); + + /* RGB versions for opacity control */ + --color-success-rgb: 33, 128, 141; + --color-error-rgb: 192, 21, 47; + --color-warning-rgb: 168, 75, 47; + --color-info-rgb: 98, 108, 113; + + /* Typography */ + --font-family-base: "FKGroteskNeue", "Geist", "Inter", -apple-system, + BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif; + --font-family-mono: "Berkeley Mono", ui-monospace, SFMono-Regular, Menlo, + Monaco, Consolas, monospace; + --font-size-xs: 11px; + --font-size-sm: 12px; + --font-size-base: 14px; + --font-size-md: 14px; + --font-size-lg: 16px; + --font-size-xl: 18px; + --font-size-2xl: 20px; + --font-size-3xl: 24px; + --font-size-4xl: 30px; + --font-weight-normal: 400; + --font-weight-medium: 500; + --font-weight-semibold: 550; + --font-weight-bold: 600; + --line-height-tight: 1.2; + --line-height-normal: 1.5; + --line-height-relaxed: 1.6; + --letter-spacing-tight: -0.01em; + + /* Spacing */ + --space-0: 0; + --space-1: 1px; + --space-2: 2px; + --space-4: 4px; + --space-6: 6px; + --space-8: 8px; + --space-10: 10px; + --space-12: 12px; + --space-16: 16px; + --space-20: 20px; + --space-24: 24px; + --space-32: 32px; + --space-40: 40px; + --space-48: 48px; + --space-64: 64px; + + /* Card System */ + --card-max-width: 28rem; + --card-min-width: 18rem; + --card-aspect-ratio: auto; + + /* Form Field Constraints */ + --field-width-xs: 4rem; + --field-width-sm: 6rem; + --field-width-md: 12rem; + --field-width-lg: 20rem; + --field-width-full: 100%; + + /* Border Radius */ + --radius-sm: 6px; + --radius-base: 8px; + --radius-md: 10px; + --radius-lg: 12px; + --radius-full: 9999px; + + /* Shadows */ + --shadow-xs: 0 1px 2px rgba(0, 0, 0, 0.02); + --shadow-sm: 0 1px 3px rgba(0, 0, 0, 0.04), 0 1px 2px rgba(0, 0, 0, 0.02); + --shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.04), + 0 2px 4px -1px rgba(0, 0, 0, 0.02); + --shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.04), + 0 4px 6px -2px rgba(0, 0, 0, 0.02); + --shadow-inset-sm: inset 0 1px 0 rgba(255, 255, 255, 0.15), + inset 0 -1px 0 rgba(0, 0, 0, 0.03); + + /* Animation */ + --duration-fast: 150ms; + --duration-normal: 250ms; + --duration-slow: 350ms; + --ease-standard: cubic-bezier(0.16, 1, 0.3, 1); + --ease-in: cubic-bezier(0.4, 0, 1, 1); + --ease-out: cubic-bezier(0, 0, 0.2, 1); + + /* Layout */ + --container-sm: 640px; + --container-md: 768px; + --container-lg: 1024px; + --container-xl: 1280px; + --container-2xl: 1536px; + + /* Z-Index Scale */ + --z-dropdown: 1000; + --z-sticky: 1020; + --z-fixed: 1030; + --z-modal-backdrop: 1040; + --z-modal: 1050; + --z-popover: 1060; + --z-tooltip: 1070; + --z-toast: 1080; +} + +/* Dark mode colors */ +@media (prefers-color-scheme: dark) { + :root { + /* RGB versions for opacity control (Dark Mode) */ + --color-gray-400-rgb: 119, 124, 124; + --color-teal-300-rgb: 50, 184, 198; + --color-gray-300-rgb: 167, 169, 169; + --color-gray-200-rgb: 245, 245, 245; + + /* Background color tokens (Dark Mode) */ + --color-bg-1: rgba(29, 78, 216, 0.15); + --color-bg-2: rgba(180, 83, 9, 0.15); + --color-bg-3: rgba(21, 128, 61, 0.15); + --color-bg-4: rgba(185, 28, 28, 0.15); + --color-bg-5: rgba(107, 33, 168, 0.15); + --color-bg-6: rgba(194, 65, 12, 0.15); + --color-bg-7: rgba(190, 24, 93, 0.15); + --color-bg-8: rgba(8, 145, 178, 0.15); + + /* Semantic Color Tokens (Dark Mode) */ + --color-background: var(--color-charcoal-700); + --color-surface: var(--color-charcoal-800); + --color-surface-elevated: rgba(55, 65, 81, 1); + --color-text: var(--color-gray-200); + --color-text-secondary: rgba(var(--color-gray-300-rgb), 0.7); + --color-text-muted: rgba(var(--color-gray-400-rgb), 0.6); + --color-primary: var(--color-teal-300); + --color-primary-hover: var(--color-teal-400); + --color-primary-active: var(--color-teal-800); + --color-secondary: rgba(var(--color-gray-400-rgb), 0.15); + --color-secondary-hover: rgba(var(--color-gray-400-rgb), 0.25); + --color-secondary-active: rgba(var(--color-gray-400-rgb), 0.3); + --color-border: rgba(var(--color-gray-400-rgb), 0.3); + --color-border-light: rgba(var(--color-gray-400-rgb), 0.15); + --color-border-strong: rgba(var(--color-gray-400-rgb), 0.4); + --color-error: var(--color-red-400); + --color-success: var(--color-teal-300); + --color-warning: var(--color-orange-400); + --color-info: var(--color-gray-300); + --color-focus-ring: rgba(var(--color-teal-300-rgb), 0.4); + --color-btn-primary-text: var(--color-slate-900); + --color-card-border: rgba(var(--color-gray-400-rgb), 0.2); + --color-card-border-inner: rgba(var(--color-gray-400-rgb), 0.15); + --shadow-inset-sm: inset 0 1px 0 rgba(255, 255, 255, 0.1), + inset 0 -1px 0 rgba(0, 0, 0, 0.15); + --color-select-caret: rgba(var(--color-gray-200-rgb), 0.8); + + /* RGB versions for dark mode */ + --color-success-rgb: var(--color-teal-300-rgb); + --color-error-rgb: var(--color-red-400-rgb); + --color-warning-rgb: var(--color-orange-400-rgb); + --color-info-rgb: var(--color-gray-300-rgb); + } +} + +[data-color-scheme="dark"] { + /* RGB versions for opacity control (dark mode) */ + --color-gray-400-rgb: 119, 124, 124; + --color-teal-300-rgb: 50, 184, 198; + --color-gray-300-rgb: 167, 169, 169; + --color-gray-200-rgb: 245, 245, 245; + + /* Background color tokens (Dark Mode) */ + --color-bg-1: rgba(29, 78, 216, 0.15); + --color-bg-2: rgba(180, 83, 9, 0.15); + --color-bg-3: rgba(21, 128, 61, 0.15); + --color-bg-4: rgba(185, 28, 28, 0.15); + --color-bg-5: rgba(107, 33, 168, 0.15); + --color-bg-6: rgba(194, 65, 12, 0.15); + --color-bg-7: rgba(190, 24, 93, 0.15); + --color-bg-8: rgba(8, 145, 178, 0.15); + + /* Semantic Color Tokens (Dark Mode) */ + --color-background: var(--color-charcoal-700); + --color-surface: var(--color-charcoal-800); + --color-surface-elevated: rgba(55, 65, 81, 1); + --color-text: var(--color-gray-200); + --color-text-secondary: rgba(var(--color-gray-300-rgb), 0.7); + --color-text-muted: rgba(var(--color-gray-400-rgb), 0.6); + --color-primary: var(--color-teal-300); + --color-primary-hover: var(--color-teal-400); + --color-primary-active: var(--color-teal-800); + --color-secondary: rgba(var(--color-gray-400-rgb), 0.15); + --color-secondary-hover: rgba(var(--color-gray-400-rgb), 0.25); + --color-secondary-active: rgba(var(--color-gray-400-rgb), 0.3); + --color-border: rgba(var(--color-gray-400-rgb), 0.3); + --color-border-light: rgba(var(--color-gray-400-rgb), 0.15); + --color-border-strong: rgba(var(--color-gray-400-rgb), 0.4); + --color-error: var(--color-red-400); + --color-success: var(--color-teal-300); + --color-warning: var(--color-orange-400); + --color-info: var(--color-gray-300); + --color-focus-ring: rgba(var(--color-teal-300-rgb), 0.4); + --color-btn-primary-text: var(--color-slate-900); + --color-card-border: rgba(var(--color-gray-400-rgb), 0.15); + --color-card-border-inner: rgba(var(--color-gray-400-rgb), 0.15); + --shadow-inset-sm: inset 0 1px 0 rgba(255, 255, 255, 0.1), + inset 0 -1px 0 rgba(0, 0, 0, 0.15); + --color-select-caret: rgba(var(--color-gray-200-rgb), 0.8); + + /* RGB versions for dark mode */ + --color-success-rgb: var(--color-teal-300-rgb); + --color-error-rgb: var(--color-red-400-rgb); + --color-warning-rgb: var(--color-orange-400-rgb); + --color-info-rgb: var(--color-gray-300-rgb); +} + +[data-color-scheme="light"] { + --color-brown-600-rgb: 94, 82, 64; + --color-teal-500-rgb: 33, 128, 141; + --color-slate-900-rgb: 19, 52, 59; + + /* Semantic Color Tokens (Light Mode) */ + --color-background: var(--color-cream-50); + --color-surface: var(--color-cream-100); + --color-surface-elevated: var(--color-white); + --color-text: var(--color-slate-900); + --color-text-secondary: var(--color-slate-500); + --color-text-muted: rgba(var(--color-slate-500-rgb), 0.7); + --color-primary: var(--color-teal-500); + --color-primary-hover: var(--color-teal-600); + --color-primary-active: var(--color-teal-700); + --color-secondary: rgba(var(--color-brown-600-rgb), 0.12); + --color-secondary-hover: rgba(var(--color-brown-600-rgb), 0.2); + --color-secondary-active: rgba(var(--color-brown-600-rgb), 0.25); + --color-border: rgba(var(--color-brown-600-rgb), 0.2); + --color-border-light: rgba(var(--color-brown-600-rgb), 0.1); + --color-border-strong: rgba(var(--color-brown-600-rgb), 0.3); + --color-btn-primary-text: var(--color-cream-50); + --color-card-border: rgba(var(--color-brown-600-rgb), 0.12); + --color-card-border-inner: rgba(var(--color-brown-600-rgb), 0.12); + --color-error: var(--color-red-500); + --color-success: var(--color-teal-500); + --color-warning: var(--color-orange-500); + --color-info: var(--color-slate-500); + --color-focus-ring: rgba(var(--color-teal-500-rgb), 0.4); + + /* RGB versions for light mode */ + --color-success-rgb: var(--color-teal-500-rgb); + --color-error-rgb: var(--color-red-500-rgb); + --color-warning-rgb: var(--color-orange-500-rgb); + --color-info-rgb: var(--color-slate-500-rgb); +} + +/* Base styles */ +html { + font-size: var(--font-size-base); + font-family: var(--font-family-base); + line-height: var(--line-height-relaxed); + color: var(--color-text); + background-color: var(--color-background); + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + box-sizing: border-box; +} + +body { + margin: 0; + padding: 0; + min-height: 100vh; + transition: background-color var(--duration-normal) var(--ease-standard), + color var(--duration-normal) var(--ease-standard); +} + +*, +*::before, +*::after { + box-sizing: inherit; +} + +/* Typography */ +h1, h2, h3, h4, h5, h6 { + margin: 0; + font-weight: var(--font-weight-semibold); + line-height: var(--line-height-tight); + color: var(--color-text); + letter-spacing: var(--letter-spacing-tight); +} + +h1 { + font-size: var(--font-size-4xl); + margin-bottom: var(--space-24); +} + +h2 { + font-size: var(--font-size-3xl); + margin-bottom: var(--space-20); +} + +h3 { + font-size: var(--font-size-2xl); + margin-bottom: var(--space-16); +} + +h4 { + font-size: var(--font-size-xl); + margin-bottom: var(--space-12); +} + +h5 { + font-size: var(--font-size-lg); + margin-bottom: var(--space-10); +} + +h6 { + font-size: var(--font-size-md); + margin-bottom: var(--space-8); +} + +p { + margin: 0 0 var(--space-16) 0; + line-height: var(--line-height-normal); +} + +a { + color: var(--color-primary); + text-decoration: none; + transition: color var(--duration-fast) var(--ease-standard); +} + +a:hover { + color: var(--color-primary-hover); +} + +a:focus-visible { + outline: var(--focus-outline); + outline-offset: 2px; +} + +code, pre { + font-family: var(--font-family-mono); + font-size: calc(var(--font-size-base) * 0.95); + background-color: var(--color-secondary); + border-radius: var(--radius-sm); +} + +code { + padding: var(--space-2) var(--space-4); +} + +pre { + padding: var(--space-16); + margin: var(--space-16) 0; + overflow: auto; + border: 1px solid var(--color-border); +} + +pre code { + background: none; + padding: 0; +} + +/* Container */ +.container { + width: 100%; + margin-right: auto; + margin-left: auto; + padding-right: var(--space-16); + padding-left: var(--space-16); +} + +@media (min-width: 640px) { + .container { + max-width: var(--container-sm); + padding-right: var(--space-20); + padding-left: var(--space-20); + } +} + +@media (min-width: 768px) { + .container { + max-width: var(--container-md); + } +} + +@media (min-width: 1024px) { + .container { + max-width: var(--container-lg); + padding-right: var(--space-24); + padding-left: var(--space-24); + } +} + +@media (min-width: 1280px) { + .container { + max-width: var(--container-xl); + } +} + +@media (min-width: 1536px) { + .container { + max-width: var(--container-2xl); + } +} + +/* Header */ +.header { + background: var(--color-surface); + border-bottom: 1px solid var(--color-border); + padding: var(--space-16) 0; + position: sticky; + top: 0; + z-index: var(--z-sticky); + backdrop-filter: blur(8px); + -webkit-backdrop-filter: blur(8px); + transition: all var(--duration-normal) var(--ease-standard); +} + +.header .container { + display: flex; + justify-content: space-between; + align-items: center; + gap: var(--space-16); +} + +.logo { + display: flex; + align-items: center; + gap: var(--space-12); + color: var(--color-primary); + font-size: var(--font-size-2xl); + font-weight: var(--font-weight-bold); + text-decoration: none; + transition: color var(--duration-fast) var(--ease-standard); +} + +.logo:hover { + color: var(--color-primary-hover); +} + +.logo-icon { + font-size: 1.5em; +} + +.header-actions { + display: flex; + gap: var(--space-12); + align-items: center; +} + +/* Language Selector */ +.language-selector { + position: relative; +} + +.language-select { + padding: var(--space-8) var(--space-12); + border: 1px solid var(--color-border); + border-radius: var(--radius-base); + background: var(--color-surface-elevated); + color: var(--color-text); + font-size: var(--font-size-sm); + font-family: inherit; + cursor: pointer; + transition: all var(--duration-fast) var(--ease-standard); + appearance: none; + background-image: var(--select-caret-light); + background-repeat: no-repeat; + background-position: right var(--space-12) center; + background-size: 16px; + padding-right: var(--space-32); + min-width: 120px; +} + +@media (prefers-color-scheme: dark) { + .language-select { + background-image: var(--select-caret-dark); + } +} + +[data-color-scheme="dark"] .language-select { + background-image: var(--select-caret-dark); +} + +[data-color-scheme="light"] .language-select { + background-image: var(--select-caret-light); +} + +.language-select:focus { + outline: none; + border-color: var(--color-primary); + box-shadow: var(--focus-ring); +} + +.language-select:hover { + border-color: var(--color-primary); + background-color: var(--color-surface); +} + +/* Buttons */ +.btn { + display: inline-flex; + align-items: center; + justify-content: center; + gap: var(--space-8); + padding: var(--space-8) var(--space-16); + border-radius: var(--radius-base); + font-size: var(--font-size-base); + font-weight: var(--font-weight-medium); + font-family: inherit; + line-height: var(--line-height-normal); + cursor: pointer; + transition: all var(--duration-normal) var(--ease-standard); + border: none; + text-decoration: none; + position: relative; + white-space: nowrap; +} + +.btn:focus-visible { + outline: none; + box-shadow: var(--focus-ring); +} + +.btn:disabled { + opacity: 0.5; + cursor: not-allowed; + transform: none; +} + +.btn--primary { + background: var(--color-primary); + color: var(--color-btn-primary-text); +} + +.btn--primary:hover:not(:disabled) { + background: var(--color-primary-hover); +} + +.btn--primary:active:not(:disabled) { + background: var(--color-primary-active); +} + +.btn--secondary { + background: var(--color-secondary); + color: var(--color-text); + border: 1px solid var(--color-border-light); +} + +.btn--secondary:hover:not(:disabled) { + background: var(--color-secondary-hover); + border-color: var(--color-border); +} + +.btn--secondary:active:not(:disabled) { + background: var(--color-secondary-active); +} + +.btn--outline { + background: transparent; + border: 1px solid var(--color-border); + color: var(--color-text); +} + +.btn--outline:hover:not(:disabled) { + background: var(--color-secondary); + border-color: var(--color-primary); +} + +.btn--ghost { + background: transparent; + color: var(--color-text-secondary); + border: none; +} + +.btn--ghost:hover:not(:disabled) { + background: var(--color-secondary); + color: var(--color-text); +} + +.btn--sm { + padding: var(--space-4) var(--space-12); + font-size: var(--font-size-sm); + border-radius: var(--radius-sm); + gap: var(--space-4); +} + +.btn--lg { + padding: var(--space-10) var(--space-20); + font-size: var(--font-size-lg); + border-radius: var(--radius-md); + gap: var(--space-10); +} + +.btn--full-width { + width: 100%; +} + +.btn--icon-only { + padding: var(--space-8); + aspect-ratio: 1; +} + +/* Form Elements */ +.form-control { + display: block; + padding: var(--space-8) var(--space-12); + font-size: var(--font-size-base); + font-family: inherit; + line-height: var(--line-height-normal); + color: var(--color-text); + background-color: var(--color-surface-elevated); + border: 1px solid var(--color-border); + border-radius: var(--radius-base); + transition: border-color var(--duration-fast) var(--ease-standard), + box-shadow var(--duration-fast) var(--ease-standard), + background-color var(--duration-fast) var(--ease-standard); +} + +.form-control:focus { + border-color: var(--color-primary); + outline: none; + box-shadow: var(--focus-ring); + background-color: var(--color-surface); +} + +.form-control:hover { + border-color: var(--color-border-strong); +} + +.form-control::placeholder { + color: var(--color-text-muted); +} + +.form-control--xs { + width: var(--field-width-xs); + min-width: var(--field-width-xs); +} + +.form-control--sm { + width: var(--field-width-sm); + min-width: var(--field-width-sm); +} + +.form-control--md { + width: var(--field-width-md); + min-width: var(--field-width-md); +} + +.form-control--lg { + width: var(--field-width-lg); + min-width: var(--field-width-lg); +} + +.form-control--full { + width: var(--field-width-full); +} + +input[type="number"].form-control { + width: var(--field-width-sm); + min-width: var(--field-width-sm); +} + +input[type="range"].form-control { + width: var(--field-width-full); +} + +select.form-control { + width: var(--field-width-md); + min-width: var(--field-width-md); + appearance: none; + background-image: var(--select-caret-light); + background-repeat: no-repeat; + background-position: right var(--space-12) center; + background-size: 16px; + padding-right: var(--space-32); +} + +@media (prefers-color-scheme: dark) { + select.form-control { + background-image: var(--select-caret-dark); + } +} + +[data-color-scheme="dark"] select.form-control { + background-image: var(--select-caret-dark); +} + +[data-color-scheme="light"] select.form-control { + background-image: var(--select-caret-light); +} + +select.form-control--language { + width: var(--field-width-lg); + min-width: var(--field-width-lg); +} + +textarea.form-control { + font-family: var(--font-family-base); + resize: vertical; + min-height: 96px; + width: var(--field-width-full); +} + +.form-label { + display: block; + margin-bottom: var(--space-6); + font-weight: var(--font-weight-medium); + font-size: var(--font-size-sm); + color: var(--color-text); +} + +.form-group { + margin-bottom: var(--space-16); +} + +.form-group--inline { + display: flex; + align-items: center; + gap: var(--space-8); +} + +.checkbox-group, +.radio-group { + display: flex; + align-items: center; + gap: var(--space-8); + cursor: pointer; +} + +.checkbox-group input[type="checkbox"], +.radio-group input[type="radio"] { + width: 16px; + height: 16px; + accent-color: var(--color-primary); + cursor: pointer; +} + +/* Card Component */ +.card { + background-color: var(--color-surface); + border-radius: var(--radius-lg); + border: 1px solid var(--color-card-border); + box-shadow: var(--shadow-sm); + overflow: hidden; + transition: all var(--duration-normal) var(--ease-standard); +} + +.card:hover { + box-shadow: var(--shadow-md); + transform: translateY(-1px); +} + +.card--interactive { + cursor: pointer; +} + +.card--interactive:hover { + border-color: var(--color-primary); +} + +.card--selected { + border-color: var(--color-primary); + background: rgba(var(--color-teal-500-rgb), 0.05); + box-shadow: var(--shadow-md); +} + +.card__header { + padding: var(--space-20) var(--space-20) var(--space-16) var(--space-20); + border-bottom: 1px solid var(--color-card-border-inner); +} + +.card__body { + padding: var(--space-20); +} + +.card__footer { + padding: var(--space-16) var(--space-20) var(--space-20) var(--space-20); + border-top: 1px solid var(--color-card-border-inner); +} + +/* Status indicators */ +.status { + display: inline-flex; + align-items: center; + gap: var(--space-4); + padding: var(--space-6) var(--space-12); + border-radius: var(--radius-full); + font-weight: var(--font-weight-medium); + font-size: var(--font-size-sm); + line-height: var(--line-height-tight); +} + +.status--success { + background-color: rgba( + var(--color-success-rgb, 33, 128, 141), + var(--status-bg-opacity) + ); + color: var(--color-success); + border: 1px solid + rgba(var(--color-success-rgb, 33, 128, 141), var(--status-border-opacity)); +} + +.status--error { + background-color: rgba( + var(--color-error-rgb, 192, 21, 47), + var(--status-bg-opacity) + ); + color: var(--color-error); + border: 1px solid + rgba(var(--color-error-rgb, 192, 21, 47), var(--status-border-opacity)); +} + +.status--warning { + background-color: rgba( + var(--color-warning-rgb, 168, 75, 47), + var(--status-bg-opacity) + ); + color: var(--color-warning); + border: 1px solid + rgba(var(--color-warning-rgb, 168, 75, 47), var(--status-border-opacity)); +} + +.status--info { + background-color: rgba( + var(--color-info-rgb, 98, 108, 113), + var(--status-bg-opacity) + ); + color: var(--color-info); + border: 1px solid + rgba(var(--color-info-rgb, 98, 108, 113), var(--status-border-opacity)); +} + +/* Main Content Areas */ +.main { + min-height: calc(100vh - var(--space-64) - var(--space-48)); + padding: var(--space-32) 0; +} + +.main-title { + text-align: center; + margin-bottom: var(--space-48); + color: var(--color-text); +} + +.main-subtitle { + text-align: center; + color: var(--color-text-secondary); + font-size: var(--font-size-lg); + margin-bottom: var(--space-32); + max-width: 768px; + margin-left: auto; + margin-right: auto; +} + +/* Generator Selection */ +.generator-selection { + margin-bottom: var(--space-32); +} + +.generator-grid { + display: grid; + gap: var(--space-24); + margin-top: var(--space-24); + grid-template-columns: repeat(auto-fill, minmax(var(--card-min-width), 1fr)); +} + +.generator-grid.grid-single { + grid-template-columns: 1fr; +} + +.generator-grid.grid-double { + grid-template-columns: repeat(2, 1fr); +} + +.generator-grid.grid-triple { + grid-template-columns: repeat(3, 1fr); +} + +.generator-grid.grid-quad { + grid-template-columns: repeat(4, 1fr); +} + +@media (min-width: 640px) { + .generator-grid { + gap: var(--space-32); + grid-template-columns: repeat(auto-fill, minmax(320px, 1fr)); + } +} + +@media (min-width: 768px) { + .generator-grid { + grid-template-columns: repeat(auto-fill, minmax(352px, 1fr)); + } +} + +@media (min-width: 1024px) { + .generator-grid { + grid-template-columns: repeat(auto-fill, minmax(var(--card-max-width), 1fr)); + } +} + +@media (min-width: 1280px) { + .generator-grid { + grid-template-columns: repeat(auto-fill, minmax(var(--card-max-width), var(--card-max-width))); + justify-content: center; + } +} + +@media (min-width: 1536px) { + .generator-grid { + grid-template-columns: repeat(auto-fill, var(--card-max-width)); + gap: var(--space-40); + } +} + +.generator-card { + background: var(--color-surface); + border: 2px solid var(--color-card-border); + border-radius: var(--radius-lg); + padding: var(--space-24); + cursor: pointer; + transition: all var(--duration-normal) var(--ease-standard); + position: relative; + max-width: var(--card-max-width); + min-height: fit-content; +} + +.generator-card:hover { + border-color: var(--color-primary); + transform: translateY(-2px); + box-shadow: var(--shadow-md); +} + +.generator-card.selected { + border-color: var(--color-primary); + background: rgba(var(--color-teal-500-rgb), 0.05); + box-shadow: var(--shadow-md); +} + +.generator-card[data-type="diceware"] { + border-left: 4px solid var(--color-error); +} + +.generator-card[data-type="xkcdpass"] { + border-left: 4px solid var(--color-primary); +} + +.generator-card[data-type="high-entropy"] { + border-left: 4px solid var(--color-warning); +} + +.generator-card[data-type="passkey"] { + border-left: 4px solid var(--color-success); +} + +.generator-card[data-type="pwgen"] { + border-left: 4px solid var(--color-info); +} + +.generator-card .badge { + display: inline-block; + background: var(--color-error); + color: var(--color-white); + font-size: var(--font-size-xs); + padding: var(--space-2) var(--space-6); + border-radius: var(--radius-full); + margin-left: var(--space-8); + font-weight: var(--font-weight-bold); + text-transform: uppercase; + letter-spacing: 0.5px; + position: absolute; + top: var(--space-16); + right: var(--space-16); +} + +.generator-card h3 { + color: var(--color-primary); + margin-bottom: var(--space-8); + display: flex; + align-items: center; + gap: var(--space-8); +} + +.generator-card p { + color: var(--color-text-secondary); + font-size: var(--font-size-sm); + line-height: var(--line-height-normal); + margin: 0; +} + +.generator-icon { + font-size: 1.5em; +} + +/* Options Panel */ +.options-panel { + background: var(--color-surface); + border-radius: var(--radius-lg); + padding: var(--space-24); + margin-bottom: var(--space-32); + border: 1px solid var(--color-card-border); +} + +.options-form { + display: grid; + gap: var(--space-20); + margin: var(--space-16) 0; +} + +@media (min-width: 768px) { + .options-form { + grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); + align-items: start; + } +} + +.generator-options { + display: grid; + gap: var(--space-16); + margin-top: var(--space-12); +} + +@media (min-width: 640px) { + .generator-options { + grid-template-columns: repeat(auto-fit, minmax(192px, 1fr)); + align-items: start; + } +} + +.option-group { + margin-bottom: var(--space-16); +} + +.option-group-collapsible { + border: 1px solid var(--color-card-border-inner); + border-radius: var(--radius-base); + padding: var(--space-8) var(--space-12); + background: var(--color-surface-elevated); +} + +.option-group-summary { + cursor: pointer; + font-weight: var(--font-weight-semibold); + color: var(--color-text); + list-style: none; + user-select: none; + padding: var(--space-6) 0; +} + +.option-group-summary::-webkit-details-marker { + display: none; +} + +.option-group-summary::before { + content: "▸"; + display: inline-block; + margin-right: var(--space-8); + transition: transform var(--duration-fast) var(--ease-standard); +} + +.option-group-collapsible[open] > .option-group-summary::before { + transform: rotate(90deg); +} + +.option-group label { + font-weight: var(--font-weight-medium); + color: var(--color-text); + margin-bottom: var(--space-6); + display: block; + font-size: var(--font-size-sm); +} + +.checkbox-wrapper { + display: flex; + align-items: flex-start; + gap: var(--space-10); +} + +.form-check-input { + margin-top: 2px; + width: 16px; + height: 16px; + flex-shrink: 0; + accent-color: var(--color-primary); +} + +.checkbox-content { + display: flex; + flex-direction: column; + gap: var(--space-4); +} + +.checkbox-content > label { + margin-bottom: 0; +} + +.form-text { + display: block; + color: var(--color-text-secondary); + font-size: var(--font-size-xs); + line-height: var(--line-height-normal); +} + +.password-results { + margin-top: var(--space-16); + display: flex; + flex-direction: column; + gap: var(--space-10); +} + +.password-result-item { + display: flex; + align-items: flex-start; + gap: var(--space-10); +} + +.generator-actions { + display: flex; + align-items: center; + flex-wrap: wrap; + gap: var(--space-8); + margin-top: var(--space-12); +} + +.generate-btn, +.roulette-btn { + border: 1px solid transparent; + border-radius: var(--radius-sm); + padding: var(--space-8) var(--space-12); + font-size: var(--font-size-sm); + font-weight: var(--font-weight-semibold); + cursor: pointer; + transition: all var(--duration-fast) var(--ease-standard); + min-width: 88px; + text-align: center; +} + +.generate-btn { + background: var(--color-primary); + color: var(--color-btn-primary-text); +} + +.generate-btn:hover { + background: var(--color-primary-hover); +} + +.roulette-btn { + background: var(--color-secondary); + color: var(--color-text); + border-color: var(--color-border); +} + +.roulette-btn:hover { + background: var(--color-secondary-hover); +} + +.roulette-btn.is-running { + background: var(--color-error); + color: var(--color-white); +} + +.roulette-status-row { + display: flex; + align-items: center; + gap: var(--space-8); + margin-top: var(--space-10); + margin-bottom: var(--space-8); + min-height: 24px; +} + +.roulette-progress-slot { + height: 3px; + flex: 1; + border-radius: var(--radius-full); + background: rgba(var(--color-slate-500-rgb), 0.2); + overflow: hidden; + visibility: hidden; +} + +.roulette-progress-slot.is-active { + visibility: visible; +} + +.roulette-progress-bar { + height: 100%; + width: 0%; + background: var(--color-gray-400); + border-radius: inherit; + transition: width 120ms linear; +} + +.roulette-speed-controls { + display: inline-flex; + align-items: center; + gap: var(--space-4); + min-width: 52px; + justify-content: flex-end; + opacity: 0; + visibility: hidden; + pointer-events: none; + transition: opacity var(--duration-fast) var(--ease-standard); +} + +.roulette-status-row.is-running .roulette-speed-controls { + opacity: 1; + visibility: visible; + pointer-events: auto; +} + +.roulette-speed-btn { + width: 24px; + height: 24px; + border-radius: var(--radius-sm); + border: 1px solid var(--color-border); + background: var(--color-surface); + color: var(--color-text); + font-size: 13px; + line-height: 1; + padding: 0; + cursor: pointer; +} + +.roulette-speed-btn:hover { + background: var(--color-secondary); +} + +.roulette-speed-btn:focus-visible { + outline: none; + box-shadow: var(--focus-ring); +} + +.password-result-content { + display: flex; + flex-direction: column; + gap: var(--space-6); + flex: 1; + min-width: 0; +} + +.option-description { + display: block; + color: var(--color-text-secondary); + font-size: var(--font-size-xs); + margin-top: var(--space-4); + font-style: italic; + line-height: var(--line-height-normal); +} + +.conditional-option { + display: none; + opacity: 0; + transform: translateY(-10px); + transition: all var(--duration-normal) var(--ease-standard); +} + +.conditional-option.option-visible { + display: block; + opacity: 1; + transform: translateY(0); +} + +.option-warning { + background: rgba(var(--color-warning-rgb), var(--status-bg-opacity)); + color: var(--color-warning); + border: 1px solid rgba(var(--color-warning-rgb), var(--status-border-opacity)); + border-radius: var(--radius-sm); + padding: var(--space-8) var(--space-12); + margin: var(--space-8) 0; + font-size: var(--font-size-xs); + display: none; +} + +.option-warning::before { + content: "⚠️ "; + margin-right: var(--space-4); +} + +.option-info { + background: rgba(var(--color-info-rgb), var(--status-bg-opacity)); + color: var(--color-info); + border: 1px solid rgba(var(--color-info-rgb), var(--status-border-opacity)); + border-radius: var(--radius-sm); + padding: var(--space-8) var(--space-12); + margin: var(--space-8) 0; + font-size: var(--font-size-xs); + display: none; +} + +.option-info::before { + content: "ℹ️ "; + margin-right: var(--space-4); +} + +.generation-controls { + display: flex; + flex-direction: column; + gap: var(--space-16); + margin-top: var(--space-24); + padding-top: var(--space-24); + border-top: 1px solid var(--color-border); +} + +.count-control { + display: flex; + align-items: center; + gap: var(--space-16); +} + +.range-input { + flex: 1; + accent-color: var(--color-primary); + height: 6px; +} + +.count-display { + font-weight: var(--font-weight-semibold); + color: var(--color-primary); + min-width: 20px; + text-align: center; + font-family: var(--font-family-mono); +} + +/* Results Panel */ +.results-panel { + background: var(--color-surface); + border-radius: var(--radius-lg); + padding: var(--space-24); + border: 1px solid var(--color-card-border); +} + +.results-header { + display: flex; + justify-content: space-between; + align-items: center; + margin-bottom: var(--space-20); + gap: var(--space-16); + flex-wrap: wrap; +} + +.results-actions { + display: flex; + gap: var(--space-8); +} + +.entropy-info { + display: flex; + align-items: center; + gap: var(--space-8); + padding: var(--space-10) var(--space-16); + background: var(--color-surface-elevated); + border: 1px solid var(--color-border); + border-radius: var(--radius-base); + margin-bottom: var(--space-16); +} + +.entropy-label { + font-size: var(--font-size-sm); + color: var(--color-text-secondary); + font-weight: var(--font-weight-medium); +} + +.entropy-value { + font-weight: var(--font-weight-bold); + font-family: var(--font-family-mono); +} + +.entropy-value.high { + color: var(--color-success); +} + +.entropy-value.medium { + color: var(--color-warning); +} + +.entropy-value.low { + color: var(--color-error); +} + +.security-info { + background: rgba(var(--color-success-rgb), 0.1); + border: 1px solid var(--color-success); + border-radius: var(--radius-base); + padding: var(--space-16); + margin-bottom: var(--space-20); +} + +.security-info h4 { + color: var(--color-success); + margin-bottom: var(--space-8); + font-size: var(--font-size-base); +} + +.security-info p { + font-size: var(--font-size-sm); + margin-bottom: var(--space-4); + line-height: var(--line-height-normal); +} + +.security-info p:last-child { + margin-bottom: 0; +} + +.security-details { + background: var(--color-bg-8); + border: 1px solid var(--color-border); + border-radius: var(--radius-base); + padding: var(--space-16); + margin: var(--space-16) 0; + font-size: var(--font-size-sm); + box-shadow: var(--shadow-sm); +} + +.security-details::before { + content: "🔒 Security Analysis"; + display: block; + font-weight: var(--font-weight-bold); + font-size: var(--font-size-base); + color: var(--color-text); + margin-bottom: var(--space-10); + border-bottom: 1px solid var(--color-border); + padding-bottom: var(--space-6); +} + +.security-row { + display: flex; + justify-content: space-between; + margin-bottom: var(--space-8); + align-items: center; + gap: var(--space-8); +} + +.security-row:last-child { + margin-bottom: 0; +} + +.security-row span:first-child { + font-weight: var(--font-weight-medium); + color: var(--color-text); +} + +.security-value { + font-weight: var(--font-weight-semibold); + color: var(--color-text); + text-align: right; + font-family: var(--font-family-mono); + font-size: var(--font-size-sm); +} + +/* Password Display */ +.passwords-list { + display: flex; + flex-direction: column; + gap: var(--space-12); +} + +.password-item { + display: flex; + flex-direction: column; + background: var(--color-surface-elevated); + border: 1px solid var(--color-border); + border-radius: var(--radius-base); + padding: var(--space-16); + transition: all var(--duration-normal) var(--ease-standard); +} + +.password-item:hover { + box-shadow: var(--shadow-md); + border-color: var(--color-border-strong); +} + +.password-row { + display: flex; + align-items: center; + justify-content: space-between; + margin-bottom: var(--space-8); + gap: var(--space-10); +} + +.password-text { + font-family: var(--font-family-mono); + font-size: var(--font-size-lg); + font-weight: var(--font-weight-semibold); + color: var(--color-text); + background: var(--color-surface); + padding: var(--space-8) var(--space-12); + border-radius: var(--radius-sm); + border: 1px solid var(--color-border-light); + flex: 1; + word-break: break-all; + line-height: var(--line-height-tight); +} + +.copy-btn { + background: var(--color-primary); + color: var(--color-btn-primary-text); + border: none; + padding: var(--space-8) var(--space-12); + border-radius: var(--radius-sm); + cursor: pointer; + font-size: var(--font-size-sm); + font-weight: var(--font-weight-medium); + font-family: inherit; + transition: all var(--duration-fast) var(--ease-standard); + flex-shrink: 0; + min-width: 48px; +} + +.copy-btn:hover { + background: var(--color-primary-hover); +} + +.copy-btn:active { + background: var(--color-primary-active); +} + +.copy-btn:focus-visible { + outline: none; + box-shadow: var(--focus-ring); +} + +.copy-btn.success { + background: var(--color-success); + color: var(--color-white); +} + +.dice-rolls { + font-family: var(--font-family-mono); + font-size: var(--font-size-xs); + color: var(--color-text-secondary); + background: var(--color-secondary); + padding: var(--space-6) var(--space-10); + border-radius: var(--radius-sm); + border-left: 3px solid var(--color-error); + margin: var(--space-6) 0; + font-weight: var(--font-weight-medium); + line-height: var(--line-height-tight); +} + +.dice-rolls::before { + content: "🎲 "; + margin-right: var(--space-6); +} + +.password-security-row { + display: flex; + align-items: center; + justify-content: space-between; + gap: 10px; + flex-wrap: wrap; +} + +.password-security-badge { + align-self: flex-start; + display: inline-flex; + align-items: center; + gap: 6px; + background: rgba(var(--color-success-rgb), 0.12); + border: 1px solid rgba(var(--color-success-rgb), 0.5); + color: var(--color-success); + border-radius: 999px; + padding: 4px 10px; + font-size: 12px; + font-weight: 700; + letter-spacing: 0.02em; +} + +.password-technical-toggle { + margin-left: auto; + color: var(--color-text-secondary); + font-size: 12px; +} + +.password-technical-toggle summary { + cursor: pointer; + list-style: none; + padding: 4px 8px; + border-radius: 999px; + border: 1px solid var(--color-border); + background: var(--color-surface); + user-select: none; +} + +.password-technical-toggle summary::-webkit-details-marker { + display: none; +} + +.password-technical-details { + display: grid; + gap: 6px; + padding: 10px 12px; + margin-top: 8px; + border-radius: var(--radius-sm); + background: rgba(var(--color-slate-800-rgb), 0.04); + border: 1px solid var(--color-border); +} + +.password-technical-row { + display: flex; + justify-content: space-between; + gap: 12px; + font-size: 12px; + color: var(--color-text-secondary); +} + +.password-technical-label { + font-weight: 600; +} + +.password-technical-value { + font-family: var(--font-family-mono); + color: var(--color-text); +} + +.password-explanation { + font-size: var(--font-size-sm); + color: var(--color-text-secondary); + font-style: italic; + line-height: var(--line-height-normal); + padding: var(--space-8) 0 0 0; + border-top: 1px dotted var(--color-border); + margin-top: var(--space-8); +} + +.password-explanation::before { + content: "💡 "; + opacity: 0.7; + margin-right: var(--space-4); +} + +/* Loading and Error States */ +.loading-state { + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + min-height: 400px; + gap: var(--space-16); + color: var(--color-text-secondary); +} + +.spinner { + width: 40px; + height: 40px; + border: 3px solid var(--color-border); + border-top: 3px solid var(--color-primary); + border-radius: 50%; + animation: spin 1s linear infinite; +} + +@keyframes spin { + 0% { transform: rotate(0deg); } + 100% { transform: rotate(360deg); } +} + +.loading { + text-align: center; + padding: var(--space-20); + color: var(--color-text-secondary); + font-style: italic; + font-size: var(--font-size-sm); +} + +.loading::before { + content: "⏳ "; + margin-right: var(--space-8); +} + +.error-state { + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + min-height: 400px; + gap: var(--space-16); + text-align: center; + color: var(--color-text-secondary); +} + +.error-state i { + font-size: 48px; + color: var(--color-error); +} + +.error-message { + background: rgba(var(--color-error-rgb), var(--status-bg-opacity)); + color: var(--color-error); + border: 1px solid rgba(var(--color-error-rgb), var(--status-border-opacity)); + border-radius: var(--radius-sm); + padding: var(--space-12) var(--space-16); + margin: var(--space-10) 0; + font-size: var(--font-size-sm); +} + +.error-message::before { + content: "❌ "; + margin-right: var(--space-8); +} + +.validation-error { + background: rgba(var(--color-error-rgb), var(--status-bg-opacity)); + color: var(--color-error); + padding: var(--space-10) var(--space-16); + border-radius: var(--radius-sm); + border: 1px solid rgba(var(--color-error-rgb), var(--status-border-opacity)); + font-size: var(--font-size-sm); + margin-top: var(--space-10); + display: none; +} + +.validation-error::before { + content: "⚠️ "; + font-weight: var(--font-weight-bold); + margin-right: var(--space-6); +} + +/* Toast Notifications */ +.toast-container { + position: fixed; + top: var(--space-16); + right: var(--space-16); + z-index: var(--z-toast); + display: flex; + flex-direction: column; + gap: var(--space-8); + max-width: 320px; +} + +.toast { + background: var(--color-surface-elevated); + color: var(--color-text); + border: 1px solid var(--color-border); + border-radius: var(--radius-base); + padding: var(--space-16); + box-shadow: var(--shadow-lg); + display: flex; + align-items: flex-start; + gap: var(--space-12); + animation: slideIn var(--duration-normal) var(--ease-out); + backdrop-filter: blur(8px); + -webkit-backdrop-filter: blur(8px); +} + +.toast.success { + border-color: var(--color-success); + background: rgba(var(--color-success-rgb), 0.05); +} + +.toast.success .toast-icon { + color: var(--color-success); +} + +.toast.error { + border-color: var(--color-error); + background: rgba(var(--color-error-rgb), 0.05); +} + +.toast.error .toast-icon { + color: var(--color-error); +} + +.toast-icon { + font-size: var(--font-size-lg); + flex-shrink: 0; + margin-top: 1px; +} + +.toast-content { + flex: 1; +} + +.toast-title { + font-weight: var(--font-weight-semibold); + font-size: var(--font-size-sm); + margin-bottom: var(--space-4); +} + +.toast-message { + font-size: var(--font-size-sm); + color: var(--color-text-secondary); + line-height: var(--line-height-normal); +} + +@keyframes slideIn { + from { + transform: translateX(100%); + opacity: 0; + } + to { + transform: translateX(0); + opacity: 1; + } +} + +/* Footer */ +.footer { + background: var(--color-surface); + border-top: 1px solid var(--color-border); + padding: var(--space-24) 0; + text-align: center; + color: var(--color-text-secondary); + font-size: var(--font-size-sm); + margin-top: auto; +} + +.footer-content { + display: flex; + flex-direction: column; + align-items: center; + gap: var(--space-12); +} + +.footer-links { + display: flex; + gap: var(--space-16); + flex-wrap: wrap; + justify-content: center; +} + +.footer-links a { + color: var(--color-text-secondary); + text-decoration: none; + transition: color var(--duration-fast) var(--ease-standard); +} + +.footer-links a:hover { + color: var(--color-primary); +} + +/* Utility Classes */ +.sr-only { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + white-space: nowrap; + border-width: 0; +} + +.hidden { + display: none !important; +} + +.block { + display: block; +} + +.flex { + display: flex; +} + +.flex-col { + flex-direction: column; +} + +.flex-wrap { + flex-wrap: wrap; +} + +.items-center { + align-items: center; +} + +.items-start { + align-items: flex-start; +} + +.items-end { + align-items: flex-end; +} + +.justify-center { + justify-content: center; +} + +.justify-between { + justify-content: space-between; +} + +.justify-start { + justify-content: flex-start; +} + +.justify-end { + justify-content: flex-end; +} + +.gap-4 { + gap: var(--space-4); +} + +.gap-8 { + gap: var(--space-8); +} + +.gap-12 { + gap: var(--space-12); +} + +.gap-16 { + gap: var(--space-16); +} + +.gap-20 { + gap: var(--space-20); +} + +.text-center { + text-align: center; +} + +.text-left { + text-align: left; +} + +.text-right { + text-align: right; +} + +.text-xs { + font-size: var(--font-size-xs); +} + +.text-sm { + font-size: var(--font-size-sm); +} + +.text-base { + font-size: var(--font-size-base); +} + +.text-lg { + font-size: var(--font-size-lg); +} + +.text-xl { + font-size: var(--font-size-xl); +} + +.font-normal { + font-weight: var(--font-weight-normal); +} + +.font-medium { + font-weight: var(--font-weight-medium); +} + +.font-semibold { + font-weight: var(--font-weight-semibold); +} + +.font-bold { + font-weight: var(--font-weight-bold); +} + +.font-mono { + font-family: var(--font-family-mono); +} + +.w-full { + width: 100%; +} + +.h-full { + height: 100%; +} + +.min-h-screen { + min-height: 100vh; +} + +/* Margin utilities */ +.m-0 { margin: 0; } +.mt-4 { margin-top: var(--space-4); } +.mt-8 { margin-top: var(--space-8); } +.mt-12 { margin-top: var(--space-12); } +.mt-16 { margin-top: var(--space-16); } +.mt-20 { margin-top: var(--space-20); } +.mt-24 { margin-top: var(--space-24); } + +.mb-4 { margin-bottom: var(--space-4); } +.mb-8 { margin-bottom: var(--space-8); } +.mb-12 { margin-bottom: var(--space-12); } +.mb-16 { margin-bottom: var(--space-16); } +.mb-20 { margin-bottom: var(--space-20); } +.mb-24 { margin-bottom: var(--space-24); } + +.mx-auto { margin-left: auto; margin-right: auto; } + +/* Padding utilities */ +.p-0 { padding: 0; } +.p-4 { padding: var(--space-4); } +.p-8 { padding: var(--space-8); } +.p-12 { padding: var(--space-12); } +.p-16 { padding: var(--space-16); } +.p-20 { padding: var(--space-20); } +.p-24 { padding: var(--space-24); } + +.px-4 { padding-left: var(--space-4); padding-right: var(--space-4); } +.px-8 { padding-left: var(--space-8); padding-right: var(--space-8); } +.px-12 { padding-left: var(--space-12); padding-right: var(--space-12); } +.px-16 { padding-left: var(--space-16); padding-right: var(--space-16); } +.px-20 { padding-left: var(--space-20); padding-right: var(--space-20); } + +.py-4 { padding-top: var(--space-4); padding-bottom: var(--space-4); } +.py-8 { padding-top: var(--space-8); padding-bottom: var(--space-8); } +.py-12 { padding-top: var(--space-12); padding-bottom: var(--space-12); } +.py-16 { padding-top: var(--space-16); padding-bottom: var(--space-16); } +.py-20 { padding-top: var(--space-20); padding-bottom: var(--space-20); } + +/* Mobile responsive breakpoints */ +@media (max-width: 768px) { + .header .container { + flex-direction: column; + gap: var(--space-12); + } + + .header-actions { + flex-wrap: wrap; + justify-content: center; + } + + .language-select { + min-width: 100px; + } + + .generator-grid { + grid-template-columns: 1fr; + gap: var(--space-16); + } + + .results-header { + flex-direction: column; + gap: var(--space-12); + align-items: stretch; + } + + .generation-controls { + align-items: stretch; + } + + .count-control { + flex-direction: column; + align-items: stretch; + gap: var(--space-8); + } + + .toast-container { + left: var(--space-8); + right: var(--space-8); + max-width: none; + } + + .password-row { + flex-direction: column; + align-items: stretch; + gap: var(--space-8); + } + + .password-text { + margin-right: 0; + font-size: var(--font-size-base); + } + + .copy-btn { + align-self: center; + width: auto; + min-width: 96px; + } + + .security-row { + flex-direction: column; + align-items: flex-start; + gap: var(--space-4); + } + + .security-value { + text-align: left; + } + + .main { + padding: var(--space-20) 0; + } + + .generator-options { + grid-template-columns: 1fr; + } + + input[type="number"].form-control, + select.form-control { + width: 100%; + min-width: auto; + } +} + +@media (max-width: 480px) { + .container { + padding-left: var(--space-12); + padding-right: var(--space-12); + } + + .generator-card { + padding: var(--space-16); + } + + .options-panel, + .results-panel { + padding: var(--space-16); + } + + .password-text { + font-size: var(--font-size-sm); + padding: var(--space-6) var(--space-8); + } + + .copy-btn { + padding: var(--space-6) var(--space-10); + font-size: var(--font-size-xs); + } + + .security-details { + padding: var(--space-10); + margin: var(--space-12) 0; + } + + .password-item { + padding: var(--space-10); + } + + .option-warning, + .option-info { + padding: var(--space-6) var(--space-8); + font-size: var(--font-size-xs); + } + + .dice-rolls { + padding: var(--space-4) var(--space-8); + font-size: var(--font-size-xs); + } + + .main-title { + font-size: var(--font-size-3xl); + } + + .main-subtitle { + font-size: var(--font-size-base); + } + + .header { + padding: var(--space-12) 0; + } + + .logo { + font-size: var(--font-size-xl); + } + + .btn { + padding: var(--space-6) var(--space-12); + font-size: var(--font-size-sm); + } + + .form-control { + padding: var(--space-6) var(--space-10); + font-size: var(--font-size-sm); + } + + .card__body { + padding: var(--space-16); + } +} + +/* Focus and Accessibility */ +:focus-visible { + outline: var(--focus-outline); + outline-offset: 2px; +} + +@media (prefers-reduced-motion: reduce) { + *, + *::before, + *::after { + animation-duration: 0.01ms !important; + animation-iteration-count: 1 !important; + transition-duration: 0.01ms !important; + scroll-behavior: auto !important; + } +} + +/* High Contrast Mode Support */ +@media (prefers-contrast: high) { + :root { + --color-border: var(--color-text); + --color-border-light: var(--color-text-secondary); + --focus-outline: 2px solid; + } +} + +/* Language-specific adjustments */ +:lang(ja) { + font-family: 'Noto Sans JP', var(--font-family-base); +} + +:lang(zh) { + font-family: 'Noto Sans SC', var(--font-family-base); +} + +:lang(ko) { + font-family: 'Noto Sans KR', var(--font-family-base); +} + +:lang(ar) { + font-family: 'Noto Sans Arabic', var(--font-family-base); + direction: rtl; +} + +/* RTL Language Support */ +[dir="rtl"] .header-actions { + flex-direction: row-reverse; +} + +[dir="rtl"] .language-select { + background-position: left var(--space-12) center; + padding-left: var(--space-32); + padding-right: var(--space-12); +} + +[dir="rtl"] .password-row { + flex-direction: row-reverse; +} + +[dir="rtl"] .results-header { + flex-direction: row-reverse; +} + +/* Print Styles */ +@media print { + .header, + .footer, + .generation-controls, + .results-actions, + .language-selector, + .btn, + .copy-btn { + display: none !important; + } + + .passwords-list { + break-inside: avoid; + } + + .password-item { + border: 1px solid #000; + margin-bottom: var(--space-8); + break-inside: avoid; + } + + .password-text { + color: #000; + background: none; + border: none; + padding: 0; + font-size: var(--font-size-base); + } + + body { + background: white; + color: black; + } + + .generator-grid { + grid-template-columns: 1fr; + } +} + +/* Custom Font Loading */ +@font-face { + font-family: 'FKGroteskNeue'; + src: url('https://r2cdn.perplexity.ai/fonts/FKGroteskNeue.woff2') format('woff2'); + font-display: swap; +} \ No newline at end of file diff --git a/assets/js/app.js b/assets/js/app.js new file mode 100644 index 0000000..544aa77 --- /dev/null +++ b/assets/js/app.js @@ -0,0 +1,1319 @@ +// Password Generator Frontend Application v4.0 +// Complete refactoring with API-driven generator definitions +// Supports programmatic i18n key derivation and dynamic form generation + +class PasswordGeneratorApp { + constructor() { + this.currentLang = 'en'; + this.translations = {}; + this.generatorDefinitions = []; // ✅ NEW: API-driven definitions + this.availableWordlists = {}; + this.gridResizeListener = null; + this.gridState = { currentLayout: 'single', cardCount: 0 }; + this.resizeTimeout = null; + this.rouletteRuns = new Map(); + this.defaultRouletteIntervalSeconds = 3; + + this.defaultLanguages = { + 'en': 'English', + 'de': 'Deutsch', + 'de_CH': 'Schwyzerdütsch', + 'fr': 'Français', + 'it': 'Italiano', + 'es': 'Español', + 'pt': 'Portugues', + 'ja': '日本語', + 'zh': '中文' + }; + + this.init(); + } + + async init() { + console.log('🚀 Initializing Password Generator App v4.0'); + + try { + await this.detectLanguage(); + await this.loadTranslations(); + await this.loadGeneratorsMetadata(); // ✅ NEW: Load from API + await this.loadAvailableWordlists(); + + this.setupEventListeners(); + this.renderGeneratorCards(); // ✅ Now uses API definitions + this.updateLanguageSelector(); + this.switchLanguage(this.currentLang); + this.hideLoadingSpinner(); + this.updateFormFieldsForScreen(); + this.setupGridObserver(); + + // Add resize listener + window.addEventListener('resize', () => { + clearTimeout(this.resizeTimeout); + this.resizeTimeout = setTimeout(() => { + this.updateFormFieldsForScreen(); + }, 250); + }); + + console.log('✅ Initialization complete'); + } catch (error) { + console.error('❌ Initialization failed:', error); + this.showError('Failed to initialize application'); + } + } + + /** + * ✅ NEW: Load generator metadata from backend API + */ + async loadGeneratorsMetadata() { + try { + console.log('🔄 Loading generator metadata from backend...'); + + const response = await fetch('/api/v1/passwords/generators'); + if (!response.ok) { + throw new Error(`API request failed: ${response.status}`); + } + + const data = await response.json(); + if (data.success && data.data.generators) { + this.generatorDefinitions = data.data.generators; + this.defaultRouletteIntervalSeconds = Math.max( + 1, + Math.min(30, parseInt(data.data.settings?.roulette_interval_seconds ?? 3, 10) || 3) + ); + console.log(`✅ Loaded ${this.generatorDefinitions.length} generators`); + + // Log generator summary + this.generatorDefinitions.forEach(gen => { + console.log(` 📦 ${gen.id} (v${gen.version}): ${gen.options.length} options`); + }); + } else { + throw new Error('Invalid API response format for generators'); + } + } catch (error) { + console.error('❌ Failed to load generator metadata:', error.message); + this.generatorDefinitions = []; + throw error; + } + } + + hideLoadingSpinner() { + const loadingElement = document.getElementById('initial-loading'); + const generatorsContainer = document.getElementById('generators-container'); + + if (loadingElement) { + loadingElement.style.display = 'none'; + } + + if (generatorsContainer) { + generatorsContainer.style.display = 'grid'; + generatorsContainer.classList.add('generator-grid'); + console.log('✅ Generator grid now visible'); + } else { + console.error('❌ generators-container element not found in DOM'); + } + } + + async loadAvailableWordlists() { + try { + console.log('🔄 Loading available wordlists from backend...'); + const response = await fetch('/api/v1/passwords/wordlists'); + + if (!response.ok) { + throw new Error(`API request failed: ${response.status}`); + } + + const data = await response.json(); + if (data.success && data.data.wordlists) { + this.availableWordlists = data.data.wordlists; + console.log('✅ Loaded wordlists:', Object.keys(this.availableWordlists)); + } else { + throw new Error('Invalid API response format'); + } + } catch (error) { + console.warn('⚠️ Failed to load wordlists from API:', error.message); + console.log('🔄 Using fallback wordlist configuration'); + + this.availableWordlists = { + 'en': { name: 'English (Fallback)', description: 'Built-in English word list', available: false }, + 'de': { name: 'German (Fallback)', description: 'Built-in German word list', available: false } + }; + } + } + + setupGridObserver() { + if ('IntersectionObserver' in window) { + const gridObserver = new IntersectionObserver((entries) => { + entries.forEach(entry => { + if (entry.isIntersecting) { + const container = entry.target; + this.updateGridLayout(container); + } + }); + }, { rootMargin: '50px' }); + + const container = document.getElementById('generators-container'); + if (container) { + gridObserver.observe(container); + } + } + } + + updateGridLayout(container) { + const cardCount = container.querySelectorAll('.generator-card').length; + const containerWidth = container.clientWidth; + + let layout = 'single'; + if (containerWidth >= 1600 && cardCount >= 4) { + layout = 'quad'; + } else if (containerWidth >= 1200 && cardCount >= 3) { + layout = 'triple'; + } else if (containerWidth >= 768 && cardCount >= 2) { + layout = 'dual'; + } + + if (this.gridState.currentLayout !== layout) { + this.gridState.currentLayout = layout; + this.gridState.cardCount = cardCount; + console.log(`📐 Grid layout: ${layout} (${cardCount} cards)`); + } + } + + updateFormFieldsForScreen() { + const isMobile = window.innerWidth <= 768; + const formControls = document.querySelectorAll('.form-control'); + + formControls.forEach(control => { + if (isMobile) { + if (control.type !== 'checkbox' && control.type !== 'radio') { + control.classList.add('form-control--full'); + control.classList.remove('form-control--sm', 'form-control--md', 'form-control--lg'); + } + } else { + control.classList.remove('form-control--full'); + + if (control.type === 'number') { + control.classList.add('form-control--sm'); + } else if (control.tagName === 'SELECT') { + if (control.dataset.option === 'language' || control.dataset.option === 'wordlist') { + control.classList.add('form-control--language'); + } else { + control.classList.add('form-control--md'); + } + } + } + }); + } + + async detectLanguage() { + const browserLang = (navigator.language || 'en').replace('-', '_'); + const supportedLanguages = ['en', 'de', 'de_CH', 'fr', 'it', 'es', 'pt', 'ja', 'zh']; + + if (supportedLanguages.includes(browserLang)) { + this.currentLang = browserLang; + } else if (supportedLanguages.includes(browserLang.substring(0, 2))) { + this.currentLang = browserLang.substring(0, 2); + } else { + this.currentLang = 'en'; + } + + console.log(`🌍 Language detected: ${this.currentLang}`); + } + + async loadTranslations() { + try { + const response = await fetch(`/api/v1/locales/${this.currentLang}`); + if (response.ok) { + this.translations = await response.json(); + console.log(`✅ Loaded translations for ${this.currentLang}`); + } else { + throw new Error(`Failed to load translations: ${response.status}`); + } + } catch (error) { + console.warn(`⚠️ Failed to load ${this.currentLang} translations:`, error.message); + this.translations = this.getFallbackTranslations(); + } + } + + getFallbackTranslations() { + return { + "app_title": "Password Generator", + "generate": "Generate", + "roulette": "Roulette", + "stop": "Stop", + "roulette_interval": "Interval (s)", + "copy": "Copy", + "copied_to_clipboard": "Copied to clipboard!", + "generating": "Generating...", + "count": "Count", + "loading_generators": "Loading password generators...", + "entropy": "Entropy", + "length": "Length", + "details": "Details", + "security_level": "Security level", + "very_strong": "Very strong", + "strong": "Strong", + "adequate": "Adequate", + "weak": "Weak", + "very_weak": "Very weak", + "error_loading_generators": "Failed to load generators" + }; + } + + translateSecurityLevel(level) { + const normalized = String(level ?? '') + .trim() + .toLowerCase() + .replace(/[^a-z]+/g, '_') + .replace(/^_+|_+$/g, ''); + + const translationKeys = { + 'very_strong': 'very_strong', + 'strong': 'strong', + 'adequate': 'adequate', + 'weak': 'weak', + 'very_weak': 'very_weak', + }; + + if (translationKeys[normalized]) { + return this.t(translationKeys[normalized]); + } + + return level ? String(level) : this.t('security_level'); + } + + t(key, params = {}) { + if (!key || typeof key !== 'string') { + return ''; + } + + const candidates = [key]; + + if (key.includes('_choice_')) { + candidates.push(key.replace('_choice_', '_list_')); + } + + if (key.includes('add_number')) { + candidates.push(key.replace('add_number', 'addNumber')); + } + + if (key.includes('number_position')) { + candidates.push(key.replace('number_position', 'numberPosition')); + } + + if (key.includes('_options_group_')) { + candidates.push(''); + } + + let translation = ''; + for (const candidate of candidates) { + if (!candidate) { + continue; + } + + const value = this.translations[candidate]; + if (value !== undefined && value !== null) { + translation = value; + break; + } + } + + if (!translation && key.includes('_options_group_')) { + return ''; + } + + if (!translation) { + translation = key; + } + + Object.keys(params).forEach(param => { + translation = String(translation).replace(`{{${param}}}`, params[param]); + }); + + return translation; + } + + updateLanguageSelector() { + const languageSelect = document.getElementById('language-select'); + if (!languageSelect) { + console.warn('⚠️ Language selector not found'); + return; + } + + languageSelect.innerHTML = ''; + Object.entries(this.defaultLanguages).forEach(([code, name]) => { + const option = document.createElement('option'); + option.value = code; + option.textContent = name; + option.selected = code === this.currentLang; + languageSelect.appendChild(option); + }); + + console.log('✅ Language selector updated'); + } + + setupEventListeners() { + // Language selector + const languageSelect = document.getElementById('language-select'); + if (languageSelect) { + languageSelect.addEventListener('change', (e) => { + this.switchLanguage(e.target.value); + }); + } + + // Event delegation for dynamic content + document.addEventListener('click', (e) => { + // Generate button handler + const generateBtn = e.target.closest('.generate-btn'); + if (generateBtn && !generateBtn.disabled) { + e.preventDefault(); + e.stopPropagation(); + const type = generateBtn.dataset.type; + if (type) { + this.generatePasswords(type); + } + return; + } + + // Roulette button handler + const rouletteBtn = e.target.closest('.roulette-btn'); + if (rouletteBtn && !rouletteBtn.disabled) { + e.preventDefault(); + e.stopPropagation(); + const type = rouletteBtn.dataset.type; + if (type) { + this.toggleRoulette(type); + } + return; + } + + const intervalIncBtn = e.target.closest('.roulette-interval-inc-btn'); + if (intervalIncBtn) { + e.preventDefault(); + e.stopPropagation(); + this.adjustRouletteInterval(intervalIncBtn, +1); + return; + } + + const intervalDecBtn = e.target.closest('.roulette-interval-dec-btn'); + if (intervalDecBtn) { + e.preventDefault(); + e.stopPropagation(); + this.adjustRouletteInterval(intervalDecBtn, -1); + return; + } + + // Copy button handler + const copyBtn = e.target.closest('.copy-btn'); + if (copyBtn) { + e.preventDefault(); + e.stopPropagation(); + const card = copyBtn.closest('.generator-card'); + if (card?.dataset?.type) { + this.stopRoulette(card.dataset.type); + } + const text = copyBtn.dataset.text; + if (text) { + this.copyToClipboard(text, copyBtn); + } + return; + } + }); + + // Form changes + document.addEventListener('change', (e) => { + if (e.target.matches('input, select')) { + this.updateConditionalOptions(e.target); + } + }); + + console.log('✅ Event listeners set up'); + } + + async switchLanguage(lang) { + this.currentLang = lang; + await this.loadTranslations(); + this.updateUI(); + console.log(`🌍 Switched to language: ${lang}`); + } + + updateUI() { + // Update translatable elements + document.querySelectorAll('[data-i18n]').forEach(element => { + const key = element.dataset.i18n; + element.textContent = this.t(key); + }); + + // Update placeholders + document.querySelectorAll('[data-i18n-placeholder]').forEach(element => { + const key = element.dataset.i18nPlaceholder; + element.placeholder = this.t(key); + }); + + // Update titles + document.querySelectorAll('[data-i18n-title]').forEach(element => { + const key = element.dataset.i18nTitle; + element.title = this.t(key); + }); + + // Update page title + document.title = this.t('app_title'); + + // Re-render generator cards with new translations + this.renderGeneratorCards(); + } + + updateConditionalOptions(changedElement) { + const card = changedElement.closest('.generator-card'); + if (!card) return; + + // Generic conditional option handling based on data attributes + const optionName = changedElement.dataset.option; + if (!optionName) return; + + // Find all elements that depend on this option + const dependentElements = card.querySelectorAll(`[data-depends-on="${optionName}"]`); + + dependentElements.forEach(dependent => { + const showWhen = dependent.dataset.showWhen; + let shouldShow = false; + + if (changedElement.type === 'checkbox') { + shouldShow = showWhen === 'checked' ? changedElement.checked : !changedElement.checked; + } else if (changedElement.tagName === 'SELECT' || changedElement.type === 'text') { + const value = changedElement.value; + if (showWhen) { + shouldShow = showWhen.split(',').includes(value); + } else { + shouldShow = value.trim().length > 0; + } + } + + dependent.style.display = shouldShow ? 'block' : 'none'; + if (shouldShow) { + dependent.classList.add('option-visible'); + } else { + dependent.classList.remove('option-visible'); + } + }); + } + + /** + * ✅ NEW: Render generator cards from API definitions + */ + renderGeneratorCards() { + const container = document.getElementById('generators-container'); + if (!container) { + console.error('❌ Container not found'); + return; + } + + container.innerHTML = ''; + + if (!this.generatorDefinitions || this.generatorDefinitions.length === 0) { + container.innerHTML = `
${this.t('error_loading_generators')}
`; + return; + } + + console.log(`🎨 Rendering ${this.generatorDefinitions.length} generator cards...`); + + this.generatorDefinitions.forEach(generator => { + const card = this.createGeneratorCard(generator); + container.appendChild(card); + }); + + console.log('✅ Generator cards rendered'); + } + + /** + * ✅ NEW: Create generator card from API definition + */ + createGeneratorCard(generator) { + const card = document.createElement('div'); + card.className = 'generator-card'; + card.dataset.type = generator.id; + + // Header + const header = document.createElement('div'); + header.className = 'generator-header'; + + const title = document.createElement('h3'); + title.className = 'generator-title'; + const translatedTitle = this.t(generator.nameKey); + title.textContent = translatedTitle && translatedTitle !== generator.nameKey + ? translatedTitle + : (generator.name || generator.id || 'Generator'); + header.appendChild(title); + + const description = document.createElement('p'); + description.className = 'generator-description'; + const translatedDescription = this.t(generator.descriptionKey); + description.textContent = translatedDescription && translatedDescription !== generator.descriptionKey + ? translatedDescription + : (generator.description || ''); + header.appendChild(description); + + card.appendChild(header); + + // Options form + const optionsContainer = document.createElement('div'); + optionsContainer.className = 'generator-options'; + + // Group options by group + const groupedOptions = this.groupOptions(generator.options); + + Object.entries(groupedOptions).forEach(([groupName, options]) => { + const groupDiv = document.createElement('div'); + groupDiv.className = 'option-group'; + groupDiv.dataset.group = groupName; + + // Group title + const groupTitle = document.createElement('h4'); + groupTitle.className = 'option-group-title'; + if (options[0].groupTitleKey) { + const groupTitleKey = options[0].groupTitleKey; + const translatedGroupTitle = this.t(groupTitleKey); + groupTitle.textContent = translatedGroupTitle && translatedGroupTitle !== groupTitleKey + ? translatedGroupTitle + : ''; + } else { + groupTitle.textContent = ''; + } + + const resolvedGroupTitle = this.getGroupDisplayTitle(groupName, groupTitle.textContent); + + if (this.shouldCollapseGroup(groupName)) { + const collapsible = document.createElement('details'); + collapsible.className = 'option-group-collapsible'; + + const summary = document.createElement('summary'); + summary.className = 'option-group-summary'; + summary.textContent = resolvedGroupTitle; + collapsible.appendChild(summary); + + options.forEach(option => { + const optionElement = this.renderOption(generator.id, option); + collapsible.appendChild(optionElement); + }); + + groupDiv.appendChild(collapsible); + optionsContainer.appendChild(groupDiv); + return; + } + + groupTitle.textContent = resolvedGroupTitle; + groupDiv.appendChild(groupTitle); + + // Render each option in group + options.forEach(option => { + const optionElement = this.renderOption(generator.id, option); + groupDiv.appendChild(optionElement); + }); + + optionsContainer.appendChild(groupDiv); + }); + + card.appendChild(optionsContainer); + + // Generate button and results + const actionsDiv = document.createElement('div'); + actionsDiv.className = 'generator-actions'; + + const generateBtn = document.createElement('button'); + generateBtn.className = 'generate-btn'; + generateBtn.dataset.type = generator.id; + generateBtn.textContent = this.t('generate'); + actionsDiv.appendChild(generateBtn); + + const rouletteBtn = document.createElement('button'); + rouletteBtn.className = 'roulette-btn'; + rouletteBtn.dataset.type = generator.id; + rouletteBtn.textContent = this.t('roulette'); + actionsDiv.appendChild(rouletteBtn); + + card.appendChild(actionsDiv); + + const rouletteStatusRow = document.createElement('div'); + rouletteStatusRow.className = 'roulette-status-row'; + rouletteStatusRow.dataset.rouletteIntervalSeconds = String(this.defaultRouletteIntervalSeconds); + + const rouletteProgressSlot = document.createElement('div'); + rouletteProgressSlot.className = 'roulette-progress-slot'; + rouletteProgressSlot.setAttribute('aria-hidden', 'true'); + + const rouletteProgressBar = document.createElement('div'); + rouletteProgressBar.className = 'roulette-progress-bar'; + rouletteProgressSlot.appendChild(rouletteProgressBar); + rouletteStatusRow.appendChild(rouletteProgressSlot); + + const rouletteSpeedControls = document.createElement('div'); + rouletteSpeedControls.className = 'roulette-speed-controls'; + + const incBtn = document.createElement('button'); + incBtn.type = 'button'; + incBtn.className = 'roulette-speed-btn roulette-interval-inc-btn'; + incBtn.dataset.type = generator.id; + incBtn.textContent = '🐌'; + incBtn.title = this.t('roulette_slow_down'); + rouletteSpeedControls.appendChild(incBtn); + + const decBtn = document.createElement('button'); + decBtn.type = 'button'; + decBtn.className = 'roulette-speed-btn roulette-interval-dec-btn'; + decBtn.dataset.type = generator.id; + decBtn.textContent = '🐇'; + decBtn.title = this.t('roulette_speed_up'); + rouletteSpeedControls.appendChild(decBtn); + + rouletteStatusRow.appendChild(rouletteSpeedControls); + card.appendChild(rouletteStatusRow); + + // Results container + const resultsDiv = document.createElement('div'); + resultsDiv.className = 'password-results'; + resultsDiv.id = `${generator.id}-results`; + card.appendChild(resultsDiv); + + return card; + } + + /** + * ✅ NEW: Group options by their group property + */ + groupOptions(options) { + const grouped = {}; + + options.forEach(option => { + const group = option.group || 'basic'; + if (!grouped[group]) { + grouped[group] = []; + } + grouped[group].push(option); + }); + + return grouped; + } + + shouldCollapseGroup(groupName) { + const collapsibleGroups = ['advanced', 'ai', 'expert']; + return collapsibleGroups.includes((groupName || '').toLowerCase()); + } + + getGroupDisplayTitle(groupName, fallbackTitle) { + if (fallbackTitle && fallbackTitle.trim().length > 0) { + return fallbackTitle; + } + + const groupTitleKeys = { + advanced: 'collapse_group_advanced', + ai: 'collapse_group_ai', + expert: 'collapse_group_expert', + basic: 'collapse_group_basic', + character_set: 'collapse_group_character_set' + }; + + const titleKey = groupTitleKeys[groupName]; + if (titleKey) { + const translated = this.t(titleKey); + if (translated && translated !== titleKey) { + return translated; + } + } + + return String(groupName || 'Options') + .replace(/[_-]+/g, ' ') + .replace(/\b\w/g, (c) => c.toUpperCase()); + } + + /** + * ✅ NEW: Render individual option based on type + */ + renderOption(generatorId, option) { + const wrapper = document.createElement('div'); + wrapper.className = 'form-group'; + wrapper.dataset.optionName = option.name; + + // Handle special case: count option should be prominent + if (option.name === 'count') { + wrapper.classList.add('form-group--count'); + } + + let input; + + switch (option.type) { + case 'integer': + input = this.createIntegerInput(option); + break; + case 'boolean': + input = this.createBooleanInput(option); + break; + case 'string': + input = this.createStringInput(option); + break; + case 'select': + input = this.createSelectInput(option); + break; + default: + console.warn(`Unknown option type: ${option.type}`); + return wrapper; + } + + input.id = `${generatorId}-${option.name}`; + input.dataset.option = option.name; + + // For boolean inputs, wrap differently + if (option.type === 'boolean') { + const checkboxWrapper = document.createElement('div'); + checkboxWrapper.className = 'checkbox-wrapper'; + + checkboxWrapper.appendChild(input); + + const checkboxContent = document.createElement('div'); + checkboxContent.className = 'checkbox-content'; + + const label = document.createElement('label'); + label.htmlFor = input.id; + const translatedLabel = this.t(option.labelKey); + label.textContent = translatedLabel && translatedLabel !== option.labelKey + ? translatedLabel + : (option.label || option.name || 'Option'); + checkboxContent.appendChild(label); + + if (option.descriptionKey) { + const help = document.createElement('small'); + help.className = 'form-text text-muted'; + const translatedHelp = this.t(option.descriptionKey); + help.textContent = translatedHelp && translatedHelp !== option.descriptionKey + ? translatedHelp + : (option.description || ''); + checkboxContent.appendChild(help); + } + + checkboxWrapper.appendChild(checkboxContent); + + wrapper.appendChild(checkboxWrapper); + } else { + // Label first for non-checkbox inputs + const label = document.createElement('label'); + label.htmlFor = input.id; + const translatedLabel = this.t(option.labelKey); + label.textContent = translatedLabel && translatedLabel !== option.labelKey + ? translatedLabel + : (option.label || option.name || 'Option'); + wrapper.appendChild(label); + + wrapper.appendChild(input); + } + + // Description/help text + if (option.descriptionKey && option.type !== 'boolean') { + const help = document.createElement('small'); + help.className = 'form-text text-muted'; + const translatedHelp = this.t(option.descriptionKey); + help.textContent = translatedHelp && translatedHelp !== option.descriptionKey + ? translatedHelp + : (option.description || ''); + wrapper.appendChild(help); + } + + return wrapper; + } + + createIntegerInput(option) { + const input = document.createElement('input'); + input.type = 'number'; + input.className = 'form-control form-control--sm'; + input.value = option.default; + + if ('min' in option) input.min = option.min; + if ('max' in option) input.max = option.max; + if (option.required) input.required = true; + + return input; + } + + createBooleanInput(option) { + const input = document.createElement('input'); + input.type = 'checkbox'; + input.className = 'form-check-input'; + input.checked = !!option.default; + + return input; + } + + createStringInput(option) { + const input = document.createElement('input'); + input.type = 'text'; + input.className = 'form-control form-control--md'; + input.value = option.default || ''; + + if ('maxLength' in option) input.maxLength = option.maxLength; + if ('minLength' in option) input.minLength = option.minLength; + if (option.required) input.required = true; + + return input; + } + + createSelectInput(option) { + const select = document.createElement('select'); + select.className = 'form-control form-control--md'; + + if (!option.choices || option.choices.length === 0) { + console.warn(`No choices for select option: ${option.name}`); + return select; + } + + option.choices.forEach(choice => { + const opt = document.createElement('option'); + opt.value = choice.value; + + // ✅ Check if choices should be translated + if (option.translateChoices === false || !choice.labelKey) { + // Wordlists and other non-translated choices + opt.textContent = choice.label || choice.value; + } else { + // Translated choices + const translatedChoice = this.t(choice.labelKey); + opt.textContent = translatedChoice && translatedChoice !== choice.labelKey + ? translatedChoice + : (choice.label || choice.value); + } + + opt.selected = choice.value === option.default; + select.appendChild(opt); + }); + + return select; + } + + /** + * Collect form options for password generation + */ + collectFormOptions(card, type) { + const options = {}; + + // Get all form inputs in this card + const inputs = card.querySelectorAll('input, select'); + + inputs.forEach(input => { + const optionName = input.dataset.option; + if (!optionName) return; + + switch (input.type) { + case 'checkbox': + options[optionName] = input.checked; + break; + case 'number': + case 'range': + options[optionName] = parseInt(input.value) || 0; + break; + case 'text': + case 'select-one': + options[optionName] = input.value; + break; + } + }); + + return options; + } + + async generatePasswords(type) { + console.log(`🎯 Generating passwords for type: ${type}`); + + const card = document.querySelector(`[data-type="${type}"]`); + if (!card) { + console.error('Generator card not found:', type); + return; + } + + const generateBtn = card.querySelector('.generate-btn'); + if (!generateBtn) { + console.error('Generate button not found'); + return; + } + + // Disable button and show loading state + generateBtn.disabled = true; + const originalText = generateBtn.textContent; + generateBtn.textContent = this.t('generating'); + + try { + // Collect options + const options = this.collectFormOptions(card, type); + + // Extract count separately + const countInput = card.querySelector(`[data-option="count"]`); + const count = countInput ? parseInt(countInput.value) || 1 : 1; + + console.log(`📝 Options for ${type}:`, options); + console.log(`📝 Count: ${count}`); + + // Make API request + const response = await fetch('/api/v1/passwords/generate', { + method: 'POST', + headers: { + 'Content-Type': 'application/json' + }, + body: JSON.stringify({ + type: type, + count: count, + options: options + }) + }); + + if (!response.ok) { + throw new Error(`API request failed: ${response.status}`); + } + + const data = await response.json(); + + if (data.success && data.data.passwords) { + this.displayPasswords(card, data.data); + } else { + throw new Error(data.message || 'Unknown error'); + } + + } catch (error) { + console.error('❌ Password generation failed:', error); + this.showError('Failed to generate passwords: ' + error.message); + } finally { + // Re-enable button + generateBtn.disabled = false; + generateBtn.textContent = originalText; + } + } + + async toggleRoulette(type) { + if (this.rouletteRuns.has(type)) { + this.stopRoulette(type); + return; + } + + await this.startRoulette(type); + } + + async startRoulette(type) { + const card = document.querySelector(`[data-type="${type}"]`); + if (!card) { + return; + } + + const run = { + active: true, + iterations: 0, + maxIterations: 12, + }; + + this.rouletteRuns.set(type, run); + this.updateRouletteButtonState(card, true); + + try { + while (run.active && run.iterations < run.maxIterations) { + run.iterations += 1; + await this.generatePasswords(type); + + if (!run.active || run.iterations >= run.maxIterations) { + break; + } + + const intervalMs = this.getRouletteIntervalMs(card); + const completed = await this.runRouletteCountdown(type, intervalMs); + if (!completed) { + break; + } + } + } finally { + this.stopRoulette(type); + } + } + + stopRoulette(type) { + const run = this.rouletteRuns.get(type); + if (run) { + run.active = false; + if (run.countdownFrame) { + cancelAnimationFrame(run.countdownFrame); + } + this.rouletteRuns.delete(type); + } + + const card = document.querySelector(`[data-type="${type}"]`); + if (card) { + this.updateRouletteButtonState(card, false); + this.setRouletteProgress(card, 0, false); + } + } + + updateRouletteButtonState(card, isRunning) { + const rouletteBtn = card.querySelector('.roulette-btn'); + const statusRow = card.querySelector('.roulette-status-row'); + if (!rouletteBtn) { + return; + } + + rouletteBtn.classList.toggle('is-running', isRunning); + rouletteBtn.textContent = isRunning ? this.t('stop') : this.t('roulette'); + if (statusRow) { + statusRow.classList.toggle('is-running', isRunning); + } + } + + getRouletteIntervalMs(card) { + const statusRow = card.querySelector('.roulette-status-row'); + const seconds = statusRow + ? parseInt(statusRow.dataset.rouletteIntervalSeconds || '3', 10) + : 3; + const safeSeconds = Number.isFinite(seconds) + ? Math.min(30, Math.max(1, seconds)) + : 3; + if (statusRow) { + statusRow.dataset.rouletteIntervalSeconds = String(safeSeconds); + } + return safeSeconds * 1000; + } + + adjustRouletteInterval(button, deltaSeconds) { + const card = button.closest('.generator-card'); + const statusRow = card?.querySelector('.roulette-status-row'); + if (!statusRow) { + return; + } + + const current = parseInt(statusRow.dataset.rouletteIntervalSeconds || '3', 10) || 3; + const next = Math.min(30, Math.max(1, current + deltaSeconds)); + statusRow.dataset.rouletteIntervalSeconds = String(next); + } + + setRouletteProgress(card, progress, active) { + const slot = card.querySelector('.roulette-progress-slot'); + const bar = card.querySelector('.roulette-progress-bar'); + if (!slot || !bar) { + return; + } + + const normalized = Math.max(0, Math.min(1, progress)); + bar.style.width = `${normalized * 100}%`; + slot.classList.toggle('is-active', !!active); + } + + async runRouletteCountdown(type, durationMs) { + const run = this.rouletteRuns.get(type); + const card = document.querySelector(`[data-type="${type}"]`); + if (!run || !card) { + return false; + } + + this.setRouletteProgress(card, 1, true); + + return await new Promise((resolve) => { + const startTime = performance.now(); + + const step = (now) => { + const currentRun = this.rouletteRuns.get(type); + if (!currentRun || !currentRun.active) { + resolve(false); + return; + } + + const elapsed = now - startTime; + const remainingRatio = 1 - (elapsed / durationMs); + this.setRouletteProgress(card, remainingRatio, true); + + if (elapsed >= durationMs) { + resolve(true); + return; + } + + currentRun.countdownFrame = requestAnimationFrame(step); + }; + + run.countdownFrame = requestAnimationFrame(step); + }); + } + + delay(ms) { + return new Promise((resolve) => setTimeout(resolve, ms)); + } + + displayPasswords(card, payload) { + const resultsDiv = card.querySelector('.password-results'); + if (!resultsDiv) return; + + resultsDiv.innerHTML = ''; + + const normalizedPayload = Array.isArray(payload) + ? { passwords: payload, explanations: [] } + : (payload || { passwords: [], explanations: [] }); + + const passwords = Array.isArray(normalizedPayload.passwords) + ? normalizedPayload.passwords + : []; + const explanations = Array.isArray(normalizedPayload.explanations) + ? normalizedPayload.explanations + : []; + const securityAssessment = typeof normalizedPayload.security_assessment === 'string' + ? normalizedPayload.security_assessment + : ''; + const rawTechnicalDetails = normalizedPayload.raw_technical_details || normalizedPayload.security_info || null; + + passwords.forEach((passwordData, index) => { + const passwordValue = typeof passwordData === 'string' + ? passwordData + : (passwordData?.password || ''); + + if (!passwordValue) { + return; + } + + const resultItem = document.createElement('div'); + resultItem.className = 'password-result-item'; + + const resultContent = document.createElement('div'); + resultContent.className = 'password-result-content'; + + const passwordText = document.createElement('div'); + passwordText.className = 'password-text'; + passwordText.textContent = passwordValue; + resultContent.appendChild(passwordText); + + const securityRow = document.createElement('div'); + securityRow.className = 'password-security-row'; + + const securityLevel = rawTechnicalDetails?.security_level || ''; + const localizedSecurityLevel = this.translateSecurityLevel(securityLevel); + if (securityLevel || securityAssessment.trim().length > 0) { + const assessmentBadge = document.createElement('div'); + assessmentBadge.className = 'password-security-badge'; + assessmentBadge.textContent = localizedSecurityLevel || securityAssessment.trim(); + securityRow.appendChild(assessmentBadge); + } + + if (rawTechnicalDetails && typeof rawTechnicalDetails === 'object') { + const entropyValue = rawTechnicalDetails.entropy_bits ?? normalizedPayload.entropy_bits; + const detailRows = []; + + if (typeof entropyValue !== 'undefined') { + detailRows.push({ + label: this.t('entropy'), + value: `${Number(entropyValue).toFixed(1)} bits` + }); + } + + if (rawTechnicalDetails.length) { + detailRows.push({ + label: this.t('length'), + value: `${rawTechnicalDetails.length} ${this.t('chars') || 'chars'}` + }); + } + + if (rawTechnicalDetails.security_level) { + detailRows.push({ + label: this.t('security_level'), + value: this.translateSecurityLevel(rawTechnicalDetails.security_level) + }); + } + + if (detailRows.length > 0) { + const technicalToggle = document.createElement('details'); + technicalToggle.className = 'password-technical-toggle'; + + const summary = document.createElement('summary'); + summary.className = 'password-technical-summary'; + summary.textContent = this.t('details'); + + const technicalBlock = document.createElement('div'); + technicalBlock.className = 'password-technical-details'; + + detailRows.forEach((detail) => { + const rowEl = document.createElement('div'); + rowEl.className = 'password-technical-row'; + + const labelEl = document.createElement('span'); + labelEl.className = 'password-technical-label'; + labelEl.textContent = detail.label; + + const valueEl = document.createElement('span'); + valueEl.className = 'password-technical-value'; + valueEl.textContent = detail.value; + + rowEl.appendChild(labelEl); + rowEl.appendChild(valueEl); + technicalBlock.appendChild(rowEl); + }); + + technicalToggle.appendChild(summary); + technicalToggle.appendChild(technicalBlock); + securityRow.appendChild(technicalToggle); + } + } + + if (securityRow.children.length > 0) { + resultContent.appendChild(securityRow); + } + + const explanation = explanations[index]; + if (typeof explanation === 'string' && explanation.trim().length > 0) { + const explanationText = document.createElement('div'); + explanationText.className = 'password-explanation'; + explanationText.textContent = explanation.trim(); + resultContent.appendChild(explanationText); + } + + resultItem.appendChild(resultContent); + + const copyBtn = document.createElement('button'); + copyBtn.className = 'copy-btn'; + copyBtn.dataset.text = passwordValue; + copyBtn.textContent = this.t('copy'); + resultItem.appendChild(copyBtn); + + resultsDiv.appendChild(resultItem); + }); + } + + async copyToClipboard(text, button = null) { + try { + await navigator.clipboard.writeText(text); + + if (button) { + const originalText = button.dataset.originalText || button.textContent || this.t('copy'); + button.dataset.originalText = originalText; + button.textContent = this.t('copied'); + button.classList.add('success'); + + if (button._copyFeedbackTimeout) { + clearTimeout(button._copyFeedbackTimeout); + } + + button._copyFeedbackTimeout = setTimeout(() => { + button.textContent = originalText; + button.classList.remove('success'); + button._copyFeedbackTimeout = null; + }, 1400); + } + + this.showSuccess(this.t('copied_to_clipboard')); + } catch (error) { + console.error('❌ Failed to copy:', error); + this.showError('Failed to copy to clipboard'); + } + } + + showSuccess(message) { + console.log('✅', message); + // TODO: Implement toast notification + } + + showError(message) { + console.error('❌', message); + // TODO: Implement toast notification + } +} + +// Initialize app when DOM is ready +if (document.readyState === 'loading') { +document.addEventListener('DOMContentLoaded', () => { + new PasswordGeneratorApp(); +}); +} else { + new PasswordGeneratorApp(); +} \ No newline at end of file diff --git a/composer.json b/composer.json new file mode 100644 index 0000000..2c1de6b --- /dev/null +++ b/composer.json @@ -0,0 +1,29 @@ +{ + "name": "drei/password-generator-api", + "description": "Secure password generator with REST API and web frontend (i18n-enabled)", + "type": "project", + "require": { + "php": "^8.1", + "slim/slim": "^4.12", + "slim/psr7": "^1.6", + "psr/http-message": "^1.0", + "psr/log": "^3.0", + "monolog/monolog": "^3.0", + "vlucas/phpdotenv": "^5.5", + "tuupola/cors-middleware": "^1.4", + "php-di/php-di": "^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^10.0" + }, + "autoload": { + "psr-4": { + "App\\": "src/" + } + }, + "scripts": { + "start": ["Composer\\Config::disableProcessTimeout","php -S localhost:8080 -t public"], + "test": "phpunit", + "generate:openapi": "php utils/generate-openapi.php" + } +} \ No newline at end of file diff --git a/composer.lock b/composer.lock new file mode 100644 index 0000000..9de2a18 --- /dev/null +++ b/composer.lock @@ -0,0 +1,3345 @@ +{ + "_readme": [ + "This file locks the dependencies of your project to a known state", + "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", + "This file is @generated automatically" + ], + "content-hash": "e7274aaff1113b2afc2485cac78b07b0", + "packages": [ + { + "name": "fig/http-message-util", + "version": "1.1.5", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-message-util.git", + "reference": "9d94dc0154230ac39e5bf89398b324a86f63f765" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/http-message-util/zipball/9d94dc0154230ac39e5bf89398b324a86f63f765", + "reference": "9d94dc0154230ac39e5bf89398b324a86f63f765", + "shasum": "" + }, + "require": { + "php": "^5.3 || ^7.0 || ^8.0" + }, + "suggest": { + "psr/http-message": "The package containing the PSR-7 interfaces" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Fig\\Http\\Message\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Utility classes and constants for use with PSR-7 (psr/http-message)", + "keywords": [ + "http", + "http-message", + "psr", + "psr-7", + "request", + "response" + ], + "support": { + "issues": "https://github.com/php-fig/http-message-util/issues", + "source": "https://github.com/php-fig/http-message-util/tree/1.1.5" + }, + "time": "2020-11-24T22:02:12+00:00" + }, + { + "name": "graham-campbell/result-type", + "version": "v1.1.3", + "source": { + "type": "git", + "url": "https://github.com/GrahamCampbell/Result-Type.git", + "reference": "3ba905c11371512af9d9bdd27d99b782216b6945" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/3ba905c11371512af9d9bdd27d99b782216b6945", + "reference": "3ba905c11371512af9d9bdd27d99b782216b6945", + "shasum": "" + }, + "require": { + "php": "^7.2.5 || ^8.0", + "phpoption/phpoption": "^1.9.3" + }, + "require-dev": { + "phpunit/phpunit": "^8.5.39 || ^9.6.20 || ^10.5.28" + }, + "type": "library", + "autoload": { + "psr-4": { + "GrahamCampbell\\ResultType\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + } + ], + "description": "An Implementation Of The Result Type", + "keywords": [ + "Graham Campbell", + "GrahamCampbell", + "Result Type", + "Result-Type", + "result" + ], + "support": { + "issues": "https://github.com/GrahamCampbell/Result-Type/issues", + "source": "https://github.com/GrahamCampbell/Result-Type/tree/v1.1.3" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/graham-campbell/result-type", + "type": "tidelift" + } + ], + "time": "2024-07-20T21:45:45+00:00" + }, + { + "name": "laravel/serializable-closure", + "version": "v2.0.4", + "source": { + "type": "git", + "url": "https://github.com/laravel/serializable-closure.git", + "reference": "b352cf0534aa1ae6b4d825d1e762e35d43f8a841" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/b352cf0534aa1ae6b4d825d1e762e35d43f8a841", + "reference": "b352cf0534aa1ae6b4d825d1e762e35d43f8a841", + "shasum": "" + }, + "require": { + "php": "^8.1" + }, + "require-dev": { + "illuminate/support": "^10.0|^11.0|^12.0", + "nesbot/carbon": "^2.67|^3.0", + "pestphp/pest": "^2.36|^3.0", + "phpstan/phpstan": "^2.0", + "symfony/var-dumper": "^6.2.0|^7.0.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.x-dev" + } + }, + "autoload": { + "psr-4": { + "Laravel\\SerializableClosure\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + }, + { + "name": "Nuno Maduro", + "email": "nuno@laravel.com" + } + ], + "description": "Laravel Serializable Closure provides an easy and secure way to serialize closures in PHP.", + "keywords": [ + "closure", + "laravel", + "serializable" + ], + "support": { + "issues": "https://github.com/laravel/serializable-closure/issues", + "source": "https://github.com/laravel/serializable-closure" + }, + "time": "2025-03-19T13:51:03+00:00" + }, + { + "name": "monolog/monolog", + "version": "3.9.0", + "source": { + "type": "git", + "url": "https://github.com/Seldaek/monolog.git", + "reference": "10d85740180ecba7896c87e06a166e0c95a0e3b6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/10d85740180ecba7896c87e06a166e0c95a0e3b6", + "reference": "10d85740180ecba7896c87e06a166e0c95a0e3b6", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "psr/log": "^2.0 || ^3.0" + }, + "provide": { + "psr/log-implementation": "3.0.0" + }, + "require-dev": { + "aws/aws-sdk-php": "^3.0", + "doctrine/couchdb": "~1.0@dev", + "elasticsearch/elasticsearch": "^7 || ^8", + "ext-json": "*", + "graylog2/gelf-php": "^1.4.2 || ^2.0", + "guzzlehttp/guzzle": "^7.4.5", + "guzzlehttp/psr7": "^2.2", + "mongodb/mongodb": "^1.8", + "php-amqplib/php-amqplib": "~2.4 || ^3", + "php-console/php-console": "^3.1.8", + "phpstan/phpstan": "^2", + "phpstan/phpstan-deprecation-rules": "^2", + "phpstan/phpstan-strict-rules": "^2", + "phpunit/phpunit": "^10.5.17 || ^11.0.7", + "predis/predis": "^1.1 || ^2", + "rollbar/rollbar": "^4.0", + "ruflin/elastica": "^7 || ^8", + "symfony/mailer": "^5.4 || ^6", + "symfony/mime": "^5.4 || ^6" + }, + "suggest": { + "aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB", + "doctrine/couchdb": "Allow sending log messages to a CouchDB server", + "elasticsearch/elasticsearch": "Allow sending log messages to an Elasticsearch server via official client", + "ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)", + "ext-curl": "Required to send log messages using the IFTTTHandler, the LogglyHandler, the SendGridHandler, the SlackWebhookHandler or the TelegramBotHandler", + "ext-mbstring": "Allow to work properly with unicode symbols", + "ext-mongodb": "Allow sending log messages to a MongoDB server (via driver)", + "ext-openssl": "Required to send log messages using SSL", + "ext-sockets": "Allow sending log messages to a Syslog server (via UDP driver)", + "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server", + "mongodb/mongodb": "Allow sending log messages to a MongoDB server (via library)", + "php-amqplib/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib", + "rollbar/rollbar": "Allow sending log messages to Rollbar", + "ruflin/elastica": "Allow sending log messages to an Elastic Search server" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Monolog\\": "src/Monolog" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "https://seld.be" + } + ], + "description": "Sends your logs to files, sockets, inboxes, databases and various web services", + "homepage": "https://github.com/Seldaek/monolog", + "keywords": [ + "log", + "logging", + "psr-3" + ], + "support": { + "issues": "https://github.com/Seldaek/monolog/issues", + "source": "https://github.com/Seldaek/monolog/tree/3.9.0" + }, + "funding": [ + { + "url": "https://github.com/Seldaek", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/monolog/monolog", + "type": "tidelift" + } + ], + "time": "2025-03-24T10:02:05+00:00" + }, + { + "name": "neomerx/cors-psr7", + "version": "3.0.2", + "source": { + "type": "git", + "url": "https://github.com/neomerx/cors-psr7.git", + "reference": "515d7fdb60b9d475da70029d4e5662beaae1875f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/neomerx/cors-psr7/zipball/515d7fdb60b9d475da70029d4e5662beaae1875f", + "reference": "515d7fdb60b9d475da70029d4e5662beaae1875f", + "shasum": "" + }, + "require": { + "php": ">=8.0.0", + "psr/http-message": "^1.0", + "psr/log": "^3.0" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^3.11", + "mockery/mockery": "^1.0", + "phpunit/phpunit": "^9.2", + "scrutinizer/ocular": "^1.4", + "squizlabs/php_codesniffer": "^3.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Neomerx\\Cors\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0" + ], + "authors": [ + { + "name": "neomerx", + "email": "info@neomerx.com" + } + ], + "description": "Framework agnostic (PSR-7) CORS implementation (www.w3.org/TR/cors/)", + "homepage": "https://github.com/neomerx/cors-psr7", + "keywords": [ + "Cross Origin Resource Sharing", + "Cross-Origin Resource Sharing", + "cors", + "neomerx", + "psr-7", + "psr7", + "w3.org", + "www.w3.org" + ], + "support": { + "issues": "https://github.com/neomerx/cors-psr7/issues", + "source": "https://github.com/neomerx/cors-psr7/tree/3.0.2" + }, + "time": "2022-11-28T03:29:06+00:00" + }, + { + "name": "nikic/fast-route", + "version": "v1.3.0", + "source": { + "type": "git", + "url": "https://github.com/nikic/FastRoute.git", + "reference": "181d480e08d9476e61381e04a71b34dc0432e812" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nikic/FastRoute/zipball/181d480e08d9476e61381e04a71b34dc0432e812", + "reference": "181d480e08d9476e61381e04a71b34dc0432e812", + "shasum": "" + }, + "require": { + "php": ">=5.4.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.35|~5.7" + }, + "type": "library", + "autoload": { + "files": [ + "src/functions.php" + ], + "psr-4": { + "FastRoute\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Nikita Popov", + "email": "nikic@php.net" + } + ], + "description": "Fast request router for PHP", + "keywords": [ + "router", + "routing" + ], + "support": { + "issues": "https://github.com/nikic/FastRoute/issues", + "source": "https://github.com/nikic/FastRoute/tree/master" + }, + "time": "2018-02-13T20:26:39+00:00" + }, + { + "name": "php-di/invoker", + "version": "2.3.6", + "source": { + "type": "git", + "url": "https://github.com/PHP-DI/Invoker.git", + "reference": "59f15608528d8a8838d69b422a919fd6b16aa576" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/PHP-DI/Invoker/zipball/59f15608528d8a8838d69b422a919fd6b16aa576", + "reference": "59f15608528d8a8838d69b422a919fd6b16aa576", + "shasum": "" + }, + "require": { + "php": ">=7.3", + "psr/container": "^1.0|^2.0" + }, + "require-dev": { + "athletic/athletic": "~0.1.8", + "mnapoli/hard-mode": "~0.3.0", + "phpunit/phpunit": "^9.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Invoker\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Generic and extensible callable invoker", + "homepage": "https://github.com/PHP-DI/Invoker", + "keywords": [ + "callable", + "dependency", + "dependency-injection", + "injection", + "invoke", + "invoker" + ], + "support": { + "issues": "https://github.com/PHP-DI/Invoker/issues", + "source": "https://github.com/PHP-DI/Invoker/tree/2.3.6" + }, + "funding": [ + { + "url": "https://github.com/mnapoli", + "type": "github" + } + ], + "time": "2025-01-17T12:49:27+00:00" + }, + { + "name": "php-di/php-di", + "version": "7.0.11", + "source": { + "type": "git", + "url": "https://github.com/PHP-DI/PHP-DI.git", + "reference": "32f111a6d214564520a57831d397263e8946c1d2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/PHP-DI/PHP-DI/zipball/32f111a6d214564520a57831d397263e8946c1d2", + "reference": "32f111a6d214564520a57831d397263e8946c1d2", + "shasum": "" + }, + "require": { + "laravel/serializable-closure": "^1.0 || ^2.0", + "php": ">=8.0", + "php-di/invoker": "^2.0", + "psr/container": "^1.1 || ^2.0" + }, + "provide": { + "psr/container-implementation": "^1.0" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^3", + "friendsofphp/proxy-manager-lts": "^1", + "mnapoli/phpunit-easymock": "^1.3", + "phpunit/phpunit": "^9.6 || ^10 || ^11", + "vimeo/psalm": "^5|^6" + }, + "suggest": { + "friendsofphp/proxy-manager-lts": "Install it if you want to use lazy injection (version ^1)" + }, + "type": "library", + "autoload": { + "files": [ + "src/functions.php" + ], + "psr-4": { + "DI\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "The dependency injection container for humans", + "homepage": "https://php-di.org/", + "keywords": [ + "PSR-11", + "container", + "container-interop", + "dependency injection", + "di", + "ioc", + "psr11" + ], + "support": { + "issues": "https://github.com/PHP-DI/PHP-DI/issues", + "source": "https://github.com/PHP-DI/PHP-DI/tree/7.0.11" + }, + "funding": [ + { + "url": "https://github.com/mnapoli", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/php-di/php-di", + "type": "tidelift" + } + ], + "time": "2025-06-03T07:45:57+00:00" + }, + { + "name": "phpoption/phpoption", + "version": "1.9.3", + "source": { + "type": "git", + "url": "https://github.com/schmittjoh/php-option.git", + "reference": "e3fac8b24f56113f7cb96af14958c0dd16330f54" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/e3fac8b24f56113f7cb96af14958c0dd16330f54", + "reference": "e3fac8b24f56113f7cb96af14958c0dd16330f54", + "shasum": "" + }, + "require": { + "php": "^7.2.5 || ^8.0" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.8.2", + "phpunit/phpunit": "^8.5.39 || ^9.6.20 || ^10.5.28" + }, + "type": "library", + "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": false + }, + "branch-alias": { + "dev-master": "1.9-dev" + } + }, + "autoload": { + "psr-4": { + "PhpOption\\": "src/PhpOption/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0" + ], + "authors": [ + { + "name": "Johannes M. Schmitt", + "email": "schmittjoh@gmail.com", + "homepage": "https://github.com/schmittjoh" + }, + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + } + ], + "description": "Option Type for PHP", + "keywords": [ + "language", + "option", + "php", + "type" + ], + "support": { + "issues": "https://github.com/schmittjoh/php-option/issues", + "source": "https://github.com/schmittjoh/php-option/tree/1.9.3" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/phpoption/phpoption", + "type": "tidelift" + } + ], + "time": "2024-07-20T21:41:07+00:00" + }, + { + "name": "psr/container", + "version": "2.0.2", + "source": { + "type": "git", + "url": "https://github.com/php-fig/container.git", + "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/container/zipball/c71ecc56dfe541dbd90c5360474fbc405f8d5963", + "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963", + "shasum": "" + }, + "require": { + "php": ">=7.4.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Container\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common Container Interface (PHP FIG PSR-11)", + "homepage": "https://github.com/php-fig/container", + "keywords": [ + "PSR-11", + "container", + "container-interface", + "container-interop", + "psr" + ], + "support": { + "issues": "https://github.com/php-fig/container/issues", + "source": "https://github.com/php-fig/container/tree/2.0.2" + }, + "time": "2021-11-05T16:47:00+00:00" + }, + { + "name": "psr/http-factory", + "version": "1.1.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-factory.git", + "reference": "2b4765fddfe3b508ac62f829e852b1501d3f6e8a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/http-factory/zipball/2b4765fddfe3b508ac62f829e852b1501d3f6e8a", + "reference": "2b4765fddfe3b508ac62f829e852b1501d3f6e8a", + "shasum": "" + }, + "require": { + "php": ">=7.1", + "psr/http-message": "^1.0 || ^2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Http\\Message\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "PSR-17: Common interfaces for PSR-7 HTTP message factories", + "keywords": [ + "factory", + "http", + "message", + "psr", + "psr-17", + "psr-7", + "request", + "response" + ], + "support": { + "source": "https://github.com/php-fig/http-factory" + }, + "time": "2024-04-15T12:06:14+00:00" + }, + { + "name": "psr/http-message", + "version": "1.1", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-message.git", + "reference": "cb6ce4845ce34a8ad9e68117c10ee90a29919eba" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/http-message/zipball/cb6ce4845ce34a8ad9e68117c10ee90a29919eba", + "reference": "cb6ce4845ce34a8ad9e68117c10ee90a29919eba", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Http\\Message\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interface for HTTP messages", + "homepage": "https://github.com/php-fig/http-message", + "keywords": [ + "http", + "http-message", + "psr", + "psr-7", + "request", + "response" + ], + "support": { + "source": "https://github.com/php-fig/http-message/tree/1.1" + }, + "time": "2023-04-04T09:50:52+00:00" + }, + { + "name": "psr/http-server-handler", + "version": "1.0.2", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-server-handler.git", + "reference": "84c4fb66179be4caaf8e97bd239203245302e7d4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/http-server-handler/zipball/84c4fb66179be4caaf8e97bd239203245302e7d4", + "reference": "84c4fb66179be4caaf8e97bd239203245302e7d4", + "shasum": "" + }, + "require": { + "php": ">=7.0", + "psr/http-message": "^1.0 || ^2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Http\\Server\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interface for HTTP server-side request handler", + "keywords": [ + "handler", + "http", + "http-interop", + "psr", + "psr-15", + "psr-7", + "request", + "response", + "server" + ], + "support": { + "source": "https://github.com/php-fig/http-server-handler/tree/1.0.2" + }, + "time": "2023-04-10T20:06:20+00:00" + }, + { + "name": "psr/http-server-middleware", + "version": "1.0.2", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-server-middleware.git", + "reference": "c1481f747daaa6a0782775cd6a8c26a1bf4a3829" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/http-server-middleware/zipball/c1481f747daaa6a0782775cd6a8c26a1bf4a3829", + "reference": "c1481f747daaa6a0782775cd6a8c26a1bf4a3829", + "shasum": "" + }, + "require": { + "php": ">=7.0", + "psr/http-message": "^1.0 || ^2.0", + "psr/http-server-handler": "^1.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Http\\Server\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interface for HTTP server-side middleware", + "keywords": [ + "http", + "http-interop", + "middleware", + "psr", + "psr-15", + "psr-7", + "request", + "response" + ], + "support": { + "issues": "https://github.com/php-fig/http-server-middleware/issues", + "source": "https://github.com/php-fig/http-server-middleware/tree/1.0.2" + }, + "time": "2023-04-11T06:14:47+00:00" + }, + { + "name": "psr/log", + "version": "3.0.2", + "source": { + "type": "git", + "url": "https://github.com/php-fig/log.git", + "reference": "f16e1d5863e37f8d8c2a01719f5b34baa2b714d3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/log/zipball/f16e1d5863e37f8d8c2a01719f5b34baa2b714d3", + "reference": "f16e1d5863e37f8d8c2a01719f5b34baa2b714d3", + "shasum": "" + }, + "require": { + "php": ">=8.0.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Log\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interface for logging libraries", + "homepage": "https://github.com/php-fig/log", + "keywords": [ + "log", + "psr", + "psr-3" + ], + "support": { + "source": "https://github.com/php-fig/log/tree/3.0.2" + }, + "time": "2024-09-11T13:17:53+00:00" + }, + { + "name": "ralouphie/getallheaders", + "version": "3.0.3", + "source": { + "type": "git", + "url": "https://github.com/ralouphie/getallheaders.git", + "reference": "120b605dfeb996808c31b6477290a714d356e822" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822", + "reference": "120b605dfeb996808c31b6477290a714d356e822", + "shasum": "" + }, + "require": { + "php": ">=5.6" + }, + "require-dev": { + "php-coveralls/php-coveralls": "^2.1", + "phpunit/phpunit": "^5 || ^6.5" + }, + "type": "library", + "autoload": { + "files": [ + "src/getallheaders.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ralph Khattar", + "email": "ralph.khattar@gmail.com" + } + ], + "description": "A polyfill for getallheaders.", + "support": { + "issues": "https://github.com/ralouphie/getallheaders/issues", + "source": "https://github.com/ralouphie/getallheaders/tree/develop" + }, + "time": "2019-03-08T08:55:37+00:00" + }, + { + "name": "slim/psr7", + "version": "1.7.1", + "source": { + "type": "git", + "url": "https://github.com/slimphp/Slim-Psr7.git", + "reference": "fe98653e7983010aa85c1d137c9b9ad5a1cd187d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/slimphp/Slim-Psr7/zipball/fe98653e7983010aa85c1d137c9b9ad5a1cd187d", + "reference": "fe98653e7983010aa85c1d137c9b9ad5a1cd187d", + "shasum": "" + }, + "require": { + "fig/http-message-util": "^1.1.5", + "php": "^8.0", + "psr/http-factory": "^1.1", + "psr/http-message": "^1.0 || ^2.0", + "ralouphie/getallheaders": "^3.0", + "symfony/polyfill-php80": "^1.29" + }, + "provide": { + "psr/http-factory-implementation": "^1.0", + "psr/http-message-implementation": "^1.0 || ^2.0" + }, + "require-dev": { + "adriansuter/php-autoload-override": "^1.4", + "ext-json": "*", + "http-interop/http-factory-tests": "^1.0 || ^2.0", + "php-http/psr7-integration-tests": "^1.4", + "phpspec/prophecy": "^1.19", + "phpspec/prophecy-phpunit": "^2.2", + "phpstan/phpstan": "^2.1", + "phpunit/phpunit": "^9.6 || ^10", + "squizlabs/php_codesniffer": "^3.10" + }, + "type": "library", + "autoload": { + "psr-4": { + "Slim\\Psr7\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Josh Lockhart", + "email": "hello@joshlockhart.com", + "homepage": "https://joshlockhart.com" + }, + { + "name": "Andrew Smith", + "email": "a.smith@silentworks.co.uk", + "homepage": "https://silentworks.co.uk" + }, + { + "name": "Rob Allen", + "email": "rob@akrabat.com", + "homepage": "https://akrabat.com" + }, + { + "name": "Pierre Berube", + "email": "pierre@lgse.com", + "homepage": "https://www.lgse.com" + } + ], + "description": "Strict PSR-7 implementation", + "homepage": "https://www.slimframework.com", + "keywords": [ + "http", + "psr-7", + "psr7" + ], + "support": { + "issues": "https://github.com/slimphp/Slim-Psr7/issues", + "source": "https://github.com/slimphp/Slim-Psr7/tree/1.7.1" + }, + "time": "2025-05-13T14:24:12+00:00" + }, + { + "name": "slim/slim", + "version": "4.14.0", + "source": { + "type": "git", + "url": "https://github.com/slimphp/Slim.git", + "reference": "5943393b88716eb9e82c4161caa956af63423913" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/slimphp/Slim/zipball/5943393b88716eb9e82c4161caa956af63423913", + "reference": "5943393b88716eb9e82c4161caa956af63423913", + "shasum": "" + }, + "require": { + "ext-json": "*", + "nikic/fast-route": "^1.3", + "php": "^7.4 || ^8.0", + "psr/container": "^1.0 || ^2.0", + "psr/http-factory": "^1.1", + "psr/http-message": "^1.1 || ^2.0", + "psr/http-server-handler": "^1.0", + "psr/http-server-middleware": "^1.0", + "psr/log": "^1.1 || ^2.0 || ^3.0" + }, + "require-dev": { + "adriansuter/php-autoload-override": "^1.4", + "ext-simplexml": "*", + "guzzlehttp/psr7": "^2.6", + "httpsoft/http-message": "^1.1", + "httpsoft/http-server-request": "^1.1", + "laminas/laminas-diactoros": "^2.17 || ^3", + "nyholm/psr7": "^1.8", + "nyholm/psr7-server": "^1.1", + "phpspec/prophecy": "^1.19", + "phpspec/prophecy-phpunit": "^2.1", + "phpstan/phpstan": "^1.11", + "phpunit/phpunit": "^9.6", + "slim/http": "^1.3", + "slim/psr7": "^1.6", + "squizlabs/php_codesniffer": "^3.10", + "vimeo/psalm": "^5.24" + }, + "suggest": { + "ext-simplexml": "Needed to support XML format in BodyParsingMiddleware", + "ext-xml": "Needed to support XML format in BodyParsingMiddleware", + "php-di/php-di": "PHP-DI is the recommended container library to be used with Slim", + "slim/psr7": "Slim PSR-7 implementation. See https://www.slimframework.com/docs/v4/start/installation.html for more information." + }, + "type": "library", + "autoload": { + "psr-4": { + "Slim\\": "Slim" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Josh Lockhart", + "email": "hello@joshlockhart.com", + "homepage": "https://joshlockhart.com" + }, + { + "name": "Andrew Smith", + "email": "a.smith@silentworks.co.uk", + "homepage": "http://silentworks.co.uk" + }, + { + "name": "Rob Allen", + "email": "rob@akrabat.com", + "homepage": "http://akrabat.com" + }, + { + "name": "Pierre Berube", + "email": "pierre@lgse.com", + "homepage": "http://www.lgse.com" + }, + { + "name": "Gabriel Manricks", + "email": "gmanricks@me.com", + "homepage": "http://gabrielmanricks.com" + } + ], + "description": "Slim is a PHP micro framework that helps you quickly write simple yet powerful web applications and APIs", + "homepage": "https://www.slimframework.com", + "keywords": [ + "api", + "framework", + "micro", + "router" + ], + "support": { + "docs": "https://www.slimframework.com/docs/v4/", + "forum": "https://discourse.slimframework.com/", + "irc": "irc://irc.freenode.net:6667/slimphp", + "issues": "https://github.com/slimphp/Slim/issues", + "rss": "https://www.slimframework.com/blog/feed.rss", + "slack": "https://slimphp.slack.com/", + "source": "https://github.com/slimphp/Slim", + "wiki": "https://github.com/slimphp/Slim/wiki" + }, + "funding": [ + { + "url": "https://opencollective.com/slimphp", + "type": "open_collective" + }, + { + "url": "https://tidelift.com/funding/github/packagist/slim/slim", + "type": "tidelift" + } + ], + "time": "2024-06-13T08:54:48+00:00" + }, + { + "name": "symfony/polyfill-ctype", + "version": "v1.32.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-ctype.git", + "reference": "a3cc8b044a6ea513310cbd48ef7333b384945638" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/a3cc8b044a6ea513310cbd48ef7333b384945638", + "reference": "a3cc8b044a6ea513310cbd48ef7333b384945638", + "shasum": "" + }, + "require": { + "php": ">=7.2" + }, + "provide": { + "ext-ctype": "*" + }, + "suggest": { + "ext-ctype": "For best performance" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Ctype\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Gert de Pagter", + "email": "BackEndTea@gmail.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for ctype functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "ctype", + "polyfill", + "portable" + ], + "support": { + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.32.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-09-09T11:45:10+00:00" + }, + { + "name": "symfony/polyfill-mbstring", + "version": "v1.32.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-mbstring.git", + "reference": "6d857f4d76bd4b343eac26d6b539585d2bc56493" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/6d857f4d76bd4b343eac26d6b539585d2bc56493", + "reference": "6d857f4d76bd4b343eac26d6b539585d2bc56493", + "shasum": "" + }, + "require": { + "ext-iconv": "*", + "php": ">=7.2" + }, + "provide": { + "ext-mbstring": "*" + }, + "suggest": { + "ext-mbstring": "For best performance" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Mbstring\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for the Mbstring extension", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "mbstring", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.32.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-12-23T08:48:59+00:00" + }, + { + "name": "symfony/polyfill-php80", + "version": "v1.32.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php80.git", + "reference": "0cc9dd0f17f61d8131e7df6b84bd344899fe2608" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/0cc9dd0f17f61d8131e7df6b84bd344899fe2608", + "reference": "0cc9dd0f17f61d8131e7df6b84bd344899fe2608", + "shasum": "" + }, + "require": { + "php": ">=7.2" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php80\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ion Bazan", + "email": "ion.bazan@gmail.com" + }, + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-php80/tree/v1.32.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-01-02T08:10:11+00:00" + }, + { + "name": "tuupola/callable-handler", + "version": "1.1.0", + "source": { + "type": "git", + "url": "https://github.com/tuupola/callable-handler.git", + "reference": "0bc7b88630ca753de9aba8f411046856f5ca6f8c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/tuupola/callable-handler/zipball/0bc7b88630ca753de9aba8f411046856f5ca6f8c", + "reference": "0bc7b88630ca753de9aba8f411046856f5ca6f8c", + "shasum": "" + }, + "require": { + "php": "^7.1|^8.0", + "psr/http-server-middleware": "^1.0" + }, + "require-dev": { + "overtrue/phplint": "^1.0", + "phpunit/phpunit": "^7.0|^8.0|^9.0", + "squizlabs/php_codesniffer": "^3.2", + "tuupola/http-factory": "^0.4.0|^1.0", + "zendframework/zend-diactoros": "^1.6.0|^2.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Tuupola\\Middleware\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mika Tuupola", + "email": "tuupola@appelsiini.net", + "homepage": "https://appelsiini.net/", + "role": "Developer" + } + ], + "description": "Compatibility layer for PSR-7 double pass and PSR-15 middlewares.", + "homepage": "https://github.com/tuupola/callable-handler", + "keywords": [ + "middleware", + "psr-15", + "psr-7" + ], + "support": { + "issues": "https://github.com/tuupola/callable-handler/issues", + "source": "https://github.com/tuupola/callable-handler/tree/1.1.0" + }, + "funding": [ + { + "url": "https://github.com/tuupola", + "type": "github" + } + ], + "time": "2020-09-09T08:31:54+00:00" + }, + { + "name": "tuupola/cors-middleware", + "version": "1.5.0", + "source": { + "type": "git", + "url": "https://github.com/tuupola/cors-middleware.git", + "reference": "a3ce99bdd322cc5f12f2a0253222e12ad8ff25e2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/tuupola/cors-middleware/zipball/a3ce99bdd322cc5f12f2a0253222e12ad8ff25e2", + "reference": "a3ce99bdd322cc5f12f2a0253222e12ad8ff25e2", + "shasum": "" + }, + "require": { + "neomerx/cors-psr7": "^2.0|^3.0", + "php": "^7.2|^8.0", + "psr/http-message": "^1.0.1|^2.0", + "psr/http-server-middleware": "^1.0", + "tuupola/callable-handler": "^1.0", + "tuupola/http-factory": "^1.0.2" + }, + "require-dev": { + "equip/dispatch": "^2.0", + "nyholm/psr7": "^1.5", + "overtrue/phplint": "^3.0", + "phpstan/phpstan": "^1.11", + "phpstan/phpstan-strict-rules": "^1.4", + "phpunit/phpunit": "^8.5.30|^9.0", + "rector/rector": "^0.14.0", + "symplify/easy-coding-standard": "^11.1" + }, + "type": "library", + "autoload": { + "psr-4": { + "Tuupola\\Middleware\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mika Tuupola", + "email": "tuupola@appelsiini.net", + "homepage": "https://www.appelsiini.net/", + "role": "Developer" + } + ], + "description": "PSR-7 and PSR-15 CORS middleware", + "homepage": "https://github.com/tuupola/cors-middleware", + "keywords": [ + "cors", + "middleware", + "psr-15", + "psr-7" + ], + "support": { + "issues": "https://github.com/tuupola/cors-middleware/issues", + "source": "https://github.com/tuupola/cors-middleware/tree/1.5.0" + }, + "time": "2025-02-14T11:13:01+00:00" + }, + { + "name": "tuupola/http-factory", + "version": "1.4.0", + "source": { + "type": "git", + "url": "https://github.com/tuupola/http-factory.git", + "reference": "ae3f8fbdd31cf2f1bbe920b38963c5e4d1e9c454" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/tuupola/http-factory/zipball/ae3f8fbdd31cf2f1bbe920b38963c5e4d1e9c454", + "reference": "ae3f8fbdd31cf2f1bbe920b38963c5e4d1e9c454", + "shasum": "" + }, + "require": { + "php": "^7.1|^8.0", + "psr/http-factory": "^1.0" + }, + "conflict": { + "nyholm/psr7": "<1.0" + }, + "provide": { + "psr/http-factory-implementation": "^1.0" + }, + "require-dev": { + "http-interop/http-factory-tests": "^0.9.0", + "overtrue/phplint": "^3.0", + "phpunit/phpunit": "^7.0|^8.0|^9.0", + "squizlabs/php_codesniffer": "^3.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Tuupola\\Http\\Factory\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mika Tuupola", + "email": "tuupola@appelsiini.net", + "homepage": "https://appelsiini.net/", + "role": "Developer" + } + ], + "description": "Lightweight autodiscovering PSR-17 HTTP factories", + "homepage": "https://github.com/tuupola/http-factory", + "keywords": [ + "http", + "psr-17", + "psr-7" + ], + "support": { + "issues": "https://github.com/tuupola/http-factory/issues", + "source": "https://github.com/tuupola/http-factory/tree/1.4.0" + }, + "funding": [ + { + "url": "https://github.com/tuupola", + "type": "github" + } + ], + "time": "2021-09-14T12:46:25+00:00" + }, + { + "name": "vlucas/phpdotenv", + "version": "v5.6.2", + "source": { + "type": "git", + "url": "https://github.com/vlucas/phpdotenv.git", + "reference": "24ac4c74f91ee2c193fa1aaa5c249cb0822809af" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/24ac4c74f91ee2c193fa1aaa5c249cb0822809af", + "reference": "24ac4c74f91ee2c193fa1aaa5c249cb0822809af", + "shasum": "" + }, + "require": { + "ext-pcre": "*", + "graham-campbell/result-type": "^1.1.3", + "php": "^7.2.5 || ^8.0", + "phpoption/phpoption": "^1.9.3", + "symfony/polyfill-ctype": "^1.24", + "symfony/polyfill-mbstring": "^1.24", + "symfony/polyfill-php80": "^1.24" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.8.2", + "ext-filter": "*", + "phpunit/phpunit": "^8.5.34 || ^9.6.13 || ^10.4.2" + }, + "suggest": { + "ext-filter": "Required to use the boolean validator." + }, + "type": "library", + "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": false + }, + "branch-alias": { + "dev-master": "5.6-dev" + } + }, + "autoload": { + "psr-4": { + "Dotenv\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + }, + { + "name": "Vance Lucas", + "email": "vance@vancelucas.com", + "homepage": "https://github.com/vlucas" + } + ], + "description": "Loads environment variables from `.env` to `getenv()`, `$_ENV` and `$_SERVER` automagically.", + "keywords": [ + "dotenv", + "env", + "environment" + ], + "support": { + "issues": "https://github.com/vlucas/phpdotenv/issues", + "source": "https://github.com/vlucas/phpdotenv/tree/v5.6.2" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/vlucas/phpdotenv", + "type": "tidelift" + } + ], + "time": "2025-04-30T23:37:27+00:00" + } + ], + "packages-dev": [ + { + "name": "myclabs/deep-copy", + "version": "1.13.4", + "source": { + "type": "git", + "url": "https://github.com/myclabs/DeepCopy.git", + "reference": "07d290f0c47959fd5eed98c95ee5602db07e0b6a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/07d290f0c47959fd5eed98c95ee5602db07e0b6a", + "reference": "07d290f0c47959fd5eed98c95ee5602db07e0b6a", + "shasum": "" + }, + "require": { + "php": "^7.1 || ^8.0" + }, + "conflict": { + "doctrine/collections": "<1.6.8", + "doctrine/common": "<2.13.3 || >=3 <3.2.2" + }, + "require-dev": { + "doctrine/collections": "^1.6.8", + "doctrine/common": "^2.13.3 || ^3.2.2", + "phpspec/prophecy": "^1.10", + "phpunit/phpunit": "^7.5.20 || ^8.5.23 || ^9.5.13" + }, + "type": "library", + "autoload": { + "files": [ + "src/DeepCopy/deep_copy.php" + ], + "psr-4": { + "DeepCopy\\": "src/DeepCopy/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Create deep copies (clones) of your objects", + "keywords": [ + "clone", + "copy", + "duplicate", + "object", + "object graph" + ], + "support": { + "issues": "https://github.com/myclabs/DeepCopy/issues", + "source": "https://github.com/myclabs/DeepCopy/tree/1.13.4" + }, + "funding": [ + { + "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", + "type": "tidelift" + } + ], + "time": "2025-08-01T08:46:24+00:00" + }, + { + "name": "nikic/php-parser", + "version": "v5.6.1", + "source": { + "type": "git", + "url": "https://github.com/nikic/PHP-Parser.git", + "reference": "f103601b29efebd7ff4a1ca7b3eeea9e3336a2a2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/f103601b29efebd7ff4a1ca7b3eeea9e3336a2a2", + "reference": "f103601b29efebd7ff4a1ca7b3eeea9e3336a2a2", + "shasum": "" + }, + "require": { + "ext-ctype": "*", + "ext-json": "*", + "ext-tokenizer": "*", + "php": ">=7.4" + }, + "require-dev": { + "ircmaxell/php-yacc": "^0.0.7", + "phpunit/phpunit": "^9.0" + }, + "bin": [ + "bin/php-parse" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.x-dev" + } + }, + "autoload": { + "psr-4": { + "PhpParser\\": "lib/PhpParser" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Nikita Popov" + } + ], + "description": "A PHP parser written in PHP", + "keywords": [ + "parser", + "php" + ], + "support": { + "issues": "https://github.com/nikic/PHP-Parser/issues", + "source": "https://github.com/nikic/PHP-Parser/tree/v5.6.1" + }, + "time": "2025-08-13T20:13:15+00:00" + }, + { + "name": "phar-io/manifest", + "version": "2.0.4", + "source": { + "type": "git", + "url": "https://github.com/phar-io/manifest.git", + "reference": "54750ef60c58e43759730615a392c31c80e23176" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phar-io/manifest/zipball/54750ef60c58e43759730615a392c31c80e23176", + "reference": "54750ef60c58e43759730615a392c31c80e23176", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-libxml": "*", + "ext-phar": "*", + "ext-xmlwriter": "*", + "phar-io/version": "^3.0.1", + "php": "^7.2 || ^8.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + }, + { + "name": "Sebastian Heuer", + "email": "sebastian@phpeople.de", + "role": "Developer" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "Developer" + } + ], + "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", + "support": { + "issues": "https://github.com/phar-io/manifest/issues", + "source": "https://github.com/phar-io/manifest/tree/2.0.4" + }, + "funding": [ + { + "url": "https://github.com/theseer", + "type": "github" + } + ], + "time": "2024-03-03T12:33:53+00:00" + }, + { + "name": "phar-io/version", + "version": "3.2.1", + "source": { + "type": "git", + "url": "https://github.com/phar-io/version.git", + "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phar-io/version/zipball/4f7fd7836c6f332bb2933569e566a0d6c4cbed74", + "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + }, + { + "name": "Sebastian Heuer", + "email": "sebastian@phpeople.de", + "role": "Developer" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "Developer" + } + ], + "description": "Library for handling version information and constraints", + "support": { + "issues": "https://github.com/phar-io/version/issues", + "source": "https://github.com/phar-io/version/tree/3.2.1" + }, + "time": "2022-02-21T01:04:05+00:00" + }, + { + "name": "phpunit/php-code-coverage", + "version": "10.1.16", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-code-coverage.git", + "reference": "7e308268858ed6baedc8704a304727d20bc07c77" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/7e308268858ed6baedc8704a304727d20bc07c77", + "reference": "7e308268858ed6baedc8704a304727d20bc07c77", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-libxml": "*", + "ext-xmlwriter": "*", + "nikic/php-parser": "^4.19.1 || ^5.1.0", + "php": ">=8.1", + "phpunit/php-file-iterator": "^4.1.0", + "phpunit/php-text-template": "^3.0.1", + "sebastian/code-unit-reverse-lookup": "^3.0.0", + "sebastian/complexity": "^3.2.0", + "sebastian/environment": "^6.1.0", + "sebastian/lines-of-code": "^2.0.2", + "sebastian/version": "^4.0.1", + "theseer/tokenizer": "^1.2.3" + }, + "require-dev": { + "phpunit/phpunit": "^10.1" + }, + "suggest": { + "ext-pcov": "PHP extension that provides line coverage", + "ext-xdebug": "PHP extension that provides line coverage as well as branch and path coverage" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "10.1.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", + "homepage": "https://github.com/sebastianbergmann/php-code-coverage", + "keywords": [ + "coverage", + "testing", + "xunit" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", + "security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy", + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/10.1.16" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-08-22T04:31:57+00:00" + }, + { + "name": "phpunit/php-file-iterator", + "version": "4.1.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-file-iterator.git", + "reference": "a95037b6d9e608ba092da1b23931e537cadc3c3c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/a95037b6d9e608ba092da1b23931e537cadc3c3c", + "reference": "a95037b6d9e608ba092da1b23931e537cadc3c3c", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "require-dev": { + "phpunit/phpunit": "^10.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "FilterIterator implementation that filters files based on a list of suffixes.", + "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", + "keywords": [ + "filesystem", + "iterator" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues", + "security": "https://github.com/sebastianbergmann/php-file-iterator/security/policy", + "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/4.1.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-08-31T06:24:48+00:00" + }, + { + "name": "phpunit/php-invoker", + "version": "4.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-invoker.git", + "reference": "f5e568ba02fa5ba0ddd0f618391d5a9ea50b06d7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/f5e568ba02fa5ba0ddd0f618391d5a9ea50b06d7", + "reference": "f5e568ba02fa5ba0ddd0f618391d5a9ea50b06d7", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "require-dev": { + "ext-pcntl": "*", + "phpunit/phpunit": "^10.0" + }, + "suggest": { + "ext-pcntl": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Invoke callables with a timeout", + "homepage": "https://github.com/sebastianbergmann/php-invoker/", + "keywords": [ + "process" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-invoker/issues", + "source": "https://github.com/sebastianbergmann/php-invoker/tree/4.0.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-02-03T06:56:09+00:00" + }, + { + "name": "phpunit/php-text-template", + "version": "3.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-text-template.git", + "reference": "0c7b06ff49e3d5072f057eb1fa59258bf287a748" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/0c7b06ff49e3d5072f057eb1fa59258bf287a748", + "reference": "0c7b06ff49e3d5072f057eb1fa59258bf287a748", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "require-dev": { + "phpunit/phpunit": "^10.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Simple template engine.", + "homepage": "https://github.com/sebastianbergmann/php-text-template/", + "keywords": [ + "template" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-text-template/issues", + "security": "https://github.com/sebastianbergmann/php-text-template/security/policy", + "source": "https://github.com/sebastianbergmann/php-text-template/tree/3.0.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-08-31T14:07:24+00:00" + }, + { + "name": "phpunit/php-timer", + "version": "6.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-timer.git", + "reference": "e2a2d67966e740530f4a3343fe2e030ffdc1161d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/e2a2d67966e740530f4a3343fe2e030ffdc1161d", + "reference": "e2a2d67966e740530f4a3343fe2e030ffdc1161d", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "require-dev": { + "phpunit/phpunit": "^10.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "6.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Utility class for timing", + "homepage": "https://github.com/sebastianbergmann/php-timer/", + "keywords": [ + "timer" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-timer/issues", + "source": "https://github.com/sebastianbergmann/php-timer/tree/6.0.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-02-03T06:57:52+00:00" + }, + { + "name": "phpunit/phpunit", + "version": "10.5.51", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/phpunit.git", + "reference": "ace160e31aaa317a99c411410c40c502b4be42a4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/ace160e31aaa317a99c411410c40c502b4be42a4", + "reference": "ace160e31aaa317a99c411410c40c502b4be42a4", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-json": "*", + "ext-libxml": "*", + "ext-mbstring": "*", + "ext-xml": "*", + "ext-xmlwriter": "*", + "myclabs/deep-copy": "^1.13.4", + "phar-io/manifest": "^2.0.4", + "phar-io/version": "^3.2.1", + "php": ">=8.1", + "phpunit/php-code-coverage": "^10.1.16", + "phpunit/php-file-iterator": "^4.1.0", + "phpunit/php-invoker": "^4.0.0", + "phpunit/php-text-template": "^3.0.1", + "phpunit/php-timer": "^6.0.0", + "sebastian/cli-parser": "^2.0.1", + "sebastian/code-unit": "^2.0.0", + "sebastian/comparator": "^5.0.3", + "sebastian/diff": "^5.1.1", + "sebastian/environment": "^6.1.0", + "sebastian/exporter": "^5.1.2", + "sebastian/global-state": "^6.0.2", + "sebastian/object-enumerator": "^5.0.0", + "sebastian/recursion-context": "^5.0.1", + "sebastian/type": "^4.0.0", + "sebastian/version": "^4.0.1" + }, + "suggest": { + "ext-soap": "To be able to generate mocks based on WSDL files" + }, + "bin": [ + "phpunit" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "10.5-dev" + } + }, + "autoload": { + "files": [ + "src/Framework/Assert/Functions.php" + ], + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "The PHP Unit Testing framework.", + "homepage": "https://phpunit.de/", + "keywords": [ + "phpunit", + "testing", + "xunit" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/phpunit/issues", + "security": "https://github.com/sebastianbergmann/phpunit/security/policy", + "source": "https://github.com/sebastianbergmann/phpunit/tree/10.5.51" + }, + "funding": [ + { + "url": "https://phpunit.de/sponsors.html", + "type": "custom" + }, + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/phpunit/phpunit", + "type": "tidelift" + } + ], + "time": "2025-08-12T07:31:25+00:00" + }, + { + "name": "sebastian/cli-parser", + "version": "2.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/cli-parser.git", + "reference": "c34583b87e7b7a8055bf6c450c2c77ce32a24084" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/c34583b87e7b7a8055bf6c450c2c77ce32a24084", + "reference": "c34583b87e7b7a8055bf6c450c2c77ce32a24084", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "require-dev": { + "phpunit/phpunit": "^10.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library for parsing CLI options", + "homepage": "https://github.com/sebastianbergmann/cli-parser", + "support": { + "issues": "https://github.com/sebastianbergmann/cli-parser/issues", + "security": "https://github.com/sebastianbergmann/cli-parser/security/policy", + "source": "https://github.com/sebastianbergmann/cli-parser/tree/2.0.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-03-02T07:12:49+00:00" + }, + { + "name": "sebastian/code-unit", + "version": "2.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/code-unit.git", + "reference": "a81fee9eef0b7a76af11d121767abc44c104e503" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/a81fee9eef0b7a76af11d121767abc44c104e503", + "reference": "a81fee9eef0b7a76af11d121767abc44c104e503", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "require-dev": { + "phpunit/phpunit": "^10.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Collection of value objects that represent the PHP code units", + "homepage": "https://github.com/sebastianbergmann/code-unit", + "support": { + "issues": "https://github.com/sebastianbergmann/code-unit/issues", + "source": "https://github.com/sebastianbergmann/code-unit/tree/2.0.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-02-03T06:58:43+00:00" + }, + { + "name": "sebastian/code-unit-reverse-lookup", + "version": "3.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", + "reference": "5e3a687f7d8ae33fb362c5c0743794bbb2420a1d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/5e3a687f7d8ae33fb362c5c0743794bbb2420a1d", + "reference": "5e3a687f7d8ae33fb362c5c0743794bbb2420a1d", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "require-dev": { + "phpunit/phpunit": "^10.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Looks up which function or method a line of code belongs to", + "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", + "support": { + "issues": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/issues", + "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/3.0.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-02-03T06:59:15+00:00" + }, + { + "name": "sebastian/comparator", + "version": "5.0.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/comparator.git", + "reference": "a18251eb0b7a2dcd2f7aa3d6078b18545ef0558e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/a18251eb0b7a2dcd2f7aa3d6078b18545ef0558e", + "reference": "a18251eb0b7a2dcd2f7aa3d6078b18545ef0558e", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-mbstring": "*", + "php": ">=8.1", + "sebastian/diff": "^5.0", + "sebastian/exporter": "^5.0" + }, + "require-dev": { + "phpunit/phpunit": "^10.5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "5.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@2bepublished.at" + } + ], + "description": "Provides the functionality to compare PHP values for equality", + "homepage": "https://github.com/sebastianbergmann/comparator", + "keywords": [ + "comparator", + "compare", + "equality" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/comparator/issues", + "security": "https://github.com/sebastianbergmann/comparator/security/policy", + "source": "https://github.com/sebastianbergmann/comparator/tree/5.0.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-10-18T14:56:07+00:00" + }, + { + "name": "sebastian/complexity", + "version": "3.2.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/complexity.git", + "reference": "68ff824baeae169ec9f2137158ee529584553799" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/68ff824baeae169ec9f2137158ee529584553799", + "reference": "68ff824baeae169ec9f2137158ee529584553799", + "shasum": "" + }, + "require": { + "nikic/php-parser": "^4.18 || ^5.0", + "php": ">=8.1" + }, + "require-dev": { + "phpunit/phpunit": "^10.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.2-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library for calculating the complexity of PHP code units", + "homepage": "https://github.com/sebastianbergmann/complexity", + "support": { + "issues": "https://github.com/sebastianbergmann/complexity/issues", + "security": "https://github.com/sebastianbergmann/complexity/security/policy", + "source": "https://github.com/sebastianbergmann/complexity/tree/3.2.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-12-21T08:37:17+00:00" + }, + { + "name": "sebastian/diff", + "version": "5.1.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/diff.git", + "reference": "c41e007b4b62af48218231d6c2275e4c9b975b2e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/c41e007b4b62af48218231d6c2275e4c9b975b2e", + "reference": "c41e007b4b62af48218231d6c2275e4c9b975b2e", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "require-dev": { + "phpunit/phpunit": "^10.0", + "symfony/process": "^6.4" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "5.1-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Kore Nordmann", + "email": "mail@kore-nordmann.de" + } + ], + "description": "Diff implementation", + "homepage": "https://github.com/sebastianbergmann/diff", + "keywords": [ + "diff", + "udiff", + "unidiff", + "unified diff" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/diff/issues", + "security": "https://github.com/sebastianbergmann/diff/security/policy", + "source": "https://github.com/sebastianbergmann/diff/tree/5.1.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-03-02T07:15:17+00:00" + }, + { + "name": "sebastian/environment", + "version": "6.1.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/environment.git", + "reference": "8074dbcd93529b357029f5cc5058fd3e43666984" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/8074dbcd93529b357029f5cc5058fd3e43666984", + "reference": "8074dbcd93529b357029f5cc5058fd3e43666984", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "require-dev": { + "phpunit/phpunit": "^10.0" + }, + "suggest": { + "ext-posix": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "6.1-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Provides functionality to handle HHVM/PHP environments", + "homepage": "https://github.com/sebastianbergmann/environment", + "keywords": [ + "Xdebug", + "environment", + "hhvm" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/environment/issues", + "security": "https://github.com/sebastianbergmann/environment/security/policy", + "source": "https://github.com/sebastianbergmann/environment/tree/6.1.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-03-23T08:47:14+00:00" + }, + { + "name": "sebastian/exporter", + "version": "5.1.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/exporter.git", + "reference": "955288482d97c19a372d3f31006ab3f37da47adf" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/955288482d97c19a372d3f31006ab3f37da47adf", + "reference": "955288482d97c19a372d3f31006ab3f37da47adf", + "shasum": "" + }, + "require": { + "ext-mbstring": "*", + "php": ">=8.1", + "sebastian/recursion-context": "^5.0" + }, + "require-dev": { + "phpunit/phpunit": "^10.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "5.1-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" + } + ], + "description": "Provides the functionality to export PHP variables for visualization", + "homepage": "https://www.github.com/sebastianbergmann/exporter", + "keywords": [ + "export", + "exporter" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/exporter/issues", + "security": "https://github.com/sebastianbergmann/exporter/security/policy", + "source": "https://github.com/sebastianbergmann/exporter/tree/5.1.2" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-03-02T07:17:12+00:00" + }, + { + "name": "sebastian/global-state", + "version": "6.0.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/global-state.git", + "reference": "987bafff24ecc4c9ac418cab1145b96dd6e9cbd9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/987bafff24ecc4c9ac418cab1145b96dd6e9cbd9", + "reference": "987bafff24ecc4c9ac418cab1145b96dd6e9cbd9", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "sebastian/object-reflector": "^3.0", + "sebastian/recursion-context": "^5.0" + }, + "require-dev": { + "ext-dom": "*", + "phpunit/phpunit": "^10.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "6.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Snapshotting of global state", + "homepage": "https://www.github.com/sebastianbergmann/global-state", + "keywords": [ + "global state" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/global-state/issues", + "security": "https://github.com/sebastianbergmann/global-state/security/policy", + "source": "https://github.com/sebastianbergmann/global-state/tree/6.0.2" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-03-02T07:19:19+00:00" + }, + { + "name": "sebastian/lines-of-code", + "version": "2.0.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/lines-of-code.git", + "reference": "856e7f6a75a84e339195d48c556f23be2ebf75d0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/856e7f6a75a84e339195d48c556f23be2ebf75d0", + "reference": "856e7f6a75a84e339195d48c556f23be2ebf75d0", + "shasum": "" + }, + "require": { + "nikic/php-parser": "^4.18 || ^5.0", + "php": ">=8.1" + }, + "require-dev": { + "phpunit/phpunit": "^10.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library for counting the lines of code in PHP source code", + "homepage": "https://github.com/sebastianbergmann/lines-of-code", + "support": { + "issues": "https://github.com/sebastianbergmann/lines-of-code/issues", + "security": "https://github.com/sebastianbergmann/lines-of-code/security/policy", + "source": "https://github.com/sebastianbergmann/lines-of-code/tree/2.0.2" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-12-21T08:38:20+00:00" + }, + { + "name": "sebastian/object-enumerator", + "version": "5.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/object-enumerator.git", + "reference": "202d0e344a580d7f7d04b3fafce6933e59dae906" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/202d0e344a580d7f7d04b3fafce6933e59dae906", + "reference": "202d0e344a580d7f7d04b3fafce6933e59dae906", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "sebastian/object-reflector": "^3.0", + "sebastian/recursion-context": "^5.0" + }, + "require-dev": { + "phpunit/phpunit": "^10.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "5.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Traverses array structures and object graphs to enumerate all referenced objects", + "homepage": "https://github.com/sebastianbergmann/object-enumerator/", + "support": { + "issues": "https://github.com/sebastianbergmann/object-enumerator/issues", + "source": "https://github.com/sebastianbergmann/object-enumerator/tree/5.0.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-02-03T07:08:32+00:00" + }, + { + "name": "sebastian/object-reflector", + "version": "3.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/object-reflector.git", + "reference": "24ed13d98130f0e7122df55d06c5c4942a577957" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/24ed13d98130f0e7122df55d06c5c4942a577957", + "reference": "24ed13d98130f0e7122df55d06c5c4942a577957", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "require-dev": { + "phpunit/phpunit": "^10.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Allows reflection of object attributes, including inherited and non-public ones", + "homepage": "https://github.com/sebastianbergmann/object-reflector/", + "support": { + "issues": "https://github.com/sebastianbergmann/object-reflector/issues", + "source": "https://github.com/sebastianbergmann/object-reflector/tree/3.0.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-02-03T07:06:18+00:00" + }, + { + "name": "sebastian/recursion-context", + "version": "5.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/recursion-context.git", + "reference": "47e34210757a2f37a97dcd207d032e1b01e64c7a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/47e34210757a2f37a97dcd207d032e1b01e64c7a", + "reference": "47e34210757a2f37a97dcd207d032e1b01e64c7a", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "require-dev": { + "phpunit/phpunit": "^10.5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "5.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" + } + ], + "description": "Provides functionality to recursively process PHP variables", + "homepage": "https://github.com/sebastianbergmann/recursion-context", + "support": { + "issues": "https://github.com/sebastianbergmann/recursion-context/issues", + "security": "https://github.com/sebastianbergmann/recursion-context/security/policy", + "source": "https://github.com/sebastianbergmann/recursion-context/tree/5.0.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/sebastian/recursion-context", + "type": "tidelift" + } + ], + "time": "2025-08-10T07:50:56+00:00" + }, + { + "name": "sebastian/type", + "version": "4.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/type.git", + "reference": "462699a16464c3944eefc02ebdd77882bd3925bf" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/462699a16464c3944eefc02ebdd77882bd3925bf", + "reference": "462699a16464c3944eefc02ebdd77882bd3925bf", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "require-dev": { + "phpunit/phpunit": "^10.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Collection of value objects that represent the types of the PHP type system", + "homepage": "https://github.com/sebastianbergmann/type", + "support": { + "issues": "https://github.com/sebastianbergmann/type/issues", + "source": "https://github.com/sebastianbergmann/type/tree/4.0.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-02-03T07:10:45+00:00" + }, + { + "name": "sebastian/version", + "version": "4.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/version.git", + "reference": "c51fa83a5d8f43f1402e3f32a005e6262244ef17" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c51fa83a5d8f43f1402e3f32a005e6262244ef17", + "reference": "c51fa83a5d8f43f1402e3f32a005e6262244ef17", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library that helps with managing the version number of Git-hosted PHP projects", + "homepage": "https://github.com/sebastianbergmann/version", + "support": { + "issues": "https://github.com/sebastianbergmann/version/issues", + "source": "https://github.com/sebastianbergmann/version/tree/4.0.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-02-07T11:34:05+00:00" + }, + { + "name": "theseer/tokenizer", + "version": "1.2.3", + "source": { + "type": "git", + "url": "https://github.com/theseer/tokenizer.git", + "reference": "737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/theseer/tokenizer/zipball/737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2", + "reference": "737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-tokenizer": "*", + "ext-xmlwriter": "*", + "php": "^7.2 || ^8.0" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + } + ], + "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", + "support": { + "issues": "https://github.com/theseer/tokenizer/issues", + "source": "https://github.com/theseer/tokenizer/tree/1.2.3" + }, + "funding": [ + { + "url": "https://github.com/theseer", + "type": "github" + } + ], + "time": "2024-03-03T12:36:25+00:00" + } + ], + "aliases": [], + "minimum-stability": "stable", + "stability-flags": {}, + "prefer-stable": false, + "prefer-lowest": false, + "platform": { + "php": "^8.1" + }, + "platform-dev": {}, + "plugin-api-version": "2.6.0" +} diff --git a/config/config.example.json b/config/config.example.json new file mode 100644 index 0000000..7137fbc --- /dev/null +++ b/config/config.example.json @@ -0,0 +1,133 @@ +{ + "app": { + "name": "Password Generator", + "version": "4.1.0", + "environment": "production" + }, + "locale": { + "default": "en", + "supported": [ + "en", + "de", + "de_CH", + "fr", + "it", + "es", + "pt", + "ja", + "zh" + ], + "fallback": "en", + "languages": { + "en": "English", + "de": "Deutsch", + "de_CH": "Schwyzerdütsch", + "fr": "Français", + "it": "Italiano", + "es": "Español", + "pt": "Português", + "ja": "日本語", + "zh": "中文" + } + }, + "llm": { + "default_provider": "openai", + "timeout": 30, + "max_tokens": 500, + "temperature": 0.7, + "retry_attempts": 3, + "retry_delay": 1000, + "api_keys": { + "openai": "sk-example-openai-key", + "claude": "sk-ant-example-claude-key", + "gemini": "example-gemini-api-key", + "perplexity": "pplx-example-perplexity-key" + }, + "providers": { + "openai": { + "name": "OpenAI", + "models": { + "gpt-3.5-turbo": "GPT-3.5 Turbo", + "gpt-4": "GPT-4", + "gpt-4-turbo": "GPT-4 Turbo", + "gpt-4o": "GPT-4 Omni" + }, + "default_model": "gpt-3.5-turbo" + }, + "claude": { + "name": "Claude", + "models": { + "claude-3-opus-20240229": "Claude 3 Opus", + "claude-3-sonnet-20240229": "Claude 3 Sonnet", + "claude-3-haiku-20240307": "Claude 3 Haiku" + }, + "default_model": "claude-3-sonnet-20240229" + }, + "gemini": { + "name": "Gemini", + "models": { + "gemini-pro": "Gemini Pro", + "gemini-1.5-pro": "Gemini 1.5 Pro", + "gemini-1.5-flash": "Gemini 1.5 Flash" + }, + "default_model": "gemini-pro" + }, + "perplexity": { + "name": "Perplexity", + "models": { + "llama-3-sonar-small-32k-online": "Llama 3 Sonar Small (32k)", + "llama-3-sonar-large-32k-online": "Llama 3 Sonar Large (32k)", + "llama-3-8b-instruct": "Llama 3 8B Instruct", + "llama-3-70b-instruct": "Llama 3 70B Instruct" + }, + "default_model": "llama-3-sonar-small-32k-online" + } + } + }, + "generator": { + "max_passwords_per_request": 100, + "default_count": 1, + "roulette_interval_seconds": 3, + "xkcd": { + "wordlists_path": "data/wordlists", + "wordlists": { + "en": { + "label": "EFF Large Wordlist (English)", + "file": "example_en_wordlist.txt" + }, + "de": { + "label": "German Common Words", + "file": "example_de_wordlist.txt" + }, + "fr": { + "label": "French Common Words", + "file": "example_fr_wordlist.txt" + }, + "it": { + "label": "Italian Common Words", + "file": "example_it_wordlist.txt" + }, + "es": { + "label": "Spanish Common Words", + "file": "example_es_wordlist.txt" + } + } + }, + "cache_enabled": true, + "cache_ttl": 3600 + }, + "security": { + "rate_limit_enabled": true, + "rate_limit_max_requests": 120, + "rate_limit_window": 3600, + "require_https": true, + "cors_enabled": true, + "cors_origins": [ + "https://yourdomain.com" + ] + }, + "logging": { + "enabled": true, + "level": "info" + } +} diff --git a/config/config.json b/config/config.json new file mode 100644 index 0000000..7992669 --- /dev/null +++ b/config/config.json @@ -0,0 +1,131 @@ +{ + "app": { + "name": "Password Generator", + "version": "4.1.0", + "environment": "production" + }, + "locale": { + "default": "en", + "supported": [ + "en", + "de", + "de_CH", + "fr", + "it", + "es", + "pt", + "ja", + "zh" + ], + "fallback": "en", + "languages": { + "en": "English", + "de": "Deutsch", + "de_CH": "Schwyzerdütsch", + "fr": "Français", + "it": "Italiano", + "es": "Español", + "pt": "Português", + "ja": "日本語", + "zh": "中文" + } + }, + "llm": { + "default_provider": "openai", + "timeout": 30, + "max_tokens": 500, + "temperature": 0.7, + "retry_attempts": 3, + "retry_delay": 1000, + "providers": { + "openai": { + "name": "OpenAI", + "models": { + "gpt-3.5-turbo": "GPT-3.5 Turbo", + "gpt-4": "GPT-4", + "gpt-4-turbo": "GPT-4 Turbo", + "gpt-4o": "GPT-4 Omni" + }, + "default_model": "gpt-3.5-turbo" + }, + "claude": { + "name": "Claude", + "models": { + "claude-3-opus-20240229": "Claude 3 Opus", + "claude-3-sonnet-20240229": "Claude 3 Sonnet", + "claude-3-haiku-20240307": "Claude 3 Haiku" + }, + "default_model": "claude-3-sonnet-20240229" + }, + "gemini": { + "name": "Gemini", + "models": { + "gemini-pro": "Gemini Pro", + "gemini-1.5-pro": "Gemini 1.5 Pro", + "gemini-1.5-flash": "Gemini 1.5 Flash" + }, + "default_model": "gemini-pro" + }, + "perplexity": { + "name": "Perplexity", + "models": { + "llama-3-sonar-small-32k-online": "Llama 3 Sonar Small (32k)", + "llama-3-sonar-large-32k-online": "Llama 3 Sonar Large (32k)", + "llama-3-8b-instruct": "Llama 3 8B Instruct", + "llama-3-70b-instruct": "Llama 3 70B Instruct" + }, + "default_model": "llama-3-sonar-small-32k-online" + } + } + }, + "generator": { + "max_passwords_per_request": 100, + "default_count": 1, + "roulette_interval_seconds": 3, + "xkcd": { + "wordlists_path": "data/wordlists", + "wordlists": { + "en": { + "label": "EFF English Wordlist", + "file": "eff_large_wordlist_en.txt" + }, + "de": { + "label": "German Common Words", + "file": "german_common_words_de.txt" + }, + "ch": { + "label": "Slängikon", + "file": "swiss_german_slaengikon.txt" + }, + "fr": { + "label": "French Common Words", + "file": "french_common_words_fr.txt" + }, + "it": { + "label": "Italian Common Words", + "file": "italian_common_words_it.txt" + }, + "es": { + "label": "Spanish Common Words", + "file": "spanish_common_words_es.txt" + } + } + }, + "cache_enabled": true, + "cache_ttl": 3600 + }, + "security": { + "rate_limit_enabled": true, + "rate_limit_max_requests": 120, + "rate_limit_window": 3600, + "require_https": true, + "cors_enabled": true, + "cors_origins": [ + "https://yourdomain.com" + ] + }, + "logging": { + "enabled": true, + "level": "info" + } +} diff --git a/config/dependencies.php b/config/dependencies.php new file mode 100644 index 0000000..b2bc633 --- /dev/null +++ b/config/dependencies.php @@ -0,0 +1,52 @@ +addDefinitions([ + LoggerInterface::class => function (ContainerInterface $c) { + $settings = [ + 'name' => $_ENV['APP_NAME'] ?? 'password-generator', + 'path' => __DIR__ . '/../' . ($_ENV['LOG_PATH'] ?? 'logs/app.log'), + 'level' => SecurityConfig::resolveLogLevel($_ENV['LOG_LEVEL'] ?? 'warning'), + ]; + + $logger = new Logger($settings['name']); + + $processor = new UidProcessor(); + $logger->pushProcessor($processor); + + $handler = new StreamHandler($settings['path'], $settings['level']); + $logger->pushHandler($handler); + + return $logger; + }, + + ResponseHelper::class => function (ContainerInterface $c) { + return new ResponseHelper(); + }, + + PasswordGeneratorManager::class => function (ContainerInterface $c) { + return new PasswordGeneratorManager(); + }, + + PasswordController::class => function (ContainerInterface $c) { + return new PasswordController( + $c->get(PasswordGeneratorManager::class), + $c->get(ResponseHelper::class), + $c->get(LoggerInterface::class) + ); + }, + ]); +}; diff --git a/config/middleware.php b/config/middleware.php new file mode 100644 index 0000000..b5a0a7d --- /dev/null +++ b/config/middleware.php @@ -0,0 +1,35 @@ +addBodyParsingMiddleware(); + + // Add CORS middleware + $app->add(new CorsMiddleware()); + + // Add JSON response middleware + $app->add(new JsonResponseMiddleware()); + + // Add rate limiting middleware + $app->add(new RateLimitMiddleware()); + + // Add routing middleware + $app->addRoutingMiddleware(); + + // Add error middleware + $displayErrorDetails = filter_var($_ENV['APP_DEBUG'] ?? 'false', FILTER_VALIDATE_BOOLEAN); + $logErrors = true; + $logErrorDetails = $displayErrorDetails; + + $errorMiddleware = $app->addErrorMiddleware($displayErrorDetails, $logErrors, $logErrorDetails); + + return $app; +}; diff --git a/config/routes.php b/config/routes.php new file mode 100644 index 0000000..77c5491 --- /dev/null +++ b/config/routes.php @@ -0,0 +1,179 @@ +get('/', function (Request $request, Response $response, $args) { + $html = file_get_contents(__DIR__ . '/../templates/index.html'); + $response->getBody()->write($html); + return $response->withHeader('Content-Type', 'text/html'); + }); + + // API routes + $app->group('/api/v1', function (Group $group) { + // Password generation endpoints + $group->get('/passwords', PasswordController::class . ':getPasswordTypes'); + $group->get('/passwords/generators', PasswordController::class . ':getGenerators'); + $group->post('/passwords/generate', PasswordController::class . ':generatePasswords'); + + // NEW: Available wordlists endpoint for dynamic language dropdown + $group->get('/passwords/wordlists', PasswordController::class . ':getAvailableWordlists'); + + // Health check + $group->get('/health', function (Request $request, Response $response) { + $response->getBody()->write(json_encode([ + 'status' => 'healthy', + 'version' => $_ENV['APP_VERSION'] ?? '1.0.0', + 'timestamp' => date('c') + ])); + return $response->withHeader('Content-Type', 'application/json'); + }); + + // Updated locales endpoint with fixed pattern validation + $group->get('/locales/{lang:[A-Za-z_]+}', function (Request $request, Response $response, array $args) { + $lang = $args['lang']; + + // Updated supported languages list to match frontend and wordlists + $supportedLangs = ['en', 'de', 'de_CH', 'fr', 'it', 'es', 'pt', 'ja', 'zh']; + + if (!in_array($lang, $supportedLangs, true)) { + $lang = 'en'; // fallback + } + + // Preserve Swiss German locale when available, otherwise fall back to German + if ($lang === 'ch') { + $lang = 'de'; + } + if ($lang === 'de_CH' && !file_exists(__DIR__ . '/../locales/de_CH.json')) { + $lang = 'de'; + } + + $path = __DIR__ . "/../locales/{$lang}.json"; + if (!file_exists($path)) { + return $response->withStatus(404); + } + + $content = file_get_contents($path); + $response->getBody()->write($content); + return $response->withHeader('Content-Type', 'application/json'); + }); + }); + + /* + // API documentation + $app->get('/docs', function (Request $request, Response $response, $args) { + $html = file_get_contents(__DIR__ . '/../templates/docs.html'); + $response->getBody()->write($html); + return $response->withHeader('Content-Type', 'text/html'); + }); + */ + + // Serve static assets + $app->get('/assets/{type}/{file}', function (Request $request, Response $response, array $args) { + $type = $args['type']; + $file = $args['file']; + $path = __DIR__ . "/../assets/{$type}/{$file}"; + + if (!file_exists($path)) { + return $response->withStatus(404); + } + + $content = file_get_contents($path); + $contentType = $type === 'css' ? 'text/css' : 'application/javascript'; + + $response->getBody()->write($content); + return $response->withHeader('Content-Type', $contentType); + }); + + // Serve locale files directly with improved pattern matching + $app->get('/locales/{file:[A-Za-z_]+\.json}', function (Request $request, Response $response, array $args) { + $file = $args['file']; + $path = __DIR__ . "/../locales/{$file}"; + + if (!file_exists($path)) { + return $response->withStatus(404); + } + + $content = file_get_contents($path); + $response->getBody()->write($content); + return $response->withHeader('Content-Type', 'application/json'); + }); + + // Main documentation route (English - default) + $app->get('/docs', function ($request, $response) { + $docFile = __DIR__ . '/../docs/index.html'; + + if (file_exists($docFile)) { + $response->getBody()->write(file_get_contents($docFile)); + return $response->withHeader('Content-Type', 'text/html; charset=utf-8'); + } else { + return $response->withStatus(404)->write('Documentation not found'); + } + }); + + // Language-specific documentation routes + $app->get('/docs-{lang}', function ($request, $response, array $args) { + $lang = $args['lang']; + + // Allowed languages + $allowedLanguages = ['de', 'fr', 'es', 'it', 'ja', 'zh']; + + if (!in_array($lang, $allowedLanguages)) { + return $response->withStatus(302)->withHeader('Location', '/docs'); + } + + $docFile = __DIR__ . "/../docs/docs-{$lang}.html"; + + if (file_exists($docFile)) { + $response->getBody()->write(file_get_contents($docFile)); + return $response->withHeader('Content-Type', 'text/html; charset=utf-8'); + } else { + // Fallback to English + $fallbackFile = __DIR__ . '/../docs/index.html'; + if (file_exists($fallbackFile)) { + $response->getBody()->write(file_get_contents($fallbackFile)); + return $response->withHeader('Content-Type', 'text/html; charset=utf-8'); + } else { + return $response->withStatus(404)->write('Documentation not found'); + } + } + }); + + // Static assets for documentation + $app->get('/docs/assets/{type}/{file}', function ($request, $response, array $args) { + $type = $args['type']; + $file = $args['file']; + + // Security: prevent directory traversal + if (strpos($file, '..') !== false || strpos($type, '..') !== false) { + return $response->withStatus(403)->write('Access denied'); + } + + $assetFile = __DIR__ . "/../docs/assets/{$type}/{$file}"; + + if (file_exists($assetFile)) { + $mimeTypes = [ + 'css' => 'text/css', + 'js' => 'application/javascript', + 'png' => 'image/png', + 'jpg' => 'image/jpeg', + 'svg' => 'image/svg+xml' + ]; + + $extension = pathinfo($file, PATHINFO_EXTENSION); + $mimeType = $mimeTypes[$extension] ?? 'text/plain'; + + $response->getBody()->write(file_get_contents($assetFile)); + return $response->withHeader('Content-Type', $mimeType); + } else { + return $response->withStatus(404)->write('Asset not found'); + } + }); +}; diff --git a/create-package.sh b/create-package.sh new file mode 100644 index 0000000..236a5f5 --- /dev/null +++ b/create-package.sh @@ -0,0 +1,74 @@ +#!/bin/bash + +# Password Generator Package Creator +# Creates a distributable archive of the complete i18n-enabled password generator + +echo "📦 Creating Password Generator Distribution Package" +echo "=================================================" + +# Get version from environment or use default +VERSION=${1:-"2.0.0-i18n"} +PACKAGE_NAME="password-generator-${VERSION}" + +# Create temporary directory structure +echo "📁 Preparing package structure..." +rm -rf dist/ +mkdir -p dist/${PACKAGE_NAME} + +# Copy all necessary files +cp -r config/ dist/${PACKAGE_NAME}/ +cp -r src/ dist/${PACKAGE_NAME}/ +cp -r templates/ dist/${PACKAGE_NAME}/ +cp -r assets/ dist/${PACKAGE_NAME}/ +cp -r locales/ dist/${PACKAGE_NAME}/ +cp -r public/ dist/${PACKAGE_NAME}/ + +# Copy configuration and documentation +cp composer.json dist/${PACKAGE_NAME}/ +cp .env dist/${PACKAGE_NAME}/.env.example +cp README.md dist/${PACKAGE_NAME}/ +cp DEPLOYMENT.md dist/${PACKAGE_NAME}/ +cp install.sh dist/${PACKAGE_NAME}/ + +# Create logs directory with placeholder +mkdir -p dist/${PACKAGE_NAME}/logs +cp logs/README.md dist/${PACKAGE_NAME}/logs/ + +# Create archive +cd dist/ +echo "🗜️ Creating ZIP archive..." +zip -r ${PACKAGE_NAME}.zip ${PACKAGE_NAME}/ -x "*.DS_Store" "*.git*" "vendor/*" "node_modules/*" + +# Create tar.gz archive +echo "🗜️ Creating TAR.GZ archive..." +tar -czf ${PACKAGE_NAME}.tar.gz ${PACKAGE_NAME}/ + +# Calculate checksums +echo "🔐 Calculating checksums..." +sha256sum ${PACKAGE_NAME}.zip > ${PACKAGE_NAME}.zip.sha256 +sha256sum ${PACKAGE_NAME}.tar.gz > ${PACKAGE_NAME}.tar.gz.sha256 + +cd .. + +# Display results +echo "" +echo "✅ Package creation completed!" +echo "" +echo "📁 Generated files:" +ls -la dist/ +echo "" +echo "📊 Package statistics:" +echo "Files: $(find dist/${PACKAGE_NAME}/ -type f | wc -l)" +echo "Directories: $(find dist/${PACKAGE_NAME}/ -type d | wc -l)" +echo "ZIP size: $(du -h dist/${PACKAGE_NAME}.zip | cut -f1)" +echo "TAR.GZ size: $(du -h dist/${PACKAGE_NAME}.tar.gz | cut -f1)" +echo "" +echo "🚀 Ready for distribution!" +echo "Share the files in dist/ directory" +echo "" +echo "📋 Installation instructions for end users:" +echo "1. Extract the archive" +echo "2. cd ${PACKAGE_NAME}/" +echo "3. chmod +x install.sh && ./install.sh" +echo "4. composer start" +echo "5. Visit: http://localhost:8080" diff --git a/data/wordlists/deutsch_uncommon.txt b/data/wordlists/deutsch_uncommon.txt new file mode 100644 index 0000000..63ce886 --- /dev/null +++ b/data/wordlists/deutsch_uncommon.txt @@ -0,0 +1,1546 @@ + +Aal schlangenförmiger Fisch im Wasser +Aalglatt glatt wie schleimige Fischhaut +Aalquappe grundnaher Fisch mit Bartfaden +Aalreuse geflochtene Falle für Aale +Aasblume Blüte riecht nach verwesendem Fleisch +Aasfresser Tier frisst tote Tiere +Aasgeier Geier kreist über Kadavern +Aaskrähe schwarzer Vogel sucht tote Tiere +Abakus Rechenrahmen mit verschiebbaren Kugeln +Abbauhammer Werkzeug bricht Stein und Beton +abbiegen die Richtung an Ecke wechseln +abbilden etwas als Bild wiedergeben +abblättern dünne Schichten lösen sich +abblenden grelles Licht deutlich abschwächen +abbrechen etwas vorzeitig plötzlich beenden +abbremsen Bewegung gezielt langsamer machen +abdampfen Dampf steigt aus Flüssigkeit +Abdeckplane grosse Plane schützt vor Wetter +abdichten Spalten gegen Eindringen verschliessen +abdriften langsam vom Kurs wegtreiben +abdunkeln einen Raum weniger hell machen +Abendbrot einfache Mahlzeit am Abend +Abenddämmerung Tageslicht weicht der Dunkelheit +Abendglocke Glocke läutet bei Tagesende +Abendhimmel Himmel kurz vor der Nacht +Abendkleid feines Kleid für festliche Abende +Abendland Europa im kulturellen Sinn +Abendluft kühle Luft nach Sonnenuntergang +Abendmahl gemeinsame Mahlzeit am Abend +Abendrot rötlicher Himmel bei Sonnenuntergang +Abendsonne tief stehende Sonne vor Untergang +Abendstern hell sichtbarer Planet abends +Abenteuer ungewöhnliches Erlebnis mit Spannung +abenteuerlich riskant spannend und unerwartet +Abenteuerlust starker Drang nach Neuem +Abenteurer Person sucht riskante Erlebnisse +Abfahrt Fahrzeug beginnt seine Reise +Abfall weggeworfene unbrauchbare Materialien +Abfalleimer Behälter schluckt weggeworfene Dinge +Abfangjäger schnelles Flugzeug gegen Eindringlinge +Abfindung einmalige Zahlung beim Ausscheiden +Abflughalle Reisende warten vor dem Abflug +Abfluss Öffnung leitet Wasser weg +Abfolge Dinge geschehen nacheinander +Abgrund tiefe steile Geländeöffnung +abhaken erledigten Punkt sichtbar markieren +Abhang schräge Seite eines Berges +abhärten widerstandsfähiger gegen Belastung machen +abheben sich vom Boden lösen +Abhilfe Massnahme beseitigt ein Problem +abhören Gespräch heimlich technisch mithören +Abhörgerät Gerät zeichnet fremde Gespräche auf +Abklingbecken Wasserbecken kühlt radioaktives Material +abkühlen wärmeres wird allmählich kälter +Abkürzung verkürzte Form eines Ausdrucks +abladen Fracht vom Fahrzeug nehmen +Ablage Ort für geordnete Unterlagen +ablaufen sich gehend vom Ort entfernen +Ableger neue Pflanze aus Mutterpflanze +ablehnen einer Bitte nicht zustimmen +ablenken Aufmerksamkeit auf anderes richten +Ablenkungsmanöver Trick zieht Aufmerksamkeit weg +ablesen Wert von Anzeige erkennen +Abluft verbrauchte Luft strömt hinaus +abmagern deutlich an Gewicht verlieren +abmelden Teilnahme oder Zugang beenden +Abnahme Menge oder Stärke wird kleiner +Abnutzung Gebrauch hinterlässt sichtbare Spuren +abprallen nach einem Aufprall zurückspringen +Abreise Aufbruch von einem Aufenthaltsort +Abreisskalender jeder Tag wird abgetrennt +Abrissbirne schwere Kugel zerstört Mauern +abrunden scharfe Kanten runder machen +Absage angekündigte Teilnahme wird zurückgezogen +Absatz erhöhter Teil unter Schuh +absaugen Luft oder Flüssigkeit herausziehen +Abschaum unerwünschte Schicht auf Flüssigkeit +abscheulich stark abstossend und widerwärtig +Abschied letzte Begegnung vor Trennung +abschirmen gegen äussere Einwirkung schützen +Abschlag kräftiger Schlag zum Spielbeginn +abschleppen defektes Fahrzeug wegziehen +abschliessen mit Schlüssel sicher verschliessen +Abschlussball feierlicher Tanz nach Schulende +abschmecken Geschmack prüfen und nachwürzen +abschöpfen obere Schicht vorsichtig entfernen +Abschrift genaue Kopie eines Textes +Abschussrampe Plattform startet eine Rakete +abschweifen vom eigentlichen Thema weggehen +Abseits unerlaubte Position beim Fussball +Abspann Namen erscheinen nach einem Film +Absperrung Barriere verhindert den Durchgang +Absprung kräftiger Sprung vom Boden weg +abstammen von Vorfahren herkommen +Abstecher kurzer Umweg zu anderem Ziel +absteigen von oben nach unten gehen +Abstellgleis Nebengleis für wartende Züge +Abstellkammer kleiner Raum für selten Gebrauchtes +abstimmen gemeinsam durch Stimmen entscheiden +abstossend starken Widerwillen hervorrufend +Absturz unkontrollierter Fall aus Höhe +Abtei Kloster unter Leitung eines Abtes +Abteil abgetrennter Raum im Zug +abtrocknen Feuchtigkeit mit Tuch entfernen +abwärts in Richtung nach unten +Abwasch schmutziges Geschirr zum Reinigen +Abwasserrohr Rohr leitet schmutziges Wasser ab +Abwehrwall starke Barriere gegen Angriffe +Abzeichen kleines Zeichen für Zugehörigkeit +Abziehbild dünnes Bild wird übertragen +Abziehstein Stein schärft stumpfe Klingen +Abzweigung Weg teilt sich in Richtungen +Achat gebänderter farbiger Schmuckstein +Achse Stab verbindet drehende Räder +Achselhöhle Vertiefung unter dem Schultergelenk +Achselzucken Schultern zeigen ratlose Gleichgültigkeit +Achtbarkeit Ansehen durch würdiges Verhalten +Achterbahn Wagen rasen über Schienenkurven +achtlos ohne Aufmerksamkeit oder Sorgfalt +achtsam aufmerksam im gegenwärtigen Moment +Acker bearbeitetes Feld für Nutzpflanzen +Ackerbau Anbau von Pflanzen auf Feldern +Ackerbohne kräftige Bohnenpflanze vom Feld +Ackerfurche lange Rille im gepflügten Feld +Ackergaul kräftiges Pferd für Feldarbeit +Ackerkrume lockere fruchtbare obere Erdschicht +Ackerscholle fester Erdklumpen vom Pflügen +Ackerwagen robuster Wagen für Feldarbeit +Ackerwinde rankende Pflanze mit Trichterblüten +Acrylglas durchsichtiger leichter Kunststoff +Ader Röhre transportiert Blut +Aderlass Blut wird gezielt entnommen +Adler grosser Greifvogel mit Schwingen +Adlerauge aussergewöhnlich scharfer Blick +Adlerblick scharfer Blick aus grosser Höhe +Adlerfarn grosser Farn mit breiten Wedeln +Adlerfeder grosse Feder eines Greifvogels +Adlerhorst grosses Nest hoch im Fels +Adlerklaue kräftiger Fuss mit scharfen Krallen +Admiral hoher Befehlshaber einer Flotte +Adonisröschen gelbe Blume im Frühling +Adresse Angabe für einen bestimmten Ort +Advent Vorbereitungszeit vor Weihnachten +Adventskalender Türchen zählen Tage bis Weihnachten +Adventskerze Kerze leuchtet in Adventszeit +Adventskranz vier Kerzen zählen Sonntage +Aerodynamik Lehre strömender Luftkräfte +Affe kletterndes Tier mit Greifhänden +Affenkralle gebogene Hand eines Affen +Affenschaukel lange Haarsträhne neben dem Ohr +Affenzahn sehr hohe Geschwindigkeit +Affront öffentlich verletzende Beleidigung +Agave stachelige Blattrosette trockener Gebiete +Ahle spitzes Werkzeug durchsticht Leder +ähnlich in wichtigen Merkmalen übereinstimmend +Ahnung vages Gefühl ohne Gewissheit +ahnungslos ohne Kenntnis einer Gefahr +Ahorn Baum mit handförmigen Blättern +Ahornblatt handförmiges Blatt mit Spitzen +Ahornsirup süsser Saft aus Ahornbäumen +Ähre Getreidekörner sitzen am Halm +Akazie Baum mit gefiederten Blättern +Akkordeon Faltenbalg erzeugt kräftige Musik +Akkumulator Speicher sammelt elektrische Energie +Akkuschrauber kabelloses Werkzeug dreht Schrauben +Akrobat Artist zeigt schwierige Körperkunst +akrobatisch beweglich wie ein Zirkusartist +Aktenordner fester Ordner sammelt gelochte Blätter +Aktentasche flache Tasche für Unterlagen +Aktie Anteil an einem Unternehmen +Aktionär Person besitzt Unternehmensanteile +aktiv aus eigener Kraft handelnd +Aktivkohle poröser Kohlenstoff filtert Schadstoffe +Akustik Wirkung von Schall im Raum +akut plötzlich dringend und heftig +Akzent besondere Aussprache einer Sprache +Alabaster heller weicher Stein für Figuren +Alarmanlage System meldet unerlaubtes Eindringen +Alarmglocke lautes Läuten warnt vor Gefahr +Alarmknopf Knopf ruft sofortige Hilfe +Alarmlicht blinkendes Licht warnt sichtbar +Alarmruf lauter Ruf warnt vor Gefahr +Albatros grosser Seevogel mit langen Flügeln +Albatrosflügel langer Flügel gleitet über Meer +Album Sammlung von Bildern oder Musik +Alge einfache Wasserpflanze ohne Wurzeln +Algenblüte Wasser färbt sich durch Algen +Algenwald dichte Wasserpflanzen wie Unterwasserwald +Alibi Nachweis für anderen Aufenthaltsort +alkoholfrei ohne berauschenden Alkohol hergestellt +Allee Weg zwischen zwei Baumreihen +Allergie Abwehr reagiert übermässig auf Stoff +Alligator grosses Krokodiltier mit breiter Schnauze +Allradantrieb alle Räder treiben gemeinsam an +Alm hochgelegene Weide in Bergen +Almhorn langes Holzhorn klingt durch Berge +Almhütte kleine Hütte auf Bergweide +Alpengipfel spitzer Berggipfel über Schnee +Alpenglühen Berggipfel leuchten rötlich +Alpenhütte einfache Unterkunft hoch im Gebirge +Alpenkrähe schwarzer Bergvogel mit gelbem Schnabel +Alpenpass Bergstrasse führt über Gebirgskamm +Alpenrose rosa Blume im Gebirge +Alpenveilchen kleine Blume mit zurückgebogenen Blüten +Alpenwiese blumenreiche Wiese im Hochgebirge +Alptraum beängstigender Traum in der Nacht +Altar erhöhter Tisch für Gottesdienst +altbacken überholt und wenig zeitgemäss +Altertum sehr frühe geschichtliche Epoche +Altgold altes Gold zum Wiedereinschmelzen +Amaryllis grosse trichterförmige Zimmerblume +Amboss schwerer Stahlblock unter dem Hammer +Ameise kleines Insekt lebt im Staat +Ameisenbär Tier frisst Ameisen mit Langzunge +Ameisenhaufen gewölbtes Nest aus Nadeln +Ameisenigel Stacheltier frisst Ameisen mit Langzunge +Ameisenlöwe Larve fängt Ameisen im Sandtrichter +Ameisenstrasse Ameisen laufen in dichter Spur +Amethyst violetter glänzender Schmuckstein +Amme Frau stillt fremdes Kind +Ammonit spiralförmiges Fossil eines Meerestiers +Ampel Lichtzeichen regelt den Verkehr +Ampelkreuzung Lichtsignale ordnen kreuzende Wege +Ampelmännchen leuchtende Figur regelt Fussverkehr +Amphibie Tier lebt an Land und Wasser +Amphore bauchiges Gefäss der Antike +Amsel schwarzer Singvogel mit gelbem Schnabel +Amulett kleiner Anhänger soll schützen +anbauen Pflanzen gezielt wachsen lassen +anbieten etwas zur Auswahl bereitstellen +anbinden mit Seil sicher befestigen +anbrechen etwas öffnen oder beginnen +andächtig still und ehrfürchtig gesammelt +Andenken Gegenstand erinnert an Vergangenes +andocken Fahrzeug verbindet sich mit Station +anecken durch Verhalten Widerstand auslösen +Anemone farbenreiche Blume mit zarten Blättern +Anerkennung Wertschätzung für eine Leistung +anfechten eine Entscheidung rechtlich bestreiten +anfeuern laut zu grösserer Leistung treiben +Anflug Flugzeug nähert sich Landebahn +Anführer Person führt eine Gruppe +Angelboot kleines Boot zum Fischen +Angelhaken gebogener Haken fängt Fische +Angelrute langer Stab trägt Schnur und Haken +Angler Person fängt Fische mit Rute +Anglerhut breiter Hut schützt beim Angeln +angreifen gezielt gegen etwas vorgehen +Angsthase ängstliche Person wie fliehender Hase +ängstlich leicht von Furcht erfüllt +Anhängerkupplung Metallhaken verbindet Fahrzeug und Anhänger +Anhöhe kleine Erhebung im Gelände +Anker schweres Metall hält ein Schiff +Ankerboje schwimmende Markierung über einem Anker +Ankerhaken Metallhaken hält an festem Grund +Ankerkette schwere Kette hält Schiff fest +Ankerlicht Licht zeigt ruhendes Schiff +Ankerplatz geschützte Stelle für Schiffe +Ankertau starkes Seil hält den Anker +Ankerwinde Maschine hebt schweren Anker +anklopfen mit Schlägen Eintritt erbitten +Ankunft Eintreffen an einem Ziel +Anlegestelle Ort zum Festmachen von Schiffen +Anmut schöne Leichtigkeit in Haltung +anmutig schön und leicht bewegt +Anorak warme Jacke gegen Wetter +Anorakkapuze Stoffhaube schützt Kopf vor Wetter +anpeilen ein Ziel genau anvisieren +Anprobe Kleidung erstmals passend testen +anrühren Zutaten durch Rühren vermischen +anschaulich leicht durch Bilder verständlich +anschwellen allmählich grösser oder voller werden +anspornen zu stärkerer Leistung motivieren +Anspruch berechtigte Forderung auf etwas +anstacheln jemanden heftig zum Handeln treiben +Anstalt Einrichtung mit bestimmter Aufgabe +anstarren lange unbeweglich auf etwas schauen +Anstecknadel kleine Nadel mit Schmuckmotiv +ansteuern gezielt auf ein Ziel zufahren +Ansturm viele drängen gleichzeitig vorwärts +Antarktis eisbedeckter Kontinent am Südpol +Antennenmast hoher Mast trägt Funkantennen +Antilope schlankes Huftier mit Hörnern +Antlitz feierliches Wort für Gesicht +Antrieb Kraft setzt etwas in Bewegung +Antwort Reaktion auf eine Frage +Anwalt Rechtsbeistand vertritt eine Person +Anwesen grosses Haus mit Grundstück +Apfelbaum Baum trägt knackige Äpfel +Apfelblüte weisse Blüte vor der Frucht +Apfelbutzen Rest eines gegessenen Apfels +Apfelgelee klarer süsser Aufstrich aus Äpfeln +Apfelkern brauner Samen im Apfel +Apfelkorb geflochtener Korb voller Äpfel +Apfelkuchen gebackener Kuchen mit Apfelstücken +Apfelmost gepresster Saft aus Äpfeln +Apfelmus weich gekochte zerdrückte Äpfel +Apfelpflücker Stielwerkzeug holt hohe Äpfel +Apfelschale dünne Haut um einen Apfel +Apfelschimmel Pferd mit geflecktem Fell +Apfelsine runde orangefarbene Zitrusfrucht +Apfelstrudel gerollter Teig mit Apfelfüllung +Apfeltasche Teiggebäck um warme Apfelfüllung +Apotheke Geschäft gibt Arzneimittel aus +Apparat technisches Gerät mit Bauteilen +Appetit spürbare Lust auf Essen +Aprikose orange samtige Steinfrucht +Aprilwetter Sonne und Regen wechseln schnell +Aquädukt Steinbrücke leitet Wasser über Täler +Aquamarin blaugrüner Edelstein wie Meerwasser +Aquarium Glasbecken zeigt Leben unter Wasser +Arbeitshandschuh robuster Handschuh schützt bei Arbeit +Arbeitsschuh robuster Schuh schützt bei Arbeit +Arbeitstier ausdauerndes Tier oder Mensch +Arbeitstisch stabiler Tisch für handwerkliche Aufgaben +Archipel Gruppe vieler naher Inseln +Architekt Person entwirft Gebäude +Archiv geordnete Sammlung alter Unterlagen +Arena grosser Platz für Wettkämpfe +arglos ohne Misstrauen oder böse Ahnung +Argwohn anhaltendes misstrauisches Gefühl +Arie Sologesang in einer Oper +Armbanduhr kleine Uhr sitzt am Handgelenk +Armbrust Bogenwaffe schiesst kurzen Pfeil +Armleuchter Leuchter trägt mehrere Kerzenarme +Armreif starrer Schmuckring um den Arm +Armschiene feste Schiene schützt verletzten Arm +Arnika gelbe Heilpflanze auf Bergwiesen +Arnikaöl Pflanzenöl wird auf Haut gerieben +Aromalampe Wärme verteilt duftendes Öl +Arsenal grosser Vorrat an Waffen +Artischocke distelige Pflanze mit essbarer Knospe +Artistenkuppel Zirkuszelt über fliegenden Artisten +Asche graues Pulver nach Verbrennung +Aschenbecher Gefäss sammelt kalte Asche +Aschenputtel Märchenfigur verliert gläsernen Schuh +Aschewolke graue Wolke aus Vulkanasche +Asphalt dunkler Belag auf Strassen +Asphaltwalze schwere Walze verdichtet Strassenbelag +Ast holziger Zweig eines Baumes +Astgabel Stelle wo Ast sich teilt +Asthaufen gestapelte Zweige bilden Tierversteck +Astloch runde Spur eines Astes im Holz +Astronaut Mensch reist durch den Weltraum +Astronomie Wissenschaft von Sternen und Weltraum +Astschere starke Schere trennt dicke Zweige +Astwerk viele Äste bilden ein Geflecht +Atem Luft strömt ein und aus +Atemluft Luft füllt beim Atmen Lungen +Atemmaske Maske unterstützt sicheres Atmen +Atemschutzmaske Maske filtert schädliche Luft +Atemwolke warmer Atem wird draussen sichtbar +Atemzug einmal Luft holen und ausatmen +Atlas Buch mit vielen Landkarten +Atlasgebirge lange Bergkette in Nordafrika +Atoll ringförmige Insel um Lagune +Atombunker Schutzraum gegen radioaktive Strahlung +Atomkern winziges Zentrum eines Atoms +Atommüll radioaktiver Abfall braucht sichere Lagerung +Atompilz pilzförmige Wolke nach Explosion +attraktiv anziehend und angenehm wirkend +Aubergine dunkelviolettes längliches Gemüse +Audienz feierlicher Empfang bei Herrscher +Aue feuchte Wiese neben Fluss +Auenlandschaft Flusswiesen werden regelmässig überschwemmt +Auenwald feuchter Wald neben einem Fluss +Auerhahn grosser Waldvogel mit Fächerschwanz +Auerhuhn grosser scheuer Vogel im Bergwald +aufatmen nach Sorge erleichtert Luft holen +aufbauen Teile zu Ganzem zusammensetzen +Aufbewahrungskiste Kiste schützt ordentlich verstaute Dinge +aufblühen Blüte oder Person entfaltet sich +aufbrausend plötzlich heftig und zornig +aufbrechen verschlossenes öffnen oder losziehen +Aufbruchstimmung Menschen spüren einen neuen Anfang +aufdrehen Regler erhöhen oder Verschluss öffnen +auffällig sofort die Aufmerksamkeit anziehend +auffangen fallenden Gegenstand sicher halten +aufflackern Flamme leuchtet plötzlich wieder +auffrischen etwas wieder lebendig machen +aufgeregt innerlich unruhig und gespannt +aufgeweckt lebhaft aufmerksam und schnell begreifend +aufglühen plötzlich rot und heiss leuchten +Aufguss heisses Wasser löst Duftstoffe +aufheitern traurige Stimmung fröhlicher machen +aufklappen beweglichen Teil weit öffnen +aufkratzen Oberfläche mit Krallen verletzen +aufladen Energie oder Ladung hinzufügen +auflauern versteckt auf jemanden warten +aufleuchten kurz und deutlich hell werden +auflockern etwas weniger fest machen +aufmerksam mit wachem Interesse beobachtend +aufmüpfig widersetzlich gegen Autorität +aufpäppeln schwaches Lebewesen kräftiger pflegen +aufpolieren Oberfläche glänzend reiben +Aufprall heftiger Zusammenstoss mit einer Fläche +aufraffen sich trotz Widerstand entschliessen +aufräumen Dinge geordnet an Plätze legen +aufrichtig ehrlich ohne Täuschung handelnd +aufsatteln einem Tier einen Sattel auflegen +aufschäumen Flüssigkeit bildet viele Blasen +aufscheuchen ruhende Tiere plötzlich vertreiben +aufschlagen Buch öffnen oder kräftig treffen +aufschliessen Schloss öffnen oder Gruppe erreichen +aufschnappen etwas plötzlich hören oder fangen +aufschrecken plötzlich aus Ruhe hochfahren +aufschwingen sich kraftvoll nach oben bewegen +aufspüren Verborgenes durch Suche finden +aufsteigen sich von unten hinaufbewegen +aufstellen etwas senkrecht positionieren +Aufstieg Weg führt deutlich nach oben +auftauen Gefrorenes wird wieder weich +auftürmen Dinge zu hohem Haufen stapeln +aufwärmen etwas wieder wärmer machen +aufwecken jemanden aus Schlaf holen +Aufwind steigende Luft trägt Dinge höher +aufwirbeln Staub kreisend hochheben +Augapfel kugelförmiger sichtbarer Teil des Auges +Augenbinde Stoff verdeckt beide Augen +Augenblick sehr kurzer Moment +Augenbraue Haarbogen über dem Auge +Augenklappe Abdeckung vor einem Auge +Augenlid bewegliche Haut schützt das Auge +Augenmass Entfernung ohne Werkzeug richtig schätzen +Augenring dunkler Schatten unter dem Auge +Augentrost kleine Wiesenblume für Augenheilkunde +Augenweide besonders schöner Anblick +Augenzeuge Person sah ein Ereignis +Augenzwinkern kurzes Schliessen eines Auges +Ausbeute gewonnene Menge nach Arbeit +ausbleichen Farbe wird durch Licht blasser +Ausblick weite Sicht von erhöhtem Ort +ausbreiten etwas über grössere Fläche verteilen +ausbüxen heimlich aus Begrenzung entkommen +Ausdauer Kraft hält lange Belastung aus +ausdauernd lange ohne Ermüdung durchhaltend +Ausflucht Ausrede um etwas zu vermeiden +Ausflug kurze Reise zur Erholung +ausfragen viele gezielte Fragen stellen +Ausgang Öffnung führt aus Raum hinaus +ausgeglichen innerlich ruhig und stabil +ausgelassen fröhlich ohne Zurückhaltung +ausgraben Verborgenes aus Erde holen +Ausgrabung Erde gibt alte Funde frei +aushändigen etwas direkt in Hände geben +ausharren trotz Schwierigkeit am Ort bleiben +aushöhlen Inneres entfernen und Hohlraum schaffen +auskehren Schmutz mit Besen hinausfegen +ausklügeln einen Plan sorgfältig entwickeln +auskosten einen schönen Moment voll geniessen +auslachen jemanden spöttisch lachend verspotten +ausleuchten einen Bereich vollständig erhellen +ausloten Tiefe oder Möglichkeiten genau prüfen +ausmalen Flächen färben oder lebhaft vorstellen +Ausnahme Fall ausserhalb der normalen Regel +auspacken Gegenstand aus Verpackung nehmen +ausplaudern ein Geheimnis unbedacht erzählen +auspressen Flüssigkeit kräftig herausdrücken +ausprobieren etwas praktisch auf Wirkung testen +ausradieren Geschriebenes mit Radierer entfernen +ausreissen mit Wurzel entfernen oder fliehen +ausrichten etwas genau in Richtung stellen +ausrutschen auf glatter Fläche Halt verlieren +ausschmücken mit dekorativen Einzelheiten verschönern +ausschöpfen Möglichkeiten vollständig nutzen +ausschwärmen viele bewegen sich auseinander +ausschweifend übermässig ausführlich oder masslos +aussergewöhnlich deutlich ausserhalb des Gewöhnlichen +aussichtslos ohne erkennbare Erfolgschance +Aussichtsplattform erhöhte Fläche bietet weiten Blick +Aussichtsturm hoher Turm eröffnet weiten Rundblick +aussortieren Ungeeignetes aus Menge entfernen +ausspähen heimlich Informationen beobachten +ausspülen mit Wasser gründlich reinigen +ausstechen Form mit scharfer Kante schneiden +aussteigen ein Fahrzeug nach Halt verlassen +ausstrecken Körperteil vollständig verlängern +austarieren Gewicht genau ins Gleichgewicht bringen +austauschen Gegenstände gegenseitig ersetzen +Auster Muschel mit rauer Schale +Austerngabel kleine Gabel für Muschelfleisch +Austerngriff Hand öffnet eine harte Muschel +austoben überschüssige Energie kräftig ausleben +austricksen mit klugem Trick überwinden +austrocknen Feuchtigkeit vollständig verlieren +ausverkauft keine Ware mehr verfügbar +ausweichen seitlich einer Gefahr entgehen +auswendig aus Erinnerung ohne Vorlage +Autobahn breite Schnellstrasse ohne Kreuzungen +Autobrücke Brücke trägt Fahrzeuge über Hindernis +Autodach oberer Schutz eines Fahrzeugs +Autofähre Schiff transportiert Fahrzeuge übers Wasser +Autokino Film wird aus Autos betrachtet +Autokran Fahrzeug hebt schwere Lasten +Autopilot System steuert Fahrzeug selbständig +Autoradio Empfänger spielt Musik im Auto +Autoreifen Gummiring rollt auf der Strasse +Autorität anerkannter Einfluss durch Stellung +Autoschlüssel Schlüssel öffnet und startet Auto +Autowerkstatt Mechaniker reparieren Fahrzeuge in Halle +babbeln ungezwungen und lange reden +babyleicht sehr einfach zu bewältigen +Babyschritt kleiner erster Schritt zum Ziel +Bach kleines fliessendes Gewässer +Bachdelta verzweigte Wasserarme vor dem Meer +Bachforelle Fisch steht gegen die Strömung +Bachkiesel glatter Stein aus fliessendem Wasser +Bachlauf windender Wasserweg durch Wiesen +Bachmuschel Muschel lebt im klaren Bach +Bachspringer Fisch springt gegen Strömung +Bachstelze schlanker Vogel wippt mit Schwanz +Bachufer Grasrand entlang fliessenden Wassers +Backblech flache Metallplatte für Gebäck +Backenzahn grosser Zahn zum Zermahlen +Backenziegel geformter Stein für Rundmauern +Backfeuer Flamme schlägt unerwartet zurück +Backform Metallform für Kuchen im Ofen +Backhaus gemeinsames Dorfhaus zum Brotbacken +Backmischung trockene Zutaten für schnelles Gebäck +Backofen heisser Raum für Gebäck +Backpulver Lockermittel macht Teig luftig +Backstein gebrannter Ziegel für Mauern +Backstempel Werkzeug prägt Muster in Teig +Backstube duftender Arbeitsplatz des Bäckers +Backstube warmer Raum voller Brotduft +Badehose leichte Hose fürs Schwimmen +Badekappe enge Haube schützt Haare +Badelatschen leichte Schuhe für Schwimmbäder +baden im Wasser zur Erholung sein +Badesee stiller See zum Schwimmen +Badesteg Holzsteg führt ins Wasser +Badestrand sandiges Ufer zum Schwimmen +Badetonne mit Wasser gefülltes Holzfass +Badetuch grosses Tuch nach dem Schwimmen +Badewanne grosses Becken für warmes Wasser +bagatellisieren etwas kleiner erscheinen lassen +Bagger Maschine bewegt Erde und Steine +baggern Erde mit Schaufel bewegen +Bahnbogen gewölbte Brücke für Gleise +bahnbrechend etwas völlig Neues eröffnend +Bahndamm erhöhter Untergrund für Gleise +Bahngleis Stahlspur für Züge +Bahnhofshalle grosser überdachter Ankunftsraum +Bahnschwelle Holzbalken trägt die Schienen +Bahnsteig Plattform neben den Gleisen +Bahnwärter Hüter eines Bahnabschnitts +Bajonett Klinge am Ende eines Gewehrs +Bajonettpflanze stachelige Blätter wachsen aufrecht +Bakelit harter Kunststoff früher Geräte +baken Schiffe durch Zeichen leiten +balancieren auf schmalem Weg sicher bleiben +Balancieren Gleichgewicht trotz Unsicherheit halten +Balancierstange lange Stange hält Gleichgewicht +Baldachin Stoffdach über einem Bett +Balg faltbare Hülle voller Luft +balgen spielerisch miteinander raufen +Balgtreter Fuss bewegt einen Luftbalg +Balken langer tragender Holzbalken +Balkon erhöhter Platz am Haus +Ballast schwere Last zur Stabilisierung +Ballaststein schwerer Stein zur Stabilisierung +ballen etwas zu kompaktem Bündel formen +Ballfangnetz Netz stoppt fliegende Bälle +Ballon leichte Hülle steigt auf +balsamartig wohltuend und beruhigend +balsamisch wohltuend und heilend wirkend +balsamisch wohltuend wie heilender Balsam +Balsamtopf Gefäss für heilende Salbe +Balzflug Vogel wirbt mit Flugkunst +Balzgesang Vogel wirbt mit Melodien +Balzruf Vogel lockt mit lautem Rufen +Bambus hohes Gras mit Hohlstängeln +Bambusflöte Flöte aus hohlem Bambus +Bambushain dichte Gruppe hoher Bambusse +Bananenblatt grosses Blatt tropischer Pflanzen +Bananenkiste Transportkiste für Früchte +Bananenschale glatte gelbe Hülle einer Frucht +bandagieren Verletzung mit Verband schützen +bändigen wilde Bewegung unterdrücken +bändigen wilde Kraft unter Kontrolle bringen +Bandit Räuber lauert auf Beute +Bandmaß aufrollbares Werkzeug zum Messen +Bandspule aufgerolltes Band um Kern +Bandwurmschlange schlanke Schlange mit langem Körper +bangen in Sorge auf Ausgang warten +Banknote bedrucktes Papier mit Geldwert +bannen Aufmerksamkeit vollständig fesseln +Bannwald geschützter Wald ohne Nutzung +Bärenfell dichtes Fell eines Bären +bärenhaft kräftig und massig wirkend +Bärenhöhle dunkler Unterschlupf im Fels +bärenstark aussergewöhnlich kräftig +Bärenstark kräftig wie ein grosser Bär +Barfuß ohne Schuhe den Boden spüren +Barfußpfad Weg zum Gehen ohne Schuhe +Barfußweg Weg für nackte Füße +Barhocker hoher Stuhl an einem Tresen +bärig schweizerisch für besonders gut +barmherzig mitfühlend und hilfsbereit +Barometer Instrument misst Luftdruck +Barriere Hindernis versperrt den Weg +Bart Haare wachsen am Kinn +Basalt dunkles vulkanisches Gestein +Basarstand kleiner Verkaufsstand im Markt +basteln mit Fantasie etwas erschaffen +Basteln mit Material etwas erschaffen +Basthut leichter Hut aus Pflanzenfasern +Basthütte einfache Hütte aus Naturmaterial +Bastmatte geflochtene Matte aus Fasern +Batterie gespeicherte Energie für Geräte +bauen aus Teilen etwas erschaffen +Baugerüst Metallrahmen an Hausfassaden +Baugrube tiefer Aushub für Gebäude +Bauhelm harter Schutz für den Kopf +Baukran langer Ausleger hebt Lasten +bäumen sich kraftvoll aufrichten +Baumfalke schneller Greifvogel der Lüfte +Baumfalte Rissstruktur alter Baumrinde +Baumgrenze letzte Höhenstufe mit Bäumen +Baumharz klebriger Saft aus Baumrinde +Baumhaus kleines Haus zwischen Ästen +Baumhöhle natürlicher Hohlraum im Stamm +Baumkrone oberster Teil eines Baumes +Baumleiter Leiter lehnt am Stamm +Baummarder geschickter Kletterer im Wald +Baumnest Nest sicher zwischen Ästen +Baumnuss hartschalige Frucht eines Baumes +Baumpfad Weg zwischen hohen Bäumen +Baumpilz Pilz wächst direkt am Holz +Baumriese besonders grosser alter Baum +Baumrinde schützende Haut eines Stamms +Baumsaft flüssige Nahrung im Stamm +Baumschatten kühler Schatten unter Ästen +Baumschlange Schlange lebt in Baumkronen +Baumschule Gelände voller junger Bäume +Baumstamm tragender Kern eines Baumes +Baumwipfel höchster Punkt einer Baumkrone +Baumwurzel verankert den Baum im Boden +Bauwagen beweglicher Raum auf Rädern +Bayerwald dichter Wald voller Hügel +beachten etwas bewusst wahrnehmen +beachtenswert verdient besondere Aufmerksamkeit +beachtlich auffallend gross oder stark +beackern ein Feld mit Pflug bearbeiten +beanstanden auf einen Fehler hinweisen +beantworten eine Frage sinnvoll auflösen +beäugen etwas prüfend ansehen +beäugen misstrauisch oder neugierig ansehen +bebauen Freifläche mit Gebäuden versehen +beben Erde zittert spürbar unter Füssen +bebildern mit Bildern verständlicher machen +bebrüten Eier mit Körperwärme schützen +bebrüten Eier mit Wärme schützen +Becherlupe Lupe im Deckel eines Bechers +Bechermoos flechtenartige Pflanze mit Trichtern +bedächtig langsam und wohlüberlegt +bedächtig ruhig und überlegt handelnd +bedampfen mit heissem Dampf behandeln +bedeutungsvoll voller Symbolik und Wirkung +bedrohlich Gefahr deutlich erkennen lassend +beduften mit angenehmem Duft erfüllen +beeindruckend starken bleibenden Eindruck hinterlassend +beeinflussen Verhalten in neue Richtung lenken +beerdigen zur letzten Ruhe bringen +Beerenhecke Hecke voller essbarer Früchte +Beerenkorb Korb voller frisch gepflückter Früchte +beerenpflücken reife Früchte vom Strauch sammeln +Beerenstrauch Busch voller kleiner Früchte +Beerenwein vergorenes Getränk aus Beeren +befahren mit Fahrzeug einen Weg nutzen +befestigen etwas dauerhaft anbringen +befestigen etwas dauerhaft sicher anbringen +befestigen mit Schrauben oder Seilen sichern +befestigen sicher an einem Ort anbringen +befiedern mit Federn ausstatten +beflügeln neue Kraft und Ideen geben +beflügelt voller Energie und Tatendrang +befragen gezielt nach Informationen suchen +befragen gezielt nach Wissen suchen +befruchten neues Leben entstehen lassen +begehrt von vielen gewünscht +begeisternd Freude und Tatkraft weckend +begiessen Pflanzen mit Wasser versorgen +begleiten gemeinsam einen Weg gehen +Begleitstern Stern erscheint nahe anderem Stern +beglimmen schwach und stetig leuchten +beglücken große Freude bereiten +beglückend tiefe Freude auslösend +begnadet mit aussergewöhnlichem Talent +begradigen Krümmung in gerade Linie bringen +begreifen Zusammenhang klar verstehen +begrenzen einen Rahmen festlegen +begutachten genau prüfen und beurteilen +begutachten genau prüfen und bewerten +behaglich warm sicher und gemütlich +behände schnell und geschickt beweglich +beharken Erde mit Rechen auflockern +beharrlich trotz Widerstand weitermachen +beharrlich zielstrebig ohne nachzugeben +behausen einen Ort bewohnbar machen +beheizen Wärme in Räume leiten +behende leicht und schnell beweglich +beherbergen Gästen Schutz und Unterkunft geben +beherzt mutig und entschlossen handelnd +behorchen genau auf Geräusche achten +behüten etwas sorgfältig beschützen +Beifang unbeabsichtigt mitgefangene Tiere +Beil kurzes Werkzeug zum Holzspalten +beispiellos ohne vergleichbares Vorbild +bejubeln laut und begeistert feiern +bekannt weithin erkannt oder vertraut +bekanntlich allgemein als bekannt geltend +bekehren zur eigenen Überzeugung bewegen +bekleben mit Papier oder Folie bedecken +bekleiden mit Stoff oder Amt versehen +beklemmend inneren Druck erzeugend +beklopfen durch Klopfen etwas prüfen +bekräftigen eine Aussage deutlich unterstützen +bekränzen mit Blumen oder Laub schmücken +beladen Fracht auf ein Fahrzeug bringen +belagern einen Ort von allen Seiten umgeben +belastbar auch unter Druck stabil +belauschen heimlich einem Gespräch folgen +belauschen heimlich einem Gespräch zuhören +beleben mehr Bewegung und Aktivität schaffen +beleben neue Energie in etwas bringen +beleben wieder Energie und Bewegung geben +belebend frische Energie vermittelnd +belebt voller Aktivität und Bewegung +belebt voller Bewegung und Menschen +belehren Wissen gezielt vermitteln +belesen durch viele Bücher gebildet +beleuchten Licht auf etwas richten +belichten Licht auf Material einwirken lassen +belohnen Anerkennung für Leistung geben +belüften frische Luft hineinlassen +belüften frische Luft zirkulieren lassen +bemalen Fläche mit Farben gestalten +bemannen ein Fahrzeug mit Personal ausstatten +bemerken ein Detail bewusst wahrnehmen +bemerkenswert erstaunlich und erinnerungswürdig +bemerkenswert ungewöhnlich und erinnerungswürdig +bemustern Muster genau untersuchen +benagen an etwas wiederholt knabbern +benebeln mit Dunst oder Rauch füllen +benebeln Sicht oder Gedanken verschleiern +benennen einen Namen vergeben +benetzen mit feiner Feuchtigkeit bedecken +beniesen etwas versehentlich anniesen +benötigen für einen Zweck brauchen +beobachten etwas aufmerksam verfolgen +Beobachtungsturm hoher Turm für Fernsicht +beranken Pflanzen um etwas wachsen lassen +berauschend intensiv angenehm und mitreissend +berauschend stark faszinierend und intensiv +berechnen Werte durch Denken ermitteln +beredt gewandt und wirkungsvoll sprechend +beregnen künstlich Wasser auf Felder bringen +bereisen fremde Orte kennenlernen +bergabrollen sich hangabwärts bewegen +Bergahorn Laubbaum mit breiter Krone +bergaufziehen einen Hang nach oben fahren +Bergbach schneller Bach im Gebirge +Bergbachbrücke kleine Brücke über Wildwasser +Bergblume Blüte trotzt Wind und Höhe +Bergblüte Blume trotzt rauem Klima +Bergdohle schwarzer Vogel im Hochgebirge +Bergdorf Siedlung hoch in den Bergen +Bergfalke schneller Jäger der Lüfte +bergfest in fester Höhe verankert +Bergfichte Nadelbaum an steilen Hängen +bergig von Hügeln und Bergen geprägt +Bergkamm schmaler Grat zwischen Gipfeln +Bergkristall durchsichtiger Kristall aus Gestein +berglaufen schnell bergauf unterwegs sein +Berglawine grosse Schneemasse stürzt talwärts +Bergpfad schmaler Weg am Hang +Bergpfote große Tatze eines Wildtiers +Bergquelle klares Wasser tritt aus Felsen +Bergsee klarer See zwischen Gipfeln +Bergsteiger Person erklimmt hohe Gipfel +Bergsturm starker Wind in Höhenlagen +Bergwald dichter Wald am Gebirgshang +Bergwerk tiefer Stollen unter Erde +Bergwiese bunte Blumen zwischen Gipfeln +berieseln feine Tropfen herabfallen lassen +berieseln sanft mit Wasser überziehen +Bernstein goldener fossiler Baumharz +Bernsteinkette Schmuck aus goldenen Harzperlen +Bernsteinperle glänzende Kugel aus Bernstein +Bernsteinsplitter kleines Stück fossilen Harzes +Bernsteinwald urzeitlicher Wald voller Harz +bersten plötzlich in Stücke springen +bersten unter Spannung aufbrechen +beruhigen Unruhe wieder kleiner machen +beruhigend Anspannung deutlich verringernd +berühmt vielen Menschen bekannt +berühren Kontakt mit etwas haben +berühren Kontakt zu etwas herstellen +berührend starke Gefühle auslösend +beschatten Licht teilweise fernhalten +beschatten Sonne teilweise fernhalten +beschatten von Licht teilweise abschirmen +beschaulich ruhig friedlich und übersichtlich +beschaulich ruhig und harmonisch +bescheiden ohne überheblichen Anspruch +Beschlag Metallteil verstärkt Holz +beschlagen mit Metall verstärken +beschleunigen etwas schneller werden lassen +beschleunigen Tempo spürbar erhöhen +beschmieren Oberfläche mit Stoff bedecken +beschnuppern neugierig mit der Nase prüfen +beschriften Text gut sichtbar anbringen +beschützen vor Gefahr bewahren +beschweren mit zusätzlichem Gewicht versehen +beschwören mit Nachdruck herbeirufen +besegeln mit Segel über Wasser fahren +Besen Bündel kehrt Staub fort +Besenheide violette Blütenpflanze auf Heideflächen +Besenstiel langer Holzstab eines Besens +besiedeln einen Ort bewohnbar machen +besiegeln eine Entscheidung endgültig machen +besingen etwas in Liedern preisen +besingen etwas lobend in Liedern darstellen +besinnlich ruhig nachdenklich und friedlich +besonnen kühl denkend und überlegt +besonnen ruhig und vernünftig handelnd +besonnen überlegt und kontrolliert handelnd +bespritzen mit Tropfen benetzen +beständig über lange Zeit unverändert +bestäuben Pollen auf Blüten übertragen +bestäuben Pollen auf Blüten verteilen +bestaunen mit Bewunderung betrachten +bestreichen dünn auf Oberfläche verteilen +bestürmen heftig angreifen oder bedrängen +bestürzt von Ereignis tief betroffen +betanken Treibstoff in Behälter füllen +betasten mit den Händen prüfen +betäuben Empfindungen vorübergehend ausschalten +Betonbrücke stabile Brücke aus Beton +Betonmischer Trommel mischt Sand und Zement +Betonring runder Fertigteil aus Beton +beträchtlich deutlich mehr als gewöhnlich +Bettdecke warme Decke für die Nacht +Betttuch Stoff über einer Matratze +betupfen kleine Mengen vorsichtig auftragen +beugen sich nach vorn krümmen +Beutel weicher Behälter für Dinge +Beutezug Suche nach wertvoller Beute +bewahren für später erhalten +bewässern Pflanzen mit Wasser versorgen +beweglich leicht in Bewegung bringbar +beweglich leicht seine Form verändernd +bewölken den Himmel mit Wolken füllen +bezaubernd auf angenehme Weise faszinierend +Biber Nagetier baut Dämme im Wasser +Biberburg grosser Bau aus Ästen +Biberdamm Holzstämme stauen fliessendes Wasser +Biberpfad Pfad entlang eines Damms +Bienenflug reger Flug rund um Stock +Bienenflugloch Eingang eines Bienenstocks +Bienenkönigin grösstes Tier im Bienenstock +Bienenkorb geflochtene Unterkunft für Bienen +Bienenstock Holzhaus voller Honigbienen +Bienenwabe sechseckige Kammern voller Honig +Bienenweide Pflanzen liefern Nahrung für Bienen +Bilderbuch Buch voller farbiger Bilder +Bilderrahmen Rahmen hebt Bild hervor +Bilderwand Wand mit vielen Erinnerungen +bildhaft leicht vor dem Auge sichtbar +Bildhauerhammer Werkzeug formt Steinfiguren +bildkräftig starke innere Bilder erzeugend +bildreich voller klarer innerer Bilder +Bildrolle lange Bildfolge zum Ausrollen +bildschön auffallend schön anzusehen +bildschön ungewöhnlich schön anzusehen +Birkenblatt leichtes Blatt mit feinen Zacken +Birkenhain kleine Gruppe heller Birken +Birkenpilz Speisepilz bei Birkenbäumen +Birkenrinde weisse Haut eines Baumes +Birkenwald helle Bäume mit weisser Rinde +Birkenzweig dünner Ast einer Birke +Birkhuhn scheuer Waldvogel im Moor +bissfest fest genug zum Kauen +Bläserchor Gruppe spielt Blasinstrumente +Blasrohr langer Hohlstab für Pfeile +blassblau hell wie ein Sommerhimmel +Blattader feine Leitung im Pflanzenblatt +Blätterdach dichte Krone über Waldweg +Blätterhaufen gesammelte Herbstblätter am Boden +Blätterkranz Kreis aus gesammelten Blättern +Blättermeer viele Blätter bedecken den Boden +Blätterpfad Weg bedeckt mit Laub +Blattskelett feines Adernetz eines Blattes +Blattwerk viele Blätter bilden Dach +Bläuling kleiner Schmetterling mit Blauflügeln +Blechdose Metallbehälter mit Deckel +blenden grelles Licht erschwert das Sehen +blendend sehr hell oder hervorragend +Blitz heller Himmelsfunke im Gewitter +Blitzableiter Metallstab schützt vor Blitzschlag +Blitzlicht kurzer heller Lichtimpuls +blitzschnell extrem schnell reagierend +Blumenbeet geordnete Fläche voller Blüten +Blumenwiese Feld voller farbiger Blüten +Blütenblatt farbiger Teil einer Blume +blütenbunt voller farbiger Blüten +Blütenkelch äussere Hülle einer Blüte +Blütenkelch schützende Hülle einer Blüte +Blütenmeer unzählige Blüten auf Fläche +Blütennektar süsse Nahrung für Insekten +Blütenregen viele fallende Blütenblätter +blütenreich voll vieler farbiger Blüten +blütenreich voller farbiger Blüten +Blütenstaub feines Pulver auf Blüten +blütenweiß strahlend weiß wie Blüten +Bocciakugel schwere Kugel für Zielwurf +Bodenfrost dünne Eisschicht am Morgen +bodenlos ohne erkennbares Ende nach unten +Bodennebel flacher Nebel über Wiesen +Bodenplatte flache tragende Betonfläche +bodenständig natürlich und ohne Allüren +bodenständig realistisch und natürlich geblieben +Bogenlampe helle Lampe mit Lichtbogen +Bootshaken Stange zieht Boote heran +Bootshaus Unterstand für Boote am Ufer +Bootshaussteg Steg direkt am Bootshaus +Bootsleine Seil zum Festmachen eines Boots +Bootsruder langer Hebel bewegt Boot +Bootssteg Holzweg ins Wasser hinaus +Bootswandern Reise mit kleinem Wasserfahrzeug +Bordlampe Lichtquelle auf einem Schiff +Bordwand seitliche Wand eines Schiffs +Borke äussere Schutzschicht eines Baumes +Borkenkäfer kleiner Käfer unter Baumrinde +Borkenkorb Korb aus Baumrinde +Borstentier Tier mit steifen Haaren +Bote bringt Nachrichten von Ort zu Ort +Brachland ungenutzte Fläche voller Wildpflanzen +Brandgans Wasservogel mit auffälligem Gefieder +Brandmal dauerhafte Spur durch Hitze +Brandmalerei Bilder entstehen durch Hitze +Brandspur dunkle Spur nach Feuer +Brandung Wellen schlagen gegen Felsen +Braunkohle dunkler Brennstoff aus Erde +brausen laut und kraftvoll rauschen +brechen Hartes wird in Teile geteilt +bremsen Geschwindigkeit deutlich verringern +Brennerpass Gebirgspass durch die Alpen +Brennglas gebündeltes Licht erzeugt Hitze +Brennholz gespaltene Scheite für Feuer +Brennholzstapel aufgeschichtete Holzscheite +Brennhütte Hütte zum Trocknen von Holz +Brennnessel grüne Pflanze mit Brennhaaren +Brennofen grosse Hitze härtet Material +Brettspiel Figuren wandern über Spielfeld +Briefkasten Kasten sammelt zugestellte Post +Briefsiegel Wachszeichen auf Briefen +Brillenband Band hält Brille sicher +Brillenbügel seitlicher Halter einer Brille +Brillenetui Hülle schützt die Brille +Brillenglas durchsichtiges Glas vor Augen +Brise leichter Wind am Wasser +brocken in kleine Stücke zerfallen +brodeln kochend Blasen nach oben treiben +Brombeere dunkle süsse Waldfrucht +Bronze Metall glänzt rötlich braun +Brotkorb Korb mit frischem Brot +Brotkruste knusprige Aussenseite eines Brotes +Brotlaib frisch gebackenes grosses Brot +Brotmesser lange Klinge schneidet Brot +bruchfest widersteht leichtem Zerbrechen +bruchlos ohne Unterbruch verlaufend +Bruchstein unregelmässiger Stein für Mauern +Brückenbogen Gewölbe spannt sich über Wasser +Brückenpfeiler tragende Säule im Wasser +Brunnen Wasserquelle mitten im Ort +Brunnenrand Steinumfassung einer Wasserquelle +Brunnenrohr Rohr führt Wasser nach oben +Brunnenschacht tiefer Zugang zum Grundwasser +Brustpanzer fester Schutz vor Treffern +Buchdeckel feste Hülle eines Buches +Buchdeckelrand Kante schützt ein Buch +Buchenhecke dichte Hecke aus Buchen +Bücherschrank Möbel voller Bücherreihen +Bücherspur Reihe oft gelesener Bücher +Buchfink farbiger Singvogel im Wald +Buchsbaum immergrüner Strauch für Hecken +Büchse kleiner Metallbehälter mit Deckel +Buchseite bedrucktes Blatt voller Wissen +Büffel kräftiges Rind mit Hörnern +Bügelbrett Unterlage zum Glätten von Stoff +Bügelsäge Säge mit gespanntem Blatt +Bumerang kehrt nach Wurf zurück +bunt reich an verschiedenen Farben +Buntspecht Vogel klopft an Baumstämme +Burgfried hoher Hauptturm einer Burg +Burggraben Wassergraben um eine Burg +Burghof freier Platz innerhalb Burg +Burgmauer dicke Steinmauer einer Festung +Burgruine verfallene Reste einer Festung +Burgtor grosser Eingang einer Festung +Burgzinne oberer Zacken einer Mauer +Buschpfad schmaler Weg durch Gestrüpp +Buschrose widerstandsfähige Rose im Garten +Buschwerk dichtes Gewirr aus Sträuchern +Buschwindröschen zarte weisse Frühlingsblume +Büttenpapier handgeschöpftes Papier mit Struktur +Butterblume gelbe Blüte auf Wiesen +Butterfass Holzfass zur Butterherstellung +Butterfassdeckel runder Deckel eines Holzfasses +Butterfasslampe Lampe aus altem Holzfass +Cabrio offenes Auto für sonnige Tage +Cabriohut leichter Hut für sonnige Fahrten +Cabriolet Auto mit versenkbarem Dach +Cabrioverdeck faltbares Dach eines Cabrios +cachen Daten für später speichern +Caddy kleiner Wagen für Ausrüstung +Cafémühle kleine Mühle für Kaffeebohnen +Caféstuhl Stuhl vor einem Straßenkaffee +cafétauglich für entspanntes Verweilen geeignet +Caféteria Raum für Kaffee und Gespräche +Cajon Holzkiste als Trommel gespielt +Calcium helles Mineral für Knochen +Caldera großer Krater eines Vulkans +callen jemanden telefonisch kontaktieren +Calzone gefüllte Teigtasche aus dem Ofen +Camcorder tragbare Kamera für Filme +Camembert weicher Käse mit Rinde +Campbox Kiste mit Reiseausrüstung +campeln kurz im Freien verweilen +campen im Freien übernachten +campen im Zelt übernachten +campen Zeit im Zelt verbringen +Camper Reisender mit Wohnmobil +Camperbus mobiles Zuhause auf Rädern +Campfire Lagerfeuer unter freiem Himmel +campieren im Freien Unterkunft beziehen +campieren im Zelt oder Wagen wohnen +campieren im Zeltlager wohnen +campieren länger im Freien wohnen +campig bewusst verspielt und schrill +campig bewusst verspielt und überzeichnet +Campingbecher leichter Becher für Reisen +Campingbus Fahrzeug für mobile Reisen +Campingkocher kleiner Kocher für unterwegs +Campinglaterne tragbares Licht im Zeltlager +Campingplatz Gelände voller Zelte und Wagen +Campingstuhl klappbarer Stuhl für Reisen +Campingtisch klappbarer Tisch für Ausflüge +Campingzelt tragbares Zuhause aus Stoff +Camplicht kleine Lampe fürs Zelten +Campstuhl klappbarer Sitz für Reisen +Campuhr kleine Uhr fürs Camping +Campus Gelände mit Lerngebäuden +Canapé kleines belegtes Festtagsbrot +Canasta geselliges Kartenspiel mit Stichen +canceln einen Plan absagen +canceln einen Plan zurücknehmen +Candyglas Glas voller bunter Bonbons +Canyon tiefe Schlucht mit Steilwänden +Canyonpfad schmaler Weg durch Schlucht +Canyonweg Pfad durch tiefe Schluchten +Cape langer Umhang im Wind +Cappi leichte Mütze mit Schild +Cappihaube Kappe schützt vor Sonne +Cappuccino Kaffee mit Milchschaum +capturen einen Moment festhalten +Caravan rollendes Zuhause für Reisen +Carbon leichter Werkstoff aus Fasern +Cardbox Karton zur Aufbewahrung +Cardigan offene Strickjacke für kühle Tage +Cardiganjacke warme Strickjacke mit Knöpfen +Cargo transportierte Fracht auf Reisen +Cargohose Hose mit großen Taschen +Cargozug langer Zug voller Fracht +Carport offener Unterstand fürs Auto +carven mit Schwung Kurven ziehen +Cashbeutel kleiner Beutel für Geld +Cashbox Kasse für Münzen und Scheine +cashen einen Gewinn erhalten +cashen Geld oder Gewinn erhalten +Cashewbaum Baum mit geschwungenen Nüssen +Cashewnuss gebogene Nuss mit mildem Geschmack +Cassistopf Topf mit schwarzen Beeren +casten Darsteller für Rolle auswählen +Casting Auswahlrunde für neue Rollen +Castorhut Hut aus dichtem Filz +catchen etwas sicher auffangen +Ceder duftender Nadelbaum +Cedernharz duftender Saft alter Bäume +Cedernholz duftendes Holz alter Bäume +Cedernuss Samen einer Zeder +Cellist Musiker mit tiefem Streichklang +Cello tief klingendes Streichinstrument +Cellobogen Bogen bringt Saiten zum Klingen +Cellokasten schützende Hülle für Cello +Celloklang tiefer warmer Ton eines Cellos +Cellokoffer stabile Hülle für Instrument +Centaur Fabelwesen halb Mensch halb Pferd +Center geschäftiger Mittelpunkt vieler Wege +Centercourt Hauptspielfeld eines Turniers +Centstück kleine Münze mit Geldwert +Ceranfeld glatte Kochfläche aus Glas +Chaise bequemer Liegesessel +Chaiselongue lange Liege zum Ausruhen +Chaitee würziger Tee mit Gewürzen +Chalet Holzhaus in den Bergen +Chalkstein heller weicher Kalkstein +Chamäleon Echse wechselt ihre Farben +Chamäleonauge Auge blickt unabhängig umher +Chamotte hitzefestes Material für Öfen +Champagner perlendes Getränk mit Bläschen +Champignon heller Speisepilz aus Wäldern +championhaft außergewöhnlich leistungsstark +championhaft überlegen und leistungsstark +championreif auf höchstem Niveau +chancenreich mit guten Aussichten +changieren die Farbe je nach Licht ändern +changieren Farbe je nach Licht ändern +changieren im Licht Farbe wechseln +changieren je nach Licht anders wirken +Chaoshaufen unordentlicher Stapel vieler Dinge +chaotisch ungeordnet aber lebendig +chaotisch ungeordnet aber voller Leben +chaotisch ungeordnet und lebhaft +chaotisch ungeordnet und schwer überschaubar +chaotisch ungeordnet und überraschend +charakterfest seinen Werten treu bleibend +charakterisieren wesentliche Merkmale beschreiben +charakterstark mit klarer Persönlichkeit +charaktervoll mit starker eigener Ausprägung +charaktvoll mit eigenem unverwechselbarem Stil +chargieren eine Rolle bewusst darstellen +chargieren eine Rolle darstellen +charismatisch mit starker Ausstrahlung +charismatisch starke Ausstrahlung besitzend +charmant freundlich und anziehend +charmant freundlich und einnehmend +charmant freundlich und gewinnend +charmant freundlich und gewinnend wirkend +charmant sympathisch und gewinnend +Charmband Schmuckband mit Anhängern +Charme anziehende natürliche Ausstrahlung +Charmsband Armband mit kleinen Anhängern +Charmschloss kleiner Verschluss an Schmuck +charten Daten grafisch darstellen +chartern ein Fahrzeug mieten +chartern ein Fahrzeug zeitweise mieten +chartern Fahrzeug zeitweise mieten +chartern Verkehrsmittel zeitweise mieten +Chatfenster digitaler Raum für Nachrichten +chatfiltern unerwünschte Nachrichten aussortieren +Chatgruppe digitaler Raum für Austausch +Chatkanal digitaler Raum für Gespräche +Chatraum digitaler Treffpunkt für Gespräche +chatten digitale Nachrichten austauschen +chatten Nachrichten direkt austauschen +chatten Nachrichten in Echtzeit senden +Chauffeurmütze Mütze eines Fahrers +chauffieren ein Fahrzeug sicher lenken +chauffieren Fahrgäste sicher transportieren +cheaten unfairen Vorteil nutzen +checkbar leicht nachvollziehbar +checken etwas genau überprüfen +checken etwas prüfen oder verstehen +checken etwas sorgfältig überprüfen +checken gründlich kontrollieren +Checkheft Heft mit Wartungseinträgen +Checkliste Liste zum systematischen Prüfen +checklisten Punkte systematisch prüfen +checklisten systematisch kontrollieren +Checkpunkt Ort für Kontrolle und Prüfung +Cheddar würziger gelber Hartkäse +cheerful fröhlich und optimistisch +cheerful heiter und voller Zuversicht +cheerful heiter und zuversichtlich +Cheeseboard Platte mit Käseauswahl +Cheesecake Kuchen mit cremiger Füllung +Chemielampe Lampe erzeugt Licht durch Reaktion +chemisieren mit Chemikalien behandeln +Cherrytomate kleine süße Tomate +Chessboard Spielbrett mit schwarzen Feldern +Chessclub Gemeinschaft von Schachspielern +Chessfigur Spielfigur auf Schachbrett +Chiafeld Feld voller Chiasamen +Chiasamen kleine Samen speichern Wasser +chic elegant und stilvoll +chic modisch und elegant +chic stilvoll und elegant +Chicorée helles Blattgemüse mit Biss +Chiffon leichter durchsichtiger Stoff +Chiffre verborgene Botschaft in Zeichen +Chili scharfe rote Schote +Chilipflanze Pflanze trägt scharfe Früchte +chillen entspannt den Moment genießen +chillen entspannt Zeit verbringen +chillen ruhig und entspannt ausruhen +chillen ruhig und entspannt verweilen +chillig entspannt und gelassen +chillig entspannt und sorgenfrei +chillig tiefenentspannt und gelassen +Chinakanne feines Gefäß für Tee +Chinakohl hellgrünes Blattgemüse mit Rippen +Chinakorb geflochtener Korb für Waren +Chinarose Blume mit großen Blüten +Chip kleine Platte voller Elektronik +Chipdose Dose voller Knabbersnacks +Chipkarte Karte mit eingebautem Mikrochip +Chipkeks Keks mit Schokoladenstücken +chippen Ball kontrolliert anheben +chippen Ball kontrolliert kurz anheben +chippen Ball kurz anheben +chippen Ball leicht anheben +chlorfrei ohne Zusatz von Chlor +choachen Menschen beim Lernen begleiten +choppen Holz mit kräftigen Schlägen teilen +Chor gemeinsam singende Stimmen +Chorbank Sitzreihe für Chormitglieder +Chorbogen Bogen mit Notenzeilen +Chorbuch Sammlung von Liedern +choren gemeinsam im Chor singen +choreografieren Bewegungen geordnet abstimmen +choreografieren Bewegungen geordnet gestalten +choreografieren Bewegungen passend anordnen +choreografieren Bewegungen zu Ablauf ordnen +Chorheft Notensammlung für Sänger +chorisch für gemeinsames Singen bestimmt +chorisch für mehrere Stimmen gedacht +chorisch für mehrere Stimmen geeignet +chorisch zum gemeinsamen Singen geeignet +Chorklang viele Stimmen werden eins +Chorleiter Person führt einen Chor +Chorlied Lied für mehrere Stimmen +Chormantel Umhang für Sängergruppe +Chormappe Mappe mit Noten für Sänger +Chorprobe gemeinsames Einüben von Liedern +Chorraum Saal für gemeinsames Singen +chorreif für Choraufführung geeignet +Christbaumkugel glänzende Kugel am Tannenbaum +Christglas geschmücktes Glas für Advent +christlich von christlichen Werten geprägt +christlich von Glaubenswerten geprägt +Christrose Blume trotzt dem Winter +Christstern rote Pflanze zur Winterzeit +Chrom hell glänzendes Metall +Chromband glänzender Metallstreifen +chromglänzend spiegelnd wie Metall +chromglänzend spiegelnd wie poliertes Metall +chromhell glänzend wie poliertes Metall +chromhell metallisch glänzend und hell +chromklar glänzend und spiegelhell +Chromring glänzender Ring aus Metall +Chromrohr glänzendes Metallrohr +Chromstahl glänzendes rostbeständiges Metall +chronisieren dauerhaft bestehen bleiben +Chronometer besonders genaue Uhr +Cicero berühmter Redner der Antike +Ciderfass Holzfass für Apfelwein +Cidre sprudelndes Getränk aus Äpfeln +circeln in Kreisen bewegen +cirkeln sich kreisförmig bewegen +cirkulieren sich ständig weiterbewegen +Citybus Bus für kurze Stadtfahrten +Citykarte Stadtplan zum Orientieren +Citylicht beleuchtete Straße der Innenstadt +Citypark grüne Oase in der Stadt +Cityrad leichtes Fahrrad für die Stadt +Clanfest Treffen einer großen Gruppe +Clankasse gemeinsamer Vorrat einer Gruppe +Claqueur bezahlter Anfeuerer im Theater +clever geschickt und geistesgegenwärtig +clever schnell denkend und geschickt +Cliffhaus Haus auf einer Felskante +Cliffpfad schmaler Weg an Felsen +Clip kleine Klammer für Papier +Clipbox Behälter für Papierclips +Cliphalter Halter für lose Unterlagen +Clipkasten Kasten voller Büroklammern +Clipmappe Mappe hält lose Blätter fest +Clipmappe Mappe mit Klemmhalter +clippen mit Klammer befestigen +clippen mit Klemme befestigen +Clocktower Turm mit sichtbarer Uhr +clonen eine identische Kopie erzeugen +clonen exakte Kopie herstellen +cloudbasiert in digitaler Wolke gespeichert +cloudig stark digital vernetzt +cloudig voll digitaler Vernetzung +cloudnah stark digital vernetzt +Cloudordner digitaler Speicher für Dateien +Cloudpfad digitaler Weg zu Dateien +Cloudspeicher digitaler Raum für Dateien +Cloverblatt Blatt eines Klees +Clownhut bunte Kopfbedeckung eines Clowns +Clownsnase rote Nase eines Clowns +Clubhaus Treffpunkt einer Gemeinschaft +Clubraum Raum für gemeinsame Treffen +clustern Ähnliches zu Gruppen bündeln +clustern Ähnliches zu Gruppen ordnen +clustern in Gruppen zusammenfassen +clustern verwandte Dinge gruppieren +Coach Begleiter für Entwicklung +coachen bei Entwicklung unterstützen +coachen Menschen bei Zielen begleiten +coachen Menschen gezielt unterstützen +coachen zur Entwicklung begleiten +Cobrakamm ausgestellter Nacken einer Kobra +Cobrakopf aufgerichteter Kopf einer Schlange +Cockpit Steuerzentrale eines Fahrzeugs +cockpitieren ein Fluggerät steuern +Cockpituhr Uhr im Armaturenbereich +Cocktail gemischtes Getränk im Glas +Cocktailglas hohes Glas für Mixgetränke +Cocktailschirmchen kleiner bunter Schirm im Glas +Cocon geschützte Hülle einer Raupe +Code Regelwerk aus Zeichen +Codeblock Abschnitt eines Programmcodes +coden Anweisungen für Computer schreiben +coden Anweisungen für Software schreiben +Codestein symbolischer Baustein einer Lösung +Codetafel Tafel mit geheimen Zeichen +Codewort vereinbarter geheimer Begriff +codieren Information in Regeln übersetzen +codieren Information in Zeichen übersetzen +codieren Information in Zeichen umwandeln +codieren Information verschlüsselt darstellen +codifizieren Regeln verbindlich festhalten +Coldbrew kalt aufgebrühter Kaffee +Collage Bild aus vielen Einzelteilen +collagieren Bilder zu neuem Ganzen fügen +Comet leuchtender Schweif am Himmel +Comicband gebundenes Heft voller Bilder +Comicfigur gezeichnete Heldengestalt +Comicheft Heft voller gezeichneter Geschichten +componieren Melodien und Klänge erschaffen +componieren Musik erschaffen +componieren Musik erschaffen und ordnen +componieren Musik zu Melodie formen +componieren Musikstücke erschaffen +compressen Daten platzsparend speichern +Computerchip winzige Schaltkreise auf Platte +computerisieren manuelle Arbeit digitalisieren +Computermaus kleines Gerät steuert Zeiger +connecten Kontakt zu anderen aufbauen +connecten Verbindungen herstellen +connecten Verbindungen zu anderen aufbauen +connecten Verbindungen zu anderen schaffen +Containerbox stabile Kiste für Transport +Containerbrücke großer Kran im Hafen +Containerdeckel stabile Abdeckung eines Behälters +containern in Container verladen +containern Waren in Container verladen +cool gelassen und selbstsicher +cool ruhig und selbstsicher +cool selbstsicher und ruhig +coolblau kühl wie Gletscherwasser +copieren ein Muster nachbilden +copieren ein Vorbild nachbilden +copieren eine Vorlage nachbilden +Coralast verzweigte Struktur einer Koralle +Coralbaum tropischer Baum mit Blüten +Coralldorf Dorf aus Koralleninseln +Coralle verzweigtes Tier im Meer +Coralleucht rot schimmernde Koralle +Coralriff buntes Riff voller Leben +corsig lebhaft und temperamentvoll +Couch bequemes Polstermöbel +Couchkissen weiches Kissen auf Sofa +Couchtisch niedriger Tisch vor Sofa +Cowboyboot robuster Stiefel zum Reiten +Cowboyhut breitrandiger Hut im Wilden Westen +Cowboylasso Seil zum Einfangen von Tieren +Cowboyseil Seilschlinge für Viehfang +Cowboysporn Metallrad am Reitstiefel +Cowboystar Filmheld des Wilden Westens +Cowboystiefel hoher Stiefel mit Absatz +Cracker knuspriges Gebäck zum Knabbern +Crackerbox Schachtel voller Knabbergebäck +Crackerdose Dose voller Knabbergebäck +crashen heftig zusammenstoßen +crashen plötzlich heftig zusammenstoßen +creatief schöpferisch und ideenreich +Creme samtige Masse zum Verstreichen +Cremehaube lockere Schicht geschlagener Creme +cremen Haut mit Creme versorgen +Cremetopf Gefäß mit weicher Creme +cremig weich und samtig +Crêpepfanne flache Pfanne für Crêpes +Crêpeteig dünner Teig für Crêpes +crisp knackig und frisch +crisp knackig und frisch wirkend +Croissant gebäck in Sichelform +croppen Bild auf Ausschnitt kürzen +crossen quer durch Gelände fahren +crossen quer durchs Gelände fahren +Crossrad Sportfahrrad für verschiedene Wege +cruisen gelassen durch Gegend fahren +cruisen ohne Eile umherfahren +crunchen Daten rechnerisch analysieren +crunchen Daten rechnerisch auswerten +crunchen rechnerisch Daten auswerten +Cumulusfeld viele Wolken am Sommerhimmel +Cumuluswolke weiße Wolke mit Türmen +Cupboard Schrank zur Aufbewahrung +Cupcake kleiner Kuchen mit Haube +curlen gebogene Form erzeugen +curlen Locken oder Kurven formen +curlig mit lockigen Formen versehen +Curlingstein schwerer Granitstein auf Eis +Curryblatt aromatisches Blatt für Speisen +Curryduft würziger Geruch frisch gekochter Speisen +Currymühle Mühle für Gewürzmischungen +Currypaste kräftige Gewürzmischung +Currysoße würzige Soße mit Aroma +Currytopf duftendes Gericht mit Gewürzen +Cursor blinkende Marke am Bildschirm +curven eine Kurve durchfahren +curven eine Kurve elegant durchfahren +curven elegant durch Kurven fahren +curven geschwungene Strecke durchfahren +curvig in geschwungenen Linien verlaufend +curvig mit geschwungenen Formen +curvig mit harmonischen Rundungen +customen nach eigenen Wünschen gestalten +customen nach Wunsch anpassen +customen nach Wunsch verändern +customisieren nach eigenen Wünschen anpassen +cyanblau kräftig blau mit Türkiston +cyanblau kräftig blaugrün leuchtend +cyanblau leuchtend blaugrün gefärbt +cyanfarben kräftig blaugrün leuchtend +cyanhell hell blaugrün leuchtend +Cyberdeck technische Steuerplattform +cyberfest gut gegen digitale Angriffe geschützt +cyberklar logisch und technisch verständlich +Cybernetz verknüpfte digitale Systeme +Cyberpfad digitaler Weg durch Systeme +cybersicher gut gegen Angriffe geschützt +cybersmart technisch versiert und sicher +Cyborg Mensch mit Technikanteilen +Cyclamen Blume mit zurückgebogenen Blüten +cyclen in regelmäßigen Kreisen wiederkehren +Cyclocross Geländerennen mit Fahrrad +Cymbal Metallscheibe eines Schlagzeugs +Dachrinne Metallrinne leitet Regenwasser ab +Dachs Nachtaktives Tier mit Streifenkopf +Dachstuhl tragendes Gerüst unter dem Dach +Dahlie farbige Blume mit vielen Blättern +Damhirsch Hirsch mit breitem Geweih +dämmen Wärme oder Lärm zurückhalten +dämmerig halbhell und geheimnisvoll +Dämmerlicht weiches Licht nach Sonnenuntergang +dampfen sichtbaren Dampf erzeugen +Dampfkessel Behälter für heißen Wasserdampf +Dampfrad Rad wird durch Dampf bewegt +dankbar voller Anerkennung und Freude +danken Wertschätzung ausdrücken +darstellen etwas sichtbar wiedergeben +Dattelpalme Palme trägt süße Früchte +Daunenkissen weiches Kissen mit Federfüllung +Deckelkrug Krug mit schließendem Deckel +decken etwas schützend überziehen +dehnbar leicht in die Länge ziehbar +dehnen langsam auseinanderziehen +Deichkrone oberer Weg auf einem Deich +Deichsel Stange verbindet Wagen und Zugtier +dekorieren mit Schmuck verschönern +demontieren in Einzelteile zerlegen +denken Gedanken bewusst formen +Denkmal Stein erinnert an Vergangenes +deponieren an einem Ort hinterlegen +destillieren Flüssigkeit durch Verdampfen reinigen +deuten einer Sache Bedeutung geben +deutlich klar und gut erkennbar +diamanthell strahlend wie ein Edelstein +dicht von wenig Zwischenraum geprägt +dichten Verse oder Texte erschaffen +dienen einen Zweck erfüllen +diffundieren sich langsam ausbreiten +digital modern und elektronisch geprägt +dimmen helle Beleuchtung abschwächen +direkt ohne Umweg auf Ziel gerichtet +diskutieren Gedanken gemeinsam austauschen +Distelfink bunter Singvogel mit rotem Kopf +diszipliniert geordnet und kontrolliert handelnd +docken an einer Station andocken +Dokumentenkorb Korb voller Unterlagen +dokumentieren etwas nachvollziehbar festhalten +Domfenster hohes Fenster eines Doms +dominant bestimmend und durchsetzungsstark +dominieren stark bestimmenden Einfluss haben +donnern laut und kraftvoll erschallen +Doppeldecker Flugzeug mit zwei Tragflächen +Dorfbrunnen Wasserquelle im Dorfzentrum +dorfnah in der Nähe eines Dorfes +Dorfplatz offener Treffpunkt eines Dorfes +Dornenbusch Strauch voller spitzer Dornen +dornig mit spitzen Stacheln besetzt +Dornranke kletternde Pflanze mit Dornen +Dosenlampe Lichtquelle aus einer Dose +dosieren Menge genau bemessen +Drachenboot langes Boot mit Drachenkopf +Drachenflug Segelflug durch Aufwinde +Drachenkamm Zackenreihe auf Fantasiewesen +Drachenstein Fels mit ungewöhnlicher Form +Drahtkorb Korb aus geflochtenem Metall +dramatisch stark und eindrucksvoll wirkend +drechseln Holz an Drehbank formen +Drehbank Maschine formt drehende Werkstücke +drehen um die eigene Achse bewegen +Drehflügel rotierender Flügel eines Geräts +Drehkreuz Sperre dreht sich beim Eintritt +Drehorgel Instrument mit Kurbelantrieb +Drehstuhl beweglicher Stuhl auf Rollen +Dreibein Stativ mit drei Beinen +Dreispitz Hut mit drei Ecken +dribbeln Ball geschickt führen +driften seitlich durch Bewegung gleiten +Driftholz Holzstück vom Wasser getragen +dringlich besonders rasch erforderlich +drohen Gefahr ankündigen +Drosselklappe Steuerklappe in einem Motor +Drosselpfad Weg durch dichten Wald +Druckplatte Platte zum Erzeugen von Drucken +Druckwalze rollende Walze für Farbe +ducken den Körper nach unten bringen +duften angenehmen Geruch verbreiten +duftend angenehmen Geruch verströmend +Duftkerze Kerze verbreitet angenehmen Duft +Duftspur Geruch weist den Weg +Dünengras Gras hält Sand am Platz +Düngerfass Fass für Pflanzennährstoffe +dunkel tief von Schatten geprägt +Dunkelkammer Raum zur Entwicklung von Fotos +Dunkelwald schattiger dichter Wald +Dunstkreis Bereich um einen Mittelpunkt +durchdacht sorgfältig geplant und überlegt +Durchlass enge Öffnung für Wasser +durchlässig lässt Luft oder Wasser passieren +durchqueren von einer Seite zur anderen gelangen +dürr trocken und ausgemergelt +Duschkopf verteilt Wasser in feinen Strahlen +Düsenflieger schnelles Flugzeug mit Turbinen +dynamisch voller Bewegung und Energie \ No newline at end of file diff --git a/data/wordlists/eff_large_wordlist_en.txt b/data/wordlists/eff_large_wordlist_en.txt new file mode 100644 index 0000000..9c8c066 --- /dev/null +++ b/data/wordlists/eff_large_wordlist_en.txt @@ -0,0 +1,2330 @@ +# EFF Large Wordlist (English) - Complete Extended Edition +# Electronic Frontier Foundation curated wordlist +# Extended with capitalized nouns/names and comprehensive explanations for ALL words +# Full original list available at: https://www.eff.org/deeplinks/2016/07/new-wordlists-random-passphrases +Abacus counting frame with beads +Abdomen belly area +abdominal relating to the belly +abide tolerate, endure +abiding lasting, permanent +Ability skill, capability +ablaze on fire, burning +able capable, having skill +abnormal unusual, not typical +abode home, dwelling +abolish eliminate, end completely +abrasive rough, harsh in manner +abrupt sudden, sharp +Absence state of being away +absent not present, away +absolve forgive, clear of guilt +abstain refrain from, avoid +abstract theoretical, not concrete +absurd ridiculous, illogical +accent emphasis, pronunciation style +accept receive willingly, agree to +access entry, way to reach +Accident unexpected event +acclaim praise enthusiastically +accord agreement, harmony +account record, explanation +accuracy precision, correctness +accurate correct, precise +achieve accomplish, reach goal +aching painful, sore +acidic sour, having acid +acquire obtain, get +acre unit of land area +acrobat gymnastic performer +acting performing, temporary +Action deed, activity +activate turn on, start +activist campaigner for change +Actor male performer +Actress female performer +actual real, true +acute sharp, severe +adamant firm, unyielding +adapt adjust, modify +add include, put together +adept skilled, expert +adequacy sufficiency, enough +adequate sufficient, acceptable +adhesive sticky substance +adjacent next to, bordering +adjust modify, change slightly +admin administrator, manager +admiral naval officer +admire respect, look up to +admission entry, confession +admit confess, allow entry +adobe clay building material +adopt take in, choose +adrenalin stress hormone +Adult grown person +advance move forward, progress +advent arrival, beginning +adverse unfavorable, harmful +advertise promote, publicize +Advice guidance, recommendation +advocate support, recommend +aerial relating to air, antenna +aerobics cardiovascular exercise +affair matter, event +affect influence, impact +affiliate associate, connect +affirm confirm, state positively +afloat floating, surviving +afraid fearful, scared +African from Africa +after following, behind +aftermath consequences, result +afternoon time after midday +again once more, repeatedly +against opposing, contrary to +Age time lived, era +aged old, matured +agency organization, business +agenda schedule, plan +Agent representative, spy +aggregate total, combined +aging growing old +agnostic uncertain about God +agonize suffer, worry intensely +agree consent, have same view +agreement contract, consensus +agricultural relating to farming +ahead in front, forward +aid help, assistance +aide assistant, helper +aim point, target +air breathable gas +aircraft flying vehicle +airfield landing area +airline flight company +airplane flying machine +Airport flight terminal +aisle walkway, passage +Alarm warning signal +Album collection of photos/music +Alcohol intoxicating liquid +alert watchful, warning +alien foreign, extraterrestrial +align arrange in line +alike similar, same +alive living, active +all everything, complete +allergic sensitive reaction +alley narrow street +alliance partnership, union +allocate distribute, assign +allow permit, enable +almost nearly, close to +alone by oneself, solitary +along beside, together with +alphabet letter system +already by now, previously +also in addition, too +alter change, modify +alternate substitute, take turns +although despite, even though +altitude height above sea level +aluminum light metal +always forever, constantly +amazed astonished, surprised +Amazon river, online store +ambassador diplomatic representative +amber golden resin +ambition drive, goal +ambulance medical vehicle +American from America +amid among, in middle of +amigo friend (Spanish) +amino protein building block +among in the middle of +amount quantity, total +amp amplifier, unit of current +amuse entertain, make laugh +Anchor ship stabilizer +ancient very old, historical +Anger rage, fury +angle corner, viewpoint +angry mad, furious +Animal living creature +animate bring to life +Ankle foot joint +announce declare, make public +annual yearly, once per year +another different, additional +Answer reply, response +anticipate expect, look forward +anxiety worry, nervousness +any some, whichever +anybody any person +anyone any person +anything any object or matter +anywhere any place +apart separated, away from +Apartment living unit +apologize say sorry, express regret +apparent obvious, seeming +appear become visible, seem +Apple red/green fruit +apply put on, request +approach come near, method +approve agree to, accept +April fourth month +arbitrary random, without reason +arcade covered walkway, games +arch curved structure +architect building designer +area region, space +argue debate, dispute +arise get up, emerge +armor protective covering +army military force +around surrounding, approximately +arrange organize, put in order +arrest detain, stop +arrival coming, reaching +arrive reach, come +arrow pointed projectile +Art creative work +article item, written piece +Artist creative person +ash burnt residue +aside to the side, apart +ask request, inquire +asleep sleeping, unconscious +aspect facet, part +assault attack violently +assemble gather, put together +assert state firmly, claim +assess evaluate, judge +asset valuable resource +assign allocate, give task +assist help, support +assume suppose, take on +assure guarantee, convince +asthma breathing condition +Athlete sports person +atlas map collection +atom smallest particle +attach connect, fasten +Attack assault, criticize +Attempt try, effort +attend be present, pay attention +Attic top room +Attitude mindset, approach +attract draw toward, appeal +auction public sale +audit examine accounts +August eighth month +aunt parent's sister +Author writer +auto car, automatic +autumn fall season +available obtainable, free +average typical, mean +aviation flying, aircraft industry +avoid stay away from +awake alert, not sleeping +award prize, give honor +aware conscious, knowing +away distant, absent +awesome amazing, impressive +awful terrible, very bad +awkward clumsy, uncomfortable +axis central line, alliance +Baby infant, very young child +bachelor unmarried man +back rear, spine +backyard area behind house +Bacon cured pork strips +Badge identification pin +badly poorly, severely +Bag container, sack +Bakery bread shop +balance equilibrium, stability +balcony elevated platform +Ball round object +Balloon inflatable bag +ballot voting paper +bamboo hollow grass plant +Banana yellow curved fruit +band group, strip +bandana head scarf +banner flag, sign +bar rod, drinking place +barbecue outdoor cooking +bare naked, empty +barely hardly, just +bargain good deal, negotiate +Barrel cylindrical container +base foundation, bottom +baseball American sport +basement underground room +basic fundamental, simple +basin bowl-shaped container +basis foundation, reason +Basket woven container +batch group, quantity +Bathroom toilet room +Battery device that stores electrical energy +Battle fight, struggle +Beach sandy shore +bead small round object +beam ray of light, wooden support +Bean edible seed +Bear large mammal, endure +Beard facial hair +Beast wild animal +beat hit, rhythm +beautiful attractive, lovely +Beauty attractiveness +because for the reason that +become turn into, grow to be +bed sleeping furniture +Bedroom sleeping room +Beef cow meat +Beer alcoholic drink +before earlier than, in front +begin start, commence +behave act, conduct oneself +behind at the back, after +being existence, creature +believe have faith, think true +bell ringing device +belong be owned by, fit in +below underneath, lower +belt waist strap +bench long seat +bend curve, flex +beneath under, below +benefit advantage, help +best finest, most good +betray be disloyal, reveal +better improved, superior +between in the middle of +beyond further than, past +Bicycle two-wheeled vehicle +bid offer, attempt +big large, important +Bike bicycle +bill invoice, beak +billion thousand million +bind tie together, fasten +biology study of life +Bird flying animal +birth being born +Birthday birth anniversary +Biscuit baked bread roll +bit small piece, somewhat +bite cut with teeth +bitter sharp taste, resentful +black darkest color +Blade sharp edge +blame hold responsible +Blanket bed covering +blast explosion, strong wind +bleak bare, depressing +bless give divine favor +blind cannot see +block solid piece, obstruct +blood red body fluid +bloom flower, flourish +blossom flower, develop +blow move air, hit +blue sky color +board plank, get on +boat water vessel +Body physical form +boil bubble from heat +Bomb explosive device +bond connection, glue +Bone hard body part +bonus extra reward +Book written work +boost increase, help up +booth small enclosure +border edge, boundary +boring dull, uninteresting +born brought into life +borrow take temporarily +boss supervisor, leader +both the two, each +bother annoy, trouble +Bottle liquid container +bottom lowest part +bounce spring back, rebound +boundary limit, border +bow bend forward, weapon +Bowl round dish +Box container, fight +Boy male child +bracket support, grouping symbol +Brain thinking organ +branch tree limb, division +brand trademark, mark +brass copper-zinc alloy +brave courageous, fearless +Bread baked food +break shatter, pause +Breakfast morning meal +breath air inhaled +breathe inhale air +breed reproduce, type +breeze light wind +brick building block +Bridge crossing structure +brief short, concise +bright luminous, intelligent +bring carry, transport +brisk quick, energetic +broad wide, extensive +broken damaged, shattered +bronze copper-tin alloy +Brother male sibling +brought past tense of bring +brown dark color +Brush cleaning tool +bubble air sphere in liquid +buddy friend, pal +budget financial plan +build construct, create +Building structure +bulb light source, plant part +bulk large size, majority +Bullet ammunition +bundle package, group +burden heavy load, responsibility +bureau office, chest of drawers +burn be on fire, injure +burst break open suddenly +bury put underground +bus public vehicle +Business commerce, occupation +busy occupied, active +Butter dairy spread +Button fastener, push control +buy purchase, acquire +Buyer purchaser +buzz humming sound +Cabin small house +cabinet storage furniture +cable thick wire, TV service +cactus desert plant +cage animal enclosure +Cake sweet dessert +calcium bone mineral +calculate compute, work out +calendar date system +call telephone, shout +calm peaceful, quiet +Camera photo device +camp outdoor stay, base +campaign organized effort +campus school grounds +can able to, container +canal artificial waterway +cancel call off, void +cancer disease of cells +candidate person seeking office +Candle wax light +Candy sweet treat +Cannon large gun +canoe narrow boat +canvas strong cloth +canyon deep valley +capable able, competent +capacity ability, volume +capital main city, money +captain leader, ship commander +capture catch, seize +Car motor vehicle +carbon chemical element +Card piece of paper/plastic +care attention, concern +Career profession +careful cautious, attentive +cargo freight, load +carnival festival, fair +carpet floor covering +carry transport, bear +cart wheeled vehicle +case container, legal matter +cash money, coins +casino gambling house +cast throw, actors +Castle fortified building +casual informal, relaxed +Cat feline pet +catalog list of items +catch grab, capture +category class, group +cattle cows and bulls +caught past tense of catch +Cause reason, bring about +caution care, warning +Cave underground chamber +ceiling room top +cell basic unit, prison room +cement building material +census population count +century hundred years +cereal breakfast food +certain sure, specific +chain linked rings +chair seat with back +chairman committee leader +challenge difficult task +chamber room, enclosed space +champion winner, defender +Chance opportunity, possibility +Change alter, modify +channel waterway, TV station +chaos disorder, confusion +chapter book section +charge cost, electrical load +charity giving to help others +charm appeal, magic spell +chart diagram, map +chase pursue, follow +cheap inexpensive, low quality +check examine, payment method +Cheese dairy food +Chef head cook +chemical substance, compound +chemistry study of substances +Cherry red fruit +Chest torso, storage box +Chicken poultry bird +chief leader, main +Child young person +childhood early years +chill cold, relax +chimney smoke outlet +Choice option, selection +choose select, pick +chosen selected, picked +chrome shiny metal +chunk thick piece +Church religious building +cigarette tobacco roll +Cinema movie theater +circle round shape +Citizen member of country +City large town +civic relating to citizens +civil polite, civilian +claim assert, demand +clamp gripping device +clarify make clear, explain +class group, lesson +classic traditional, timeless +classify categorize, sort +clean free from dirt +clear transparent, obvious +click short sound, press +Client customer +cliff steep rock face +climate weather patterns +climb go up, ascend +clinic medical facility +clip fasten, cut short +Clock time device +close near, shut +Closet storage space +Cloud visible mass of water vapor in the sky +club organization, stick +cluck chicken sound +clue hint, evidence +cluster group, bunch +Coach trainer, vehicle +coast seashore +Coat outer garment +code system of rules +Coffee caffeinated drink +cognitive relating to thinking +Coin metal money +cold low temperature, illness +collapse fall down, fail +collar neck band +collect gather, accumulate +College higher education +collide crash into +colon punctuation, intestine +Color hue, tint +column pillar, vertical list +combat fight, battle +combine join together, mix +come arrive, approach +comfort ease, console +comic funny, cartoon +command order, control +comment remark, observation +commerce trade, business +commit do, pledge +common ordinary, shared +company business, companions +compare examine similarities +compete contest, rival +compile collect, assemble +complain express dissatisfaction +complete finished, whole +complex complicated, building +Computer electronic machine +Concept idea, notion +concern worry, matter +concert musical performance +conclude end, decide +concrete building material, solid +conduct behavior, lead +confirm verify, affirm +conflict disagreement, fight +conform comply, match +confuse perplex, mix up +congress legislative assembly +connect link, join +consider think about +consist be made of +console comfort, control panel +constant continuous, unchanging +construct build, create +consult seek advice from +contact touch, communicate +contain hold, include +content satisfied, material inside +contest competition +context circumstances, setting +continue keep going, persist +contract agreement, shrink +control command, regulate +convert change, transform +cook prepare food +Cookie sweet biscuit +cooking food preparation +cool cold, calm +copper reddish metal +copy duplicate, imitate +coral sea organism +core center, essential part +Corn yellow grain +corner angle, intersection +Correct free from error; accurate +cost price, expense +cotton soft fiber +couch sofa, furniture +cough throat clearing sound +could past tense of can +council governing body +count number, calculate +country nation, rural area +county administrative division +couple pair, two people +Courage bravery +course path, class +court legal place, sports area +Cousin relative +cover protect, hide +Cow farm animal +crack break, split +craft skill, make by hand +crash collision, fail +crazy insane, wild +cream dairy product +create make, produce +Creature living being +credit recognition, loan +creek small stream +crew team, workers +cricket insect, sport +crime illegal act +crisp crunchy, clear +critic reviewer, judge +crop harvest, cut short +cross intersect, religious symbol +crowd large group +crucial critical, vital +cruel harsh, mean +cruise voyage, travel smoothly +crumb small piece +crunch crush noisily +crush squeeze, defeat +cry weep, shout +crystal clear mineral +cube six-sided shape +Culture way of life +Cup drinking vessel +cupboard storage cabinet +curious inquisitive, strange +current present, flow +curtain window covering +curve bend, arc +cushion soft pillow +custom tradition, habit +cute attractive, pretty +cycle recurring sequence +dad father, papa +daily every day +damage harm, injury +dance rhythmic movement +Danger risk, hazard +daring bold, brave +dark without light +dart small arrow, move quickly +dash run quickly, punctuation +database information collection +date day, fruit, romantic meeting +Daughter female child +dawn sunrise, beginning +day 24-hour period +deal agreement, distribute +Death end of life +debate formal discussion +debris scattered fragments +debt money owed +decade ten years +December twelfth month +decide choose, determine +decline refuse, decrease +decorate adorn, beautify +decrease reduce, lessen +deep far down, profound +deer forest animal +defense protection, guard +define explain meaning +degree level, temperature unit +delay postpone, wait +deliver transport, give birth +demand require, request firmly +Democracy government by people +demonstrate show, prove +dentist tooth doctor +deny refuse, reject +depart leave, go away +depend rely on, trust +deposit put down, bank payment +describe tell about, explain +desert dry region, abandon +Design plan, create +desk work table +despair hopelessness +destroy ruin, demolish +detail specific information +detect discover, find +determine decide, establish +develop grow, create +device tool, gadget +devote dedicate, commit +diagram drawing, chart +dial turn control, call +Diamond precious gem +diary personal journal +Dice gambling cubes +dictate command, speak aloud +diet food intake, weight plan +differ be different, disagree +digital electronic, numeric +dignity self-respect, honor +dilemma difficult choice +Dinner evening meal +dinosaur extinct reptile +direct straight, manage +dirt soil, earth +disagree have different opinion +discover find, learn +Disease illness, sickness +dish plate, food +Dishwasher machine for cleaning dishes +dismiss send away, ignore +disorder confusion, illness +display show, exhibit +distance space between +divert redirect, distract +divide separate, split +divorce end marriage +dock pier, deduct +Doctor medical professional +document paper, record +Dog canine pet +domestic home-related, tame +donate give, contribute +Door entrance +dose amount of medicine +double twice, duplicate +doubt uncertainty, question +down downward, sad +downtown city center +dozen twelve items +draft rough version, air current +dragon mythical creature +drama play, emotional situation +dramatic theatrical, striking +draw sketch, pull +Dream sleep images, aspiration +dress clothing, put on clothes +drill boring tool, practice +drink consume liquid +drive operate vehicle, motivate +drop fall, small amount +drown die in water +drug medicine, narcotic +Drum percussion instrument +dry without water +Duck water bird, avoid +due owed, expected +dull boring, not sharp +dumb mute, stupid +dump discard, waste site +dune sand hill +during throughout, while +dust fine particles +Dutch from Netherlands +duty responsibility, tax +dwarf small person, make small +dynamic energetic, changing +eager enthusiastic, keen +Eagle large bird +early before time, soon +earn gain, deserve +Earth planet, soil +ease comfort, make easier +east direction, orient +easy simple, not difficult +eat consume food +echo sound reflection +ecology environmental science +economy financial system +edge border, advantage +edit revise, modify +educate teach, train +Effort attempt, work +Egg oval reproduction cell +eight number 8 +either one or other +elbow arm joint +elder older person +electric using electricity +elegant stylish, graceful +element basic part, chemical +Elephant large mammal +eleven number 11 +elite best group +else other, different +embrace hug, accept +emerge appear, come out +Emotion feeling +employ hire, use +empty containing nothing +enable make possible +enact make law, perform +end finish, stop +endorse support, approve +Enemy opponent, foe +Energy power, vigor +enforce compel obedience +engage participate, hire +Engine motor, machine +enhance improve, increase +enjoy take pleasure in +enlarge make bigger +enough sufficient, adequate +enrich make richer +enroll register, join +ensure make certain +enter go in, join +entire whole, complete +entry entrance, item +envelope letter container +episode single event, show +equal same, identical +equip provide tools +era time period +erase remove, delete +error mistake, fault +erupt burst forth, explode +escape get away, avoid +essay written composition +essence fundamental nature +estate property, assets +estimate approximate, judge +ethics moral principles +evidence proof, testimony +evil wicked, harmful +evoke bring to mind +evolve develop, change +exact precise, accurate +example instance, model +exceed go beyond, surpass +excel be superior +except excluding, but +exchange trade, swap +excite stimulate, thrill +exclude leave out, bar +excuse reason, forgive +execute carry out, kill +exercise physical activity +exhale breathe out +exhibit display, show +exile banishment, expel +exist be present, live +exit way out, leave +exotic foreign, unusual +expand grow larger +expect anticipate, require +expense cost, expenditure +expert specialist, skilled +explain make clear +explore investigate, search +export send abroad +expose reveal, uncover +express communicate, fast +extend stretch, prolong +extra additional, more +Eye vision organ +Eyebrow hair above eye +fabric cloth, material +Face front of head, confront +facial relating to face +fact truth, reality +factor element, influence +Factory manufacturing plant +faculty teaching staff, ability +fade become dim, weaken +fail not succeed +Failure lack of success +fair just, festival +Faith belief, trust +fall drop, autumn +false untrue, fake +fame celebrity, reputation +Family relatives, group +famous well-known, celebrated +fan admirer, cooling device +fancy elaborate, imagine +fantasy imagination, dream +Farm agricultural land +fashion style, manner +fast quick, not eating +Father male parent +fault defect, blame +favor preference, help +feature characteristic, show +February second month +federal national government +fee charge, payment +feed give food, nourish +feel touch, emotion +female woman, feminine +fence barrier, sell stolen goods +festival celebration, event +fetch go get, bring +fever high temperature +few not many, small number +fiber thread, dietary element +fiction imaginary story +field open land, area of study +figure number, shape, person +file document, tool +fill make full, occupy +film movie, thin layer +filter strain, screen +final last, ultimate +finance money matters +find locate, discover +fine excellent, penalty +Finger hand digit +finish complete, end +fire flame, dismiss +firm solid, company +first earliest, primary +fiscal financial, budget +Fish aquatic animal, catch +fit healthy, suitable +fitness physical condition +fix repair, fasten +flag banner, mark +flame fire, passion +flat level, apartment +flavor taste, essence +flee run away, escape +flight flying, escape +flip turn over, toss +float stay on surface +flock group of animals +flood overflow of water +floor bottom surface +flour ground grain +flow move smoothly +Flower plant bloom +fluid liquid, flowing +flush red-faced, level +fly insect, travel by air +foam bubbles, froth +focus concentrate, center +fog mist, cloud +foil thin metal, thwart +fold bend, crease +follow come after, obey +Food nourishment, edibles +Foot body part, bottom +force power, compel +foreign from another country +Forest wooded area +forget not remember +fork eating utensil, divide +form shape, create +format arrangement, style +formula recipe, equation +fortune wealth, luck +forward ahead, onward +found establish, discovered +fountain water feature +four number 4 +frame border, structure +fraud deception, cheat +free not restricted, release +freedom liberty, independence +freeze become ice, stop +French from France +frequent often, regular +fresh new, not spoiled +Friend companion, ally +fringe edge, border +Frog amphibian +front forward part +frost ice crystals +frown angry expression +frozen turned to ice +Fruit plant product +fuel energy source +full complete, filled +fun enjoyment, amusing +function purpose, work +fund money, finance +funny amusing, strange +furnace heating device +fury intense anger +Future time ahead +gadget small device +galaxy star system +gallery art display +Game sport, entertainment +gap space, opening +Garage car shelter +garbage waste, trash +Garden cultivated area +Garlic pungent bulb +gas vapor, fuel +gasp sharp intake of breath +gate entrance, barrier +gather collect, assemble +gauge measure, instrument +gaze stare, look steadily +general overall, military rank +genius brilliant person +genre category, type +gentle kind, soft +genuine real, authentic +gesture movement, sign +ghost spirit, phantom +giant huge person +gift present, talent +giggle light laugh +ginger spice, root +giraffe tall animal +Girl female child +give present, provide +glad happy, pleased +glance quick look +gland body organ +Glass transparent material +globe world, sphere +gloom darkness, sadness +glory honor, magnificence +glove hand covering +glow shine, warm light +glue adhesive, stick +Goal objective, target +Goat horned animal +Goddess female deity +Gold precious metal +good positive, well +goose water bird +gorilla large ape +gospel religious teaching +gossip rumors, chat +govern rule, control +gown dress, robe +grab seize, catch +grace elegance, blessing +grain seed, texture +grant give, allow +Grape vine fruit +grass lawn, vegetation +gravity force, seriousness +great large, excellent +green color, inexperienced +grid network, pattern +grief sorrow, pain +grill cook, question +grin smile widely +grip hold, grasp +grocery food store +ground earth, basis +group collection, band +grow increase, develop +grunt low sound +guard protect, watch +guess estimate, suppose +guest visitor, customer +Guide lead, direct +guilty responsible, ashamed +Guitar stringed instrument +Gun weapon, firearm +Gym exercise place +Hair head covering +half fifty percent +hall corridor, large room +halt stop, pause +Hand body part, give +handle grip, manage +hang suspend, execute +happy joyful, pleased +harbor port, shelter +hard difficult, solid +harsh severe, rough +harvest gather crops +Hat head covering +hate despise, dislike +have possess, own +hawk bird of prey +hazard danger, risk +Head body part, leader +Health wellness, condition +hear perceive sound +Heart organ, center +heat warmth, temperature +heavy weighty, serious +Hedgehog spiny mammal +height tallness, altitude +held past tense of hold +hello greeting +Helmet protective headgear +Help assist, aid +hence therefore, from now +Hero brave person +hidden concealed, secret +high tall, elevated +Hill small mountain +hint clue, suggestion +hip body joint +hire employ, rent +History past events +hit strike, success +hobby pastime, interest +hockey ice sport +hold grasp, contain +hole opening, gap +holiday vacation, festival +hollow empty, false +Home residence, base +honest truthful, sincere +Honey bee product +honor respect, dignity +Hope expect, wish +horizon skyline, limit +horn animal part, instrument +horror fear, terror +Horse large four-legged animal used for riding +Hospital medical facility +host entertainer, army +Hotel lodging place +hour sixty minutes +hover float, linger +hub center, focal point +huge enormous, vast +Human person, mankind +humble modest, simple +humor comedy, mood +hundred number 100 +hungry needing food +hunt search, chase +hurdle barrier, obstacle +hurry rush, speed +hurt injure, pain +Husband married man +hut small shelter +hybrid mixed, combination +Ice frozen water +icon symbol, image +Idea thought, concept +identify recognize, name +idle inactive, lazy +ignore disregard, overlook +ill sick, unwell +illegal against law +illness sickness, disease +Image picture, impression +imitate copy, mimic +immense huge, vast +immune protected, resistant +impact effect, collision +imply suggest, hint +import bring in, significance +impose force, burden +improve make better +impulse sudden urge +inch unit of length +include contain, comprise +income earnings, revenue +increase grow, rise +index list, indicator +indicate show, point +indoor inside, internal +industry business sector +Infant baby, young +inflict cause, impose +inform tell, notify +inhale breathe in +inherit receive, get +initial first, beginning +inject insert, introduce +injury harm, wound +inmate prisoner, resident +inner inside, internal +innocent not guilty, pure +input contribution, data +inquiry investigation, question +insane mentally ill, crazy +insect bug, small creature +inside interior, within +inspire motivate, encourage +install set up, place +intact whole, undamaged +intend plan, mean +interest curiosity, concern +into toward inside +invest put money, spend +invite ask to come +involve include, engage +Iron strong metal +Island land surrounded by water +isolate separate, alone +issue problem, publish +item object, thing +ivory elephant tusk +jacket outer garment +Jaguar large spotted cat +Jail prison, confine +January first month +jar container, shake +jazz music style +jealous envious, possessive +jeans denim pants +jelly soft preserve +jewel precious stone +Job work, task +join connect, become member +joke funny story +Journey trip, travel +Joy happiness, delight +Judge decide, legal official +Juice fruit liquid +July seventh month +jump leap, spring +June sixth month +Jungle dense forest +junior younger, lower rank +junk trash, worthless +just fair, only +justice fairness, law +justify explain, defend +keep retain, maintain +kernel seed, core +Key opener, important +kick strike with foot +Kid child, young goat +kidney body organ +kind type, nice +kingdom realm, domain +kiss touch with lips +kit set of tools +Kitchen cooking room +kite flying toy +Kitten young cat +kiwi fruit, bird +Knee leg joint +Knife cutting tool +knock hit, rap +know understand, be aware +lab laboratory, test place +label tag, name +labor work, effort +Ladder climbing device +Lady woman, female +Lake body of water +Lamp light source +Language communication system +Laptop portable computer +large big, extensive +last final, continue +late delayed, recent +Latin ancient language +laugh express amusement +laundry washing clothes +lava molten rock +law rule, regulation +lawn grass area +lawsuit legal case +layer level, coating +lazy idle, inactive +Leader person in charge +Leaf plant part +learn gain knowledge +leave depart, abandon +lecture speech, scold +left remaining, direction +Leg limb, support +legal lawful, relating to law +legend story, famous person +leisure free time +Lemon citrus fruit +lend loan, give temporarily +length distance, duration +lens curved glass +Leopard spotted cat +lesson teaching, learning +letter alphabet character, mail +level degree, height +liar person who lies +liberty freedom, independence +Library book collection +license permit, authorization +Life existence, living +lift raise, elevator +Light illumination, not heavy +like similar, enjoy +Limb arm or leg +limit boundary, restrict +link connection, join +Lion big cat +liquid fluid substance +list catalog, lean +little small, short +live be alive, reside +lizard reptile +load cargo, burden +loan borrowed money +lobby entrance hall, influence +local nearby, regional +lock secure, fasten +logic reasoning, sense +lonely alone, isolated +long extended, desire +loop circle, repeat +lottery chance game +loud noisy, bright +lounge relax, waiting area +Love affection, adore +loyal faithful, devoted +lucky fortunate, bringing luck +luggage baggage, suitcases +lumber wood, move clumsily +lunar relating to moon +Lunch midday meal +luxury comfort, extravagance +lying false, reclining +Machine device, mechanism +mad angry, insane +madam polite term for woman +magnet attracting metal +maid female servant +mail postal system +main primary, chief +major important, military rank +make create, cause +mammal warm-blooded animal +Man adult male +manage control, handle +mandate command, authority +mango tropical fruit +mansion large house +manual handbook, by hand +maple tree type +marble stone, small ball +march walk, third month +margin edge, profit +marine sea, soldier +mark sign, grade +market store, trade +Marriage wedding, union +mask face covering +mass large amount, church +master expert, owner +match equal, fire starter +material substance, fabric +math mathematics, numbers +matrix pattern, framework +matter substance, issue +maximum highest, most +maze puzzle, labyrinth +meadow grassland, field +mean average, cruel +measure size, evaluate +Meat animal flesh +mechanic repair person +medal award, honor +media communication means +melody tune, music +melt become liquid +member part, person in group +Memory recollection, storage +mention refer to, state +menu food list +mercy compassion, forgiveness +merge combine, join +merit worth, deserve +merry happy, cheerful +mesh network, fit together +message communication, meaning +metal hard material +method way, technique +middle center, between +midnight twelve at night +Milk dairy liquid +million thousand thousand +mimic imitate, copy +Mind brain, thoughts +minimum least, smallest +mining extracting minerals +minor small, underage +minute sixty seconds, tiny +miracle wonder, amazing event +Mirror reflecting glass +misery suffering, unhappiness +miss fail to hit, young woman +Mistake error, wrong +mix combine, blend +mixed combined, varied +mixture combination, blend +mobile movable, phone +model example, fashion person +modify change, alter +mom mother, mama +moment instant, time +monitor watch, screen +Monkey small primate that climbs trees +Monster creature, huge thing +month calendar period +mood feeling, atmosphere +moon earth satellite +moral ethical, lesson +more additional, extra +morning early day +mosquito biting insect +Mother female parent +motion movement, proposal +motor engine, drive +Mountain large natural elevation of land +Mouse small rodent, computer device +move change position +movie film, motion picture +much a lot, great amount +muffin small cake +multiply increase, times +muscle body tissue +Museum exhibit building +Music sound art +must have to, necessity +mutual shared, common +myself me personally +mystery puzzle, unknown +myth legend, false belief +naive innocent, simple +name title, identify +napkin cloth, tissue +narrow thin, limited +nasty unpleasant, mean +nation country, people +Nature natural world +near close, almost +Neck body part connecting head +Need require, necessity +Needle sewing tool, pointer +neglect ignore, abandon +Neighbor person nearby +Nephew brother's son +nerve courage, body fiber +nest bird home +net mesh, profit +network system, connections +neutral impartial, middle +never not ever, at no time +news current information +next following, adjacent +nice pleasant, good +night dark hours +noble honorable, aristocratic +noise sound, disturbance +nominee candidate, chosen person +noodle pasta strip +normal usual, standard +north direction, up +Nose smell organ +notable remarkable, important +note message, musical sound +nothing not anything +notice see, announcement +novel book, new +now at present +nuclear atomic, core +number numeral, amount +nurse medical caregiver +nut seed, crazy person +oak tree type +obey follow orders +object thing, oppose +oblige force, help +obscure unclear, hidden +observe watch, notice +obtain get, acquire +obvious clear, evident +occur happen, take place +Ocean large sea +October tenth month +odd strange, uneven +offer propose, give +Office workplace, position +often frequently, many times +Oil liquid fuel +okay acceptable, yes +old aged, former +olive fruit, tree +Olympic sports games +omit leave out, skip +once one time, former +one single, number 1 +Onion layered vegetable +online on internet +only just, solely +open not closed, start +opera musical drama +opinion view, belief +oppose resist, fight against +option choice, alternative +Orange fruit, color +orbit path, circle +order command, arrangement +ordinary normal, usual +organ body part, instrument +orient position, east +original first, unique +orphan parentless child +ostrich large bird +other different, additional +outdoor outside, external +outer external, outside +output result, production +outside exterior, beyond +oval egg-shaped +oven cooking appliance +over above, finished +own possess, belong to +Owner possessor, proprietor +Oxygen breathing gas +oyster shellfish +ozone atmospheric gas +pact agreement, treaty +paddle rowing blade +page sheet, call +Pain hurt, suffering +paint color, decorate +pair two, couple +Palace royal residence +pale light colored +palm hand, tree +pan cooking utensil +panel board, group +panic fear, alarm +panther big cat +Paper writing material +parade march, procession +Parent father or mother +Park green area, place +Parrot colorful bird +part piece, role +party celebration, group +pass go by, permit +past former time, beyond +patch repair, small area +path route, way +patient sick person, tolerant +patrol guard, watch +pattern design, model +pause stop, break +pave cover with stones +payment money paid +Peace calm, no war +peanut legume, nut +pear fruit +peasant farmer, poor person +pecan nut type +penalty punishment, fine +Pencil writing instrument with graphite core +people persons, population +pepper spice, vegetable +perfect flawless, complete +permit allow, license +Person individual, human +pet domestic animal +Phone telephone +photo picture, image +phrase expression, words +physical bodily, material +Piano keyboard instrument +picnic outdoor meal +picture image, photo +piece part, artwork +Pig swine, dirty +pigeon city bird +pill medicine tablet +Pilot aircraft operator +pink light red color +pioneer first settler +pipe tube, smoking device +pistol small gun +pitch throw, musical tone +Pizza Italian food +place location, put +plan scheme, intend +planet celestial body +plastic synthetic material +Plate dish, flat piece +play have fun, perform +please satisfy, polite word +pledge promise, vow +pluck pull, courage +plug stopper, connector +plunge dive, fall +poem verse, poetry +poet verse writer +point tip, indicate +polar relating to poles +pole rod, geographic point +police law enforcement +pond small lake +Pony small horse +pool water, combine +popular well-liked, common +portion part, serving +position place, job +possible able to happen +post mail, position +Potato root vegetable +pottery ceramic art +poverty being poor +powder fine particles +Power strength, energy +practice rehearse, custom +praise compliment, worship +predict forecast, foretell +prefer like better +prepare make ready +present gift, current +pretty attractive, quite +prevent stop, avoid +price cost, value +Pride self-respect, arrogance +primary first, main +print publish, mark +priority importance, first +Prison jail, confinement +private personal, not public +prize award, value +problem difficulty, question +process procedure, treat +produce make, create +profit gain, benefit +program plan, show +project task, extend +promote advance, advertise +proof evidence, test +property belongings, characteristic +prosper succeed, thrive +protect guard, shield +proud pleased, arrogant +provide supply, give +public people, open +pudding dessert, mixture +pull drag, attract +pulp soft mass, fiction +pulse heartbeat, rhythm +pumpkin orange squash +punch hit, drink +pupil student, eye part +Puppy young dog +purchase buy, acquire +purity cleanness, innocence +Purple color between red and blue +Purpose reason, intention +purse handbag, pucker +push shove, press +put place, set +puzzle mystery, confuse +pyramid triangular structure +quality standard, characteristic +quantum amount, physics unit +quarter fourth, twenty-five cents +question inquiry, doubt +quick fast, rapid +quiet silent, calm +quilt bedcover, stitch +quit stop, leave +quote cite, price +Rabbit small mammal +raccoon masked animal +race contest, ethnicity +rack frame, torture +radar detection system +Radio broadcast receiver +rail bar, railway +rain water drops +raise lift, increase +rally gathering, recover +ramp slope, increase +ranch large farm +random chance, arbitrary +range variety, distance +rapid fast, quick +rare uncommon, undercooked +rate speed, price +rather preferably, somewhat +raven black bird +raw uncooked, unprocessed +razor shaving blade +ready prepared, willing +real actual, genuine +Reason cause, logic +rebel resist, fighter +rebuild reconstruct, restore +recall remember, return +receive get, accept +recipe cooking instructions +record document, achievement +recover get better, regain +recycle reuse, process again +reduce decrease, lessen +reflect mirror, think +reform improve, change +refuse reject, garbage +region area, territory +regret feel sorry, sorrow +regular normal, frequent +reject refuse, dismiss +relax rest, become loose +release free, let go +relief comfort, aid +rely depend, trust +remain stay, continue +remember recall, keep in mind +remind cause to remember +remove take away, eliminate +render provide, make +renew restore, extend +rent lease, payment +reopen open again +repair fix, mend +repeat do again, say again +replace substitute, put back +report account, tell +require need, demand +rescue save, help +resemble look like, similar +resist oppose, withstand +resource supply, means +response answer, reaction +Result outcome, consequence +retire stop working, withdraw +retreat withdraw, refuge +return come back, give back +reunion gathering, meeting +reveal show, disclose +review examine, critique +reward prize, payment +rhythm beat, pattern +rib chest bone +ribbon decorative strip +Rice grain food +rich wealthy, abundant +riddle puzzle, mystery +ride travel on, journey +ridge crest, raised line +rifle long gun +right correct, direction +rigid stiff, inflexible +Ring circle, sound +riot violent disorder +ripple small wave +rise go up, increase +risk danger, chance +ritual ceremony, routine +rival competitor, opponent +River flowing water +Road street, path +roast cook, mock +rob steal, take +Robot automatic machine +robust strong, healthy +Rocket missile, spacecraft +romance love, idealize +roof top covering +rookie beginner, new person +Room space, chamber +rooster male chicken +root plant base, origin +Rope thick cord +Rosa rose, name +rotate turn, spin +rough uneven, harsh +round circular, stage +route path, way +royal relating to royalty +rubber elastic material +rude impolite, rough +rug floor covering +rule regulation, govern +run move quickly, operate +runway aircraft path +rural countryside, agricultural +sad unhappy, sorrowful +saddle horse seat +sadness sorrow, unhappiness +safe secure, not dangerous +sail travel by boat +salad mixed vegetables +salmon fish type +salon beauty shop +salt seasoning mineral +salute greeting, honor +same identical, equal +sample example, test +sand tiny rock pieces +satisfy please, fulfill +Satoshi bitcoin unit, name +sauce liquid flavoring +sausage meat product +save rescue, keep +say speak, tell +scale size, climb +scan examine, read +scare frighten, alarm +scatter spread, disperse +scene place, view +scheme plan, plot +School education place +Science systematic knowledge +scope range, extent +score points, twenty +scout explore, youth member +scrap small piece, fight +Screen display, filter +script writing, text +scrub clean, cancel +sea ocean, large water +search look for, examine +season time period, flavor +seat chair, place +second after first, time unit +Secret hidden, private +section part, division +Security safety, protection +seed plant start +seek search, try +segment part, section +select choose, pick +sell trade, convince +seminar meeting, class +senior older, higher +sense feeling, meaning +sentence words, punishment +series sequence, set +Service help, work +session meeting, period +settle resolve, establish +setup arrangement, organization +seven number 7 +shadow dark shape, follow +shaft rod, passage +shallow not deep +share divide, portion +shed building, lose +shell outer covering +sheriff law officer +Shield protection, defend +shift change, move +shine glow, polish +Ship vessel, send +shirt clothing +shock surprise, electrical +Shoe foot covering +shoot fire, photograph +Shop store, buy +short brief, not tall +Shoulder body part +shove push, force +Shrimp small shellfish +shrug shoulder gesture +shuffle mix, walk +sick ill, unwell +side edge, team +siege blockade, persistent attack +sight vision, view +sign symbol, indication +silent quiet, not speaking +silk smooth fabric +silly foolish, absurd +Silver precious metal +similar alike, comparable +simple easy, plain +since from then, because +sing make music, vocalize +siren alarm, mythical creature +Sister female sibling +situate place, locate +six number 6 +size dimensions, magnitude +skate glide on ice +sketch draw, outline +ski snow sport +skill ability, expertise +Skin outer covering +skirt clothing, avoid +Skull head bone +slab flat piece +slam shut forcefully +sleep rest, slumber +slender thin, slim +slice cut piece +slide slip, move smoothly +slight small, ignore +slim thin, small chance +slogan motto, phrase +slot opening, time +slow not fast +slush wet snow +small little, minor +smart intelligent, stylish +smile happy expression +smoke vapor, tobacco +smooth even, gentle +snack light meal +Snake legless reptile +snap break, photo +sniff smell, inhale +snow frozen precipitation +soap cleaning agent +soccer football sport +social relating to society +sock foot covering +soda carbonated drink +soft not hard, gentle +solar relating to sun +sold past tense of sell +Soldier military person +solid firm, reliable +solution answer, mixture +solve find answer +someone some person +song music, singing +soon in near future +sorry apologetic, sad +sort kind, arrange +soul spirit, essence +Sound noise, healthy +soup liquid food +source origin, supply +south direction, down +Space area, cosmos +spare extra, save +spatial relating to space +spawn produce, create +speak talk, say +special unique, particular +speed rate, velocity +spell magic, write letters +spend use money, time +sphere ball, globe +spice seasoning, variety +Spider eight-legged creature +spike sharp point, increase +spin rotate, turn +Spirit soul, enthusiasm +split divide, crack +spoil ruin, pamper +sponsor supporter, back +Spoon eating utensil +sport game, wear +spot place, stain +spray mist, scatter +spread extend, distribute +spring season, jump +spy secret agent +square four-sided shape +squeeze compress, pressure +Squirrel tree rodent +stable steady, horse building +Stadium sports venue +staff employees, stick +stage platform, phase +stairs steps +stamp mark, postage +stand be upright, tolerate +Staple basic or principal item +start begin, beginning +state condition, government +stay remain, visit +steak meat cut +Steel strong metal +stem plant part, stop +step pace, stage +stereo sound system +stick rod, adhere +still motionless, yet +sting prick, hurt +stock supply, shares +Stomach digestive organ +Stone rock, hard +stool seat, waste +Story tale, floor +stove cooking appliance +strategy plan, method +Street road, public way +strike hit, work stoppage +strong powerful, intense +struggle fight, effort +Student learner, pupil +stuff things, fill +stumble trip, make mistake +style manner, fashion +subject topic, person +submit present, yield +subway underground train +Success achievement, prosperity +such of that kind +sudden unexpected, quick +suffer experience pain +Sugar sweet substance +suggest propose, hint +suit clothing, be appropriate +summer warm season +sun star, solar +sunny bright, cheerful +sunset evening, end +super excellent, above +supply provide, stock +supreme highest, ultimate +sure certain, confident +surface outer layer, top +surge sudden increase +surprise unexpected event +surround encircle, environment +survey examine, poll +suspect doubt, person +sustain support, maintain +swallow bird, ingest +swamp wetland, overwhelm +swap exchange, trade +swear promise, curse +sweet sugary, pleasant +swift fast, quick +swim move in water +swing move back and forth +switch change, device +Sword blade weapon +symbol sign, representation +symptom sign of illness +syrup sweet liquid +System organized whole +Table furniture, list +tackle deal with, equipment +tag label, mark +tail rear appendage +talent ability, skill +talk speak, discussion +tank container, vehicle +tape sticky strip, record +target goal, aim +task job, assignment +taste flavor, sample +tattoo body art +taxi hired car +teach instruct, show +Team group, side +tell say, inform +ten number 10 +tenant renter, occupant +tennis racket sport +Tent portable shelter +term word, period +test examine, trial +text written words +thank express gratitude +that those, which +theme topic, subject +then at that time +Theory idea, hypothesis +there in that place +they those people +thing object, matter +this the present +Thought idea, thinking +three number 3 +thrive flourish, succeed +throw hurl, toss +Thumb large finger +thunder storm sound +Ticket pass, fine +tide ocean movement +Tiger striped cat +tilt lean, angle +timber wood, trees +Time duration, period +tiny very small +tip end, advice +tired weary, worn +tissue body cells, paper +title name, heading +toast bread, honor +tobacco smoking plant +today this day +toddler young child +toe foot digit +together with each other +toilet bathroom fixture +token symbol, coin +Tomato red fruit +tomorrow next day +tone sound, mood +tongue mouth organ +tonight this evening +Tool instrument, device +Tooth mouth bone +top highest, best +topic subject, theme +topple fall, overthrow +torch flame, flashlight +tornado wind storm +tortoise land turtle +toss throw, turn +total complete, sum +tourist traveler, visitor +toward in direction of +Tower tall structure +Town small city +Toy plaything, small +track path, follow +trade business, exchange +traffic vehicles, movement +tragic sad, disastrous +train railway, teach +transfer move, change +trap catch, snare +trash garbage, destroy +travel journey, move +tray flat container +treat care for, reward +tree woody plant +trend direction, fashion +trial test, legal case +tribe group, clan +trick deceive, skill +trigger cause, device +trim cut, neat +trip journey, fall +trophy prize, award +trouble problem, difficulty +Truck large vehicle +true real, correct +truly really, honestly +trumpet brass instrument +trust confidence, belief +truth fact, reality +try attempt, test +tube hollow cylinder +tuition school fee +tumble fall, roll +tuna fish type +tunnel underground passage +turkey bird, country +turn rotate, change +turtle shelled reptile +twelve number 12 +twenty number 20 +twice two times +twin double, pair +twist turn, distort +two number 2 +type kind, write +typical usual, characteristic +ugly unattractive, unpleasant +umbrella rain protection +unable cannot, incapable +unaware not knowing +Uncle parent's brother +uncover reveal, expose +under below, beneath +undo reverse, cancel +unfair unjust, biased +unfold open, develop +unhappy sad, displeased +uniform same, clothing +unique one of a kind +unit single thing +universe all existence +unknown not known +unlock open, free +until up to, before +unusual rare, strange +unveil reveal, show +update make current +upgrade improve, enhance +uphold support, maintain +upon on, above +upper higher, top +upset disturb, angry +urban city, metropolitan +urge encourage, desire +usage use, custom +use employ, utilize +used previously owned +useful helpful, practical +useless worthless, futile +usual normal, typical +utility usefulness, service +vacant empty, available +vacuum empty space, clean +vague unclear, indefinite +valid acceptable, legal +valley low land +valve control device +van vehicle, front +vanish disappear, fade +vapor gas, mist +various different, several +vast huge, extensive +vault secure room, jump +vehicle transport device +velvet soft fabric +vendor seller, dealer +venture risky undertaking +venue location, place +verb action word +verify confirm, check +version form, variant +very extremely, much +vessel container, ship +veteran experienced person +viable workable, possible +vibrant lively, bright +vicious cruel, savage +victory win, triumph +video recorded images +view see, opinion +village small town +vintage old, classic +violin stringed instrument +virtual simulated, almost +virus infection, program +visa travel document +visit go to see +visual relating to sight +vital essential, alive +vivid bright, clear +vocal relating to voice +voice sound, opinion +void empty, cancel +volcano mountain with lava +volume amount, loudness +vote choose, ballot +voucher coupon, receipt +voyage journey, trip +wage payment, conduct +wagon wheeled vehicle +wait stay, pause +walk move on foot +wall barrier, surface +walnut tree nut +want desire, need +warfare fighting, conflict +warm hot, friendly +warrior fighter, soldier +wash clean, flow +wasp stinging insect +waste garbage, squander +Water liquid H2O +wave water movement, gesture +way path, method +wealth riches, abundance +weapon fighting tool +wear have on, erode +weasel small mammal +weather atmospheric conditions +web spider net, internet +wedding marriage ceremony +weekend Saturday and Sunday +weird strange, odd +welcome greet, accept +west direction, sunset +wet moist, damp +what which thing +wheat grain crop +wheel circular object +when at what time +where at what place +whip lash, beat +whisper speak quietly +wide broad, extensive +width breadth, extent +wife married woman +wild untamed, natural +will future, determination +win succeed, victory +window opening, glass +wine alcoholic drink +wing flight appendage +wink close one eye +winner victor, champion +winter cold season +wire metal thread +wisdom knowledge, insight +wise intelligent, smart +wish desire, hope +witness observer, see +wolf wild dog +woman adult female +wonder marvel, think +wood tree material +wool sheep hair +word language unit +work job, function +world earth, planet +worry be anxious +worth value, merit +wrap cover, enclose +wreck destroy, ruin +wrestle grapple, struggle +wrist hand joint +write mark letters +wrong incorrect, bad +Yard area, measurement +Year twelve months +yellow bright color +you the person addressed +young not old +Youth young person +Zebra striped animal +zero nothing, number 0 +Zone area, region +Zoo animal park \ No newline at end of file diff --git a/data/wordlists/french_common_words_fr.txt b/data/wordlists/french_common_words_fr.txt new file mode 100644 index 0000000..b1a4d9a --- /dev/null +++ b/data/wordlists/french_common_words_fr.txt @@ -0,0 +1,168 @@ +# French Common Words - Wordlist +# Mots français courants pour phrases de passe sécurisées + +avec +être +avoir +faire +tout +aller +voir +savoir +pouvoir +falloir +vouloir +venir +dire +prendre +donner +mettre +partir +parler +finir +arriver +rester +entendre +demander +monter +passer +regarder +aimer +porter +appeler +ouvrir +temps +personne +année +façon +jour +homme +chose +enfant +pays +problème +monde +vie +main +famille +groupe +moment +question +droit +service +parti +nombre +maison +côté +travail +place +heure +état +pouvoir +part +moins +ville +grand +petit +premier +dernier +eau +grande +livre +nouveau +porter +raison +fois +tête +avant +après +france +français +politique +français +national +centre +euro +gouvernement +ministre +présent +conseil +paris +point +cours +formation +information +système +équipe +projet +entreprise +activité +recherche +résultat +programme +société +sécurité +communauté +développement +économie +marché +relation +culture +qualité +niveau +histoire +région +territoire +administration +communication +direction +mission +objectif +organisation +public +international +service +social +national +général +particulier +personnel +professionnel +politique +économique +public +social +européen +français +grand +nouveau +premier +dernier +important +possible +différent +général +local +national +international +européen +public +social +économique +politique +technique +militaire +culturel +naturel +humain +civil +commercial +industriel +financier +médical +scientifique +artistique +sportif +éducatif +alimentaire +environnemental \ No newline at end of file diff --git a/data/wordlists/german_common_words_de.txt b/data/wordlists/german_common_words_de.txt new file mode 100644 index 0000000..6ab3265 --- /dev/null +++ b/data/wordlists/german_common_words_de.txt @@ -0,0 +1,275 @@ +# German Common Words - Wordlist +# Häufige deutsche Wörter für sichere Passphrasen + +aber +alle +alles +also +andere +Anfang +arbeiten +auch +auf +aus +bei +bekommen +bereits +bis +bleiben +dabei +damit +dann +der +deutsche +doch +drei +durch +eine +einem +einen +einer +eines +einige +einzelne +entsprechend +ersten +etwa +etwas +Euro +finden +Frage +Fragen +gegen +gehen +gibt +grosse +grösste +gruppe +haben +Haus +heute +hier +hinter +jedoch +jetzt +kann +kommen +können +kurz +Land +lassen +laut +Leben +machen +mann +mehr +mein +Menschen +mit +nach +nachdem +name +nicht +noch +oder +ohne +platz +recht +sagen +schon +sehr +sein +sich +sie +sind +über +unter +verschiedene +viel +vom +vor +wann +was +weil +wasser +weg +welt +werden +wie +wieder +will +wir +wissen +wo +woche +wohl +während +zwischen +abenteuer +ablehnung +absicht +abteilung +achtung +aktivität +anfrage +angebot +ankunft +antwort +arbeit +aufgabe +aufmerksamkeit +auswahl +bedeutung +bedingung +behandlung +bereich +besuch +bewegung +bewertung +beziehung +bildung +chance +darstellung +denken +deutschland +entwicklung +erfahrung +erfolg +ergebnis +erhöhung +erinnerung +erklärung +erwartung +erzählung +familie +farbe +fehler +feier +fieber +fläche +form +frage +frau +freiheit +freude +freund +function +gefahr +gefühl +gegenwart +geld +gemeinde +geschichte +gesellschaft +gespräch +gewalt +gewicht +glaube +grund +gruppe +handel +haupt +herr +hoffnung +information +inhalt +interesse +jahr +jahrhundert +kind +kirche +klasse +kraft +krieg +kultur +kunst +leben +lehrer +leistung +Liebe +Licht +Luft +macht +mann +markt +masse +material +medizin +meinung +mensch +möglichkeit +moment +monat +musik +nacht +nachricht +natur +nummer +ort +person +plan +politik +position +preis +problem +prozent +prozess +punkt +raum +recht +region +regierung +reise +rolle +sache +schule +seite +situation +sommer +sprache +staat +stadt +stelle +stimme +stunde +system +tag +teil +text +thema +tisch +titel +tod +tradition +uhr +unternehmen +unterschied +ursache +veränderung +verhalten +verkehr +vermögen +versuch +vertrag +vertrauen +verwaltung +verwendung +volk +wahrheit +ware +wasser +weg +welt +wert +wirtschaft +wissenschaft +woche +wohnung +Wort +Zahl +Zeit +Zeitung +Ziel +Zukunft +Zusammenhang +Zustand \ No newline at end of file diff --git a/data/wordlists/italian_common_words_it.txt b/data/wordlists/italian_common_words_it.txt new file mode 100644 index 0000000..9b4c0f5 --- /dev/null +++ b/data/wordlists/italian_common_words_it.txt @@ -0,0 +1,166 @@ +# Italian Common Words - Wordlist +# Parole italiane comuni per passphrase sicure + +essere +avere +fare +dire +andare +potere +dovere +volere +sapere +dare +stare +vedere +uscire +partire +parlare +leggere +scrivere +sentire +mettere +portare +anno +giorno +tempo +volta +persona +modo +casa +parte +cosa +paese +problema +mondo +vita +mano +famiglia +gruppo +momento +domanda +diritto +servizio +lavoro +posto +ora +stato +governo +italia +italiano +nazionale +centro +euro +politica +ministro +presente +consiglio +roma +punto +corso +formazione +informazione +sistema +squadra +progetto +azienda +attività +ricerca +risultato +programma +società +sicurezza +comunità +sviluppo +economia +mercato +relazione +cultura +qualità +livello +storia +regione +territorio +amministrazione +comunicazione +direzione +missione +obiettivo +organizzazione +pubblico +internazionale +sociale +generale +particolare +personale +professionale +economico +europeo +grande +nuovo +primo +ultimo +importante +possibile +diverso +locale +militare +culturale +naturale +umano +civile +commerciale +industriale +finanziario +medico +scientifico +artistico +sportivo +educativo +alimentare +ambientale +bene +male +molto +poco +tutto +niente +sempre +mai +oggi +ieri +domani +ora +prima +dopo +qui +dove +come +perché +quando +quale +quanto +chi +cosa +sopra +sotto +dentro +fuori +davanti +dietro +prima +dopo +insieme +solo +anche +ancora +già +più +meno +bene +meglio +peggio +tanto +poco +troppo +abbastanza \ No newline at end of file diff --git a/data/wordlists/spanish_common_words_es.txt b/data/wordlists/spanish_common_words_es.txt new file mode 100644 index 0000000..d8adb58 --- /dev/null +++ b/data/wordlists/spanish_common_words_es.txt @@ -0,0 +1,216 @@ +# Spanish Common Words - Wordlist +# Palabras españolas comunes para frases de contraseña seguras + +ser +haber +estar +tener +hacer +poder +decir +ir +ver +saber +querer +llegar +pasar +deber +poner +parecer +quedar +creer +hablar +llevar +tiempo +persona +año +vez +día +hombre +cosa +país +problema +mundo +vida +mano +familia +grupo +momento +pregunta +derecho +servicio +trabajo +lugar +hora +estado +gobierno +españa +español +nacional +centro +euro +política +ministro +presente +consejo +madrid +punto +curso +formación +información +sistema +equipo +proyecto +empresa +actividad +investigación +resultado +programa +sociedad +seguridad +comunidad +desarrollo +economía +mercado +relación +cultura +calidad +nivel +historia +región +territorio +administración +comunicación +dirección +misión +objetivo +organización +público +internacional +social +general +particular +personal +profesional +económico +europeo +grande +nuevo +primero +último +importante +posible +diferente +local +militar +cultural +natural +humano +civil +comercial +industrial +financiero +médico +científico +artístico +deportivo +educativo +alimentario +ambiental +bueno +malo +mucho +poco +todo +nada +siempre +nunca +hoy +ayer +mañana +ahora +antes +después +aquí +allí +donde +como +porque +cuando +cual +cuanto +quien +que +sobre +bajo +dentro +fuera +delante +detrás +junto +solo +también +todavía +más +menos +bien +mejor +peor +tanto +demasiado +bastante +agua +aire +tierra +fuego +sol +luna +estrella +mar +río +montaña +bosque +flor +árbol +casa +ciudad +pueblo +calle +camino +puerta +ventana +mesa +silla +cama +libro +papel +palabra +número +letra +color +blanco +negro +rojo +azul +verde +amarillo +grande +pequeño +alto +bajo +largo +corto +ancho +estrecho +gordo +delgado +joven +viejo +nuevo +antiguo +bueno +malo +bonito +feo +fácil +difícil \ No newline at end of file diff --git a/data/wordlists/swiss_german_slaengikon.txt b/data/wordlists/swiss_german_slaengikon.txt new file mode 100644 index 0000000..497d892 --- /dev/null +++ b/data/wordlists/swiss_german_slaengikon.txt @@ -0,0 +1,17685 @@ +# from https://zuri.net/de/zurich/slängikon.htm as of 2025-08-24 +# Schweizer Dialekt Wörter und Begriffe +# Swiss German Slängikon - Wordlist +(ab)verreckt gescheitert +(fuuli) Iseli Kleingeld +(Weed) verpacke einen Joint drehen +100 Pro überzeugt, engagiert +100-Füdli-Zwänzger Motorrad (125 ccm) +16-zu-9-Blick Ausländer (Asiate) +1A gut +24karätigs Arschloch Schimpfwörter +4-Saite-Dampfhammer Bass +400 Kilo Moschtbröckli Pferd +90-60-90 – und s andere Bei au dicke Person +90-60-90 – und s anderi Bei au Schimpfwörter für Frauen (dicke Beine) +a d Kandare näh tadeln, massregeln +a de Gränze am Limit +a de Huut umeriisse onanieren (Männer) +a de Pfingschte gaht s am ringschte Feiertage +a de Sprütze sii dominieren +a de Sprützi sii Chef:in/Vorgesetzte:r +a de Strass zur Lunge wiiter boue eine Zigarette rauchen +a de Sune brötle sonnenbaden +a de Zuckerstange schläcke Oralverkehr (bei Männern) +a dem bliibt jedi chläbe Frauenheld +a mim Chopf aa isch Vollmond Kopfschmerzen +a s Bei seiche mobben +A welem Schläckstängel hät de siis Billeet poschtet? Redensarten (Verkehr) (schlechter Autofahrer) +Aa-Ööderi – en Aa-Ööder Langweiler:in +aabäägge schimpfen, beschimpfen +aabätte bewundern +Aabigässe Abendessen +aabiime anbaggern, aufreissen (engl. to beam) +aabiisse anbaggern, aufreissen +aabinde jassen (die Karte des Gegners übertrumpfen) +aabohnere anbaggern, aufreissen +aabore um Geld betteln +aabränne eine Abfuhr erhalten +aabrötle braten +aabumse hänseln +aacherig tüchtig +aachloibe kleben +aachlöpfe aufprallen +aachoo eintreffen +aachrääje schimpfen, beschimpfen +aachratze anbaggern, aufreissen +aadocke anbaggern, aufreissen +aadocke Sex haben +aadräje verkaufen +AAE-Chind schlecht erzogenes Kind (antiautoritär erzogen) +aafigge ärgern, provozieren +aafigge hänseln +aafigge schimpfen, beschimpfen +aafiile schimpfen, beschimpfen +aaflansche Sex haben +aafrääse anbaggern, aufreissen +aafrääse schimpfen, beschimpfen +aafummle anfassen +aagäh bluffen +aagäh wie-n-en Wald voll Affe bluffen +aagattige anpacken +aagattige vorbereiten, planen +aagfixt überzeugt, engagiert +aagfrässe überzeugt, engagiert +Ääggi! Ätsch! +aaghocket angebrannt +aagleite Chleiderständer grosse Person +aagleite Stäcke dünne Person +aagleiti Fischer-Ruete dünne Person +aagleits Röntgebild dünne Person (weil man alle Knochen sieht) +aagrabe anbaggern, aufreissen +aagrapsche berühren, befingern +aagschribnigs Huus Restaurant +Aagschwämmte Einwanderer +aagspannti Atmosphäre haa streiten +Aahang Baby +Aahang Freundin, Partnerin +Aahang Freundin/Partnerin +Aahänger Gesäss +aahänke verkaufen +Aaheuel Brot (Anschnitt) +aahimmle bewundern +aakicke anbaggern, aufreissen +aaknackt kränklich +aalähne auf Tuchfühlung gehen +aalange anfassen +aalange berühren, befingern +Aalegi Anzug +Aalegi Kleidung +aalehre einarbeiten +aaleiere vorbereiten, planen +Aaleitig Handbuch (Manual) +aaliime kleben +aalösche das Licht einschalten +aalüüge betrügen +aamache anbaggern, aufreissen +aamache anbaggern, aufreissen +aamache ärgern, provozieren +aamächelig verlockend +aamotze schimpfen, beschimpfen +aapacke arbeiten +aapfiiffe schimpfen, beschimpfen +aapfiiffe tadeln, massregeln +aapfoote anfassen +aapfurre schimpfen, beschimpfen +aapirsche anbaggern, aufreissen +aapisse ärgern, provozieren +aapumpe schnorren +aapumpe um Geld betteln +aaputsche aufprallen +aarämple anbaggern, aufreissen (plump) +aaränne verlieren +aaranze anbaggern, aufreissen (aufdringlich) +aareise vorbereiten, planen +Aargauer isch duregloffe öffentliche Verkehrsmittel (wenn ein Tram wegen einem Fussgänger eine Notbremsung macht) +Aargauer-Falle öffentliche Verkehrsmittel (versehentliche Betätigung der Tramklingel durch Tritt auf den im Boden eingelassenen Knopf) +Aargauneri – en Aargauner Aargauer:in +aarichte den Tisch decken +aariisse vorbereiten, planen +aaröötze schimpfen, beschimpfen +Aarvel Mengenmasse (Arm voll) +aaschiebe drängen +Aaschiss überchoo tadeln, massregeln +aaschmiere betrügen +aaschnalle anbaggern, aufreissen +aaschnauze tadeln, massregeln +aaschnurre um Geld betteln +aaschwindle betrügen +Aaschwirre! Alle herkommen! +Aaschwirre! Alle herkommen! +aaseiche schimpfen, beschimpfen +aaseiche tadeln, massregeln +aasetze anbaggern, aufreissen +aastäche entjungfern +Aasuuge! Alle herkommen! +Aatanze! Alle herkommen! +Aatanze! Alle herkommen! +aatätscht kränklich +aateigge vorbereiten, planen +aatische den Tisch decken +aatööple anfassen +aatööple berühren, befingern +aatörne anbaggern, aufreissen (engl. turn on) +Aatrabe! Alle herkommen! +Aaträtte! Alle herkommen! (militärisch) +aatreie das Licht einschalten +aatütsche aufprallen +Aawiisig Handbuch (Manual) +ääxbääx hänseln +aazapfe entjungfern +Aazelle-Bölle-Schelle Kinderspiele (Zählreim) +Aazelle, Bölle schele ausknobeln (Zählreim) +aazettle vorbereiten, planen +aazünde hänseln +Aazünderi – en Aazünder Schwätzer:in +ab de Röhre suufe Oralverkehr (bei Männern) +ab der Wält abgelegen +Ab driissg Gramm wird s untüütlich unverständliche Sprache (voller Mund beim Sprechen) +Ab in den Sarg Aids +ab uf Fratzikon schlecht erzogenes Kind +abartig daneben, verwerflich +abartig sehr gut +abartig vill sehr viel +abbättle schnorren +abblitze eine Abfuhr erhalten +abbrotze abbrechen +abbüge abbiegen +ABC WC +ABC-Aagriff furzen +abcheibe flüchten, davonrennen +abchläme abbrechen +abchläme stoppen +abchnüttle Gas geben +abchratze sterben +abchupfere kopieren, imitieren +abdampfe flüchten, davonrennen +abdampfe nach Hause gehen +abdiesle Redensarten (Militär) (Militär-Fahrzeuge mit Diesel einreiben) +abdunschte furzen +abdüüse flüchten, davonrennen +abdüüse sich verabschieden, weggehen +abe chnüpple zuschlagen +abe fahre in die Hocke gehen +abe gah wie-n-en Spoitz a de Schiibe bewundern +abe gah wie-n-en weiche Chäs bewundern +abe huure in die Hocke gehen +abe-öle leer trinken +abebambele herunterhängen +abebängle zuschlagen +abebrätsche jemanden fertigmachen +abebutze jemanden fertigmachen +abechaufe demütigen +abechaufe jemanden fertigmachen +abedogge zuschlagen +Abee WC +abefahre schimpfen, beschimpfen +abeflüüge hinunterfallen +abefrääse jemanden fertigmachen +abegheje hinunterfallen +abeghundet abgerackert +abegschigget abgenützt +abegwerchet abgerackert +abehacke jemanden fertigmachen +abehacke zuschlagen +abehitte zuschlagen (engl. to hit) +abehöckle in die Hocke gehen +abehudle herunterspielen +abehuebere zerstören +abehuure knien +abekrampfet abgerackert +abelaa gewinnen +abelääre leer trinken +abelääre trinken, sich betrinken +abelade downloaden +abelampe herunterhängen +abemache demütigen +abemache jemanden fertigmachen +abenand entzwei +abenand kaputt +abenand chlöpfe zerbrechen +Aber e chli rassig! Beeil dich! +aber echli tutswitt schnell (franz. tout-de-suite) +aber es bitzli dalli sich beeilen (beeil dich) +Aber hoppla! Beeil dich! +aberapse Geige (gleichgültig herunterspielen) +aberapse herunterspielen +abeschletze essen (rasch) +abeschmuuse knutschen +abeschnättere hinunterfallen (plötzlich) +abeschuufle downloaden +abesoue herunterspielen +abespitze zuschlagen +abesuuge downloaden +abetätsche hinunterfallen (laut) +abetätsche zuschlagen (zu Boden) +abetöffle zuschlagen +abetrampet abgenützt (Schuhe) +abetroole hinunterfallen (purzeln) +abetrucke essen +abetschättere hinunterfallen (lärmend) +abetue tadeln, massregeln +abewürge essen +abewürge feilschen (runterhandeln) +abezapfe downloaden +abfacke mit Drogen abstürzen (engl. fuck up) +abfahre uf öpper sich verlieben +Abfahre Züri 50! Hau ab! (von der PLZ 8050 für Zürich-Oerlikon) +Abfahre, mini Bou-Stell! Hau ab! +Abfahre! Hau ab! +Abfall-Chübel Abfalleimer +Abfall-Inhaliererin – en Abfall-Inhalierer Müllfrau/Müllmann +abferkle gebären +abfigge abreiben +Abflug mache sich verabschieden, weggehen +abfüdle flüchten, davonrennen +abfurze flüchten, davonrennen +abgaa wie-n-e Rageete explodieren +abgaffe kopieren, imitieren +abgäh nachlassen +abgäh verkaufen +abgah wie-n-e Rageete sich ärgern +Abgang mache nach Hause gehen +Abgang mache sich verabschieden, weggehen +abgehendi Blähig furzen +abgfaahre niederträchtig +abgfackt abgenützt (engl. to fuck) +abgfackt daneben, verwerflich (engl. fuck) +abgfackt niederträchtig (engl. to fuck) +abgfigget abgenützt +abgfiggeti Randsteigurke Schimpfwörter +abghalfteret abgenützt +abgloffe abgenützt (Schuhe) +abgnaget abgerackert +abgsaageti Hose Hose (Shorts) +abgschiengget abgenützt +abgsoffe betrunken +abgstosse abgenützt +Abgwöhner schlecht +abhäggle sich trennen +abhänge herumlungern +abhaschple abrollen +abhaschple Wäscheleine abrollen +abhaue flüchten, davonrennen +abhaue nach Hause gehen +abhaue sich verabschieden, weggehen +abhusche flüchten, davonrennen +abhusche sich verabschieden, weggehen +Abklämmte Fehlstart +Ablaich-Station Bordell +abläschele feilschen (abjagen) +abläschele schnorren +Ableger Kinder +abligge schlafen +abliire abrollen +abliire Wäscheleine abrollen +ablösche das Licht ausschalten +Ablöscher schlecht +abluchse schnorren +abluege kopieren, imitieren +abluuse schnorren +abluuse verlieren (engl. to lose) +abmurkse töten +abmurkse umbringen +abnäh pflücken, ernten +abnidle Geld gewinnen +abnipple sterben +abpflocke aufs WC gehen +abputze abreiben +abredle abbiegen +abriisse betrügen +abripse abreiben +abrugele abrollen +abruume gewinnen +abruume zu viel Geld verlangen +ABS – Arsch breiter als d Schultere für die weibliche Figur (grosser Po) +absaage jemanden fertigmachen +absaage sich trennen +Absacker Drinks (Digéstif) +Absacker Schnaps +absafte Samenerguss +abschabe abreiben +abschible abbiegen +Abschied näh sich trennen +abschiesse verblassen +abschiffe verlieren +Abschiidsbrief schriibe sich trennen +abschiisse stuhlen +abschlaa treten +abschläcke küssen +abschlaffe langsam aufhören +Abschlepper Freier +abschliiche nach Hause gehen +abschliiche sich unbemerkt von der Truppe absetzen +abschlüüfe nach Hause gehen +abschmiere den Hintern versohlen +abschnappe flüchten, davonrennen +abschriibe Geld verlieren +Abschriiber mache pleite (Geld verlieren) +abschüüsse sich trennen +abschwarte den Hintern versohlen +abschwarte zuschlagen +abschwirre sich beeilen +abseckle flüchten, davonrennen +Abseil-Stazion WC +abseile stuhlen +abserble kränkeln +abserble sterben +abserviere klauen, stehlen +absoluti Hit gut +Abspitz- und Betonier-Technikeri – en Abspitz- und Betonier-Techniker Bauarbeiter:in +abspitze onanieren (Männer) +absprütze onanieren (Männer) +absprütze Samenerguss +absprütze Sex haben +abstaube klauen, stehlen +abstelle das Licht ausschalten +abstinke verlieren +abstrample das Letzte herausholen +Abstrich mache Sex haben +Absturz Drogenabhängiger +abstürze bis in die Morgenstunden feiern +abstürze trinken, sich betrinken +absuufe verlieren +absuuffe sterben +absuuse flüchten, davonrennen +abtakleti Fregatte Schimpfwörter +abtanze sich verabschieden, weggehen +Abteiliger Major (als Abteilungskdt) +abtempiere sich unbemerkt von der Truppe absetzen (Artillerie) +abträtte sterben +abtröchne gewinnen +abtröchne überholen +abtrucke Geld ausgeben, bezahlen +abtrucke Samenerguss +abtrucke Sex haben +abtue Umgang mit Tieren (einschläfern lassen) +abtuube flüchten, davonrennen +abtuube rennen (davonrennen) +abtuube sich verabschieden, weggehen +Abtuube, Kamarade! zum Abschied +abverheit missraten +abverheiti Ärztin – en abverheite Arzt Zahnärztin/Zahnarzt +abverhejt gescheitert +abverreckt missraten +Abwart Hausmeister +abwarte und Tee trinke zuschauen und abwarten +Abwäschmaschine Geschirrspüler +abwiide einen Joint rauchen (engl. weed) +abzable tanzen +abzäpfe flüchten, davonrennen +Abzgi Auszeit, Time out +Abzieh-Bildli Schwächling +abzische sich verabschieden, weggehen +abzittere sich verabschieden, weggehen +abzocke um Geld betteln +Abzockeri – en Abzocker Bankangestellte:r +abzogge betrügen +abzogge zu viel Geld verlangen +abzottle nach Hause gehen +abzügle klauen, stehlen +abzügle zu viel Geld verlangen +abzwiige abbiegen +AC gut (Abk. für affen-cool) +Acher-Säge Kartoffel +acht Sekunde Naahallziit im Buuch Hunger haben +Ächt? Tatsächlich? +Achterdeck Gesäss +Achtig gäh aufpassen +Achtung – Glattiis Geschwindigkeitskontrolle +ächze atmen (schwerfällig) +Äcid LSD +ackere arbeiten (motiviert) +ad Kandarre näh unterdrücken +ad Rieme-Bar gah aufs WC gehen +ad Seck gah arbeiten (motiviert) +ad Wand nagle Sex haben +adam nackt +Ade zum Abschied +Adi Adjutant +Adidas-Soldat Gefreiter +Adie merci! zum Abschied +Adie und furt zum Abschied +Adihasch Sportartikel (Adidas) +Adios zum Abschied +Adler-Horscht Attika-Wohnung +Adler-Sischteem eintippen (Eingabe mit einem Finger) +Adlernase Nase (gebogene Nase) +Adoptiv-Zäh Zahnprothese +Aeschbacher Aschenbecher +Aff haa betrunken +Affe spiled im Chopf Schlagzüüg betrunken +affe- sehr +Affe-Brot Banane +Affe-Chaschte Gebäude, Lokalitäten (Kantonsschule Hohe Promenade) +Affe-Chefig Restaurants (Palavrion) +Affe-Gilet Brusthaare +Affe-Gipfeli Banane +Affe-Gnaagi Banane +Affe-Pischtole Banane +Affe-Schile stark behaarter Männer-Oberkörper (Affen-Gilet) +Affe-Schüblig Banane +Affe-Servila Banane +Affe-Ständer Motorrad-Typen (Harley) +Affechaschte Fernseher +Affechelti Wetter (sehr kalt) +Affefuetter Banane +affegigelgagelgeil gut +Affeschand Schande +affetitte- sehr +affig dumm +affig manieriert +AFH – Arsch frisst Hose Tanga +Afrikante-Bagger öffentliche Verkehrsmittel (Bus 32) +AG – Alles Gentlemen Aargauer:in +AG: Achtung Gefahr (wenn sich ein Aargauer Auto nähert) – GA: Gefahr aufgehoben (wenn man das Aargauer Auto im Rückspiegel sieht), Autokennzeichen national +AG: Alles Gentlemen Autokennzeichen national +AG: Alli gstört Autokennzeichen national +AG: Amputiertes Gehirn Autokennzeichen national +AG: Arschloch geprüft Autokennzeichen national +AG: Ausser Gefahr Autokennzeichen national (wenn sich ein Aargauer Auto entfernt) +AG: es Arschgsicht Autokennzeichen national (Raser, Rowdy) +Agetsche Elster +Äggi-pääggi! Ätsch! +aggressiv wandere Nordic Walking +aggro wütend (Abk. von aggressiv) +Agrar-Pank Volksmusik (engl. punk) +Agro-Grossfläche-Designerin – en Agro-Grossfläche-Designer Bäuerin/Bauer +Ähli-Ähli mache trösten +AHV-Guetzli Autos von Mercedes (Mercedes) +AHV-Versänkerlis spile Aufträge unter der Hand vergeben +Airbags Brüste (grosse Brüste) +Airolo-Göschene Das ist mir egal (der Inhalt geht zum einen Ohr hinein und zum andern hinaus – wie beim Gotthard-Tunnel) +Aisse Akne (Furunkel) +AK schlecht erzogenes Kind (Arschloch-Kind) +Akkordeon Arbeitsplatz (bei Akkordarbeit) +akquiriere anbaggern, aufreissen +Aktion gäh Sex haben +aktivierti Spermie Kinder +Akzie-Hügel Orte (in Zürich) (Zürichberg, Kreis 7) +albe jeweils +Albi Vornamen (männlich) (Albert) +albigs jeweils +Album-Hündli Hündchen (am Schluss werden sie eingeklebt) +Alfa Roschteo Auto-Typen +Alfi Vornamen (männlich) (Alfred) +Ali Lööli tüend iichaufe Einkauf (Aldi) +ali Nüüni Krönung, Höhepunkt (vom Kegeln) +ali Vieri vo sich strecke sich ausruhen (Arme und Beine) +Alina Prominente (national) (Alain Sutter, eh. Fussballer) +Alk Alkohol +Alk-Liiche Betrunkene:r +Alki Trinker:in, Alkoholiker:in +Alkohol macht d Bäggli rot und d Bire hohl Alkohol +Alkohol macht d Bire hohl – isch d Bire hohl, hät s wieder Platz für Alkohol Alkohol +Alkove Dachboden +Alkverbrännigsaalaag Leber +all Hänne-Schiss immer wieder +all Hänneschiss zu wiederholtem Male +all schiisspott manchmal +all zwee Minute immer wieder +All-Ride-Tuner tunen (engl., billig getuntes Auto) +all-schiis-pott fortzu +all-schiss-pott zu wiederholtem Male +alle Cheibs alles Mögliche +alle Durenand alles Mögliche +alle Gugger alles Mögliche +alle Schmätter alles Mögliche (im negativen Sinne) +alle Tod und Tüüfel alles Mögliche +alle Züügs alles Mögliche +Alle-Cheib-Lädeli Comestibles-Geschäft +allem aa anscheinend +allem Aaschii aa anscheinend +Allemöösli Gebäude, Lokalitäten (Bad Allenmoos) +Allerletscht niederträchtig +alles bachap pleite +Alles Banane? Alles klar? +Alles Billige Mischt Einkauf (Warenhaus ABM) +Alles da im BH? Schüttelreime +Alles Disco? Alles klar? +alles gäh erbrechen +alles Gäld as Füdli hänke Geld verschwenden (für Kleider) +Alles i de Hose? Alles klar? +Alles iisi in Brindisi? Schüttelreime +Alles iisi, Portugiisi? Schüttelreime +Alles im Öl? Alles klar? +alles is Füdli schoppe verwöhnen +Alles klar a de Bar? Alles klar? +Alles klar in Sansibar? Alles klar? +Alles klar, Waldemar? Schüttelreime +Alles Klara? Alles klar? +Alles kuul in Istanbul? Schüttelreime (engl. cool) +alles laa fahre aufgeben, resignieren +alles laa tschäddere aufgeben, resignieren +alles ligge lah wie d Hüehner de Dräck Unordnung, Chaos +Alles Oki-Doki? Alles klar? +Alles paletti? Alles klar? +Alles paletti? Wie geht's? +Alles picco-bello? Alles klar? +Alles rädi? Alles klar? (engl. ready) +Alles Rodscher in Kambodscha? Alles klar? +Alles rotscher? Alles klar? (engl.) +Alles sänkrächt! Beruhige dich! +Alles sänkrächt? Alles klar? +Alles us eim Stuck gfiilet Auto-Typen +alles use laa, wo kei Mieti zahlt stuhlen +alles uselaa, wo kei Mieti zallt urinieren +alles verpfupft vergeblich +alles Verruckts alles Mögliche +Alles was rächt isch, aber s Hämp ghöört i d Hose Ich habe genug +alles zäme vollständig +Allesabeschluckerli Kosenamen +Alli aadogge! Alle herkommen! +Alli Achtig! Respekt! +Alli Affe gaffed Redensarten (Small Talk) (wenn alle zuschauen) +Alli Affe gaffed! Schaulustige:r +alli freihalte eine Runde ausgeben +Alli in Reih und Glied! Alle herkommen! +alli mal Extremadura leer trinken +alli Nüüni Kegeln, Bowling (alle Neune) +Alli Tasse im Schrank – aber nöd de Reihe naa! Du bist ein Idiot! +Alli Zähni! Respekt! +allig jeweils +allig manchmal +Allohol Alkohol +allpot und grad wieder zu wiederholtem Male +allpott fortzu +allpott häufig +allpott immer wieder +allpott manchmal +alls jeweils +alltag s gliich Gschär zu wiederholtem Male +allwääg sicher nicht +allwääg wahrscheinlich +allwäg falsch (sicher nicht) +Aloha zur Begrüssung +Alp-Öhi alter Mann (bärtig) +Alp-Qaida Bart +Alpe-Bonsai Appenzeller:in +Alpe-Coci Schnupftabak (Alpen-Kokain) +Alpe-Disco Volksmusik +Alpe-Judo Schwingen +Alpe-Lüüte Kuhglocken +Alpe-Nordhang-Essig Wein +Alpe-Whisky kalte Schokolade +Alpe-Whisky Milch +Alpe-Zwerg Appenzeller:in +Alperöösli-Ziit Menstruation +Alphorn-Blööseri – en Alphorn-Blööser Strassenwischer:in (das Kinn auf den Besenstiel gestützt) +Alpstei-Idiot Appenzeller:in (AI) +Alt Freund, Partner +alt uusgseh abgerackert +alt uusgseh verlieren +alt uusgseh laa gewinnen +alte Bock alter Mann +alte Chnoche alter Mann +alte Chnuschti alter Mann +alte Chüeni alter Mann +alte Glüschtler alter Mann +alte Gwaggli alter Mann +alte Hach alter Mann +alte Sack alter Mann +alte Trabant Mitarbeiter:in (erfahren) +alti Gumsle alte Frau +alti Gurre alte Frau +alti Häx alte Frau +alti Jumpfere alte Frau +alti Pfluttere alte Frau +alti Röntle Fahrrad +alti Schachtle alte Frau +alti Schnalle alte Frau +alti Schreckschruube alte Frau +Alti Socke Artischocken +alti Tschättere alte Frau +alti Waar Gerümpel +Altiise Gewehr +alts Güetsi alte Frau +alts Hutzelfraueli alte Frau +alts Mandli alter Mann +alts Müetterli alte Frau +alts Ross im Stall Mitarbeiter:in (erfahren) +am Aaschlaag sii Stress +am Aaschlag am Limit +am Aaschlag gestresst +am Aaschlag müde, erschöpft +am anus mundi abgelegen +am Arsch am Limit (am Ende) +Am Arsch isch düschter! Du kannst mich mal! +am Arsch vo de Wält abgelegen +am Bättelstab arm +am Berg am Limit +am beschte Kolleg vo de Fründin d Hand schüttle urinieren (Männer) +am Bode kaputt +am Bode müde, erschöpft +am Chüssi lose schlafen +am Diechsel zehre lenken +am duretrigge wütend +am duretrüle wütend +am e andere Egge anderswo +am falsche Griff zieh sich irren +am Fass haa bewältigen, meistern +am Gaht-Nüme am Limit +am Gas hänke Gas geben +am Gsicht e chli Farb gäh sich schminken +am Haag am Limit +am Haag frässe anbaggern, aufreissen +am Herrgott de Tag abstähle ausnutzen, aushalten +am Herrgott de Tag stähle verschlafen +am Hungertuech gnage arm +am Kabel zieh onanieren (Männer) +am Knigge de Haagge stelle sich schlecht benehmen +am lääre Taape suuge arm +am Laufmeter zu wiederholtem Male +am leere Taape suuge leer ausgehen +am liebe Gott de Tag abstäle herumlungern +am Meter häufig +am Muul abspaare Geld sparen +am No-Go am Limit (engl.) +am Rand am Limit +am Ranze kaputt +am raschte wütend +am Rieme riisse ausharren, durchstehen +am Rumpf kaputt +am Sack zeere tadeln, massregeln +am Schärme Wetter (im Trockenen) +am Schiissigriff zieh hereinfallen +am Schissigriff zoge haa Pech haben +am Schmiernippel vo der Erdachse abgelegen +am Schuume gestresst +am Seil abe laa betrügen +am Start anwesend +am Stinke aa chunnt s go schiisse furzen +am Stuelbei saage schaden +am Süüche kränklich +am Ton aa gnüegelet s rülpsen +am träje sii wütend (am Durchdrehen) +am Tropf hänke Internet (im Internet surfen) +am Uberbiisse gestresst +am üsserschte Egge am Limit +am üsserschte Zipfel am Limit +am Wasser poue haa weinen +am werweisse unschlüssig +am Zipfel suuge Oralverkehr (bei Männern) +Ambitzgi Ameise +ame jeweils +Amediesli Kosenamen +Amediissli Pulswärmer +Ameise 1'000 Franken (1'000er-Note) +Ameise-Eier Reis +Ameisi Ameise +amel manchmal +amel öppe jeweils +amene lääre Chnoche gnaage arm +amene Sög zieh eine Zigarette rauchen +Ami Amerikaner:in +Ami-Fass Auto-Typen (grosses US-Auto) +Ami-Fass Auto-Typen (grosses US-Auto) +Ami-Schiff Auto-Typen +Ami-Schlitte Autos aus den USA (grosses US-Auto) +amigs manchmal +amix jeweils +AMO Fluchwörter (Arsch mit Ohre) +Amor-Peitsche Penis +Ampelgmües Peperoni (rote, grüne und gelbe Peperoni) +Ämpeligold Schmuck (Messing, von Ampel = Messinglampe) +Ampère-Chützleri – en Ampère-Chützler Elektriker:in +Amüüs-Busch Häppchen (franz. amuse-bouche) +an Charre fahre tadeln, massregeln +an Fuetter-Troog gah essen +an Grossrächner aaschlüüsse Sex haben +an Hahne gah trinken, sich betrinken +an Huet stecke auf Geld verzichten +an Huet stecke aufgeben, resignieren +an Piss-Stand gah aufs WC gehen +an Ranze mache zerstören +an Züzi Zürcher:in (aus Graubündner Sicht) +Anakonda würge urinieren (Männer) +Anal-Akrobatin – en Anal-Akrobat Schmeichler:in +Anal-Hueschte Durchfall +Anal-Rülpser furzen +analgschaltete Gwaggli Schimpfwörter +Analschnuppe furzen +andaluusisch Teigg-Express öffentliche Verkehrsmittel (Spanisch-Brötli-Bahn) +ander abschläcke Zungenkuss +anderi is Loch stosse sich herausreden +Anderi oder en Andere haa eine Affäre haben +andersch sehr gut +andersch gfädlet falsch +anderschume andererseits +anderschume falsch +Ändi Betong Ultimatum +ändlos zu wiederholtem Male +Ändstuufe After +Andy Vornamen (männlich) (Andreas) +äne am Röschti-Grabe französische Schweiz +ane stink-wichtigi Sitzig gah aufs WC gehen +aneblettere Geld ausgeben, bezahlen +anechafle schreiben +anenand hangebliibe Sex haben +anepängle hinschmeissen +anerüehre hinschmeissen +anetätsche hinschmeissen +Ängeli Kosenamen +Ängeli singe ghöre glücklich +Anger flaches Wiesengelände +Ängerling Crevetten +Ängi Orte (in Zürich) (Enge) +Angscht haa Angst haben +Äni Vornamen (weiblich) (Anja) +Anke Butter +Anke-Flöckli Kosenamen +Anke-Ziger Butter (Glarner Kräuterbutter) +Ankebölleli Brüste +Ankebölleli Butter +Ankehohl Alkohol +Anker userüere bremsen +Anketierli Marienkäfer +Anketrinli Marienkäfer +Annemi Vornamen (weiblich) (Annemarie) +ännere spazieren +ännet jenseits +Anschi Vornamen (weiblich) (Angela) +Antäne Penis +Änte Vornamen (männlich) (Ernst) +Anti-Smeili mache unglücklich, deprimiert (engl. smiley) +Antiquitäte-Händlerin – en Antiquitäte-Händler ­ Langweiler:in (erzählt Altbekanntes) +AOK-Shopper Rollator (AOK: Allgemeine Ortskrankenkasse) +ap de Stange Konfektionskleidung +ap i s Näscht! Hau ab! +ap uf d Boim! Beeil dich! +ap uf d Boim! Hau ab! +ap wie d Füürwehr! Beeil dich! +ap wie de Tüüfel flüchten, davonrennen +Apéro Drinks (Apéritif) +apfahre sich verabschieden, weggehen +Apfikaatin – en Apfikaat Anwältin/Anwalt (Advokat:in) +Apothek Bars, Restaurants, Clubs (eh. Oxa) +Apparat Mobiltelefon (Handy) +Apparillo für die männliche Figur (gross und breit) +Appezäll-Innerrhödler Dorfsüüch Aids +Appizäller frisst de Chäs mitsamt em Täller Käse (Liedzeile) +Applikations-Technikeri – en Applikations-Techniker Flächenmaler:in +apprännt pleite +Aprikösli Brüste +apschliiche entwischen +apschliiche sich verabschieden, weggehen +apspurte flüchten, davonrennen +Ar-Sch Arbeitsregenschutz +AR: Achtung Raser – Achtung Raserin Autokennzeichen national +Arafat-Gruess mit Seriefeuer schiessen +Arbeiter-Cordon-Bleu Cervelat (Cervelat mit Käse) +Arbeiter-Crevette Autos von Opel (Opel GT der 1970er-Jahre) +Arbeiter-Spargle Schwarzwurzel +Arbeiterforäle Cervelat +Ärbs mit Rüebli Karotten mit Erbsen +Ärbsli und Rüebli rülpsen +Ärbsli under de Tecki Brüste (kleine Brüste) +argi Gauneri – en arge Gauner Aargauer:in +Argumäntsverstärcher Gewehr +Arkademigger Akademiker:in +arm wie-n-e Chilemuus pleite +arme Siech Versager:in, Verlierer:in +arme Tropf Versager:in, Verlierer:in +armegnössig arm +Ärmel hinderelitze arbeiten +Ärmel hinderelitze arbeiten (motiviert) +ärmer als e Chilemuus arm +armi Hutte Versager:in, Verlierer:in +Armlüüchter Schimpfwörter +arms Jümpferli Mauerblümchen +arrangschiere absprechen, vereinbaren (franz. arranger) +Arsch & Friederich Kleidermarken (Abercrombie & Fitch) +Arsch grüen und blau schlaa den Hintern versohlen +Arsch mit Ohre Schimpfwörter +Arsch und Gält regiert d Wält Redensarten (Geld) +Arsch verchloppfe den Hintern versohlen +Arsch verschmiere den Hintern versohlen +Arsch versole den Hintern versohlen +Arsch verstrieme den Hintern versohlen +Arsch voll Ladung +Arsch wie es 700-fränkigs Praliné dicke Person +Arsch wie es Bohneross Gesäss (dicker Hintern) +Arsch wie es Poschtross dicke Person +Arsch wie es Tännstor dicke Person (die Tenne) +Arsch wie-n-e Vierzimmer-Wohnig für die weibliche Figur (dicker Po) +Arsch wie-n-e Vierzimmerwohnig Gesäss (gross) +Arsch wie-n-es tuusigfränkigs Praliné für die weibliche Figur +Arsch wiene Zweizimmerwohnig dicke Person +Arsch-Barrikade Militär-Schokolade +Arsch-Betong schwarze Schokolade +Arsch-Chappe Schimpfwörter +Arsch-Charte zieh unglücklich, deprimiert +Arsch-Charte zieh verlieren +Arsch-Chrage Klosettbrille +Arsch-Chrüücheri – en Arsch-Chrüücher Schmeichler:in +Arsch-Durzuug Durchfall +Arsch-Läckeri – en Arsch-Läcker Schmeichler:in +Arsch-Stöpsel Zäpfchen +Arsch-Zahside Tanga +Arschbächer Prominente (national) (Kurt Aeschbacher, TV-Moderator) +Arschbagge-Vibrator Motorrad +Arschbombe mache ins Wasser springen (mit angewinkelten Beinen) +arschchalt rücksichtslos +Arschcharte zieh Pech haben +Arschflattere haa Angst haben +Arschgaueri – en Arschgauer Aargauer:in +arschgchuttete Hasechopf Schimpfwörter +arschgeil sehr gut +Arschgiige Fiesling +Arschgiige Schimpfwörter +Arschgorps furzen +Arschgsicht Schimpfwörter +arschläcke hofieren, schmeicheln +Arschläcker-Balke überchoo Beförderung zum Gefreiten +Ärschli choche Auto-Zubehör (Sitzheizung) +Arschloch After +Arschloch vo de Chuchi Dampfabzug +Arschloch-Barriere Militär-Schokolade +Arschloch-Barriere schwarze Schokolade +Arschloch-Barrikade Armee-Guetzli +Arschloch-Barrikade schwarze Schokolade +Arschloch-Zemänt Militär-Schokolade +Arschpfiiffe Intrigant:in +Arschvejeli Schimpfwörter +Arschzapfe Schimpfwörter +Artillerie Gewehr +ärvele verwöhnen +as Bei brünzle betrügen +as Bei seiche tadeln, massregeln +as Bei striiche auf Geld verzichten +Äschbi Prominente (national) (Kurt Aeschbacher, TV-Moderator) +Äschebächer Prominente (national) (Kurt Aeschbacher, TV-Moderator) +Aschi Vornamen (männlich) (Ernst) +aschpiriere anbaggern, aufreissen +asewääg genau so +Asia-Pommes Reis +Aslig Abgemacht! +aslig dasselbe +aslige solcher +Äss-Egge Esstisch +ässe essen +Ässe Mahlzeit +Ässe ghejt zum Gsicht use erbrechen +Ässe mit Nachbränner scharf +Ässe namal dur de Chopf gah laa erbrechen +Ässe zwäg mache kochen +Ässzimmer Gebiss +Asylant Adjutant +asymmetrischi Schiiwerfer haa schielen +ATG gut (affe-titte-geil) +Atmosphäre haa eine Affäre haben +atom- sehr +Atom-Ofe Mikrowellen-Ofen +atomar gut +Atombrot Büchsenbrot (haltbar dank Ethanol) +atomfreji Zone zwüschet de Ohre dumm +atomgeil gut +Atomsiech haa betrunken +Atomsuff haa betrunken +ätzend schlecht +au keis Chileliecht Dummkopf +Au réservoir zum Abschied (franz. au revoir) +Au revoir au pissoir zum Abschied +Auahli kleine Verletzung +Aubronx Orte (in Zürich) (Quartier Aubrücke) +Auch in der Schweiz Aids +Aue flaches Wiesengelände +Aug go spüehle gah nachschauen +Auge haa wie klöpfti Sicherigspatrone betrunken (kleine Pupillen) +Auge haa wie Soifütz betrunken +Auge mache wie Suppetäller staunen +Auge rüere schauen +Auge uf Null stelle schlafen +Auge wie Pisslöcher im Schnee Augenringe +Auge wie Schusswunde Augenringe +Auge wie Soifütz Augenringe +Auge zue tue sterben +Auge zuetue schlafen +Augeseck Augenringe +Augesex haa flirten +Augesternli Kosenamen +Äugli Augen +Augöpfeli Kosenamen +Aus di Maus Schüttelreime +Aus und Amen Es geht zur Neige +Auto stoppe per Anhalter fahren +Auto zämelegge Unfall +Auto-Chlütteri Automechaniker:in +Auto-Mech Automechaniker:in +Autogramm gäh unterschreiben +Autsch – verknautscht! zerknautscht +Avanti dilettanti! Beeil dich! +Avanti Savoja! Beeil dich! +Avanti! Beeil dich! (ital.) +Äxgüsi Entschuldigung +Äxgüsi, Frau Büsi! Entschuldigung +Äxtrablatt Klatschmaul +Azubi Lernende:r (Auszubildende:r) +B-Meise Ameise +B-Schnitt Brot (der zweite Anschnitt) +B.W.S. (beid Wäg seckle) – aber O.B.T. (ohni blöd tue)! Hau ab! +B'chleidig Anzug +Baabe Schimpfwörter für Frauen +bääbele Kinderspiele (mit Puppen spielen) +Bääbeli Puppe +Bääbi Puppe +Baabi Schimpfwörter für Frauen (dümmlich) +Baader Coiffeur/Coiffeuse (zog früher auch Zähne) +Bäägg zrugghebe weinen (die Tränen zurückhalten) +bäägge schreien, rufen +Bääre uufbinde betrügen +bäbätschle im Sandkasten spielen +Babbelbrüe Brei +babble reden, plaudern (unverständlich) +Babeli Kegeln, Bowling (alle Neune) +Bäbi Schussel +Babs Vornamen (weiblich) (Barbara) +Babuschka Schimpfwörter für Frauen +Babuu weitere Typen (attraktiver Mann) +Baby-Betong Brei +Baby-Porsche Kinderwagen +babysitte Kinder hüten (engl.) +Bachbumbele Dotterblume +bache schlafen +Bächer isch namal verbii gange das Schlimmste überstanden haben +bächere trinken, sich betrinken +Bächertante Servierpersonal +bächtele geniessen +Backfisch Teenager:in +bad schlecht (engl.) +Bad-Meischter Wachmeister +bädele schwimmen +Badhose Angsthase +Badhose Langweiler:in +Badhose Schwächling +Badi Badeanstalt, Schwimmbad +Bädi riisse schwimmen +Badische Baden-Württemberg +Badlaatsche Schuhe (offen) (Sandaletten) +Badmeischter weitere Typen (badet die Fehler anderer aus) +Badwanne Auto +Badwanne boue skifahren +baff überrascht, verdutzt +Bäfzgi Hündchen (kleiner Kläffer) +Bagaaschi Gerümpel +Bagge Wangen +Bagge-Pfiife Ohrfeige +Bagger us de Garaasch fahre anbaggern, aufreissen +Bagger-Pilotin – en Bagger-Pilot Baggerführer:in +Bäggli Wangen +Baguette Französin/Franzose +Bahahen-Bilah Orte (ausserhalb von Zürich) (Bachenbülach) +Bahnhof Strudelhafe Gebäude, Lokalitäten (Bahnhof Stadelhofen) +Bähnli Eisenbahn +Bähnli-Dedektiv Kontrolleur +Bajass Scherzkeks +Bajobös Bajonett +Bakterie Batterie +Bakterie uustuusche schmusen +Bakterie-Flade Pizza +Bakterie-Mocke Käse +Bakterie-Wächsel schmusen +Balari haa betrunken +Bald-Mein-Wagen Autos von BMW (BMW) +Bäle Fensterläden (gebräuchlich im Tösstal) +Balgerei Schlägerei +Balgete Schlägerei +Balkan-Express öffentliche Verkehrsmittel (Sihltal-Bahn) +Balkon Brüste +Ball-Schu-We Ballistische Schutzweste +balla schlecht +Ballascht abwerfe stuhlen +ballere schiessen +Ballermann Deutsche:r +Ballermann Gewehr +Bälli Hündchen +Ballöön Brüste +Balloon haa betrunken +Baludi Penis +Balz Vornamen (männlich) (Balthasar) +bambele baumeln +Bamboloni Penis +Bammel haa Angst haben +bämse Sex haben +Banane Haare (Rolle hochgesteckt) +Banane prässe urinieren (Männer) +Banane-Büügeri – en Banane-Büüger Handlanger:in, Hilfsarbeiter:in +Banane-Büügeri – en Banane-Büüger Nichtsnutz +Banane-Wix Bananenshake +Bandwurm füettere essen (ausgiebig) +Bäne Auto +Bäne Lastwagen +bänge Sex haben +bänge Sex haben +Bängel Lausemädchen/Lausbub +bängle Eishockey spielen +bängle Sex haben +Baninane Banane +Bänkeri – en Bänker Bankangestellte:r (von engl. banker) +Bänkleri – en Bänkler Bankangestellte:r +bankrott pleite +Bänkster Bankangestellte:r (von engl. gangster) +Bänne Schubkarren +Bäpf Schnuller +Bappeli-Gschänk Krawatte +Bär furzen +Bär füettere Sex haben +Bär uufbinde bluffen +Baragge Wohnung +Bärbel Vornamen (weiblich) (Barbara) +Bärbeli Rollsplitt Musiker:innen (Barbra Streisand, US-Entertainerin) +Barber Coiffeur/Coiffeuse (engl.) +Bäre-Aug After +Bäre-Dräck Lakritze +Bäreaug Scheide +Bärefade Faden +Bärenaug stresse aufs WC gehen +Barete zische einen Joint rauchen +Barette Joint +Bärgli ap bergab +Bäri Honig +Barille Aprikose +barne, es Barni rauche einen Joint rauchen +Barni Joint +Barry ohni Luft Hündchen +Bäsch Party +bäschele sich mit Kleinkram beschäftigen +Baschi Vornamen (männlich) (Sebastian) +Baschta! Hör auf! (ital.) +Bäschteli Vornamen (männlich) (Sebastian) +Baschterli Hund (Bastard) +Baschterli Mischling +Baschti Vornamen (männlich) (Sebastian) +Bäse Blumenstrauss +Bäse Schimpfwörter für Frauen +Bäse-Vreni Gärtner:in +Baseball-Schleger Joint +Bäsebinderi – en Bäsebinder Florist:in +Bäselimaa mache hofieren, schmeicheln (franz. baiser la main) +Bäsewage nach Hause gehen (fährt Betrunkene nach Hause) +Bäsi Klatschmaul +Bäsi Verwandte (Base) +bastle einen Joint drehen +Bateliönler Major (als Bataillonskdt) +Batman-Gurt Grundtrageinheit +Bätt-Schopf Kirche +Bättel aneschmeisse aufgeben, resignieren +Batterie usenäh schlafen +Batterie-Strampler Elektro-Fahrrad +battet erfolgreich sein +battet es lohnt sich +Batze 10 Rappen +Batze finanzieller Beitrag +Batze Geld +Batze Kleingeld +Batze und s Weggli haa eine Affäre haben +Batze-Schieberi – en Batze-Schieber Bankangestellte:r +Batzechlämmer Geizhals +Batzeli Geld +Batzeli verdiene arbeiten +Bätzeli-Hockeri – en Bätzeli-Hocker Geizhals +bätzge Fussball +Bätziwasser Schnaps +Baubau Blödsinn +Baum für die männliche Figur (gross und breit) +Baum umarme Unfall +Baum-Umarmer Hippie +bäumele auf die Zehen stehen +Baumstämm unter de Auge Augenringe +baunze Sex haben (engl. to bounce) +Baverschlapp Bandverschliessapparat (Abk.) +Bazille-Schnitte Crèmeschnitte +be-augapfle schauen +BE: bin eilig Autokennzeichen national +Bea Vornamen (weiblich) (Beatrice) +Beamer Joint +Beamte-Mikado Beamte (wer sich zuerst bewegt, hat verloren) +bearbeite anbaggern, aufreissen +bearbeite überreden, überzeugen +Bebbi Basler:in +Bébé Baby (franz.) +Bebeeli kleine Verletzung +Bébéli Baby +Beck hetsch sölle werde, dänn chöntsch jetzt de Uusschuss sälber frässe Redensarten (Arbeit) (bei der Fehlleistung eines Lehrlings) +Beckerand-Schwümmeri – en Beckerand-Schwümmer Schwächling +Beckeri – en Beck Bäcker:in +Beckirandschwümmer Angsthase +Bedienti – en Bediente Schimpfwörter +Beefeater Engländer:in (engl.) +Beeri Dummkopf (dumme Frau) +Beeri Schimpfwörter für Frauen (dümmlich) +Befehlihündin – de Befehlihund Chef:in +Befruchtigs-Tango Kuschelrock +Begleitschutz Freund, Partner +Begriff ändern! Computer +BeHa Büstenhalter +Bei bis an Bode abe für die weibliche Figur (lange Beine) +Bei lupfe aufs WC gehen +Bei lupfe tanzen +Bei mache drängen +Bei müesse us em Bett hebe zum brämse betrunken +Bei stelle behindern +Bei under de Arm näh rennen +Bei wie Stelze Redensarten (Körper) +Bei wie-n-es Rehli - nöd so lang, aber so behaart! für die weibliche Figur +Bei zämebinde lästern +Beibeli Baby (engl. baby) +Beibrächer-Bindig Ski-Bindung (altes Modell mit Seilzug) +Beifreiheitvergrösserig Auto-Zubehör (Schiebedach) +beinle aufreizende Bewegungen +Beiz Restaurant +Beize-Chehr mache ausgehen +Beizeri – en Beizer Wirt:in +Bejeli Biene +beleidigets Brötli Sandwich +Beleidigungs-Adienig Handbuch (Manual) +belgischi Röschti Pommes-Frites +Belli Vornamen (weiblich) (Isabelle) +Beni Sturmgwehr Prominente (national) (Beni Thurnheer) +benilpe ärgern, provozieren +Benimmregle hueschte tadeln, massregeln +bepföötle berühren, befingern +Beppner mache mit Drogen abstürzen +bequäm faul, träge +Berg voll sehr viel +Berg-Huupi Alphorn +Berg-Jugo Ausländer (Kosovo-Albaner) +Berg-Puure-Porsche Traktor +bergig hüglig +Berguuf-Brämseri – en Berguuf-Brämser Schwächling +Beringig Hochzeit +Bermuda-Drüegg Scheide +Berner Bärin – en Berner Bär Berner:in +Bernpiet Orte (ausserhalb von Zürich) (Kanton Bern) +Beromünschter-Suechgräät Brustwarzen +Bert Vornamen (männlich) (Albert) +Berta Fahrrad +Besa Bars, Restaurants, Clubs (Besame Mucho) +Besamer Freund, Partner +Beschlüüniger einen Joint rauchen +Bescht vom Beschte gut +beschte Ross im Stall Mitarbeiter:in (leistungsfähig) +beschte Stuck Penis +beschti Ross im Stall – es macht de gröschti Mischt Mitarbeiter:in (ironisch) +Beschwipste Betrunkene:r +besser als e Schnurre voll Wäschpi leckeres Essen +besser z spat als nie zu spät +Besser-fühl-Balke Ribbon am Ausgänger +Besserwessi Besserwisser:in +Besserwüsseri – en Besserwüsser Besserwisser:in +betanke Sex haben +betaschte anfassen +betatsche berühren, befingern +Bethli Vornamen (weiblich) (Elisabeth) +Betong-Bire stur +Betong-Chind Stadtbewohner:in +Betong-Grind Schimpfwörter +betoniere Kokain konsumieren +betoniere schimpfen, beschimpfen +betoniere zuschlagen +Betonierti – en Betonierte Betrunkene:r +Betriebsaaleitig Speisekarte +Bett rüeft nach Hause gehen +Bett-offe Musiker:innen (Beethoven) +Betthäsli haa eine Affäre haben +Bettmümpfeli Häppchen (vor dem Zubettgehen) +Bettmümpfeli dihei haa eine Beziehung haben +Bettpfoschte Musiker:innen (Beethoven) +Bettseicherli Ehrenpreis +Bettsport mache Sex haben +Bettstatt Bett +Bettstatt Schlafzimmer +Bettwärmer haa eine Beziehung haben +bewaffneti Pöschtlerin – en bewaffnete Pöschtler Polizist:in +Bewärbigsföteli für d Schmier Geschwindigkeitskontrolle +Beweg di mal! Beeil dich! +Beweg din Arsch! Beeil dich! +Bewegigs-Legaschtenikeri – en Bewegigs-Legaschteniker Schussel +Bewegigs-Tubel langsame Person +Bewegigs-Tubeli Schussel +Bewirteri – en Bewirter Wirt:in +Bewusstloserli verabreiche zuschlagen (auf den Brustkasten drücken) +Beyber Kleinkind +Bez Schule (Stufen) (Bezirksschule) +Beziehige spile laa Aufträge unter der Hand vergeben +Bezirks-Besamer Frauenheld +Bhaltis Abschiedsgeschenk +Bhaupti Besserwisser:in +Bhaupti-Cheib Besserwisser:in +Bhaupti-Siech Besserwisser:in +Bhauptine Besserwisser:in +Bhüet di zum Abschied +bi de Hirniverteilig id Chabis-Chischte glanget dumm +bi de Hirniverteilig wiit hine aagschtande dumm +Bi de Riiche leersch spare Redensarten (Small Talk) +bi de Russe une französische Schweiz +bi de Schnäggeposcht schaffe arbeiten (langsam) +bi dem häsch es verschisse streiten +bi dene isch de Schmalhans Chuchimeischter arm +Bi dir hät de Lieb Gott zweimal i d Füdli-Chischte glanget! Du spinnst! +Bi dir hett de Vater au lieber in Tachhängel ufe gwixet! Du bist ein Idiot! +Bi dir schliift irgend es Zahredli! Du spinnst! +bi Mercedes weggrüehrt Autos von BMW (BMW) +bi öpperem abschlüüsse Sex haben +bi öpperem hät de lieb Gott Fiirabig gha Widerling +bi öpperem i de Chride staa Geld schulden +bi öpperem i de Tinte sii Geld schulden (z.B. ich bin bi dir no 100 Stutz i de Tinte) +bi öpperem scharre anbaggern, aufreissen +bi öpperem uf de Täsche ligge Geld schulden +bi so glücklich, tralalalalaa – wänn i es Tässeli Kafi haa glücklich +bibbe aufs WC gehen +bibbere Angst haben +bibbere schlottern, zittern +Bibberi haa Angst haben +Bibelforscher-Traktor Mofa (Velosolex) +Bibelforscher-Traktor Velosolex +Bibeli Akne +Bibeli Huhn (junges Huhn) +Biber Scheide +Biberli Gebäck (Lebkuchen mit Honig-Haselnuss-Füllung) +Biberschwänz Brüste (Hängebrüste) +Bibi Kosenamen +Bibii Huhn (Kücken) +Bibiili Huhn (Küken) +Bidu Joint +Biene Maya gelb-schwarzer Verkehrsteiler +Bienestich Gebäck (Gebäck mit Vanille-Füllung) +Bienlizüchter Zuhälter +Bier in Egge stelle urinieren +Bier-Gartiée Brigadier +Bier-Hirni Maurer:in +Bier-Ranze dicker Bauch +Bier-Schlitte Servierpersonal +Bier-Trax Servierpersonal +Bier-Tumor dicker Bauch (Bierbauch) +Big Boss Chef:in/Vorgesetzte:r (engl.) +big piktschr gut (engl. big picture) +Big-Bike-Bändiger Motorradfahrer:in +bigoscht beinahe +Bigoscht! Tatsächlich? +Biicht-Schuppe Kirche +Biig Stapel +biige essen +biige stapeln +Biigi Stapel +Biim di wägg! Hau ab! (engl. to beam) +Biim mir e Messitsch übere Ruf mich an! (engl. message) +Biis chehre unverständliche Sprache +Biischläfer Freund, Partner +Biiss-Zange Schimpfwörter für Frauen (streitlustig) +Biiss-Zange Werkzeug (Zange) +biisse das Letzte herausholen +biisse kauen +Biisserli Zähne +biisst jucken +Biisst s di? Muesch di halt wider emal wäsche! Redensarten (Körper) (wenn jemand sich kratzt) +biisst? – Dänn biiss zrugg! jucken +Biit Vornamen (männlich) (Beat) +Bilah Orte (ausserhalb von Zürich) (Bülach) +Bildli mache fotografieren +Bileet-Heini Kontrolleur +Bileetknipseri – en Bileetknipser Fahrtenbegleiter:in (Eisenbahn) +Bileetöse – en Bileetör Fahrtenbegleiter:in (Eisenbahn) +Billeet Fahrkarte +Billeet Führerausweis +Billi mälche Oralverkehr (bei Männern) +billig günstig +billig schlecht +billig Jakob Marktfahrer:in +billigi Made Fiesling +Bim und de Bam Hoden +Bim-Bam Kuhglocken +Bim-Bam Uhr (grosse Kirchenuhr) +Bimbe Kopf +bimene beinahe +bimene Haar beinahe +Bimü Birchermüesli +Bin doch kän D-Zug Das eilt nicht +Bin ich d Muetter Teresa? ausnutzen, aushalten +Bin ich dir uf d Hüehnerauge gstande? Redensarten (Small Talk) (Wenn man jemanden auf seinen wunden Punkt anspricht) +Bin ich en Gäldesel? Geld ausleihen (abgelehnte Bitte) +Bin Moslem Weisch Autos von BMW (BMW) +Binätsch Spinat +Binder Krawatte +Binggis Kinder +Bingo! Glück haben +Bio-Bike Fahrrad (ohne Motor) +Bio-Compi Gehirn +Bio-Fühler Nase +Bio-Pause mache aufs WC gehen +Biogas entsorge furzen +biologisch heize furzen +Biomasse produziere kochen +Birchi Birchermüesli +Bire Kopf +Bire-Figg Kopfschmerzen +birebitzeli ganz wenig +Birebitzeli ganz wenig +Birebitzeli Mengenmasse (ganz wenig) +Birechlapf Schlaganfall +Birefigg haa verwirrt +Biremoscht Orte (ausserhalb von Zürich) (Birmensdorf) +Biresüüder Mobiltelefon (Handy) +Birewegge Fiesling +Bireweh Kopfschmerzen +bireweich daneben, verwerflich +bireweich schlecht +Bireweichi – en Bireweiche Schimpfwörter +Birewixer Schimpfwörter für Männer +Birkli-Gmües Birchermüesli +bis à gogo bis zum Geht-nicht-mehr +bis an Bach abe bis zum Geht-nicht-mehr +bis an Haag abe bis zum Geht-nicht-mehr +bis ane chrumme Tubak bis zum Geht-nicht-mehr +bis äne Tubak bis zum Geht-nicht-mehr +bis änne Tubak endlos +Bis bald zum Abschied +bis d Flinte raucht bis zum Geht-nicht-mehr +bis d Ohre gnapped bis zum Geht-nicht-mehr +bis d Ohre gnapped sehr lange +bis d Ohre gwaggled bis zum Geht-nicht-mehr +bis da und äne use bis zum Geht-nicht-mehr +bis es chlöpft bis zum Geht-nicht-mehr +bis es di verböllet bis zum Geht-nicht-mehr +bis es di verjättet bis zum Geht-nicht-mehr +bis es dir de Huet lupft bis zum Geht-nicht-mehr +bis es nüme wott bis zum Geht-nicht-mehr +bis in ali Ewigkeit endlos +bis Pfluume-Pfingschte endlos +Bis ruhig! Halt die Klappe! +bis s Hirni rüücht bis zum Geht-nicht-mehr +Bis vorsichtig, suscht tschädderet s! Pass auf, sonst knallt's! +bis zum Abwinke bis zum Geht-nicht-mehr +bis zum Chan-i-nüme bis zum Geht-nicht-mehr +bis zum chrumme Drizähni endlos +bis zum Wänduufgah bis zum Geht-nicht-mehr +Bisch am lüfte? Dein Reissverschluss ist offen! +Bisch behinderet? Spinnst du? +Bisch di erschte füfzg Santimeter im Zoo uufgwachse? Spinnst du? +Bisch dure bi Rot? Spinnst du? +Bisch dure? Spinnst du? +Bisch eigentli lern-resischtänt? Spinnst du? +bisch en Föppli-Fritz hänseln +Bisch en Glatze-Cheib Glatze +Bisch en Spinncheib! Du spinnst! +Bisch en Vollidiot! Du bist ein Idiot! +Bisch fertig? Hör auf! +Bisch fit im Schritt? Alles klar? +Bisch fit im Schritt? Schüttelreime +Bisch flörenz? Spinnst du? +Bisch FuZ (fit und zwäg)? Alles klar? +Bisch go singe gsii? Redensarten (Geld) (wenn jemand viel Kleingeld im Portemonnaie hat) +Bisch grad uufgstande? zerzaust +Bisch gschöggelet? Spinnst du? +Bisch gschuuflet? Du spinnst! +Bisch gsi go singe? Kleingeld (wenn jemand viel Kleingeld hat) +Bisch gstige? Alles klar? +Bisch gstige? Hast du es begriffen? +Bisch hänke blibe? Spinnst du? +Bisch im Tüüfflug dur d Chinderstube? Du bist ein Idiot! +bisch ja nöd putzt Nein +Bisch mit em Helikopter dur d Chinderstube? Rüpel:in +Bisch nöd ganz bache? Spinnst du? +Bisch nöd ganz buechet? Spinnst du? +Bisch nöd ganz gschöggelet! Du spinnst! +Bisch nöd ganz gschüttlet? Spinnst du? +Bisch nöd ganz Hugo? Spinnst du? +Bisch nöd ganz putzt? Spinnst du? +bisch nume en Karte-Ständer jassen (schlechter Partner) +Bisch Phonak? Hörst du nicht mehr gut? +Bisch psoffe? Spinnst du? +Bisch uf e Liimtube trampet? langsame Person (Quelle: Cabaret Rotstift) +Bisch under s Tram choo oder häsch suscht en Flick ap? Du bist ein Idiot! +Bisch vo Basel? Spinnst du? +Bisch voll näb de Schueh! Du spinnst! +Bisch vom tolle Aff bisse? Du spinnst! +Bisch vom tolle Aff bisse? Spinnst du? +Bisch vom Wahnsinn umzinglet? Spinnst du? +Bisch vorig! Hau ab! +Bisi Scheide +Bisi nimmt de Hinderuusgang Durchfall +Bisi schmättere urinieren +Bisi schmättere urinieren +bisi sii beschäftigt sein (engl. busy) +Bisi-Wätter Wetter (schlechtes Wetter) +bisle urinieren +Bisleri – en Bisler Basler:in +Biss zeige ausharren, durchstehen +bissoguet bitte +Bisu gäh küssen (franz. le bisou) +Bitli-Chlüüberi – en Bitli-Chlüüber Informatiker:in +Bitli-Schupferi – en Bitli-Schupfer Informatiker:in (engl. bit) +Bitschiggletta Fussball (Fallrückzieher, ital. bicicletta) +Bitte Hueschte Musiker:innen (Whitney Houston, US-Sängerin) +Bitte Husten Prominente (international) (Whitney Houston, US-Sängerin) +Bitzeli ganz wenig +Bitzeli Mengenmasse (ein wenig) +bitzeli gnau ungefähr +bitzeli mache sich beeilen +biziite rechtzeitig +BL: Bliib z Lieschtel Autokennzeichen national +BL: en blöde Lööli Autokennzeichen national +Blääch Medien (Blick) +Blääch-Polizischt Geschwindigkeitskontrolle +Blääri Kleinkind +Blaas du mir de Hobel uus! Du kannst mich mal! +Blaas mer bald Fädere! Du kannst mich mal! +Blaas mer doch id Schueh! Du kannst mich mal! +Blaascht eine schlechte Idee +Blaascht Wetter (Gewitter) +blaase eine Zigarette rauchen +Blaatere Blase +Blaatere Kopf +Blaatere Menschenmenge +Blaatere-Schiit Werkzeug (Wasserwaage) +Bläch inehebe Zungenkuss +Bläch inehebe, de Blätz inehaue, öpper inefrääse, tömblere (engl. tumbler), Zähbutze-Plus es paar Quadratmeter Zunge verlegge, d Zunge id Ferie schicke, d Zunge trucke, en Tüüfbohrer, e Zunge-Rulaade küssen +Bläch-Guutsche Auto +Bläch-Mami Geschirrspüler +Bläch-Trällerer elektrische Gitarre +bläche Geld ausgeben, bezahlen +Blache Hemd +Blache Kleid +Blache spanne einen Joint drehen +Blächigs Geld +Blächkarosse Auto +Blächschade haa dumm +Blächvreneli 5 Rappen +Blacky Afrikaner +Blädel 100 Franken +blagiere bluffen +Blähfuetter Kohl +blank pleite +Blant Joint (engl. blunt) +Blas du mir id Schueh! Fluchwörter +Blasbalg Lunge +Blasius Hobel! Du kannst mich mal! +Blasius! Du kannst mich mal! +Blasrohr Gewehr +Blatt 100 Franken +Blatt aazieh schlafen +Blatt riisse schlafen +Blätz Erbrochenes +Blätz Grundstück +Blätz Zunge +Blätz ap Hautverletzung +Blätz ap kleine Verletzung +Blätz hinderehänke küssen +Blätz inehaue Zungenkuss +Blätz inehebe knutschen +Blätz trucke Zungenkuss +Blätz verteile schmusen +blätze knutschen +blätze schmusen +Blätzhaag Zahnspange +blau betrunken +Blau Führerausweis +blau aalaufe betrunken +blau Brief haa arbeitslos +blau Brief überchoo entlassen werden +blau mache schwänzen +Blauburgunderi – en Blauburgunder Bündner:in +Blaue 100 Franken +blaue Balett Stadtpolizei Zürich +blaue Mose Hautverletzung +Blaue vom Himmel abe verzele bluffen +Blaui – en Blaue Polizist:in +blaui Briefträgeri – en blaue Briefträger Polizist:in (Parkplatz-Kontrolleur:in) +blaui Gordle Cordon-Bleu +Blaui-Bohne-Chocher Pistole +Blauröckli Polizist:in +Blefi Bleistift +Blei-Änte Versager:in, Verlierer:in +Blei-Föhn Pistole +Blei-Sprütze Gewehr +Blei-Sprützi Pistole +Bleiänte Schimpfwörter (in jeder Hinsicht unfähig) +bleiche Stinker Käse (Limburger) +Bleichmüüsli zartes Kind +Bleichschnäbeli zartes Kind +Bleiföhn Gewehr +Bleifreis Bier +Bleifuess Vollgas +Bleifuess inehänke Gas geben +Bleiwiisli Bleistift +blesch nackt +blettere Geld ausgeben, bezahlen +Blick schüüsse flirten +Blii-Blüü Streifenwagen (Martinshorn) +Bliib flockig zum Abschied +Bliib gschmeidig! Beruhige dich! +Bliib sexy! Beruhige dich! +Bliib uf em Teppich! Beruhige dich! +bliibt der no! Hör auf! +Blijenze verrijenze einen Joint rauchen +Blind näh flüchten, davonrennen +Blind näh nach Hause gehen +Blind näh sich trennen (vom Jassen) +blindi Chueh öffentliche Verkehrsmittel (motorisierter Tram-Anhänger ohne Führerstand) +Blindschliiche Brillenträger:in +Blinker Augen +Blitzer Geschwindigkeitskontrolle +bloche Auto fahren +bloche fahren +blochend Chrigi Prominente (national) (Christoph Blocher) +Blocher Autofahrer:innen (Rowdy) +Blocher Reinigung und Unterhalt (Gerät für die Bodenversiegelung) +Blochusconi Prominente (national) (Christoph Blocher) +blöd schnörre verraten, petzen +blöd tue streiten +blöd usechoo missraten +blöd wie Brot dumm +Blödchopf Schimpfwörter +Blödel Dummkopf +Blödian Dummkopf +Blödschwätzerin Klatschmaul +Blöff-Töff Motorrad-Typen (Harley) +blöffe bluffen +Blöfferi – en Blöffer Aufschneider:in, Angeber:in (engl. to bluff) +Blöffsack Aufschneider:in, Angeber:in +Blöffsiech Aufschneider:in, Angeber:in +Blojele Hautverletzung (blauer Fleck) +Blondine-Fernseh Mikrowellen-Ofen +blööterle arbeiten (langsam) +blööterle trödeln +Blööterli-Siech langsame Person +Blööterliwasser Mineralwasser +Bluemebinderi – en Bluemebinder Florist:in +Bluemechind Hippie +Bluemegärtneri – en Bluemegärtner Florist:in +Blüemeleri – en Blüemeler Florist:in +Blüemli jassen (Rose) +Blüemli Schwächling +Blüemli güüsse Sex haben +Blüemlikafi Kaffee (sehr schwach) +Blüemlischmöckeri – en Blüemlischmöcker Hippie +Bluescht Blütenpracht der Obstbäume +Bluescht-Fährtli Ausflug +Blueschtfahrt mache fahren (bei schönem Frühlingswetter) +blüete bluten +bluetig Tuume Restaurants (Rheinfeldner Bierhalle) +bluetig Zäje Restaurants (Bierhalle Wolf) +bluetigi Schueh-Sohle Steak +Blüetli Marihuana +Bluetverdünner Alkohol +Blufi Bleistift +Blunze Würste +blutt nackt +blutte Maximum sehr gut +blutti Wunder sehr gut +blüttle sonnenbaden (nackt) +Blutto-Quai Gebäude, Lokalitäten (Strandbad Utoquai) +BMW für die weibliche Figur (Brätt mit Warze) +BMW – es Brätt mit Warze Brüste (kleine Brüste) +Boa würge urinieren (Männer) +Bob id Bahn jage aufs WC gehen +Bob id Bahn schüüsse stuhlen +Bob mache rodeln (aneinander gehängte Schlitten) +böbble rodeln +Bobby Joint +Bobby Polizist:in (engl.) +Bobo kleine Verletzung +Bobooli kleine Verletzung +Bock 1 Franken +Bock Fahrrad +Bock Freund, Partner +Bock schüüsse einen Fehler machen +bocke Sex haben +böckele stinken +bockig stur +Bockmischt Blödsinn +Bockwurscht Deutsche:r +Bode Grundstück +Bode aaschreie erbrechen +Bode usenäh entjungfern +Bode-ebe mache zerstören +Bode-mit-em-Buuch-Streichler Dackel +Bode-Mopp Hund (Langhaardackel) +Bode-Würgeri – en Bode-Würger Bäuerin/Bauer +Bodebläch duretrampe Vollgas +Bodedüsel Strassenbahn +Bodehochsig haa sterben +bödelet ganz wenig (eine dünne Schicht) +Bödeli Brot (Anschnitt) +Bödeli Brot (Anschnitt) +Bodelumpe Hündchen +Bodesee-Kafi Kaffee +Bodesuri kleiner Mann +Bodesurri Appenzeller:in +Bodesurri Hündchen +bodige jemanden fertigmachen +bodige leer trinken +Böff Joint +Böff inetätsche einen Joint rauchen +Boge-Hueschte haa erbrechen +Bohnestange grosse Person +Bohnestange mager +Böhnli Kosenamen +bohre fahren +Bohrmeischteri – en Bohrmeischter Zahnärztin/Zahnarzt +Bohrständer Penis +Boifründ Freund, Partner (engl. boyfriend) +Boiler Blase +Boiler entchalche urinieren +Boiler kippe urinieren +Boiler lääre urinieren +boilere urinieren +Böim umtue schnarchen (Bäume fällen) +boimig gut +Böle Fussball (Ball) +Bole Geld +Bölle Brüste +Bolle Haschisch +Bölle Zwiebel +Bölle aastränge denken +Bolle-Chopf Deutsche:r +Bölle-Frässeri – en Bölle-Frässer Fussball (jemand, der nie abspielt) +Bölleli Kosenamen +Bölleli-Tätschler Handballer +böllere stuhlen +Bölleröhrli Zwiebel (Schalotte) +Bollestei-Wand loses Kalkstein-Mauerwerk +Böllewäie Wähe (Zwiebelkuchen) +Bölli Kopf +bolze Auto fahren +Bolze Penis +bölze Sex haben +bolzegrad abe bergab +bombastisch gut +Bombe für die männliche Figur (dick) +Bombe gut +Bombe schwimmen (Sprung mit angezogenen Beinen) +Bombebääbi für die weibliche Figur (mächtige Figur) +Bömbeli Cornflakes +Bömbeli Tampon +Bomber dicke Person (stattlich) +Bombonieras Brüste +Bömmel Joint +Bonapp Guten Appetit (franz. bon appétit) +Bonjour Armbanduhr Schüttelreime +Bonjour du Puur zur Begrüssung +Bonsai kleiner Mann +Bonsai-Bernhardiner Hündchen +Bonsai-Dogge Hündchen +Bonsai-Toscanini Dirigent +Bonus-Prügel Stumpen, Zigarre +Bonze-Böllele Golf +Bonze-Chilbi Sechseläuten +Bonze-Cricket Golf +Bonze-Cricket-Spiller Golfer:in +Bonze-Fasnacht Sechseläuten +Bonze-Hoger Orte (in Zürich) (Zürichberg) +Bonzin – en Bonz vermögende Person, Snob +Bonzischtan Orte (ausserhalb von Zürich) (Zug) +Böögg Angestellte:r +Böögg Freund, Partner +Böögg Nasenschleim (Popel) +Böögg Popel +Böögg Rekrut +Böögg hät s Ränne abgwunke Geschwindigkeitskontrolle +böögge in der Nase bohren +Böögge Polizist:in +Böögge-Album Taschentuch +Böögge-Stuehl Motorrad-Typen (BMW) +Böögge-Verbrännete Sechseläuten +Böögge-Verbrännis Sechseläuten +Bööggehüüsli Nase +Bööggemechaniker in der Nase bohren +Böögger Nase +Bööggetach butze in der Nase bohren +Bööggeturm Nase +boone Sex haben +Booner haa eine Erektion haben +bööve schlafen +Boppe in Bopf Milchflasche (Schoppen in Kopf) +Böpperli Kosenamen +borde snowboarden (engl. snowboard) +Bornholio Joint +Borromini 100 Franken +Borschte-Lachs Schinken +Bört Langchaschte Prominente (international) (Burt Lancaster, US-Schauspieler) +bös sehr +bös draa sii kränkeln +Bosköppli Brüste +Boss Chef:in (engl.) +Boss Chef:in/Vorgesetzte:r (engl.) +Böss Trolleybus (engl. bus) +Botschafts-Saxophon Gewehr +Botschi Murmel +Bou Arbeitsplatz +Bou Wohnung +Bou-Chnuschti Bauarbeiter:in +Bouarbeiter-Ferrari Autos aus den USA (Corvette) +Boustell Arbeitsplatz +Boustelle-Fahrzüüg Offroader (SUV) +Bowäärli Erbsen +Boxegass-Kontrolle Geschwindigkeitskontrolle +Boxestopp mache aufs WC gehen +Boxete Schlägerei +Böxis Unterhose (für Männer) (Boxershorts) +Brääme-Ständer Pferd +Brääme-Töder Stumpen, Zigarre +Brääschi dicke Person +Brachsme Stumpen, Zigarre +Brachsme setze stuhlen +Bräme Bremse +Bräme-Ständer Pferd +Bräms-Chlappe Ohren +Bräms-Sand-Streueri – en Bräms-Sand-Streuer Tram-Chauffeuse/Tram-Chauffeur +Bräms-Spuure Unterhose (verschmutzte Unterhosen) +Brandleggeri – en Brandlegger Feuerwehrfrau/Feuerwehrmann +brandmager mager +bränne Geld ausgeben, bezahlen +Brännsprit Vodka +brännt nöd Das eilt nicht +Brännte lade trinken, sich betrinken +Brännts Schnaps +Bränte grosse Milchkanne (landw.) +Bränte haa betrunken +Bränte voll Ladung +Braschti alter Mann (von Bresten) +Brät setze stuhlen +Brate i de Röhre haa schwanger +Brate zum Ofe uus näh gebären +Bratfett Prominente (international) (Brad Pitt, US-Schauspieler) +brätsche zuschlagen +brätsche zuschlagen +Brätschge ap Hautverletzung +brätscht betrunken +brätscht abe es regnet (es regnet stark) +Brätt vor em Chopf haa festgefahren +brättere fahren +brättle snowboarden +brättle vorbereiten, planen +Brättli jassen (wertlose Karte) +Brättlischnitzerei Sägerei +Bratwurst id Turnhalle rüehre Sex haben +Brätzeli Autos von Subaru (Subaru Impreza) +Brätzelibueb zartes Kind +Bräuli Aufschneider:in, Angeber:in +Brauni Kot (engl. brownie) +Brausewii Champagner +Bräveli Spiesser:in +Bräzelibueb mager +bräzle erbrechen +Brazza-Ville Orte (in Zürich) (Shopville) +Brei-Frässer Kinder +Brei-Marderi – en Brei-Marder Baby +Brei-Schiisseri – en Brei-Schiisser Baby +breit markiere bluffen +breite Mittelscheitel Glatze +breje erbrechen +Bresaola-Halle Masoala-Halle +Bretscher Schnauz +Brief Führerausweis +brief schlecht (aus der Börsensprache: ich kaufe nicht) +Brief Wertpapiere (Schuldbrief) +Briefchaschte Fussball (Heber über den Goalie) +Briefmargge-Sammlig zeige Sex haben +briegge weinen +Brige Brigadier +Briggee nae schiebe Gang einlegen +Briggee-Chocher Auto (stark rauchender Diesel) +Brigitte Brigadier +Brii Vornamen (weiblich) (Brigitte) +bringt s es lohnt sich +Briquet legge stuhlen +brissageser Fleischpaschteete Prominente (national) (Nella Martinetti) +Brita-Tabak Joint +Britisch-Eländ Autos aus England (British Leyland) +brittle kuppeln +brittle vorbereiten, planen +Broccoli Marihuana +Brocke für die männliche Figur (dick) +Brocke jodle erbrechen +Bröckli geusse erbrechen +Bröckli goisse erbrechen +Bröckli hueschte erbrechen +Bronchitto Joint +Bronco Joint +Broncoli Joint +Broncolino Joint +brönse urinieren +Bronx-Express öffentliche Verkehrsmittel (Bus 31) +Broosme Brosamen, Krümel +bröötle kochen (braten) +brösmele arbeiten +Brösmeli Brosamen, Krümel +Brösmeli-Töff Staubsauger +Brösmeligipfel Joint +Brot und Chäs kalte Platte +Brot-Ässeri – en Brot-Ässer Normalverbraucher:in +Brotlaube Mund +brötle braten +brötle grillen +Brouerei-Ross Schimpfwörter für Frauen +Brüederschaft trinke das Du antragen +Brüel-Lätsch Jammerlappen +brüele schreien, rufen +brüele weinen +Brüeli Schreihals +Brüetsch Verwandte (Bruder) +Brugglyn Orte (ausserhalb von Zürich) (Brugg) +Bruijo Entwurf (franz. brouillon) +Brüle-Heiri Brillenträger:in +Brüle-Schaaggi Brillenträger:in +Brüle-Schangli Brillenträger:in +Brüle-Schlange Brillenträger:in +brülle schreien, rufen +Brülle versoue erbrechen +Brülltüüte Auspuff +Brüllwägeli Auto (übermotorisierter Kleinwagen mit lautem Auspuff) +Brumeli Brosamen, Krümel +Brumm Fussball (scharfer Schuss) +Brumm-Brumm Auspuff +Brummbeeri Brombeere +Brummi Lastwagen +Brummli mürrische Person +Brunne mache urinieren +Brunne-Röhre Durchfall +brünnele urinieren +Brünneli Waschbecken +Brünneli mache urinieren +Brunöggel Vornamen (männlich) (Bruno) +brünschtig sexuell erregt +Brunsli Gebäck (Schokoladen-Kekse) +Brunz Bier +Brunz Blödsinn +Brunz Kleingeld +Brunz-Chischte lääre urinieren +Brunzbusch Scheide +brunze urinieren +Brunzgschiir Penis +brünzle urinieren +Brünzler stampfe Sex haben +brünzlet es regnet +Bruscht wie en Bär stark behaarter Männer-Oberkörper +Bruschthaar-Toupet stark behaarter Männer-Oberkörper +Bruschthaarsünneler Macho +Bruschtpulli Brusthaare +brutal sehr gut +brutal- sehr +brutös sehr gut +Brutzel-Willi Prominente (international) (Bruce Willis, US-Schauspieler) +brutzle braten +brutzle kochen (braten) +Bruuchsch Burghölzli eifach? Spinnst du? +Bruuchsch e Leitere zum stiiige? Alles klar? +Bruuchsch en längere Wöschlumpe? Glatze +Bruuchsch en Nuggi? Angsthase +Bruuchsch en Schueh in Arsch? Hau ab! +Bruuchsch es Hörgrät? Hörst du nicht mehr gut? +bruucht de Chopf au nume zum abewäsche dumm +bruun Ringli After +Bruune Kot +bruune Gorps Coca-Cola +Bruune mache stuhlen +brüünele sonnenbaden +bruuni Pisse Durchfall +bruuni Wurscht quätsche stuhlen +bruuni Zunge schwinge anbaggern, aufreissen +Bruzzito Take-Away-Spezialitäten (Brottasche, gefüllt mit Kalbfleisch/Vorderer Sternen) +BS: en blöde Siech Autokennzeichen national +Bschiiss-Cheib Lügner:in, Betrüger:in +bschiisse betrügen +Bschiissi-Siech Lügner:in, Betrüger:in +Bschiissi-Velo Elektro-Fahrrad +Bschiss ablaa betrügen +Bschiss chunnt uf de Tisch jassen (Redewendung) +Bschütti Abwasser +Bschütti Blödsinn +Bschütti Wein (von Jauche) +bschüüret dumm +Bsetzi-Stei Ehering +Bsetzi-Stei Pflastersteine +Bsetzi-Stei im Buuch haa schwere Kost +bsoffe betrunken +Bsoffne Betrunkene:r +bsüechle besuchen +Bsüechli im Arsch vom Chef oder de Chefin mache hofieren, schmeicheln +Bubeli Kosenamen +Bubi Feigling +bubi kinderleicht +Bubi Teenager:in +Bubi Teenager:in +Bubi spile, Bubi gsund Redensarten (Small Talk) (zu einem Kindskopf) +bubi-eifach kinderleicht +bubig kinderleicht +bubiliecht kinderleicht +Bubis Verwandte (Brüder) +Büchs Anzug +Büchs Auto +Büchs Kopf +Büchs Ohrfiige gäh zuschlagen +Büchse Bars, Restaurants, Clubs (Friedas Büxe) +Büchse öffne entjungfern +Büchse-Füsel Panzer-Grenadier +Büchse-Füsel – nöd ganz putzt oder was? Panzer-Grenadier +Büchsefuetter Schweinshaxe +Büchseöffner Panzerfaust +Büchseöffner spile entjungfern +Buck Knick +Buddha rauche einen Joint rauchen +Buddle Flasche +buddle schaufeln, graben +Büdeli Geschäft, Firma (kleine Firma) +Buebe-Schmöcker Spanner +Buebezöikerli Haare (ins Gesicht gezupfte Haarsträhne) +Buebezüüg Blödsinn +Buebis Blödsinn +Büebli Kosenamen +bueche Fussball (ein Tor erzielen) +Büecherschmöckeri – en Büecherschmöcker Akademiker:in +Büecherwurm Akademiker:in +Buechsch es? Alles klar? +Buenos Aires! Ostern (Frohe Ostern) +Buessi Nähkissen +büeze nähen +Büezer Angestellte:r +Büezer-Schämpiss Bier +Büezeri – en Büezer Bauarbeiter:in +Büezeri – en Büezer Normalverbraucher:in +Büffel Joint +Büffelfurz Joint (der letzte Zug eines Joints) +büffle lernen +Buffon Joint +Bügel öffentliche Verkehrsmittel (Tram) +Bügel-uf-em-Sässellift-Schlüüsseri – en Bügel-uf-em-Sässellift-Schlüüsser Schwächling +bügelbrättle snowboarden +Bügellift Büstenhalter (BH mit Bügel) +Bügelweschte Büstenhalter +Buggee Blumenstrauss (franz. le bouquet) +Büggel Bäuerin/Bauer +Buggelpischte skifahren (steile, hügelige Piste) +Bugi Kosenamen +bügle arbeiten +bügle Sex haben +bugsiere stossen, schubsen +Bülacher Fläscheböde Brille (dicke Gläser) +Büli Orte (ausserhalb von Zürich) (Bülach) +Bull-Aug After +Bull-Auge Brüste +Bulle Polizist:in +Bulle-Charre Auto-Typen +Bulle-Schaukle Streifenwagen +Bullefurz Joint (Rest eines Joints) +Bullerei Polizist:in +Bullerei Stadtpolizei Zürich +Bullfidle Bass (Kontrabass) +Bum-bum Techno +Bumm-Bumm Tequila mit Ginger Ale +bummle trödeln +bümperle Sex haben +Bums-Mal-Wieder Autos von BMW (BMW) +Bums-Streife Pornofilm +Bums-Stube Bordell +bumse Sex haben +bumsgragletvoll überfüllt +Bümsi mache Sex haben +Bumsitis haa Sex haben +Bumskarosse für die weibliche Figur (gute Figur) +bümslä mit Ä Sex haben +bümsle Sex haben +Bündelitag letzter Schultag vor den Ferien +Bundes-Toblerone Panzersperre +Bundesferie Militärdienst +Bundestrainer Kampfanzug +Bundesziegel Armee-Guetzli +bündig passend +Bündig! Abgemacht! +Bündner Porsche Autos von Skoda (Skoda RS) +Bündner Röteli Bündner:in +Büni Zimmerdecke +Bunker Arbeitsplatz +Bunker Wohnung +bunkere Geld sparen +Bünzli Schweizer:in (Spiessbürger) +Bünzli Spiesser:in +Bünzli-Golfplatz Minigolf-Anlage +Buona Nutte Gute Nacht (ital. buona notte) +Burbaki-Armee Unkorrektes Tenü (mehrere Personen mit unkorrektem Tenü) +Bürdeli Brennholzbündel +Burger & Hölzli (psychiatrische Universitätsklinik Gebäude, Lokalitäten +Burghölzli Gebäude, Lokalitäten (Psychiatrische Universitätsklinik, Lenggstrasse) +Burghölzli-riif wahnsinnig +Burligiger Wein (einfacher Landwein) +Büro-Gummi Sekretärin +Büro-Hode Büro-Ordonnanz +Büro-Schangli Kaufmännische:r Angestellte:r +Büro-Tarnaazug Anzug +Büroamsle Sekretärin +Bürochlammere Briefklammer +Bürochlammere Kaufmännische:r Angestellte:r +Bürochriesi Hämmorhoiden +Bürofrölein Sekretärin +Bürogummi Beamte +Bürogummi Kaufmännische:r Angestellte:r +Bürogumsle Sekretärin +Büroschläfer Beamte +Burrito Joint +bürschte Sex haben +Bürschtitis haa Sex haben +Burschua Spiesser:in (franz. bourgeois) +Bürzi Haare (hochgesteckt) +Bürzlibaum Überschlag +büschele vorbereiten, planen +Buscheli Baby +Buschi Baby +Buschi Schwächling (Baby) +buschig sauer +büschig sauer +buschig wütend +büschle einen Joint rauchen +buschper fit, gesund +Buse-Scheriff Politesse +Büsi Freundin, Partnerin +Busi Katze +Büsi Katze +Büsi Kosenamen +Büsi Scheide +Büsiatrin – en Büsiater Psycholog:in, Psychiater:in +Busle Katze +Bussi Kuss +Büsti Büstenhalter +Bütschgi Apfel (Kerngehäuse) +Bütschgi Apfelkerngehäuse +Bütschgi Schimpfwörter für Frauen +Bütschgi im Hals haa sich an einem Apfel verschlucken +buttele berühren, befingern +Butter und Schmalz – Gott erhalt's! Butter +Butter-Felschig Margarine +Butterblüemli Hahnenfuss +buttere Geld ausgeben, bezahlen +Buttersack Gipfel +butterweich sii sich verlieben +Bütti Auto +Butz di! Hau ab! +Butzdüüse Reinigungskraft +butze gewinnen +Butzfrau vo de Rännbahn Tampon +Butzibau Blödsinn +Bützitecker Tanga (für Frauen) +butzt mi vor Lache lachen +Butztüüfel Schimpfwörter +Büüch riibe Sex haben +Buuch-Halteri – en Buuch-Halter Buchhalter:in +Buuchgrimme Bauchschmerzen +Büüchler mache ins Wasser springen (Bauchlandung) +buuchpinsle hofieren, schmeicheln +Buuchweh Bauchschmerzen +Buuchweh mit Näbewürkige Menstruation +Buude Arbeitsplatz +Buude Geschäft, Firma +Buude Wohnung +Buudezauber Party +büüge biegen +büüle Gas geben +Büüle Kopf +Buumaa uselaa eine Erektion haben +Buure-Mischt-Wage Autos von BMW (BMW) +Büüter jassen (Spielart) +Buzli Kleinkind +BWS Beeil dich! (beed Wääg seckle) +BWS – beed Wääg seckle militärische Abkürzungen +C-Alarm furzen +C-Überraschig furzen (militärisch) +Cabernet Sowiso Wein +Cabi Glatze (von Cabriolet) +Cabriolet-Fritte Haare (mit Gel nach hinten gekämmt) +Caca Kot +Caca mache stuhlen +Caduff Bündner:in +Caffaar haa traurig (franz. cafard) +Calippo Penis (wie das Glacé) +Capische? Alles klar? (ital.) +Capito? Alles klar? (ital.) +Capito? Hast du es begriffen? (ital.) +Capo Chef:in (ital.) +Capo Chef:in/Vorgesetzte:r (ital.) +Cappuccino-Trinkeri – en Cappuccino-Trinker Schwächling +Captain Chef:in (engl.) +Carlitto Joint +Casanova Frauenheld +Casino-Läufer Spielsüchtige:r +Cellulitis-Fasnacht Street Parade +Cellulitis-Parade Street Parade +Cervelat-Spicker Gewehrgranate (GWA) +cha meh als Brot frässe! Respekt! +cha nüüt – aber das chan er Versager:in, Verlierer:in +cha sich e Schnitte abschniide verlieren +cha sich hinder ere Telifonstange umzieh mager +cha uf Zäh zele Zeughaus-Angestellter +Chäächi – en Chääche dicke Person +Chaakübel Abfalleimer +chääre streiten +Chääs-Schachtle Schuhe +Chabis Brüste +Chabis Brüste +Chabis Fluchwörter +Chabis Kohl +Chabis Scheide +Chabis sicher nicht +Chabis-Chäs Blödsinn +Chabis-Chäs Fluchwörter +Chabis-Chopf Kohl +Chabis-Chrääze Büstenhalter +Chabisbletter Ohren +Chabisraupe dicke Person +chäch stattlich +Chacheli kleine Keramikschüssel +Chachle Fussball (Tor) +chachlet Fussball (ein Tor fällt) +Chächli-Tappe Schirmmütze +Chäfer Käfer +Chäferli Baby +Chäferli Kosenamen +chafle kauen +chafle schreiben +Chafli Journalist:in +Chalb mache Schabernack treiben +Chalber-Strick Krawatte +chalbere gebären +Chalberei Blödsinn +Chälbli mache baumeln +Chalbs-Blätzli Scheide +Chalbs-Schnitzeli Scheide +Chalbsbrät-Kondömli Kalbsbratwurst +Chalch-Stange alter Mann +Chalchi alter Mann +Chalchi Orte (in Zürich) (Kalkbreite) +chale gerinnen +Chäller-Feischter iischlaa entjungfern +Chällerchind Informatiker:in +Chällerstäge usefäge Sex haben +chalt mache umbringen +chalt wie im letschter Winter schlecht +chalte Kafi schlecht +chalte Pfoschte Schimpfwörter +chalte Puur ad Wand tätsche onanieren (Männer) +chalte Tisch und Täller und d Fuuscht uf d Schnurre kalte Platte +chalti Duschi überchoo eine Abfuhr erhalten +chalti Schoggi kalte Schokolade +Chämi Auspuff +Chämi Kamin +Chämi inezieh einen Joint rauchen +Chämifägeri – en Chämifäger Kaminfeger:in +Chani aalähne? müde, erschöpft +Chaos Stress +Chaote Kinder +Chappe voll haa betrunken +Chappe wäsche tadeln, massregeln +Chappe-Bueb Teenager:in +Chappe-Chäs Penis (Eichel-Ablagerung) +Chappe-Chäs weggbutze Oralverkehr (bei Männern) +Chappe-Frau – en Chappe-Maa Polizist:in +Chappe-Gloon Polizist:in (engl. clown) +Chäppi Schirmmütze +Chäppli Schirmmütze +Chäppli-Meitli – en Chäppli-Bueb Hip-Hopper:in +chäpsle sich mit Kleinkram beschäftigen +chäpsle Unihockey spielen +Chäpsli-Pischtole Spielzeug-Pistole +Charakterlump Fiesling +Charakterlump Schimpfwörter +Chare-Schmieri Auto-Zubehör (Fahrzeug-Fett) +Charre Auto +Charre abändere Unfall +Charre verschüüsse Unfall +Charre voll Ladung +Charre-Schmiereri – en Charre-Schmierer Automechaniker:in +Charscht Karabiner +Charte Speisekarte +Chäs eine schlechte Idee +Chäs Schweizer:in +Chäs-Chappe Dummkopf +Chäs-Chopf Holländer:in +Chäs-Junkie Schweizer:in +Chäs-Rolleri – en Chäs-Roller Holländer:in +Chäs-Suppe Fondue +Chäsblatt Medien (Dorfanzeiger, Provinz-Zeitung) +Chasch d Maske wider abzieh, d Fasnacht isch verbii! Gesicht +chasch d Ohre inenäh – es hät kei Wind Ohren (abstehende Ohren) +Chasch d Zäh wider inenäh, es hät kei Nüssli meh! Halt die Klappe! +Chasch der das Züüg nöd sprütze, dänn müend mer der bim Ässe nöd zueluege Redensarten (Essen) (wenn jemand etwas isst, was man selber nie essen würde) +Chasch di uf öppis gfasst mache! Pass auf, sonst knallt's! +Chasch di verbrösmele! Hau ab! +Chasch e chli Schuss gäh?! Beeil dich! +chasch em Esel is Ohr leere Wein (schlechter Wein) +Chasch en füechte Händedruck haa Redensarten (Small Talk) (ironisches Angebot einer Gegenleistung) +Chasch grad eis an Chessel haa! Pass auf, sonst knallt's! +Chasch grad wider zrugg uf Schmerike gah! Hau ab! +Chasch ja au nöd de Grossvater d Stäge duruf jage Redensarten (Small Talk) (wenn jemand etwas Altes überbelastet) +Chasch ja s Naastuech fürenäh Redensarten (Small Talk) (fang nicht an zu heulen) +Chasch mer ad Chlööte hange! Du kannst mich mal! +Chasch mer ad Dattle hange! Du kannst mich mal! +Chasch mer ad Eier hange! Du kannst mich mal! +Chasch mer am Arsch chratze! Du kannst mich mal! +Chasch mer am Füdeli trümmele! Du kannst mich mal! +Chasch mer am Lädi fückle! Du kannst mich mal! +Chasch mer am Lädi fückle! Du kannst mich mal! +Chasch mer am Ranze hange! Du kannst mich mal! +Chasch mer am Seckel trümmele Du kannst mich mal! +Chasch mer an Arsch hange! Du kannst mich mal! +Chasch mer blööterle! Du kannst mich mal! +Chasch mer chrüüzwiis! Du kannst mich mal! +Chasch mer de Puggel derap rutsche! Du kannst mich mal! +Chasch mer de Puggel duruufstiige und äne wider aberutsche Du kannst mich mal! +Chasch mer id Bire stäche! Du kannst mich mal! +Chasch mer id Chappe jodle! Du kannst mich mal! +Chasch mer id Chappe schiisse! Du kannst mich mal! +Chasch mer id Schueh blaase! Du kannst mich mal! +Chasch mer is Füdli blase! Du kannst mich mal! +Chasch mer mal am Gäzzi hange Fluchwörter +Chasch mer! Du kannst mich mal! +Chasch mi filme! Du kannst mich mal! +Chasch mi fötele! Du kannst mich mal! +Chasch mi gern haa! Du kannst mich mal! +Chasch mi mal! Du kannst mich mal! +Chasch mi nöd am Seil abe laa! Das ist unglaublich! +chasch mi rauche müde, erschöpft +chasch mi schüüfele müde, erschöpft (ich bin todmüde) +Chasch mir de Rugge derab rutsche und mit de Zunge brämse Du kannst mich mal! +Chasch nume na stuune! Respekt! +chasch nur z zweite trinke – der ander muess dir s Häme hebe Wein (schlechter Wein) +Chasch scho in Palascht ine choo – aber legg di nöd mit em König aa keine Chance haben +chasch tänke Nein +Chasch tänke! sicher nicht +Chasch uf em Absatz cheert mache! Hau ab! +Chasch wieder obenabe cho! Hör auf! +Chaschper schnüüze onanieren (Männer) +chäschperle arbeiten +chäschperle schmusen +Chaschte Bodybuilder +Chaschte für die männliche Figur (gross und breit) +Chaschte Geschwindigkeitskontrolle +Chaschte Schrank +Chäser für die männliche Figur (muskulös) +Chäsglogge-Dschungel Masoala-Halle +Chäsli mache erbrechen +Chäsmässer abegheje laa furzen +Chäsmässer zieh furzen +Château Anti-Gel Wein (österreichischer Glykol-Wein) +Château Grauehaft Wein (ungeniessbarer Wein) +Château Jamais-entendu Wein (unbekanntes Weingut) +Château la Pompe Mineralwasser +Château Lavabo Wein +Château Malàlatête Wein (kopfwehträchtiger Wein) +Château Migraine Wein (kopfwehträchtiger Wein) +Château Pfütz Wein (ungeniessbarer Wein) +Château Robinet Leitungswasser +Château-la-Pompe Leitungswasser +chätsche kauen +chätsche snowboarden +Chätschgi Kaugummi +Chätschgummi Kaugummi +Chatz und d Muus haa beides haben +chatzchegelvolle betrunken +Chatze-Falle Frauenheld +Chatze-Musig schlechte Band +Chatze-Wösch Waschbecken (improvisierte Körperhygiene am Waschbecken) +Chatzenaug Fahrrad-Zubehör (Rückstrahler beim Fahrradrücklicht) +Chatzestrecker Luzern (Luzerner) +chatzkanonevoll betrunken +Chätzli Katze +Chätzli Kosenamen +Chäuschtli Ofenbank +Che Guevara: Schlaht schnäll zue und zieht sich schnäll wieder zrugg Penis +Chef-Witz-Lacher Schwächling +Chefe Chef:in (span.) +Chefe Chef:in/Vorgesetzte:r (span.) +Chefi Gefängnis +Chefi-Fleisch Teenager:in +Chegel paffe einen Joint rauchen +Chegelbahn teschte stuhlen +chegele stuhlen +Chegeli-Fänger Hose (Knickerbocker) +Chegeli-Schuel Kindergarten +Chehr mache spazieren +chehre wenden +Cheib Kerl +Cheib versänke Sex haben +cheibe rennen +cheibe Mätz Schimpfwörter für Frauen +Cheibe Züüg Fluchwörter +cheibe- sehr +Cheibe-Büez Redensarten (Arbeit) +cheibemäässig sehr +cheigle Kegeln, Bowling +Cheischteri haa heiser +Chelle Hand +Chellemanndli weitere Typen (aus dem Tösstal) +Chemie-Aff Basler:in +Chemie-Bombe Medikamente +Chemo-Therapie Kaffee (koffeinfrei, mit Milchpulver und Saccharin) +Chericht-Schnüfflerin – en Chericht-Schnüffler Müllfrau/Müllmann +Cherze-Schmelzer Pfarrer, Priester +Cherze-Schmelzer Pfarrer, Priester +Cherze-Schmelzi Kirche +Cherzli schräg stelle zuschlagen +Cheschtene Kastanie +Chessel Kopf +Chessel Mund +Chessel ruesse onanieren (Männer) +Chessi rolle aufreizende Bewegungen +chessle scheppern +Chette-Töff Motorsäge +cheue kauen +chibbe snowboarden +Chies Geld +Chiesgrueb Gebäude, Lokalitäten (Hardturm-Stadion) +Chifi Kieferorthopäd:in +chifle streiten +Chiis i de Röhre dreckiger Gewehrlauf +chiischte keuchen +chiise erbrechen +Chiisgrueb Gebiss +Chilbi Bräuche (Kirmes) +Chilbi Jahrmarkt +Chilbi binenand haa betrunken +Chilbi-Auto Auto-Typen +Chile-Feischter iischlaa entjungfern +Chile-Giige Cello +Chile-Giige Kirche +Chile-Hoger Friedhof +Chile-Maa Pfarrer, Priester +Chileglogge ghööre sich verlieben +Chileglogge haa Glück haben +Chilegräbli Friedhof +Chileliecht kluger Kopf +Chili-Johnny Büchsenfleisch-Ragout +Chill de Läbe Beruhige dich! +Chill s! Beruhige dich! +Chill s! Beruhige dich! (engl.) +Chill sie ei Mal! Beruhige dich! +chille herumlungern (von engl. to chill) +Chilled mers? Gehen wir nach Hause? (engl. to chill) +Chillsch ap? Alles klar? +China-Hagel Reis +China-Wise Orte (in Zürich) (Blatterwiese am Zürihorn) +Chinder-Pissi Bier (abgestanden) +Chinder-Särg Schuhe (gross und eckig) +Chinderli Kinder +Chinderwage-Hebi Auto-Zubehör (Spoiler auf dem Kofferraumdeckel) +Chindli-Fabrik Orte (ausserhalb von Zürich) (Göhner-Bauten in der Agglomeration) +Chindsgi Kindergarten +Chinese-Beton Reis +Chinese-Schnuder Mineralwasser (Sinalco) +Chinese-Schnuder Vanille-Crème +Chinese-Weize Reis +chinesisch gnüüsse furzen +Chiquita Eisenbahn (eh. Triebzug Goldküste, der durchhing und innen immer etwas nach Bananen roch) +Chirschi Kirsche +Chischpi Gebäude, Lokalitäten (Kinderspital) +Chischte 1'000'000 Franken +Chischte Auto +Chischte Computer +Chischte Fernseher +Chischte Gefängnis +Chischte Gesäss +Chischte haa eine Beziehung haben +Chischte mache jassen (einen Match machen) +Chischte schwinge tanzen +Chischte-Schuufleri – en Chischte-Schuufler Bankangestellte:r +Chischteri haa heiser +Chischtli Bett +Chisirö Sirup (Kindersirup mit Röhrli) +Chittel Anzug +Chittelschnitte Pflegefachfrau (eh. Krankenschwester) +Chlaafter Mengenmasse (schweiz. Holzmass) +chlaaterig klebrig +chläbe kleben +Chläbluus Schimpfwörter (anhänglich) +chläbrige Grüene Hanfpflanze +Chläbrigs Geld +Chläider-Chaschte Bodybuilder +chläme kneifen, zwicken +chläme sich unbemerkt von der Truppe absetzen +Chlämm ap! Hör auf! +Chlämmer Motorrad-Typen (KTM) +Chlammere-Mues Spaghetti +Chlämmerli-Sack Geizhals +Chlämmerligstell für die männliche Figur (schmächtig) +Chlämmerlisack für die männliche Figur (unförmig) +chlämmfutzig tue kompliziert sein +chlämmig geizig +Chlapf Auto +Chlapf Knall +Chlapf Mofa +Chlapf ad Bire gäh zuschlagen +Chlapf ad Schnurre Ohrfeige +Chlapf an Grind Ohrfeige +Chlapf haa betrunken +Chlapf haa Flugzeug +Chlapf uf d Schnure gäh zuschlagen +Chlappe Bett +Chlappe Mund +Chläpper Ohrfeige +Chläpper haa betrunken +chlappere funktionieren +Chläppere Scheide +Chlapperschlange Strassenbahn (Cobra-Tram) +Chlappkino Computer (Laptop) +chlaufe klauen, stehlen +Chlaus-Tag Sankt-Nikolaus-Tag (6. Dezember) +Chleck Finger (Risse an den Fingerkuppen) +Chlee-Chueh Schimpfwörter für Frauen (dumm) +chlefele klappern +Chleiderchaschte-Bewacher Gewehr (Sturmgewehr) +chleppere furzen +Chlette Schimpfwörter (anhänglich) +chli dezue dichte übertreiben +chli ferngstüüret müde, erschöpft +chli fescht görpse erbrechen +chli forsch frech +chli gaga verwirrt +chli go laufe spazieren +chli mache sich beeilen +chli mit Bier go schaffe ausgehen +chli rassig sofort, zügig +Chli weniger Luft under de Nase! Halt die Klappe! +chlii ganz wenig +Chlii Penis +chlii Fründ Penis +chlii Johnny aamache Oralverkehr (bei Männern) +Chlii über de Schüssle abschlaa urinieren (Männer) +Chlii-Kongo Orte (in Zürich) (Langstrasse) +Chlii-Manhattan Orte (in Zürich) (Schwamendingen) +Chlii-Mänhätten Schwamendingen +Chliibürger-Porsche Autos von VW (Golf GTI) +Chliichind-Beschlüüniger Kinderwagen +Chliigschmeus Kleinkram +Chliihirn betätige onanieren (Männer) +Chliikarierti – en Chliikarierte Spiesser:in +chliine Chnopf Baby +chliine Pneu Motorfahrer-Offizier (Stufe Kp) +chliine, ticke, zämegflickte dicker Bauch +Chliini Kinder +chliini Arschbanane Fluchwörter +chliises Chind Baby +chliises Spitteli zum aafüüre Holzscheit +chline Hirni Penis +Chlobe grosses Stück +Chlöbe Schuhe (gross und eckig) +chloibe kleben +Chloibi Geld +Chloibi Klebstoff +chlööne jammern, sich beklagen +Chlööni alter Mann +Chlööpe Hand +Chlööte Geld +Chlööte Hoden +Chlopf-Matte jassen (Jass-Teppich) +Chlöpf-Schiit Gewehr +Chlöpf-Schiit Mofa +Chlöpf-Schiit Motorrad +Chlöpfdi Leutnant +chlöpfe scheppern +chlöpfe Sex haben +chlopfe zuschlagen +Chlöpfer Cervelat +Chlöpfer Feuerwerk +Chlöpfer Motor +Chlöpfer Motorrad +chlöpferle klopfen (sachte) +Chlopfete Schlägerei +Chlöpfgelte WC +Chlöpfi WC +Chlöpfmoscht Champagner +Chlöpfmusig Techno +Chlöpfschiit Karabiner +Chlöpfschiit Kopf +Chlöpfschiit Schimpfwörter (bösartig) +Chlöpfschiit Versager:in, Verlierer:in +Chlöpfschiit Zicke +Chlöpfstäcke Gewehr +chlöpft zuschlagen +chlöpft und tätscht explodieren +chlöpple Handarbeiten +Chlor-Lösig Mineralwasser +Chlötz Augen +Chlotz Geld +Chlötz abelaa bremsen +Chlotzbuude Bank +chlotze Geld ausgeben, bezahlen +Chlotzeri – en Chlotzer Aufschneider:in, Angeber:in +Chlötzli goisse erbrechen +Chlötzli stuune staunen +Chlötzli-Boueri – en Chlötzli-Bouer Maurer:in +Chlötzli-Tokter Psycholog:in, Psychiater:in +Chludi Geld +Chluenze Schimpfwörter für Frauen +Chlumpe Haschisch +Chlumpe Motor +Chlümper Motor +Chlümpli hueschte erbrechen +Chlümpli jodle erbrechen +Chlungele Kneuel +Chlungele Wollknäuel +chluppe klauen, stehlen +Chlüpperli Wäscheklammer +Chlüpperli-Heizig Handschuhe +Chlüppli Finger +Chlüppli Wäscheklammer +Chlüppli-Wärmer Handschuhe +Chlüpplisack für die männliche Figur (unförmig) +Chlüpplisack Mantel (Mantel mit Holz-Verschlüssen) +Chlütter Geld +chlüttere arbeiten +Chlütteri Angestellte:r +Chlütteri Automechaniker:in +chlütterle Feinarbeit +Chlütterli-Büetz Feinarbeit +chlüübe kneifen, zwicken +Chlüübli gäh kneifen, zwicken +Chluure Augen +Chluure dicke Person +Chluure Fussball (Ball) +Chlüüre Hoden +Chluure Murmel +Chlüüre Murmel +Chluure Schimpfwörter für Frauen +Chluure Schimpfwörter für Frauen +Chlüüre-Sack Hoden +Chluurene Brüste +Chlüüreschmitte Bars, Restaurants, Clubs (eh. Kugellagerfabrik in Oerlikon) +Chnabe-Verschüüsse Feiertage (Knabenschiessen) +Chnabelüüte Feiertage (Knabenschiessen) +Chnächt Angestellte:r +Chnächt Rupprächt Bräuche (Helfer des Samichlauses) +chnächte arbeiten +Chnächte-Chneblete Teamsitzung +Chnätt Mahlzeit +Chnätt-Bömbel Brüste +Chnätt-Müüsli Physiotherapeut:in +chnätte aufs WC gehen +Chnätti Geld +Chnebel Pommes-Frites +Chnebel zwüschet d Bei rüere behindern +Chnebeli Gewehr +Chnebeli holze einen Joint rauchen +Chnebelschiissi WC (Plumps-Klo) +chneble Eishockey spielen +chneble Unihockey spielen +Chneblete Teamsitzung +Chnelle Restaurant +Chnellepfuuseri – en Chnellepfuuser Wirt:in +Chnöbi Haschisch +Chnobli Knoblauch +Chnöche Beine +Chnoche Mobiltelefon (Handy) +Chnoche schüttle tanzen +Chnoche-Flickeri – en Chnoche-Flicker Chirurg:in +Chnoche-Gstell dünne Person (schmächtig) +Chnoche-Liim Suppe (Hafersuppe) +Chnoche-Schlosseri – en Chnoche-Schlosser Chirurg:in +Chnoche-Spängleri – en Chnoche-Spängler Chirurg:in +chnoche-stier pleite +chnöchele Tischfussball +Chnocheschlosser Chirurg:in +Chnode Fingergelenk +Chnödli Finger (Fingergelenke) +Chnödli Fingergelenk +Chnöiel Wollknäuel +Chnolle-Plonter Holländer:in (Knollenpflanzer) +Chnöpf Augen (übermüdete Augen) +Chnöpf Kinder +Chnöpf iitue tadeln, massregeln +Chnopf uuftue bewältigen, meistern +Chnöpf zuetue tadeln, massregeln +Chnöpfli Kinder +Chnöpfli Kosenamen +Chnopi Kosenamen (Abk. für Knollenblätterpilz) +Chnorpel-Sack Kalbsbratwurst +Chnorz arbeiten (mühselige Arbeit) +chnorze arbeiten +Chnorzi alter Mann +Chnorzi alter Mann +Chnulleri mürrische Person +Chnulleri mürrische Person +Chnungele Kneuel +Chnüngeli Kneuel +Chnuppe-Saageri – en Chnuppe-Saager Geizhals +Chnüppel zwüschet d Bei rüere die Unterstützung verweigern +chnuppere arbeiten +chnuppesaagig geizig +Chnüri montiere schlafen +chnurre schlafen +chnüschperle schmusen +Chnuschperli Kosenamen +Chnuschperli Kosenamen +Chnuschpertäschli Kosenamen +chnuschprig gut +Chnuschti Spiesser:in +Chnutschchugle haa eine Beziehung haben +chnüttle arbeiten (motiviert) +Chnüü-Giige Cello +Chnüü-Schlotteri haa bewundern +chnüüble arbeiten +chnüüble grübeln, klauben +chnüüble kneifen, zwicken +Chnüübli-Arbet Feinarbeit +Chnüüblisack Schimpfwörter +chnüündle in die Hocke gehen +chnüündle knien +Chnüüschlotteri Angsthase +Chnüüschlotteri haa Angst haben +Chnüüschlotteri haa sich verlieben +chnuuschte arbeiten +Chnuuschti Angestellte:r +Chnüüsi Strümpfe (Kniesocken) +chochendi Riis-Schüssle Auto-Typen +chöcherle kochen (leicht kochen) +Choder Speichel +Choder-Transfer-Chübel Kirche (Krug beim Abendmahl) +Choderblaatere Dudelsack +chodere spucken +Chöderlig Speichel +Chog Kerl +choge- sehr +Choge-blöd Cordon-Bleu +chögle streiten +Chöhli Kohl +Chöichätsch Kaugummi +Choigummi tuusche schmusen +Choigummi-Indianer Amerikaner:in +Chöitsch Kaugummi +Chöitschgi Kaugummi +Chölbe Brüste +Cholbe Penis +Cholbe schmiere trinken, sich betrinken +Cholbe-Frässer Herzinfarkt +Chole Geld +Chole inehaue investieren +Chole schuufle Gas geben +Chole-Chammere Attika-Wohnung +Chole-Monschter Buchhalter:in +Chole-Sack Pfarrer, Priester +Chole-Schuufleri – en Chole-Schuufler vermögende Person, Snob +Chole-Velo Trolleybus +Choleräbli Kohl (Kohlrabi) +Choli öffentliche Verkehrsmittel (Dampflok) +Choli Pferd (schwarz) +Chömed Chinde –  es git Chäsrinde Alle herkommen! +Chömed emal da ane! Alle herkommen! +chomed foif Finger z flüüge zuschlagen +Chömed glii wider zum Abschied +Chömed guet hei zum Abschied +Chönntsch nöd? bitte +Chopf aalähne aufs WC gehen +Chopf ap! schlecht +Chopf chürzer mache umbringen +Chopf lampe laa traurig +Chopf mache trotzen +Chopf schräg hebe, dänn lauft d Hirnflüssigkeit zäme denken +Chöpf uufblase schmusen +Chopf volle schwätze auf jemanden einreden +Chopf wie-n-e Berghütte – höch obe und primitiv iigrichtet Schimpfwörter +Chopf-Gärtneri – en Chopf-Gärtner Coiffeur/Coiffeuse +Chopf-Pariser Motorrad-Zubehör (Strumpfmaske) +Chopfete Kopfende des Bettes +Chöpfler schwimmen (Kopfsprung ins Wasser) +Chöpfler mache ins Wasser springen (Kopfsprung) +Chöpfli – das arme Tröpfli Kopf +Chöpfli streichle trösten +Chopfnuss gäh zuschlagen (Fausthieb auf den Kopf) +Chopfweh Kopfschmerzen +Chopfweh-Bar Bars, Restaurants, Clubs (Malatesta) +Chopfweh-Gamälle Helm +Chopfweh-Wätter Wetter (bei Föhn) +Chopfwehwasser Champagner +Choral-Furzer Kirchenorgel +Chorb überchoo eine Abfuhr erhalten +chörble erbrechen +chörble erbrechen +Chörbli Bett +Chörbli-Kolleginne oder Chörbli-Kollege sii eine Beziehung haben +Chörndlipicker Links-Alternative:r +Chörnli-Picker Vegetarier:in +Chörnlipicker-Reschti Restaurant (vegetarisch) +chosle mit Wasser spielen +chosle sich schlecht benehmen (Essen verschmieren) +Chotz Erbrochenes +Chotz-Hofer Prominente (national) (Ralph Zloczower, SFV-Präsident) +Chotzbalke Stumpen, Zigarre +Chotzbrocke Schimpfwörter +Chotzbrocke Widerling +chotze erbrechen +chotze bis s bruun Ringli chunnt und das wider abeschlucke erbrechen +Chotzete Erbrochenes +chotzgruusigs Frässe ungeniessbares Essen +Chotzi Kochkurs +Chotzi Schule (Unterricht) (Koch-Unterricht) +Chötzi legge erbrechen +Chötzii riisse erbrechen +chötzle erbrechen (bei Kindern) +Chötzli mache erbrechen +Chotzpfoschte Schimpfwörter +Chotzpfoschte Widerling +Chou-chou Chef:in/Vorgesetzte:r (franz.) +Chouscht Ofenbank +Chraane Fahrrad +Chraane zügle Sex haben +Chräätzi Rückenkorb (vor allem von Sennen benutzt) +Chrääze Korb (Rückentragkorb) +Chräbel Hautverletzung +Chräbel under de Fötzel mache unterschreiben +chräbele sanft streicheln, fast kitzeln +chräbele Umgang mit Tieren (kraulen) +Chrabeltier Käfer +Chrabelzüüg Widerling (als Mehrzahl) +chräble kratzen +Chräbs-Stäbli Zigarette +Chräbs-Stängel Zigarette +Chräbs-Täller Aschenbecher +Chräbsstängel näh eine Zigarette rauchen +Chrache enges Tal +Chrächzi alter Mann +Chraftmeier für die männliche Figur (stark) +Chraftwerch Motor +Chrage-Arbet Schlägerei (Ausdruck aus dem Tösstal) +Chragechnöpfli Schachtel +Chräie füetere erbrechen +Chräie rüefe erbrechen +Chräje Flugzeug +Chräje Penis +Chräje Poulet +chräje schreien, rufen +chräje singen +Chräje-Domptöse – en Chräje-Domptör Pilot:in +Chräje-Open-air urinieren +Chralle Hand +Chrälleli kleine Perle +Chrälleli Schmuck (Perlen für Ketten) +Chrampf arbeiten (mühselige Arbeit) +Chrampf träje betrügen +Chrampfadere-Express Nordic Walking +Chrampfadere-Gschwaader Damenriege +chrampfe arbeiten (motiviert) +chrampfe bis zum Umgheie sich abrackern +chrampfe kännt öpper nur em Name naa arbeiten (langsam) +Chrampferi – en Chrampfer Angestellte:r +chrämpferle arbeiten (unmotiviert) +Chrampfzange Mitarbeiter:in (faul) +chrank vor Müedi müde, erschöpft +Chrankedüüse Pflegefachfrau (eh. Krankenschwester) +Chrankeschwöschter weisser Strassenpfahl +chrankhaft daneben, verwerflich +chranki Schwöschter Pflegefachfrau (eh. Krankenschwester) +Chranzbinderi – en Chranzbinder Florist:in +chräsle kriechen +chräsme kriechen +Chratte Korb +Chratte lähre jemandem seinen Kummer anvertrauen +Chrättli Büstenhalter +Chratz di deet, wo s dich biisst! Das geht dich nichts an! +Chratz im Hals haa heiser +Chratzbalche Geige +Chratzbürschte Schimpfwörter für Frauen (bissig) +Chratzbürschte Zicke +Chrätze Auto (Korb) +chratzig sauer +chratzig wütend +Chräuel Finger +chreftig stattlich +Chreil isch es (chrank und geil gliichziitig)! Das ist unglaublich! +Chreis Cheib Orte (in Zürich) (Kreis 4) +Chreisel-Linggs-Blinkeri – en Chreisel-Linggs-Blinker Schwächling +Chreiselmäjer Hubschrauber +Chreislauf-Aareger Kaffee (Morgenkaffee) +Chreisli-Frääse Autorennen +Chreuel Werkzeug (kleine Gartenhacke) +Chribbel Kugelschreiber +Chribbel mache unterschreiben +chribbelig aufgeregt +chribelig unruhig +chrible schreiben +Chrieger Alleskönner:in +chriegerle töten +Chriegsbemalig uufträge sich schminken +Chrieseli güne Kirsche (Kirschen pflücken) +Chriesi Kirsche +Chriesi Kopf +Chriesi-Auge Augen (schwarz) +Chriesi-Kracher Feuerwerk +Chriesibaum Weihnachtsbaum (von engl. christmas) +Chrige Vornamen (weiblich) (Christine) +Chrigel Prominente (national) (Christoph Blocher, Bundesrat) +Chrigel Vornamen (männlich) (Christian) +Chrigi Vornamen (männlich) (Christian) +Chrisantheme-Jonny Florist:in +Chrischi Vornamen (männlich) (Christian) +Chrischt-Stolle Brüste +Chrischtbaum Weihnachtsbaum +Chrischte-Verfolger Motorrad +Chrischte-Verfolger Velosolex +Chrischteverfolger Velosolex +Christoph-Jünger Politiker (SVP) +Chritz haa streiten +Chritz i de Platte zu wiederholtem Male +chritze kratzen +chritzle schreiben +Chrizzle Vornamen (männlich) (Christoph) +Chrom-Traktor Offroader (SUV) +chrömle einkaufen (vor allem bei Süssigkeiten) +chrömle Geld ausgeben, bezahlen +Chrone-Höhli Restaurants (Kronenhalle) +chröömerle Kinderspiele (Kramladen spielen) +Chröömli Liebhaber:in von Süssigkeiten +Chroonjuweele Hoden +chroose knirschen +chrööse schlafen +chrööse schnarchen +Chröösi mache sich ausruhen +Chröösi riisse schlafen +Chröösi tätsche schlafen +Chrööte Geld +Chropf lääre sein Herz ausschütten +Chropf lähre jemandem seinen Kummer anvertrauen +chröschperle kränkeln +chröschperlig kränklich +chröschperlig sii kränkeln +chrosle brodeln +Chrosle Stachelbeere +Chrott im Hals haa hartnäckiger Husten +Chrott im Hals haa heiser +chrotte betrunken +Chrottepösche Löwenzahn +Chrottestächer Sackmesser +Chrottewösch Wäsche (kleine Wäsche) +Chröttli Kosenamen +Chrubbe Fiesling +Chrugel Kleid (zerknittert) +Chrugelchopf Baby +Chrugele Wollknäuel +chrügle einen Joint drehen +chrumm eigenartig, seltsam +chrumm Pilz Penis +chrumm wie de schiefi Turm vo Pisa schief +Chrumm-Öpfel Banane +chrümme biegen +Chrumme Joint +Chrümmer Geizhals +chrummi Tuur mache betrügen +Chrungele Kneuel +Chrungele Wollknäuel (Garn, Wolle) +Chrüpfe Haus (schäbiges Haus) +Chrüpfe Lastwagen +chrüpple arbeiten (motiviert) +Chrusel-Beeri Schimpfwörter für Frauen (mit Dauerwellen) +Chruselbeeri Stachelbeere +Chruselbeeri-Schaberi – en Chruselbeeri-Schaber Coiffeur/Coiffeuse +chrüsele kribbeln +chrüsele sanft streicheln, fast kitzeln +Chrüseli Haare (kleine Locken) +Chrüseli Kosenamen +Chrüselimoscht Apfelsaft (mit Kohlensäure) +Chrüseliwasser Mineralwasser +chrüsimüsi durcheinander +Chrüsimüsi Kleinkram +Chrüsimüsi Unordnung, Chaos +Chrusle Haare (Locken) +Chrusli-Sänn Firmen (Krause Senn) +chrüüche kriechen +Chruume Brosamen, Krümel +Chruut Haare +Chruut und Rüebli durenand alles Mögliche +Chruut-Tüütli Joint +Chrüüter-Anni Links-Alternative:r +Chrüüter-Fraueli weitere Typen +Chrüüter-Lisi Links-Alternative:r +Chrüütli rauche einen Joint rauchen +chrüüzcheibeblöd dumm +Chrüüzer Geld +Chrüüzig zwüschet emene Fluumer und emene Staubsuuger Hündchen +Chrüüzliwinker Verkehrssoldat +chrüüzmillionetumm dumm +chrüüztumm dumm +chrüz-stern-hagel-volle betrunken +Chübel Kopf +Chübel Sauerampfer +Chübel-Frau – en Chübel-Maa Müllfrau/Müllmann +chübelblöd dumm +Chübelbumseri – en Chübelbumser Schimpfwörter +Chübelsack Kehrrichtsack +Chübelwage Lastwagen (Lastwagen der Kehricht-Abfuhr) +chüble entsorgen, wegwerfen +chüble trinken, sich betrinken +chüblet es regnet +Chuchi Scheide +Chuchi Schlagzeug +Chuchi wiissge Sex haben +Chuchi-Schabe Servierpersonal +Chuchibäse Schimpfwörter für Frauen +Chuchichäschtli Schrank (Küchenschrank) +Chuchitiger Küchenchef +Chuder-Wälsch unverständliche Sprache +chüderle hofieren, schmeicheln +Chueche im Ofe haa schwanger +Chueche uuftische lügen +chüechle arbeiten +chüechle sich mit Kleinkram beschäftigen +Chüechli Schussel +Chueh Schimpfwörter für Frauen +Chueh-Bimmble Kuhglocken +Chueh-Brunz Milch +Chueh-Buse-Entsaftigsaalaag Milchkuh (Melkmaschine) +Chueh-Buse-Masseuse – en Chueh-Buse-Masseur Bäuerin/Bauer +Chueh-Frisbii Kuhfladen +Chueh-Garaasch Milchkuh (Kuhstall) +Chueh-Handel feilschen (fauler Tausch) +Chueh-Meitli – en Chueh-Bueb Bäuerin/Bauer +Chueh-Nagel Finger (schmerzende Fingernägel bei tiefen Temperaturen) +Chueh-Plütter Kuhfladen +Chueh-Saft Milch +Chueh-Schlipf Kuhfladen +Chueh-Schwanz Joint +Chueh-Schwanz Krawatte +Chueh-Schwiizeri – en Chueh-Schwiizer Schweizer:in +Chueh-Spanisch unverständliche Sprache +Chueh-Spanisch unverständliche Sprache +Chueh-Stall Restaurant +chueh-volle betrunken +Chuehbrocke Käse +Chuehflade Bars, Restaurants, Clubs (Kaufleuten) +Chuehflade-Chnätter Jodelchor +Chuehflade-Rock Volksmusik +Chuehflade-Sirene Alphorn +Chuehflädeler Volksmusik +Chuehglogge Juwelenkette +Chüehler Nase +chuelet Wetter (sinkende Temperaturen) +Chuenagel haa frieren +chügele Fussball +chugelet öppis s Bergli ab, s isch de Herr Profässer – wie vill Öpfel hät er gfrässe? ausknobeln (Zählreim) +Chugelfang Bodyguard +Chügeli Murmel +Chügeli-Müpfer Minenwerfer-Soldat +Chugellager Erbsen +Chugellager und Bräms-Chlötz Karotten mit Erbsen +Chugelschriiber-Pilotin – en Chugelschriiber-Pilot Polizist:in +Chügi Ecstasy (Kügelchen) +Chugi-Boogie Kugelschreiber +Chugle dicke Person +Chugle dicker Bauch +chum i hüt nöd, chumi morn Das eilt nicht +Chum obenabe Beruhige dich! +Chum-i-hüt-nöd-chum-i-morn langsame Person +chümele sanft streicheln, fast kitzeln +Chümi Geld +Chumi hüt nöd, chumi morn! Redensarten (Small Talk) +Chümi-Biiger Geizhals +Chümi-Chnüpfer Geizhals +Chümichnüpfer Geizhals +Chumm doch! sicher nicht +Chumm guet under s Tram zum Abschied +chumm jetz – mach scho bitte +Chumm mer nöd eso! Hör auf! +chumm scho bitte +Chumm vom hööche Ross obenabe! Aufschneider:in, Angeber:in +Chumm wider, wänn'd chasch graad seiche Redensarten (Small Talk) (du bist noch zu jung) +Chumm, mach en Satz! Hau ab! +Chumm, Sugus! Oralverkehr (bei Männern) +Chummerbuebe Stadtpolizei Zürich +chummlig praktisch +Chüngel Kaninchen +Chüngel Kinder +chüngele sich mit Kleinkram beschäftigen +Chüngelfuetter Salat +Chüngeli-Arbet Feinarbeit +Chunnsch au scho? Ich weiss es +Chunnsch bald? Beeil dich! +Chunnsch druus, Flädermuus? Alles klar? +Chunnsch druus? Alles klar? +Chunnsch naa? Alles klar? +Chunnsch Vögel über! Fluchwörter +Chunnt das us dinere Chuchi? War das deine Idee? +chunnt es Bisiwätter tadeln, massregeln +chunnt no cho blaaschte Wetter (es gibt ein Gewitter) +chunnt öppe ane ungefähr +chunnt opsi erbrechen +Chunnt s dänn öppe? Beeil dich! +Chunsch diräkt us em Burghölzli? Spinnst du? +Chunsch druus, Bluemestruuss? Alles klar? +Chunsch druus, Bluemestruuss? Weisst du es nicht? +Chunsch druus, Flädermuus? Alles klar? +Chunsch druus? Hast du es begriffen? +Chunsch ja nöd druus, wänn d nöd drin bisch! Weisst du es nicht? +chunsch mer grad gschliffe sauer +Chunsch nae? Hast du es begriffen? +Chupfer-Tach Rothaarige:r +churz aber heftig One Night Stand +churz d Schueh abbutze besuchen (kurzer Besuch) +churz vor em Delirium wütend +churz vor em Duretrüle wütend +Churze Schnaps +churzi Ärm haa faul, träge +Churzschluss-Technikeri – en Churzschluss-Techniker Elektriker:in +Chuschel-Monschter Katze +chüschele flüstern +chüschele reden, plaudern (leise ins Ohr) +Chuss gäh küssen +Chutteli Jacke +chüttere entsorgen, wegwerfen (aus dem Süddeutschen: Kutter=Müll) +Chutteträger Pfarrer, Priester +Chuttle butze tadeln, massregeln +Chuttlebutzer Wein +Chuttlezieher Apfelwein +Chutze-Mischt Blödsinn +Chutzemischt Blödsinn +chützle sanft streicheln, fast kitzeln +chüüche atmen +chüüche wie-n-e Tampfloki keuchen +chuum sicher nicht +chuum meh d Bei lupfe chöne müde, erschöpft +chuutet es regnet +chuutet Wetter (es stürmt/schneit/windet) +Ciao! zur Begrüssung (ital.) +City-Förschterin – en City-Förschter Polizist:in +Clan Verwandte (engl.) +Clearasil-Tescht-Gländ Gesicht +Clitoris-Bank Firmen (Clientis Bank) +Clode Vornamen (weiblich) (Claudine) +Coci Coca-Cola +Coci Kokain +Coci näh Kokain konsumieren +Coci-Bödeler Brillenträger:in +Coci-Büchs Eisenbahn (Bahn-2000-Lok, die aussieht wie eine Cola-Dose) +Coci-Frosch Kokain-Konsument +Coci-Nase Kokain-Konsument +Coci-Schluuch Nase (Kokain-Nase) +Coci-Trax Servierpersonal +Coco Vornamen (weiblich) (Corinna) +Cöggeler Kokain-Konsument +Coifförschteri – en Coifförschter Coiffeur/Coiffeuse +Cola Coca-Cola +Cola Kokain +Cola-Chopf Kokain-Konsument +Colensi Kokain +Comfischnitte Brot (Butterbrot mit Konfitüre) +Cöne Vornamen (männlich) (Kornelius) +Confi uselaa entjungfern +Confi-Bolle Berliner +Container Auto (hässliches Auto) +Container Eisenbahn (Re 4/4 IV SBB) +Cooli usehänke aufreizende Bewegungen +Cordon-Blödecheib Cordon-Bleu +Cordon-Pnöö Cordon-Bleu +Corine Rauch Prominente (national) (Stadtpräsidentin Corine Mauch) +Corry Vornamen (weiblich) (Corinne) +Cou-Cousin Verwandte (franz., Vetter 2. Grades) +Cou-Cousine Verwandte (Base 2. Grades) +Cou-Cousine Verwandte (franz., Base 2. Grades) +Couchologin – en Coucholog Psycholog:in, Psychiater:in +Coupé mit Heckschade Autos von BMW (BMW Compact) +Cousin Verwandte (franz., Vetter) +Cousine Verwandte (Base) +Cousine Verwandte (franz., Base) +Crack Alleskönner:in (engl.) +Cracker Betrunkene:r +Crème heble onanieren (Männer) +Crème-Hebel Penis +Crèmeschnitte für die männliche Figur (attraktiv) +Crövette Autos aus den USA (Corvette) +cruise Auto fahren (engl.) +Cubanito Joint +Cüpli Champagner (ein Glas Champagner) +Cüpli Drinks (ein Glas Champagner) +Curry gäh Gas geben +Cylande Seidelbast +Cylande Seidelbast +Da ane – die Mane! Alle herkommen! +Da ane cho, aber subito! Alle herkommen! +da biissisch der s Halszäpfli ap ungeniessbares Essen +da bringsch de Kiime nüme zue gut +da bruuchsch es Stiig-Ise dicke Person +Da cha me nöd muule! Respekt! +Da cha mer no stungge Mach Platz! +Da chan i nume lache Das ist mir egal +da chasch de Chnächt schicke zum go jasse jassen (bei diesen guten Karten!) +Da chasch ja grad es Ross aabinde Redensarten (Small Talk) (überdimensionierte Befestigung) +Da chasch ja s Grosi schicke! jassen (mit diesen guten Karten) +da chasch mi filme schlecht +da chasch nume guene verlockend +da chasch nüme lande verlieren +Da chasch nüüt säge! Respekt! +da chum i Püggel über schlecht +Da chum i Würm über! Das nervt! +Da chunnsch ja Flöh über! Das ist unglaublich! +Da chunnsch Vögel über! Das ist unglaublich! +Da chunnt mer ja s chalti Chotze Das nervt! +Da chunnt mir de Zmorge bald retour Das nervt! +Da chunnt mir s chalte Göble Das nervt! +da chunsch uf kän grüene Zwiig es ist sinnlos +da chunsch Wüürm über nicht auszuhalten +Da gaat der en Schuss ab! Das ist unglaublich! +Da gahsch abe wie-n-en Schindler-Lift! Das ist unglaublich! +Da gahsch abe! Das ist unglaublich! +Da gahsch ad Büni! Das nervt! +Da gahsch am Stock! Das ist unglaublich! +da gahsch id Chnüü Krönung, Höhepunkt +da gaht der en Schuss ab glücklich +Da gaht der grad de Schuehbändel uuf! Das nervt! +da gaht der ja s Gsicht usenand überrascht, verdutzt +Da gheisch dure! Das ist unglaublich! +Da gheisch is Loch! Das ist unglaublich! +Da gheisch uf de Arsch! Das ist unglaublich! +Da gheisch um! Das ist unglaublich! +Da gheit der ja de Roscht ap! Das ist unglaublich! +Da ghejt der de Chifer abe! Das ist unglaublich! +da ghörsch sogar d Flöh hueschte schlecht isolierte Wohnung +Da git s glaub Gratis-Bier Menschenauflauf +Da git s nüüt z hueschte! Respekt! +Da gönd der d Schüss i d Lümpe! Das ist unglaublich! +da gönd dir d Schüss ap gut +da gönd dir d Schüss farbig ap gut +Da gsehsch d Sternli im Elsass! Das ist unglaublich! +da händ d Wänd Ohre schlecht isolierte Wohnung +da häsch es eine klare Sache +Da hät s afig Spinnhumpele draa veraltet +da hät s e Stäge drin Haare (schlechter Haarschnitt) +da hät s mi hinderegstrählet überrascht, verdutzt +Da haut s de Stöckli us de Söckli! Das ist unglaublich! +da haut s der d Schuehbändel uuf gut +Da haut s dir de Nuggi use! Das ist unglaublich! +da haut s dir de Sack id Wüeschti gut +Da haut s dir de Zapfe use! Das ist unglaublich! (Tampon) +Da haut s mer de Sack id Wüeschti! schlecht +Da hocksch ap! Das ist unglaublich! +da ine chömed 100 Jahr Chischte zäme Restaurant (Spelunke) +Da isch de Beck dure kroche Redensarten (Essen) (bei löchrigem Brot) +da isch de Gilb drin vergilben +da isch Hopfe und Malz verlore daneben, verwerflich +da isch Hopfe und Malz verlore es ist sinnlos +da isch Hopfe und Malz verlore vergeblich +Da isch s Verfalldatum scho lengschtens abgloffe veraltet +Da laht s der grad de Latz abe Das ist unglaublich! +da lauft eim de Saft im Muul zäme verlockend +da lauft eim s Wasser im Muul zäme verlockend +Da legsch di hii! Das ist unglaublich! +da leisch di flach Krönung, Höhepunkt +Da liisch ab! Das ist unglaublich! +Da liisch flach! Das ist unglaublich! +da litzt s dir grad d Socke abe scharf +Da litzt's dir grad d Socke abe Redensarten (Small Talk) (bei scharfem Essen) +da löscht s mer ab nicht auszuhalten +Da lupft s dir de Schlammteckel! Das ist unglaublich! +Da mach i de Pfau Das ist unglaublich! +da machsch de Tokter arbeiten (mühselige Arbeit) +da machsch nur d Schnurre verruckt Häppchen +da machsch s Gipfeli Krönung, Höhepunkt +da mues es es Näscht haa Polizei (hohe Präsenz) (an jeder Ecke eine Kontrolle) +da mues i uufhocke jassen (abstechen) +da muesch d Bohnestange an Iigang abe go chehre enges Tal +Da muesch ja stramm stah – Hand ad Hosenaht! Respekt! +da rollt s der Zächenegel ufe gut +Da rollt s dir ja grad d Söckli abe! Das ist unglaublich! +Da rollt s mer d Söcke abe! Das nervt! +Da rugelet s der d Zäjenegel hindere Redensarten (Small Talk) (sehr scharfes oder sauer) +da schlaaft mer s Gsicht ii schlecht +da schmöckt s aber wieder puffnuttig Geruch in einem ungelüfteten Zimmer +Da schnurret mir de Arsch Das ist unglaublich! +Da seichsch in Ofe Das ist unglaublich! +da seichsch in Ofe Krönung, Höhepunkt +da seicht nöd emal en Hund draa hässlich +Da seisch grad nüt meh Das ist unglaublich! +Da spoizt ja scho s chliine Männli im Chopf! Das ist unglaublich! +da stah wie bstellt und nöd abgholt überrascht, verdutzt +da stah wie pstellt und nöd abgholt eine Abfuhr erhalten +da stah wie-n-en Fels i de Brandig ausharren, durchstehen +da stah wie-n-en Fels i de Brandig bewältigen, meistern +da stah wie-n-en klöpfte Aff überrascht, verdutzt +da stah wie-n-es Eis bewältigen, meistern +da stellt s mer ap nicht auszuhalten +da stellt s mir de Chraane uuf eine Erektion haben +Da strählt s di hindere! Das ist unglaublich! +Da tropft de Hahne Da liegt der Hund begraben +da verbrännsch der no d Zunge scharf +da verrecksch sehr gut +Da verrecksch im Schatte Das ist unglaublich! (so heiss isch es!) +da verrecksch im Schatte sehr gut +Da verrecksch! Das ist unglaublich! +Da wär en Stäcke im Arsch no geiler! Mir reicht's! +Da wird der d Milch im Ranze suur! Das ist unglaublich! +Da wird mir ja de Same flockig! Das ist unglaublich! +da wirsch abzockt teuer +da zallsch de Name teuer (bei Markenartikeln) +Da zieht s der all Löcher zue Redensarten (Small Talk) (saurer Wein) +da zieht's der grad s Hämp hine ine Redensarten (Small Talk) (bei scharfem Essen) +Däänzi duregäh tanzen (engl. dance) +Däbberli Béret +Dachstuehl brännt Rothaarige:r +Däddy Longleg Weberknecht (Spinnenart) (engl.) +Dademit chan i läbe Das ist mir egal +Däfe Vornamen (männlich) (David) +Daggel-bi-Gfahr-uf-de-Arm-Nehmer Schwächling +Daher! Alle herkommen! (militärisch) +Daktari Ärztin/Arzt +Dalli-Dalli mache drängen +Dalli-Dalli! Beeil dich! +Dalli-dalli! Es eilt +Dame-Schwinge Orte (in Zürich) (Schwamendingen) +Dame-Schwinge Schwamendingen +Dämlack Schimpfwörter +Dämlich & Gruusig Labels (Dolce & Gabbana) +Dampf gäh sich beeilen +Dampf uufsetze drängen +Dampf-Schiss Durchfall +dampfe eine Zigarette rauchen +dampfe einen Joint rauchen +Dampfschiff Füsse (grosse Füsse) +Dampfschiff Gesäss +Dampfschiff Militärschuhe +dämpfte Uhu Poulet +dämpfte Uhu Tomate (gedämpfte Tomate) +däne betrunken +Dani Vornamen (männlich) (Daniel) +Dani Vornamen (weiblich) (Daniela) +Dänigne Drogenabhängiger +Dänkapparat aastelle denken +Dänkeli Stiefmütterchen +Dänkmaal setze stuhlen +dänkt nöd vor d Nase use Chaot:in +Dänn halt Das ist mir egal +Dänse Vornamen (männlich) (Daniel) +däredeete solche +Darm lääre stuhlen +Darmstadt laat grüesse furzen +das belaschtet mi Das nervt! +das Berühren der Figüren mit den Pfoten ist verboten! Finger weg! +das biisst mi nöd Das ist mir egal +das bringt mi no um de Verstand Das nervt! +das bringt s gut +das bringt s nöd es ist sinnlos +das bruuch i wienes Gschwür am Arsch unnütz +das bruuchi wienes es Loch im Chopf unnütz +das bruuchsch wie Chopfweh nutzlos, überflüssig +das butzt di grad dure scharf +das cha ja jede Lööli kinderleicht +das cha mir am Füdli tuutle nicht auszuhalten +das chan i nöd verbutze Das nervt! +das chan ich nöd verbutze nicht auszuhalten +das chasch de Chatz z frässe gäh schlecht +das chasch la patäntiere Angewohnheit +das chasch mit Gold uufwääge teuer +das chasch nöd bringe! Das ist unglaublich! +das chasch nöd zahle teuer +das chasch rauche schlecht +das chasch rauche unnütz +das chönnt au mir de Finger inenäh verlockend +das chönnt i au nöd besser! Respekt! +das chönnt mer au gfalle verlockend +das choscht es Gwehr teuer +das chratzt mi nöd Das ist mir egal +das chunnt mir nöd druufaa Das ist mir egal +das chunnt mir spanisch vor eigenartig, seltsam +das chunnt nöd druff aa Das spielt keine Rolle +das fahrt mer schlächt ii Das nervt! +das gaht dich en alte Huet aa! Das geht dich nichts an! +das gaht dich en Chabis aa! Das geht dich nichts an! +das gaht dich en füechte Dräck aa! Das geht dich nichts an! +das gaht dich en Seich aa! Das geht dich nichts an! +das gaht furt wie frischi Weggli Es geht weg wie warme Semmeln +das gaht mer abe wie Honig verlockend +das gaht mer am Arsch verbii Das ist mir egal +das gaht mer chalt am Arsch verbii Das ist mir egal +das gaht mer uf d Eierstöck Das nervt! +das gaht mer uf de Sack Das nervt! +das gaht mer uf de Sack! Das nervt! +das gaht mer ufs Gädder Das nervt! +das gaht mir da ine und deet use Das ist mir egal +das gaht mir Göschene-Airolo Das ist mir egal +das gaht uf kei Chueh-Huut daneben, verwerflich +das gaht uf kei Chueh-Huut sehr viel +das gfiell mer au verlockend +das gitt mer öppis! Das nervt! +das gitt mir öppis! Das ist unglaublich! +das glaubsch ja sälber nöd! Das ist unglaublich! +das glaubt der de stärchscht Maa nöd! Das ist unglaublich! +das glaubt der de stärchschti Maa nöd! Das ist unglaublich! +das glaubt der din eigete Vater nöd! Das ist unglaublich! +das gsehsch ohni Brüle Das ist offensichtlich +das gsehsch um drüü Egge ume Das ist offensichtlich +das gsehsch vo wiitem Das ist offensichtlich +das gseht en Blinde – ein Kilometer gäg de Wind Das ist offensichtlich +das gseht jede Lööli Das ist offensichtlich +das gseht me vom Schiff uus Das ist offensichtlich +das gurkt mich aa nicht auszuhalten +das hanget dir aa wie Choigummi Angewohnheit +das hät dänn Sunne! sehr gut +das hät de Aastand au nöd mit Löffel gfrässe schlecht erzogenes Kind +das hät kei Gattig daneben, verwerflich +das hät mer d Grosmuetter scho uf em Nachthafe verzellt Ich weiss es +das hät mi käppelet überrascht, verdutzt (den Hut vom Kopf genommen) +das hät mir schier de Gong gäh! Das ist unglaublich! +das hät scho min Grossvater uf em Häfi pfiffe schlecht +das hät Ziit Das eilt nicht +das haut sehr gut +das haut au d Inuit nöd vom Schlitte schlecht +das haut di d Schiissgass durab! Das ist unglaublich! +das haut mi um! Das ist unglaublich! +das haut mir de Schnägg vom Täller! Das nervt! +das haut nöd daneben, verwerflich +das haut sogar s Hörnli vo der Eiche! Das ist unglaublich! +das hettsch au gschiider am Liintuech abbutzt schlecht erzogenes Kind +das intressiert mi en alte Huet Das ist mir egal +das intressiert mi en füechte Cheeseburger Das ist mir egal +das intressiert mi wi de Schnee vor 30 Jahr schlecht +das intressiert mich en alte Furz Das ist mir egal +das isch anal Das ist unglaublich! +das isch Chrut was Chabis Das spielt keine Rolle +das isch dänn Musig sehr gut +das isch de Börner es lohnt sich (engl. burn) +das isch de Gipfel Das nervt! +das isch de Hit Es geht weg wie warme Semmeln +das isch de puuri Wahnsinn! Das ist unglaublich! +das isch de Riisser Es geht weg wie warme Semmeln +das isch de Wucherückblick für d Schwiizerinne und Schwiizer im Ussland schlecht +das isch doch ghüpft wie gsprunge Das spielt keine Rolle +das isch doch Wurscht Das spielt keine Rolle +das isch einewäg Das spielt keine Rolle +das isch em Tüüfel ab em Chare gheit schlecht erzogenes Kind +das isch en Abriss teuer +das isch en Alte Ich weiss es +das isch en Diil Abgemacht! (engl. deal) +das isch en Fall für de Wayne Das ist mir egal (Wayne interessiert es?) +das isch en fertige Kack Das nervt! +das isch en fertige Sämf Das nervt! +das isch en Schnurzfurz Das spielt keine Rolle +das isch en schöne Gump-Esel! herumtollen +das isch für d Chatz es ist sinnlos +das isch für d Füchs es ist sinnlos +das isch ghaue wie gstoche Das spielt keine Rolle +das isch gliich Das spielt keine Rolle +das isch gstohle teuer +das isch Hans was Heiri Das spielt keine Rolle +das isch ja klar wie Gülle Das ist offensichtlich +das isch ja s Maximum! Das ist unglaublich! +das isch ja wie am Zürifäscht! Menschenauflauf +das isch Körperbeherrschig – öpper ander hett de ganz Tisch voll kiiset rülpsen +das isch Körperbeherrschig – öpper ander hett id Hose gmacht furzen +das isch Läder schlecht +das isch Lumpegschiir Redensarten (Arbeit) (schlechtes Werkzeug) +das isch Lumpewar Redensarten (Arbeit) (schlechte Ware) +das isch meini nöd nüüt! Respekt! +das isch mer Hämp wie Hose Das ist mir egal +das isch mer Lago Das ist mir egal +das isch mer voll iigfahre überrascht, verdutzt +das isch miin Fisch gsi bewältigen, meistern +das isch mini letschti Uufforderig – es git keis Spööter Ultimatum +das isch mini Spezial-Fründin – das isch min Spezial-Fründ Schimpfwörter +das isch mir füdi-fädi-gliich Das ist mir egal +das isch mir gliich Das ist mir egal +das isch mir hundewurscht Das ist mir egal +das isch mir schiisse Das ist mir egal +das isch mir schiissegliich Das ist mir egal +das isch mir schnuppe Das ist mir egal +das isch mir schnuppewurscht Das ist mir egal +das isch mir so lang wie breit Das ist mir egal +das isch Näbedsach Das spielt keine Rolle +das isch nöd diis Bier! Das geht dich nichts an! +das isch nöd dini Sach! Das geht dich nichts an! +das isch nöd für dini Gwundernase! Das geht dich nichts an! +das isch nüüt für oisereis teuer (für uns arme Leute) +das isch Pfahlbouer-mässig Redensarten (Arbeit) (instabile Montage) +das isch Pfupf und Näbel vergeblich +das isch s Bättle versuumt es ist sinnlos +das isch scheissegal Das spielt keine Rolle +das isch so scharf, das brännt grad drüü Mal: s erscht Mal bim Frässe, s zweit Mal bim Schiisse, und s dritt Mal wänn d driistahsch! scharf +das isch spanend wie-n-es Glas Wasser schlecht +das isch spanend wie-n-es Telifonbuech – vill Lüüt und wenig Handlig schlecht +das isch Steizyt veraltet +das isch underschti Schande (Schublade) +das isch Wucher teuer +das isch z vill Das nervt! +das isch zum Chind überchoo Das nervt! +das isch zum Chörble! Das nervt! +das isch zum Chotze! Das nervt! +das isch zum Flocke goisse Das ist unglaublich! +das isch zum Haaröl seiche Das nervt! +das isch zum Haaröl seiche! Das ist unglaublich! +das isch zum Haaröl suuffe nicht auszuhalten +das isch zum Müüs mälche! Das nervt! +das isch zum Stei biisse Das nervt! +das isch zum Träne furze Das nervt! +das isch zum Uusschniide und Furtrüere! Das nervt! +das isch's gsi mit Tricks und Gäggs – tschau zäme zum Abschied +das jagt mir de Nuggi use! Das nervt! +das jätet mich uus de Socke! Das nervt! +das juckt mi nöd Das ist mir egal +das komische Gesetz Redensarten (Arbeit) (das Ohmsche Gesetz) +das laasch gschiider la sii eine schlechte Idee +das lauft wie gschmiert Es geht weg wie warme Semmeln +das lauft wie gschmiert sehr gut +das lauft wie gstört Es geht weg wie warme Semmeln +das liit uf de Hand Das ist offensichtlich +das litzt dir d Zeje-Nägel ume Das ist unglaublich! +das lupft de Bappe uf d Mamme scharf +das machsch mit linggs kinderleicht +das macht alles, was Gott verbotte hät schlecht erzogenes Kind +das macht de Braate au nöd feiss Das spielt keine Rolle +das macht de Brate au nüme feisser Redensarten (Small Talk) (Das bringt nicht mehr) +das macht doch nüüt Das spielt keine Rolle +das macht e kei Falle unanständig +das macht kei Gattig unanständig +das macht kei Schnure daneben, verwerflich +das macht kei Schnure unanständig +das macht mi chrank Das nervt! +das macht mi fertig Das nervt! +das mues i nöd haa schlecht +das nietet mi um! Das ist unglaublich! +das pfiiffed d Spatze scho lang vo de Tächer Ich weiss es +das pressiert nöd Das eilt nicht +das riissed s der zu de Händ uus Es geht weg wie warme Semmeln +das riisst mer de letscht Närv uus nicht auszuhalten +das riisst mir a de Nerve Das nervt! +das rüered s der nae günstig +das rünnt wie Wasser a mir ab Das ist mir egal +das schellt mi! Das ist unglaublich! +das schläckt kei Geiss wägg eine klare Sache +das schläckt kei Geiss weg Redensarten (Small Talk) (das ist eine Tatsache) +das schläckt kei Geiss wegg ganz sicher +das schletzt mer grad de Sack id Wüeschti! Das ist unglaublich! +das schöggelet mi aa Das nervt! +das schüüsst de Vogel ap sehr gut +das secklet jetz dänn furt ungeniessbares Essen (Verfalldatum abgelaufen) +das sind Apiteegger-Priise teuer +das sind Heidepriise teuer +das spilt doch kein Tango Das spielt keine Rolle +das spilt kein Rugel Das spielt keine Rolle +das stellt mir ap! Mir reicht's! +das törnt mi aa verlockend (engl. to turn on) +das wär genau mini Wällelängi verlockend +das wird scho schief gah Viel Glück! +das wott ich nöd vor d Tür gschisse haa Redensarten (Small Talk) (das will ich nicht haben) +das würd mer ja nöd emal de Soi füettere ungeniessbares Essen +das/de/die chasch rauche daneben, verwerflich +Dasch dänn no de Bescht! Das ist unglaublich! +Date braate downloaden +Datteri haa Angst haben +Dattle Hoden +Dattle Scheide +daun traurig (engl. down) +daun unglücklich, deprimiert (von engl. down) +de-hätt-mi-und-de-tät-mi manieriert (umständlich) +Death Valley Orte (ausserhalb von Zürich) (Tösstal, engl.) +Deck-Hängscht Frauenheld +dedle einkaufen +Deet hät de Zimmermaa s Loch gmacht! Hau ab! +deet riissed s der de letscht Feufer uus teuer +deet, wo d Arbet scho gmacht isch arbeiten (leichte Arbeit) +deet, wo de Kaiser elei hiigaat WC +deet, wo de Rugge sin ehrliche Name verlüürt Gesäss +deet, wo de Rugge sin Name verlüürt Gesäss +deet/die deet jener, jene +Défilée Demonstration +dehiischmelze sich verlieben +dem chunnt nur Seich in Sinn schlecht erzogenes Kind +dem gaht alles am Arsch verbii gleichgültig +dem gönnt i nöd s Nasewasser beschenken (gar nichts schenken) +dem hät s de Sack is Zahrad gno jodeln +dem lampet d Tümmi zu de Ohre uus dumm +dem lauft alles wie Wasser ap gleichgültig +Dem würdi keis Foiferli aavertroue unzuverlässige Person +Demo Demonstration +Demo-Konfetti Pflastersteine +denäbe pfäffere daneben schiessen +denäbet schlecht +denäbet haue sich irren +denäbet lange einen Fehler machen +denäbet lange sich irren +denäbet schüüsse sich irren +denah im Nachhinein +Deo-Roller Glatze +Deppin – en Depp Schimpfwörter +Derbe Shit, Alte! Das ist unglaublich! +Dere chunnt de Stroh grad zum Chopf use Redensarten (Körper) (Blondine) +dere hetsch müese pfiffe jassen (unverhoffte Karte) +dere Person würd i nöd emal de Dräck under de Fingernegel gäh beschenken (nicht beschenken) +dergliiche tue arbeiten (unmotiviert) +Detonaziönli Knall +Deutschländer Würstchen Deutsche:r +devo cheibe flüchten, davonrennen +devo gah wie-n-en Schnällzug flüchten, davonrennen +devo hase flüchten, davonrennen +devo seckle flüchten, davonrennen +devo semmele flüchten, davonrennen +devo sieche flüchten, davonrennen +devo springe flüchten, davonrennen +Devo-Schliicher Feigling +Dezi Wein (1 dl) +di goldig Chette aahaa eine Beziehung haben +di Alt Freundin, Partnerin +di Alt Servierpersonal +di alti Tante Medien (NZZ) +di amerikanisch Botschaft Bars, Restaurants, Clubs (McDonald’s) +di blaue Daltons Stadtpolizei Zürich +di eigete Zäh uuffrässe Zähne (Zähneknirschen im Schlaf) +di elektronisch Nabelschnuer Mobiltelefon (Handy) +di gliich Wällelängi haa sich gut verstehen +di goldig Handschälle Ehering +di grausam Zerstöörig iifange betrunken +di gross Entwässerig haa weinen +di gueti Seel Sekretärin +di Hindere füre näh sich beeilen +di hindere fürenäh rennen +di lang Nase mache hänseln +di lang Strass checke ausgehen +di latinische Zeerig essen (gratis essen) +di Oberscht – de Oberscht Chef:in/Vorgesetzte:r +di Rot Bars, Restaurants, Clubs (Rote Fabrik, Wollishofen) +di rot Armee chunnt Menstruation +di rot Charte zeige sich trennen +di rot Fahne duss haa Menstruation +di rot Tante z Bsuech haa Menstruation +di schlüssellosi Wohnig Gefängnis +di schnäll Marie Durchfall +di Silbergraue Übermittlungstruppen +di undere Lippe küsse Oralverkehr (bei Männern) +di undere Scharsche Mitarbeiter:in (franz. charge) +di vier Wänd Wohnung +di Wohlstandsverwahrloste Jetsetter:in +di zweite Auge Brille +di zweiti Heimet Arbeitsplatz +di zweiti Heimet Restaurant +di zweiti Huut überzieh sich anziehen +Diakonissin weisser Strassenpfahl +Diarröö Durchfall +Diät mache aufs WC gehen +Diätsirup Fruchtsaft +Dib-däbi Schussel +Dibbi-Däbbi Appenzeller:in +Dich han i s letscht Mal gseh! Hau ab! +dicht wie Fort Knox betrunken +Dichti haa betrunken +Dick & Gruusig Labels (Dolce & Gabbana) +dicki Poscht grosses Stück +Didi Vornamen (männlich) (Dieter) +Didscheriduu Penis +die Alte Verwandte (Eltern) +die ander deet diese +die Andere under em Tuume bhalte dominieren +die beide letschte Hirnzälle uf Serie schalte denken +die Büez machsch näbedbii arbeiten (leichte Arbeit) +die cha mer id Schiissi abelaa – Teckel zue schlaa – nüme uselaa gewinnen +die Chueh isch in Achtigstellig verschosse worde Steak (zähes Steak) +die döt diese +die Dritte Zahnprothese +die einte wörked – die andere teamed Team (Teamwork) +die erscht Giige spile dominieren +die Fromme Politiker (Die Mitte, eh. CVP) +die geili Keili Musiker:innen (Kylie Minogue, austr. Sängerin) +die graue Hirnzälle fürenäh denken +die graue Zälle Gehirn +die händ Seck dehei – es zieht dure schlecht isolierte Wohnung +die hät Haar uf de Zäh Schimpfwörter (bissig) +die hät Kitt uf em Grind Schimpfwörter für Frauen (aufgetakelt) +die haut, wie sie uusgseht Redensarten (Arbeit) (über eine abgenützte Säge) +die höch Töchterschuel Schule (DMS) +die hohli Hand anehebe zu viel Geld verlangen +die isch Ete-Petete Frau aus gutem Hause +die isch typeprüeft schwanger +die oder de chasch in Wind schüüsse unbrauchbare:r Partner:in +die oder de lüügt ja scho, wänn sie oder er s Muul uufmacht Lügner:in, Betrüger:in +die Roote Politiker (SP) +die roserot Brüle aahaa sich verlieben +die roti Armee chunnt Menstruation +die säb diese +die sänkrächt Chegelbahn WC +die schwierig Muetter Schwiegermutter +die standesamtlich Aagschnurreti Freundin, Partnerin +die Strass chönd s zämerugele und furtrüehhre holprige Strasse +die tümmschte Puure händ die gröschte Herdöpfel Bäuerin/Bauer +die tümmschte Puure händ die gröschte Herdöpfel Redensarten (Arbeit) +die tüürschte Herdöpfel Pommes-Chips +die verchehrti Hand gäh zuschlagen +die Ziit im Monet Menstruation +Dieli Orte (ausserhalb von Zürich) (Dielsdorf) +Diffdiff Divisionär +Differänzler jassen (Spielart) +digge erbrechen +dihine hinten +Diitschei Popo Musiker:innen (DJ BoBo, schweiz. Sänger) +Diitschei Popo Prominente (national) (DJ BoBo, Sänger) +Dilldapp langsame Person +Ding Gegenstand +Ding Mobiltelefon (Handy) +Ding Penis +Ding-Dong – isch s aacho? Alles klar? +Dingens Gegenstand +Dings Gegenstand +Dingsbums Gegenstand +Dini Eltere wäred lieber 10 Minute go laufe gange! Du bist ein Idiot! +Dini Frässi isch so richtig zum driigingge! Du bist ein Idiot! +dir chalberet no de Schiit-Stock jassen (bei Kartenglück) +Dir gaht s ja nüme! Du spinnst! +Dir gaht s meini guet! gut gelaunt +dir rägnet s ja id Naselöcher Nase (Stubsnase) +Dir wird i öppis hueschte! Pass auf, sonst knallt's! +Diräktüberträgig us Bettehuuse lose schlafen +Diri-Däri mache locken +Disco-Bänzin Coca-Cola +Disco-Diesel Kokain +Disco-Wägeli Streifenwagen +disi da diese +dismisse sich trennen (engl. to dismiss) +disse ärgern, provozieren +disse jemanden fertigmachen +Divan Sofa +divore vorne +Djetschi 10 Franken (ital. dieci) +Docht Schimpfwörter +Dödel Dummkopf +Dödel Penis +Doki Dokument +Dolce & Gabbinetti Kleidermarken (Dolce & Gabbana) +Dölf Vornamen (männlich) (Adolf) +Don Promillo Betrunkene:r +done Abgemacht! (engl.) +Döner macht schöner Kebap +döönere furzen (nach einem Döner) +dööred welk +Dööschwoo Auto-Typen (2CV) +Döösi mache schlafen +Dope Hanfpflanze (engl.) +Doppelmeter grosse Person +Doppelschlöferi sii – en Doppelschlöfer sii eine Affäre haben +doppio cremo gut +dopplete Grüene 100 Franken +Dorf-Madratze Schimpfwörter für Frauen (leicht zu kriegen) +Dorf-Rätschi Klatschmaul +Dorf-Trumpeete Klatschmaul +Dorf-Ziitig Klatschmaul +Dörfli Orte (in Zürich) (Nieder-/Oberdorf) +Dörfli mache ausgehen (von Beiz zu Beiz im Niederdorf) +Dörfsch alles ässe, aber nöd alles wüsse! Das geht dich nichts an! +Dörrfrucht dünne Person (mager) +Dose Computer (Windows) +Dose-Öffner Bajonett +Doumy Kondom +Draatschi Clubs, Discos (Kulturtreff Drahtschmidli) +Drache Chef:in +Drache-Fueter Blumenstrauss +Drachefett Margarine +Drachefuetter Pralinen +Dräck Abfall +Dräck am Stäcke haa Sex haben (anal) +dräckbillig günstig +Dräckeler Fiesling +Dräckerei Unordnung, Chaos +dräckig daneben, verwerflich +dräckig niederträchtig +dräckle betrügen +Dräcklete Unordnung, Chaos +Dräckpack Schimpfwörter +Dräcks-Cheib Fiesling +Dräcksack Fiesling +Dräcksack Widerling +Dräckschlüüdere Auto (alt) +Dräckschlüüdere Fiesling +Dräckschlüüdere Intrigant:in +Dräckschlüüdere Lastwagen +Dräckseckel Fiesling +Dräcksiech Fiesling +Dräcksou Schimpfwörter +Dräcktöff Motorrad-Typen (Motocross-Motorrad) +Dräh-Zahl-Schlüüdere Auto-Typen +Draht haa zu öppertem eine Beziehung haben +Draht-Bus Trolleybus +Draht-Esel Fahrrad +Drähtlifigger Trolleybus +Drahtverfolgeri – en Drahtverfolger Trolleybus-Chauffeuse/Chauffeur +dräije wenden +dräjie einen Joint drehen +Drama-Kwiin Schimpfwörter für Frauen (hysterisch, engl. queen) +Dreierli vom Klopsteihügel Bier (Hürlimann-Bier; wegen der Adresse) +Dres Vornamen (männlich) (Andreas) +dressierte Chundefänger Versicherungsberater +drii gumpe überstürzt handeln +drii schüüsse überstürzt handeln +driibängle zuschlagen +driibrätsche zuschlagen +driifätze zuschlagen +driifunke stören +driigheje hereinfallen +driihaue zuschlagen +driilaatsche aufprallen +driilaatsche hereinfallen +driilige schlemmen +driiligge anpacken +driiligge arbeiten +driischlaa zuschlagen +Driischnurri Störenfried +driischüüsse übereifrig +Driischüüssi Chaot:in +driistecke investieren +driitrampe hereinfallen +driitschalpe hereinfallen +Drillpischte Hindernisparcours +drinine hinein +drinine muule kommentieren +drininne drin +dritte Bei Penis +Droge-Drive-Through Letten/Platzspitz (eh. Drogenszene) +Droge-Migros Letten/Platzspitz (eh. Drogenszene) +Droge-Stäcke Joint +Drogeloch Drogenabhängiger +dröhne furzen +Drooge Medikamente +Dröögeler Drogenabhängiger +Dröögeli Drogenabhängiger +droppe nach Hause gehen +droppe übergeben (engl. to drop) +drösche Sex haben +Drü-bla-hö Funktionstest beim Feldtelefon +drüber gah Sex haben +drüberabe danach +drüberhuebere Sex haben +Druck haa betrunken +Druck mache ausgehen +Druck mache drängen +Druck mache hetzen +Druck uusgliiche furzen +Drüegg Kebap +Drüerlei Hackfleisch (Kalb-, Schweine- und Rindfleisch) +drufabe danach +druff gut gelaunt +druff sii betrunken +druffabe darauf (zeitl.) +druffgah sterben +drufobe darauf +drufufe darauf +Drüser Alleskönner:in +drususe hinaus +drüü Chrüüzli mache unterschreiben +Drüü la grad sii sich ausruhen +drüü Mal abgschnitte und es isch immer no z churz Werkzeug (Redensart beim Sägen) +drüü Meter Chääs Fussball (drei Meter Abstand) +Drüü-Färber Tomatensalat mit Mozzarella und Basilikum (wie die italienische Flagge) +Drüü-Streife-Aazug Sportartikel (Adidas) +druuf darauf +druus choo bewältigen, meistern +Dschoschd Joint +Dschumbo Ohren (abstehende Ohren) +Dschungel-Colt Banane +Dschungel-Porsche – jede Aff hät eine Autos von VW (Golf GTI) +Dschungel-Runggle Ananas +Du bisch au meh geschter als morn! Du spinnst! +Du bisch eine z vill! Hau ab! +Du bisch glaub au nur useme Entspannigs-Figg entstande! Du bist ein Idiot! +Du bisch ja dure bi rot! Du spinnst! +Du bisch ja weich! Du spinnst! +Du bisch mer en Luschtige! tadeln, massregeln (verharmlosender Tadel) +Du bisch mer en Spinnhafe! Du spinnst! +Du bisch nöd ganz uf em Damm! Du spinnst! +Du bisch schön linggsglismet! Du spinnst! +du bisch so tumm, das tuet scho weh dumm +Du bisch so voll! Du spinnst! +Du bisch z blöd zum Zigis uuselaa – gheit ane und verbüügt de Foifliber! Du bist ein Idiot! +Du bringsch mi uf d Böim! Redensarten (Small Talk) (wenn jemand nervt) +Du chasch mer! Du kannst mich mal! +Du chunsch no uf d Wält Redensarten (Small Talk) (du wirst es einsehen) +du chunsch no z spat in Himmel zu spät +Du fahrsch mit SBB – ich flüüg mit LSD LSD +Du geischtige Halbränner! Du bist ein Idiot! +Du ghüüslete Siech! Du bist ein Idiot! +Du gsehsch au nöd uus, wie wänn d plant gsi wärsch! Du bist ein Idiot! +Du häsch d Jagge verchehrt aa – de Arsch mues une useluege! Du bist ein Idiot! +Du häsch da nüüt z sueche! Hau ab! +Du häsch de IQ vomene Teebüütel! Du bist ein Idiot! +Du häsch en Flick ap, gröösser als s Titanic-Loch! Du bist ein Idiot! +Du häsch en Vogel! Du spinnst! +Du häsch es Gsicht wie en Füürmälder – so richtig zum Driischlaa! Du bist ein Idiot! +Du häsch es Hirni wie-n-en Ochsner-Chübel! Du spinnst! +Du häsch ja en Hau! Du spinnst! +Du häsch ja en Wäb-Fähler! Du spinnst! +Du häsch ja s Porzellan-Syndrom! Du spinnst! (nicht alle Tassen im Schrank) +Du häsch kein Egge ap – du häsch e ganzi Wand duss! Du bist ein Idiot! +Du häsch nöd all Hamschter im Ränne! Du spinnst! +du häsch wohl e paar Chnöche meh als anderi – will dis Hirni no mechanisch funkzioniert dumm +Du heilige Bimbam! Das ist unglaublich! +Du heiligs Verdiene Das ist unglaublich! +Du Hirni-Bick! Du spinnst! +Du Holz! Du bist ein Idiot! +Du lachsch no über dini eigeti Tummheit Redensarten (Small Talk) (wenn jemand immer lacht) +Du Schueh! Du bist ein Idiot! +Du seisch! Tatsächlich? +Du sitzisch da wie en Nussgipfel! Setz dich anständig hin! +du stänksch Blödsinn (erzählst Blödsinn) +Du verbrännti Zeine! Das ist unglaublich! +Du verreckti Zeine! Das ist unglaublich! +Du verwächslisch mi glaub mit öpperem, wo s intressiert Halt die Klappe! +Du Vollpfoschte! Du bist ein Idiot! +Du würsch gschiider in Zivilschutz go Näschter zämenagle! Du bist ein Idiot! +Du, muesch emal as Telefon Redensarten (Small Talk) (wenn jemand etwas Langweiliges erzählt) +Dübel Joint +Dübel Penis +Dubeli au fahre Autos (weitere) (DAF Variomat) +Dudle Brüste +Duele Delle +Duftorgan Gesäss +Dumm & Grässlich Labels (Dolce & Gabbana) +düne unwohl +Dünnpfiff Durchfall +Dunschtkiipe Hut +dur d Hindertür verschwinde sich unbemerkt von der Truppe absetzen +dur de Gaggo zieh jemanden fertigmachen +dur de Rank zieh eine Kurve fahren +dur s Hindertürli use entwischen +durab bergab +Duracell Rothaarige:r (die mit dem Kupferkopf) +Durchfall-Brämsi schwarze Schokolade +durchschiinig abgenützt +Durchschnitts-Basleri – en Durchschnitts-Basler Schimpfwörter +Durchzug (eh. Eisstadion Kloten, "Schluefweg"")" Gebäude, Lokalitäten +dure betrunken +dure müde, erschöpft +dure schlecht (bi root) +dure verrückt +dure bi Rot müde, erschöpft +dure bi Rot verrückt +dure bi Rot wahnsinnig +dure stiere erzwingen +durebiisse ausharren, durchstehen +dureblicke bewältigen, meistern +Durebutzer Schnaps +durechätsche lästern +durechlopfe den Hintern versohlen +durefützle ausharren, durchstehen +Duregheiti – en Duregheite Irre:r +duregheje sich ärgern +duregriitet abgenützt +durehächle kritisieren +durehebe ausharren, durchstehen +durehechle lästern +durehoble Sex haben +durejoggle Sex haben +dureknallt verrückt +durela Geld ausgeben, bezahlen +durelaa Geld verschwenden +duremache bis in die Morgenstunden feiern +durenäh kritisieren +durenäh lästern +durenäh Sex haben +durenand durcheinander +Durenand Unordnung, Chaos +durenand verwirrt +durenand mache mischen +durenand sii verrückt +durenudle Sex haben +dureörgle Sex haben +dureruesse Sex haben +düreschnüüze fahren (vorbeifahren) +durestarte explodieren +durestarte sich ärgern +duresüüche ausharren, durchstehen +duretrucke erzwingen +duretrucke Vollgas +duretrület wahnsinnig +durewalze Sex haben +durezieh ausharren, durchstehen +durezieh Sex haben +durezwänge erzwingen +Dürlipflüdder Durchfall +duruuf bergauf +Durzug im Hirni haa dumm +dusche – schminke – Füdli puudere sich schminken +düschter sauer +düschter sauer +Düse-Jet Haare (Frauenfrisur aus den 60ern) +Dusel haa Glück haben +duss schlecht (für Leute und Dinge, die nicht in sind) +Dussel haa Glück haben +Dutt Haare (hochgesteckt) +Dutti Prominente (national) (Gottlieb Duttweiler, Migros-Gründer) +düübele einen Joint rauchen +Duubi Joint +Düübi Joint +Duubi rauche einen Joint rauchen +Duubi smierge einen Joint rauchen +duuch müde, erschöpft +duuch unglücklich, deprimiert +duudele arbeiten (langsam) +duurend Ferie haa arbeitslos +Düüse Brüste +düüse fahren +düüse nach Hause gehen +Düüse-Büsi Flight Attendant (Flugbegleiter:in) +düüsele schleichen +Düüsemer? Gehen wir nach Hause? +Düüsetriib Kleidermarken (Diesel) +Düütsche Deutschland +Duuz-Duuz Techno +Duzis mache das Du antragen +DVK – Die vom Kolleg eine Zigarette schnorren (Marke) +E Ecstasy +Ännet-Hirzeleri – en Ännet-Hirzeler Zürcher:in (aus Zuger Sicht) +Änte Auto-Typen (2CV) +Ärbslizelleri – en Ärbslizeller Pedant:in +Öl-Striicheri – en Öl-Striicher Österreicher:in +Öpfel-Jüngeri – en Öpfel-Jünger Computer (Apple-User:in) +Öpfelquätscheri – en Öpfelquätscher Thurgauer:in +Öschtriicherin oder en Öschtriicher, wo sich bi dr Völkerwanderig verloffe hät Ostschweizer:in +Öschtrogeen-Kurve Kalbsbratwurst +­Schliimeri – en ­Schliimer Schmeichler:in +Üüle Eule +Üüle Fussball (Tor zwischen den Beinen des Torwarts durch) +E-Göppel Elektro-Fahrrad +E.T. Prominente (national) (alt Bundesrat Alphons Egli) +Easy-Portugiesy Portugiese +Echo vom Albis Klatschmaul +Echo vom Üetzgi Klatschmaul (Üetliberg) +Echo vom Züriberg Klatschmaul +edel gut +Edel-Jugi Bars, Restaurants, Clubs (eh. Club Indochine) +Edelzwirn Anzug +EDV-Futzi Informatiker:in +Eff-Sack persönliche Tasche (für die Effekten) +Egge Knick +Egge ap haa verrückt +Ego-Disco MP3-Player +Ego-Panzer Auto-Typen +Egofurzer Macho +eh sowieso +Eh du miin Trooscht! Das ist unglaublich! +Eh nöd? Tatsächlich? +Ehi zur Begrüssung +Ehre-Bärneri – en Ehre-Bärner langsame Person +Ehre-Chübel empfindliche Person (rasch beleidigt) +ehrelos schlecht +Ehrerundi Schule (Übertritt) (Wiederholungsjahr) +Ehrewort ganz sicher +Ehrewort nöd! sicher nicht +Ehrezejeli Schlüsselblume +ehrlere anbaggern, aufreissen +Ei Autos von Opel (Opel Kadett GSI) +ei Gletti glitschig +ei Iisbahn glitschig +Ei legge einen Fehler machen +Ei legge schaden +Ei legge stuhlen +ei Metti Aufregung +ei Rutschbahn glitschig +ei Schliifi glitschig +Ei Wöhli! Redensarten (Small Talk) (mir ist wohl) +Eichebergers aalüüte urinieren +Eichhörnli spile Oralverkehr (bei Männern) +Eichle butze Oralverkehr (bei Männern) +Eichle-Schmeichler Unterhose (für Männer) (angenehme Boxershorts) +Eidächsli mälche urinieren (Männer) +eidgenössisch diplomierti Bürostuehl-Wärmeri – en eidgenössisch diplomierte Bürostuehl-Wärmer Kaufmännische:r Angestellte:r +Eier Hoden +Eier haa mutig +Eier poliere tadeln, massregeln +Eier stresse ärgern, provozieren +Eier versorge Sex haben +Eier-Chocher Sitzheizung +Eier-Explodier-Maschine Mikrowellen-Ofen +Eier-Rallye Ostern +Eier-Schliifi Glatze +Eier-Versteckis Ostern +Eierbächer Unterhose (für Männer) +Eierchratzer Beamte +Eierhobel Mofa +eierleggendi Wullmilchsau Alleskönner:in +Eierlüüte Schmerzen im Unterleib (Mann) +eiersüffig eifersüchtig +eifach fett durerattere mit Seriefeuer schiessen +eifach isch de Vorname kinderleicht +Eigebrötleri – en Eigebrötler Egoist:in +eigene Porno mache onanieren (Männer) +Eight-Ball gäh trinken, sich betrinken (acht Dosen trinken) +eim d Wohnig chünde aufs WC gehen +eimal uussetze aufs WC gehen +eimaligs Höpperli One Night Stand +ein Gleddel glitschig +ein IQ weniger – und öpper wär en Randstei Dummkopf +Ein IQ-Punkt weniger – und d Foti-Synthese fangt aa! Du spinnst! +Ein IQ-Punkt weniger – und du wärsch en Stei! Du spinnst! +ein Seich mache einen Fehler machen +Ein-Fränkler 1 Franken +Ein-Nacht-Ständer One Night Stand +Ein-Zäller Schimpfwörter +eine a de Chappe haa betrunken +eine a de Zitrone haa betrunken +eine ab de Wand Schnaps +eine abchläme einen Joint rauchen +eine abehole einen Joint rauchen +eine abehotte tanzen +eine abezieh einen Joint rauchen +eine abfackle furzen +eine ablaa furzen +eine abseile aufs WC gehen +eine abzable onanieren (Männer) +eine anelegge tanzen +eine befreie stuhlen +eine blase Oralverkehr (bei Männern) +eine blaze einen Joint rauchen (ausgesprochen: bleïse) +eine boue einen Joint drehen +eine chlöpfe laa ausgehen +eine chnorxe Gang einlegen +eine druff mache bis in die Morgenstunden feiern +eine druffmache ausgehen +eine duregäh bis in die Morgenstunden feiern +eine duregäh Geld verschwenden +eine duregäh stuhlen +eine fahre laa furzen +eine gäh sich beeilen +eine güffne einen Joint rauchen +eine i de Chroone haa betrunken +eine i de Zentrale haa intelligent +eine iilegge einen Joint drehen +eine im Gsicht haa betrunken +eine ine tätsche jemanden fertigmachen +eine inefätze einen Joint rauchen +eine inepfiiffe einen Joint rauchen +eine ineschletze einen Joint rauchen +eine inetopfe Fussball (Tor erzielen) +eine inetrucke schaden +eine mit churze Ärm Italiener:in +eine mit eme Ferrari-Logo am Fiat Italiener:in +eine mitmache leiden +eine montiere einen Joint drehen +eine päckle zuschlagen +eine rocke tanzen (engl. rock ’n’ roll) +eine rolle einen Joint drehen +eine röte einen Joint rauchen +eine ruble onanieren (Männer) +eine schnattere laa furzen +eine schruube einen Joint rauchen +eine schünte einen Joint rauchen +eine setze furzen +eine sitze haa betrunken +eine stecke sich beeilen +eine stiige laa ausgehen +eine träje betrügen +eine trüle einen Joint drehen +eine tschäddere laa ausgehen +eine türgge betrügen +eine uf de Putz haue ausgehen +eine uf Gigi Oeri mache sonnenbaden (im Solarium) +eine us em Chrüüz trucke stuhlen +eine us em Drüü-Buechstabe-Land Engländer:in +eine us em Wirtschafts-Wunderland Zürcher:in +eine uufwerfe eine Runde ausgeben +eine uusschaffe aufs WC gehen +Eine vo eus zwei isch tümmer als ich! Du spinnst! +eine vom Bodepersonal Pfarrer, Priester +eine wädle tanzen +eine zue mache einen Joint rauchen +eine zuemache einen Joint drehen +Eine-wie-keine Joint +Eine, wo de Nüsslisalat erfunde und grüen aagmalet hät Akademiker:in +einewäg sowieso +eini abestäche Sex haben +eini abfülle Oralverkehr (bei Männern) +eini am Fass haa eine Beziehung haben +eini bache zuschlagen +eini butze zuschlagen +eini chläbe zuschlagen +eini hindere lade zuschlagen +eini id Schnurre haue eine Zigarette rauchen +eini inehänke Fussball (Tor erzielen) +eini pänggle zuschlagen +eini über di gross Zinne zieh Sex haben +eini versänke Fussball (Tor erzielen) +eini wüsche zuschlagen +Einstein sii intelligent +Einstein-Verschnitt Besserwisser:in +eis a de Fichte haa betrunken +eis ableiche Samenerguss +eis ad Lafete Ohrfeige +eis ad Löffel Ohrfeige +eis ad Löffel gäh zuschlagen +eis ad Ohre Ohrfeige +eis am Bläch haa betrunken +eis am Chessel haa betrunken +eis am Helm haa betrunken +eis am Sänder haa betrunken +eis am Tee haa betrunken +eis an Chessel Ohrfeige +eis as Bläch tätsche trinken, sich betrinken +eis as Chessi gäh zuschlagen +eis as Geranium lääre trinken, sich betrinken +eis bäfzge eine Zigarette rauchen +eis blaase trinken, sich betrinken +eis blante einen Joint rauchen (engl. to blunt) +eis blase musizieren (Blasorchester) +eis böbele einen Joint rauchen +eis brätsche zuschlagen +eis chlopfe jassen +eis chnüüble einen Joint drehen +eis chriege stuhlen +eis chrööse einen Joint rauchen +eis dampfe einen Joint rauchen +eis dope einen Joint rauchen (engl.) +eis fädere zuschlagen +eis fätze zuschlagen +eis flacke zuschlagen +eis gäg eis mache onanieren (Männer) +eis gheje laa furzen +eis go brätsche ausgehen +eis go haa ausgehen +eis go haa ausgehen +eis go hebe ausgehen +eis go inestele ausgehen +eis go näh ausgehen +eis go schnappe ausgehen +eis go tätsche ausgehen +eis go topfe aufs WC gehen +eis go zieh ausgehen +eis go zützle eine Zigarette rauchen +eis haa trinken, sich betrinken +eis hämmere zuschlagen +eis handörgele onanieren (Männer) +eis haue, dass es dich überschlaat wie en Güggel wänn s blitzt zuschlagen +eis hebe trinken, sich betrinken +eis heize einen Joint rauchen +eis hinder d Chiime pulfere zuschlagen +eis hinder d Kieme zieh eine Zigarette rauchen +eis hinder d Ohre gäh zuschlagen +eis hinder s Gsicht lääre trinken, sich betrinken +eis hindere suuge eine Zigarette rauchen +eis hindere zieh eine Zigarette rauchen +eis hindere zieh zuschlagen +eis hine ine jasse Sex haben (anal) +eis in Helm ine lääre trinken, sich betrinken +eis ine trucke zuschlagen +eis inebrämse schaden +eis ineprätsche betrügen +eis inhaliere eine Zigarette rauchen +eis is Zifferblatt fädere zuschlagen +eis kaable onanieren (Männer) +eis kiffe einen Joint rauchen +eis kurble onanieren (Männer) +eis lade trinken, sich betrinken +eis lade zuschlagen +eis lädere Sex haben +eis lange zuschlagen +eis lööte trinken, sich betrinken +eis lule Oralverkehr (bei Männern) +eis minettle Oralverkehr (bei Männern) +eis motte einen Joint rauchen +eis mötte einen Joint rauchen +eis mötte einen Joint rauchen +eis müle einen Joint rauchen +eis mülle einen Joint drehen +eis näble eine Zigarette rauchen +eis nach em andere wie z Paris Das eilt nicht +eis obenabe zwirble onanieren (Männer) +eis paffe eine Zigarette rauchen +eis paniere zuschlagen +eis pflaschtere aufs WC gehen +eis pröike eine Zigarette rauchen +eis PS Pferd (eine Pferdestärke) +eis pumpe Oralverkehr (bei Männern) +eis qualme eine Zigarette rauchen +eis riisse eine Zigarette rauchen +eis rutze einen Joint rauchen +eis rüüchle eine Zigarette rauchen +eis schloote eine Zigarette rauchen +eis schnäggle Sex haben +eis schnappe trinken, sich betrinken +eis serviere zuschlagen +eis sitze stuhlen +eis smööge einen Joint rauchen +eis smööke eine Zigarette rauchen +eis spendiere eine Runde ausgeben +eis tätsche zuschlagen +eis tische zuschlagen +eis tropfe eine Zigarette rauchen +eis trucke stuhlen +eis trüle einen Joint drehen +eis trüle einen Joint drehen +eis tschuppe Oralverkehr (bei Männern) (von den Lutschern Marke Chupa Chups) +eis tschüünte einen Joint rauchen +eis tubäkele eine Zigarette rauchen +eis tubakne eine Zigarette rauchen +eis tütze einen Joint rauchen +eis über d Rüebe zieh zuschlagen +eis uf de Zwölfer gäh zuschlagen +eis uf s Muul zwicke zuschlagen +eis uf s Ohr klatsche Ohrfeige +eis uufrüere eine Runde ausgeben +eis vo de Palme wädle onanieren (Männer) +eis wäggträge aufs WC gehen +eis wäsche zuschlagen +eis wickle einen Joint drehen +eis wiide einen Joint rauchen (engl. weed) +eis wiissle einen Joint rauchen +eis zahle eine Runde ausgeben +eis zieh trinken, sich betrinken +eis ziggle eine Zigarette rauchen +eis zinggiere zuschlagen +eis zupfe onanieren (Männer) +eis zwitschere trinken, sich betrinken +Eiter-Balke Crèmeschnitte +Eiter-Guuge Vanille-Cornet im Blätterteig +Eiter-Hörnli Vanille-Cornet im Blätterteig +Eiter-Rieme Crèmeschnitte +Eiter-Schnitte Crèmeschnitte +Eiter-Schwarte Crèmeschnitte +Eiter-Tüüte Vanille-Cornet im Blätterteig +Eiterwurscht uussuuge Oralverkehr (bei Männern) +Eläktrisch Rätoromanisch +eländ schlecht +eländ sträng anstrengend +eländi Milchsuppe Wetter (starker Nebel) +eländi Schnattere Fiesling +Elch rülpsen +Elefant Penis +Elefante-Böögg Gurke +Elefante-Finke Auto-Typen +Elefante-Muschi Gasmaske +Elefante-Ränne Lastwagen (Lastwagen überholt Lastwagen) +elefäntle Schnupfen +elefantös gut +elegantös gut angezogen +Elektrisch elektrischer Strom +elektrisch Babysitter Fernseher +elektrischi Grosi Fernseher +Elektro-Prinz Vibrator +Elektrone-Hirni Computer +elektronisch flirte ein E-Mail schicken +Elektroromantisch Rätoromanisch +Elfi Vornamen (weiblich) (Elfriede) +elfti Finger Penis +Elggermaa Gebäck (Grittibänz) +Elifant öffentliche Verkehrsmittel (altes Züri-Tram) +Elifante-Fale Zähne (Riesenloch im Zahn) +Elifante-Grab Zähne (Riesenloch im Zahn) +Elifante-Ränne Lastwagen (Lastwagen überholt Lastwagen) +Ellebögleri – en Ellebögler Rüpel:in +Ellvi Vornamen (weiblich) (Elvira) +Elschtere Verwandte (Eltern) +Elsi Vornamen (weiblich) (Elisabeth) +Elvira Prässluft Prominente (international) (Elvis Presley) +em Amor sis Marmor Penis +em Chef d Hand gäh urinieren (Männer) +em Chliine d Wält zeige urinieren +em Chräiegott opfere erbrechen +em Giga Luft mache urinieren +em Giovanni sin Frisbii Pizza +em Heiland sis Bleistift grosse Person +em Keramik-Gott opfere erbrechen +em Pegel luege trinken, sich betrinken +Em Schmöcke aa chunnt s go schiisse Es stinkt +em Ton nae isch es eusi Moore rülpsen +em Tüüfel ab der Stange gumpe Glück haben +em Tüüfel es Ohr ap bis zum Geht-nicht-mehr +em Tüüfel es Ohr ap sehr +em Tüüfel es Ohr ap sehr viel +em Ueeeeli rüefe erbrechen +eme Jahrgänger d Hand gäh urinieren (Männer) +en ächte Pirat sticht au is rote Meer Menstruation (während der Mens) +Älme Joint +Ängländer Werkzeug +Äschbi Aschenbecher +Äschetätsch Aschenbecher +­Chliine-Ticke-Zämegflickte für die männliche Figur (klein und dick) +Öko-Zipfel Links-Alternative:r +Öl-Wächsel mache schmusen +Ölwächsel mache urinieren +Öpfel Apfel +Öpfel Computer (Apple Computer) +Öpfel im Schlafrock Gebäck (Apfel mit Blätterteigmantel und Haselnussfüllung) +Öpfel mit Stumpf und Stiil ässe Apfel (vollständig essen) +Öpfelschämpis Apfelschorle +Öschi Österreicher:in +Öschtriicher-Fernseh Mikrowellen-Ofen +Ötzi Österreicher:in +überzüchtete Iichaufswage ohni Griff Auto-Typen +Üsserschwizer Zürcher:in (aus Walliser Sicht) +en/es Tiini Teenager:in (Abk. von engl. teenager) +enand abschläcke schmusen +Ende Spende Schüttelreime +enorm sehr +Entfäkalisierigszentrale WC +entgleisti Gsichtszüüg haa betrunken +entlüfte furzen +Entruessigs-Technikeri – en Entruessigs-Techniker Kaminfeger:in +Entsafter Freundin, Partnerin +Entschludigung Entschuldigung +Entspann di, Andi! Beruhige dich! +Entspann di! Beruhige dich! +Entwickligshilf leischte entjungfern +Epi-Aafall Techno +Eppeeri Erdbeere +Eppeeri a de Eigernordwand Brüste (kleine Brüste) +Eppeeri am Uuspuff Hämmorhoiden +Eppeeri-Ziit Menstruation (Erdbeeren-Zeit) +Er Penis +Er gseht nöd guet und ghört nöd guet und cha nöd weidli laufe Hörst du nicht mehr gut? +er hät a jedem Finger zäh Frauenheld (zehn Frauen) +er hät all Tag Fasnacht Scherzkeks +er hät au no Linse - demit er bis ad Brülle vüre gseht Brille +er hät d Narrechappe aa Scherzkeks +er hät es Portmonee zwüschet de Bei Zuchtstier +er hät s gseh choo blaues Auge +Er hät s under em Tisch überchoo Schwarzgeld +er isch abgsoffe Fehlstart +er isch versoffe Fehlstart +er macht s sit 100 Jahr eso Angewohnheit +er seit scho: "Di Nächschti, bitte!""" sich trennen +er stilt am lieb Gott de Tag ab Faulpelz +er stotteret Fehlstart +er verriisst kei Strick faul, träge +erbräche erbrechen +Erbsli mit Bowäärli Karotten mit Erbsen +erde- sehr +erdegeil sehr gut +erdehässlich hässlich +erdeschlächt niederträchtig +erdevolle betrunken +erdewüescht hässlich +ergattere schnorren +Erholung und Fun ohne Risiko Militärdienst EUFOR (EUFOR) +erlicke begreifen, verstehen +erscht nachher danach +Erscht no! Tatsächlich? +erschte mache gewinnen +erstämpfele erzwingen +ertöibele erzwingen +ertrotze erzwingen +erwele kochen +Erwerbs-Höögge Finger +erz- sehr +Äckegstabi Nackenstarre +Ähli Streicheleinheit +Öfeli, en Jackson Joint +Öl Bier +Öl-Stitzli Werkzeug (kleine Öl-Flasche mit Pumpe) +es öödet mi aa! Mir reicht's! +Eschtrich Dachboden +Esel-Fleisch Mortadella +Esel-Prokura Unterschriftsberechtigung (i.A. – im Auftrag) (wegen des Esellauts I-Ah) +Eselsohr Knick (in einem Buch) +eso pluminu ungefähr (Abk. von Plusminus) +eso schliime, dass mer uusrutscht hofieren, schmeicheln +Essen)" scharf +Esthi Vornamen (weiblich) (Esther) +etcetera-pe-pe und so weiter +etepetete manieriert +Etienne Vornamen (männlich) (franz. Stefan) +Etui Bett +EVG Diäten (ein Viertel genügt) +Evi Vornamen (weiblich) (Eveline) +ewigs fortzu +ewigs sehr lange +ewigs zu wiederholtem Male +Ex leer trinken +Ex – oder ad Wand leer trinken +Ex oder (nie meh) Sex mit dr Ex leer trinken +Ex-Zoni Ausländer (Ostdeutscher) +exakt dä Wääg genau so +Exäkteli Pedant:in +Excusé Entschuldigung +explodiere eine Erektion haben +explodifikazioniere explodieren +Express uufgää urinieren +Express-Schiss Durchfall +Exti Ecstasy +extrem sehr +extrem vill sehr viel +extremadura gut +Fäbe Vornamen (männlich) (Fabian) +Fabrik Arbeitsplatz +Fäcke Haare (ungekämmt) +Fackel Dokument +Fade Fussball (starker Schuss) +Fäde Haare +Fade Tanga +Fade Zigarette +Fade smarode eine Zigarette schnorren +Fade trucke eine Zigarette rauchen +Fade zieh Kokain konsumieren +fade- sehr +Fädeli ganz wenig +Fädere Bett +fädere Sex haben +Fädere-Bock Poulet +Fädere-Gymnastik mache Sex haben +Fädere-Schachtle Schachtel (um die Füllfedern aufzubewahren in der Schule) +Fäderebock Hahn +Fäderli 10 Franken +Fadezeindli Nähzeug +Fäg-Bürschte Reinigung und Unterhalt +fäget fetzige Musik +Fägi mache tanzen +Fägnäscht Zappelphilipp +fägnäschte sich im Bett herumwälzen +Fähler i allne Teil Auto-Typen (Fiat) +Fähli Freundin, Partnerin (das Fell) +fählt tot +Fähndli Rock +Fähndli unzuverlässige Person +Fahne jassen (Banner) +Fahne Kleid +Fahne Rock +Fahne wie-n-en Bunse-Bränner haa betrunken +Fahne-Türgg Standartenabgabe (Fahnenabgabe) +Fahnestange grosse Person +Fähnli Kleid (unansehnlich) +Fahr ap! Hau ab! +Fahr emal de Rahme ii! Nimm deine Ellenbogen weg! +Fahr in See! Beruhige dich! +Fahr in See! Hau ab! +Fahr mer ap! Du kannst mich mal! +Fahr wieder abe! Beruhige dich! +fahrbare Undersatz Auto +fahre wie d Schliifer fahren (schnell) +fahre wie-n-en Roiber fahren (schnell) +fahrende Hochsitz Offroader (SUV) +fahrende Stinkfinger Fahrrad-Fahrer:in +fahrendi Raffinerie Offroader (SUV) +fahrends Altersheim Autos von Volvo (Volvo 240) +Fahrgstell Beine +Fahri Auto +Fahri mache fahren +Fahri mache fahren (Spazierfahrt) +Fährli Schwein (Wildschwein) +Fährlimoore Schwein +Fahrt is Blaui Ausflug +Fahruuswiis Führerausweis +Fak-Uusgang Fakultativer Ausgang +Fäkal trucke stuhlen +Fäldchötzli Bier (Feldschlösschen) +Fäldfläsche Feldweibel +Fäldgülle Bier (Feldschlösschen-Bier) +Fäldi Feldweibel +Fäldmarschall Bäuerin/Bauer +Fäldwilli Feldweibel +Fäldwixer Feldweibel +Fallobscht Brüste (Hängebrüste) +Fallschirm Kondom +falsch Fuess verbinde hereinfallen +falsche Füffzger Intrigant:in +falsche Füffzger Lügner:in, Betrüger:in +falschi Hündin – en falsche Hund Lügner:in, Betrüger:in +falschi Moore Schimpfwörter für Frauen +falschi Schlange Fiesling +falschi Schlange Intrigant:in +falschi Trucke Schimpfwörter für Frauen (unehrlich) +falschi Tüüfelin – en falsche Tüüfel Lügner:in, Betrüger:in +Falt Knick +Faltewurf alte Frau +Faltewurf zerknautscht +Familie-Schluuch Familienzusammenkunft +Familie-Schluuch Verwandte (Familientreffen) +Familie-Schmuck Hoden +Familieglück Hoden +Familieglück Penis +Familieschluuch spazieren (Sonntags-Spaziergang) +Fang-Ise Ehering +Fangis Kinderspiele +fangt scho guet aa Pech haben (Pech im Anfangsstadium) +Fänschterli Augen +Fanta One Night Stand (engl. Abk. fucked and never touched again) +fänzi gut (engl. fancy) +Farb wächsle explodieren +farbigs Gmäld Fernseher +farmazeuterle sich mit Kleinkram beschäftigen +fascht beinahe +fäscht gut +Fäscht Party +fascht e Herzbaragge überchoo überrascht, verdutzt +fascht gschänkt günstig +fascht tot müde, erschöpft +Fascht-Zivilischt Sanitäter +Fasi Faserpelzjacke +Fass dicker Bauch +Fass für die männliche Figur (klein mit Bauch) +Fass Zigarette +Fass ohni Bode Betrunkene:r +Fass ohni Bode Trinker:in, Alkoholiker:in +Fassade Gesicht +Fassade renoviere sich schminken +Fätze Bodybuilder +Fätze für die männliche Figur (muskulös) +Fätze grosses Stück +Fätze Grundstück +Fätze Kleid +Fätze Kleidung +fätze rennen +Fätze gugge Fernseher (fernsehen) +Fätze Papier Dokument +Fätze-Schlucker Hündchen +Fätzerei Schlägerei +Fätzli Rock +fätzt fetzige Musik +Fauli-Sack Fussball (unfairer Spieler, engl. foul) +Fauli-Siech Fussball (unfairer Spieler, engl. foul) +Faxe Gesicht (Grimasse) +Fazenetli Taschentuch +Fazolettli Taschentuch +Fazonettli Taschentuch (von ital. fazzoletto) +FDH Diäten (Friss die Hälfte) +FDP-Chilbi Sechseläuten +Fecce Facebook +Feddy-mässig sehr gut (wegen Roger Federer) +Fee Vornamen (weiblich) (Felicitas) +Feete Party +Feez Party (Teenager-Party) +fehze ausgehen +fein gut +feine Pinggel Jetsetter:in +Feischter Fenster +Feischterläde schlüüsse schlafen +Feischti dicke Person +feisse Hafe dicke Person +Felge-Wii Wein +Feliton Telefon +fellationiere Oralverkehr (bei Männern) +Felse dicke Person +Felse für die männliche Figur (stämmig) +Felse-Spränger Schnaps +Feni Fernseher +fergge abreiben +fergge ausliefern +Ferie a de Wehntaler Riviera ins Gefängnis gehen +Ferie mache Urlaub machen +Ferie-Eggleri – en Ferie-Eggler Bündner:in +Ferie-Künschtleri – en Ferie-Künschtler Lehrer:in +Ferie-Lager Redensarten (Arbeit) +Fernbedienig Gewehr +ferngstüürete Bodelumpe Dackel +ferngstüürets Meersoili Hündchen +Fernseh Armee-Tornister +Fernseh-Chäschtli Fernbedienung +Ferrari versorge Sex haben +Fertig luschtig! aufgeben, resignieren +fertig sii mit de Wält müde, erschöpft +fertige Armlüüchter Schimpfwörter +fertige Chabis Blödsinn +fertige Minggis Blödsinn +fertige Mischmasch alles Mögliche +fertige Schlufi Fiesling +fertigi Spinneritis eine schlechte Idee +fertigi Susi Jammerlappen +fertigi Suurbräme mürrische Person +fertigs Bütschgi Schimpfwörter für Frauen +Feschti – en Feschte dicke Person +Feschtplatte formatiere trinken, sich betrinken +Feschtplatte lösche trinken, sich betrinken +fett sehr gut +Fettbalke Gipfel +fette Geld ausgeben, bezahlen +fetti Shinte Joint +Fettigi dicke Person +Fettkurve Gipfel +Fettlawine dicke Person +Feuf-Räppler 5 Rappen +Feuf-Stern-Hüppi Zappelphilipp +Feufer 5 Rappen +Feufer und s Weggli welle anspruchsvoll +Feuferli 5 Rappen +Feufliibertröchni haa pleite +FG gut ("foll geil") +Fichte-Töff Motorsäge +fickuliere jemanden fertigmachen +Fiddy 50 Rappen +Fideli-Räche Schnauz +Fidibus Aschenbecher +Fidibus Aschenbecher +fidle abreiben +fidle bürsten, polieren +fidle Sex haben +fidle zuschlagen +Fiduz haa mutig +Fifi Hündchen +fifti Cent 50 Rappen (engl. fifty cents) +Fifti-fifti mache die Zeche teilen +Figaro Coiffeur/Coiffeuse +Figg di is Chnüü! Du kannst mich mal! +Figg di is Chnüü! Fluchwörter +Figg di wägg! Hau ab! +Figg dich! Du kannst mich mal! +Figg poschte Prostitution +Figgchaschte Hoden +figge schaden +figge Sex haben +Figger-Korpi Korporal (besonders streng) +Figger-Täsche Unteroffizierstasche +Figgi-Figgi-Film Pornofilm +Figgi-Mühli haa beides haben (vom Brettspiel Mühle) +Figgkurve Augenringe +Figgscheiss Fluchwörter +Figgschnitzel Fluchwörter +figgt mi aa Das nervt! +figle bürsten, polieren +figle Sex haben +Figugegl Fondue (Fondue isch guet und git e gueti Luune) +figureetle berühren, befingern +Fiige Gesicht +Fiige-Toni Musiker:innen (Vico Torriani) +fiile Auto fahren +fiile Sex haben +fiile skifahren (schnell) +fiin sorgfältig, behutsam +Fiinstaub-Inhalator Lunge +Fiinstaub-Schnüffleri – en Fiinstaub-Schnüffler Stadtbewohner:in +Fiirabig-Sirene Fagott +fiisi Ratte Fiesling +fiisi Tuur abzieh schaden +Filet Hü Pferde-Entrecôte +Filet im Darm Kalbsbratwurst +Filter Fahrkarte +Filterlifixer Drogenabhängiger (fixt Spritzenreste anderer) +Filu Lausemädchen/Lausbub (franz. filou) +Filu Schlitzohr (franz. filou) +Filz Geschäftsleitung +Filz Haare +Filz LSD +Filz-Luus 50 Rappen +filze betrügen +filze klauen, stehlen +Filzlüüs zum Frässe rüefe furzen +Find es Ändi! Hör auf! +Findsch de Rank? Hast du es begriffen? +Finettli Kinder (zierliches Mädchen) +Finettli zartes Kind +Finger ab de Röschti – de Vater hät d Füess druff! Finger weg! +Finger ab de Röschti! Das geht dich nichts an! +Finger us em Arsch! Beeil dich! +Finger use! Beeil dich! +Finger usenäh sich beeilen +Finger verbräne hereinfallen +Finger-Beeri Hand (Fingerkuppe) +fingerle berühren, befingern +Fingerli schiebe onanieren (Männer) (in die Scheide oder in den After) +Fingernegel la rede kratzen +finito kaputt +Finito – capito? Jetzt reicht's! (ital.) +Finito! Hör auf! (ital.) +Finke Reifen +Finke Schuhe +Finke chlopfe flüchten, davonrennen +Finke chlopfe sich trennen +Finkekino Fernseher +Finkestrich näh flüchten, davonrennen +Finöggeli empfindliche Person +Finöggeli zartes Kind +Fippi Vornamen (männlich) (Philippe) +Firlifanz Blödsinn +Fisch Arbeitsregenschutz +Fisch falsch +Fisch Krawatte +Fisch Penis +Fisch Scheide (wegen des Geruches) +Fisch füettere erbrechen +Fisch ineluntze Sex haben +Fisch mache müde, erschöpft +Fisch mache nach Hause gehen +Fisch mache sich verabschieden, weggehen +Fisch schüttle aufs WC gehen +Fisch schüttle urinieren (Männer) +Fisch tünkle Sex haben +Fisch überchoo eine Rüge erhalten +Fischchopf Deutsche:r +fische anbaggern, aufreissen +fische angeln +Fischer-Ruete angeln (Angelrute) +fischle Sex haben +Fischleichstell Feuerleitstelle +Fisel Penis (franz. la ficelle) +fiserle Wetter (ganz leicht regnen) +fiserlet es regnet (es nieselt) +fit gut gelaunt +fit wie en Turnschueh fit, gesund +fit wie es Pomm-Fritt fit, gesund +fitze Fussball (reingrätschen) +Fitze haa betrunken +fix abgemacht +fix Abgemacht! +fix und fertig müde, erschöpft +fix und foxi abgerackert +fix und foxi müde, erschöpft +fix und foxi mache jemanden fertigmachen +Fixhündli Hündchen +Fixli Hündchen +flach mache zertreten +flach trucke zertreten +flach usechoo eine schlechte Idee +Flachland Brüste (kleine Brüste) +Flachland-Indianer Bewohner des Mittellandes +flachlegge Sex haben +Flachwurzle Feldweibel +Fläck furt haa verrückt +Fläcke Fleck +Fläcke mache Oralverkehr (bei Männern) +fladädi müde, erschöpft +Flade Erbrochenes +flade müde, erschöpft +fläde müde, erschöpft +Flade boue Unfall +Flade-Brot Kuhfladen +Flamme Freundin, Partnerin +Flammewärfer Feuerzeug +flappe onanieren (Männer) +Flaps Ohren (abstehende Ohren, aus der Aviatik) +Flärre Fleck +Flärre ap Hautverletzung +Fläsch begleite bis in die Morgenstunden feiern +Fläsche Nichtsnutz +Fläsche Versager:in, Verlierer:in +Fläsche Wasser in Egge stelle urinieren +Fläsche-Butzer Hündchen (Yorkshire-Terrier) +Fläsche-Zug Seilzug +Fläscheböde Brille +Fläschedepot Prominente (national) (Bundesrat) +Fläschedepot uf de Schuelreis Regierung auf Reisen +Flatter-Chraane Hubschrauber +Flättere Ohrfeige +Flattier-Bäse Blumenstrauss +flattiere anbaggern, aufreissen +flattiere hofieren, schmeicheln +flattiere schnorren +flattü entzwei +Flause Hirngespinst +Flegel Teenager:in (frech) +Fleisch mit Handgriff Kotelett +Fleisch mit Hebi Poulet +Fleisch-Chappe Glatze +Fleisch-Chäs Gebäude, Lokalitäten (Opernhaus-Neubau) +Fleisch-Katalog Pornoheft +Fleisch-Schau Strip-Club +Fleisch-Tiger Fleisch-Liebhaber:in +Fleischbanane Penis +Fleischbohne Cervelat +Fleischchäs Gehirn +Fleischflöte Penis +Fleischflöte blaase Oralverkehr (bei Männern) +Fleischgwehr Penis +Fleischmärt Badeanstalt, Schwimmbad (überfüllte Badeanstalt) +Fleischmuffe Scheide +Fleischpeitsche Penis +Fleischpeitsche poliere onanieren (Männer) +Fleischpeitsche schwinge Sex haben +Fleischpeitsche schwinge urinieren +Fleischprügel Penis +Fleischtöff Pferd +flenne weinen +flexe sich ausruhen (von engl. to flex a muscle) +flibedi-flööp gut +Flic Polizist:in (franz.) +Flick reparierte Stelle +flicke reparieren +Flider Geld +Flimmer-Chaschte Fernseher +Flimmer-Chischte Fernseher +Flimmer-Schuppe Kino +Flinte Gewehr +Flinte Joint +Flinte is Chorn rüere aufgeben, resignieren +Flinte rauche einen Joint rauchen +flipp-flopp- sehr +flitze anbaggern, aufreissen +flitze skifahren (schnell) +Flitzekacke Durchfall +Flitzer Auto +Flitzer Auto (schnell) +flocho müde, erschöpft +Flocke Cornflakes +Flocke Geld +flöckelet Wetter (leichter Schneefall) +Flöckli Kosenamen +Flöckli mit Möckli Birchermüesli +Flöh use hole kämmen +Flöh-Räche Kamm +flohne arbeiten (langsam) +Flohner-Läbe füehre arbeiten (langsam) +Flohnisiech Faulpelz +Flohpelz Katze +Flöhstriicherin – en Flöhstriicher Österreicher:in +Flohtaxi Hund +Flohtaxi Katze +Flohtram Hund +floone schwänzen +Flooner Lügner:in, Betrüger:in +Floor-Mänätscheri – en Floor-Mänätscher Reinigungskraft (engl. floor manager) +Flööschtriicher Österreicher:in +Flööte Gewehr +flööte gah pleite +Flööte schüttle urinieren (Männer) +Flöötestriicher Österreicher:in +Flop eine schlechte Idee +floppe einen Fehler machen (engl. flop) +Flopperi – en Flopper Versager:in, Verlierer:in (engl. flop) +Flore Vornamen (weiblich) (Florence) +Flörli Vornamen (weiblich) (Florence) +Flosse Füsse +Flosse Hand +Flösseri – en Flösser Pilot:in +Flöte Auspuff +Flöte Joint +Flöte stimme onanieren (Männer) +Flötekonzert Prostituierten-Gespräch +flott aagschirret gut angezogen +Flüchtige loswerde stuhlen +Fluchtsalat Fruchtsalat +flueche schimpfen, beschimpfen +Flug-Huehn Flight Attendant (Flugbegleiter:in) +Flügel-Muettere Ohren +Flügelflitzeri – en Flügelflitzer Fussball (Stürmer:in) +Flughund Poulet +Flugi Flugzeug +Flugzüüg-Serviertochter Flight Attendant (Flugbegleiter:in) +Flummi Gummiball +Fluppe Zigarette +Flüschtertüüte Auspuff +Flüschtertüüte Megaphon +Flüssigbrot Bier +Flüssigfurz Durchfall +Flüssigs Geld +flüssigs Brot Bier +flüssigs Gold Benzin +flüssigs Obscht Fruchtsaft +flutschig schwabblig +flutscht es geht so +flüüge entlassen werden +Flüüge Fliege +flüüge mit Drogen abstürzen +Flüüge Motorrad (50ccm, wegen des Schaltgeräusches) +flüüge Schule (Übertritt) (sitzenbleiben) +Flüüge mache nach Hause gehen +Flüüge-Fängeri – en Flüüge-Fänger Fussball (schlechte:r Goalie) +Flüüge-Landepischte Glatze +Flüüge-Schliifi Glatze +flüüged d Hüehnerfädere Aufregung +Flüügefänger Strümpfe +Flüügefängeri – en Flüügefänger Nichtsnutz +Flüügendi – en Flüügende Polizist:in (Polizist:in auf Motorrad) +flüügendi Servierdüüse Flight Attendant (Flugbegleiter:in) +Flüügepilz-Stafette Orientierungslauf +Flüüger Flugzeug +Flüügzüüg Feuerzeug +Fluumer Haare (Lockenkopf) +Fluumer Hündchen +Fluumer Reinigung und Unterhalt +Fluumer Wischmop +Fluusche Versager:in, Verlierer:in +Föhn Gewehr +Föhn Pistole +Föhn frisiere Sex haben +Föhn-Türgg Bündner:in +Föhnchopf Bündner:in +föhne furzen +Föick furzen +föif gäg eine onanieren (Männer) (isch unfair) +föif gäge Willy spile onanieren (Männer) +foif Stutz 5 Franken +Foif-Liiber 5 Franken +Foifer und s Weggli haa beides haben +Foifer-im-Arsch-Chrümmeri – en Foifer-im-Arsch-Chrümmer Geizhals +Foifer-Mocke Bonbon (Bonbon für 5 Rappen) +Foifer-Rolle 5 Franken +foifi Rouge uufträge sich schminken +foifminütige Choderwächsel mache schmusen +föift Raad am Wage sii überflüssig sein +Foik inezieh eine Zigarette rauchen +föike, motoore furzen +Fondü-Frässeri – en Fondü-Frässer Schweizer:in +Fondue-Caquelon Helm +Fondue-Chinoise-Pfanne Orte (in Zürich) (Letzigrund-Stadion) +föös übereifrig (Abk. von nervös) +foppe hänseln +foppe Umgang mit Tieren (spielen) +föpple hänseln +Foräle-Schläck zuschlagen (Griff an den Hoden von hinten) +ford chaufe – ford fahre – fordwerfe Auto-Typen +Ford fahre – hei laufe Auto-Typen +forewägg fortzu +Forigeli Föhrenzapfen +förscht class sehr gut (engl.) +fötele fotografieren +Föteleri – en Föteler Fotograf:in +Foti Fotografie +Foti Fotokamera +Foti-Station Geschwindigkeitskontrolle +Fotiwätter Wetter (schönes Wetter) +Foto Fotografie +Fotöi Stuhl (franz. fauteuil) +Fötzel Dokument +Fötzel Schimpfwörter +Fötzeljagd Orientierungslauf +Fotzelschnitte Brot (mit Milch-/Ei-Gemisch ausgebacken) +Foun Mobiltelefon (Handy) (engl. phone) +Four Roses für e blue Lady Whisky +Fözzeli Zettel +frääse Auto fahren +frääse fahren +frääse skifahren (schnell) +frääsig gut +Fraass Mahlzeit +Frächdachs Rüpel:in +fräche Chog Rüpel:in +fräche Hagel frech +fräche Hagel Rüpel:in +fräche Latz haa frech +fräche Siech Rüpel:in +frächi Gosche haa frech +frächi Mätz Schimpfwörter für Frauen +frächi Röhre Schwätzer:in +frächi Röhre haa frech +frächi Röhre haa kommentieren +frächi Täsche Schimpfwörter für Frauen +frächi Wäntele Schimpfwörter für Frauen +frächi Wanze Schimpfwörter für Frauen +främsle essen (knabbern) +Frankeländer Französin/Franzose +Fränkler 1 Franken +Fränkli 1 Franken +Frankriich französische Schweiz +fränsle essen +Franz Französin/Franzose +Franz Schule (Französisch-Unterricht) +Franz-bring-Werchzüüg Auto-Typen (eh. Lastwagen FBW) +Franz-bring-Werchzüüg Lastwagen (FBW-Lastwagen) +Franzchäsisch Französisch +Franzenösisch Französisch +Franzki Einkauf (Franz Carl Weber, neu Kids Town) +Franzose-Tschäppi Béret +Französisch näh nach Hause gehen (ohne sich zu verabschieden) +Frappé! Hau ab! (Abk. von fahr ap, ey) +Fräss-Balche Orte (ausserhalb von Zürich) (Autobahn-Raststätte Würenlos) +Fräss-Beiz Restaurant (Gourmet-Treff) +Fräss-Orgie Gelage +Fräss-Päckli Paket mit Esswaren +Fräss-Sack Gourmet +Fräss-Tämpel Restaurant +Fräss-Zädel Dokument (kleine Notiz) +Frässalie Esswaren +Frässarium Restaurant +Frässbrätt Mund +frässe essen +frässe überholen +frässe unanständig essen +frässe wie-n-en Wikinger unanständig essen +Frässete Gelage +Frässi Gesicht +Frässi Mund +Frässi poliere zuschlagen +Frässi poliere zuschlagen +Frässi vernagle zuschlagen +Frässi-Chrümmeri – en Frässi-Chrümmer Bodyguard +Fratze Gesicht (hässlich) +Fratzebuech Facebook +Frätzli Gesicht (hübsches Gesicht) +Frau Freundin, Partnerin +Frau abschlaa Sex haben +Frau oder de Herr von der Putz Reinigungskraft +Frau Sutter Prominente (national) (Alain Sutter, eh. Fussballer) +Fraue-Fürz Feuerwerk (kleine Petarden) +Fraue-Jeger Frauenheld +Frauemagnet Frauenheld +Fredi Vornamen (männlich) (Alfred) +Fredy schüttle urinieren (Männer) +Freinacht mache bis in die Morgenstunden feiern +Freitag-Täsche Links-Alternative:r +fremd gah Seitensprung +fremd-hösle Seitensprung +fremde Fötzel Auswärtige:r +Fremdländischi – en Fremdländische Auswärtige:r +Fremdsprach lehre erbrechen +fresh sehr gut +Freud-Verschnitt Psycholog:in, Psychiater:in +Freude herrscht! Respekt! +freudele sich freuen +Freudespänder Bancomat +freudig aaghuucht glücklich +Frida öffentliche Verkehrsmittel (Forchbahn) +Frida Bünzli öffentliche Verkehrsmittel (Forchbahn) +Fridhof-Gmües alte Frau +Fridhof-Pflanze alte Frau +Fridhof-Pflanze alter Mann +Fridhofblueme Nelken +Fridi Friedhof +Friedhof-Spargle Zigarette +Friedhofs-Gländer Motorrad +Friedhofsaktionär alter Mann +Friise Haare (Frisur) +Friise-Schnipsleri – en Friise-Schnipsler Coiffeur/Coiffeuse +friisteile reimen, dichten (engl. freestyle) +Frisch-ab-Präss Klatschmaul +frisiere tunen +frisierte Rase-Mäjer Schimpfwörter für Frauen (aufgetakelt) +frisierte Rasemäjer Autos von Fiat (Fiat 500) +frisierti Garette Autos aus England (Mini Cooper) +frisierti Sprützchanne Autos von VW (kleine GTI-Modelle) +Frisööse – en Frisöör Coiffeur/Coiffeuse +Frisur wie us em Tömbler Haare (zerzaust) +Fritte Gesicht +Fritte Haare (Frisur) +Fritz chlopfe Begrüssung von Vorgesetzten +Fritzl Österreicher:in +Fritzli Penis +Frizzantino Italiener:in +Frög mi öppis Liechters Ich weiss es nicht +Frög mi öppis, wo-n-i weiss Ich weiss es nicht +Frög öpper anders Ich weiss es nicht +Froggy Französin/Franzose +Froide-Hüsli Bordell +Frolein Servierpersonal (veraltet) +Frolein – hani alles gsoffe woni zahlt han? Servierpersonal +Frölein zahle/mues zunere Schnalle uf Sant Galle/go Alimänte zahle! Servierpersonal +fromm gut +Frommbeeri Brombeere +Frömmeler Sektierer:in +Frosch Zigarette +Frosch i de Hose haa eine Erektion haben +Frosch-Frässeri – en Frosch-Frässer Französin/Franzose +Frosch-Schänkel-Gnüüsser Französin/Franzose +Froschkönig Gebäude, Lokalitäten (Figur seitlich am Grossmünsterturm) +fröschle Sex haben +fröschtle frieren +Fruchtbarkeits-Thermometer Mobiltelefon (Handy) (bei Frauen) +Fruchti Fruchtsalat +Fruchtsalat für Fuessgänger Fruchtsalat (mit Schnaps) +Früehligs-Butzete Reinigung und Unterhalt (Frühjahrsreinigung) +fründliche Handzeiche Redensarten (Verkehr) (Zeigefinger ans Hirn) +Früschluft-Vergiftig uuskuriere eine Zigarette rauchen +FU Schimpfwörter (fuck you) +FU mache – Finger use sich beeilen +Fu-Hö ganz wenig (ein Schamhärchen) +Fübü – en Fübü Spiesser:in (Füdli-Bürger:in) +Fubu-Meitli – en Fubu-Bueb Hip-Hopper:in +Fübü-Ranch Schrebergarten +Fuchs Pferd (rot-braun) +Fuchs-Schwanz Werkzeug (Handsäge) +Füchsli Rothaarige:r +fuchstüüfelswild wütend +Fuchtli Dirigent (mit übertriebenen Bewegungen) +füdele aufreizende Bewegungen +Füdeli wie-n-es Chrischtbaumchügeli für die weibliche Figur +Füdeli-Suppe Suppe (Fideli-Suppe) +Fudi Gesäss +Fudi schwinge tanzen +Fudi vo geschter Prominente (national) (Trudi Gerster, Märchentante) +Fudi windelweich tätsche den Hintern versohlen +füdi-fädi-blutt nackt +Fudi-Rageete Zäpfchen +Fudiböögg Kot +Füdibütz Katze +Fudimangöggis Blödsinn +Fuditätsch gäh den Hintern versohlen +Fudiweggli Brötchen (Weggen) +Fudler Österreicher:in (Vorarlberger) +Füdli Gesäss +Füdli betrüge erbrechen +Füdli haa mutig +Füdli lupfe arbeiten +Füdli schwänke schwimmen +Füdli verbrätsche den Hintern versohlen +Füdli verhaue den Hintern versohlen +Füdli verklatsche den Hintern versohlen +Füdli versalbe den Hintern versohlen +Füdli wie-n-es 1000fränkigs Praliné dicke Person +Füdli wie-n-es Brouerei-Ross für die weibliche Figur (dick) +Füdli wie-n-es Hürlimaa-Ross für die weibliche Figur (gross) +Füdli wie-n-es Tännstor für die weibliche Figur (dicker Po) +Füdli-Lade Bordell +Füdli-Lade Sex-Shop +Füdli-Lade Strip-Club +Füdli-Schau Street Parade +Füdli-Schuppe Bordell +Füdli-Schuppe Sex-Shop +Füdli-Schuppe Strip-Club +Füdli-Schwärmer Zwiebel +Füdli-Spunte Strip-Club +Füdli-Wäscher Eisenbahn (eh. Badezug nach Zurzach) +Füdli-Wecker Mofa +füdliblutt nackt +füdliblutt Wahnsinn sehr gut +füdliblutt Wunder! Respekt! +füdliblutti Wahn gut +Füdlibrätsch gäh den Hintern versohlen +Füdlibrot Brötchen (Weggen) +Füdlibürgerischi Deppe-Partei politische Parteien (FDP) +Füdlibutzer Angestellte:r +Füdlifilm Pornofilm +Füdligäld Prostitution +Füdliheftli Pornoheft +Füdlipass Fussball (Fehlpass) +Füdlischwänki Badeanstalt, Schwimmbad (kleines Schwimmbad) +Füdlitätsch gäh den Hintern versohlen +füecht hinder de Ohre Teenager:in +füechte Akzänt feuchte Aussprache +Füechter Schimpfwörter +füechti Diktion feuchte Aussprache +Fueder Ladung +fuehret schwere Kost +Füehrigsghilf Pistole +fuehrwerche pfuschen +Fuess lupfe tanzen +Fuess verknackst haa Füsse (Verstauchung) +Fuess-Huupi Hündchen +Fuess-Schweiss-Indianer Füsse (mit Fussgeruch) +Fuess-Zahside Flip-Flops +Fuessabträtter Vertreter +füessele aufreizende Bewegungen (einander unter dem Tisch mit den Füssen berühren) +Fuesspilz-Tämpel Badeanstalt, Schwimmbad +Fuesspilz-Tämpel Badeanstalt, Schwimmbad +Fuessvolk Normalverbraucher:in +Fueter Esswaren +Fueter Mahlzeit +Fueter lampet zu de Täsche uus Scheide (vergrössert) +Fueterlugge Mund +fueterniidig eifersüchtig +Fuetter-Bank Esstisch +Fuetter-Trog Esstisch +fuettere essen +Fuetterniid Missgunst +Füffzger 50 Rappen +Füffzgi 50 Rappen +Füfi 5 Rappen +Fufi 50 Franken +Fufu Fourier +Füfzg-Rappe Prominente (international) (50 Cent, US-Rapper) +Fühlerhänd Freundin, Partnerin +Fülli Pferd (Fohlen) +Fummel Kleid +fummle schmusen +Fundi-Ei Autos von Toyota (Toyota Previa, Familienvan der Evangelikalen) +Funkprügel Mobiltelefon (Handy) +funkzionagle funktionieren +Funkzionaglets? Alles klar? +funkzionogügele funktionieren +für d Chatz Blödsinn +für d Chatz schlecht +für d Chatz unnütz +für d Chatz vergeblich +für d Füchs Blödsinn +für d Füchs missraten +für d Füchs schlecht +für d Füchs unnütz +für d Füchs vergeblich +für d Füchs wertlos +für d Füchs sii überflüssig sein +für d Grossmuetter schlecht +für d Hase Blödsinn +für d Hase vergeblich +für d Müüs schlecht +Für di ganz pressante: es SchniPoSaKaZa Schnitzel (Schnitzel Pommfritt Salat Kafi Zahle!) +Für dich lömmer s gääl Wägeli la choo! Du spinnst! (Einlieferung in psych. Klinik) +für mich hät's nüme glanget leer ausgehen +für mich isch Fiirabig nach Hause gehen +für mich isch Polizeistund nach Hause gehen +für nüüt vergeblich +für nüüt und wider nüüt erfolglose Aktion +Für wie blöd haltisch mich eigetlich? Du kannst mich mal! +Furche Knick +Fürchtiputz Angsthase +Füredrängler Rüpel:in +füregrüble hervorkramen +Furie Fourier +fürschi vorwärts +fürschi gstrählete Hinderschi-Tubel eigenartig, seltsam +fürschi mache sich beeilen +Furt isch furt Das ist mir egal +Furt mit Obscht – ha Südfrücht im Chäller! Früchte +Furt mit Schade! Hau ab! +furt spicke werfen, zuwerfen (mit Schleuder) +furtrüere entsorgen, wegwerfen +furtschüüsse entsorgen, wegwerfen +Furz eine schlechte Idee +Furz Hirngespinst +Furz i de Laterne haa gleichgültig +Furz id Chuchi und Glück in Gade! zum Abschied +Furz mit Franse Durchfall +Furz-Chugle Rosenkohl +Furz-Filter Tanga +Furz-Gmües Bohnen +Furz-Öpfel Zwiebel +furz-troche Wetter (lange Trockenperiode) +Furz, wo de Uusgang nöd gfunde hät rülpsen +Furz, wo Lift fahrt rülpsen +Furz/furzen furzen +Furzbrämsi Unterhose +Furzer Chaot:in +Furzfalle Bett +Furzglogge Unterhose +Furzgrind Schimpfwörter +Furzgugge Schimpfwörter für Frauen (aufgeregt) +Furzgugge Schlafsack +Furzidee eine schlechte Idee +Furzidee Hirngespinst +fürzle furzen +Furzloch After +Furzmatte Bett +Furzmulde Bett +Furzstange Gebäck (Salzstange) +furztroche sehr trocken +Furztüüte Schlafsack +Fusel Füsilier +Füsel Füsilier +Fusel Wein (schlechter Wein) +Füsiater Psycholog:in, Psychiater:in +Füsij Gewehr (franz. fusil) +Füsiletta Gewehr +futsch entzwei +futsch kaputt +Futschi-Futschi Tourist:in (von Fuji-Film) +futschiggato kaputt (Pseudo-Italienisch) +Futzchopf Stricher (männliche Prostituierte) +Futze-Chützler Schnauz +Futzebluetige Menstruation +Futzehügel Scheide +Futzeläcker Hündchen +fützelet Es stinkt +Fützger 50 Rappen +Fuuchpelz Katze +fuude essen (engl. food) +Fuul-Wiiber-Salat Salat (vorgewaschener Fertig-Salat) +Fuulänzeri – en Fuulänzer Faulpelz +fuule Hund Faulpelz +fuule Sack Faulpelz +fuule Siech Faulpelz +fuule Socke Faulpelz +füülelet Es stinkt +fuuli Bölle-Wäje Lastwagen (eh. Lastwagen FBW) +fuuli Trucke Faulpelz +fuuli Trucke Schimpfwörter für Frauen (faul) +fuuli Uusreed isch en Foifer wert sich herausreden +Fuulpelz und de Liederli sind zwei schlächti Brüederli faul, träge +Fuulpelz und de Liederli sind zwei schlächti Brüederli Faulpelz +fuuls Ei Fussball (unglückliches Tor) +fuuls Eugster Eiterpickel beim Auge +Füür im Tach Haare (rothaarig) +Füür-Stuehl Motorrad +Füüri Feuerzeug +füürig Elias Eisenbahn (Dampflok) +füürle mit Streichhölzern spielen +Füürlichind Brandstifter:in +Füürlimeischteri – en Füürlimeischter Feuerwehrfrau/Feuerwehrmann +Füürmälder Nase +Füürmälder Rothaarige:r +Füürstei Bonbon (werden bei Hochzeiten geworfen) +Füürtüüfel Brandstifter:in +Füürtüüfel Rothaarige:r +Füürwehr-Bankett Wurst-Käse-Salat +füürwehrle Sex haben +Füürzüüg-Hiiundhär-Musig Kuschelrock +Fuuscht im Sack mache eine Erektion haben +Fuuschtball-Buebe Männerriege +Fuuschtflättere Ohrfeige +füüschtle Schlägerei +Füüschtli eine Hand voll +Füüschtling Handschuhe +Fux vife Person +fuxe ärgern, provozieren +fuxe hänseln +fuxt mich ärgern, provozieren (es ärgert mich) +Ga-Ho-Bi Angestellte:r (Gang mer, hol mer, bring mer) +Gaaanz ruig! Beruhige dich! +gääch anstrengend +gääch gut +Gääg eine schlechte Idee (engl. gag) +Gääge Scheide +gaagele mit dem Stuhl auf zwei Beinen balancieren +Gaageli Freund, Partner +Gaageli Langweiler:in +Gaageli Schimpfwörter +Gääggi-Tante Schimpfwörter für Frauen (klagend) +gääl Wägeli chunnt (Farbe der früheren Zürcher Ambulanz), er ghöört is Burghölzli verrückt (heutige psych. Uniklinik) +gääle Wägeli Autos (weitere) (Krankenwagen der psychiatrischen Klinik) +gääli Gheimnis Aromat +gääli Gülle Aromat +gääli Schnuer id Weid rüere urinieren (Männer) (in freier Natur) +Gääli vom Ei Krönung, Höhepunkt +gääli Wurscht Bier +gaase furzen +gaat mer uf d Eier schlecht +Gäbeli Vornamen (weiblich) (Gabriella) +Gabi Vornamen (weiblich) (Gabriella) +gäbig praktisch +gäbig umgänglich +gäbig sii tüchtig +Gable Vornamen (weiblich) (Gabriella) +gäch steil +Gädder Fett (Fett an einem Stück Fleisch) +Gädder-Büüle dicker Bauch +Gädderige für die männliche Figur (drahtig) +Gade Stall +Gade Wohnung +Gaff ablaa einen Fehler machen +gaffe schauen (starren) +Gaffer Schaulustige:r +Gaga Blödsinn +gaga müde, erschöpft +gaga schlecht +Gagaseich Blödsinn +gäge d Wand grännt sii eine Abfuhr erhalten +gäge e Wand gwichst haa eine Abfuhr erhalten +Gäge-Schwer Verwandte (die andern Schwiegereltern) +Gagel Artillerie-Granate +Gagel Kot +Gagel Patrone +Gagel hindere jage schiessen +Gagel mache hofieren, schmeicheln +gagele stuhlen +Gägerhächi alte Frau +gägesiitig d Werchzüüg butze Oralverkehr (bei Männern) (69) +Gagg Kot +Gagg Poulet +Gagg i de Hose haa Angst haben +Gagg i de Hose haa ängstlich +Gaggalaari Schimpfwörter +Gaggalaari unzuverlässige Person +Gaggalööri Schimpfwörter +gagge stuhlen +Gäggel Kot +Gaggelaari Schwätzer:in +gäggele sich mit Kleinkram beschäftigen +gaggele stuhlen +Gäggeli-Arbet Feinarbeit +gäggeli-gääl gelb +Gäggelizüüg Kleinkram +Gaggere Huhn +gaggere stuhlen +Gaggi Kot +Gaggi im Aug Eiterpickel beim Auge +gäggle stuhlen +Gaggoo schlecht +Gaggs Laut +gägsig frech +Gägsnase Rüpel:in +gäh übergeben +Gah mal go Bier hole Gesellschaftsformen (GmbH) +Gahsch go lehre jammere? Redensarten (Small Talk) (Kommentar zur Landwirtschaftslehre) +gaht as Läbige gefährlich +gaht diräkt under d Schädeltecki betrunken +gaht mer am Arsch verbii schlecht +gaht nüüt meh müde, erschöpft +gaht obsi das Schlimmste überstanden haben +gaht s no Nein +Gaht s no! Das ist unglaublich! +Gaht s no? Spinnst du? +Gaht s? Spinnst du? +gaht uus Es geht zur Neige +gaht vor d Hünd kaputt +gaht zümftig abe steil +gaht zur Sou kaputt +Gaie-Fez Party (zu viele Männer) +Gaie-Salat Party (zu viele Männer) +Gäld mit volle Hände uusgäh Geld verschwenden +Gäld schöchle Geld sparen (vom Heuen) +Gäld schuufle Geld sparen +Gäld uf de Bühni haa Geld sparen +Gäld wie Heu haa Geld verschwenden +Gäld zum Versoue haa Geld verschwenden +Gäld-Sack vermögende Person, Snob +Gäld-Tresor Bankangestellte:r +Gäldchaschte Bancomat +Gäldfabrik Bank +Gäldhahne vermögende Person, Snob +Gäldhotel Bank +Gäldomat Bancomat +Gäldschiisser Bancomat +Gäldschiisser haa Geld verschwenden +Galerte Sülze +galertig schwabblig +Galionsfigur Alleskönner:in +Gallerich Sülze +gallig sauer +gallig wütend +Galööri Schimpfwörter +galoppierendi Öpfelhurde Auto +Gält chunnt zu Gält Redensarten (Geld) +Gält gaht nie verlore – es wächslet nume de Bsitzer! Redensarten (Geld) +Gält stinkt nöd Redensarten (Geld) (non olet, bolet) +Gält verchlöpfe einkaufen +Gamälle-Siech! Fluchwörter +gämbele spielen +Gamlige Joint +Gammel-Tüüte Kebap +gammle herumlungern +gammlig verwahrlost +Gampi-Ross Schaukelpferd +Gämschle jassen (Spielart) +gäng manchmal (aus dem Bernischen) +Gang doch goge Crème heble! Hau ab! +Gang ewägg! Hau ab! +Gang go fische! Hau ab! +Gang go kuschle! Hau ab! +Gang goge Schiitli biige! Hau ab! +Gang is Pfäfferland! Hau ab! +gang mer doch ewägg - de hät s doch gwüsst Das ist offensichtlich +Gang mer us de Auge! Hau ab! +Gang mit Gott – aber gang! zum Abschied +Gang mit Gott oder suscht emene alte Maa zum Abschied +Gang uf s Häfi! Hau ab! +Gang wegg! Hau ab! +Gang-go Angestellte:r +Gang-go Handlanger:in, Hilfsarbeiter:in +Gang-go Servierpersonal +Gang-mer-hol-mer-tun-mer Handlanger:in, Hilfsarbeiter:in +Gang-wurscht-en-ii-Salat Wurst-Käse-Salat +gange werde entlassen werden +gänggele arbeiten (langsam) +gänggele einkaufen (franz. quincaillerie) +gänggele sich mit Kleinkram beschäftigen +gänggele trödeln +gänggelig knifflig +Gängschter Hip-Hopper:in +Gängschteri – en Gängschter Verbrecher:in +Gangsta Hip-Hopper:in +Ganja-Stick rauche einen Joint rauchen +Gänsehuut haa frösteln +Gänterli Stuhl +ganz und gar vollständig +ganzi Bättel alles Mögliche +ganzi Geraffel alles Mögliche +ganzi Ladig voll sehr viel +ganzi Plunder alles Mögliche +ganzi Schriinerei jassen (lauter wertlose Karten) +ganzi Schwetti sehr viel +ganzi Züglete Ladung +Ganzkörperkondom Schlafsack +Garaasch butze Sex haben +Garette Auto +Garette Schimpfwörter für Frauen +Garette Schubkarren +Garettli Zigarette +Garettli Zigarette +garniere Geld verdienen +Garsson Servierpersonal (franz. le garçon) +Garte-Beiz Restaurant (Gartenrestaurant) +Garte-Zwerg Gärtner:in +Gartefäscht-Boxeri – en Gartefäscht-Boxer Schwächling +Gartehaag Gebiss +Gartehaag Zahnspange +Gartehaag verusse haa Zähne (vorstehende Zähne) +Gartehaag- und Landstriicher unzuverlässige Person +Gartehaag-Helikopter Huhn +Gartehag- und Landstriicheri – en Gartehag- und Landstriicher Flächenmaler:in +Gartelaube Geräteschuppen (Gartenhaus) +Gärtli sprütze Sex haben +Gärtli sprütze urinieren +Gärtner Brigadier +Gary Schitter Prominente (international) (Gary Glitter) +Gas gäh sich beeilen +Gas-Alarm! furzen +Gas-Rüssel Gasmaske +Gas-Unggle ABC-Truppen (von Onkel) +Gas-Uustuusch ad Umwält furzen +Gascho Kiste (für Flaschen) +Gaschthoferi – en Gaschthofer Wirt:in +Gaschtspiel gäh besuchen +Gaschtstube-Traktor Servierpersonal +gasig wütend +Gaspedale Füsse +Gass unsicher mache herumlungern +Gassehauer fetzige Musik (populär) +gassi gah ausgehen +Gätterli kleine Holzkiste +Gätzi Gesicht +Gaul Pferd +gaume Kinder hüten +gaume verwöhnen +Gauneri – en Gauner Verbrecher:in +Gaunerin – en Gauner Lügner:in, Betrüger:in +gaxe reden, plaudern +Gäxnase Teenager:in (vorwitzig) +Gäxnäsi Teenager:in (vorwitzig) +Gazongas Brüste +gäzzig sauer (ital. cazzo) +gäzzig wütend (ital. cazzo) +GB (Grossbritannien): Griminal-Bolizei Autokennzeichen international +Gchäär streiten (von Karren) +Gchafel Gekritzel +Gchätsch haa streiten +gchlöpft entzwei +Gchnorz arbeiten (mühselige Arbeit) +GE: Gueule élastique Autokennzeichen national +gebärfreudigs Becki für die weibliche Figur (breites Becken) +Gebär­muetterhals-Kontaktbolze Penis +Gebärmuetterhals-Kontaktbolze-Schoner Kondom +Gebirgsrowdy Bündner:in (Autokennzeichen GR) +Geblääse Blase +gebongt abgemacht +Gebrill Brille +Gebrüll Brille +Gedanke-Tresor Gehirn +gedige gut +Geema? Gehen wir nach Hause? +Gehhilf Auto (alt) (untermotorisiert) +Gehwägpanzer dicke Person +geil gut +geil sehr gut +geil wi Sau sexuell erregt +geile Drööhn fetzige Musik +Geile haa eine Erektion haben +geils Relief für die weibliche Figur (attraktiv) +Geischt mache flüchten, davonrennen +Geischt spile flüchten, davonrennen +geischtig hösele dumm +geischtig obdachlos dumm +geischtig umnachtet dumm +geischtig underbeliechtet dumm +geischtig underbemittlet dumm +geischtig underernährt dumm +geischtig uusrangschiert dumm +geischtigs Bsetzt-Zeiche Schimpfwörter +Geiss Fahrrad +Geiss Schimpfwörter für Frauen +Geiss Ziege +Geiss-Fuess Werkzeug (zur Entfernung von Nägeln) +Geisse-Scheiss Haschisch +Geisse-Spanierin – en Geisse-Spanier Bündner:in +Geisse-Spanisch Rätoromanisch +Geissebölleli Ziege (Ziegenkot) +Geisseböppeler Volksmusik +Geissle-Chlöpferi – en Geissle-Chlöpfer Kader-Mitglied +geitsche keifen +Geitschiwiib Schimpfwörter für Frauen (hysterisch) +gejme spielen (für elektronische Spiele; von engl. game) +Gelöretli Uhr (von franz. quelle heure est-il) +Gelte Auto +Gelte Waschzuber +genau s gliich dasselbe +genial gut +Geraffel Stress +Gerry Schitter Prominente (international) (Gary Glitter, engl. Rockmusiker) +Gerschte und Malz – Gott erhalt's! Bier +Gerschte-Saft Bier +Gerschte-Sirup Bier +Gertel Werkzeug (Beil für die Baum-Entastung) +geschter d Chuchi gwüscht Eintopf +Geuferi Kleinkind +Geuferi Spanner +Geugel Hund +Geuggel mache Schabernack treiben +Geuss Schrei +Gewichs-Abruusig Handbuch (Manual) +Gfächts-Tütü Grundtrageinheit +Gfächtsfäld-Belüüchter Stumpen, Zigarre +gfährlich gut +gfährlich sehr gut +gfakte Stutz Schwarzgeld (engl.) +gfätterle arbeiten +gfätterle arbeiten (langsam) +gfätterle berühren, befingern +gfätterle sich mit Kleinkram beschäftigen +gfätterle stöbern, wühlen +Gfätterli-Arbet Feinarbeit +Gfätterli-Schuel Kindergarten +Gfätti Kindergarten +gfigget werde exerzieren +Gfitzti – en Gfitzte vife Person +gflärrelet gefleckt +gfläscht betrunken (engl. flash) +Gföhrlike Oerlikon (weil es viele Überfälle gibt) +Gförlike Orte (in Zürich) (Oerlikon) +Gfotz fehlerhafte Ware +Gfräss Gesicht +Gfreute Gefreiter +Gfrööri Finger (schmerzende Fingernägel bei tiefen Temperaturen) +gfröörle frieren +Gfröörli empfindliche Person (kälteempfindlich) +Gfröörli frieren (Person, die oft friert) +Gfuchseti – en Gfuchsete Rothaarige:r +gfüllte Biber schwanger +gfüllte Töffsattel Cordon-Bleu +gfürchig gefährlich +gfürchig vill sehr viel +gfürchigs Truck Menschenauflauf +gfüürchig schrecklich +gfüüret werde entlassen werden +ghackete Bobi Hackfleisch +Ghackets Hackfleisch +ghaglet voll sehr viel +ghaue oder gstoche ganz sicher +ghaue oder gstoche unbedingt +gheblig geizig +Gheimnis vo de Chemische Coca-Cola +gheje laa sich trennen +gheje laa wie en heisse Herdöpfel sich trennen +ghetto schlecht +Ghetz ablah hetzen +Ghick Wetter (Eiskristalle an Bäumen) +Ghirn-Amputierti – en Ghirn-Amputierte Schimpfwörter +Ghirnamputierti – en Ghirnamputierte Dummkopf +Ghöi Haare (ungekämmt) +Ghoi Unordnung, Chaos +Ghöör-Aalag Ohren +ghöört is Burghölzli verrückt (heutige psych. Uniklinik) +Ghörsch zu de SVP? Spinnst du? +Ghörsch-d-Futz-tropfe? Gehörschutzpfropfen +GHS haa eine Erektion haben (en gmüetliche Halbständer) +Ghüdder Abfall +Ghüdder-Chübel Abfalleimer +ghüdere entsorgen, wegwerfen +Ghüdersack Schimpfwörter +ghuell gut (geil) +ghupft wie gsprunge dasselbe +Ghürsch Unordnung, Chaos +ghüüslet luege überrascht, verdutzt +Giacometti i de Hose haa 100 Franken +Gianni Verarsche Prominente (international) (Gianni Versace) +Gib e chli Gas! Beeil dich! +Gib em Opi Opium, will Opium haut de Opi um Redensarten (Small Talk) +Gib em! Beeil dich! +Gib Fride! Halt die Klappe! +Gib Gas! Es eilt +Gib Gummi! Hau ab! +gib i schlecht (aus der Börsensprache: ich verkaufe) +Gib ihm! Ich weiss es +Gib mer es Foun Ruf mich an! (engl. phone) +Gib mer es Telifon Ruf mich an! +Gib mir mal en Schall Ruf mich an! +Gib Rueh! Halt die Klappe! +Gib s uuf! Hör auf! +Gib-häsch-zünd Handlanger:in, Hilfsarbeiter:in +Gib-mer-heb-mer-reck-mer Handlanger:in, Hilfsarbeiter:in +Gib-mer-läng-mer Handlanger:in, Hilfsarbeiter:in +Gibe Schimpfwörter für Frauen (zickig) +Gibelfrääseri – en Gibelfrääser Coiffeur/Coiffeuse +gibeligäälig Chriesi Kirsche (gelbe Kirschen) +gibi-gäbig praktisch +gibi-gäbig umgänglich +Gibit (Tschibit) abesuuge einen Joint rauchen +Gicht-Höögge Finger +Giele Berner:in (Berndeutsch für Jungs) +gierig gut +Gift i de Rundi sii überflüssig sein +Gift-Chuchi Restaurant (Kantine) +Gift-Möckli Zigarette +Gift-Schlitte öffentliche Verkehrsmittel (Cobra-Tram) +Giftbuebe ABC-Truppen +giftele ärgern, provozieren +Giftler Drogenabhängiger +Giftnudle Schimpfwörter für Frauen (gehässig) +Giftschlüüdere Schimpfwörter für Frauen +Giftsprütze Intrigant:in +giga- sehr +gigaagele baumeln +gigagelet grad eso es geht so +gigaguugele Internet (googeln) +gigampfe baumeln (auf der Schaukel) +gigampfe schaukeln +gigampfe – Wasser stampfe schaukeln +Gigampfi Schaukel +Gigel Penis +gigele Fussball +gigele lachen +Gigeli-Suppe weitere Typen (findet alles lustig) +Gigertschi Apfel (Kerngehäuse) +giggerig sexuell erregt +giggerigi Chatz nagle/bevor s chunnt go hagle Sex haben +Giggernillis ganz wenig (Kleinigkeit) +Gigi-Oeri-Sändwitsch Solarium +Gigle Berner:in +Gii Joint +giige funktionieren +Giige Scheide +giigele Geige (Geige spielen) +giipse quietschen +giire quietschen +giirig sexuell erregt +giitig geizig +Giitwurm Akne (Mitesser) +Giix Schrei (schrill) +giixe quietschen +Giiz-Chrage Geizhals +Giiz-Gnäpperi – en Giiz-Gnäpper Geizhals +giizgnäppere sparsam mit Geld umgehen +gille-gille mache sanft streicheln, fast kitzeln +ginäffle arbeiten +Gingg Fusstritt +Gingg id Frässi Fusstritt +Gingg in Arsch gäh sich trennen +gingge Fussball +gingge treten +Gion Travolta us Ilanz Autofahrer:innen (GTI-Fahrer:in) +Giovanni Penis +Giovanni-scho-lang-i-de-Schwiz Ich weiss es +Giovanni-scho-weiss Ich weiss es +Gipfeli Gipfel +Gipfeli mache sterben +Gipfeli tünkle Sex haben +Gipfeli-Büügeri – en Gipfeli-Büüger Bäcker:in +Gipfeli-Trülleri – en Gipfeli-Trüller Bäcker:in +Gips Blödsinn +Gips Kokain +Gips schlecht +Gips-Chopf Dummkopf +Gips-Chopf Übungs-Panzerabwehrrakete +Giraff grosse Person +Giraff Kader-Mitglied +Giraff mache erbrechen +Giraff würge urinieren (Männer) +Giräffli spoitze laa Sex haben +gireite schaukeln +gireitze baumeln (auf der Schaukel) +gireize schaukeln +Gireizi Schaukel +Gisch mer en Chnoche? Ruf mich an! +Gisch mer en Funk? Ruf mich an! +gisch-was-häsch schnell +Gischpel Zappelphilipp +gischpelig unruhig +gischplig aufgeregt +gischplig nervös +git kei Bire Hör auf mit dem Gejammer! +git kei Öpfel Hör auf mit dem Gejammer! +git nur eis oder keis beides haben +git nüt, wo s nöd git – und das git s no! Das ist offensichtlich +Git s öppis gratis? Menschenauflauf +gitärrele onanieren (Männer) +gitt nüüt z hueschte Hör auf mit dem Gejammer! +Gitterstäb-Rüttleri – en Gitterstäb-Rüttler Verbrecher:in +Gitzi Ziege +Giuli Vornamen (weiblich) (Giuliana) +Giupi Vornamen (weiblich) (Giuliana Pia) +Gjammer ablaa jammern, sich beklagen +Gjätt wirres Strauchwerk +Glääsi Murmel +glade betrunken +Gladiole-Hänne Ehrendame +Glafer Geschwätz +glänze bürsten, polieren +Glänzi Strahlefrau/Strahlemann +Glas Milch hät meh IQ! Du bist ein Idiot! +Glas-Sack Flasche +Glasgurke Orte (in Zürich) (Prime Tower) +Glasscherbe-Viertel Orte (in Zürich) (Kreis 4) +Glasschniider Gipfel (alt) +Glassee Eis-Crème (franz. glace) +glatte Cheib Scherzkeks +glatte Köbi Scherzkeks +glatte Siech Scherzkeks +glatte Vogel Scherzkeks +Glatze poliere kämmen +Glatze-Mütze-Glatze-Mütze onanieren (Männer) +Glaube macht selig! Das ist unglaublich! +Glaubsch au no an Storch? sicher nicht +glaubt no an Storch dumm +glaubt no as Chrischtchindli dumm +Gleesli Hyazinthe +Gleich weniger als e Ghüdderschuufle dumm +Gleisradio Klatschmaul +gleitig bald +gleitig schnell +gleitig sofort, zügig +Gletscher-Flööte Alphorn +Gletscherhüüler Jodelchor +Glett-Iseli öffentliche Verkehrsmittel (altes Züri-Tram) +glette bügeln +Glettibrätt Bügelbrett +Glettimaa Bügelbrett +Glettise Bügeleisen +Glettise Eisenbahn +Glettise Schützenpanzer (Bügeleisen, wegen der Form) +Glettise i de Schueh Fussball (unbegabt) +Gligger Sofa +glii bald +Glii chömed d Chölbe go luege, weles Arschloch da Gas git! Gas geben +Gliich vill Ziit wie geschter um die Ziit Wie spät ist es? (genervte Antwort auf die Frage nach der Uhrzeit) +Gliichligi dasselbe +Gliichstand unentschieden +Gliir Geschwätz +Glimm-Bolze Stumpen, Zigarre +Glimm-Stängel Zigarette +glismete Joggeli Schwächling +Glismeti – en Glismete Politiker (Mitglied der Grünen) +Globi Dummkopf +Globivogel Schimpfwörter +Glogge Brüste +Glogge jassen (Schälle) +Glogge Sonnerie, Türglocke +Glogge sägne furzen +Glogge-Stuehl Hoden +Gloggespiil Hoden +Glöggli haa Glück haben +Glöggliböögg Schimpfwörter +Glögglifrosch Schimpfwörter +Glögglispiil Sonnerie, Türglocke (klingeln und davonrennen) +Gloif Menschenauflauf +Gloitsch Menschenauflauf +Glondom Kondom (engl. clown) +Gloon Schimpfwörter (engl. clown) +Gloschaar Obdachlose:r (franz. clochard) +Glotz-Pöppel Augen +Glotzchopf Schaulustige:r +Glotze Fernseher +glotze schauen +Glotzer Augen +Glotzi Fernseher +Glotzophon Fernseher +Glubscher Augen +Glück go chützle etwas riskieren +Glück luegt zu de Auge uus glücklich +Glücks-Chäferli Marienkäfer +Glücks-Spirale Waldhorn (weil es schwierig ist, den richtigen Ton zu treffen) +Gluese Glut +Glugger Murmel +Gluggere fürsorgliche Frau +Gluggere Huhn (Legehenne) +gluggere Kinderspiele (mit Murmeln spielen) +Gluggsi Schluckauf +Glumpp Gerümpel +Glungge Pfütze +Glünggi Dieb:in, Einbrecher:in +Glünggi Schimpfwörter +Glünggi Verbrecher:in +Gluschti Spanner +gluschtig verlockend +Glüschtler Spanner +Glüürliwasser Mineralwasser +Glüüt Kuhglocken +GmbH Handlanger:in, Hilfsarbeiter:in (Gang-Mach-Bring-Hol) +gmöbblet werde entlassen werden (engl.) +Gmoscht Menschenauflauf +Gmüesblätz Schrebergarten +Gmüesli-Schwule Vegetarier:in +Gmüetliberg Orte (in Zürich) (Üetliberg) +gmüschterlet gefleckt +gnaage essen +Gnääggis Kinder +Gnägi empfindliche Person +Gnägi militärisches Sweatshirt +Gnagi Schweinshaxe +Gnagi i de Schublade haa schwanger +gnäppere berühren, befingern +gnäppere sparsam mit Geld umgehen +gnäpperig geizig +gnatschle essen (Apfel) +Gnau-Meier Spiesser:in +Gnick Schimpfwörter +Gnickbrächer-Loge Kino (1. Reihe im Kino) +gnietig sauer (unzufrieden) +Gnifel Feinarbeit +Gnom Bankangestellte:r +Gnome-Fasnacht Sechseläuten +Gnome-Kabinett Prominente (national) (Gesamtbundesrat) +gnudlet müde, erschöpft +gnueg gstramplet aufgeben, resignieren +gnüegelet! Jetzt reicht's! +Gnuss-Zipfel Nussgipfel +gnüsslet müde, erschöpft +Gnuusch Unordnung, Chaos +Gnuusch im Fadezeindli haa verwirrt +gnüüsse geniessen +go aftere bis in die Morgenstunden feiern +go biere gah ausgehen +go Food mache aufs WC gehen +go Füdli luege Strip-Club +go inesuufe ausgehen +go juschte Sex haben (Just-Bürsten) +go Luft schnappe spazieren +go schiisse aufs WC gehen +go stämple gah arbeitslos +go täge urinieren (Männer) (engl. to tag = seinen Namen an eine Wand sprayen) +Goaffzgi Coiffeur/Coiffeuse (Abk. von Coiffeur) +Gogg im Goggeligoo Frauenheld +Göhnerswil Orte (ausserhalb von Zürich) (Volketswil) +Göhnlike Orte (ausserhalb von Zürich) (Göhner-Siedlung in Adlikon) +Gohnsiersch Hausmeister (franz. le concierge) +Goifer Geld +Goifer Speichel +Goifer-Lappe Kleiderschutz für Kinder +Goifer-Lätzli Kleiderschutz für Kinder +goifere sabbern +goifere spucken +Goiferi alter Mann +Göiferi Fahrrad-Fahrer:in +Goiferi Kleinkind +Goiferi Schwätzer:in (giftiger Schwätzer) +goiferle spucken (Kleinkinder) +Goiggel gutmütige Person +Goiggel Scherzkeks +goiple Umgang mit Tieren (spielen mit Jungtieren) +Goiss ablaa schreien, rufen +goisse lachen (laut lachen, herausplatzen) +goisse schreien, rufen +Göissi Schreihals +Gold am Huet hochrangiger Offizier +Gold schürfe in der Nase bohren +Goldchäfer Kosenamen +Goldhoger Orte (in Zürich) (Zürichberg) +goldig niedlich +goldigi Los zoge haa sich verlieben +Goldküschte Orte (in Zürich) (rechtes Zürichsee-Ufer) +Goldküschte-Bewohner Jetsetter:in +Goldküschte-Bruut Frau aus gutem Hause +Goldküschte-Express Eisenbahn (eh. SBB-Lokomotive) +Goldküschte-Express öffentliche Verkehrsmittel (S-Bahn Zürich-Meilen-Rapperswil) +Goldküschte-Flugblatt Medien (NZZ) +Goldküschte-Heini vermögende Person, Snob +Goldküschte-Panzer Offroader (SUV) +Goldküschte-Traktor Offroader (SUV) +Goldküschte-Zucker Kokain +Goldküschtechind Jetsetter:in +Goldmedallie im Siitesprung haa eine Affäre haben +Goldräge Schlüsselblume +Goldvögeli Verwandte (reiche Braut) +Gomfi Konfitüre +Gomfitüte Konfitüre +Gömmer Club Duvet? Gehen wir nach Hause? +Gömmer hei? Gehen wir nach Hause? +Gömmer Heinrich Gasserich? ausgehen +gömmer Hive nach Hause gehen (wie der gleichnamige Club) +Gömmer Hive? Gehen wir nach Hause? (wie der Club) +Gömmer is Chörbli? Gehen wir nach Hause? +Gönd ewägg, de Vatter macht es grosses G unterschreiben +gondle Auto fahren (langsam fahren) +Gonzo Penis +Goof Kleinkind +Goofe Kinder +Goofe-Schliiferi – en Goofe-Schliifer Lehrer:in +Goofe-Trüli Karussell +Gööfi Kleinkind +Gööfis Kinder +Gööfli Kinder +Gool Fussball (engl. goal) +goope spielen (mit Kindern oder Tieren) +Goopf!! Das ist unglaublich! +gooppe Umgang mit Tieren (spielen mit Jungtieren) +göötsche mit Wasser spielen +gopf Fluchwörter +gopferdammte Dräckseich Fluchwörter +gopferdamte Schissdräck Fluchwörter +gopfergässe sehr +gopferta…nnewald Fluchwörter +gopfertami Fluchwörter +Gopfertami Salami Schüttelreime +gopfertamisiech Fluchwörter +gopferteckel Fluchwörter +gopferteli Fluchwörter +Gopfertelisiech Das ist unglaublich! +gopfertori Fluchwörter +Gopfrid Bohnebluescht Fluchwörter +gopfridli Fluchwörter +gopfridstüdeli Fluchwörter +gopfridstüdeligopfridstutz Fluchwörter +gopfridstutz Fluchwörter +Göppel Auto +Göppel Fahrrad +goppel Fluchwörter +Goppel! Tatsächlich? +goppeletti Fluchwörter +goppelori Fluchwörter +Gorilla Bodyguard +Gorilla-Blauarsch Polizist:in +Gorps ablaa rülpsen +Gorps-Gummidant Korpskommandant +Gorps-Kommandant Korpskommandant +görpse rülpsen +görpsle rülpsen +görpsle rülpsen (bei Babies) +Görpsli mache rülpsen (bei Babies) +Görpsliwasser Mineralwasser +Gosche Mund +Gotlet-Frässeri – en Gotlet-Frässer Fleisch-Liebhaber:in (franz. côtelette) +Gotlett Haare (Backenbärte) +Gotlett Vornamen (weiblich) (Colette) +Gotschinella Marienkäfer +Götschli Penis +Gott grüess di! zur Begrüssung +Gott seg s globt, dankt, trummlet und pfiffe das Schlimmste überstanden haben +Gotte und Götti Verwandte (Patin und Pate) +gottefroh glücklich +gottelette Fluchwörter +Götter-Chotz Götterspeise +Gottes-Acker Friedhof +Gottgrüessdi zur Begrüssung +Gotthard-Chinees Tessiner:in +Gotthard-Chinesin – en Gotthard-Chines Italiener:in +Gottlett-Walzer Flohwalzer (franz. côtelette) +gottsjämmerlich sehr +Gottswilche aahänke schimpfen, beschimpfen +gottverdammte Huere-Sou-Aff Schimpfwörter für Männer +Gouvernante Servierpersonal +Göx Hut +GR: en Gebirgsrowdy Autokennzeichen national +gräänele stinken (modrig) +Gräbel für die männliche Figur (mickrig) +Gräbel Menschenauflauf +Grabestampfer-Musig Techno +Grabschuufle Zigarette +Grabstei Amulett mit persönlichen Daten +grad bald +grad guet passend +grad rächt passend +grad so gange knapp +grad usechoo erfolgreich sein (ohne grossen Gewinn) +Grad-uus-Töff Motorrad-Typen (Harley) +Graffle Zähne +graffleti Zwärge Dosenfleisch +Gragel Baum (schäbig) +Gragel für die männliche Figur (hager) +graglet voll sehr viel +Grampol Lärm (franz. carambole) +Grampol-Schiibe Kleingeld (wie die Steine beim Brettspiel Carambole) +Grampol-Schiibe (wie die Steine beim Brettspiel Carambole) 84 5 Franken +gramschele kribbeln +Granate sichere Kartoffeln schälen +granate-dicht betrunken +gränelet Es stinkt +gränne weinen +grantig sauer +grantig wütend +Gras Hanfpflanze +Gras Marihuana +Gras drüber wachse laa zuschauen und abwarten +Gras vo une wachse gseh sterben +Gras-Heizeri – en Gras-Heizer Hippie +Gras-Marine Füsilier +Gras-Sammelstell Restaurant (vegetarisch) +Gras-Tröchneri – en Gras-Tröchner Bäuerin/Bauer +Grasaff Füsilier +grässlich hässlich +Grät uuflade trinken, sich betrinken +Grätti alter Mann +grau uusgseh abgerackert +grauehaft schrecklich +grausam sehr +Gravatte-Fritz Beamte +Gravatte-Heini Bankangestellte:r +grawattierte Totegräber Bankangestellte:r +grawattierte Tubel Bankangestellte:r +graziös niedlich +Grebt Beerdigung +Green-Pisseri – en Green-Pisser Golfer:in +Greete Zigarette +Gregy Vornamen (männlich) (Gregory) +Gremlin Baby +Greni Grenadier +Gresli Hanfpflanze +Gresli Prässluft Musiker:innen (Elvis Presley) +Gresli Prässluft Prominente (international) (Elvis Presley) +Gresli rauche einen Joint rauchen +Gretli-Frisur Haare (Zöpfe um den Kopf) +greupfrässig anspruchsvoll +Greute Gefreiter +Griess-Hügel Orte (in Zürich) (Giesshübel-Quartier) +Griezene (weil Zürcher "Grüezi"" sagen, aus Walliser Sicht))" Zürcher:in +Griezn zur Begrüssung +Griffel Finger +Griif's! Nimm's! +griiferle schmusen +Griiferli Finger +Griite Schimpfwörter für Frauen +Griitli Eiterpickel beim Auge +Grille-Hirni Schimpfwörter +Grille-Hirni Schimpfwörter +grilliere grillen +Grillmeischter Gefreiter +Grimm Schreiner +Grind Kopf +Grind aaschlaa aufprallen +Grind abe und seckle! Beeil dich! (Zitat von Anita Weyermann, Läuferin) +Grind anemache sauer +Grind haa stur +Grind nur haa, demit s nöd in Hals ine seicht dumm +Grind verschlaa zuschlagen +Grindweh Kopfschmerzen +Grindwehgrind bim chlinschte Föhn Kopfweh +Grips aastränge denken +Grissini Magersüchtige:r +Gritli Vornamen (weiblich) (Margrit) +Gritti alter Mann +Gritti Vornamen (weiblich) (Margrit) +Grittibänz Gebäck (Männchen aus Brotteig) +grobe Chnaab grob +gröber gut +grobi Sach gut +Grobian Rüpel:in +Grobian sii grob +grochse atmen (schwer atmen) +Grochsi alter Mann +gröhle singen +Gröibi Fett +Gröllhalde-Änglisch Rätoromanisch +Gromadusi für die männliche Figur (grosse, magere, tumme Siech) +Gromadusi grosse Person (en grosse, magere, dumme Siech) +grööle lachen +Grööli Schreihals +gröölig lustig +groossgchotzte Siech Aufschneider:in, Angeber:in +groossi Playboy: Whisky suufe, Porsche fahre, bürschte. De chliini Playboy: Coci suufe, Solex fahre, wixe. Redensarten (Sexualität) +Groschli Österreicher:in +gröscht Stress ume haa das Schlimmste überstanden haben +Grosi alte Frau +gross Kanton Deutschland +gross Manitu Chef:in +gross Otto loslaa ausgehen +gross tue bluffen +gross use choo erfolgreich sein +grosschotzig tue bluffen +grosse Pneu Motorfahrer-Offizier (Stufe Bat) +grosse Service Unfall +grosses Kino Krönung, Höhepunkt +grössewahnsinnige Chäfer Auto-Typen +Grosshans Aufschneider:in, Angeber:in +Grosshans Besserwisser:in +grossi Achtig haa bewundern +grossi Lungeflügel Brüste +grossi Ohre Brüste +grossi Röhre füehre bluffen +Grossmöischter Gebäude, Lokalitäten (Grossmünster) +Grossmoischter-Kuppe Büstenhalter +Grossmueter Bass (Kontrabass) +Grossmüeterli alte Frau +Grossmuetter Fondue (angebrannter Käse in der Mitte) +Grossmuetter Sprengladungen an der Handgranate +Grossstadt-Indianer Stadtbewohner:in +Grossstadt-Muus Stadtbewohner:in +Grosstadt-Indianerin – en Grosstadt-Indianer Stadtbewohner:in +Grotte Scheide +Grotte-Olm Tiefbau-Ingenieur:in +grüble arbeiten +grüble denken +grüble in der Nase bohren +gruchse sich räuspern +Grüebe Kopf +Gruebe-Pilotin – en Gruebe-Pilot Baggerführer:in +grüen und blau schlaa zuschlagen +Grüen-Fuetter Salat +Grüen-Wiiss-Rooti – en Grüen-Wiiss-Roote Italiener:in +Grüene 50 Franken +Grüene Speichel +Grüene lade spucken +grüene Pfupf Patrone (GP11-Knallatrappe) +Grüene zwüsched d Auge trucke spucken +Grüenguet-Bar Restaurant (vegetarisch) +grüeni Fee rauche einen Joint rauchen +grüeni Ferie Militärdienst +grüeni Sophie 50 Franken +grüeni Wanze Linsen +Grüenschnabel Teenager:in +Gruess zur Begrüssung +Gruess dihei und en Furz id Chuchi zum Abschied +Gruess schicke werfen, zuwerfen (Ball) +Gruess vom Getriebe – de Gang chunnt grad Gang einlegen (wenn es knirscht beim Schalten) +Grüezi zur Begrüssung +Grüezi wohl, Frau Blueme­chohl! Schüttelreime +Grüezi-Mitenand Kontrolleur +Grüezini Deutschschweizer:innen (aus Walliser Sicht) +Grüeziwohl, Frau Bluemechohl! zur Begrüssung +grüftelet Es stinkt +Grufti alter Mann +grufti-mässig schlecht +grumblig sauer +grummelig sauer +Grümpel Kleingeld +Grümpel-Chammere Dachboden +Grümpi Fussball (Amateur-Turnier) +grümschele arbeiten +grümschele sich mit Kleinkram beschäftigen +grümschele stöbern, wühlen +Gruppesport mache sexuelle Praktiken (Orgie) +Grüscht-Jodler Italiener:in (ital. Bauarbeiter) +Grüsel Widerling +grüslig schrecklich +Grutz zäme näh denken +gruusam schrecklich +gruusig hässlich +grüüsli sehr +gruuve tanzen (engl. groove) +gruuvet fetzige Musik (engl. groove) +Gsägnete Guten Appetit +Gschääch nüt böösers Redensarten (Small Talk) (Ist nicht so schlimm) +gschaffig tüchtig +gschäfte arbeiten +Gschäftlihueber Jetsetter:in +gschägget gefleckt +gschalet gut angezogen +gschämig daneben, verwerflich +Gschänk vom Chlapperstorch Baby +Gschänkli ad Läbere trinken, sich betrinken +Gschänkli für es Fränkli beschenken +gschänkt überchoo klauen, stehlen +gschasst werde entlassen werden (franz. chasser) +Gschiid - gschiider - gschiiteret! Versager:in, Verlierer:in +Gschiider git nah – de Esel bliibt stah Redensarten (Small Talk) (der Klügere gibt nach) +Gschiidheit – gsund bisch scho! Gesundheit! +gschiids Chöpfli kluger Kopf +gschiids Huus kluger Kopf +Gschiir-Chraane Servierpersonal +Gschirr abgäh sterben +Gschirr-Stall Schlagzeug +Gschiss mache jammern, sich beklagen +Gschlächtsbäse Schimpfwörter für Frauen +Gschlächtsmäldig Gefechtsmeldung +Gschlächtsschmierig Gefechtsschmierung StgW 57 +gschlage kaputt +gschläsmig kriecherisch +Gschleik haa eine Affäre haben +Gschleipf haa eine Affäre haben +gschliimig kriecherisch +Gschlirgg Zeichnung +gschlisse kaputt +gschlisse müde, erschöpft +gschlisse-verrisse kaputt +Gschludder arbeiten +Gschludder ungeniessbares Essen (undefinierbares Essen) +gschluuchet abgerackert +gschluuchet müde, erschöpft +gschluuchet werde exerzieren +gschmeidig allmählich +gschmeidig gut +Gschmeus Gerümpel +Gschmeus Kleingeld +gschmuech bedrohlich +gschmuech unwohl +gschmuuch unwohl +Gschmuusi haa eine Affäre haben +Gschnädder Geschwätz +gschnädderfrässig anspruchsvoll +gschnäderfräässig anspruchsvoll +gschnagglet gut angezogen +gschnäll schnell +gschnäll wie s Bisi-Wätter flüchten, davonrennen +gschnätzlet goisse erbrechen +gschnätzleti Zürcher Zürcher Geschnetzeltes +gschnigglet und gschnagglet gut angezogen +gschniglet fein raus +gschniglet gut angezogen +gschniglet und büglet gut angezogen +Gschnörr Geschwätz +Gschnurpf Handarbeiten (unsorgfältige Näharbeit) +Gschnurr Geschwätz +Gschooss Auto +gschosse verrückt +gschreddereti Chueh Hackfleisch +Gschriibsel Dokument +gschteilet gut angezogen (engl. style) +gschtoglet manieriert +gschupfts Huehn Schimpfwörter für Frauen (schräg) +gschupfts Lisi Schimpfwörter für Frauen (schräg) +Gschwafel Geschwätz +Gschwauder Geschwätz +gschwellte Gschellte suggele Oralverkehr (bei Männern) +gschwellti Füürwehr-Hose Tomate +gschwellts Ross und e Badwanne voll Röschti Zürcher Geschnetzeltes +gschwind schnell +gschwullni Ameise Dackel +gschwullni Ameise Hündchen +Gsehsch de Pögg? Alles klar? (engl. puck) +Gsehsch uus wie-n-e warms Joghurt! Du spinnst! +Gsehsch uus, wie wänn me dich irgendwo zum Arsch usezoge hett! Du bist ein Idiot! +gsehsch WK-Style uus Unkorrektes Tenü +Gsehsch?! Das ist offensichtlich +gseht uus wie de Wucherückblick ungeniessbares Essen +gseht uus, wie wänn s e Chueh i de Schnurre gha hett zerknautscht +Gsellschaft mit beschissener Hose Gesellschaftsformen (GmbH) +Gsicht Schimpfwörter +Gsicht mache wie drüü Tag Rägewätter unglücklich, deprimiert +Gsicht mache wie sibe Tag Rägewätter traurig +Gsicht uufpimpe sich schminken (engl. pimp) +Gsicht verbutze sich schminken +Gsichts-Erker Nase +Gsichts-Pullover Bart +Gsichtsbuech Facebook +Gsichtsmassaasch verabreiche zuschlagen +gsiibti Luft schnuufe ins Gefängnis gehen +gsottne Elch Siedfleisch +gspannti Blache Joint +gspässig eigenartig, seltsam +Gspassvogel Scherzkeks +gspickt werde entlassen werden +gspickt werde Schule (Rauswurf) +Gspöönli haa eine Affäre haben +gsprützt wütend +gsprützte Wiisse Samenerguss +gsprützte Wiisse Wein (Weisswein mit Mineralwasser) +gspune wahnsinnig +Gspuusi haa eine Affäre haben +Gstabi Schussel +gstabig ungeschickt +gstampfte Uhu Büchsen-Fleischkäse (Büchsen-Fleischkäse) +gstampfte Uhu Dosenfleisch +gstande wie gläge zerzaust +gstängelets Buuchweh eine Erektion haben +gstauti Halsveene haa sexuell erregt +Gstell für die männliche Figur +gstoche Bock jassen (abgestochen und Rest) +gstoche gliich dasselbe +gstoche werde polizeilicher Alkoholtest (Blutprobe) +Gstöörti – en Gstöörte Irre:r +Gstopfti – en Gstopfte vermögende Person, Snob +gstört daneben, verwerflich +gstosse voll überfüllt +Gstrandete Einwanderer +gstresste Nazi am Schalter haa stuhlen +Gstrüpp Haare +Gstrüpp wirres Strauchwerk +Gstrütt Stress +Gstudierte Akademiker:in (Akademiker) +Gstudierti – en Gstudierte Akademiker:in +Gstungg Menschenauflauf +Gstungg Menschenmenge +gstungget voll sehr viel +gstungget voll überfüllt +Gstürm Aufregung +Gstürm Stress +Gstürm Unordnung, Chaos +Gsüchti Krankheit, Leiden (Gicht) +Gsund-Bätter Ärztin/Arzt (Naturheilarzt) +Gsundheit chunnt vor Schönheit Gesundheit! +Gsundheit-Schönheit! Gesundheit! +Gsundheits-Wii Bier +Gsundheitsmagazin Pornoheft +gsundi Spanplatte Knäckebrot +Gsundzgi Gesundheit! +gsunntiget gut angezogen +Gsüün Gesicht +GT Gin Tonic +GT Grundtrageinheit +GT-Bewacher Bajonett (GT=Grundtrageinheit) +GT-Hüeter Bajonett (GT=Grundtrageinheit) +Guaffi Coiffeur/Coiffeuse +Gublito Joint +Gück Fernseher +Gucki Dia-Betrachter +güdere daneben schütten +guene schauen +guene um Geld betteln +guet druff gut gelaunt +guet gfurzet isch halbe gschisse furzen +guet gjammeret isch halbe puuret Bäuerin/Bauer (wegen der Subventionen) +guet haa mitenand sich gut verstehen +guet Holz wünsche Kegeln, Bowling +guet luege aufpassen +guet Nacht Gute Nacht +Guet Nacht am Sächsi! Das ist unglaublich! +guet polschteret dicke Person +guet polschteret für die weibliche Figur (dick) +guet schnurre ohni Zäh furzen +guet underwägs betrunken +guet uus-choo sich gut verstehen +Guete Guten Appetit (öb s guet gsi isch, chunnt dänn morn uus) +guete Chauf günstig +Guete Tag, Gartehaag! zur Begrüssung +guete Tschooli gutmütige Person +Guete-n-Aabig, Frau Sandmeier! Das ist unglaublich! +Guete! Guten Appetit! +Güeteli! Guten Appetit! +Gueti – en Guete Sympathikus +gueti Partie Frau aus gutem Hause +Guetmänsch Links-Alternative:r +guets Fahr-Gstell für die weibliche Figur (attraktiv) +guets Ghöör für die weibliche Figur (grosser Busen) +Guetzli Motorrad +Guetzli Schimpfwörter für Frauen +Guetzlistächer Gebiss +Guezlistächer Gebiss +Gufe Nadel +Gufechüssi Nähkissen +Gufechüssi Skabiose +Güfeli Nadel +Güff Joint +Güff rauche einen Joint rauchen +Güff rauche einen Joint rauchen +güffe einen Joint rauchen +Guffere Koffer +Güffert Joint +güfig sexuell erregt +Gugei Poulet (Gummi-Geier) +Gugelhopf Versager:in, Verlierer:in +Gugelhupf Gesäss +gugge schauen +Guggeere Lukarne (Dachfenster) +Güggel Freund, Partner +Güggel Hahn +Güggel Penis +Güggel Pferd (Hengst) +Güggel mache anbaggern, aufreissen +Güggelchopf Gugelhopf +güggele schauen (heimlich) +Güggeli mit brötlete Herdöpfel Gesellschaftsformen (GmbH) +Güggeli-Friedhof dicker Bauch +Güggelimischt Blödsinn +Guggemusig Fasnachts-Orchester +Gugger Kuckuck +Guggerli Augen +Güggi Gefängnis +Guggu Kuckuck +Guggu gange pleite +Guggu-Uhr Uhr (Kuckucksuhr) +Guggublüemli Buschwindröschen +Guggummere Gurke (franz. concombre) +Gugus eine schlechte Idee +Gugus Schnick-Schnack +Gugus zur Begrüssung +Guguus Blödsinn +Guguuseli zur Begrüssung +Guignol mache Schabernack treiben (franz.) +gül gut (geil) +gulaschiere Zungenkuss +guläschle erbrechen +Güle-Suuger Tabakpfeife (Appenzeller Tabakpfeife) +Gülle Musiker:innen (Gölä) +gülle trinken, sich betrinken +Gülle usetue stuhlen +Gülle-Buuch Bäuerin/Bauer +Gülle-Hülle Kondom +Gülle-Hülle fülle Sex haben +Gülle-Pumpi Fagott +Gülle-Pumpi Motorrad-Typen (Honda CX 500) +Gülle-Püürin – en Gülle-Puur Bäuerin/Bauer +Gülle-Schlüüch Gummistiefel +Gülle-Zapfe Bäuerin/Bauer +Güllebänne-Ruech Bäuerin/Bauer +Güllebänneleri – en Güllebänneler Politiker (Mitglied der SVP) +Gülleloch Abwasserschacht +güllere Durchfall +Gulli Penis +Gulliver Penis +güllne Durchfall +Gumele Kartoffel +Gumfi Konfitüre +Gummel Kartoffel +gümmele Fussball +gümmele radieren +gümmele radieren +Gümmeleri – en Gümmeler Fahrrad-Fahrer:in (Rennrad-Fahrer:in) +Gummelstunggis Kartoffelstock +Gummi Angestellte:r +Gummi Hausmeister +Gummi Kondom +Gummi gäh Gas geben +Gummi gäh sich beeilen +Gummi ligge laa fahren (durchdrehende Räder) +Gummi schliife tadeln, massregeln +Gummi-Adler Poulet +Gummi-Baabe Gummi-Puppe +Gummi-Bock Militärische Fahrzeuge (Unimog 1t) +Gummi-Chlumpe Kaugummi +Gummi-Chueh Militärische Fahrzeuge (Unimog) +Gummi-Chueh Motorrad-Typen (BMW) +Gummi-Lumpe Kondom +Gummi-Peter Gummi-Puppe +Gummi-Susi Gummi-Puppe +Gummi-Susi Übungspuppe für erste Hilfe +Gummi-Zälle-Tennis Squash +Gummi! Beeil dich! +Gummiadler Huhn +Gummibärli Vodka (Vodka Red Bull) +Gummibei überchoo bewundern +Gummihalle Restaurants (Commihalle) +Gummihals Computer (Windows-User:in) +Gummihals Deutsche:r (nickt ständig, weil autoritätsgläubig) +Gümmis Reifen +Gummistifel-Lade Comestibles-Geschäft +Gummisuppe Fondue +Gump-uuf-und-verreck-Musig Volksmusik +Gumpe Pfütze +gümperle herumhüpfen +Gumpesel Scherzkeks +Gumpeseli Kinder +gümpig sexuell erregt +Gumsle Schimpfwörter für Frauen +güne gewinnen +gune gönnen +güne pflücken, ernten +Güngeliwaar fehlerhafte Ware +Günggel Penis +Günsel Penis +Günselhülse Kondom +günsle arbeiten +Gunte Pfütze +Günther Deutsche:r +Gupf Brot (Anschnitt) +Gupf Hügel +Güpfli Hügel +Guraaschi haa mutig (von franz. courage) +Gurgelbetoner Krawatte +Gurgeli aastränge jodeln +Gurgeli schmiere trinken, sich betrinken +Gurgeli tünkle trinken, sich betrinken +Gurgeli-Hockey mache schmusen +Gurgelipropeller Fliege +Gurgle wetze schreien, rufen +Gurke Bier +Gurke Penis +Gurke Reifen +Gurke ghööred in Garte Beine (krumme Beine) +Gurke würge onanieren (Männer) +Gürkliplatz Orte (in Zürich) (Bürkliplatz) +gurkt mi aa! Mir reicht's! +gurmiere schlemmen (franz. gourmet) +gürmse jammern, sich beklagen +Gürpse Kopf +Gürtel Gurt +Gürtel-Tier Grundtrageinheit +Guru Chef:in +Gusch Sofa (von engl. couch) +Güsel Abfall +Güsel Wyhr Prominente (national) (Wisel Gyr, Ländlerpapst †) +Güsel-Chübel Abfalleimer +Güsel-Frau – en Güsel-Maa Müllfrau/Müllmann +Güsel-Ranger Müllfrau/Müllmann +Güselchübel Widerling +Güselsack Kehrrichtsack +gusle arbeiten +gusle herumstochern +Guss-Auto Schützenpanzer +Guss-Chlotz Auto-Typen +Guss-Nipfel Nussgipfel +Gutsch eine kleine Menge Flüssigkeit +Gutschi Schimpfwörter für Frauen (Modeopfer, nach der Marke Gucci) +Gutschi Sofa +Gütschli eine kleine Menge Flüssigkeit +Guttere Flasche +güttere trinken, sich betrinken +Guttereböde Brille (dicke Gläser) +Gutterebutzer Freund, Partner +gütterle trinken, sich betrinken +Gütterli Flasche +Gutzi gäh sich beeilen +Guuge Bier +Guuge Flasche +Guuge Joint +Guuge Joint +Guuge Klarinette +Guuge Trompete +güügele trinken, sich betrinken +guugelet Telefon (das Freizeichen ertönt) +güüsst wie us Chübel es regnet +güüsst wie us Chüble Wetter (Regen) +Guutsche Auto (gross) (Kutsche) +Güx Schnaps +güxle schauen +Güxx Champagner +Guy rauche einen Joint rauchen +Guzzi gäh Gas geben +Gvätterli alter Mann +Gwaaggechopf Dummkopf +Gwächshuus Restaurant (vegetarisch) +gwaggle lottern +gwaggle wackeln +Gwaggli Schimpfwörter +Gwaggli Versager:in, Verlierer:in +gwagglig locker, lose +gwagglig schwabblig +Gwehr für die weibliche Figur (hässlich) +Gwehr Joint +Gwehr sehr viel +Gwehr is Fäld rüere aufgeben, resignieren +Gwehr-Figg Drill an der Waffe +Gwehr-Vögler Grenadier +Gwehrstand Bordell +Gweih montiere betrunken +Gwicht-Stei-Muetter Sternzeichen (Waage) +Gwind schniide stuhlen +Gwitter chunnt bedrohlich +Gwixx Schlägerei +Gwunderfizz neugierige Person +Gwunderi neugierige Person +gwunderige Cheib neugierige Person +Gwundernase neugierige Person +Gwundertüüte neugierige Person +Gwünn Land! Hau ab! +Gwürz-Schnitzel Scheide +gwüss-sicher sowieso +Gymer Schule (Stufen) (Gymnasium) +Gymi Schule (Stufen) (Gymnasium) +Gynäkologe-Stuehl Motorrad-Typen (Chopper) +hä-ä Nein danke +Ha-ga-hu-wa Hand-Gabelhubwagen +Haag Zaun +Haagge hässlich +Haagge Nase +Haaghäx Schimpfwörter für Frauen (hässlich) +Haaghuuri Mauerblümchen +hääl glitschig +Haar bürschte kämmen +Haar im Gsicht Bart +Haar wie öligi Butzfäde Haare (Locken mit Pomade) +Haar-Aff Armee-Tornister +Haar-Aff Schultornister (befellt) +Haaraff Haare (starke Körperbehaarung) +haarig daneben, verwerflich +haarig schlecht +Haarverteiler Katze +haarze einen Joint rauchen +Haas abzieh onanieren (Männer) +häb-chläb knapp (mit knapper Not) +Habakuck Blödsinn +Habasch Lügner:in, Betrüger:in +Habel hindere rüehre einen Joint rauchen +Haber Mahlzeit +Haber-Motor Pferd +habere essen +Habergauggel Nachtschwärmer +Habermues Birchermüesli +Habli Haschisch +Habli rauche einen Joint rauchen +Habsburger Österreicher:in +hächle atmen +hächle lästern +Hackbrätt Zither +hacke arbeiten +hacke däne sii mit Drogen abstürzen +hacke sii mit Drogen abstürzen +hackedicht betrunken +Häckeri – en Häcker Informatiker:in (engl. hacker) +Hacket s? Fluchwörter +Hafe-Chääs schlecht +Hafe-Chabis Blödsinn +Hafe-Chäs Blödsinn +Häfeli-Schuel Kindergarten +Hafer-Frässer Pferd +Hafer-Töff Pferd +Hafer-Traktor Pferd +Häfi WC +Häftlimacher-Arbet Feinarbeit +Hagaffe Werkzeug (Agraffen) +Hagahuwa Palettenrolli (Abk. für Handgabel-Hubwagen) +Hagel-Brösmeli Reis +häggle häkeln +hagle flüchten, davonrennen +haglet Chatze Wetter +Hähne Brüste +Hahne Restaurant +Hahne frischi Luft schnappe laa urinieren +Hahne uufriisse Gas geben +Hahneburger Leitungswasser +Hahnewasser Leitungswasser +hai glücklich (engl. high) +Häja Bett (dt. Heia) +Halä zur Begrüssung +Halali-Horn Jagdhorn +halb-läbig müde, erschöpft +halbbatzig fehlerhafte Ware (wenn noch halbwegs brauchbar) +halbe gratis günstig +Halbe iiriibe trinken, sich betrinken (einen halben Liter Wein trinken) +Halbe-Halbe mache die Zeche teilen +Halbeli Wein (0.5 dl) +halbgfrorne Schnuder Soft Ice +halbi Hose Angsthase +halbiert entzwei +Halbliter-See Orte (ausserhalb von Zürich) (Hallwilersee) +Halbränner Schimpfwörter +Halbschueh Schimpfwörter +halbtaxle Ausflug (vom Halbtax-Abo der SBB) +häle-häle wahnsinnig +Haletti zur Begrüssung +Halle Gebäude, Lokalitäten +Hallebad Ängschtringe Bordell (Sakura) +Halleluja-Komprässer Handorgel +Halleluja-Pflüdi Birchermüesli +Halleluja-Stude Weihnachtsbaum +Halleluja-Vergaser Kirchenorgel (kleine, schrill intonierte Orgel) +Hallestyz Gebäude, Lokalitäten +Halli-Hallo zur Begrüssung +Hallo Velo! zur Begrüssung +Hallöle zur Begrüssung +Halodri unzuverlässige Person +Halogenlampe Brüste (enorm grosse Brüste) +Hals uufblaase schreien, rufen +Hals- und Beibruch! Viel Glück! +Hals-Bändel Fliege +Hals-Cheeri Nackenstarre +Hals-Chranki – en Hals-Chranke Ostschweizer:in +Hals-Chranki – en Hals-Chranke St. Galler:in +Hälslig Krawatte +Halt de Rand! Halt die Klappe! +Halungg Dieb:in, Einbrecher:in +Halungg Verbrecher:in +Hambetzgi Ameise +Hamburger junger Soldat +Hamburger Rekrut im 1. WK +Hamburger-Verwerter Kinder +Hämme Krönung, Höhepunkt (von Hammer) +Hammer 1 Franken +Hammer Fussball (starker Schuss) +Hämmer Geld +hammer gut +Hammer gut +Hammer Penis +Hammer gäh Gas geben +Hammer haa betrunken +Hämmer s gseh? Gehen wir nach Hause? +Hämmer welle? Gehen wir nach Hause? +hammer- sehr +Hammer-Food leckeres Essen +Hämmerhode Hämmorhoiden +Hämmir zäme Soi ghüetet? das Du antragen (wenn man überraschend geduzt wird) +Hamol-Stellig iinäh sonnenbaden +Hämorrhoide schletze laa furzen +Hämorrhoide-Provozierer Sitzheizung +Hämorrhoide-Schlüüdere Mofa +Hämorrhoide-Schüttler Mofa +Hämorrhoidezwitschere furzen +Hämp Hemd +Hämp und d Hose haa beides haben +Hämperbruscht Mieder (beim Mann) +Hämpergstältli Mieder +hämpfele berühren, befingern +Hämpfeli eine Hand voll +Hämpfeli für die männliche Figur (eingefallen) +Hämpfeli für die weibliche Figur (eingefallen) +Hämpfeli Mengenmasse (eine Handvoll) +Hämpfeli schmächtiger Körperbau +Hampfle Bündel +Hampfle eine Hand voll +Hampfle Mengenmasse (eine Handvoll) +Hampfle Finger ad Ohre flüüge laa zuschlagen +Hampi Vornamen (männlich) (Hanspeter) +Hamschter-Füdli für die weibliche Figur +Hamschterbäggli Wangen +Händ dräckig mache arbeiten (Drecksarbeit erledigen) +Hand druff Abgemacht! +Hand figge onanieren (Männer) +Hand ghöre Ohrfeige +Händ Ihr e Fäschtbelüüchtig? Energieverschwendung (Licht im ganzen Haus) +Händ Ihr en Stei vor de Höhli? die Tür offen lassen +Händ Ihr Seck dehei? die Tür offen lassen +Händ ihr Seck dehei? Redensarten (Small Talk) (wenn jemand die Türe nicht schliesst) +Händ wiiss mache onanieren (Männer) +Handbetriib onanieren (Männer) +Handbräms-Chehri eine Kurve fahren (im Winter, mit angezogener Handbremse) +Handchäs mit Musig Deutsche:r (Hesse mit grosser Schnauze) +Handglänk mal Pi ungefähr (aus der Mathematik) +Handhebi Handgriff +Händi Mobiltelefon (Handy) (engl. handset) +handkehrum andererseits +Handlampe Handlanger:in, Hilfsarbeiter:in +Handschälle Ehering +Händsche Handschuhe +Handsgi Schule (Stufen) (Handarbeit-Unterricht) +Handtäschli Bier (10er-Pack) +Handtuech Schimpfwörter +handumkehrt andererseits +handumkehrt andererseits +Handy Tabakpfeife +Häne Vornamen (männlich) (Heinrich) +Häneli Schwächling +Hang ap bergab +Häng s, Man! Beruhige dich! +Hang-Fang Büstenhalter +hange baumeln +hänge herumlungern +hänge sich ausruhen +Hängebruscht-Guzzi Motorrad-Typen (BMW Boxer) +Hängebuuchwarzebüffel Schimpfwörter für Männer +Hänged mer s? Gehen wir nach Hause? +Hängerli Kleid +hängs bald +Hänk ap! Beruhige dich! +Hänkel Handgriff +Hänkel-Röschti Bier (ein grosses Bier) +Hänne Freundin, Partnerin +Hans was Heiri dasselbe +Hans was Heiri vergleichbar +Hans-Dampf Alleskönner:in +Hans-Dampf i allne Gasse ausgehen (ständig unterwegs) +Hantli Mobiltelefon (Handy) +hantli schnell +hantli sofort, zügig +Hanzgi-Lehrerin – en Hanzgi-Lehrer Handarbeits-Lehrer:in +häppi glücklich (engl. happy) +happig sehr viel +Häppli Häppchen +Happy Cadaver Feiertage (Fronleichnam) +häpsche niesen +Harass Kiste (für Flaschen) +Harddisk Gehirn +Harfe-Grönadier Soldat im Feldspiel +Hari Vornamen (männlich) (Heinrich) +Harley-tramp-mein-Sohn Fahrrad +Harry Brillenträger:in (vom Romanhelden Harry Potter) +Harry Hirsch Alleskönner:in (Kunstfigur von Otto Waalkes) +Härte Schnaps +härte Grind stur +härti Filet Penis +härti Grind fürechehre trotzen +Härzli Brüste +Häsch au na e anderi Platte zum abspile? Das ist mir egal +Häsch Bereitschaft? Dein Reissverschluss ist offen! +Häsch bi de Gsichterverteilig id Füdlichischte glanget? Gesicht +Häsch Blei gfrässe? schwere Kost +Häsch Chäs am Rugge? Spinnst du? +Häsch chli eine? Spinnst du? +Häsch d Apothek offe? Dein Reissverschluss ist offen! +Häsch d Chapsle dusse? Spinnst du? +Häsch d Finger id Steckdose ghebet? zerzaust +Häsch d Gardi Hutter gvoglet? lustig +Häsch d Latte z hööch ghänkt? Aufschneider:in, Angeber:in +Häsch d Ohre putzt hütt morge? Hörst du nicht mehr gut? +Häsch d Uufschnitt-Maschine wieder tick iigstellt? bluffen +Häsch d Vögel duss? Spinnst du? +Häsch da no Wort? Das ist unglaublich! +Häsch de Arsch offe? Du spinnst! +Häsch de Bio-Kompi formatiert? Spinnst du? +Häsch de Chopf gläärt? Spinnst du? +Häsch de Geewee (Grössenwahn)? Aufschneider:in, Angeber:in +Häsch de Grind in Rasemäjer gsteckt? zerzaust +Häsch de GW im HG? bluffen (Grössenwahn im höchsten Grad) +Häsch de Heiland verschluckt? Glück haben +Häsch de Hoselade offe! Dein Reissverschluss ist offen! +Häsch de Kiosk offe? Dein Reissverschluss ist offen! +Häsch de letscht Zwick a de Geissle! Jetzt reicht's! +Häsch de letschti Zwick a de Geisle! Ultimatum +Häsch de Peter Luschtig überfahre? Scherzkeks +Häsch de Uhu ghört? furzen +Häsch Deck dihei? Redensarten (Small Talk) (wenn jemand die Türe offen lässt) +Häsch die Büchs sälber uufgmacht? Redensarten (Essen) +Häsch din Verstand verchauft? Spinnst du? +Häsch dis Hirni lige laa? Spinnst du? +Häsch drin gschlafe? zerknautscht +Häsch Durchzug? Dein Reissverschluss ist offen! +Häsch Durzug im Hirni? Spinnst du? +Häsch e Fallmasche im Hirni? Spinnst du? +Häsch e füechti Wohnig? Haare (Frage an jemand mit grauen Haaren) +Häsch e langsami Leitig? Spinnst du? +Häsch e nassi Zündschnuer? Spinnst du? +Häsch e Wand duss? Spinnst du? +Häsch eine a de Schippe? Spinnst du? +Häsch eine a de Waffle? Spinnst du? +Häsch eine am Sänder? Spinnst du? +Häsch eis am Helm? Spinnst du? +Häsch en Chnopf i de Leitig? Weisst du es nicht? +Häsch en Clown zum Zmorge gässe? lustig (ironisch) +Häsch en Dido? Spinnst du? +Häsch en Egge ap? Spinnst du? +Häsch en Fick i de Knichte? Spinnst du? +Häsch en Furz i der Bire? Spinnst du? +Häsch en Gloon (engl. clown) gfrässe? Scherzkeks +Häsch en Grind wie e VW-Türe – zum Driigingge Du bist ein Idiot! (Quelle: Cabaret Rotstift) +Häsch en Hammer gfrässe? Spinnst du? +Häsch en Hirnriss? Du spinnst! +Häsch en Iiswürfel im Föhn? Spinnst du? +Häsch en Kabelbrand am Herzschrittmacher? aufgeregt +Häsch en Kabelbrand? Spinnst du? +Häsch en Kiosk i der Eigernordwand? Du bist ein Idiot! +Häsch en Knall? Spinnst du? +Häsch en Knick i de Fichte? Spinnst du? +Häsch en Knick i de Linse? Spinnst du? (Hast du das nicht gesehen?) +Häsch en Sankt-Galler-Schüblig i de Chabis-Bletter? Hörst du nicht mehr gut? +Häsch en Schade? Spinnst du? +Häsch en Schuss i de Bire? Spinnst du? +Häsch en Schuss im Thek? Spinnst du? +Häsch en Sprung i de Feschtplatte? Spinnst du? +Häsch en Sprung i de Schüssle? Spinnst du? +Häsch en Stei vor de Hööli? Redensarten (Small Talk) (wenn jemand die Haustür offen lässt) +Häsch en Süüleplatz gha? Weisst du es nicht? +Häsch en Tachschade? Du spinnst! +Häsch en Tilt i der Schüssle? Spinnst du? +Häsch en tote Frosch im Schueh? Spinnst du? +Häsch en tote Vogel im Schueh – oder werum luegsch so blöd? Spinnst du? +Häsch en Vogel? Spinnst du? +Häsch es am Fass? Alles klar? +Häsch es Brätt vor de Schiibe? Spinnst du? +Häsch es Froideli? Redensarten (Small Talk) (wenn jemand etwas Unangenehmes nicht lassen kann) +Häsch es glii? Beeil dich! +Häsch es gschluckt? Alles klar? +Häsch es gschnallt? Hast du es begriffen? +Häsch es intus? Alles klar? +Häsch es jetzt i de Bire drin? Alles klar? +Häsch es Joghurt im Sack? eigenartig, seltsam +Häsch es Joghurt im Sack? Spinnst du? +Häsch es kapiert? Alles klar? +Häsch es kopfet? Alles klar? +Häsch es Loch im Hirni? Spinnst du? +Häsch es öppe? Hör auf! +Häsch es Rad ap? Spinnst du? +Häsch es tschägget? Alles klar? (engl. to check) +Häsch es uf de Reihe? Alles klar? +Häsch es warms Joghurt im Hosesack? Spinnst du? +Häsch es? Beeil dich! +Häsch Essig trunke? mürrische Person +Häsch Ferie-Stimmig? Redensarten (Small Talk) (Zuruf, wenn jemand es locker nimmt) +Häsch Fuessgruch? Dänn mach's Muul zue! Redensarten (Small Talk) (Frage an jemanden, der stinkt) +Häsch Galle-Stei? sauer +Häsch Gigeli-Suppe gha? Scherzkeks +Häsch Göschene-Airolo? Spinnst du? +Häsch grad en geischtige Nulldurchgang? Weisst du es nicht? +Häsch grossi Wösch? Redensarten (Körper) (Anspielung auf dicken Bauch) +Häsch Helium i de Bire, dass d chasch grad stah? Spinnst du? +Häsch Helium im Chopf, dass d grad chasch stah? Spinnst du? +Häsch Helium im Chopf, dass du grad chasch stah? Du bist ein Idiot! +Häsch Hirsch? Spinnst du? +Häsch i de Schuel en Fänschterplatz gha? Weisst du es nicht? +Häsch i de Witz-Chischte gschlafe? Spinnst du? +Häsch i de Witzchischte gschlaafe? Scherzkeks +Häsch jetzt meh Haar? Das ist mir egal +Häsch kei Ahnig vo Botanik? Weisst du es nicht? +Häsch kei Ahnig? Weisst du es nicht? +Häsch kein Coiffeur – chasch es dem verzele! Das ist mir egal +Häsch keis Glettise? zerknautscht +Häsch Liim a de Finger? Redensarten (Suchtmittel) (wenn einer den Joint nicht weitergibt) +Häsch mer e Zigi? eine Zigarette schnorren +Häsch mer en Fade? eine Zigarette schnorren +Häsch mer en Stutz für d Notschliifi? schnorren +Häsch mer Füür? Ich han aber au no nüt zum aazünde! eine Zigarette schnorren +häsch mis Ehrewort Abgemacht! +Häsch Muul-Affe feil? Schaulustige:r +Häsch Muulaffe feil? herumlungern +Häsch na lang? Hör auf! +Häsch nöd all Nadle am Baum? Spinnst du? +Häsch nöd all Soi uf de Terrasse? Spinnst du? +Häsch nöd all Tasse im Schrank? Spinnst du? +Häsch nüm all Schaf im Gatter? Spinnst du? +Häsch nüme ali Eskimo uf em Schlitte? Spinnst du? +Häsch nüme alli Chlüüre uf de Bahn? Spinnst du? +Häsch Ohropax i de Löffel? Hörst du nicht mehr gut? +Häsch öppis gstohle? fahren (zu einem Raser) +Häsch Pizza im Horchlappe? Hörst du nicht mehr gut? +Häsch Proviant iikauft, dass d i de Luft nöd verhungerisch, wänn ich dir eis a Zimbele brämse? Pass auf, sonst knallt's! +Häsch s Büro offe? Dein Reissverschluss ist offen! +Häsch s Loch offe? Dein Reissverschluss ist offen! +Häsch s Tüpfi i de EPA kauft? treffen (wenn man schlecht trifft) +Häsch Schluckweh? trinken, sich betrinken (wenn einer aufhört) +Häsch Schüblig i de Ohre? Hörst du nicht mehr gut? +Häsch Schüüb? Spinnst du? +Häsch susch no en Wunsch? Du kannst mich mal! +Häsch Tomate uf de Auge? Spinnst du? +Häsch Tomate uf de Ohre? Hörst du nicht mehr gut? +Häsch verstande? Hörst du nicht mehr gut? +Häsch Vorhäng dihei? die Tür offen lassen +Häsch Weichspüehler im Shampoo? Spinnst du? +Häsch wider emal null Ahnig? Weisst du es nicht? +Häsch wieder mal s Eichhörnli bestoche? schiessen (bei gutem Resultat) +Häsch Ziischtig? Dein Reissverschluss ist offen! +Hasch-Papis Espadrilles +hasche einen Joint rauchen +Häscher rauche einen Joint rauchen +Häschige Joint +Haschisch fixe einen Joint rauchen +Haschischfixer Drogenabhängiger +Hase s Fueter weggfrässe Salat +Hase-Fuess Angsthase +Hasibärli Kosenamen +hasle jemanden fertigmachen +Häsli Kaninchen +Häsli Kosenamen +Hassan-Tuning Auto-Zubehör (biiliges Tuning) +Hässelcheib mürrische Person +hässig sauer +hässige Cheib mürrische Person +hässige Schiff i d Schüssle rüere urinieren +hässlich wie de Tüüfel hässlich +hät Bei überchoo vergessen, verlieren +hät blitzt Geschwindigkeitskontrolle +Hät d Ample uf Grüen gschalte? Alles klar? +hät d Wiisheit mit em Löffel gfrässe Aufschneider:in, Angeber:in +Hät de au en Chnopf zum abstelle? Schwätzer:in +Hät der eine hinder de Pfiiler gschisse? Mundgeruch +Hät dir e Chatz id Schnurre gschisse? Mundgeruch +Hät dir öpper is Hirni gschisse? Du spinnst! +hät e Schnällbleichi i de Chinderstube gha Rüpel:in +hät eim is Hirni ghuupet wahnsinnig +hät eim is Hirni grägnet wahnsinnig +hät en Chnebel under em Gaspedal langsamer Autofahrer +hät en glitzt sterben +hät en Linggsdrall/en Rächtsdrall schief +hät en putzt tot +hät en Rauch Aufschneider:in, Angeber:in +hät en Riss kaputt +hät en Sprung im Chacheli kaputt +hät en Stei vor de Höhli Rüpel:in +hät en Tolgge im Reinheft Verbrecher:in +hät fascht nüüt meh Es geht zur Neige +hät grad no gschwänzlet verpassen +hät Guri mutig +hät ihm d Hauptsicherig butzt Herzinfarkt +hät ihm is Hirni gschisse wahnsinnig +hät ihn verblaase sterben +hät iigschlage schwanger +hät kän Zeiger dra Das geht dich nichts an! (auf die Aufforderung, etwas zu zeigen) +hät kein Spitz es ist sinnlos +hät kein Spoitz im Ranze langsame Person +hät kein Zeiger dra Redensarten (Small Talk) (genervte Antwort auf die Aufforderung, etwas herzuzeigen) +hät mer de Gong gäh Ich habe genug +hät mi abegstuehlet Unfall +hät mi bös abgstuehlet ich bin gestürzt (mit dem Fahrrad) +hät mi büchset ich bin gestürzt (mit dem Fahrrad) +hät mi glitzt ich bin gestürzt (mit dem Fahrrad) +hät mi glitzt umfallen +hät mi glupft pleite +hät mi gspeichet ich bin gestürzt (mit dem Fahrrad) +hät mi gstöcklet umfallen +hät mi inegnoo sich verlieben +hät mi podiget ich bin gestürzt (mit dem Fahrrad) +hät mi schier verchlöpft vor Lache lachen +hät mi une use gnaa ich bin gestürzt (mit dem Fahrrad) +hät mi verchlöpft explodieren +hät mi verpfäfferet ich bin gestürzt (mit dem Fahrrad) +hät mi verrüert ich bin gestürzt (mit dem Fahrrad) +hät mi verwütscht sich verlieben +hät mi voll grüert ich bin gestürzt (mit dem Fahrrad) +hät mi voll uf d Frässi ghaue ich bin gestürzt (mit dem Fahrrad) +hät mi voll uf de Sack knallt ich bin gestürzt (mit dem Fahrrad) +hät mi voll verbäset ich bin gestürzt (mit dem Fahrrad) +hät mi vom Velo gschmisse ich bin gestürzt (mit dem Fahrrad) +hät mich möge sich ärgern +hät Muure us Kartong schlecht isolierte Wohnung +hät na d Eierschaale hinder de Ohre Teenager:in +hät no gnueg Platz für en Schlanke wie mich Mach Platz! +hät Nudle am Huet hochrangiger Offizier +hät Öl am Bode Geschwindigkeitskontrolle +hät Öl am Huet Betrunkene:r +Hät öpper s Null truckt? Wer hat mit dir geredet? +hät öpper vom Stängeli ghaue Herzinfarkt +hät Püff gmacht explodieren +Hät s bimmlet? Alles klar? +Hät s der id Chappe ghuupet? Spinnst du? +Hät s der in Sänder gschneit? Spinnst du? +Hät s der is Hirni gschisse? Spinnst du? +Hät s der is Hirni zwitscheret? Spinnst du? +Hät s der uf d Zündschnuer grägnet? Spinnst du? +Hät s dir id Verdrahtig gschlage? Spinnst du? +Hät s dir uf de Pinsel gwädlet? Spinnst du? +Hät s dir uf de Seckel gschneit? Spinnst du? +hät s Füür im Tach Rothaarige:r +Hät s griffe? Alles klar? +hät s Hirni i de Hose Frauenheld +hät s im Hirni intelligent +Hät s klick gmacht? Hast du es begriffen? +Hät s no es Eggli? Mach Platz! +hät Schlagsiite schief +hät Stögeli draa Schnee an den Skischuhen +hät tätscht Unfall +hät vill Text Schwätzer:in +hätse (vom Ausdruck "hät's"" beim Fangis)" fangen +hätt eim packt sich verlieben +hätt mi voll packt sich verlieben +Hätti gäh fangen +Hätzler Eichelhäher +Hätzler Eichelhäher +Hau ap! Hau ab! +Hau du ju du, suscht hau ich dich zur Begrüssung (engl. how do you do) +Hau ine! Viel Glück! +Hau s zum Tüüfel! Hau ab! +Hau s! Fluchwörter +haudere pfuschen +haudere übereifrig +Hauderi Schussel +Haued mer s? Gehen wir nach Hause? +Hauerli Zähne +Hauete Schlägerei +Hauptfäldhamschter Feldweibel +Häuptling Chef:in +Häuptling Kompanie-Kommandant (Hauptmann) +Häuptling Professor:in +Häuptling spile dominieren +haurucke tragen, schleppen +Haus in Chübel! Hau ab! +haut mi um vor Lache lachen +Haxe Beine +Häxeschuss Kreuzschmerzen +Häxli Kosenamen +HC gut (Abk. für engl. hardcore) +He, Basler Beppi, nöd blagiere – Schutt in Arsch und abmarschiere! Basler:in +He, iisi! Beruhige dich! (engl. easy) +He, luegsch! Pass auf, sonst knallt's! +Heb acht, susch chlefelet s! Pass auf, sonst knallt's! +Heb d Bagge ane! Pass auf, sonst knallt's! +Heb d Chlappe! Halt die Klappe! +Heb d Frässi! Halt die Klappe! +Heb d Fritte! Halt die Klappe! +Heb d Klappe! Halt die Klappe! +Heb d Lippe! Halt die Klappe! +Heb d Ohre stiif Viel Glück! +Heb d Schnöte zue Halt die Klappe! +Heb d Schnure! Halt die Klappe! +Heb de Bölle flach! Beruhige dich! +Heb de Lade! Halt die Klappe! +Heb de Laller! Halt die Klappe! +Heb de Latz! Halt die Klappe! +Heb de Schlitte! Halt die Klappe! +Heb de Schlitte! Halt die Klappe! +Heb de Schlitte! Halt die Klappe! +Heb de Töff! Halt die Klappe! +Heb di! Beruhige dich! +Heb di! Das ist unglaublich! +Heb din Muulschlitz! Halt die Klappe! +Heb din Schnitz zue! Halt die Klappe! +Heb din Underchifer still! Halt die Klappe! +Heb en Schöne zum Abschied (aber nöd miine) +Heb mi – susch ghei ich ab em Stängeli! müde, erschöpft +Heb s Gätzi zue! Halt die Klappe! +Heb s Muul zue bim Ässe Redensarten (Essen) +Heb s Muul zue! Halt die Klappe! +Heb! Nimm's! +hebe berühren, befingern +Hebel 1 Franken +Hebel Geld +heble arbeiten +Hecker haa frieren +Heckferrari Militärische Fahrzeuge (Saurer M4, antiquarisches eh. Zugfahrzeug für ebenso antiquarische 10,5 cm Hb) +Heckschlüüdere Auto (mit Hinterantrieb) +Heeee, ganz ruuuuuig! Beruhige dich! +heepe schreien, rufen +Hegel Flasche (Bierflasche) +Hegel Sackmesser +Hegi Prominente (national) (Emil Hegetschweiler, Schauspieler) +Hegöggsli Eidechse +Hei zur Begrüssung (engl. hi) +Hei aber au! Das ist unglaublich! +hei go d Grossmuetter chehre nach Hause gehen +Hei namaale! Das ist unglaublich! +hei zittere nach Hause gehen +hei-ei-ei Fluchwörter +Heide-Bäse Weihnachtsbaum +heide-goppeletti Fluchwörter +Heidiland Orte (ausserhalb von Zürich) (Graubünden) +heigah nach Hause gehen +Heikli – en Heikle empfindliche Person +Heiland Holland! Das ist unglaublich! +Heiland-Sack! Fluchwörter +Heiland-Sandale Sandalen +Heiland-Tunner! Respekt! +Heilandsack! Das ist unglaublich! +Heilandsandale-Heini Links-Alternative:r +Heilandsterne! Das ist unglaublich! +Heilandsternesiech Fluchwörter +heilandtonnere schimpfen, beschimpfen (Berndeutsch) +Heilchrütli Marihuana +Heildirhelvetia Schweizer:in +Heile-heile-Säge trösten +Heiler Ärztin/Arzt +Heilige Sabbat! Das ist unglaublich! +Heilige Sebaschtian! Das ist unglaublich! +Heilige Siech Fluchwörter +Heilige Siech! Das ist unglaublich! +Heilige Steiranze! Das ist unglaublich! +Heilige Strohsack! Das ist unglaublich! +Heilige Strohsack! Fluchwörter +Heilige-Sterne-Siech! Das ist unglaublich! +Heiligi Muetter Gottes – im Ankehafe Gsottes! Fluchwörter +Heiligs Güllefass Fluchwörter +Heilsarmee-Karabiner Gitarre +Heimatland! Das ist unglaublich! +Heimatland! Fluchwörter +Heimetli Alphütte +Heimetli Grundstück +Heimetli Haus +Heimetli Wohnung +Heimetluft-Komprässer Handorgel +Heimkino Fernseher +Heimli feisse naschen +Heimli-Feissi – en Heimli-Feisse Schlitzohr +heimlifeiss heimlich +Heini Vornamen (männlich) (Heinrich) +Heinz i de Hose Menstruation (vom Ketchup der Marke Heinz) +Heinz-Rüdiger Deutsche:r +Heiri 5 Franken +Heiri Vornamen (männlich) (Heinrich) +heiss gut +heissi Hösli Hose (Hot Pants) +heissi Schine für die weibliche Figur (Beine) +Heissi Schine – wie gseht ächt de Bahnhof uus? für die weibliche Figur +heissi Schlacht am chalte Büffee schlemmen +heisslaufe sich ärgern +heitere Bimbam Fluchwörter +Heitere Fahne Fluchwörter +Heitere Siech Fluchwörter +Heiweh-Komprässer Handorgel +Heiweh-Pumpi Handorgel +Heiz mer en Ton übere! Ruf mich an! +heize Auto fahren (schnell) +heize eine Zigarette rauchen +heize einen Joint rauchen +heize fahren +Heized Ihr de Wältruum? Energieverschwendung (weit offene Fenster bei kaltem Wetter) +Heizeri – en Heizer Müllfrau/Müllmann +Heizisch ganz Mittel-Europa? Energieverschwendung (weit offene Fenster bei kaltem Wetter) +Heizöl-Ferrari Auto-Typen (Dieselmotor) +heizünde drängen +Helau zur Begrüssung (aus dem Deutschen) +Held Alleskönner:in +Helge Fotografie +Helge Gemälde +Heli Hubschrauber +Helikopeter Hubschrauber +Helikopter-Landeplatz Glatze +Helioktober Hubschrauber +hell mache das Licht einschalten +hell uf de Platte intelligent +helle Beeri Prominente (international) (Halle Berry, US-Schauspielerin) +helle Chopf intelligent +helle Liechtli gseh sterben +helle Siech intelligent +Helm Kondom +Helm isch uf Durscht Redensarten (Militär) (an heissen Tagen den Schutzhelm nach oben schieben, damit man nicht so schwitzt) +Helplatziafetz Gebäude, Lokalitäten (Helvetiaplatz) +helte ein Gefäss leicht kippen +Helvezia für die weibliche Figur (stämmig) +hennegeil sehr gut +Hep-Chlep-Typ Alleskönner:in +herbschte Geld verdienen +Herdöpfel jassen (Schreibweise beim Schellen-Jass) +Herdöpfel Kartoffel +Herdöpfel Kopf +Herdöpfel abisoliere Kartoffeln schälen +Herdöpfel setze schiessen (die Scheibe verfehlen) +Herdöpfel uustue in der Nase bohren +Herdöpfelstock Kartoffelstock +Herehäxle Eichelhäher +Herehäxler Eichelhäher +hergäh erbrechen +Herr der Ringe Augenringe +Herr Maier Major +Herr Ober Servierpersonal (veraltet) +herremässig gut +herremässig sehr gut +Herrgott Millione Fluchwörter +Herrgott Sternesiech Fluchwörter +Herrgottetierli Marienkäfer +Herrgöttli Bier (1 dl) +Herrjehmineh, Frau Portmonee! Fluchwörter +Herrliberger Süürling Wein (mieser Tropfen) +Herz-Baragge Herzinfarkt +Herz-Chriesi Herzinfarkt +Herzchäferli Kosenamen +Herzchaschper Herzinfarkt +Herzdötterle überchoo sich verlieben +Herzflattere haa Angst haben +Herzflattere haa sich verlieben +herzig niedlich +Hesch? Redensarten (Small Talk) (Weisst du?) +hett wenig gfählt beinahe +hetze rennen +Heu schuufle denken +Heu uf de gliiche Bühne haa sich gut verstehen +Heu-Porsche Pferd +Heubärre weitere Vehikel (Heuwagen) +Heublueme-Töff Pferd +Heubode-Disco-Musig Volksmusik +Heubüchli dicker Bauch +Heubuuch Bäuerin/Bauer +heue Gras zur Trocknung wenden +Heuel Eule +Heuel Haare (ungekämmt) +Heugümper Auto-Typen (2CV, wegen der Federung) +Heugümper Heuschrecke +heusche Geld verdienen +heusche verlangen +heusche zu viel Geld verlangen +Heuwänder Hubschrauber +Heuzger Katze +Hiba Hindernisparcours +hibbelig unruhig +Hick Kerbe +Hick ap haa verrückt +hiesig diesjährig +Hilfs-Sheriff Polizist:in (Parkplatz-Kontrolleur:in) +Hilfs-Sheriff Securitas-Mitarbeiter:in +Hill Hügel (engl.) +Himbeeri-Pfnüsel Menstruation +Himbeerisirup Menstruation +Himbo Sirup (Himbeer-Sirup) +Himmel briegget es regnet +Himmel hät es Iiseh ghaa das Schlimmste überstanden haben +Himmel Tunner Toria Fluchwörter +Himmel-Herrgott-Sack! Fluchwörter +Himmel-Hoileiterli-Cheib Fluchwörter +Himmel, Arsch und Zwirn Fluchwörter +Himmelfahrts-Nase Nase (Stubsnase) +Himmelgüegeli Marienkäfer +himmeltruurig schlecht +hin und her gigampfe mit dem Stuhl auf zwei Beinen balancieren +Hinder Gesäss +hinder d Ränk cho erwischen, ertappen +hinder em Rugge dure hinterhältig +hinder em Seckel hueschte furzen +hinder s Liecht choo erwischen, ertappen +hinder schwedischi Gardine gah ins Gefängnis gehen +Hinder-Hirzeler Zürcher:in (aus Zuger Sicht) +hindere biige essen +hinderefuehre essen +hinderegöötsche trinken, sich betrinken +hinderehaue essen +hindereligge sich ausruhen +hinderem Rugge schnurre lästern +hinderepängle essen +hindererüere essen +hindereschiebe essen +hinderfrööge nachfassen +hinderfürschi durcheinander +hinderfürschi verwirrt +hinderfutzig hinterhältig +hindergah betrügen +Hindergnick Gesäss +hinderhaa verzögern +Hinderletscht niederträchtig +hinderletscht schlecht +Hinderrücksleri – en Hinderrücksler Fiesling +hinderrüx hinterhältig +hinderschi rückwärts +hinderschi ässe erbrechen +hinderschi furze rülpsen +hinderschi Gässnigs Erbrochenes +hinderschi mache pleite (Geld verlieren) +hinderschi mache verlieren +hinderschi räuschpere erbrechen +hinderschi schiisse erbrechen +Hinderschi-Geiss eine Abfuhr erhalten (eine Frau, die einem eine Abfuhr erteilt) +hinderscht und einzig vollständig +Hinderteil verdresche den Hintern versohlen +Hindertüürli After +hine ine chrüüche anbaggern, aufreissen +hinedrii im Nachhinein +Hinedrii isch me gschiider Redensarten (Small Talk) +hinedrii sii im Hintertreffen +hinedrii wie d Chile-Uhr zu spät +hinedrii wie die alt Fasnacht verpassen +hinedrii wie die alt Fasnacht zu spät +hinedure hinterrücks +hinefürehole hervorkramen +hinenabe gheje pleite +hinenabe gheje verlieren +hinenume hinterhältig +hinenuse missraten +hinenuse gange gescheitert +hinenuse mache verlieren +Hinterwäldler Provinzbewohner:in +Hinz und Kunz alles Mögliche +Hip-Hop-Zigarette Joint +Hiphop-Meitli – en Hiphop-Bueb Hip-Hopper:in +Hiphopper Zappelphilipp +hipperig sexuell erregt +Hippiestan Orte (ausserhalb von Zürich) (Winterthur) +Hirn-Hoger Orte (in Zürich) (Hochschulen-Quartier) +hirnblöd dumm +hirne denken +Hirni Gehirn +Hirni Schimpfwörter +Hirni bruucht meh Platz Glatze +Hirni useschiisse Schnupfen +Hirnibraater Mobiltelefon (Handy) +Hirnipick Psycholog:in, Psychiater:in +Hirnipickeri – en Hirnipicker Schimpfwörter +hirnrissig wahnsinnig +Hirnschlag vo Züri Medien (NRJ Zürich, eh. Radio Z, basierend auf dem Slogan ''De Herzschlag vo Züri'') +Hirntooschter Mobiltelefon (Handy) (engl. toaster) +Hirnwindige Gehirn +Hirnwindige Kopf +Hirnzälle recycliere betrunken +Hirsch Carlmann Prominente (national) (Carl Hirschmann) +Hirsch sii bewältigen, meistern +Hirschläder uuswinde urinieren (Männer) +Hit gut +Hit Krönung, Höhepunkt +Hitparade lose stuhlen +hitte zuschlagen (engl. to hit) +Hitzgi Schluckauf +Hitzgi-Hätzgi hinderem Haag Schluckauf +Ho-Chi-Minh-Brösmeli Reis +Ho-Chi-Minh-Schotter Reis +Ho-Pro Gebäude, Lokalitäten (Kantonsschule Hohe Promenade) +Hobby-Winkelried junger Soldat +hobbylos nutzlos, überflüssig +Hobel Motorrad +höbele hofieren, schmeicheln +Hobla-hü! Beeil dich! +Hoblä! oh jemineh +hoble onanieren (Männer) +höch aagäh bluffen +höch haa betrunken +Höch haa gut gelaunt +höch singe betrunken +Hochalpe-Dixieland Volksmusik +Höcher git – Ass befiehlt Kartenspiele (Redewendung beim Ziehen der Karten) +höchewäg senkrecht +hochgchotzet tue anspruchsvoll +Hochglanz-Muschi Gummi-Puppe +hochgstoche anspruchsvoll +Hochgstochne Aufschneider:in, Angeber:in +Hochgstochni – en Hochgstochne Besserwisser:in +höchgstuehlet anspruchsvoll +Hochkopfete hochrangiger Offizier +Hochleischtigs-Ratte Hündchen +Hochpriis-Inselbewohner Schweizer:in +höchs Tier Kader-Mitglied +höchschti Isebahn Höchste Zeit +höchschti Isebahn sofort, zügig (höchste Zeit) +Hochsig Hochzeit +Höck Sitzung +hock ab, iss und bsinn di zuschauen und abwarten +Hock ap! Das ist unglaublich! +Hock nöd ane wie-n-es Pfund Schnitz! Setz dich anständig hin! +hocke bliibe Schule (Übertritt) (sitzenbleiben) +Höcker Nase +Hocker Stuhl +Höckerli Bohnen +Höckli Baby (ab 1 Jahr) +Hocksch uf de Leitig? Spinnst du? +Hocksch? Das ist unglaublich! +Höde Geld +Hode-Chrämpf überchoo sich ärgern +Hode-Fuetter Austern +Hode-Rassle Motorrad (125 ccm) +Hode-Rassler Mofa +Hode-Schüttler Mofa +Hode-Vibrator Mofa +Hodefloh Filzlaus +hödele aufreizende Bewegungen +Hoderassle Schmerzen im Unterleib (Mann) +Hoderassle haa aufgeregt +Hödi Mofa +hogarisi Fluchwörter (Hode-Gamelle-Rieme-Siech) +Höger 1 Franken +Höger Hügel +högere Sex haben +högerig hüglig +Högerli Hügel +Höh-Töh Gebäude, Lokalitäten (eh. Höhere Töchterschule, heutige Kantonsschule Hohe Promenade) +hohl schlecht +Höhle forsche Sex haben +Höhle-Forschig betriibe in der Nase bohren +Höhle-Ggriifte furzen +Höhlebewohner streichle schmusen +Höhleforscher Zahnstocher +Höhli Haus +Höhli Wohnung +Hohli – en Hohle Dummkopf +hohli Ländlerin – en hohle Ländler Holländer:in +Hohlruum-Behandlig Medikamente (Kopfweh-Tabletten) +Hohn Schande +Hoi zur Begrüssung +Hoiel zerzaust +Höier 5 Franken +Hokuspokus Blödsinn +Hol s de Geier! Tatsächlich? +Holdere Holunder +Holderihoo unzuverlässige Person +holeegere schreien, rufen +holeie jodeln +holeje schreien, rufen +holländische Lawinehund Hündchen (West Highland White Terrier) +Hölle-Böle Brüste (enorm grosse Brüste) +höllegeil sehr gut +Holler Holunder +höllisch schrecklich +Holz aalange! Glück haben (Ritual, nachdem man Glück gehabt hat) +Holz felle schnarchen +Holz vor de Hütte Brüste +Holz vor de Hütte für die weibliche Figur (grosse Brüste) +Holz- und Beibruch! Viel Glück! +Holz-Kombi Sarg +Holz-Pischama Sarg +Holz-Pischama (Pijama) montiere sterben +Holz-Zoggel Holländer:in +Holzbock Rüpel:in +Holzböde mit Lasche Sandalen +Holzchopf Dummkopf +hölze onanieren (Männer) +Holzfuess Fussball (unbegabt) +Holzhacker 50 Franken (Sujet auf eh. 50er-Note) +Holzhirni Baby +hölzig Tschööpli Sarg +Hölzige Schreiner +Holzklass Strassenbahn (alte Wagen) +hölzle ausknobeln (Hölzli zieh) +hölzle Sex haben +hölzle bis d Spän flüged Sex haben +Hölzli Holzscheit +Holzöpfel Kopf +Holztschööpli aalegge sterben +Holzverarbeitigs-Aastalt Sägerei +Holzwurm Schreiner +Hömli Hemd +Homo arsenalis Zeughaus-Angestellter +Homo sapiens akademikus Akademiker:in +homogen sehr gut +Honey Kosenamen (engl.) +Höngg am Ölberg Orte (in Zürich) (wegen den früheren Reben) +Honig um s Muul schmiere hofieren, schmeicheln +Honigbienli Kosenamen +hööch näh betrügen +hööche Wasserfall für die weibliche Figur +hööchi Stirne Glatze +Höörli-Diebin – en Höörli-Dieb Coiffeur/Coiffeuse +Höörli-Filzeri – en Höörli-Filzer Coiffeur/Coiffeuse +Höörli-Metzgeri – en Höörli-Metzger Coiffeur/Coiffeuse +Höörli-Tökti Coiffeur/Coiffeuse +Hopfe-Jass chlopfe trinken, sich betrinken +Hopfe-Spoiler dicker Bauch (Bierbauch) +Hopfe-Tee Bier +Hopfeblüete-Tee Bier +Hopfeperle Bier +Hopfeteeli Drinks (Bier) +Hopp Sänt-Gälle – ine mit de Bälle St. Galler:in (Schlachtruf FC St. Gallen) +Hopp Schwiiz! Beeil dich! +Hopp-de-Bäse! Beeil dich! +Hopp-du-Bäse! Beeil dich! (von Hopp-de-Bäse) +hopp-hopp schnell +Hopp-hopp! Beeil dich! +Hoppel-Häsli Kaninchen +höpperle Sex haben +Höpperli stelle betrügen +Hoppla Frosch! Das ist unglaublich! +Hoppla Schorsch Das ist unglaublich! +Hoppla Schorsch! Beeil dich! +hops schwanger +hops gah pleite +hopse tanzen +Hör au uuf Stei rüere! Beruhige dich! +Hör uuf liire! Halt die Klappe! +Hör uuf mit dem Gliir! Halt die Klappe! (das Geleier) +Hör uuf mit dem Klöön Hör auf mit dem Gejammer! +Hör uuf ruedere, bisch uf em Sand! Beruhige dich! +Hör uuf Stei rüere! Das nervt! +Hör uuf tööple! Finger weg! +Hör uuf umefigureetle Finger weg! +Hör uuf umefingerle Finger weg! +Hör uuf umenäggele! Finger weg! +Hör uuf, mir d Bire z fülle! Halt die Klappe! +Hormonbüffel Macho +Hormonschuub-Baby Teenager:in +Horn Penis +Horn blase Oralverkehr (bei Männern) +Hornbläser-Studio Bordell +horne schreien, rufen +horne weinen +hörnig sexuell erregt (engl. horny) +hörnle Sex haben +Hornochs Schimpfwörter +Hörpfel Kartoffel +horrormässig schrecklich +Horscht Deutsche:r +horte Geld sparen +hösch schnell +Hoschtet Grundstück +Hose aa haa dominieren +Hose abe laa den Hintern versohlen +Hose abelaa betrügen +Hose abelaa Redensarten (Arbeit) (einen tiefen Preis machen, um einen Auftrag zu erhalten) +Hose-abe jassen (Spielart) +Hose-Drache Feuerzeug +Hose-Lotteri Chaot:in +Hose-Schiisser Feigling +Hose-Seicher Feigling +Hose-Stolperer Hip-Hopper:in +Hosebläser Aufschneider:in, Angeber:in +Hosebode-Vibrator Mofa +Hosegagger Kleinkind +Hosegaggeri – en Hosegagger Angsthase +hoselädele berühren, befingern +hösele rennen +Höseler Angsthase +Höseler Feigling +Hoselotteri Spiesser:in +Hoselotteri Spiesser:in +Hoseludi Schwächling +Hoselupf Schlägerei +Hoselupf Schwingen +Hoseschiisseri – en Hoseschiisser Angsthase +Hoseschiisseri – en Hoseschiisser Kleinkind +Hoseseicheri – en Hoseseicher Angsthase +Hösi Angsthase +Hösi Kleinkind +Hösi zartes Kind +hösle Sex haben +Hösli, Unterhose +höstlere flirten (engl. hustler) +Hot Dog a de Leine Dackel +Hotel Wohnung +Hotelzimmer mit gsiibeter Luft Gefängnis +Hotsch unzuverlässige Person +Hotsch-Gufe Nadel (Sicherheitsnadel) +hottere Sex haben +hötterle fahren (langsam fahren) +hötterle Sex haben +Hötterli mache Sex haben +Hotzeplotz Dieb:in, Einbrecher:in +Houmbejss Schützenpanzer (engl. homebase) +HR Vornamen (männlich) (Hansruedi) +Hü hott! Beeil dich! +Hü-Ross Pferd +Hü-Rössli Schaukelpferd +Hubeligug Blödsinn +hübscheli sorgfältig, behutsam +hübsches Frätzli und nüüt dehinder Redensarten (Körper) +Huddelwätter Wetter (schlechtes Wetter) +Hudel Rock +hüdele bürsten, polieren +Hudeli Rock +Hudeli Tüchlein +Hüderli Schimpfwörter für Frauen (hilflos) +Hudigäggeler Volksmusik +Hudilump Faulpelz +Hudilump unzuverlässige Person +Hudipfupf Blödsinn +hudle herumlungern +Hudle Kleidung +hudlet es regnet +hudlet und chuutet Wetter (Sturm mit Regen oder Schnee) +Hüdraulik Herz +Huehn Schimpfwörter für Frauen (chaotisch) +Huehn stopfe Sex haben +Hüehner iitue tadeln, massregeln +Hüehner-Beton Polenta +Hüehner-Punk Hahn +Hüehnerfädere flüüged aufgeregt +Hüehnerhuut überchoo frieren +Hüehnerstall Strip-Club +Hüehnli rupfe tadeln, massregeln +Hüentschi Huhn +Huere Siech! Fluchwörter +Huere verfiggte Scheiss! Fluchwörter +huere- sehr +Huere-Furz Fluchwörter +Huere-Nol Fluchwörter +Huere-Sack nomal Das ist unglaublich! +Huere-Sack-Marroni nomal Fluchwörter +Huere-Siech-nomal Fluchwörter +Huere-Siech-nomal! Respekt! +hueregeil sehr gut +Hueremeitli – en Huerebueb Schimpfwörter +Hueresohn Hip-Hopper:in +huerevill sehr viel +Huet ab! Respekt! +Huet ööle trinken, sich betrinken +Huet uf Turscht haa betrunken (im Nacken) +Huet-und-Stumpe-Fahrer Autofahrer:innen (Opel-Fahrer:in) +Huet-und-Stumpe-Wage Auto-Typen +hüete Kinder hüten +Hüetli-Spiil Brettspiele +Huetschachtle Schachtel +Hügel Brüste +Hügelfrääse Motorrad (Motocross-Motorrad) +Hügelweschte Büstenhalter +Hugipfupf Blödsinn +hühne- sehr +Huhu zur Begrüssung +Hülse Bier +Hülse Flasche (Bierflasche) +Hülse in Thek ine trucke trinken, sich betrinken +Hülsechlöpferi – en Hülsechlöpfer Trinker:in, Alkoholiker:in +hülsele schiessen (nach dem Schiessen Hülsen einsammeln) +Humbug Blödsinn +Humpe Bier (Bierkrug) +Humus-Wüehleri – en Humus-Wüehler Gärtner:in +Hunde-Margge Amulett mit persönlichen Daten +Hundegagel Hundekot +Hündel Hündchen +Hundepfludi Hundekot +hundert Pro ganz sicher (100 %) +Hundert-Meter-Hund Hündchen (fliegt so weit bei einem Fusstritt) +Hundertelfi Klatschmaul (111) +Hunderter 100 Franken +Hundertfoifezwänzger Motorrad (125 ccm) +hundertprozäntigs Nei sicher nicht +Hündli-Huus Gebäude, Lokalitäten (Zunfthaus zum Rüden) +Hunds-Cheib! Gesundheit! +Hundsgegel Hundekot +hundsgemein schlecht +hundstüfelswild wütend +Hundsverlochete Menschenauflauf +Hundsverlochete Party (schlechte Party) +Hundwaar fehlerhafte Ware +Hunger isch de beschti Choch Redensarten (Essen) +Hunger-Ascht haa Hunger haben +Hungerturm dünne Person +Hungg Honig +Hunni 100 Franken +Hunziker Hund +Hüpf-Tämpel Tanzlokal (Club, Disco) +hüpfe tanzen +hüppere schimpfen, beschimpfen (von hyperventilieren) +Huppi Haare (hochgesteckt) +Hüratsbeschlüüniger Kuschelrock +Hürbinüeleri – en Hürbinüeler Obdachlose:r +hürig diesjährig +Hurlibueb Kreisel (Spielzeug) +Hurligugger Kreisel (Spielzeug) +Hürlimaa-Schwangerschaft dicker Bauch (vom Bier der Marke Hürlimann) +Hüroglüfe Gekritzel +Hurti! Beeil dich! +hurtig schnell +husch schnell +husch-husch schnell +Husch-husch is Chörbli! Hau ab! +Husch, husch und furt! Beeil dich! +Huscheli Schimpfwörter für Frauen (unterwürfig) +Husiereri – en Husierer Marktfahrer:in +Hüsli WC +Hüss zum Abschied +hüt chumi erscht morn hei ausgehen +Hüt no! Beeil dich! +Hutschel-Wiibli Schimpfwörter für Frauen +Hütte Haus +Hutte Korb +Hütte Wohnung (auch für Haus) +Hütte-Uuspuff Kamin +Hüttewart Kompanie-Kommandant +Hüüchler-Bäse Blumenstrauss +Hüüchler-Stuude Blumenstrauss +Hüüchlerbäse mitgebrachter Blumenstrauss +Hüüchlerfäscht Weihnachten +Huufe sehr viel +Huufe Stapel +Huufe Zahside Haare +hüüfele stapeln +hüüfewiis sehr viel +Hüüffeli Chotz mit Eiter Birchermüesli +Hüülboje Musiker:innen (Elvis Presley) +Hüülboje-Prüefstand ("Superstar"", Casting-Sendung 3+)" Medien +hüüle schreien, rufen +hüüle weinen +hüülendi Bison Staubsauger +Huulibambuuli Blödsinn +Huupe Brüste +huupe schreien, rufen +Huupet s? Spinnst du? +Huupi schlechte Band +hüür diesjährig +Huus-Altar Fernseher +Huusdrache Freundin, Partnerin +Huusegge-Rock schlechte Band +Huusfraue-Hydrant Thermoskrug +Huusfraue-Porsche – en Huusmanne-Porsche Auto-Typen (VW Karmann-Ghia) +Huusfraue-Tanze Damenriege +Huusi Hauswirtschaftsschule +Huusierer Vertreter +Huusreuki Hauseinweihung +Huusroichi Hauseinweihung +Huuswart Hausmeister +Huuszins uusnütze Haus (zu Hause bleiben) +Huut und Chnoche dünne Person +Huut vor Chnoche Wie spät ist es? (genervte Antwort, wenn man keine Uhr hat) +Huut zämeprässe kneifen, zwicken +Hüütli trucke entjungfern +Hygiene-Technikerin – en Hygiene-Techniker Reinigungskraft +hyper- sehr +i andere Umständ schwanger +I bi a der Arbet und nöd uf de Flucht Redensarten (Small Talk) (wenn jemand zur Eile drängt) +i bin über de Länker abgstige ich bin gestürzt (mit dem Fahrrad) +i chline Schrittli allmählich +i d Händ spoitze anpacken +i d Möscht gah ausgehen +i d Wüeschti Gobi verreise betrunken +i de Brüch betrunken +i de Brüch müde, erschöpft +i de Langfinger-Zouft sii klauen, stehlen +i de Mitti vo de City mittendrin +i de Pampas abgelegen +i de Pfane gschiire Sex haben +i de Seil hange müde, erschöpft +i de Wältgschicht umegondle Auto fahren +i de Wüeschti am Limit +i dem Jahr diesjährig +I dene Löcher chasch d Grossmuetter versänke! holprige Strasse +I der Epa/i der Epa/da cha mer alles haa/für 75 Rappe en zämegsetzte Maa EPA +i di geischtig Heimet gah sterben +i dr Mitti mittendrin +i eim Caracho schnell +i eim Zacke schnell +i eis Loch schwätze auf jemanden einreden +i mag dermasse nümm nicht auszuhalten +i muass uf Züri aufs WC gehen (Redewendung aus Chur) +i öpper sii sich verlieben +i öpper verknallt sii sich verlieben +i s Chämi schriibe Geld verlieren +i sich inegah und s Bescht us sich usehole in der Nase bohren +i Watte packe verwöhnen +i zucchini Deutschschweizer:innen (aus Tessiner Sicht) +ich andere Baustelle Ich weiss es nicht +ich bepiss mi! Das ist unglaublich! +ich bi doch nöd de Pestalozzi ausnutzen, aushalten +ich bi doch nöd de Pestalozzi! Redensarten (Small Talk) (Ich kann nicht immer nur geben, wie Johann Heinrich Pestalozzi!) +ich bi immer de Tubel im Umzug! Immer bin ich schuld! +ich bi nöd uf de Chopf gheit - uf d Stäge scho gar nöd Ich weiss es +ich bi scho tuschet – merci! feuchte Aussprache +ich bi uf d Schnurre ghejt ich bin gestürzt (mit dem Fahrrad) +ich bin a der Arbet und nöd uf de Flucht Das eilt nicht +ich bin immer de Schällegaggli! Immer bin ich schuld! +ich bin ja blöd, aber soo blöd au wider nöd! Redensarten (Small Talk) +ich cha s nöd gaxe Ich weiss es nicht (es kommt mir nicht in den Sinn) +ich chan au nöd meh als mache Redensarten (Small Talk) (dräng mich nicht so) +ich chönnt es Ross vertilge Hunger haben +ich chönnt mer sälber eini tätsche! sich ärgern +ich chum mer vor wie-n-e Ölsardine überfüllt +ich chume Püggel über! Das nervt! +ich chume Würm über Das nervt! +ich chumm Bibeli über nicht auszuhalten +ich chumm jetzt dänn e ganzi Volière über Das nervt! +ich chumm no Flöh über Das nervt! +ich chumm Vögel über Das nervt! +ich flueche nöd, ich rauche nöd, ich trinke nöd – gopfeteckel, jetzt isch mer de Stumpe is Bier ine ghejt! trinken, sich betrinken +ich gahn go Bohne ässe! Mir reicht's! +ich gang go Chüssi-lose zum Abschied (schlafen) +ich gib der d Hand druff ganz sicher +ich gib dir 50 Rappe – lüüt öpperem aa, wo s intressiert Das ist mir egal +ich gib öpperem es goldigs Nüüteli beschenken +ich gib öpperem es silberigs Nienewägeli beschenken +ich glaub s ja nöd! Das ist unglaublich! +ich glaub, dir grindet s an Wind! Spinnst du? +ich glaub, mich knutscht en Elch! Das ist unglaublich! +ich gseh s nöd, de Zeiger isch druff! Wie spät ist es? +ich gseh's nöd, de Zeiger isch druff Redensarten (Small Talk) (Antwort auf Frage nach der Uhrzeit) +ich ha doch nöd de Gäldschiisser! ausnutzen, aushalten +ich ha kein blasse Schimmer Ich weiss es nicht +ich ha s no halbe tänkt vermuten +ich ha schier de Pfau gmacht! Das ist unglaublich! +ich han au nur Nerve! Das nervt! +ich han d Nase voll Ich habe genug +ich han es Achti gmacht ich bin gestürzt (mit dem Fahrrad) +ich han es Carpaccio uf d Strass gleit ich bin gestürzt (mit dem Fahrrad) (Hautfetzen) +ich han es Eseli gmacht ich bin gestürzt (mit dem Fahrrad) +ich han es Liedli wele singe – aber es sind alli Strophe mitenand choo rülpsen +ich han es Trucke und es Riisse, ich glaub, de Vater mues go schiisse aufs WC gehen +ich han fascht in Tisch bisse! Das ist unglaublich! +ich han kei chrummi Ahnig Ich weiss es nicht +ich han kein Blasse Ich weiss es nicht +ich han null Ahnig Ich weiss es nicht +ich han null Idee Ich weiss es nicht +ich han s Wiibli gmacht ich bin gestürzt (mit dem Fahrrad) (Gegenteil von "Männli") +ich han scho Sache aapisst, wo gschiider gsi sind als du! Du bist ein Idiot! +ich häng s zum Abschied +ich hau dich blau zuschlagen +ich hau s zum Abschied +ich jag di zum Tämpel uus! Hau ab! +ich kriege einen Anfall Möbelhäuser (Ikea) +ich laa mer nöd uf d Nase schiisse! Hör auf! +ich laa mi zwäcks Wasserlöösig churzfrischtig dischpänsiere urinieren +ich leg s Gält höcher als du aa – du uf de Bank, ich uf em Tisch Redensarten (Geld) +ich legg es Ei! Das ist unglaublich! +ich lerne nöd usswändig! Ich sag's nur einmal +ich mach de Fisch zum Abschied +ich mach dir Füür under em Arsch! Beeil dich! +ich mach nöd de Laggel! Du kannst mich mal! (Lakai) +ich mues zum Abschied +ich mues de Rägeschirm uufspanne – es tröpflet! feuchte Aussprache +ich mues eim go d Hand gäh, wo gliich alt isch wie-n-ich urinieren (Männer) +ich mues hei – d Mieti lauft! Haus +ich nimm der öppe d Batterie use! Halt die Klappe! (als wäre der Betroffene ein Roboter) +ich nöd – er au die Schuld zuweisen +ich schaffe bi de Firma Frei & Fiirabig als Ferie- und Freiziittechniker arbeitslos +ich schiiss en Goldfisch! Das ist unglaublich! +ich schiisse druff Das ist mir egal +ich schiss en Igel – nei, zwei! Das ist unglaublich! +ich schlaa der d Frässi ii! Pass auf, sonst knallt's! +ich schlaa der d Schnurre schräg! Pass auf, sonst knallt's! +ich truck der de Tuume! Viel Glück! +ich verreck! Das ist unglaublich! +ich wär schier gstorbe! Das ist unglaublich! +ich wott nöd din Lade chaufe zu viel Geld verlangen (Antwort auf zu hohe Preisforderung) +ich zieh s zum Abschied +ich zieh sie zum Abschied +id Bärge gah Kokain konsumieren +id Brotlaube schiebe essen +id Chischte ine grüehrt werde sterben +id Chischte müese ins Gefängnis gehen +id Chleider schlüüfe sich anziehen +id Chnüü gah in die Hocke gehen +id Chriesi hocke Menstruation +id Chriesi schicke sich trennen +id Fädere gah schlafen +id Foif-Finger-Höhli gah onanieren (Männer) +id Händ spoize arbeiten (sorgfältig) +id Heia gah schlafen +id Hose schlecht +id Hose gah gescheitert +id Hose mache Angst haben +id Hose stiige arbeiten +id Hudle gumpe sich anziehen +id Keramik-Abteilig gah aufs WC gehen +id Luft gah sich ärgern +id Pfanne haue jemanden fertigmachen +id Ränte gah ausscheiden +id Röhre luege leer ausgehen +id Schiissi lange hereinfallen +id Schiissi lange Pech haben +id Schiissi recke hereinfallen +id Schlüüch gange missraten +id Silofrääse rüere essen +id Tinte lange verlieren +id Vogelbüsch go hasle Sex haben +id Wüeschti schicke sich trennen +Idiote-Tennis spile Eishockey spielen +Idioten kaufen einfach alles Einkauf (IKEA) +Igel-Nase Brustwarzen +Igelnase Nippel +ihm uf d Eier gah Oralverkehr (bei Männern) +Ii-Locheri – en Ii-Locher Golfer:in +iibetoniere trinken, sich betrinken +Iibildig isch na lang kei Bildig! Redensarten (Small Talk) +Iichlämmer Krawatte +iidräjie einen Joint drehen (vorbereiten) +iifädle vorbereiten, planen +iifahre arbeiten (zur Arbeit kommen) +iifahre ins Gefängnis gehen +iifange fangen +iifi eifersüchtig +iifuchse einarbeiten +iigäh eintippen +iiglochet werde ins Gefängnis gehen +iigrollte Schafsflade Kebap +Iiklämmt uselaa Durchfall +iiklämmte Bruch (der "Blick"" im Briefkasten)" Medien +Iiklämmts Sandwich +iiläse scannen +iilaufe eintreffen +iiloche Sex haben +iiloche werfen, zuwerfen +Iiluege Kinderspiele +iiluege Pech haben +iiluege verlieren +Iipackte Joint +iipoute Ruggewind haa Elektro-Fahrrad (Antrieb eines Elektro-Fahrrades) +iipuffe einräumen +iiriibe trinken, sich betrinken +iisacke Geld verdienen +iisarge Kegeln, Bowling (Spiel beim Kegeln) +iisarge umbringen +iischlafe für immer sterben +Iisgräm Eis-Crème +iisi debii sii Schüttelreime (engl. easy) +iisi druff gut gelaunt (engl. easy) +Iisi Portugiisi? Schüttelreime (engl. easy) +Iisi, Baby! Beruhige dich! (engl. easy, baby) +iisoife überreden, überzeugen +iispeichle kauen +Iistiigeri – en Iistiiger Dieb:in, Einbrecher:in +iistuehle stuhlen (in die Hose machen) +Iisuufete Hauseinweihung +Iiszapfe Schimpfwörter für Frauen (abweisend) +iitrudle eintreffen +im Adamskoschtüm nackt +im andere Garte stochere Seitensprung +im Arsch müde, erschöpft +im Bänzin rüere Gang einlegen +im Bitz usse abgelegen +im Chabis usse abgelegen +im Chruut usse abgelegen +Im Ernscht? Tatsächlich? +im Fleischchäs usse abgelegen +im Gaggo abgelegen +im Gehölz abgelegen +im Getriebe umerüere Gang einlegen +im Ghetto usse abgelegen +im Gjätt usse abgelegen +im gliiche Spital chrank vergleichbar +im Griff haa bewältigen, meistern +im Gsicht uuslaufe Schnupfen +im Gstrüpf abgelegen +im Güggehüü abgelegen +im Hui schnell +im Iis-Chaschte sii unglücklich, deprimiert +im Juhee abgelegen +im Juhui dusse abgelegen +im Jus sii im Hintertreffen (franz. jus) +im Jüttehüü abgelegen +im Lääre träje explodieren +im Lauch abgelegen +im laufende Jahr diesjährig +im letschte Chrache abgelegen (abgelegenes Tal) +im Loch müde, erschöpft +im Nachbersgarte wildere eine Affäre haben +im Off sii nach Hause gehen +im Off sii überflüssig sein (von engl. offside) +im Öl ligge betrunken +im Püggeli-Alter sii Teenager:in (Akne-Alter) +im Räge stahglaa werde eine Abfuhr erhalten +im Roote träje explodieren +im Rote träie toben +im Rote träje wütend +im Schilf usse abgelegen +im Schnittlauch usse abgelegen +im Schuss sii beschäftigt sein +im Seich sii im Hintertreffen +im Stress sii beschäftigt sein +im Summer gitt öpper Schatte und im Winter warm dicke Person +im Tüüf-Flug dehär choo Vollgas +im Vercheersverein mitmache sexuelle Praktiken (Orgie) +im Wääg sii überflüssig sein +im Züüg sii Stress +Immer locker bliibe! Beruhige dich! +immer luschtig, immer froh, wie de Mops im Paletoo Scherzkeks (franz. paletot) +immer wieder fortzu +immer wieder die gliich Komödie zu wiederholtem Male +in Abfall gheie entsorgen, wegwerfen +in Arsch chrüüche hofieren, schmeicheln +in Bart ine brümmele murmeln, brummeln +in Bou gah arbeiten +in Bunker gah arbeiten +in Chopf ine luege schlafen +in e Ein-Zimmer-Wohnig umzieh sterben +in Egge stäche eine Kurve fahren +in Exit gah ausgehen +in Gang gah ausgehen +in Gang gah ausgehen +in Gäng gah ausgehen +in Giit ine frässe schlemmen +in Grind inetrucke essen +in Hammer laufe eine Abfuhr erhalten +in Himmel ufelupfe bewundern +in Knascht gah ins Gefängnis gehen +in Mond luege auf Geld verzichten +in Mond luege leer ausgehen +in Oerlike uusstiige Coitus interruptus +in Sand setze Geld verschwenden +in Sänkel stelle tadeln, massregeln +in Schacht abelääre trinken, sich betrinken +in Schwitz-Chaschte näh zuschlagen (dosiert würgen) +in Stolle gah arbeiten +in Süde gah (ins "Ibiza"" nach Kollbrunn)" Bordell +in Täller ineligge wi-in-en Napf unanständig essen +in Uusgang gah ausgehen +Indercity öffentliche Verkehrsmittel (S-Bahn nach Örlikon) +Indernet Internet +Indo Joint +Industrie-Stängeli Zigarette +ine abeluege schlafen +ine choo hereinkommen +ine gheje hereinfallen +ine und use – geil! erbrechen +Ine und use – geil! erbrechen +Ine-Architäkt Oralverkehr (bei Männern) (Analverkehr) +Ine-Tüeli Delle +ine-use-fertig sexuelle Praktiken (Quickie) +Ine-use-Rendez-vous One Night Stand +inebaggere essen +inebiige essen +inebiige schlemmen +inebuttere investieren +inechlopfe eintippen +ineflüüge hereinfallen +inegeile essen +inegeile trinken, sich betrinken +inegheje hereinfallen +inegumpe ins Wasser springen +inehäcke eintippen +inehacke schreiben (am Computer) +inehämmere eintippen +inejasse schiessen (treffen) +inelegge betrügen +Ineleggeri – en Inelegger Lügner:in, Betrüger:in +ineligge anpacken +ineliime betrügen +inelitze betrügen +ineluege besuchen +inemälche und richtig abemähle trinken, sich betrinken +Inemischi Störenfried +inemoschte hineinstopfen +inerassle hereinfallen +inerassle verlieren +inesäddere hereinfallen +ineschiebe essen +ineschletze essen +ineschliddere hereinfallen +ineschlittle hereinfallen +ineschneie hereinkommen (unerwartet) +ineschoppe essen +ineschuufle essen +ineschuufle schlemmen +inestungge hineinstopfen +inesuttere hereinfallen +inetöggele eintippen +inetöggele schreiben (am Computer) +inetrucke essen +inetschädere hereinfallen +inetue essen +inetwütsche hereinkommen (unbemerkt) +inezieh essen +inezieh Sex haben +Info-Tiger Informatiker:in +Informatiker-Handtäschli Computer (Laptop) +Infrastruktur haa eine Beziehung haben +inhaliere trinken, sich betrinken +inner Souhund bekämpfe das Letzte herausholen +Innereie güüsse trinken, sich betrinken +Inneschwyzer Walliser (vom Walliser aus gesehen) +Insel-Äffin – en Insel-Aff Engländer:in +Intelligänz Platz mache Glatze +Intelligänz-Hügel Orte (in Zürich) (Hochschulen-Quartier) +Intelligänz-Quoziänt Besserwisser:in +Intelligänz-Verstärcher Brille +Intelligänzbeschtie kluger Kopf +Intelligänzverstärcher am Ohr Mobiltelefon (Handy) (telefonieren mit Bluetooth-Headset) +Inter-Netzli Internet +intergalaktisch gut +Inträsse a öpperem haa sich verlieben +intressant – wie wänn z China en Sack Riis umgheit schlecht +Intrige-Heiri Intrigant:in +Intsch Ingenieur:in +intus haa bewältigen, meistern +Invalide-Guetzli Spitzbub (Keks) (wegen der 3 Löcher) +inwändig fuul sii furzen +IP-Heini Informatiker:in +iPod Totsch MP3-Player +IQ vo drüü Meter Fäldwäg dumm +IQ vom Fiinschte intelligent +IQ wie-n-en Baumstamm dumm +IQ wie-n-es Seerose-Blatt dumm +IQ-Ferie Urlaub machen (im Quartier) +Irch am Burchel Orte (ausserhalb von Zürich) (Buch am Irchel) +Irokese-Schnitt Haare (wie ein Kamm) +irre sehr +irrig falsch +irrsinnig verrückt +is Becki stosse Sex haben +is Brocki gäh entsorgen, wegwerfen (Brockenhaus) +is Büschli gumpe flüchten, davonrennen +is Chämi schriibe auf Geld verzichten +is Chefi cho ins Gefängnis gehen +is Chindbett cho gebären +is Chüssi chnurre schlafen +is Chüssi-Kino gah schlafen +is Chutteli briegge jemandem seinen Kummer anvertrauen +is Exil gah flüchten, davonrennen +is Fädere-Theater gah schlafen +is Gilet hüüle sein Herz ausschütten +is Graas biisse sterben +is Gsicht hagle Oralverkehr (bei Männern) +is Gsicht lange zuschlagen +is Hageholz gäh entsorgen, wegwerfen +is Loch gaa ins Gefängnis gehen +is Loch gheje toben +is Muul näh Oralverkehr (bei Männern) +is Nirvana gah sterben +is Röhrli blaase polizeilicher Alkoholtest (Atemprobe) +is rote Meer stäche entjungfern +is Rotiere choo toben +is Ruedere choo verlieren +is Undergrund-Chalet umzieh sterben +is Whisky-Charlie gah aufs WC gehen +isch abeghueberet kaputt +isch abenand kaputt +isch buechet Abgemacht! +isch Bulle-Wätter Polizei (hohe Präsenz) (an jeder Ecke eine Kontrolle) +isch bürtzig kaputt +isch Chlütterli-mal-Murks fehlerhafte Ware +isch Chörbli-Ziit! schlafen +Isch das alles miine? dicke Person (vom Mann aus gesehen) +Isch das din geischtige Erguss? War das deine Idee? +Isch das e Iiladig? Dein Reissverschluss ist offen! +Isch das uf dim Mischt gwachse? War das deine Idee? +Isch de Bio-Compi verreckt? Spinnst du? +isch de Bringer es lohnt sich +Isch de Foifer abeghejt? Alles klar? +Isch de Zwänzger abeghejt? Alles klar? +Isch de Zwänzger abeghejt? Hast du es begriffen? +Isch din Vater Glaser? Redensarten (Small Talk) (wenn jemand in der Sicht steht) +Isch dini Chatz gstorbe? Redensarten (Small Talk) (wenn jemand schmutzige Fingernägel hat) +Isch dini Mueter chrank? Dein Reissverschluss ist offen! +Isch dir s Zwänzgi nonig abe? Weisst du es nicht? +isch e tummi Gschicht schlecht +isch eis z vill sehr gut +Isch er gstorbe? Dein Reissverschluss ist offen! +Isch es aachoo? Alles klar? +Isch es aachoo? Hast du es begriffen? +Isch es au bim Hinderletschte aacho? Alles klar? +isch es de Wert es lohnt sich +Isch es dine? Alles klar? +Isch es fein? Mer ghört s! Redensarten (Körper) (wenn jemand beim Essen schmatzt) +Isch es guet gsii? – Das chunnt erscht morn uus! Guten Appetit! +Isch es ine? Alles klar? +Isch es kläre? Alles klar? +isch fertig luschtig Es geht zur Neige +isch fidibus Es geht zur Neige +isch Flättere-Wätter zuschlagen +isch Flätterewätter! Pass auf, sonst knallt's! +isch Fredi schlecht +isch für nüüt gsii, da hetti grad chöne deheime bliibe leer ausgehen +isch futsch kaputt +isch Gält gut (aus der Börsensprache) +isch gebongt Abgemacht! +isch gnueg Heu dune Ich habe genug +isch grisse sich trennen +isch gritzt Abgemacht! +isch halt eso sei es, wie es ist +isch hellhörig schlecht isolierte Wohnung +isch i.O. Abgemacht! (in Ordnung) +isch idiotisch Fluchwörter +isch kauft Abgemacht! +Isch kauft! gut (aus der Börsensprache) +isch meini Ziit! Beeil dich! +isch mer chötzelig unwohl +isch mer grad entfale Ich weiss es nicht +isch mer gschmuuch unruhig +isch mer öppis under's Iis gange vergessen, verlieren +isch mir Hans was Heiri Das ist mir egal +isch mir schnuppe Das ist mir egal +isch mir schnurz Das ist mir egal +isch mir schnurzegal Das ist mir egal +isch mir uusgfahre! Mir reicht's! +isch mit 200 in e parkierti Fuuscht gsecklet Hund (Mops) +isch mit em Düüsejeger dur d Chinderstube gfloge schlecht erzogenes Kind +isch na vom Winkelried schlecht +isch nie z spat für Fruchtsalat Schüttelreime +isch no keine verstunke – aber scho verfrore Energieverschwendung (weit offene Fenster bei kaltem Wetter) +Isch nöd wahr! Tatsächlich? +Isch nöd wahr? Das ist unglaublich! +isch nonig troche hinder de Ohre Teenager:in +isch notiert Abgemacht! +isch öppe eine daa überfüllt +isch paletti Abgemacht! +isch ringhörig schlecht isolierte Wohnung +Isch s der jetz wöhler? Beruhige dich! +isch scho dure verpassen +isch scho eine gstorbe jassen (wenn jemand lange die Karten mischt) +isch scho mal eine gstorbe Redensarten (Small Talk) (wenn jemand lange braucht) +isch scho um de Egge verpassen +isch scho um de Egge – s hät grad na gschwänzlet Ich sag's nur einmal +isch schön, dass d choo bisch – aber no schöner, dass d wieder gahsch zum Abschied +isch Sense sich trennen +isch tilt Abgemacht! +isch tunkel wie inere Chueh Wetter (dicke, schwarze Wolken) +isch wachsig Wätter Wetter (Sonne und Regen) +isch zu Hudle und Fätze kaputt +isch zum Arschloch-figge Das ist unglaublich! +isch zum Chnöche chotze! Das ist unglaublich! +isch zum Chrischtbaum-Chugle furze! Das ist unglaublich! +isch zum devo sieche Fluchwörter +isch zum Figure chotze Das ist unglaublich! +isch zum Gummibärli uuspeitsche Das ist unglaublich! +isch zum Haaröl seiche Das ist unglaublich! +isch zum Haaröl seiche nicht auszuhalten +isch zum Hüehner­ sattle! Das ist unglaublich! +isch zum Müüs mälche Das ist unglaublich! +isch zum Müüs mälche wütend +isch zum Öl lisme Das ist unglaublich! +isch zum Pfiiferauche schlecht +isch zum Rasierklinge brünzle Das ist unglaublich! +isch zum Rohöl seiche Fluchwörter +isch zum Träne furze! Das ist unglaublich! +isch zum us de Huut fahre nicht auszuhalten +Ise-Fuess Fussball (beinhart) +Iseli Geld +Iseware-Handlig Zahnspange +Isi Vornamen (weiblich) (Isabelle) +Isige ligge laa fahren (durchdrehende Räder mit Schneeketten) +ISO 08/15 Normalverbraucher:in +Isolan-Porzelator Porzellan-Isolator +Isolations-Pfröpfe MP3-Player (Kopfhörer) +Iss Gummi und verzieh di! zum Abschied +it's shipping outside es regnet (Pseudo-Englisch) +Italo Italiener:in +Ja du heilige Bimbam! Respekt! +ja eh ganz sicher +ja eh, safe auf jeden Fall +Ja hör! Respekt! +Jä meinsch? Tatsächlich? +ja nei sicher nicht +jä nu guet also sei es, wie es ist +jä nu so dänn sei es, wie es ist +Ja waas! Das ist unglaublich! +Ja, Chef! Abgemacht! +Ja, chumm! Das ist unglaublich! +Ja, säg s rächt! Tatsächlich? +jääselet Es stinkt +Jabba Joint +Jack Vornamen (männlich) (Jakob) +Jäggli Jacke +Jahresbiitrag Geschwindigkeitsbusse +Jahrgänger träffe urinieren (Männer) +Jamaica-Tanne Hanfpflanze +James Blond Prominente (international) (James Blunt, engl. Sänger) +James hät hüt frei Redensarten (Verkehr) (wenn jemand selber Auto fährt) +James-Bond-Wise stark behaarter Männer-Oberkörper +Jammer-Griite Schimpfwörter für Frauen +Jammer-Schinke Geige +Jammer-Tante Schimpfwörter für Frauen +Jammer-Tschüge Musiker:innen (Udo Jürgens) +Jammerbrigade Männerchor +Jammerchrääze Jammerlappen +Jammerchrääze Querulant:in +Jammerchrächzi Jammerlappen +Jammere Motorrad-Typen (Yamaha) +Jammerfüdli Jammerlappen +Jamper Jacke +japse lachen +Japse-Tömbler drehbares Panorama-Restaurant (engl. tumbler) +Japser-Stadt Luzern +Jason Joint +Jassteppich Zunge +jätte Unkraut entfernen +Jawolle, Frau Holle! Abgemacht! +Jay Joint +Jay (engl. J für Joint) rauche einen Joint rauchen +Jay-Jay Joint +Jazz-Brennessle Marihuana +Jeans-Whisky Coca-Cola +Jebet Joint +jebetiere einen Joint rauchen +Jechters nei! oh jemineh +Jechters! oh jemineh +jede Feufer uf d Siite legge Geld sparen +jede Feufer umdräje sparsam mit Geld umgehen +jede Schiissdräck ganz wenig (Kleinigkeit) +jede Schmarre alles Mögliche +jede Trottel fahrt en Opel Autos von Opel +jedem Tierli sis Pläsierli Angewohnheit (franz. plaisir) +jedem Totsch sini Swotsch Uhr (Swatch) +jedes Böhnli git es Töönli Bohnen +jedes Böhnli git es Töönli furzen +Jedes Ding a sim Ort – erspart viel Müeh und mäng böses Wort Ordnung +jedes Tröpfli git es Chöpfli Samenerguss +jeene Schiissdräck alles Mögliche +jeenschtes alles Mögliche +Jeffrey Joint +Jegerlatiin verzelle übertreiben +Jegerli Hör auf mit dem Gejammer! +Jegerli nei au Hör auf mit dem Gejammer! +Jegerli nei au! oh jemineh +Jeises Mari! Fluchwörter +Jelly rauche einen Joint rauchen +Jemmers au! Das ist unglaublich! +Jemmers Troscht! Fluchwörter +Jemmers Troscht! oh jemineh +Jenatsch Bündner:in +Jennifer Hopeless Prominente (international) (Jennifer Lopez, US-Schauspielerin) +Jenny Vornamen (weiblich) (Jennifer) +Jenny Tschoutschou tschüftschele einen Joint rauchen +jenseitig gut +Jerem Jerem! Das ist unglaublich! +Jesses Gott em Vatter! Das ist unglaublich! +Jesses Gott! Das ist unglaublich! +Jesses! Das ist unglaublich! +Jessi Vornamen (weiblich) (Jessica) +jessle onanieren (Männer) +Jesus-Antänne Weihnachtsbaum +Jesus-Laatsche Sandalen +jetz bini verrate und verchauft es ist sinnlos +Jetz bisch nüün Jahr id Baumschuel und immer no en Pflock! Dummkopf +jetz bollet s dänn zuschlagen +Jetz chlipperet s dänn grad! Hör auf! +Jetz chlipperet s dänn grad! Jetzt reicht's! +Jetz chumm nöd na mit dem hinefüre! Hör auf! +jetz git s Häbi zuschlagen +Jetz git s mer öppis! oh jemineh +Jetz hät s der d Sicherig putzt! Du spinnst! +Jetz hät s foif vor Zwölfi gschlage! Jetzt reicht's! +Jetz hau i der dänn eis! Pass auf, sonst knallt's! +Jetz isch aber de Zapfe-n-ap! Das ist unglaublich! +Jetz isch aber Fiiraabig! Hör auf! +Jetz isch aber Matthäi am Letschte! Ultimatum +jetz isch alles Essig es ist sinnlos +jetz isch de Mischt garettlet jassen (das Spiel ist gelaufen) +Jetz isch de Ofe uus! Jetzt reicht's! +jetz isch de Pfupf duss eine klare Sache +jetz isch de Schuss duss eine klare Sache +Jetz isch fertig luschtig! Hör auf! +Jetz isch fertig luschtig! Jetzt reicht's! +Jetz isch fertig Schnätz! Jetzt reicht's! +Jetz isch gnueg Heu dune! Jetzt reicht's! +Jetz isch guet Nacht am Sächsi! Jetzt reicht's! +Jetz isch Matthäus am letschte! Jetzt reicht's! +Jetz mach aber en Punkt! Hör auf! +Jetz mached mir Negel mit Chöpf Redensarten (Small Talk) (wir vereinbaren etwas verbindlich) +Jetz muesch höre! Jetzt reicht's! +Jetz rutscht mir dänn d Hand uus! Pass auf, sonst knallt's! +Jetz schlaat s Drizähni! Jetzt reicht's! +jetz tätscht s zuschlagen +Jetz wird's gliich no en glatte Aabig zum Abschied (jetz, wo du gahsch) +Jetzt aber rassig! Es eilt +Jetzt aber wie s Bisiwätter! Beeil dich! +Jetzt bin ich wider de Böli-Maa! Immer bin ich schuld! +Jetzt bisch total dure bi Rot! Du spinnst! +Jetzt ghörsch dänn gli d Ängeli singe! Pass auf, sonst knallt's! +Jetzt git s dänn es Fratzegeballer! Pass auf, sonst knallt's! +Jetzt git s schwarze Schnee! Das ist unglaublich! +Jetzt häsch dänn öppe de letschti Zwick a de Geissle! Pass auf, sonst knallt's! +Jetzt häsch de Dräck Redensarten (Small Talk) (jetzt hast du das Problem) +jetzt hät s d Sicherig usegjagt explodieren +Jetzt hät's Zwölfi gschlage! Ultimatum +Jetzt isch aber höchschti Isebahn! Ultimatum +Jetzt isch nüme guet! Du spinnst! +Jetzt klipperet s dänn grad im Fadezeinli! Pass auf, sonst knallt's! +Jetzt lupft s mer dänn de Schlamm-Teckel Mir reicht's! +Jetzt lupft s mer dänn en Ziegel ap Ich habe genug +Jetzt muesch aber die grosse Schueh aalegge Redensarten (Small Talk) (du hast eine Dummheit gemacht) +Jetzt schlaat's Zwölfi! Respekt! +Jetzt schlaht s drizähni! Das ist unglaublich! +Jetzt tätscht s dänn! Pass auf, sonst knallt's! +Jetzt tätscht s mer dänn de Nuggi use! Mir reicht's! +jibbe snowboarden +Jiint Joint +Jil Ständer Kleidermarken (Jil Sander) +Jo Geilo Frauenheld (von der Band "Jo Geilo & The Heartbreakers") +Jö! niedlich +jödele – bödele jodeln +Jodle Schule (Unterricht) (Singen) +jodle singen +Jodler-Baragge Alphütte +Jodsack Sanitäter +Jogg ungeschickt +Joggechopf Schimpfwörter +Jöggel mache Tischfussball +jöggele Tischfussball +Joggeli Kosenamen (tröstend) +Joggeli Schussel +Joggeli Buume schüttlet Pfluume Schüttelreime +Joggeli-Bindig Ski-Bindung (Seil-/Kabelbindung) +Jöggi Vornamen (männlich) (Jörg) +Joghurt Schimpfwörter +Joghurt-Nagleri – en Joghurt-Nagler Dummkopf +Joghurtli Schwächling +John Geilo Aufschneider:in, Angeber:in +John Porno zur Begrüssung (Umkehrung von ital. buongiorno) +John Wayne Büchsenfleisch-Ragout +John Wayne Dosenfleisch +John Wayne Dosenragout +Johnny Büchsenfleisch-Ragout +Johnny Penis +Johnny Cash Whisky +Johnny Hügel Wein (Johannisberg, Wein aus dem Wallis) +Johnny spliffe einen Joint rauchen +Johnny-Bombe Büchsenfleisch-Ragout (auf dem Notkocher explodierte Büchse Ragout) +Jole Vornamen (weiblich) (Jolanda) +Jolly Joint +jömmerle jammern, sich beklagen +Jömmerlineiau! Hör auf mit dem Gejammer! +Jon Vornamen (männlich) (Jonas) +Jone Vornamen (männlich) (Jonas) +Jonny Joint +Jonny rauche einen Joint rauchen +Joogi träje einen Joint drehen +Jööl Joint +Joschka Deutsche:r +José legge erbrechen +juchze jodeln +Judo Würgens Musiker:innen (Udo Jürgens) +jufle hetzen +Jufli Chaot:in +Jufli Chaot:in +Jüge Vornamen (männlich) (Jürg) +Jumbo-Schmier-Nippel Brustwarzen (grosse Brüste) +Jumbo-Schmiernippel Brüste (grosse Brüste) +Jung, dynamisch und erfolglos Versager:in, Verlierer:in +junge Goigel Teenager:in +junge Schnuderi Teenager:in +junge Schnuufer Teenager:in +junge Spunt Teenager:in +Jungfrau, starch lädiert Sternzeichen +Jungmannschaft Kinder +jungs Gmües Teenager:in +jungs Gschmeus Teenager:in +Junkie Drogenabhängiger (engl.) +Junkie-Express öffentliche Verkehrsmittel (Busse 31 und 32 in den Kreisen 4 und 5) +juppiere überholen +Jürg Jenatsch Bündner:in +Jus-de-Muh Milch (franz. jus) +Jus-de-vache Milch (franz. jus, vache) +Jute-Präser Links-Alternative:r +Jute-Sack Kondom +Jute-statt-Plastik Links-Alternative:r +kaaste anbaggern, aufreissen (engl. casting) +Kabel verlegge urinieren +Kabel-Äffin – de Kabel-Aff Kamerafrau/Kameramann (Kabelträger:in im TV, wegen der gebückten Haltung) +Kabel-Gebühre Alimente +kable onanieren (Männer) +kaböres kaputt +kabutt müde, erschöpft +kabutt mache jemanden fertigmachen +kabutt schlaa zerstören +kachleti Näbe-Ruum WC +Kack schlecht +kacke stuhlen +Kackerei WC +Kackorama WC +Kackreiz uuslöse stuhlen +Käder Geschwätz +Kader-Figg Kader-Ausbildung +Kadi Kompanie-Kommandant +Käfeli Kaffee +Kafi Kaffee +Kafi complet kalte Platte +Kafi Durzuug Kaffee (schwach) +Kafi fertig Kaffee (mit Schnaps) +Kafi GT Kaffee (mit Trester) +Kafi Gump-is-Bett kalte Platte +Kafi König Clubs, Discos (King's Club) +Kafi Lutz Kaffee (mit Schnaps) +Kafi mit Güx Kaffee (mit Schnaps) +Kafi mit Möcke Kaffee (mit eingeweichten Brotstücken) +Kafi mit Siitewage Kaffee (mit Schnaps) +Kafi Schräg Clubs, Discos (Club Diagonal) +Kafi Sprängstoff Kaffee (mit Schnaps) +Kafi-Fahrt Werbefahrt +Kafi-Verteileri – en Kafi-Verteiler Kaufmännische:r Angestellte:r (KV) +Kafibeckeli Tasse +Kafimocke-Bächer kleine Keramikschüssel +Kafisatz macht schön! Kaffee +Kägi chunnt stuhlen +KaGiRa Rapport (Kaffee-Gipfeli-Rapport) +Kaktus Kot +Kaktus setze stuhlen +Kalahol Alkohol +Kalorie-Bombe Süssigkeiten (kalorienreich) +Kaloriebombe Crèmeschnitte +Kaloriebunker dicke Person +Kalumet Joint +kameelig hüglig +Kameraade-Schwein unkollegialer Soldat (es KS) +Kamerad Freund, Partner +Kampf-Ameise Hündchen +Kampf-Händsche Kondom +Kampfbahn Hindernisparcours +Kämpfer Kampfanzug +Kampfroschter Auto (rostet schnell und gründlich) +Kampfstiefel unkollegialer Soldat (en KS) +kampfsuufe trinken, sich betrinken +kän hiisige Auswärtige:r +kän rote Rappe wert unnütz +kän Schuss Pulver wert unnütz +Kanak Kanonier +Kanal-Teckel uufmache entjungfern +Kanalgas Mundgeruch +Kanalisationsverteiler Saxophon +Kanalratte Fiesling +Kanalteckel Tampon +Kanapee Sofa (franz. canapé) +Kanischter lääre urinieren +Kännsch öpper (wo s intressiert)? Halt die Klappe! +Kanonanier Kanonier +Kanone Alleskönner:in +Kanone haa eine Erektion haben +Kanonebutzer Rohrkolben +kanonevolle betrunken +Kante hoble tadeln, massregeln +Kanti Gebäude, Lokalitäten (Kantonsschule) +Kanti Schule (Stufen) (Kantonsschule/Gymnasium) +Kantöönli-Geischt Kantone (Rivalität unter den Kantonen) +KaNuGi-Rapport Rapport (Kaffee-Nussgipfel-Rapport) +Kaparöli Korporal +kapiere begreifen, verstehen +Kapiert? Hast du es begriffen? +Kapitalischte-Strick Krawatte +käppelet betrunken +kappische bewältigen, meistern +Käptn Chef:in +Käptn Chaos Chaot:in +karete traurig +Kari Vornamen (männlich) (Karl) +Karli Briner Gewehr (Karabiner) +Karli Briner Karabiner +Karnevur Fleisch-Liebhaber:in +karrisiere flirten +Karscht schiessen (Karabiner) +Karton 1'000'000 Franken +Karton-Pnöö Cordon-Bleu +Karusa Kampfrucksack +karve skifahren (engl. carving) +Karzer Gefängnis +käs Problem Macht nichts +Kasak Feldprediger (Katholische Sündenabwehrkanone) +Käsch Geld (engl. cash) +käsche Geld ausgeben, bezahlen (engl. cash) +Kaschtanie Hoden +Kaschtrierts Bier +Kaschtüttere Kastanie +Käse-Tunke" Fondue (Übersetzung für die Deutschen) +Kaserne-Gärtner Brigadier +Kasernehof-Gärtner hochrangiger Offizier (Divisionär) +kassiere Geld verdienen +Katalisator Leber +Katalysator Kondom +Kater-Karate betrunken (gegen den Kater kämpfen) +Kati Vornamen (weiblich) (Kathrin) +Kätle Vornamen (weiblich) (Kathrin) +katte sich trennen (engl. to cut) +Kauboj Freund, Partner (engl. cowboy) +Kauf Clubs, Discos (Kaufleuten) +Kaugörl Amerikaner:in (engl. cowgirl) +Kebab Joint +Kebab-Verkäuferi – en Kebab-Verkäufer Kaufmännische:r Angestellte:r (KV) +Kebi Kebap +Keffi Gram Kaffee (Kaffee Crème) +Kei Ahnig vo Botanik? Schüttelreime +kei Ahnig vo de Botanik Ich weiss es nicht +Kei Ahnig vo Plahnig Schüttelreime +kei Antwort isch au e Antwort Das geht dich nichts an! +kei Brot haa keine Chance haben +kei Fäderläsis mache rücksichtslos +kei Fiduz meh haa müde, erschöpft +kei Halogenlüüchte Dummkopf +kei Müe meh gäh nachlassen +kei Mumm meh haa müde, erschöpft +kei Sau niemand +kei Schnuuf haa beschäftigt sein +kei Schruube am Arsch haa pleite +kei Spoitz im Füdli haa gleichgültig +kei Stell haa arbeitslos +kein Bügel meh haa arbeitslos +kein Chnoche niemand +kein Finger chrümme arbeiten +kein Foifer meh im Hosesack haa pleite +kein Muggs meh mache tot +kein Pfupf me haa am Limit +kein rote Tschimmi haa pleite +kein Stich haa keine Chance haben +kein Strick verriisse dumm +kein Wank mache unbeweglich +keini vo eus – keine vo eus Auswärtige:r +keis guets Haar laa lästern +keis Puntenöri haa unanständig (frz. point d'honneur) +Keramik zeige, wer d Chefin oder de Chef isch aufs WC gehen +Keramik-Abteilig WC +Keramikgott aabätte erbrechen +Khüder Abfallsack +KI – de Kollegin ihri eine Zigarette schnorren (fiktive Marke) +kibitze schnuppern, auskundschaften +kibitzle schauen +kicke Fussball +kickt werde entlassen werden +kiffe einen Joint rauchen +Kiffi-Bueb weitere Typen (kiffender Teenager) +Kiffstängel Joint +Kiiboord malträtiere eintippen (engl. keyboard) +Kiisets Erbrochenes +Kilo 1'000 Franken +Kilo grosses Stück +Kilo Roote Wein (1 l Rotwein) +Kilometer-Frässer Auto +kilowiis sehr viel +King uf em Hafe-Ring Schüttelreime +Kiosk a de Eigernordwand haa dumm +kippe entsorgen, wegwerfen +kippe trinken, sich betrinken +Kippe Zigarette +Kippi Handstand die Zeche teilen +Kippi-Handstand mache die Zeche teilen +Kippi-Handstand mache sterben +Kitsch ablaa einen Fehler machen +kitsche einkaufen (Kleinigkeiten einkaufen) +Kitt ab de Schiibe frässe Hunger haben +kitte kleben +Klaare Schnaps +Kläffer Hund +Kläffzger Hündchen (kleiner Kläffer) +Klafoif Klavier +Klamotte Kleidung +Klapp-Top Computer (Laptop) +klar wie Gülle eine klare Sache +Kläralaag Niere +kläre eine klare Sache +Kläri Vornamen (weiblich) (Klara) +Klaro? Alles klar? +klars Wässerli Schnaps +Klasse-Tante – en Klasse-Unggle Lehrerin +Klassefurz Medien (Kassensturz, TV-Sendung SF) +klatscht grad zwei Mal – ich dir is Gsicht und du an Bode Pass auf, sonst knallt's! +Klavi Klavier +Klavier Gebiss +Klavier spile Polizist:in (sich Fingerabdrücke abnehmen lassen) +Klavizimbel Klavier +Klimper-Chaschte Klavier +Klimperi Pianist +Klit Scheide (Abk. von Klitoris) +Klo WC +Klööpe Finger +Klööpe Finger +klöpft betrunken +Klöpfte Tequila mit Ginger Ale +klöpfti Sicherige Augenringe +Kluft Anzug +Kluft montiere sich anziehen +Klugscheisserin – en Klugscheisser Besserwisser:in +Knaatsch haa streiten +Knack-Knack Cornflakes +knacke schlafen +Knacks haa verrückt +Knall i de Bire haa verrückt +knalle die Türe zuschlagen +knalle Sex haben +knalle Sex haben +Knallfix Pistole +Knallfrösch ablaa Champagner (den Champagner öffnen) +Knallfrosch-Spicker Minenwerfer-Soldat +Knarre Pistole +Knarromaat Aromat +Knascht Gefängnis +knätte stuhlen +knattere Sex haben +Knatterfritz ablaa furzen +Knätti WC +Kneete Geld +knellt explodieren +Knick i de Fichte haa dumm +Knick i de Optik haa betrunken +Knigge isch für öpper es Fremdwort Rüpel:in +knipse fotografieren +knipse Sex haben +Knipser Fussball (Goalgetter) +Knipseri – en Knipser Fotograf:in +Knipseri – en Knipser Fussball (Goalgetter:in) +Knirps Kinder +knirpsle Sex haben +Knitterlook zerknautscht +Knitti deutscher Student +Knorrli eigenartige Person +Knorrli-Puder Aromat +Knubbel Kosenamen (jem. zum Knuddeln) +Knülch Schimpfwörter +Knülze Gewehr +knuutsche schmusen +Köbeli Bürkliplatz Prominente (national) (Kubilay Türkilmaz, eh. Fussballer) +Köbi Huehn Prominente (national) (Köbi Kuhn) +Köbi mälche onanieren (Männer) +Koboi Amerikaner:in (engl. cowboy) +kochti Holzwule Dörrgemüse +Koffein-Schuub Kaffee +Koffer abstelle furzen +Kofferheini Tourist:in +Köfferlimuni Tierärztin/Tierarzt +Kohl-Chopf Deutsche:r (von Alt-Bundeskanzler Kohl) +Koje Bett +Kokain-Konsument:in Restaurant +Koks-Kommandant Korpskommandant +Koks-Schlämpli Kokain-Konsument (weibl. Konsumentin) +kokse Kokain konsumieren +Kollateralschade Alimente +Kolleg Freund, Partner +Kolleg Penis +Kolleg Essig Penis +kolumbianisch Heuschnupfe haa Kokain konsumieren +kolumbianische Hochlandschnuppe Kokain konsumieren +kolumbianische Schnupf Kokain +komisch eigenartig, seltsam +Komma Penis +Komma lääre urinieren (Männer) +Komma schüttle urinieren +kommerze flirten +Kommissione mache einkaufen +kommissiönle einkaufen (franz. la commission) +Kompakte Joint +Kompanie-Chalb lustiger Soldat +Kompanie-Madratze Feldweibel +Kompanie-Muetter Feldweibel +Kompanie-Vatter Fourier +Kompi Computer +Kompi-Freak Informatiker:in +komplidingig kompliziert +Komplikaschter komplizierter Mensch +Komposchti alter Mann +Komposchti Politiker (Mitglied der Grünen) +Kompromischt Kompromiss (ein fauler Kompromiss) +Komunischte-Hueschte Menstruation +Komunischte-Schüssle Auto-Typen +Kondi Fahrtenbegleiter:in (Eisenbahn) +Kondi Tram-Chauffeuse/Tram-Chauffeur (Kondukteur) +Kondikteur Kontrolleur +Kondor Poulet +Kondor mit zähtuusig Flugstunde Poulet (zähes Poulet) +Kondüktöse Fahrtenbegleiter:in (Eisenbahn) (weibl.) +Kondüktöse – en Kondiktör Fahrtenbegleiter:in (Eisenbahn) +Konfetti Konfektionskleidung +Konfirmande-Bierli Bier (Panaché) +Konfirmande-Püürli Brüste (kleine Brüste) +Konflikti Bars, Restaurants, Clubs (Kon-Tiki) +Königin – en König Polizist:in +Konische Joint +Konischi suuge einen Joint rauchen +Konserve-Füsel Panzer-Grenadier +Konservebüchse Schützenpanzer +Konsi Einkauf (Coop, eh. Konsum) +Konsi Konservatorium +Kontakti Bars, Restaurants, Clubs (Kon-Tiki) +Kontrollörin – de Kontrollör Chef:in +Konus inezieh einen Joint rauchen +konzipiert kompliziert +Koonier Joint +Kork Brot +Kornis Cornflakes +Korpi Korporal +Korpi Korporal +Korpis Korporal +kosmisch eigenartig, seltsam +Kosovopolitan Medien (WochenZeitung WoZ) +Köter Hündchen +kotfrei DVD (codefree) +Kötschli Penis +Koutschäck-Stängel Lollipop (wegen des US-Serienhelden Kojak) +Krach Lärm +krakeele schreien, rufen +krass gut +krass sehr +Krasse Ferien ohne Rechnung Militärdienst (KFOR) +krasses Chassis für die weibliche Figur (attraktiv) +Krater im Gsicht Augenringe +Kraterlandschaft Cellulitis +kraule schwimmen (engl. crowl) +Kraut Deutsche:r (engl. a kraut, vermutlich von Sauerkraut) +krepiere sterben +Krethi und Plethi Menschenauflauf +Krimskrams alles Mögliche +Krise-Stab Oboe +Kritikaschter Journalist:in (Kritiker:in) +kritikaschtere kritisieren +Kroki Wegbeschreibung +Krokodil Eisenbahn (eh. SBB-Lokomotive) +Krokodil Schimpfwörter für Frauen (alt und bösartig) +Kröönig gut +Krösus vermögende Person, Snob +kruuse fahren (engl. to cruise) +KS Zigarette (em Kolleg sini) +KS – em Kolleg sini eine Zigarette schnorren (fiktive Marke) +Kubikmeter für die männliche Figur (klein und dick) +küblet müde, erschöpft +Kübliswil Orte (in Zürich) (Adliswil, wegen Ferdi Kübler) +Kuckuck zur Begrüssung +Küde Vornamen (männlich) (Kurt) +Kudi Vornamen (männlich) (Kurt) +kuhl gut (engl. cool) +kuhl sehr gut (engl. cool) +kühle gut (engl. cool) +kühle sehr gut (engl. cool) +kuitte sich trennen (engl. to quit) +kujoniere unterdrücken +Kuli Angestellte:r +Kuli Kugelschreiber +Kultur-Bändel Krawatte +Kulturbüütel Toilettentäschchen (Nécessaire) +Kulturgäld-Durchlauferhitzer kulturelle Institution +Kümmere dich um din eigete Dräck! Das geht dich nichts an! +kumood praktisch (franz. commode) +Kunscht-Dünger Aromat +kurble einen Joint drehen +kurble Sex haben +kurlig eigenartig, seltsam +Kurve chratze eine Kurve fahren +Kurve schniide eine Kurve fahren +Kurve-Öl Schnaps +Kurvepfiiferi – en Kurvepfiifer Tram-Chauffeuse/Tram-Chauffeur +Kusch di! Hau ab! +Küsche Küchenchef +Kusi Vornamen (männlich) (Markus) +Kuss Feldmütze +Küssi Kuss +Küüle Joint +Kyburger Winterthurer +La Kotz Sportartikel (Lacoste) +la Suisse primitive Kantone (Ur-Schweiz) +Laa d Hose abe, dänn gib i der en Ohrfiige! Du bist ein Idiot! +Laa di nüme blicke! Hau ab! +Laa mi elei! Hau ab! +Laa mi in Fride Hau ab! +Laa mi zfride! Hau ab! +Lääck! Das ist unglaublich! +laami Änte langsame Person +Laarifaari dine haa gleichgültig +läärs Stroh dresche reden, plaudern (Nonsens reden) +lääss gut +laat kaputt +laat abe es regnet (starker Regen) +Laatsche Füsse +Laatsche Schuhe +laatsche spazieren +Laatschi Fussgänger +Laatschi Schimpfwörter +Läberchleischter Drinks +Läbere beschäftige trinken, sich betrinken +Läbere wie-n-es Schiit Leber (Leberzirrhose) +Läbere-Schänder Alkohol +Läbere-Shampoo Bier +Läbesabschnitts-Partner Freund, Partner +Läbesmittel-Hueschte haa erbrechen +läbesmüed wahnsinnig +Läbeswasser Schnaps +läbige Dildo Penis +Läbis Einkauf (eh. LVZ, Lebensmittel-Verein Zürich) +Läbis Einkauf (Lebensmittelladen) +läbt scho fascht ungeniessbares Essen (Verfalldatum abgelaufen) +Lach-Sack weitere Typen (findet alles lustig) +Lache Pfütze +Läck Beck! Das ist unglaublich! +Läck Bobby! Das ist unglaublich! +Läck Bobby! Fluchwörter +Läck de Bättel jassen (schlechte Karten) +Läck du mir! Das ist unglaublich! +Läck du mir! Fluchwörter +Läck du mir! Respekt! +Läck Hode Du kannst mich mal! +Läck mer am Gnagi Fluchwörter +Läck mer am Gnagi! Das ist unglaublich! +Läck mer am Gnick! Du kannst mich mal! +Läck mer am Herz! Das ist unglaublich! +Läck mer am Herz! Fluchwörter +Läck mer am Nuggi Du kannst mich mal! +Läck mer am Schnägg Fluchwörter +Läck mer am Tschoope! Respekt! +Läck mer am Tschööpli! Fluchwörter +Läck mer am Tschütschi! Das ist unglaublich! +Läck mer doch am Arsch! Du kannst mich mal! +Läck mer doch am Tschööpli! Das ist unglaublich! +Läck mer doch am Tschööpli! Du kannst mich mal! +Läck mir doch am Arsch Das ist unglaublich! +Läck, Bobby! Respekt! +Läckerli Basler:in +Läckerli-Arbet arbeiten (leichte Arbeit) +Läckmer haa gleichgültig +Läckmer haa traurig +Läckmer usehäncke traurig +Läddi Kleiderschutz für Kinder +lade downloaden +Lade Geschäft, Firma +Lade Mund +Lade Tanzlokal (Club, Disco) +Lade abelaa wütend +Lade hebe schweigen +lädele einkaufen +Läder-Öpfel Prominente (national) (Elmar Ledergeber, Stadtpräsident) +Läder-Sohle Steak +Läder-Tschööpli Lederjacke +Läderhose Deutsche:r (Bayer:in) +Läderhose-Scania Militärische Fahrzeuge (Steyr) +Lädermaa City Zürcher Seefeld (wegen Immobilien-Tycoon Ledermann) +Läderrieme Gurt +Läderstrumpf Solarium (zu oft im Solarium) +Ladig Mengenmasse (viel) +Lafere Mund +lafere reden, plaudern +Laferi Schimpfwörter +Laferi Schwätzer:in +Laferi haa reden, plaudern +Laferibueb Schwätzer:in +laffe trinken, sich betrinken +Läffi Leutnant +Lager-Schade Herzinfarkt +lägge flackern +lägget kaputt +läggt kaputt +Lah mi zfride! Hau ab! +Lahm-Eier Berner:in +Lahmarsch langsame Person +Lahmarsch sii arbeiten (langsam) +lahme Saali Salami +lahme Socke Langweiler:in +Lähmgrueb-Strick Tanga +lahmi Änte Autofahrer:innen (langsam) +Lahmsüüder langsamer Autofahrer +Lahmsüüderi – en Lahmsüüder langsame Person +Laich abstreife Sex haben +läiche eine Erektion haben +läiche Sex haben +Laina Vornamen (weiblich) (Madelaina) +Lall-Chnebel Mobiltelefon (Handy) +Lall-Chopf Schwätzer:in +Lällä wäsche Zungenkuss +Lalli Penis +Lälli Zunge +Lama langsame Person +lamaasche trödeln +Lamaaschi langsame Person +Lambada-Express Eisenbahn (enge S-Bahn, in der man die Beine mit dem Gegenüber kreuzen muss) +Lämmeli Wurstabschnitt +Lampe Brüste +Lampe Kopf +Lampe aazünde das Licht einschalten +Lampe flicke trinken, sich betrinken +Lampe fülle trinken, sich betrinken +Lämpe haa streiten +lampe laa nachlassen +Lampe volle haa betrunken +Lämpe-Chatz Schimpfwörter für Frauen (streitlustig) +Lampe-Füll-Fäscht haa trinken, sich betrinken +Lämpe-Gei Streithahn +Lämpe-Stute Schimpfwörter für Frauen (streitlustig) +lampig welk +Lämpli fülle trinken, sich betrinken +Land-Ei Auswärtige:r (vom Lande) +Land-Ei Provinzbewohner:in +Landgummi Mofa +Landjacht Auto (grosses Auto aus Amerika) +Landjeger Polizist:in +Landjeger Spanner +Landjeger Würste (geräucherte Wurst) +Ländler Volksmusik +Landnüüt Leutnant +Landschaftsgärtnerin – en Landschaftsgärtner Bäuerin/Bauer +Landstriicheri – en Landstriicher Obdachlose:r +Landwirtschafts-Musig Volksmusik +Lang-Fing-Fang Polizist:in (ein Langfinger-Fänger) +Lang-Fing-Fang-Peng Polizist:in (Polizei-Pistole) +Lang-Fing-Fang-Wau Polizist:in (Polizeihund) +lange Lulatsch grosse Person +langet jetz! Hör auf! +langet! Jetzt reicht's! +Langfinger Dieb:in, Einbrecher:in +Langhaar-Taggel Links-Alternative:r +Langhals-Äntli Schwan +langi Leitig haa dumm +langi Stange grosse Person +langi Ziit haa ungeduldig erwarten +langs Eländ grosse Person +langs Gsicht Glatze +Langschwanz sii Sex haben +Länkstange-Biisseri – en Länkstange-Biisser Fahrrad-Fahrer:in +Länkstange-Göiferi Fahrrad-Fahrer:in +Länkzäpfli gelenkte Rakete +Länzgi Polizist:in (Landjäger) +Länzgi und Dieb Kinderspiele (Fangspiel) +Lappe 100 Franken +Lappe Führerausweis +Lappe Redensarten (Suchtmittel) (10 Gramm Gras) +Lappe vom Ass jassen (Wys) +läpperet sich zäme sich anhäufen +Lappi Schimpfwörter +Lappi – mach d Auge uuf! aufpassen +Lappschrott Computer (Laptop) +Larifaari Schlitzohr +Larifari-Büez arbeiten (leichte Arbeit) +Larifarizüüg Blödsinn +Larve Baby +Larve-Grind Basler:in +Laschi Prominente (national) (Baschi, Sänger) +Laschtcharre Lastwagen +Laschti Lastwagen +läse pflücken, ernten +Läset Trauben (Traubenernte) +Lass Luft ap! Beruhige dich! +Lass Luft ap! Beruhige dich! +Lass mi in Rueh Finger weg! +lässig gut +Lässig bliibe! Beruhige dich! +Lässigi – en Lässige Sympathikus +Latättere Lampe (Laterne) +Latex-Vreni Gummi-Puppe +Latrine WC +Lätsch Gesicht (trauriges Gesicht) +Lätsch Schlinge (bei Schuhen) +Lätsch mache traurig +Lätsch mache unglücklich, deprimiert +lätsche weinen +Lätschgrind Jammerlappen +Latte haa eine Erektion haben +Lätter Durchfall +lättere beschmutzen +lätteret abe es regnet +Lättli Holzscheit +Latüttere Lampe (Laterne) +lätz falsch +Latz Kleiderschutz für Kinder +Latz Mund +Latz Zunge +lätz Finger verbunde gescheitert +lätz gfäderete Siech Querulant:in +lätz gwicklet sii sich irren +Latz hebe schweigen +lätzgfäderete lützelhübsche Zwasli Schimpfwörter +Lätzli Kleiderschutz für Kinder +Lätzli Überzieher +Laub-Röschti Pommes-Chips +Laub-Sägeli Werkzeug (kleine Modellbau-Säge) +Laub-Wägg-Föhner Schwächling +Lauch für die männliche Figur (schwach) +Lauch Schwächling +Lauch hinderezieh eine Zigarette rauchen +Laueri Faulpelz +Laueri unzuverlässige Person +Lauf uusstosse onanieren (Männer) (von der Gewehr-Reinigung) +laufende Meter Kleinkind +läufig sexuell erregt +Laufpass gäh sich trennen +laufsch i en Fadegrade ine zuschlagen +Laufstall-Bsitzer Zuhälter +Lauft de Mocke? Wie geht's? +lauft der nöd devoo Das eilt nicht +Lauft s? Alles klar? +lauft wie am Schnüürli sehr gut +Lauge Kaffee +lausig schlecht +Lavabo Waschbecken +leer gloffe pleite +Leftenend Leutnant (engl.) +Legislative Freundin, Partnerin +Lego-Stei Auto-Typen +Lehmer Joint +lehre, wie de Charre lauft einarbeiten +Lehrgotte – en Lehrgötti Lehrerin +Lehrmeitli – en Lehrbueb Lernende:r +leidig ziemlich +Leine zieh sich verabschieden, weggehen +Leiterli-Spiil Brettspiele +Leiterwägeli Bollerwagen +Leni Vornamen (weiblich) (Marlene) +letscht Feufer us öpperem use hole ausnutzen, aushalten +letscht Hämp vom Füdli gäh verwöhnen +letscht Schnuuf mache sterben +letscht us sich usehole in der Nase bohren +letschti Hämp hät e kei Täsche Redensarten (Small Talk) (man kann nichts ins Grab mitnehmen) +Letzi Badeanstalt, Schwimmbad (Letzibad) +Letzi Gebäude, Lokalitäten (Stadion Letzigrund) +Leueberger Suecht Verzwiifelt Almose Schwerverkehrsabgabe LSVA (LSVA) +Levite läse tadeln, massregeln +Lexikon ideenreiche Person +lieb niedlich +lieb Gott hätt d Wält au nöd i eim Tag gmacht Das eilt nicht +liebe Siech gutmütige Person +lieber arm draa als Bei wegg pleite +lieber e Glatze als gar kei Haar Glatze +lieber es Ränzli vom Frässe als es Püggeli vom Schaffe arbeiten (unmotiviert) +Lieber gsund und riich als arm und chrank Redensarten (Geld) +Lieber gsund und riich, als chrank und arm! Gesundheit! +lieber langsam und guet als rasch und schluderig Das eilt nicht +lieber schwul als gar kei Gfühl Redensarten (Sexualität) +lieber über Nacht versumpfe als im Sumpf übernachte Betrunkene:r +Liebes-Kanal Scheide +Liebes-Spalte Scheide +Liebes-Trumpeete Penis +Liebes-Tunell Scheide +Liebesgrotte Scheide +Liebesgschwadder haa eine Affäre haben +Liebesöpfel Tomate +Liebessaft trinke Oralverkehr (bei Männern) +Liebesteppich Brusthaare +Liebi an und für sich onanieren (Männer) +Liebi chünde sich trennen +Liebi in Buuch hindere garettle Sex haben +Liebi mache Sex haben +Liebschaft pfläge eine Affäre haben +Liecht aamache das Licht einschalten +Liecht am Ändi vom Tunnel gseh der Stress lässt nach +Liecht mache das Licht einschalten +Liechterbaum Weihnachtsbaum +Liechtli Kosenamen +Liechtsignal Akne +Lied singe: «Ein Schiff wird kommen» urinieren +Liederli Chaot:in +Lift is Höch Joint (engl. high) +Liggi mache schlafen +Liiber 5 Franken +Liibli T-Shirt +Liiche-Finger Kalbsbratwurst +Liichefrässer Fleisch-Liebhaber:in +Liichemöhli Schlachtplatte +Liichewage Autos von Mercedes (Mercedes G-Klasse) +Liichewasser Mineralwasser +Liim Klebstoff +liime kleben +Liimsüder Kuschelrock +Liimsüüder langsame Person +Liimsüüder langsamer Autofahrer +Liintuech 1'000 Franken +liire reden, plaudern +Liiri Schimpfwörter (Schwätzer:in) +Liiri-Cheib Aufschneider:in, Angeber:in +Liiri-Cheib Schwätzer:in +liit ja grad am Wäg abgelegen (ironisch) +Lilly Vornamen (weiblich) (Lilian) +LiLö Lichterlöschen +Lilo Vornamen (weiblich) (Liselotte) +Limig Limmat +Limmet-Tiroleri – en Limmet-Tiroler Zürcher:in +Lindehügel Orte (in Zürich) (Lindenhof) +lingge betrügen +linggi Bazille Fiesling +linggs und es rächts Sugus Brustwarzen +Linie zieh Kokain konsumieren +Linse Augen +linse schauen +Linse-Tschockei Kamerafrau/Kameramann (von engl. jockey) +lisele flüstern +Lisi Schimpfwörter für Frauen (nicht ernstzunehmend) +Lisi Vornamen (weiblich) (Elisabeth) +Lisifüdli Angsthase +lisme stricken +Lismete Handarbeiten (Strickwaren) +Lismete stricken +Lismig Handarbeiten (Strickwaren) +Liz Vornamen (weiblich) (Elisabeth) +LMS – Lernen mit Schlaf militärische Abkürzungen +Loch Bruchbude +Loch Gefängnis +Loch ap bergab +Loch duruuf bergauf +Loch i de Bire haa dumm +Loch im Hosesack haa Geld ausgeben, bezahlen +Loch im Portmonnee haa Geld verschwenden +Loch im Ranze haa Hunger haben +Loch offe haa furzen +Loch uuf bergauf +Loch verdichte Sex haben +Loch zue, es ziet! Halt die Klappe! +loche schaufeln, graben +loche Sex haben +Locher Gewehr +löchle lästern +Löchli-Chnächt Fahrtenbegleiter:in (Eisenbahn) +Löchli-Chnächt Kontrolleur +Löchli-Knipser Kontrolleur +Locker easy! Beruhige dich! +lödele lottern +lödelet locker, lose +lödelig locker, lose +Lödeliwasser Kaffee +Löffel Ohren +Löffel Schwächling +Löffel abgää sterben +Löffel abgäh sterben +Löffeli ganz wenig +Löfti Leutnant +logo eine klare Sache +löhne Geld ausgeben, bezahlen +Löif Beine +Löif bewege tanzen +loitsche spazieren +Lokko unbeliebte Person +Löli Lernfahrer (wegen des Schildes "L") +Löliseich Blödsinn +Lolli Lollipop +Lollo Prominente (international) (Gina Lollobrigida, ital. Schauspielerin) +Lolo Vornamen (männlich) (Lorenz) +Long Street Orte (in Zürich) (Langstrasse) +Loobe Milchkuh +Loobe-Saft Milch +Lööli Führerausweis (Lernfahrausweis) +Lööli Schimpfwörter +Lööli-Goof schlecht erzogenes Kind +löölig locker, lose +Löölizüüg Blödsinn +Loosche Haus (von Loge) +Loosche Wohnung (Loge) +lööte Geld ausgeben, bezahlen +lööte trinken, sich betrinken +Lore Vornamen (männlich) (Lorenz) +Lore Vornamen (weiblich) (Eleonore) +Lore Vornamen (weiblich) (Laura) +Lose macht der meini Müeh! Hörst du nicht mehr gut? +loswiehere lachen +Lötcholbe Stumpen, Zigarre +Lotte Vornamen (weiblich) (Charlotte) +Lotterbäne Traktor (schrottreif) +Lotti Vornamen (weiblich) (Charlotte) +lottrig Matthäus Prominente (international) (Lothar Matthäus, eh. Fussballer) +Lover Freund, Partner (engl.) +Löwi Orte (in Zürich) (Löwenplatz) +Lu Vornamen (weiblich) (Lucia/Luzia) +Lucy Vornamen (weiblich) (Lucia) +Ludi Penis +Lueg für dini Schnudernase! Das geht dich nichts an! +Lueg-Ise Brille +Lueg, dass d Land günnsch! Hau ab! +Lueg, dass d Wind id Sägel überchunnsch! Hau ab! +luege schauen +luege, wie de Haas lauft zuschauen und abwarten +Lueged nöd ume – de Fux gaht ume Kinderspiele +lüegele schauen (missgünstig) +lueget scho de Karton füre Glatze (eine Glatze ist im Anzug) +Luegsch – zmahl fählsch! Halt die Klappe! +Lüffzger Leutnant +Luft ablaa furzen +Luft isch dusse müde, erschöpft +Luft verzaubere furzen +Luft würze furzen +Luft-Hüüler Autos von VW (VW Käfer) +lüfte furzen +Lufthüüler Autos (weitere) (mit Gebläsekühlung) +Luftibus unzuverlässige Person +lüftle Fahrrad (die Pneu-Ventile lösen) +Luftmixer Hubschrauber +Lüga Leuchtgamasche +lugg locker, lose +lugget der Stress lässt nach +lugget Glatze +lugget kaputt +Lüggu Vornamen (männlich) (Louis) +Lulatsch Schimpfwörter +Lulle Zigarette +lulo müde, erschöpft (lustlos) +Lümmel Joint +Lümmel Penis +Lümmel schlecht erzogenes Kind +Lümmel inehebe Sex haben +Lümmel-Tüüte Kondom +Lümmelschüür Orte (ausserhalb von Zürich) (Bundeshaus) +Lump Dieb:in, Einbrecher:in +Lumpazia vagabunda – en Lumpazius vagabundus Obdachlose:r +Lumpe Kleid (alt) +Lümpe Kleidung +Lumpe Zunge +Lumpe im Gsicht haa betrunken +Lumpe strecke urinieren (Männer) +Lumpe-Sammler Eisenbahn (letzter Zug vor Dienstschluss) +Lumpe-Seckel Schimpfwörter +Lumpehändler Einkauf (Boutique) +Lumpehund Fiesling +Lumpepack Schimpfwörter +Lumpepack Schimpfwörter +Lumpeseckel Fiesling +Lumpesiech Fiesling +Lumpetitti Kosenamen +Lumpetuech Kosenamen (scherzhaft, nach einem Kinderstreich) +Lumpezüüg fehlerhafte Ware +Lumpi Hündchen +Lumpi Schimpfwörter +Lümpli Kleid (unansehnlich) +Lümpli Rock +Lünette Brille (franz. les lunettes) +Lunge teere – demit de Chräbs nöd stürchlet eine Zigarette rauchen +Lunge-Brötli Zigarette +Lunge-Guetzli Zigarette +Lungebrötli Zigarette +Lungebrötli näh eine Zigarette rauchen +Lungeflügeli Lunge +Lunte Joint +Lunte paffe einen Joint rauchen +Lupf d Finke zum Abschied +Lupf de Gugelhupf Mach Platz! +Lupf s Füdli! Beeil dich! +Lupfdegugel Gugelhopf +lupfe heben +lupfe Sex haben +lupft mer de Huet explodieren +lupft mer de Huet Ich habe genug +Lupo Feldmütze +Lurch würge urinieren +lusch daneben, verwerflich (verdächtig, frz. louche) +Lusche Schwächling +Lüscher Augen +Luschi Vertrieb und Co AG Kleidermarken (Louis Vuitton) +Luscht-Chnoschpe Brüste +Luscht-Fätze Rock (Mini-Rock) +Luscht-Grotte Scheide +Luscht-Stübli Bordell +Luscht-Tunell Scheide +Luscht-Tüüte Kondom +Luscht-Wise Bett +Luschtchnöpfli Brustwarzen +Luschtgurke Penis +Luschtgurke lääre aufs WC gehen +Luschthobel Penis +luschtige Kafi Kaffee (mit Schnaps) +luschtige Köbi Scherzkeks +luschtigi Zigi Joint +luschtigi Zigi rauche einen Joint rauchen +Luschtmolch Spanner +Luschtwurzle Penis +Luschtwurzle uustrucke Sex haben +Luschtwurzle uustrucke urinieren (Männer) +Lutenend Leutnant (engl.) +Lutscher Schwächling +Lutschstellig iinäh in die Hocke gehen +Lutschzäpfe Nippel +Lütteri Durchfall +Lütteriwasser Apfelsaft +Lüücht-Turm grosse Person +Lüüchter Lampe +Lüüchtumenand Leutnant +Lüüge-Baronin – en Lüüge-Baron Lügner:in, Betrüger:in +Lüügi-Hund Lügner:in, Betrüger:in +Lüügi-Siech Lügner:in, Betrüger:in +Lüügimoore Schimpfwörter für Frauen (Lügnerin) +Luune wie drüü Tag Rägewätter sauer +Lüürli-Brüe Suppe (eine dünne Suppe) +Lüürlibrüe Kaffee (schwach) +Lüürlikafi Kaffee (schwach) +Lüürliwasser Leitungswasser +Luus-Salbi Honig (Honig mit Butter gemischt) +Luus-Tante Coiffeur/Coiffeuse +Luus-Teckel Hut +Luusbueb Schlitzohr +Luuscher Ohren +Luuser Lausemädchen/Lausbub +Luuser Versager:in, Verlierer:in (engl. loser) +Luusmeitli – d Luusbuebe Polizist:in +Luusmeitli – en Luusbueb schlecht erzogenes Kind +Luusmeitli-Porsche – en Luusbuebe-Porsche Autos von VW (Golf GTI) +Luuszapfe erschter Güeti schlecht erzogenes Kind +Lüüt mer doch aa! Ruf mich an! +Lüüte Clubs, Discos (Kaufleuten) +luuter nüt vergeblich +luuter Rügeli haa gepunktet +Lüüti Lautstärke +Lüüti Sonnerie, Türglocke +Lüüti-Spiili mache Sonnerie, Türglocke (klingeln und davonrennen) +Maal Narbe +Määrt Jahrmarkt +määrte feilschen +Mach chlinneri Schritt, es fischelet! Du bist ein Idiot! +Mach d Chnüü chrumm! Hau ab! +Mach d Fueter-Luke zue Halt die Klappe! +Mach d Schnurre zue - es zieht Du bist ein Idiot! +Mach d Stumpefabrik zue! Dein Reissverschluss ist offen! +Mach d Türe vo usse zue! Hau ab! +Mach de Chopf zue! Halt die Klappe! +Mach de Fisch! Hau ab! +Mach de Schnägg! Hau ab! +Mach de Teer heiss! Hau ab! +Mach di flockig! Hau ab! +Mach di flüssig! Hau ab! +Mach di nöd verruckt! Beruhige dich! +Mach di tünn! Hau ab! +Mach di uf d Socke! Beeil dich! +Mach di uf d Socke! Hau ab! +Mach di unsichtbar! Hau ab! +Mach di vom Acher! Hau ab! +Mach di z gumpe! Hau ab! +Mach din Hoselade zue – es fischelet! Dein Reissverschluss ist offen! +Mach din Seich sälber! Du kannst mich mal! +Mach e chli dalli! Beeil dich! +Mach e chli! Beeil dich! +Mach e Flüüge! Hau ab! +Mach e Fuuscht, wänn d e kei Hand häsch Redensarten (Arbeit) (etwas erreichen wollen, ohne über die notwendigen Mittel zu verfügen) +Mach e Uufnahm devoo, ich rüer der si dänn furt! Halt die Klappe! +Mach en Abgang! Hau ab! +Mach en Bildwächsel! Hau ab! +Mach en französische Abgang! Hau ab! +Mach en Strich i d Landschaft! Hau ab! +Mach es Chrüüz ad Büni! Das ist unglaublich! +Mach es Sätzli Redensarten (Small Talk) (wenn jemand sich undeutlich ausdrückt) +Mach fürschi! Beeil dich! +Mach kei Chilbi Hör auf mit dem Gejammer! +Mach kei Chilbi! Beruhige dich! +Mach kei Faxe Hör auf mit dem Gejammer! +Mach kei Fisimatänte Hör auf mit dem Gejammer! +Mach kei Ghetto! Beruhige dich! +Mach kei Kumedi Beruhige dich! +Mach kei Kumedi Hör auf mit dem Gejammer! +Mach kei Landschade zum Abschied +Mach kei Metti! Beruhige dich! +Mach kei Paranoia! Das nervt! +Mach kei Pflänz! Beruhige dich! +Mach kei Schnäggetänz! Beruhige dich! +Mach kei Sparglimänte Hör auf mit dem Gejammer! +Mach kei Tänz! Beruhige dich! +Mach kein Mais Hör auf mit dem Gejammer! +Mach kein Seich! Hör auf! +Mach kein Uufstand Hör auf mit dem Gejammer! +Mach kein Uufstand! Beruhige dich! +Mach kein Zwerge-Uufstand! Beruhige dich! +Mach kein Zwerge-Uufstand! Hör auf mit dem Gejammer! +Mach keis Büro uuf Hör auf mit dem Gejammer! +Mach keis Büro uuf! Beruhige dich! +Mach keis Cabaret Hör auf mit dem Gejammer! +Mach keis Fass uuf! Beruhige dich! +Mach keis Gstürm! Beruhige dich! +Mach keis Halihallo Hör auf mit dem Gejammer! +Mach keis Lamento Hör auf mit dem Gejammer! +Mach keis Lamento! Beruhige dich! +Mach keis Theater Hör auf mit dem Gejammer! +Mach keis Theater! Beruhige dich! +Mach mer en Klingel Ruf mich an! +Mach mi nöd andersch! Das nervt! +Mach mi nöd andersch! Hör auf! +Mach mi nöd madig! Hör auf! +Mach mi nöd müed! Hör auf! +Mach mi nöd ranzig! Hör auf! +Mach mi nöd schiissig! Hör auf! +Mach mi nöd schwach! Hör auf! +Mach mi nöd schwanger! Das nervt! +Mach mi nöd schwanger! Hör auf! +Mach mi nöd schwul! Das nervt! +Mach mi nöd staubig! Hau ab! +Mach öppe halblang! Mir reicht's! +Mach Platz, Kafisatz! Mach Platz! +Mach s eifach – dänn häsch Rueh Hör auf mit dem Gejammer! +Mach s guet – lupf de Huet zum Abschied +Mach s Muul zue, s zieht! Halt die Klappe! +Mach Schluss, Fidibuss! Hör auf! +mach schön Bitti-Bätti bitte (bei Kleinkindern) +Mach, dass d furt chunnsch! Hau ab! +Mach, dass d mer us de Auge chunnsch! Hau ab! +Mach's guet! zum Abschied +mache Sex haben +Mached mer de Fisch? Gehen wir nach Hause? +Mached mer de Fisch? Gehen wir nach Hause? +Mached mer de Haifisch? Gehen wir nach Hause? (Symbiose aus "Hai" und "hei") +Mached mer e Flüüge? Gehen wir nach Hause? +Mached mer e Schwalbe? Gehen wir nach Hause? +Mached mer en Abflug? Gehen wir nach Hause? +Mached mer en Abgang? Gehen wir nach Hause? +Mached mer es Malergschäft uuf? Du striichsch und ich laane tröchne! Flächenmaler:in +Macho Penis +Macho-Container Offroader (SUV) +Machsch de erscht WK? Redensarten (Militär) (wenn jemand im WK etwas nicht weiss) +Machsch en Grind wie-n-e suuri Gurke sauer +Macht Fernbedienung +macht e miisi Schnurre schlecht +macht e schlächti Frässi schlecht (macht einen schlechten Eindruck) +macht mi andersch verlockend +Macianeri – en Macianer Computer (Apple-User:in) +Macintoshiteri – en Macintoshiter Computer (Apple-User:in) +Macker Macho +Madame Scheide +Mäde Vornamen (männlich) (Matthias) +madefertig abgerackert +Madesack Schimpfwörter +Madi Vornamen (weiblich) (Madeleine) +madig sauer +Madlänerli Gebäck (Schmelzbrötchen) +Mädli Baby +Madratze beschwääre Sex haben +Mafia-Chueche Pizza +Mafia-Schlitte Auto-Typen +Mafia-Turte Pizza +Mafia-Wäje Pizza +Mafiosi Italiener:in +mag ine es geht so +Magazin abspitze Munition laden +Magazin lääre Samenerguss +Mäge Vornamen (männlich) (Markus, Marco) +Mage fülle essen +Mage haa frech +Mage-Fahrplan Speisekarte +Mage-Trööschter Schnaps +magere Haagge mager +Mägerli-Muck mager +Mägerlimuck für die männliche Figur (klein und hager) +Mägerlimuckli zartes Kind +Magewasser Schnaps +magge nutti Macht nichts (Pseudo-Ital.) +mäggelet Es stinkt +mäggelet Geruch in einem ungelüfteten Zimmer +Maggina Auto (ital. la macchina) +Maggina Motor (ital. macchina) +Mägglerin – en Mäggler Computer (Apple-User:in) +magisch Apparat Penis +magma-fett gut +mahle essen (eine Mahlzeit einnehmen) +mahle kauen +Mählsack dicke Person +Mählsüüderi – en Mählsüüder langsame Person +Mählwurm Bäcker:in +Mählwurm Kokain-Konsument +Mählwurm öffentliche Verkehrsmittel (SBB-Neigezug) +Mähne Haare (lange Haare) +Mäieriisli Maiglöckchen +maile ein E-Mail schicken +Mais haa streiten +Maisgörps Polenta +Maispflutte Mais +Maispfluute Polenta +mäje mit Seriefeuer schiessen +Make-Up-Magnet Schimpfwörter für Frauen (zu stark geschminkt) +mal für chlini Königstigerli müese aufs WC gehen +mal für chlini Meitli oder Buebe gah aufs WC gehen +Mal-Chaschte weitere Typen (stark geschminkt) +mälche urinieren +Maler im Chäller haa Menstruation +maloche arbeiten +Malstund näh sich schminken +Malz-Iilauf Bier +Mami Reinigungskraft +Mami-Panzer Offroader (SUV) +Mamichindli Schwächling +Mamititti Kinder (anhänglich) +Mammatitti zartes Kind +mämmele trinken, sich betrinken (an der Schnapsflasche nippen) +Mammonsekte-Aalegi Anzug +Mampf-Planke Esstisch +mampfe essen +mängisch manchmal +mangsche essen (franz. manger) +Manhattan Orte (in Zürich) (Bullinger-Hochhäuser) +Mäni Vornamen (männlich) (Manuel) +Mäni Vornamen (männlich) (Marcel) +Maniere biibringe tadeln, massregeln +Manne-Balett Männerriege +Manne-Intriige Männerriege +Männli chlopfe Begrüssung von Vorgesetzten +Männli mache Begrüssung von Vorgesetzten +Männli mache Wheeley (Fahrt auf Hinterrad) +Männlichkeit Penis +Mannsgöggel Spielfigur (bei Brettspielen) +Manöggel Spielfigur (bei Brettspielen) +Manöggeli für die männliche Figur (klein und schmächtig) +Manöggeli haa betrunken +Mansarde Dachboden +mänschelet zwischenmenschliche Probleme +Mäntigswaar fehlerhafte Ware +Manu Vornamen (weiblich) (Manuela) +Manuela bumse onanieren (Männer) (von manuell) +Märbeli Murmel +Margriitli Gänseblümchen +Maria Flüg-uuf Mariä Himmelfahrt +Maria Flüüguus Feiertage (Mariä Himmelfahrt) +Maria Gump-id-Luft Mariä Himmelfahrt +Maria im Gfängnis Feiertage (Mariä Empfängnis) +Maria-hülf-Motörli Velosolex +Maria-Obsi Mariä Himmelfahrt +Maria-sky-rocking Mariä Himmelfahrt +Maria-Take-Off Mariä Himmelfahrt +Maria-Uufschuss Mariä Himmelfahrt +Marilu Vornamen (weiblich) (Marie-Louise) +Markefuzzi Jetsetter:in +Märli verzapfe lügen +Märlitante Journalist:in +Märlitante Schimpfwörter für Frauen (Lügnerin) +Marmeli Murmel +Marroni-Röschter Italiener:in +Marroni-Spaghetti Vermicelles +Marsch blaase tadeln, massregeln +Marschrichtig zeige tadeln, massregeln +Märtgass-Ruech Winterthurer +Mary Jane Marihuana (engl.) +Mary-fly-away Mariä Himmelfahrt +Marzilli-Tiroler Berner:in +Maschäng Gegenstand (franz. la machine) +Maschine-Tokter Ingenieur:in +Maschinegwehr-Nippel Brustwarzen (bei kaltem Wetter) +Maschinli Zahnspange +Maschtchorb Attika-Wohnung +Maschthalle Gebäude, Lokalitäten (ETH-Mensa) +maschtig schwere Kost +Mäse Vornamen (männlich) (Marcel) +Masochischt Fahrrad-Fahrer:in (Rennvelo-Fahrer) +Massaasch für Holzbei Sinnlose Tätigkeit +Masseplauderi Schwätzer:in +Mässerschläckeri – en Mässerschläcker Chirurg:in +massvoll d Kehle befüechte trinken, sich betrinken +masturwifle onanieren (Männer) +Mat-Figg Kontrolle der persönlichen Ausrüstung +Mat-Lieseli Soldat bei der Materialausgabe +Mat-Ueli Soldat bei der Materialausgabe +Matadorin – en Matador Spanier:in +Mathi Schule (Unterricht) (Mathematik-Unterricht) +Mathis Vornamen (männlich) (Matthias) +Matschbire Kokain-Konsument +Matte flaches Wiesengelände +Matte Haare +Matte uf em Tötz Haare (Rasta-Frisur) +mattig gut +Mattschiibe haa verrückt +Mätz Schimpfwörter für Frauen +mause tot +Mausebärchen Kosenamen +mausetot tot +Max Penis +maximal sehr gut +Maximum Krönung, Höhepunkt +Me cha halt nöd us jedem Schiit en Orgelpfiife mache dumm +Me chönnt ä meine Hör auf mit dem Gejammer! +Me chönnt meine, du hegsch s Rad erfunde! bluffen +me chönnt meine, öpper heg e Rageete im Füdli flüchten, davonrennen +me gseht ihre bis is Heuried ufe Scheide (Schamhaar ist sichtbar) +Me gseht sich! zum Abschied +me munklet anscheinend +Me wird au nöd jünger Redensarten (Small Talk) +Mech Ärztin/Arzt +meche anbaggern, aufreissen +meche Sex haben +meckere jammern, sich beklagen +Medie-Fuzzi Journalist:in +Medis Medikamente +Medz Ärztin/Arzt +Meerssi! Das ist unglaublich! (franz. merci) +Meertrübeli Johannisbeere +mega gut +mega sehr gut +mega tschüss betrunken +mega- sehr +Mega-Fläsch montiere betrunken (engl. flash) +mega-giga- sehr +Mega-Tonne 1'000'000 Franken +mega-veruckt sauer +megamässig sehr viel +Megaphon Auspuff +Megge Vornamen (männlich) (Max) +Meh-Besseri – en Meh-Bessere Jetsetter:in +Mehbesseri Frau aus gutem Hause +Mehbesseri – en Mehbessere vermögende Person, Snob +Meie-Sääss Alphütte +Meije Blumenstrauss +Meikro-Schrott Win-Dose Computer (Windows-User:in) (Microsoft Windows) +Meinig pfiiffe tadeln, massregeln +Meinsch dich ernscht? Spinnst du? +Meinsch? sicher nicht +Meis Lärm +Meischter zeige mutig +Meischteri – de Meischter Chef:in +Meischteri – de Meischter Chef:in/Vorgesetzte:r +Meitli oder d Buebe in Blau Polizist:in +Meitschi-Bei Gebäck (u-förmig) +Meli Vornamen (weiblich) (Melanie) +Melone Brüste (grosse Brüste) +Memme Angsthase +Memme Schwächling +memmig ängstlich +Mens Menstruation +Mens-Bunker Berliner +mer chan s au z guet welle mache übereifrig +mer gseht ihn nümm i de Migros tot +Mer sött öpperem linggs und rächts … en Foifliber in Hosesack trucke Redensarten (Small Talk) (wenn jemand ein Lob erwartet) +Mergeli dünne Person (ausgemergelt) +Merssi, Frau Sandmeier! Das ist unglaublich! (franz. merci) +meschugge dumm +meschugge verrückt +Metermass Penis +Mettwurscht öffentliche Verkehrsmittel (altes VBZ-Logo) +Mettwurscht mit Laufwarze Dackel +Metzgeri – en Metzger Chirurg:in +Metzgermässer haut nöd guet – de Metzger isch en Toore-Bueb! Redensarten (Arbeit) +Metzgete Schlachtplatte +Meuchelpuffer Pistole +mexikanisch entlade mit Seriefeuer schiessen +Mi Gotts tüüri Seel! Das ist unglaublich! +Mia Vornamen (weiblich) (Maria) +Miau Katze +Mich biisst de Pleitegeier! Das ist unglaublich! +Mich haut s us de Socke Das ist unglaublich! +Mich haut s vom Stüehli Das ist unglaublich! +Mich teeret s! Das ist unglaublich! +mich tschuderet s Angst haben +Mich verjätet s! Das nervt! +mich verjättet s lachen +mich verputzt s lachen +mich vertätscht s lachen +Michelin-Männli dicker Bauch +Michi Versager:in, Verlierer:in +Michi Vornamen (männlich) (Michael) +Micro-Softie Computer (Windows-User:in) +Miesch Geld +Miet-Bull Securitas-Mitarbeiter:in +Mietzeis go uusnütze nach Hause gehen +Migi Einkauf (Migros) +Migi Firmen (Migros) +Migräne-Blääch Helm +Migros-Ferrari Autos von Toyota (Toyota Celica) +Migros-Gäggel Feuerwerk (billiges Feuerwerk) +Migros-Soft-Heini Computer (Windows-User:in) +Migros-Visum Orte (in Zürich) (Standesamt) +Migrowälle Mikrowellen-Ofen (von Migros) +miiffe stinken +miifft Es stinkt +Miini Freundin, Partnerin +miis bis soumiis niederträchtig +miis bis soumiis schlecht +miisi Hündin – en miise Hund Fiesling +Miitze Katze +Mikro-Mü ganz wenig +Milbe-Paradiis Bett +Milch-Bränte grosse Milchkanne (landw.) +Milch-Chueh Angestellte:r +Milch-Disco Clubs, Discos (Toni-Molkerei) +Milch-Stall Büstenhalter +Milch-Stüehli Stuhl (Dreibeiner) +Milchbar Brüste +Milchfabrik Brüste +Milchfabrik Brüste +Milchfläsche Brüste +Milchgsicht Angsthase +Milchgsicht Teenager:in +Milchlade Brüste +Milchpriis-Jubelröhre Alphorn +Militärchopf hochrangiger Offizier +Milky Way Teenager:in (engl.) +Mill 1'000 Franken +Millimetergvögel Feinarbeit +Millimeterlete Feinarbeit +Millionärs-Chilbi Sechseläuten +Millionärs-Schnuppe haa Kokain konsumieren +Millionärsfasnacht Sechseläuten +millione- sehr +Millione-Hoger Orte (in Zürich) (Zürichberg) +Millonäre-Wiese Gebäude, Lokalitäten (Stadion Hardturm) +Mimi Angsthase +mimonschter- sehr +Mimöösli empfindliche Person +Mimose Schwächling +Mimöseli zartes Kind +Mimösli Angsthase +min Chessel süüdet Kopfschmerzen +min letschte Wile – e Frau mit Brüle Brillenträger:in +min Liebschte Freund, Partner +min Mage chnurrt Hunger haben +min Schniider isch en Holländer – er heisst Van der Stange Konfektionskleidung +Mine-Spicker Minenwerfer-Soldat +mini Eier explodiered urinieren +mini Eier schliifed am Bode müde, erschöpft +mini Läbesversicherig Verwandte (reich) +mini Liebschti Freundin, Partnerin +mini Schälle-Garage Freundin, Partnerin +mini vier Redli Auto +mini- ganz wenig +Mini-Leu Katze +Mini-Mii Penis +Mini-Mü ganz wenig +mir brummt d Bimbe Kopfschmerzen +Mir butzt s d Scheu-Klappe! Das ist unglaublich! +Mir chocht s Arschwasser Es eilt +Mir gaht s Mässer im Hosesack uuf Das ist unglaublich! +Mir gitt s öppis! Das nervt! +Mir gnüegelet s Ich habe genug +mir händ s gschlage gewinnen +mir händ s möge gewinnen +Mir hät s abglöscht Ich habe genug +mir hät s de Ärmel inegno vollständig +mir hät's de Ärmel inegnoo sich verlieben +Mir isch de Lade abe Ich habe genug +mir isch fascht s Herz stah blibe überrascht, verdutzt +mir isch s Herz id Hose gheit sich verlieben +Mir langet s Ich habe genug +Mir langet s! Mir reicht's! +mir löscht s ap schlecht +mir mached's geteilt dur zwei die Zeche teilen +mir platzt d Blaatere Kopfschmerzen +mir sind bi de Lüüt jassen (Punktegleichstand) +mir sind über em Berg jassen (halber Punktestand beim Schieber) +Mirage Eisenbahn (weinroter, rauchender eh. Triebzug Goldküste, RABDe12/12) +Mirage öffentliche Verkehrsmittel (altes Züri-Tram) +Mirj-tschääm Vornamen (weiblich) (Mirjam) +mis Indianer-Ehrewort Abgemacht! (bei Kindern) +mis Naturgwand Haut +mis Schnuggiputzi Freundin, Partnerin +Misch Unterlage für Haschmischung +Mischi Unterlage für Haschmischung +mischle Aufträge unter der Hand vergeben +mischle Kartenspiele (Karten mischen) +Mischmasch Unordnung, Chaos +Mischpult Unterlage für Haschmischung +Mischt schlecht +Mischt ablaa einen Fehler machen +Mischt bout haa gescheitert +Mischt isch gfüehrt Redensarten (Arbeit) (wir haben's geschafft) +Mischt-Chratzeri – en Mischt-Chratzer Bäuerin/Bauer +Mischt-Chratzerli Poulet (kleines Poulet) +Mischt-Trämpeler Volksmusik +Mischtarbeiteri – en Mischtarbeiter Mitarbeiter:in +Mischtchäfer Verbrecher:in +Mischtchratzerli Huhn +mischtfuul faul, träge +Mischtgable-Profässorin – en Mischtgable-Profässer Bäuerin/Bauer +Mischtsetter Intrigant:in +Mister Hanky schlürfe einen Joint rauchen +mit Chind und Chegel Kinder (mit der ganzen Familie) +Mit de Auge luege! berühren, befingern (Nicht berühren!) +mit de Geissle chlöpfe drängen +mit de grosse Chelle aarichte bluffen +mit de Hand büchse onanieren (Männer) +mit de Hirnzälle Gassi gah denken +mit de Militärbadhose bade schwimmen (nacktbaden) +mit de Pellerine go tusche Kondom +mit de Schuufle userüehre Geld ausgeben, bezahlen +mit de Schuufle userüehre Geld verschwenden +mit de Stimm hin- und härkippe jodeln +mit de Wimpere zwinkere flirten +mit de Zäh chlappere frieren +mit dem chasch guet fahre umgänglich +mit dem chasch mi jage schlecht +mit dem isch guet Chriesi ässe umgänglich +mit dem locksch kein Floh hinder em Ofe füre schlecht +mit der Chueh um s Dorf kompliziert +Mit dere oder dem häsch s Gschänk Redensarten (Small Talk) (mit dieser Person gibt es Probleme) +Mit dir isch hüt nöd guet Chriesi ässe sauer +mit em Chopf dur d Wand übereifrig +mit em Chopf dur d Wand gah erzwingen +mit em falsche Fuess ufgstande sauer +mit em Gartehaag winke Redensarten (Small Talk) (wenn jemand begriffsstutzig ist) +mit em Göppel umehüüle fahren +mit em Grind dur d Wand gah stur +mit em Grind dur d Wand gah unbedingt +mit em Hund go laufe urinieren +mit em letschte Zah am Limit +mit em lingge Bei uufstah unglücklich, deprimiert +mit em Porzellan-Bus fahre erbrechen +mit em rote Maa d Höhli erforsche Sex haben +mit em Schnällzug dur d Chinderstube schlecht erzogenes Kind +mit em secknasse Pflotschel über d Lätz abefuttere onanieren (Männer) +mit em secknasse Pflotschel über d Lätz abefuttere Samenerguss +mit em Würschtli es Sprützfährtli mache Sex haben +Mit Gwalt chasch au enere Chueh de Schwanz uusriisse Redensarten (Small Talk) (bei übermässiger Gewaltanwendung) +mit Gwalt fürschi stoosse drängen +mit Honig voll schmiere verwöhnen +mit Huut und Haar vollständig +mit Kanone uf Spatze schüüsse übereifrig +mit Kanone uf Spatze schüüsse zu weit gehen +mit Katalysator Sex haben +mit lääre Hände daastah pleite +mit Linggs mache bewältigen, meistern +mit öpperem chan mer go Ross stähle Sympathikus +mit öpperem gah eine Beziehung haben +mit öpperem karissiere anbaggern, aufreissen (franz. caresser) +mit öpperem mütze Sex haben +mit öppertem vercheibe streiten +mit schwärem Gschütz iifahre tadeln, massregeln +mit Stumpf und Stiil vollständig +mit Vitamin B Aufträge unter der Hand vergeben +mit volle Händ uusgäh Geld ausgeben, bezahlen +mit Zeushündli spile mit Streichhölzern spielen +mit Zündhölzli umegischple mit Streichhölzern spielen +Mitässer Akne +Mitässer tusche schmusen +mitenand go DVD luege Sex haben +mitgah laa klauen, stehlen +mitlaufe laa klauen, stehlen +Mittel-Bei Penis +Mitteli Medikamente +Mittelständleri – en Mittelständler Normalverbraucher:in +mittere mit Seriefeuer schiessen (frz. mitrailler) +Mitternachts-Keilhose Unterhose +Mob Normalverbraucher:in +Möbel Brüste +Moccasins Cabriolet Flip-Flops +Mocheete rauche einen Joint rauchen +Möchtegern Aufschneider:in, Angeber:in +Möchtegern-Butter Margarine +Möchtegern-Krass Securitas-Mitarbeiter:in +Möchtegern-Passat Autos von VW (VW Vento) +Möchtegern-Tennis Tischtennis +Möchtegern-Tiger Katze +Möchtegern-Wolf Hund +mock pleite +Möcke Brüste +Mocke dicke Person +Mocke für die männliche Figur (dick) +Mocke grosses Stück +Mocke Motor +Mocke Staub Nussgipfel +Möckli dicke Person +Möckli Kosenamen (mollige Frau) +Möckli goisse erbrechen +Möckli hueschte erbrechen +Möckli lache erbrechen +Mödeli Butter (Portion Butter) +modere stinken +moderni Gehhilf Auto-Typen +Modi Berner:in (Berndeutsch für Mädchen) +Möff mürrische Person +Möfi Mofa +mogle betrügen +Mohr ablade aufs WC gehen +Moin zur Begrüssung (aus dem Bayrischen) +Moin zur Begrüssung (aus dem Norddeutschen) +Möitsch Menschenauflauf +Molch tröschte urinieren (Männer) +Möli Kopf +Molli dicke Person +möltsch Apfel (mit dunklen Druckstellen) +Mombasa-Express öffentliche Verkehrsmittel (Bus 32) +Momoll! Respekt! +Mondchalb Schimpfwörter +Mondlandschaft im Gsicht Akne +Möne Vornamen (weiblich) (Monika) +Moneete Geld +Moni Geld (engl. money) +Moni Vornamen (weiblich) (Monika) +monschtrös sehr +Montere Lukarne (Dachfenster) +montiere einen Joint drehen +montiere Sex haben +Montur Anzug +Mönü Mahlzeit (franz. menu) +Mönü Speisekarte (franz.) +Mönü Eis Vodka (Vodka Red Bull) +Mönü wächsle erbrechen +Möödeli Angewohnheit +Mööf Mofa +möögge schreien, rufen +möögge wie-n-e gstochni Sou schreien, rufen +mööggele malen +moore klecksen +Moore Schwein (Mutterschwein) +Moorerei Schwein +Moorerei Unordnung, Chaos +Moorewösch Waschbecken (nicht sauber waschen) +Moos Geld +Moos Haare +Mööse Scheide +Mööse-Kafi Kaffee (Café La Semeuse) +Mopfer Mobbing-Opfer +Möps Brüste +mopst eim sich ärgern +Moraalisch haa unglücklich, deprimiert +mords- sehr +Mords-Cheib grosses Stück +mordsmäässig sehr +Morelli haa traurig +Morelli haa unglücklich, deprimiert +Mores lehre tadeln, massregeln +morgeblind verschlafen, übernächtigt +Morgestund hät Stuehl im Mund Mundgeruch +morixle umbringen +Morn gseht alles andersch uus! Beruhige dich! +morn isch au no en Tag Das eilt nicht +morxe pfuschen +Moscht Apfelsaft +Moscht Benzin +Moscht hole Benzin tanken +Moscht-Inder Thurgauer:in +Moscht-Indie Orte (ausserhalb von Zürich) (Thurgau) +Moschtbröckli Würste (Spezialität aus dem Appenzellerland) +Moschtbröckli-Gumpete Pferde-Springturnier +Moschtbröckli-Schnitzerin – en Moschtbröckli-Schnitzer Ostschweizer:in +Moschtchopf Kleinkind +moschte Benzin tanken +Moschtsüffel Auto (hoher Benzinverbrauch) +Mose Fleck +Möse mache beschmutzen +Möse mache klecksen +Moses-Pnöö Sandalen +Moswei Mäusebussard +Mot-Off Motorfahrer-Offizier +Motor Herz +Motor abwürge Fehlstart +Motor chotzet Motor (stottert) +motorisierte Fluumer Dackel +motorisierte Ochsner-Chübel Auto +motorisierti Geh-Hilf Auto +Motorschade Schlaganfall +Motte Kleinkind +motte stinken +mötte stuhlen +möttelet Es stinkt +mötteret Es stinkt +mottet Es stinkt +Motti Motorfahrer +Mötti mache eine Zigarette rauchen +Motz-Cheib Querulant:in +Motz-Griite Querulant:in +Motz-Tüte Querulant:in +Motzchopf mürrische Person +motze jammern, sich beklagen +motze kritisieren +motze lästern +motze schimpfen, beschimpfen +Motzer Querulant:in +Moubail Mobiltelefon (Handy) (engl. mobile) +Möve Kopf +Mü ganz wenig (aus der Mathematik) +Mü Mengenmasse (so gut wie nichts) +Mu-Schi Einkaufstasche mit Rädern (Mutterschiff) +muchle arbeiten +muchle kriechen +Muchle Tasse (grosse Tasse) +Muchli Angestellte:r +Mucho Maurer:in +Muckis Muskeln +Mückli Kosenamen +Mucks Laut (leise Äusserung) +muddere kränkeln +muderig kränklich +muderig müde, erschöpft (fast krank) +mudrig unglücklich, deprimiert +müede erzwingen +müedi Büez arbeiten (mühselige Arbeit) +müedi Tablette Schimpfwörter +müehsam anstrengend +Müemer s gääle Wägeli cho laa? Spinnst du? +Müend mer em gääle Wägeli aalüüte? wahnsinnig +Mues i di stosse oder zieh? langsame Person +Muesch d Rännfinke aalegge! Beeil dich! +Muesch di nöd ergelschtere! Beruhige dich! +Muesch es nöd zämeläse – am Aabig wird gwüscht Redensarten (Small Talk) (wenn einem im Restaurant Geld auf den Boden fällt) +Muesch es nur säge, wänn d eini wotsch! Pass auf, sonst knallt's! +Muesch mir nöd so an Charre fahre! Beruhige dich! +Muesch nöd chöne jasse – muesch nur chöne schriibe jassen +Muesch nöd meine, segsch es Chrüüzworträtsel, nume will du a jedem Egge es Fragezeiche häsch! Du bist ein Idiot! +Muesch nur gah! Hau ab! +Muesch nüüt la gheje, es wachst nüüt Redensarten (Small Talk) (wenn jemand etwas fallen lässt) +muesch sälber luege, wie'd wiiterchunsch die Unterstützung verweigern +müese blaase polizeilicher Alkoholtest (Atemprobe) +Muess di chlopfe, dass d gahsch? Hau ab! +müesse go hocke ins Gefängnis gehen +müesse Servila- und Herdöpfelhüüt ässe arm +Müetsch Eltern (Mutter) +Muetter Freundin, Partnerin +muff sauer +muff wütend +Muffe After +Muffe Auspuff +muffe stinken +Muffe ruesse urinieren (Männer) +Muffe-Güüder Apfelwein +Muffe-Sauna Auto-Zubehör (Sitzheizung) +Muffebränner scharf +müffele stinken +müffelet Es stinkt +müffelet Geruch in einem ungelüfteten Zimmer +Muffesuuse haa Angst haben +mufft Es stinkt +Mugge eine schlechte Idee +mugge klauen, stehlen +Mugge Milchkuh +Mugge-Furz ganz wenig +Mugge-Seckeli ganz wenig +Muggefurz Blödsinn +Müggel Kleinkind +Muggestich Brüste (sehr kleine Brüste) +Muggi Kosenamen +Müggli Mücke +muggse reden, plaudern (leise) +Mugle – halb Mänsch, halb Chugle dicke Person +Muh-Barrack Milchkuh (Kuhstall) +Muh-Saft Milch +Mühli Auto +Müll schlecht +Müllerblüemli Gänseblümchen +Mülleri Angestellte:r +multi- sehr +Multischizofreene Alleskönner:in +Mumie alter Mann +Mumm haa mutig +mümmele kauen +mümmele murmeln, brummeln +Mumpf Mumps +Mümpfel ganz wenig +Mümpfeli ganz wenig +Mumpitz Blödsinn +Mumu Scheide +Mun-Schnägg Munitionstransportfahrzeug der Artillerie +Mundi Mundgeruch +munggele murmeln, brummeln +Munggi alter Mann +Muni Soldat bei der Materialausgabe (bei der Munitionsausgabe) +Muni Zuchtstier +Muni-Chammere Schlafzimmer +müntschele schmusen (aus dem Bernischen) +Müntschi küssen (aus dem Berndeutschen) +Muntschli Baby +Münz Geld +Münz Kleingeld +Mupf gäh stossen, schubsen +müpfe stossen, schubsen +Muppet-Show Stadtpolizei Zürich +Muratori Maurer:in (ital.) +murggse arbeiten +Murmeli Kosenamen +Murmle Hoden +Mürpse Kopf +Müscheli Scheide +Muschi Angsthase +Muschi Scheide +Muschi befingerle onanieren (Männer) +Muschi läcke Oralverkehr (bei Männern) +Muschi-Madratze Slip-Einlage +Musig mache musizieren +Musigspunte Tanzlokal (Club, Disco) +Musigtämpel Tanzlokal (Club, Disco) +Muskel Motor +Muskel-René Bodybuilder +Müsli Kosenamen +Musueli Kleiderschutz für Kinder +Mutsch-Chopf mache sauer +Mutsch-Grind mache sauer +Mutschge Geld +Mutschli dicke Person +Mutschligrind mürrische Person +Mutz Feldmütze +Mütz-Tüüte Schlafsack +Mutze Berner:in +mütze schlafen +Mutzeli Sympathikus +Mützli zieh schlafen +muuchle knien +Muuh-Glogge Kuhglocken +Muul Mund +Muul i Betrieb näh ohni s Hirni iischalte reden, plaudern +Muul i Bewegig setze reden, plaudern +Muul meh zum Stopfe Baby +muule jammern, sich beklagen +Muulegge la hange unglücklich, deprimiert +Muulschälle Ohrfeige +Muulwurf Tiefbau-Ingenieur:in +Muurblüemli Mauerblümchen +Muurer-Bible Medien (Blick) +Muurer-Chueche Bier +Muurer-Décolleté Po-Ansatz bei zu knappen Hosen +Müürli küsse Unfall +Müüs Geld +Muus Kosenamen +Müüs Muskeln +Müüs gönd go lose – de Pfarrer macht id Hose! Halt die Klappe! +Muus-Schupferi – en Muus-Schupfer Informatiker:in +muusarm arm +muuse klauen, stehlen +Müüsli Maus +Müüsli sueche umfallen +Müüslibletter Salbei +Müüslibletter Salbeiblätter im Ausbackteig +Müüslichüechli Salbeiblätter im Ausbackteig +Müüslifrässer Katze +muuve tanzen (engl. to move) +na-dis-na fortzu +naadisnaa allmählich +näägge jammern, sich beklagen +Nääggi Querulant:in +Naas-Tuech Taschentuch +näb de Schue schlecht +näb de Schueh daneben, verwerflich +Näbedgrüüsch haa eine Affäre haben +Näbel-Chräje Schimpfwörter für Frauen +Näbelchräje Sängerin +Näbelhorn Tuba +näbetuse frässe Seitensprung +näblig Wetter (neblig) +nach öpper anderem sim Muul rede hofieren, schmeicheln +nach Strich und Fade uusnutze ausnutzen, aushalten +Nach zwei Fläsche Bier häsch gässe – muesch aber no es dritts haa, demit d trunke häsch Bier +nachane bald +nachane danach +nachane im Nachhinein +nache choo bewältigen, meistern +nachetane danach +nächscht Mal rüer ich dir en Stei in Garte Redensarten (Small Talk) (Kompensation für einen Gefallen) +nächscht zall ich die Zeche teilen +Nachschuss-Prämie Alimente +Nachtprogramm us Bettehuuse lose schlafen +Nachttischschublade-Hüeterli Pistole +Nachwuchs Kinder +näckig nackt +Nackt-Bar Strip-Club +nacktig nackt +nacktig Scheiche Bars, Restaurants, Clubs (Barfüsser) +Nadle Mobiltelefon (Handy) (von Natel) +nae hösle verfolgen +nae mache kopieren, imitieren +nae ränne verfolgen +naechoo begreifen, verstehen +naegüxle nachschauen +naehaagge nachfassen +naehocke Schule (Fehlverhalten) (nachsitzen) +naeluege nachschauen +naetänke denken +naetopple nachfassen +Nagel Penis +Nagel ins Gsicht trucke eine Zigarette rauchen +Nagel-Röschti Pommes-Frites +Nägeli Nelken +Näggel Kopf +näggele berühren, befingern +näggele sich mit Kleinkram beschäftigen +Näggi kleine Verletzung +nagle Sex haben +nagle Sex haben +Nahkampf-Pellerine Kondom +nahrhaft stattlich +Näht iitue tadeln, massregeln +Näi-Schachtle Schachtel +namal devo cho sii das Schlimmste überstanden haben +namal Glück gha haa das Schlimmste überstanden haben +napolitanischi Butzfäde Spaghetti +nappe schlafen (engl. nap) +Narre dra gfrässe haa Redensarten (Small Talk) (wenn einem etwas gefällt) +Narre meined Redensarten (Small Talk) (Reaktion auf "Ich han gmeint") +Narre-Händ verschmiered Tisch und Wänd klecksen +Narre-Händ verschmiered Tisch und Wänd Redensarten (Haushalt) (wenn jemand schmutzige Hände hat) +Narrebaschi Scherzkeks +Närve-Bölleli Tischfussball (Matchball) +Näscht Bett +Näschtfäscht Hauseinweihung +Nase Kokain-Konsument +Nase Rekrut +Nase höch ufe hebe anspruchsvoll +Nase lauft Schnupfen +Nase nah vorwärts +Nase poliere zuschlagen +Nase pudere aufs WC gehen +Nase pudere Kokain konsumieren +Nase trucke zuschlagen +Nase-Fäldstächer Brille +Nase-Töff Brille +Nase-Töff Sonnenbrille +Nase-Velo Brille +Nasefurz Schnupfen +Nasestüber gäh zuschlagen +Näsli Kokain-Konsument (weibl. Konsumentin) +Natel Mobiltelefon (Handy) (Abk. für Nationales Auto-Telefon) +Nathalie Mobiltelefon (Handy) (von Natel) +Nationalkomikerin – en Nationalkomiker Nationalökonom:in +Natti Vornamen (weiblich) (Natalie) +Natur rüeft aufs WC gehen +Natür-Jogürtli für die männliche Figur (klein und schmal) +Natütterli, Frau Gütterli! Schüttelreime +Natzi Fussball (Nationalmannschaft) +Nazi abseile stuhlen +Neckermann Deutsche:r +Nei aber au! Das ist unglaublich! +Nei aber au! oh jemineh +Nei chumm! Das ist unglaublich! +Nei lueg au! Das ist unglaublich! +Nei tanke – ich han au Sackgebühre Redensarten (Small Talk) (Antwort auf ein unerwünschtes Geschenk) +nei tanke für de Franke Nein danke +Nei-Säger Politiker (SVP) +Nei, chumm! Beruhige dich! +Nei, wägerli au! Das ist unglaublich! +Nella Martifetti Prominente (national) (Nella Martinetti, Sängerin) +nerve ärgern, provozieren +Nerve-Chützler Kaffee +nerveböös nervös +Nervebündel Zappelphilipp +Nerveflattere haa aufgeregt +nerveföös nervös +nervesaage ärgern, provozieren +Nervesaagi Querulant:in +Nervösi Zappelphilipp +Netti Tartaruga Prominente (national) (Simonetta Sommaruga) +netts Kabel Computer-Zubehör (Netzkabel) +Netz Internet +neui Loosche bezieh umziehen +neumet inegheje ausgehen +neus Fass uufmache vorbereiten, planen +Neutralitätsbewahrer Gewehr (Sturmgewehr) +Neuzgi Orte (ausserhalb von Zürich) (New York) +nice gut (engl.) +nice sehr gut (engl.) +Nick Vornamen (männlich) (Niklaus) +Nickerli mache schlafen +Nicki Ja-Sager:in (wegen dem ständigen Nicken) +Nidel Rahm +Nidel schwinge Rahm (Rahm schlagen) +Nidel-Zältli Bonbon (Caramel-Bonbon) +Nidelschwinger Hubschrauber +Nidelwäie Desserts (Rahmwähe) +Nideri Orte (ausserhalb von Zürich) (Niderweningen) +nidsi bergab +nie heigah bis in die Morgenstunden feiern +nie im Läbe sicher nicht +Niederflur-Bernhardiner Dackel +Niele Waldrebe (Waldrebe, lat. Clematis vitalba) +Niele Zigarette +niemert niemand +Nienewägeli überchoo leer ausgehen +Niere-Spänder Motorradfahrer:in (schlechter Fahrer) +Niere-Spüeler Mineralwasser +Niere-Trätter Wein +Niete Versager:in, Verlierer:in +Niete ohni Chopf Lernende:r (ein Stift) +nifele berühren, befingern +nifele sich mit Kleinkram beschäftigen +Nifeli-Büetz Feinarbeit +Nifeliarbet knifflig +nifelig knifflig +nifelig knifflig +Nifelizüüg Kleinkram +Niggi Vornamen (männlich) (Niklaus) +Niidhammel eifersüchtig +Niidhammel neidisch +niidig eifersüchtig +Nikorettli Zigarette +nikotinle eine Zigarette rauchen +Nilpe Schimpfwörter +Nilpe Versager:in, Verlierer:in +Nilu Tamile +Nimm d Stöpsel use! Hörst du nicht mehr gut? +Nimm de Bäse und hau s! Hau ab! +Nimm de Nuggi use, wänn d mit mir redsch! Redensarten (Small Talk) +nimm der alli Ziit vo de Wält Das eilt nicht +Nimm di Hindere füre! Beeil dich! +Nimm di Hindere füre! Hau ab! +Nimm di in Acht, suscht ruuschet s im Tannewald! Pass auf, sonst knallt's! +Nimm di zäme, susch räblet s! Pass auf, sonst knallt's! +Nimm e Tuschi, aber e chalti! Beruhige dich! +Nimm emal dini hindere Bei füre! Beeil dich! +Nimm es Trotti, wänn d willsch aagäh! bluffen +Nimm s légère! Beruhige dich! (franz.) +Nimm s locker! Beruhige dich! +Nimm s Velo, wänn d nöd nachechunsch! Du bist ein Idiot! +Nimm zwei – für en flotte Drüer! sexuelle Praktiken +Nimm's id Händsche! Nimm's! +nimmt keis Blatt vor s Muul Rüpel:in +Ninja Joint +Ninki Vornamen (weiblich) (Annina) +Nippel wie Tschuttschuehtöggel Brustwarzen (grosse Nippel) +Nippels Brustwarzen +Nippelstolle Strip-Club +Nitrat-Zeppelin Cervelat +Nitro-Hirni Flächenmaler:in +Nitschli Vornamen (weiblich) (Anita) +nobel tue anspruchsvoll +Nobis Nein +nobis sicher nicht +nöchberle auf Tuchfühlung gehen +nöchberle flirten +nöd nicht +Nöd aalange! Finger weg! +nöd all Chüeh uf de Wise haa verrückt +nöd äxtra aus Versehen +nöd chöne dicht hebe ausplaudern +nöd chöne uf d Schnurre hocke ausplaudern +nöd de Gäld-Schiisser haa pleite +nöd di Hellscht – nöd de Hellscht Dummkopf +nöd di Schloischt – nöd de Schloischt Dummkopf +nöd die hellscht Cherze uf em Chueche Dummkopf +nöd die oder de Tümmscht kluger Kopf +nöd fit kränklich +nöd ganz bache dumm +nöd ganz bache verrückt +nöd ganz bache wahnsinnig +nöd ganz buschper eigenartig, seltsam +nöd ganz butzt verrückt +nöd ganz dicht dumm +nöd ganz dicht verrückt +nöd ganz dursichtig eigenartig, seltsam +nöd ganz hell uf de Platte dumm +nöd ganz hundert dumm +nöd ganz hundert verrückt +nöd ganz koscher eigenartig, seltsam +nöd ganz putzt wahnsinnig +nöd glunge missraten +nöd graate missraten +nöd gschänkt Nein danke +nöd i hundert Jahr sicher nicht +nöd id Chränz choo verlieren +nöd lugg laa ausharren, durchstehen +Nöd lugg lah - günnt! bewältigen, meistern +nöd niet- und nagelfescht locker, lose +nöd rächt falsch +nöd s schärfschti Mässer i de Bsteck-Schublade Dummkopf +nöd säje – es wachst ja sowiso nöd ungeschickt (wenn jemand etwas fallen lässt) +Nöd säje, es wachst ja sowiso nöd Redensarten (Small Talk) (wenn jemand etwas fallen lässt) +Nöd schlächt, Frau Spächt – Nöd schlächt, Herr Spächt! Respekt! +nöd schmöcke chöne auf dem Zahn haben +nöd suuber verrückt +nöd suuber über em Niere-Stuck eigenartig, seltsam +Nöd übersüüre! Beruhige dich! +nöd uf de Chopf gheit - uf d Stäge scho gar nöd intelligent +nöd uf de Grind gheit kluger Kopf +nöd uf em Damm kränklich +nöd umetöörle sich beeilen +nöd usechoo verlieren (Verlust machen) +nöd uusstah chöne auf dem Zahn haben +nöd verbutze chöne auf dem Zahn haben +nöd vergässe: troche schüttle urinieren (Männer) +nöd vo Gmerkige dumm +nöd vor d Türe gschisse Nein danke +nöd wie anderne Wiiber unwohl +nöd wie suscht unwohl +nöd würkli Nein +noddere arbeiten +noddere stöbern, wühlen +nodere herumstochern +Nöggi Vornamen (männlich) (Bruno) +Nöggi vom Dienscht Angestellte:r +Nöggi-Joint Redensarten (Suchtmittel) (wenn jemand den Joint selber raucht) +noimet irgendwo +noimet driilaufe aufprallen +noimets anderscht anderswo +noisle stöbern, wühlen +nöldele onanieren (Männer) +nomal drüber schlafe überdenken +Noobli – en Nooble vermögende Person, Snob +nööle murmeln, brummeln +Noote 100 Franken +Noote Geld +Nörgeli mürrische Person +nörgle kritisieren +Normalo Normalverbraucher:in +Normalööli Normalverbraucher:in +Normalsterblichi – en Normalsterbliche Normalverbraucher:in +not rilli beiken (Pseudo-Englisch für "nöd ganz bache"")" dumm +Note-Bock Computer (Laptop) (Notebook) +Note-Chotzer Bancomat +Nötlistand Bancomat +Notschliifi Gebäude, Lokalitäten (Notschlafstelle) +Notverband Rock (Mini-Rock) +Nougou sicher nicht (engl. no go) +Nu kei Panik uf de Titanik – sie gaht eh under! Schüttelreime +Nuck näh schlafen +Nucki mache sich ausruhen +Nudle Gehirn +Nudle Offizierstreifen (Major, Oberstleutnant, Oberst) +nüechtelet Es stinkt +nüele schaufeln, graben +nüele stöbern, wühlen +nuggele lutschen +nüggele schnullen +Nuggi Schnuller +Nuggi suuge Oralverkehr (bei Männern) +Nuggi-Monschter Baby +Nuggi-Puff Tanzlokal (Club, Disco) (Disco für unter 18-Jährige) +Nuggimonschter Kleinkind +Nuggipuff Bars, Restaurants, Clubs (eh. Rockfabrik am Hirschenplatz) +nuklear- sehr +Nukleargaueri – en Nukleargauer Aargauer:in +null-acht-füfzäh schlecht (eh. Maschinengewehr aus dem 2. Weltkrieg) +Nulleri – en Nuller Schimpfwörter +nüme chöne aufgeben, resignieren +nüme chöne lachen +nüme chöne müde, erschöpft +nüme dure gseh beschäftigt sein +nüme ganz binenand verwirrt +nüme ganz ganz im Kopf verwirrt +nüme in Konsi gah sterben (Konsi für Konsum, Supermarkt) +nüme möge aufgeben, resignieren +nume nöd gsprängt allmählich +nume nöd gsprängt Das eilt nicht +nüme nüüt stattlich +Nüme nüüt! Respekt! +nüme vonenand los choo sich verlieben +nümm all sibe Sinn binenand haa sich verlieben +nümm alli Hamschter im Ränne haa verrückt +Nummereschlüüdere Frauenheld +Nümmerli schiebe Sex haben +Nundedie! Das ist unglaublich! (franz. nom de Dieu) +nunele schlafen +Nunu mache schlafen (Mittagsschläfchen, engl. noon) +Nur de Beni isch schlimmer! Halt die Klappe! (Bernard Thurnheer) +nur kei Stress Das eilt nicht +Nur nöd uufrege! Beruhige dich! +Nur wer nöd schaffet, macht kei Fähler! Redensarten (Arbeit) +Nüschel Kopf +Nüschel Nase +nüschele reden, plaudern +nuschele reden, plaudern (undeutlich) +Nuscheli Einhülltuch für Kleinkinder +Nüss Hoden +Nuss Kopf +Nuss Versager:in, Verlierer:in +Nuss-Wurscht im Teigg Nussgipfel +nusse Sex haben +nusse stuhlen +Nussgipfel mache unglücklich, deprimiert +Nussi am Chopf Kopf (Beule) +nüssle betrügen +nüssle jemanden fertigmachen +nüssle Sex haben +Nüsslisalat Feldsalat +Nutte-Diesel Drinks (billiger Prosecco) +Nutte-Päuli Prominente (international) (Paolo Nutini, schottischer Sänger) +Nutte-Töff Freier +Nutte-Zmorge Kaffee (Kafi & Zigi) +Nuttebock Freier +Nuttebock Fremdgänger:in +Nuttediesel Champagner +nützt en alte Huet unnütz +Nüün-Volt-Batterie Zahnspange +Nuuni mache schlafen (Mittagsschläfchen, engl. noon) +Nüüni-Maal Brettspiele (Mühle) +Nüüni-Zieh Brettspiele (Mühle) +nüürze jammern, sich beklagen +nuusche arbeiten (langsam) +nuusche sich mit Kleinkram beschäftigen +nuusche stöbern, wühlen +Nuuschi Einhülltuch für Kleinkinder +nüüsse niesen +Nüüssi Hautverletzung +Nüüssi kleine Verletzung +nüüt als Schrott Blödsinn +nüüt für sich phalte chöne ausplaudern +nüüt für Ungarn Entschuldigung +nüüt für unguet Entschuldigung +Nüüt isch! Hör auf! +nüüt studiert Blödsinn +nüüt tue sich ausruhen +nüüt z picke haa Hunger haben +Nüüteli Baby (Frühgeburt) +Nüüteli ganz wenig +nüütelig wertlos +Nüütnutz Schimpfwörter +ob haa kochen (kochen lassen) +ob haa vorbereiten, planen +Öb s ächt vom Mage chöm? rülpsen +ob tue aufsetzen (z.B. Wäsche, Pfanne) +ob tue kochen +Obacht gäh aufpassen +Obacht! Achtung! +Obdachlose-Milch Bier +Obdachlose-Wässerli Bier +obenabe cho sich ausruhen +obenabe choo sich beruhigen +obenuus sehr +obenuus sehr gut +obenuus schwinge gewinnen +ober- sehr +oberaffetitte- sehr +Oberärm wie Chüngelbüüch Muskeln +Oberarsch Chef:in/Vorgesetzte:r +Oberblocherwil Orte (ausserhalb von Zürich) (Domat/Ems, Standort der Ems-Chemie) +oberfiis niederträchtig +Oberfläche-Veredeligs-Technikeri – en Oberfläche-Veredeligs-Techniker Flächenmaler:in +Oberfreier Obergefreiter +Oberfrittierte Obergefreiter +Obergfiggte Obergefreiter +Obergschiide Besserwisser:in +Obergstopfti – en Obergstopfte vermögende Person, Snob +Obergstüüreti – en Obergstüürete Akademiker:in +Oberguschti Chef:in/Vorgesetzte:r +oberhammer sehr gut +Oberhirni Chef:in/Vorgesetzte:r +Oberjehudi Chef:in +Oberjehudi Chef:in/Vorgesetzte:r +Oberkommandörin – de Oberkommandör Chef:in/Vorgesetzte:r +Obermotz Chef:in +Obermufti Chef:in +Oberscht i Gummistifel Oberst im Generalstab +Oberscht im Analstab Oberst im Generalstab +Oberscht im Garte-Stuehl Oberst im Generalstab +Oberscht im Gay-Stab Oberst im Generalstab +Oberscht im Gschtütt Oberst im Generalstab +Oberscht im Gstrüpp Oberst im Generalstab +Oberst im Genitalstab Oberst im Generalstab +Oberst im Gstütt Oberst im Generalstab +Oberstübli Gehirn +Oberturner für die männliche Figur (muskulös) +Oberwasser haa über die Stränge hauen +Oboe Penis +Obschtler Schnaps +obsi bergauf +obsi choo vorwärts kommen +Occasion Gebrauchtwagen +ochse lernen +ochse Sex haben +Ochse-Pimmel Kalbsbratwurst +Ochsner Abfalleimer +oder en LAB haa eine Beziehung haben (Lebensabschnittsbegleiter:in) +oder en LAP haa eine Beziehung haben (Lebensabschnittspartner:in) +oder en Prof Professor:in +oder en Prof. Dok. Sowieso Professor:in +oder en Sti-No Normalverbraucher:in (von stinknormal) +oder en Sto-Spa Spanier:in (stolze:r Spanier:in) +Ofe Joint +Ofe boue einen Joint drehen +Ofe heize einen Joint rauchen +Ofe schletze einen Joint rauchen +Ofe-Chroose Autorennen +Ofe-Türe Ouverture +Ofebänkli-Furzeri – en Ofebänkli-Furzer Bäuerin/Bauer +Oferohr Auspuff +Off-Butz Soldat im Putzdienst (putzt das Material der Offiziere) +Öff, öff, ggö lagg schö (pseudo-franz. für "Ei, ei, was seh ich"")" Das ist unglaublich! +Offizieller Pfusch eines Lehrlings Autos von Opel (Opel) +offline sii müde, erschöpft (engl.) +Oh du verbrännti Zeine! Das ist unglaublich! +Oh du verbrännti Zeine! Fluchwörter +Oh du verbrännti Zeine! oh jemineh +Oh jemineh, Frau Portmonee oh jemineh +Oh jemineh, Frau Portmonee! Das ist unglaublich! +Oh jemineh, Frau Portmonnee! Schüttelreime +Oha lätz! Das ist unglaublich! +Oha! Das ist unglaublich! +Ohalätz oh jemineh +öhig schlecht +ohmächtig nicht auszuhalten +ohni Büetz sii arbeitslos +Ohni Moos nüt los Redensarten (Geld) +Ohni Power ewig letschte Auto-Typen (Opel) +ohni Saft und Chraft sii müde, erschöpft +Ohnibrainy Schimpfwörter (engl. brain) +Ohr färbe Ohrfeige +Ohre Brüste +Ohre lampe laa traurig +Ohre-Chappe Ohrfeige +Ohre-Geblääse MP3-Player +Ohre-Glanggerli Ohren (Ohrringe) +Ohre-Glanggerli Schmuck (Ohrringe) +Ohregrübler Ohrwurm +Ohremüggeli Mumps +Ohremüggler Ohrwurm +Ohrewasser Vodka +Ohrezäpfli Gehörschutzpfropfen +Ohrfalte bügle schlafen +Ohrfiige-Büchs uufmache zuschlagen +Ohrfiigegsicht Schimpfwörter +Ohrwurm fetzige Musik (eingängig) +oige schauen +öigle flirten +ok Abgemacht! +okäi Abgemacht! +okei Abgemacht! +ökk Abgemacht! +OL Orientierungslauf +Öl Vornamen (männlich) (Oliver) +Öl am Huet haa betrunken +Öl-Chlötzli Pommes-Frites +öle schwitzen +Olio-Petrolio Italiener:in +Olma-Bradwurscht St. Galler:in +Ölwächsel Menstruation +olympischi Ring um d Auge Augenringe +Omammaa alte Frau +Omelette Brüste +ööle trinken, sich betrinken (Bier trinken) +Open-end-Party duregäh bis in die Morgenstunden feiern (engl. open end) +Öpfel Kopf +Öpfel-Fritzli Pommes-Frites +Öpfelchammere Orte (in Zürich) (Gottfried-Keller-Stübli) +Öpfeli Augen +Öpfeli Brüste +öppe etwa +öppe ungefähr +öppe mal manchmal +öppe nomal immer wieder +öppedie manchmal +öpper a de Angle haa eine Affäre haben +öpper apschleppe One Night Stand +öpper bim Schaffe verwütsche Redensarten (Arbeit) (spontaner Besuch am Arbeitsplatz) +öpper bodige gewinnen +öpper cha bim Laufe d Schueh binde langsame Person +öpper cha d Ohre uselitze zum brämse Ohren (abstehende Ohren) +öpper cha sich mit em Hirschläder strähle Glatze +öpper chan nonig graduus seiche Teenager:in +öpper chasch rauche Schimpfwörter +öpper cheert de Foifer zweimal um Geizhals +öpper chehre One Night Stand +öpper dörf nöd emal elei go seiche unterdrücken +Öpper frisst mir zur Hand uus Redensarten (Small Talk) (diese Person habe ich gefügig gemacht) +öpper frisst s letscht Guetzli us de Büchse Rüpel:in +öpper ghört scho zum Inventar Mitarbeiter:in (altgedient) +öpper gseht de eigeti Schatte nüme dicke Person +öpper Handglismets Links-Alternative:r +öpper hät Buechstabe-Suppe gfrässe Schwätzer:in +öpper hät d Goldmedaille im Siitesprung Seitensprung +öpper hät d Läbere uf de Sune-Siite Betrunkene:r +öpper hät d Wiisheit mit Löffel gfrässe Besserwisser:in +öpper hät de Aastand au nöd mit Löffel gfrässe Rüpel:in +öpper hät de Schnurrepflutteri Schwätzer:in +öpper hät Dräck am Stäcke Verbrecher:in +öpper hät e bruuni Zunge Schmeichler:in +öpper hät eine uf de Gitarre kluger Kopf +öpper hät en Egge ap Irre:r +öpper hät en Grind wie-n-e VW-Türe – so richtig zum driigingge Schimpfwörter (vom Cabaret Rotstift) +öpper hät en Kiosk a de Eiger-Nordwand Schimpfwörter +öpper hät en Rand am Huet Betrunkene:r +öpper hät es Buech gfrässe Schwätzer:in +öpper hät es Nasevelo Brillenträger:in +öpper hät geischtige Durchfall Schwätzer:in +öpper hät kein Spoitz im Ranze Jammerlappen +öpper hät öppis uf em Chaschte kluger Kopf +öpper hät Roscht uf em Tach Rothaarige:r +öpper hät s Hirni i de Wade Fahrrad-Fahrer:in +öpper hät s i de Bire – nöd im Füdli intelligent +öpper hät Schlag­siite Betrunkene:r +öpper in Reserve haa eine Affäre haben +öpper inefrääse küssen +öpper isch a jedere Hundsverlochete debii Jetsetter:in +öpper isch Chupfer-Wulle-Bascht, s Links-Alternative:r +öpper isch die erschte 50 Santimeter im Zoo uufgwachse Rüpel:in +öpper isch im Gang-go-Club Handlanger:in, Hilfsarbeiter:in +öpper isch meh im Chefi als dusse Verbrecher:in +öpper isch mit eme Tirggel hei choo Betrunkene:r +öpper isch no grüen hinder de Ohre Teenager:in +öpper isch zum abgwöhne hässlich +öpper isch zum Abwinke Schimpfwörter +öpper landet na bi de Heilsarmee Versager:in, Verlierer:in +öpper lüüchtet i de Nacht Rothaarige:r +öpper lüügt wie truckt Lügner:in, Betrüger:in +öpper mache Sex haben +öpper macht en Grind wie zäh Tag Rägewätter mürrische Person +öpper mit eme Styroporhirni Fahrrad-Fahrer:in (Helm) +öpper mit Hornhuut am Chüni Bauarbeiter:in (Abstützen des Kinns am Schaufelstiel beim Nichtstun) +öpper Sälberglismets Links-Alternative:r +öpper sitzt wie en Aff uf eme Schliif-Stei Motorradfahrer:in (schlechte:r Fahrer:in) +öpper sitzt wie en Aff uf ere Sprütz-Chane Motorradfahrer:in (schlechte:r Fahrer:in) +öpper stinkt no nach Muettermilch Teenager:in +öpper streckt sini Nase i alles ine neugierige Person +öpper studiert nur vor d Füess Chaot:in (plant nicht) +öpper tusche schimpfen, beschimpfen +öpper überstelle Sex haben +öpper um de Finger wickle sich herausreden +öpper us de Plüsch-Etaasche Kader-Mitglied +öpper us em 110-Volt-Land Amerikaner:in +öpper us em Näbeltäli Aargauer:in (Reusstal) +öpper us em Zigerschlitz Glarner:in +öpper uusnäh klauen, stehlen +öpper verchlöpft s – en Knallfrosch isch en Dräck degäge explodieren +öpper verruume One Night Stand +öpper versaage gewinnen +öpper vertäfele verraten, petzen +öpper vo Hindefüre Provinzbewohner:in +öpper vom grosse Kanton Deutsche:r +öpper zuespäme auf jemanden einreden (engl. spam) +öpper zuetexte auf jemanden einreden +öpper zum Frässe gern haa eine Beziehung haben +öpper, wo d Spargle quer frisst Deutsche:r +öpper, wo mit de Chüeh kämpft Schweizer:in +öpperem d Chelle schüttle zur Begrüssung +öpperem de Haagge stele zu Fall bringen +öpperem dräckig mache betrügen +öpperem e langi Nase mache betrügen +öpperem en Floh is Ohr setze überreden, überzeugen +öpperem en Furz is Polschter trucke fahren (mitfahren) +öpperem en Strick dräje schaden +öpperem es Ei legge betrügen +öpperem es Höpperli stelle zu Fall bringen +öpperem Gäld schwach sii Geld schulden +öpperem hät s is Hirni gschisse Irre:r +öpperem hät s uusghänkt verrückt +öpperem Herz und Hand gäh sich verlieben +öpperem in Darmstadt d Wohnig chünde stuhlen +öpperem is Schilee hüüle jemandem seinen Kummer anvertrauen +öpperem isch e Flüüge über s Läberli kroche sauer +öpperem isch en Floh über s Läberli kroche sauer +öpperem lampet d Tummheit zu de Ohre uus Dummkopf +öpperem mues mer na Aastand leere Rüpel:in +öpperem öppis aahänke beschenken (meist ein Geschenk, das man selbst nicht haben will) +öpperem s Herz uusschütte jemandem seinen Kummer anvertrauen +öpperem s Ohr abchätsche auf jemanden einreden +öpperem schlaaft no s Gsicht ii faul, träge +öpperem schlaaft s Gsicht ii langsame Person +öpperem schöni Auge mache flirten +öpperem siis Ego bruucht e eigni Poschtleitzahl Aufschneider:in, Angeber:in +öpperem uf de Täsche ligge ausnutzen, aushalten +öpperem uufhocke drängen +öppertem eine inetrucke betrügen +öppis aastelle einen Fehler machen +öppis anechlöpfe Entwurf +öppis anerüehre Entwurf +öppis boosge einen Fehler machen +öppis boosge etwas ausfressen +öppis chöne bewältigen, meistern +öppis de Schacht aberüere essen +öppis de Schacht aberüere essen +öppis druff haa intelligent +öppis durestiere trotzen +öppis gaht eim ine begreifen, verstehen +öppis gliich guet chöne wie e Chueh chlättere verlieren +öppis gscht… überchoo klauen, stehlen +öppis hinder d Kiime schiebe essen +öppis Hööchs Akademiker:in (Kadermitglied) +öppis in Mage tue essen +öppis mit Samethändsche aalange sorgfältig, behutsam +öppis nüme preschtiere aufgeben, resignieren +öppis primanigs gut +öppis schlittle laa die Unterstützung verweigern +öppis sit 100 Jahr eso mache Ohren +öppis tue arbeiten +öppis überwerfe sich anziehen +öppis uf em Chaschte haa intelligent +öppis umegheie unsorgfältig behandeln +öppis us em Ärmel schüttle Entwurf +öppis verhüehnere Unordnung, Chaos +öppis verlegge Unordnung, Chaos +öppis vernuusche Unordnung, Chaos +öppis vorgaukle lügen +öppis z Fade schlaa Entwurf +öppis z lieb tue verwöhnen +öppis zäme drittle absprechen, vereinbaren +öppis zäme haa eine Affäre haben +öppis zum Uusrangschiere Gerümpel +öppis, wo scho eine im Muul gha hät Rindszunge +Optik Augen +optimatütterli gut +Optimum Krönung, Höhepunkt +oral ejakuliere erbrechen +Orange Zivilschutz +Orangsche Holländer:in +Orangsche-Huut Cellulitis +Orcheschter Kleingeld +ordeli ziemlich +Ordonanz-Chlötz Militärschuhe +organisierte Lärme mache schlechte Band +Orgasmotronic Schnauz +örgele onanieren (Männer) +orgiastisch sehr +Oriänt-Express öffentliche Verkehrsmittel (Bus 32) +Oscht-Aargaueri – en Oscht-Aargauer Österreicher:in +Oscht-Block Orte (ausserhalb von Zürich) (alles nördlich von Winterthur) +Oscht-Französin – en Oscht-Franzos Welsche:r +Oscht-Schwiizer Winterthurer +Oscht-Wind rülpsen (nach einem Kebap) +Oschterglogge Narzisse +Öschtricher Wy Auto-Zubehör (Glykol, nach dem Wein-Skandal in Österreich) +Ossobuco Tessiner:in +Otti Penis +Ou du verreckti Zeine! Das ist unglaublich! +Ou nei! zur Begrüssung +Ou verreckt am Schatte! Das ist unglaublich! +oukidouk Abgemacht! +ouwer schlecht (engl. over) +ÖV öffentliche Verkehrsmittel (öffentlicher Verkehr) +over müde, erschöpft (engl.) +Oxa-Limusine Autos von Fiat (Fiat Punto) +Öxi Clubs, Discos (Oxa) +pääpere trinken, sich betrinken +paar Quadratmeter Zunge verlegge Zungenkuss +paar Rundi Ecstasy +paar Vertruckti Kleingeld +paari einige +Päch für d Schnägge Pech haben +Pächmarie sii Pech haben +Pack Schimpfwörter +Pack de Püntel! Hau ab! +pack's Nimm's! +päckelhäärig geizig +Päcklete Schlägerei +Päckli schwimmen (Sprung mit angezogenen Beinen) +Päckli mache absprechen, vereinbaren +Päckli mache ins Wasser springen (mit angewinkelten Beinen) +Päde Vornamen (männlich) (Patrick) +Padi Vornamen (männlich) (Patrick) +Paella-Frässeri – en Paella-Frässer Spanier:in +paffe einen Joint rauchen +paffiere einen Joint rauchen +Pala Restaurants (Palavrion) +Palimpalim gseh betrunken +Pamir Gehörschutz +Pämpers-Bomber Autos von Volvo (Volvo 850) +Panasch-Suuferi – en Panasch-Suufer Schwächling +Pandüle Uhr (eine grosse Standuhr) +Panduur jassen (Spielart) +Panduur unzuverlässige Person +Panduur Verbrecher:in +paniere einen Joint rauchen +paniert betrunken +Panne eine schlechte Idee +Panne-rei Zürichsee-Schiffe (Panta Rhei) +Pannolino Eisenbahn (Pannenzug Pendolino) +Panta-Blei Zürichsee-Schiffe (wegen dem Übergewicht) +Pantli Würste (Appenzeller Salsiz) +Pantoffelheldin – en Pantoffelheld Schwächling +Pantoffelkino Fernseher +Pantoffle Schuhe +Panzer dicke Person +Panzer-Chäs Dosen-Käse +Panzer-Chehrplatz Glatze +Panzer-Glas Brille (dicke Gläser) +Papa kann zahlen Einkauf (PKZ) +Papa kann zahlen Firmen (PKZ) +Papa Schlumpf Kompanie-Kommandant +Papagei würge urinieren (Männer) +Papageie-Grind unbeliebte Person +Papierli-Schwiizer eingebürgerter Ausländer +Papierli-Schwiizeri – en Papierli-Schwiizer Auswärtige:r (Ausländer:in mit Schweizer Pass) +Papperlapapp Blödsinn +Päppli Brei +Papscht hät z Spiez s Späck-Bsteck z spaat bstellt Besteck (Zungenbrecher) +päpschtlicher als de Papscht Pedant:in +Parable Streusand Prominente (international) (Barbra Streisand, US-Entertainerin) +Paradiisli Badeanstalt, Schwimmbad (Nacktbad) +Paragraphe-Heini Anwältin/Anwalt +parat anwesend +parat bereit +parat sexuell erregt +Pardon Entschuldigung +Pariser Kondom +Pariser Schutzhülle für Armeematerial +Parkbank-Philosoph Penner:in, Clochard +parkiere parken +Parmesan-Räge Schuppen +Parööti haa betrunken (von parat, bereit) +Parterre-Pfnüsel Durchfall +Partisan Penis (me weiss nie, woher dass er chunnt) +partu unbedingt (franz. partout) +Party-Staub Kokain +Party-Tiger Jetsetter:in +Pascha Macho +Paschteete Füsse +Paschteetli Glarner:in +Pass uf, susch häsch s letscht Mal warm gschisse! Pass auf, sonst knallt's! +Pass uf, suscht weisch dänn glii, wie s Limmi vo ine uusgseht! Pass auf, sonst knallt's! (Limmattalspital) +Pass uuf – jetzt rüttlisch am Ohrfiigebaum! Pass auf, sonst knallt's! +Pass uuf, susch chläpperet s! Pass auf, sonst knallt's! +Pass uuf, susch chlöpft s im Schiibestand! Pass auf, sonst knallt's! +Pass uuf, susch räblet s! Pass auf, sonst knallt's! +Pasta-Fraktion Offiziere +Pastarotti Musiker:innen (Pavarotti) +patänt sii tüchtig +Pater Muffei Musiker:innen (Peter Maffay) +Patridiotin – en Patridiot Patriot:in (übertrieben, chauvinistisch) +patt unentschieden +Pätti Buser Prominente (national) (Patrizia Boser, TV-Moderatorin) +Pätty Vornamen (weiblich) (Patrizia) +Pättytüt Prominente (national) (Patrizia Boser, TV-Moderatorin) +Pauke dicker Bauch +Pause Nichtsnutz +Pause haa betrunken +Pausesack Lehrer:in +Pausezeiche Schimpfwörter +Päusli Auszeit, Time out +Pavian Schimpfwörter +PC ghört uf s WC IT-Problem +PC-Chopf Informatiker:in +PC-Heini Informatiker:in +Pe Menstruation (für Periode) +Pé Vornamen (männlich) (Peter) +pear wanker (Pseudo-Englisch für "Birewixer"")" Schimpfwörter für Männer +Pedaler Fahrrad-Fahrer:in +Pedalöli Fahrrad-Fahrer:in +Peilsch es? Hast du es begriffen? +Peitschechlöpferinne – d Peitschechlöpfer Geschäftsleitung +Pellerine Kondom +Pelz Hündchen +Pelzburger Scheide +Penalty zuschlagen (Tritt zwischen die Beine) +Penalty i de Bire haa betrunken +Penalty im Gsicht haa betrunken +pene schlafen +Penis-Leitplanke Scheide +Penn-Tüüte Schlafsack +Penner Langweiler:in +Penner-Trumpeete Blockflöte +Pennerblettli Medien (Surprise) +Penneri – en Penner Obdachlose:r +Penneri – en Penner Schimpfwörter +Penudle Fussball (Penalty) +Pepe Jeans Restaurants (Papa Joe's) +per Äxgüsi aus Versehen +Periode im Gsicht haa bluten (aus der Nase bluten) +Periode-Chlöpfer Würste (Blutwurst) +Perle Freundin, Partnerin +perle gut +Perle Kosenamen +perletauche Oralverkehr (bei Männern) +perlitos gut (Pseudo-Spanisch) +Permi Führerausweis (franz. permit de conduire) +Personal-Tante – en Personal-Unggle Personal-Fachperson (HR) +Perverso Spanner +Pestalozzi isch im Fall gstorbe ausnutzen, aushalten +Petarde Joint +Peti Vornamen (männlich) (Peter) +Petrolbohrig in der Nase bohren +petze verraten, petzen +Petzi Kotzi Prominente (national) (Betty Bossi) +Pfaadschlitte Schneepflug +Pfaff Pfarrer, Priester +Pfaffe-Klavier Kirchenorgel +pfäffere einen Joint rauchen +Pfämet Ladung +Pfanne Bett +Pfarrer prediget nur eimal Ich sag's nur einmal +pfätze kneifen, zwicken +Pfau Aufschneider:in, Angeber:in +Pfaue Orte (in Zürich) (Heimplatz) +Pfiff-Paff-Puff Knall +Pfiffeteckel Blödsinn +Pfiife uus-chlopfe onanieren (Männer) +Pfiifeli Penis +Pfiifesack Schwächling +Pfiiff di! Hau ab! +pfiiffe atmen +Pfiiffe Penis +Pfiiffe Schimpfwörter +Pfiiffe Versager:in, Verlierer:in +Pfiiffe Versager:in, Verlierer:in +Pfiiffe-Chabis-Chäs Blödsinn +Pfiiffe-Dröhne Schmerzen im Unterleib (Mann) +Pfiiffe-Schweller Ei +Pfiiffe-Teckel Fluchwörter +Pfiiffeli butze onanieren (Männer) +Pfiiffeli mache in die Hocke gehen +Pfiiffetrümel Schimpfwörter +Pfiift s im Gsicht? Spinnst du? +Pfiilboge Gewehr +Pfiilboge spanne eine Erektion haben +Pfiili schüsse aufreizende Bewegungen (mit den Augen) +Pflaatsch Schimpfwörter für Frauen (faul) +Pflanzblätz Schrebergarten +Pflanzi Schrebergarten (g) +pflänzig faul, träge +Pflänzli Schwächling +Pflanzonett uufbeize Bajonett +Pfläschterli-Tokter Ärztin/Arzt (Allgemeinpraktiker) +Pflätter Matsch +Pflättere dicke Person +Pflättere für die weibliche Figur (dick) +Pflock Rüpel:in +Pflock Schimpfwörter (unsensibel) +pflocke stuhlen +Pflocki WC +Pflocktrööte Blockflöte +Pflödderli Kosenamen +Pflöder Matsch +pflootsche mit Wasser spielen +Pflootscherei mache mit Wasser spielen +pflootschet es regnet +Pflootschi Badeanstalt, Schwimmbad +pflootschig weich, matschig +Pflotsch Matsch +Pflotsch Wetter (auftauender Schnee) +Pflotschi Durchfall +Pfludder Schlamm +pflüdderig schwabblig +Pfluder-Grüscht Crèmeschnitte +pflüdere Durchfall +Pfluderi Durchfall +Pfluderi Durchfall +pflüderig weich, matschig +pfluderweich weich, matschig +Pfluttere dicke Person +Pfluttere Schimpfwörter für Frauen (dick) +Pflütteri Durchfall +Pfluume Scheide +Pfluume Schwächling +Pfluume Versager:in, Verlierer:in +pflüümle pfuschen +Pfluute Schimpfwörter für Frauen (träge) +Pflüütli Kinder (molliges Mädchen) +Pfnätschi Durchfall +pfnätte schlafen +Pfnätti mache schlafen +pfnuchse atmen (stark atmen) +pfnuchse schlafen +pfnuchse Schnupfen (explosionsartig schneuzen) +Pfnuchsi alter Mann +Pfnuchsi Schnupfen +Pfnüsel Schnupfen +Pfnüsel haa betrunken +Pfnüsel-Küschte Orte (in Zürich) (linkes Zürichsee-Ufer) +Pfnüsel-Tüechli Taschentuch +Pfoote Hand +Pfööte Hand +Pförsi Pfirsich +Pföschte ghöred in Bode Beine (dicke Beine) +Pfoschteschuss Schimpfwörter (hässlich) +Pfote wägg! Finger weg! +pfüdere unanständig essen +Pfüderi Kleinkind +Pfüderi Kosenamen +Pfüdi Kleinkind +Pfüeti zum Abschied +pfui Gugger daneben, verwerflich +pfui Teufel daneben, verwerflich +Pfund 20 Franken +Pfund setze stuhlen +pfunde stuhlen +Pfünderli Brot +Pfünderli Brot (1/2 kg Halbweissbrot) +Pfünderli Scheide +pfundig sehr gut +Pfündli H2O Mineralwasser (5 dl) +Pfündli-Stänz Zuhälter (erfolgloser Zuhälter) +Pfunzle dicke Person +Pfunzle dicke Person +Pfunzle dicke Person +Pfunzle dicke Person +Pfunzle Lampe +Pfunzle Taschenlampe +Pfunzle Versager:in, Verlierer:in +Pfupf eine schlechte Idee +Pfupf elektrischer Strom +Pfupf Kokain +Pfupf Mofa +Pfupf Patrone +Pfupf gäh Gas geben +Pfupf i de Hose haa tüchtig +pfupfe Kokain konsumieren +pfupfe Sex haben +Pfüpferli Auto (klein) +pfupfig schnell +Pfupfwasser Mineralwasser +Pfusch ablaa pfuschen +Pfüsi mache schlafen +pfuttere jammern, sich beklagen +pfuttere schimpfen, beschimpfen +Pfütze Bier (Bier vom Fass) +Pfütze Kaffee (grosser Kaffee) +Pfütze Wein +Pfuus elektrischer Strom +Pfuus guet Gute Nacht +Pfuus isch duss am Limit +Pfuus-Chammere Wohnung +Pfuusbäggli Wangen +pfuuse schlafen +pfüüsele schlafen +phenomatös gut +Physikater Psycholog:in, Psychiater:in +pi-pa-po und so weiter +Pi-Pi-Box WC +Pi-Pi-Island WC +PIB Gummi-Puppe (engl. personal inflatable barbie) +piccobello sehr gut +Picht Rauhreif +picke essen +Pickel abgäh arbeitslos +pickle arbeiten +Pickleri – en Pickler Fotograf:in (engl. picture) +Pickti – en Pickte Schimpfwörter +Piefke Deutsche:r +Pier-Liich Betrunkene:r +Pieridee eine schlechte Idee +piesacke hänseln +Piff-paff-puff, und du bisch duss Schüttelreime +Piiisli (engl. piece) inenäh einen Joint rauchen +Piipmatz Penis +Piipser Übermittlungstruppen +Piis Haschisch (engl. piece) +piischte atmen (schwer atmen) +piischte keuchen +Pilgere Gebiss +Pille-Spickeri – en Pille-Spicker Ecstasy (Ecstasy-Konsument:in) +Pille-­Stedtleri – en Pille-Stedtler Basler:in (wegen der ansässigen Chemie) +Pilleträjeri – en Pilleträjer Basler:in +Pimmel Penis +Pimmelchopf Glatze +Pimp Hip-Hopper:in +Pimp Zuhälter (engl.) +Pimp Zuhälter (engl.) +Pimpel Penis +pimpere Sex haben +Ping-Pong Tischtennis +Pinggel Schimpfwörter +Pingu sueche frieren +Pinguin Anzug +Pinguin Nonne +Pinguin Schwächling +Pinguin Servierpersonal +Piniewald Gin Tonic +Pinnte-Cheer mache ausgehen +Pinsel Penis +Pinsel Schimpfwörter +Pinsel abetrucke Gas geben +Pinsel inehebe Sex haben +Pinsel mälche urinieren (Männer) +Pinsel uufriisse Vollgas +Pinsel-Technikeri – en Pinsel-Techniker Flächenmaler:in +Pinselreiniger Oralverkehr (bei Männern) +pinsle dirigieren +Pinsleri – en Pinsler Flächenmaler:in +pinte trinken, sich betrinken +Pipi-Sack Blase +Pipifax Blödsinn +Pipimaa Penis +pippele urinieren +Pippibox WC +pippisiere urinieren +Pippo Vornamen (männlich) (Peter) +Pirate-Auge Brustwarzen +Piratefäscht Menstruation (weil eine Binde getragen wird) +Pirelli dicker Bauch +Piss-Chopf Schimpfwörter +pisse urinieren +Pisseria WC +Pisserli Kleinkind +pisst es regnet +pisst mir as Bei Das nervt! +pisst wie hohl Wetter (starker Regen) +Pit Vornamen (männlich) (Peter) +Pitsch Vornamen (männlich) (Peter) +Pitschle Vornamen (weiblich) (Petra) +Pixel-Furzeri – en Pixel-Furzer Polygraf:in +Pizza Erbrochenes +Pizza legge erbrechen (wer sich nach dem Jogging übergeben muss, ist ein Pizza-Kurier) +Pizza-Bläch Autos aus Italien (ital. Auto, meistens Fiat) +Pizza-Gsicht Akne +Pizzabecker-Huet Béret +Pizzabläch Militärische Fahrzeuge (Iveco) +Pizzaiolo verträtte erbrechen +Pizzaiolo-Ferrari Autos von Fiat (Fiat Punto HGT) +Pizzamänsch Italiener:in +Pizzaschieber Italiener:in +Plaag-Äffin – en Plaag-Aff Störenfried +Plaag-Geischt Störenfried +plaage jemanden fertigmachen +plääre weinen +Plääri Kinder (weinerlich) +Plääri-Goof Kinder (weinerlich) +Placebo Domingo Musiker:innen (Placido Domingo, Opernsänger) +Plaffere Klatschmaul +Plagööri Aufschneider:in, Angeber:in +Plagööri Klugscheisser +Plagööri Schwätzer:in +Plämpe Pistole +plämperle trödeln +Plampi Motorradfahrer:in (Beifahrer:in im Seitenwagen) +Plant Hanfpflanze (engl.) +plantsche schwimmen +plappere ausplaudern +plappere reden, plaudern +Plapperi Schwätzer:in +Pläsche gut +Pläsche haa sich freuen +Plastik-Töggel Zahnprothese +platt müde, erschöpft +platt überrascht, verdutzt +platt mache zertreten +platt trucke überfahren +Platte Reifen (Reifenpanne) +Platteschieberi – en Platteschieber Obdachlose:r +Plättli-Fuege zehle aufs WC gehen +platze explodieren +plätzets Chnüü Hautverletzung (aufgeschürft) +Platzhalter Tampon +Platzspitzer Drogenabhängiger +Platzwächsel mache urinieren +Plauder-Täsche Schimpfwörter für Frauen +Plauderi Schwätzer:in +Plaudertäsche Schwätzer:in +Plausch gut +Plausch Party +Player Frauenheld (engl. playboy) +Plebs Normalverbraucher:in (von Plebejer) +plegere sich ausruhen +plem verrückt +plemplem daneben, verwerflich +plemplem verrückt +pliis bitte (engl. please) +Pling-Pling Brustwarzen (bei kaltem Wetter) +plodere ausplaudern +plodere brodeln +plodere reden, plaudern +Ploderi Schwätzer:in +plöiderle reden, plaudern +Plombe usetrucke entjungfern +plötzli triffsch en Tubel Briefverkehr (für die eh. PTT) +plötzlich putzt Briefverkehr (für Pauschalfrankatur) +plötzlich wird s tunkel zuschlagen +Pluff-Pluff Geschwindigkeitskontrolle +plug & play Sex haben (Quickie; engl.) +Plunder Gerümpel +Plunze Würste +Plupple Flasche +Plüschi haa mit Vergnügen +plüschig gut +plütterig weich, matschig +Pnes Penis +Pnöö dicker Bauch +Pnöö Reifen (Pneu) +Pnöö-Figgi Velosolex (wegen seinem Reibrad-Antrieb aufs Vorderrad) +Pöbel Normalverbraucher:in +Pöbelmischter Möbelhäuser (Möbel Pfister) +Podi MP3-Player (iPod) +Pögg Haschisch (von engl. Puck, vom Eishockey) +Pögg abgschosse Blödsinn +Pögg zueschiebe aufreizende Bewegungen +Pöggsch de Tschegg? Alles klar? +Pöggsch es? Hast du es begriffen? (engl. puck) +Pöili Vornamen (männlich) (Paul) +Polänte Polizist:in +Polänte-Schlitte Streifenwagen +Pole Vornamen (männlich) (Paul) +poleete schreien, rufen +Polenta-Frässeri – en Polenta-Frässer Tessiner:in +Polenta-Grabe Italienische Schweiz (Sprachgrenze zwischen Deutschschweiz und Tessin) +Poli Gebäude, Lokalitäten (die ETH, Polytechnikum) +poliere schmusen +polierti Billiard-Chugle Glatze +Politschuggeri – en Politschugger Polizist:in +Polizei-Stund Restaurant-Schliessung +Polizei-Stund – es wird nöd überhocket! Restaurant-Schliessung +Polizischte-Büchs Streifenwagen +Polizischtli-Lumpechischtli Polizist:in +Pölli Kopf +Polschter Gesäss +Pölschterli dicker Bauch +Polterabig Junggesellen-Feier +Polteri Rüpel:in +Polüüpe Polizist:in +Polyp Polizist:in +Pomade-Hafe Schimpfwörter für Frauen (bequem) +pomadig faul, träge +Pömmfe Pommes-Frites +Pommfritt-Fahrer Skifahrer +Pommfritt-Frässer Kinder +pompe Sex haben +Ponani Joint +Ponpon Bündel +pööble sich schlecht benehmen +Pool-Sheriff Chef:in +Pootz! Das ist unglaublich! +Popärze After +Popo Gesäss +Popo-Zwölfänder Arschgeweih (Tattoo über dem Po) +poppe Sex haben +Pöppel Augen +pöpperle klopfen (sachte) +pöpperle Sex haben +Poppi Baby (aus dem Rätoromanischen) +Pornaki Pornofilm +porno sehr gut +Porno-Balke Schnauz +Pornüzel Pornofilm +Porsche Föhn Autos von Porsche (Porsche Turbo) +Porschloch Autofahrer:innen (Porsche-Fahrer:in) +Portion gäh Sex haben +Portione-Plauderi Schwätzer:in +Portione-Schnurri Schwätzer:in +Portogulasch Portugiese +Pörtz Masseinheiten (Portion) +Porzelei Stadtpolizei Zürich +Porzellan-Abteilig WC +Porzellan-Bus fahre erbrechen +Porzellan-Schlüüdere Geschirrspüler +Porzellan-Töff fahre erbrechen +Porzellan-Uusstellig WC +Porzellangrafitti mache aufs WC gehen +porzioniere Sex haben +Poschi öffentliche Verkehrsmittel (Postauto) +Pöschloch Gefängnis (Strafanstalt Pöschwies) +Pöschloch Orte (ausserhalb von Zürich) (Zuchthaus Pöschwies, Regensdorf) +Poscht-Ornig duregäh tadeln, massregeln +Poschtchartewätter Wetter (schönes Wetter) +poschte einkaufen +Poschte verlüüre entlassen werden +pöschtele einkaufen +Poschthode Soldat im Postdienst +Poschti öffentliche Verkehrsmittel (Postauto) +Pöschti Soldat im Postdienst +Poschti-Chörbli Auto +Poschti-Netzli Internet +Poschti-Täsche-Träger Freund, Partner +Poschtiwägeli Einkaufswagen +Pöschtler-Schreck Hündchen +Potänz-Chugle Spiegelei +Potänz-Granate Ei +Potänz-Granate Spiegelei +Potänz-Sprütze Pistole +Pötäterli Feuerzeug (franz. peut-être, weil es vielleicht funktioniert) +Potz Blitz! Das ist unglaublich! +Potz Blitz! Respekt! +Potz Cheib! Das ist unglaublich! +Potz Chuehorn! Das ist unglaublich! +Potz heilige Siech! Das ist unglaublich! +Potz Holzöpfel und Zipfelchappe Fluchwörter +Potz Holzöpfel und Zipfelchappe! Respekt! +Potz liebe Gödel! Respekt! +Potz Milione Das ist unglaublich! +Potz Tunner! Respekt! +Potz-Tunner-Chlapf und Hüehnermischt! Fluchwörter +Potzheidebritsch! Tatsächlich? +Potztuusig! Respekt! +Poulet-Schäär fürenäh entjungfern +Pozilei Polizist:in +prächtig gut +Prachtsluune binenand haa gut gelaunt +prägle braten +präglet es regnet +präglete Dräck schlecht +Praliné Marihuana (Mischung zwischen Marihuana und Haschisch) +Praliné vertrucke furzen +Pralli dicke Person +pralli Schueh Brüste (grosse Brüste) +Prängel Penis +Praschalleri Aufschneider:in, Angeber:in +Präser Kondom +Präss WC +prässe trinken, sich betrinken +Prässluft-Schuppe Tanzlokal (Club, Disco) +prässluftgfüllti Waldameise Hündchen +prätschet fetzige Musik (harter Rock) +Prätschete Schlägerei +prätscht abe Wetter (Regen) +preiche treffen +preschtiere bewältigen, meistern +Preservatif Kondom +pressiere hetzen +pressiere sich beeilen +presto sofort, zügig (ital.) +prezis eso genau so +prichte erzählen +Prima – primissima! Respekt! +prima-primissima sehr gut +Primeli-Monteurin – en Primeli-Monteur Gärtner:in +primissima gut +Prinz Kosenamen +Prinz Penis +Prinz schüttle urinieren (Männer) +Prinzässin Valium – de Prinz Valium langsame Person +Prinzli Kosenamen +priv primitiv +Pro Alleskönner:in (Abk. von engl. professional) +pröble arbeiten +Problem-Huufe Psychopath:in +proche müde, erschöpft (gebrochen) +Produktionsfähler Schimpfwörter +produziere ärgern, provozieren +Profässer-Chindlifrässer Lehrer:in +Profässer-Tintefrässer Ärztin/Arzt +Proffle Zähne +Profi Alleskönner:in +proile bluffen +Prokurischte-Stübli Bars, Cafés (Joe's Haifisch-Bar) +proleete schimpfen, beschimpfen +Promi Prominente (national) +Promill-Süüle Betrunkene:r +Prööbli näh kosten, probieren +Propeller Fliege +Prosak Feldprediger (Protestantische Sündenabwehrkanone) +Proscht bigoscht! Gesundheit! +Proscht Nägeli! Das ist unglaublich! +Proté Schimpfwörter (Uhren) +Provinz-Faschischte politische Parteien (SVP) +Prügel für die männliche Figur (stämmig) +Prügel Penis +pruuschte keuchen +PS-Chützler Motorradfahrer:in +Psalme-Pumpi Kirchenorgel +Psalme-Rapper Pfarrer, Priester +Psalme-Vergaaser Kirchenorgel +pschüüsst es lohnt sich +Pseudo-Tschuggeri – en Pseudo-Tschugger Securitas-Mitarbeiter:in +pständig zu wiederholtem Male +Psychatrin – en Psychater Psycholog:in, Psychiater:in +Psychepeter Psycholog:in, Psychiater:in +Psychi Gebäude, Lokalitäten (psychiatrische Klinik) +Psycho Psychopath:in +Psycho-Kathrin Psycholog:in, Psychiater:in +Psycho-Madratze Bart +Pubertäts-Beschlüüniger Mofa +Pubertäts-Ferrari Autos aus Italien (Alfa Romeo GTV oder getunter Fiat) +Pubertätsheliköpterli Mofa +Pubertätshüpfer-Träff Clubs, Discos (Mascotte) +Pubertätslafette Mofa +Pubertier Teenager:in +Pubertiereri – en Pubertierer Teenager:in +püderle pudern +Puff Bordell +Puff Stress +Puff Unordnung, Chaos +Puff miete Geld verschwenden (und das ganze Geld ist weg) +Puff-Brause Drinks (Prosecco) +Puff-Lise Chaot:in +Puff-Papi Prominente (international) (Puff Daddy, US-Rapper) +Puff-Tablette 5 Franken +Puffbrause Champagner +puffe streiten +Puffer-Zone Orte (ausserhalb von Zürich) (Aargau) +Püggel Akne +Püggel uf em Hals Kopf +Puggel-Pischte holprige Strasse +Puggele Löwenzahn +puggle tragen, schleppen (von Buckel) +Puggleri – en Puggler Schmeichler:in (bückt sich vor allen Höhergestellten) +Pulee Huhn (franz. poulet) +Puli Pullover +Pullover-Chueh Schaf +Puls gaht obsi sich ärgern +Pulver Geld +Pulverchopf Drogenabhängiger +Pülverli Medikamente +Puma Pilger Sandalen +Pummerli für die weibliche Figur (mollig) +Pump-Hose Unterhose +pumpe Geld ausleihen +pumpe-volle überfüllt +Pumpeflatteri Herzinfarkt +Pumpernüssli Erdnüsse +pumpete Hamschter Hündchen +Pumpi Gewehr +Pumpi Herz +Pumpi Versager:in, Verlierer:in +Pumpwimmersack Dudelsack +Pumuckl Rothaarige:r +Pündnerland Orte (ausserhalb von Zürich) (Graubünden) +pünktlet gepunktet +Püntel inehebe Sex haben +Püppi-Chratte Büstenhalter +Püppi-Halter Büstenhalter +Püppi-Hänki Büstenhalter +Püppis Brüste +Pürschtli Teenager:in +Purzelbaum Überschlag +purzle abrollen +pusche drängen (engl. to push) +Püsche Pullover +Puschle Bündel +Pusotter Pullover +Pussy Angsthase +Pussy Scheide (engl.) +Pussy-Toaster Sitzheizung +putt entzwei +putt kaputt +putt müde, erschöpft (Abk. von kaputt) +putt gah sterben (von kaputt) +putzig wütend +putzt und gstrählet fein raus +puudere zuschlagen +puupe bluffen +Püüpe Brüste +püüpele furzen +Puupeli Penis +Püüpi Nippel +puupse furzen +puupsle furzen +Puur am See Restaurants (Baur au Lac) +Puur de choschtet nur Bäuerin/Bauer +Puure-Bänz Auto-Typen +Puure-Bänz Auto-Typen +Puure-Cordon-Bleu Cervelat (Cervelat mit Käse und Speck) +Puure-Ferrari Traktor +Puure-Flugzüüg Traktor +Puure-Meitli – es Puure-Büebli Schweizer:in +Puure-Pföschte Beine (dicke Beine) +Puure-Pissi Apfelsaft +Puure-Porsche Autos von Subaru (Subaru Impreza) +Puure-Rock Volksmusik +Puure-Schüttle Schwingen +Puure-Tennis Faustball +Puure-Tennis Hornussen +Puure-Tochter – en Puure-Sohn Schweizer:in +Puure-Volleyball Faustball +Puurefängerei Lockvogel-Angebote +Puureschlaui – en Puureschlaue Schlitzohr +Puuretennis Schlägerei +Püürin – en Puur Bäuerin/Bauer +Püürli Brötchen (Semmel) (klein, dunkel) +puuschte furzen +PVD: Ponstan, Voltaren, Dispensieren Redensarten (Militär) (übliches Vorgehen von Armeeärzten) +Quadrat-Laatsche Schuhe (gross) +Quadrat-Latsche Füsse (grosse Füsse) +Quale-See Walensee (Walensee, wegen der Staus auf der alten San-Bernardino-Route) +Qualle Schimpfwörter +Quantefurz Schimpfwörter +Quäre-Wääg schief +quärewääg waagrecht +Quarktäsche Brüste +Quarzsand-Täsche Flasche +Quassel-Strippe Schwätzer:in +Quatsch mer keis Loch in Buuch! Halt die Klappe! +Quatsch mit Brot Blödsinn +Quatsch mit Soosse Blödsinn +Quätsch-Balke Handorgel +Quatsch-Chopf Schwätzer:in +Quätsch-Kommode Handorgel +quatsche reden, plaudern +Quätschti Kleingeld +quer eigenartig, seltsam +Quietsch-Kommode Handorgel +Rääbe Auto +Raabenaas Dummkopf +Rääf Korb (Rückentragkorb) +Rääf Schimpfwörter für Frauen (bissig) +Rääf Zicke +rääs scharf +rääss schnell +räässe Chäs Appenzeller:in +räässe Chäs Käse (scharf) +räässes Wiib Schimpfwörter für Frauen (unerträglich) +Rabautz Rüpel:in +rabautzig grob +Räbe Kopf +Räbel dünne Person +Räbeli zartes Kind +Räbeliechtli-Umzug Bräuche +räble laa mit Seriefeuer schiessen +räblet zuschlagen +Räche Gebiss +Räche Schimpfwörter (hässlich) +Rache tapeziere Oralverkehr (bei Männern) +Räche-Schieberi – en Räche-Schieber Buchhalter:in +Rächte Joint +rächte Kamelhaarpulli Brüste (grosse Brüste) +rächti Suppe Wetter (starker Nebel) +rächts Stuck ziemlich +rächts Walross dicke Person +Rächtsverdräjeri – en Rächtsverdräjer Anwältin/Anwalt +Rächtsvertrülleri – en Rächtsvertrüler Anwältin/Anwalt +rackere arbeiten (motiviert) +Raclette-Schieberi – en Raclette-Schieber Schweizer:in +Racorö Kotelett (es ranzigs Cotelett mit Röschti) +Rad schlaa bluffen +Radar Geschwindigkeitskontrolle +Radar-Falle Geschwindigkeitskontrolle +Radar-Ofe Mikrowellen-Ofen +Radauhänne Schimpfwörter für Frauen (streitlustig) +radibutz vollständig +Radiesli vo une gseh sterben +Radiesli vo une zelle sterben +Radiisli im Hirni haa verrückt +Radiisli vo une aaluege tot +Radio Puuremünschter uf de Magerchäswäle Medien (eh. Radio Beromünster) +Radio-Gmües Zwiebel (bei Blähungen) +Radio-Wanderer Fussgänger +Radio-Wanderig spazieren (wenn es viele Spaziergänger:innen hat) +raffe begreifen, verstehen +raffe bewältigen, meistern +Raffi Vornamen (männlich) (Raphael) +Raffi Vornamen (weiblich) (Raffaella) +Raffi Ghaddafi Schüttelreime +Raffle Gebiss +Raffle Zähne +Raffsch es? Hast du es begriffen? +Räge macht schön! es regnet +Räge-Räge-Tröpfli – es rägnet uf mis Chöpfli es regnet +Rägeboge-Hueschte haa erbrechen +Rageete Auto (schnell) +Rageete Motorrad (schnell) +Rageete Penis +Rageete Zigarette +Rageete i de Hose haa eine Erektion haben +Rageete zünde Oralverkehr (bei Männern) +Rageete-Aatriib furzen +Rageetli Joint +Rageetli Penis +Rageetli Tampon +rägele Wetter (ganz leicht regnen) +Rägeli Vornamen (weiblich) (Regula) +Rägemänteli Kondom +Rägemaschine Dusche +Rägerohr Ablaufrinne +Ragete Auto (schnelles Auto) +raggere Geld sparen +Rägi Vornamen (weiblich) (Regula) +rägnet us em Wulchefass – und alli Chindli werded nass es regnet +Rahm-Täfeli Bonbon (Rahm-Bonbon) +Rahme mache Fussball (Tor erzielen) +Ramazotti Italiener:in +Rambo-Rigel Bajonett (bei Tragen des Bajonetts an der Schulter) +Ramm-Büütel Kondom +rammle Sex haben +Rammlete Schlägerei +rammlig sexuell erregt +Rampe-Sou weitere Typen (steht gerne im Mittelpunkt) +Rand Mund +Rand am Huet haa betrunken +Randstei-Frääsi Motorrad +Randstei-gfiggeti Querfurz-Antilope Schimpfwörter +Randstei-Schürger Stadtpolizei Zürich +Rank finde sich einigen +Rännbahn um d Auge Augenringe +ränne joggen +Rännleitig Polizist:in +Rännsattel Cervelat +Rännseckel Fahrrad-Fahrer:in (Rennvelo-Fahrer) +Rännstrecke-Überwachigsfahrzüüg Streifenwagen +Ränte-Bängel Stumpen, Zigarre +Räntner-Mercedes Rollator +Ranze dicker Bauch +Ranze voll lache lachen +Ranze-Blitze Schmerzen im Unterleib (Mann) +Ranze-Chlämmer Wein +Ranze-Goisse Bauchschmerzen +Ranze-Halter Gurt +Ranze-Pfiiffe Bauchschmerzen +Ranze-Weh Bauchschmerzen +Ranzechlämmer Schnaps +Ranzeschnitte Schlägerei +Ranzeschnitte Schlägerei +ranzig hässlich +ranzig sauer +ranzig wütend +Ränzler schwimmen (Bauchlandung nach Kopfsprung) +Ränzler mache ins Wasser springen (Bauchlandung) +rapid schnell +Rappe-Chlämmeri – en Rappe-Chlämmer Geizhals +Rappe-Spalteri – en Rappe-Spalter Geizhals +Räppers-Wil Orte (ausserhalb von Zürich) (Rapperswil, von engl. rap) +Rappezälleri – en Rappezäller Appenzeller:in +Räpplispalter Angestellte:r +rapse Geige (grob spielen) +rasant schnell +raschte explodieren +raschte toben +Räschte-Figger Ballade +Rase spränge urinieren +Rase-Mäjeri – en Rase-Mäjer Coiffeur/Coiffeuse +Rasemäjer-Chnüttler Autofahrer:innen (mit kleinem Auto) +Rasier-Stüehl Kino (Sitze in der 1. Reihe, weil man immer den Kopf in den Nacken werfen muss) +räsoniere tadeln, massregeln (franz. raison) +Rasselbandi Kinder +rassig schnell +Rassle Brüste +Ratatouille Team +Rätoromantisch Rätoromanisch +Rätschbäsi Klatschmaul +Rätschbäsi Verräter:in +rätsche verraten, petzen +Rätschtante Klatschmaul +Rätselromanisch Rätoromanisch +Rätselromantisch Rätoromanisch +Rätteli Ratte +Ratteloch Abwasserschacht +rattere Sex haben +Ratti Ratte +rattig sexuell erregt +Rättli Verräter:in +ratzeputz vollständig +Räubergschichte verzelle lügen +Räucherstäbli Zigarette +Rauchi-Rohr Auto +raucht Chette Raucher +raucht wie en Bürschtebinder Raucher +raucht wie es Chämi Raucher +Raund-Abaut Verkehrskreisel (engl. round-about) +Raupe Penis +Ravioli-Harley Motorrad-Typen (Moto Guzzi) +Reaktion wie e alti Schlaftablette zu spät +recke schnuppern, auskundschaften (rekognoszieren) +Recycling-Logistikerin – en Recycling-Logistiker Müllfrau/Müllmann +Red düütsch Redensarten (Small Talk) (wenn jemand sich undeutlich ausdrückt) +Red mit minere Hand! Halt die Klappe! +Redli Wurstabschnitt +Redli z vill haa verrückt +Redlibueb Radfahrer-Soldat +Redsch Esperanto? unverständliche Sprache +Reg di ap! Beruhige dich! +regänte dominieren +Regi Vornamen (weiblich) (Regina) +Regierig Chef:in (Eltern oder Partner:in) +Regierig Freundin, Partnerin +Regierig Freundin/Partnerin +Rehbock Sportartikel (Reebok) +Rehfüdli-gääl gelb +Rehstreichleri – en Rehstreichler Schwächling +reiere erbrechen +Reise-Föhn Pistole +Reise-Kompi Computer (Laptop) +Reiseleiter Leutnant +Reisli Ausflug +Reisseckler Nidwaldner +Reki Rekrut +Rektalnutte Stricher (männliche Prostituierte) +Relais schweisse wütend (durchdrehen) +Relegiige Schule (Unterricht) (Religionsstunde) +Renault wäsche Oralverkehr (bei Männern) (siehe Renault-Logo) +Reparatur-Bierli Drinks (Konterbier) +Res Vornamen (männlich) (Andreas) +Rescht-Amateurin – en Rescht-Amateur Wirt:in (Restaurateur:in) +Reschti Restaurant +Reserve-Heiland Hippie +Reserverad Schimpfwörter (überflüssig) +Réservoir Restaurant +retour ässe erbrechen +retour verdaue erbrechen +Retour-Kutsche Vergeltung +Retourgang iilegge erbrechen +returschi rückwärts +Reuel Katze (Kater) +reüssiere erfolgreich sein (franz. réussir) +Revi Pistole (Revolver) +Revier markiere urinieren (in der Natur) +Revier markiere urinieren (Männer) +Revo-Fuzzi Querulant:in +Revoluzzer Querulant:in +Revoluzzer-Pantoffle Schuhe (Turnschuhe "Converse All Star", wegen dem roten Stern im Logo) +Revolver-Chuchi Kino (eh. Kino Nordstern an der Röschibachstrasse) +Rhätisch Kongo Orte (ausserhalb von Zürich) (Bündnerland) +Rialo Schimpfwörter (Riesen-Arschloch) +Ribiise Schimpfwörter (bösartig) +Ricci Vornamen (männlich) (Richard) +Richi Vornamen (männlich) (Richard) +Richtfäscht Hausbau (Aufrichtfest) +richtig isch andersch falsch +richtig ticke Schinke für die weibliche Figur (dick) +richtige Sunneschii gut gelaunt +richtigi Gwonet Angewohnheit +richtigs Chileliecht intelligent +Rieme Gurt +Rieme Penis +Rieme Zwischenverpflegung (Apfel, 2 Scheiben Brot, Cervelat, Tigerkäse, Thunfischdose, Schoggistängel etc.) +Rieme lääre urinieren (Männer) +Rieme lööse urinieren (Männer) +Rieme schliiffe Sex haben +Rieme schliiffe tadeln, massregeln +Rieme wie en Gloggeschwängel haa eine Erektion haben +Rieme-Spanner Ei +Riemespanner Pornoheft +Riemli-Schueh Schuhe (Sandaletten) +Riemli-Tramper Sandalen +Riesehirni kluger Kopf +Rife Blutkruste +Rife Hautverletzung (Blutkruste) +Rife-Chueche Akne +rigge einen Joint rauchen +riiche Seckel vermögende Person, Snob +Riife Rauhreif +Riife Wetter (gefrorener Tau) +Riis 1'000 Franken +Riis grosse Person +Riis-Chocher Ausländer (Asiate) +Riis-Chocher Motorrad-Typen (japanisches Motorrad) +Riis-Otto grosse Person +Riis-Schüssle Auto-Typen +riise- sehr +Riise-Böle für die weibliche Figur (grosser Busen) +Riise-Chischte für die weibliche Figur (breites Becken) +Riise-Gweih Schimpfwörter +Riise-Insäkt Hündchen +Riise-Rohr Penis +Riise-Schiff für die weibliche Figur +Riise-Schuss für die weibliche Figur (hübsch) +Riise-Vorbou Brüste (grosse Brüste) +Riise-W Schimpfwörter +Riisebolle grosses Stück +Riisig Tannenreisig +Riiss mer nöd de letscht Nerv uus! Hör auf! +Riiss-Verschluss Narbe +riisse anbaggern, aufreissen +riisse gewinnen +riisse reissen +riisse überholen +Riisser fetzige Musik +Riissverschluss zue mache rülpsen +Riit-Schuel Karussell +Riit-Stall Bett +riite Sex haben +Riithalle Schlafzimmer +Riiti Schaukel +riitigampfe baumeln (auf der Schaukel) +Riitigampfi Schaukel +Riitiplampi Schaukel +Riitseili Schaukel +Riläx! Beruhige dich! (engl. to relax) +riläxe sich ausruhen (engl. to relax) +Rindsnabel Rindsbraten +Rindviich Rüpel:in +ring leicht +Ringel-Reie Kinderspiele +Ringgeli-Ränggeli mache eine Kurve fahren +Rio-Sandale Flip-Flops +Rippe-Zwicker Wein +Rippeknackeri – en Rippeknacker Chirurg:in +rippsche abreiben +Ripsige Joint +Risotto-Grabe Kantone (Grenze zwischen deutscher und italienischer Schweiz) +rissig sii anbaggern, aufreissen (auf dem Aufriss) +ritiseile schaukeln (hängende Schaukel) +Ritsch Vornamen (männlich) (Richard) +Ritschi Chleiderhaagge Prominente (international) (Richard Claydermann, franz. Musiker) +ritschratsch schnell +Ritze Scheide +Ritze-Butzer Tanga +Ritze-Flitzer Tanga +Robber sii Sex haben +Roberto Blanco pleite +Röbi Vornamen (männlich) (Robert) +Robocops Stadtpolizei Zürich +Roboter mache Sex haben +robottere arbeiten +robuscht stattlich +röchele jammern, sich beklagen +Rochle Auto +Rock-Fidle elektrische Gitarre +Röckli Schwächling +rockt fetzige Musik +Rocky usehänke Schlägerei +Rodi Prominente (national) (Walter Roderer, Schauspieler) +Rofe Blutkruste +Röfe Vornamen (männlich) (Rolf) +Rohr Penis +Rohr verlegge Sex haben +röhre erbrechen +Röhre Fernseher +Röhre Mund +Röhre Penis +rohre schiessen +röhre schreien, rufen +rohre Sex haben +röhre – wie en Hirsch rülpsen +Röhre-Änte Flight Attendant (Flugbegleiter:in) +Rohrfüehrerstellig iinäh urinieren (Männer) (verbreitet bei Feuerwehrleuten) +Rohrkrepierer im Lauf verklemmtes Projektil +Röhrli-Tschiins Hose (enge Jeans aus den 80ern) +Rohrposcht versände stuhlen +Roiber und Bulle Kinderspiele +Röiber und Poli Kinderspiele (Fangspiel) +Roiber und Poli für Erwachseni S/M +Roiber-Höhli Restaurant (Spelunke) +Roiber-Höhli Restaurants (Tessiner Keller) +Roiberhöhli Tanzlokal (Club, Disco) +Roiberi – en Roiber Dieb:in, Einbrecher:in +Roland haa betrunken +rolexe bluffen +Roli Vornamen (männlich) (Roland) +Rollchrägeler Pullover +Rolli Pullover (Rollkragen) +rollig sexuell erregt +Rollo Sonnenschutz-Markise +Rollstuehllager Bars, Restaurants, Clubs (eh. Club Rohstofflager) +Roman Knilchszwerger Prominente (national) (Roman Kilchsberger, TV-Moderator) +römisch heize furzen +Römise Geräteschuppen +Romy Vornamen (weiblich) (Rosmarie) +Roobe Kleid (Ballkleid) +röödle Sex haben +rööschte Auto fahren +rööschte fahren +Rootfüchsin – en Rootfuchs Rothaarige:r +Röötschi Rothaarige:r +Rootschopf Rothaarige:r +rootwiiss Taxi Hubschrauber (REGA-Heli) +röözze urinieren +Röps Vornamen (männlich) (Robert) +ROR – ränne oder robbe militärische Abkürzungen +Roschee Prominente (national) (Roger Schawinski, Medienpionier) +Roscht in Turin montiert Autos von Fiat (Fiat Ritmo) +Roscht-Blitz Auto-Typen +Roscht-Büüle Rothaarige:r +roschtet scho im Katalog Auto-Typen +Roschthuufe Auto +Röschti Bars, Restaurants, Clubs (eh. Club Rohstofflager) +Röschti-Grabe Kantone (Grenze zwischen deutscher und französischer Schweiz) +Röschti-RS Kochkurs +Röschti-Tech Kochkurs +Roschtlaube Auto +Roschtwasser Eistee +Rosette-Stöpsel Vibrator +Rosettli After +Rösi Schwächling +Rosle Vornamen (weiblich) (Rosmarie) +Röslichöhl Rosenkohl +Ross für die weibliche Figur (stämmig) +Ross Pferd +Ross aabinde parken +Ross- und Teppichhändleri – en Ross- und Teppichhändler Gebrauchtwagenhändler:in +Ross-Bolle Pferd (Pferdeapfel) +Ross-Bolle go sueche müese pleite +Ross-Chopf Engländer:in +Ross-Gebiss Zähne (vorstehende Zähne) +Ross-Mörder Stumpen, Zigarre (schlechte Qualität) +Ross-Schwi Haare (Ross-Schwanz) +Ross-Seckel-Pfiife Klarinette +Rossbiss kneifen, zwicken (mit der ganzen Hand einen Körperteil kneifen, vorzugsweise den Oberschenkel) +rössig sexuell erregt +rössle fahren +Rössli Pferd +Rössli-Gschiir Unterhose +Rössli-Spiel Offiziere (der ganze Offiziersstab) +Rössli-Spiil Geschäftsleitung +Rösslispiil Karussell +Rösslispiil isch underwägs Regierung auf Reisen +rot vor Wuet wütend +rot wie-n-en Stier wütend +Rotchäppli isch uf Bsuech Menstruation +Röte töte einen Joint rauchen +roti Pfiil Eisenbahn (eh. SBB-Lokomotive) +rotiere sich abrackern +Rotliecht und Sireene uf em Tach haa explodieren +rots Buuchweh Menstruation +rötuur rückwärts (franz. retour) +Rotz Nasenschleim +Rotz-Brämsi Schnauz +Rötzcheib Autofahrer:innen (Raser) +rotzdicht betrunken +rötze fahren (forsch) +Rotze Kinder +rotze rennen +rotze schiessen +Rötzer Autofahrer:innen (Rowdy) +rotzfräch frech +Rotzgööfli Rüpel:in +Rotzgumsle Rüpel:in +Rotzhügel Nase +rotzig frech +Rotzlöffel schlecht erzogenes Kind +Rotznase Rüpel:in +Rötzsiech Autofahrer:innen (Raser) +RS – Riise-Schöppe Brüste (grosse Brüste) +RSL Bars, Restaurants, Clubs (Rohstofflager) +Rubbel-Präss Pornoheft +rubble kratzen +Rubel Geld +Rübezahl grosse Person +rübis und stübis vollständig +Rückliecht-Demo mache überholen +Rudel-Bums Gruppensex +Rudelbums sexuelle Praktiken (Orgie) +Rüdiger Deutsche:r +Rüebe Kopf +ruebe schlafen +Rüebeschnätzler Auto-Typen +Rüebli Karotte +Rüebli Kopf +Rüebli für d Büebli Karotte +Rüebli git schöni Büebli Karotte +Rüebli id Turnhalle gheje Sex haben +Rüebli vo une aaluege sterben +Rüebli-Chopf Rothaarige:r +Rüebli-­Frässeri – en Rüebli-­Frässer Aargauer:in +Rüebli-Hose Hose (ganz eng) +Rüebli-Kanton Orte (ausserhalb von Zürich) (Aargau) +Rüebli-Länderi – en Rüebli-Länder Aargauer:in +Rüebli-RS Hauswirtschaftsschule +Rüebli-RS Schule (Unterricht) (Hauswirtschaftsschule) +Rüebli-Turte Aargauer:in +Rüebligrenadier Küchenchef +Rüebliland Orte (ausserhalb von Zürich) (Aargau) +Ruech Rüpel:in +Ruech schüttle urinieren (Männer) +rueche unsorgfältig behandeln +Rueche-Golf Hornussen +Ruedi Vornamen (männlich) (Rudolf) +Ruedi mache jassen (mehr Punkte machen als die angesagten) +Ruedi Rüssel Penis +Ruedi-Schwelle Bremsschwellen (von Alt-Stadtrat Ruedi Aeschbacher) +Ruedi-Vertuedi Vornamen (männlich) (Rudolf) +Rueh uf de billige Plätz! Halt die Klappe! +Rüer-Wärch Gang einlegen (Handschaltung) +rüere sich trennen +rüere werfen, zuwerfen +ruesse Sex haben +Ruesszingge Nase +Ruete Penis +Ruete uusfahre eine Erektion haben +Rufe Blutkruste +Rüfe Blutkruste +Rüffel gäh tadeln, massregeln +Rugeli Bier (runder Humpen) +Rugeli dicke Person (mollig) +Rugeli Kosenamen +Rugge schnüüze aufs WC gehen +Rugge schnüüze stuhlen +Rugge-Pfnüsel Durchfall +Rugge-Tigerli Schimpfwörter für Frauen (leicht zu kriegen) +Rugi mache sich ausruhen +Ruheekanapee Sofa +ruigi Chugle schiebe arbeiten (leichte Arbeit) +Ruki Rekrut +Rulaade sööge einen Joint rauchen +Rulett-Chäfer Spielsüchtige:r +Rülps-Tüüte Schimpfwörter +Rülpsli Karotte +Rümlanger Chilbi-Griff begrabschen +Rumpelchischte Strassenbahn +Rumpelstilzli weitere Typen (kleiner Wichtigtuer) +rumpelsurig sauer +rumpelsurig unglücklich, deprimiert +rumpelsurig wütend +Rumpelsurri mürrische Person +Rumpeltrine Schimpfwörter für Frauen +Rumpeltruppe schlechte Band +Rumpf i de Landschaft Hügel +rumple Sex haben +rundi Füess haa betrunken +Rundi schmeisse eine Runde ausgeben +Rundi spicke laa eine Runde ausgeben +Rundi süüde schmusen +Rundum-Bläch Werkzeug (Rohr) +Rundumel Kreis +Rundumeli Verkehrskreisel +Rünggel Penis +Runggle Gewehrgranate +Runggle Rübe +Runkle Auto +rünnt undicht +rünnt eim dur d Händ Geld ausgeben, bezahlen +Rünzel Penis +Runzle-Flööte Handorgel +Runzlekoffer Handorgel +rupfe Kokain konsumieren +rupfe onanieren (Männer) +rupfe reissen +Rupfer Kokain-Konsument +Rüppelchnoche sii grob +Russe-Milch Vodka +Rüssel Auspuff +Rüssel Bars, Restaurants, Clubs (Elefant) +Rüssel Mund +Rüssel-Pescht Schnupfen +Rüsseltier Staubsauger +Russin – en Russ Welsche:r +Russland französische Schweiz +rüssle jammern, sich beklagen +Rutsch e chli Mach Platz! +Rutsch es Mü! Mach Platz! (Kurzzeichen des Präfixes „Mikro“ im SI-Einheitensystem) +Rutsch es Pfund Mach Platz! +Rutsch mer doch de Puggel ab! Du kannst mich mal! +Rutschfüdli Zappelphilipp +rutschig glitschig +rutscht eim de Kackschtift us de Buchse stuhlen +Rüttel Penis +Rüttelfilm Pornofilm +rüttle arbeiten +rüttle Sex haben +Rütze Joint +ruuch grob +ruuche Hals haa heiser +rüüche laa urinieren +Ruum-Entwickleri – en Ruum-Entwickler Maurer:in +Ruum-Kosmetikerin – en Ruum-Kosmetiker Reinigungskraft +Ruum-Pflägeri – en Ruum-Pfläger Reinigungskraft +ruume Gerümpel (entrümpeln) +Ruusch-Chugle Betrunkene:r +ruuschet im Tannewald zuschlagen +S-Mami-macht-mer-immer-no-d-Wösch-Mänsch Schwächling +sä Nimm's! +saage Cello (gleichgültig und laut spielen) +saage parken (ungeschickt einparken) +saage schnarchen +Sääk eine schlechte Idee (en Seich) +Saaltöff Servierpersonal +Saame setze Sex haben +Saame-Lööser-Musig Kuschelrock +säb isch klar sowieso +Sabber Speichel +Sabberi alter Mann +Sabberi Hund (Bernhardiner) +Sabberi Spanner +Sabberlatz Krawatte +Sabe Vornamen (weiblich) (Sabrina) +säbe, säbi jener, jene +Sabi Vornamen (weiblich) (Sabrina) +säble Fussball (reinrutschen) +Sable Vornamen (weiblich) (Sabrina) +SABTA - sicheres Auftreten bei totaler Ahnungslosigkeit militärische Abkürzungen +Sacco-Stinco Lastwagen (pseudo-ital. für Stinksack) +Sache git s, die git s gar nöd – und die git s no! Das ist offensichtlich +Sache la ligge wie d Hüehner de Mischt Unordnung, Chaos +sächs Bulle mit eim Horn Streifenwagen (Kastenwagen mit sechs Polizisten) +Sächser im Lotto Krönung, Höhepunkt +Sächsi im Lotto haa Glück haben +Sächsischüüsse Sechseläuten +sachtli sorgfältig, behutsam +sack betrunken +Sack Fussball (Ball) +Sack Hoden +Sack Kleid +Sack iichläme und ap sich beeilen +Sack lääre Samenerguss +Sack lääre Sex haben +Sack Marroni! Das ist unglaublich! +Sack uussuuge Oralverkehr (bei Männern) +Sack Zemänt Fluchwörter +Sack Zemänt! Das ist unglaublich! +Sack zue mache Fussball (klares Resultat erzielen) +sack- sehr +Sack-Chlüüber-Verein Jodelchor +Sack-Halter Unterhose (für Männer) +Sackbefehl Material auf Mann +Sackbilliard Hoden +säcke betrunken +säcke müde, erschöpft +Sackermänt! Das ist unglaublich! +Sackgäld Taschengeld +Sackgäld-Verdunschter Motorrad (125er) +Sackgäldverpuffer Mobiltelefon (Handy) +Sackgält-Verdunschter Mofa +sackgschiid intelligent +Sackhegel Sackmesser +sackhüpfe Oralverkehr (bei Männern) +Sacki-Verpacki Kondom +Sackläär-Inschtitut Bordell +säckle Fussball +Sackmässer uufmache eine Erektion haben +Sackrappe Taschengeld +Sackratte Filzlaus +Sackratte Schimpfwörter +Sackriisser Schaukel +Sackrolli Werkzeug (kleiner Handrollwagen) +sackstarch sehr gut +Sacktelefon Mobiltelefon (Handy) +sacktüür teuer +Sackvibrator Cello +Sackvibrator Mobiltelefon (Handy) +säd traurig (engl. sad) +säddere laa skifahren (laufen lassen) +safe abgemacht +safe auf jeden Fall +Saft Benzin +Saft elektrischer Strom +Saft inelaa Benzin tanken +Saft zum Gääre bringe schmusen +Saft-Ernti im Hode-Land onanieren (Männer) +Saft-Schlucker Motor +Saft-Schubse Flight Attendant (Flugbegleiter:in) +SaftiCar Streifenwagen (von Safety Car/Formel 1) +Saftlade Einkauf (Geschäft mit beschränktem Angebot) +Saftsack Schwächling +Säg au! Tatsächlich? +Säg emal! Tatsächlich? +Säge haa dominieren +säge, wo de Bartli de Moscht holt schimpfen, beschimpfen +säge, wo Gott hockt schimpfen, beschimpfen +säge, wo s dure gaht dominieren +Sägel-Ohre Ohren (abstehende Ohren) +Sagi Sägerei +Sägisse Sense +Sägisse Werkzeug (Sense) +Sägler-Diesel Bier +Sagmähl-Kurve Gipfel +Sagmähl-Kurve Nussgipfel +Sagmähl-Tango Schwingen +Sahara unbrauchbare:r Partner:in (wüst) +Sahara - e wüeschti hässlich +Sakramänt! Fluchwörter +Salä zur Begrüssung +Salam aleikum – wart, bis i hei chum Redensarten (Small Talk) +Salamaleikum – wart bis i hei chumm zum Abschied +Salami-Brüeder Italiener:in +Salami-Galopper Pferd +Salami-Stiefel Italiener:in (Italien) +Salami-Tiger Italiener:in +Salami-Tröchneri – en Salami-Tröchner Italiener:in +Salat Unordnung, Chaos +Salat-Stange Joint +sälber ässe macht feiss Egoist:in +Sälber gmacht? – Nei, sälber kauft! Redensarten (Essen) +Sälber vill profitiere politische Parteien (SVP) +Sälberglismets Hündchen (Pudel) +Salbi Wein (schlechter Wein) +Sälbschtli Fotografie (ein Selfie, engl.) +saldiere trinken, sich betrinken +Sale Vornamen (weiblich) (Salome) +Saletti zur Begrüssung +Saletti Babettli zur Begrüssung +Saletti Spaghetti zur Begrüssung +Sali zur Begrüssung +Sali – d Sunne schiint für ali zur Begrüssung +Sali mitenand – Gäggel i de Hand Schüttelreime +Sali-laat Salat +Sali-mit-de-Hand (statt "Sali mitenand"")" zur Begrüssung +Sali, Frau Galli zur Begrüssung +sälig tot +Salmonelle-Bar Bars, Restaurants, Clubs (Cindy's) +Salmonelle-Bomber Poulet +Salmonelle-Fäscht Ostern +Salmonelle-HG Ei +Salmonelle-Schnitte Desserts (Tiramisù) +Salü zur Begrüssung (franz. salut) +Saluti zur Begrüssung +Salve zur Begrüssung +Salz verlüüre weinen +Salz- und Pfäfferstreuer Gebäude, Lokalitäten (Grossmünster-Türme) +Same Kleingeld +Same-Löser Ballade +Same-Ritter Sanitäter (Samariter) +Same-Sprayer Penis +Sämi Vornamen (männlich) (Samuel) +Sami-Niggi-Näggi Sankt-Nikolaus-Tag (6. Dezember) +Samichlaus Bräuche (Sankt Nikolaus, Weihnachtsmann) +Samichlaus Sankt-Nikolaus-Tag (6. Dezember) +Samichlaus, lupf de Huet, d Fuuscht id Schnurre tuet der guet Redensarten (Small Talk) (Spruch für Samichlaus) +San-Gülle Orte (ausserhalb von Zürich) (Sankt Gallen) +Sandchaschte-Rockeri – en Sandchaschte-Rocker Teenager:in +sändele im Sandkasten spielen +Sändi Vornamen (männlich) (Sandro) +Sändi Vornamen (weiblich) (Sandra) +Sandsturm Gebäck (trocken) +Sandsturm Gugelhopf +Säne Vornamen (weiblich) (Sandra) +Sänf ad Wade! Beeil dich! +Sänger:in Hündchen +Sani Sanitäter +Sanihode Sanitäter +saniise sanft streicheln, fast kitzeln +Sanitöter Sanitäter +Sanitüter Sanitäter +sänkle tadeln, massregeln +Sankt-Galler-See Kuhfladen +Sankt-Güllerin – en Sankt-Güller St. Galler:in +Sänne-Puff Alphütte +Sänneball Schaulustige:r +Santehanserli Johannisbeeren +Säntis-Chegel Appenzeller:in +Sänzg Vornamen (männlich) (Sandro) +Sappere-Moscht Fluchwörter +Sapperlott! Respekt! +Sappermoscht und Truubesaft! Das ist unglaublich! +Sardine-Büchs Auto (Fiat 500) +Sardine-Büchsleri – en Sardine-Büchsler Stadtbewohner:in +Sargnagel Stumpen, Zigarre +Sargnagel Zigarette +Sargnagel montiere eine Zigarette rauchen +Sässel-Puupseri oder en Sässel-Puupser us de Teppich-Etaasche Kader-Mitglied +Sässelfurzer Beamte +Sässelfurzeri – en Sässelfurzer Kaufmännische:r Angestellte:r +Sässelhockeri – en Sässelhocker Chef:in/Vorgesetzte:r +Sässelitanz Kinderspiele +Sässelpuupser Beamte +Sattel Steak +Sattel-Chammere Schlafzimmer +satti Chlümpe für die weibliche Figur (grosser Busen) +sattle Sex haben +Satz heissi Ohre Ohrfeige +Satz heissi Ohre verpasse zuschlagen +Satz heissi Ohri gäh zuschlagen +sau- sehr +Sauce periode Tomatensauce +Säuger Baby +Sauna i de Sahara Nichtsnutz +Sausewind Fremdgänger:in +Savanne-Huscher Sandalen +Savanne-Huscherli Espadrilles +SBB-Ferie mache Urlaub machen (SBB: sünnele, bädele, bumse) +SBG SKA – suchen bis gefunden, sonst kein Ausgang militärische Abkürzungen +Schaaf Tampon +Schääfli-Wulche Wetter (kleine Wolken) +Schaaggi Vornamen (männlich) (Jacques) +Schaaggi-Schnaaggi Eisenbahn (eh. SBB-Lokomotive) +Schaale Anzug +Schaambei-Antilope Filzlaus +Schaba Joint +Schabe Freundin, Partnerin +schäbig daneben, verwerflich +schäbig geizig +schäbig schlecht +schäche schauen +Schade Schokolade Schüttelreime +Schädel Kopf +schadiere trinken, sich betrinken +schaffe arbeiten +Schaffhuuser Wulle Haare (sehr dichte Haare) +Schaffi Arbeitsplatz +Schaffomat Arbeitsplatz (Fliessband) +Schäfli-Wulche Wetter (kleine Wolken) +Schafseckel Fiesling +Schafseckel Schimpfwörter +Schafsee… leguete Mänsch Schimpfwörter (von Seckel) +Schafsmage-Würger Dudelsack +Schaft Schrank +Schahindi Joint +Schale Kaffee +Schale Kleidung +Schalee Alphütte (franz. chalet) +Schälle Hoden +Schälle Kuhglocken +Schälle Sonnerie, Türglocke +Schälle-Betong Ei +Schälle-Chefi Unterhose (für Männer) +Schälle-Tramperi – en Schälle-Tramper Tram-Chauffeuse/Tram-Chauffeur +Schälle-Ursli Aufschneider:in, Angeber:in (macht Lärm bei jeder Heldentat) +Schällejass jassen (Spielart) +schället explodieren +Schället s? Spinnst du? +Schalt-Getriebe Penis +Schäm-Griite Crèmeschnitte +schambriere schmusen +Schämer Schande +Schamhaar-Glatze Krauskopf +Schamlippe-Zitterer Velosolex +Schamlümpe Scheide +schampaar sehr +Schamparglatte Champagner +Schampe Vornamen (männlich) (Jean-Pierre) +Schämpi Vornamen (männlich) (Jean-Pierre) +Schämpiss Champagner +Schampuss Champagner +Schamritzel Rahmschnitzel +Schandarm Polizist:in (franz.) +Schanghai-Röschti Reis +Schangli Angestellte:r +Schangli Freund, Partner +Schangli Freund, Partner (missliebig) +Schänkel-Bürschte Bart +Schänkel-Bürschte Schnauz +Schänkeli Gebäck (Fasnachtsgebäck) +schänkt ii es lohnt sich +Schanti-Stängel installiere einen Joint rauchen +Schanzchnoche Schaufel (militärisch) +Schapoo! Respekt! (franz. chapeau) +Schapp dir en Sattel! Nimm Platz! +Schappi Prominente (national) (Stéphane Chapuisat, eh. Fussballer) +Schäreschliifer unzuverlässige Person +scharf gut +scharf wie-n-e Trännschiibe sexuell erregt +scharf wie-n-es Chuchimässer sexuell erregt +Schäriff Chef:in (von engl. sheriff) +Scharmör Frauenheld (franz. charmeur) +Scharr-Ise montiere anbaggern, aufreissen +scharre anbaggern, aufreissen +Schatte-Parkiererin – en Schatte-Parkierer Schwächling +Schattehang Suurgörpsler Wein (schlechter Wein) +Schätteli weitere Typen (unscheinbare Frau) +Schatz Freund, Partner +Schatzalp Orte (in Zürich) (Heimplatz beim Kunsthaus, weil sich früher Mädchen und Buben der benachbarten Kantonsschulen dort trafen) +schätzele schmusen +Schätzeli Kosenamen +schätzelig niedlich +Schätzi Kosenamen +Schätzli haa sich verlieben +schaurig schrecklich +Schawi Prominente (national) (Roger Schawinski, Medienpionier) +Schawi, Gilli und das Pattatütt Prominente (national) (eh. Tele24-Crew) +Scheese Dummkopf (dumme Frau) +Scheese Schimpfwörter für Frauen +Scheesewage Kinderwagen +Scheff Alleskönner:in +Scheffin – de Scheff Chef:in (franz. le chef) +Scheffin – de Scheff Chef:in/Vorgesetzte:r +Schegg Führerausweis +Scheiche Beine +Scheiche Füsse +Scheiche wie Eiche, wo d Hünd dra seiche Beine +scheike tanzen (engl. to shake) +Scheisse boue einen Fehler machen +Scheiter 50 Franken +Scheitle trucke kämmen +Schejeli Holzscheit +schejkere flirten +Schelfere Fruchthaut +Schelfere Schale +Schell mi nöd! Hör auf! +Schelmeli Einkauf (Jelmoli, wegen den Preisen) +Schemel Stuhl +Schemeli Stuhl +schepps schief +Scherbe Schallplatte +Scherbe Zahnprothese +Scherbeliquartier Orte (in Zürich) (Kreis 4) +Schere-Stei-Papier mache ausknobeln +Scheriff Freundin, Partnerin (engl.) +Scheriff sii bewältigen, meistern +Scherpa Servierpersonal (Sherpa) +Schguus? Das ist unglaublich! (aus dem Rätoromanischen) +Schi-Schi Schnick-Schnack +Schi… butti WC +Schibi Schimpfwörter (Steigerung von Schickimicki) +schicke sich trennen +Schicki-Micki Jetsetter:in +Schicksch e Charte, wänn d dobe aachoo bisch in der Nase bohren (Redensart) +Schieb ap! Hau ab! +Schieb emal es Foun übere Ruf mich an! (engl. phone) +Schieb kei Optik! Das nervt! +schiebe flüchten, davonrennen +schiebe Sex haben +Schiebedach Glatze +Schieber Freund, Partner +Schieber Pornofilm +schief aamache ärgern, provozieren +schiefe Babi Prominente (national) (Shiva Arbabi, Moderatorin Radio 24) +schiefi Peilig haa betrunken +schier beinahe +schier knapp +Schifer Freund, Partner +Schiff voll sehr viel +schiffe urinieren +schiffet es regnet +schiffet Wetter (Regen) +Schiffi WC +Schiffli-Stickeri – en Schiffli-Sticker St. Galler:in +Schigg Kaugummi +schigg à la Wahnsinn gut angezogen +Schigolo Frauenheld +Schii-Schueh Fussball (unbegabt) +Schii-Schueh deponiere stuhlen +Schii-Tote-Vereinigung Männerriege +schii… fahre stuhlen +Schiibe 5 Franken +Schiibe Schallplatte +Schiibe haa müde, erschöpft +Schiibe iischlaa entjungfern +Schiibe Mähl Brot +schiifahre Kokain konsumieren +Schiikanone Alleskönner:in (Skifahrer) +schiile skifahren +Schiilehrer-Rivella Bier (grosses Bier im Rivella-Glas) +schiine skifahren +schiint s anscheinend +schiints offenbar +schiiss- sehr +Schiiss-Grind Schimpfwörter +Schiissächerli uussprütze Durchfall +Schiissalpino Eisenbahn (Pannenzug Cisalpino) +Schiissbach abgah verlieren +Schiissdräck Kot +Schiissdräck mache Schabernack treiben +Schiissdräck! Fluchwörter +schiisse stuhlen +Schiisser Durchfall +Schiisserli Kleinkind +schiissfrüntlich kriecherisch +Schiissgass Abwasserschacht +Schiissgass durabgheje hereinfallen +Schiissgelte Wiesenschaumkraut +Schiisshafe Feigling +Schiissi WC +Schiissi spitze Unfall (mit dem Motorrad verunfallen) +Schiissi-Teckel Fluchwörter +Schiissi-Teckel Klosettbrille +Schiissi-Trichter Fussball (Schiedsrichter:in) +Schiisspaschteete Nussgipfel +schiisst mi aa Das nervt! +schiisst mi aa! Mir reicht's! +Schiisstee Eistee +Schiit Kopf +Schiit im Hals haa Nackenstarre +Schiitli Holzscheit +Schiitli-Verbannis Kinderspiele +Schiiwerfer Brüste +Schildchröttli Motorrad-Zubehör (Rückenpanzer und Helm) +Schilee-Münz Taschengeld (von franz. gilet) +Schilliping sii schielen +Schilte-Sibni wertlos +Schimmel im Gsicht Bart (modischer Wochenbart) +Schimmel vom Salami chratze onanieren (Männer) +Schimmelpilz-Zucht schlecht isolierte Wohnung +Schimpanse-Gipfeli Banane +Schimpf Schande +schimpfe tadeln, massregeln +Schindeli Holzscheit +Schinderi – de Schinder Chef:in +Schindluederei Blödsinn +Schine Beine +Schine bis uf Rom für die weibliche Figur (lange Beine) +Schine-Pilotin – en Schine-Pilot Tram-Chauffeuse/Tram-Chauffeur +Schinti Schale +Schiri Fussball (Schiedsrichter:in) +Schirm iistelle Sex haben +Schirm in Egge stelle sterben +Schirm zue tue sterben +Schirm zuemache müde, erschöpft +Schiss haa Angst haben +Schiss-Chegel Angsthase +Schiss-Haas Angsthase +Schissdräck i de Kadi-Mütze/isch die bescht Gedächtnisstütze! Redensarten (Militär) +Schissdräck mit Bohne – wäh – Boohne! Blödsinn +schisshäsig ängstlich +Schitt schlecht (engl. shit) +schitter schlecht +schitter bis bewölkt schlecht +schkusi Entschuldigung (ital. scusi) +Schlaaf emal drüber! Beruhige dich! +Schlaag Wohnung (auch für Zimmer) +Schlaarggi Flächenmaler:in +Schlaarpe-Güüsseri – de Schlaarpe-Güüsser Schuhmacher:in +Schlabber-Hose Hose (sitzt nicht) +schlabbere knutschen +schläbe müde, erschöpft +schlächte Kanton weitere Typen (unzuverlässig) +schlächti Laguune ha unglücklich, deprimiert +Schlachtschiff dicke Person +Schlachtschiff dicke Person (stämmig) +Schläck-Chugle Hoden +Schläck-Zäpfe Brustwarzen +Schläckbäsi Liebhaber:in von Süssigkeiten +Schlacke-Chessel Aschenbecher +Schläcker Kuss +Schläckerli Kosenamen +Schläcki Lollipop +Schläckmuul Liebhaber:in von Süssigkeiten +Schläckstängel Freier +Schläckstängel Lollipop +Schläckzüüg Süssigkeiten +Schlafchappe Faulpelz +Schlafchappe langsame Person +Schlafchappe Langweiler:in +schlafe trödeln +schlafe wie es Velo – uf em Ständer eine Erektion haben +schlafendi Tschuggeri – en schlafende Tschugger Bremsschwellen (Polizist:in) +Schlafhuube langsame Person +Schlafsack Faulpelz +Schlafsch scho? Beeil dich! +Schlafstell Bett +Schlafstörig Baby +Schlaftablette Faulpelz +Schlaftablette langsame Person +Schlaftablette Langweiler:in +Schlaftmeischtens Wachmeister +Schlafzimmerwind furzen +Schlag ii! Abgemacht! +Schlag is Gsicht überchoo eine Abfuhr erhalten +Schlaglöcher fülle eine Zigarette rauchen +Schlagrahm ohni Schuum Milch +Schlagsiite haa betrunken +Schlamm-Teckel lupfe erbrechen +schlammasselig niederträchtig +Schlammdeponie Bordell +Schlammsack Schimpfwörter +Schlammteckel isch offe Mundgeruch +Schlampe Chaot:in +schlampe einen Joint rauchen +Schlämpe Milch (Fetzen in der Milch) +Schlämpe Rahm (auf der Milch) +Schlampe Schimpfwörter für Frauen (schlampig) +schlampe unsorgfältig behandeln +Schlampe unzuverlässige Person +Schlampe-Wasser Champagner +Schlampehobel Freier +Schlampehobel Fremdgänger:in +Schlamperich Chaot:in +Schlampi Chaot:in +schlampig verwahrlost +schlampig welk +Schländer Deutsche:r (von Deutschländer) +Schlange mälche onanieren (Männer) +Schlange quäle urinieren (Männer) +Schlange würge onanieren (Männer) +Schlange-Brot Brot (Brotteig, am Spiess über offenem Feuer gebraten) +Schlange-Fraass ungeniessbares Essen +schlänkere baumeln (mit den Beinen) +schlapp müde, erschöpft +schlapp mache aufgeben, resignieren +Schlapp-Flop Computer (Laptop) +Schlappe Schuhe (Hausschuhe) +Schlappe usezieh verlieren +Schläppli Schuhe (Hausschuhe) +Schlappschwanz Schwächling +Schlarpe Reifen (breite Reifen) +Schlarpe Sandalen +schlarpe schlurfen +Schlarpe Schuhe (Hausschuhe) (Schlupfschuhe) +Schlau-Meieri – en Schlau-Meier Schlitzohr +Schlaumeieri – en Schlaumeier kluger Kopf +Schlaumeieri – en Schlaumeier vife Person +Schlawiner Schlitzohr +Schlawineri – en Schlawiner Lausemädchen/Lausbub +Schlawinski Prominente (national) (Roger Schawinski, Medienpionier) +Schleedornhaag alte Frau (weisshaarig) +Schlegel Bier +Schlegel Werkzeug (grosser Hammer) +schlegelawegge sofort, zügig +Schlegi Schlägerei +Schlegi gäh zuschlagen +schlegle zuschlagen +schlegle zuschlagen +Schleglete Schlägerei +Schlegli Schlaganfall +Schlegli Schlägerei +Schleickhöde Hoden +Schleik-Hode Schmerzen im Unterleib (Mann) +schleike tragen, schleppen +schlemmere essen +Schlendrian langsame Person +Schlepp-Eichle haa eine Erektion haben (Erektionsstörungen) +Schlepp-Top Computer (Laptop) +schletze die Türe zuschlagen +schletze essen +schletze Geld ausgeben, bezahlen +schletze Geld verschwenden +Schletzete Schlägerei +Schlick Schlinge +Schliere Fleck +Schliferschii Lieferschein +schlifrig glitschig +schlifrig Wetter (Eisglätte) +Schliich di! Hau ab! +schliiche fahren (langsam) +Schliicher Autofahrer:innen (langsam) +Schliicher Kuschelrock +Schliicher langsamer Autofahrer +Schliicher Schmeichler:in +schliife laa nachlassen +Schliifer unzuverlässige Person +Schliiffer Schlitzohr +Schliifi aarüschte anbaggern, aufreissen +Schliifpapier Werkzeug (Sandpapier) +Schliifschueh fahre eislaufen +schliifschüehnle eislaufen +Schliift s dir im Öpfel? Spinnst du? +Schliift s? Spinnst du? +Schliim-Griite Crèmeschnitte +schliime hofieren, schmeicheln +schliimig weich, matschig +Schliimspur hinderlaa hofieren, schmeicheln +schliisse essen +schliisse jemanden fertigmachen +schliisse töten +schliisse zerstören +Schlingel Lausemädchen/Lausbub +schlipfig glitschig +schlipfisele eislaufen +Schlips Krawatte +Schlips-Träger Bankangestellte:r +Schlirgg im Feiss haa betrunken (engl. face) +Schlirgg riisse bremsen +Schlirgge Fleck +schlirgge malen +Schlirggi Flächenmaler:in +Schlirpi Flächenmaler:in +Schlitte Auto (gross) +Schlitte Eisenbahn +Schlitte Mund +Schlitte hebe schweigen +Schlitte mache nach Hause gehen +Schlitte uusfahre Oralverkehr (bei Männern) +schlittle Kokain konsumieren +schlittle rodeln +Schlitz Scheide +schlitze betrügen +Schlitzgiige-Riige Damenriege +Schloiel Schlitzohr +schlööfle schlafen +Schlööfli näh sich ausruhen +Schloot Zigarette +Schloot im Gsicht haa eine Zigarette rauchen +schloote eine Zigarette rauchen +schlootet wie e Dampfloki Raucher +Schlorziflade Toggenburger +Schlössli Gebäude, Lokalitäten (Psychiatrische Anstalt, Oetwil a.S.) +Schlot Kamin +schlottere frieren +Schlotterhose Nelken (rote Lichtnelke) +Schlotteri haa Angst haben +Schlotteri überchoo bewundern +Schlötterlig aahänke schimpfen, beschimpfen +schlotze schlecken (Bonbons) +Schluchtejodleri – en Schluchtejodler Österreicher:in +schluchzge weinen +Schluchzgi Jammerlappen +Schluck eine kleine Menge Flüssigkeit +Schluck abe, bevor d öppis seisch! unverständliche Sprache +Schluck us em rasierte Tässli näh Oralverkehr (bei Frauen) +Schluck-Spächt Trinker:in, Alkoholiker:in +Schluckspächt Auto (hoher Benzinverbrauch) +Schluckspächt Betrunkene:r +Schludderi Chaot:in +Schludderi unzuverlässige Person +schludere beschmutzen +schludere unsorgfältig behandeln +schludige giged Sie mich Entschuldigung +schludrig unsorgfältig +Schlufi Schimpfwörter +Schlufi unzuverlässige Person +Schlufihund Schimpfwörter +Schlumi Schnaps (ein Schlummertrunk) +Schlummer-Mueter weitere Typen (vermietet Zimmer) +Schlummer-Tüüte Schlafsack +Schlummerbächer Drinks (letzter Drink vor der Nachtruhe) +Schlummi Drinks (letzter Drink vor der Nachtruhe) +Schlümpf Kinder +Schlumpf Polizist:in (Polizist:in in Demo-Montur) +Schlumpf Rekrut +Schlümpf Stadtpolizei Zürich +schlüpferig glitschig +schlürfle trinken, sich betrinken (laut trinken) +Schluss – Aus – Amen! Jetzt reicht's! +Schluss fidibuss! aufgeben, resignieren +Schluss jetz! Hör auf! +Schluss mache sich trennen +Schluss-Bier Drinks (letzte Runde) +Schlüssel-Chind Kinder (wenn es den Schlüssel um den Hals trägt, weil die Eltern nicht zu Hause sind) +Schlüsseli Schlüsselblume +Schlüsselloch nüme finde betrunken +schlüssle reparieren +Schlutziwaar Süssigkeiten +Schlüüch Hose +Schlüüch Unterhose +Schluuch fülle essen +Schlüüch fülle schlemmen +Schlüüch sind läär müde, erschöpft +Schlüüch voll haa Angst haben +Schluuch-Garage Freundin, Partnerin +Schluuch-Meitli – en Schluuch-Bueb Feuerwehrfrau/Feuerwehrmann +Schluuch-Öpfel Banane +schluuche das Letzte herausholen +schluuche schikanieren +schluuchig anstrengend +schlüüchle einen Joint rauchen +Schluuchmilch Milch (Milch im Plastikbeutel) +Schlüüdere Schimpfwörter für Frauen +Schlüüdertrauma Brüste (grosse Brüste) +schlüüfe entwischen +schlüüfe ungestraft davonkommen +schlüüft grad eso es geht so +Schlüüss-Gufe Nadel (Sicherheitsnadel) +schmale Wurf für die männliche Figur (schmächtig) +Schmalschpur- ganz wenig +Schmalzdaggel Österreicher:in +Schmarre Blödsinn +Schmarre eine schlechte Idee +Schmätter haa traurig +Schmätterball Tischtennis (Smash) +schmättere Tischtennis (Smash) +schmättere werfen, zuwerfen (scharf) +Schmätterling Fliege +Schmätterling Scheide +Schmätterling im Buch flattered sich verlieben +Schmättervogel Schmetterling +Schmatz Kuss +Schmatz gäh küssen +Schmatz-Gummsle Ehrendame +schmauche eine Zigarette rauchen +schmeisse entsorgen, wegwerfen +Schmier Polizist:in +Schmier Stadtpolizei Zürich +Schmier isch läufig Polizist:in +Schmier-Nippel Brustwarzen +schmiere jassen (Karte mit hohem Punktwert dem Partner geben) +Schmierfink Journalist:in (wenn Schlechtes geschrieben wird) +Schmierheini Journalist:in (wenn Schlechtes geschrieben wird) +Schmieri Flächenmaler:in +Schmierinski Journalist:in +Schmierlappe Polizist:in (Streifenwagen) +Schmierlappe Scheide +Schmierlappe Stadtpolizei Zürich +Schmierlappe Streifenwagen +Schmierlatz Polizist:in +Schmink-Trückli Schimpfwörter für Frauen (stark geschminkt) +Schminkchaschte is Gsicht schmeisse sich schminken (stark schminken) +Schmirgelpapier Werkzeug (Sandpapier) +Schmirgelpapier im Hals haa heiser +Schmöck-Schiit Nase +schmöcke riechen +schmöcke, wo s wiiter gaht Zungenkuss +Schmöcksch de Böögg? Alles klar? +Schmöcksch de Töff? Alles klar? +Schmöcksch de Töff? Hast du es begriffen? +Schmöcksch die Fuuscht? Pass auf, sonst knallt's! +Schmöcksch, wie s töötelet? Pass auf, sonst knallt's! +schmoitze einen Joint rauchen +schmoore schmusen +schmoringgsle umbringen +Schmuddle Schimpfwörter für Frauen (schmuddlig) +Schmudle unzuverlässige Person +Schmunzus Blödsinn (jidd. Schmonzes) +schmürze einen Joint rauchen +schmürzele schwelen +schmürzele sparsam mit Geld umgehen +schmürzelet öppis Redensarten (Arbeit) (wenn es nach einem Kurzschluss verbrannt riecht) +schmürzelig geizig +schmuse schmusen +schmüsele schmusen +Schmuttere für die weibliche Figur (dick) +Schmutzli Bräuche (Helfer des Samichlauses) +Schmützli Kuss +Schmüüsi schmusen +Schnaagg Mücke (grosse Stechmücke) +schnaagge kriechen +schnaagge schleichen +Schnaagge-Hügeli Brüste (kleine Brüste) +Schnaaggeböögg Blödsinn +Schnaaggi langsame Person +schnaaggsle Sex haben +Schnäbe Schnaps +Schnäbel Schuhe +Schnabel-Gurke Schuhe +Schnabel-Ränner Schuhe +Schnäbeli Penis +Schnabelkack Blödsinn +Schnabelwetzeri – en Schnabelwetzer Schwätzer:in (Schnellsprecher:in) +Schnäbi Penis +Schnäbi chätsche Oralverkehr (bei Männern) +Schnäbi gäh sich beeilen +Schnäbi spaziere füehre eine Affäre haben +Schnäbi-Bidet Helm +Schnäbi-Chätscheri – en Schnäbi-Chätscher Schimpfwörter +Schnäbi-Lupf-Musig Kuschelrock +Schnäbi-Lupfer Mofa +Schnäbichätscher unzuverlässige Person +Schnäbis Crevetten +Schnäbizägg Filzlaus +Schnäbizägg Schimpfwörter für Männer +schnabuliere essen +schnabuliere schlemmen +Schnädder-Änte Klatschmaul +Schnädderi Schwätzer:in +Schnadehüdeli Kosenamen +schnädere reden, plaudern +Schnäfeli ganz wenig +Schnäfeli näh kosten, probieren +Schnafi Bars, Cafés (Kafi Schnaps) +Schnäfi ganz wenig +schnäfle schneiden +Schnäfleri – en Schnäfler Chirurg:in +Schnägg 5 Franken +Schnägg langsame Person +Schnägg Scheide +Schnägg befüechte Oralverkehr (bei Männern) +Schnägge vertrucke trödeln +Schnägge-Frässeri – en Schnägge-Frässer Französin/Franzose +Schnägge-Himmel Salat +Schnägge-Schliim Honig (Honig mit Butter gemischt) +Schnägge-Schliim Sülze +Schnägge-Sörfer Slip-Einlage +Schnägge-Uufläseri – en Schnägge-Uufläser Schwächling (naturverbunden) +Schnäggechäfer Kosenamen +Schnäggerüttler Cello +schnäggle schleichen +schnäggle trödeln +schnägglet mi aa! Mir reicht's! +Schnäggli Kosenamen +Schnäggli Scheide +schnäll anesitze aufs WC gehen +schnäll drüber One Night Stand +schnäll für chlini Flamingos gah aufs WC gehen +schnäll go abhocke besuchen +schnäll go Grüezi säge besuchen (Kurzbesuch) +schnäll go inegüxle besuchen +Schnall haa bewältigen, meistern +Schnäll-Schwätzeri – en Schnäll-Schwätzer Deutsche:r +schnalle begreifen, verstehen +schnalle bewältigen, meistern +Schnalle Freundin, Partnerin (wo man den Riemen/Gurt durchzieht) +schnäller vo Null uf Hundert als en 911er mit Föhn wütend (Porsche Turbo) +schnäller zeichnet als gfötelet dünne Person (sehr dünn) +Schnällfahr-Zueschlag Geschwindigkeitsbusse +Schnallsch es? Alles klar? +Schnallsch es? Hast du es begriffen? +Schnällschiisser-Hose Hose (Hip-Hopper-Hosen) +Schnällvögler-Grawatte Fliege +Schnällvögler-Schüeli Schuhe (elegant) (leichte, elegante Halbschuhe) +Schnäpfe Freundin, Partnerin +Schnäpfe Schimpfwörter für Frauen +Schnapp ap! Hau ab! +Schnapp ap! Hau ab! +schnappe begreifen, verstehen +schnappe fangen +schnappe überholen +Schnäpper Mofa +Schnäpper öffentliche Verkehrsmittel (Tram) +Schnäppere Schimpfwörter für Frauen +schnäppere schnellen +schnäpperle schmusen +Schnäppli günstig +Schnappschuss Fotografie +Schnappschuss mache fotografieren +Schnaps gäh Gas geben +Schnaps-Asylant Stabs-Adjutant +Schnaps-Bagger Trinker:in, Alkoholiker:in +Schnaps-Fass Betrunkene:r +Schnaps-Liiche Betrunkene:r +Schnapsidee eine schlechte Idee +Schnapsidee Hirngespinst +schnäpsle trinken, sich betrinken (chronisch Schnaps trinken) +Schnäpsler Freund, Partner +Schnäpsli Schnaps +Schnapsnase Betrunkene:r +Schnarchbahn öffentliche Verkehrsmittel (Forchbahn) +Schnarchnase Langweiler:in +Schnatte Hautverletzung +Schnatte kleine Verletzung +schnattere furzen +Schnattere Hautverletzung +Schnattere Wunde +schnätzle schneiden +Schnätzlerin – en Schnätzler Chirurg:in +Schnätzli Kosenamen +Schnauz 100 Franken +Schnauz Zigarette +Schnauze-Mech Zahnärztin/Zahnarzt +Schnauze, Fury! Halt die Klappe! (aus der TV-Serie “Fury”) +Schnauze! Halt die Klappe! +Schnäuzli Schnauz +Schnee Geld +Schnee Kokain +Schnee im Summer Kokain +Schnee ruume Kokain konsumieren +Schnee vo geschter schlecht +Schnee-Chette Zahnspange +schneebrättle snowboarden +Schneeglöggli Schneeglöckchen +Schneemaa-Rüebli Meerrettich +Schneenase Kokain-Konsument +schneesörfe snowboarden (engl. to surf) +Schneewittli mache sich an einem Apfel verschlucken +schneiele Wetter (leicht schneien) +schneife klauen, stehlen +schnelle klauen, stehlen +Schneugge Mund +Schnibe Freundin, Partnerin +Schnibo Penis +Schnidel Penis (von Schniedelwutz, Otto Waalkes) +Schnifeli ganz wenig +Schnigel-Roobe Anzug +Schnigischnägi weitere Typen (geschniegelter Mann) +Schniider haa Menstruation +Schniposa Schnitzel (Schnitzel, Pommes-Frites, Salat) +Schnipp-Schnapp! Beruhige dich! +Schnippo Sacco Schnitzel (Schnitzel, Pommes-Frites, Salat, Cola) +Schnippo-Töff Servierpersonal +schnipsle schneiden +Schnitte Freundin, Partnerin +Schnitte Kosenamen (Sahneschnitte) +Schnitte Scheide +Schnitte-Zipfel Schinkengipfel +Schnitteli Brot (Butterbrot) +Schnittlauch-Locke Haare (glattes Haar) +Schnitz Schlägerei +Schnitz uustrucke urinieren +Schnitzel-Töff Joint +Schnitzelbank mache reimen, dichten +Schnoddergönggel Kinder +schnoderig frech +schnoigge schnuppern, auskundschaften +Schnoigge poliere Schlägerei +Schnöigge voll ganz wenig +Schnöiggeli ganz wenig (ganz wenig in den Mund nehmen) +Schnoiggi Mund +Schnör Ingenieur:in +Schnorchel Stumpen, Zigarre +schnöre reden, plaudern +Schnörre Mund +Schnörrli Mund +Schnösel Schimpfwörter (eingebildet) +Schnudder-Balke Crèmeschnitte +Schnudderbeeri Taxusbeere (Taxusbeere) +Schnudderbueb Teenager:in +schnuddere Schnupfen +Schnuddergoof Teenager:in +Schnudderhund Fiesling +Schnudderi Rüpel:in +Schnuder Nasenschleim +Schnuder-Aff schlecht erzogenes Kind +Schnuder-Brämsi Mund +Schnuder-Goof schlecht erzogenes Kind +Schnuder-Nase Nase (laufende Nase) +Schnuder-Tüüte Vanille-Cornet im Blätterteig +Schnuderbeeri Eiben-Beere (rote Frucht) +Schnuderbeeri Nase +Schnuderbeeribaum Eibe +Schnuderflinte Penis +Schnuderflinte pfläge onanieren (Männer) +Schnuderflinte versorge Oralverkehr (bei Männern) +Schnudergoofe Kinder +Schnuderhudel Taschentuch +Schnuderi Penis +Schnuderi schlecht erzogenes Kind +Schnuderi Schnupfen +schnuderig glitschig +Schnuderlumpe Taschentuch +Schnudernase Teenager:in +Schnudernase butze Schlägerei +schnudrig frech +Schnüerli Penis +Schnüerli Tanga +Schnüf Kosenamen +Schnüfel Kosenamen +schnüffele atmen +Schnüffelrohr Auspuff +schnüge niedlich +Schnügel Kleinkind +Schnügel Kosenamen +Schnügel weitere Typen (herzig) +Schnügerli niedliches Tier +Schnuggebuzzeli Kosenamen +Schnuggi Kosenamen +Schnuggifudiseichbei Kosenamen +schnüggig niedlich +Schnugi Freundin, Partnerin +Schnugifudiseichbei Freundin, Partnerin +Schnugipupsi Kosenamen +Schnulze Ballade +Schnupf-Trucke Auto (klein) +schnupfe Kokain konsumieren +Schnupfgurke Nase +Schnupfrohr Nase +schnuppe atmen +Schnupper Schnupfen +Schnupperstiftin – en Schnupperstift Lernende:r +schnupsle Sex haben +Schnure Mund +schnure reden, plaudern +Schnurebränner Tabakpfeife (Stummelpfeife) +Schnürggeli Baby (Grimasse eines Kleinkindes) +Schnuriwiib Klatschmaul +Schnurpeli Kosenamen +Schnurpf mache schlafen +schnurpfe pfuschen +Schnurpfi unzuverlässige Person +Schnurpfi-Tante – en Schnurpfi-Unggle Handarbeits-Lehrer:in +Schnurre driihänke kommentieren +schnurre ohni Zäh furzen +Schnurre voll ganz wenig +Schnurre voll Ladung +Schnurre voll Mengenmasse (kleinere Menge) +Schnurre wie-n-es Maschinegwehr Schwätzer:in (Schnellsprecher:in) +Schnurre zue! Halt die Klappe! +Schnurre-Chützler Häppchen +Schnurre-Giige Mundharmonika +Schnurre-Jass jassen (wenn viel geredet wird) +Schnurre-Mech Zahnärztin/Zahnarzt +Schnurre-Pox zuschlagen +Schnurre-Schlosseri – en Schnurre-Schlosser Zahnärztin/Zahnarzt +Schnurregiigeli Mundharmonika +Schnurrepfludderi haa reden, plaudern +Schnurri Aufschneider:in, Angeber:in +Schnurri Besserwisser:in +Schnurri Klatschmaul +Schnurri Schwätzer:in +Schnurri Verräter:in +Schnurri nazional Prominente (national) (Bernard Thurnheer) +Schnurri-Cheib Schwätzer:in +Schnurri-Hündin – en Schnurri-Hund Schwätzer:in +Schnurri-Siech Schwätzer:in +Schnusi Kosenamen +schnüsig niedlich +Schnusimusi Kosenamen +schnüslig niedlich +Schnuttere Schimpfwörter für Frauen +Schnütz! Halt die Klappe! +Schnuuf-Organ Nase +schnuufe atmen +Schnuuz Schnauz +schnüüze Schnupfen +Schnüüzer Taschentuch +Schnüüzi Schneepflug +scho chli öppis ziemlich +Scho guet, Helmuet! Schüttelreime +schö la tiir nach Hause gehen (Pseudo-Übersetzung von franz. je la tire=ich zieh sie) +scho lang kei Wasser meh gseh welk +scho mal Verdauts Erbrochenes +schö mäsoh nach Hause gehen (Pseudo-Übersetzung von franz. je maison=ich hau's) +schö parfüm nach Hause gehen (Pseudo-Übersetzung von franz. ich verdufte) +Scho rächt, Albrächt! Schüttelreime +scho rot vergeblich +Schöbi Alleskönner:in +Schöbi Ich +schöchle stapeln +Schöchli mache Geld sparen (vom Heuen) +schodle schütteln +Schöggeler Soldat im Feldspiel +Schöggelet s? Spinnst du? +Schoggi Haschisch +Schoggi rauche einen Joint rauchen +Schoggi-Bueb Soldat im Feldspiel +Schoggi-Stich dreckiger Gewehrlauf +Schoggi-Stich sexuelle Praktiken (anal) +Schoggi-Tschopp arbeiten (leichte Arbeit) (engl. job) +Schoggimaudi Liebhaber:in von Süssigkeiten +Schoggimuul Liebhaber:in von Süssigkeiten +Schoggistängeli Stumpen, Zigarre +Schöibe Schürze +Scholle grosses Stück +Scholle Hanf Brot +Schölle-Höppe Brüste (grosse Brüste) +Scholle-Hopser Pferd +Scholle-Mech Gärtner:in +Schollegumper Pferd +Schollegumper-Hockey Polo +schön aagleit gut angezogen +schön i dr Wiege – wüescht uf dr Gass Baby +Schöne zum Abschied +schöne Hinecht zum Abschied (aus dem Luzernischen) +schöne Riifall eine schlechte Idee +schöne Stieregrind haa erzwingen +Schönheit isch nur oberflächlich - aber Wüeschtheit gaht dure und dure! Redensarten (Small Talk) +schöni Auge Brüste +schöni Auge Brüste +Schöni Oschtere und steihärti Pfingschte! Feiertage +schöns Gsicht bruucht meh Platz Glatze +schoofel geizig (schäbig) +schoonet es regnet (regnet gerade nicht) +Schöööneeee zum Abschied +Schooss Schürze +Schopf Scheune +Schöpfli Geräteschuppen +Schopp Einkauf (engl. shop) +Schoppe Bier +Schöppe Brüste +Schöppe Brüste +schoppe einkaufen (engl. to shop) +Schoppe Milchflasche +Schoppe-Heber Büstenhalter +schöppele Milchflasche (die Milchflasche verabreichen) +schöppele trinken, sich betrinken +Schorsch Vornamen (männlich) (Georg) +Schorsch Chlööni Prominente (international) (George Clooney, US-Schauspieler) +Schört T-Shirt +Schotte Molke +Schotter eine schlechte Idee +Schotter Geld +schottische Tee Whisky +schottische Tischkampfhund Hündchen (Cairn-Terrier) +schrääg schief +schräg luege schielen +schrägborete Darmuusgang Schimpfwörter +schräge Vogel Scherzkeks +Schramme Hautverletzung +Schrank Bodybuilder +Schranz Riss +Schranz Techno +schränze anbaggern, aufreissen +schränze reissen +Schreckschruube-Set Damenriege +schredde snowboarden (engl. to shred) +schreje schreien, rufen +Schriib s doch em "Beobachter""!" Halt die Klappe! +Schriib-Tiger Journalist:in +Schriiber Schreibstift +Schriiberei Dokument +Schriibi Schreibstift +Schriibparazzo Journalist:in +Schriibtisch-Hängscht Kaufmännische:r Angestellte:r +schriibundere unterschreiben +schriisse reissen +Schrooter Stadtpolizei Zürich +Schrooteri – en Schrooter Polizist:in +Schrott eine schlechte Idee +Schrott müde, erschöpft +Schrott schlecht +Schrulle Schimpfwörter für Frauen (schrullig) +Schrumpfschluuch Kondom +schrumplig welk +Schruub de Alarm abe! Beruhige dich! +Schruub de Luutsprächer abe! Halt die Klappe! +schruube einen Joint drehen +Schruube Geld +Schruuberi – en Schruuber Automechaniker:in +Schruubhueber Hubschrauber +schrüüble feilschen +schrüüble sich mit Kleinkram beschäftigen +Schtabein zum Abschied (rätoromanisch) +Schü Fruchtsaft (franz. jus) +Schübel Geld +Schübel Mengenmasse (viel) +Schublade Gebiss +Schublade Mund +Schublade i de Schnurre Zahnprothese +Schublade-Chüeh Kaninchen (Zuchthaltung) +Schüblig Würste (geräucherte Wurst) +Schüblig i de Ohre haa schwerhörig +Schuchzerbläch Saxophon +schucke übergeben +schucke werfen, zuwerfen +schüderli sehr +schüderlig schrecklich +Schüdli-Fuppe Strip-Club +Schue voll usezieh hereinfallen +Schueh gäh sich trennen +Schueh in Arsch Fusstritt +Schueh in Arsch überchoo eine Abfuhr erhalten +Schueh in Arsch überchoo entlassen werden +Schueh usezieh die Schuhe nass machen +Schueh volle usezieh einen Fehler machen +Schueh, wo Hunger händ Schuhe (sich lösende Sohle) +Schuehbändel Schnürsenkel +Schuehbändel Spaghetti +schuehne spazieren +Schuehwürger Schnürsenkel +Schuelsack Schultornister +Schueni Schuhmacher:in +schufte arbeiten (motiviert) +Schuggeri – en Schugger Polizist:in +Schuggi Menstruation +Schukabasuka Schutzkappe für Zündkapsel +Schukazuzüka Schutzkappe für Zündkapsel +Schulde-Hobel Strassenbahn +Schulde-Puur sii Geld schulden +Schuldeblääch Autos von VW (Golf GTI) +Schüle Schule (Stufen) +Schuma Gasmaske (Schutzmaske) +Schümli-Pflümli Kaffee (mit Pflaumenschnaps und Schlagrahm) +Schummbrädel haa Kopfschmerzen +Schünte Joint +Schünte Joint +Schünte hinderechlöpfe einen Joint rauchen +schünte mache sich beeilen +Schüpa Schützenpanzer +Schupf gäh drängen +Schupf gäh stossen, schubsen +schupfe stossen, schubsen +Schüpp Rock (franz. jupe) +Schuppe Geräteschuppen +Schuppe Tanzlokal (Club, Disco) +Schuppe-Chratzeri – en Schuppe-Chratzer Coiffeur/Coiffeuse +schupse stossen, schubsen +Schürfig Hautverletzung +Schürfig Hautverletzung +schürge schieben +schürgele stossen, schubsen +schurigle arbeiten +schurigle tadeln, massregeln +schürli sehr +Schurni Journalist:in +Schurz Durchfall +Schurz Schürze +Schuss ablaa schiessen +Schuss i de Pizza haa dumm +Schuss-Zipfel Nussgipfel +Schüsseli kleine Keramikschüssel +schusselig ungeschickt +Schüssle Kopf +Schüssle Parabolspiegel für TV-Empfang +Schüssle WC +Schüssle aaschreie erbrechen +Schüssle benetze urinieren +Schüssle spränge stuhlen +Schüssle tarne stuhlen +Schüssle uusschläcke Oralverkehr (bei Männern) +schüst passend (franz. juste) +Schüst, Ogüst genau so (franz. Juste, August) +Schutt gäh sich trennen +Schutt in Arsch Fusstritt +schütte Geld ausgeben, bezahlen (viel Geld ausgeben oder sponsern) +Schüttel-Halle Strip-Club +Schüttelbächer Eisenbahn +Schüttelbächer öffentliche Verkehrsmittel +Schüttelbächer Schützenpanzer +Schütteltier Penis +Schüttstei Trinker:in, Alkoholiker:in +Schüttstei Waschbecken (Abwaschbecken in der Küche) +Schüttstei vo de Schwiiz Luzern (wegen der vielen Gewitter) +Schüttstei-Rageete Schimpfwörter für Frauen +Schütz di! zum Abschied +Schutzgatter Schussel +Schutzgattere sii unsorgfältig +Schutzli Schussel +Schutzli Schussel +schutzlig ungeschickt +Schüüb überchoo sich ärgern +schüübe schieben +Schuubet s? Spinnst du? +schüüble eine Zigarette rauchen +schüüch sorgfältig, behutsam +schuufle essen +Schuufle Schaufel +schüüli sehr +Schüüm Bier +Schuum-Büüle Schokokuss +Schuum-Tee Bier +Schüümer Aufschneider:in, Angeber:in +Schuumschlegeri – en Schuumschleger Aufschneider:in, Angeber:in +Schuumschlegeri – en Schuumschleger Schimpfwörter +Schüür Geräteschuppen +Schüür Scheune +Schuuri Geld +schuurig schrecklich +schuurig sehr +Schüüssbude-Mamsell weitere Typen (Chilbi-Personal) +Schüüssbuude Schlagzeug +Schüüssbuude-Figur Schimpfwörter für Frauen (etwas billig) +schüüsse werfen, zuwerfen +Schuut in Arsch gäh treten +Schwaabe-Büüle Auto-Typen +Schwaabe-Chäfer Deutsche:r +Schwaabe-Schnuder Götterspeise +schwababelig schwabblig +Schwabbel für die männliche Figur (dick) +Schwabbel-Schiibe Werkzeug (Polierscheibe aus Leinen) +Schwabeland Deutschland +Schwabinski Deutsche:r +Schwach-Meischter Wachmeister +Schwach-Strömer Bier +Schwachchopf Dummkopf +Schwächeli Schwächling +schwaddere schwimmen +schwäfle furzen +schwafle reden, plaudern +Schwaflere Klatschmaul +Schwafli Klatschmaul +Schwafli Schwätzer:in +Schwaflinski (Roger Schawinski, aus "Weltwoche""-Kommentar)" Prominente (national) +Schwaminghäm Orte (in Zürich) +Schwäminghäm Schwamendingen +Schwamm Fleischkäse +Schwämm Pilze +Schwämmli uustrucke urinieren +Schwan Joint +Schwän füettere erbrechen +Schwanehals Penis +Schwängel Penis +Schwängel-Ersatz Offroader (SUV) +schwangeri Bergänte schwanger +Schwangerschafts-Lumpe Kleid (lang und weit) +Schwänhätten Schwamendingen (wie Manhattan) +schwänke sich trennen +Schwanz Penis +Schwanz iizieh aufgeben, resignieren +schwänze Schule (Fehlverhalten) (der Schule fernbleiben) +schwanze spazieren +Schwanzlängi mässe Schlägerei +schwänzle aufreizende Bewegungen +Schwänzli Penis +schwanzlutsche Oralverkehr (bei Männern) +Schwärmer Feuerwerk (grosse Petarden) +Schwarte Auto (alt) +Schwarte Auto (altersschwach) +Schwarte Gebrauchtwagen +Schwarte-Händleri – en Schwarte-Händler Gebrauchtwagen-Händler:in +Schwarte-Händleri – en Schwarte-Händler Gebrauchtwagenhändler:in +Schwartefigger Schwiegervater +Schwarterei Schlägerei +schwarz Peter aahänke die Schuld zuweisen +schwarz vor de Auge schwindlig +schwarz vor Tümmi dumm +Schwarz-Wurzle Klarinette +Schwarze ligge laa Gas geben (Reifenspuren) +Schwarze riisse bremsen +Schwarzgäld-Vermittlig Aufträge unter der Hand vergeben +schwarzgäldle Geld sparen +Schwattli Schwätzer:in +Schwätz kä Bläch Das ist unglaublich! +Schwätz kei Bläch! Halt die Klappe! +Schwätz-Bäse Klatschmaul +Schwätzbäse Schwätzer:in +Schwätzerin Klatschmaul +schwaudere reden, plaudern +Schwaudergriite Klatschmaul +Schwauderi Deutsche:r +Schwauderi Schwätzer:in +Schwauderli Schwätzer:in +Schwede-Chuss gäh zuschlagen (Kopfhieb Stirn gegen Stirn) +Schwede-Parkett Knäckebrot +schwedischi Gardine Gefängnis +Schwees Verwandte (Schwester) +Schwees Verwandte (Schwester) +Schwein haa Glück haben +Schweine im Weltall (aus der "Muppet Show"")" gut +Schweine-Prieschterin – en Schweine-Prieschter Lügner:in, Betrüger:in +Schweinerei Unordnung, Chaos +Schweinsteiger Deutsche:r +Schweiss-Propeller Füsse +Schweissfuessantilope Füsilier +schwele kochen +Schwelle-Ruedi Prominente (national) (Ruedi Aeschbacher, alt Stadtrat, wegen seiner Massnahmen zur Verkehrsberuhigung) +Schwelledinge Schwamendingen (wegen der Tempo-30-Schwellen) +schwer sehr +schwer schnuufe keuchen +schwer vo Begriff dumm +Schwerenöter Frauenheld +schwicke kneifen, zwicken +Schwiegeramsle Schwiegermutter +Schwiegeri Schwiegermutter +Schwiegermonschter Schwiegermutter (Schwiegermutter) +Schwiegertiger Schwiegermutter +schwierig tue kompliziert sein +schwierig Vater Schwiegervater +Schwigermuetter-Sitz Auto-Zubehör (ausklappbarer Notsitz bei alten Autos) +Schwii Schwein +schwiinet Es geht zur Neige +Schwiizer – aber kein Eidgenoss eingebürgerter Ausländer +Schwiizer Farbfernseh Medien (SF) +Schwiizer Monschter-Pfiife Alphorn +Schwiizer Sumo Schwingen +Schwiizer Wuche Menstruation +Schwiizer-Örgeli Handorgel +Schwiizer-Suppe Fondue +schwinge entsorgen, wegwerfen +schwinge werfen, zuwerfen +Schwinger für die männliche Figur (stämmig) +Schwingi Wäscheschleuder +Schwingis Kinderspiele (Spiel mit kleinem Ball) +Schwinte Ohrfeige +Schwips haa betrunken +schwitze wie es alts Schlachtross schwitzen +Schwöbin – en Schwab Deutsche:r +schwofe ausgehen +Schwöö Verwandte (Schwester) +Schwööbli Brötchen (Weggen) +Schwoof-Griite Schimpfwörter für Frauen (tanzt gerne) +schwoofe tanzen +Schwooftämpel Tanzlokal (Club, Disco) +Schwu-Ta Unteroffizierstasche +schwüme schwimmen +schwüme verlieren +Schwümmbi Badeanstalt, Schwimmbad (von Schwimmbad) +Schwümmring dicker Bauch +schwups schnell +schwupsdiwups schnell +schwuuli Wulche eine müde Truppe +Sebi Vornamen (männlich) (Sebastian) +Seckel Fiesling +Seckel Penis +Seckel-truurig-nass Securitas-Mitarbeiter:in +Seckelpeter Schimpfwörter für Männer +Seckeltrümmeler Schimpfwörter für Männer +seckle joggen +seckle rennen +Seckli abfüle erbrechen (mit Kotztüten) +Secklischiisser Scharfschütze +Secko Penis +Secko lutsche Oralverkehr (bei Männern) +Securitässleri – en Securitässler Securitas-Mitarbeiter:in +seda Nimm's! +Seebueb Zürcher:in (am See aufgewachsen) +Seegang haa betrunken (torkeln) +Seegang haa schwindlig +Seegfrörni Wetter (wenn der Zürichsee gefriert) +Seele-Abschuss-Rampe Kirche +Seele-blüttle eine Psychotherapie machen +Seele-Cowboy Pfarrer, Priester +Seele-Klämpnerin – en Seele-Klämpner Psycholog:in, Psychiater:in +Seele-Makler Pfarrer, Priester +Seele-Streichleri – en Seele-Streichler Sozialpädagog:in +Seele-Süüder Kuschelrock +Seele-Tökti Psycholog:in, Psychiater:in +Seele-Trööschter Werkzeug (Hammer) +Seele-Wösch mache eine Psychotherapie machen +Seelefänger Pfarrer, Priester +Seeleschmätter haa traurig +Seeleschmätter haa unglücklich, deprimiert +Seelewärmerli Kosenamen +seg s wis well sei es, wie es ist +Sehnsuchts-Bratpfanne Gitarre +sehnsüüchtle ungeduldig erwarten +Seich Blödsinn +Seich eine schlechte Idee +Seich schlecht +Seich aaträje betrügen +Seich ablaa einen Fehler machen +Seich ablaa urinieren +Seich mache Schabernack treiben +Seich mer nöd is Ohr Halt die Klappe! +Seich une use laa urinieren +Seich-Blätz Rothaarige:r +Seich-Obsi Musiker:innen (Pjotr Iljitsch Tschaikowski, Komponist) +seiche urinieren +seichelet urinieren (riecht nach Urin) +Seichgschirli zämestecke Sex haben +Seichi WC +seicht es regnet +seicht undicht +seichwarm lauwarm +Seilwinde Seilzug +Seisch en Gruess, wänn d dobe bisch in der Nase bohren (Redensart) +Seisch, wänn d s häsch! Beeil dich! +Sek Schule (Stufen) (Sekundarschule) +Sekre-Düüse Sekretärin +Sekretarius Gemeindeschreiber +Sekretöse Sekretärin +Selfie-Automat Geschwindigkeitskontrolle +semele joggen +Semi Schule (Stufen) (Seminar) +semigeil nicht so toll +semmele rennen +Semmeli Brötchen (Semmel) +Senile-Pingpong Faustball +senili Phase haa vergessen, verlieren +Senilius-Gumpete Männerriege +Sensibeli empfindliche Person +Sensiibeli zartes Kind +Sepp Vornamen (männlich) (Josef) +Seppetoni Angestellte:r (Knecht) +Seppi Freund, Partner +sepple rennen +Seppli Grüen Prominente (international) (Giuseppe Verdi, ital. Komponist) +serble kränkeln +Servela-Länkig Auto-Zubehör (Servo-Lenkung) +Servela-Schlüüch Finger (dick) +Servierdüse Servierpersonal +Servierschlitte Servierpersonal +Servierschlüüdere Servierpersonal +Serviertochter Servierpersonal (veraltet) +Servigääggel Cervelat +Servila Cervelat +Servila mit Bei Hündchen +Servila-Hüüt Reifen (abgefahrene Pneus) +Servila-Hüüt ässe müese pleite +Servila-Promi Prominente (national) (von Cervelat; Mainstream-Prominenz) +Servus zur Begrüssung (aus dem Bayerischen) +settige solcher +Setzchaschte-Papagei Wellensittich +Setzgrind stur +Setzling Kinder +Sevi Cervelat +Sex an und für sich onanieren (Männer) +Sexfilm Pornofilm +Sexgrüsel Freier +Sextöter Unterhose (lange Unterhosen) +Sexy-Lüüte Feiertage (Sechseläuten) +SG: Saugoofe Autokennzeichen national +SG: Sonstiges Gesindel Autokennzeichen national +SG: Super-Gau Autokennzeichen national +SH: Souhund Autokennzeichen national +Shabba paffe einen Joint rauchen +Sheriff Alleskönner:in +Sheriff-Stern Nippeldreher +Shinte Joint +Shit-Hopper Hip-Hopper:in +Shit-o-drom WC +Shopping-Center Clubs, Discos (Club Supermarket) +Shot Schnaps (engl.) +Showerin – en Shower Aufschneider:in, Angeber:in (engl. to show) +si nähmeds vo de Läbige teuer +Sibe Buebe brünzled circa foif Fässer für d Füürwehr Schaffhuuse Eisenbahn (SBB CFF FFS) +sibe Jahr Baumschuel und immer no en Pfahl dumm +Sibe Sioux! Respekt! +Sibe-Länder-Blick haa schielen +Sibegschiidi – en Sibegschiide Besserwisser:in +Sibesiech Alleskönner:in +Sibi-tschill Vornamen (weiblich) (Sibylle) +sibirische Berg-Essig Wein +sibirischi Kampfratte Hündchen +sich aagschiirre sich anziehen +sich aalegge sich anziehen +sich aamaale sich schminken +sich aaschliiche schleichen +sich aaschliime anbaggern, aufreissen +sich abfülle trinken, sich betrinken +sich abhunde das Letzte herausholen +sich abmälde nach Hause gehen +sich anepfläddere sich ausruhen (fläzen) +sich chöne vertue Platz haben +sich d Finger verbränne hereinfallen +sich d Kante gää trinken, sich betrinken +sich de Arsch uufriisse arbeiten (hart arbeiten) +sich de Arsch uufriisse arbeiten (motiviert) +sich de Buuch hebe vor Lache lachen +sich de lätz Finger verbinde hereinfallen +sich de Puggel chrumm schaffe sich abrackern +sich driichnüündle Feinarbeit +sich dureboxe vorwärts kommen +sich e Autobahn zrächt pflüege Kokain konsumieren +sich e bruuni Nase mache hofieren, schmeicheln +sich e bruuni Zunge hole hofieren, schmeicheln +sich eine abe hole onanieren (Männer) +sich eine under de Huetständer kippe trinken, sich betrinken +sich eine under de Skalp wusle trinken, sich betrinken +sich entsorge aufs WC gehen +sich ergelschtere sich ärgern +sich exfiltriere sich unbemerkt von der Truppe absetzen +sich fätze streiten +sich französisch verabschiede sich unbemerkt von der Truppe absetzen +sich grüen und blau ärgere sich ärgern +sich guet metzge bewältigen, meistern +sich guet metzge seine Haut teuer verkaufen +sich heiss verchrache sich verlieben +sich hindersine sich ärgern +sich i de Wulle haa streiten +sich i öpper verluege sich verlieben +sich iiläbe einarbeiten +sich iimuchele sich einhüllen (zum Schlafen) +sich iimummele sich einhüllen (zum Schlafen) +sich iinunnele sich einhüllen (zum Schlafen) +sich iinuschele sich einhüllen (zum Schlafen) +sich inenand vergaffe sich verlieben +sich ineschliime hofieren, schmeicheln +sich mache erfolgreich sein +sich mit de Beamte solidarisiere arbeiten (langsam) +sich müesse nach de Tecki strecke arm +sich nerve sich ärgern +sich neu formatiere trinken, sich betrinken +sich öpper aalache anbaggern, aufreissen +sich öppis uustänke denken +sich paraat mache sich schminken +sich rot und blau ärgere sich ärgern +sich s la wohl sii geniessen +sich schön mache sich schminken +sich separiere sich trennen +sich strigle sich schminken +sich tapfer schlaa seine Haut teuer verkaufen +sich tödlich uufrege wütend +sich trolle nach Hause gehen +sich tünn mache flüchten, davonrennen +sich tünn mache nach Hause gehen +sich überlupfe zu viel tragen +sich uf d Escht uselaa etwas riskieren +sich us em Netz abmälde schlafen +sich us em Staub mache flüchten, davonrennen +sich useschnurre sich herausreden +sich usewetze sich herausreden +sich üssere erbrechen +sich uufbitsche sich schminken (engl. bitch) +sich uufblaase bluffen +sich uufbräzle sich schminken +sich uuffüehre wie-n-en Muni imene Chrisihuufe toben +sich uuffüehre wie-n-en Stier toben +sich uufmotze sich schminken +sich uufrege sich ärgern +sich uuschotze das Letzte herausholen +sich verdünnisiere entwischen +sich verdünnisiere flüchten, davonrennen +sich verdünnisiere nach Hause gehen +sich vergrööle sich kaputtlachen +sich verhaue einen Fehler machen +sich verhaue sich irren +sich vermuulaffe sich irren +sich verpisse flüchten, davonrennen +sich verplappere ausplaudern +sich verschlaufe sich unbemerkt von der Truppe absetzen +sich verschnäddere ausplaudern +sich verschnurre ausplaudern +sich vertschnäpfe ausplaudern +sich vertschüsse nach Hause gehen +sich verzieh flüchten, davonrennen +sich verzieh nach Hause gehen +sich volle laufe lah trinken, sich betrinken +sich vollstopfe schlemmen +sich vom Läder mache nach Hause gehen +sich vor öpperem schoue bluffen (engl. to show) +sich wegmache sich unbemerkt von der Truppe absetzen +sich wegnüchle sich unbemerkt von der Truppe absetzen +sich z Tod ärgere sich ärgern +sich zoffe streiten +sich zrächtmache sich schminken +sich zuechlöpfe trinken, sich betrinken +sich zum Schindlueder mache sich abrackern +sicher scho eine klare Sache +sichere Wert dihei haa eine Beziehung haben +sicheri Sach eine klare Sache +sick sehr gut (engl.) +sidefiin gut +sidefiin sehr gut +Sidian Prominente (international) (Zinédine Zidane, franz. Ex-Fussballer) +Sidian haa betrunken +sidiane schimpfen, beschimpfen +sidig gut +sidig niedlich +sie es Tubeli/er es Tubeli/d Chind händ roti Höörli Rothaarige:r +sie flattiert Katze (streicht um die Beine) +sie gaht ab wie d Schiissi Redensarten (Sexualität) (sie ist sexuell aktiv) +sie hät Charakter Brüste (schöne Brüste) +sie hät gschisse gerinnen +sie isch dune Batterie (entladen) +sie isch unwohl Menstruation +sie liit da wie-n-en See-Stärn Redensarten (Sexualität) (sie ist sexuell passiv) +sie nöd all binenand haa verrückt +sie zupfe nach Hause gehen +Siebeschlöferi – en Siebeschlöfer Faulpelz +Siech Alleskönner:in +Siech haa betrunken +Siech i de Bire haa betrunken +Siech iifange betrunken +Siech voll Mengenmasse (viel) +Siech voll sehr viel +Siesta mache schlafen +Siesta mache Sex haben +Siff Abfall +Siff Unordnung, Chaos (dreckig) +Siffchopf Schimpfwörter +siffe einen Joint rauchen +Sigg-Sagg-Sugg mache ausknobeln +signiere unterschreiben +Sihl-Schippi Einkauf (Einkaufszentrum Sihlcity) +Sihlquai-Express Eisenbahn (Zug von Budapest) +Sii juu zum Abschied (engl. see you) +Sii laa! Finger weg! +siiige gewinnen +Siite-Uuspuff verpasse zuschlagen +Silber Geld +Silberfüchs Übermittlungstruppen +silberigs Nüüteli überchoo leer ausgehen +Sile Vornamen (weiblich) (Silvia) +Silenzium! Halt die Klappe! +Silicon Valley Brüste (künstliche Brüste) +Silizium-Mech Informatiker:in +Siliziumchrüppel Computer +Silo-Fuetter Salat +Silofrääse Mund +Simi Vornamen (weiblich) (Simone) +Simmer dusse? Gehen wir nach Hause? +Simmer gange? Gehen wir nach Hause? +Simmer gfloge? Gehen wir nach Hause? +Simmer Gschicht? Gehen wir nach Hause? +Simmer gschobe? Gehen wir nach Hause? +Simmer gschosse? Gehen wir nach Hause? +sin Furz dezue gäh kommentieren +sin Kommentar abgäh kommentieren +sin Mischt dezue gäh kommentieren +sin Quark dezue gäh kommentieren +sin Sänf dezue gäh kommentieren +sin Seich aabringe kommentieren +singe ausplaudern +singende Fleischchäs Baby +sini Läfzge driihänke kommentieren +sinne denken +Sinterguezli Gebäck (steinharte Kekse wie Anisspringer oder Willisauer Ringli) +Sippi Penis +sirache toben +Siri Sirup +Sirrach Rüpel:in +sirrache schimpfen, beschimpfen +sirrache toben +sis eigete Süppli choche onanieren (Männer) +sis Herz verschänke sich verlieben +sis Hobbi isch d Balz Frauenheld +Sitz-Fritz Kaufmännische:r Angestellte:r +Sitzbrüle-vorher-Ufeklapper Schwächling +Sitzflächi Gesäss +Sitzig haa aufs WC gehen +Sitzpinkler Schwächling +Sivvi Vornamen (weiblich) (Silvia) +Sixpack Streifenwagen (Kastenwagen mit sechs Polizist:innen) +Sklaav Angestellte:r +Skoda-Tram Eisenbahn (S-Bahn DTZ) +Sliboviz-Express öffentliche Verkehrsmittel (Zug nach Belgrad) +Slippery Bridge Orte (ausserhalb von Zürich) (Glattbrugg) +slöde Bleckel Schimpfwörter für Männer +smängge einen Joint rauchen +Smokey punche einen Joint rauchen +smööge eine Zigarette rauchen (engl. to smoke) +smööge einen Joint rauchen +Snäggi Tätlichkeiten (Unterhose hochziehen, bis sie einschneidet) +Snickers Kot +sniffe Kokain konsumieren +snöbe Kokain konsumieren +snööbe snowboarden +Snuggel Kosenamen +So – jetzt aber! Es eilt +so apöpre ungefähr (franz.) +so halbe etwa +so Handglänk mal Pi etwa +so isch es halt sei es, wie es ist +so klar wie unsichtbar eine klare Sache +so oder so Das spielt keine Rolle +So öppis aber au! Das ist unglaublich! +so öppis unedurigs daneben, verwerflich +So öppis Ungfreuts! Mir reicht's! +So öppis! Tatsächlich? +So schaad Das nervt! +so schnäll-schnäll Entwurf +so so la la es geht so +so wiit chunnt s na sicher nicht +So wiit chunnt s no! Du kannst mich mal! +So wird s gmacht! Abgemacht! +So-n-en Chlupf! überrascht, verdutzt +So-n-en Minggis! Mir reicht's! +So-n-en Mischt! Mir reicht's! +So-n-en Stuss! Mir reicht's! +So-Zart Musiker:innen (Mozart) +Socke Kondom +Sockebügler Schwächling +Sockeflicker Wein +Sockewärmer Motorrad-Typen (BMW Boxer) +Söckli Strümpfe +södere Wundwasser absondern +Softi Informatiker:in (von Software) +Soi-Häfeli-Soi-Teckeli Aufträge unter der Hand vergeben +Soibueb Kinder +Soife-Chischte Auto (selbstgebasteltes Auto für Kinder) +soifere sabbern +Soiffespänder Penis +Soigoof Kinder +Söihäfeli – Söiteckeli Redensarten (Small Talk) (Vetterliwirtschaft) +soile beschmutzen (von Kindern) +söile daneben schütten +soile klecksen (von Sau) +Söili Schwein +Soili-Amt Orte (ausserhalb von Zürich) (Knonauer Amt) +Soili-Transporter Offroader (SUV) +Soimeitli Kinder +Soiniggel Widerling +Söischwänzli Schwein +Soistock Löwenzahn +Soistöck Löwenzahn +Söitränki ungeniessbares Essen +solare sonnenbaden +Söll der Bei mache? Hau ab! +Söll di füettere? Spinnst du? +söll gälte Abgemacht! +söll nüme vorchoo Entschuldigung +söll schmöcke Guten Appetit +Solofelix Velosolex +Sondi Versager:in, Verlierer:in +sonige solcher +sonigi solche +sööge einen Joint rauchen +söösse Wundwasser absondern +Soosse abzapfe polizeilicher Alkoholtest (Blutprobe) +Soosse-Schlitz Scheide +Sörf-Brätt für die weibliche Figur (engl. to surf) +Sörfbrätt Tampon +Sorg hebe aufpassen +Sori, Frau Schori! Entschuldigung +sori, gäll Entschuldigung (engl. sorry) +Sorry wäg de Story vo vori Entschuldigung +Sorry wäg vori! Entschuldigung (engl. sorry) +Sorry, Frau Schori! Entschuldigung +SOS – singe oder seckle! militärische Abkürzungen +söttig Priise sötted verbotte sii teuer +sottigi solche +söttigi solche +Söttsch d Füess wäsche, dass de Dräck cha naarutsche Hörst du nicht mehr gut? +Sou Schwein +Sou uselaa ausgehen +Sou-Goof schlecht erzogenes Kind +Sou-Mätz Schimpfwörter für Frauen +Sou-Mode Angewohnheit +Sou-Moore Schimpfwörter für Frauen +Sou-Niggel Schimpfwörter +Sou-Ornig Unordnung, Chaos +Sou-Schnalle Fiesling +Soubannerzug Demonstration +Souerei Unordnung, Chaos +Souhund Fiesling +Souhund Rüpel:in +Souhündin – en Souhund Schimpfwörter +Souludi Spanner +soumäässig sehr +sounde musizieren +Soupack Schimpfwörter +Souprotz Aufschneider:in, Angeber:in +Soupuff Unordnung, Chaos +Soustall Unordnung, Chaos +Sozi-Bächer Eisenbahn (S-Bahn) +Sozialante-Palascht Orte (in Zürich) (Werd-Hochhaus) +Sozialgmeinschaftlich profitiere politische Parteien (SP) +Spac Kosenamen +Spacco Spanier:in +spachtle essen +Späck Fett +Späck und Bohne – Potzmillione Das ist unglaublich! +Spacko Schussel +Späckschwarte-Sammlig Damenriege +Spaghetti Offizierstreifen (Leutnant, Oberleutnant, Hauptmann) +Spaghetti-Chueche Vermicelles +Spaghetti-Frässeri – en Spaghetti-Frässer Italiener:in +Spaghetti-Lismeri – en Spaghetti-Lismer Dummkopf +Spaghetti-Monteurin – en Spaghetti-Monteur Köchin/Koch +Spaghetti-Sultan grosse Person +Spaghetti-Wasser spände weinen +Spaghis Spaghetti +Spaguuge Spaghetti +Spaguuge Bolo Spaghetti (Spaghetti bolognese) +Spaguuge Chnollo Spaghetti (Spaghetti aglio olio) +Spaguuge Essig Spaghetti (Spaghetti al pesto) +Spaguuge Rahm Spaghetti (Spaghetti carbonara) +Spaguuge Rot Spaghetti (Spaghetti napoli) +Spananierin – en Spananier Spanier:in +Spändierhose aahaa beschenken +Spange-Mech Kieferorthopäd:in +spängle mobben (intrigieren) +Spängler-Spalte Po-Ansatz bei zu knappen Hosen +Spanioggel Spanier:in +Spanisch-Brötli-Bahn Eisenbahn (eh. Bahnlinie Baden-Zürich) +spanischi Nierli weitere Esswaren (Stierhoden) +spanischi Nüssli Erdnüsse +spanne begreifen, verstehen +Spanner-Parade Street Parade +Spannsch es? Hast du es begriffen? +spärele Geld sparen +spärele sparsam mit Geld umgehen +Spargel-Tarzan mager +Spargeltarzan für die männliche Figur (dünn) +Sparhose Geizhals +Sparsoili fuettere Geld sparen +Spasti Schussel +Spasti Zappelphilipp +Spatelruether Chatze Musiker:innen (Kastelruther Spatzen) +später cho und defür früener gah Redensarten (Arbeit) +Spatz Eintopf +Spatz Sperling +Spatzehirni Dummkopf +Spatzig haa Platz haben +spätzle stuhlen +Spätzli Kinder +Spätzli Kosenamen +Spazier-Gält 100 Franken (mehr als 100.- im Portemonnaie) +Spazier-Münz Taschengeld +Spaziermünz für s Gilet Kleingeld (für den Ausgang) +spazifiziere spazieren +Spazifiziergang mache spazieren +Spazifizottel mache spazieren +spazifizottle spazieren +Spazzacamino Tessiner:in +Spazzolino Italiener:in +Speedy-Gonzales vife Person +speese Geld ausgeben, bezahlen +speese Geld ausgeben, bezahlen (spendieren) +Speggi Spaghetti +Speiche-Lööli Fahrrad-Fahrer:in +Speichel uustuusche schmusen +Speichel-Uustuusch Zungenkuss +Speicher Kopf +Spendierhose aa haa eine Runde ausgeben +sperbere schauen +Spermin Prostituierten-Besuch +Speutz in See ganz wenig +speziell eigenartig, seltsam +spicke betrügen (in der Schule) +spicke Schule (Fehlverhalten) (bei einer Prüfung betrügen) +spicke laa schnellen +Spiegeleier-Buuch dicker Bauch (man braucht einen Spiegel, um die Eier zu sehen) +spienzle locken (etwas teilweise oder kurz zeigen) +spienzle schauen +spiesse sanft streicheln, fast kitzeln +spiide rennen (engl. speed) +Spiigeli ganz wenig +Spiil-Wise Bett +Spiilverderberi – en Spiilverderber Fahrtenbegleiter:in (Eisenbahn) +Spiise dünne Person +Spiise Holzspickel +Spiise inehebe Fussball (Tackling) +Spillerin – en Spiller Spielsüchtige:r +Spinne-Vernichter Staubsauger +Spinnerei Wollishofe verrückt +Spinneri – en Spinner Irre:r +Spinneritis Hirngespinst +Spinnhafe Irre:r +Spinnhafe verrückt +spinnig verrückt +Spinnsiech Irre:r +Spinnwäbe us em Egge hole Sex haben +Spinnwinde Irre:r +Spinnwindi Gebäude, Lokalitäten (psychiatrische Klinik) +Spitole Pistole +spitz sexuell erregt +spitz wie de Wolf ufs Rotchäppli sexuell erregt +spitz wie sibe Chele-Spitz sexuell erregt +spitz wie sibe frisch duscheti Sizilianer sexuell erregt +spitz wie-n-en Dart-Pfiil sexuell erregt +Spitz-Cheeri skifahren (180°-Wendung) +Spitz-Guuge Fussball (unkontrollierter Schuss mit der Fuss-Spitze) +Spitz-Ise Werkzeug (spitzer Meissel) +Spitzbueb Gebäck (Keks mit Confiture-Füllung) +spitzig steil +Spli-Schu Ballistische Schutzweste +Spliff Joint +spliffe einen Joint rauchen +Spliifi Joint +Spoitz Geld +Spoitz Kleingeld +Spoitz Speichel +Spoitz im Ranze haa mutig +Spoitz legge Geld sparen +Spoitz-Büchs Bancomat +Spoitz-Chnebel Blockflöte +Spoitz-Chnebel Klarinette +Spoitz-Prügel Blockflöte +Spoitzblääch Saxophon +spoize Geld ausgeben, bezahlen +spoize onanieren (Männer) +spoize spucken +Sport am Knochenende Medien (eh. TV-Sendung SF) +Sport-Kafi Kaffee (mit Schnaps) +Sport-Kafi Kaffee (mit Schnaps) +Sport-Zigi Joint +Sport-Zigi rauche einen Joint rauchen +Sportler-Bier Milch +Spräch-Chnoche Mobiltelefon (Handy) +Spränzel dünne Person +spraye Durchfall +Spriisse grosse Person (hager) +Spriisse Splitter +springe rennen +Sprit Benzin +Sprit hole Benzin tanken +Sprü-Mo Apfelschorle (en gsprützte Moscht) +Sprüehwurscht Durchfall +Sprung i de Schüssle haa verrückt +Sprung-Aalaag Schlafzimmer +Sprutz eine kleine Menge Flüssigkeit +sprütze mit Wasser spielen +Sprütze-Teich Limmat +Sprützer Freund, Partner +Sprützi Schwätzer:in +Sprützkanone Penis +Sprützli ganz wenig +sprützt mer halb-meeterig zur Bire uus beschäftigt sein (stark schwitzen bei harter Arbeit) +Spucki Speichel +Spudder Speichel +spudere spucken +spüderle erbrechen +spüele entsorgen, wegwerfen +spüele sich trennen +spüele trinken, sich betrinken +spuelet Reifen (die Reifen drehen durch) +Spueli Irre:r +Spunte Restaurant (Originalbedeutung: Überlauf des Fasses) +Spunteschränzer Zapfenzieher +sta-ga-gaggele stottern +Stabäle Stuhl (alter Holzstuhl) +stabil gut +Stäbli Fernbedienung +Stäbli-Röschti Pommes-Frites +Stabs-Asylant Stabs-Adjutant +Stabs-Hydrant Stabs-Adjutant +Stächbüütel Werkzeug (Stechbeitel) +stäche Sex haben +Stacheldraht-Schwab Deutsche:r (Ostdeutscher) +Stächer Frauenheld +Stächer Freund, Partner +Stächer Penis +Stächmaschine Penis +Stäcke Schussel +Stäckebei-Sheriff mager +Stäckedööri nomal! Das ist unglaublich! +Stäcketööri Fluchwörter +Stäckli-Fuessball Golf +Stäckli-Fuessballeri – en Stäckli-Fuessballer Golfer:in +Stadt uussuufe ausgehen +Stadt-Musig Streifenwagen (Martinshorn) +Stadt-Panzer Offroader (SUV) +Stadtchemikeri – en Stadtchemiker Basler:in +Stadtgurke öffentliche Verkehrsmittel (Tram) +Stadtmusig Stadtpolizei Zürich +Stadtmusikantin – en Stadtmusikant Polizist:in +Stäge Treppe +stägeliuuf-stägeliap Treppe +stägeliuuf-stägeliap unschlüssig +staggele stottern +Stahlgebiss Zahnspange +Stahlross Fahrrad +Stahlwulle Haare (dichtes Haar) +Stahsch im Schilf! Du spinnst! +Stahsch im Tram? Spinnst du? +Stahsch uf em Schluuch? Spinnst du? +staht chrumm schief +Staht der grad öpper zünftig uf de Leitig? Weisst du es nicht? +Stall Haus +Stall Tanzlokal (Club, Disco) +Stallehadion Gebäude, Lokalitäten (Hallenstadion) +Stämmbögli fahre skifahren (wie ein Anfänger) +stämme heben +Stämpel abetrucke Gas geben +Stämpel dune haa Vollgas +Stämpel-Uhr beschäftige arbeiten (unmotiviert) +stampfe essen +Stämpfelchüssi haa eine Affäre haben +Ständ duregäh One Night Stand +Stande Waschzuber +Ständer Penis +Ständer haa eine Erektion haben +Ständerlampe Penis +Ständli-Gurre Marktfahrer:in +Ständli-Heiri Marktfahrer:in +Stange Bier +Stange Brunz in Egge stelle urinieren +Stange id Schüssle laa urinieren +Stange Lähm us em Rugge trucke stuhlen +Stange Praliné us em Rugge trucke stuhlen +Stange riibe onanieren (Männer) +Stange Wasser in en Egge stelle urinieren +Stange-Fieber haa sexuell erregt +Stängel Penis +Stängeli Bier +Stängeli Fussball (10:0-Sieg) +stänkere kritisieren +stänkere lästern +Stänkerer Querulant:in +Stänkeri Querulant:in +Stänz Zuhälter +stanze Sex haben +stanze Sex haben +Stapi Politiker (Stadtpräsident:in) +Star-Asylant Stabs-Adjutant +starch gut +Stärchi haa bewältigen, meistern +stärne-hagels-verruckt wütend +stattere stottern +Stätz Geld +Stätzer Geld +staub-tumm taubstumm +staubig wütend +Staubsi Staubsauger +staubsuuge Oralverkehr (bei Männern) +Staubsuuger Eisenbahn (Re 4/4 IV SBB) +Staubsuuger Kokain-Konsument +Staubsuuger Nase +Staubsuuger-Pilotin – en Staubsuuger-Pilot Reinigungskraft +Staubwädel Penis +Staudamm Tampon +Ste-Vau Stellvertreter:in (Abk.) +Steak Fury Pferde-Entrecôte +Steckdose Schimpfwörter für Frauen (leicht zu kriegen) +steckdosebefruchteti Kanalratte Schimpfwörter +stecke Sex haben +Steckgrind stur +Steckitto Joint +Stei 1 Franken +Stei Geld +Stei Hoden +Stei Hoden +Stei Kopf +Stei Kot +Stei in Wäg legge behindern +Stei mache sauer +Stei mache trotzen +Stei setze stuhlen +Stei-Biigeri – en Stei-Biiger Maurer:in +Stei-Chehrer Irre:r +Stei-Chueche Schallplatte (Schellack-Schallplatte) +Stei-Frässeri – en Stei-Frässer Bündner:in +Steibock-Elektrisch Rätoromanisch +Steibock-Tschingg Bündner:in +Steibruch Orte (ausserhalb von Zürich) (Technikum Winterthur) +steihässig sauer +steil sehr +steil gah ausgehen +steil gah ausgehen +steil gah bis in die Morgenstunden feiern +steilo sehr gut (stylo) +Steimer Orte (ausserhalb von Zürich) (Steinmaur) +Steini Gebäude, Lokalitäten (Rudolf-Steiner-Schule) +Stell-Vertramperi – en Stell-Vertramper Stellvertreter:in +Stelze Beine +Stelze für die weibliche Figur (schlanke Beine) +Steppe-Sau Mofa +Ster Mengenmasse (schweiz. Holzmass) +Sterne Augen +Sterne-Büchs Bars, Restaurants, Clubs (Starbucks) +sternebitzgi Fluchwörter +Sternebütschgi Das ist unglaublich! +Sternebütschgi Fluchwörter +Sternebütschgi nomal Fluchwörter +Sternefeufi! Das ist unglaublich! +sternefoifi Fluchwörter +Sternefoifi! Respekt! +Sternefüdli Das ist unglaublich! +sternehagelvoll betrunken +sternesibni Fluchwörter +Sternesiech! Das ist unglaublich! +sternetubak Fluchwörter +Sternfade Faden +Sternlein nonemal Fluchwörter +Sternli Kosenamen +Sternschnuppe Kosenamen +Sternzeiche han i zwei: Jungfrau, aber s ganz Jahr Stier Sternzeichen +Stewi Wäscheständer +Stibe Vornamen (männlich) (Stefan) +stibitze klauen, stehlen +Stich Angewohnheit +Stich di doch id Bire! Du kannst mich mal! +Stich haa verrückt +stier pleite +stier schlecht +stiere Siech Spiesser:in +Stiere-Aug Spiegelei +Stiere-Grind stur +Stierwaldfettersee Orte (ausserhalb von Zürich) (Vierwaldstättersee) +Stifel Bier (ca. 1-2 Liter) +Stifel-Hügel Friedhof +Stifelhocker Italiener:in +Stifelmuni Tierärztin/Tierarzt +Stifte-Domptöse – de Stifte-Domptör Lehrmeister:in +Stifti Lehrzeit +Stifti – en Stift Lernende:r +stigelisinig wahnsinnig +stigelisinnig werde sich ärgern +Stiife Joint +Stiife haa eine Erektion haben +stiiffe Hals Nackenstarre +Stiigbügel montiere anbaggern, aufreissen +stiige begreifen, verstehen +Stiigsch oder bruuchsch es Leiterli? Hast du es begriffen? +Stiigsch? Alles klar? +Stiilauge mache schauen +Stiis Geld +Still-Sitzer Käse (Tilsiter) +Stille, stille, stille – d Chatze gönd id Chile! Halt die Klappe! +stilli Örtli WC +stills Gleit Beerdigung +Stimm wie-n-e roschtigi Schnuregiige heiser +Stimm wie-n-es roschtigs Gartetöörli heiser +Stimmt s bi dir? Alles klar? +Stine Vornamen (weiblich) (Christine) +Stink Kot +Stink mache stuhlen +Stink-Morchle Auto-Typen +stinkaffeseichgeil gut +Stinkbolze Stumpen, Zigarre +Stinkchäs Käse (scharf) +Stinke-Stummel Auspuff +stinkele stuhlen +Stinkeri – en Stinker Baby +stinkerle kritisieren +Stinkerli Kleinkind +Stinkerli Kosenamen +stinkfingerle schmusen +stinkfräch frech +stinkfuul faul, träge +Stinkhaagge Tabakpfeife (gebogene Pfeife) +stinkhässig wütend +Stinki ablaa furzen +Stinki-Rohr Auspuff +stinkig sauer +stinkig wütend +stinkigi Hoffahrt Tagetes/Studentenblume +Stinkmocke Käse +Stinkmorchle Lastwagen +Stinkprügel Stumpen, Zigarre +Stinkschnuer Tanga +Stinkstifeli Baby +stinksuur sauer +Stinkt de Fisch? Dein Reissverschluss ist offen! +stinkwichtigi Sitzig abhalte stuhlen +Stinkwuet haa wütend +stinkwüetig wütend +Stirb-oder-Bräms-Bahn öffentliche Verkehrsmittel (Südostbahn SOB) +Stivi Vornamen (männlich) (Stefan) +Stöck jassen (König und Dame beim Trumpf) +Stock-Änte Nordic Walking +Stockis Kartoffelstock +stöckle zu Fall bringen +Stöff Vornamen (männlich) (Christoph) +Stoff gäh Gas geben +Stoff-Balke Sofa +stoffe Gas geben +Stöffeli-Pantöffeli Vornamen (männlich) (Stefan) +Stögi Zicke +Stolle Arbeitsplatz +Stolle Geschäft, Firma +Stolle Sibe Arbeitsplatz +Stolle-Pnöö Gesicht (Pickelgesicht) +Stolz näh demütigen +Stooss-Garette Zigarette +Stooss-Garette Zigarette (Gegenteil von «Zieh-Garette") +stoosse schieben +stoosse Sex haben +stöössle Sex haben (anal) +stopfe einen Joint drehen +stopfe essen +stopfe Sex haben +stopfe treten +stopft schwere Kost +Stopp! Hör auf! +stöpple per Anhalter fahren +stöppsle Sex haben +Stöps Vornamen (männlich) (Stefan) +Stöpsel Kinder +Stöpsel Tampon +Stöpsel usejage aufs WC gehen +Stöpsel-Wuche Menstruation +Stör-Geischt Störenfried +Stör-Sänder Störenfried +Storch Deutsche:r (wegen der grossen Klappe und dem ewigen Drang nach Süden) +Storch uf de Stöör haa gebären +störe ärgern, provozieren +Store Sonnenschutz-Markise +Stoss-Stange Penis +Stoss-Stange poliere Oralverkehr (bei Männern) +Stossbunker Bordell +Stossstange Brüste +Stosstange Zahnspange +stotzig steil +stötzlig steil +Strääl Kamm +Straale wie Tschernobil lachen +strääzt es regnet +strähle kämmen +strahle wie-n-e Sune glücklich +strahle wie-n-es AKW glücklich +Strahler Mobiltelefon (Handy) +Strambambeli Baby +stramm stattlich +Strämmes Badeanstalt, Schwimmbad (Abk. von Strandbad) +Strampeli Baby +Strampi Badeanstalt, Schwimmbad (Abk. von Strandbad) +strample sich abrackern +Strampler Fahrrad-Fahrer:in +Strampli Kosenamen +Strassechrüüzer-Kapitän Autofahrer:innen (mit grossem Auto) +Strassefäger gut (kultureller Anlass) +Strasseköter Hund (Bastard) +Strassepylone Verkehrskadett:innen +Strasseruumeri – en Strasseruumer Bodyguard +Stratosfääre-Beeri Flight Attendant (Flugbegleiter:in) +Stratosphäre-Golf Hornussen +stratze klauen, stehlen +Strebergarte Schrebergarten (weil jeder besser als der andere sein will) +Streifehörnli Gefreiter +Streifehörnli Polizist:in +Streifig Schlaganfall +Stress di! Beeil dich! +Stress haa beschäftigt sein +Stress mache hetzen +Stress-Bahn Eisenbahn (S-Bahn) +Stress-Bahn öffentliche Verkehrsmittel (S-Bahn) +stresse hetzen +Stressfaktor mit Windle schlecht erzogenes Kind +stresst mi Das nervt! +Stretch Stress +Strich i de Landschaft dünne Person +Strichli mache Sex haben +Strick Lausemädchen/Lausbub +Strick schlecht erzogenes Kind +Strick-Lisi stricken (Frau, die gerne strickt) +Strieler Katze +striene ziellos umherirren +striichle berühren, befingern +Striitgüggel Streithahn +Striizi Lausemädchen/Lausbub +Striizi vife Person +String Tanga +Strippe Telefon +stroddlet kochen (das Wasser kocht) +strodle brodeln +Ströfzgi Schule (Fehlverhalten) (Strafaufgaben) +Stroh Haare +Stroh im Grind haa dumm +Stroh wässere denken +strohbohneblöd dumm +strohtumm dumm +Strolche-Fahrt mache fahren (Spritztour) +Strom abläse aufs WC gehen +Strom i d Hose laa sich beeilen +Strom id Hose! Beeil dich! +Strombrief sände ein E-Mail schicken +Stromchaschte-Aaseicher Schimpfwörter für Männer +Stromeri – en Stromer Elektriker:in +Stromgitare elektrische Gitarre +strotze klauen, stehlen +Strubelpeter zerzaust +Strubli Kinder (Knabe mit ungekämmtem Haar) +struchli Abgemacht! +Strümpf mit eme Mödeli Strümpfe (mit einem Muster) +Strumpf-Chugle mache Unfall (Totalschaden) +Strumpfi Strumpfhose +Strumpflotteri haa Strümpfe (wenn Strümpfe Falten werfen) +Strupfer Schrubber +Struppi Hündchen +struppig welk +strutze klauen, stehlen +struub anstrengend +Strüüchli-Coiffeuse – en Strüüchli-Coiffeur Gärtner:in +Struuss Blumenstrauss +Stuardess – en Stuard Flight Attendant (Flugbegleiter:in) (engl.) +Stube-Tiger Katze +Stubehöck Couch Potato +Stubete Wohnung +Stuck Land Grundstück +stückle erbrechen +Studänte-Fueter Nüsse mit Rosinen +Studänte-Harley Motorrad-Typen (Vespa) +Studänte-Schnitte Sacher-Torte +Studeschiisser Österreicher:in +Studi Student:in +Studiosa – en Studiosus Akademiker:in +Stuehlbräms Banane +stuehle Sex haben +Stuehlgang-Brämsi Militär-Schokolade +Stumpe Joint +Stumpe Kinder +Stumpe abchlopfe urinieren (Männer) +Stumpf und de Stiil haa beides haben +stündele Sektierer:in (einer Sekte angehören) +Stündeler Sektierer:in +Stündeler-Engadin Orte (ausserhalb von Zürich) (Tösstal) +Stündler weitere Typen (aktiver Kirchengänger) +Stungg haa streiten +Stunk mache jammern, sich beklagen +Stupf gäh stossen, schubsen +stur wie-n-en Esel stur +Stürchel grosse Person +stürchle stolpern +sture Bock stur +sture Grind stur +sture Siech stur +sturm aufgeregt +sturm schwindlig +Sturm im Gibel zerzaust +stürme erzwingen +stürme hetzen +Sturmgwehr-Rigle Drill an der Waffe +Stürmi Querulant:in +Stürmi-Cheib Querulant:in +Stürmi-Grind Querulant:in +Stürmi-Siech Querulant:in +sturms Huehn Chaot:in +stürze ausgehen +stürze mit Drogen abstürzen +Sturzwälderschwarte Schwarzwäldertorte +stuss schlecht +Stute Freundin, Partnerin +Stutz 1 Franken +Stutz Geld +Stütz abhole Geld gewinnen +Stutz ap bergab +Stützli 1 Franken +Stützli Geld +Stützlisex Prostitution +Stuude Hanfpflanze +Stüür-Hinderzieher-Olympiade Sechseläuten +stüüre lenken +Stüürgäld-Verpfuuser Beamte +subito sofort, zügig +subtrahiere klauen, stehlen +Subventions-Gladiole Mais +Subvenzione-Porsche Traktor +Sucht-Schibli Pommes-Chips +süchtele eine Zigarette rauchen +Suchtfralat Fruchtsalat +Suchthuufe Drogenabhängiger +Suchti Drogenabhängiger +Suckijacki Hoden +Süd-Schwed Tamile +Sudel Entwurf +südere Wundwasser absondern +süderet undicht +Süderi alter Mann +Südländer-Frisbii Pizza +Südpol Gesäss +südsibirischi Gebirgs-Rabarbere Stumpen, Zigarre +Suech der en Tümmere! Hau ab! +süess niedlich +süess tue flirten +Süessholz raschple flirten +Süessi – en Süesse Liebhaber:in von Süssigkeiten +Süessmi Apfelsaft +Süessmoschtbahn öffentliche Verkehrsmittel (Südostbahn SOB) +Süffel Betrunkene:r +Süffel Trinker:in, Alkoholiker:in +Süffel zieh die Schuhe nass machen +Suffi Offroader (SUV) (SUV mit hohem Benzinverbrauch) +süffige Wii Wein (man merkt den Alkohol erst beim Aufstehen) +Suggel Baby +suggele lutschen +suggele Oralverkehr (bei Männern) +suggele Oralverkehr (bei Männern) +Suggi Schwein +Sugi Motorrad-Typen (Suzuki) +Sugo mache eine Zigarette rauchen +Sugus Ribbon am Ausgänger +Sultan würge urinieren +Sulz Sülze +Sulzer-Boy Winterthurer +Sulzer-Glänk Poulet (Pouletschenkel) +sülzlig niedlich +Sumablösi Schimpfwörter (en supermaximale blöde Siech) +Summer-Balkon Brüste +Summerling Schmetterling +Summerrock Kleid +Summervogel Schmetterling +Summervögeli neumet andersch flüüge laa eine Affäre haben +sumpelig wütend +Sumpf-Huehn Schimpfwörter für Frauen (oft im Ausgang) +Sumpfdrossle Betrunkene:r +sumpfe trinken, sich betrinken +Sumpftuur mache ausgehen +Sunne aabätte sonnenbaden +Sunne-Chueche Kuhfladen +sunnebädele sonnenbaden +Sunneblüemli Kosenamen +sünnele sonnenbaden +Sünneli Kosenamen +Sunneschii Kosenamen +Sunnestore Sonnenschutz-Markise +Sunntigs-Fahrer langsamer Autofahrer +Sunntigs-Harmonium Kirchenorgel +Sunntigsfahrer Autofahrer:innen (langsam) +super gut +super- sehr +super-gschiid intelligent +Super-Gstell für die weibliche Figur (attraktiv) +superduuper sehr gut +Superhirni kluger Kopf +supertruper- sehr +Supi Clubs, Discos (Club Supermarket) +Supi Tanzlokal (Club, Disco) (Supermarket) +supitrupi sehr gut +Suppe-Schlitz Mund +Suppe-Siib Schnauz +Suppechaschper Scherzkeks +Suppehuehn Hündchen +Suppehuehn Poulet +Suppemärt Einkauf (Supermarkt) +Suppetopf Badewanne +Suppeturner Solothurner +suppi sehr gut (von super) +Sürmel Irre:r +Sürmel langsame Person +Sürmel mürrische Person +Sürmel Querulant:in +Sürmel Schimpfwörter +sürpfle trinken, sich betrinken (nippen) +Surri Kreisel (Spielzeug) +Surrimutz Kreisel (Spielzeug) +Surrimutz mürrische Person +Surrli Kreisel (Spielzeug) +Surrli mache müde, erschöpft +Susi Gewehr +Susi Prominente (national) (Alain Sutter, eh. Fussballer) +Susi Vornamen (weiblich) (Susanne) +Susi sii Angst haben +Susle Motorrad-Typen (Suzuki) +Susle Vornamen (weiblich) (Susanne) +suttere Wundwasser absondern +sutteret undicht +Suu Vornamen (weiblich) (Susanne, von engl. Sue) +suuber gut +süübere abreiben +Süüch Krankheit, Leiden +Süüch-Cheib Fluchwörter +suude aufs WC gehen +süüde kochen (sieden) +süüde schmusen +suude urinieren +Suuf doch no meh! Du spinnst! +suuf mi so dure es geht so +Suuf-Stube Restaurant +suufe trinken, sich betrinken +suufe wie-n-en alte Jeep trinken, sich betrinken +suufe wie-n-en Russ trinken, sich betrinken +suufe wie-n-es Loch trinken, sich betrinken +Suuferi – en Suufer Trinker:in, Alkoholiker:in +süüferli allmählich +süüferli sorgfältig, behutsam +Suufludi Trinker:in, Alkoholiker:in +Suuft-ums-Verrecke Offroader (SUV) +Suugböde Stilleinlagen +Suuger Kuss (Knutschfleck) +Suuger Staubsauger +Suugi Staubsauger +suur wütend +Suurampfle Sauerampfer +Suurbräme Schimpfwörter (bösartig) +Suurbräme sii traurig +Suurchabis Sauerkraut +Süüre Akne +suure Mocke mürrische Person +suure Moscht Apfelwein +suure Stei Gesicht (grimmiges Gesicht) +suure Stei mürrische Person +süürele stinken (sauer) +Suurgrauch Thurgauer:in +suuri Gurke mürrische Person +suuri Gurke Schimpfwörter für Frauen (schlecht gelaunt) +Süürmeli Kosenamen +Suurstoff-Bräms Krawatte +Suurteigg mürrische Person +Swätter Pullover (engl. sweater) +Swiffer Hündchen (wie das Wegwischtuch) +Swissgold Aromat +Switch mal! Mach Platz! (engl.) +Symp Sympathikus +SZ: Soilizüchterin – Soilizüchter Autokennzeichen national +Szeni Szenengänger:in +Taape Finger +Taape Hand +Taape-Meischteri – en Taape-Meischter Lehrer:in +Taascheli Dummkopf +Täät Kopf (franz. tête) +Tabak-Schlitte Joint +Tabak-Schlüüdere Joint +Tabeete Haut +Tablar-Chueh Kaninchen +Taburettli Stuhl (Hocker) +Tach über em Chopf Haus +Tach-Chänel Ablaufrinne +Tach-Haas Katze +Tach-Hängel Ablaufrinne +Tachhängel Kleiderschutz für Kinder +Tächli-Chappe Schirmmütze +Tachteckeri – en Tachtecker Psycholog:in, Psychiater:in +Taco legge stuhlen +Taco legge stuhlen +tädderle verraten, petzen +Tädderli-Chatz – wiiss und schwarz Verräter:in +Tädderli-Lätsch Verräter:in +Tädderli-Sack Verräter:in +täderle petzen, verpetzen +täfele verraten, petzen +Täfeli Bonbon +Täfeli Verräter:in +taff sehr gut (engl. tough) +Täfi Bonbon +Tafle Haschisch +Täg Menstruation +Tagblatt Klatschmaul +Tages-Aalüüger Medien (Tages-Anzeiger) +Tagi Medien (Tages-Anzeiger) +Tagi komplett Medien (Tages-Anzeiger mit eingeklemmten Blick, damit man ihn nicht sieht) +Tagi mit Medien (inkl. Blick) +Täller Augenringe +Täller Brüste +Täller-Miine Brüste +Täller-Miine Kuhfladen +Täller-Taxi Servierpersonal +Tällerfrässeri – en Tällerfrässer Appenzeller:in +Tami Futz! Das ist unglaublich! +Tamischnägg! Das ist unglaublich! +tamisiech Fluchwörter +tämpele arbeiten (langsam) +Tampon-Gumper Damenriege +Täne Vornamen (weiblich) (Tanja) +Tangalöli Tanga +tängele klappern +Tängelifrau – de Tängelimaa Bäuerin/Bauer +Tängelistock Werkzeug (zum Hämmern der Sense) +Tänger Tanga +tängle arbeiten +Tank Blase +Tänk Brüste +tanke trinken, sich betrinken +Tänke bim Länke denken (Aufforderung an Autofahrer) +tanke für Obscht Nein danke +tanke für Obscht – han Süüdfrücht im Chäller Nein danke +Tanke händ's gseit, wo mer Gäld nonig kännt hät Redensarten (Small Talk) (Antwort eines Schenkenden auf den Dank des Beschenkten) +Tankeadiemessi zum Abschied +tänks ganz sicher +Tankstell Brüste +Tankstell Restaurant +Tänn Scheune +tänndle skifahren (mit den Skiern bergauf steigen) +Tänndli Weihnachtsbaum +Tanne-Chriis Tannenreisig +Tannebaum Weihnachtsbaum +Tannezapfe-Ländleri – en Tannezapfe-Ländler Thurgauer:in +Tannli uf em Tach haa Hausbau (Bau ist vollendet) +Tanse grosse Milchkanne (landw.) +Tante Rosa isch uf Bsuech Menstruation +Tante Schuggi Menstruation +Tante Tina Törner Prominente (international) (Tina Turner, US-Sängerin) +Tante Zürcheri Medien (NZZ) +Tante-Emma-Lädeli Comestibles-Geschäft +Tanz-Dragée Ecstasy +Tanzbei schwinge tanzen +Tanzfüdli weitere Typen (angefressene Tänzerin, positiv) +tapezierte Chnoche dünne Person +täppele schleichen +Tappi langsame Person +tappig ungeschickt +Tarif dure gäh dominieren +Tarif dure gäh schimpfen, beschimpfen +Tarif duregäh erbrechen +Tarif duregäh tadeln, massregeln +tarnte VW Auto-Typen +Täsche Schimpfwörter für Frauen +Täsche-Billiard spile onanieren (Männer) +Taschebattelamperie Taschenlampe (Taschenlampen-Batterien) +Tascheli Schimpfwörter für Frauen +Täschepfunzle Taschenlampe +Taschtatur-Büügeri – en Taschtatur-Büüger Informatiker:in +Taschtatur-Heini Informatiker:in +Taschte-Malträtiereri – en Taschte-Malträtierer Informatiker:in +Taschte-Seckler Pianist (virtuos) +Tasse Auto +Tätsch Knall +Tätsch gäh den Hintern versohlen +Tätsch im Grind haa betrunken +Tätsch im Grind haa betrunken +Tätschchopf Dummkopf +Tätschchopf Schimpfwörter +tätsche Sex haben +tätschle berühren, befingern +Tätschmeischteri – de Tätschmeischter Chef:in +tätscht explodieren +Tatteri alter Mann +Tattle Hand +Tatze Berner:in +Tatze Hand +Tatzelwurm Trolleybus (Gelenk-Trolleybus) +täubele trotzen +tauche schlafen +Taucheraazug Kondom +Taucherli Blässhuhn +Tauchsüüder Aufschneider:in, Angeber:in +Taxi-Chauffeure-Outfit Lederjacke +Taz Kampfanzug +Team – Toll, en andere macht s! Redensarten (Arbeit) +Team – Toll, en andere macht s! Team +Techtelmechtel haa eine Affäre haben +Teckel Hut +Teckel Polizist:in +Teckel usehaue entjungfern +Teckel-Schnägg Nonne +Teckeli-Wii Wein (günstiger Wein mit Schraubverschluss) +teckle jemanden fertigmachen +teckle unterdrücken +teckte Schilter Auto-Typen +Tee inelaa Vollgas +Tee-Büütel Engländer:in +Tee-Büütel Tampon +Tee-Chopf Engländer:in +Teenie-Bunker Clubs, Discos (Mascotte) +Teesieb Schnauz +Tefilon Telefon +Teig-Chlopfer Füsse (Plattfüsse) +Teig-Schüssle-Rüehrer Tram-Chauffeuse/Tram-Chauffeur (wegen der Bedienung des Trams mit dem Steuerrad) +Teigg müde, erschöpft +teigg weich, matschig (Birne) +Teigg-Aff Teenager:in (naseweis) +Teigg-Äffin – en Teigg-Aff Dummkopf +Teigg-Würm Spaghetti +teigge erbrechen +Teigsüüderi – en Teigsüüder Bäcker:in +Teil Ecstasy +Teil Gegenstand +Teil Penis +Telefon-Pfündli 20 Rappen +telefonaniere für die weibliche Figur +Telefonmaschte-Bestiigeri – en Telefonmaschte-Bestiiger Schimpfwörter +Telesurri Medien (TeleZüri) +Telifon wär es Telifon Ruf mich an! (wenn sich jemand nie meldet) +Telifonbüecher usswändig lehre lernen (sinnloses Lernen) +Telisiech! Das ist unglaublich! +Temperierti – en Temperierte Temporär-Mitarbeiter:in +Tempi Temporär-Mitarbeiter:in +Tenente Leutnant (ital.) +Tenni Bier (10er-Pack, engl. ten) +Tenü blau Tenüs (zur Reinigung von Fahrzeugen und Waffen) +Tenu Grüen Kampfanzug +Tenü Hafeschlampe Unkorrektes Tenü +Tenü-Figg Redensarten (Militär) (Tenü-Wechsel unter Zeitdruck) +Tenü-Figg schikanöser Kleiderwechsel +Tenü-Schluuch schikanöser Kleiderwechsel +Tenüschlampe Unkorrektes Tenü +Teppich-Abteilig Geschäftsleitung +Teppich-Chlopfer Hubschrauber +Teppich-Etage Geschäftsleitung +Teppich-Huupi Hündchen +Teppich-Mode Musiker:innen (Depeche Mode, US-Band) +Teppich-Mode Prominente (international) (Depeche Mode, US-Band) +Teppich-Porsche Dackel +Teppichlegger Versager:in, Verlierer:in +Teppichrandspringeri – en Teppichrandspringer Appenzeller:in +Terrorischte chömed Menstruation +Teschtoschteron-Junkie Macho +Teschtosteron-Gorilla Macho +Tessiner Gumpesel Musiker:innen (Nella Martinetti) +Tessiner Wäje Pizza +Tetra-Pak Brüste +Tetris-Meischter Verkehrskadett:innen +teubele wütend +Teutone-Chötzi Götterspeise +Teutone-Hügel Orte (in Zürich) (Zürichberg, weil dort viele Deutsche wohnen) +Teutonie Deutschland +Teutoniker Deutsche:r +Texaneri – en Texaner Aargauer:in +texanischi Stinkbaragge WC (Aargauer Autobahn-WC) +TG: tatsächlich gchauft Autokennzeichen national +TG: Trotzdem gestohlen Autokennzeichen national +TG: Tulpegrinde Autokennzeichen national +TG: tumm gange Autokennzeichen national +Thek Schultornister +Thermometer Narbe (Operationsnarbe) +Thi-Schi T-Shirt +This Vornamen (männlich) (Matthias) +Thommy Engländer:in (engl.) +Thönder Feuerwerk (engl. thunder) +thönndere aufs WC gehen (engl. thunder) +throne aufs WC gehen +Thurgauneri – en Thurgauner Thurgauer:in +Thüttschi – en Thüttsche Deutsche:r (ausgesprochen mit starkem, hochdeutschem Akzent) +Ti-Vi Fernseher +TI: Trotzdem Italienerin – Trotzdem Italiener Autokennzeichen national +Tic-Tac Uhr +tick go hitte stuhlen +tick uufträge übertreiben +ticke Schorsch vermögende Person, Snob +Ticke setze stuhlen +Tickerli Kosenamen (Dickerchen) +ticki Hose haa sexuell erregt (männl.) +ticki Luft dehei haa streiten +Tier-Gfängnis Zoo +tierisch sehr +tifig schnell +tifig sofort, zügig +Tiger in Tank tue Benzin tanken +Tigerchäfig Öffentliches WC (wegen des Geruchs) +tigerlet gefleckt +Tigerli Kosenamen +Tigg Angewohnheit +Tigi Kosenamen +Tili Zimmerdecke +tilt müde, erschöpft +Tilt i de Bire haa betrunken +Tina Thurnheer Prominente (international) (Tina Turner, US-Sängerin) +Tina Turnheer Musiker:innen (Tina Turner, US-Sängerin) +Tinitus-Schlüüdere Ohrfeige +Tinteburg Gebäude, Lokalitäten (Sihlpost) +Tintefässli-Abstauber Beamte +Tintelumpehund Hund (Dalmatiner) +tintle stricken (Fäden zu einer Kordel zwirnen) +Tinu Vornamen (männlich) (Martin) +Tipi Wohnung +Tipp-Mamsell Sekretärin +tippel-toppel Abgemacht! +Tippmamsell Sekretärin +Tippse Sekretärin +tiptop gut +Tirggel Gebäck (Zürcher Honiggebäck) +Tirggel Kopf +Tirggel Schimpfwörter +Tirggel haa betrunken +Tirggel i der Nuss haa betrunken +Tiroler Chnüü Glatze +Tisch zwäg mache den Tisch decken +Tischbombe-Grenadier Minenwerfer-Soldat +tische den Tisch decken +Tittchen wie Schneewittchen Brüste (kleine Brüste) +Titte Brüste +Titte-Bächer Büstenhalter +Titte-Lade Strip-Club +Tittewurm Nippeldreher +Tittney Spiers Musiker:innen (Britney Spears, US-Sängerin) +Tittni Spiers Prominente (international) (Britney Spears, US-Sängerin) +Tiziano Altise Prominente (international) (Tiziano Ferro, ital. Sänger) +töbe toben +Töbe Vornamen (männlich) (Tobias) +Tobi Vornamen (männlich) (Tobias) +Töchti Schulen (eh. Höhere Töchterschule, heutige Kantonsschule Hohe Promenade) +tochtig dumm +Tock-tock – bisch no da? Alles klar? +todes- sehr +Todes-Strecki Sihltalstrasse +Töff Flugzeug-Triebwerk +Töff Schützenpanzer +Töff starte Redensarten (Arbeit) (PC starten) +Töff-Figger Schimpfwörter für Männer +Töff-Pilot Motorradfahrer:in +Töfflampe Brüste +Töfflampe Brüste +Töffli Mofa +Töffli-Meitli – en Töffli-Bueb Motorradfahrer:in (Mofa-Freak) +Töfflibueb Verkehrssoldat +Töfflifahrer Verkehrssoldat +Töffsattel Steak +Töggel Kopf +Töggel Zähne +Töggel-Schliiferi – en Töggel-Schliifer Dentalhygieniker:in +töggele schreiben +töggele Tischfussball +Töggeli Nippel +Toggeli schlafen (Albtraum) +Töggeli Spielfigur (bei Brettspielen) +Töggeli figle Zähne (Zähne putzen) +Töggeli-Bohreri – en Töggeli-Bohrer Zahnärztin/Zahnarzt +Töggeli-Frau – en Töggeli-Maa Zahnärztin/Zahnarzt +Töggeli-Schueh Fussball (Stollenschuhe) +Töggeli-Schueh Schuhe (Sport) (Stollenschuhe, beim Fussball) +Töggeli-Wätter Brustwarzen (bei kaltem Wetter) +Töggelichaschte Gebiss +Töggelichaschte Tischfussball +Tohuwabohu Unordnung, Chaos +Toi-toi-toi Viel Glück! +toibele sich ärgern +toibele toben +Töktel Ärztin/Arzt +Tokter – deet obe hockt er! Ärztin/Arzt +Tokter Mech Automechaniker:in +tökterle Sex haben +Tökti Ärztin/Arzt +Tole Abwasserschacht +Töle Hund +Tole-Teckel 5 Franken +Tolgge Fleck +Tolgge mache klecksen +Tolggehorn Dummkopf +toll sehr gut +tolle Hagel Alleskönner:in +Tollgge Schule (Fehlverhalten) (Tintenfleck oder Fehlleistung) +Tom Vornamen (männlich) (Thomas) +Tomate Hautverletzung (geschwollen und blutunterlaufen) +Tomate-Wäje Pizza +Tomategrind Rothaarige:r +Tomatesuppe-Fäscht Menstruation +Tomätli Fussball (Prellung am Schienbein) +tömblere küssen (engl. Tumbler) +Töme Vornamen (männlich) (Thomas) +Tomimozuba Tomatensalat mit Mozzarella und Basilikum +Tommozz Tomatensalat mit Mozzarella und Basilikum +Toni-Molkerei Brüste (grosse Brüste) +Tonne 1'000 Franken +Tonne grosses Stück +Tonne sehr viel +Tonnerundtoria Fluchwörter +tonnewiis sehr viel +Tönu Läckmiramarsch Tenüs (unkorrekt) +Toogge Fingerabdruck +Tööpe Finger +tööple berühren, befingern +Tööpli gäh Hand (die Hand schütteln) +Tööppe Hand +Toore-Meitli – en Toore-Bueb Dummkopf +Toore-Meitli – en Toore-Bueb Schimpfwörter +töörle trödeln +Töörli-Giiger Durchfall +Tootechopf Schimpfwörter +töötelet Es stinkt +top- sehr +Topf Auspuff +Töpf Brüste +Topf Flugzeug-Triebwerk +Topf Fussball (Tor) +Topf WC +topfe Fussball (ein Tor schiessen) +topfe stuhlen +Toplappe Computer (Laptop) +Toppel-Schnägg 10 Franken +törgele trinken, sich betrinken +Tornischter stark behaarter Männer-Oberkörper +Torpedo Joint +Torpedo Tampon +Torpedo mit Abschussrampe Tampon +total Blackout haa betrunken +total gaga verrückt +total gschafft müde, erschöpft +total killt müde, erschöpft +total näbed sich stah toben +total Panierte Betrunkene:r +Total-Verblöder Fernseher (TV) +Totale haa betrunken +totali Horror schrecklich +tote Gorilla Autos von Toyota (Toyota Corolla) +tote Vogel im Sack haa furzen +Tote-Beinli Gebäck (Nuss-Stengel) +Tote-Spargle Zigarette +toti Geischter wecke furzen +toti Hose schlecht +toti Polizischtin – en tote Polizischt Bremsschwellen +Totsch Dummkopf +Totsch Schimpfwörter +totschig dumm +Totschli Kosenamen +Totteli Schimpfwörter für Frauen +Tötti-Chrääze Büstenhalter +Tötz Brüste +Tötz Hut +Tötz Kopf +Toyota Gorilla Autos von Toyota (Toyota Corolla) +traatsche ausplaudern +Traatsche Klatschmaul +Tracht Prügel uf der Allerwertischt den Hintern versohlen +Trachtegruppe Polizist:in +Trachtegruppe Villiger Schweizer Armee (nach dem eh. EMD-Vorsteher Kaspar Villiger) +trächtig schwanger +trainiere ausgehen +Trakkitor Traktor +Tralaari Schimpfwörter +trällere jammern, sich beklagen +Tram Strassenbahn +Tram-Pfund 20 Rappen +Trämel umgesägter Baumstamm +Trämler-Foräle Cervelat +Trämli öffentliche Verkehrsmittel (Tram) +Trämmleri – en Trämmler Tram-Chauffeuse/Tram-Chauffeur +Tramp-is-Mues Schussel +trampe treten +Trampel Rüpel:in +Trampel-Lisi Schimpfwörter für Frauen +Trampeltier dicke Person +Trampeltier Rüpel:in +Tramperi – en Tramper Tourist:in +Trampi-Auto Go-Kart für Kinder +Trampivelo Fahrrad (für Kinder) +Trampli Schussel +Trampli-Tubel Fahrrad-Fahrer:in +Trampolin Bett +Träne Langweiler:in +Träne-Gondle Cello +Tränegas-Tomate Zwiebel (rote Zwiebel) +Tränki Restaurant +Tränli vertrucke weinen +tranquillo barnetta Das eilt nicht (wie der Fussballer) +Transport-Höögge Beine +Transportier-Häägge Füsse +Trantüüte Langweiler:in +Trätter Schuhe +trättle skifahren (mit den Skiern bergauf steigen) +Traumschiff Bett +Treichle Kuhglocken +Trensch Mantel (Abk. von engl. trenchcoat) +Tres Furzos Bars, Restaurants, Clubs (eh. Restaurant Tres Kilos; wegen der verdauungsfördernden Bohnengerichte) +Trichter rauche einen Joint rauchen +Trickmaschine starte snowboarden (im Funpark) +Triiber Flugzeug-Triebwerk +Triibwerch Motor +Trillerpfiife Geschäftsleitung +trink hei – mer gönd uus leer trinken +Trinkgäld-Höhli Restaurant +Trinkgäld-Süüle Servierpersonal +Trip Ausflug (engl.) +Trip LSD +Trix Vornamen (weiblich) (Beatrice) +Trixle Vornamen (weiblich) (Beatrice) +troche schiisse furzen +Troche-Dock Schimpfwörter für Frauen (schwierig zu kriegen) +Troche-Rasierer Schwächling +tröchnete Appezäller Rosine +Tröchni Scherzkeks (mit trockenem Humor) +Trog Auto +Trohn WC +Troll di! Hau ab! +Trolly-Dolly Flight Attendant (Flugbegleiter:in) +Trolly-Dolly Flight Attendant (Flugbegleiter:in) +trombiere lästern +tröödle arbeiten (langsam) +trööle arbeiten (langsam) +Troope-Chueh Schimpfwörter für Frauen +Troopechopf Schimpfwörter +Trooschtpriis Schimpfwörter +Trööte Joint +Trööte Schimpfwörter +Tropfe-Fänger Tanga +Tröpfli eine kleine Menge Flüssigkeit +Tröpfli ganz wenig +Tröpfli LSD +Tröpfli Medikamente +Tropfstei-Hööli Scheide +Tropfsteihöhli Menstruation +Tropfsteihöhli-Sound Techno +Troschtpriis Versager:in, Verlierer:in +Trottel vom Dienscht Angestellte:r +Trottoir ufeklappe Restaurant-Schliessung +Trotüüle Dummkopf +Trotüüle Schimpfwörter +trötzle trotzen +Trübeli Johannisbeere +Truck e chli uf d Tube! Beeil dich! +Truck-Hügel Akne +trucke drängen +Trucke Kiste +Trucke Schachtel +trucke Sex haben +Trucked no e chli! Mach Platz! +Truckete Menschenauflauf +Trucki Fernbedienung +Truckli kleine Holzkiste +Trückli Schachtel +Trudi Schimpfwörter für Frauen (dümmlich) +Trudi Vornamen (weiblich) (Gertrud) +Trudi Gärschter Klatschmaul (wie die Basler Märlitante) +Trudi schnüütze urinieren (weiblich) +Trudi-Fudi Vornamen (weiblich) (Gertrud) +Trudle Vornamen (weiblich) (Gertrud) +trüebi Tasse Schimpfwörter +Trüff gheje laa furzen (franz. truffes) +Trüffel setze furzen +Trület s der? schwindlig +Trümelhuufe eine müde Truppe +trümlig schwindlig +Trümmerhuufe eine müde Truppe +Trummle dicker Bauch +Trummle Schlagzeug +trümmlige Siech Schimpfwörter +trumpeete furzen +Trumpeete Joint +Truppe Verwandte +Truppe abseile stuhlen +Truthahn Scheide +Truubebeeri Trauben +Trüübeli Johannisbeeren +truurigi Made Schimpfwörter +tschäddere scheppern +tschäddere laa Sex haben +tschägge begreifen, verstehen (engl. to check) +tschägge bewältigen, meistern (engl. to check) +Tschäggsch de Pögg? Alles klar? +Tschäggsch de Pögg? Hast du es begriffen? (engl. to check, puck) +Tschäggsch es? Hast du es begriffen? (engl. to check) +tschalpe schlurfen +tschalpe spazieren +Tschalpi Fussgänger +Tschapaluri Fluchwörter +Tschappatalpi Schimpfwörter +Tschäpper Hut +Tschäpper Schirmmütze +Tschäppere Schimpfwörter für Frauen +Tschäppi Prominente (national) (Stéphane Chapuisat, eh. Fussballer) +Tschäppi-Druck Kopfschmerzen +Tschäse zum Abschied +Tschäse-Bäse zum Abschied +Tschäsen zur Begrüssung +Tschäsnmäsn zum Abschied +Tschätterbäne Klatschmaul +Tschätterbäne Motorrad (125 ccm) +Tschättere Joint +tschättere reden, plaudern +Tschättere Schimpfwörter für Frauen +Tschau zum Abschied +Tschau ade mässi! Du kannst mich mal! +Tschau Bäse zum Abschied +Tschau Bäse! Das ist unglaublich! +Tschau Sau zum Abschied +Tschau Sepp jassen (Spielart) +Tscheche-Golf Autos von Skoda (Skoda Fabia) +Tscheesen zum Abschied +Tschelati Eis-Crème (ital. gelato) +tschent gut +Tschent! Respekt! (engl. gentle) +Tschento 100 Franken (ital. cento) +Tscheppel Schirmmütze +Tschernobiel Orte (ausserhalb von Zürich) (Biel) +Tschi-Ai Amerikaner:in (G.I) +tschi-tschi-tschilliere grillen +Tschibbi Joint +Tschiber Schimpfwörter +tschiene Sex haben +tschiengge schlurfen +Tschiengge Schuhe +Tschifeleri – en Tschifeler Obwaldner:in +Tschigg Schimpfwörter für Frauen (engl. chicken) +Tschiggiita Penis (Chiquita) +Tschigi Schimpfwörter für Frauen (engl. chicken) +Tschigomma Kaugummi +Tschiif Chef:in/Vorgesetzte:r (engl.) +tschiipo günstig (engl. cheap) +Tschiises-Pnöö Sandalen (Jesus-Pneus) +Tschill di eeeeimal! Beruhige dich! +Tschill! Beruhige dich! (engl. to chill) +tschille geniessen (engl. to chill) +tschille sich ausruhen (engl. to chill) +tschilliere sich ausruhen (engl. to chill) +Tschinggalamore Italiener:in +Tschinggalamore-Watschantoore Italiener:in +Tschingge-Beton Polenta +Tschingge-Chotz Polenta +Tschingge-Frisbii Pizza +Tschingge-Nerve Spaghetti +Tschingge-Ruckseckli Autos von Fiat (Fiat 500) +Tschingge-Schampoo Olivenöl +Tschingge-Schlüüch Spaghetti +Tschingge-Schnüer Spaghetti +Tschinggelamore – Dräck a de Schnore Italiener:in +Tschinggeli Brötchen (Semmel) +Tschinggeli Cornetti (Gebäck) +Tschinggeli Italiener:in +Tschinggey Italien +Tschinggin – en Tschingg Italiener:in (ital. cinque) +Tschingguanteli 50 Franken (ital. cinquanta) +tschippiere onanieren (Männer) +Tschisi öffentliche Verkehrsmittel (Cisalpino) +Tschitschi-Wauwau Hündchen (Chihuahua) +tschitschne einen Joint rauchen (damit niemand merkt, was man meint) +Tschö zum Abschied +tschobbe arbeiten (engl. job) +Tschockei-Mütze Schirmmütze (engl. jockey) +Tschögensen zum Abschied +Tschoint Joint (engl. joint) +Tschoint (engl. joint) rauche einen Joint rauchen +Tscholgitaner Joint +Tschoni Tubel Prominente (international) (Johnny Depp, US-Schauspieler) +Tschonporno zur Begrüssung (ital. buongiorno) +Tschoope Anzug +Tschööpli Anzug (Weste) +Tschooppe Jacke (Blazer) +Tschördi Vornamen (männlich) (Jordan) +Tschortsch Tubeldu Prominente (international) (George W. Bush) +Tschou zum Abschied +Tschou (Joe) inehaue einen Joint rauchen +Tschu-En-Lei-Brösmeli Reis +Tschu-Tschu-Bahn Eisenbahn (Dampflokomotive) +Tschübi Joint +Tschüddeldüü zum Abschied +Tschüddelfüddel zum Abschied +tschuddere frieren +tschuddere frösteln +Tschüder Kopf +Tschudere Ohrfeige +Tschuderhöiel Haare (ungekämmte Haare) +Tschuderhoiel zerzaust +Tschudligung Entschuldigung +Tschüge Vornamen (männlich) (Jürg) +Tschugger-Gutsche Streifenwagen +Tschuggerei Stadtpolizei Zürich +Tschuggeri – en Tschugger Polizist:in +Tschühüü zum Abschied +Tschuldigung Entschuldigung +Tschumpel Schimpfwörter +Tschumpel-Gold Schmuck (Edelmetall-Imitation) +Tschumpelhund Chaot:in +Tschumpelhund Entschuldigung +Tschumpeli Wein (1 dl) +tschumpelig dumm +tschumple spazieren +Tschuppele einige +Tschus zum Abschied +Tschüse zum Abschied +Tschüsli zum Abschied +Tschüssel zum Abschied +Tschüssi zum Abschied +Tschutsch Schimpfwörter +tschüttele Fussball +Tschütteleri – en Tschütteler Fussball (Fussballer:in) +Tschutteli Schimpfwörter (hässlich) +Tschutti-Buebe Fussball (Fussballmannschaft) +Tschuttle Schimpfwörter für Frauen (schlampig) +Tschüüf Joint +Tschuui Kaugummi (engl. chewing gum) +Tschuuss! zum Abschied +tschuute Fussball (engl. to shoot) +Tschüüü zum Abschied +TTG Schmuck (Tössemer Tramschinegold) +tubäckle eine Zigarette rauchen +Tubel Dummkopf +Tubel Schimpfwörter +Tubel-Aff-Siech Schimpfwörter +tubeli-eifach kinderleicht +tubeli-sicher kinderleicht +tubelig dumm +tue funktionieren +Tue mal es Foun durebrösmele Ruf mich an! (engl. phone) +Tue mi chützle, dass i cha lache Redensarten (Small Talk) (nach einem faulen Witz) +Tue nöd tümmer, als d bisch! Du spinnst! +tue wie-n-en uufgschüchte Güggel aufgeregt +Tüechli Handtuch +Tuen mal chli tschilliere! Beruhige dich! +Tüend liefere und nöd lafere! Redensarten (Arbeit) +Tuesch Käthle? Jammerlappen +tuet cheibe Wetter (Sturm) +tuet mer schüüli leid Entschuldigung +Tuet mir leid, Adelheid Entschuldigung +tuet s Hirni sandstrahle ungeniessbares Essen (scharfes Essen) +tuet zue Wetter (Bedeckung zieht auf) +tuet's! Jetzt reicht's! +tugge Geld ausgeben, bezahlen +Tuggelimuuser Feigling +Tuggelimuuser Feigling +tuggemuuserig kriecherisch +Tuggerei Schlägerei +Tuggete Schlägerei +Tulpechnolle Holländer:in +Tulpefoifi Schimpfwörter (vom Jassen/Schälle-Sächsi) +Tulpezüchteri – en Tulpezüchter Holländer:in +Tulpezwieble Holländer:in +tumm gange gescheitert +tumm gebore, nüüt dezue glernt und erscht no d Helfti vergässe dumm +tumm gebore, nüüt dezuegleert und alles wieder vergässe Dummkopf +Tumm isch immer de Schöberli! Immer bin ich schuld! +tumm isch nume de Vorname dumm +Tumm und fräch, das isch Päch! dumm +tumm wie Bohne-Stroh dumm +tumm wie d Nacht dumm +tumm wie drüü Meter Fäldwäg dumm +tumm wie e Amsle dumm +tumm wie-n-en Liter Holz dumm +tumm wie-n-es Joghurt dumm +tumme Latz haa schimpfen, beschimpfen +tumme Ziegel Schimpfwörter +tümmer als en Schluck Tee dumm +tümmer als es Kilo Sand dumm +tümmer als es Stuck Brot dumm +tümmer gaht s nüme dumm +Tummerli Kosenamen (tröstend) +Tummerli Schussel +tummi Gans Schimpfwörter für Frauen +Tümmi luegt ihm zu de Ohre uus dumm +tummi Plaudertäsche Klatschmaul +tummi Scheese Schimpfwörter für Frauen +Tumor-Beschlüüniger Mobiltelefon (Handy) +Tun-Du Handlanger:in, Hilfsarbeiter:in +Tunell-Fahrt mache Sex haben +Tuning duregäh sich schminken +Tunkelchammere-Artischtin – en Tunkelchammere-Artischt Fotograf:in +tunkels Pier Coca-Cola +tünkle Sex haben +tünkle tunken +tünn schisse Durchfall +Tünn-Schiss Durchfall +Tünn-Schiss Durchfall +Tunnerbalke WC +Tunnerbalke füetere stuhlen +Tunnerwätter ablaa schimpfen, beschimpfen +Tunnerwätter! Fluchwörter +Tünni Wähe (vor allem im Unterland) +Tunte-Täschli Unteroffizierstasche +Tuntebrunne Gebäude, Lokalitäten (Strandbad Tiefenbrunnen) +Tuntschi Gummi-Puppe (aus Stroh) +tüpfe treffen +tupfed gnau s gliichi dasselbe +Tüpfi Kochtopf +Tüpfi Schimpfwörter für Frauen +tüpflet gepunktet +Tüpfli uf em i Krönung, Höhepunkt +Tüpfli-Schiisseri – en Tüpfli-Schiisser Pedant:in +Tüpfli-Schiisseri – en Tüpfli-Schiisser Spiesser:in +tüppig Wetter (schwül) +Tür-Fale im Gsicht Tabakpfeife +Turbine Autos von Porsche (Porsche Turbo) +turbo schnell +Turbo ine! Beeil dich! +turbo- sehr +Türfalle-Butzer Vertreter +Türgg Manöver +türgge betrügen +Türgge-Gipfeli Kebap +Türgge-Ribbel Mais +Türgge-Ribbel Polenta +Türgge-Schüssle Parabolspiegel für TV-Empfang +türggischs Hobelfleisch Kebap +Turi Tourist:in +türkische Diplomatekoffer Plastiksack +turne Sex haben +Turner-Chränzli Turn-Anlass +Turner-Riige Turn-Anlass +Turnhalle Bett +Turnhalle Scheide +Turnschueh Prominente (national) (Bernard Thurnheer, Sportreporter) +Turnschueh Siedfleisch +Turnschueh Halbheer Prominente (national) (Beni Thurnheer, Sportreporter) +Turnschueh-Japanerin – en Turnschueh-Japaner Tourist:in +tüschele duschen +Tüschi heize duschen +Tuschi näh duschen +Tussi Schimpfwörter für Frauen (dümmlich) +Tussi-Magnet Offroader (SUV) +Tussi-Tooschter Solarium (engl. toaster) +tütsche aufprallen +tütsche schiessen (treffen) +Tütschi-Auto Jahrmarkt (Auto-Scooter) +Tütti-Chrääze Büstenhalter +Tutti-Frutti Fruchtsalat +Tutti-Frutti Nüsse mit Rosinen +Tuttlinger Deutsche:r +Tuub ap! Hau ab! +Tuube Joint +Tuube-Schlag Strip-Club +Tuube-Sunne Solarium (Selbstbräuner) +tuubetänzig aufgeregt +tuubetänzig nervös +tuubetänzig unruhig (vom Herumtänzeln der Tauben) +tuuch erschrocken +Tuuche weitere Typen (unterdrückt) +tüüf flüüge Auto fahren (schnell) +tüüf flüüge fahren (schnell) +tüüf und breitgleit für die weibliche Figur (klein und dick) +Tüüfbohrer Zungenkuss +Tüüfdruck-Väntil After +Tüüfel Whisky +Tüüfel hät s gseh! Fluchwörter +Tüüfel hät s gseh! Fluchwörter +Tüüfel schiisst immer uf die gröschte Hüüffe Redensarten (Geld) +Tüüfel schiisst uf die groosse Hüüfe Redensarten (Small Talk) +Tüüfi Gebäude, Lokalitäten (Strandbad Tiefenbrunnen) +tüüflisch schrecklich +Tuume ufe! Respekt! +Tuume-Schriibmaschine Mobiltelefon (Handy) +Tüümli trüle arbeitslos +tüür gut +tüüre Tolgge Geschwindigkeitsbusse +Tüürli Ausflug (Tour) +Tuusiger 1'000 Franken +Tuusigsassa Alleskönner:in +Tüüte Auspuff +Tüüte Joint +Tüüte smouke einen Joint rauchen (engl. to smoke) +Tüütsche Thurgauer:in +Tuz-Witt Durchfall (franz. tout de suite) +Two-Pac dicker Bauch +Typ wie de Harry Hasler Zuhälter +U-Boot Schützenpanzer +U-Böötli Bier (Bier mit versenktem Schnapsglas) +U-Boxe Unterhose (für Männer) +übelghöörig Ohren (schwerhörig) +über all vier Bagge strahle glücklich +über d Bettkante zieh betrügen +über d Eichle stülpe Sex haben +über d Höf gah ausgehen +über d Scheiche stolpere stolpern +über d Zäh schiisse erbrechen +über de Bärg sii das Schlimmste überstanden haben +über de Gartehaag frässe eine Affäre haben +über de Haag frässe Seitensprung +über de Habicht näh Sex haben +über de Habicht schleike Sex haben +über de Huufe vogle Sex haben +über de Jordan gah sterben +über de Tisch zieh betrügen +über de Tuume ungefähr +über s Chnüü näh den Hintern versohlen +über s Chrüüz luege schielen +über s Cornet zieh Sex haben +über s Näscht inezieh betrügen +über s Rot Meer sägle Menstruation (während der Mens) +über s Ziel use schüüsse zu weit gehen +über tue aufsetzen +übercheere Sex haben +übere verrückt +übere beame ein E-Mail schicken (engl. to beam) +übere schiebe übergeben +überegheie explodieren +überegheje verfallen (Milch, Wein) +überegschnappt verrückt +überflüssig schlecht +übermarche zu weit gehen +übermässig erfrischt betrunken +Übermüedigstruppe Übermittlungstruppen +überrisse teuer +überrole überfahren +überschiinig Wetter (bedeckt, aber hell) +überschnurre überreden, überzeugen +überstelle Sex haben +überzwärch kompliziert +Ueberbei-Bahn öffentliche Verkehrsmittel (UeBB, eh. Uerikon-Bauma-Bahn) +Ueli Vornamen (männlich) (Ulrich) +Ueli Schreck Prominente (national) (Ueli Beck, eh. Radio-Moderator, wegen seiner faulen Sprüche) +Üems Übermittlungstruppen +Uetlivogel go bergle Orte (in Zürich) (auf den Üetliberg wandern) +Üezgi Orte (in Zürich) (Üetliberg) +uf 180 wütend +uf Alarm sii explodieren +uf allne Vierne laufe kriechen +uf Balkonie gah Urlaub machen (zu Hause bleiben) +uf Bettehuuse go pfuuse schlafen +uf Bier-Safari gah ausgehen +uf Bsuech gah besuchen +uf d Bei stelle vorbereiten, planen +uf d Bräms stah bremsen +uf d Bräms trucke bremsen +uf d Brämsi gah langsam aufhören +uf d Chappe schiisse tadeln, massregeln +uf d Chappe überchoo verlieren +uf d Chlötz gah bremsen +uf d Frässi haue stolpern +uf d Gass gah ausgehen +uf d Haldeguet-Montasch gah ausgehen (von der Biermarke Haldengut) +uf d Hüehnerauge stah erwischen, ertappen +uf d Ise stah bremsen +uf d Leutsch gah ausgehen +uf d Loitsch gah ausgehen +uf d Loitsch gah spazieren +uf d Nase gheje hereinfallen +uf d Nase gheje sich irren +uf d Pauke haue bis in die Morgenstunden feiern +uf d Pelle rucke auf Tuchfühlung gehen +uf d Pischte gah ausgehen +uf d Prässi gah aufs WC gehen +uf d Schiffi gah aufs WC gehen +uf d Schiffländi gah aufs WC gehen +uf d Schiissi haue eine Abfuhr erhalten +uf d Schlich choo erwischen, ertappen +uf d Schnitz flüüge umfallen +uf d Schnitz gäh zuschlagen +uf d Schnure gheje stolpern +uf d Schnure gheje umfallen +uf d Schnurre flüüge hereinfallen +uf d Schnurre gheje verlieren +uf d Schnurre hocke schweigen +uf d Schueler-Reis gah ausgehen +uf d Schüssle gah aufs WC gehen +uf d Schwanz gah ausgehen +uf d Schwanz gah spazieren +uf d Siite legge Geld sparen +uf d Spitze stah auf die Zehen stehen +uf d Straass gstellt werde entlassen werden +uf d Stude haue nachfragen (aufsässig) +uf d Tube trucke Auto fahren +uf d Wält stelle gebären +uf d Walz gah ausgehen +uf d Zäje trampe erwischen, ertappen +Uf dass mer s chönd phalte! Guten Appetit +uf de Bock rüere Sex haben +uf de Bode choo sich beruhigen +uf de Chole hocke sparsam mit Geld umgehen +uf de Chopf haue Geld verschwenden +uf de Chraane rüere Sex haben +uf de Felge müde, erschöpft +uf de Felge frässe Gebiss (ohne Gebiss essen) +uf de Frässi müde, erschöpft +uf de Geischt gah ärgern, provozieren +uf de Ghüdder schüüsse entsorgen, wegwerfen +uf de Gnepfi am Limit +uf de Grind gheit dumm +uf de Grind haue Geld ausgeben, bezahlen +uf de Huube hocke ausnutzen, aushalten +uf de Kante am Limit +uf de Kippi am Limit +uf de Latte haa auf dem Zahn haben +uf de Mischt rüere entsorgen, wegwerfen +uf de Pott gah aufs WC gehen +uf de Ranze gäh zuschlagen +uf de Ranze gheje umfallen +uf de Ranze überchoo verlieren (uf de Ranze übercho, von Ranze=Rucksack) +uf de Ranze überchoo zuschlagen +uf de Riss gah anbaggern, aufreissen +uf de rote Wälle sörfe Menstruation +uf de Sack gah ärgern, provozieren +uf de Sack gheje umfallen +uf de Sack überchoo verlieren +uf de Schnäuz müde, erschöpft +uf de Schnure müde, erschöpft +uf de Schwanz trampe drängen +uf de Seel umechnüünle auf jemanden einreden +uf de Socke müde, erschöpft +uf de Stümpe müde, erschöpft +uf de Stümpe müde, erschöpft +uf de Teckel überchoo verlieren +uf de Töff sitze Sex haben +uf de Waggel gah ausgehen +uf de Wecker gah ärgern, provozieren +uf de Wegge müde, erschöpft +uf de Zah gah ärgern, provozieren +uf Depro mache unglücklich, deprimiert +uf der andere Siite andererseits +uf der Terrasse habere Zähne (vorstehende Zähne) +uf di eiget Müli rede bluffen +uf di höch Kante legge Geld sparen +uf di Kanarische Vögel go insle Sex haben +uf di vier Buechstabe gheje umfallen +Uf dich chömmer verzichte! Hau ab! +uf die fuuli Tuur mache betrügen +uf die Latiinischi läbe ausnutzen, aushalten +uf die liechti Achsle näh Das ist mir egal +uf die oder de würdi kein Foifer wette unzuverlässige Person +uf e Liimtube trampet faul, träge (Quelle: Cabaret Rotstift) +Uf e tummi Frag git s e tummi Antwort! Geschwätz +uf em Damm fit, gesund +uf em Ego-Tripp Egoist:in +uf em Ggiwiif sii aufpassen (franz. qui vive, Ruf der Schildwache) +uf em Hund müde, erschöpft +uf em Leiterli uufstiige vorwärts kommen +uf em letschte Zacke am Limit +uf em Milchbi Orte (in Zürich) (beim Milchbuck) +uf em Spitz am Limit +uf em Spitzgupf am Limit +uf em Stängeli umefurze Sex haben +uf em Tisch müend's verrecke jassen (Ass oder Banner offerieren) +uf em Zahfleisch am Limit +uf em Zahfleisch laufe müde, erschöpft +Uf es anders Mal zum Abschied +uf es Chliises gah ausgehen +uf Ex – oder nie meh Sex leer trinken +uf Fleischbschau gah ausgehen +Uf Güderwix zum Abschied +uf Hände träge verwöhnen +uf Hochglanz bringe bürsten, polieren +uf hundertachzg obe sii toben +uf kän Fall Nein +uf Migros schüüsse schiessen (mit Serienfeuer) +uf Migros stelle mit Seriefeuer schiessen (Seriefeuer-Stellung am Stgw 57) +uf Öhrlike gah schlafen +uf öpper iipauke auf jemanden einreden +uf öpper iipredige auf jemanden einreden +uf öpper iischnurre auf jemanden einreden +uf öpper inebängle auf jemanden einreden +uf öpper stah sich verlieben +uf öpperem haa sich verlieben +uf öppis plange ungeduldig erwarten +uf öppis spanifle erstreben +uf öppis spienzle erstreben +Uf Pfluderwiege zum Abschied +uf Pi-Pi-Eilend gah aufs WC gehen (thailändische Insel) +uf Pippibox gah aufs WC gehen +uf Pump läbe Geld schulden +uf Resärve müde, erschöpft +uf s AB gah aufs WC gehen +uf s ABC gah aufs WC gehen +uf s Abee gah aufs WC gehen +uf s Bäumli gah explodieren +uf s Füdli gäh den Hintern versohlen +uf s Gädder choo auf dem Zahn haben +uf s Gaspedal trucke sich beeilen +uf s Hüüsli gah aufs WC gehen +uf s Konto biige Geld sparen +uf s Lavabo gah aufs WC gehen +uf s Mail legge ein E-Mail schicken +uf s Ohr ligge schlafen +uf s Örtli gah aufs WC gehen +uf s Tach überchoo verlieren +uf Tschi… butti (von Djibouti) gah stuhlen +uf Tschi… butti gah aufs WC gehen +uf Turnee gah ausgehen +uf tuusig und zrugg bis zum Geht-nicht-mehr +uf Underschissme go de Heuwage umschmeisse über die Stränge hauen +Uf Wider-Lugano zum Abschied +Uf Widergüx zum Abschied +Uf Wiederluege zum Abschied +Uf Wiederseh zum Abschied +Uf Wiedertschüss zum Abschied +uf Züri go füfzgerle Zürcher:in (nach Zürich gehen, aus St. Galler Sicht) +ufe bergauf +uferschante Lümmel Rüpel:in +ufeschnuddere Schnupfen (den Nasenschleim hochziehen) +ufgstängelets Löölizüüg grosse Person +Uflaat Rüpel:in +uflätig unanständig +uflätig benäh sich schlecht benehmen +ufs Grab gah Friedhof +ufs Häfi gah aufs WC gehen +ufs Sparbüechli tue Geld sparen +Ufzgi Schule (Unterricht) (Hausaufgaben) +Ührli After +Uhu Angestellte:r (Unterhund) +Uhu-Ferie mache Urlaub machen (ums Huus ume) +Uhuerehuufe sehr viel +Ui nei! Das ist unglaublich! +uliidig sauer +ultimo cremo gut +ultra- sehr +um de Egge kompliziert +um de Egge fiile eine Kurve fahren +um de Rank kurve eine Kurve fahren +um es Birebitzeli beinahe +um es Fädeli beinahe +um es Haar beinahe +um es Haar knapp +um es Mü beinahe (math.) +um Grund und Bode bringe ausnutzen, aushalten +um Himmels-Herdöpfels-Wille Fluchwörter +um öpper ume scharwänzle anbaggern, aufreissen +um öpper ume scharwänzle flirten +um siebe Hoistöck ume Aufträge unter der Hand vergeben +ume anwesend +ume guene ziellos umherirren +ume heue ziellos umherirren +ume hüehnere ziellos umherirren +ume-exe exerzieren +umeballoone arbeiten (langsam) +umebalöönle Oralverkehr (bei Männern) +umeblätze schmusen +umeblööterle arbeiten (langsam) +umeblöterle herumlungern +umeborze arbeiten +Umeboxerei Schlägerei +umechalbere Schabernack treiben +umechäpsle schmusen +umecheibe Auto fahren +umechessle Auto fahren +umechnäppere schmusen +umechüechle arbeiten +umeduudele arbeiten (langsam) +umedüüse fahren +umefäge fahren +umefätze fahren +umefigge lästern +umefigureetle herumstochern +umefigureetle schmusen +umefiile fahren +umefingerle berühren, befingern +umeflaniere ausgehen (franz. flâner) +umefotzle herumhüpfen +umefurze Auto fahren +umefurze wie-n-es Humbeli nervös auf und ab gehen +umefüsele schleichen +umefüsle Übung im Freien +umegäggele sich mit Kleinkram beschäftigen +umegäh widersprechen +Umegäh gilt! Redensarten (Small Talk) (Gib mir das Geborgte wieder zurück) +umegarettle Auto fahren +umegeiere ziellos umherirren +umegeischtere schleichen +umegfätterle arbeiten (langsam) +umegfätterle Feinarbeit +umegheje ausgehen +umegondle ziellos umherirren +umegufere Feinarbeit +umegumpe herumhüpfen +umegumpe herumtollen +umegurke arbeiten (langsam) +umegusle herumstochern +umegwaggle trödeln +umegwaggle ziellos umherirren +umehänge herumlungern +umeharve trödeln +umehorne Sex haben +umehüehnerig aufgeregt +umehüenere herumlungern +umehuere herumlungern +umehummle herumlungern +umehüppere unruhig (engl. hyper) +umehusiere ausplaudern +umejoggle herumhüpfen +umejoggle herumtollen +umejoggle Schabernack treiben +umekurve Auto fahren +umelafere ausplaudern +umelafere herumlungern +umeliire aufwickeln +umeliire jammern, sich beklagen +umelitze falten, falzen +umeloitsche spazieren +umelööle arbeiten (langsam) +umelottere herumlungern +umeluedere herumlungern +umelümmle sich schlecht benehmen +umelungere herumlungern +umelungere ziellos umherirren +umemache knutschen +umemache küssen +umemache schmusen +umemeche arbeiten (knifflige Arbeit) +umemuule lästern +umemuule widersprechen +umenäägge jammern, sich beklagen (von Kindern) +umenäh Handarbeiten (Hosen kürzen) +umenäschte sich im Bett herumwälzen +umenifele sich mit Kleinkram beschäftigen +umenüchle ziellos umherirren +umenürze jammern, sich beklagen (von Kleinkindern) +umeörgele schmusen +umepängle um sich werfen +umepflootsche mit Wasser spielen +umepfluttere sich ausruhen +umeproleete schreien, rufen +umepuffe zuschlagen +umerätsche ausplaudern +umeröifle fahren +umerööschte fahren +umerössle fahren +umerötze fahren +umerueche Auto fahren +umerutsche skifahren (Anfänger) +umeschläcke knutschen +umeschnäddere ausplaudern +umeschnoigge stöbern, wühlen +umeschnörre verraten, petzen +Umeschnurri Verräter:in +umeschwafle ausplaudern +Umeschwafli Schwätzer:in +umeschwanze ziellos umherirren +umeschweisse fahren +umesemele joggen +umesieche Auto fahren +umesirache Auto fahren +umesöile Sex haben +umesoode herumlungern +umesöösse Schnupfen +umestöbere stöbern, wühlen +umestriele herumlungern +umestriele ziellos umherirren +umestriiche ziellos umherirren +umeströme ziellos umherirren +umesumpfe trinken, sich betrinken +umesurig aufgeregt +umesürmle herumlungern +umesusch vergeblich +umetigere nervös auf und ab gehen +umetigere ziellos umherirren +umetöffle fahren +umetökterle arbeiten (langsam) +umetökterle berühren, befingern +umetraatsche ausplaudern +umetraatsche verraten, petzen +umeträddele trödeln +umetrööle arbeiten (langsam) +umetroole herumtollen +umetrümmere herumlungern +umetrumpeete verraten, petzen +umetschiengge schlurfen +umetuggere Auto fahren +umetürgge exerzieren +umevagabundiere trödeln +umevagante ziellos umherirren +umewusle stöbern, wühlen +umezaagge trödeln +umezüngle Zungenkuss +umflüüge umfallen +umgheje umfallen +umgheje umstürzen +umgleitete Furz rülpsen +umkehrt isch au gfahre falsch +umkehrte Bluemetopf Hut +umkipp-wenn-antipp müde, erschöpft +umlaa umbringen +umlegge Sex haben +ums Tööde unbedingt +ums Verrecke unbedingt +ums Verrode unbedingt +ums Vertippe unbedingt +ums Verwurge unbedingt +Umsatzzahle-Riiterin – en Umsatzzahle-Riiter Kader-Mitglied +umtroole umstürzen +unaagmäldet aachlopfe besuchen +uncool schlecht +und dänn danach +Und jetzt bisch zäh Meter gwachse? Das ist mir egal +Und jetzt häsch meh Legos? Das ist mir egal +Und vo was träumsch i dr Nacht? Spinnst du? +Und vo was troimsch znacht? Du spinnst! +Und z Peking isch es Velo umghejt! Redensarten (Small Talk) (Antwort auf etwas Uninteressantes) +under allem Hund schlecht +under aller Kanone Schande +under aller Kanone schlecht +under aller Sau schlecht +under d Chnuute näh unterdrücken +under d Nase riibe erzählen (hämisch) +under de Chnuute unterdrückt +under de Chnuute haa dominieren +under em Haag dure frässe eine Affäre haben +under em Haag durefrässe Seitensprung +under em Hammer unterdrückt +under em Hammer sii eine Beziehung haben +under em Joch unterdrückt +under em Stämpel unterdrückt +under em Teppich unterdrückt +under em Tuume bhalte unterdrücken +under em Tuume bhalte unterdrückt +under jedem Hund daneben, verwerflich +Under jedem Tach es Ach Zwischenmenschliche Beziehung +under jedere Sau daneben, verwerflich +under s Joch näh unterdrücken +under Starchstrom stah Kokain konsumieren +under Wasser sii Stress +Under-Liib-Schabe Werkzeug (Unterlagsscheibe) +underbeliechtet dumm +Underbou Beine +undere füüre sich beeilen +undere gah schlafen +Undere mit eu! schlafen (Aufforderung an Kinder) +undereheize drängen +underejuble betrügen +underenand mache mischen +underezünde drängen +Underflöte Unterhose (für Männer) +Undergrund-Chalet Sarg +Underhündin – en Underhund Mitarbeiter:in +undermotorisierte Chraane Auto +Underpfüpfs Unterhose +Underschlüüch Unterhose +Underschriibe für Analphabete Gas geben (Reifenspuren) +underschti Rugge Gesäss +underschti Schublade niederträchtig +Undis Unterhose (Abk.) +une dure sii bi öpperem eine Abfuhr erhalten +une ine schliife Fussball (reingrätschen) +unenuse speuze onanieren (Männer) +Unfall Schimpfwörter +ungattig ungehorsam +ungattllichs Gsüün hässlich (Gesicht) +ungefähr etwa +Unggle Verwandte (Onkel) +Unggle Tokter Ärztin/Arzt (Kindersprache) +unghoblet unanständig +unghoblete Dräcksack Rüpel:in +unghüür bedrohlich +unghüür sehr +unglettet zerknautscht +ungrad hinterhältig +ungspitzt in Bode schlaa jemanden fertigmachen +Ungsundi Zigarette +Uniformgurke Politesse +Unkel Otti macht e Foti fotografieren +unluuter eigenartig, seltsam +Unrat-Entfernigs-Technologin – en Unrat-Entfernigs-Technolog Müllfrau/Müllmann +unriifs Gmües Teenager:in +Uns bezahlt der Staat Banken (UBS) +Unschuld näh entjungfern +unsicher u de Bei sii betrunken +unsuuber eigenartig, seltsam +Unterblocherwil Orte (ausserhalb von Zürich) (Herrliberg) +Unterlags-Schiibe Kleingeld +Unterländer Bewohner des Mittellandes +Unterpöpsli Unterhose +Untertöffli Unterhose +Unti Schule (Abk.) +Unzgi Unterhose (Abk.) +UP Fussball (Spiel auf ein Tor) +üppig frech (Wird nöd üppig, Meitli/Pürschtli!) +üppig werde über die Stränge hauen +Urin-Proob Apfelschorle +Urinella Prominente (national) (Sektenführerin Uriella) +Urinia Gebäude, Lokalitäten (Hauptwache Urania) +Urinpeitsche schwinge urinieren +Urne Aschenbecher +Urs Pet-Flasche Prominente (national) (Urs P. Gasche, eh. TV-Moderator) +Urschwiiz Kantone (Innerschweiz) +Urseli Eiterpickel beim Auge +Ursi Vornamen (weiblich) (Ursula) +Ursi Stress Prominente (national) (Ursula Andress, Schauspielerin) +Ursige Joint +Ursle Vornamen (weiblich) (Ursula) +us de Finger suuge vorbereiten, planen +us em Ärmel gschüttlet ungefähr +us em Feischter rüere Geld verschwenden +us em Gröbschte dusse sii der Stress lässt nach +us em Hüsli aufgeregt +us em Hüsli unruhig +Us em Lächli git s es Bächli Redensarten (Small Talk) (wenn jemand immer lacht) +us em letschte Loch pfiiffe am Limit +us em letschte Uusverchauf fehlerhafte Ware +us em Muul stinke wie en Büffel us em Arsch Mundgeruch +us em Rueder graate missraten +us em Sinn tue verdrängen, abschieben +us ere Mugg en Elifant mache übertreiben +us sibe Süppli es Tünkli alles Mögliche +Üse Vornamen (männlich) (Urs) +use chotze sein Herz ausschütten +use ekle mobben +use trumpeete sein Herz ausschütten +use und furt flüchten, davonrennen +Use us Schaffhuuse! Hau ab! +usebugsiert werde entlassen werden +usebuttere verdrängen, abschieben +usechoo erfolgreich sein (ohne Gewinn und Verlust) +usechotze reden, plaudern +usechützle das Letzte herausholen +useflüüge entlassen werden +usefuule ausscheiden +usefuule entlassen werden +usegäh ausliefern +usegheje ausscheiden +usegheje entlassen werden +usegheje Schule (Übertritt) (sitzenbleiben) +useghejt werde entlassen werden +usegrüert werde entlassen werden +usegschmisse werde entlassen werden +usegspickt werde entlassen werden +usegstuehlet gut angezogen +usehöische widersprechen +usejasse Geld verschwenden +usejasse Geld verschwenden +uselaa ausliefern +usenand gah sich trennen +useplatze lachen +useplodere ausplaudern +usepützlet gut angezogen +useputzt gut angezogen +userüere Geld ausgeben, bezahlen +useschürgele verzögern +useschüübe verzögern +usestüdele verzögern +usetwütsche entwischen +usewinde Geld ausgeben, bezahlen +Ussebord-Zwieback-Frääsi Zähne (vorstehende Zähne) +Usserkantonali – en Usserkantonale Auswärtige:r +üsserscht sehr +Üsserschwiiz Kantone (alles ausserhalb des Wallis) +Üsserschwyzer Deutschschweizer:innen (aus Walliser Sicht) +usslaa Fussball (umdribbeln) +usswärts gah ausgehen (ins Restaurant) +usswärts go laiche eine Affäre haben +Uszehrig haa Magersüchtige:r +Üter Brüste (Euter) +Uuf-und-zue-Chaib Handorgel +uufässe essen (fertig essen) +uufbidoniere Benzin tanken (militärisch) +uufblaasene Siech Aufschneider:in, Angeber:in +uufblasets Meersoili Dackel +uufbohre tunen +uufdunse gut angezogen +uufgäh aufgeben, resignieren +uufgleise vorbereiten, planen +Uufgleite eine klare Sache +Uufgleite jassen (Jass mit aufgedeckten Karten) +uufgmotzt gut angezogen +uufgregt tue unruhig +uufgschosseni Bohnestange grosse Person (gross und hager) +uufgschürfts Chnüü Hautverletzung +uufgstängleti Packschnuer grosse Person +uufgstängleti Packschnuer mager +uufgstänglets Löölizüüg Blödsinn +uufgstellt gut gelaunt +uufgstellti Packschnuer mager +uufhöre blööterle sich beeilen +Uufhöre gilt! Hör auf! +uufläse aufheben +uufliire aufwickeln +uuflupfe aufheben +uufmööble verbessern +uufmotze tunen +uufmotze verbessern +uufmüpfig frech +uufnäh aufheben +uufnäh heben +Uufnahm mache fotografieren +uufpängle aufprallen +uufpasse Achtung! +Uufpasse – susch gaat da na de Rauchmälder ap Aufschneider:in, Angeber:in +uufpasse wie-n-en Häftlimacher aufpassen +uufpeppt gut angezogen +uufpicke aufheben +uufpimpe (von der MTV-Sendung "Pimp My Ride"")" tunen +uufpimpe (von der Sendung "Pimp My Ride"")" verbessern +uufpimpt gut angezogen (von der MTV-Sendung "Pimp My Ride") +uufpluschtere bluffen +uufpumpet schwanger +Uufrichti Hausbau (Aufrichtfest) +uufriisse anbaggern, aufreissen +Uufriisser Frauenheld +uufrole aufwickeln +uufrugele aufwickeln +uufschine vorbereiten, planen +uufschlaa eintreffen +Uufschlüüsse! Mach Platz! +uufschniide bluffen +uufschniide wie de Hans vo obe am Dorf bluffen +uufschniide wie de King uf de Schiissi bluffen +uuftätsche aufprallen +uufträje aufwickeln +uuftrüle aufwickeln +uuftunneret gut angezogen +uufwinde aufwickeln +uufzieh hänseln +uufzieh vorbereiten, planen +uuhuere Mischt Blödsinn +uuhuere- sehr +Uuhuere-Chnüü Brüste (grosse Brüste) +Uuhuerige Joint +uuhüüne- sehr +uumega- sehr +Uups Firmen (Bank UBS) +uurüüde- sehr +uus-chääre ausknobeln +uus-chääse ausknobeln +uus-chügele Fussball (ausspielen) +uusbeinle Poulet (ein Poulet ausnehmen) +uusbrännt abgerackert +uusbrännt müde, erschöpft +uusbrüete vorbereiten, planen +Uusfahrt Feiertage (Auffahrt) +uusflippe toben +Uusfluug Ausflug +uusgchätschet abgenützt +uusgchätschet müde, erschöpft +uusgfranslet abgenützt +uusgfranslete Hals Gesicht +uusglaatschet abgenützt (Schuhe) +uusgliiret abgenützt +uusgliiret müde, erschöpft +uusglutschet müde, erschöpft +uusglutscht veraltet +uusgschämt daneben, verwerflich +uusgschigget abgenützt +uusgschigget abgerackert +uusgschigget müde, erschöpft +uusgseh wie drüü Tag Rägewätter schlecht aussehen +uusgseh wie en Bäse hässlich +uusgseh wie en Uhu nach em Waldbrand Bart +uusgseh wie en vertrampete Heimet-Schii schlecht aussehen +uusgseh wie en vertrampete Heimetschii schlecht aussehen +uusgseh wie es Tulpe-Achti im Räge verlieren +uusgsoffne Halbliter Betrunkene:r +uusgsuuget müde, erschöpft +uusgümmele radieren +uusgwunde abgenützt +uusgwunde müde, erschöpft +uushültsche pellen, schälen +uusjasse absprechen, vereinbaren +uusjasse ausknobeln +uusjoggle ausknobeln +uusknipse umbringen +uuslaa Handarbeiten (Hosen erweitern) +uuslähre daneben schütten +uuslaufe Menstruation +uuslehne klauen, stehlen +Uuslöscheri – en Uuslöscher Feuerwehrfrau/Feuerwehrmann +uusmache das Licht ausschalten +uusmache essen (fertig essen) +uusmischte entsorgen, wegwerfen +uusnäh wie-n-e Gans zu viel Geld verlangen +Uusööd weitere Typen (männliche Nervensäge) +uusplampe sich ausruhen +uusplampe laa langsam aufhören +uusplampe laa nachlassen +uusplämperle langsam aufhören +Uuspuff After +uuspumpet abgerackert +Uusrangschierti Schimpfwörter für Frauen +uusraschte explodieren +uusraschte toben +uusriisse schnorren +uusruebe sich ausruhen +uusrüefe jammern, sich beklagen +uusrüefe wie en Wald voll Affe schimpfen, beschimpfen +uusrutsche umfallen +uusruume entsorgen, wegwerfen +uusschalte töten +uusschaube aussondern +uusschniide schneiden +Uusschuss fehlerhafte Ware +uussortiere aussondern +uusspane sich ausruhen +Uussprach wie en Wasserfall feuchte Aussprache +uusstaube entsorgen, wegwerfen +Uussuufete Restaurant-Schliessung +uussuuffe leer trinken +uusträtte müese aufs WC gehen +uustriebe gebären +uustrinke leer trinken +Uustrinkete Restaurant-Schliessung +uuswette ausknobeln +uuswinde das Letzte herausholen +uuswinde zu viel Geld verlangen +Uuswurf Gesäss +uuswürfle ausknobeln +Uusziit Auszeit, Time out +Uusziit näh schwänzen +Üüter-Gsöff Milch +uuu- sehr +UV-Filter-Gstell Sonnenbrille +uverschamt sehr +uverschamt unanständig +Uwe Deutsche:r +Vagabundin – en Vagabund Obdachlose:r +Vagabundin – en Vagabund Tourist:in +vakuole aufs WC gehen +Vale Vornamen (weiblich) (Valeria) +Valium langsame Person +Valium Langweiler:in +Vampir-Teebüütel Tampon +Vane – du Pfanne Vornamen (weiblich) (Vanessa) +Väntil After +Väntilator Hubschrauber +Vaterlands-Komprässer Handorgel +Vaterlands-Vergässer im Grind haa betrunken +Vatermörder Krawatte +Vätsch Eltern (Vater) +Vatter Freund, Partner +VBA – versucht, beschäftigt auszusehen militärische Abkürzungen +Vegi Restaurant (vegetarisch) +Vehtokter Tierärztin/Tierarzt +Veijeli Veilchen +Vejeli Augen (blaues Auge) +Vejeli blaues Auge (Veilchen) +Vejeli Gesicht (blaues Auge) +Velo Fahrrad +Velo fahre – gäg ufe puggle, gäg abe strample hofieren, schmeicheln +Velofahrerin oder en Velofahrer – tramplet nach abe, hechlet nach ufe Schmeichler:in +Veloziped Fahrrad +Venti 20 Franken (von ital. venti) +Ventil iistelle tadeln, massregeln +verarsche betrügen +verbändlet sii eine Beziehung haben +verbäset sii mit Drogen abstürzen +verbeuschtig neidisch +verbibäbele verwöhnen +verbii betrunken +verbii schlecht +verbii gah besuchen +verbiigaah besuchen +verbiiluege besuchen +verblaast mi explodieren +verblödele Geld ausgeben, bezahlen +verblöterle Geld ausgeben, bezahlen +verbocke pfuschen +verbocket missraten +verbockt eine verfahrene Situation +verboischtig eifersüchtig +verbraate Geld ausgeben, bezahlen +verbränne Geld ausgeben, bezahlen +verbrännt angebrannt +verbrännti Bradwurscht Joint (gammliger Joint) +verbroche entzwei +verbroche kaputt +verbrösmele Geld ausgeben, bezahlen +verbrösmele sich schlecht benehmen (Brosamen verstreuen) +verbrösmele zerfallen +verbrötle Geld ausgeben, bezahlen +verbrötlet angebrannt +verbruucht abgenützt +verbruucht abgerackert +verbutze Geld ausgeben, bezahlen +verbutze Geld verschwenden +verbutzt mi explodieren +verchachle verlieren +verchachlet eine verfahrene Situation +verchafle zerbeissen +verchafle zerkritzeln +verchaflet abgenützt +verchäpsle einen Fehler machen +verchäpsle Geld verschwenden +verchäpsle pfuschen +vercharete Dürrbächler Hackfleisch (Hunderasse) +vercharre überfahren +verchätsche zerbeissen +Verchaufs-Sprutz Auto (billige Lackierung) +vercheert isch au lätz ungeschickt +Verchehrs-Behinderer Fussgänger +Verchehrs-Chaote Verkehrskadett:innen +Verchehrs-Kadeppe Verkehrskadett:innen +Verchehrsfläche-Hygienikerin – en Verchehrsfläche-Hygieniker Strassenwischer:in +Verchehrsverein Gruppensex +verchehrt falsch +verchehrt statt lätz falsch +vercheibe pfuschen +vercheibe verlieren +vercheibe zerstören +vercheibet kaputt +vercheibet missraten +verchlaatere beschmutzen (klebrig) +Verchlämmts Sandwich +verchleidete Sportwage Autos von Volvo (Volvo Turbo) +verchlöpfe Geld ausgeben, bezahlen +verchlöpfe Geld verschwenden +verchlöpft erschrocken +verchlöpft explodieren +verchlüpfig ängstlich +verchluuderet frösteln (fröstelnd) +verchnorzt eine verfahrene Situation +verchnurre verdonnern +Verchoiferlis Kinderspiele (Verkaufspersonal spielen) +verchoo bis in die Morgenstunden feiern +verchoo sich irren +verchoolet angebrannt +verchrible zerkritzeln +verchrugle zerknittern +verchruglet zerknautscht +verchuuzt verwahrlost +verdammt schlecht +verdampfe flüchten, davonrennen +verdampfe furzen +verdatteret ängstlich +verdatteret überrascht, verdutzt +Verdauerli Drinks (Digéstif) +Verdauerli Schnaps +verdepperet verwirrt +Verdienschts-Haagge Hand +verdogge zuschlagen +verdräcke beschmutzen +verdräcke demütigen +verdufte entwischen +verdufte flüchten, davonrennen +verdufte sich unbemerkt von der Truppe absetzen +Verdünnisier dich! Hau ab! +verdunschte flüchten, davonrennen +verduudele verpassen +Verein besserer Zürcher:innen VBZ (Verkehrsbetriebe Zürich) +Verena Kaltenbacher Verkehrskadett:innen +verfältlet zerknautscht +verfluechte Schiissdräck Fluchwörter +verfuule furzen +vergäbis vergeblich +Vergält's Gott! bitte +vergänggele Geld verschwenden (franz. quincaillerie) +vergante verkaufen +vergässe z'zeïse umziehen +vergejme verlieren (engl. game) +vergelschteret ängstlich +vergelschteret erschrocken +vergheje bis in die Morgenstunden feiern +vergiige Geld ausgeben, bezahlen +vergiiget missraten +vergilbt abgenützt (gelb statt weiss) +Vergiss de Fisch! Beruhige dich! +Vergiss de! sicher nicht +vergiss es Nein +Vergiss es! Beruhige dich! +vergisst s Hirni iischalte Chaot:in +vergitzle verzweifeln +verglungge vergessen, verlieren +Vergnüegigs-Kurve Augenringe +vergnussnipfle Sex haben +vergoischtig eifersüchtig +vergöötsche verschütten +vergöpfe vergessen, verlieren +vergöpfe verpassen +vergunget eim s Zahweh Geizhals +vergüüde Geld verschwenden +Verguuscht Missgunst +Vergwaltigti Analgeburt Fluchwörter +verhänge verpassen +Verhängs! Beruhige dich! +verhätschele verwöhnen +verhaue verlieren +verhaue zuschlagen +Verhauerei Schlägerei +verhebe der Kritik standhalten +verhebet funktionieren +verheit kaputt +verheize jemanden fertigmachen +verhejt entzwei +verhocket festgefahren +verhökere verkaufen +verhootschet verwahrlost +verhootschet zerzaust +verhotschet zerknautscht +verhudle Sex haben +verhudlet verwahrlost +verhuebere zerstören +verhüehnere vergessen, verlieren +verhüehneret verwirrt +verhüehneret zerzaust +verhüenere verlieren +verhüeneret unauffindbar +verhuere pfuschen +Verhüetliberg Orte (in Zürich) (Üetliberg) +verhunzt missraten +verhürschet verwirrt +verhürschet verwirrt +verhürschet zerknautscht +verhürschet zerzaust +verjagt mi vor Wöhli geniessen +verjagt s explodieren +verjätte Geld verschwenden +verjättet s explodieren +verjoggle Geld verschwenden +verjuble Geld ausgeben, bezahlen +verjuble Geld verschwenden +verknallt über beidi Ohre sich verlieben +verknellt entzwei +verkniffe sauer +verkohle betrügen +Verkünder Pfarrer, Priester +verlade betrunken +Verlängerigskabel Penis +verlättere Geld ausgeben, bezahlen +verlauere vergessen, verlieren +verlege verlieren +verlegge vergessen, verlieren +verleit unauffindbar +verliebt wie zwei Maiechäfer sich verlieben +verliiret verwirrt +verlööle Geld verschwenden +verlööle vergessen, verlieren +verlööle verpassen +verlötet betrunken +verlottere unsorgfältig behandeln +verlotteret abgenützt +verluedere Geld ausgeben, bezahlen +verluederet verwahrlost +verlumpet pleite +verluust verwahrlost +vermoderet verwahrlost +vermorgset kaputt +vermorxe pfuschen +vermorxe zerstören +vermorxt eine verfahrene Situation +vermorxt missraten +vermuulaffe verpassen +vernasche Sex haben +vernichte gewinnen +vernüütige herunterspielen +vernüütige tadeln, massregeln +verpäppele verwöhnen +verpeilt betrunken +verpfiiffe verraten, petzen +Verpiss di! Hau ab! +verplämperle Geld verschwenden +verplatzt mi explodieren +verprasse Geld ausgeben, bezahlen +verprasse Geld verschwenden +verpülvere Geld ausgeben, bezahlen +verpulvere Geld verschwenden +Verquätschti Kleingeld +verräble sterben +verramsche verkaufen +verrätsche petzen, verpetzen +verrätsche verraten, petzen +verrecke sterben +Verrecksch bim zueluege VBZ (Verkehrsbetriebe Zürich) +verreckt Fluchwörter +verreckt sehr gut +verreckte Cheib Fluchwörter +Verreckte Cheib! Das ist unglaublich! +Verrecktrikeri – en Verrecktriker Elektriker:in +Verreis! Hau ab! +verreise Urlaub machen +Verriisserli Schnaps +verriisst mi fascht lachen +verrisse-verschisse kaputt +verrööschte verkaufen +verroschtet verwahrlost +verruckt wahnsinnig +verruckt werde toben +verruechet abgenützt +verrumpflet zerknautscht +verrümpflet zerknautscht +verruse heize Energieverschwendung +verruume Sex haben +verruume Sex haben +Vers brünzle reimen, dichten +versaage Sex haben +versaage überholen +versänkte Buuchnabel dicker Bauch +verschärbele verkaufen +verschärft gut +verschärft sehr +verschätzlet sii sich verlieben +verscherbelet kaputt +verschille daneben schiessen +verschlaarpe jemanden fertigmachen +verschlaarpe zertreten +verschläckt anspruchsvoll +verschleikt unauffindbar +verschlirgge demütigen +verschlirgge überfahren +verschlirgge zertreten +verschluddere pfuschen +verschlüüdere Geld verschwenden +verschnätzle Sex haben +verschnudderet sii Schnupfen +verschnurpfe pfuschen +verschnurpft zerknautscht +verschosse sii sich verlieben +Verschupfti Mauerblümchen +verschüüsse daneben schiessen +Verschwind! Hau ab! +verschwinde laa klauen, stehlen +verschwitze vergessen, verlieren +verseckle betrügen +verseichts Stuck Fleisch Scheide +Versicherigs-Fuzzi Versicherungsberater +Versicherigs-Hängscht Versicherungsberater +Versicherigs-Heini Versicherungsberater +versieche verlieren +versieche zerstören +versiechet missraten +versiffe pfuschen +versifft missraten +versifft Unordnung, Chaos (dreckig) +versilbere verkaufen +versirrache zerstören +versorge Sex haben +versoue beschmutzen +versoue Geld ausgeben, bezahlen +versoue pfuschen +Verspätige bi Züri VBZ (Verkehrsbetriebe Zürich) +Verspötigsaazeiger Uhr +versprütze geniessen +verstääte Unfall (Totalschaden) +Verstahsch kei Tüütsch? Hast du es begriffen? +Verstahsch? Hörst du nicht mehr gut? +verstämpfle Sex haben +Versteckis Kinderspiele +verstrahlet sii mit Drogen abstürzen +Verstrahlte Drogenabhängiger +verstriche betrunken +verstriche sii mit Drogen abstürzen +verstrublet Haare (ungekämmt) +verstrublet zerzaust +Versuchs-Betrieb Zürich VBZ (Verkehrsbetriebe Zürich) +versudle beschmutzen +versudle zerkritzeln +Versüecherli näh kosten, probieren +versumpfe bis in die Morgenstunden feiern +versumpft betrunken +vertädderle verraten, petzen +vertami Fluchwörter +vertamihueresiech Fluchwörter +vertätscht s explodieren +Verteilerli Schnaps +vertigge verkaufen +vertlehne Geld ausleihen +vertlehne klauen, stehlen +vertöffle zuschlagen +vertooret welk +Vertrag abschlüsse aufs WC gehen +vertrampe demütigen +vertrampe unterdrücken +vertrampe zertreten +Vertramper Vertreter +vertrampet unterdrückt +vertrampet unterdrückt +vertröchnet welk +vertrucke zertreten +vertruckt unterdrückt +vertruckt zerknautscht +vertrüdelet verwirrt +Vertrunkne Betrunkene:r +vertschädere zerstören +vertschalpe demütigen +vertschalpe jemanden fertigmachen +vertschalpe zertreten +vertschingge verkaufen +vertschirgge jemanden fertigmachen +vertschirgget abgenützt (Schuhe) +vertschudderet Haare (ungekämmt) +vertschudderet zerzaust +vertschuute verkaufen +vertuble Geld ausgeben, bezahlen +vertuble Geld verschwenden +vertugge zuschlagen +vertumme Geld ausgeben, bezahlen +vertüüfle pfuschen +vertwütsche erwischen, ertappen +verusse ässe Zähne (vorstehende Zähne) +verwamse zuschlagen +Verweeseri – en Verweeser Stellvertreter:in +Verweesigs-Spur legge furzen +verwönnt anspruchsvoll +verwütsche erwischen, ertappen +verwütsche fangen +Verzapf kein Seich! Halt die Klappe! +Verzapf s doch de Chatz! Das ist mir egal +verzapfe erzählen +verzele erzählen +Verzell das, wem d wotsch, aber nöd mir! Halt die Klappe! +Verzell doch kein Schrott! Halt die Klappe! +Verzell du das am Fährimaa sicher nicht +Verzell du das am Fährimaa! Halt die Klappe! +Verzell du das em Böölimaa! sicher nicht +Verzell du das em Fährimaa! Das ist unglaublich! +Verzell kei Märli! Das ist unglaublich! +Verzell kein Kafi! Halt die Klappe! +Verzell kein Quark! Halt die Klappe! +Verzell kein Seich sicher nicht +Verzell s de Fisch! Halt die Klappe! +Verzell s de Straass! Halt die Klappe! +Verzell s doch dim Chüelschrank! Halt die Klappe! +Verzell s em Chääs Das ist unglaublich! +Verzieh di! Hau ab! +verziile daneben schiessen +Verzisch di! Hau ab! +Verzupf di! Hau ab! +verzwatzle verzweifeln +verzwatzlet aufgeregt +Vetter Wernerli Prominente (national) (Werner Vetterli, eh. Sportreporter) +Vetterli-Wirtschaft Aufträge unter der Hand vergeben +Video-Vorverstärcher Brille +Vier Brämse zwenig VBZ (Verkehrsbetriebe Zürich) +vier Saue jassen (vier Asse) +Vier-Frucht-Pyjama Kampfanzug +Vier-Ix Bars, Restaurants, Clubs (Schiffbau) +viereggige Pijama aalegge sterben +viereggige Pischama Sarg +viereggigi Banane Schussel +Vierfach-Schnägg 20 Franken +Vierkant-Röschti Pommes-Frites +Vierli-vier Militärische Fahrzeuge (schwere Geländelastwagen) +Vierlig Masseinheiten (1/4 Pfund, 125 g) +Vierstädtwaltersee Orte (ausserhalb von Zürich) (Vierwaldstättersee) +vierstuufigi Hitler-Drähbank Offroader (SUV) (deutsche SUVs) +Viertel ab Tünnschiisser – wänn's tick wird, chasch abbisse Wie spät ist es? – Keine Ahnung! (genervte Antwort auf die Frage nach der Uhrzeit) +Vierteli Wein (2,5 dl) +Vierti Restaurants (4. Akt) +Viggi Vornamen (männlich) (Viktor) +Viich Käfer +Viicherhuut Lederjacke +Vill besser z Fuess VBZ (Verkehrsbetriebe Zürich) +vill Gschäär und wenig Wulle erfolglose Aktion +vill um d Ohre Stress +vill um d Ohre haa beschäftigt sein +vill z köschtlich teuer +Villa Heb-di-fescht Bruchbude +Villa Wanza Bruchbude (voller Wanzen und anderem Getier) +Vinke talmal und uf Luderwiege Redensarten (Small Talk) (Danke vielmal und auf Wiedersehen) +Vinke talmal und uf Luderwiege zum Abschied +Vinyl-Drähbank Plattenspieler +Vinyl-Junkie Schallplatte (Liebhaber von Schallplatten) +Violette 1'000 Franken +Viönli Veilchen +Viönli Veilchen +Virus Autos von VW (Golf GTI) +Visite mache besuchen +Vitamin B Bier +Vitamin-Bombe Früchte +Vitamin-Stoss gäh Sex haben +vo allem e chli alles Mögliche +vo allem öppis alles Mögliche +vo allem öppis – aber nüüt rächts alles Mögliche +vo Bruef Imker Zuhälter +vo de Läbige näh zu viel Geld verlangen +Vo de Riiche lernsch spare Redensarten (Geld) (wenn Vermögende knausern) +Vo dem han i nonig gfrässe Redensarten (Small Talk) (Antwort eines Schenkenden auf den Dank des Beschenkten) +vo Dir gut (aus der Börsensprache) +vo hinde Lyceum – vo vore Museum Redensarten (Körper) (sieht von hinten besser aus als von vorne) +vo mir häsch s letscht Mal Ruggedeckig ghaa die Unterstützung verweigern +Vo nüüt chunnt nüüt Redensarten (Small Talk) +vo obenabe behandle demütigen +vo vorgeschter veraltet +Vögel rüefe rülpsen +Vogelfreji – en Vogelfreie Obdachlose:r +vögeliwohl glücklich +Vogelwarte Sämpach Ehering +Vogese wüsche Zähne (Zähne putzen) +vogle Sex haben +vögle Sex haben +vogle bis d Hand weh tuet onanieren (Männer) +voguliere Sex haben +Vokuhila-Frisur Haare (vorne kurz, hinten lang) +Völk Kinderspiele (Völkerball) +Völkerwanderig Menschenauflauf +Volksbildhaueri – en Volksbildhauer Lehrer:in +Volksvertummeri – en Volksvertummer Lehrer:in +Volksvertummig Lockvogel-Angebote +voll ablache sich kaputtlachen +voll am Arsch müde, erschöpft +Voll bis zoberscht VBZ (Verkehrsbetriebe Zürich) +voll Caracho Vollgas +voll de Börger gut (engl. burger) +voll de Börner gut (engl. to burn) +voll de Bringer gut +voll debii überzeugt, engagiert +voll dito dasselbe +voll dune unglücklich, deprimiert +voll dur de Wind müde, erschöpft +voll edel gut +voll fett gut +Voll gagi Das nervt! +voll gschisse schlecht +voll Guzzi Vollgas +voll Hahne Vollgas +voll i de Soosse mittendrin (negativ) +voll labere auf jemanden einreden +voll nöd falsch +voll nöd vo Züri schlecht +voll porno sehr gut +voll s Brot verbrännt haa verrückt +voll scharf verlockend +voll Schoggi gut +voll Schoggi kinderleicht +voll spienzlig verlockend +voll Stoff Vollgas +voll strapaziert müde, erschöpft +voll tschüss betrunken +voll uf Schuub wütend +voll verruckt wütend +voll verschärft gut angezogen +voll verschosse i dini Summersprosse sich verlieben +voll zfride gut +Voll-Liecht haa Brustwarzen (bei kaltem Wetter) +Vollchorn-Brättli Knäckebrot +Volldampf-Sürmel Walliser (Autokennzeichen VS für Wallis) +volle wie d Schiissi betrunken +volle wie e Haubitze betrunken +volle wie-n-e Chueh betrunken +volle wie-n-e Tole betrunken +Volleyball für Fortgschrittni Faustball +vollfett s Loch ap snowboarden (schnell) +Vollfetti dicke Person +vollgschissne Strumpf für die männliche Figur (dick) +völlig denäbet gange missraten +völlig id Hose missraten +völlig id Schueh missraten +vollkrass sehr gut +Vollmond Gesäss +Vollnarkose haa betrunken +Vollpanierte Kokain-Konsument +Vollpfoschte Schimpfwörter +vollschrääg eigenartig, seltsam +vollschwafle auf jemanden einreden +volltexte auf jemanden einreden +Volltubel Schimpfwörter +Vollverleider Prominente (national) (Andreas Vollenweider, Musiker) +vom Allerfeinschte gut +vom Fiinschte gut +vom Schiff uus gseh ungefähr +vom tolle Aff pisse verrückt +voneleige automatisch +vonenand gah sich trennen +vonesälber automatisch +vöörig nutzlos, überflüssig +voorig sii überflüssig sein +voorig wie en Chropf unnütz +voorig wie Grippeviire unnütz +voorig wie Pfnüselviire nutzlos, überflüssig +voorig wie-n-en Chropf nutzlos, überflüssig +Voorigi – en Voorige Schimpfwörter +vor d Tüür gstellt werde entlassen werden +vor em Bahnhof abgumpe Coitus interruptus +vor luuter Gwunder gheied em d Auge zum Chopf uus schauen +Vor-Feischter Brille +Voralpe-Ferrari Auto-Typen +Voralpe-Schnüffler Mofa +Vorarbet leischte vorbereiten, planen +Vorderlader-Gebiss Zähne (vorstehende Zähne) +Vorfeischter Brille +Vorhand jassen (beim Schieber den Trumpf selber bestimmen) +Vorhang Kleid +vorluut frech +vorne hui und hine pfui unzuverlässige Person +Vorsägeri – en Vorsäger Lehrer:in +Vorsprung uf de Chueche ha Zähne (vorstehende Zähne) +Vorturner Chef:in +Vorturneri – de Vorturner Chef:in/Vorgesetzte:r +Vorwärts-Parkiereri – en Vorwärts-Parkierer Schwächling +Vre Vornamen (weiblich) (Verena) +Vreni Vornamen (weiblich) (Verena) +VS – e Vollgas-Sou Walliser (Autokennzeichen VS für Wallis) +VS: e Vill-Suuferi – en Vill-Suufer Autokennzeichen national +VS: e Vollgas-Sou Autokennzeichen national +VS: en Volldampf-Sürmel Autokennzeichen national +VS: Valaisan sympathique Autokennzeichen national +Vulkan im Gsicht Akne +vürschi choo vorwärts kommen +VW dumm (vollweich) +VW mit Schiebedach Glatze +Wääält (-klass)! gut +Wäächtig Arbeitstag (Werktag) +Waagrächti Schimpfwörter für Frauen (leicht zu kriegen) +Wääk-Typ Fiesling +Wäbfehler Schimpfwörter +Wäbstübleri – en Wäbstübler Irre:r +Wäbstübleri – en Wäbstübler Schimpfwörter +Wachhund Freund, Partner +Wachtel-Meischter Wachmeister +Wäde Vornamen (männlich) (Werner) +Wade-Biisser Hündchen +Wade-Biisser Kinder +Wade-Chlämmer Hündchen +Wadebiisseri – en Wadebiisser Fussball (Aussenverteidiger:in) +Wädele Brennholzbündel +Wädele Holzscheit +Wädi Vornamen (männlich) (Walter) +wädle onanieren (Männer) +wädle skifahren (in kurzen Schwüngen fahren) +Wadli Beine +Wädli-Tämpel Gebäude, Lokalitäten (wegen der Radrennen) +Wadlibiisser Intrigant:in +wäffele jammern, sich beklagen +wäffele kritisieren +Wäffeli Querulant:in +Wäg-Wiiser Penis +wägg choo sich der Wehrpflicht entziehen +Waggis Basler:in +wäggschmeisse bis in die Morgenstunden feiern +wägschiebe verdrängen, abschieben +Wägwiiser Alleskönner:in +Wäh-hee Wähe (nicht appetitlich) +Wahn gut +wahnsinnig sehr +währschaft stattlich +Währschafti dicke Person +Wäje Brüste +Wäje Wertpapiere (Wechsel) +Wäje inerüere Gang einlegen +Wäje pflaschtere zuschlagen +Waldbrand-Uusträtter Füsse (grosse Füsse) +Waldfäscht Cervelat (kalter Cervelat mit Brot) +Waldrand-Italiener Tessiner:in +Waldsterbe Glatze (Haarausfall) +Wäle trucke kämmen +Wälle riisse ausgehen +Wälli Badeanstalt, Schwimmbad (Wellenbad) +Wälsch-Land französische Schweiz +Wälschi – en Wälsche Welsche:r +Wältebummlerin – en Wältebummler Tourist:in +Walti Vornamen (männlich) (Walter) +Wältsche französische Schweiz +Wältverbesserer Links-Alternative:r +Wämmer? Gehen wir nach Hause? +Wamos! Gehen wir nach Hause? (span.) +Wampe dicker Bauch +Wampe fülle essen +Wampe fülle schlemmen +wamse trampeln +Wämsli Lederjacke +wänd wider emal ali bi mir übernachte jassen (schlechte Karten) +Wand-Schteilischtin – en Wand-Schteilischt Flächenmaler:in (Stylist:in) +wandelnde Flohzirkus Hund +Wander-Schminee Tabakpfeife (franz. cheminée) +Wanderdüne Langweiler:in +Wanderlager Werbefahrt +Wanderpokal Schimpfwörter für Frauen (leicht zu kriegen) +Wandervogel Tourist:in +Wandteppich stark behaarter Männer-Oberkörper +Wängge Zähne +Wänn Blödheit würdi velofahre, müesstisch de Gotthard deruuf brämse! Du spinnst! +Wänn d dem d Hand gisch, chasch nachane d Finger zele Lügner:in, Betrüger:in +wänn d dere oder dem zueluegsch, schlaafsch ii arbeiten (langsam) +wänn d die Person aaluegsch, wird d Milch suur hässlich +Wänn d e mal so schön bisch, bringsch es fascht nüme wägg Redensarten (Körper) (Cabaret Rotstift) +Wänn d is Bett inebrünzlisch, lauft s zu ihre übere dicke Person +Wänn d no lang machsch, wiis i na en Huufe jassen (bei langsamen Spielern) +Wänn de chönt jasse wie rauche, würd er ständig günne! jassen +Wänn de Chueche redt, isch s Brösmeli ruhig! Halt die Klappe! +Wänn di andere na überlegged, hät er de Seich scho gmacht übereifrig +Wänn du so lang wärsch wie tumm, müesst mer dir s Fuetter mit de Kanone uf de Mond schüüsse Du bist ein Idiot! +Wänn er "Guete Tag" seit, hät er di scho zwei Mal aagloge Lügner:in, Betrüger:in +Wänn er d Schnure uuftuet, lügt er – wänn er sie zuetuet, hät er gloge Lügner:in, Betrüger:in +Wänn Fuuschtball eifach wär, wür s Fuessball heisse Faustball +Wänn ich dis Gsicht gseh, dänn bin ich mit mim Füdli ganz zfride Du bist ein Idiot! +Wänn ich en Hund hett mit dim Gsicht, würd ich ihm de Arsch rasiere Du bist ein Idiot! +Wänn ich so-n-en Arsch hett wie du es Gsicht, würd i wiit in Wald use go schiisse Redensarten (Körper) +Wänn s Arschl brummt, isch s Herzl gsund! furzen +wänn s nöd grad Chatze haglet es regnet (wenn es nicht zu fest regnet) +Wänn s tätscht, no en Meter parken (bei Parkproblemen) +wänn scho falsch, dänn au luut schlechte Band +wänn Si wänd so guet sii bitte +Wänn Tummheit chlii wär, chöntsch du mit Stelze under em Teppich durelaufe Du bist ein Idiot! +Wänn Tummheit chönnt velofahre, dänn müesstisch du de Berg uuf brämse! Du bist ein Idiot! +Wänn Tummheit würd giire, müesstisch de ganz Tag mit em Ölstiitzli umeseckle! Du spinnst! +Wänn Tummheit würd giire, müesstisch de ganz Tag mit em Ölstitzli umeseckle! Du bist ein Idiot! +Wanscht dicker Bauch +Wäntelebunker Bruchbude +Wanze Fiesling +Wanzeschiff Bett +wär lieb bitte +Wäred Sie so guet? bitte +wärfe erbrechen +Warm-Tuscheri – en Warm-Tuscher Schwächling +warme Gsell Vermicelles +warmi Ohre verteile zuschlagen +warmi Pisse Bier (abgestanden) +warms Joghurt im Hosesack haa dumm +Warmtuscher Angsthase +Warmwasser abgäh urinieren +Wärre Maulwurfgrille +Wartsaal Auto +Wartsaal Restaurant (langsame Bedienung) +Warze-Peter Musiker:innen (Peter Maffay) +Was Cheibs… ? Was um alles in der Welt… ? +Was de Gugger… ? Was um alles in der Welt… ? +Was de Herrgott… ? Was um alles in der Welt… ? +Was du nöd seisch! Tatsächlich? +was gisch was häsch flüchten, davonrennen +was gisch, was häsch rennen +Was häsch dänn du für es Kudi aa? Kleidung (Was trägst du Komisches?) +Was isch jetzt wider… ? Was um alles in der Welt… ? +Was isch los? Alles, wo nöd aabunde isch! Redensarten (Small Talk) +Was isch los? Alles, wo nöd aapunde isch! Was um alles in der Welt… ? +Was käcksch du, Kolleg? Was laberst du für einen Müll? +Was lampet abe? Was um alles in der Welt… ? +Was meinsch du als Usse-Stehende zum Thema Intelligenz? Spinnst du? +Was schwätzisch du für en Chäs? Was laberst du für einen Müll? +Was söll s! Beruhige dich! +Was verzellsch du für en Seich? Was laberst du für einen Müll? +Was wottsch, du Totsch? Schüttelreime +Was zum Hänker… ? Was um alles in der Welt… ? +Was zum Tonner… ? Was um alles in der Welt… ? +Was zum Tüüfel...? Was um alles in der Welt… ? +Was zvill isch, isch zvill! Das nervt! +Wasa-Brättli Knäckebrot +Wäschpi Motorrad-Typen (Vespa) +Wasser ap de Röhre Leitungswasser +Wasserchocher Aufschneider:in, Angeber:in +wassere urinieren +wässeret es regnet +Wasserfall simuliere urinieren +Wasserfrau – en Wassermaa Feuerwehrfrau/Feuerwehrmann +wässerle mit Wasser spielen +Wässerli Schnaps +Wasserpischtole Penis +Wasserstand kontrolliere urinieren +Watsch Ohrfeige +watschle trödeln +Wattechopf haa Kopfschmerzen (Kopfschmerzen bei Erkältung) +Wayne? Halt die Klappe! (Wen interessiert's?) +WC Coca-Cola (Whiskey-Cola) +WC-Butzeri – de WC-Butzer Lernende:r +WDTW – weiss de Teufel wo militärische Abkürzungen +Web-Stübleri – en Web-Stübler Informatiker:in +Weck-Runzle Soldat im Weckdienst +Wecker Motor +Weckrunzle Weckordonnanz +Wecksch mi, wänn d fertig bisch? Beeil dich! +weder Fisch no Vogel unentschieden +Weed Marihuana (engl.) +Weggechopf Dummkopf +Weggli Brötchen (Weggen) +Wegglibeckeri – en Wegglibeck Bäcker:in +Weggliboxerin – en Weggliboxer Bäcker:in +Wegglibueb Schimpfwörter für Männer +weggstecke Sex haben +Wegwerf-Lisi unbrauchbare:r Partner:in +Weh-Wehli kleine Verletzung +Wehntaler Chlöis Bräuche (hohe Kopfbedeckungen) +Wehntaler Riviera Gebäude, Lokalitäten (Strafanstalt Pöschwies) +weich daneben, verwerflich +weich schlecht +Weich usehänke urinieren (Männer) +Weich-Bächer Schwächling +Weich-Ei Schwächling +Weich-Maschter Wachmeister +Weichbächer Irre:r +Weiche Schwächling +weiche Biber Schwächling +Weichei Jammerlappen +Weichi – en Weiche Das ist unglaublich! +weichi Chnüü überchoo bewundern +weichi Chnüü überchoo sich verlieben +Weichschnäbeler Schwächling +Weichspüeler Kuschelrock +Weichspüeler Schwächling +weidli schnell +weidli weidli bald +Weisch ja, wer meint: de Bettseicher – er meint am Morge, er hebi gschwitzt Redensarten (Small Talk) +Weisch was? En Fuchs isch kein Has! Redensarten (Small Talk) +Weisch wie? Das ist unglaublich! +Weisch wo? Du kannst mich mal! +Weisch, wie din Kolleg bumst? – Dänn gang emal e Stund früener hei! Redensarten (Sexualität) +Weisch, wo chratzt s mi? Das ist mir egal +weiss de Gugger was alles Mögliche +weiss de Gugger wie sehr +weiss de Tüüfel was alles Mögliche +weiss de Tüüfel wie sehr +weiss Gott ganz sicher +weiss nöd, was rächts und links isch Chaot:in +Weiss-nöd-was-schänke Krawatte +Wele Teil vo "Nei"" verstahsch gnau nöd?" Spinnst du? +welewääg wohl +Wellness-Wuche-Buecheri – en Wellness-Wuche-Buecher Schwächling +weniger als nüüt ganz wenig +Wer hät gschisse? furzen +Wer nüüt wird, wird Wirt – und isch ihm das au nöd glunge, reist er uf Versicherunge Redensarten (Arbeit) +Wer nüüt wird, wird Wirt – und wer nüüt chan, gaht zur Isebahn Redensarten (Arbeit) +Wer Ornig hät, isch nume z fuul zum Sueche Ordnung +Wer s glaubt, wird seelig! Das ist unglaublich! +Wer s nöd im Chopf hät, hät s i de Füess Redensarten (Small Talk) +Wer s nöd im Chopf hät, hät s im Füdli Redensarten (Small Talk) +werche arbeiten +werchig tüchtig +Werchzüüg Besteck +Werchzüüg Besteck +Werdhölzli-Schämpis Leitungswasser (von der Kläranlage Werdhölzli) +werfe gebären +Werum eifach, wänn s au kompliziert gaht? kompliziert +Werum eifach, wänn s au kompliziert gaht? Redensarten (Small Talk) +Wescht-Albaner Ausländer (Portugiese) +Wescht-Öschtriicheri – en Wescht-Öschtriicher Aargauer:in +Wetsch no en Öpfel für uf de Heiweg? zum Abschied (wenn jemand nicht gehen will) +Wetsch uf minere Flöte spile? Oralverkehr (bei Männern) +Wettsch mi verfüdle? Das ist unglaublich! +wetze rennen +Wich-Tiger Aufschneider:in, Angeber:in +Wichs-Griffel Hand +wichse bürsten, polieren +wichtig tue bluffen +wichtigi Gsellin – en wichtige Gsell Aufschneider:in, Angeber:in +Wichtigtuer Aufschneider:in, Angeber:in +Wichtsack Aufschneider:in, Angeber:in +wickle einen Joint drehen +widerchoie erbrechen +wie bim billige Jakob günstig +wie de Blitz schnell +Wie de Blitz! Beeil dich! +wie de Tüüfel schnell +Wie en gölete Blitz! Beeil dich! +wie en göölte Blitz schnell +Wie gaht s, wie staht s? Wie geht's? +Wie geit s – häsch Aids? zur Begrüssung +Wie geits – häsch Aids? Aids +wie gschmiert leicht +Wie häsch es? Wie geht's? +Wie isch de Schneebricht? grosse Person +Wie isch s Wätter bi dir obe? grosse Person +Wie isch s Wätter deet obe? für die männliche Figur (gross) +Wie lauft s Läbe? Wie geht's? +Wie lauft s? Wie geht's? +wie pstellt und nöd abgholt verwirrt +wie s Bisiwätter schnell +Wie spat hämmer? Wie spät ist es? +wie tot müde, erschöpft +Wie tuet s dänn dir? Du spinnst! +wie us em Ei pellt gut angezogen +wie us em Schächteli gut angezogen +wie us em Truckli gut angezogen +Wie vill Bölle isch? Wie spät ist es? +Wie vill Chile isch? Wie spät ist es? +Wie vill Giige isch? Wie spät ist es? +Wie vill isch? Wie spät ist es? +wie wänn der es Ängeli de Hals abe seicht Wein (guter Tropfen) +Wie wänn mir es Ängeli würd de Hals abeseiche Bier (erfrischendes Bier) +wie-n-e Moore sehr viel +wie-n-es Pfludderbeeri schwabblig +wieder Liecht gseh der Stress lässt nach +wieder Luft haa der Stress lässt nach +wieder uf em Damm sii das Schlimmste überstanden haben +wieder z laufe bringe reparieren +Wiehnachtsbaum Schimpfwörter für Frauen (schmuckbehängt) +Wienerli Reifen +Wiese-Flitzer Traktor +Wiesedünger Orte (ausserhalb von Zürich) (Wiesendangen) +wifle Handarbeiten (Löcher stopfen) +wifle onanieren (Männer) +Wii-Chäller Militärische Ausrüstung (seitliche Munitionshalterung bei der Panzerhaubitze M109) +Wii-Öffner Zapfenzieher +Wiiberheld Frauenheld +Wiiberschmöcker Frauenheld +Wiibli Freundin, Partnerin +Wiiland Orte (ausserhalb von Zürich) (bei Schaffhausen) +Wiili eine Zeit lang +wiise lenken +wiise steuern +wiiss Brief schicke sich trennen +Wiiss-Bier Deutsche:r (Bayer:in) +Wiiss-Söckleri – en Wiiss-Söckler Aargauer:in +wiisse Pfoschte weisser Strassenpfahl +Wiisses Kokain +wiisses Schnäbi blase einen Joint rauchen +wiissge weiss anstreichen +wiissi Soosse produziere onanieren (Männer) +wiissi Soosse trinke Oralverkehr (bei Männern) +wiissle weiss anstreichen +Wiiti näh flüchten, davonrennen +Wildsou-Verschrecker Jagdhorn +Willi Penis +Willi chneble onanieren (Männer) +Willisauer Ringli Gebäck (Spezialität) +Willy Schmid Prominente (international) (Will Smith, US-Schauspieler) +Wimmer-Schinke Cello +Wimmerholz Blockflöte +Win-doof Computer (Windows-User:in) (Windows) +Wind i de Wüeschti haa müde, erschöpft +Winde Dachboden +winde eine Zigarette rauchen +Winde Schimpfwörter (Spinner:in) +Windfang Ohren +Windle-Meitli – en Windle-Bueb Hip-Hopper:in +Windle-Porsche Kinderwagen +Windlefülleri – en Windlefüller Baby +Windlepüree Senf +Windsgi Windjacke +Windspiil Feigling +Winkel im Gsicht haa eine Zigarette rauchen +Winterhilf-Blache Lederjacke +Winterpneu im Gsicht Augenringe +Winterthurer Götterbote Medien (Landbote) +Wirr-Warr Unordnung, Chaos +wirsch wohl drüü und drüü chöne zämezele kinderleicht +Wisaasche Gesicht (von franz. visage) +wischiwaschi unentschieden +Wise flaches Wiesengelände +Wise Hanfpflanze +Wise-Dame Milchkuh +Wit-wit! Beeil dich! (franz.) +Witz eine schlechte Idee +Witzbold Scherzkeks +Wix-Griffel Finger +wixe onanieren (Männer) +Wixer Schimpfwörter für Männer +Wixloch Mund +Wixmaschine Penis +Wixvorlag Pornoheft +WK-Salat Wurst-Käse-Salat +Wo dänksch au ane? Du kannst mich mal! +wo de lieb Gott d Schönheit verteilt hät, hät die Person i di falschi Chischte glanget hässlich +Wo ghoblet wird, git s Spää Redensarten (Arbeit) +Wo han i au min Chopf gha? vergessen, verlieren +Wo häsch de uusgrabe? furzen +wo immer sabberet Penis +Wo isch de Bus – mit de Lüüt dine, wo s intressiert? Das ist mir egal +Wo isch er – dä, wo s intressiert? Halt die Klappe! +Wo isch er – de, wo s intressiert? Das ist mir egal +wo sich d Füchs und d Hase Guetnacht säged abgelegen +Wöde Vodka +wohlet Samenerguss +Wöhli haa glücklich +Wohnig wächsle umziehen +Wolf Hautreizung im Beinbereich +Wollerauer Poschti-Wägeli Offroader (SUV) +Wollyhood Orte (in Zürich) (Zürich-Wollishofen) +Woodstöckleri – en Woodstöckler Hippie +wörke arbeiten (engl. to work) +Worst-Case-Szenario Wurst-Käse-Salat +Wort zum Bumstag Medien (Das Wort zum Sonntag, SF) +Wösch Kleidung +Wösch-Lappe Schwächling +Wöschbrätt für die weibliche Figur (flachbrüstig) +Wöschchlämmerli Wäscheklammer +Wöschchuchi Scheide +Wöschlumpe Schwächling +Wöschmaschine Bank +Wöschtrummle dicker Bauch +Wotsch 70 Rappe? Dänn chasch öppertem aalüüte, wo's intressiert! Halt die Klappe! +Wotsch d Fuuscht id Schnure? Pass auf, sonst knallt's! +Wotsch d Füüscht? Pass auf, sonst knallt's! +Wotsch di Verchehrti? Pass auf, sonst knallt's! (die Rückseite der Hand) +Wotsch e Banane? Spinnst du? +Wotsch e Fadegraadi zmitzt is Gsicht? Pass auf, sonst knallt's! +Wotsch e Hampfle Finger im Gsicht? Pass auf, sonst knallt's! +Wotsch e Schlägerei i d Frässi? Pass auf, sonst knallt's! +Wotsch eini uf d Schnörre? Pass auf, sonst knallt's! +Wotsch eis ad Möscht? Pass auf, sonst knallt's! +Wotsch eis an Rüücher? Pass auf, sonst knallt's! +Wotsch en Ohrewärmer? Pass auf, sonst knallt's! +Wotsch es Nasestüberli? Pass auf, sonst knallt's! +Wotsch es paar ad Löffel? Pass auf, sonst knallt's! +Wotsch es paar an Möli? Pass auf, sonst knallt's! +Wotsch es paar? Pass auf, sonst knallt's! +Wotsch grad eis (ad Nuss)? Fluchwörter +Wotsch ine parkierti Fuuscht ine laufe? Pass auf, sonst knallt's! +Wotsch jetzt grad eis? Pass auf, sonst knallt's! +Wotsch mir in Hammer inelaufe? Pass auf, sonst knallt's! +Wotsch nöd emal d Platte wächsle? schlecht +Wotsch Sternli gseh? Pass auf, sonst knallt's! +Wu-Chä-Sa Wurst-Käse-Salat +Wuche-Rückblick Eintopf +Wuchenändfahrer Autofahrer:innen (langsam) +wüchentlichi Abspäckseminar Damenriege +Wucherig Narbe +Wucht für die weibliche Figur (stämmig) +Wuchtbrumme dicke Person +wuchtig sehr +Wüdechäde-Salat Wurst-Käse-Salat +wüele schaufeln, graben +wüescht säge schimpfen, beschimpfen +wüescht wie d Höll hässlich +wüescht wie d Nacht hässlich +wüeschte hässlich (hässlich werden) +wüeschte Grind – aber es Herz us puurem Gold hässlich +Wüeschti – en Wüeschte Widerling +Wüeschts Schimpfwörter für Frauen +wüete toben +Wulche-Bruch Kaffee +Wulchechratzer grosse Person +Wule Haare +Wulle haa sich ärgern +Wulle-Sou Schaf +Wullechnöiel Kneuel +Wumme Fussball (scharfer Schuss) +Wümmet Trauben (Traubenernte) +Wunde-Füdli-Schwänzler Motorrad (125 ccm) +Wunderchruut-Tüüte oder e Wunder-Tüüte Joint +wunderprächtig gut +Wundertüüte ideenreiche Person +Würdsch gschiider lifere statt lafere! Schwätzer:in +Würfeli goisse erbrechen +würfle onanieren (Männer) +würge erbrechen +Würkli, Frau Bürkli? Tatsächlich? +Wurlitzer Schwätzer:in +Wurm Baby +Würm de Läbesruum chlaue sterben +Würmli bade angeln +Würmli bim Gruppesex Vermicelles +Würmli-Gstell Vermicelles +Würmli-Turte Vermicelles +Wurscht pelle onanieren (Männer) +Wurscht-Muni für die männliche Figur (dick) +Wurscht-Schind-Maschine Mofa (Mofa mit Keilriemenscheiben-Übersetzung) +Wurscht-und-Brot-Fäscht Party (e Hundsverlochete) +Wurschtchueh dicke Person +Wurschtfinger Hand +wurschtle arbeiten +Wurschtli unzuverlässige Person +Würschtli versänke stuhlen +Würschtlifinger Finger (dick) +Wurschtsalat flüssig Bier +Wurzelsepp Dummkopf +Wurzle tünkle Sex haben +Wurzle-Bunker Restaurant (vegetarisch) +wüsche sich trennen +Wuscheli niedliches Tier +wuschig sexuell erregt +Wuschligrind zerzaust +Wuwu Hündchen +Wybeeri Rosine +Wyber-Gstank macht Buebe chrank Redensarten (Sexualität) +Wys jassen (aufeinanderfolgende Karten) +Xenix-Schlawiner Szenengänger:in +Xündelerin – en Xündeler Vegetarier:in +Xundheitsaposchtel Vegetarier:in +Yankee Amerikaner:in (engl.) +Yaye Kokain +Yayo Kokain +Yeah-Yeah-Schuppe Tanzlokal (Club, Disco) +Z Amerika chunnsch für de en Oskar über furzen +z Arschfutzegg abgelegen +z blöd zum Zigis hole – gheit uf de Ranze und verbüügt de Foifliber dumm +z Bode mache zerstören +z Bode mache zertreten +z fuul zum s Füdli lupfe faul, träge +z heiss badet haa verrückt +z Hinderpfupfinge abgelegen +z Hudle und z Fätze mache zerstören +z Schlag choo mit öppisem bewältigen, meistern +Z Schwamedinge isch Chilbi/z Schwamedinge isch Tanz/z Schwamedinge langed d Meitli de Buebe an…/z Schwamedinge Schwamendingen +z spoing zu spät +z Stubete gah besuchen +z tumm zum Schiisse dumm +z tumm zum Stei hüete dumm +z vill Text haa auf jemanden einreden +Zabbelsuppe Kaffee +zabble mit dem Stuhl auf zwei Beinen balancieren +zäbele laufen (bei Kindern) +Zabig Abendessen +Zabli Zappelphilipp +Zabli-Pulver Kokain +zablig aufgeregt +zablig nervös +Zabliwasser Schnaps +zächele auf die Zehen stehen +zächele schleichen (von Zehe) +Zacke haa verrückt +Zacke meh gäh sich beeilen +zackig schnell +Zäddel-Puupse Politesse +Zädel richte kämmen +Zädel-Lisi Polizist:in (Parkplatz-Kontrolleur:in) +Zäh ap Nesquik Wie spät ist es? (genervte Antwort auf die Frage nach der Zeit) +Zäh butze Gang einlegen (sich verschalten) +zäh Hebbel 10 Franken +zäh Höger 10 Franken +Zäh sind scho guet, aber de Chopf isch e chli wiit hine Zähne (vorstehende Zähne) +Zäh wie-n-es abbrännts Pfahlbouer-Dorf Zähne (braune Zähne) +Zäh wie-n-es abbrännts Walliser Dörfli Zähne (braune Zähne) +Zäh-Finger-Sischtem klauen, stehlen +Zah-Killer Bonbon +Zah-Killer Süssigkeiten +Zah-Korrektur durefüehre zuschlagen +Zah-Metzgeri – en Zah-Metzger Zahnärztin/Zahnarzt +Zah-Mörder Bonbon +Zah-Mörder Süssigkeiten +Zäh-Räppler 10 Rappen +Zah-Schlosseri – en Zah-Schlosser Zahnärztin/Zahnarzt +Zah-Versigleri – en Zah-Versigler Zahnärztin/Zahnarzt +Zäh-vor-Zwei-Muul Gesicht (gute Laune) +Zähbutze-Plus Zungenkuss +zähfache Blaue 1'000 Franken +Zahle-Huehn Buchhalter:in +zahloses Monschter Baby (Schreikind) +Zähmal-Gschiidi – en Zähmal-Gschiide Schlitzohr +Zähner 10 Rappen +Zähner Joint (grosser Joint) +Zähnerli 10 Franken +Zähni 10 Rappen +Zähni Krönung, Höhepunkt +Zähni sehr gut +Zahni Zahnärztin/Zahnarzt +Zahnlose-Lutscherli Brüste +Zahrad-Finke Militärschuhe (genagelte) +Zahspange-Disco Tanzlokal (Club, Disco) (Disco für unter 18-jährige) +Zahstei-Chratzeri – en Zahstei-Chratzer Dentalhygieniker:in +Zahstocher dünne Person +zähtuusig Jahr Chischte uf zwei Bei Verbrecher:in +Zahweh missgune Missgunst +Zaine Trompete +Zäinli Bett +Zäje-Chützler Flip-Flops +Zäje-Tanga Flip-Flops +Zäje-Vögler Flip-Flops +Zält haa eine Erektion haben +Zält uufstelle eine Erektion haben +zälte eine Erektion haben +Zältli Bonbon +Zältli Bonbon +Zältli-Speuzer Gewehr +zäme e Chugle schiebe eine Beziehung haben +zäme gah eine Beziehung haben +zäme Schäfli hüete eine Beziehung haben +zäme schiebe eine Beziehung haben +zäme sii eine Beziehung haben +zäme umgheie Sex haben +Zäme-Tütschi-Bahn Karussell (Auto-Scoooter) +Zäme! zur Begrüssung +zämebängle zuschlagen +zämebaschtle vorbereiten, planen +zämebrösmele vorbereiten, planen +zämechüngele vorbereiten, planen +zämefüesslige mit Vergnügen +zämegwurschtlet zerknautscht +zämehaudere pfuschen +zämehebig geizig +zämehebig sii sparsam mit Geld umgehen +zämehebigi Sou-Äffin – en zämehebige Sou-Aff Geizhals +zämeknuuschtet zerknautscht +zämeläse aufheben +zämelegge falten, falzen +Zämeputsch Unfall +zämeramisiere aufheben (franz. ramasser) +Zämerutsche git warm Mach Platz! +zämeschiisse schimpfen, beschimpfen +zämeschiisse tadeln, massregeln +zämeschnurpfe Handarbeiten (zusammennähen) +Zämesetzi Puzzle +Zämesetzi mache Sex haben +zämestifle vorbereiten, planen +zämestuuche schimpfen, beschimpfen +zämestuuche tadeln, massregeln +zämetätsche zuschlagen +zämetöffle zuschlagen +Zampano Chef:in +zangge streiten +Zäpf di! Hau ab! +Zäpfe Brüste +Zäpfe Brustwarzen +Zapfe Monatslohn +Zapfe Penis +zäpfe rennen +Zapfe schlecht erzogenes Kind +Zapfe Tampon +Zapfe-Jass jassen (Spielart) +Zapfe-Zupfer Zapfenzieher +Zapfeburger Hahnequäll Leitungswasser +Zapfelocke Haare (gedrehte Locken) +Zapfezoisli Zapfenzieher +Zapfhähne Brüste +Zäpfli Stumpen, Zigarre +Zäpfli Zäpfchen +Zäpfli Zigarette +Zapfwälle-Musig Volksmusik +Zappi dine haa Sex haben +Zärteli zartes Kind +Zaschter Geld +Zauberstaab Penis +Zeche-Schlarpe Flip-Flops +zeere reissen +zeige, dass me en Maa isch ausharren, durchstehen +zeige, us was für Holz me bisch bewältigen, meistern +zeige, wo de Bartli de Moscht holt tadeln, massregeln +zeige, wo Gott hockt tadeln, massregeln +Zeige, wo s duregaht mutig +Zeiger dusse haa eine Erektion haben +Zeine Korb +Zeine Waschzuber +Zellrahme Buchhalter:in +zentnerwiis sehr viel +Zentral-Heizig Saxophon +Zentrale Kopf +Zerscht lifere, dänn lafere! Halt die Klappe! +Zerscht muesch drii cho, bevor d druus chunsch! Weisst du es nicht? +zeukle anbaggern, aufreissen +zeukle ärgern, provozieren +zeukle hänseln +zeukle locken +zeukle Umgang mit Tieren (spielen) +zeusle hänseln +zeusle mit Streichhölzern spielen +Zeusler Brandstifter:in +Zeuslihund Brandstifter:in +ZG: z vill Gäld Autokennzeichen national +ZG: z wenig Grips Autokennzeichen national +ZH – zuvorkommende Herren Zürcher:in (vom Autokennzeichen ZH) +ZH: z wenig Hirn Autokennzeichen national +ZH: ziemlichs Hindernis Autokennzeichen national +ZH: Zucht-Hüslerin – Zucht-Hüsler Autokennzeichen national +ZH: Zuehälter Autokennzeichen national +ZH: Züri Hauptstadt Autokennzeichen national +ZH: Zuvorkommend höflich Autokennzeichen national +ZH: zuvorkommende Herren Autokennzeichen national +Zia vo hinte Hyazinthe +Zickli Ziege +Ziegelwasser kalte Schokolade +Zieh de Finkestrich! Hau ab! +Zieh Fäde! Hau ab! +Zieh Leine! Hau ab! +Zieh mer en? Gehen wir nach Hause? +Zieh si, Chriesi! zum Abschied +Zieh si! Hau ab! +Zieh-n-en! Hau ab! +ziemli parat betrunken +Zifferblatt Gesicht +Ziger Augen (getrocknetes Augenwasser an den Wimpern) +Zigermandli Glarner:in +Zigerschlitz Orte (ausserhalb von Zürich) (Glarus) +Zigerschlitz Scheide +Zigerstöckli Käse (Glarner Käse) +Zigi Zigarette +Zigi vertrucke eine Zigarette rauchen +Ziilschiibe Scheide +Ziilwasser Schnaps +Ziircher Zürcher:in (aus Basler Sicht) +Ziisch Joint +Ziit schaffe laa zuschauen und abwarten +Ziit verchäpsle herumlungern +Ziit verplämperle herumlungern +Ziit zum e Uhr chaufe Wie spät ist es? (genervte Antwort auf die Frage nach der Zeit) +Ziit-Ise Uhr +Ziitbombe-Mais Popcorn +Ziitli eine Zeit lang +Ziitmäss-Station vo de Rännleitig Geschwindigkeitskontrolle +Zilete einige +Zimmer-Flak Pistole +Zimmer-ID Redensarten (Militär) (Militärschuhe in der Unterkunft reinigen) +Zimmerherr weitere Typen (Untermieter) +Zimmerlinde Freundin, Partnerin +Zimmerlinde Schimpfwörter +Zimmermaa Weberknecht (Spinnenart) +Zimmermänggel Weberknecht (Spinnenart) +zimmli ziemlich +Zimperlise Ehrendame +Zingerette Joint +Zingge Nase +Zipfel Brot (Anschnitt) +Zipfel Gipfel +Zipfel Penis +Zipfel schüttle urinieren (Männer) +Zirkuszält Kleid (zu gross) +Zisch ap! Hau ab! +Zisch di! Hau ab! +zische eine Zigarette rauchen +Zitrone Auto-Typen +Zitrone-Biisser Ausländer (Asiate) +Zitrone-Schüttleri – en Zitrone-Schüttler Italiener:in +zittere vor Chelti frieren +zittere wie Eschpe-Laub Angst haben (Espenblätter) +Zittergreis alter Mann +Zitteri haa Angst haben +Zitterpapple Angsthase +Zitzeli Nippel +Zivilschmutz Zivilschutz +zleid läbe mobben +zleid läbe schaden +zleid nöd sicher nicht +zleid werche schaden +Zleidwerchi-Cheib Schimpfwörter +Zmittag Mittagessen +Zmittag hät em Gurgeli wele go Grüezi säge erbrechen +Zmittag hät es Comeback gha erbrechen +zmitzt i de Schnitz mittendrin +zmitzt im Chueche mittendrin +zmitzt im Schnägg mittendrin +zmitzt ine mittendrin +Zmorge Frühstück +Zmorge ässe frühstücken +Zmorgefützli Brötchen (Weggen) +zmörgele frühstücken +Zmörgeli Frühstück +Znacht Abendessen +Znüüni Proviant +Zockeri – en Zocker Bankangestellte:r +Zoff haa streiten +zogge spielen (um Geld) +Zoggeli Schuhe (Hausschuhe) (Tessiner Holz-Zoccoli) +Zoggeri – en Zogger Spielsüchtige:r +Zolipey Polizist:in +Zolipischtin – en Zolipischt Polizist:in +Zolliker Pischte-Bully Offroader (SUV) +Zoo Verwandte +Zöpf haa streiten +Zöttel Penis +Zötteli Penis +zrächtwiise tadeln, massregeln +zruggligge sich ausruhen +ZS überchoo eine Rüge erhalten (Zämeschiss) +zu allne Löcher uus strahle gut gelaunt +zu de Ängeli gah sterben +zu de Pippi Langstrumpf gah urinieren +Zubulli Zuchtstier +Zucht-Hüüsler Zeughaus-Angestellter +Zucker-Soili Liebhaber:in von Süssigkeiten +Zückerli gäh hofieren, schmeicheln +Zuckermüüli Liebhaber:in von Süssigkeiten +Zuckerschnägg Kosenamen +Zuckerschnoizli Kosenamen +Zuckertöff Pferd +Zuckerwassermotor Mofa +Zuckerwassermotörli Motor (klein) +Zucki Bars, Restaurants, Clubs (Zukunft) +Zucki Clubs, Discos (Zukunft) +zue betrunken +zue wie en Schueh betrunken +zue wie-n-e Bahnhofschiissi betrunken +zue wie-n-e Chloschter-Tür betrunken +zue wie-n-en Grab-Teckel betrunken +zuebängle die Türe zuschlagen +Zuebetonierte Kokain-Konsument +zuebuttere auf jemanden einreden +zuegheje ins Schloss fallen +Zuehelter-Blache Lederjacke +zueschmättere die Türe zuschlagen +zueschnättere ins Schloss fallen +Zuestupf finanzieller Beitrag +zuetunnere die Türe zuschlagen +Zuezogni – en Zuezogne Auswärtige:r (Neuzuzüger:in) +Zug isch abgfahre verpassen +Zug isch scho abgfahre zu spät +Züg-Hüüsler Zeughaus-Angestellter +zügig schnell +zügle umziehen +Züglen wegg! Hau ab! +Züglete Umzug +Zügli Eisenbahn +zuheblig geizig +zum Aabiisse niedlich +zum aachnabbere verlockend +zum Abgwöhne nicht auszuhalten +zum Abseckle nicht auszuhalten +zum Abseckle schlecht +zum Abwinke schlecht +zum Arschloch uus seiche Durchfall +zum Bibäbele niedlich +zum Chotze Schande +zum Chotze schlecht +zum Devolaufe nicht auszuhalten +zum Devooseckle schlecht +zum Fänschter userüere Geld ausgeben, bezahlen +zum Frässe niedlich +zum Goisse lächerlich +zum Goisse lustig +zum Gröbschte uus sii das Schlimmste überstanden haben +zum Haaröl blaase schlecht +zum Herzele niedlich +zum Knuutsche niedlich +zum Küsse niedlich +zum Moby Dick gah stuhlen +zum Piipe lustig +zum Sächs-Füesser legge töten +zum Schacht usestinke Mundgeruch +zum Schiisse schlecht +zum Schüüsse gut +zum Schüüsse lächerlich +zum Schüüsse lustig +zum Spüele schlecht +zum Tonner Fluchwörter +zum Vergässe schlecht +zum Vergrööle lustig +zum x-te Mal zu wiederholtem Male +Zümpftigi dicke Person +zunderenand mache mischen +zunderobsi durcheinander +zunderobsi bringe mischen +Zündhölzli Streichhölzer +Zundhölzli-Zeushündli Streichhölzer +zunere chrischtliche Ziit nicht allzu früh am Morgen +zünftig sehr +zünftig stattlich +zünftig steil +Zunge id Ferie schicke Zungenkuss +Zunge in Hals hänke küssen +Zunge trucke Zungenkuss +Zunge-Rulaade Zungenkuss +Zungebrächer Alkohol +Zungeschletzer Zungenkuss +Zungespitz voll näh kosten, probieren +züngle schmusen +züngle Zungenkuss +Zupf en! Hau ab! +Zupf-Stube Bordell +zupfe flüchten, davonrennen +zupfe pflücken, ernten +Zupfed mer en? Gehen wir nach Hause? +Zupfstube Strip-Club +Zupfstube-Bileet 100 Franken +zur Sou müde, erschöpft +zur Sou mache jemanden fertigmachen +Zur Stell! Alle herkommen! +zur wiisse Schüssle bätte erbrechen +ZuReicheri – en ZuReicher Zürcher:in (aus Basler Sicht) +Züri – di fründlich Boustell a de Limmet Orte (in Zürich) +Züri-Füffzger Baby +Züri-Gschnätzlets Zürcher Geschnetzeltes +Züri-Hegel Zürcher:in +Züri-Hinderländleri – en Züri-Hinderländler Aargauer:in +Züri-Meer Orte (in Zürich) (Zürichsee) +Züri-Metzgete Fahrrad (eh. Velorennen im Kanton Zürich) +Züri-Wescht Orte (ausserhalb von Zürich) (Bern) +Züriberg-Fasnacht Sechseläuten +Züriberg-Traktor Autos aus England (Jeep Cherokee) +Züriberg-Traktor Offroader (SUV) +Züricher Deutsche:r (Deutscher Einwanderer) +Zürischnurre Take-Away-Spezialitäten (Brottasche, gefüllt mit Kalbshackbraten/Pepito Snack) +Zürischnurre Zürcher:in +Zürisee i de Schueh haa die Schuhe nass machen +Zützle Zigarette +Züüg Gegenstand +Züügs alles Mögliche +züüsle hänseln +Züzi Zürcher:in +Zvieri Vesper +Zvill-Verdieneri – en Zvill-Verdiener Chef:in/Vorgesetzte:r +zwacke kneifen, zwicken +zwäg bereit +zwäg fit, gesund +zwäg gut gelaunt +zwägeli betrunken +Zwägi – en Zwäge Sympathikus +Zwäng-Goof Kinder (quengelnd) +Zwäng-Grind fürechehre trotzen +zwänge erzwingen +zwängele erzwingen +Zwängi Kinder (quengelnd) +Zwängzer-Serie mit Seriefeuer schiessen +Zwani 20 Franken +Zwänzg-ab-Achti-Muul Gesicht (schlechte Laune) +Zwänzg-ab-achti-Schnure sauer +Zwänzger 20 Rappen +Zwänzgerli 20 Rappen +Zwänzgi 20 Rappen +Zwaschpel Zappelphilipp +Zwaschpli Zappelphilipp +zwaschplig aufgeregt +zwaschplig nervös +Zwasli kleiner Mann +Zwätschge Redensarten (Arbeit) (Fehler beim Rohrbiegen) +Zwätschge Schimpfwörter für Frauen (dumm) +Zwätschge-Lisi Schimpfwörter für Frauen +Zwätschgeli Scheide +zwatzlig aufgeregt +zwee Riissnegel Brüste (kleine Brüste) +Zwei am Rugge haa verlieren +zwei an Rugge maale die Schuld zuweisen +zwei Böge mache urinieren +zwei linggi Händ haa ungeschickt +zwei linggi Tüüme haa ungeschickt +zwei Pommes frites haa Beförderung zum Gefreiten +zwei Ross mit eme Esel Autofahrer:innen (2CV-Fahrer) +zwei Ross und en Esel Auto-Typen (2CV samt Fahrer:in) +zwei starchi Argumänt Brüste +Zwei uf em Rugge haa verlieren +Zwei-Fränkler 2 Franken +Zwei-Latte-Furzer Skifahrer +Zwei-Liiber 2 Franken +Zwei-Null-Zweier Joint +Zwei-Pfünder Auto-Typen (2CV) +Zwei-Takter Autofahrer:innen (GTI-Fahrer) +Zwei-Zimmer-Wohnig für die weibliche Figur (breites Becken) +Zweier- oder Drüer-Glanggere Kirsche +zweit Mal ässe erbrechen +Zwerg kleiner Mann +Zwerge Kinder +Zwerge-Uufstand Aufregung +Zwergli Kosenamen +Zwiback-Frääsi Mofa +Zwiback-Frääsi Motorrad +Zwiback-Saagi Motorrad +Zwibelschweizi Zwiebel (Zwiebeln mit Mehl, in der Pfanne gebraten) +Zwible Uhr (grosse Armbanduhr) +Zwible Vornamen (weiblich) (Sibylle) +Zwiebackfrääsi Gebiss +Zwiebackfrääsi Mund +Zwiebelring-Porsche Auto-Typen +Zwillings-Transporter für die weibliche Figur (dick) +Zwipf Proviant (Abk. von Zwischenverpflegung) +Zwipf Zwischenverpflegung +Zwisel kleiner Mann +zwitschere Sex haben +Zwuckel für die männliche Figur +zwüschet nünzg und schiitot alte Frau +zwüschet zwei Stelle sii arbeitslos +Zwüschet-de-Zeche-Tröchneri – en Zwüschet-de-Zeche-Tröchner Schwächling +Zwüschetine-Funki Störenfried +Zylinder schliiffe Sex haben +Zyporius Penis +ZZZ - zeige, zueluege, zämeschiisse militärische Abkürzungen \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..55f9dc8 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,30 @@ +services: + password-generator: + build: + context: . + dockerfile: Dockerfile + image: pw-generator:local + container_name: pw-generator + restart: unless-stopped + ports: + - "8080:8080" + env_file: + - .env + environment: + APP_ENV: production + APP_DEBUG: "false" + LOG_LEVEL: warning + PORT: "8080" + RATE_LIMIT: "120" + CORS_ORIGIN: "http://localhost:8080" + CORS_METHODS: "GET,POST,OPTIONS" + CORS_HEADERS: "Content-Type,Authorization" + volumes: + - ./logs:/var/www/html/logs + - ./config/config.json:/var/www/html/config/config.json:ro + healthcheck: + test: ["CMD-SHELL", "curl -fsS http://127.0.0.1:8080/ >/dev/null || exit 1"] + interval: 30s + timeout: 5s + retries: 3 + start_period: 20s diff --git a/docs/docs-de.html b/docs/docs-de.html new file mode 100644 index 0000000..a58d3bd --- /dev/null +++ b/docs/docs-de.html @@ -0,0 +1,41 @@ + + + + + Passwort-Generator API - Vollständige Dokumentation + + + +
+
+

🔐 Passwort-Generator API - Vollständiger Leitfaden

+ +
+
+ + +
+
+

🔐 Hochentropie-Generator

+

Kryptographisch sichere Zufallspasswörter mit vollständiger Zeichensatzkontrolle.

+
+
+

Zweck & Anwendungsfall

+

Generiert traditionelle Zufallspasswörter mit vollständiger Kontrolle über Zeichentypen. Am besten für Systeme, die spezifische Zeichensatzkonformität erfordern oder wenn Sie maximale Zufälligkeit benötigen.

+ +

Verfügbare Optionen

+ +
+

Zahl16length (Länge)

+

Bereich: 8-128 Zeichen

+

Beschreibung: Gesamte Passwortlänge. Längere Passwörter bieten exponentiell mehr Sicherheit.

+

Sicherheitsauswirkung: Jedes zusätzliche Zeichen verdoppelt ungefähr die Zeit, die zum Knacken des Passworts erforderlich ist.

+
+ + +
+
+ + \ No newline at end of file diff --git a/docs/docs-es.html b/docs/docs-es.html new file mode 100644 index 0000000..e69de29 diff --git a/docs/docs-it.html b/docs/docs-it.html new file mode 100644 index 0000000..e69de29 diff --git a/docs/docs-ja.html b/docs/docs-ja.html new file mode 100644 index 0000000..e69de29 diff --git a/docs/docs-zh.html b/docs/docs-zh.html new file mode 100644 index 0000000..e69de29 diff --git a/docs/docs.html b/docs/docs.html new file mode 100644 index 0000000..7caffd8 --- /dev/null +++ b/docs/docs.html @@ -0,0 +1,974 @@ + + + + + + API Documentation - Password Generator + + + + +
+
+

🔐 Password Generator API

+ +
+
+ +
+
+

API Documentation

+

Complete OpenAPI 3.0 specification for the Password Generator API. Generate secure passwords with multiple algorithms, manage wordlists dynamically, and support international languages.

+ +
+ Base URL: http://localhost:8080/api/v1 +
+ +
+
+

🔐 Multiple Algorithms

+

High-entropy, XKCD, Diceware, PWGen, and Passkey generation methods

+
+
+

🌍 Internationalization

+

Dynamic wordlist discovery and multi-language UI support

+
+
+

📊 Entropy Analysis

+

Real-time password strength calculation and security metrics

+
+
+

🔧 Configurable

+

Extensive customization options for all password types

+
+
+
+ +
+

Download Configuration Files

+

Get the complete API specification in various formats for integration with your tools and workflows.

+ +
+
+

📄 OpenAPI JSON

+

Complete OpenAPI 3.0 specification in JSON format. Perfect for code generation, API testing, and integration with development tools.

+ Download JSON +
+ +
+

📋 OpenAPI YAML

+

Human-readable YAML format specification. Ideal for documentation, version control, and collaborative API development.

+ Download YAML +
+ +
+

🚀 Postman Collection

+

Ready-to-use Postman collection with all endpoints, examples, and environment variables for immediate API testing.

+ Download Collection +
+ +
+

⚡ cURL Examples

+

Complete set of cURL commands with examples for all endpoints. Perfect for command-line testing and scripting.

+ Download Examples +
+
+
+ +
+
+

Interactive API Explorer

+
+
+
+
+
+ +
+

Quick Start

+

Get started with the Password Generator API in minutes. Here are some common examples:

+ +

Generate XKCD Passphrase

+ +
curl -X POST "http://localhost:8080/api/v1/passwords/generate" \ + -H "Content-Type: application/json" \ + -d '{ + "type": "xkcdpass", + "count": 3, + "options": { + "words": 4, + "wordlist": "en", + "separator": "-", + "add_number": true, + "number_position": "random" + } + }'
+ +

Check Available Wordlists

+ +
curl -X GET "http://localhost:8080/api/v1/passwords/wordlists"
+ +

Generate High-Entropy Password

+ +
curl -X POST "http://localhost:8080/api/v1/passwords/generate" \ + -H "Content-Type: application/json" \ + -d '{ + "type": "high-entropy", + "count": 1, + "options": { + "length": 20, + "include_symbols": true + } + }'
+
+
+ + + + + + + + \ No newline at end of file diff --git a/docs/index.html b/docs/index.html new file mode 100644 index 0000000..f1e0a20 --- /dev/null +++ b/docs/index.html @@ -0,0 +1,268 @@ + + + + + + Password Generator API - Complete Documentation + + + + +
+ +
+ +
+
+

🔐 Password Generator API - Complete Guide

+ +
+
+ +
+ +
+

API Overview

+
+ Base URL: http://localhost:8080/api/v1 +
+ +
+ All password generation uses cryptographically secure random number generation for maximum security. +
+
+ + +
+
+

🔐 High Entropy Generator

+

Cryptographically secure random passwords with full character set control.

+
+
+

Purpose & Use Case

+

Generate traditional random passwords with complete control over character types. Best for systems requiring specific character set compliance or when you need maximum randomness.

+ +

Available Options

+ +
+

number16length

+

Range: 8-128 characters

+

Description: Total password length. Longer passwords provide exponentially more security.

+

Security Impact: Each additional character roughly doubles the time required to crack the password.

+
+ +
+

booleantrueinclude_uppercase

+

Description: Include uppercase letters (A-Z) in the character set.

+

Character Set: ABCDEFGHIJKLMNOPQRSTUVWXYZ (26 characters)

+

Security Impact: Adds 26 possible characters, significantly increasing entropy.

+
+ +
+

booleantrueinclude_lowercase

+

Description: Include lowercase letters (a-z) in the character set.

+

Character Set: abcdefghijklmnopqrstuvwxyz (26 characters)

+

Note: At least one character type must be selected.

+
+ +
+

booleantrueinclude_numbers

+

Description: Include numeric digits (0-9) in the character set.

+

Character Set: 0123456789 (10 characters)

+

Compliance: Required by many corporate password policies.

+
+ +
+

booleantrueinclude_symbols

+

Description: Include special symbols in the character set.

+

Character Set: !@#$%^&*()_+-=[]{}|;:,.<>? (25 characters)

+

Note: Some systems have restrictions on certain symbols. Validate accepted characters in your target environment.

+
+ +

Example Request

+
+POST /api/v1/passwords/generate +Content-Type: application/json + +{ + "type": "high-entropy", + "count": 2, + "options": { + "length": 20, + "include_uppercase": true, + "include_lowercase": true, + "include_numbers": true, + "include_symbols": false + } +}
+ +

Example Response

+
+{ + "success": true, + "data": { + "passwords": [ + "Km9xB3nQ2pL8vR5wE6sA", + "T7gY4hJ9kM1nP6qU8zC3" + ], + "entropy_bits": 119.5, + "generator_info": "High entropy generator with alphanumeric characters", + "options_used": { + "length": 20, + "include_uppercase": true, + "include_lowercase": true, + "include_numbers": true, + "include_symbols": false + } + }, + "message": "Generated 2 password(s) of type 'high-entropy'", + "timestamp": "2025-08-23T21:24:00+02:00" +}
+
+
+ + +
+
+

🗣️ XKCD Pass Generator

+

Memorable passphrases using word combinations with multilingual support.

+
+
+

Purpose & Use Case

+

Generate memorable passphrases based on the famous XKCD comic "Password Strength". Ideal when users need to remember passwords without writing them down. Supports multiple languages for international users.

+ +

Available Options

+ +
+

number4words

+

Range: 3-8 words

+

Description: Number of words in the passphrase.

+

Security Impact: Each additional word exponentially increases security. 4 words ≈ 52 bits, 6 words ≈ 77 bits entropy.

+

Memorability: 4-5 words strike the best balance between security and memorability.

+
+ +
+

selectenwordlist

+

Options: en, de, de_CH, fr, it, es, pt, ja, zh

+

Description: Wordlist to use for generation.

+

Wordlist Quality: Built-in curated collections are selected per language and can be checked dynamically from the wordlist endpoint.

+

Availability: Check /api/v1/passwords/wordlists for current language availability.

+
+ +
+

text-separator

+

Description: Character(s) used to separate words in the passphrase.

+

Single Character: All separations use the same character (e.g., "word-word-word").

+

Multiple Characters: Each separation randomly selects from the character set (e.g., "word-word_word.word").

+

Space Handling: Spaces are excluded from multi-character separator sets for security.

+

Examples: "-", "_", ".", "-_.", "!@#"

+
+ +
+

booleanfalseadd_number

+

Description: Add a 2-digit number to the passphrase.

+

Security Benefit: Increases entropy by ~6.6 bits (100 possible values).

+

Position Control: Use number_position to control placement.

+
+ +
+

selectendnumber_position

+

Requires: add_number: true

+

Options:

+
    +
  • beginning: "42-word-word-word"
  • +
  • end: "word-word-word-42"
  • +
  • random: "word-42-word-word" (random separator position)
  • +
+

Security Note: Random position provides additional unpredictability.

+
+ +

Example Request

+
+POST /api/v1/passwords/generate +Content-Type: application/json + +{ + "type": "xkcdpass", + "count": 1, + "options": { + "words": 5, + "wordlist": "en", + "separator": "-_.", + "add_number": true, + "number_position": "random" + } +}
+ +

Example Response

+
+{ + "success": true, + "data": { + "passwords": ["horse-battery_42.correct_staple"], + "explanations": ["large four-legged animal – device that stores electrical energy – free from error; accurate – basic or principal item"], + "entropy_bits": 58.7, + "generator_info": "XKCD-style passphrase using 5 words from en wordlist", + "options_used": { + "words": 5, + "wordlist": "en", + "separator": "-_.", + "add_number": true, + "number_position": "random" + } + }, + "message": "Generated 1 password(s) of type 'xkcdpass'", + "timestamp": "2025-08-23T21:24:00+02:00" +}
+
+
+ + + + +
+
+

🔒 Security Recommendations

+
+
+

Choosing the Right Generator

+
    +
  • High Entropy: Maximum security with strict policy control
  • +
  • XKCD Pass: User memorability, multi-language support needed
  • +
  • Diceware: Maximum security with educational value
  • +
  • PWGen: Pronounceable passwords with balanced strength and usability
  • +
  • Passkey: Pronounceable passwords for verbal communication
  • +
+ +

Entropy Guidelines

+
    +
  • 50+ bits: Basic security (personal accounts)
  • +
  • 65+ bits: Strong security (business accounts)
  • +
  • 80+ bits: Excellent security (high-value accounts)
  • +
+
+
+
+ + + + \ No newline at end of file diff --git a/install.sh b/install.sh new file mode 100644 index 0000000..18657bd --- /dev/null +++ b/install.sh @@ -0,0 +1,92 @@ +#!/bin/bash + +# Password Generator Installation Script +# This script sets up the password generator with i18n support + +set -e + +echo "🔐 Password Generator Installation" +echo "==================================" + +# Check PHP version +php_version=$(php -v | head -n1 | cut -d' ' -f2 | cut -d'.' -f1,2) +required_version="8.1" + +if [ "$(printf '%s\n' "$required_version" "$php_version" | sort -V | head -n1)" != "$required_version" ]; then + echo "❌ PHP 8.1+ required (found: $php_version)" + exit 1 +fi + +echo "✅ PHP version: $php_version" + +# Check if composer is installed +if ! command -v composer &> /dev/null; then + echo "❌ Composer not found. Please install Composer first:" + echo " https://getcomposer.org/download/" + exit 1 +fi + +echo "✅ Composer found" + +# Install PHP dependencies +echo "" +echo "📦 Installing PHP dependencies..." +composer install --no-dev --optimize-autoloader + +# Set up environment file +if [ ! -f .env ]; then + echo "" + echo "⚙️ Setting up environment configuration..." + cp .env.example .env + echo "✅ Environment file created (.env)" + echo " You can edit this file to customize settings" +else + echo "✅ Environment file already exists" +fi + +# Create logs directory and set permissions +echo "" +echo "📁 Setting up directories..." +mkdir -p logs +chmod 755 logs +echo "✅ Logs directory created" + +# Check if pwgen is available (optional) +if command -v pwgen &> /dev/null; then + echo "✅ pwgen found (enhanced compatibility enabled)" +else + echo "ℹ️ pwgen not found (will use PHP fallback)" +fi + +# Test the installation +echo "" +echo "🧪 Testing installation..." +php -l public/index.php > /dev/null +if [ $? -eq 0 ]; then + echo "✅ PHP syntax check passed" +else + echo "❌ PHP syntax error found" + exit 1 +fi + +# Start the development server +echo "" +echo "🚀 Installation completed successfully!" +echo "" +echo "To start the development server:" +echo " php -S localhost:8080 -t public" +echo "" +echo "To start with composer:" +echo " composer start" +echo "" +echo "Then visit: http://localhost:8080" +echo "" +echo "📚 Features:" +echo " • REST API for password generation" +echo " • Multilingual web interface (8 languages)" +echo " • 5 different password generation algorithms" +echo " • Security analysis and entropy calculation" +echo " • Password manager integration examples" +echo "" +echo "📖 Documentation: http://localhost:8080/docs" +echo "🌍 Supported languages: EN, DE, FR, IT, ES, PT, JA, ZH" diff --git a/integration-guide.md b/integration-guide.md new file mode 100644 index 0000000..fbf49e9 --- /dev/null +++ b/integration-guide.md @@ -0,0 +1,545 @@ +# Password Generator API Integration Guide + +This guide provides comprehensive examples for integrating the Password Generator API with popular password managers, launchers, and automation tools. + +## Table of Contents +- [Quick Start](#quick-start) +- [Password Managers](#password-managers) +- [Launchers & Tools](#launchers--tools) +- [Automation Scripts](#automation-scripts) +- [Security Considerations](#security-considerations) + +## Quick Start + +The API provides several endpoints for password generation: + +**Base URL:** `http://localhost:8080/api/v1` + +**Generate Password:** +```bash +curl -X POST http://localhost:8080/api/v1/passwords/generate \ + -H "Content-Type: application/json" \ + -d '{"type":"diceware","count":1,"options":{"words":6}}' +``` + +## Password Managers + +### Bitwarden + +#### Bitwarden CLI Integration + +**Installation:** +```bash +npm install -g @bitwarden/cli +``` + +**Basic Password Generation and Storage:** +```bash +#!/bin/bash +# generate-and-store-bitwarden.sh + +# Login to Bitwarden (do this once) +bw login + +# Unlock vault (enter master password when prompted) +export BW_SESSION="$(bw unlock --raw)" + +# Generate high-entropy password +PASSWORD=$(curl -s -X POST http://localhost:8080/api/v1/passwords/generate \ + -H "Content-Type: application/json" \ + -d '{"type":"high-entropy","count":1,"options":{"length":20,"includeSymbols":true}}' | \ + jq -r '.data.passwords[0]') + +# Create new login item +ITEM_DATA=$(cat < ['name' => 'High Entropy', 'icon' => '🔒', 'options' => '{"length":16}'], + 'diceware' => ['name' => 'Diceware', 'icon' => '🎲', 'options' => '{"words":5}'], + 'passkey' => ['name' => 'Passkey', 'icon' => '🗝️', 'options' => '{"syllables":3}'], + 'xkcdpass' => ['name' => 'XKCD', 'icon' => '💭', 'options' => '{"words":4}'] +]; + +$items = []; + +foreach ($types as $type => $config) { + $items[] = [ + 'uid' => $type, + 'title' => $config['name'] . ' Password', + 'subtitle' => 'Generate ' . strtolower($config['name']) . ' password', + 'arg' => $type, + 'icon' => ['emoji' => $config['icon']] + ]; +} + +echo json_encode(['items' => $items]); +?> +``` + +**alfred-generate.sh:** + +```bash +#!/bin/bash +TYPE=$1 + +case $TYPE in + "high-entropy") + OPTIONS='{"length":16,"includeSymbols":true}' + ;; + "diceware") + OPTIONS='{"words":5,"capitalize":true}' + ;; + "passkey") + OPTIONS='{"syllables":3,"addNumbers":true}' + ;; + "xkcdpass") + OPTIONS='{"words":4,"capitalize":true,"addNumber":true}' + ;; +esac + +PASSWORD=$(curl -s -X POST http://localhost:8080/api/v1/passwords/generate \ + -H "Content-Type: application/json" \ + -d "{\"type\":\"$TYPE\",\"count\":1,\"options\":$OPTIONS}" | \ + jq -r '.data.passwords[0]') + +echo "$PASSWORD" | pbcopy +echo "$PASSWORD" +``` + +### LaunchBar + +#### LaunchBar Action + +**PasswordGenerator.lbaction/Contents/Scripts/default.sh:** + +```bash +#!/bin/bash + +PASSWORD=$(curl -s -X POST http://localhost:8080/api/v1/passwords/generate \ + -H "Content-Type: application/json" \ + -d '{"type":"passkey","count":1,"options":{"syllables":4,"addNumbers":true}}' | \ + jq -r '.data.passwords[0]') + +if [ -n "$PASSWORD" ]; then + echo "$PASSWORD" | pbcopy + echo "$PASSWORD" +else + echo "Error generating password" + exit 1 +fi +``` + +### Ubar / Menu Bar Apps + +#### BitBar Plugin + +**password-generator.1m.sh:** + +```bash +#!/bin/bash + +echo "🔐 Password Generator" +echo "---" + +# Generate different types +TYPES=("high-entropy:High Entropy" "diceware:Diceware" "passkey:Passkey" "xkcdpass:XKCD") + +for TYPE_PAIR in "${TYPES[@]}"; do + TYPE="${TYPE_PAIR%%:*}" + NAME="${TYPE_PAIR##*:}" + + PASSWORD=$(curl -s -X POST http://localhost:8080/api/v1/passwords/generate \ + -H "Content-Type: application/json" \ + -d "{\"type\":\"$TYPE\",\"count\":1}" | \ + jq -r '.data.passwords[0]' 2>/dev/null) + + if [ -n "$PASSWORD" ]; then + echo "$NAME: $PASSWORD | bash='echo \"$PASSWORD\" | pbcopy' terminal=false" + fi +done + +echo "---" +echo "API Status | bash='curl -s http://localhost:8080/api/v1/health' terminal=true" +``` + +## Automation Scripts + +### Automated Password Rotation + +```bash +#!/bin/bash +# rotate-passwords.sh + +SERVICES=("email:user@example.com" "bank:john.doe" "social:johndoe123") + +for SERVICE_PAIR in "${SERVICES[@]}"; do + SERVICE="${SERVICE_PAIR%%:*}" + USERNAME="${SERVICE_PAIR##*:}" + + # Generate new password + PASSWORD=$(curl -s -X POST http://localhost:8080/api/v1/passwords/generate \ + -H "Content-Type: application/json" \ + -d '{"type":"high-entropy","count":1,"options":{"length":20}}' | \ + jq -r '.data.passwords[0]') + + # Update in password manager (example with Bitwarden) + ITEM_ID=$(bw list items --search "$SERVICE" | jq -r '.[0].id') + if [ "$ITEM_ID" != "null" ]; then + ITEM=$(bw get item "$ITEM_ID") + UPDATED_ITEM=$(echo "$ITEM" | jq ".login.password = \"$PASSWORD\"") + echo "$UPDATED_ITEM" | bw encode | bw edit item "$ITEM_ID" + + echo "Rotated password for $SERVICE: $PASSWORD" + fi +done +``` + +### Bulk Password Generation for Teams + +```bash +#!/bin/bash +# team-password-generator.sh + +TEAM_MEMBERS=("alice" "bob" "charlie" "diana") +SERVICES=("staging" "development" "testing") + +for MEMBER in "${TEAM_MEMBERS[@]}"; do + echo "Generating passwords for $MEMBER:" + + for SERVICE in "${SERVICES[@]}"; do + PASSWORD=$(curl -s -X POST http://localhost:8080/api/v1/passwords/generate \ + -H "Content-Type: application/json" \ + -d '{"type":"diceware","count":1,"options":{"words":4,"addNumber":true}}' | \ + jq -r '.data.passwords[0]') + + # Store in team password manager + op item create \ + --category=login \ + --title="$SERVICE-$MEMBER" \ + --field="username=$MEMBER" \ + --field="password=$PASSWORD" \ + --vault="Team Vault" + + echo " $SERVICE: $PASSWORD" + done + echo "" +done +``` + +## Security Considerations + +### API Security + +1. **Local Deployment**: Run the API locally or on a secure internal network +2. **Rate Limiting**: The API includes built-in rate limiting (60 requests/minute by default) +3. **No Logging of Passwords**: Passwords are not logged in server logs +4. **HTTPS**: Use HTTPS in production deployments + +### Integration Security + +1. **Environment Variables**: Store API endpoints in environment variables: + +```bash +export PASSWORD_API_URL="https://passwords.internal.company.com/api/v1" +``` + +2. **Script Permissions**: Set appropriate permissions on scripts: + +```bash +chmod 700 password-scripts/ +chmod 600 password-scripts/*.sh +``` + +3. **Secure Storage**: Ensure integration scripts don't leave passwords in temporary files: + +```bash +# Good: Use pipes and variables +PASSWORD=$(curl -s ... | jq -r '.data.passwords[0]') + +# Bad: Don't write to temporary files +# curl -s ... > /tmp/password.json +``` + +### Production Deployment + +For production use, consider: + +1. **Authentication**: Add API key authentication +2. **Network Security**: Deploy behind a firewall or VPN +3. **Monitoring**: Monitor API usage and failed requests +4. **Backup**: Regular backups of configuration and logs + +### Password Manager Sync + +When integrating with password managers: + +1. **Verify Storage**: Always verify passwords are correctly stored +2. **Error Handling**: Implement proper error handling for API failures +3. **Rollback**: Have procedures to rollback failed password updates +4. **Audit Trail**: Maintain logs of password generation and updates + +## Troubleshooting + +### Common Issues + +**API Connection Issues:** +```bash +# Test API connectivity +curl -s http://localhost:8080/api/v1/health + +# Check if service is running +netstat -tlnp | grep 8080 +``` + +**JSON Parsing Issues:** +```bash +# Validate JSON response +curl -s http://localhost:8080/api/v1/passwords | jq '.' + +# Check for errors +curl -s http://localhost:8080/api/v1/passwords | jq '.error' +``` + +**Password Manager Integration:** +```bash +# Test CLI tools separately +bw --version +op --version +keepassxc-cli --version + +# Verify authentication +bw status +op whoami +``` + +This integration guide provides comprehensive examples for connecting the Password Generator API with popular tools and services. Adapt these examples based on your specific requirements and security policies. \ No newline at end of file diff --git a/locales/de.json b/locales/de.json new file mode 100644 index 0000000..b5aae68 --- /dev/null +++ b/locales/de.json @@ -0,0 +1,223 @@ +{ + "api_documentation": "API-Dokumentation", + "app_title": "Passwort Generator", + "close": "Schließen", + "copied_to_clipboard": "In die Zwischenablage kopiert!", + "copy": "Kopieren", + "copy_failed": "Kopieren fehlgeschlagen", + "count": "Anzahl", + "deutsch": "Deutsch", + "dice_rolls": "Würfelwürfe", + "diceware_badge": "Fokus Sicherheit", + "diceware_description": "Authentische EFF Diceware-Methode mit kryptographisch sicheren Würfelwürfen für maximale Sicherheit", + "diceware_option_show_dice_rolls": "Zeige Würfelwürfe an", + "diceware_option_show_dice_rolls_description": "Informativ: zeige die Würfelwürfe an, welche die Basis für die Auswahl der Wörter ist.", + "diceware_option_uppercase_first": "Grossschreibung des ersten Wortes", + "diceware_option_uppercase_first_description": "Nur das erste Wort wird gross geschrieben (traditionelle Diceware Mechanik)", + "diceware_option_words": "Wörter", + "diceware_option_words_description": "Das empfohlene Minimum sind 6 Wörter um ein sicheres Passwort zu erhalten (77.5 Bits Entropie).", + "diceware_title": "Diceware", + "english": "Englisch", + "entropy": "Entropie", + "length": "Länge", + "details": "Details", + "security_level": "Sicherheitsstufe", + "very_strong": "Sehr stark", + "strong": "Stark", + "adequate": "Ausreichend", + "weak": "Schwach", + "very_weak": "Sehr schwach", + "chars": "Zeichen", + "error_generating_passwords": "Fehler beim Generieren der Passwörter", + "espanol": "Español", + "footer_text": "Ein Werkzeug um sichere Passwörter mit verschiedenen Algorithmen zu erstellen. Open Source von Reindl Informatik.", + "francais": "Français", + "generate": "Generieren", + "generating": "Generiere...", + "high-entropy_description": "Kryptographisch sichere Zufallspasswörter mit maximaler Entropie", + "high-entropy_option_include_lowercase": "Kleinbuchstaben einbeziehen", + "high-entropy_option_include_numbers": "Zahlen einbeziehen", + "high-entropy_option_include_symbols": "Sonderzeichen einbeziehen", + "high-entropy_option_include_uppercase": "Grossbuchstaben einbeziehen", + "high-entropy_option_length": "Länge", + "high-entropy_title": "Hohe Entropie", + "info_spaces_replaced_with_underscores": "Leerzeichen in ausgewählten Wörtern werden durch Unterstriche (_) ersetzt.", + "info_words_with_spaces_excluded": "Wörter mit Leerzeichen werden von der Auswahl ausgeschlossen.", + "italiano": "italienisch", + "language": "Sprache:", + "loading_generators": "Generatoren laden …", + "loading_password_generators": "Passwort-Generatoren werden geladen...", + "native_group_explanation": "Native Optionen des PwGen-Generators zum Erzeugen aussprachefähiger Passwörter.", + "native_pwgen": "Native Optionen", + "no_spaces_in_separator": "Keine Leerzeichen im Trennzeichen verwenden, wenn die Leerzeichenbehandlung auf „ändern“ oder „überspringen“ gesetzt ist.", + "passkey_description": "Apple-Style aussprechbare Passwörter mit integrierten Zeichenersetzungen", + "passkey_option_syllables": "Silben", + "passkey_title": "Passkey", + "password_generator": "Passwort-Generator", + "php_fallback": "PHP-Fallback-Code, wenn native pwgen nicht verfügbar ist.", + "portugues": "portugiesisch", + "pwgen_badge": "Erweitert", + "pwgen_description": "Klassische pwgen-Style Passwörter mit lesbaren Mustern", + "pwgen_option_include_capitals": "Großbuchstaben einschließen", + "pwgen_option_include_capitals_description": "Generierte Passwörter enthalten Großbuchstaben.", + "pwgen_option_include_numbers": "Zahlen einschließen", + "pwgen_option_include_numbers_description": "Generierte Passwörter enthalten Ziffern.", + "pwgen_option_length": "Länge", + "pwgen_option_length_description": "Gesamtpasswortlänge einschließlich Trennzeichen (mindestens 4 Zeichen)", + "pwgen_option_no_ambiguous": "Keine mehrdeutigen Zeichen", + "pwgen_option_no_ambiguous_description": "Schließe Zeichen wie 0, O, l, 1 usw. aus, um die Lesbarkeit zu verbessern", + "pwgen_option_pattern_complexity": "Komplexes Muster", + "pwgen_option_pattern_complexity_description": "Steuert die Komplexität der erzeugten Muster.", + "pwgen_option_pattern_complexity_list_balanced": "Ausgewogene Komplexität", + "pwgen_option_pattern_complexity_list_complex": "Komplexe Muster", + "pwgen_option_pattern_complexity_list_simple": "Einfache Muster", + "pwgen_option_secure_mode": "Sicherer Modus", + "pwgen_option_secure_mode_description": "Erzeuge vollständig zufällige Passwörter statt aussprechbarer Wörter", + "pwgen_option_separator": "Trennzeichen", + "pwgen_option_separator_description": "Zeichen, die Silben trennen. Wenn mehrere Zeichen definiert sind, werden sie durch zufällig ausgewählte Zeichen getrennt. Wenn dies leer ist, findet keine Trennung statt.", + "pwgen_option_syllable_count": "Silbenanzahl", + "pwgen_option_syllable_count_description": "Anzahl der zu erzeugenden Silben (nur mit Trennzeichen verwendet)", + "pwgen_title": "PWGen", + "results": "Ergebnisse", + "schwyzerduetsch": "Schwyzerdütsch", + "secure_mode_disables_syllable_separation": "Sicherer Modus deaktiviert die Trennung von Silben.", + "separator_method_info": "Infos zur Trennmethode", + "single_space_allowed": "Einzelnes Leerzeichen erlaubt", + "success": "Erfolg", + "syllable_group_explanation": "Erklärungen zu Silben", + "syllable_length_too_short": "Silbenlänge zu kurz", + "syllable_length_very_long": "Silbenlänge sehr lang", + "warning_short_word_limits_reduces_choices": "Warnung: kurze Wortlimits verringern die Auswahlmöglichkeiten", + "warning_short_words_reduce_memorability": "Warnung: kurze Wörter verringern die Merkbarkeit", + "xkcdpass_badge": "Fokus Merkbarkeit", + "xkcdpass_description": "Einfach merkbare Passwörter aus Wortkombinationen aus auswählbaren Wortlisten mit zusätzlichen Optionen und Merkhilfen.", + "xkcdpass_option_addNumber": "Zahl hinzufügen", + "xkcdpass_option_max_word_length": "Maximale Wortlänge", + "xkcdpass_option_max_word_length_description": "0 = keine Einschränkung, >0 = maximale Anzahl Buchstaben pro Wort.", + "xkcdpass_option_numberPosition": "Zahlenposition", + "xkcdpass_option_numberPosition_list_beginning": "am Anfang", + "xkcdpass_option_numberPosition_list_end": "am Ende", + "xkcdpass_option_numberPosition_list_random": "zufällige Position", + "xkcdpass_option_separator": "Trennzeichen", + "xkcdpass_option_separator_description": "Ein einzelnes oder mehrere Zeichen zur Worttrennung. Bei mehr als einem Zeichen wird zufällig ausgewählt. Leerzeichen werde ignoriert.", + "xkcdpass_option_space_handling": "Leerzeichenverarbeitung", + "xkcdpass_option_space_handling_description": "Wie sollen Leerzeichen in ausgewählten Wörtern behandelt werden.", + "xkcdpass_option_space_handling_list_allow": "erlauben", + "xkcdpass_option_space_handling_list_modify": "ersetzen mit '_'", + "xkcdpass_option_space_handling_list_skip": "Wort überspringen", + "xkcdpass_option_wordlist": "Wortliste", + "xkcdpass_option_words": "Wörter", + "xkcdpass_option_words_description": "Anzahl Wörter im generierten Passwort (Minimum 2, empfohlen 3 und mehr).", + "xkcdpass_title": "XKCD Pass", + "phraseabbreviator_number_zero": "null", + "phraseabbreviator_number_one": "eins", + "phraseabbreviator_number_two": "zwei", + "phraseabbreviator_number_three": "drei", + "phraseabbreviator_number_four": "vier", + "phraseabbreviator_number_five": "fünf", + "phraseabbreviator_number_six": "sechs", + "phraseabbreviator_number_seven": "sieben", + "phraseabbreviator_number_eight": "acht", + "phraseabbreviator_number_nine": "neun", + "phraseabbreviator_number_ten": "zehn", + "phraseabbreviator_number_eleven": "elf", + "phraseabbreviator_number_twelve": "zwölf", + "phraseabbreviator_number_thirteen": "dreizehn", + "phraseabbreviator_number_fourteen": "vierzehn", + "phraseabbreviator_number_fifteen": "fünfzehn", + "phraseabbreviator_number_sixteen": "sechzehn", + "phraseabbreviator_number_seventeen": "siebzehn", + "phraseabbreviator_number_eighteen": "achtzehn", + "phraseabbreviator_number_nineteen": "neunzehn", + "phraseabbreviator_number_twenty": "zwanzig", + "xkcdpass_option_use_ai_wordlist": "KI-Wortliste verwenden", + "xkcdpass_option_use_ai_wordlist_description": "Erzeugt eine benutzerdefinierte Wortliste mit einem KI-Modell", + "xkcdpass_option_ai_wordlist_prompt": "KI-Wortlisten-Prompt", + "xkcdpass_option_ai_wordlist_prompt_description": "Vervollständige den Prompt: \"Erstelle eine Liste von X Wörtern mit mindestens 5 Zeichen, die...\"", + "xkcdpass_option_ai_provider": "KI-Anbieter", + "xkcdpass_option_ai_provider_description": "Welcher LLM-Anbieter verwendet werden soll", + "phrase-abbreviator_option_use_ai_sentence": "KI-Satz verwenden", + "phrase-abbreviator_option_use_ai_sentence_description": "Lässt die KI einen Satz aus deinem Prompt generieren", + "phrase-abbreviator_option_ai_prompt": "KI-Prompt", + "phrase-abbreviator_option_ai_prompt_description": "Prompt für die KI, um einen einprägsamen Satz zu generieren (mindestens 12 Wörter)", + "phrase-abbreviator_option_ai_provider": "KI-Anbieter", + "phrase-abbreviator_option_ai_provider_description": "Welcher LLM-Anbieter für die Satzgenerierung verwendet werden soll", + "phrase-abbreviator_option_ai_model": "KI-Modell", + "phrase-abbreviator_option_ai_model_description": "Welches KI-Modell verwendet werden soll", + "high-entropy_option_length_description": "Gesamtpasswortlänge", + "high-entropy_option_include_uppercase_description": "Grossbuchstaben einbeziehen (A-Z)", + "high-entropy_option_include_lowercase_description": "Kleinbuchstaben einbeziehen (a-z)", + "high-entropy_option_include_numbers_description": "Zahlen einbeziehen (0-9)", + "high-entropy_option_include_symbols_description": "Sonderzeichen einbeziehen (z. B. !@#$%)", + "xkcdpass_option_wordlist_description": "Wortliste für die Passphrase", + "xkcdpass_option_wordlist_choice_en": "Englisch", + "xkcdpass_option_wordlist_choice_de": "Deutsch", + "xkcdpass_option_wordlist_choice_fr": "Französisch", + "xkcdpass_option_wordlist_choice_it": "Italienisch", + "xkcdpass_option_wordlist_choice_es": "Spanisch", + "xkcdpass_option_space_handling_choice_allow": "Erlauben", + "xkcdpass_option_space_handling_choice_skip": "Überspringen", + "xkcdpass_option_space_handling_choice_modify": "Ändern", + "xkcdpass_option_add_number": "Zahl hinzufügen", + "xkcdpass_option_add_number_description": "Zufällige Zahl zur Passphrase hinzufügen", + "xkcdpass_option_number_position": "Zahlenposition", + "xkcdpass_option_number_position_description": "Wo die Zufallszahl platziert werden soll", + "xkcdpass_option_number_position_choice_beginning": "Am Anfang", + "xkcdpass_option_number_position_choice_end": "Am Ende", + "xkcdpass_option_number_position_choice_random": "Zufällige Position", + "xkcdpass_option_ai_provider_choice_openai": "OpenAI", + "xkcdpass_option_ai_provider_choice_claude": "Claude", + "xkcdpass_option_ai_provider_choice_gemini": "Gemini", + "xkcdpass_option_ai_provider_choice_perplexity": "Perplexity", + "pwgen_option_type": "Längenvoreinstellung", + "pwgen_option_type_description": "Optionale Längenvoreinstellung. Wenn 8/12/16 Zeichen gewählt sind, überschreibt sie den obigen Längenwert.", + "pwgen_option_type_choice_8-char": "8 Zeichen", + "pwgen_option_type_choice_12-char": "12 Zeichen", + "pwgen_option_type_choice_16-char": "16 Zeichen", + "passkey_option_syllables_description": "Anzahl der aussprachefähigen Silben im Passkey", + "phrase-abbreviator_option_sentence": "Satz", + "phrase-abbreviator_option_sentence_description": "Vom Benutzer eingegebener Satz (mindestens 8 Wörter, muss mit Großbuchstaben beginnen)", + "phrase-abbreviator_option_character_extraction": "Zeichenerfassung", + "phrase-abbreviator_option_character_extraction_description": "Methode zum Extrahieren von Zeichen aus jedem Wort", + "phrase-abbreviator_option_character_extraction_choice_single": "Nur erster Buchstabe", + "phrase-abbreviator_option_character_extraction_choice_dual": "Erster Buchstabe + nächster Vokal/Konsonant", + "phrase-abbreviator_option_language": "Sprache", + "phrase-abbreviator_option_language_description": "Sprache für Zahlwortkonvertierung", + "phrase-abbreviator_option_language_choice_en": "Englisch", + "phrase-abbreviator_option_language_choice_de": "Deutsch", + "phrase-abbreviator_option_language_choice_de_CH": "Schwyzerdütsch", + "phrase-abbreviator_option_language_choice_fr": "Französisch", + "phrase-abbreviator_option_language_choice_it": "Italienisch", + "phrase-abbreviator_option_language_choice_es": "Spanisch", + "phrase-abbreviator_option_language_choice_pt": "Portugiesisch", + "phrase-abbreviator_option_language_choice_ja": "Japanisch", + "phrase-abbreviator_option_language_choice_zh": "Chinesisch", + "phrase-abbreviator_option_add_number": "Zahl hinzufügen", + "phrase-abbreviator_option_add_number_description": "Zufällige Ziffern zum Passwort hinzufügen", + "phrase-abbreviator_option_number_digits": "Ziffernanzahl", + "phrase-abbreviator_option_number_digits_description": "Wie viele zufällige Ziffern hinzugefügt werden sollen (1-4)", + "phrase-abbreviator_option_number_position": "Zahlenposition", + "phrase-abbreviator_option_number_position_description": "Zahl vor oder nach dem Passwort platzieren", + "phrase-abbreviator_option_number_position_choice_prepend": "Vorher", + "phrase-abbreviator_option_number_position_choice_append": "Danach", + "phrase-abbreviator_option_ai_provider_choice_openai": "OpenAI", + "phrase-abbreviator_option_ai_provider_choice_claude": "Claude", + "phrase-abbreviator_option_ai_provider_choice_gemini": "Gemini", + "phrase-abbreviator_option_ai_provider_choice_perplexity": "Perplexity", + "phrase-abbreviator_option_ai_model_choice_gpt-3.5-turbo": "GPT-3.5 Turbo", + "phrase-abbreviator_option_ai_model_choice_gpt-4": "GPT-4", + "phrase-abbreviator_option_ai_model_choice_gpt-4-turbo": "GPT-4 Turbo", + "phrase-abbreviator_option_ai_model_choice_gpt-4o": "GPT-4 Omni", + "collapse_group_basic": "Basisoptionen", + "collapse_group_advanced": "Erweiterte Optionen", + "collapse_group_ai": "KI-Funktionen", + "collapse_group_expert": "Expertenoptionen", + "collapse_group_character_set": "Zeichensatz", + "copied": "Kopiert", + "pwgen_option_type_choice_custom": "Längeneinstellung verwenden", + "roulette": "Roulette", + "stop": "Stopp", + "roulette_interval": "Intervall (s)", + "roulette_slow_down": "Intervall erhöhen (langsamer)", + "roulette_speed_up": "Intervall verringern (schneller)" +} diff --git a/locales/de_CH.json b/locales/de_CH.json new file mode 100644 index 0000000..84b85d6 --- /dev/null +++ b/locales/de_CH.json @@ -0,0 +1,223 @@ +{ + "api_documentation": "API-Dokumentation", + "app_title": "Passwort-Generator", + "close": "Schliessen", + "copied_to_clipboard": "I d'Zwüscheablag kopiert!", + "copy": "Kopierä", + "copy_failed": "Kopierä fählgschlage", + "count": "Azahl", + "deutsch": "Deutsch", + "dice_rolls": "Würfelwürf", + "diceware_badge": "Sicherheits-Fokus", + "diceware_description": "Authentischi EFF Diceware-Methode mit kryptographisch sicherä Würfelwürf för maximali Sicherheit", + "diceware_option_show_dice_rolls": "Show Dice Rolls", + "diceware_option_show_dice_rolls_description": "Educational: display the dice rolls used to select each word", + "diceware_option_uppercase_first": "Capitalize First Word", + "diceware_option_uppercase_first_description": "Capitalize only the first word (traditional Diceware style)", + "diceware_option_words": "Words", + "diceware_option_words_description": "Minimum 6 words recommended for security (77.5 bits entropy)", + "diceware_title": "Diceware", + "english": "Englisch", + "entropy": "Entropie", + "length": "Länge", + "details": "Details", + "security_level": "Sicherheitsstufe", + "very_strong": "Sehr stark", + "strong": "Stark", + "adequate": "Ausreichend", + "weak": "Schwach", + "very_weak": "Sehr schwach", + "chars": "Zeichen", + "error_generating_passwords": "Fähler bim Generierä vo dä Passwörter", + "espanol": "Español", + "footer_text": "Footertext", + "francais": "Français", + "generate": "Generierä", + "generating": "Generierä...", + "high-entropy_description": "Kryptographisch sicheri Zuefallspasswörter mit maximalär Entropie", + "high-entropy_option_include_lowercase": "Include Lowercase", + "high-entropy_option_include_numbers": "Include Numbers", + "high-entropy_option_include_symbols": "Include Symbols", + "high-entropy_option_include_uppercase": "Include Uppercase", + "high-entropy_option_length": "Length", + "high-entropy_title": "High Entropy", + "info_spaces_replaced_with_underscores": "Leerziiche in gwählte Wörter werde dur Unterstrich (_) ersetzt.", + "info_words_with_spaces_excluded": "Wörter mit Leerziiche werde vo de Uswahl usgschlosse.", + "italiano": "Italiano", + "language": "Sprach:", + "loading_generators": "Generatorä wärded glade", + "loading_password_generators": "Passwort-Generatorä wärded glade...", + "native_group_explanation": "Native Uswahloptionä vom PwGen-Generator für verständlichi Passwörter.", + "native_pwgen": "Native Optionen", + "no_spaces_in_separator": "Kei Leerziiche im Trennzeiche verwende, wenn d Leerziichebehandlig uf „ändere“ oder „überspringe“ gsetzt isch.", + "passkey_description": "Apple-Style ussprechbari Passwörter mit integriertene Zeichenersetzige", + "passkey_option_syllables": "Syllables", + "passkey_title": "Passkey", + "password_generator": "Passwort-Generator", + "php_fallback": "PHP-Fallback-Code, wenn native pwgen nöd verfügbar isch.", + "portugues": "Portugiesisch", + "pwgen_badge": "Verbessert", + "pwgen_description": "Klassischi pwgen-Style Passwörter mit läsbari Muschter", + "pwgen_option_include_capitals": "Grossbuchstäbe einbeziehe", + "pwgen_option_include_capitals_description": "Generierti Passwörter enthalte Grossbuchstäbe.", + "pwgen_option_include_numbers": "Zahle einbeziehe", + "pwgen_option_include_numbers_description": "Generierti Passwörter enthalte Zifferä.", + "pwgen_option_length": "Länge", + "pwgen_option_length_description": "Total Passwortlänge inklusive Trennzeiche (mindescht 4 Zeichen)", + "pwgen_option_no_ambiguous": "Kei mehrdeutigi Zeichen", + "pwgen_option_no_ambiguous_description": "Zeiche wie 0, O, l, 1 usw. usschliesse, damit sie besser lesbar sind", + "pwgen_option_pattern_complexity": "Komplexes Muster", + "pwgen_option_pattern_complexity_description": "Steuert d Komplexität vo de generierte Muster.", + "pwgen_option_pattern_complexity_list_balanced": "Ausgewogene Komplexität", + "pwgen_option_pattern_complexity_list_complex": "Komplexi Muster", + "pwgen_option_pattern_complexity_list_simple": "Einfachi Muster", + "pwgen_option_secure_mode": "Sicherer Modus", + "pwgen_option_secure_mode_description": "Vollständig zufälligi Passwörter statt verständlichi Wörter generiere", + "pwgen_option_separator": "Trennzeiche", + "pwgen_option_separator_description": "Zeichen, mit dene Silbe getrennt werde. Wenn mehre Zeichen definiert sind, werde si dur zufällig gwählti Zeichen getrennt. Wenn leer, findet kei Trennung statt.", + "pwgen_option_syllable_count": "Silbezahl", + "pwgen_option_syllable_count_description": "Zahl vo de zu generierende Silbe (nur mit Trennzeiche verwendet)", + "pwgen_title": "PWGen", + "results": "Resultate", + "schwyzerduetsch": "Schwizerdütsch", + "secure_mode_disables_syllable_separation": "Sicherer Modus deaktiviert d Silbe-Trennung.", + "separator_method_info": "Info zur Trennmethode", + "single_space_allowed": "Einzel Leerziiche erlaubt", + "success": "Erfolg", + "syllable_group_explanation": "Erklärig zu Silbe", + "syllable_length_too_short": "Silbenlänge z kurz", + "syllable_length_very_long": "Silbenlänge sehr lang", + "warning_short_word_limits_reduces_choices": "Warnig: churi Wortlimit reducere d Uswahl", + "warning_short_words_reduce_memorability": "Warnig: churi Wörter verringe d Merkbarkeit", + "xkcdpass_badge": "Märkbarkeits-Fokus", + "xkcdpass_description": "xkcdpass-Beschriibig", + "xkcdpass_option_addNumber": "Add Number", + "xkcdpass_option_max_word_length": "Maximal Längi", + "xkcdpass_option_max_word_length_description": "0 = no limit, >0 = maximum characters per word", + "xkcdpass_option_numberPosition": "Number Position", + "xkcdpass_option_numberPosition_list_beginning": "Am Afang", + "xkcdpass_option_numberPosition_list_end": "Am Ente", + "xkcdpass_option_numberPosition_list_random": "Zufälligi Position", + "xkcdpass_option_separator": "Trennzeiche", + "xkcdpass_option_separator_description": "Single character or character set (random selection). Spaces excluded from multi-character sets.", + "xkcdpass_option_space_handling": "Leerziiche behandle", + "xkcdpass_option_space_handling_description": "Behandlig vo Wörter mit Zwüschehräum", + "xkcdpass_option_space_handling_list_allow": "Erlaube (Leerziiche behalte)", + "xkcdpass_option_space_handling_list_modify": "Ändere (dur _ ersetze)", + "xkcdpass_option_space_handling_list_skip": "Überspringe (nit wähle)", + "xkcdpass_option_wordlist": "Wörterliste", + "xkcdpass_option_words": "Wörter", + "xkcdpass_option_words_description": "Number of words (minimal 2)", + "xkcdpass_title": "XKCD Pass", + "phraseabbreviator_number_zero": "null", + "phraseabbreviator_number_one": "eins", + "phraseabbreviator_number_two": "zwei", + "phraseabbreviator_number_three": "drei", + "phraseabbreviator_number_four": "vier", + "phraseabbreviator_number_five": "fünf", + "phraseabbreviator_number_six": "sechs", + "phraseabbreviator_number_seven": "sieben", + "phraseabbreviator_number_eight": "acht", + "phraseabbreviator_number_nine": "neun", + "phraseabbreviator_number_ten": "zehn", + "phraseabbreviator_number_eleven": "elf", + "phraseabbreviator_number_twelve": "zwölf", + "phraseabbreviator_number_thirteen": "dreizehn", + "phraseabbreviator_number_fourteen": "vierzehn", + "phraseabbreviator_number_fifteen": "fünfzehn", + "phraseabbreviator_number_sixteen": "sechzehn", + "phraseabbreviator_number_seventeen": "siebzehn", + "phraseabbreviator_number_eighteen": "achtzehn", + "phraseabbreviator_number_nineteen": "neunzehn", + "phraseabbreviator_number_twenty": "zwanzig", + "xkcdpass_option_use_ai_wordlist": "KI-Wörterliste verwende", + "xkcdpass_option_use_ai_wordlist_description": "Erzeig eine personalisierte Wörterliste mit em KI-Modell", + "xkcdpass_option_ai_wordlist_prompt": "KI-Wörterliste-Prompt", + "xkcdpass_option_ai_wordlist_prompt_description": "Vervollständigi de Prompt: \"Erstell e List vo X Wörter mit mindescht 5 Zeichen, wo...\"", + "xkcdpass_option_ai_provider": "KI-Anbieter", + "xkcdpass_option_ai_provider_description": "Welcher LLM-Anbieter verwendet werde soll", + "phrase-abbreviator_option_use_ai_sentence": "KI-Satz verwende", + "phrase-abbreviator_option_use_ai_sentence_description": "Lass d KI en Satz us dim Prompt generiere", + "phrase-abbreviator_option_ai_prompt": "KI-Prompt", + "phrase-abbreviator_option_ai_prompt_description": "Prompt für d KI, um en einprägsame Satz z generiere (mindescht 12 Wörter)", + "phrase-abbreviator_option_ai_provider": "KI-Anbieter", + "phrase-abbreviator_option_ai_provider_description": "Welcher LLM-Anbieter für d Satzgenerierig verwendet werde soll", + "phrase-abbreviator_option_ai_model": "KI-Modell", + "phrase-abbreviator_option_ai_model_description": "Welches KI-Modell verwendet werde soll", + "high-entropy_option_length_description": "Total Passwortlänge", + "high-entropy_option_include_uppercase_description": "Grossbuchstaabe einbeziege (A-Z)", + "high-entropy_option_include_lowercase_description": "Chliibuechsstaabe einbeziege (a-z)", + "high-entropy_option_include_numbers_description": "Zifferä einbeziege (0-9)", + "high-entropy_option_include_symbols_description": "Sonderzeiche einbeziege (z. B. !@#$%)", + "xkcdpass_option_wordlist_description": "Wörterliste für d Passphrase", + "xkcdpass_option_wordlist_choice_en": "Englisch", + "xkcdpass_option_wordlist_choice_de": "Deutsch", + "xkcdpass_option_wordlist_choice_fr": "Französisch", + "xkcdpass_option_wordlist_choice_it": "Italienisch", + "xkcdpass_option_wordlist_choice_es": "Spanisch", + "xkcdpass_option_space_handling_choice_allow": "Erlaube", + "xkcdpass_option_space_handling_choice_skip": "Überspringe", + "xkcdpass_option_space_handling_choice_modify": "Ändere", + "xkcdpass_option_add_number": "Zahl hinzuefüege", + "xkcdpass_option_add_number_description": "Zufälligi Zahl zur Passphrase hinzuefüege", + "xkcdpass_option_number_position": "Zahlposition", + "xkcdpass_option_number_position_description": "Wo d zufälligi Zahl platziert werde söll", + "xkcdpass_option_number_position_choice_beginning": "Am Afang", + "xkcdpass_option_number_position_choice_end": "Am Ände", + "xkcdpass_option_number_position_choice_random": "Zufälligi Position", + "xkcdpass_option_ai_provider_choice_openai": "OpenAI", + "xkcdpass_option_ai_provider_choice_claude": "Claude", + "xkcdpass_option_ai_provider_choice_gemini": "Gemini", + "xkcdpass_option_ai_provider_choice_perplexity": "Perplexity", + "pwgen_option_type": "Längi-Voreistellig", + "pwgen_option_type_description": "Optionali Längi-Voreistellig. Wenn 8/12/16 Zeiche gwählt sind, überschriibt sie de obigi Längiwärt.", + "pwgen_option_type_choice_8-char": "8 Zeichen", + "pwgen_option_type_choice_12-char": "12 Zeichen", + "pwgen_option_type_choice_16-char": "16 Zeichen", + "passkey_option_syllables_description": "Zahl vo de verständliche Silbe im Passkey", + "phrase-abbreviator_option_sentence": "Satz", + "phrase-abbreviator_option_sentence_description": "Vom Benutzer igäh Satz (mindescht 8 Wörter, muess mit Grossbuächstaabe afange)", + "phrase-abbreviator_option_character_extraction": "Zeichenextraktion", + "phrase-abbreviator_option_character_extraction_description": "Methode zum Extrahiere vo Zeiche us jedem Wort", + "phrase-abbreviator_option_character_extraction_choice_single": "Nur erster Buächstab", + "phrase-abbreviator_option_character_extraction_choice_dual": "Erster Buächstab + nächster Vokal/Konsonant", + "phrase-abbreviator_option_language": "Sproch", + "phrase-abbreviator_option_language_description": "Sproch für Ziffere-Wort-Umsetzung", + "phrase-abbreviator_option_language_choice_en": "Englisch", + "phrase-abbreviator_option_language_choice_de": "Deutsch", + "phrase-abbreviator_option_language_choice_de_CH": "Schwyzerdütsch", + "phrase-abbreviator_option_language_choice_fr": "Französisch", + "phrase-abbreviator_option_language_choice_it": "Italienisch", + "phrase-abbreviator_option_language_choice_es": "Spanisch", + "phrase-abbreviator_option_language_choice_pt": "Portugiesisch", + "phrase-abbreviator_option_language_choice_ja": "Japanisch", + "phrase-abbreviator_option_language_choice_zh": "Chinesisch", + "phrase-abbreviator_option_add_number": "Zahl hinzuefüege", + "phrase-abbreviator_option_add_number_description": "Zufälligi Zifferä zum Passwort hinzuefüege", + "phrase-abbreviator_option_number_digits": "Zifferäzahl", + "phrase-abbreviator_option_number_digits_description": "Wieviel zufälligi Zifferä solle hinzugefügt werde (1-4)", + "phrase-abbreviator_option_number_position": "Zahlposition", + "phrase-abbreviator_option_number_position_description": "Zahl vor oder nach em Passwort platziere", + "phrase-abbreviator_option_number_position_choice_prepend": "Vorher", + "phrase-abbreviator_option_number_position_choice_append": "Darnach", + "phrase-abbreviator_option_ai_provider_choice_openai": "OpenAI", + "phrase-abbreviator_option_ai_provider_choice_claude": "Claude", + "phrase-abbreviator_option_ai_provider_choice_gemini": "Gemini", + "phrase-abbreviator_option_ai_provider_choice_perplexity": "Perplexity", + "phrase-abbreviator_option_ai_model_choice_gpt-3.5-turbo": "GPT-3.5 Turbo", + "phrase-abbreviator_option_ai_model_choice_gpt-4": "GPT-4", + "phrase-abbreviator_option_ai_model_choice_gpt-4-turbo": "GPT-4 Turbo", + "phrase-abbreviator_option_ai_model_choice_gpt-4o": "GPT-4 Omni", + "collapse_group_basic": "Basisoptione", + "collapse_group_advanced": "Erwiitereti Optione", + "collapse_group_ai": "KI-Funktione", + "collapse_group_expert": "Experte-Optione", + "collapse_group_character_set": "Zeichesatz", + "copied": "Kopiert", + "pwgen_option_type_choice_custom": "Längi-Istellig verwände", + "roulette": "Roulette", + "stop": "Stopp", + "roulette_interval": "Intervall (s)", + "roulette_slow_down": "Intervall erhöche (langsamer)", + "roulette_speed_up": "Intervall verringerä (schneller)" +} diff --git a/locales/en.json b/locales/en.json new file mode 100644 index 0000000..a4cf4ba --- /dev/null +++ b/locales/en.json @@ -0,0 +1,223 @@ +{ + "api_documentation": "API Documentation", + "app_title": "Password Generator", + "close": "close", + "copied_to_clipboard": "Copied to clipboard!", + "copy": "Copy", + "copy_failed": "Copy failed", + "count": "Count", + "deutsch": "Deutsch", + "dice_rolls": "Dice Rolls", + "diceware_badge": "Security Focus", + "diceware_description": "Authentic EFF Diceware method using cryptographically secure dice rolls for maximum security", + "diceware_option_show_dice_rolls": "Show Dice Rolls", + "diceware_option_show_dice_rolls_description": "Educational: display the dice rolls used to select each word", + "diceware_option_uppercase_first": "Capitalize First Word", + "diceware_option_uppercase_first_description": "Capitalize only the first word (traditional Diceware style)", + "diceware_option_words": "Words", + "diceware_option_words_description": "Minimum 6 words recommended for recommended security.", + "diceware_title": "Diceware", + "english": "English", + "entropy": "Entropy", + "length": "Length", + "details": "Details", + "security_level": "Security level", + "very_strong": "Very strong", + "strong": "Strong", + "adequate": "Adequate", + "weak": "Weak", + "very_weak": "Very weak", + "chars": "chars", + "error_generating_passwords": "Error generating passwords", + "espanol": "Español", + "footer_text": "A tool to generate secure password with various algorithms. Source code available on GitHub.", + "francais": "Français", + "generate": "Generate", + "generating": "Generating …", + "high-entropy_description": "Cryptographically secure random passwords with maximum entropy", + "high-entropy_option_include_lowercase": "Include Lowercase", + "high-entropy_option_include_numbers": "Include Numbers", + "high-entropy_option_include_symbols": "Include Symbols", + "high-entropy_option_include_uppercase": "Include Uppercase", + "high-entropy_option_length": "Length", + "high-entropy_title": "High Entropy", + "info_spaces_replaced_with_underscores": "Spaces in selected words are replaced with underscores (_).", + "info_words_with_spaces_excluded": "Words containing spaces are excluded from selection.", + "italiano": "Italiano", + "language": "Language:", + "loading_generators": "Loading generators …", + "loading_password_generators": "Loading password generators …", + "native_group_explanation": "PwGen native generator's options for generating pronounceable passwords.", + "native_pwgen": "Native Options", + "no_spaces_in_separator": "Don't use spaces in the separator when space handling is set to 'modify' or 'skip'.", + "passkey_description": "Apple-style pronounceable passwords with integrated character substitutions", + "passkey_option_syllables": "Syllables", + "passkey_title": "Passkey", + "password_generator": "Password Generator", + "php_fallback": "Fallback code in PHP when native pwgen is not available.", + "portugues": "Portugues", + "pwgen_badge": "Enhanced", + "pwgen_description": "Classic pwgen-style passwords with readable patterns", + "pwgen_option_include_capitals": "Include Capitals", + "pwgen_option_include_capitals_description": "Generated passwords will contain uppercase letters.", + "pwgen_option_include_numbers": "Include Numbers", + "pwgen_option_include_numbers_description": "Generated passwords will contain digits.", + "pwgen_option_length": "Length", + "pwgen_option_length_description": "Total password length including separators (minimum 4 characters)", + "pwgen_option_no_ambiguous": "No Ambiguous Characters", + "pwgen_option_no_ambiguous_description": "Exclude characters like 0, O, l, 1, etc. to improve readability", + "pwgen_option_pattern_complexity": "Complex Pattern", + "pwgen_option_pattern_complexity_description": "Control the complexity of generated patterns.", + "pwgen_option_pattern_complexity_list_balanced": "Balanced complexity", + "pwgen_option_pattern_complexity_list_complex": "Complex patterns", + "pwgen_option_pattern_complexity_list_simple": "Simple patterns", + "pwgen_option_secure_mode": "Secure Mode", + "pwgen_option_secure_mode_description": "Generate fully random passwords instead of pronounceable ones", + "pwgen_option_separator": "Separator", + "pwgen_option_separator_description": "Character(s) to separate syllables. If multiple characters are defined, parts are separate by a randomly selected character. If this is empty, no separation is done.", + "pwgen_option_syllable_count": "Syllable Count", + "pwgen_option_syllable_count_description": "Number of syllables to generate (only used with separator)", + "pwgen_title": "PwGen", + "results": "Results", + "schwyzerduetsch": "Schwyzerdütsch", + "secure_mode_disables_syllable_separation": "Secure mode disables syllable separation.", + "separator_method_info": "Separator method info", + "single_space_allowed": "Single Space Allowed", + "success": "Success", + "syllable_group_explanation": "syllable_group_explanation", + "syllable_length_too_short": "syllable_length_too_short", + "syllable_length_very_long": "syllable_length_very_long", + "warning_short_word_limits_reduces_choices": "warning_short_word_limits_reduces_choices", + "warning_short_words_reduce_memorability": "warning_short_words_reduce_memorability", + "xkcdpass_badge": "Memorability Focus", + "xkcdpass_description": "Memorable passphrases using word combinations with enhanced filtering and separator options", + "xkcdpass_option_addNumber": "Add Number", + "xkcdpass_option_max_word_length": "Max Word Length", + "xkcdpass_option_max_word_length_description": "0 = no limit, >0 = maximum characters per word", + "xkcdpass_option_numberPosition": "Number Position", + "xkcdpass_option_numberPosition_list_beginning": "At Beginning", + "xkcdpass_option_numberPosition_list_end": "At End", + "xkcdpass_option_numberPosition_list_random": "Random Position", + "xkcdpass_option_separator": "Separator", + "xkcdpass_option_separator_description": "Single character or character set (random selection). Spaces excluded from multi-character sets.", + "xkcdpass_option_space_handling": "Space Handling", + "xkcdpass_option_space_handling_description": "How to handle words containing spaces", + "xkcdpass_option_space_handling_list_allow": "Allow (keep spaces)", + "xkcdpass_option_space_handling_list_modify": "Modify (replace with _)", + "xkcdpass_option_space_handling_list_skip": "Skip (don\"t select)", + "xkcdpass_option_wordlist": "wordlist", + "xkcdpass_option_words": "Words", + "xkcdpass_option_words_description": "Number of words (minimal 2)", + "xkcdpass_title": "xkcdpass", + "phraseabbreviator_number_zero": "zero", + "phraseabbreviator_number_one": "one", + "phraseabbreviator_number_two": "two", + "phraseabbreviator_number_three": "three", + "phraseabbreviator_number_four": "four", + "phraseabbreviator_number_five": "five", + "phraseabbreviator_number_six": "six", + "phraseabbreviator_number_seven": "seven", + "phraseabbreviator_number_eight": "eight", + "phraseabbreviator_number_nine": "nine", + "phraseabbreviator_number_ten": "ten", + "phraseabbreviator_number_eleven": "eleven", + "phraseabbreviator_number_twelve": "twelve", + "phraseabbreviator_number_thirteen": "thirteen", + "phraseabbreviator_number_fourteen": "fourteen", + "phraseabbreviator_number_fifteen": "fifteen", + "phraseabbreviator_number_sixteen": "sixteen", + "phraseabbreviator_number_seventeen": "seventeen", + "phraseabbreviator_number_eighteen": "eighteen", + "phraseabbreviator_number_nineteen": "nineteen", + "phraseabbreviator_number_twenty": "twenty", + "xkcdpass_option_use_ai_wordlist": "Use AI Wordlist", + "xkcdpass_option_use_ai_wordlist_description": "Generate a custom wordlist using an AI model", + "xkcdpass_option_ai_wordlist_prompt": "AI Wordlist Prompt", + "xkcdpass_option_ai_wordlist_prompt_description": "Complete the prompt: \"Create a list of X words of at least 5 characters, which...\"", + "xkcdpass_option_ai_provider": "AI Provider", + "xkcdpass_option_ai_provider_description": "Which LLM provider to use", + "phrase-abbreviator_option_use_ai_sentence": "Use AI Sentence", + "phrase-abbreviator_option_use_ai_sentence_description": "Let AI generate a sentence from your prompt", + "phrase-abbreviator_option_ai_prompt": "AI Prompt", + "phrase-abbreviator_option_ai_prompt_description": "Prompt for AI to generate a memorable sentence (minimum 12 words)", + "phrase-abbreviator_option_ai_provider": "AI Provider", + "phrase-abbreviator_option_ai_provider_description": "Which LLM provider to use for sentence generation", + "phrase-abbreviator_option_ai_model": "AI Model", + "phrase-abbreviator_option_ai_model_description": "Which AI model to use", + "high-entropy_option_length_description": "Total length of the generated password", + "high-entropy_option_include_uppercase_description": "Include uppercase letters (A-Z)", + "high-entropy_option_include_lowercase_description": "Include lowercase letters (a-z)", + "high-entropy_option_include_numbers_description": "Include numbers (0-9)", + "high-entropy_option_include_symbols_description": "Include symbols (e.g., !@#$%)", + "xkcdpass_option_wordlist_description": "Wordlist to use for generating the passphrase", + "xkcdpass_option_wordlist_choice_en": "English", + "xkcdpass_option_wordlist_choice_de": "Deutsch", + "xkcdpass_option_wordlist_choice_fr": "Français", + "xkcdpass_option_wordlist_choice_it": "Italiano", + "xkcdpass_option_wordlist_choice_es": "Español", + "xkcdpass_option_space_handling_choice_allow": "Allow", + "xkcdpass_option_space_handling_choice_skip": "Skip", + "xkcdpass_option_space_handling_choice_modify": "Modify", + "xkcdpass_option_add_number": "Add Number", + "xkcdpass_option_add_number_description": "Add random number to the passphrase", + "xkcdpass_option_number_position": "Number Position", + "xkcdpass_option_number_position_description": "Where to place the random number", + "xkcdpass_option_number_position_choice_beginning": "At Beginning", + "xkcdpass_option_number_position_choice_end": "At End", + "xkcdpass_option_number_position_choice_random": "Random Position", + "xkcdpass_option_ai_provider_choice_openai": "OpenAI", + "xkcdpass_option_ai_provider_choice_claude": "Claude", + "xkcdpass_option_ai_provider_choice_gemini": "Gemini", + "xkcdpass_option_ai_provider_choice_perplexity": "Perplexity", + "pwgen_option_type": "Length Preset", + "pwgen_option_type_description": "Optional preset length. If set to 8/12/16 characters, it overrides the Length value above.", + "pwgen_option_type_choice_8-char": "8 characters", + "pwgen_option_type_choice_12-char": "12 characters", + "pwgen_option_type_choice_16-char": "16 characters", + "passkey_option_syllables_description": "Number of pronounceable syllables in the passkey", + "phrase-abbreviator_option_sentence": "Sentence", + "phrase-abbreviator_option_sentence_description": "User-supplied sentence (minimum 8 words, must start with capital letter)", + "phrase-abbreviator_option_character_extraction": "Character Extraction", + "phrase-abbreviator_option_character_extraction_description": "Method for extracting characters from each word", + "phrase-abbreviator_option_character_extraction_choice_single": "First letter only", + "phrase-abbreviator_option_character_extraction_choice_dual": "First letter + next vowel/consonant", + "phrase-abbreviator_option_language": "Language", + "phrase-abbreviator_option_language_description": "Language for number word conversion", + "phrase-abbreviator_option_language_choice_en": "English", + "phrase-abbreviator_option_language_choice_de": "Deutsch", + "phrase-abbreviator_option_language_choice_de_CH": "Schwyzerdütsch", + "phrase-abbreviator_option_language_choice_fr": "Français", + "phrase-abbreviator_option_language_choice_it": "Italiano", + "phrase-abbreviator_option_language_choice_es": "Español", + "phrase-abbreviator_option_language_choice_pt": "Português", + "phrase-abbreviator_option_language_choice_ja": "日本語", + "phrase-abbreviator_option_language_choice_zh": "中文", + "phrase-abbreviator_option_add_number": "Add Number", + "phrase-abbreviator_option_add_number_description": "Add random digits to the password", + "phrase-abbreviator_option_number_digits": "Digit Count", + "phrase-abbreviator_option_number_digits_description": "How many random digits to add (1-4)", + "phrase-abbreviator_option_number_position": "Number Position", + "phrase-abbreviator_option_number_position_description": "Place number before or after the password", + "phrase-abbreviator_option_number_position_choice_prepend": "Before", + "phrase-abbreviator_option_number_position_choice_append": "After", + "phrase-abbreviator_option_ai_provider_choice_openai": "OpenAI", + "phrase-abbreviator_option_ai_provider_choice_claude": "Claude", + "phrase-abbreviator_option_ai_provider_choice_gemini": "Gemini", + "phrase-abbreviator_option_ai_provider_choice_perplexity": "Perplexity", + "phrase-abbreviator_option_ai_model_choice_gpt-3.5-turbo": "GPT-3.5 Turbo", + "phrase-abbreviator_option_ai_model_choice_gpt-4": "GPT-4", + "phrase-abbreviator_option_ai_model_choice_gpt-4-turbo": "GPT-4 Turbo", + "phrase-abbreviator_option_ai_model_choice_gpt-4o": "GPT-4 Omni", + "collapse_group_basic": "Basic Options", + "collapse_group_advanced": "Advanced Options", + "collapse_group_ai": "AI Features", + "collapse_group_expert": "Expert Options", + "collapse_group_character_set": "Character Set", + "copied": "Copied", + "pwgen_option_type_choice_custom": "Use length setting", + "roulette": "Roulette", + "stop": "Stop", + "roulette_interval": "Interval (s)", + "roulette_slow_down": "Increase interval (slower)", + "roulette_speed_up": "Decrease interval (faster)" +} diff --git a/locales/es.json b/locales/es.json new file mode 100644 index 0000000..da8563b --- /dev/null +++ b/locales/es.json @@ -0,0 +1,223 @@ +{ + "api_documentation": "Documentación de API", + "app_title": "app_title", + "close": "Cerrar", + "copied_to_clipboard": "Copied to clipboard!", + "copy": "Copiar", + "copy_failed": "Error al copiar", + "count": "Count", + "deutsch": "Deutsch", + "dice_rolls": "Lanzamientos de dados", + "diceware_badge": "Enfoque en seguridad", + "diceware_description": "diceware description", + "diceware_option_show_dice_rolls": "Show Dice Rolls", + "diceware_option_show_dice_rolls_description": "Educativo: muestra los lanzamientos de dados usados para seleccionar cada palabra", + "diceware_option_uppercase_first": "Capitalize First Word", + "diceware_option_uppercase_first_description": "Solo capitaliza la primera palabra (estilo Diceware tradicional)", + "diceware_option_words": "Words", + "diceware_option_words_description": "Se recomienda un mínimo de 6 palabras para mayor seguridad (77,5 bits de entropía).", + "diceware_title": "Diceware", + "english": "English", + "entropy": "Entropía", + "length": "Longitud", + "details": "Detalles", + "security_level": "Nivel de seguridad", + "very_strong": "Muy fuerte", + "strong": "Fuerte", + "adequate": "Adecuado", + "weak": "Débil", + "very_weak": "Muy débil", + "chars": "caracteres", + "error_generating_passwords": "Error al generar contraseñas", + "espanol": "Español", + "footer_text": "footer_text", + "francais": "Français", + "generate": "Generar", + "generating": "Generating...", + "high-entropy_description": "high-entropy description", + "high-entropy_option_include_lowercase": "Include Lowercase", + "high-entropy_option_include_numbers": "Include Numbers", + "high-entropy_option_include_symbols": "Include Symbols", + "high-entropy_option_include_uppercase": "Include Uppercase", + "high-entropy_option_length": "Length", + "high-entropy_title": "High Entropy", + "info_spaces_replaced_with_underscores": "Los espacios en las palabras seleccionadas se reemplazan con guiones bajos (_).", + "info_words_with_spaces_excluded": "Las palabras que contienen espacios se excluyen de la selección.", + "italiano": "Italiano", + "language": "Language:", + "loading_generators": "loading_generators", + "loading_password_generators": "Loading password generators...", + "native_group_explanation": "Opciones nativas del generador PwGen para crear contraseñas pronunciables.", + "native_pwgen": "Opciones nativas", + "no_spaces_in_separator": "No uses espacios en el separador cuando la gestión de espacios esté configurada como “modificar” o “omitir”.", + "passkey_description": "passkey description", + "passkey_option_syllables": "Syllables", + "passkey_title": "Passkey", + "password_generator": "Generador de contraseñas", + "php_fallback": "Código de respaldo en PHP cuando no está disponible pwgen nativo.", + "portugues": "Portugués", + "pwgen_badge": "Mejorado", + "pwgen_description": "pwgen description", + "pwgen_option_include_capitals": "Incluir mayúsculas", + "pwgen_option_include_capitals_description": "Las contraseñas generadas contendrán letras mayúsculas.", + "pwgen_option_include_numbers": "Incluir números", + "pwgen_option_include_numbers_description": "Las contraseñas generadas contendrán dígitos.", + "pwgen_option_length": "Longitud", + "pwgen_option_length_description": "Longitud total de la contraseña, incluidos los separadores (mínimo 4 caracteres)", + "pwgen_option_no_ambiguous": "Sin caracteres ambiguos", + "pwgen_option_no_ambiguous_description": "Excluye caracteres como 0, O, l, 1, etc. para mejorar la legibilidad", + "pwgen_option_pattern_complexity": "Patrón complejo", + "pwgen_option_pattern_complexity_description": "Controla la complejidad de los patrones generados.", + "pwgen_option_pattern_complexity_list_balanced": "Complejidad equilibrada", + "pwgen_option_pattern_complexity_list_complex": "Patrones complejos", + "pwgen_option_pattern_complexity_list_simple": "Patrones simples", + "pwgen_option_secure_mode": "Modo seguro", + "pwgen_option_secure_mode_description": "Genera contraseñas totalmente aleatorias en lugar de palabras pronunciables", + "pwgen_option_separator": "Separador", + "pwgen_option_separator_description": "Caracter(es) para separar sílabas. Si se definen varios, se separan con un carácter elegido aleatoriamente. Si está vacío, no se realiza ninguna separación.", + "pwgen_option_syllable_count": "Número de sílabas", + "pwgen_option_syllable_count_description": "Número de sílabas a generar (solo se usa con separador)", + "pwgen_title": "PWGen", + "results": "Resultados", + "schwyzerduetsch": "Schwyzerdütsch", + "secure_mode_disables_syllable_separation": "El modo seguro desactiva la separación por sílabas.", + "separator_method_info": "Información del método de separación", + "single_space_allowed": "Se permite un solo espacio", + "success": "Éxito", + "syllable_group_explanation": "Explicación de las sílabas", + "syllable_length_too_short": "La sílaba es demasiado corta", + "syllable_length_very_long": "La sílaba es muy larga", + "warning_short_word_limits_reduces_choices": "Advertencia: los límites cortos de palabras reducen las opciones", + "warning_short_words_reduce_memorability": "Advertencia: las palabras cortas reducen la memorización", + "xkcdpass_badge": "Enfoque en la memorización", + "xkcdpass_description": "xkcdpass description", + "xkcdpass_option_addNumber": "Add Number", + "xkcdpass_option_max_word_length": "Longitud máxima de palabra", + "xkcdpass_option_max_word_length_description": "0 = sin límite, >0 = máximo de caracteres por palabra", + "xkcdpass_option_numberPosition": "Number Position", + "xkcdpass_option_numberPosition_list_beginning": "Al principio", + "xkcdpass_option_numberPosition_list_end": "Al final", + "xkcdpass_option_numberPosition_list_random": "Posición aleatoria", + "xkcdpass_option_separator": "Separador", + "xkcdpass_option_separator_description": "Carácter único o conjunto de caracteres (selección aleatoria). Los espacios se excluyen en conjuntos de varios caracteres.", + "xkcdpass_option_space_handling": "Manejo de espacios", + "xkcdpass_option_space_handling_description": "Cómo manejar las palabras que contienen espacios", + "xkcdpass_option_space_handling_list_allow": "Permitir (mantener espacios)", + "xkcdpass_option_space_handling_list_modify": "Modificar (reemplazar con _)", + "xkcdpass_option_space_handling_list_skip": "Omitir (no seleccionar)", + "xkcdpass_option_wordlist": "Lista de palabras", + "xkcdpass_option_words": "Palabras", + "xkcdpass_option_words_description": "Número de palabras (mínimo 2)", + "xkcdpass_title": "XKCD Pass", + "phraseabbreviator_number_zero": "cero", + "phraseabbreviator_number_one": "uno", + "phraseabbreviator_number_two": "dos", + "phraseabbreviator_number_three": "tres", + "phraseabbreviator_number_four": "cuatro", + "phraseabbreviator_number_five": "cinco", + "phraseabbreviator_number_six": "seis", + "phraseabbreviator_number_seven": "siete", + "phraseabbreviator_number_eight": "ocho", + "phraseabbreviator_number_nine": "nueve", + "phraseabbreviator_number_ten": "diez", + "phraseabbreviator_number_eleven": "once", + "phraseabbreviator_number_twelve": "doce", + "phraseabbreviator_number_thirteen": "trece", + "phraseabbreviator_number_fourteen": "catorce", + "phraseabbreviator_number_fifteen": "quince", + "phraseabbreviator_number_sixteen": "dieciséis", + "phraseabbreviator_number_seventeen": "diecisiete", + "phraseabbreviator_number_eighteen": "dieciocho", + "phraseabbreviator_number_nineteen": "diecinueve", + "phraseabbreviator_number_twenty": "veinte", + "xkcdpass_option_use_ai_wordlist": "Usar lista de palabras con IA", + "xkcdpass_option_use_ai_wordlist_description": "Genera una lista de palabras personalizada con un modelo de IA", + "xkcdpass_option_ai_wordlist_prompt": "Indicador de lista de palabras de IA", + "xkcdpass_option_ai_wordlist_prompt_description": "Completa la instrucción: \"Crea una lista de X palabras de al menos 5 caracteres, que...\"", + "xkcdpass_option_ai_provider": "Proveedor de IA", + "xkcdpass_option_ai_provider_description": "Qué proveedor LLM usar", + "phrase-abbreviator_option_use_ai_sentence": "Usar frase de IA", + "phrase-abbreviator_option_use_ai_sentence_description": "Permite que la IA genere una frase a partir de tu instrucción", + "phrase-abbreviator_option_ai_prompt": "Indicador de IA", + "phrase-abbreviator_option_ai_prompt_description": "Instrucción para que la IA genere una frase memorable (mínimo 12 palabras)", + "phrase-abbreviator_option_ai_provider": "Proveedor de IA", + "phrase-abbreviator_option_ai_provider_description": "Qué proveedor LLM usar para generar la frase", + "phrase-abbreviator_option_ai_model": "Modelo de IA", + "phrase-abbreviator_option_ai_model_description": "Qué modelo de IA usar", + "high-entropy_option_length_description": "Total length of the generated password", + "high-entropy_option_include_uppercase_description": "Include uppercase letters (A-Z)", + "high-entropy_option_include_lowercase_description": "Include lowercase letters (a-z)", + "high-entropy_option_include_numbers_description": "Include numbers (0-9)", + "high-entropy_option_include_symbols_description": "Include symbols (e.g., !@#$%)", + "xkcdpass_option_wordlist_description": "Wordlist to use for generating the passphrase", + "xkcdpass_option_wordlist_choice_en": "English", + "xkcdpass_option_wordlist_choice_de": "Deutsch", + "xkcdpass_option_wordlist_choice_fr": "Français", + "xkcdpass_option_wordlist_choice_it": "Italiano", + "xkcdpass_option_wordlist_choice_es": "Español", + "xkcdpass_option_space_handling_choice_allow": "Permitir", + "xkcdpass_option_space_handling_choice_skip": "Omitir", + "xkcdpass_option_space_handling_choice_modify": "Modificar", + "xkcdpass_option_add_number": "Agregar número", + "xkcdpass_option_add_number_description": "Add random number to the passphrase", + "xkcdpass_option_number_position": "Posición del número", + "xkcdpass_option_number_position_description": "Where to place the random number", + "xkcdpass_option_number_position_choice_beginning": "Al principio", + "xkcdpass_option_number_position_choice_end": "Al final", + "xkcdpass_option_number_position_choice_random": "Posición aleatoria", + "xkcdpass_option_ai_provider_choice_openai": "OpenAI", + "xkcdpass_option_ai_provider_choice_claude": "Claude", + "xkcdpass_option_ai_provider_choice_gemini": "Gemini", + "xkcdpass_option_ai_provider_choice_perplexity": "Perplexity", + "pwgen_option_type": "Preajuste de longitud", + "pwgen_option_type_description": "Preajuste heredado de longitud opcional. Si se establece en 8/12/16 caracteres, sobrescribe el valor de Longitud de arriba.", + "pwgen_option_type_choice_8-char": "8 caracteres", + "pwgen_option_type_choice_12-char": "12 caracteres", + "pwgen_option_type_choice_16-char": "16 caracteres", + "passkey_option_syllables_description": "Number of pronounceable syllables in the passkey", + "phrase-abbreviator_option_sentence": "Frase", + "phrase-abbreviator_option_sentence_description": "User-supplied sentence (minimum 8 words, must start with capital letter)", + "phrase-abbreviator_option_character_extraction": "Extracción de caracteres", + "phrase-abbreviator_option_character_extraction_description": "Method for extracting characters from each word", + "phrase-abbreviator_option_character_extraction_choice_single": "Solo la primera letra", + "phrase-abbreviator_option_character_extraction_choice_dual": "Primera letra + siguiente vocal/consonante", + "phrase-abbreviator_option_language": "Idioma", + "phrase-abbreviator_option_language_description": "Language for number word conversion", + "phrase-abbreviator_option_language_choice_en": "English", + "phrase-abbreviator_option_language_choice_de": "Alemán", + "phrase-abbreviator_option_language_choice_de_CH": "Suizo alemán", + "phrase-abbreviator_option_language_choice_fr": "Francés", + "phrase-abbreviator_option_language_choice_it": "Italiano", + "phrase-abbreviator_option_language_choice_es": "Español", + "phrase-abbreviator_option_language_choice_pt": "Portugués", + "phrase-abbreviator_option_language_choice_ja": "Japonés", + "phrase-abbreviator_option_language_choice_zh": "Chino", + "phrase-abbreviator_option_add_number": "Agregar número", + "phrase-abbreviator_option_add_number_description": "Agregar dígitos aleatorios a la contraseña", + "phrase-abbreviator_option_number_digits": "Cantidad de dígitos", + "phrase-abbreviator_option_number_digits_description": "Cuántos dígitos aleatorios agregar (1-4)", + "phrase-abbreviator_option_number_position": "Posición del número", + "phrase-abbreviator_option_number_position_description": "Colocar el número antes o después de la contraseña", + "phrase-abbreviator_option_number_position_choice_prepend": "Antes", + "phrase-abbreviator_option_number_position_choice_append": "Después", + "phrase-abbreviator_option_ai_provider_choice_openai": "OpenAI", + "phrase-abbreviator_option_ai_provider_choice_claude": "Claude", + "phrase-abbreviator_option_ai_provider_choice_gemini": "Gemini", + "phrase-abbreviator_option_ai_provider_choice_perplexity": "Perplexity", + "phrase-abbreviator_option_ai_model_choice_gpt-3.5-turbo": "GPT-3.5 Turbo", + "phrase-abbreviator_option_ai_model_choice_gpt-4": "GPT-4", + "phrase-abbreviator_option_ai_model_choice_gpt-4-turbo": "GPT-4 Turbo", + "phrase-abbreviator_option_ai_model_choice_gpt-4o": "GPT-4 Omni", + "collapse_group_basic": "Opciones básicas", + "collapse_group_advanced": "Opciones avanzadas", + "collapse_group_ai": "Funciones de IA", + "collapse_group_expert": "Opciones expertas", + "collapse_group_character_set": "Conjunto de caracteres", + "copied": "Copiado", + "pwgen_option_type_choice_custom": "Usar ajuste de longitud", + "roulette": "Ruleta", + "stop": "Detener", + "roulette_interval": "Intervalo (s)", + "roulette_slow_down": "Aumentar intervalo (más lento)", + "roulette_speed_up": "Reducir intervalo (más rápido)" +} diff --git a/locales/fr.json b/locales/fr.json new file mode 100644 index 0000000..d1adcf3 --- /dev/null +++ b/locales/fr.json @@ -0,0 +1,223 @@ +{ + "api_documentation": "Documentation API", + "app_title": "app_title", + "close": "Fermer", + "copied_to_clipboard": "Copié dans le presse-papiers !", + "copy": "Copier", + "copy_failed": "Échec de la copie", + "count": "Nombre", + "deutsch": "Deutsch", + "dice_rolls": "Lancers de dés", + "diceware_badge": "Priorité à la sécurité", + "diceware_description": "Méthode EFF Diceware authentique utilisant des lancers de dés cryptographiquement sécurisés pour une sécurité maximale", + "diceware_option_show_dice_rolls": "Show Dice Rolls", + "diceware_option_show_dice_rolls_description": "Pédagogique : affiche les lancers de dés utilisés pour choisir chaque mot", + "diceware_option_uppercase_first": "Capitalize First Word", + "diceware_option_uppercase_first_description": "Met uniquement la première lettre en majuscule (style Diceware traditionnel)", + "diceware_option_words": "Words", + "diceware_option_words_description": "Au moins 6 mots recommandés pour une sécurité optimale (77,5 bits d’entropie).", + "diceware_title": "Diceware", + "english": "Anglais", + "entropy": "Entropie", + "length": "Longueur", + "details": "Détails", + "security_level": "Niveau de sécurité", + "very_strong": "Très fort", + "strong": "Fort", + "adequate": "Adéquat", + "weak": "Faible", + "very_weak": "Très faible", + "chars": "caractères", + "error_generating_passwords": "Erreur lors de la génération des mots de passe", + "espanol": "Español", + "footer_text": "footer_text", + "francais": "Français", + "generate": "Générer", + "generating": "Génération...", + "high-entropy_description": "Mots de passe aléatoires cryptographiquement sécurisés avec entropie maximale", + "high-entropy_option_include_lowercase": "Include Lowercase", + "high-entropy_option_include_numbers": "Include Numbers", + "high-entropy_option_include_symbols": "Include Symbols", + "high-entropy_option_include_uppercase": "Include Uppercase", + "high-entropy_option_length": "Length", + "high-entropy_title": "High Entropy", + "info_spaces_replaced_with_underscores": "Les espaces dans les mots sélectionnés sont remplacés par des traits de soulignement (_).", + "info_words_with_spaces_excluded": "Les mots contenant des espaces sont exclus de la sélection.", + "italiano": "Italiano", + "language": "Langue :", + "loading_generators": "loading_generators", + "loading_password_generators": "Chargement des générateurs de mots de passe...", + "native_group_explanation": "Options natives du générateur PwGen pour créer des mots de passe prononçables.", + "native_pwgen": "Options natives", + "no_spaces_in_separator": "N’utilisez pas d’espaces dans le séparateur lorsque le mode de traitement des espaces est défini sur « modifier » ou « ignorer ».", + "passkey_description": "Mots de passe prononçables de style Apple avec substitutions de caractères intégrées", + "passkey_option_syllables": "Syllables", + "passkey_title": "Passkey", + "password_generator": "Générateur de mots de passe", + "php_fallback": "Code de secours en PHP lorsque pwgen natif n’est pas disponible.", + "portugues": "Portugais", + "pwgen_badge": "Amélioré", + "pwgen_description": "Mots de passe de style pwgen classique avec motifs lisibles", + "pwgen_option_include_capitals": "Inclure les majuscules", + "pwgen_option_include_capitals_description": "Les mots de passe générés contiendront des lettres majuscules.", + "pwgen_option_include_numbers": "Inclure les chiffres", + "pwgen_option_include_numbers_description": "Les mots de passe générés contiendront des chiffres.", + "pwgen_option_length": "Longueur", + "pwgen_option_length_description": "Longueur totale du mot de passe, y compris les séparateurs (minimum 4 caractères)", + "pwgen_option_no_ambiguous": "Sans caractères ambiguës", + "pwgen_option_no_ambiguous_description": "Exclure des caractères comme 0, O, l, 1, etc. pour améliorer la lisibilité", + "pwgen_option_pattern_complexity": "Motif complexe", + "pwgen_option_pattern_complexity_description": "Contrôle la complexité des motifs générés.", + "pwgen_option_pattern_complexity_list_balanced": "Complexité équilibrée", + "pwgen_option_pattern_complexity_list_complex": "Motifs complexes", + "pwgen_option_pattern_complexity_list_simple": "Motifs simples", + "pwgen_option_secure_mode": "Mode sécurisé", + "pwgen_option_secure_mode_description": "Génère des mots de passe entièrement aléatoires au lieu de mots prononçables", + "pwgen_option_separator": "Séparateur", + "pwgen_option_separator_description": "Caractère(s) pour séparer les syllabes. Si plusieurs caractères sont définis, ils sont séparés par un caractère choisi au hasard. Si ce champ est vide, aucune séparation n’est effectuée.", + "pwgen_option_syllable_count": "Nombre de syllabes", + "pwgen_option_syllable_count_description": "Nombre de syllabes à générer (n’utilisé qu’avec un séparateur)", + "pwgen_title": "PWGen", + "results": "Résultats", + "schwyzerduetsch": "Schwyzerdütsch", + "secure_mode_disables_syllable_separation": "Le mode sécurisé désactive la séparation des syllabes.", + "separator_method_info": "Informations sur la méthode de séparation", + "single_space_allowed": "Un seul espace autorisé", + "success": "Succès", + "syllable_group_explanation": "Explication des syllabes", + "syllable_length_too_short": "La syllabe est trop courte", + "syllable_length_very_long": "La syllabe est très longue", + "warning_short_word_limits_reduces_choices": "Avertissement : les limites de mots courts réduisent les choix", + "warning_short_words_reduce_memorability": "Avertissement : les mots courts réduisent la mémorisation", + "xkcdpass_badge": "Priorité à la mémorisation", + "xkcdpass_description": "Description xkcdpass", + "xkcdpass_option_addNumber": "Add Number", + "xkcdpass_option_max_word_length": "Longueur maximale du mot", + "xkcdpass_option_max_word_length_description": "0 = pas de limite, >0 = nombre maximal de caractères par mot", + "xkcdpass_option_numberPosition": "Number Position", + "xkcdpass_option_numberPosition_list_beginning": "Au début", + "xkcdpass_option_numberPosition_list_end": "À la fin", + "xkcdpass_option_numberPosition_list_random": "Position aléatoire", + "xkcdpass_option_separator": "Séparateur", + "xkcdpass_option_separator_description": "Caractère unique ou ensemble de caractères (sélection aléatoire). Les espaces sont exclus des ensembles multi-caractères.", + "xkcdpass_option_space_handling": "Gestion des espaces", + "xkcdpass_option_space_handling_description": "Comment gérer les mots contenant des espaces", + "xkcdpass_option_space_handling_list_allow": "Autoriser (conserver les espaces)", + "xkcdpass_option_space_handling_list_modify": "Modifier (remplacer par _)", + "xkcdpass_option_space_handling_list_skip": "Ignorer (ne pas sélectionner)", + "xkcdpass_option_wordlist": "Liste de mots", + "xkcdpass_option_words": "Mots", + "xkcdpass_option_words_description": "Nombre de mots (minimum 2)", + "xkcdpass_title": "XKCD Pass", + "phraseabbreviator_number_zero": "zéro", + "phraseabbreviator_number_one": "un", + "phraseabbreviator_number_two": "deux", + "phraseabbreviator_number_three": "trois", + "phraseabbreviator_number_four": "quatre", + "phraseabbreviator_number_five": "cinq", + "phraseabbreviator_number_six": "six", + "phraseabbreviator_number_seven": "sept", + "phraseabbreviator_number_eight": "huit", + "phraseabbreviator_number_nine": "neuf", + "phraseabbreviator_number_ten": "dix", + "phraseabbreviator_number_eleven": "onze", + "phraseabbreviator_number_twelve": "douze", + "phraseabbreviator_number_thirteen": "treize", + "phraseabbreviator_number_fourteen": "quatorze", + "phraseabbreviator_number_fifteen": "quinze", + "phraseabbreviator_number_sixteen": "seize", + "phraseabbreviator_number_seventeen": "dix-sept", + "phraseabbreviator_number_eighteen": "dix-huit", + "phraseabbreviator_number_nineteen": "dix-neuf", + "phraseabbreviator_number_twenty": "vingt", + "xkcdpass_option_use_ai_wordlist": "Utiliser la liste de mots IA", + "xkcdpass_option_use_ai_wordlist_description": "Génère une liste de mots personnalisée avec un modèle d’IA", + "xkcdpass_option_ai_wordlist_prompt": "Invite de liste de mots IA", + "xkcdpass_option_ai_wordlist_prompt_description": "Complétez l’invite : \"Crée une liste de X mots d’au moins 5 caractères, qui...\"", + "xkcdpass_option_ai_provider": "Fournisseur IA", + "xkcdpass_option_ai_provider_description": "Quel fournisseur LLM utiliser", + "phrase-abbreviator_option_use_ai_sentence": "Utiliser une phrase IA", + "phrase-abbreviator_option_use_ai_sentence_description": "Permet à l’IA de générer une phrase à partir de votre invite", + "phrase-abbreviator_option_ai_prompt": "Invite IA", + "phrase-abbreviator_option_ai_prompt_description": "Invite pour que l’IA génère une phrase mémorable (minimum 12 mots)", + "phrase-abbreviator_option_ai_provider": "Fournisseur IA", + "phrase-abbreviator_option_ai_provider_description": "Quel fournisseur LLM utiliser pour la génération de phrases", + "phrase-abbreviator_option_ai_model": "Modèle IA", + "phrase-abbreviator_option_ai_model_description": "Quel modèle IA utiliser", + "high-entropy_option_length_description": "Total length of the generated password", + "high-entropy_option_include_uppercase_description": "Include uppercase letters (A-Z)", + "high-entropy_option_include_lowercase_description": "Include lowercase letters (a-z)", + "high-entropy_option_include_numbers_description": "Include numbers (0-9)", + "high-entropy_option_include_symbols_description": "Include symbols (e.g., !@#$%)", + "xkcdpass_option_wordlist_description": "Wordlist to use for generating the passphrase", + "xkcdpass_option_wordlist_choice_en": "English", + "xkcdpass_option_wordlist_choice_de": "Deutsch", + "xkcdpass_option_wordlist_choice_fr": "Français", + "xkcdpass_option_wordlist_choice_it": "Italiano", + "xkcdpass_option_wordlist_choice_es": "Español", + "xkcdpass_option_space_handling_choice_allow": "Autoriser", + "xkcdpass_option_space_handling_choice_skip": "Ignorer", + "xkcdpass_option_space_handling_choice_modify": "Modifier", + "xkcdpass_option_add_number": "Ajouter un nombre", + "xkcdpass_option_add_number_description": "Add random number to the passphrase", + "xkcdpass_option_number_position": "Position du nombre", + "xkcdpass_option_number_position_description": "Where to place the random number", + "xkcdpass_option_number_position_choice_beginning": "Au début", + "xkcdpass_option_number_position_choice_end": "À la fin", + "xkcdpass_option_number_position_choice_random": "Position aléatoire", + "xkcdpass_option_ai_provider_choice_openai": "OpenAI", + "xkcdpass_option_ai_provider_choice_claude": "Claude", + "xkcdpass_option_ai_provider_choice_gemini": "Gemini", + "xkcdpass_option_ai_provider_choice_perplexity": "Perplexity", + "pwgen_option_type": "Préréglage de longueur", + "pwgen_option_type_description": "Préréglage de longueur facultatif. S'il est défini sur 8/12/16 caractères, il remplace la valeur Longueur ci-dessus.", + "pwgen_option_type_choice_8-char": "8 caractères", + "pwgen_option_type_choice_12-char": "12 caractères", + "pwgen_option_type_choice_16-char": "16 caractères", + "passkey_option_syllables_description": "Number of pronounceable syllables in the passkey", + "phrase-abbreviator_option_sentence": "Phrase", + "phrase-abbreviator_option_sentence_description": "User-supplied sentence (minimum 8 words, must start with capital letter)", + "phrase-abbreviator_option_character_extraction": "Extraction des caractères", + "phrase-abbreviator_option_character_extraction_description": "Method for extracting characters from each word", + "phrase-abbreviator_option_character_extraction_choice_single": "Première lettre uniquement", + "phrase-abbreviator_option_character_extraction_choice_dual": "Première lettre + prochaine voyelle/consonne", + "phrase-abbreviator_option_language": "Langue", + "phrase-abbreviator_option_language_description": "Language for number word conversion", + "phrase-abbreviator_option_language_choice_en": "English", + "phrase-abbreviator_option_language_choice_de": "Allemand", + "phrase-abbreviator_option_language_choice_de_CH": "Suisse allemand", + "phrase-abbreviator_option_language_choice_fr": "Français", + "phrase-abbreviator_option_language_choice_it": "Italien", + "phrase-abbreviator_option_language_choice_es": "Espagnol", + "phrase-abbreviator_option_language_choice_pt": "Portugais", + "phrase-abbreviator_option_language_choice_ja": "Japonais", + "phrase-abbreviator_option_language_choice_zh": "Chinois", + "phrase-abbreviator_option_add_number": "Ajouter un nombre", + "phrase-abbreviator_option_add_number_description": "Ajouter des chiffres aléatoires au mot de passe", + "phrase-abbreviator_option_number_digits": "Nombre de chiffres", + "phrase-abbreviator_option_number_digits_description": "Combien de chiffres aléatoires ajouter (1-4)", + "phrase-abbreviator_option_number_position": "Position du nombre", + "phrase-abbreviator_option_number_position_description": "Place le nombre avant ou après le mot de passe", + "phrase-abbreviator_option_number_position_choice_prepend": "Avant", + "phrase-abbreviator_option_number_position_choice_append": "Après", + "phrase-abbreviator_option_ai_provider_choice_openai": "OpenAI", + "phrase-abbreviator_option_ai_provider_choice_claude": "Claude", + "phrase-abbreviator_option_ai_provider_choice_gemini": "Gemini", + "phrase-abbreviator_option_ai_provider_choice_perplexity": "Perplexity", + "phrase-abbreviator_option_ai_model_choice_gpt-3.5-turbo": "GPT-3.5 Turbo", + "phrase-abbreviator_option_ai_model_choice_gpt-4": "GPT-4", + "phrase-abbreviator_option_ai_model_choice_gpt-4-turbo": "GPT-4 Turbo", + "phrase-abbreviator_option_ai_model_choice_gpt-4o": "GPT-4 Omni", + "collapse_group_basic": "Options de base", + "collapse_group_advanced": "Options avancées", + "collapse_group_ai": "Fonctionnalités IA", + "collapse_group_expert": "Options expertes", + "collapse_group_character_set": "Jeu de caractères", + "copied": "Copié", + "pwgen_option_type_choice_custom": "Utiliser le réglage de longueur", + "roulette": "Roulette", + "stop": "Arrêter", + "roulette_interval": "Intervalle (s)", + "roulette_slow_down": "Augmenter l'intervalle (plus lent)", + "roulette_speed_up": "Réduire l'intervalle (plus rapide)" +} diff --git a/locales/it.json b/locales/it.json new file mode 100644 index 0000000..f831926 --- /dev/null +++ b/locales/it.json @@ -0,0 +1,223 @@ +{ + "api_documentation": "Documentazione API", + "app_title": "Generatore di Password", + "close": "Chiudi", + "copied_to_clipboard": "Copiato negli appunti!", + "copy": "Copia", + "copy_failed": "Copia fallita", + "count": "Conteggio", + "deutsch": "Deutsch", + "dice_rolls": "Lanci di dadi", + "diceware_badge": "Focus Sicurezza", + "diceware_description": "Metodo EFF Diceware autentico utilizzando lanci di dadi crittograficamente sicuri per la massima sicurezza", + "diceware_option_show_dice_rolls": "Show Dice Rolls", + "diceware_option_show_dice_rolls_description": "Educational: display the dice rolls used to select each word", + "diceware_option_uppercase_first": "Capitalize First Word", + "diceware_option_uppercase_first_description": "Capitalize only the first word (traditional Diceware style)", + "diceware_option_words": "Words", + "diceware_option_words_description": "Minimum 6 words recommended for security (77.5 bits entropy)", + "diceware_title": "Diceware", + "english": "Inglese", + "entropy": "Entropia", + "length": "Lunghezza", + "details": "Dettagli", + "security_level": "Livello di sicurezza", + "very_strong": "Molto forte", + "strong": "Forte", + "adequate": "Adeguata", + "weak": "Debole", + "very_weak": "Molto debole", + "chars": "caratteri", + "error_generating_passwords": "Errore nella generazione delle password", + "espanol": "Español", + "footer_text": "testo del piè di pagina", + "francais": "Français", + "generate": "Genera", + "generating": "Generazione...", + "high-entropy_description": "Password casuali crittograficamente sicure con entropia massima", + "high-entropy_option_include_lowercase": "Include Lowercase", + "high-entropy_option_include_numbers": "Include Numbers", + "high-entropy_option_include_symbols": "Include Symbols", + "high-entropy_option_include_uppercase": "Include Uppercase", + "high-entropy_option_length": "Length", + "high-entropy_title": "High Entropy", + "info_spaces_replaced_with_underscores": "Gli spazi nelle parole selezionate vengono sostituiti con underscore (_).", + "info_words_with_spaces_excluded": "Le parole che contengono spazi vengono escluse dalla selezione.", + "italiano": "Italiano", + "language": "Lingua:", + "loading_generators": "Caricamento generatori", + "loading_password_generators": "Caricamento generatori di password...", + "native_group_explanation": "Opzioni native del generatore PwGen per creare password pronunciabili.", + "native_pwgen": "Opzioni native", + "no_spaces_in_separator": "Non usare spazi nel separatore quando la gestione degli spazi è impostata su “modifica” o “salta”.", + "passkey_description": "Password pronunciabili in stile Apple con sostituzioni di caratteri integrate", + "passkey_option_syllables": "Syllables", + "passkey_title": "Passkey", + "password_generator": "Generatore password", + "php_fallback": "Codice di fallback in PHP quando pwgen nativo non è disponibile.", + "portugues": "Portoghese", + "pwgen_badge": "Migliorato", + "pwgen_description": "Password in stile pwgen classico con pattern leggibili", + "pwgen_option_include_capitals": "Includi maiuscole", + "pwgen_option_include_capitals_description": "Le password generate conterranno lettere maiuscole.", + "pwgen_option_include_numbers": "Includi numeri", + "pwgen_option_include_numbers_description": "Le password generate conterranno cifre.", + "pwgen_option_length": "Lunghezza", + "pwgen_option_length_description": "Lunghezza totale della password inclusi i separatori (minimo 4 caratteri)", + "pwgen_option_no_ambiguous": "Nessun carattere ambiguo", + "pwgen_option_no_ambiguous_description": "Escludi caratteri come 0, O, l, 1, ecc. per migliorare la leggibilità", + "pwgen_option_pattern_complexity": "Pattern complesso", + "pwgen_option_pattern_complexity_description": "Controlla la complessità dei pattern generati.", + "pwgen_option_pattern_complexity_list_balanced": "Complessità bilanciata", + "pwgen_option_pattern_complexity_list_complex": "Pattern complessi", + "pwgen_option_pattern_complexity_list_simple": "Pattern semplici", + "pwgen_option_secure_mode": "Modalità sicura", + "pwgen_option_secure_mode_description": "Genera password completamente casuali invece di parole pronunciabili", + "pwgen_option_separator": "Separatore", + "pwgen_option_separator_description": "Carattere(i) per separare le sillabe. Se ne vengono definiti più di uno, vengono separati da un carattere scelto casualmente. Se è vuoto, non viene eseguita alcuna separazione.", + "pwgen_option_syllable_count": "Numero di sillabe", + "pwgen_option_syllable_count_description": "Numero di sillabe da generare (usato solo con separatore)", + "pwgen_title": "PWGen", + "results": "Risultati", + "schwyzerduetsch": "Tedesco Svizzero", + "secure_mode_disables_syllable_separation": "La modalità sicura disattiva la separazione delle sillabe.", + "separator_method_info": "Informazioni sul metodo di separazione", + "single_space_allowed": "È consentito un solo spazio", + "success": "Successo", + "syllable_group_explanation": "Spiegazione delle sillabe", + "syllable_length_too_short": "La sillaba è troppo breve", + "syllable_length_very_long": "La sillaba è molto lunga", + "warning_short_word_limits_reduces_choices": "Avviso: i limiti di parole brevi riducono le scelte", + "warning_short_words_reduce_memorability": "Avviso: le parole brevi riducono la memorizzazione", + "xkcdpass_badge": "Focus Memorabilità", + "xkcdpass_description": "Descrizione xkcdpass", + "xkcdpass_option_addNumber": "Add Number", + "xkcdpass_option_max_word_length": "Lunghezza massima parola", + "xkcdpass_option_max_word_length_description": "0 = no limit, >0 = maximum characters per word", + "xkcdpass_option_numberPosition": "Number Position", + "xkcdpass_option_numberPosition_list_beginning": "All’inizio", + "xkcdpass_option_numberPosition_list_end": "Alla fine", + "xkcdpass_option_numberPosition_list_random": "Posizione casuale", + "xkcdpass_option_separator": "Separatore", + "xkcdpass_option_separator_description": "Single character or character set (random selection). Spaces excluded from multi-character sets.", + "xkcdpass_option_space_handling": "Gestione spazi", + "xkcdpass_option_space_handling_description": "Come gestire le parole contenenti spazi", + "xkcdpass_option_space_handling_list_allow": "Consenti (mantieni spazi)", + "xkcdpass_option_space_handling_list_modify": "Modifica (sostituisci con _)", + "xkcdpass_option_space_handling_list_skip": "Salta (non selezionare)", + "xkcdpass_option_wordlist": "Lista di parole", + "xkcdpass_option_words": "Parole", + "xkcdpass_option_words_description": "Number of words (minimal 2)", + "xkcdpass_title": "XKCD Pass", + "phraseabbreviator_number_zero": "zero", + "phraseabbreviator_number_one": "uno", + "phraseabbreviator_number_two": "due", + "phraseabbreviator_number_three": "tre", + "phraseabbreviator_number_four": "quattro", + "phraseabbreviator_number_five": "cinque", + "phraseabbreviator_number_six": "sei", + "phraseabbreviator_number_seven": "sette", + "phraseabbreviator_number_eight": "otto", + "phraseabbreviator_number_nine": "nove", + "phraseabbreviator_number_ten": "dieci", + "phraseabbreviator_number_eleven": "undici", + "phraseabbreviator_number_twelve": "dodici", + "phraseabbreviator_number_thirteen": "tredici", + "phraseabbreviator_number_fourteen": "quattordici", + "phraseabbreviator_number_fifteen": "quindici", + "phraseabbreviator_number_sixteen": "sedici", + "phraseabbreviator_number_seventeen": "diciassette", + "phraseabbreviator_number_eighteen": "diciotto", + "phraseabbreviator_number_nineteen": "diciannove", + "phraseabbreviator_number_twenty": "venti", + "xkcdpass_option_use_ai_wordlist": "Usa lista parole IA", + "xkcdpass_option_use_ai_wordlist_description": "Genera una lista di parole personalizzata con un modello IA", + "xkcdpass_option_ai_wordlist_prompt": "Prompt lista parole IA", + "xkcdpass_option_ai_wordlist_prompt_description": "Completa il prompt: \"Crea una lista di X parole di almeno 5 caratteri, che...\"", + "xkcdpass_option_ai_provider": "Provider IA", + "xkcdpass_option_ai_provider_description": "Quale provider LLM usare", + "phrase-abbreviator_option_use_ai_sentence": "Usa frase IA", + "phrase-abbreviator_option_use_ai_sentence_description": "Consente all’IA di generare una frase dal tuo prompt", + "phrase-abbreviator_option_ai_prompt": "Prompt IA", + "phrase-abbreviator_option_ai_prompt_description": "Prompt per far generare all’IA una frase memorabile (minimo 12 parole)", + "phrase-abbreviator_option_ai_provider": "Provider IA", + "phrase-abbreviator_option_ai_provider_description": "Quale provider LLM usare per la generazione della frase", + "phrase-abbreviator_option_ai_model": "Modello IA", + "phrase-abbreviator_option_ai_model_description": "Quale modello IA usare", + "high-entropy_option_length_description": "Total length of the generated password", + "high-entropy_option_include_uppercase_description": "Include uppercase letters (A-Z)", + "high-entropy_option_include_lowercase_description": "Include lowercase letters (a-z)", + "high-entropy_option_include_numbers_description": "Include numbers (0-9)", + "high-entropy_option_include_symbols_description": "Include symbols (e.g., !@#$%)", + "xkcdpass_option_wordlist_description": "Wordlist to use for generating the passphrase", + "xkcdpass_option_wordlist_choice_en": "English", + "xkcdpass_option_wordlist_choice_de": "Deutsch", + "xkcdpass_option_wordlist_choice_fr": "Français", + "xkcdpass_option_wordlist_choice_it": "Italiano", + "xkcdpass_option_wordlist_choice_es": "Español", + "xkcdpass_option_space_handling_choice_allow": "Consenti", + "xkcdpass_option_space_handling_choice_skip": "Salta", + "xkcdpass_option_space_handling_choice_modify": "Modifica", + "xkcdpass_option_add_number": "Aggiungi numero", + "xkcdpass_option_add_number_description": "Add random number to the passphrase", + "xkcdpass_option_number_position": "Posizione del numero", + "xkcdpass_option_number_position_description": "Where to place the random number", + "xkcdpass_option_number_position_choice_beginning": "All’inizio", + "xkcdpass_option_number_position_choice_end": "Alla fine", + "xkcdpass_option_number_position_choice_random": "Posizione casuale", + "xkcdpass_option_ai_provider_choice_openai": "OpenAI", + "xkcdpass_option_ai_provider_choice_claude": "Claude", + "xkcdpass_option_ai_provider_choice_gemini": "Gemini", + "xkcdpass_option_ai_provider_choice_perplexity": "Perplexity", + "pwgen_option_type": "Preset lunghezza", + "pwgen_option_type_description": "Preset di lunghezza opzionale. Se impostato su 8/12/16 caratteri, sovrascrive il valore Lunghezza sopra.", + "pwgen_option_type_choice_8-char": "8 caratteri", + "pwgen_option_type_choice_12-char": "12 caratteri", + "pwgen_option_type_choice_16-char": "16 caratteri", + "passkey_option_syllables_description": "Number of pronounceable syllables in the passkey", + "phrase-abbreviator_option_sentence": "Frase", + "phrase-abbreviator_option_sentence_description": "User-supplied sentence (minimum 8 words, must start with capital letter)", + "phrase-abbreviator_option_character_extraction": "Estrazione caratteri", + "phrase-abbreviator_option_character_extraction_description": "Method for extracting characters from each word", + "phrase-abbreviator_option_character_extraction_choice_single": "Solo prima lettera", + "phrase-abbreviator_option_character_extraction_choice_dual": "Prima lettera + prossima vocale/consonante", + "phrase-abbreviator_option_language": "Lingua", + "phrase-abbreviator_option_language_description": "Language for number word conversion", + "phrase-abbreviator_option_language_choice_en": "English", + "phrase-abbreviator_option_language_choice_de": "Tedesco", + "phrase-abbreviator_option_language_choice_de_CH": "Svizzero tedesco", + "phrase-abbreviator_option_language_choice_fr": "Francese", + "phrase-abbreviator_option_language_choice_it": "Italiano", + "phrase-abbreviator_option_language_choice_es": "Spagnolo", + "phrase-abbreviator_option_language_choice_pt": "Portoghese", + "phrase-abbreviator_option_language_choice_ja": "Giapponese", + "phrase-abbreviator_option_language_choice_zh": "Cinese", + "phrase-abbreviator_option_add_number": "Aggiungi numero", + "phrase-abbreviator_option_add_number_description": "Aggiungi cifre casuali alla password", + "phrase-abbreviator_option_number_digits": "Numero di cifre", + "phrase-abbreviator_option_number_digits_description": "Quante cifre casuali aggiungere (1-4)", + "phrase-abbreviator_option_number_position": "Posizione del numero", + "phrase-abbreviator_option_number_position_description": "Posiziona il numero prima o dopo la password", + "phrase-abbreviator_option_number_position_choice_prepend": "Prima", + "phrase-abbreviator_option_number_position_choice_append": "Dopo", + "phrase-abbreviator_option_ai_provider_choice_openai": "OpenAI", + "phrase-abbreviator_option_ai_provider_choice_claude": "Claude", + "phrase-abbreviator_option_ai_provider_choice_gemini": "Gemini", + "phrase-abbreviator_option_ai_provider_choice_perplexity": "Perplexity", + "phrase-abbreviator_option_ai_model_choice_gpt-3.5-turbo": "GPT-3.5 Turbo", + "phrase-abbreviator_option_ai_model_choice_gpt-4": "GPT-4", + "phrase-abbreviator_option_ai_model_choice_gpt-4-turbo": "GPT-4 Turbo", + "phrase-abbreviator_option_ai_model_choice_gpt-4o": "GPT-4 Omni", + "collapse_group_basic": "Opzioni di base", + "collapse_group_advanced": "Opzioni avanzate", + "collapse_group_ai": "Funzionalità IA", + "collapse_group_expert": "Opzioni esperte", + "collapse_group_character_set": "Set di caratteri", + "copied": "Copiato", + "pwgen_option_type_choice_custom": "Usa impostazione lunghezza", + "roulette": "Roulette", + "stop": "Ferma", + "roulette_interval": "Intervallo (s)", + "roulette_slow_down": "Aumenta intervallo (più lento)", + "roulette_speed_up": "Riduci intervallo (più veloce)" +} diff --git a/locales/ja.json b/locales/ja.json new file mode 100644 index 0000000..5d84443 --- /dev/null +++ b/locales/ja.json @@ -0,0 +1,223 @@ +{ + "api_documentation": "APIドキュメント", + "app_title": "app_title", + "close": "閉じる", + "copied_to_clipboard": "クリップボードにコピーしました!", + "copy": "コピー", + "copy_failed": "コピーに失敗", + "count": "カウント", + "deutsch": "ドイツ語", + "dice_rolls": "サイコロの目", + "diceware_badge": "セキュリティ重視", + "diceware_description": "最大のセキュリティのために暗号学的に安全なサイコロを使用した本格的なEFF Diceware方式", + "diceware_option_show_dice_rolls": "Show Dice Rolls", + "diceware_option_show_dice_rolls_description": "学習用: 各単語の選択に使ったサイコロの目を表示します", + "diceware_option_uppercase_first": "Capitalize First Word", + "diceware_option_uppercase_first_description": "最初の単語だけを大文字にします(従来の Diceware 形式)", + "diceware_option_words": "Words", + "diceware_option_words_description": "安全性のため最低 6 単語を推奨します(77.5 ビットのエントロピー)。", + "diceware_title": "Diceware", + "english": "英語", + "entropy": "エントロピー", + "length": "長さ", + "details": "詳細", + "security_level": "セキュリティレベル", + "very_strong": "非常に強い", + "strong": "強い", + "adequate": "十分", + "weak": "弱い", + "very_weak": "非常に弱い", + "chars": "文字", + "error_generating_passwords": "パスワード生成エラー", + "espanol": "スペイン語", + "footer_text": "footer_text", + "francais": "フランス語", + "generate": "生成", + "generating": "生成中...", + "high-entropy_description": "最大エントロピーを持つ暗号学的に安全なランダムパスワード", + "high-entropy_option_include_lowercase": "Include Lowercase", + "high-entropy_option_include_numbers": "Include Numbers", + "high-entropy_option_include_symbols": "Include Symbols", + "high-entropy_option_include_uppercase": "Include Uppercase", + "high-entropy_option_length": "Length", + "high-entropy_title": "High Entropy", + "info_spaces_replaced_with_underscores": "選択した単語内のスペースはアンダースコア (_) に置き換えられます。", + "info_words_with_spaces_excluded": "スペースを含む単語は選択対象から除外されます。", + "italiano": "イタリア語", + "language": "言語:", + "loading_generators": "loading_generators", + "loading_password_generators": "パスワードジェネレーターを読み込み中...", + "native_group_explanation": "発音可能なパスワードを生成するための PwGen ネイティブ生成器オプションです。", + "native_pwgen": "ネイティブ設定", + "no_spaces_in_separator": "スペース処理が「変更」または「スキップ」の場合、区切り文字にはスペースを使わないでください。", + "passkey_description": "文字置換が統合されたAppleスタイルの発音可能なパスワード", + "passkey_option_syllables": "Syllables", + "passkey_title": "Passkey", + "password_generator": "パスワードジェネレーター", + "php_fallback": "ネイティブ pwgen が利用できない場合の PHP フォールバックコード。", + "portugues": "ポルトガル語", + "pwgen_badge": "強化版", + "pwgen_description": "読みやすいパターンを持つ古典的なpwgenスタイルのパスワード", + "pwgen_option_include_capitals": "大文字を含める", + "pwgen_option_include_capitals_description": "生成されるパスワードには大文字が含まれます。", + "pwgen_option_include_numbers": "数字を含める", + "pwgen_option_include_numbers_description": "生成されるパスワードには数字が含まれます。", + "pwgen_option_length": "長さ", + "pwgen_option_length_description": "区切り文字を含むパスワード全体の長さ(最小 4 文字)", + "pwgen_option_no_ambiguous": "曖昧な文字を避ける", + "pwgen_option_no_ambiguous_description": "読みやすさのため 0、O、l、1 などの文字を除外します", + "pwgen_option_pattern_complexity": "複雑さ", + "pwgen_option_pattern_complexity_description": "生成するパターンの複雑さを調整します。", + "pwgen_option_pattern_complexity_list_balanced": "バランス重視", + "pwgen_option_pattern_complexity_list_complex": "複雑なパターン", + "pwgen_option_pattern_complexity_list_simple": "シンプルなパターン", + "pwgen_option_secure_mode": "セキュアモード", + "pwgen_option_secure_mode_description": "発音可能な単語ではなく、完全にランダムなパスワードを生成します", + "pwgen_option_separator": "区切り文字", + "pwgen_option_separator_description": "音節を区切る文字。複数の文字が定義されている場合は、ランダムに選ばれた 1 つが使用されます。空欄の場合は区切りを行いません。", + "pwgen_option_syllable_count": "音節数", + "pwgen_option_syllable_count_description": "生成する音節数(区切り文字使用時のみ)", + "pwgen_title": "PWGen", + "results": "結果", + "schwyzerduetsch": "シュヴィーツァーデュッチ", + "secure_mode_disables_syllable_separation": "セキュアモードでは音節の分離は無効になります。", + "separator_method_info": "区切り方法の情報", + "single_space_allowed": "1 つのスペースのみ許可", + "success": "成功", + "syllable_group_explanation": "音節の説明", + "syllable_length_too_short": "音節が短すぎます", + "syllable_length_very_long": "音節が長すぎます", + "warning_short_word_limits_reduces_choices": "警告: 単語数の上限が低いと選択肢が減ります", + "warning_short_words_reduce_memorability": "警告: 短い単語は記憶しにくくなります", + "xkcdpass_badge": "記憶しやすさ重視", + "xkcdpass_description": "xkcdpassの説明", + "xkcdpass_option_addNumber": "Add Number", + "xkcdpass_option_max_word_length": "単語の最大長", + "xkcdpass_option_max_word_length_description": "0 = 制限なし、>0 = 単語ごとの最大文字数", + "xkcdpass_option_numberPosition": "Number Position", + "xkcdpass_option_numberPosition_list_beginning": "先頭", + "xkcdpass_option_numberPosition_list_end": "末尾", + "xkcdpass_option_numberPosition_list_random": "ランダム位置", + "xkcdpass_option_separator": "区切り文字", + "xkcdpass_option_separator_description": "1 文字または文字セット(ランダム選択)。複数文字セットではスペースは除外されます。", + "xkcdpass_option_space_handling": "スペースの扱い", + "xkcdpass_option_space_handling_description": "スペースを含む単語の扱い方", + "xkcdpass_option_space_handling_list_allow": "許可(スペースを残す)", + "xkcdpass_option_space_handling_list_modify": "変更(_ に置換)", + "xkcdpass_option_space_handling_list_skip": "スキップ(選択しない)", + "xkcdpass_option_wordlist": "単語一覧", + "xkcdpass_option_words": "単語", + "xkcdpass_option_words_description": "単語数(最小 2)", + "xkcdpass_title": "XKCD Pass", + "phraseabbreviator_number_zero": "零", + "phraseabbreviator_number_one": "一", + "phraseabbreviator_number_two": "二", + "phraseabbreviator_number_three": "三", + "phraseabbreviator_number_four": "四", + "phraseabbreviator_number_five": "五", + "phraseabbreviator_number_six": "六", + "phraseabbreviator_number_seven": "七", + "phraseabbreviator_number_eight": "八", + "phraseabbreviator_number_nine": "九", + "phraseabbreviator_number_ten": "十", + "phraseabbreviator_number_eleven": "十一", + "phraseabbreviator_number_twelve": "十二", + "phraseabbreviator_number_thirteen": "十三", + "phraseabbreviator_number_fourteen": "十四", + "phraseabbreviator_number_fifteen": "十五", + "phraseabbreviator_number_sixteen": "十六", + "phraseabbreviator_number_seventeen": "十七", + "phraseabbreviator_number_eighteen": "十八", + "phraseabbreviator_number_nineteen": "十九", + "phraseabbreviator_number_twenty": "二十", + "xkcdpass_option_use_ai_wordlist": "AI 単語リストを使用", + "xkcdpass_option_use_ai_wordlist_description": "AI モデルを使ってカスタム単語リストを生成します", + "xkcdpass_option_ai_wordlist_prompt": "AI 単語リストのプロンプト", + "xkcdpass_option_ai_wordlist_prompt_description": "プロンプトを完成させてください: \"少なくとも 5 文字の X 個の単語リストを作成し、…\"", + "xkcdpass_option_ai_provider": "AI プロバイダー", + "xkcdpass_option_ai_provider_description": "どの LLM プロバイダーを使用するか", + "phrase-abbreviator_option_use_ai_sentence": "AI 文を使用", + "phrase-abbreviator_option_use_ai_sentence_description": "AI にプロンプトから文章を生成させます", + "phrase-abbreviator_option_ai_prompt": "AI プロンプト", + "phrase-abbreviator_option_ai_prompt_description": "AI に記憶しやすい文章を生成させるためのプロンプト(最低 12 語)", + "phrase-abbreviator_option_ai_provider": "AI プロバイダー", + "phrase-abbreviator_option_ai_provider_description": "文章生成にどの LLM プロバイダーを使用するか", + "phrase-abbreviator_option_ai_model": "AI モデル", + "phrase-abbreviator_option_ai_model_description": "どの AI モデルを使用するか", + "high-entropy_option_length_description": "Total length of the generated password", + "high-entropy_option_include_uppercase_description": "Include uppercase letters (A-Z)", + "high-entropy_option_include_lowercase_description": "Include lowercase letters (a-z)", + "high-entropy_option_include_numbers_description": "Include numbers (0-9)", + "high-entropy_option_include_symbols_description": "Include symbols (e.g., !@#$%)", + "xkcdpass_option_wordlist_description": "Wordlist to use for generating the passphrase", + "xkcdpass_option_wordlist_choice_en": "English", + "xkcdpass_option_wordlist_choice_de": "Deutsch", + "xkcdpass_option_wordlist_choice_fr": "Français", + "xkcdpass_option_wordlist_choice_it": "Italiano", + "xkcdpass_option_wordlist_choice_es": "Español", + "xkcdpass_option_space_handling_choice_allow": "許可", + "xkcdpass_option_space_handling_choice_skip": "スキップ", + "xkcdpass_option_space_handling_choice_modify": "変更", + "xkcdpass_option_add_number": "数字を追加", + "xkcdpass_option_add_number_description": "Add random number to the passphrase", + "xkcdpass_option_number_position": "数字の位置", + "xkcdpass_option_number_position_description": "Where to place the random number", + "xkcdpass_option_number_position_choice_beginning": "先頭", + "xkcdpass_option_number_position_choice_end": "末尾", + "xkcdpass_option_number_position_choice_random": "ランダム", + "xkcdpass_option_ai_provider_choice_openai": "OpenAI", + "xkcdpass_option_ai_provider_choice_claude": "Claude", + "xkcdpass_option_ai_provider_choice_gemini": "Gemini", + "xkcdpass_option_ai_provider_choice_perplexity": "Perplexity", + "pwgen_option_type": "長さプリセット", + "pwgen_option_type_description": "任意の長さプリセットです。8/12/16 文字を選ぶと、上の「長さ」設定を上書きします。", + "pwgen_option_type_choice_8-char": "8 文字", + "pwgen_option_type_choice_12-char": "12 文字", + "pwgen_option_type_choice_16-char": "16 文字", + "passkey_option_syllables_description": "Number of pronounceable syllables in the passkey", + "phrase-abbreviator_option_sentence": "文章", + "phrase-abbreviator_option_sentence_description": "User-supplied sentence (minimum 8 words, must start with capital letter)", + "phrase-abbreviator_option_character_extraction": "文字抽出", + "phrase-abbreviator_option_character_extraction_description": "Method for extracting characters from each word", + "phrase-abbreviator_option_character_extraction_choice_single": "先頭文字のみ", + "phrase-abbreviator_option_character_extraction_choice_dual": "先頭文字 + 次の母音/子音", + "phrase-abbreviator_option_language": "言語", + "phrase-abbreviator_option_language_description": "Language for number word conversion", + "phrase-abbreviator_option_language_choice_en": "English", + "phrase-abbreviator_option_language_choice_de": "ドイツ語", + "phrase-abbreviator_option_language_choice_de_CH": "シュワイツァー・ドイツ語", + "phrase-abbreviator_option_language_choice_fr": "フランス語", + "phrase-abbreviator_option_language_choice_it": "イタリア語", + "phrase-abbreviator_option_language_choice_es": "スペイン語", + "phrase-abbreviator_option_language_choice_pt": "ポルトガル語", + "phrase-abbreviator_option_language_choice_ja": "日本語", + "phrase-abbreviator_option_language_choice_zh": "中国語", + "phrase-abbreviator_option_add_number": "数字を追加", + "phrase-abbreviator_option_add_number_description": "パスワードにランダムな数字を追加", + "phrase-abbreviator_option_number_digits": "数字の個数", + "phrase-abbreviator_option_number_digits_description": "追加するランダム数字の数(1〜4)", + "phrase-abbreviator_option_number_position": "数字の位置", + "phrase-abbreviator_option_number_position_description": "数字をパスワードの前または後に配置", + "phrase-abbreviator_option_number_position_choice_prepend": "前", + "phrase-abbreviator_option_number_position_choice_append": "後", + "phrase-abbreviator_option_ai_provider_choice_openai": "OpenAI", + "phrase-abbreviator_option_ai_provider_choice_claude": "Claude", + "phrase-abbreviator_option_ai_provider_choice_gemini": "Gemini", + "phrase-abbreviator_option_ai_provider_choice_perplexity": "Perplexity", + "phrase-abbreviator_option_ai_model_choice_gpt-3.5-turbo": "GPT-3.5 Turbo", + "phrase-abbreviator_option_ai_model_choice_gpt-4": "GPT-4", + "phrase-abbreviator_option_ai_model_choice_gpt-4-turbo": "GPT-4 Turbo", + "phrase-abbreviator_option_ai_model_choice_gpt-4o": "GPT-4 Omni", + "collapse_group_basic": "基本オプション", + "collapse_group_advanced": "詳細オプション", + "collapse_group_ai": "AI 機能", + "collapse_group_expert": "上級オプション", + "collapse_group_character_set": "文字セット", + "copied": "コピー済み", + "pwgen_option_type_choice_custom": "長さ設定を使用", + "roulette": "ルーレット", + "stop": "停止", + "roulette_interval": "間隔 (秒)", + "roulette_slow_down": "間隔を増やす(遅く)", + "roulette_speed_up": "間隔を減らす(速く)" +} diff --git a/locales/pt.json b/locales/pt.json new file mode 100644 index 0000000..a5a69df --- /dev/null +++ b/locales/pt.json @@ -0,0 +1,223 @@ +{ + "api_documentation": "Documentação API", + "app_title": "Gerador de Senhas", + "close": "Fechar", + "copied_to_clipboard": "Copiado para a área de transferência!", + "copy": "Copiar", + "copy_failed": "Falha ao copiar", + "count": "Quantidade", + "deutsch": "Deutsch", + "dice_rolls": "Lançamentos de dados", + "diceware_badge": "Foco na Segurança", + "diceware_description": "Método EFF Diceware autêntico usando jogadas de dados criptograficamente seguras para máxima segurança", + "diceware_option_show_dice_rolls": "Show Dice Rolls", + "diceware_option_show_dice_rolls_description": "Educational: display the dice rolls used to select each word", + "diceware_option_uppercase_first": "Capitalize First Word", + "diceware_option_uppercase_first_description": "Capitalize only the first word (traditional Diceware style)", + "diceware_option_words": "Words", + "diceware_option_words_description": "Minimum 6 words recommended for security (77.5 bits entropy)", + "diceware_title": "Diceware", + "english": "Inglês", + "entropy": "Entropia", + "length": "Comprimento", + "details": "Detalhes", + "security_level": "Nível de segurança", + "very_strong": "Muito forte", + "strong": "Forte", + "adequate": "Adequado", + "weak": "Fraca", + "very_weak": "Muito fraca", + "chars": "caracteres", + "error_generating_passwords": "Erro ao gerar senhas", + "espanol": "Español", + "footer_text": "texto do rodapé", + "francais": "Français", + "generate": "Gerar", + "generating": "Gerando...", + "high-entropy_description": "Senhas aleatórias criptograficamente seguras com entropia máxima", + "high-entropy_option_include_lowercase": "Include Lowercase", + "high-entropy_option_include_numbers": "Include Numbers", + "high-entropy_option_include_symbols": "Include Symbols", + "high-entropy_option_include_uppercase": "Include Uppercase", + "high-entropy_option_length": "Length", + "high-entropy_title": "High Entropy", + "info_spaces_replaced_with_underscores": "Espaços nas palavras selecionadas são substituídos por underscores (_).", + "info_words_with_spaces_excluded": "Palavras que contêm espaços são excluídas da seleção.", + "italiano": "Italiano", + "language": "Idioma:", + "loading_generators": "Carregando geradores", + "loading_password_generators": "Carregando geradores de senhas...", + "native_group_explanation": "Opções nativas do gerador PwGen para gerar senhas pronunciáveis.", + "native_pwgen": "Opções nativas", + "no_spaces_in_separator": "Não use espaços no separador quando o tratamento de espaço estiver definido como “modificar” ou “pular”.", + "passkey_description": "Senhas pronunciáveis estilo Apple com substituições de caracteres integradas", + "passkey_option_syllables": "Syllables", + "passkey_title": "Passkey", + "password_generator": "Gerador de senhas", + "php_fallback": "Código de fallback em PHP quando o pwgen nativo não está disponível.", + "portugues": "Português", + "pwgen_badge": "Melhorado", + "pwgen_description": "Senhas estilo pwgen clássico com padrões legíveis", + "pwgen_option_include_capitals": "Incluir maiúsculas", + "pwgen_option_include_capitals_description": "As senhas geradas conterão letras maiúsculas.", + "pwgen_option_include_numbers": "Incluir números", + "pwgen_option_include_numbers_description": "As senhas geradas conterão dígitos.", + "pwgen_option_length": "Comprimento", + "pwgen_option_length_description": "Comprimento total da senha incluindo separadores (mínimo de 4 caracteres)", + "pwgen_option_no_ambiguous": "Sem caracteres ambíguos", + "pwgen_option_no_ambiguous_description": "Exclui caracteres como 0, O, l, 1, etc. para melhorar a legibilidade", + "pwgen_option_pattern_complexity": "Padrão complexo", + "pwgen_option_pattern_complexity_description": "Controla a complexidade dos padrões gerados.", + "pwgen_option_pattern_complexity_list_balanced": "Complexidade equilibrada", + "pwgen_option_pattern_complexity_list_complex": "Padrões complexos", + "pwgen_option_pattern_complexity_list_simple": "Padrões simples", + "pwgen_option_secure_mode": "Modo seguro", + "pwgen_option_secure_mode_description": "Gera senhas totalmente aleatórias em vez de pronunciáveis", + "pwgen_option_separator": "Separador", + "pwgen_option_separator_description": "Caractere(s) para separar sílabas. Se vários caracteres forem definidos, os trechos são separados por um caractere escolhido aleatoriamente. Se estiver vazio, não há separação.", + "pwgen_option_syllable_count": "Número de sílabas", + "pwgen_option_syllable_count_description": "Número de sílabas a gerar (usado somente com separador)", + "pwgen_title": "PWGen", + "results": "Resultados", + "schwyzerduetsch": "Alemão Suíço", + "secure_mode_disables_syllable_separation": "O modo seguro desativa a separação por sílabas.", + "separator_method_info": "Informações sobre o método de separação", + "single_space_allowed": "Permite apenas um espaço", + "success": "Sucesso", + "syllable_group_explanation": "Explicação das sílabas", + "syllable_length_too_short": "A sílaba é muito curta", + "syllable_length_very_long": "A sílaba é muito longa", + "warning_short_word_limits_reduces_choices": "Aviso: limites de palavras curtas reduzem as opções", + "warning_short_words_reduce_memorability": "Aviso: palavras curtas reduzem a memorização", + "xkcdpass_badge": "Foco na Memorabilidade", + "xkcdpass_description": "Descrição xkcdpass", + "xkcdpass_option_addNumber": "Add Number", + "xkcdpass_option_max_word_length": "Comprimento máximo da palavra", + "xkcdpass_option_max_word_length_description": "0 = no limit, >0 = maximum characters per word", + "xkcdpass_option_numberPosition": "Number Position", + "xkcdpass_option_numberPosition_list_beginning": "No início", + "xkcdpass_option_numberPosition_list_end": "No fim", + "xkcdpass_option_numberPosition_list_random": "Posição aleatória", + "xkcdpass_option_separator": "Separador", + "xkcdpass_option_separator_description": "Single character or character set (random selection). Spaces excluded from multi-character sets.", + "xkcdpass_option_space_handling": "Tratamento de espaços", + "xkcdpass_option_space_handling_description": "Como lidar com palavras contendo espaços", + "xkcdpass_option_space_handling_list_allow": "Permitir (manter espaços)", + "xkcdpass_option_space_handling_list_modify": "Modificar (substituir por _)", + "xkcdpass_option_space_handling_list_skip": "Pular (não selecionar)", + "xkcdpass_option_wordlist": "Lista de palavras", + "xkcdpass_option_words": "Palavras", + "xkcdpass_option_words_description": "Number of words (minimal 2)", + "xkcdpass_title": "XKCD Pass", + "phraseabbreviator_number_zero": "zero", + "phraseabbreviator_number_one": "um", + "phraseabbreviator_number_two": "dois", + "phraseabbreviator_number_three": "três", + "phraseabbreviator_number_four": "quatro", + "phraseabbreviator_number_five": "cinco", + "phraseabbreviator_number_six": "seis", + "phraseabbreviator_number_seven": "sete", + "phraseabbreviator_number_eight": "oito", + "phraseabbreviator_number_nine": "nove", + "phraseabbreviator_number_ten": "dez", + "phraseabbreviator_number_eleven": "onze", + "phraseabbreviator_number_twelve": "doze", + "phraseabbreviator_number_thirteen": "treze", + "phraseabbreviator_number_fourteen": "catorze", + "phraseabbreviator_number_fifteen": "quinze", + "phraseabbreviator_number_sixteen": "dezesseis", + "phraseabbreviator_number_seventeen": "dezessete", + "phraseabbreviator_number_eighteen": "dezoito", + "phraseabbreviator_number_nineteen": "dezenove", + "phraseabbreviator_number_twenty": "vinte", + "xkcdpass_option_use_ai_wordlist": "Usar lista de palavras com IA", + "xkcdpass_option_use_ai_wordlist_description": "Gera uma lista de palavras personalizada usando um modelo de IA", + "xkcdpass_option_ai_wordlist_prompt": "Prompt da lista de palavras de IA", + "xkcdpass_option_ai_wordlist_prompt_description": "Complete o prompt: \"Crie uma lista de X palavras com pelo menos 5 caracteres, que...\"", + "xkcdpass_option_ai_provider": "Provedor de IA", + "xkcdpass_option_ai_provider_description": "Qual provedor LLM usar", + "phrase-abbreviator_option_use_ai_sentence": "Usar frase de IA", + "phrase-abbreviator_option_use_ai_sentence_description": "Permite que a IA gere uma frase a partir da sua instrução", + "phrase-abbreviator_option_ai_prompt": "Prompt de IA", + "phrase-abbreviator_option_ai_prompt_description": "Prompt para a IA gerar uma frase memorável (mínimo de 12 palavras)", + "phrase-abbreviator_option_ai_provider": "Provedor de IA", + "phrase-abbreviator_option_ai_provider_description": "Qual provedor LLM usar para gerar a frase", + "phrase-abbreviator_option_ai_model": "Modelo de IA", + "phrase-abbreviator_option_ai_model_description": "Qual modelo de IA usar", + "high-entropy_option_length_description": "Total length of the generated password", + "high-entropy_option_include_uppercase_description": "Include uppercase letters (A-Z)", + "high-entropy_option_include_lowercase_description": "Include lowercase letters (a-z)", + "high-entropy_option_include_numbers_description": "Include numbers (0-9)", + "high-entropy_option_include_symbols_description": "Include symbols (e.g., !@#$%)", + "xkcdpass_option_wordlist_description": "Wordlist to use for generating the passphrase", + "xkcdpass_option_wordlist_choice_en": "English", + "xkcdpass_option_wordlist_choice_de": "Deutsch", + "xkcdpass_option_wordlist_choice_fr": "Français", + "xkcdpass_option_wordlist_choice_it": "Italiano", + "xkcdpass_option_wordlist_choice_es": "Español", + "xkcdpass_option_space_handling_choice_allow": "Permitir", + "xkcdpass_option_space_handling_choice_skip": "Pular", + "xkcdpass_option_space_handling_choice_modify": "Modificar", + "xkcdpass_option_add_number": "Adicionar número", + "xkcdpass_option_add_number_description": "Add random number to the passphrase", + "xkcdpass_option_number_position": "Posição do número", + "xkcdpass_option_number_position_description": "Where to place the random number", + "xkcdpass_option_number_position_choice_beginning": "No início", + "xkcdpass_option_number_position_choice_end": "No fim", + "xkcdpass_option_number_position_choice_random": "Posição aleatória", + "xkcdpass_option_ai_provider_choice_openai": "OpenAI", + "xkcdpass_option_ai_provider_choice_claude": "Claude", + "xkcdpass_option_ai_provider_choice_gemini": "Gemini", + "xkcdpass_option_ai_provider_choice_perplexity": "Perplexity", + "pwgen_option_type": "Predefinição de comprimento", + "pwgen_option_type_description": "Predefinição opcional de comprimento. Se definida para 8/12/16 caracteres, substitui o valor de Comprimento acima.", + "pwgen_option_type_choice_8-char": "8 caracteres", + "pwgen_option_type_choice_12-char": "12 caracteres", + "pwgen_option_type_choice_16-char": "16 caracteres", + "passkey_option_syllables_description": "Number of pronounceable syllables in the passkey", + "phrase-abbreviator_option_sentence": "Frase", + "phrase-abbreviator_option_sentence_description": "User-supplied sentence (minimum 8 words, must start with capital letter)", + "phrase-abbreviator_option_character_extraction": "Extração de caracteres", + "phrase-abbreviator_option_character_extraction_description": "Method for extracting characters from each word", + "phrase-abbreviator_option_character_extraction_choice_single": "Apenas primeira letra", + "phrase-abbreviator_option_character_extraction_choice_dual": "Primeira letra + próxima vogal/consoante", + "phrase-abbreviator_option_language": "Idioma", + "phrase-abbreviator_option_language_description": "Language for number word conversion", + "phrase-abbreviator_option_language_choice_en": "English", + "phrase-abbreviator_option_language_choice_de": "Alemão", + "phrase-abbreviator_option_language_choice_de_CH": "Suíço-alemão", + "phrase-abbreviator_option_language_choice_fr": "Francês", + "phrase-abbreviator_option_language_choice_it": "Italiano", + "phrase-abbreviator_option_language_choice_es": "Espanhol", + "phrase-abbreviator_option_language_choice_pt": "Português", + "phrase-abbreviator_option_language_choice_ja": "Japonês", + "phrase-abbreviator_option_language_choice_zh": "Chinês", + "phrase-abbreviator_option_add_number": "Adicionar número", + "phrase-abbreviator_option_add_number_description": "Adicionar dígitos aleatórios à senha", + "phrase-abbreviator_option_number_digits": "Número de dígitos", + "phrase-abbreviator_option_number_digits_description": "Quantos dígitos aleatórios adicionar (1-4)", + "phrase-abbreviator_option_number_position": "Posição do número", + "phrase-abbreviator_option_number_position_description": "Colocar o número antes ou depois da senha", + "phrase-abbreviator_option_number_position_choice_prepend": "Antes", + "phrase-abbreviator_option_number_position_choice_append": "Depois", + "phrase-abbreviator_option_ai_provider_choice_openai": "OpenAI", + "phrase-abbreviator_option_ai_provider_choice_claude": "Claude", + "phrase-abbreviator_option_ai_provider_choice_gemini": "Gemini", + "phrase-abbreviator_option_ai_provider_choice_perplexity": "Perplexity", + "phrase-abbreviator_option_ai_model_choice_gpt-3.5-turbo": "GPT-3.5 Turbo", + "phrase-abbreviator_option_ai_model_choice_gpt-4": "GPT-4", + "phrase-abbreviator_option_ai_model_choice_gpt-4-turbo": "GPT-4 Turbo", + "phrase-abbreviator_option_ai_model_choice_gpt-4o": "GPT-4 Omni", + "collapse_group_basic": "Opções básicas", + "collapse_group_advanced": "Opções avançadas", + "collapse_group_ai": "Recursos de IA", + "collapse_group_expert": "Opções avançadas de especialista", + "collapse_group_character_set": "Conjunto de caracteres", + "copied": "Copiado", + "pwgen_option_type_choice_custom": "Usar configuração de comprimento", + "roulette": "Roleta", + "stop": "Parar", + "roulette_interval": "Intervalo (s)", + "roulette_slow_down": "Aumentar intervalo (mais lento)", + "roulette_speed_up": "Reduzir intervalo (mais rápido)" +} diff --git a/locales/zh.json b/locales/zh.json new file mode 100644 index 0000000..daa3262 --- /dev/null +++ b/locales/zh.json @@ -0,0 +1,223 @@ +{ + "api_documentation": "API文档", + "app_title": "密码生成器", + "close": "关闭", + "copied_to_clipboard": "Copied to clipboard!", + "copy": "复制", + "copy_failed": "复制失败", + "count": "数量", + "deutsch": "Deutsch", + "dice_rolls": "骰子结果", + "diceware_badge": "安全重点", + "diceware_description": "真正的EFF Diceware方法", + "diceware_option_show_dice_rolls": "Show Dice Rolls", + "diceware_option_show_dice_rolls_description": "Educational: display the dice rolls used to select each word", + "diceware_option_uppercase_first": "Capitalize First Word", + "diceware_option_uppercase_first_description": "Capitalize only the first word (traditional Diceware style)", + "diceware_option_words": "Words", + "diceware_option_words_description": "Minimum 6 words recommended for security (77.5 bits entropy)", + "diceware_title": "Diceware", + "english": "英语", + "entropy": "熵", + "length": "长度", + "details": "详细信息", + "security_level": "安全等级", + "very_strong": "非常强", + "strong": "强", + "adequate": "适中", + "weak": "弱", + "very_weak": "非常弱", + "chars": "字符", + "error_generating_passwords": "生成密码时出错", + "espanol": "西班牙语", + "footer_text": "页脚文本", + "francais": "法语", + "generate": "生成", + "generating": "Generating...", + "high-entropy_description": "高熵描述", + "high-entropy_option_include_lowercase": "Include Lowercase", + "high-entropy_option_include_numbers": "Include Numbers", + "high-entropy_option_include_symbols": "Include Symbols", + "high-entropy_option_include_uppercase": "Include Uppercase", + "high-entropy_option_length": "Length", + "high-entropy_title": "High Entropy", + "info_spaces_replaced_with_underscores": "所选单词中的空格会替换为下划线 (_) 。", + "info_words_with_spaces_excluded": "包含空格的单词会被排除在选择范围之外。", + "italiano": "意大利语", + "language": "Language:", + "loading_generators": "正在加载生成器", + "loading_password_generators": "Loading password generators...", + "native_group_explanation": "用于生成可发音密码的 PwGen 原生生成器选项。", + "native_pwgen": "原生选项", + "no_spaces_in_separator": "当空格处理设为“修改”或“跳过”时,不要在分隔符中使用空格。", + "passkey_description": "通行密钥描述", + "passkey_option_syllables": "Syllables", + "passkey_title": "Passkey", + "password_generator": "Password Generator", + "php_fallback": "在原生 pwgen 不可用时的 PHP 回退代码。", + "portugues": "葡萄牙语", + "pwgen_badge": "增强版", + "pwgen_description": "PWGen描述", + "pwgen_option_include_capitals": "包含大写字母", + "pwgen_option_include_capitals_description": "生成的密码将包含大写字母。", + "pwgen_option_include_numbers": "包含数字", + "pwgen_option_include_numbers_description": "生成的密码将包含数字。", + "pwgen_option_length": "长度", + "pwgen_option_length_description": "密码总长度,包括分隔符(最少 4 个字符)", + "pwgen_option_no_ambiguous": "不含歧义字符", + "pwgen_option_no_ambiguous_description": "排除 0、O、l、1 等字符,以提高可读性", + "pwgen_option_pattern_complexity": "复杂模式", + "pwgen_option_pattern_complexity_description": "控制生成模式的复杂度。", + "pwgen_option_pattern_complexity_list_balanced": "平衡复杂度", + "pwgen_option_pattern_complexity_list_complex": "复杂模式", + "pwgen_option_pattern_complexity_list_simple": "简单模式", + "pwgen_option_secure_mode": "安全模式", + "pwgen_option_secure_mode_description": "生成完全随机的密码,而不是可发音的单词", + "pwgen_option_separator": "分隔符", + "pwgen_option_separator_description": "用于分隔音节的字符。如果定义了多个字符,则随机选择其中一个作为分隔符。为空时不进行分隔。", + "pwgen_option_syllable_count": "音节数", + "pwgen_option_syllable_count_description": "要生成的音节数(仅在使用分隔符时生效)", + "pwgen_title": "PWGen", + "results": "结果", + "schwyzerduetsch": "瑞士德语", + "secure_mode_disables_syllable_separation": "安全模式会禁用音节分隔。", + "separator_method_info": "分隔方法说明", + "single_space_allowed": "仅允许单个空格", + "success": "成功", + "syllable_group_explanation": "音节说明", + "syllable_length_too_short": "音节太短", + "syllable_length_very_long": "音节太长", + "warning_short_word_limits_reduces_choices": "警告:较短的单词限制会减少可选项", + "warning_short_words_reduce_memorability": "警告:短单词会降低可记忆性", + "xkcdpass_badge": "记忆性重点", + "xkcdpass_description": "XKCDPass描述", + "xkcdpass_option_addNumber": "Add Number", + "xkcdpass_option_max_word_length": "单词最大长度", + "xkcdpass_option_max_word_length_description": "0 = no limit, >0 = maximum characters per word", + "xkcdpass_option_numberPosition": "Number Position", + "xkcdpass_option_numberPosition_list_beginning": "开头", + "xkcdpass_option_numberPosition_list_end": "结尾", + "xkcdpass_option_numberPosition_list_random": "随机位置", + "xkcdpass_option_separator": "分隔符", + "xkcdpass_option_separator_description": "Single character or character set (random selection). Spaces excluded from multi-character sets.", + "xkcdpass_option_space_handling": "空格处理", + "xkcdpass_option_space_handling_description": "如何处理包含空格的单词", + "xkcdpass_option_space_handling_list_allow": "允许(保留空格)", + "xkcdpass_option_space_handling_list_modify": "修改(替换为 _)", + "xkcdpass_option_space_handling_list_skip": "跳过(不选择)", + "xkcdpass_option_wordlist": "单词列表", + "xkcdpass_option_words": "单词", + "xkcdpass_option_words_description": "Number of words (minimal 2)", + "xkcdpass_title": "XKCD Pass", + "phraseabbreviator_number_zero": "零", + "phraseabbreviator_number_one": "一", + "phraseabbreviator_number_two": "二", + "phraseabbreviator_number_three": "三", + "phraseabbreviator_number_four": "四", + "phraseabbreviator_number_five": "五", + "phraseabbreviator_number_six": "六", + "phraseabbreviator_number_seven": "七", + "phraseabbreviator_number_eight": "八", + "phraseabbreviator_number_nine": "九", + "phraseabbreviator_number_ten": "十", + "phraseabbreviator_number_eleven": "十一", + "phraseabbreviator_number_twelve": "十二", + "phraseabbreviator_number_thirteen": "十三", + "phraseabbreviator_number_fourteen": "十四", + "phraseabbreviator_number_fifteen": "十五", + "phraseabbreviator_number_sixteen": "十六", + "phraseabbreviator_number_seventeen": "十七", + "phraseabbreviator_number_eighteen": "十八", + "phraseabbreviator_number_nineteen": "十九", + "phraseabbreviator_number_twenty": "二十", + "xkcdpass_option_use_ai_wordlist": "使用 AI 词表", + "xkcdpass_option_use_ai_wordlist_description": "使用 AI 模型生成自定义词表", + "xkcdpass_option_ai_wordlist_prompt": "AI 词表提示词", + "xkcdpass_option_ai_wordlist_prompt_description": "完成提示词:\"创建一个至少 5 个字符的 X 个单词列表,要求...\"", + "xkcdpass_option_ai_provider": "AI 提供商", + "xkcdpass_option_ai_provider_description": "使用哪个 LLM 提供商", + "phrase-abbreviator_option_use_ai_sentence": "使用 AI 句子", + "phrase-abbreviator_option_use_ai_sentence_description": "让 AI 根据你的提示生成句子", + "phrase-abbreviator_option_ai_prompt": "AI 提示词", + "phrase-abbreviator_option_ai_prompt_description": "让 AI 生成易记句子的提示词(至少 12 个词)", + "phrase-abbreviator_option_ai_provider": "AI 提供商", + "phrase-abbreviator_option_ai_provider_description": "用于句子生成的 LLM 提供商", + "phrase-abbreviator_option_ai_model": "AI 模型", + "phrase-abbreviator_option_ai_model_description": "使用哪个 AI 模型", + "high-entropy_option_length_description": "Total length of the generated password", + "high-entropy_option_include_uppercase_description": "Include uppercase letters (A-Z)", + "high-entropy_option_include_lowercase_description": "Include lowercase letters (a-z)", + "high-entropy_option_include_numbers_description": "Include numbers (0-9)", + "high-entropy_option_include_symbols_description": "Include symbols (e.g., !@#$%)", + "xkcdpass_option_wordlist_description": "Wordlist to use for generating the passphrase", + "xkcdpass_option_wordlist_choice_en": "English", + "xkcdpass_option_wordlist_choice_de": "Deutsch", + "xkcdpass_option_wordlist_choice_fr": "Français", + "xkcdpass_option_wordlist_choice_it": "Italiano", + "xkcdpass_option_wordlist_choice_es": "Español", + "xkcdpass_option_space_handling_choice_allow": "允许", + "xkcdpass_option_space_handling_choice_skip": "跳过", + "xkcdpass_option_space_handling_choice_modify": "修改", + "xkcdpass_option_add_number": "添加数字", + "xkcdpass_option_add_number_description": "Add random number to the passphrase", + "xkcdpass_option_number_position": "数字位置", + "xkcdpass_option_number_position_description": "Where to place the random number", + "xkcdpass_option_number_position_choice_beginning": "开头", + "xkcdpass_option_number_position_choice_end": "结尾", + "xkcdpass_option_number_position_choice_random": "随机位置", + "xkcdpass_option_ai_provider_choice_openai": "OpenAI", + "xkcdpass_option_ai_provider_choice_claude": "Claude", + "xkcdpass_option_ai_provider_choice_gemini": "Gemini", + "xkcdpass_option_ai_provider_choice_perplexity": "Perplexity", + "pwgen_option_type": "长度预设", + "pwgen_option_type_description": "可选的长度预设。若设置为 8/12/16 个字符,将覆盖上方的长度值。", + "pwgen_option_type_choice_8-char": "8 个字符", + "pwgen_option_type_choice_12-char": "12 个字符", + "pwgen_option_type_choice_16-char": "16 个字符", + "passkey_option_syllables_description": "Number of pronounceable syllables in the passkey", + "phrase-abbreviator_option_sentence": "句子", + "phrase-abbreviator_option_sentence_description": "User-supplied sentence (minimum 8 words, must start with capital letter)", + "phrase-abbreviator_option_character_extraction": "字符提取", + "phrase-abbreviator_option_character_extraction_description": "Method for extracting characters from each word", + "phrase-abbreviator_option_character_extraction_choice_single": "仅首字母", + "phrase-abbreviator_option_character_extraction_choice_dual": "首字母 + 下一个元音/辅音", + "phrase-abbreviator_option_language": "语言", + "phrase-abbreviator_option_language_description": "Language for number word conversion", + "phrase-abbreviator_option_language_choice_en": "English", + "phrase-abbreviator_option_language_choice_de": "德语", + "phrase-abbreviator_option_language_choice_de_CH": "瑞士德语", + "phrase-abbreviator_option_language_choice_fr": "法语", + "phrase-abbreviator_option_language_choice_it": "意大利语", + "phrase-abbreviator_option_language_choice_es": "西班牙语", + "phrase-abbreviator_option_language_choice_pt": "葡萄牙语", + "phrase-abbreviator_option_language_choice_ja": "日语", + "phrase-abbreviator_option_language_choice_zh": "中文", + "phrase-abbreviator_option_add_number": "添加数字", + "phrase-abbreviator_option_add_number_description": "向密码中添加随机数字", + "phrase-abbreviator_option_number_digits": "数字数量", + "phrase-abbreviator_option_number_digits_description": "添加多少个随机数字(1-4)", + "phrase-abbreviator_option_number_position": "数字位置", + "phrase-abbreviator_option_number_position_description": "将数字放在密码前面或后面", + "phrase-abbreviator_option_number_position_choice_prepend": "前面", + "phrase-abbreviator_option_number_position_choice_append": "后面", + "phrase-abbreviator_option_ai_provider_choice_openai": "OpenAI", + "phrase-abbreviator_option_ai_provider_choice_claude": "Claude", + "phrase-abbreviator_option_ai_provider_choice_gemini": "Gemini", + "phrase-abbreviator_option_ai_provider_choice_perplexity": "Perplexity", + "phrase-abbreviator_option_ai_model_choice_gpt-3.5-turbo": "GPT-3.5 Turbo", + "phrase-abbreviator_option_ai_model_choice_gpt-4": "GPT-4", + "phrase-abbreviator_option_ai_model_choice_gpt-4-turbo": "GPT-4 Turbo", + "phrase-abbreviator_option_ai_model_choice_gpt-4o": "GPT-4 Omni", + "collapse_group_basic": "基础选项", + "collapse_group_advanced": "高级选项", + "collapse_group_ai": "AI 功能", + "collapse_group_expert": "专家选项", + "collapse_group_character_set": "字符集", + "copied": "已复制", + "pwgen_option_type_choice_custom": "使用长度设置", + "roulette": "轮盘", + "stop": "停止", + "roulette_interval": "间隔(秒)", + "roulette_slow_down": "增加间隔(更慢)", + "roulette_speed_up": "减少间隔(更快)" +} diff --git a/logs/README.md b/logs/README.md new file mode 100644 index 0000000..328be3d --- /dev/null +++ b/logs/README.md @@ -0,0 +1,11 @@ +# Logs Directory + +This directory contains application logs. + +Make sure this directory is writable by the web server: + +```bash +chmod 755 logs/ +``` + +Log files will be created automatically when the application runs. diff --git a/public/index.php b/public/index.php new file mode 100644 index 0000000..3993de0 --- /dev/null +++ b/public/index.php @@ -0,0 +1,36 @@ +load(); + +// Build DI container +$containerBuilder = new ContainerBuilder(); + +// Set up dependencies +$dependencies = require __DIR__ . '/../config/dependencies.php'; +$dependencies($containerBuilder); + +$container = $containerBuilder->build(); + +AppFactory::setContainer($container); +$app = AppFactory::create(); + +// Add middleware +$middleware = require __DIR__ . '/../config/middleware.php'; +$middleware($app); + +// Register routes +$routes = require __DIR__ . '/../config/routes.php'; +$routes($app); + +$app->run(); diff --git a/public/pwgenerator-swagger-spec.json b/public/pwgenerator-swagger-spec.json new file mode 100644 index 0000000..b01178c --- /dev/null +++ b/public/pwgenerator-swagger-spec.json @@ -0,0 +1,480 @@ +{ + "openapi": "3.0.3", + "info": { + "title": "Password Generator API", + "version": "2.0.0", + "description": "Public password generation API and locale metadata for the password generator web app." + }, + "servers": [ + { + "url": "http://localhost:8080" + } + ], + "paths": { + "/api/v1/health": { + "get": { + "summary": "Health check", + "description": "Returns the health status of the API service.", + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HealthSuccess" + } + } + } + }, + "500": { + "description": "Error response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + } + } + }, + "/api/v1/locales/{lang}": { + "get": { + "summary": "Fetch locale data", + "description": "Returns the translation resource for a given locale code.", + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/LocaleSuccess" + } + } + } + }, + "404": { + "description": "Error response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "parameters": [ + { + "name": "lang", + "in": "path", + "required": true, + "schema": { + "type": "string", + "enum": [ + "en", + "de", + "de_CH", + "fr", + "it", + "es", + "pt", + "ja", + "zh" + ] + }, + "description": "Locale code to fetch translation data for." + } + ] + } + }, + "/api/v1/passwords": { + "get": { + "summary": "List available password generation types", + "description": "Returns the supported password generation algorithms.", + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": true + }, + "data": { + "type": "object", + "properties": { + "types": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "timestamp": { + "type": "string", + "format": "date-time" + }, + "message": { + "type": "string", + "example": "Available password generation types" + } + }, + "required": [ + "success", + "data", + "timestamp" + ] + } + } + } + }, + "500": { + "description": "Error response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + } + } + }, + "/api/v1/passwords/generate": { + "post": { + "summary": "Generate one or more passwords", + "description": "Generates passwords using the chosen algorithm and options.", + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PasswordGenerationSuccess" + } + } + } + }, + "400": { + "description": "Error response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PasswordGenerationRequest" + } + } + } + } + } + }, + "/api/v1/passwords/generators": { + "get": { + "summary": "API route", + "description": "Generated from the public Slim route registry.", + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "additionalProperties": true + } + } + } + }, + "500": { + "description": "Error response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + } + } + }, + "/api/v1/passwords/wordlists": { + "get": { + "summary": "List available XKCD wordlists", + "description": "Returns available language wordlists for passphrase generation.", + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/WordlistsSuccess" + } + } + } + }, + "500": { + "description": "Error response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + } + } + } + }, + "components": { + "schemas": { + "ErrorResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": false + }, + "error": { + "type": "object", + "properties": { + "message": { + "type": "string", + "example": "Request failed" + }, + "code": { + "type": "string", + "example": "ERROR" + }, + "status": { + "type": "integer", + "example": 400 + } + } + }, + "timestamp": { + "type": "string", + "format": "date-time" + } + }, + "required": [ + "success", + "error", + "timestamp" + ] + }, + "PasswordGenerationRequest": { + "type": "object", + "properties": { + "type": { + "type": "string", + "example": "high-entropy" + }, + "count": { + "type": "integer", + "example": 1 + }, + "options": { + "type": "object", + "additionalProperties": true + } + } + }, + "PasswordGenerationSuccess": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": true + }, + "data": { + "type": "object", + "properties": { + "passwords": { + "type": "array", + "items": { + "type": "string" + } + }, + "entropy_bits": { + "type": "number", + "format": "float", + "example": 128 + }, + "security_assessment": { + "type": "string", + "example": "Strong \u2014 this password has good entropy and is suitable for most uses." + }, + "raw_technical_details": { + "type": "object", + "properties": { + "entropy_bits": { + "type": "number", + "format": "float", + "example": 77.5 + }, + "generator": { + "type": "string", + "example": "XKCD Pass" + }, + "length": { + "type": "integer", + "example": 28 + }, + "security_level": { + "type": "string", + "example": "Strong" + }, + "entropy_breakdown": { + "type": "object", + "properties": { + "entropy_model": { + "type": "string", + "example": "xkcd-candidate-space-v1" + }, + "model_confidence": { + "type": "string", + "enum": [ + "high", + "medium", + "low" + ] + }, + "entropy_bits": { + "type": "number", + "format": "float", + "example": 77.5 + } + }, + "additionalProperties": true + } + }, + "additionalProperties": true + } + } + }, + "timestamp": { + "type": "string", + "format": "date-time" + }, + "message": { + "type": "string", + "example": "Generated 1 password(s) of type 'high-entropy'" + } + }, + "required": [ + "success", + "data", + "timestamp" + ] + }, + "PasswordTypesSuccess": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": true + }, + "data": { + "type": "object", + "properties": { + "types": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "timestamp": { + "type": "string", + "format": "date-time" + } + }, + "required": [ + "success", + "data", + "timestamp" + ] + }, + "WordlistsSuccess": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": true + }, + "data": { + "type": "object", + "properties": { + "wordlists": { + "type": "object", + "additionalProperties": true + }, + "count": { + "type": "integer", + "example": 2 + } + } + }, + "timestamp": { + "type": "string", + "format": "date-time" + }, + "message": { + "type": "string", + "example": "Available wordlists for XKCD password generation" + } + }, + "required": [ + "success", + "data", + "timestamp" + ] + }, + "HealthSuccess": { + "type": "object", + "properties": { + "status": { + "type": "string", + "example": "healthy" + }, + "version": { + "type": "string", + "example": "2.0.0" + }, + "timestamp": { + "type": "string", + "format": "date-time" + } + }, + "required": [ + "status", + "version", + "timestamp" + ] + }, + "LocaleSuccess": { + "type": "object", + "additionalProperties": true + } + } + } +} diff --git a/src/Api/OpenApiGenerator.php b/src/Api/OpenApiGenerator.php new file mode 100644 index 0000000..9e5fbb9 --- /dev/null +++ b/src/Api/OpenApiGenerator.php @@ -0,0 +1,360 @@ + $methods) { + $normalizedPath = self::normalizeRoutePattern($routePath); + $paths[$normalizedPath] = self::buildPathOperations($normalizedPath, $methods); + } + + return [ + 'openapi' => '3.0.3', + 'info' => [ + 'title' => $_ENV['APP_NAME'] ?? 'Password Generator API', + 'version' => $_ENV['APP_VERSION'] ?? '2.0.0', + 'description' => 'Public password generation API and locale metadata for the password generator web app.', + ], + 'servers' => [ + ['url' => $baseUrl], + ], + 'paths' => $paths, + 'components' => [ + 'schemas' => [ + 'ErrorResponse' => [ + 'type' => 'object', + 'properties' => [ + 'success' => ['type' => 'boolean', 'example' => false], + 'error' => [ + 'type' => 'object', + 'properties' => [ + 'message' => ['type' => 'string', 'example' => 'Request failed'], + 'code' => ['type' => 'string', 'example' => 'ERROR'], + 'status' => ['type' => 'integer', 'example' => 400], + ], + ], + 'timestamp' => ['type' => 'string', 'format' => 'date-time'], + ], + 'required' => ['success', 'error', 'timestamp'], + ], + 'PasswordGenerationRequest' => [ + 'type' => 'object', + 'properties' => [ + 'type' => ['type' => 'string', 'example' => 'high-entropy'], + 'count' => ['type' => 'integer', 'example' => 1], + 'options' => ['type' => 'object', 'additionalProperties' => true], + ], + ], + 'PasswordGenerationSuccess' => [ + 'type' => 'object', + 'properties' => [ + 'success' => ['type' => 'boolean', 'example' => true], + 'data' => [ + 'type' => 'object', + 'properties' => [ + 'passwords' => [ + 'type' => 'array', + 'items' => ['type' => 'string'], + ], + 'entropy_bits' => ['type' => 'number', 'format' => 'float', 'example' => 128], + 'security_assessment' => [ + 'type' => 'string', + 'example' => 'Strong — this password has good entropy and is suitable for most uses.', + ], + 'raw_technical_details' => [ + 'type' => 'object', + 'properties' => [ + 'entropy_bits' => ['type' => 'number', 'format' => 'float', 'example' => 77.5], + 'generator' => ['type' => 'string', 'example' => 'XKCD Pass'], + 'length' => ['type' => 'integer', 'example' => 28], + 'security_level' => ['type' => 'string', 'example' => 'Strong'], + 'entropy_breakdown' => [ + 'type' => 'object', + 'properties' => [ + 'entropy_model' => ['type' => 'string', 'example' => 'xkcd-candidate-space-v1'], + 'model_confidence' => ['type' => 'string', 'enum' => ['high', 'medium', 'low']], + 'entropy_bits' => ['type' => 'number', 'format' => 'float', 'example' => 77.5], + ], + 'additionalProperties' => true, + ], + ], + 'additionalProperties' => true, + ], + ], + ], + 'timestamp' => ['type' => 'string', 'format' => 'date-time'], + 'message' => ['type' => 'string', 'example' => 'Generated 1 password(s) of type \'high-entropy\''], + ], + 'required' => ['success', 'data', 'timestamp'], + ], + 'PasswordTypesSuccess' => [ + 'type' => 'object', + 'properties' => [ + 'success' => ['type' => 'boolean', 'example' => true], + 'data' => [ + 'type' => 'object', + 'properties' => [ + 'types' => [ + 'type' => 'array', + 'items' => ['type' => 'string'], + ], + ], + ], + 'timestamp' => ['type' => 'string', 'format' => 'date-time'], + ], + 'required' => ['success', 'data', 'timestamp'], + ], + 'WordlistsSuccess' => [ + 'type' => 'object', + 'properties' => [ + 'success' => ['type' => 'boolean', 'example' => true], + 'data' => [ + 'type' => 'object', + 'properties' => [ + 'wordlists' => [ + 'type' => 'object', + 'additionalProperties' => true, + ], + 'count' => ['type' => 'integer', 'example' => 2], + ], + ], + 'timestamp' => ['type' => 'string', 'format' => 'date-time'], + 'message' => ['type' => 'string', 'example' => 'Available wordlists for XKCD password generation'], + ], + 'required' => ['success', 'data', 'timestamp'], + ], + 'HealthSuccess' => [ + 'type' => 'object', + 'properties' => [ + 'status' => ['type' => 'string', 'example' => 'healthy'], + 'version' => ['type' => 'string', 'example' => '2.0.0'], + 'timestamp' => ['type' => 'string', 'format' => 'date-time'], + ], + 'required' => ['status', 'version', 'timestamp'], + ], + 'LocaleSuccess' => [ + 'type' => 'object', + 'additionalProperties' => true, + ], + ], + ], + ]; + } + + public static function write(string $baseUrl, string $destination): void + { + $directory = dirname($destination); + if (!is_dir($directory)) { + mkdir($directory, 0777, true); + } + + $json = json_encode(self::generate($baseUrl), JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES); + if ($json === false) { + throw new \RuntimeException('Unable to encode OpenAPI document as JSON.'); + } + + file_put_contents($destination, $json . PHP_EOL); + } + + /** + * Collect the public API routes as registered by config/routes.php. + * + * @return array> + */ + private static function registeredPublicRoutes(): array + { + AppFactory::setContainer(new \DI\Container()); + $app = AppFactory::create(); + + $routesDefinition = require __DIR__ . '/../../config/routes.php'; + $routesDefinition($app); + + $routes = []; + foreach ($app->getRouteCollector()->getRoutes() as $route) { + $pattern = $route->getPattern(); + + if (!str_starts_with($pattern, '/api/v1')) { + continue; + } + + $methods = array_map('strtoupper', $route->getMethods()); + $routes[$pattern] = array_values(array_unique($methods)); + } + + ksort($routes); + + return $routes; + } + + private static function normalizeRoutePattern(string $pattern): string + { + return preg_replace('/\{([a-zA-Z0-9_]+):.*\}/', '{$1}', $pattern) ?? $pattern; + } + + /** + * @param array $methods + * @return array + */ + private static function buildPathOperations(string $routePath, array $methods): array + { + $operations = []; + $metadata = self::routeMetadata($routePath); + + foreach ($methods as $method) { + $methodName = strtolower($method); + $operations[$methodName] = [ + 'summary' => $metadata['summary'], + 'description' => $metadata['description'], + 'responses' => self::responses($routePath, $metadata['successCode'], $metadata['errorCode']), + ]; + + if ($method === 'POST' && $routePath === '/api/v1/passwords/generate') { + $operations[$methodName]['requestBody'] = [ + 'required' => true, + 'content' => [ + 'application/json' => [ + 'schema' => [ + '$ref' => '#/components/schemas/PasswordGenerationRequest', + ], + ], + ], + ]; + } + + if (str_contains($routePath, '{lang}')) { + $operations[$methodName]['parameters'] = [[ + 'name' => 'lang', + 'in' => 'path', + 'required' => true, + 'schema' => ['type' => 'string', 'enum' => ['en', 'de', 'de_CH', 'fr', 'it', 'es', 'pt', 'ja', 'zh']], + 'description' => 'Locale code to fetch translation data for.', + ]]; + } + } + + return $operations; + } + + /** + * @return array{summary:string,description:string,successCode:int,errorCode:int} + */ + private static function routeMetadata(string $routePath): array + { + $metadata = [ + '/api/v1/passwords' => [ + 'summary' => 'List available password generation types', + 'description' => 'Returns the supported password generation algorithms.', + 'successCode' => 200, + 'errorCode' => 500, + ], + '/api/v1/passwords/generate' => [ + 'summary' => 'Generate one or more passwords', + 'description' => 'Generates passwords using the chosen algorithm and options.', + 'successCode' => 200, + 'errorCode' => 400, + ], + '/api/v1/passwords/wordlists' => [ + 'summary' => 'List available XKCD wordlists', + 'description' => 'Returns available language wordlists for passphrase generation.', + 'successCode' => 200, + 'errorCode' => 500, + ], + '/api/v1/health' => [ + 'summary' => 'Health check', + 'description' => 'Returns the health status of the API service.', + 'successCode' => 200, + 'errorCode' => 500, + ], + '/api/v1/locales/{lang}' => [ + 'summary' => 'Fetch locale data', + 'description' => 'Returns the translation resource for a given locale code.', + 'successCode' => 200, + 'errorCode' => 404, + ], + ]; + + return $metadata[$routePath] ?? [ + 'summary' => 'API route', + 'description' => 'Generated from the public Slim route registry.', + 'successCode' => 200, + 'errorCode' => 500, + ]; + } + + /** + * @return array> + */ + private static function responses(string $routePath, int $successCode, int $errorCode): array + { + return [ + (string) $successCode => [ + 'description' => 'Successful response', + 'content' => [ + 'application/json' => [ + 'schema' => self::successSchemaFor($routePath), + ], + ], + ], + (string) $errorCode => [ + 'description' => 'Error response', + 'content' => [ + 'application/json' => [ + 'schema' => [ + '$ref' => '#/components/schemas/ErrorResponse', + ], + ], + ], + ], + ]; + } + + private static function successSchemaFor(string $routePath): array + { + return match ($routePath) { + '/api/v1/passwords' => [ + 'type' => 'object', + 'properties' => [ + 'success' => ['type' => 'boolean', 'example' => true], + 'data' => [ + 'type' => 'object', + 'properties' => [ + 'types' => ['type' => 'array', 'items' => ['type' => 'string']], + ], + ], + 'timestamp' => ['type' => 'string', 'format' => 'date-time'], + 'message' => ['type' => 'string', 'example' => 'Available password generation types'], + ], + 'required' => ['success', 'data', 'timestamp'], + ], + '/api/v1/passwords/generate' => [ + '$ref' => '#/components/schemas/PasswordGenerationSuccess', + ], + '/api/v1/passwords/wordlists' => [ + '$ref' => '#/components/schemas/WordlistsSuccess', + ], + '/api/v1/health' => [ + '$ref' => '#/components/schemas/HealthSuccess', + ], + '/api/v1/locales/{lang}' => [ + '$ref' => '#/components/schemas/LocaleSuccess', + ], + default => [ + 'type' => 'object', + 'additionalProperties' => true, + ], + }; + } +} diff --git a/src/Api/PasswordController.php b/src/Api/PasswordController.php new file mode 100644 index 0000000..ee2ad30 --- /dev/null +++ b/src/Api/PasswordController.php @@ -0,0 +1,214 @@ +generatorManager->getAvailableTypes(); + + $this->logger->info('Password types requested', ['count' => count($types)]); + + return $this->responseHelper->successResponse( + $response, + ['types' => $types], + 'Available password generation types' + ); + + } catch (\Exception $e) { + $this->logger->error('Error fetching password types', ['error' => $e->getMessage()]); + + return $this->responseHelper->errorResponse( + $response, + 'Failed to fetch password types', + 500 + ); + } + } + + public function getGenerators(Request $request, Response $response): Response + { + try { + $definitions = array_values($this->generatorManager->getGeneratorDefinitions()); + $appConfig = ConfigLoader::load(); + $rouletteIntervalSeconds = (int)($appConfig['generator']['roulette_interval_seconds'] ?? 3); + $rouletteIntervalSeconds = max(1, min(30, $rouletteIntervalSeconds)); + + $this->logger->info('Generator definitions requested', ['count' => count($definitions)]); + + return $this->responseHelper->successResponse( + $response, + [ + 'generators' => $definitions, + 'settings' => [ + 'roulette_interval_seconds' => $rouletteIntervalSeconds, + ], + ], + 'Available password generators' + ); + } catch (\Exception $e) { + $this->logger->error('Error fetching generator definitions', ['error' => $e->getMessage()]); + + return $this->responseHelper->errorResponse( + $response, + 'Failed to fetch generator definitions', + 500 + ); + } + } + + /** + * NEW: Get available wordlists for XKCD generator + */ + public function getAvailableWordlists(Request $request, Response $response): Response + { + try { + $xkcdGenerator = $this->generatorManager->getGenerator('xkcdpass'); + $availableLanguages = $xkcdGenerator->getAvailableLanguages(); + + // Filter to only show available wordlists + $availableWordlists = array_filter($availableLanguages, function($lang) { + return $lang['available']; + }); + + // If no wordlists are available, provide default language metadata + if (empty($availableWordlists)) { + $this->logger->warning('No wordlist files found, using default language metadata'); + + // Provide basic language info even without files + $defaultLanguages = [ + 'en' => [ + 'name' => 'English (Default)', + 'description' => 'Built-in English word list', + 'file' => 'eff_large_wordlist_en.txt', + 'available' => false, + 'fallback' => true + ], + 'de' => [ + 'name' => 'German (Default)', + 'description' => 'Built-in German word list', + 'file' => 'german_common_words_de.txt', + 'available' => false, + 'fallback' => true + ] + ]; + + $availableWordlists = $defaultLanguages; + } + + $this->logger->info('Wordlists requested', [ + 'available_count' => count($availableWordlists), + 'languages' => array_keys($availableWordlists) + ]); + + return $this->responseHelper->successResponse( + $response, + [ + 'wordlists' => $availableWordlists, + 'count' => count($availableWordlists) + ], + 'Available wordlists for XKCD password generation' + ); + + } catch (\Exception $e) { + $this->logger->error('Error fetching wordlists', ['error' => $e->getMessage()]); + + return $this->responseHelper->errorResponse( + $response, + 'Failed to fetch available wordlists', + 500 + ); + } + } + + public function generatePasswords(Request $request, Response $response): Response + { + try { + $data = $request->getParsedBody(); + + $type = $data['type'] ?? 'high-entropy'; + $count = max(1, min(50, (int)($data['count'] ?? 1))); + $options = $data['options'] ?? []; + + // Validate required parameters + if (empty($type)) { + return $this->responseHelper->errorResponse( + $response, + 'Password type is required', + 400 + ); + } + + $result = $this->generatorManager->generate($type, $count, $options); + + $this->logger->info('Passwords generated', [ + 'type' => $type, + 'count' => $count, + 'entropy' => $result['entropy_bits'], + 'ip' => $this->getClientIp($request) + ]); + + return $this->responseHelper->successResponse( + $response, + $result, + "Generated {$count} password(s) of type '{$type}'" + ); + + } catch (\InvalidArgumentException $e) { + $this->logger->warning('Invalid password generation request', [ + 'error' => $e->getMessage(), + 'ip' => $this->getClientIp($request) + ]); + + return $this->responseHelper->errorResponse( + $response, + $e->getMessage(), + 400 + ); + + } catch (\Exception $e) { + $this->logger->error('Error generating passwords', [ + 'error' => $e->getMessage(), + 'ip' => $this->getClientIp($request) + ]); + + return $this->responseHelper->errorResponse( + $response, + 'Failed to generate passwords', + 500 + ); + } + } + + private function getClientIp(Request $request): string + { + $serverParams = $request->getServerParams(); + + if (!empty($serverParams['HTTP_CLIENT_IP'])) { + return $serverParams['HTTP_CLIENT_IP']; + } elseif (!empty($serverParams['HTTP_X_FORWARDED_FOR'])) { + return explode(',', $serverParams['HTTP_X_FORWARDED_FOR'])[0]; + } elseif (!empty($serverParams['REMOTE_ADDR'])) { + return $serverParams['REMOTE_ADDR']; + } + + return '127.0.0.1'; + } +} \ No newline at end of file diff --git a/src/Generators/AbstractPasswordGenerator.php b/src/Generators/AbstractPasswordGenerator.php new file mode 100644 index 0000000..89c2ce8 --- /dev/null +++ b/src/Generators/AbstractPasswordGenerator.php @@ -0,0 +1,469 @@ +logger = $logger; + $this->loadConfiguration(); + } + + /** + * Load configuration from config/config.json. + */ + protected function loadConfiguration(): void + { + try { + $this->config = ConfigLoader::load(); + LoggingHelper::debug($this->logger, $this->getId(), 'Configuration loaded'); + } catch (\Exception $e) { + LoggingHelper::warning( + $this->logger, + $this->getId(), + 'Failed to load config', + ['error' => $e->getMessage()] + ); + $this->config = []; + } + } + + /** + * Get configuration value using dot notation with safe nested access + * + * Provides a convenient way to access nested configuration arrays using + * dot notation (e.g., 'llm.providers.openai.display_name'). Returns a + * default value if the path doesn't exist, preventing errors from missing keys. + * + * This is particularly useful for: + * - LLM provider configuration: $this->getConfigValue('llm.providers.openai') + * - Locale settings: $this->getConfigValue('locale.default', 'en') + * - Logging levels: $this->getConfigValue('logging.level', 'info') + * - Any nested configuration structure + * + * @param string $path Configuration path using dot notation (e.g., 'key1.key2.key3') + * @param mixed $default Fallback value if path doesn't exist (default: null) + * @return mixed The configuration value at the path, or $default if not found + * + * @throws RuntimeException If $this->config is not loaded or initialized + * + * @example + * // Get a configuration value with fallback + * $lang = $this->getConfigValue('locale.default', 'en'); + * + * // Get nested LLM configuration + * $provider = $this->getConfigValue('llm.providers.openai', null); + * + * // Get logging level (defaults to 'info' if not set) + * $level = $this->getConfigValue('logging.level', 'info'); + * + * // Get a boolean value safely + * $debugMode = $this->getConfigValue('app.debug', false); + * + * // Navigate deep into configuration + * $displayName = $this->getConfigValue('llm.providers.openai.display_name', 'OpenAI'); + */ + protected function getConfigValue(string $path, mixed $default = null): mixed + { + // Guard: Ensure config is loaded + if ($this->config === null) { + if ($this->logger) { + $this->logger->warning( + $this->getId() . ': getConfigValue called but config not loaded', + ['requested_path' => $path] + ); + } + return $default; + } + + // Handle empty path + if (empty($path)) { + return $this->config; + } + + // Split path by dots to get individual keys + $keys = explode('.', $path); + + // Start with the full config array + $current = $this->config; + + // Traverse through each key in the path + foreach ($keys as $key) { + // Validate key is not empty + if (empty($key)) { + LoggingHelper::warning( + $this->logger, + $this->getId(), + 'getConfigValue received empty key in path', + ['path' => $path] + ); + return $default; + } + + // Check if current value is an array and has the key + if (is_array($current)) { + if (isset($current[$key])) { + // Move to the next level + $current = $current[$key]; + } else { + // Key not found in this level + LoggingHelper::debug( + $this->logger, + $this->getId(), + 'getConfigValue key not found in path', + ['key' => $key, 'path' => $path] + ); + return $default; + } + } else { + // Current value is not an array, can't navigate further + LoggingHelper::debug( + $this->logger, + $this->getId(), + 'getConfigValue cannot navigate non-array value', + ['key' => $key, 'path' => $path] + ); + return $default; + } + } + + // Successfully retrieved the value at the path + LoggingHelper::debug( + $this->logger, + $this->getId(), + 'getConfigValue retrieved value', + ['path' => $path, 'type' => gettype($current)] + ); + + return $current; + } + + /** + * Get generator name i18n key (programmatically derived) + */ + public function getNameKey(): string + { + return $this->getId() . '_name'; + } + + /** + * Get generator description i18n key (programmatically derived) + */ + public function getDescriptionKey(): string + { + return $this->getId() . '_description'; + } + + /** + * Get i18n key for option label (programmatically derived) + */ + public function getOptionLabelKey(string $optionName): string + { + return $this->getId() . '_option_' . $optionName . '_label'; + } + + /** + * Get i18n key for option description (programmatically derived) + */ + public function getOptionDescriptionKey(string $optionName): string + { + return $this->getId() . '_option_' . $optionName . '_description'; + } + + /** + * Get i18n key for option group title (programmatically derived) + */ + public function getOptionGroupTitleKey(string $groupName): string + { + return $this->getId() . '_options_group_' . $groupName . '_title'; + } + + /** + * Get i18n key for select option choice (programmatically derived) + */ + public function getOptionChoiceLabelKey(string $optionName, string $choiceValue): string + { + return $this->getId() . '_option_' . $optionName . '_choice_' . $choiceValue; + } + + /** + * Get i18n key for validation error (programmatically derived) + */ + public function getValidationErrorKey(string $optionName): string + { + return $this->getId() . '_option_' . $optionName . '_validation_error'; + } + + /** + * Get all i18n keys used by this generator + * + * Automatically collects all keys from generator metadata and options + */ + public function getAllI18nKeys(): array + { + $keys = []; + + // Generator metadata keys + $keys[] = $this->getNameKey(); + $keys[] = $this->getDescriptionKey(); + + $optionDefs = $this->getOptionDefinitions(); + $groups = []; + + foreach ($optionDefs as $optionName => $definition) { + // Option label and description keys + $keys[] = $this->getOptionLabelKey($optionName); + $keys[] = $this->getOptionDescriptionKey($optionName); + $keys[] = $this->getValidationErrorKey($optionName); + + // Group title key (collect unique groups) + $group = $definition['group'] ?? 'basic'; + if (!in_array($group, $groups)) { + $groups[] = $group; + $keys[] = $this->getOptionGroupTitleKey($group); + } + + // Select option choice keys (if translateChoices is true) + if ($definition['type'] === 'select' && ($definition['translateChoices'] ?? true)) { + $choices = $definition['choices'] ?? []; + foreach ($choices as $choice) { + $value = is_array($choice) ? $choice['value'] : $choice; + $keys[] = $this->getOptionChoiceLabelKey($optionName, $value); + } + } + } + + return $keys; + } + + /** + * Get default options from definitions + */ + public function getDefaultOptions(): array + { + $defaults = []; + foreach ($this->getOptionDefinitions() as $name => $definition) { + $defaults[$name] = $definition['default'] ?? null; + } + return $defaults; + } + + /** + * Get complete option schema with derived i18n keys + */ + public function getOptionSchema(): array + { + $schema = []; + $optionDefs = $this->getOptionDefinitions(); + + foreach ($optionDefs as $name => $definition) { + $option = [ + 'name' => $name, + 'type' => $definition['type'], + 'labelKey' => $this->getOptionLabelKey($name), + 'descriptionKey' => $this->getOptionDescriptionKey($name), + 'default' => $definition['default'] ?? null, + 'required' => $definition['required'] ?? false, + 'group' => $definition['group'] ?? 'basic', + 'groupTitleKey' => $this->getOptionGroupTitleKey($definition['group'] ?? 'basic'), + 'validationErrorKey' => $this->getValidationErrorKey($name) + ]; + + // Type-specific properties + switch ($definition['type']) { + case 'integer': + if (isset($definition['min'])) $option['min'] = $definition['min']; + if (isset($definition['max'])) $option['max'] = $definition['max']; + break; + + case 'string': + if (isset($definition['minLength'])) $option['minLength'] = $definition['minLength']; + if (isset($definition['maxLength'])) $option['maxLength'] = $definition['maxLength']; + if (isset($definition['pattern'])) $option['pattern'] = $definition['pattern']; + break; + + case 'select': + $translateChoices = $definition['translateChoices'] ?? true; + $option['translateChoices'] = $translateChoices; + + $formattedChoices = []; + foreach ($definition['choices'] ?? [] as $choice) { + if (is_array($choice)) { + $value = $choice['value']; + $label = $choice['label']; + } else { + $value = $choice; + $label = $choice; + } + + $formattedChoices[] = [ + 'value' => $value, + 'label' => $label, + 'labelKey' => $translateChoices + ? $this->getOptionChoiceLabelKey($name, $value) + : null + ]; + } + $option['choices'] = $formattedChoices; + break; + } + + $schema[] = $option; + } + + return $schema; + } + + /** + * Validate options against definitions + */ + public function validateOptions(array $options): array + { + $definitions = $this->getOptionDefinitions(); + $validated = $this->getDefaultOptions(); + + foreach ($definitions as $name => $definition) { + // Skip if option not provided and not required + if (!isset($options[$name])) { + if ($definition['required'] ?? false) { + throw new InvalidArgumentException( + "Required option '{$name}' is missing" + ); + } + continue; + } + + $value = $options[$name]; + + // Type-specific validation + switch ($definition['type']) { + case 'integer': + if (!is_int($value) && !is_numeric($value)) { + throw new InvalidArgumentException( + "Option '{$name}' must be an integer" + ); + } + $value = (int)$value; + + if (isset($definition['min']) && $value < $definition['min']) { + throw new InvalidArgumentException( + "Option '{$name}' must be at least {$definition['min']}" + ); + } + + if (isset($definition['max']) && $value > $definition['max']) { + throw new InvalidArgumentException( + "Option '{$name}' must be at most {$definition['max']}" + ); + } + break; + + case 'boolean': + if (!is_bool($value) && !in_array($value, [0, 1, '0', '1'], true)) { + throw new InvalidArgumentException( + "Option '{$name}' must be a boolean" + ); + } + $value = (bool)$value; + break; + + case 'string': + if (!is_string($value)) { + throw new InvalidArgumentException( + "Option '{$name}' must be a string" + ); + } + + $length = strlen($value); + if (isset($definition['minLength']) && $length < $definition['minLength']) { + throw new InvalidArgumentException( + "Option '{$name}' must be at least {$definition['minLength']} characters" + ); + } + + if (isset($definition['maxLength']) && $length > $definition['maxLength']) { + throw new InvalidArgumentException( + "Option '{$name}' must be at most {$definition['maxLength']} characters" + ); + } + + if (isset($definition['pattern']) && !preg_match($definition['pattern'], $value)) { + throw new InvalidArgumentException( + "Option '{$name}' does not match required pattern" + ); + } + break; + + case 'select': + if (!is_string($value)) { + throw new InvalidArgumentException( + "Option '{$name}' must be a string" + ); + } + + $validValues = array_map(function ($choice) { + return is_array($choice) ? $choice['value'] : $choice; + }, $definition['choices'] ?? []); + + if (!in_array($value, $validValues, true)) { + throw new InvalidArgumentException( + "Option '{$name}' must be one of: " . implode(', ', $validValues) + ); + } + break; + } + + $validated[$name] = $value; + } + + return $validated; + } + + /** + * Parse wordlist entry that may contain word and explanation separated by tab + * Returns array with 'word' and 'explanation' keys + */ + protected function parseWordlistEntry(string $entry): array + { + $parts = explode("\t", $entry, 2); + return [ + 'word' => trim($parts[0]), + 'explanation' => isset($parts[1]) ? trim($parts[1]) : null + ]; + } + + /** + * Format multiple word explanations for display + */ + protected function formatExplanations(array $wordExplanations): ?string + { + $explanations = array_filter( + array_column($wordExplanations, 'explanation') + ); + + if (empty($explanations)) { + return null; + } + + return implode(' — ', $explanations); + } +} diff --git a/src/Generators/Classes/PwGenPhpNg.class.php b/src/Generators/Classes/PwGenPhpNg.class.php new file mode 100644 index 0000000..474fdf4 --- /dev/null +++ b/src/Generators/Classes/PwGenPhpNg.class.php @@ -0,0 +1,317 @@ + + * + * PHP implementation credits: + * Copyright (c) 2012 Roderik van der Veer + * BSD License (see https://github.com/roderik/pwgen-php/blob/master/LICENSE) + * Original source: https://github.com/roderik/pwgen-php + * + * Modernized for PHP 8+ by Password Generator Project, 2025. + * This class provides a fallback for pwgen-style password generation when + * the native pwgen executable is not available. + * + * Based on NIST FIPS 181 - Federal Information Processing Standards Publication 181 + * "Automated Password Generator" (1993) + */ +class PwGenPhpNg +{ + // Character classification flags (based on NIST FIPS 181) + private const VOWEL = 0x01; + private const CONSONANT = 0x02; + private const DIPHTHONG = 0x04; + private const NOT_FIRST = 0x08; + + // Unit definitions with pronunciability rules + private array $elements = [ + 'a' => ['flags' => self::VOWEL, 'weight' => 4], + 'ae' => ['flags' => self::VOWEL | self::DIPHTHONG, 'weight' => 1], + 'ah' => ['flags' => self::VOWEL | self::DIPHTHONG, 'weight' => 1], + 'ai' => ['flags' => self::VOWEL | self::DIPHTHONG, 'weight' => 1], + 'b' => ['flags' => self::CONSONANT, 'weight' => 2], + 'c' => ['flags' => self::CONSONANT, 'weight' => 2], + 'ch' => ['flags' => self::CONSONANT | self::DIPHTHONG, 'weight' => 1], + 'd' => ['flags' => self::CONSONANT, 'weight' => 2], + 'e' => ['flags' => self::VOWEL, 'weight' => 4], + 'ee' => ['flags' => self::VOWEL | self::DIPHTHONG, 'weight' => 1], + 'ei' => ['flags' => self::VOWEL | self::DIPHTHONG, 'weight' => 1], + 'f' => ['flags' => self::CONSONANT, 'weight' => 2], + 'g' => ['flags' => self::CONSONANT, 'weight' => 2], + 'gh' => ['flags' => self::CONSONANT | self::DIPHTHONG | self::NOT_FIRST, 'weight' => 1], + 'h' => ['flags' => self::CONSONANT, 'weight' => 2], + 'i' => ['flags' => self::VOWEL, 'weight' => 4], + 'ie' => ['flags' => self::VOWEL | self::DIPHTHONG, 'weight' => 1], + 'j' => ['flags' => self::CONSONANT, 'weight' => 1], + 'k' => ['flags' => self::CONSONANT, 'weight' => 2], + 'l' => ['flags' => self::CONSONANT, 'weight' => 2], + 'm' => ['flags' => self::CONSONANT, 'weight' => 2], + 'n' => ['flags' => self::CONSONANT, 'weight' => 2], + 'ng' => ['flags' => self::CONSONANT | self::DIPHTHONG | self::NOT_FIRST, 'weight' => 1], + 'o' => ['flags' => self::VOWEL, 'weight' => 4], + 'oh' => ['flags' => self::VOWEL | self::DIPHTHONG, 'weight' => 1], + 'oo' => ['flags' => self::VOWEL | self::DIPHTHONG, 'weight' => 1], + 'p' => ['flags' => self::CONSONANT, 'weight' => 2], + 'ph' => ['flags' => self::CONSONANT | self::DIPHTHONG, 'weight' => 1], + 'qu' => ['flags' => self::CONSONANT | self::DIPHTHONG, 'weight' => 1], + 'r' => ['flags' => self::CONSONANT, 'weight' => 2], + 'rh' => ['flags' => self::CONSONANT | self::DIPHTHONG, 'weight' => 1], + 's' => ['flags' => self::CONSONANT, 'weight' => 2], + 'sh' => ['flags' => self::CONSONANT | self::DIPHTHONG, 'weight' => 1], + 't' => ['flags' => self::CONSONANT, 'weight' => 2], + 'th' => ['flags' => self::CONSONANT | self::DIPHTHONG, 'weight' => 1], + 'u' => ['flags' => self::VOWEL, 'weight' => 4], + 'v' => ['flags' => self::CONSONANT, 'weight' => 1], + 'w' => ['flags' => self::CONSONANT, 'weight' => 2], + 'wh' => ['flags' => self::CONSONANT | self::DIPHTHONG, 'weight' => 1], + 'x' => ['flags' => self::CONSONANT | self::NOT_FIRST, 'weight' => 1], + 'y' => ['flags' => self::VOWEL, 'weight' => 2], + 'z' => ['flags' => self::CONSONANT, 'weight' => 1], + ]; + + private array $vowels = []; + private array $consonants = []; + + public function __construct() + { + $this->initializePhonemes(); + } + + /** + * Initialize phoneme arrays based on element classification + */ + private function initializePhonemes(): void + { + foreach ($this->elements as $phoneme => $properties) { + if ($properties['flags'] & self::VOWEL) { + for ($i = 0; $i < $properties['weight']; $i++) { + $this->vowels[] = $phoneme; + } + } + if ($properties['flags'] & self::CONSONANT) { + for ($i = 0; $i < $properties['weight']; $i++) { + $this->consonants[] = $phoneme; + } + } + } + } + + /** + * Generate pronounceable passwords using pwgen logic + * + * @param int $length Minimum length of password + * @param int $count Number of passwords to generate + * @param bool $includeNumbers Include numbers in passwords + * @param bool $includeCapitals Include capital letters + * @return array Array of generated passwords + */ + public function generate(int $length = 8, int $count = 1, bool $includeNumbers = true, bool $includeCapitals = true): array + { + if ($length < 4) { + $length = 4; // Minimum for pronounceable passwords + } + + $passwords = []; + for ($i = 0; $i < $count; $i++) { + $password = $this->generatePassword($length, $includeNumbers, $includeCapitals); + $passwords[] = $password; + } + + return $passwords; + } + + /** + * Generate a single pronounceable password + */ + private function generatePassword(int $length, bool $includeNumbers, bool $includeCapitals): string + { + $password = ''; + $currentLength = 0; + $lastWasVowel = false; + $syllableLength = 0; + $maxAttempts = 100; + $attempts = 0; + + while ($currentLength < $length && $attempts < $maxAttempts) { + $attempts++; + + // Start new syllable with consonant, then alternate + if ($syllableLength === 0 || ($syllableLength > 0 && $lastWasVowel)) { + // Choose consonant + $phoneme = $this->selectConsonant($currentLength === 0); + $lastWasVowel = false; + } else { + // Choose vowel + $phoneme = $this->selectVowel(); + $lastWasVowel = true; + } + + // Check if adding this phoneme exceeds length + if ($currentLength + strlen($phoneme) > $length) { + // Try to find a shorter phoneme or end the password + if ($lastWasVowel) { + $phoneme = $this->selectVowel(1); // Single character vowel + } else { + $phoneme = $this->selectConsonant(false, 1); // Single character consonant + } + + if ($currentLength + strlen($phoneme) > $length) { + break; // Can't fit anything more + } + } + + $password .= $phoneme; + $currentLength += strlen($phoneme); + $syllableLength++; + + // End syllable after 2-4 phonemes + if ($syllableLength >= 2 && random_int(0, 2) === 0) { + $syllableLength = 0; + $lastWasVowel = false; + } + } + + // Apply post-processing + if ($includeCapitals) { + $password = $this->addCapitalization($password); + } + + if ($includeNumbers && strlen($password) < $length) { + $password = $this->addNumbers($password, $length); + } + + return $password; + } + + /** + * Select a consonant phoneme + */ + private function selectConsonant(bool $isFirst = false, int $maxLength = PHP_INT_MAX): string + { + $candidates = []; + + foreach ($this->consonants as $consonant) { + $element = $this->elements[$consonant]; + + // Skip if not allowed at beginning + if ($isFirst && ($element['flags'] & self::NOT_FIRST)) { + continue; + } + + // Skip if too long + if (strlen($consonant) > $maxLength) { + continue; + } + + $candidates[] = $consonant; + } + + if (empty($candidates)) { + return 'b'; // Fallback + } + + return $candidates[random_int(0, count($candidates) - 1)]; + } + + /** + * Select a vowel phoneme + */ + private function selectVowel(int $maxLength = PHP_INT_MAX): string + { + $candidates = []; + + foreach ($this->vowels as $vowel) { + if (strlen($vowel) <= $maxLength) { + $candidates[] = $vowel; + } + } + + if (empty($candidates)) { + return 'a'; // Fallback + } + + return $candidates[random_int(0, count($candidates) - 1)]; + } + + /** + * Add capitalization to password (typically first letter) + */ + private function addCapitalization(string $password): string + { + if (strlen($password) === 0) { + return $password; + } + + // Capitalize first letter + return ucfirst(strtolower($password)); + } + + /** + * Add numbers to password if there's remaining length + */ + private function addNumbers(string $password, int $targetLength): string + { + $remaining = $targetLength - strlen($password); + + if ($remaining <= 0) { + return $password; + } + + // Add 1-2 numbers + $numbersToAdd = min($remaining, random_int(1, 2)); + + for ($i = 0; $i < $numbersToAdd; $i++) { + $password .= (string)random_int(0, 9); + } + + return $password; + } + + /** + * Check if a password meets basic pronounceability rules + */ + public function isPronounceablePassword(string $password): bool + { + if (strlen($password) < 3) { + return false; + } + + $vowelCount = 0; + $consonantCount = 0; + + // Simple heuristic: check for reasonable vowel/consonant distribution + for ($i = 0; $i < strlen($password); $i++) { + $char = strtolower($password[$i]); + if (in_array($char, ['a', 'e', 'i', 'o', 'u', 'y'])) { + $vowelCount++; + } elseif (ctype_alpha($char)) { + $consonantCount++; + } + } + + // Must have at least one vowel and one consonant + // And vowels shouldn't be more than 60% of letters + $totalLetters = $vowelCount + $consonantCount; + return $vowelCount >= 1 && $consonantCount >= 1 && + ($totalLetters === 0 || $vowelCount / $totalLetters <= 0.6); + } + + /** + * Get available phoneme elements (for debugging/inspection) + */ + public function getPhonemeCount(): array + { + return [ + 'vowels' => count(array_unique($this->vowels)), + 'consonants' => count(array_unique($this->consonants)), + 'total_elements' => count($this->elements) + ]; + } +} \ No newline at end of file diff --git a/src/Generators/DicewareGenerator.php b/src/Generators/DicewareGenerator.php new file mode 100644 index 0000000..9e08c82 --- /dev/null +++ b/src/Generators/DicewareGenerator.php @@ -0,0 +1,462 @@ +loadWordlist(); + } + + public function getId(): string + { + return self::GENERATOR_ID; + } + + public function getVersion(): string + { + return '2.0.0'; + } + + public function getName(): string + { + return 'Diceware'; + } + + public function getDescription(): string + { + return 'Authentic EFF Diceware method using cryptographically secure dice rolls for maximum security'; + } + + /** + * Centralized option definitions + */ + public function getOptionDefinitions(): array + { + $options = [ + 'words' => [ + 'type' => 'integer', + 'default' => 6, + 'min' => 4, + 'max' => 12, + 'required' => false, + 'group' => 'basic', + 'description' => 'Number of words to include in the passphrase (4-12 recommended for security).' + ], + 'show_dice_rolls' => [ + 'type' => 'boolean', + 'default' => false, + 'required' => false, + 'group' => 'advanced', + 'description' => 'Whether to display the dice rolls used to select each word (educational purpose).' + ], + 'uppercase_first' => [ + 'type' => 'boolean', + 'default' => false, + 'required' => false, + 'group' => 'advanced', + 'description' => 'Capitalize the first word only (traditional Diceware style).' + ] + ]; + + return $options; + } + + public function generate(int $count = 1, array $options = []): array + { + $options = array_merge($this->getDefaultOptions(), $options); + $results = []; + + for ($i = 0; $i < $count; $i++) { + $result = $this->generateSingle($options); + $results[] = $result; + } + + return $results; + } + + private function generateSingle(array $options): array + { + $wordCount = $options['words']; + $this->lastDiceRolls = []; + + $selectedWords = []; + $diceRollsDisplay = []; + + for ($i = 0; $i < $wordCount; $i++) { + // True Diceware: 5 dice rolls per word + $diceRoll = $this->rollSecureDice(5); + $index = implode('', $diceRoll); + + $this->lastDiceRolls[] = $diceRoll; + $diceRollsDisplay[] = $index; + + if (isset($this->wordlist[$index])) { + $wordEntry = $this->wordlist[$index]; + if (is_array($wordEntry)) { + $selectedWords[] = $wordEntry; // Word with explanation + } else { + $selectedWords[] = ['word' => $wordEntry, 'explanation' => null]; + } + } else { + // Fallback to random selection if index not found + $randomIndex = array_rand($this->wordlist); + $wordEntry = $this->wordlist[$randomIndex]; + $selectedWords[] = is_array($wordEntry) + ? $wordEntry + : ['word' => $wordEntry, 'explanation' => null]; + } + } + + // Extract words for password + $words = array_map(fn($entry) => $entry['word'], $selectedWords); + + // Optional: Capitalize first word only (traditional Diceware style) + if ($options['uppercase_first']) { + $words[0] = ucfirst($words[0]); + for ($i = 1; $i < count($words); $i++) { + $words[$i] = strtolower($words[$i]); + } + } + + // Diceware standard: space separation (no randomization) + $password = implode(' ', $words); + + $result = [ + 'password' => $password, + 'wordEntries' => $selectedWords + ]; + + // Add dice rolls and security info if requested + if ($options['show_dice_rolls']) { + $result['dice_rolls'] = $diceRollsDisplay; + $result['security_info'] = $this->calculateDicewareEntropy($wordCount); + } + + return $result; + } + + /** + * Cryptographically secure dice rolling + * Uses true randomness for authentic Diceware methodology + */ + private function rollSecureDice(int $diceCount): array + { + $rolls = []; + for ($i = 0; $i < $diceCount; $i++) { + $rolls[] = random_int(1, 6); + } + return $rolls; + } + + /** + * Calculate Diceware entropy and security metrics + */ + private function calculateDicewareEntropy(int $wordCount): array + { + // Use effective candidate count loaded at runtime. + $wordsInList = max(1, $this->effectiveWordlistSize); + $entropy = $wordCount * log($wordsInList, 2); + + return [ + 'entropy_bits' => round($entropy, 1), + 'words_in_list' => $wordsInList, + 'combinations' => number_format(pow($wordsInList, $wordCount)), + 'security_level' => $this->getSecurityLevel($entropy), + 'crack_time_estimate' => $this->getCrackTimeEstimate($entropy) + ]; + } + + private function getSecurityLevel(float $entropy): string + { + if ($entropy >= 80) return 'Excellent (suitable for high-value accounts)'; + if ($entropy >= 65) return 'Strong (suitable for most uses)'; + if ($entropy >= 50) return 'Adequate (basic security)'; + return 'Weak (not recommended)'; + } + + private function getCrackTimeEstimate(float $entropy): string + { + // Assuming 1 trillion guesses per second + $combinations = pow(2, $entropy); + $guessesPerSecond = 1e12; + $secondsToHack = $combinations / (2 * $guessesPerSecond); // Average time + + if ($secondsToHack < 60) return 'Less than 1 minute'; + if ($secondsToHack < 3600) return round($secondsToHack / 60) . ' minutes'; + if ($secondsToHack < 86400) return round($secondsToHack / 3600) . ' hours'; + if ($secondsToHack < 31536000) return round($secondsToHack / 86400) . ' days'; + if ($secondsToHack < 31536000000) return round($secondsToHack / 31536000) . ' years'; + return 'Millions of years'; + } + + private function selectWords(int $count): array + { + // This helper remains available for the current diceware flow; generation is handled by the main path below. + if (empty($this->wordlist)) { + throw new \RuntimeException('Diceware wordlist is not loaded'); + } + + $wordEntries = []; + + for ($i = 0; $i < $count; $i++) { + $diceRoll = $this->rollSecureDice(5); + $index = $this->diceRollToIndex($diceRoll); + + if (isset($this->wordlist[$index])) { + $wordEntry = $this->wordlist[$index]; + $wordEntries[] = is_array($wordEntry) ? $wordEntry : ['word' => $wordEntry, 'explanation' => null]; + } else { + $randomIndex = array_rand($this->wordlist); + $wordEntry = $this->wordlist[$randomIndex]; + $wordEntries[] = is_array($wordEntry) ? $wordEntry : ['word' => $wordEntry, 'explanation' => null]; + } + } + + return $wordEntries; + } + + private function diceRollToIndex(array $rolls): string + { + return implode('', $rolls); + } + + /** + * Load EFF Diceware wordlist with explanation support + * Supports both simple words and word\texplanation format + */ + private function loadWordlist(): void + { + $candidates = []; + + // Preferred native Diceware-format file (11111 word). + $primaryPath = __DIR__ . '/../../data/wordlists/eff_large_wordlist.txt'; + $this->collectWordsFromFile($primaryPath, $candidates); + + // Augment with repository wordlists to ensure robust candidate space. + $augmentPaths = [ + __DIR__ . '/../../data/wordlists/eff_large_wordlist_en.txt', + __DIR__ . '/../../data/wordlists/german_common_words_de.txt', + __DIR__ . '/../../data/wordlists/french_common_words_fr.txt', + __DIR__ . '/../../data/wordlists/italian_common_words_it.txt', + __DIR__ . '/../../data/wordlists/spanish_common_words_es.txt', + __DIR__ . '/../../data/wordlists/swiss_german_slaengikon.txt', + ]; + + foreach ($augmentPaths as $path) { + $this->collectWordsFromFile($path, $candidates); + } + + if (empty($candidates)) { + $this->loadFallbackWordlist(); + $this->effectiveWordlistSize = count($this->wordlist); + return; + } + + $candidateList = array_values($candidates); + $candidateCount = count($candidateList); + $keys = $this->generateDicewareKeys(); + + $this->wordlist = []; + foreach ($keys as $index => $diceKey) { + $this->wordlist[$diceKey] = $candidateList[$index % $candidateCount]; + } + + $this->effectiveWordlistSize = min($candidateCount, self::DICEWARE_KEYSPACE); + } + + /** + * Calculate accurate entropy for Diceware generation + */ + public function calculateEntropyForOptions(array $options): float + { + $breakdown = $this->getEntropyBreakdownForOptions($options); + return (float) ($breakdown['entropy_bits'] ?? 0.0); + } + + /** + * Detailed entropy contributors for API transparency. + */ + public function getEntropyBreakdownForOptions(array $options): array + { + $validated = $this->validateOptions($options); + $words = max(1, (int) ($validated['words'] ?? 6)); + + // Candidate space reflects the loaded wordlist quality. + $wordlistSize = max(1, $this->effectiveWordlistSize); + $wordEntropyBits = $words * log((float) $wordlistSize, 2); + + return [ + 'entropy_model' => 'diceware-combinatorial-v1', + 'model_confidence' => $wordlistSize >= self::DICEWARE_KEYSPACE ? 'high' : 'medium', + 'requested_words' => $words, + 'wordlist_size' => $wordlistSize, + 'word_entropy_bits' => round($wordEntropyBits, 1), + 'separator_entropy_bits' => 0.0, + 'number_entropy_bits' => 0.0, + 'entropy_bits' => round($wordEntropyBits, 1), + ]; + } + + /** + * Load fallback wordlist with explanations + */ + private function loadFallbackWordlist(): void + { + // Fallback wordlist with explanations for demonstration + $fallbackWords = [ + 'Aardvark' => 'nocturnal mammal that feeds on ants', + 'absurd' => 'wildly unreasonable or illogical', + 'accrue' => 'accumulate or receive over time', + 'Acme' => 'the highest point of achievement', + 'adrift' => 'floating without being steered', + 'Adult' => 'fully grown person', + 'afflict' => 'cause pain or suffering to', + 'ahead' => 'in front or in advance', + 'aimless' => 'without purpose or direction', + 'Algae' => 'simple plants found in water', + 'allow' => 'permit or give permission', + 'alone' => 'on one\'s own without others', + 'amuse' => 'provide entertainment or cause laughter', + 'Angel' => 'spiritual being or very kind person', + 'Ankle' => 'joint connecting foot and leg', + 'Apathy' => 'lack of interest or enthusiasm', + 'aqua' => 'light blue-green color like water', + 'Arcade' => 'covered passage with shops', + 'ardent' => 'passionate or enthusiastic', + 'Area' => 'region or extent of space', + 'argue' => 'give reasons for or against something', + 'Ark' => 'large boat or chest', + 'armed' => 'equipped with weapons', + 'Armor' => 'protective covering or clothing', + 'Army' => 'organized military force', + 'around' => 'on every side or in the vicinity', + 'Arrow' => 'projectile shot from a bow', + 'Arson' => 'crime of deliberately setting fire', + 'Art' => 'creative expression or skill', + 'ascend' => 'go up or climb higher', + 'ask' => 'request information or something', + 'Aspect' => 'particular part or feature', + 'Atom' => 'smallest unit of matter', + 'Attic' => 'space under the roof', + 'Avatar' => 'representation of a person online', + 'avoid' => 'keep away from or prevent', + 'awake' => 'not sleeping or alert', + 'Award' => 'prize given for achievement', + 'aware' => 'conscious or informed', + 'away' => 'at a distance from', + 'Axis' => 'imaginary line through center', + 'Backup' => 'copy kept for security', + 'Badge' => 'symbol of authority or achievement', + 'Bagel' => 'ring-shaped bread roll', + 'Balance' => 'even distribution of weight', + 'Ball' => 'round object used in games', + 'Bamboo' => 'fast-growing woody grass', + 'Banana' => 'yellow curved tropical fruit', + 'Band' => 'group or strip of material', + 'Banner' => 'flag or sign for display', + 'bring' => 'take or carry to a place' + ]; + + // Convert to Diceware index format for consistency + $index = 11111; + foreach ($fallbackWords as $word => $explanation) { + $this->wordlist[(string)$index] = [ + 'word' => $word, + 'explanation' => $explanation + ]; + $index++; + } + + $this->effectiveWordlistSize = count($this->wordlist); + } + + /** + * Collect word entries from a wordlist file and deduplicate by lowercase word. + */ + private function collectWordsFromFile(string $path, array &$target): void + { + if (!file_exists($path) || !is_readable($path)) { + return; + } + + $content = file_get_contents($path); + if ($content === false) { + return; + } + + $lines = explode("\n", $content); + foreach ($lines as $line) { + $line = trim($line); + if ($line === '' || str_starts_with($line, '#')) { + continue; + } + + // Supports classic Diceware lines: 12345 word[\texplanation] + if (preg_match('/^(\d{5})\s+(.+)$/', $line, $matches)) { + $entry = $this->parseWordlistEntry(trim($matches[2])); + } else { + $entry = $this->parseWordlistEntry($line); + } + + $word = trim((string) ($entry['word'] ?? '')); + if ($word === '') { + continue; + } + + $key = strtolower($word); + if (!isset($target[$key])) { + $target[$key] = [ + 'word' => $word, + 'explanation' => $entry['explanation'] ?? null, + ]; + } + } + } + + /** + * Generate all valid 5-dice key strings from 11111 to 66666. + * + * @return array + */ + private function generateDicewareKeys(): array + { + $keys = []; + + for ($a = 1; $a <= 6; $a++) { + for ($b = 1; $b <= 6; $b++) { + for ($c = 1; $c <= 6; $c++) { + for ($d = 1; $d <= 6; $d++) { + for ($e = 1; $e <= 6; $e++) { + $keys[] = (string) ($a . $b . $c . $d . $e); + } + } + } + } + } + + return $keys; + } +} diff --git a/src/Generators/HighEntropyGenerator.php b/src/Generators/HighEntropyGenerator.php new file mode 100644 index 0000000..0e87087 --- /dev/null +++ b/src/Generators/HighEntropyGenerator.php @@ -0,0 +1,194 @@ +?'; + + public function __construct(?LoggerInterface $logger = null) + { + parent::__construct($logger); + } + + public function getId(): string + { + return self::GENERATOR_ID; + } + + public function getVersion(): string + { + return '1.1.0'; + } + + public function getName(): string + { + return 'High Entropy'; + } + + public function getDescription(): string + { + return 'Cryptographically secure random passwords with customizable character sets'; + } + + /** + * Centralized option definitions + */ + public function getOptionDefinitions(): array + { + $options = [ + 'length' => [ + 'type' => 'integer', + 'default' => 16, + 'min' => 8, + 'max' => 128, + 'required' => false, + 'group' => 'basic', + 'description' => 'Total length of the generated password' + ], + 'include_uppercase' => [ + 'type' => 'boolean', + 'default' => true, + 'required' => false, + 'group' => 'character_set', + 'description' => 'Include uppercase letters (A-Z)' + ], + 'include_lowercase' => [ + 'type' => 'boolean', + 'default' => true, + 'required' => false, + 'group' => 'character_set', + 'description' => 'Include lowercase letters (a-z)' + ], + 'include_numbers' => [ + 'type' => 'boolean', + 'default' => true, + 'required' => false, + 'group' => 'character_set', + 'description' => 'Include numbers (0-9)' + ], + 'include_symbols' => [ + 'type' => 'boolean', + 'default' => true, + 'required' => false, + 'group' => 'character_set', + 'description' => 'Include symbols (e.g., !@#$%)' + ], + ]; + + return $options; + } + + public function generate(int $count = 1, array $options = []): array + { + $options = array_merge($this->getDefaultOptions(), $options); + $passwords = []; + + for ($i = 0; $i < $count; $i++) { + $passwords[] = $this->generateSingle($options); + } + + return $passwords; + } + + private function generateSingle(array $options): string + { + $characterSet = $this->buildCharacterSet($options); + $length = $options['length']; + + if (empty($characterSet)) { + throw new \RuntimeException('No character types selected'); + } + + // Generate password ensuring at least one character from each selected type + $password = $this->generateWithGuaranteedTypes($characterSet, $length, $options); + + // Shuffle the password to randomize position of guaranteed characters + return $this->shuffleString($password); + } + + private function buildCharacterSet(array $options): string + { + $characterSet = ''; + + if ($options['include_lowercase'] ?? false) { + $characterSet .= self::LOWERCASE; + } + + if ($options['include_uppercase'] ?? false) { + $characterSet .= self::UPPERCASE; + } + + if ($options['include_numbers'] ?? false) { + $characterSet .= self::NUMBERS; + } + + if ($options['include_symbols'] ?? false) { + $characterSet .= self::SYMBOLS; + } + + return $characterSet; + } + + private function generateWithGuaranteedTypes(string $characterSet, int $length, array $options): string + { + $password = ''; + $guaranteedChars = []; + + // Add at least one character from each selected type + if ($options['include_lowercase'] ?? false) { + $guaranteedChars[] = self::LOWERCASE[random_int(0, strlen(self::LOWERCASE) - 1)]; + } + + if ($options['include_uppercase'] ?? false) { + $guaranteedChars[] = self::UPPERCASE[random_int(0, strlen(self::UPPERCASE) - 1)]; + } + + if ($options['include_numbers'] ?? false) { + $guaranteedChars[] = self::NUMBERS[random_int(0, strlen(self::NUMBERS) - 1)]; + } + + if ($options['include_symbols'] ?? false) { + $guaranteedChars[] = self::SYMBOLS[random_int(0, strlen(self::SYMBOLS) - 1)]; + } + + // Add guaranteed characters + $password = implode('', $guaranteedChars); + + // Fill remaining length with random characters from full set + $remainingLength = $length - count($guaranteedChars); + for ($i = 0; $i < $remainingLength; $i++) { + $password .= $characterSet[random_int(0, strlen($characterSet) - 1)]; + } + + return $password; + } + + private function shuffleString(string $string): string + { + $characters = str_split($string); + + // Fisher-Yates shuffle using cryptographically secure random + for ($i = count($characters) - 1; $i > 0; $i--) { + $j = random_int(0, $i); + [$characters[$i], $characters[$j]] = [$characters[$j], $characters[$i]]; + } + + return implode('', $characters); + } +} diff --git a/src/Generators/Interfaces/GeneratorOptionInterface.php b/src/Generators/Interfaces/GeneratorOptionInterface.php new file mode 100644 index 0000000..a43b561 --- /dev/null +++ b/src/Generators/Interfaces/GeneratorOptionInterface.php @@ -0,0 +1,82 @@ + [ + 'type' => 'integer', + 'default' => 6, + 'min' => 4, + 'max' => 12, + 'required' => false, + 'group' => 'basic', + 'description' => 'Number of pronounceable syllables in the passkey' + ] + ]; + + return $options; + } + + /** + * FIXED: Return simple array of password strings (not objects) + * This matches the expected format for both API and frontend + */ + public function generate(int $count = 1, array $options = []): array + { + $options = array_merge($this->getDefaultOptions(), $options); + $passwords = []; + + for ($i = 0; $i < $count; $i++) { + $passwords[] = $this->generateSingle($options); + } + + return $passwords; + } + + private function generateSingle(array $options): string + { + $syllableCount = $options['syllables']; + + // Generate pronounceable syllables + $syllables = $this->generateSyllables($syllableCount); + + // Apply Apple-style formatting with integrated character substitutions + $password = $this->formatAppleStyle($syllables); + + return $password; + } + + /** + * Generate pronounceable syllables using various patterns + */ + private function generateSyllables(int $count): array + { + $syllables = []; + + for ($i = 0; $i < $count; $i++) { + // Select a random syllable pattern + $pattern = self::PATTERNS[random_int(0, count(self::PATTERNS) - 1)]; + $syllable = $this->generateSyllableByPattern($pattern); + $syllables[] = $syllable; + } + + return $syllables; + } + + /** + * Generate a syllable following a specific pattern + */ + private function generateSyllableByPattern(string $pattern): string + { + $syllable = ''; + $i = 0; + + while ($i < strlen($pattern)) { + $char = $pattern[$i]; + + if ($char === 'c') { + // Check if we can use a consonant pair + if ($i === 0 && random_int(1, 4) === 1) { // 25% chance + $pair = self::CONSONANT_PAIRS[random_int(0, count(self::CONSONANT_PAIRS) - 1)]; + $syllable .= $pair; + // Skip next consonant if it exists in pattern + if ($i + 1 < strlen($pattern) && $pattern[$i + 1] === 'c') { + $i++; // Skip the next 'c' since we used a pair + } + } else { + $consonant = self::CONSONANTS[random_int(0, strlen(self::CONSONANTS) - 1)]; + $syllable .= $consonant; + } + } else if ($char === 'v') { + $vowel = self::VOWELS[random_int(0, strlen(self::VOWELS) - 1)]; + $syllable .= $vowel; + } + + $i++; + } + + return $syllable; + } + + /** + * Apply Apple-style formatting with integrated character substitutions + */ + private function formatAppleStyle(array $syllables): string + { + $password = implode('', $syllables); + + // Apple-style character substitutions (looks similar, maintains pronounceability) + $substitutions = [ + 'o' => '0', // o looks like 0 + 'i' => '1', // i looks like 1 + 'a' => '@', // a looks like @ + 's' => '$', // s looks like $ + 'e' => '3', // e looks like 3 + ]; + + // Apply 1-2 substitutions randomly for Apple-like feel (reduced from 1-3) + $maxSubstitutions = min(2, max(1, strlen($password) / 4)); // More conservative + $substitutionCount = random_int(1, $maxSubstitutions); + $applied = 0; + + // Shuffle substitutions for randomness + $availableSubstitutions = $substitutions; + $keys = array_keys($availableSubstitutions); + shuffle($keys); + + foreach ($keys as $letter) { + if ($applied >= $substitutionCount) break; + + $replacement = $substitutions[$letter]; + + // Find all positions of this letter + $positions = []; + for ($i = 0; $i < strlen($password); $i++) { + if (strtolower($password[$i]) === $letter) { // Case insensitive search + $positions[] = $i; + } + } + + if (!empty($positions)) { + // Replace one random occurrence of this letter + $randomPosition = $positions[random_int(0, count($positions) - 1)]; + $password[$randomPosition] = $replacement; + $applied++; + } + } + + // Apple-style: Capitalize first letter + $password = ucfirst($password); + + return $password; + } + + /** + * Calculate entropy for syllable-based generation + */ + public function calculateEntropyForOptions(array $options): float + { + $breakdown = $this->getEntropyBreakdownForOptions($options); + return (float) ($breakdown['entropy_bits'] ?? 0.0); + } + + /** + * Detailed entropy contributors for API transparency. + */ + public function getEntropyBreakdownForOptions(array $options): array + { + $validated = $this->validateOptions($options); + $syllables = max(1, (int) ($validated['syllables'] ?? 6)); + + // Heuristic estimate based on average pronounceable-syllable branching. + $combinationsPerSyllable = 150.0; + $baseEntropyBits = $syllables * log($combinationsPerSyllable, 2); + + // Character substitutions add a small, heuristic bonus. + $substitutionMultiplier = 1.2; + $substitutionEntropyBits = log($substitutionMultiplier, 2); + + $totalEntropyBits = $baseEntropyBits + $substitutionEntropyBits; + + return [ + 'entropy_model' => 'passkey-syllable-heuristic-v1', + 'model_confidence' => 'medium', + 'requested_syllables' => $syllables, + 'estimated_combinations_per_syllable' => $combinationsPerSyllable, + 'substitution_multiplier' => $substitutionMultiplier, + 'syllable_entropy_bits' => round($baseEntropyBits, 1), + 'substitution_entropy_bits' => round($substitutionEntropyBits, 1), + 'entropy_bits' => round($totalEntropyBits, 1), + ]; + } + + /** + * Get example passkeys for documentation + */ + public function getExamples(): array + { + return [ + 'Short (4 syllables)' => $this->generate(3, ['syllables' => 4]), + 'Medium (6 syllables)' => $this->generate(3, ['syllables' => 6]), + 'Long (8 syllables)' => $this->generate(3, ['syllables' => 8]), + ]; + } + + /** + * Get pronunciation guide for a generated password + */ + public function getPronunciationGuide(string $password): string + { + // Remove numbers and symbols for pronunciation + $pronounceable = preg_replace('/[0-9@$3]/', '', $password); + + // Add hyphens between likely syllable breaks + $guide = ''; + $vowelPattern = '/[aeiou]/i'; + $lastWasVowel = false; + + for ($i = 0; $i < strlen($pronounceable); $i++) { + $char = $pronounceable[$i]; + $isVowel = preg_match($vowelPattern, $char); + + // Add hyphen before consonants that follow vowels (syllable breaks) + if (!$isVowel && $lastWasVowel && $i > 0) { + $guide .= '-'; + } + + $guide .= strtolower($char); + $lastWasVowel = $isVowel; + } + + return $guide; + } +} diff --git a/src/Generators/PasswordGeneratorInterface.php b/src/Generators/PasswordGeneratorInterface.php new file mode 100644 index 0000000..ff31f9e --- /dev/null +++ b/src/Generators/PasswordGeneratorInterface.php @@ -0,0 +1,178 @@ + [ + * 'type' => 'integer', + * 'default' => 8, + * 'min' => 4, + * 'max' => 32, + * 'required' => false, + * 'group' => 'basic' + * ], + * 'separator' => [ + * 'type' => 'string', + * 'default' => '', + * 'maxLength' => 10, + * 'group' => 'advanced' + * ], + * 'wordlist' => [ + * 'type' => 'select', + * 'default' => 'en', + * 'choices' => $this->getAvailableWordlists(), + * 'translateChoices' => false, // Don't translate wordlist names + * 'group' => 'basic' + * ] + * ] + * + * @return array Associative array of option definitions + */ + public function getOptionDefinitions(): array; + + /** + * Get generator name i18n key (automatically derived) + * + * Pattern: {generator_id}_name + * + * @return string i18n key + */ + public function getNameKey(): string; + + /** + * Get generator description i18n key (automatically derived) + * + * Pattern: {generator_id}_description + * + * @return string i18n key + */ + public function getDescriptionKey(): string; + + /** + * Get i18n key for an option label (automatically derived) + * + * Pattern: {generator_id}_option_{option_name}_label + * + * @param string $optionName Option name + * @return string i18n key + */ + public function getOptionLabelKey(string $optionName): string; + + /** + * Get i18n key for an option description (automatically derived) + * + * Pattern: {generator_id}_option_{option_name}_description + * + * @param string $optionName Option name + * @return string i18n key + */ + public function getOptionDescriptionKey(string $optionName): string; + + /** + * Get i18n key for an option group title (automatically derived) + * + * Pattern: {generator_id}_options_group_{group_name}_title + * + * @param string $groupName Group name + * @return string i18n key + */ + public function getOptionGroupTitleKey(string $groupName): string; + + /** + * Get i18n key for a select option choice (automatically derived) + * + * Pattern: {generator_id}_option_{option_name}_choice_{choice_value} + * + * @param string $optionName Option name + * @param string $choiceValue Choice value + * @return string i18n key + */ + public function getOptionChoiceLabelKey(string $optionName, string $choiceValue): string; + + /** + * Get i18n key for validation error (automatically derived) + * + * Pattern: {generator_id}_option_{option_name}_validation_error + * + * @param string $optionName Option name + * @return string i18n key + */ + public function getValidationErrorKey(string $optionName): string; + + /** + * Get all i18n keys used by this generator (for translation extraction) + * + * Returns array of all keys that need translations + * + * @return array Array of i18n keys + */ + public function getAllI18nKeys(): array; + + /** + * Get default options (derived from option definitions) + * + * @return array Associative array of option_name => default_value + */ + public function getDefaultOptions(): array; + + /** + * Validate options against definitions + * + * @param array $options Options to validate + * @return array Validated and sanitized options + * @throws \InvalidArgumentException If validation fails + */ + public function validateOptions(array $options): array; + + /** + * Get complete option schema for API (with derived i18n keys) + * + * @return array Array of option metadata with all i18n keys + */ + public function getOptionSchema(): array; +} \ No newline at end of file diff --git a/src/Generators/PhraseAbbreviatorGenerator.php b/src/Generators/PhraseAbbreviatorGenerator.php new file mode 100644 index 0000000..4088baa --- /dev/null +++ b/src/Generators/PhraseAbbreviatorGenerator.php @@ -0,0 +1,666 @@ +llmManager = $llmManager; + } + + public function getId(): string + { + return self::GENERATOR_ID; + } + + public function getVersion(): string + { + return '1.3.0'; + } + + public function getName(): string + { + return 'Phrase Abbreviator'; + } + + public function getDescription(): string + { + return 'Generates memorable passwords from sentence fragments and word abbreviations'; + } + + /** + * Get option definitions + */ + public function getOptionDefinitions(): array + { + $options = [ + 'sentence' => [ + 'type' => 'string', + 'default' => self::DEFAULT_SENTENCE, + 'minLength' => 1, + 'maxLength' => 500, + 'required' => false, // Not required if using AI + 'group' => 'basic', + 'description' => 'User-supplied sentence (minimum 8 words, must start with capital letter)' + ], + 'character_extraction' => [ + 'type' => 'select', + 'default' => 'single', + 'choices' => [ + ['value' => 'single', 'label' => 'First letter only'], + ['value' => 'dual', 'label' => 'First letter + next vowel/consonant'] + ], + 'translateChoices' => true, + 'required' => false, + 'group' => 'basic', + 'description' => 'Method for extracting characters from each word' + ], + 'language' => [ + 'type' => 'select', + 'default' => 'en', + 'choices' => $this->getLanguageChoices(), + 'translateChoices' => false, + 'required' => false, + 'group' => 'basic', + 'description' => 'Language for number word conversion' + ], + 'add_number' => [ + 'type' => 'boolean', + 'default' => false, + 'required' => false, + 'group' => 'advanced', + 'description' => 'Add random digits to the password' + ], + 'number_digits' => [ + 'type' => 'integer', + 'default' => 2, + 'min' => 1, + 'max' => 4, + 'required' => false, + 'group' => 'advanced', + 'description' => 'How many random digits to add (1-4)' + ], + 'number_position' => [ + 'type' => 'select', + 'default' => 'append', + 'choices' => [ + ['value' => 'prepend', 'label' => 'Before'], + ['value' => 'append', 'label' => 'After'] + ], + 'translateChoices' => true, + 'required' => false, + 'group' => 'advanced', + 'description' => 'Place number before or after the password' + ] + ]; + + // Add AI options if LLM manager is available + if ($this->llmManager && $this->llmManager->hasAvailableProvider()) { + $options['use_ai_sentence'] = [ + 'type' => 'boolean', + 'default' => false, + 'required' => false, + 'group' => 'ai', + 'description' => 'Let AI generate a sentence from your prompt' + ]; + + $options['ai_prompt'] = [ + 'type' => 'string', + 'default' => 'Generate a creative, memorable sentence about technology.', + 'maxLength' => 500, + 'required' => false, + 'group' => 'ai', + 'description' => 'Prompt for AI to generate a memorable sentence (minimum 12 words)' + ]; + + // Get available LLM providers + $providers = $this->llmManager->getAvailableProviders(); + if (!empty($providers)) { + $providerChoices = []; + foreach ($providers as $name => $info) { + $providerChoices[] = [ + 'value' => $name, + 'label' => $info['display_name'] + ]; + } + + $options['ai_provider'] = [ + 'type' => 'select', + 'default' => $this->llmManager->getDefaultProviderName(), + 'choices' => $providerChoices, + 'translateChoices' => false, + 'required' => false, + 'group' => 'ai', + 'description' => 'Which LLM provider to use for sentence generation' + ]; + + // Get models for default provider + $defaultProvider = $this->llmManager->getDefaultProvider(); + $modelChoices = []; + foreach ($defaultProvider->getAvailableModels() as $value => $label) { + $modelChoices[] = ['value' => $value, 'label' => $label]; + } + + $options['ai_model'] = [ + 'type' => 'select', + 'default' => $defaultProvider->getDefaultModel(), + 'choices' => $modelChoices, + 'translateChoices' => false, + 'required' => false, + 'group' => 'ai', + 'description' => 'Which AI model to use' + ]; + } + } + + return $options; + } + + /** + * Get language choices from configuration + */ + private function getLanguageChoices(): array + { + $languages = $this->config['locale']['languages'] ?? [ + 'en' => 'English', + 'de' => 'Deutsch', + 'fr' => 'Français', + 'es' => 'Español', + 'it' => 'Italiano' + ]; + + $choices = []; + foreach ($languages as $code => $name) { + $choices[] = ['value' => $code, 'label' => $name]; + } + + return $choices; + } + + public function validateOptions(array $options): array + { + $normalized = $options; + + if (!($normalized['use_ai_sentence'] ?? false) && isset($normalized['sentence']) && empty(trim((string) $normalized['sentence']))) { + $normalized['sentence'] = self::DEFAULT_SENTENCE; + } + + $validated = parent::validateOptions($normalized); + + if (!($validated['use_ai_sentence'] ?? false) && empty(trim((string) ($validated['sentence'] ?? '')))) { + $validated['sentence'] = self::DEFAULT_SENTENCE; + } + + return $validated; + } + + /** + * Generate passwords from phrases + */ + public function generate(int $count = 1, array $options = []): array + { + // Validate options + $options = $this->validateOptions($options); + + // Validate count + if ($count < 1 || $count > 100) { + throw new InvalidArgumentException('Count must be between 1 and 100'); + } + + if ($this->logger && $this->isLogLevel('debug')) { + $this->logger->debug('PhraseAbbreviator: starting generation', [ + 'count' => $count, + 'extraction_type' => $options['character_extraction'], + 'use_ai' => $options['use_ai_sentence'] ?? false + ]); + } + + $passwords = []; + + for ($i = 0; $i < $count; $i++) { + try { + // Get sentence + if ($options['use_ai_sentence'] ?? false) { + if (!$this->llmManager) { + throw new RuntimeException('LLM manager not configured'); + } + $sentence = $this->generateAiSentence($options); + } else { + $sentence = $options['sentence']; + if (empty($sentence)) { + throw new InvalidArgumentException( + 'Sentence is required when not using AI generation' + ); + } + } + + // Validate sentence + $this->validateSentence($sentence, $options['use_ai_sentence'] ?? false); + + // Replace number words with digits + $processedSentence = $this->replaceNumberWords($sentence, $options['language']); + + // Generate password from sentence + $password = $this->generatePasswordFromSentence( + $processedSentence, + $options['character_extraction'], + $options['language'] + ); + + // Add optional number + if ($options['add_number']) { + $password = $this->addRandomNumber( + $password, + $options['number_digits'], + $options['number_position'] + ); + } + + $passwords[] = [ + 'password' => $password, + 'method' => 'phrase_abbreviator', + 'source_sentence' => $sentence, + 'extraction_type' => $options['character_extraction'] + ]; + } catch (\Exception $e) { + if ($this->logger) { + $this->logger->error('PhraseAbbreviator: generation iteration failed', [ + 'iteration' => $i + 1, + 'error' => $e->getMessage() + ]); + } + throw $e; + } + } + + if ($this->logger && $this->isLogLevel('info')) { + $this->logger->info('PhraseAbbreviator: generation complete', [ + 'count' => count($passwords) + ]); + } + + return $passwords; + } + + /** + * Validate sentence according to rules + */ + private function validateSentence(string $sentence, bool $isAiGenerated): void + { + $minWords = $isAiGenerated ? 12 : 8; + + if (strlen(trim($sentence)) === 0) { + throw new InvalidArgumentException('Sentence cannot be empty'); + } + + if ($sentence[0] !== strtoupper($sentence[0])) { + throw new InvalidArgumentException( + 'Sentence must start with a capital letter' + ); + } + + if (!preg_match('/[A-Z]/', $sentence)) { + throw new InvalidArgumentException( + 'Sentence must contain at least one capitalized letter' + ); + } + + $words = preg_split('/\s+/', trim($sentence), -1, PREG_SPLIT_NO_EMPTY); + $wordCount = count($words); + + if ($wordCount < $minWords) { + throw new InvalidArgumentException( + "Sentence must contain at least {$minWords} words (found {$wordCount})" + ); + } + } + + /** + * Generate sentence using LLM + */ + private function generateAiSentence(array $options): string + { + $provider = $options['ai_provider'] ?? null; + $model = $options['ai_model'] ?? null; + $prompt = $options['ai_prompt'] ?? 'Generate a creative, memorable sentence.'; + + // Ensure minimum 12 words + $fullPrompt = $prompt . " The sentence must contain at least 12 words."; + + if ($this->logger && $this->isLogLevel('debug')) { + $this->logger->debug('PhraseAbbreviator: requesting AI-generated sentence', [ + 'provider' => $provider, + 'model' => $model + ]); + } + + try { + $sentence = $this->llmManager->generateText( + $fullPrompt, + $provider, + ['model' => $model] + ); + + // Clean up sentence + $sentence = trim($sentence); + $sentence = rtrim($sentence, '.'); + $sentence = ucfirst($sentence); + + if ($this->logger && $this->isLogLevel('debug')) { + $this->logger->debug('PhraseAbbreviator: AI sentence generated', [ + 'word_count' => count(preg_split('/\s+/', $sentence)) + ]); + } + + return $sentence; + } catch (\Exception $e) { + if ($this->logger) { + $this->logger->error('PhraseAbbreviator: AI generation failed', [ + 'error' => $e->getMessage() + ]); + } + throw new RuntimeException( + "Failed to generate sentence from AI: {$e->getMessage()}" + ); + } + } + + /** + * Generate password from sentence + */ + private function generatePasswordFromSentence( + string $sentence, + string $extractionType, + string $language + ): string { + // Split into words + $words = preg_split('/\s+/', trim($sentence), -1, PREG_SPLIT_NO_EMPTY); + + $passwordChars = []; + + foreach ($words as $word) { + // Remove leading/trailing punctuation but keep internal + $cleanWord = $word; + $leadingPunctuation = ''; + $trailingPunctuation = ''; + + // Extract trailing punctuation + while ( + strlen($cleanWord) > 0 && + !ctype_alnum($cleanWord[strlen($cleanWord) - 1]) && + $cleanWord[strlen($cleanWord) - 1] !== "'" + ) { + $trailingPunctuation = substr($cleanWord, -1) . $trailingPunctuation; + $cleanWord = substr($cleanWord, 0, -1); + } + + // Extract leading punctuation + while (strlen($cleanWord) > 0 && !ctype_alnum($cleanWord[0])) { + $leadingPunctuation .= $cleanWord[0]; + $cleanWord = substr($cleanWord, 1); + } + + if (strlen($cleanWord) === 0) { + continue; + } + + // Extract characters based on type + if ($extractionType === 'dual') { + $chars = $this->extractDualCharacters($cleanWord); + } else { + $chars = $cleanWord[0]; // Single character (first letter) + } + + $passwordChars[] = $leadingPunctuation . $chars . $trailingPunctuation; + } + + return implode('', $passwordChars); + } + + /** + * Extract dual characters from word + * + * Word starts with vowel: first letter + first consonant + * Word starts with consonant: first letter + first vowel + * Fallback (no vowel/consonant found): first two letters + */ + private function extractDualCharacters(string $word): string + { + if (strlen($word) < 2) { + return $word; + } + + $firstChar = $word[0]; + + if ($this->isVowel($firstChar)) { + // Word starts with vowel: first letter + first consonant + for ($i = 1; $i < strlen($word); $i++) { + if ($this->isConsonant($word[$i])) { + return $firstChar . $word[$i]; + } + } + // No consonant found, return first two letters + return substr($word, 0, 2); + } else { + // Word starts with consonant: first letter + first vowel + for ($i = 1; $i < strlen($word); $i++) { + if ($this->isVowel($word[$i])) { + return $firstChar . $word[$i]; + } + } + // No vowel found, return first two letters + return substr($word, 0, 2); + } + } + + /** + * Check if character is a vowel + */ + private function isVowel(string $char): bool + { + return strpos(self::VOWELS, $char) !== false; + } + + /** + * Check if character is a consonant + */ + private function isConsonant(string $char): bool + { + return strpos(self::CONSONANTS, $char) !== false; + } + + /** + * Replace number words using translations + * + * Loads number words from translation file and replaces all occurrences + * in the sentence with their digit equivalents + */ + private function replaceNumberWords(string $sentence, string $language): string + { + // Load number words from translation file + $numberWords = $this->loadNumberWordsFromTranslations($language); + + if (empty($numberWords)) { + if ($this->logger && $this->isLogLevel('debug')) { + $this->logger->debug('PhraseAbbreviator: no number words found for language', [ + 'language' => $language + ]); + } + return $sentence; + } + + // Replace each number word with its digit equivalent + foreach ($numberWords as $word => $digit) { + // Create regex pattern for word boundary matching + // This ensures 'one' doesn't match inside 'stone' + $pattern = '/\b' . preg_quote($word, '/') . '\b/i'; + + // Replace all occurrences (case-insensitive) + $sentence = preg_replace($pattern, $digit, $sentence); + } + + return $sentence; + } + + /** + * Load number words from translation file + * + * Searches translation file for keys matching pattern: phraseabbreviator_number_{name} + * Where {name} is: zero, one, two, three... twenty + */ + private function loadNumberWordsFromTranslations(string $language): array + { + // Construct path to locale file + $localeDir = __DIR__ . '/../../locales'; + $localeFile = "{$localeDir}/{$language}.json"; + + // Return empty array if file doesn't exist + if (!file_exists($localeFile)) { + if ($this->logger) { + $this->logger->warning('PhraseAbbreviator: translation file not found', [ + 'language' => $language, + 'file' => $localeFile + ]); + } + return []; + } + + // Load JSON file + $content = file_get_contents($localeFile); + if ($content === false) { + if ($this->logger) { + $this->logger->warning('PhraseAbbreviator: failed to read translation file', [ + 'file' => $localeFile + ]); + } + return []; + } + + // Decode JSON + $translations = json_decode($content, true); + if ($translations === null || !is_array($translations)) { + if ($this->logger) { + $this->logger->warning('PhraseAbbreviator: failed to decode translation file', [ + 'file' => $localeFile + ]); + } + return []; + } + + // Extract number words + $numberWords = []; + $prefix = 'phraseabbreviator_number_'; + + foreach ($translations as $key => $value) { + // Check if key starts with prefix + if (str_starts_with($key, $prefix)) { + // Extract digit name from key + // Example: 'phraseabbreviator_number_one' -> 'one' + $digitName = substr($key, strlen($prefix)); + + // Convert digit name to actual digit + $digit = $this->digitFromKeyName($digitName); + + // Add to mapping if digit was successfully converted + if ($digit !== null) { + $numberWords[$value] = $digit; + } + } + } + + if ($this->logger && $this->isLogLevel('debug')) { + $this->logger->debug('PhraseAbbreviator: loaded number words', [ + 'language' => $language, + 'count' => count($numberWords) + ]); + } + + return $numberWords; + } + + /** + * Convert digit key name to digit string + * + * Maps word names to their numeric equivalents + */ + private function digitFromKeyName(string $keyName): ?string + { + // Map of key names to digits + $digitMap = [ + 'zero' => '0', + 'one' => '1', + 'two' => '2', + 'three' => '3', + 'four' => '4', + 'five' => '5', + 'six' => '6', + 'seven' => '7', + 'eight' => '8', + 'nine' => '9', + 'ten' => '10', + 'eleven' => '11', + 'twelve' => '12', + 'thirteen' => '13', + 'fourteen' => '14', + 'fifteen' => '15', + 'sixteen' => '16', + 'seventeen' => '17', + 'eighteen' => '18', + 'nineteen' => '19', + 'twenty' => '20' + ]; + + return $digitMap[$keyName] ?? null; + } + + /** + * Add random number to password + */ + private function addRandomNumber( + string $password, + int $digits, + string $position + ): string { + $max = (int)str_repeat('9', $digits); + $number = random_int(0, $max); + $paddedNumber = str_pad((string)$number, $digits, '0', STR_PAD_LEFT); + + if ($position === 'prepend') { + return $paddedNumber . $password; + } else { + return $password . $paddedNumber; + } + } +} diff --git a/src/Generators/PwgenGenerator.php b/src/Generators/PwgenGenerator.php new file mode 100644 index 0000000..dedc27d --- /dev/null +++ b/src/Generators/PwgenGenerator.php @@ -0,0 +1,621 @@ + [ + 'type' => 'integer', + 'default' => 8, + 'min' => 4, + 'max' => 32, + 'required' => false, + 'group' => 'basic', + 'description' => 'Total length of the generated password' + ], + 'separator' => [ + 'type' => 'string', + 'default' => '', + 'maxLength' => 10, + 'required' => false, + 'group' => 'advanced', + 'description' => 'Characters to use as separators between syllables. If multiple characters are provided, one will be chosen at random for each separator position.' + ], + 'include_numbers' => [ + 'type' => 'boolean', + 'default' => true, + 'required' => false, + 'group' => 'character_set', + 'description' => 'Whether to include numbers in the generated password' + ], + 'include_capitals' => [ + 'type' => 'boolean', + 'default' => true, + 'required' => false, + 'group' => 'character_set', + 'description' => 'Whether to include capital letters in the generated password' + ], + 'secure_mode' => [ + 'type' => 'boolean', + 'default' => false, + 'required' => false, + 'group' => 'advanced', + 'description' => 'Whether to use secure mode (fully random) generation' + ], + 'no_ambiguous' => [ + 'type' => 'boolean', + 'default' => false, + 'required' => false, + 'group' => 'advanced', + 'description' => 'Whether to exclude ambiguous characters (like 0/O, 1/l, etc.) from the generated password' + ] + ]; + + return $options; + } + + public function validateOptions(array $options): array + { + return parent::validateOptions($options); + } + + /** + * Generate passwords + */ + public function generate(int $count = 1, array $options = []): array + { + // Validate options using parent class method + $options = $this->validateOptions($options); + $length = $options['length']; + $separator = $options['separator']; + + if ($this->logger && $this->isLogLevel('debug')) { + $this->logger->debug('Pwgen: starting generation', [ + 'count' => $count, + 'length' => $length, + 'has_separator' => !empty($separator) + ]); + } + LoggingHelper::debug($this->logger, $this->getId(), 'Message'); + + try { + // If separator is provided, use syllable splitting; otherwise use standard generation + if (!empty($separator)) { + return $this->generateWithSyllableSeparation($length, $count, $separator, $options); + } else { + // Use native pwgen or PHP fallback without separation + if ($this->isPwgenCommandAvailable()) { + return $this->generateWithNativePwgen($length, $count, $options); + } else { + return $this->generateWithPhpFallback($length, $count, $options); + } + } + } catch (\Exception $e) { + if ($this->logger) { + $this->logger->error('Pwgen: generation failed', [ + 'error' => $e->getMessage() + ]); + } + throw new RuntimeException( + "PWGen password generation failed: " . $e->getMessage(), + 0, + $e + ); + } + } + + /** + * Generate passwords using native pwgen executable + */ + private function generateWithNativePwgen(int $length, int $count, array $options): array + { + $command = ['pwgen']; + + // Add pwgen flags based on options + if ($options['include_capitals']) { + $command[] = '-c'; // Include capital letters + } else { + $command[] = '-A'; // No capitals + } + + if ($options['include_numbers']) { + $command[] = '-n'; // Include numbers + } else { + $command[] = '-0'; // No numbers + } + + if ($options['secure_mode']) { + $command[] = '-s'; // Secure (fully random) + } + + if ($options['no_ambiguous']) { + $command[] = '-B'; // No ambiguous characters + } + + // Add length and count + $command[] = (string)$length; + $command[] = (string)$count; + + // Execute command + $result = shell_exec(escapeshellcmd(implode(' ', $command))); + + if ($result === null || $result === '') { + throw new RuntimeException('PWGen command execution failed'); + } + + $passwords = array_filter(explode("\n", trim($result))); + + if ($this->logger && $this->isLogLevel('debug')) { + $this->logger->debug('Pwgen: native pwgen generated', ['count' => count($passwords)]); + } + + // Return array of password objects + return array_map(function ($password) { + return [ + 'password' => $password, + 'method' => 'native_pwgen' + ]; + }, $passwords); + } + + /** + * Generate passwords with PHP fallback (no separation) + */ + private function generateWithPhpFallback(int $length, int $count, array $options): array + { + $this->initializePwgenFallback(); + $passwords = []; + + for ($i = 0; $i < $count; $i++) { + // Generate password using PHP fallback + $generatedPasswords = $this->pwgenFallback->generate( + $length, + 1, + $options['include_numbers'], + $options['include_capitals'] + ); + + $passwords[] = [ + 'password' => $generatedPasswords[0], + 'method' => 'php_fallback' + ]; + } + + if ($this->logger && $this->isLogLevel('debug')) { + $this->logger->debug('Pwgen: PHP fallback generated', ['count' => count($passwords)]); + } + + return $passwords; + } + + /** + * Generate passwords with intelligent syllable separation + */ + private function generateWithSyllableSeparation(int $length, int $count, string $separator, array $options): array + { + $passwords = []; + + for ($i = 0; $i < $count; $i++) { + // Generate base password first (without separator) + $baseLength = $length; + + if ($this->isPwgenCommandAvailable() && !$options['secure_mode']) { + // Use native pwgen for base password + $result = $this->generateWithNativePwgen($baseLength, 1, $options); + $basePassword = trim($result[0]['password']); + } else { + // Use PHP fallback + $this->initializePwgenFallback(); + $generated = $this->pwgenFallback->generate( + $baseLength, + 1, + $options['include_numbers'], + $options['include_capitals'] + ); + $basePassword = $generated[0]; + } + + // Split into phonetic syllables + $syllables = $this->splitIntoPhoneticSyllables($basePassword); + + // Join syllables with random separator selection for each position + $finalPassword = $this->joinSyllablesWithRandomSeparators($syllables, $separator); + + // Trim to target length if needed (but preserve complete syllables when possible) + if (strlen($finalPassword) > $length) { + $finalPassword = $this->trimToLength($finalPassword, $length, $separator); + } + + // Extract used separators for display + $usedSeparators = $this->extractUsedSeparators($finalPassword, $syllables); + + $passwords[] = [ + 'password' => $finalPassword, + 'syllables' => $syllables, + 'separator_used' => implode('', array_unique($usedSeparators)), + 'syllable_count' => count($syllables), + 'method' => 'syllable_separated' + ]; + } + + if ($this->logger && $this->isLogLevel('info')) { + $this->logger->info('Pwgen: syllable-separated passwords generated', [ + 'count' => count($passwords), + 'separator' => $separator + ]); + } + + return $passwords; + } + + /** + * Join syllables with random separator selection for EACH separator position + * + * Ensures no leading or trailing separators + */ + private function joinSyllablesWithRandomSeparators(array $syllables, string $separatorChars): string + { + if (count($syllables) === 0) { + return ''; + } + + if (count($syllables) === 1) { + return $syllables[0]; // No separator needed for single syllable + } + + // Get available separator characters (excluding spaces) + $availableChars = str_split($separatorChars); + $availableChars = array_filter($availableChars, fn($char) => $char !== ' '); + + if (empty($availableChars)) { + // Fallback to dash if no valid separators + $availableChars = ['-']; + } + + $result = ''; + $syllableCount = count($syllables); + + for ($i = 0; $i < $syllableCount; $i++) { + // Add the syllable + $result .= $syllables[$i]; + + // Add random separator BETWEEN syllables (not after last) + if ($i < $syllableCount - 1) { + // Select random separator for THIS position + $randomSeparator = $availableChars[array_rand($availableChars)]; + $result .= $randomSeparator; + } + } + + return $result; + } + + /** + * Trim password to target length while preserving structure + */ + private function trimToLength(string $password, int $targetLength, string $separatorChars): string + { + if (strlen($password) <= $targetLength) { + return $password; + } + + // Simple trim, ensuring no trailing separator + $trimmed = substr($password, 0, $targetLength); + + // Remove trailing separator if present + $separatorArray = str_split($separatorChars); + $separatorArray = array_filter($separatorArray, fn($char) => $char !== ' '); + + while (strlen($trimmed) > 0 && in_array(substr($trimmed, -1), $separatorArray)) { + $trimmed = substr($trimmed, 0, -1); + } + + return $trimmed; + } + + /** + * Extract separators actually used in the password + */ + private function extractUsedSeparators(string $password, array $syllables): array + { + $used = []; + // Simple extraction: find chars that aren't in any syllable + $syllableChars = implode('', $syllables); + + foreach (str_split($password) as $char) { + if (strpos($syllableChars, $char) === false && !in_array($char, $used)) { + $used[] = $char; + } + } + + return $used; + } + + /** + * Split password into phonetic syllables based on vowel/consonant patterns + * + * Preferred patterns (longer syllables first): + * - CVV (Consonant-Vowel-Vowel) + * - VVC (Vowel-Vowel-Consonant) + * - CVC (Consonant-Vowel-Consonant) + * - VCC (Vowel-Consonant-Consonant) + * - CV (Consonant-Vowel) + * - VC (Vowel-Consonant) + * - Numbers preferably at syllable end + */ + private function splitIntoPhoneticSyllables(string $password): array + { + $syllables = []; + $currentSyllable = ''; + $chars = str_split($password); + $length = count($chars); + $i = 0; + + while ($i < $length) { + $char = $chars[$i]; + $currentSyllable .= $char; + + // Check if current syllable should end + $shouldEnd = false; + $syllableLen = strlen($currentSyllable); + + // Minimum syllable length check + if ($syllableLen >= self::MIN_SYLLABLE_LENGTH) { + // Look ahead to decide + $pattern = $this->getPhoneticPattern($currentSyllable); + $nextChar = ($i + 1 < $length) ? $chars[$i + 1] : null; + + // End syllable if: + // 1. We have a complete pattern (CVV, CVC, etc.) + // 2. Maximum length reached + // 3. Number at end of syllable + // 4. Good breaking point + + if ($syllableLen >= self::MAX_SYLLABLE_LENGTH) { + $shouldEnd = true; + } elseif ($this->isNumber($char) && $nextChar && !$this->isNumber($nextChar)) { + // Number at end, good break point + $shouldEnd = true; + } elseif ($this->isCompletePattern($pattern) && $syllableLen >= 3) { + // Have a good 3+ char pattern + $shouldEnd = true; + } elseif ($syllableLen >= 2 && $nextChar === null) { + // End of password + $shouldEnd = true; + } + } + + if ($shouldEnd && strlen($currentSyllable) >= self::MIN_SYLLABLE_LENGTH) { + $syllables[] = $currentSyllable; + $currentSyllable = ''; + } + + $i++; + } + + // Add remaining characters + if (!empty($currentSyllable)) { + if (count($syllables) > 0 && strlen($currentSyllable) < self::MIN_SYLLABLE_LENGTH) { + // Merge short remainder with last syllable + $syllables[count($syllables) - 1] .= $currentSyllable; + } else { + $syllables[] = $currentSyllable; + } + } + + return $syllables; + } + + /** + * Get phonetic pattern of a string (V=vowel, C=consonant, N=number) + */ + private function getPhoneticPattern(string $str): string + { + $pattern = ''; + + foreach (str_split($str) as $char) { + if ($this->isNumber($char)) { + $pattern .= 'N'; + } elseif ($this->isVowel($char)) { + $pattern .= 'V'; + } else { + $pattern .= 'C'; + } + } + + return $pattern; + } + + /** + * Check if pattern is complete/good for syllable breaking + */ + private function isCompletePattern(string $pattern): bool + { + $goodPatterns = ['CVV', 'VVC', 'CVC', 'VCC', 'CVN', 'VCN', 'CVCN']; + return in_array($pattern, $goodPatterns); + } + + /** + * Check if character is a vowel + */ + private function isVowel(string $char): bool + { + return strpos(self::VOWELS, $char) !== false; + } + + /** + * Check if character is a number + */ + private function isNumber(string $char): bool + { + return is_numeric($char); + } + + /** + * Check if native pwgen command is available + */ + private function isPwgenCommandAvailable(): bool + { + static $available = null; + + if ($available === null) { + $which = shell_exec('which pwgen 2>/dev/null'); + $available = !empty($which) && is_executable(trim($which)); + + // Alternative check for Windows + if (!$available && PHP_OS_FAMILY === 'Windows') { + $where = shell_exec('where pwgen 2>nul'); + $available = !empty($where); + } + } + + return $available; + } + + /** + * Initialize PHP fallback if not already done + * + * Uses the PwGenPhpNg class at src/Generators/Classes/PwGenPhpNg.class.php + */ + private function initializePwgenFallback(): void + { + if ($this->pwgenFallback === null) { + require_once __DIR__ . '/Classes/PwGenPhpNg.class.php'; + $this->pwgenFallback = new \PwGenPhpNg(); + + if ($this->logger && $this->isLogLevel('debug')) { + $this->logger->debug('Pwgen: PHP fallback initialized'); + } + } + } + + /** + * Calculate entropy estimate for current PWGen option set. + */ + public function calculateEntropyForOptions(array $options): float + { + $breakdown = $this->getEntropyBreakdownForOptions($options); + return (float) ($breakdown['entropy_bits'] ?? 0.0); + } + + /** + * Detailed entropy contributors for API transparency. + */ + public function getEntropyBreakdownForOptions(array $options): array + { + $validated = $this->validateOptions($options); + + $length = max(1, (int) ($validated['length'] ?? 8)); + $secureMode = (bool) ($validated['secure_mode'] ?? false); + $includeNumbers = (bool) ($validated['include_numbers'] ?? true); + $includeCapitals = (bool) ($validated['include_capitals'] ?? true); + $noAmbiguous = (bool) ($validated['no_ambiguous'] ?? false); + $separatorChars = str_replace(' ', '', (string) ($validated['separator'] ?? '')); + + $charsetSize = 26; // lowercase always available + if ($includeCapitals) { + $charsetSize += 26; + } + if ($includeNumbers) { + $charsetSize += 10; + } + + $symbolEntropyBits = 0.0; + if ($separatorChars !== '') { + $separatorAlphabet = count(array_unique(str_split($separatorChars))); + $separatorSlotsEstimate = max(1, (int) floor($length / 3)); + if ($separatorAlphabet > 1) { + $symbolEntropyBits = $separatorSlotsEstimate * log((float) $separatorAlphabet, 2); + } + } + + if ($noAmbiguous) { + // Approximate reduced alphabet due to ambiguity filtering. + $charsetSize = max(24, (int) floor($charsetSize * 0.85)); + } + + // Secure mode approximates random selection over active charset. + $baseEntropyBits = $length * log((float) $charsetSize, 2); + + // Pronounceable mode has structure constraints; apply conservative penalty. + $structurePenaltyBits = $secureMode ? 0.0 : (0.35 * $length); + $totalEntropyBits = max(0.0, $baseEntropyBits - $structurePenaltyBits + $symbolEntropyBits); + + return [ + 'entropy_model' => 'pwgen-structured-heuristic-v1', + 'model_confidence' => $secureMode ? 'medium' : 'low', + 'length' => $length, + 'secure_mode' => $secureMode, + 'include_numbers' => $includeNumbers, + 'include_capitals' => $includeCapitals, + 'no_ambiguous' => $noAmbiguous, + 'estimated_charset_size' => $charsetSize, + 'base_entropy_bits' => round($baseEntropyBits, 1), + 'structure_penalty_bits' => round($structurePenaltyBits, 1), + 'separator_entropy_bits' => round($symbolEntropyBits, 1), + 'entropy_bits' => round($totalEntropyBits, 1), + ]; + } +} diff --git a/src/Generators/XkcdPassGenerator.php b/src/Generators/XkcdPassGenerator.php new file mode 100644 index 0000000..a527bcb --- /dev/null +++ b/src/Generators/XkcdPassGenerator.php @@ -0,0 +1,878 @@ +llmManager = $llmManager; + $this->initializeWordlists(); + } + + public function getId(): string + { + return self::GENERATOR_ID; + } + + public function getVersion(): string + { + return '2.4.0'; + } + + public function getName(): string + { + return 'XKCD Pass'; + } + + public function getDescription(): string + { + return 'Memorable passphrases using word combinations with enhanced filtering and separator options'; + } + + public function getAvailableLanguages(): array + { + $languages = []; + foreach ($this->availableWordlists as $code => $label) { + $filename = $this->getWordlistFilename($code); + $path = $this->getWordlistPath() . '/' . $filename; + + $languages[$code] = [ + 'name' => $label, + 'description' => 'Wordlist for ' . $label, + 'file' => $filename, + 'available' => file_exists($path) && is_readable($path), + 'fallback' => false, + ]; + } + + return $languages; + } + + /** + * Get option definitions with AI wordlist support + */ + public function getOptionDefinitions(): array + { + $options = [ + 'words' => [ + 'type' => 'integer', + 'default' => 4, + 'min' => 2, + 'max' => 8, + 'required' => false, + 'group' => 'basic', + 'description' => 'Number of words to include in the passphrase' + ], + 'wordlist' => [ + 'type' => 'select', + 'default' => 'en', + 'choices' => $this->getAvailableWordlistChoices(), + 'translateChoices' => false, + 'required' => false, + 'group' => 'basic', + 'description' => 'Wordlist to use for generating the passphrase' + ], + 'separator' => [ + 'type' => 'string', + 'default' => '-', + 'maxLength' => 5, + 'required' => false, + 'group' => 'basic', + 'description' => 'Separator character(s) between words. If multiple, one is randomly selected for each position' + ], + 'max_word_length' => [ + 'type' => 'integer', + 'default' => 0, + 'min' => 0, + 'max' => 30, + 'required' => false, + 'group' => 'advanced', + 'description' => 'Maximum length for words (0 = no limit)' + ], + 'space_handling' => [ + 'type' => 'select', + 'default' => 'allow', + 'choices' => [ + ['value' => 'allow', 'label' => 'Allow'], + ['value' => 'skip', 'label' => 'Skip'], + ['value' => 'modify', 'label' => 'Modify'] + ], + 'translateChoices' => true, + 'required' => false, + 'group' => 'advanced', + 'description' => 'How to handle words containing spaces: allow as-is, skip them, or modify to underscores' + ], + 'add_number' => [ + 'type' => 'boolean', + 'default' => false, + 'required' => false, + 'group' => 'advanced', + 'description' => 'Add random number to the passphrase' + ], + 'number_position' => [ + 'type' => 'select', + 'default' => 'end', + 'choices' => [ + ['value' => 'beginning', 'label' => 'Beginning'], + ['value' => 'end', 'label' => 'End'], + ['value' => 'random', 'label' => 'Random'] + ], + 'translateChoices' => true, + 'required' => false, + 'group' => 'advanced', + 'description' => 'Where to place the random number' + ] + ]; + + // Add AI wordlist generation options if LLM available + if ($this->llmManager && $this->llmManager->hasAvailableProvider()) { + $options['use_ai_wordlist'] = [ + 'type' => 'boolean', + 'default' => false, + 'required' => false, + 'group' => 'ai', + 'description' => 'Generate custom wordlist using AI' + ]; + + $options['ai_wordlist_prompt'] = [ + 'type' => 'string', + 'default' => '', + 'maxLength' => 500, + 'required' => false, + 'group' => 'ai', + 'description' => 'Complete the prompt: "Create a list of X words of at least 5 characters, which..."' + ]; + + // Get available LLM providers + $providers = $this->llmManager->getAvailableProviders(); + if (!empty($providers)) { + $providerChoices = []; + foreach ($providers as $name => $info) { + $providerChoices[] = [ + 'value' => $name, + 'label' => $info['display_name'] + ]; + } + + $options['ai_provider'] = [ + 'type' => 'select', + 'default' => $this->llmManager->getDefaultProviderName(), + 'choices' => $providerChoices, + 'translateChoices' => false, + 'required' => false, + 'group' => 'ai', + 'description' => 'Which LLM provider to use' + ]; + } + } + + return $options; + } + + /** + * Get wordlist choices for UI + */ + private function getAvailableWordlistChoices(): array + { + $choices = []; + foreach ($this->availableWordlists as $code => $name) { + $choices[] = [ + 'value' => $code, + 'label' => $name + ]; + } + return $choices; + } + + public function validateOptions(array $options): array + { + $normalized = $options; + + if (isset($normalized['wordlist']) && is_string($normalized['wordlist']) && trim($normalized['wordlist']) === '') { + $normalized['wordlist'] = 'en'; + } + + $validated = parent::validateOptions($normalized); + + if (empty(trim((string) ($validated['wordlist'] ?? '')))) { + $validated['wordlist'] = 'en'; + } + + return $validated; + } + + /** + * Generate passphrases + */ + public function generate(int $count = 1, array $options = []): array + { + // Validate options using parent class method + $options = $this->validateOptions($options); + + if ($count < 1 || $count > 100) { + throw new InvalidArgumentException('Count must be between 1 and 100'); + } + + if ($this->logger && $this->isLogLevel('debug')) { + $this->logger->debug('XkcdPass: starting generation', [ + 'count' => $count, + 'use_ai' => $options['use_ai_wordlist'] ?? false + ]); + } + + $results = []; + + for ($i = 0; $i < $count; $i++) { + try { + // Check if using AI-generated wordlist + if ($options['use_ai_wordlist'] ?? false) { + if (!$this->llmManager) { + throw new RuntimeException('LLM manager not configured for AI wordlist generation'); + } + + $wordlist = $this->generateAiWordlist( + $options['words'], + $options['ai_wordlist_prompt'] ?? '', + $options['ai_provider'] ?? null + ); + } else { + $wordlist = $this->getWordlist($options['wordlist']); + } + + $results[] = $this->generateSingle($wordlist, $options); + } catch (\Exception $e) { + if ($this->logger) { + $this->logger->error('XkcdPass: generation iteration failed', [ + 'iteration' => $i + 1, + 'error' => $e->getMessage() + ]); + } + throw $e; + } + } + + if ($this->logger && $this->isLogLevel('info')) { + $this->logger->info('XkcdPass: generation complete', [ + 'count' => count($results) + ]); + } + + return $results; + } + + /** + * Generate wordlist using LLM + * + * Calculates total words needed: count × words_per_password + * Sends request to LLM to generate that many words + */ + private function generateAiWordlist( + int $wordCount, + string $userPrompt, + ?string $provider + ): array { + // Build complete prompt + $basePrompt = "Create a list of $wordCount words of at least 5 characters"; + + if (!empty($userPrompt)) { + // User completes: "which..." + $fullPrompt = $basePrompt . ", which " . trim($userPrompt); + } else { + $fullPrompt = $basePrompt . ", which are memorable and diverse"; + } + + $fullPrompt .= ". Return ONLY the words, one per line, without numbers or any formatting."; + + if ($this->logger && $this->isLogLevel('debug')) { + $this->logger->debug('XkcdPass: requesting AI wordlist', [ + 'word_count' => $wordCount, + 'provider' => $provider + ]); + } + + try { + // Call LLM + $response = $this->llmManager->generateText($fullPrompt, $provider); + + // Parse response + $words = $this->parseWordList($response, $wordCount); + + if (count($words) < $wordCount) { + throw new RuntimeException( + "LLM returned only " . count($words) . " words (expected $wordCount)" + ); + } + + // Convert to wordlist format + $wordlist = []; + foreach (array_slice($words, 0, $wordCount) as $word) { + $wordlist[] = [ + 'word' => strtolower($word), + 'explanation' => 'AI-generated' + ]; + } + + if ($this->logger && $this->isLogLevel('debug')) { + $this->logger->debug('XkcdPass: AI wordlist generated', [ + 'count' => count($wordlist) + ]); + } + + return $wordlist; + } catch (\Exception $e) { + if ($this->logger) { + $this->logger->error('XkcdPass: AI wordlist generation failed', [ + 'error' => $e->getMessage() + ]); + } + throw new RuntimeException( + "Failed to generate wordlist with LLM: {$e->getMessage()}" + ); + } + } + + /** + * Parse LLM response into clean word list + */ + private function parseWordList(string $response, int $expectedCount): array + { + $lines = preg_split('/[\r\n]+/', trim($response)); + $words = []; + + foreach ($lines as $line) { + if (count($words) >= $expectedCount) { + break; + } + + $line = trim($line); + + // Skip empty lines + if (empty($line)) { + continue; + } + + // Remove leading numbers/bullets (e.g., "1. word", "- word") + $line = preg_replace('/^[\d\-\.\)\s]+/', '', $line); + $line = trim($line); + + // Extract first word only + $parts = preg_split('/\s+/', $line); + $word = strtolower(trim($parts[0])); + + // Validate word: at least 5 chars, only alphabetic + if (strlen($word) >= 5 && preg_match('/^[a-z]+$/', $word)) { + $words[] = $word; + } + } + + return $words; + } + + /** + * Generate single passphrase + */ + private function generateSingle(array $wordlist, array $options): array + { + if (empty($wordlist)) { + throw new RuntimeException('Wordlist is empty'); + } + + // Select random words with filtering + $wordEntries = $this->selectWords($options['words'], $wordlist, $options); + + // Process words (apply space handling, length filtering, etc.) + $words = []; + $processedWordEntries = []; + foreach ($wordEntries as $entry) { + $processedEntry = $this->processWordEntry($entry, $options); + if ($processedEntry !== null) { + $words[] = $processedEntry['word']; + $processedWordEntries[] = $processedEntry; + } + } + + // Try to get more words if filtering removed too many + if (count($words) < $options['words']) { + $additionalNeeded = $options['words'] - count($words); + $additionalEntries = $this->selectWords($additionalNeeded * 3, $wordlist, $options); + + foreach ($additionalEntries as $entry) { + if (count($words) >= $options['words']) { + break; + } + + $processedEntry = $this->processWordEntry($entry, $options); + if ($processedEntry !== null) { + $words[] = $processedEntry['word']; + $processedWordEntries[] = $processedEntry; + } + } + } + + if (count($words) < $options['words']) { + throw new RuntimeException( + 'Not enough suitable words found with current filtering options' + ); + } + + // Trim to requested count + $words = array_slice($words, 0, $options['words']); + $processedWordEntries = array_slice($processedWordEntries, 0, $options['words']); + + // Add number if requested + if ($options['add_number']) { + $words = $this->addNumberToWords($words, $options['number_position']); + } + + // Join with separators + $password = $this->joinWordsWithRandomSeparators($words, $options['separator']); + + return [ + 'password' => $password, + 'method' => 'xkcdpass', + 'word_count' => count($words), + 'wordEntries' => $processedWordEntries, + 'entropy' => $this->calculateEntropyForOptions($options) + ]; + } + + /** + * Process word entry with filtering options + */ + private function processWordEntry(array $entry, array $options): ?array + { + $word = $entry['word']; + $explanation = $entry['explanation'] ?? ''; + + // Apply word length filter + if ($options['max_word_length'] > 0 && strlen($word) > $options['max_word_length']) { + return null; + } + + // Apply space handling + if (strpos($word, ' ') !== false) { + switch ($options['space_handling']) { + case 'skip': + return null; + + case 'modify': + $word = str_replace(' ', '_', $word); + break; + + case 'allow': + default: + // Keep as-is + break; + } + } + + return [ + 'word' => $word, + 'explanation' => $explanation + ]; + } + + /** + * Select random words from wordlist + */ + private function selectWords(int $count, array $wordlist, array $options): array + { + // Pre-filter based on options + $filtered = []; + foreach ($wordlist as $entry) { + $word = $entry['word']; + + // Check length constraint + if ($options['max_word_length'] > 0 && strlen($word) > $options['max_word_length']) { + continue; + } + + // Check space handling + if ($options['space_handling'] === 'skip' && strpos($word, ' ') !== false) { + continue; + } + + $filtered[] = $entry; + } + + // Fall back to original if filtering removed everything + if (empty($filtered)) { + $filtered = $wordlist; + } + + // Shuffle and return + shuffle($filtered); + return array_slice($filtered, 0, min($count * 2, count($filtered))); + } + + /** + * Join words with random separator selection for each position + */ + private function joinWordsWithRandomSeparators(array $words, string $separatorSet): string + { + if (count($words) <= 1) { + return implode('', $words); + } + + // Clean separator set + $cleanSeparators = str_replace(' ', '', $separatorSet); + if (empty($cleanSeparators)) { + return implode('', $words); + } + + $result = $words[0]; + for ($i = 1; $i < count($words); $i++) { + // Select random separator if multiple available + if (strlen($cleanSeparators) === 1) { + $separator = $cleanSeparators; + } else { + $chars = str_split($cleanSeparators); + $separator = $chars[array_rand($chars)]; + } + + $result .= $separator . $words[$i]; + } + + return $result; + } + + /** + * Add random number to words + */ + private function addNumberToWords(array $words, string $position): array + { + $number = (string)random_int(10, 9999); + + switch ($position) { + case 'beginning': + array_unshift($words, $number); + break; + + case 'random': + if (count($words) > 1) { + array_splice($words, random_int(0, count($words)), 0, [$number]); + } else { + $words[] = $number; + } + break; + + case 'end': + default: + $words[] = $number; + } + + return $words; + } + + /** + * Calculate XKCD entropy from actual option-constrained candidate space. + */ + public function calculateEntropyForOptions(array $options): float + { + $breakdown = $this->getEntropyBreakdownForOptions($options); + return (float) ($breakdown['entropy_bits'] ?? 0.0); + } + + /** + * Return detailed entropy contributors for transparent API/UI reporting. + */ + public function getEntropyBreakdownForOptions(array $options): array + { + $normalized = $this->normalizeEntropyOptions($options); + + $requestedWords = max(1, (int) ($normalized['words'] ?? 4)); + $wordlistCode = (string) ($normalized['wordlist'] ?? 'en'); + $wordlistEntries = $this->getWordlist($wordlistCode); + $totalCandidates = count($wordlistEntries); + + $effectiveCandidates = 0; + foreach ($wordlistEntries as $entry) { + $word = is_array($entry) ? (string) ($entry['word'] ?? '') : (string) $entry; + if ($word === '') { + continue; + } + + if ($normalized['max_word_length'] > 0 && strlen($word) > $normalized['max_word_length']) { + continue; + } + + if ($normalized['space_handling'] === 'skip' && strpos($word, ' ') !== false) { + continue; + } + + $effectiveCandidates++; + } + + if ($effectiveCandidates <= 0) { + $effectiveCandidates = max(1, $totalCandidates); + } + + $wordEntropyBits = $requestedWords * log((float) $effectiveCandidates, 2); + + $separatorSet = str_replace(' ', '', (string) ($normalized['separator'] ?? '-')); + $separatorAlphabet = count(array_unique(str_split($separatorSet))); + $separatorSlots = max(0, $requestedWords - 1); + $separatorEntropyBits = ($separatorAlphabet > 1 && $separatorSlots > 0) + ? ($separatorSlots * log((float) $separatorAlphabet, 2)) + : 0.0; + + $numberEntropyBits = 0.0; + if ((bool) ($normalized['add_number'] ?? false)) { + // random_int(10, 9999) includes 9,990 possible values. + $numberEntropyBits = log(9990.0, 2); + + if (($normalized['number_position'] ?? 'end') === 'random') { + $numberEntropyBits += log((float) ($requestedWords + 1), 2); + } + } + + $totalEntropyBits = $wordEntropyBits + $separatorEntropyBits + $numberEntropyBits; + + return [ + 'entropy_model' => 'xkcd-candidate-space-v1', + 'model_confidence' => 'high', + 'wordlist' => $wordlistCode, + 'requested_words' => $requestedWords, + 'wordlist_total_candidates' => $totalCandidates, + 'effective_wordlist_candidates' => $effectiveCandidates, + 'max_word_length' => (int) $normalized['max_word_length'], + 'space_handling' => (string) ($normalized['space_handling'] ?? 'allow'), + 'separator_alphabet_size' => $separatorAlphabet, + 'separator_slots' => $separatorSlots, + 'number_inserted' => (bool) ($normalized['add_number'] ?? false), + 'number_position' => (string) ($normalized['number_position'] ?? 'end'), + 'word_entropy_bits' => round($wordEntropyBits, 1), + 'separator_entropy_bits' => round($separatorEntropyBits, 1), + 'number_entropy_bits' => round($numberEntropyBits, 1), + 'entropy_bits' => round($totalEntropyBits, 1), + ]; + } + + /** + * Normalize option aliases used across API/frontend payloads. + */ + private function normalizeEntropyOptions(array $options): array + { + $normalized = $options; + + if (!isset($normalized['wordlist']) && isset($normalized['language'])) { + $normalized['wordlist'] = $normalized['language']; + } + + if (!isset($normalized['add_number']) && isset($normalized['addNumber'])) { + $normalized['add_number'] = $normalized['addNumber']; + } + + return $this->validateOptions($normalized); + } + + /** + * Initialize available wordlists + */ + private function initializeWordlists(): void + { + $defaultLabels = [ + 'en' => 'EFF Large Wordlist (English)', + 'de' => 'German Common Words', + 'fr' => 'French Common Words', + 'it' => 'Italian Common Words', + 'es' => 'Spanish Common Words' + ]; + + $defaultFileMap = [ + 'en' => 'eff_large_wordlist_en.txt', + 'de' => 'german_common_words_de.txt', + 'fr' => 'french_common_words_fr.txt', + 'it' => 'italian_common_words_it.txt', + 'es' => 'spanish_common_words_es.txt' + ]; + + $configuredWordlists = $this->getConfigValue('generator.xkcd.wordlists', null); + if (is_array($configuredWordlists) && !empty($configuredWordlists)) { + $labels = []; + $files = []; + + foreach ($configuredWordlists as $code => $definition) { + if (!is_string($code) || trim($code) === '' || !is_array($definition)) { + continue; + } + + $label = $definition['label'] ?? null; + $file = $definition['file'] ?? null; + + if (!is_string($label) || trim($label) === '' || !is_string($file) || trim($file) === '') { + continue; + } + + $normalizedCode = trim($code); + $labels[$normalizedCode] = trim($label); + $files[$normalizedCode] = trim($file); + } + + if (!empty($labels) && !empty($files)) { + $this->availableWordlists = $labels; + $this->wordlistFileMap = $files; + } + } + + if (empty($this->availableWordlists) || empty($this->wordlistFileMap)) { + $this->availableWordlists = $defaultLabels; + $this->wordlistFileMap = $defaultFileMap; + } + + if ($this->logger && $this->isLogLevel('debug')) { + $this->logger->debug('XkcdPass: wordlists initialized', [ + 'count' => count($this->availableWordlists), + 'configured' => !empty($configuredWordlists ?? null) + ]); + } + } + + /** + * Load wordlist from file + */ + private function getWordlist(string $code): array + { + if (isset($this->wordlists[$code])) { + return $this->wordlists[$code]; + } + + // Load wordlist + $this->loadWordlist($code); + + return $this->wordlists[$code] ?? $this->getFallbackWordlist(); + } + + /** + * Load wordlist from file + */ + private function loadWordlist(string $code): void + { + $filename = $this->getWordlistFilename($code); + $path = $this->getWordlistPath() . '/' . $filename; + + if (!file_exists($path) || !is_readable($path)) { + if ($this->logger) { + $this->logger->warning('XkcdPass: wordlist file not found', [ + 'code' => $code, + 'path' => $path + ]); + } + $this->wordlists[$code] = []; + return; + } + + $content = file_get_contents($path); + if ($content === false) { + if ($this->logger) { + $this->logger->warning('XkcdPass: failed to read wordlist file', [ + 'path' => $path + ]); + } + $this->wordlists[$code] = []; + return; + } + + $lines = array_filter( + array_map('trim', explode("\n", $content)), + fn($line) => !empty($line) && strlen($line) >= 3 + ); + + $processed = []; + foreach ($lines as $line) { + $parsed = $this->parseWordlistEntry($line); + if (!empty($parsed['word'])) { + $processed[] = $parsed; + } + } + + $this->wordlists[$code] = !empty($processed) ? $processed : []; + + if ($this->logger && $this->isLogLevel('debug')) { + $this->logger->debug('XkcdPass: wordlist loaded', [ + 'code' => $code, + 'count' => count($this->wordlists[$code]) + ]); + } + } + + /** + * Get fallback wordlist + */ + private function getFallbackWordlist(): array + { + return [ + ['word' => 'correct', 'explanation' => ''], + ['word' => 'horse', 'explanation' => ''], + ['word' => 'battery', 'explanation' => ''], + ['word' => 'staple', 'explanation' => ''], + ['word' => 'python', 'explanation' => ''], + ['word' => 'monkey', 'explanation' => ''], + ['word' => 'pencil', 'explanation' => ''], + ['word' => 'cloud', 'explanation' => ''], + ['word' => 'mountain', 'explanation' => ''], + ['word' => 'rainbow', 'explanation' => ''] + ]; + } + + /** + * Get wordlist filename + */ + private function getWordlistFilename(string $code): string + { + return $this->wordlistFileMap[$code] ?? ($this->wordlistFileMap['en'] ?? 'eff_large_wordlist_en.txt'); + } + + /** + * Get wordlist directory + */ + private function getWordlistPath(): string + { + $configuredPath = $this->getConfigValue('generator.xkcd.wordlists_path', self::DEFAULT_WORDLISTS_DIR); + $safePath = is_string($configuredPath) && trim($configuredPath) !== '' + ? trim($configuredPath) + : self::DEFAULT_WORDLISTS_DIR; + + if (str_starts_with($safePath, '/')) { + return $safePath; + } + + return dirname(__DIR__, 2) . '/' . ltrim($safePath, '/'); + } +} diff --git a/src/Managers/PasswordGeneratorManager.php b/src/Managers/PasswordGeneratorManager.php new file mode 100644 index 0000000..b10adca --- /dev/null +++ b/src/Managers/PasswordGeneratorManager.php @@ -0,0 +1,586 @@ +loadConfig(); + + // Initialize LLM Manager + if (isset($config['llm'])) { + $this->llmManager = new LLMManager($config['llm']); + } + + // Register generators + $this->registerGenerators(); + } + + private function loadConfig(): array + { + try { + $config = ConfigLoader::load(); + } catch (\Throwable $e) { + $config = []; + } + + $provider = $_ENV['LLM_DEFAULT_PROVIDER'] ?? null; + if (is_string($provider) && $provider !== '') { + $config['llm']['default_provider'] = $provider; + } + + $apiKeyEnvMap = [ + 'openai' => 'OPENAI_API_KEY', + 'claude' => 'CLAUDE_API_KEY', + 'gemini' => 'GEMINI_API_KEY', + 'perplexity' => 'PERPLEXITY_API_KEY', + ]; + + foreach ($apiKeyEnvMap as $providerName => $envVar) { + $apiKey = $_ENV[$envVar] ?? null; + if (is_string($apiKey) && $apiKey !== '') { + $config['llm']['api_keys'][$providerName] = $apiKey; + } + } + + return is_array($config) ? $config : []; + } + + private function registerGenerators(): void + { + $this->generators = [ + 'high-entropy' => new \App\Generators\HighEntropyGenerator(), + 'xkcdpass' => new \App\Generators\XkcdPassGenerator($this->llmManager), + 'diceware' => new \App\Generators\DicewareGenerator(), + 'pwgen' => new \App\Generators\PwgenGenerator(), + 'passkey' => new \App\Generators\PasskeyGenerator(), + 'phrase-abbreviator' => new \App\Generators\PhraseAbbreviatorGenerator($this->llmManager), + ]; + } + + public function getAvailableTypes(): array + { + $types = []; + foreach ($this->generators as $key => $generator) { + $types[] = [ + 'id' => $key, + 'name' => $generator->getName(), + 'description' => $generator->getDescription(), + ]; + } + return $types; + } + + public function getGeneratorDefinitions(): array + { + $definitions = []; + + foreach ($this->generators as $id => $generator) { + $optionDefinitions = []; + foreach ($generator->getOptionDefinitions() as $optionName => $definition) { + $group = $definition['group'] ?? 'basic'; + $label = $definition['label'] ?? $this->humanizeOptionName($optionName); + $description = $definition['description'] ?? ''; + + $option = [ + 'name' => $optionName, + 'type' => $definition['type'], + 'label' => $label, + 'description' => $description, + 'labelKey' => $id . '_option_' . $optionName, + 'descriptionKey' => $id . '_option_' . $optionName . '_description', + 'default' => $definition['default'] ?? null, + 'required' => $definition['required'] ?? false, + 'group' => $group, + 'groupTitleKey' => $id . '_options_group_' . $group . '_title', + 'validationErrorKey' => $id . '_option_' . $optionName . '_validation_error', + ]; + + if (isset($definition['min'])) { + $option['min'] = $definition['min']; + } + if (isset($definition['max'])) { + $option['max'] = $definition['max']; + } + if (isset($definition['minLength'])) { + $option['minLength'] = $definition['minLength']; + } + if (isset($definition['maxLength'])) { + $option['maxLength'] = $definition['maxLength']; + } + if (isset($definition['pattern'])) { + $option['pattern'] = $definition['pattern']; + } + if (isset($definition['translateChoices'])) { + $option['translateChoices'] = $definition['translateChoices']; + } + if (isset($definition['choices'])) { + $formattedChoices = []; + foreach ($definition['choices'] as $choice) { + if (is_array($choice)) { + $value = $choice['value']; + $label = $choice['label']; + } else { + $value = $choice; + $label = $choice; + } + + $formattedChoices[] = [ + 'value' => $value, + 'label' => $label, + 'labelKey' => $id . '_option_' . $optionName . '_choice_' . $value, + ]; + } + $option['choices'] = $formattedChoices; + } + + $optionDefinitions[] = $option; + } + + $definitions[$id] = [ + 'id' => $id, + 'name' => $generator->getName(), + 'description' => $generator->getDescription(), + 'nameKey' => $id . '_title', + 'descriptionKey' => $id . '_description', + 'version' => $generator->getVersion(), + 'options' => $optionDefinitions, + ]; + } + + return $definitions; + } + + private function humanizeOptionName(string $optionName): string + { + $humanized = preg_replace('/[_-]+/', ' ', $optionName); + $humanized = preg_replace('/(?generators[$type])) { + throw new \InvalidArgumentException("Unknown generator type: $type"); + } + + return $this->generators[$type]; + } + + /** + * Enhanced generate method with proper data extraction + */ + public function generate(string $type, int $count, array $options): array + { + $generator = $this->getGenerator($type); + $results = $generator->generate($count, $options); + + // Initialize response data + $passwords = []; + $explanations = []; + $diceRolls = []; + $securityInfo = null; + + // Process each result and extract all nested data + for ($i = 0; $i < count($results); $i++) { + $result = $results[$i]; + + if (is_array($result) && isset($result['password'])) { + // Extract password + $passwords[] = $result['password']; + + // Extract explanations from wordEntries + $explanation = null; + if (!empty($result['wordEntries'])) { + $explanationTexts = []; + foreach ($result['wordEntries'] as $entry) { + if (is_array($entry) && isset($entry['explanation']) && !empty($entry['explanation'])) { + $explanationTexts[] = $entry['explanation']; + } + } + + if (!empty($explanationTexts)) { + $explanation = implode(' – ', $explanationTexts); + } + } + $explanations[] = $explanation; + + // Extract dice rolls (for Diceware) + if (!empty($result['dice_rolls'])) { + $diceRolls[] = $result['dice_rolls']; + } + + // Extract security info (for Diceware) + if (!empty($result['security_info'])) { + $securityInfo = $result['security_info']; + } + + } else { + // Simple string-only format + $passwords[] = is_string($result) ? $result : (string)$result; + $explanations[] = null; + } + } + + // Calculate accurate entropy and optional model breakdown + $entropyAnalysis = $this->calculateEntropyAnalysis($generator, $options, $passwords[0] ?? ''); + $entropyBits = $entropyAnalysis['entropy_bits']; + + // Build response + $response = [ + 'passwords' => $passwords, + 'entropy_bits' => $entropyBits, + 'generator_info' => $generator->getName() . ' generator', + 'options_used' => $options + ]; + + // FIXED: Only add explanations if any exist and are not null + $validExplanations = array_filter($explanations, fn($exp) => !empty($exp)); + if (!empty($validExplanations)) { + // Preserve array indices to match passwords + $response['explanations'] = $explanations; + } + + // FIXED: Only add dice rolls if any exist + if (!empty($diceRolls)) { + $response['dice_rolls'] = $diceRolls; + } + + // FIXED: Add security info if exists + if ($securityInfo !== null) { + $response['security_info'] = $securityInfo; + } + + $assessment = $this->buildSecurityAssessment( + $entropyBits, + $generator->getName(), + $securityInfo, + $passwords[0] ?? '', + $entropyAnalysis['details'] ?? [] + ); + + $response['security_assessment'] = $assessment['security_assessment']; + $response['raw_technical_details'] = $assessment['raw_technical_details']; + + return $response; + } + + private function buildSecurityAssessment(float $entropyBits, string $generatorName, ?array $securityInfo, string $password, array $entropyDetails = []): array + { + $rawDetails = [ + 'entropy_bits' => round($entropyBits, 1), + 'generator' => $generatorName, + 'length' => $password !== '' ? strlen($password) : 0, + ]; + + if (!empty($entropyDetails)) { + $rawDetails['entropy_breakdown'] = $entropyDetails; + } + + if (is_array($securityInfo)) { + $rawDetails = array_merge($rawDetails, $securityInfo); + } + + $securityLevel = $this->normalizeSecurityLevel($rawDetails['security_level'] ?? '', $entropyBits); + $rawDetails['security_level'] = $securityLevel; + + return [ + 'security_assessment' => $this->getSecurityAssessmentText($securityLevel, $entropyBits), + 'raw_technical_details' => $rawDetails, + ]; + } + + private function normalizeSecurityLevel(string $securityLevel, float $entropyBits): string + { + $normalized = strtolower(trim($securityLevel)); + + if ($normalized === '' || $normalized === 'none') { + return $this->classifyEntropy($entropyBits); + } + + if (str_contains($normalized, 'excellent') || str_contains($normalized, 'very strong')) { + return 'Very strong'; + } + if (str_contains($normalized, 'strong')) { + return 'Strong'; + } + if (str_contains($normalized, 'adequate')) { + return 'Adequate'; + } + if (str_contains($normalized, 'weak')) { + return 'Weak'; + } + + return $this->classifyEntropy($entropyBits); + } + + private function classifyEntropy(float $entropyBits): string + { + if ($entropyBits >= 128) { + return 'Very strong'; + } + if ($entropyBits >= 96) { + return 'Strong'; + } + if ($entropyBits >= 64) { + return 'Adequate'; + } + if ($entropyBits >= 40) { + return 'Weak'; + } + + return 'Very weak'; + } + + private function getSecurityAssessmentText(string $securityLevel, float $entropyBits): string + { + $level = trim($securityLevel) !== '' ? $securityLevel : $this->classifyEntropy($entropyBits); + + $messages = [ + 'Very strong' => 'Very strong — this password has excellent entropy and is suitable for high-value accounts.', + 'Strong' => 'Strong — this password has good entropy and is suitable for most uses.', + 'Adequate' => 'Adequate — this password is acceptable for ordinary use but can be improved.', + 'Weak' => 'Weak — this password is relatively easy to brute-force and should be replaced.', + 'Very weak' => 'Very weak — this password offers very little protection.', + ]; + + return $messages[$level] ?? 'Security assessment unavailable.'; + } + + public function validateOptions(string $type, array $options): array + { + $generator = $this->getGenerator($type); + return $generator->validateOptions($options); + } + + public function getDefaultOptions(string $type): array + { + $generator = $this->getGenerator($type); + return $generator->getDefaultOptions(); + } + + /** + * Accurate entropy calculation using generator-specific logic + */ + private function calculateAccurateEntropy($generator, array $options, string $samplePassword): float + { + // Try generator-specific calculation first + if (method_exists($generator, 'calculateEntropyForOptions')) { + return $generator->calculateEntropyForOptions($options); + } + + // Fallback to type-specific calculations + $generatorName = strtolower($generator->getName()); + + switch ($generatorName) { + case 'xkcd pass': + case 'xkcdpass': + return $this->calculateXkcdEntropy($options); + + case 'diceware': + return $this->calculateDicewareEntropy($options); + + case 'passkey': + return $this->calculatePasskeyEntropy($options); + + case 'high entropy': + return $this->calculateHighEntropyEntropy($options); + + case 'pwgen': + return $this->calculatePwgenEntropy($options, $samplePassword); + + default: + return $this->calculateGenericEntropy($samplePassword); + } + } + + /** + * Calculate entropy and expose optional generator-level entropy details. + */ + private function calculateEntropyAnalysis($generator, array $options, string $samplePassword): array + { + $details = []; + + if (method_exists($generator, 'getEntropyBreakdownForOptions')) { + try { + $details = $generator->getEntropyBreakdownForOptions($options); + } catch (\Throwable $e) { + $details = []; + } + } + + $entropyBits = $this->calculateAccurateEntropy($generator, $options, $samplePassword); + if (isset($details['entropy_bits']) && is_numeric($details['entropy_bits'])) { + $entropyBits = (float) $details['entropy_bits']; + } + + return [ + 'entropy_bits' => round($entropyBits, 1), + 'details' => $details, + ]; + } + + /** + * Calculate XKCD passphrase entropy with filtering effects + */ + private function calculateXkcdEntropy(array $options): float + { + $words = $options['words'] ?? 4; + $addNumber = $options['addNumber'] ?? false; + $language = $options['language'] ?? 'en'; + + // Base wordlist sizes by language + $wordlistSizes = [ + 'en' => 7776, // EFF Large wordlist + 'de' => 5000, // Estimated German words + 'fr' => 5000, // Estimated French words + 'it' => 4000, // Estimated Italian words + 'es' => 4000, // Estimated Spanish words + 'ch' => 3000, // Estimated Swiss German words + ]; + + $baseWordlistSize = $wordlistSizes[$language] ?? 7776; + + // Apply filtering penalties + $effectiveWordlistSize = $baseWordlistSize; + + // Word length filter penalty + if (isset($options['max_word_length']) && $options['max_word_length'] > 0) { + $maxLength = $options['max_word_length']; + if ($maxLength <= 4) { + $effectiveWordlistSize *= 0.3; // Very restrictive + } elseif ($maxLength <= 6) { + $effectiveWordlistSize *= 0.6; // Moderately restrictive + } elseif ($maxLength <= 8) { + $effectiveWordlistSize *= 0.85; // Slightly restrictive + } + } + + // Space handling penalty + if (isset($options['space_handling']) && $options['space_handling'] === 'skip') { + $effectiveWordlistSize *= 0.95; // ~5% of words contain spaces + } + + // Ensure reasonable minimum + $effectiveWordlistSize = max($effectiveWordlistSize, 50); + + // Calculate word entropy + $wordEntropy = $words * log($effectiveWordlistSize, 2); + + // Add number entropy if used + $numberEntropy = 0; + if ($addNumber) { + $numberEntropy = log(90, 2); // 2-digit numbers: 10-99 = 90 possibilities + } + + return round($wordEntropy + $numberEntropy, 1); + } + + /** + * Calculate Diceware entropy + */ + private function calculateDicewareEntropy(array $options): float + { + $words = $options['words'] ?? 6; + + // Diceware standard: 7776 words (6^5) + $entropy = $words * log(7776, 2); + + return round($entropy, 1); + } + + /** + * Calculate Passkey entropy + */ + private function calculatePasskeyEntropy(array $options): float + { + $syllables = $options['syllables'] ?? 6; + + // Estimate combinations per syllable + // CV: 21×5=105, CVC: 21×5×21=2205, average ≈ 150 + $combinationsPerSyllable = 150; + + // Character substitutions add ~20% entropy + $substitutionMultiplier = 1.2; + + $totalCombinations = pow($combinationsPerSyllable, $syllables) * $substitutionMultiplier; + + return round(log($totalCombinations, 2), 1); + } + + /** + * Calculate High Entropy password entropy + */ + private function calculateHighEntropyEntropy(array $options): float + { + $length = $options['length'] ?? 16; + + // Count character set size + $charsetSize = 0; + if ($options['include_lowercase'] ?? true) $charsetSize += 26; + if ($options['include_uppercase'] ?? true) $charsetSize += 26; + if ($options['include_numbers'] ?? true) $charsetSize += 10; + if ($options['include_symbols'] ?? true) $charsetSize += 32; + + // Ensure at least one character type + $charsetSize = max($charsetSize, 26); + + return round($length * log($charsetSize, 2), 1); + } + + /** + * Calculate PWGen entropy estimate + */ + private function calculatePwgenEntropy(array $options, string $samplePassword): float + { + $type = $options['type'] ?? '16-char'; + + // PWGen entropy estimates based on pattern complexity + $entropyMap = [ + '8-char' => 35.0, + '12-char' => 45.0, + '16-char' => 55.0 + ]; + + return $entropyMap[$type] ?? $this->calculateGenericEntropy($samplePassword); + } + + /** + * Generic entropy calculation for unknown generators + */ + private function calculateGenericEntropy(string $password): float + { + if (empty($password)) { + return 0.0; + } + + $length = strlen($password); + + // Analyze character set used + $hasLower = preg_match('/[a-z]/', $password); + $hasUpper = preg_match('/[A-Z]/', $password); + $hasDigit = preg_match('/[0-9]/', $password); + $hasSymbol = preg_match('/[^a-zA-Z0-9\s]/', $password); + + $charsetSize = 0; + if ($hasLower) $charsetSize += 26; + if ($hasUpper) $charsetSize += 26; + if ($hasDigit) $charsetSize += 10; + if ($hasSymbol) $charsetSize += 32; // Estimate + + $charsetSize = max($charsetSize, 26); // Minimum alphabet + + return round($length * log($charsetSize, 2), 1); + } +} \ No newline at end of file diff --git a/src/Middleware/CorsMiddleware.php b/src/Middleware/CorsMiddleware.php new file mode 100644 index 0000000..afda11c --- /dev/null +++ b/src/Middleware/CorsMiddleware.php @@ -0,0 +1,31 @@ +handle($request); + $origin = SecurityConfig::resolveCorsOrigin($_ENV['APP_ENV'] ?? 'production'); + + if ($origin === '') { + $response = $response->withoutHeader('Access-Control-Allow-Origin'); + } else { + $response = $response->withHeader('Access-Control-Allow-Origin', $origin); + } + + return $response + ->withHeader('Access-Control-Allow-Headers', $_ENV['CORS_HEADERS'] ?? 'Content-Type,Authorization') + ->withHeader('Access-Control-Allow-Methods', $_ENV['CORS_METHODS'] ?? 'GET,POST,OPTIONS') + ->withHeader('Access-Control-Max-Age', '3600'); + } +} diff --git a/src/Middleware/JsonResponseMiddleware.php b/src/Middleware/JsonResponseMiddleware.php new file mode 100644 index 0000000..ba15544 --- /dev/null +++ b/src/Middleware/JsonResponseMiddleware.php @@ -0,0 +1,27 @@ +handle($request); + + // Add JSON content type for API routes + if (strpos($request->getUri()->getPath(), '/api/') === 0) { + if (!$response->hasHeader('Content-Type')) { + $response = $response->withHeader('Content-Type', 'application/json'); + } + } + + return $response; + } +} diff --git a/src/Middleware/RateLimitMiddleware.php b/src/Middleware/RateLimitMiddleware.php new file mode 100644 index 0000000..fe9484d --- /dev/null +++ b/src/Middleware/RateLimitMiddleware.php @@ -0,0 +1,86 @@ +maxRequests = SecurityConfig::resolveRateLimit($_ENV['APP_ENV'] ?? 'production', 120); + } + + public function process(Request $request, RequestHandler $handler): Response + { + $clientIp = $this->getClientIp($request); + $cacheKey = self::CACHE_PREFIX . $clientIp; + + // Simple in-memory rate limiting for demo purposes + // In production, use Redis or database + static $requests = []; + + $now = time(); + $windowStart = $now - $this->timeWindow; + + // Clean old requests + if (isset($requests[$cacheKey])) { + $requests[$cacheKey] = array_filter( + $requests[$cacheKey], + fn($timestamp) => $timestamp > $windowStart + ); + } else { + $requests[$cacheKey] = []; + } + + // Check if limit exceeded + if (count($requests[$cacheKey]) >= $this->maxRequests) { + $response = new \Slim\Psr7\Response(); + $response->getBody()->write(json_encode([ + 'error' => 'Rate limit exceeded', + 'message' => "Maximum {$this->maxRequests} requests per minute allowed" + ])); + return $response + ->withStatus(429) + ->withHeader('Content-Type', 'application/json') + ->withHeader('Retry-After', $this->timeWindow); + } + + // Add current request + $requests[$cacheKey][] = $now; + + $response = $handler->handle($request); + + // Add rate limit headers + $remaining = max(0, $this->maxRequests - count($requests[$cacheKey])); + return $response + ->withHeader('X-RateLimit-Limit', (string) $this->maxRequests) + ->withHeader('X-RateLimit-Remaining', (string) $remaining) + ->withHeader('X-RateLimit-Reset', (string) ($now + $this->timeWindow)); + } + + private function getClientIp(Request $request): string + { + $serverParams = $request->getServerParams(); + + if (!empty($serverParams['HTTP_CLIENT_IP'])) { + return $serverParams['HTTP_CLIENT_IP']; + } elseif (!empty($serverParams['HTTP_X_FORWARDED_FOR'])) { + return $serverParams['HTTP_X_FORWARDED_FOR']; + } elseif (!empty($serverParams['REMOTE_ADDR'])) { + return $serverParams['REMOTE_ADDR']; + } + + return '127.0.0.1'; + } +} diff --git a/src/Services/LLM/AbstractLLMProvider.php b/src/Services/LLM/AbstractLLMProvider.php new file mode 100644 index 0000000..f6bee87 --- /dev/null +++ b/src/Services/LLM/AbstractLLMProvider.php @@ -0,0 +1,106 @@ +apiKey = $config['api_key'] ?? ''; + $this->timeout = $config['timeout'] ?? 30; + $this->maxTokens = $config['max_tokens'] ?? 500; + $this->temperature = $config['temperature'] ?? 0.7; + } + + /** + * Check if provider is available (has API key) + */ + public function isAvailable(): bool + { + return !empty($this->apiKey); + } + + /** + * Make HTTP request to API + */ + protected function makeRequest( + string $url, + array $headers, + array $data, + string $method = 'POST' + ): array { + $options = [ + 'http' => [ + 'method' => $method, + 'header' => $this->buildHeaders($headers), + 'content' => json_encode($data), + 'timeout' => $this->timeout, + 'ignore_errors' => true + ] + ]; + + $context = stream_context_create($options); + $response = @file_get_contents($url, false, $context); + + if ($response === false) { + throw new RuntimeException( + "Failed to connect to {$this->getName()} API" + ); + } + + // Get HTTP response code + $httpCode = 200; + if (isset($http_response_header[0])) { + preg_match('/\d{3}/', $http_response_header[0], $matches); + $httpCode = (int)($matches[0] ?? 200); + } + + $result = json_decode($response, true); + + if ($httpCode >= 400) { + $errorMsg = $this->extractErrorMessage($result); + throw new RuntimeException( + "{$this->getName()} API error (HTTP {$httpCode}): {$errorMsg}" + ); + } + + return $result ?? []; + } + + /** + * Build HTTP headers array into string + */ + private function buildHeaders(array $headers): string + { + $headerLines = []; + foreach ($headers as $key => $value) { + $headerLines[] = "{$key}: {$value}"; + } + return implode("\r\n", $headerLines); + } + + /** + * Extract error message from API response + */ + protected function extractErrorMessage(array $response): string + { + // Try common error message fields + return $response['error']['message'] + ?? $response['error'] + ?? $response['message'] + ?? 'Unknown error'; + } +} \ No newline at end of file diff --git a/src/Services/LLM/LLMManager.php b/src/Services/LLM/LLMManager.php new file mode 100644 index 0000000..34c5a5a --- /dev/null +++ b/src/Services/LLM/LLMManager.php @@ -0,0 +1,150 @@ +config = $config; + $this->defaultProvider = $config['default_provider'] ?? 'openai'; + $this->initializeProviders(); + } + + /** + * Initialize all LLM providers + */ + private function initializeProviders(): void + { + $apiKeys = $this->config['api_keys'] ?? []; + $llmConfig = $this->config; + + // OpenAI + if (!empty($apiKeys['openai'])) { + $this->providers['openai'] = new OpenAIProvider([ + 'api_key' => $apiKeys['openai'], + 'timeout' => $llmConfig['timeout'] ?? 30, + 'max_tokens' => $llmConfig['max_tokens'] ?? 500, + 'temperature' => $llmConfig['temperature'] ?? 0.7 + ]); + } + + // Claude + if (!empty($apiKeys['claude'])) { + $this->providers['claude'] = new ClaudeProvider([ + 'api_key' => $apiKeys['claude'], + 'timeout' => $llmConfig['timeout'] ?? 30, + 'max_tokens' => $llmConfig['max_tokens'] ?? 500, + 'temperature' => $llmConfig['temperature'] ?? 0.7 + ]); + } + + // Gemini + if (!empty($apiKeys['gemini'])) { + $this->providers['gemini'] = new GeminiProvider([ + 'api_key' => $apiKeys['gemini'], + 'timeout' => $llmConfig['timeout'] ?? 30, + 'max_tokens' => $llmConfig['max_tokens'] ?? 500, + 'temperature' => $llmConfig['temperature'] ?? 0.7 + ]); + } + + // Perplexity + if (!empty($apiKeys['perplexity'])) { + $this->providers['perplexity'] = new PerplexityProvider([ + 'api_key' => $apiKeys['perplexity'], + 'timeout' => $llmConfig['timeout'] ?? 30, + 'max_tokens' => $llmConfig['max_tokens'] ?? 500, + 'temperature' => $llmConfig['temperature'] ?? 0.7 + ]); + } + } + + /** + * Get provider by name + */ + public function getProvider(string $name): LLMProviderInterface + { + if (!isset($this->providers[$name])) { + throw new RuntimeException("LLM provider '{$name}' not available or not configured"); + } + + return $this->providers[$name]; + } + + /** + * Get default provider + */ + public function getDefaultProvider(): LLMProviderInterface + { + return $this->getProvider($this->defaultProvider); + } + + /** + * Generate text using specified or default provider + */ + public function generateText( + string $prompt, + ?string $provider = null, + array $options = [] + ): string { + $llm = $provider ? $this->getProvider($provider) : $this->getDefaultProvider(); + return $llm->generateText($prompt, $options); + } + + /** + * Get list of available providers + */ + public function getAvailableProviders(): array + { + $available = []; + foreach ($this->providers as $name => $provider) { + if ($provider->isAvailable()) { + $available[$name] = [ + 'name' => $name, + 'display_name' => ucfirst($name), + 'models' => $provider->getAvailableModels(), + 'default_model' => $provider->getDefaultModel() + ]; + } + } + return $available; + } + + /** + * Check if any provider is available + */ + public function hasAvailableProvider(): bool + { + foreach ($this->providers as $provider) { + if ($provider->isAvailable()) { + return true; + } + } + return false; + } + + /** + * Get default provider name + */ + public function getDefaultProviderName(): string + { + return $this->defaultProvider; + } +} \ No newline at end of file diff --git a/src/Services/LLM/LLMProviderInterface.php b/src/Services/LLM/LLMProviderInterface.php new file mode 100644 index 0000000..d0e8423 --- /dev/null +++ b/src/Services/LLM/LLMProviderInterface.php @@ -0,0 +1,42 @@ + 'Claude 3 Opus', + 'claude-3-sonnet-20240229' => 'Claude 3 Sonnet', + 'claude-3-haiku-20240307' => 'Claude 3 Haiku' + ]; + } + + public function generateText(string $prompt, array $options = []): string + { + if (!$this->isAvailable()) { + throw new RuntimeException('Claude API key not configured'); + } + + $model = $options['model'] ?? $this->getDefaultModel(); + $temperature = $options['temperature'] ?? $this->temperature; + $maxTokens = $options['max_tokens'] ?? $this->maxTokens; + + $data = [ + 'model' => $model, + 'max_tokens' => $maxTokens, + 'temperature' => $temperature, + 'messages' => [ + [ + 'role' => 'user', + 'content' => $prompt + ] + ] + ]; + + $headers = [ + 'Content-Type' => 'application/json', + 'x-api-key' => $this->apiKey, + 'anthropic-version' => '2023-06-01' + ]; + + $response = $this->makeRequest(self::API_URL, $headers, $data); + + if (!isset($response['content'][0]['text'])) { + throw new RuntimeException('Invalid Claude API response format'); + } + + return trim($response['content'][0]['text']); + } +} \ No newline at end of file diff --git a/src/Services/LLM/Providers/GeminiProvider.php b/src/Services/LLM/Providers/GeminiProvider.php new file mode 100644 index 0000000..1281797 --- /dev/null +++ b/src/Services/LLM/Providers/GeminiProvider.php @@ -0,0 +1,73 @@ + 'Gemini Pro', + 'gemini-1.5-pro' => 'Gemini 1.5 Pro', + 'gemini-1.5-flash' => 'Gemini 1.5 Flash' + ]; + } + + public function generateText(string $prompt, array $options = []): string + { + if (!$this->isAvailable()) { + throw new RuntimeException('Gemini API key not configured'); + } + + $model = $options['model'] ?? $this->getDefaultModel(); + $temperature = $options['temperature'] ?? $this->temperature; + $maxTokens = $options['max_tokens'] ?? $this->maxTokens; + + $url = str_replace('{model}', $model, self::API_URL) . "?key={$this->apiKey}"; + + $data = [ + 'contents' => [ + [ + 'parts' => [ + ['text' => $prompt] + ] + ] + ], + 'generationConfig' => [ + 'temperature' => $temperature, + 'maxOutputTokens' => $maxTokens + ] + ]; + + $headers = [ + 'Content-Type' => 'application/json' + ]; + + $response = $this->makeRequest($url, $headers, $data); + + if (!isset($response['candidates'][0]['content']['parts'][0]['text'])) { + throw new RuntimeException('Invalid Gemini API response format'); + } + + return trim($response['candidates'][0]['content']['parts'][0]['text']); + } +} \ No newline at end of file diff --git a/src/Services/LLM/Providers/OpenAIProvider.php b/src/Services/LLM/Providers/OpenAIProvider.php new file mode 100644 index 0000000..cc37ae8 --- /dev/null +++ b/src/Services/LLM/Providers/OpenAIProvider.php @@ -0,0 +1,71 @@ + 'GPT-3.5 Turbo', + 'gpt-4' => 'GPT-4', + 'gpt-4-turbo' => 'GPT-4 Turbo', + 'gpt-4o' => 'GPT-4 Omni' + ]; + } + + public function generateText(string $prompt, array $options = []): string + { + if (!$this->isAvailable()) { + throw new RuntimeException('OpenAI API key not configured'); + } + + $model = $options['model'] ?? $this->getDefaultModel(); + $temperature = $options['temperature'] ?? $this->temperature; + $maxTokens = $options['max_tokens'] ?? $this->maxTokens; + + $data = [ + 'model' => $model, + 'messages' => [ + [ + 'role' => 'user', + 'content' => $prompt + ] + ], + 'max_tokens' => $maxTokens, + 'temperature' => $temperature + ]; + + $headers = [ + 'Content-Type' => 'application/json', + 'Authorization' => "Bearer {$this->apiKey}" + ]; + + $response = $this->makeRequest(self::API_URL, $headers, $data); + + if (!isset($response['choices'][0]['message']['content'])) { + throw new RuntimeException('Invalid OpenAI API response format'); + } + + return trim($response['choices'][0]['message']['content']); + } +} \ No newline at end of file diff --git a/src/Services/LLM/Providers/PerplexityProvider.php b/src/Services/LLM/Providers/PerplexityProvider.php new file mode 100644 index 0000000..e322cbd --- /dev/null +++ b/src/Services/LLM/Providers/PerplexityProvider.php @@ -0,0 +1,71 @@ + 'Llama 3 Sonar Small (32k)', + 'llama-3-sonar-large-32k-online' => 'Llama 3 Sonar Large (32k)', + 'llama-3-8b-instruct' => 'Llama 3 8B Instruct', + 'llama-3-70b-instruct' => 'Llama 3 70B Instruct' + ]; + } + + public function generateText(string $prompt, array $options = []): string + { + if (!$this->isAvailable()) { + throw new RuntimeException('Perplexity API key not configured'); + } + + $model = $options['model'] ?? $this->getDefaultModel(); + $temperature = $options['temperature'] ?? $this->temperature; + $maxTokens = $options['max_tokens'] ?? $this->maxTokens; + + $data = [ + 'model' => $model, + 'messages' => [ + [ + 'role' => 'user', + 'content' => $prompt + ] + ], + 'max_tokens' => $maxTokens, + 'temperature' => $temperature + ]; + + $headers = [ + 'Content-Type' => 'application/json', + 'Authorization' => "Bearer {$this->apiKey}" + ]; + + $response = $this->makeRequest(self::API_URL, $headers, $data); + + if (!isset($response['choices'][0]['message']['content'])) { + throw new RuntimeException('Invalid Perplexity API response format'); + } + + return trim($response['choices'][0]['message']['content']); + } +} \ No newline at end of file diff --git a/src/Services/Logging/LoggingHelper.php b/src/Services/Logging/LoggingHelper.php new file mode 100644 index 0000000..57bd733 --- /dev/null +++ b/src/Services/Logging/LoggingHelper.php @@ -0,0 +1,363 @@ +logger, $this->getId(), 'Starting generation'); + * LoggingHelper::info($this->logger, 'DicewareGenerator', 'Complete', ['count' => 5]); + * LoggingHelper::warning($this->logger, 'Pwgen', 'Using fallback', $context); + * LoggingHelper::error($this->logger, 'XkcdPass', 'Failed', ['error' => $e->getMessage()]); + * + * @package App\Services\Logging + */ +class LoggingHelper +{ + /** + * PSR-3 severity levels for reference + * Lower numbers = more verbose (more messages logged) + * Higher numbers = less verbose (fewer messages logged) + */ + private const LOG_LEVELS = [ + 'debug' => 0, // Most verbose - development messages + 'info' => 1, // Informational - important milestones + 'notice' => 2, // Normal but significant + 'warning' => 3, // Warning - potential issues + 'error' => 4, // Error - something went wrong + 'critical' => 5, // Critical - system in trouble + 'alert' => 6, // Alert - immediate action needed + 'emergency' => 7, // Emergency - system unusable + ]; + + /** + * Log a DEBUG message + * + * DEBUG level is for detailed development information. + * Only logged when LOG_LEVEL is set to 'debug'. + * + * @param LoggerInterface|null $logger Logger instance (null-safe) + * @param string $generatorId Generator identifier for context + * @param string $message The log message + * @param array $context Additional contextual data + * + * @example + * LoggingHelper::debug($logger, 'DicewareGenerator', 'Starting generation', [ + * 'count' => 5, + * 'words' => 6 + * ]); + */ + public static function debug( + ?LoggerInterface $logger, + string $generatorId, + string $message, + array $context = [] + ): void { + self::logWithContext($logger, 'debug', $generatorId, $message, $context); + } + + /** + * Log an INFO message + * + * INFO level is for informational messages about important events. + * Logged when LOG_LEVEL is 'debug' or 'info' or higher. + * + * @param LoggerInterface|null $logger Logger instance (null-safe) + * @param string $generatorId Generator identifier for context + * @param string $message The log message + * @param array $context Additional contextual data + * + * @example + * LoggingHelper::info($logger, 'DicewareGenerator', 'Generation complete', [ + * 'count' => 5, + * 'duration_ms' => 145 + * ]); + */ + public static function info( + ?LoggerInterface $logger, + string $generatorId, + string $message, + array $context = [] + ): void { + self::logWithContext($logger, 'info', $generatorId, $message, $context); + } + + /** + * Log a WARNING message + * + * WARNING level is for potentially problematic situations. + * Logged when LOG_LEVEL is 'warning' or higher (less verbose). + * + * @param LoggerInterface|null $logger Logger instance (null-safe) + * @param string $generatorId Generator identifier for context + * @param string $message The log message + * @param array $context Additional contextual data + * + * @example + * LoggingHelper::warning($logger, 'Pwgen', 'Command not found, using fallback', [ + * 'command' => 'pwgen', + * 'fallback' => 'php_random' + * ]); + */ + public static function warning( + ?LoggerInterface $logger, + string $generatorId, + string $message, + array $context = [] + ): void { + self::logWithContext($logger, 'warning', $generatorId, $message, $context); + } + + /** + * Log an ERROR message + * + * ERROR level is for error conditions. + * Always logged (unless logger is null). + * + * @param LoggerInterface|null $logger Logger instance (null-safe) + * @param string $generatorId Generator identifier for context + * @param string $message The log message + * @param array $context Additional contextual data + * + * @example + * LoggingHelper::error($logger, 'XkcdPass', 'Generation failed', [ + * 'error' => 'Invalid word count', + * 'provided_count' => 200 + * ]); + */ + public static function error( + ?LoggerInterface $logger, + string $generatorId, + string $message, + array $context = [] + ): void { + self::logWithContext($logger, 'error', $generatorId, $message, $context); + } + + /** + * Log a CRITICAL message + * + * CRITICAL level is for critical errors. + * Always logged (unless logger is null). + * + * @param LoggerInterface|null $logger Logger instance (null-safe) + * @param string $generatorId Generator identifier for context + * @param string $message The log message + * @param array $context Additional contextual data + * + * @example + * LoggingHelper::critical($logger, 'PasswordManager', 'Configuration loading failed'); + */ + public static function critical( + ?LoggerInterface $logger, + string $generatorId, + string $message, + array $context = [] + ): void { + self::logWithContext($logger, 'critical', $generatorId, $message, $context); + } + + /** + * Core logging implementation with context injection + * + * This method: + * 1. Checks if logger is available (null-safe) + * 2. Injects generator context into all messages + * 3. Routes to appropriate PSR-3 log method + * + * @param LoggerInterface|null $logger Logger instance + * @param string $level Log level (debug, info, warning, error, critical) + * @param string $generatorId Generator identifier for context + * @param string $message Log message + * @param array $context Additional context data + */ + private static function logWithContext( + ?LoggerInterface $logger, + string $level, + string $generatorId, + string $message, + array $context = [] + ): void { + // Guard: No logger available - silently return + if ($logger === null) { + return; + } + + // Inject generator context into all messages + $fullContext = array_merge( + ['generator' => $generatorId], + $context + ); + + // Route to appropriate PSR-3 logging method + match ($level) { + 'debug' => $logger->debug($message, $fullContext), + 'info' => $logger->info($message, $fullContext), + 'notice' => $logger->notice($message, $fullContext), + 'warning' => $logger->warning($message, $fullContext), + 'error' => $logger->error($message, $fullContext), + 'critical' => $logger->critical($message, $fullContext), + 'alert' => $logger->alert($message, $fullContext), + 'emergency' => $logger->emergency($message, $fullContext), + default => $logger->info($message, $fullContext) + }; + } + + /** + * Check if logging at a specific level is enabled + * + * Useful when building expensive log messages (e.g., serialization, formatting). + * Allows conditional construction of message data. + * + * Note: This is a reference helper. Most PSR-3 loggers handle this internally. + * + * @param string $configuredLevel Current configured log level from config + * @param string $checkLevel Level to check + * @return bool True if message at checkLevel would be logged + * + * @example + * if (LoggingHelper::isLevelEnabled($configLevel, 'debug')) { + * $expensiveDebugData = buildComplexDebugInfo(); + * LoggingHelper::debug($logger, $id, 'Data', ['debug' => $expensiveDebugData]); + * } + */ + public static function isLevelEnabled( + string $configuredLevel, + string $checkLevel + ): bool { + $configValue = self::LOG_LEVELS[$configuredLevel] ?? self::LOG_LEVELS['info']; + $checkValue = self::LOG_LEVELS[$checkLevel] ?? self::LOG_LEVELS['info']; + + return $checkValue >= $configValue; + } +} + + +/** + * USAGE EXAMPLES + * ═════════════════════════════════════════════════════════════════════════════ + */ + +// Example 1: In AbstractPasswordGenerator.php +/* +protected function loadConfiguration(): void +{ + try { + $this->config = json_decode(file_get_contents('config/config.json'), true, 512, JSON_THROW_ON_ERROR); + + LoggingHelper::debug($this->logger, $this->getId(), 'Configuration loaded'); + } catch (\Exception $e) { + LoggingHelper::warning($this->logger, $this->getId(), + 'Failed to load config', ['error' => $e->getMessage()]); + $this->config = []; + } +} +*/ + +// Example 2: In DicewareGenerator.php +/* +public function generate(int $count = 1, array $options = []): array +{ + $options = $this->validateOptions($options); + + LoggingHelper::debug($this->logger, $this->getId(), + 'Starting generation', ['count' => $count]); + + $passwords = []; + for ($i = 0; $i < $count; $i++) { + $words = $this->selectRandomWords($options['words']); + $passwords[] = implode('-', $words); + } + + LoggingHelper::info($this->logger, $this->getId(), + 'Generation complete', ['count' => count($passwords)]); + + return $passwords; +} +*/ + +// Example 3: In PwgenGenerator.php +/* +private function generateWithNativePwgen(int $length, int $count): array +{ + try { + $command = "pwgen -S {$length} {$count}"; + $result = shell_exec(escapeshellcmd($command)); + + if ($result === null) { + throw new RuntimeException('PWGen command failed'); + } + + LoggingHelper::debug($this->logger, $this->getId(), + 'Native pwgen generated', ['count' => $count]); + + return array_filter(explode("\n", trim($result))); + + } catch (\Exception $e) { + LoggingHelper::warning($this->logger, $this->getId(), + 'Native pwgen failed, using fallback', [ + 'error' => $e->getMessage(), + 'fallback' => 'php_random' + ]); + + throw new RuntimeException( + "PWGen execution failed: " . $e->getMessage(), + 0, + $e + ); + } +} +*/ + +// Example 4: In XkcdPassGenerator.php +/* +private function generateAiWordlist(int $wordCount, string $prompt): array +{ + try { + LoggingHelper::debug($this->logger, $this->getId(), + 'Requesting AI wordlist', ['word_count' => $wordCount]); + + $response = $this->llmManager->generateText($prompt); + $words = $this->parseWordList($response, $wordCount); + + if (count($words) < $wordCount) { + throw new RuntimeException( + "LLM returned only " . count($words) . " words" + ); + } + + LoggingHelper::info($this->logger, $this->getId(), + 'AI wordlist generated', ['count' => count($words)]); + + return $words; + + } catch (\Exception $e) { + LoggingHelper::error($this->logger, $this->getId(), + 'AI wordlist generation failed', [ + 'error' => $e->getMessage(), + 'requested_count' => $wordCount + ]); + + throw new RuntimeException( + "Failed to generate wordlist: " . $e->getMessage(), + 0, + $e + ); + } +} +*/ +?> \ No newline at end of file diff --git a/src/Utils/ConfigLoader.php b/src/Utils/ConfigLoader.php new file mode 100644 index 0000000..c8ee1d3 --- /dev/null +++ b/src/Utils/ConfigLoader.php @@ -0,0 +1,37 @@ + true, + 'data' => $data, + 'timestamp' => date('c') + ]; + + if ($message !== null) { + $responseData['message'] = $message; + } + + $response->getBody()->write(json_encode($responseData, JSON_UNESCAPED_UNICODE)); + return $response->withHeader('Content-Type', 'application/json'); + } + + public function errorResponse( + Response $response, + string $message, + int $statusCode = 400, + ?string $errorCode = null + ): Response { + $responseData = [ + 'success' => false, + 'error' => [ + 'message' => $message, + 'code' => $errorCode ?? 'ERROR', + 'status' => $statusCode + ], + 'timestamp' => date('c') + ]; + + $response->getBody()->write(json_encode($responseData, JSON_UNESCAPED_UNICODE)); + return $response + ->withHeader('Content-Type', 'application/json') + ->withStatus($statusCode); + } + + public function jsonResponse(Response $response, array $data, int $statusCode = 200): Response + { + $response->getBody()->write(json_encode($data, JSON_UNESCAPED_UNICODE)); + return $response + ->withHeader('Content-Type', 'application/json') + ->withStatus($statusCode); + } +} \ No newline at end of file diff --git a/src/Utils/SecurityConfig.php b/src/Utils/SecurityConfig.php new file mode 100644 index 0000000..d3b7f7f --- /dev/null +++ b/src/Utils/SecurityConfig.php @@ -0,0 +1,52 @@ + Logger::DEBUG, + 'INFO' => Logger::INFO, + 'NOTICE' => Logger::NOTICE, + 'WARNING' => Logger::WARNING, + 'ERROR' => Logger::ERROR, + 'CRITICAL' => Logger::CRITICAL, + 'ALERT' => Logger::ALERT, + 'EMERGENCY' => Logger::EMERGENCY, + default => Logger::WARNING, + }; + } +} diff --git a/templates/index.html b/templates/index.html new file mode 100644 index 0000000..2933d58 --- /dev/null +++ b/templates/index.html @@ -0,0 +1,52 @@ + + + + + + Password Generator + + + +
+
+

🔐 Password Generator

+ 📚 API Documentation + +
+ + +
+
+
+ +
+
+
+

Loading password generators...

+
+ + +
+ + + + + + \ No newline at end of file diff --git a/tests/GeneratorValidationTest.php b/tests/GeneratorValidationTest.php new file mode 100644 index 0000000..272c189 --- /dev/null +++ b/tests/GeneratorValidationTest.php @@ -0,0 +1,225 @@ +getDefaultOptions($type); + $result = $manager->generate($type, 1, $defaults); + + $this->assertArrayHasKey('passwords', $result); + $this->assertNotEmpty($result['passwords']); + $this->assertNotSame('', trim((string) $result['passwords'][0])); + } + } + + public function testHighEntropyRejectsAllFalseCharacterSets(): void + { + $this->expectException(\RuntimeException::class); + + (new HighEntropyGenerator())->generate(1, [ + 'length' => 16, + 'include_lowercase' => false, + 'include_uppercase' => false, + 'include_numbers' => false, + 'include_symbols' => false, + ]); + } + + public function testPhraseAbbreviatorUsesFallbackSentenceWhenMissing(): void + { + $generator = new PhraseAbbreviatorGenerator(); + + $validated = $generator->validateOptions(['sentence' => '']); + + $this->assertNotSame('', $validated['sentence']); + $this->assertSame('The quick brown fox jumps over the lazy dog.', $validated['sentence']); + } + + public function testGeneratorDefinitionsMatchFrontendMetadataContract(): void + { + $manager = new PasswordGeneratorManager(); + $definitions = $manager->getGeneratorDefinitions(); + + $this->assertNotEmpty($definitions); + $this->assertArrayHasKey('high-entropy', $definitions); + + $highEntropy = $definitions['high-entropy']; + $this->assertSame('high-entropy_title', $highEntropy['nameKey']); + $this->assertSame('high-entropy_description', $highEntropy['descriptionKey']); + $this->assertNotEmpty($highEntropy['options']); + $this->assertSame('high-entropy_option_length', $highEntropy['options'][0]['labelKey']); + } + + public function testGeneratedPasswordsExposeSecurityAssessmentAndEntropyDetails(): void + { + $manager = new PasswordGeneratorManager(); + $result = $manager->generate('diceware', 1, [ + 'words' => 6, + 'show_dice_rolls' => true, + ]); + + $this->assertArrayHasKey('passwords', $result); + $this->assertArrayHasKey('security_assessment', $result); + $this->assertNotSame('', trim((string) $result['security_assessment'])); + $this->assertArrayHasKey('raw_technical_details', $result); + $this->assertArrayHasKey('entropy_bits', $result['raw_technical_details']); + $this->assertGreaterThan(0, $result['raw_technical_details']['entropy_bits']); + } + + public function testPwgenGeneratorDoesNotExposeRemovedTypePresetOption(): void + { + $generator = new PwgenGenerator(); + $options = $generator->getOptionDefinitions(); + + $this->assertArrayNotHasKey('type', $options); + $this->assertSame('custom', $generator->validateOptions([])['type'] ?? 'custom'); + } + + public function testXkcdEntropyReflectsWordLengthFiltering(): void + { + $manager = new PasswordGeneratorManager(); + + $unfiltered = $manager->generate('xkcdpass', 1, [ + 'words' => 4, + 'wordlist' => 'en', + 'separator' => '-', + 'max_word_length' => 0, + 'space_handling' => 'allow', + 'add_number' => false, + ]); + + $shortFiltered = $manager->generate('xkcdpass', 1, [ + 'words' => 4, + 'wordlist' => 'en', + 'separator' => '-', + 'max_word_length' => 4, + 'space_handling' => 'allow', + 'add_number' => false, + ]); + + $this->assertGreaterThan($shortFiltered['entropy_bits'], $unfiltered['entropy_bits']); + } + + public function testXkcdResponseIncludesEntropyBreakdownDetails(): void + { + $manager = new PasswordGeneratorManager(); + $result = $manager->generate('xkcdpass', 1, [ + 'words' => 4, + 'wordlist' => 'en', + 'separator' => '-_', + 'max_word_length' => 6, + 'space_handling' => 'skip', + 'add_number' => true, + 'number_position' => 'random', + ]); + + $this->assertArrayHasKey('raw_technical_details', $result); + $this->assertArrayHasKey('entropy_breakdown', $result['raw_technical_details']); + + $breakdown = $result['raw_technical_details']['entropy_breakdown']; + $this->assertSame('xkcd-candidate-space-v1', $breakdown['entropy_model']); + $this->assertArrayHasKey('effective_wordlist_candidates', $breakdown); + $this->assertGreaterThan(0, $breakdown['effective_wordlist_candidates']); + $this->assertArrayHasKey('separator_entropy_bits', $breakdown); + $this->assertArrayHasKey('number_entropy_bits', $breakdown); + } + + public function testGeneratorsExposeEntropyModelConfidenceInBreakdown(): void + { + $manager = new PasswordGeneratorManager(); + + $cases = [ + 'diceware' => ['words' => 6], + 'passkey' => ['syllables' => 6], + 'pwgen' => ['length' => 12, 'separator' => '-_', 'include_numbers' => true, 'include_capitals' => true], + ]; + + foreach ($cases as $type => $options) { + $result = $manager->generate($type, 1, $options); + + $this->assertArrayHasKey('raw_technical_details', $result); + $this->assertArrayHasKey('entropy_breakdown', $result['raw_technical_details']); + $this->assertArrayHasKey('entropy_model', $result['raw_technical_details']['entropy_breakdown']); + $this->assertArrayHasKey('model_confidence', $result['raw_technical_details']['entropy_breakdown']); + $this->assertContains( + $result['raw_technical_details']['entropy_breakdown']['model_confidence'], + ['high', 'medium', 'low'] + ); + } + } + + public function testPwgenAndXkcdCurrentOptionsProduceExpectedBehavior(): void + { + $manager = new PasswordGeneratorManager(); + + $pwgen16 = (string) $manager->generate('pwgen', 1, ['length' => 16])['passwords'][0]; + $pwgen12 = (string) $manager->generate('pwgen', 1, ['length' => 12])['passwords'][0]; + $pwgen8 = (string) $manager->generate('pwgen', 1, ['length' => 8])['passwords'][0]; + + $this->assertSame(16, strlen($pwgen16)); + $this->assertSame(12, strlen($pwgen12)); + $this->assertSame(8, strlen($pwgen8)); + + $xkcdGerman = (string) $manager->generate('xkcdpass', 1, [ + 'wordlist' => 'de', + 'words' => 4, + 'separator' => '-', + 'add_number' => true, + 'number_position' => 'end', + ])['passwords'][0]; + + $xkcdEnglish = (string) $manager->generate('xkcdpass', 1, [ + 'wordlist' => 'en', + 'words' => 4, + 'separator' => '-', + 'add_number' => true, + 'number_position' => 'end', + ])['passwords'][0]; + + $xkcdSlaengikon = (string) $manager->generate('xkcdpass', 1, [ + 'wordlist' => 'ch', + 'words' => 4, + 'separator' => '_', + 'add_number' => true, + 'number_position' => 'end', + ])['passwords'][0]; + + $this->assertSame(1, preg_match('/\d/', $xkcdGerman)); + $this->assertSame(1, preg_match('/\d/', $xkcdEnglish)); + $this->assertSame(1, preg_match('/\d/', $xkcdSlaengikon)); + } + + public function testDicewareUsesLargeEffectiveCandidateSpace(): void + { + $manager = new PasswordGeneratorManager(); + $result = $manager->generate('diceware', 1, [ + 'words' => 6, + 'show_dice_rolls' => true, + ]); + + $this->assertArrayHasKey('raw_technical_details', $result); + $this->assertArrayHasKey('entropy_breakdown', $result['raw_technical_details']); + $this->assertArrayHasKey('wordlist_size', $result['raw_technical_details']['entropy_breakdown']); + $this->assertGreaterThanOrEqual(7000, $result['raw_technical_details']['entropy_breakdown']['wordlist_size']); + } +} diff --git a/tests/OpenApiGeneratorTest.php b/tests/OpenApiGeneratorTest.php new file mode 100644 index 0000000..8895e2f --- /dev/null +++ b/tests/OpenApiGeneratorTest.php @@ -0,0 +1,36 @@ +assertSame('3.0.3', $spec['openapi']); + $this->assertArrayHasKey('/api/v1/passwords', $spec['paths']); + $this->assertArrayHasKey('/api/v1/passwords/generate', $spec['paths']); + $this->assertArrayHasKey('/api/v1/health', $spec['paths']); + $this->assertArrayHasKey('/api/v1/locales/{lang}', $spec['paths']); + $this->assertSame('http://localhost:8080', $spec['servers'][0]['url']); + + $this->assertSame('boolean', $spec['paths']['/api/v1/passwords']['get']['responses']['200']['content']['application/json']['schema']['properties']['success']['type']); + $this->assertArrayHasKey('types', $spec['paths']['/api/v1/passwords']['get']['responses']['200']['content']['application/json']['schema']['properties']['data']['properties']); + $this->assertSame('#/components/schemas/PasswordGenerationSuccess', $spec['paths']['/api/v1/passwords/generate']['post']['responses']['200']['content']['application/json']['schema']['$ref']); + + $passwordResponseData = $spec['components']['schemas']['PasswordGenerationSuccess']['properties']['data']['properties']; + $this->assertArrayHasKey('security_assessment', $passwordResponseData); + $this->assertArrayHasKey('raw_technical_details', $passwordResponseData); + $this->assertArrayHasKey('entropy_breakdown', $passwordResponseData['raw_technical_details']['properties']); + + $localeEnum = $spec['paths']['/api/v1/locales/{lang}']['get']['parameters'][0]['schema']['enum']; + $this->assertContains('ja', $localeEnum); + $this->assertContains('de_CH', $localeEnum); + $this->assertNotContains('js', $localeEnum); + $this->assertNotContains('ch', $localeEnum); + } +} diff --git a/tests/ProductionSecurityConfigTest.php b/tests/ProductionSecurityConfigTest.php new file mode 100644 index 0000000..78684e5 --- /dev/null +++ b/tests/ProductionSecurityConfigTest.php @@ -0,0 +1,23 @@ +assertSame('http://localhost:8080', SecurityConfig::resolveCorsOrigin('development')); + $this->assertSame(100, SecurityConfig::resolveRateLimit('development', 100)); + $this->assertSame(100, SecurityConfig::resolveLogLevel('debug')); + } + + public function testProductionDefaultsRejectWildcardOriginsAndUseRestrictedLogging(): void + { + $this->assertSame('', SecurityConfig::resolveCorsOrigin('production')); + $this->assertSame(120, SecurityConfig::resolveRateLimit('production', 120)); + $this->assertSame(300, SecurityConfig::resolveLogLevel('warning')); + } +} diff --git a/utils/DocumentationGenerator.php b/utils/DocumentationGenerator.php new file mode 100644 index 0000000..7724f5a --- /dev/null +++ b/utils/DocumentationGenerator.php @@ -0,0 +1,48 @@ + 'Deutsch', + 'fr' => 'Français', + 'es' => 'Español', + 'it' => 'Italiano', + 'ja' => '日本語', + 'zh' => '中文' + ]; + + public function generateAllLanguages(): void + { + $baseTemplate = file_get_contents(__DIR__ . '/../docs/index.html'); + + foreach ($this->languages as $code => $name) { + $translated = $this->translateContent($baseTemplate, $code); + file_put_contents(__DIR__ . "/../docs/docs-{$code}.html", $translated); + echo "Generated docs-{$code}.html\n"; + } + } + + private function translateContent(string $content, string $lang): string + { + // Load translations from JSON files + $translations = json_decode( + file_get_contents(__DIR__ . "/../locales/{$lang}.json"), + true + ); + + // Replace content with translations + $content = str_replace('lang="en"', "lang=\"{$lang}\"", $content); + + // Replace specific content sections + foreach ($translations as $key => $value) { + $content = str_replace("{{$key}}", $value, $content); + } + + return $content; + } +} + +// Usage +$generator = new DocumentationGenerator(); +$generator->generateAllLanguages(); \ No newline at end of file diff --git a/utils/TRANSLATION_README.md b/utils/TRANSLATION_README.md new file mode 100644 index 0000000..5715f7f --- /dev/null +++ b/utils/TRANSLATION_README.md @@ -0,0 +1,256 @@ +# Translation Management Tools + +## 📝 Overview + +This directory contains tools and utilities for managing translations across the Password Generator application. These tools help identify, extract, and maintain translatable strings across HTML, JavaScript, and PHP files. + +## 🛠️ Tools Provided + +### 1. **extract-translations.php** +Advanced PHP-based translation extractor that scans your codebase and automatically generates/updates translation files. + +**Features:** +- ✅ Scans HTML, JavaScript, and PHP files +- ✅ Extracts `data-i18n` attributes +- ✅ Finds `this.t()` calls in JavaScript +- ✅ Identifies hardcoded strings +- ✅ Generates translation keys automatically +- ✅ Updates existing translation files +- ✅ Provides basic translations for common strings +- ✅ Preserves consistent key structure across locales + +**Usage:** +```bash +php extract-translations.php +``` + +### 2. **update-translations.sh** +Shell script for quick translation file updates and scanning. + +**Features:** +- ✅ Fast scanning with grep/sed +- ✅ Updates all language files at once +- ✅ Shows translation coverage statistics +- ✅ Identifies hardcoded strings +- ✅ Color-coded output + +**Usage:** +```bash +chmod +x update-translations.sh +./update-translations.sh +``` + +## 📋 Current Translation Status + +### Supported Languages +- 🇺🇸 **English (en)** - Base language +- 🇩🇪 **German (de)** - Partially translated +- 🇫🇷 **French (fr)** - Partially translated +- 🇮🇹 **Italian (it)** - Placeholders only +- 🇪🇸 **Spanish (es)** - Placeholders only +- 🇯🇵 **Japanese (ja)** - Placeholders only +- 🇨🇳 **Chinese (zh)** - Placeholders only + +### Translation Keys Identified + +The tools have identified these categories of translatable strings: + +#### **UI Elements** +- `generate` - Generate button text +- `copy` - Copy button text +- `language` - Language selector label +- `options` - Options section header +- `loading` - Loading messages +- `error` - Error messages +- `success` - Success messages + +#### **Password Generator Types** +- `high_entropy` - High Entropy generator name +- `xkcd_pass` - XKCD Pass generator name +- `diceware` - Diceware generator name +- `pwgen` - PWGen generator name +- `passkey` - Passkey generator name + +#### **API Documentation** +- `api_documentation` - API Documentation link +- `download` - Download button text +- `interactive_api_explorer` - API Explorer heading +- `openapi_json` - OpenAPI JSON description +- `postman_collection` - Postman Collection description + +## 🔧 How to Use These Tools + +### **Step 1: Run the Extractor** +```bash +# Use the PHP extractor for comprehensive analysis +php extract-translations.php + +# OR use the shell script for quick updates +./update-translations.sh +``` + +### **Step 2: Review Generated Files** +Check the `locales/` directory for: +- Updated JSON files for each language +- Any missing or placeholder translation entries that still need review + +### **Step 3: Fix Hardcoded Strings** + +**HTML Files:** +```html + + + + + + + +``` + +**JavaScript Files:** +```javascript +// BEFORE +showNotification('Copied to clipboard!'); +generateBtn.innerHTML = 'Generating...'; + +// AFTER +showNotification(this.t('copied_to_clipboard')); +generateBtn.innerHTML = this.t('generating'); +``` + +### **Step 4: Translate Placeholder Strings** +Replace placeholder entries in language files: + +```json +{ + "generate": "Generate (TODO: de)", // ← Replace this + "copy": "Kopieren" // ✅ Already translated +} +``` + +With proper translations: +```json +{ + "generate": "Generieren", // ✅ Properly translated + "copy": "Kopieren" // ✅ Already translated +} +``` + +## 📊 Translation Statistics + +Run the tools to get current statistics: + +``` +📊 Translation Status Report +============================ +en: 87/87 (100%) translated +de: 45/87 (52%) translated +fr: 32/87 (37%) translated +it: 15/87 (17%) translated +es: 15/87 (17%) translated +ja: 0/87 (0%) translated +zh: 0/87 (0%) translated +``` + +## 🎯 Quick Win Translations + +### **High Priority Strings (Visible to Users)** +1. `generate` → "Generate" button +2. `copy` → "Copy" button +3. `language` → Language selector +4. `loading_generators` → Loading message +5. `api_documentation` → Header link +6. `back_to_generator` → Navigation link + +### **Common Translations Already Provided** + +**German (de):** +- `generate` → "Generieren" +- `copy` → "Kopieren" +- `language` → "Sprache" +- `password_generator` → "Passwort-Generator" + +**French (fr):** +- `generate` → "Générer" +- `copy` → "Copier" +- `language` → "Langue" +- `password_generator` → "Générateur de mots de passe" + +## 🚨 Common Issues & Solutions + +### **Issue: Missing data-i18n attributes** +**Solution:** Add `data-i18n="key"` to HTML elements +```html +

Password Generator

+``` + +### **Issue: Hardcoded JavaScript strings** +**Solution:** Use `this.t()` method +```javascript +const message = this.t('copied_to_clipboard'); +``` + +### **Issue: Translation not appearing** +**Solution:** Check that: +1. Translation key exists in JSON file +2. `data-i18n` attribute is correct +3. `updateUI()` is called after content changes + +## 📈 Improvement Roadmap + +### **Phase 1: Core UI (Current)** +- ✅ Main navigation +- ✅ Generator cards +- ✅ Button text +- ✅ Form labels + +### **Phase 2: API Documentation** +- 🔄 Swagger page content +- 🔄 Download descriptions +- 🔄 Example text + +### **Phase 3: Advanced Features** +- ⏳ Error messages +- ⏳ Validation text +- ⏳ Help tooltips + +## 💡 Best Practices + +### **Translation Keys** +- Use `snake_case` format +- Be descriptive but concise +- Group related keys with prefixes: + - `error_*` for error messages + - `button_*` for button text + - `label_*` for form labels + +### **String Extraction** +- Run tools regularly during development +- Check for new hardcoded strings after UI changes +- Update translations before releases + +### **Quality Assurance** +- Test UI in multiple languages +- Check for text overflow in different languages +- Verify special characters display correctly + +--- + +## 🚀 Getting Started + +1. **Run the extractor:** + ```bash + php extract-translations.php + ``` + +2. **Fix the highest-priority strings first** + +3. **Test in multiple languages:** + ```bash + # Change language in the UI dropdown + # Or visit: http://localhost:8080/?lang=de + ``` + +4. **Iterate and improve** + +Your translation management system is now ready to ensure a fully internationalized Password Generator application! 🌍✨ \ No newline at end of file diff --git a/utils/check-pwgen.php b/utils/check-pwgen.php new file mode 100644 index 0000000..93edcb3 --- /dev/null +++ b/utils/check-pwgen.php @@ -0,0 +1,6 @@ +/dev/null', $output, $returnVar); + +var_dump($output, $returnVar); +echo "pwgen available: " . ($returnVar === 0 && !empty($output[0]) ? 'yes' : 'no') . "\n"; \ No newline at end of file diff --git a/utils/extract-translations.php b/utils/extract-translations.php new file mode 100644 index 0000000..701c0b5 --- /dev/null +++ b/utils/extract-translations.php @@ -0,0 +1,723 @@ + 0, + 'js_keys' => 0, + 'php_keys' => 0, + 'existing_keys' => 0, + 'new_keys' => 0, + 'obsolete_keys' => 0 + ]; + + public function __construct(PasswordGeneratorManager $generatorManager) + { + $this->generatorManager = $generatorManager; + } + + /** + * Extract all i18n keys from all sources + */ + public function extractAll(array $options = []): array + { + $jsPath = $options['js_path'] ?? 'public/assets/js'; + $phpPath = $options['php_path'] ?? 'src'; + $existingFile = $options['existing_file'] ?? null; + + echo "=== Extraction Sources ===\n"; + echo "JavaScript path: {$jsPath}\n"; + echo "PHP path: {$phpPath}\n"; + + if ($existingFile && file_exists($existingFile)) { + echo "Existing translations: {$existingFile}\n"; + $this->loadExistingTranslations($existingFile); + } + + echo "\n"; + + // Extract from generators (API-driven) + echo "=== Extracting from Password Generators ===\n"; + $this->extractFromGenerators(); + + // Extract from JavaScript files + echo "\n=== Extracting from JavaScript Files ===\n"; + $this->extractFromJavaScriptFiles($jsPath); + + // Extract from PHP files + echo "\n=== Extracting from PHP Files ===\n"; + $this->extractFromPhpFiles($phpPath); + + // Compare with existing + if (!empty($this->existingTranslations)) { + echo "\n=== Comparing with Existing Translations ===\n"; + $this->compareWithExisting(); + } + + // Sort keys alphabetically + ksort($this->collectedKeys); + ksort($this->keysWithContext); + + return [ + 'keys' => $this->collectedKeys, + 'keysWithContext' => $this->keysWithContext, + 'stats' => $this->getStatistics(), + 'existingTranslations' => $this->existingTranslations + ]; + } + + /** + * Load existing translations for comparison/merging + */ + private function loadExistingTranslations(string $file): void + { + try { + if (!str_ends_with($file, '.json')) { + throw new Exception('Only JSON format is supported'); + } + + $content = file_get_contents($file); + $this->existingTranslations = json_decode($content, true) ?? []; + + // Remove comment keys + $this->existingTranslations = array_filter( + $this->existingTranslations, + fn($key) => !str_starts_with($key, '_comment'), + ARRAY_FILTER_USE_KEY + ); + + $this->stats['existing_keys'] = count($this->existingTranslations); + echo "✅ Loaded {$this->stats['existing_keys']} existing translations\n"; + + } catch (Exception $e) { + echo "⚠️ Failed to load existing translations: {$e->getMessage()}\n"; + } + } + + /** + * Extract keys from password generators using API-driven approach + */ + private function extractFromGenerators(): void + { + $generators = $this->generatorManager->getAvailableTypes(); + + foreach ($generators as $generator) { + $this->extractFromGenerator($generator); + } + } + + /** + * Extract keys from a single generator + */ + private function extractFromGenerator($generator): void + { + $generatorId = $generator->getId(); + echo "📦 {$generatorId}...\n"; + + // Get all keys using the generator's built-in method + $keys = $generator->getAllI18nKeys(); + + // Add keys with context information + foreach ($keys as $key) { + $this->addKey($key, 'generator', $generatorId); + } + + $this->stats['generator_keys'] += count($keys); + echo " → Found " . count($keys) . " keys\n"; + } + + /** + * Extract i18n keys from JavaScript files + * Looks for: this.t('key'), $this.t('key'), app.t('key') + */ + private function extractFromJavaScriptFiles(string $basePath): void + { + if (!is_dir($basePath)) { + echo "⚠️ JavaScript path not found: {$basePath}\n"; + return; + } + + $files = $this->findFiles($basePath, ['js']); + echo "Found " . count($files) . " JavaScript files\n"; + + foreach ($files as $file) { + $this->extractFromJavaScriptFile($file); + } + } + + /** + * Extract keys from a single JavaScript file + */ + private function extractFromJavaScriptFile(string $file): void + { + $content = file_get_contents($file); + $filename = basename($file); + + // Pattern for this.t('key'), $this.t('key'), this.t("key") + $patterns = [ + '/(?:this|\\$this)\\.t\\([\'"]([^\'"]+)[\'"]\\)/', + '/app\\.t\\([\'"]([^\'"]+)[\'"]\\)/', + '/t\\([\'"]([^\'"]+)[\'"]\\)/', // Simple t() calls + ]; + + $foundKeys = []; + foreach ($patterns as $pattern) { + if (preg_match_all($pattern, $content, $matches)) { + $foundKeys = array_merge($foundKeys, $matches[1]); + } + } + + $foundKeys = array_unique($foundKeys); + + if (!empty($foundKeys)) { + echo " 📄 {$filename}: " . count($foundKeys) . " keys\n"; + + foreach ($foundKeys as $key) { + $this->addKey($key, 'javascript', $filename); + } + + $this->stats['js_keys'] += count($foundKeys); + } + } + + /** + * Extract i18n keys from PHP files + * Looks for static string keys in specific patterns + */ + private function extractFromPhpFiles(string $basePath): void + { + if (!is_dir($basePath)) { + echo "⚠️ PHP path not found: {$basePath}\n"; + return; + } + + $files = $this->findFiles($basePath, ['php']); + echo "Found " . count($files) . " PHP files\n"; + + foreach ($files as $file) { + $this->extractFromPhpFile($file); + } + } + + /** + * Extract keys from a single PHP file + * Looks for static keys in comments or constants + */ + private function extractFromPhpFile(string $file): void + { + $content = file_get_contents($file); + $filename = basename($file); + + // Pattern for static keys in comments like: // i18n: key_name + $patterns = [ + '/\\/\\/\\s*i18n:\\s*([a-z0-9_]+)/i', + '/\\/\\*\\*.*?@i18n\\s+([a-z0-9_]+).*?\\*\\//s', + // Add more patterns as needed + ]; + + $foundKeys = []; + foreach ($patterns as $pattern) { + if (preg_match_all($pattern, $content, $matches)) { + $foundKeys = array_merge($foundKeys, $matches[1]); + } + } + + $foundKeys = array_unique($foundKeys); + + if (!empty($foundKeys)) { + echo " 📄 {$filename}: " . count($foundKeys) . " keys\n"; + + foreach ($foundKeys as $key) { + $this->addKey($key, 'php', $filename); + } + + $this->stats['php_keys'] += count($foundKeys); + } + } + + /** + * Find files with specific extensions recursively + */ + private function findFiles(string $dir, array $extensions): array + { + $files = []; + $iterator = new RecursiveIteratorIterator( + new RecursiveDirectoryIterator($dir, RecursiveDirectoryIterator::SKIP_DOTS) + ); + + foreach ($iterator as $file) { + if ($file->isFile()) { + $ext = strtolower($file->getExtension()); + if (in_array($ext, $extensions)) { + $files[] = $file->getPathname(); + } + } + } + + return $files; + } + + /** + * Add a key to the collection with context + */ + private function addKey(string $key, string $source, string $sourceDetail = ''): void + { + // Initialize with existing translation if available + if (!isset($this->collectedKeys[$key])) { + $this->collectedKeys[$key] = $this->existingTranslations[$key] ?? ''; + } + + // Add or update context + if (!isset($this->keysWithContext[$key])) { + $this->keysWithContext[$key] = [ + 'key' => $key, + 'sources' => [], + 'type' => $this->getKeyType($key), + 'description' => $this->getKeyDescription($key) + ]; + } + + // Add source information + $this->keysWithContext[$key]['sources'][] = [ + 'type' => $source, + 'detail' => $sourceDetail + ]; + } + + /** + * Get key type from key pattern + */ + private function getKeyType(string $key): string + { + if (str_ends_with($key, '_name')) { + return 'generator_metadata'; + } + + if (str_ends_with($key, '_description')) { + return 'generator_metadata'; + } + + if (str_contains($key, '_option_') && str_ends_with($key, '_label')) { + return 'option_label'; + } + + if (str_contains($key, '_option_') && str_ends_with($key, '_description')) { + return 'option_description'; + } + + if (str_contains($key, '_option_') && str_contains($key, '_choice_')) { + return 'option_choice_label'; + } + + if (str_ends_with($key, '_validation_error')) { + return 'validation_error'; + } + + if (str_contains($key, '_options_group_') && str_ends_with($key, '_title')) { + return 'group_title'; + } + + return 'general'; + } + + /** + * Get key description + */ + private function getKeyDescription(string $key): string + { + $type = $this->getKeyType($key); + + switch ($type) { + case 'generator_metadata': + return str_ends_with($key, '_name') ? 'Generator display name' : 'Generator description'; + + case 'option_label': + preg_match('/_option_(.+)_label$/', $key, $matches); + return 'Label for option: ' . ($matches[1] ?? 'unknown'); + + case 'option_description': + preg_match('/_option_(.+)_description$/', $key, $matches); + return 'Description for option: ' . ($matches[1] ?? 'unknown'); + + case 'option_choice_label': + preg_match('/_option_(.+)_choice_(.+)$/', $key, $matches); + return 'Choice label for: ' . ($matches[1] ?? 'unknown') . ' = ' . ($matches[2] ?? 'unknown'); + + case 'validation_error': + preg_match('/_option_(.+)_validation_error$/', $key, $matches); + return 'Validation error for: ' . ($matches[1] ?? 'unknown'); + + case 'group_title': + preg_match('/_options_group_(.+)_title$/', $key, $matches); + return 'Group title for: ' . ($matches[1] ?? 'unknown'); + + default: + return 'General UI text'; + } + } + + /** + * Compare extracted keys with existing translations + */ + private function compareWithExisting(): void + { + $extractedKeys = array_keys($this->collectedKeys); + $existingKeys = array_keys($this->existingTranslations); + + $newKeys = array_diff($extractedKeys, $existingKeys); + $obsoleteKeys = array_diff($existingKeys, $extractedKeys); + + $this->stats['new_keys'] = count($newKeys); + $this->stats['obsolete_keys'] = count($obsoleteKeys); + + if (!empty($newKeys)) { + echo "🆕 New keys: " . count($newKeys) . "\n"; + foreach (array_slice($newKeys, 0, 10) as $key) { + echo " + {$key}\n"; + } + if (count($newKeys) > 10) { + echo " ... and " . (count($newKeys) - 10) . " more\n"; + } + } + + if (!empty($obsoleteKeys)) { + echo "\n⚠️ Obsolete keys (not found in code): " . count($obsoleteKeys) . "\n"; + foreach (array_slice($obsoleteKeys, 0, 10) as $key) { + echo " - {$key}\n"; + } + if (count($obsoleteKeys) > 10) { + echo " ... and " . (count($obsoleteKeys) - 10) . " more\n"; + } + } + } + + /** + * Get extraction statistics + */ + private function getStatistics(): array + { + $byType = []; + $bySource = []; + + foreach ($this->keysWithContext as $keyData) { + $type = $keyData['type']; + $byType[$type] = ($byType[$type] ?? 0) + 1; + + foreach ($keyData['sources'] as $source) { + $sourceType = $source['type']; + $bySource[$sourceType] = ($bySource[$sourceType] ?? 0) + 1; + } + } + + return array_merge($this->stats, [ + 'total_keys' => count($this->collectedKeys), + 'by_type' => $byType, + 'by_source' => $bySource + ]); + } + + /** + * Create backup of existing translations + */ + public function createBackup(string $file): bool + { + if (!file_exists($file)) { + return false; + } + + $backupFile = $file . '.backup.' . date('Y-m-d_His'); + + if (copy($file, $backupFile)) { + echo "💾 Created backup: {$backupFile}\n"; + return true; + } + + return false; + } + + /** + * Export keys to JSON format + */ + public function exportToJson(): string + { + return json_encode($this->collectedKeys, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE); + } + + /** + * Export keys with context to JSON format + */ + public function exportToJsonWithContext(): string + { + return json_encode([ + 'keys' => $this->collectedKeys, + 'context' => array_values($this->keysWithContext), + 'stats' => $this->getStatistics() + ], JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE); + } + + /** + * Generate template translation file with placeholders + */ + public function generateTemplate(string $language = 'en'): string + { + $template = []; + + $lastGenerator = ''; + foreach ($this->keysWithContext as $keyData) { + $key = $keyData['key']; + + // Add section comments for generators + if (str_contains($key, '_') && !str_starts_with($key, '_comment')) { + $generatorId = explode('_', $key)[0]; + if ($generatorId !== $lastGenerator) { + $template["_comment_{$generatorId}"] = strtoupper($generatorId) . " Generator"; + $lastGenerator = $generatorId; + } + } + + // Use existing translation or generate placeholder + $value = $this->existingTranslations[$key] ?? $this->generatePlaceholder($keyData); + $template[$key] = $value; + } + + return json_encode($template, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE); + } + + /** + * Generate placeholder text for a key + */ + private function generatePlaceholder(array $keyData): string + { + $type = $keyData['type']; + $key = $keyData['key']; + + // Extract meaningful part from key + if (preg_match('/_option_([^_]+)_/', $key, $matches)) { + $field = str_replace('_', ' ', $matches[1]); + $field = ucwords($field); + } else { + $field = 'unknown'; + } + + switch ($type) { + case 'generator_metadata': + return str_ends_with($key, '_name') + ? 'Generator Name' + : 'Generator description text'; + + case 'option_label': + return $field; + + case 'option_description': + return "Description for {$field}"; + + case 'option_choice_label': + if (preg_match('/_choice_([^_]+)$/', $key, $matches)) { + return ucfirst(str_replace('_', ' ', $matches[1])); + } + return ucfirst($field); + + case 'validation_error': + return "Invalid value for {$field}"; + + case 'group_title': + return $field . " Options"; + + default: + return ''; + } + } +} + +/** + * CLI Interface + */ +class CLI +{ + private array $options = []; + + public function __construct(array $argv) + { + $this->parseArguments($argv); + } + + private function parseArguments(array $argv): void + { + for ($i = 1; $i < count($argv); $i++) { + if (str_starts_with($argv[$i], '--')) { + $parts = explode('=', substr($argv[$i], 2), 2); + $this->options[$parts[0]] = $parts[1] ?? true; + } + } + } + + public function getOption(string $name, $default = null) + { + return $this->options[$name] ?? $default; + } + + public function hasOption(string $name): bool + { + return isset($this->options[$name]); + } +} + +/** + * Main execution + */ +try { + echo "=============================================\n"; + echo "Translation Key Extraction Tool v3.1\n"; + echo "JSON Format Only\n"; + echo "=============================================\n\n"; + + $cli = new CLI($argv); + + // Get options + $output = $cli->getOption('output'); + $withContext = $cli->hasOption('context'); + $template = $cli->hasOption('template'); + $language = $cli->getOption('language', 'en'); + $backup = $cli->hasOption('backup'); + $merge = $cli->hasOption('merge'); + $jsPath = $cli->getOption('js-path', 'public/assets/js'); + $phpPath = $cli->getOption('php-path', 'src'); + + // Initialize generator manager + $generatorManager = new PasswordGeneratorManager(); + + // Extract keys + $extractor = new TranslationKeyExtractor($generatorManager); + + $extractOptions = [ + 'js_path' => $jsPath, + 'php_path' => $phpPath + ]; + + // Load existing translations if merging or backing up + if (($merge || $backup) && $output && file_exists($output)) { + $extractOptions['existing_file'] = $output; + + // Create backup if requested + if ($backup) { + $extractor->createBackup($output); + } + } + + $result = $extractor->extractAll($extractOptions); + + // Display statistics + echo "\n=== Extraction Statistics ===\n"; + echo "Total keys: {$result['stats']['total_keys']}\n"; + echo "Generator keys: {$result['stats']['generator_keys']}\n"; + echo "JavaScript keys: {$result['stats']['js_keys']}\n"; + echo "PHP keys: {$result['stats']['php_keys']}\n"; + + if ($result['stats']['existing_keys'] > 0) { + echo "Existing keys: {$result['stats']['existing_keys']}\n"; + echo "New keys: {$result['stats']['new_keys']}\n"; + echo "Obsolete keys: {$result['stats']['obsolete_keys']}\n"; + } + + echo "\nBy type:\n"; + foreach ($result['stats']['by_type'] as $type => $count) { + echo " - {$type}: {$count}\n"; + } + + echo "\nBy source:\n"; + foreach ($result['stats']['by_source'] as $source => $count) { + echo " - {$source}: {$count}\n"; + } + + // Generate output + $outputContent = ''; + + if ($template) { + echo "\n=== Generating template file ===\n"; + $outputContent = $extractor->generateTemplate($language); + } else { + echo "\n=== Generating JSON output ===\n"; + $outputContent = $withContext + ? $extractor->exportToJsonWithContext() + : $extractor->exportToJson(); + } + + // Save or display + if ($output) { + file_put_contents($output, $outputContent); + echo "✅ Saved to: {$output}\n"; + } else { + echo "\n=== Output ===\n"; + echo $outputContent; + echo "\n"; + } + + echo "\n✅ Extraction complete!\n"; + +} catch (Exception $e) { + echo "ERROR: {$e->getMessage()}\n"; + echo $e->getTraceAsString() . "\n"; + echo "\nUsage:\n"; + echo " php bin/extract-translations.php [options]\n\n"; + echo "Options:\n"; + echo " --output=file Output file path (JSON only)\n"; + echo " --context Include context information\n"; + echo " --template Generate template with placeholders\n"; + echo " --language=en Language for template generation\n"; + echo " --backup Create backup of existing translations\n"; + echo " --merge Merge with existing translations\n"; + echo " --js-path=path Path to JavaScript files (default: public/assets/js)\n"; + echo " --php-path=path Path to PHP files (default: src)\n\n"; + echo "Examples:\n"; + echo " php bin/extract-translations.php --output=locales/keys.json\n"; + echo " php bin/extract-translations.php --backup --merge --output=locales/en.json\n"; + echo " php bin/extract-translations.php --context --output=locales/keys-context.json\n"; + echo " php bin/extract-translations.php --template --output=locales/en-template.json\n"; + + exit(1); +} \ No newline at end of file diff --git a/utils/generate-openapi.php b/utils/generate-openapi.php new file mode 100644 index 0000000..b9ac01b --- /dev/null +++ b/utils/generate-openapi.php @@ -0,0 +1,18 @@ + or next

+ } + nextSibling = nextSibling.nextSibling; + } + // Process the collected listText + if (listText) { + var words = listText.split(/ ?\| ?/); // Split by ' | ' or '|' + words.forEach(function(word) { + word = word.trim(); + if (!word) return; + // Extract content in parentheses at the end + var explanation = ''; + var match = word.match(/\s*\(([^)]+)\)$/); + if (match) { + explanation = match[1].trim(); + word = word.replace(/\s*\([^)]+\)$/, '').trim(); + } + // Remove leading articles 'e ', 'es ', 'en ' + word = word.replace(/^(e |es |en |d |de |s )\b/i, ''); + // Construct definition: heading + (explanation if present) + var definition = heading; + if (explanation) { + definition += ' (' + explanation + ')'; + } + // Add to output + output.push(word + '\t' + definition); + }); + } + }); + // Output the list to console, one word per line + if (output.length > 0) { + var outputText = output.join('\n'); + console.log(outputText); + // Copy to clipboard + navigator.clipboard.writeText(outputText).then(function() { + console.log('Output successfully copied to clipboard.'); + }).catch(function(err) { + console.error('Failed to copy to clipboard: ', err); + console.log('You can manually copy the output from the console above.'); + }); + } else { + console.log('No words found. Please ensure jQuery is loaded and verify the page structure.'); + } +}); \ No newline at end of file diff --git a/utils/update-translations.sh b/utils/update-translations.sh new file mode 100644 index 0000000..1cda370 --- /dev/null +++ b/utils/update-translations.sh @@ -0,0 +1,229 @@ +#!/bin/bash + +# Translation Update Script +# Automatically extracts and updates translation strings + +set -e + +echo "🌍 Translation Update Utility" +echo "=============================" + +# Colors for output +RED='\033[0;31m' +GREEN='\033[0;32m' +YELLOW='\033[1;33m' +BLUE='\033[0;34m' +NC='\033[0m' # No Color + +# Configuration +LOCALES_DIR="../locales" +TEMPLATES_DIR="../templates" +ASSETS_DIR="../assets" +SRC_DIR="../src" + +# Create locales directory if it doesn't exist +mkdir -p "$LOCALES_DIR" + +echo -e "${BLUE}📁 Scanning for untranslated strings...${NC}" + +# Find all HTML files and extract data-i18n attributes +echo -e "${YELLOW}🔍 Scanning HTML templates...${NC}" +find $TEMPLATES_DIR -name "*.html" -exec grep -oE 'data-i18n="[^"]*"' {} \; | \ + sed 's/data-i18n="//g' | sed 's/"//g' | sort | uniq > /tmp/html_keys.txt + +find $TEMPLATES_DIR -name "*.html" -exec grep -oE 'data-i18n-placeholder="[^"]*"' {} \; | \ + sed 's/data-i18n-placeholder="//g' | sed 's/"//g' | sort | uniq >> /tmp/html_keys.txt + +find $TEMPLATES_DIR -name "*.html" -exec grep -oE 'data-i18n-title="[^"]*"' {} \; | \ + sed 's/data-i18n-title="//g' | sed 's/"//g' | sort | uniq >> /tmp/html_keys.txt + +# Find all PHP files and extract data-i18n attributes +echo -e "${YELLOW}🔍 Scanning PHP templates...${NC}" +find $SRC_DIR -name "*.php" -exec grep -oE 'data-i18n="[^"]*"' {} \; | \ + sed 's/data-i18n="//g' | sed 's/"//g' | sort | uniq > /tmp/php_keys.txt + +find $SRC_DIR -name "*.php" -exec grep -oE 'data-i18n-placeholder="[^"]*"' {} \; | \ + sed 's/data-i18n-placeholder="//g' | sed 's/"//g' | sort | uniq >> /tmp/php_keys.txt + +find $SRC_DIR -name "*.php" -exec grep -oE 'data-i18n-title="[^"]*"' {} \; | \ + sed 's/data-i18n-title="//g' | sed 's/"//g' | sort | uniq >> /tmp/php_keys.txt + +# Find JavaScript files and extract this.t() calls +echo -e "${YELLOW}🔍 Scanning JavaScript files...${NC}" +find $ASSETS_DIR -name "*.js" -exec grep -oE "this\.t\('[^']*'\)" {} \; | \ + sed "s/this\.t('//g" | sed "s/')//g" | sort | uniq > /tmp/js_keys.txt + +find $ASSETS_DIR -name "*.js" -exec grep -oE 'this\.t\("[^"]*"\)' {} \; | \ + sed 's/this\.t("//g' | sed 's/")//g' | sort | uniq >> /tmp/js_keys.txt + +# Combine all keys +cat /tmp/html_keys.txt /tmp/js_keys.txt /tmp/php_keys.txt | sort | uniq > /tmp/all_keys.txt + +echo -e "${BLUE}📊 Found $(cat /tmp/all_keys.txt | wc -l) unique translation keys${NC}" + +# Function to create/update language file +update_language_file() { + local lang=$1 + local file="$LOCALES_DIR/$lang.json" + + echo -e "${YELLOW}📝 Updating $lang.json...${NC}" + + # Load existing translations or create empty object + if [ -f "$file" ]; then + cp "$file" "/tmp/${lang}_backup.json" + existing_keys=$(cat "$file" | jq -r 'keys[]' 2>/dev/null || echo "") + else + echo "{}" > "$file" + existing_keys="" + fi + + # Create temporary file with all required keys + echo "{" > "/tmp/${lang}_new.json" + first=true + + while IFS= read -r key; do + if [ ! -z "$key" ]; then + # Check if key already exists + existing_value=$(cat "$file" | jq -r ".[\"$key\"] // empty" 2>/dev/null) + + if [ ! -z "$existing_value" ] && [ "$existing_value" != "null" ]; then + # Keep existing translation + value="$existing_value" + else + # Add new key with placeholder or translation + case $lang in + "en") + # Convert snake_case to human readable + value=$(echo "$key" | sed 's/_/ /g' | sed 's/\b\(.\)/\u\1/g') + ;; + "de") + case $key in + "generate") value="Generieren" ;; + "copy") value="Kopieren" ;; + "language") value="Sprache" ;; + "options") value="Optionen" ;; + "password_generator") value="Passwort-Generator" ;; + "api_documentation") value="API-Dokumentation" ;; + "loading") value="Wird geladen..." ;; + "error") value="Fehler" ;; + "success") value="Erfolgreich" ;; + "download") value="Herunterladen" ;; + "back") value="Zurück" ;; + "home") value="Startseite" ;; + "settings") value="Einstellungen" ;; + *) value="$(echo "$key" | sed 's/_/ /g' | sed 's/\b\(.\)/\u\1/g') (DE)" ;; + esac + ;; + "fr") + case $key in + "generate") value="Générer" ;; + "copy") value="Copier" ;; + "language") value="Langue" ;; + "options") value="Options" ;; + "password_generator") value="Générateur de mots de passe" ;; + "api_documentation") value="Documentation API" ;; + "loading") value="Chargement..." ;; + "error") value="Erreur" ;; + "success") value="Succès" ;; + "download") value="Télécharger" ;; + "back") value="Retour" ;; + "home") value="Accueil" ;; + "settings") value="Paramètres" ;; + *) value="$(echo "$key" | sed 's/_/ /g' | sed 's/\b\(.\)/\u\1/g') (FR)" ;; + esac + ;; + *) + value="$(echo "$key" | sed 's/_/ /g' | sed 's/\b\(.\)/\u\1/g') (TODO: $lang)" + ;; + esac + fi + + # Add to JSON + if [ "$first" = true ]; then + first=false + else + echo "," >> "/tmp/${lang}_new.json" + fi + + # Escape quotes in value + escaped_value=$(echo "$value" | sed 's/"/\\"/g') + echo " \"$key\": \"$escaped_value\"" >> "/tmp/${lang}_new.json" + fi + done < /tmp/all_keys.txt + + echo "" >> "/tmp/${lang}_new.json" + echo "}" >> "/tmp/${lang}_new.json" + + # Format JSON nicely + cat "/tmp/${lang}_new.json" | jq '.' > "$file" + + # Count translations + total_keys=$(cat /tmp/all_keys.txt | wc -l) + translated_keys=$(cat "$file" | jq -r 'to_entries[] | select(.value | test("\\(TODO:|\\(DE\\)|\\(FR\\)|\\(IT\\)|\\(ES\\)|\\(JA\\)|\\(ZH\\))") | not) | .key' | wc -l) + + echo -e "${GREEN}✅ Updated $lang.json: $translated_keys/$total_keys translated${NC}" +} + +# Update all language files +languages=("en" "de" "fr" "it" "es" "ja" "zh") + +for lang in "${languages[@]}"; do + update_language_file "$lang" +done + +# Generate report +echo "" +echo -e "${BLUE}📊 Translation Status Report${NC}" +echo "============================" + +for lang in "${languages[@]}"; do + file="$LOCALES_DIR/$lang.json" + if [ -f "$file" ]; then + total=$(cat /tmp/all_keys.txt | wc -l) + translated=$(cat "$file" | jq -r 'to_entries[] | select(.value | test("\\(TODO:|\\(DE\\)|\\(FR\\)|\\(IT\\)|\\(ES\\)|\\(JA\\)|\\(ZH\\))") | not) | .key' | wc -l 2>/dev/null || echo "0") + percentage=$((translated * 100 / total)) + + echo -e "$lang: $translated/$total ($percentage%) translated" + fi +done + +# Find hardcoded strings that need data-i18n attributes +echo "" +echo -e "${YELLOW}🔍 Finding hardcoded strings that need localization...${NC}" + +# Check HTML files for hardcoded text +echo -e "${BLUE}HTML files with potential hardcoded text:${NC}" +find $TEMPLATES_DIR -name "*.html" -exec grep -l '[>][A-Z][^<]*[a-z][^<]*[<]' {} \; | while read file; do + echo " 📄 $file" + grep -oE '>[A-Z][^<]*[a-z][^<]*<' "$file" | sed 's/^>//; s/<$//' | head -5 | while read text; do + if [[ ! "$text" =~ ^(GET|POST|PUT|DELETE|HTTP|JSON|API|URL|ID|OK|CSS|JS|HTML)$ ]]; then + echo " → \"$text\" (needs data-i18n)" + fi + done +done + +# Check JavaScript files for hardcoded strings +echo -e "${BLUE}JavaScript files with potential hardcoded text:${NC}" +find $ASSETS_DIR -name "*.js" -exec grep -l "'[A-Z][^']*[a-z][^']*'" {} \; | while read file; do + echo " 📄 $file" + grep -oE "'[A-Z][^']*[a-z][^']*'" "$file" | sed "s/^'//; s/'$//" | head -5 | while read text; do + if [[ ! "$text" =~ ^(GET|POST|PUT|DELETE|HTTP|JSON|API|URL|ID|OK|CSS|JS|HTML|Content-Type|application/json)$ ]]; then + echo " → \"$text\" (needs this.t())" + fi + done +done + +# Generate migration instructions +echo "" +echo -e "${GREEN}📋 Next Steps:${NC}" +echo "1. Review the generated translation files in $LOCALES_DIR/" +echo "2. Replace placeholder translations (TODO: lang) with proper translations" +echo "3. Add data-i18n attributes to hardcoded HTML strings" +echo "4. Replace hardcoded JavaScript strings with this.t() calls" +echo "5. Test the application in different languages" + +# Clean up temporary files +rm -f /tmp/html_keys.txt /tmp/js_keys.txt /tmp/all_keys.txt /tmp/*_new.json + +echo "" +echo -e "${GREEN}✅ Translation update completed!${NC}" \ No newline at end of file diff --git a/utils/wordlist-generator/README-Wiktionary- Random-Words.md b/utils/wordlist-generator/README-Wiktionary- Random-Words.md new file mode 100644 index 0000000..6f3be3f --- /dev/null +++ b/utils/wordlist-generator/README-Wiktionary- Random-Words.md @@ -0,0 +1,156 @@ +# Wiktionary Random Word Generator - Verfeinerte Version + +Eine **hochoptimierte Version** des Wiktionary Random Word Generators mit verbesserter Definition-Extraktion und erweiterten Filteroptionen. + +## 🔧 Neue Verfeinerungen + +### Saubere Definition-Extraktion +- **Entfernt führende Nummerierungen**: `1]`, `[2]`, `3)` werden automatisch entfernt +- **Bereinigt Formatierungen**: Entfernt `:`, `•`, `>`, `(`, `"` am Anfang +- **Intelligente Kleinschreibung**: Definitionen beginnen mit Kleinbuchstaben +- **Bessere Lesbarkeit**: Cleaner, natürlicher Text ohne Wiki-Markup + +### Zahlen-Filter (Neu) +- **`--exclude-numbers` Option**: Schließt Wörter mit Ziffern aus +- **Intelligente Erkennung**: Filtert `5-mal`, `Jahr2024`, `3D-Drucker` +- **Erhält Wörter**: `dreimal`, `hundert`, `eins` bleiben erlaubt +- **Flexible Nutzung**: Optional aktivierbar per Parameter + +## 📋 Verwendung + +### Standard (Empfohlen) +```bash +# 50 deutsche Wörter mit sauberen Definitionen +python wiktionary_random_refined.py -c 50 -l de +``` + +### Mit Zahlen-Ausschluss +```bash +# Keine Wörter mit Ziffern (5-mal, Jahr2024, etc.) +python wiktionary_random_refined.py -c 30 --exclude-numbers + +# Kombiniert mit Wortart-Filter +python wiktionary_random_refined.py -c 25 --include-pos verb adjektiv --exclude-numbers +``` + +### Erweiterte Kombinationen +```bash +# Englische Wörter, Namen erlaubt, aber keine Zahlen +python wiktionary_random_refined.py -c 40 -l en --include-names --exclude-numbers + +# Nur Substantive und Verben, ohne Zahlen +python wiktionary_random_refined.py -c 35 --include-pos substantiv verb --exclude-numbers +``` + +## 🎯 Definition-Bereinigung (Beispiele) + +### Vorher → Nachher +``` +1] eine große Pflanze mit Stamm und Ästen +→ eine große Pflanze mit Stamm und Ästen + +[2] übertragen: etwas Großes und Stabiles +→ übertragen: etwas Großes und Stabiles + +: [1] positive Eigenschaft oder Zustand +→ positive Eigenschaft oder Zustand + +• erste Bedeutung: schön anzusehen +→ erste Bedeutung: schön anzusehen + +(1) Gebäude zum Wohnen +→ gebäude zum Wohnen +``` + +## 🔢 Zahlen-Filter (Beispiele) + +### Ausgeschlossen (mit --exclude-numbers) +- `5-mal` → ❌ (enthält Ziffer) +- `Jahr2024` → ❌ (enthält Ziffer) +- `3D-Drucker` → ❌ (enthält Ziffer) +- `42fach` → ❌ (enthält Ziffer) + +### Erlaubt +- `dreimal` → ✅ (keine Ziffern) +- `hundert` → ✅ (ausgeschrieben) +- `eins` → ✅ (ausgeschrieben) +- `Baum` → ✅ (keine Zahlen) + +## 🔧 Alle Parameter + +| Parameter | Kurz | Beschreibung | Standard | +|-----------|------|--------------|----------| +| `--count` | `-c` | Anzahl Wörter | 50 | +| `--language` | `-l` | Sprache (de/en/fr/es/it) | de | +| `--output` | `-o` | Output-Datei | refined_wordlist.csv | +| `--include-pos` | - | Wortarten-Filter | adjektiv verb substantiv | +| `--include-names` | - | Namen einschließen | False | +| `--exclude-numbers` | - | **NEU**: Zahlen ausschließen | False | +| `--verbose` | `-v` | Ausführliche Ausgabe | - | + +## 📊 Beispiel-Output + +``` +🎲 Wiktionary Random Word Generator (Verfeinerte Version) +=========================================================================== +Sprache: DE +Anzahl: 25 +Wortarten: adjektiv, verb, substantiv (Standard) +Namen einschließen: Nein +Zahlen ausschließen: Ja +Output: refined_wordlist.csv +=========================================================================== + +Sammle Wörter aus Kategorien: adjektiv, verb, substantiv + Lade adjektiv aus Kategorie:Adjektiv (Deutsch)... + → 167 Wörter gefunden + Lade verb aus Kategorie:Verb (Deutsch)... + → 234 Wörter gefunden + Lade substantiv aus Kategorie:Substantiv (Deutsch)... + → 445 Wörter gefunden +Gesamt gesammelt: 846 Wörter + +Verarbeite Kandidaten... + 1/25: schön + 2/25: laufen + 3/25: Baum + [...] + 25/25: denken + +✅ 25 Wörter erfolgreich generiert! +💾 Wortliste gespeichert in: refined_wordlist.csv + +📖 Beispiele aus der generierten Liste: +----------------------------------------------------------------- + 1. schön → ansprechend und angenehm in der Erscheinung... + 2. laufen → sich zu Fuß mit schnellen Schritten fortbewegen... + 3. Baum → großes, meist mehrjähriges Gewächs mit Stamm... + 4. intelligent → geistig begabt, klug und aufgeweckt... + 5. sprechen → mündlich kommunizieren, Worte äußern... + ... und 20 weitere Wörter +``` + +## 🚀 Verbesserungen gegenüber vorherigen Versionen + +### Definition-Qualität +1. **Sauberer Text**: Keine störenden `1]`, `[2]` Präfixe mehr +2. **Natürliche Sprache**: Definitionen lesen sich flüssiger +3. **Konsistente Formatierung**: Einheitlicher Stil ohne Wiki-Markup +4. **Bessere UX**: Professionellere, verwendbare Ausgabe + +### Filter-Präzision +1. **Zahlen-Kontrolle**: Optionaler Ausschluss numerischer Begriffe +2. **Flexible Konfiguration**: Alle Filter kombinierbar +3. **Intelligente Erkennung**: Unterscheidet Ziffern vs. ausgeschriebene Zahlen +4. **Mehrschichtiger Ansatz**: Basis- + Kategorie- + Zahlen-Filter + +### Performance-Optimierungen +1. **Effizientere Regex**: Optimierte Pattern für Definition-Bereinigung +2. **Reduzierte API-Calls**: Weniger Kategorien-Checks durch Vorfilterung +3. **Bessere Kandidaten-Auswahl**: Höhere Erfolgsquote bei finaler Auswahl + +Das verfeinerte Script ist besonders geeignet für: +- **Professionelle Anwendungen**: Saubere, verwendbare Definitionen +- **Sprachlernen**: Klare, verständliche Erklärungen ohne Formatierungs-Chaos +- **Datenqualität**: Konsistente, strukturierte Ausgabe +- **Flexible Filterung**: Präzise Kontrolle über Inhaltstypen \ No newline at end of file diff --git a/utils/wordlist-generator/de-rar.csv b/utils/wordlist-generator/de-rar.csv new file mode 100644 index 0000000..c1e70a4 --- /dev/null +++ b/utils/wordlist-generator/de-rar.csv @@ -0,0 +1,418 @@ +meiden transitiv, gehoben: etwas dafür tun, einer Person oder Sache nicht zu begegnen +sturmgepeitscht gehoben: vom Sturm heftig bewegt, aufgewirbelt und/oder geschleudert werdend +Tonkünstlerin gehoben, Musik: Künstlerin, die musikalische Werke schafft +duress gehoben, meist Rechtssprache: Nötigung, Zwang +Wohlgestalt gehoben veraltend: schöne, ansprechende Gestalt +Gezweig gehoben: Gesamtheit aller Zweige (einer Hecke, eines Baumes oder Ähnlichem) +hinabwerfen transitiv; gehoben: von (hier) oben nach (dort) unten werfen (weg vom Sprechenden) +Verblichener gehoben: männliche Person, die gestorben ist +aufkündigen einen Vertrag/eine Vertragsbeziehung beenden +straßauf, straßab adverbiell; gehoben: auf/in vielen Straßen, durch mehrere Straßen +entströmen intransitiv, unpersönlich, gehoben: aus etwas in Strömen herauskommen +durchkreuzen transitiv: Wörter, Buchstaben in einem Text mit Kreuzen (×) unleserlich, ungültig machen +nimmermüde gehoben: nicht ermüdend, unermüdlich +Heermeister gehoben oder veraltet: Oberbefehlshaber (eines Teils) der Streitkräfte, eines Heeres +Frieden kein Plural: vertraglich gesichertes Miteinander verschiedener Staaten, das durch Abwesenheit von Gewalt (und speziell von Krieg) gekennzeichnet ist +späterhin gehoben: zu einem Zeitpunkt, der nach einem Ereignis liegt, auf etwas folgt, noch in der Zukunft liegt +Stachel im Fleisch gehoben: immerwährende eindringliche Erinnerung an etwas +Tondichterin gehoben, Musik: Künstlerin, die musikalische Werke schafft +Verstorbene gehoben: weibliche Person, die nicht mehr am Leben, sondern tot ist +übersonnt gehoben; auch übertragen: von der Sonne hell erleuchtet, von Sonnenstrahlen beschienen +engen transitiv, selten, gehoben: etwas schmäler machen +hungrig ein Gefühl des Hungers verspürend, Hunger habend +Dotation gehoben: finanzielle und/oder materielle Zuwendung +emporgehen nach oben gehen +verstummen intransitiv, von Personen: (plötzlich) aufhören, die Stimme zu gebrauchen +unflätig gehoben, abwertend: so, dass es nicht den üblichen Regeln des guten Benehmens oder Anstandes entspricht +Widerfahrnis veraltet, gehoben, sonst fachsprachlich, Psychologie: dasjenige (nicht Beeinflussbare), was (einem, jemandem) widerfährt +Fittich poetisch, gehoben: Körperteil, das einem Tier das Fliegen ermöglicht +Trottoir österreichisch gehoben, schweizerisch, süddeutsch, sonst veraltend oder landschaftlich: (durch eine Bordsteinkante von der Fahrbahn abgegrenzter, erhöhter) Weg für Fußgänger und Fußgängerinnen, der entlang einer Straße führt +durchpflügen transitiv: eine Fläche sehr stark und gründlich mit dem Pflug bearbeiten +in Flammen aufgehen gehoben: durch Feuer vollständig zerstört werden, verbrennen +ekel gehoben, sonst veraltend: (moralisch oder physisch) Ekel erregend +Bildnerin veraltet: weibliche Person, die eine Person oder Sache formt, ausbildet +guter Dinge in einer heiteren, vergnügten Stimmung +bisweilen gehoben: unterschiedlich häufig, mehr oder minder oft +herniederbrennen intransitiv, gehoben, Hilfsverb haben, von der Sonne: große Hitze, gleißendes Licht nach unten ausstrahlen +beargwöhnen gehoben: misstrauisch betrachten +partizipieren gehoben: an etwas teilhaben; an etwas seinen Anteil haben +zurücksenden transitiv; gehoben: etwas wieder an einen bestimmten Ort/zu einer bestimmten Person gelangen lassen +dahinwelken intransitiv; gehoben: vom blühenden in einen welken Zustand übergehen +anbequemen reflexiv, veraltend, sonst gehoben: sich mit seinem Verhalten, seinen Handlungen an jemandem oder etwas orientieren, sich danach richten +epochal gehoben: von großer Bedeutung, bedeutsam für eine Epoche +heimführen jemanden in dessen Zuhause bringen +ausharren intransitiv; gehoben: (trotz Widrigkeiten) mit Geduld abwarten, warten +emporwirbeln transitiv, Hilfsverb haben: kleine Teilchen (zum Beispiel Sand, Schnee) so in Bewegung versetzen, dass sie wild drehend, ungeordnet nach oben fliegen +pasteur gehoben: Hirt, Senner +Landesvater gehoben, historisch: Fürst eines Landes +Tonschöpfer gehoben, Musik: Künstler, der musikalische Werke schafft +zurückbegehren transitiv, gehoben: etwas wieder in seinem Besitz, bei sich haben wollen +Tonmaler gehoben, Musik: Künstler, der musikalische Werke schafft +erfließen österreichisch, Amtssprache, gehoben: daraus folgen, sich ergeben, entstehen +einmütig gehoben: hinsichtlich der Meinung übereinstimmend, völlig gleich +Lustbarkeit gehoben, veraltend: Veranstaltung, die jemand zur Unterhaltung, zur Vergnügung besucht; allgemein auch: etwas, was Freude bereiten soll +Ansinnen gehoben: oft als Zumutung empfundenes Ersuchen, Gesuch, Bitte +Dämmer gehoben: (Tages-)Licht, das allmählich hell beziehungsweise dunkel wird +hinabgehen intransitiv, gehoben: nach unten gehen +wohlauf gehoben: gesund, in guter Verfassung +hinausschauen regional: aus einem bestimmten Bereich, von einer bestimmten Stelle (hier drinnen) in einen anderen Bereich, an eine andere Stelle (dort draußen) blicken (schauen) (in Richtung vom Sprecher weg) +äquivalent gehoben: gleichwertig, entsprechend +Anverwandter gehoben: Person, die zur Verwandtschaft gehört +den Tod finden gehoben: infolge von etwas (Unfall, Krankheit, Ermordung oder dergleichen) aufhören zu leben +mit doppelter Zunge sprechen gehoben: Unwahres oder Widersprüchliches sagen; heuchlerisch reden; fuchsschwänzen +Verelendung gehoben: das Geraten in sehr schlechte Lebensumstände +obzwar gehoben, veraltend: leitet einen Konzessivsatz ein, der ein Gegenargument gegen das zuvor Gesagte enthält; obwohl +Bacchus huldigen gehoben, euphemistisch: Wein trinken +Edelmut gehoben: edle Gesinnung, die egoistische Motive hintenan stellt +hoffärtig gehoben abwertend: besonders hochmütig, andere Personen verletzend +sonach gehoben: eine Folgerung einleitend: folglich, also +Todespein gehoben: tödliche Qualen, Schmerzen +weiterreichen transitiv, gehoben: etwas, das man von jemandem erhalten hat, einem anvertraut wurde, einem anderen (händisch) geben, in dessen Verantwortung überstellen +Mund Anatomie: Öffnung im unteren Teil des (hauptsächlich menschlichen) Gesichtes, hauptsächlich zur Nahrungsaufnahme und zur Lautbildung genutzt +Notschrei gehoben, veraltend: lauter Ruf nach Hilfe aus einer Notsituation +nicken intransitiv: (zur Bejahung, Zustimmung, als Geste des Verstehens, als Gruß oder dergleichen) den Kopf kurz hintereinander senken und heben +herabkommen intransitiv, gehoben: (von dort oben) nach (hier) unten kommen (in Richtung zum Sprechenden) +voranschreiten vor jemand anders gehen +Anverwandte gehoben: weibliche Person, die zur Verwandtschaft gehört +betören gehoben: jemanden faszinieren, in sich verliebt machen +Unnatur gehoben: etwas, das der Natur/der natürlichen Veranlagung nicht gemäß ist +winden transitiv: etwas drehen, wickeln +durchtosen transitiv, gehoben, veraltend: mit heftiger, wilder Bewegung und dröhnendem Geräusch durchqueren +feilbieten transitiv, gehoben: etwas zum Kauf anbieten +nachgerade umgangssprachlich, mit Betonung auf Ende/Konsequenz eines Geschehens/Prozesses: endlich, letztlich +edelgeboren veraltet gehoben: von vornehmer/adliger Herkunft +mit gespaltener Zunge reden gehoben: Unwahres oder Widersprüchliches sagen, heuchlerisch reden, fuchsschwänzen +emporarbeiten sich unter Anstrengungen, Mühen von einer unten gelegenen Stelle nach oben bewegen (vom Sprecher weg) +anfliegen in einem Luftfahrzeug, mit Flügeln, durch die Luft näher kommen +auserlesen gehoben: qualitativ besonders gut/hochwertig +goldig selten, gehoben: die Farbe und den Glanz von Gold habend (auch durch Vergolden) +fernhin gehoben: in weitem Umkreis, bis in weite Ferne +Abgeschiedener gehoben: (kürzlich) verstorbene (männliche) Person +Wehe veraltet gehoben: seelischer Schmerz +Beilager gehoben veraltet: sexuelle Vereinigung +antizipieren gehoben, bildungssprachlich: etwas erkennen, bevor es eingetreten ist +mit gespaltener Zunge sprechen gehoben: Unwahres oder Widersprüchliches sagen; heuchlerisch reden; fuchsschwänzen +Trottoirfläche österreichisch gehoben, schweizerisch, süddeutsch, sonst veraltend oder landschaftlich: befestigte und meist gepflasterte Fläche am Rand einer Straße, die für Fußgänger vorgesehen ist +Kronjuwel kostbares Schmuckstück, das sich im Besitz des Herrscherhauses befindet +gürten gehoben: jemandem/sich einen Gürtel oder eine andere Art Riemen oder Band umlegen, umschnallen; etwas mit einem Gürtel oder Ähnlichem versehen +leichten Herzens gehoben: ohne dass es jemandem Anstrengung, Sorgen bereitet, jemanden Überwindung kostet, ohne Bedenken, Zweifel; sehr gern; völlig unbekümmert +ersterben aufhören +empordienen reflexiv, gehoben: sich durch Fleiß, beständiges Handeln/Tätigsein im Beruf oder Ähnliches nach und nach stufenweise in eine höhergestellte Position bringen +Augenweite gehoben oder veraltet: mit den Augen einsehbare Entfernung +aufblühen intransitiv: sich blühend öffnen, die Blüten (langsam) auseinanderfalten; anfangen, sich zu voller Blüte zu entfalten, allmählich in Blüte kommen +abdarben transitiv, gehoben, sich etwas abdarben: sich etwas (bis zum Grad des Notleidens) entziehen (um es für Anderweitiges aufzusparen) +tagen gehoben: Tag werden +anreihen transitiv: (etwas) einer bereits vorhandenen Reihe hinzufügen +aufbrechen auch bildlich: etwas, das verschlossen ist, mit Gewalt öffnen +geizen mit der Präposition „mit“: in übertriebener, unangemessener Weise sparen, geizig mit etwas sein +umfriedigen gehoben, selten: einrahmend, abgrenzend umgeben +niederstrecken transitiv; gehoben, auch übertragen: einen Menschen oder ein Tier schwer verletzen oder töten und so zu Boden bringen +ausgleiten intransitiv; auch übertragen: auf einer glatten Fläche aus dem Gleichgewicht kommen, keinen Halt finden (und hinfallen) +distinguiert gehoben: vornehm; sich durch betont gepflegtes Auftreten oder Ähnliches von anderen abhebend +Kunde jemand, der bei einem bestimmten Geschäft einkauft; der Käufer einer Ware; derjenige, der eine Dienstleistung in Anspruch nimmt; jeder, der für etwas zahlt (auch wenn die Leistung an einen Dritten geht) +Allgütiger gehoben: derjenige, der allgütig ist: Gott +Gemahl gehoben: der vermählte Mann +die Hülle und Fülle gehoben: in großer Menge, im Überfluss +Freveltat gehoben: einzelne Handlung, die einen Frevel gegen etwas darstellt; frevelhafte Tat +beschatten gehoben: jemandem/etwas einen Schatten verleihen +schmachbeladen gehoben: sehr erniedrigt, in seiner Würde stark herabgesetzt, in seinem Stolz sehr verletzt, Schande auf sich geladen habend +entschwinden intransitiv, gehoben: sich von etwas entfernen +allein als Adjektiv: für sich, getrennt, einsam, einzeln sein; nur; ohne Beistand, Zeugen, Anwesenheit von anderen Personen, ohne Hilfe sein +zurückverlangen von jemandem die Rückgabe von etwas fordern, das einem gehört +ergötzlich gehoben: in unterhaltsamer Art und Weise Gefallen/Vergnügen bereitend +erkühnen reflexiv, gehoben: so wagemutig und frech (kühn) sein, dass man etwas eigentlich Unerlaubtes/Unzulässiges versucht +dergestalt gehoben: derart, dermaßen +anfechten die Gültigkeit/Rechtmäßigkeit einer Entscheidung anzweifeln und dann dagegen vorgehen +über Gebühr gehoben: über das angemessene Maß hinausgehend, mehr als erforderlich +Hall gehoben: akustisch wahrnehmbares, unspezifisches Ereignis +fortrühren gehoben, reflexiv, meistens verneint: sich wegbewegen; sich vom eigenen Aufenthaltsort entfernen +Inbrunst gehoben: starke Hingabe an ein Gefühl oder an ein Vorhaben +anspeien transitiv, gehoben: jemanden oder etwas (absichtlich) mit Spucke oder Erbrochenem beschmutzen +Begräbnisstätte gehoben: Stelle, wo jemand begraben liegt +Land der Morgenröte poetisch, gehoben: Bezeichnung und Selbstbezeichnung für China +Beute durch Diebstahl, Raub oder Plünderung angeeignete Güter +Diskutant gehoben: Person, die sich an einer Diskussion beteiligt +bedürfen gehoben, mit Genitiv: etwas benötigen, etwas brauchen, auf etwas angewiesen sein +entsühnen transitiv, auch reflexiv, gehoben: jemanden, sich durch Sühne von Sünde, Schuld befreien +Degout gehoben: starke Abneigung gegen jemanden oder etwas +entzünden transitiv: in Brand setzen +Quisquilie gehoben, meist Plural: Kleinigkeit, Nichtigkeit, Bagatelle +äffen transitiv, gehoben, veraltete Bedeutung: jemanden durch Unwahrheiten irreführen, täuschen +hernieder gehoben: aus der Richtung von irgendwo oben nach unten, meist zum Sprecher, Erzähler oder Handelnden hin +so weit das Auge reicht gehoben: so weit man blicken/sehen kann; überall +einstmals gehoben: früher, vor langer Zeit +sinnesfroh gehoben: mit Sinnenfreude; sich am sinnlichen Genuss erfreuend +nachforschen intransitiv: sich intensiv mit dem Sammeln von Informationen über etwas beschäftigen +abspeisen transitiv, umgangssprachlich: jemandes Hunger stillen +umfrieden gehoben: einrahmend, abgrenzend umgeben +Wegesrand gehoben: seitliche Grenze eines Weges +rapide gehoben, oft bildlich: äußerst schnell +nachkommen intransitiv: jemandem, einer Sache nach einiger Zeit folgen; einige Zeit später hinterherkommen; auf etwas (später) als Konsequenz folgen +zuwider gehoben, jemandem ist etwas zuwider: Ablehnung und unangenehme Gefühle hervorrufend +divinatorisch gehoben: die Fähigkeit zur Voraussage von Ereignissen besitzend +wohlgemut gehoben: heiter gestimmt +Affront gehoben: öffentlicher verbaler oder schriftlicher Angriff bzw. Beschuldigung +zurücksehnen reflexiv: wieder an einen bestimmten Ort/in eine bestimmte Zeit/zu einer bestimmten Person zurückversetzt sein wollen +zuinnerst sehr tief in der Gedanken- und Gefühlswelt einer Person +zu Tode kommen gehoben: infolge von Unfall, Krankheit, Ermordung oder dergleichen aufhören zu leben +erwürgen jemanden ermorden, indem man ihm (mit den Händen) den Hals zusammendrückt, um die Luftzufuhr abzuschneiden, sodass das Blut nicht mehr zum Kopf zirkulieren kann +überstrahlen transitiv, gehoben: auf der gesamten Fläche bestrahlen +mitnichten veraltend, gehoben: auf keinen Fall, in keiner Weise +fortsterben intransitiv, gehoben oder veraltete Bedeutung: (allmählich, aber auch plötzlich) aufhören zu leben +zurückbeben intransitiv, gehoben oder veraltete Bedeutung: mit einer kurzen, heftigen Bewegung vor etwas oder jemandem zurückweichen +mit doppelter Zunge reden gehoben: Unwahres oder Widersprüchliches sagen, heuchlerisch reden, fuchsschwänzen +spartanisch keine Steigerung: das antike Sparta betreffend +Dolmetsch besonders in Österreich: Person, die (gesprochene) Texte in eine andere Sprache übersetzt +Unflat gehoben, veraltend: abstoßend wirkender Schmutz +ausweinen reflexiv: (bei jemandem) Erleichterung suchen durch Weinen, sich jemandem anvertrauen, jemandem von seinen Sorgen erzählen +vorwalten gehoben, veraltend: vorhanden sein; wirksam sein +seligen Angedenkens veraltet bis veraltend, sonst gehoben verhüllend: Beistellung, die die erwähnte Person als verstorben kennzeichnet +Reich der Mitte poetisch, gehoben, literatursprachlich: Bezeichnung und Selbstbezeichnung für China; wörtliche Übersetzung der chinesischen Schriftzeichen: zhong guo; wird insbesondere historisch und außerhalb Chinas in Poesie und Prosa verwendet +Strahlkraft gehoben: starke Wirkung auf andere +hinausgeleiten transitiv; gehoben: jemanden (von hier drinnen) nach dort draußen begleiten/führen (weg vom Sprechenden) +umwittern veraltet: mit schlechtem Wetter oder Unwetter umgeben +hoffnungsfroh gehoben: der Zukunft zuversichtlich entgegensehend +Zutrunk gehoben veraltet: das Erheben eines (mit Alkohol gefüllten) Glases, um einer Person die Ehre zu erweisen oder ihr Gutes zu wünschen +Akteur gehoben: Person, die handelt, die etwas tut +ungesättigt gehoben: Hunger verspürend +Weh gehoben: seelischer Schmerz +martervoll gehoben: mit großen Schmerzen, nach schmerzhaften Qualen +vermessen übermäßig ehrgeizig und deshalb riskant +heißen genannt werden, den Namen haben +Sinnenrausch gehoben: rauschhafter Zustand der Sinne +Mehrer gehoben: Person, die eine größere Menge von etwas anhäuft +dahinschwinden intransitiv, gehoben, unpersönlich: (allmählich) weniger werden +voreinst gehoben oder veraltet: vor langer/längerer Zeit +niederlassen veraltende Bedeutung: einen Gegenstand senken/auf den Boden legen +einhellig gehoben: ohne Gegenstimmen +bekleiden transitiv, reflexiv: mit Bekleidung versehen +Blattkrone gehoben: Baumkrone +widereinander gehoben, von Personen oder Dingen: im Widerstreit zueinander, in einem konkurrierenden Verhältnis zueinander +Mondesfinsternis Astronomie, Österreich, gehoben: Ereignis, bei dem der Mond durch den Kernschatten der Erde wandert +Gezweige gehoben: Gesamtheit aller Zweige (einer Hecke, eines Baumes oder Ähnliches) +Apotheose Religion, gehoben: die Erklärung eines Menschen zu einer Gottheit +Œuvre gehoben, bildungssprachlich: Gesamtheit aller Einzelwerke eines Künstlers +bejahrt gehoben: in vorgerücktem Alter +mondhell gehoben: durch das vom Erdmond reflektierte Licht erhellt +Ichsucht gehoben, veraltend: Haltung, die darauf aus ist, sich selbst immer zuerst zu berücksichtigen +gebrechen gehoben, unpersönlich, jemandem (Dativ) gebricht es an etwas (Dativ); persönlich nur veraltend: fehlen, mangeln +Furor gehoben: Wildheit, Raserei +Bringerin veraltend, gehoben: Überbringerin von etwas +Billigkeit Eigenschaft, preisgünstig zu sein +abdorren gehoben: trocken werden (und dadurch absterben) +Lüsternheit gehoben: Zustand, lüstern/sexuell begehrlich zu sein +Buhle gehoben, veraltet: Geliebter +aufzehren transitiv, auch übertragen: etwas vollständig verzehren, aufbrauchen +landauf, landab adverbiell; gehoben: im ganzen Land +kundmachen transitiv, österreichische Amtssprache, sonst gehoben: öffentlich bekanntgeben +affirmativ gehoben: Zustimmung/Affirmation erkennen lassend +meinige gehoben, veraltend: Nebenform von mein +Leichnam gehoben: Körper eines Verstorbenen +rotwangig gehoben: mit roten Wangen +blicklos gehoben: mit offenen Augen, aber nichts wahrnehmend +delegitimieren gehoben: jemanden oder etwas rechtlich nicht anerkennen; die Legitimation von etwas oder jemandem aufheben +ephemerisch gehoben: nur einen Tag dauernd, nur kurze Zeit bestehend, rasch vorübergehend +fortan gehoben: ab jetzt, von jetzt an, ab sofort, in Zukunft +entbehren transitiv, gehoben: das Nichtvorhandensein einer Person beziehungsweise einer Sache als persönlichen Mangel empfindend erdulden müssen +grosso modo gehoben: insgesamt betrachtet +nottun gehoben, noch landschaftlich: nötig, vonnöten sein +Aberwitz gehoben: etwas völlig (absurd) Unsinniges; Handeln oder Verhalten, das abwegig, unvernünftig, bisweilen zudem gefährlich ist +junonisch gehoben: sehr schön (wie die Göttin Juno) +unziemlich gehoben: den sozialen Normen nicht entsprechend +anbefehlen jemandem etwas ausdrücklich befehlen, dringend anraten +zurückgelangen intransitiv, gehoben: wieder an einem bestimmten Ort/bei einem bestimmten Ziel eintreffen, erneut zu diesem kommen +guten Mutes sein gehoben: in einer fröhlichen Stimmung sein; voller Zuversicht sein +Sturmwind dichterisch, gehoben: mit großer Wucht einhergehender, sehr starker Wind; Sturm +freund gehoben veraltend: freundlich gegenüber jemandem/etwas eingestellt, Zuneigung gegenüber jemandem/etwas hegend +aufrühren durch Umrühren etwas nach oben steigen lassen +hinuntergeleiten transitiv, gehoben: (jemanden) von einem höhergelegenen Ort nach unten führen, begleiten (vom Sprecher weg) +alert gehoben: munter, aufgeweckt, rege, frisch +kontrafaktisch gehoben: gegen das Gängige und Gewohnte gerichtet +ausatmen intransitiv: die Atemluft ausstoßen +jüngsthin gehoben oder veraltet: vor Kurzem, vor nicht langer Zeit +Himmelsbote dichterisch, gehoben: zwischen Himmel und Erde verkehrendes übernatürliches Wesen als Überbringer göttlicher Botschaften +sonnenbeschienen gehoben: im Sonnenschein befindlich +dahinsterben intransitiv, gehoben: (allmählich, aber auch plötzlich) aufhören zu leben +Tondichter gehoben, Musik: Künstler, der musikalische Werke schafft +entraten veraltet, gehoben: auf etwas Verzicht üben, ohne etwas zurechtkommen +seimig veraltet, gehoben: so, dass es nur langsam und schwer fließt; von eher zäher Konsistenz +Segen bringend gehoben: Positives bewirkend, Vorteile für viele bietend +Gepflogenheit gehoben: eine nicht verbindliche Übereinkunft, die durch häufiges Wiederholen zur Konvention geworden ist +Dulderin gehoben: weibliche Person, die etwas duldet/erträgt +zurückbegeben reflexiv, gehoben: den Ort wieder aufsuchen, von dem man kommt, aufgebrochen ist +Nebelmeer gehoben, dichterisch: dicht und weit wallender Nebel +Strauß (kunstvoll gestaltete, häufig gebundene) Zusammenstellung von abgeschnittenen oder gepflückten Blumen, Halmgräsern, Zweigen oder dergleichen +Tonschöpferin gehoben, Musik: Künstlerin, die musikalische Werke schafft +weh gehoben: erfüllt, geprägt von Kummer, Leid, (seelischem) Schmerz, Weh +herzgeliebt gehoben: sehr, innig geliebt +Hort dichterisch, sonst veraltet: (vor allem aus Gold beziehungsweise goldenen Gegenständen zusammengesetzter) Schatz +Abendvisite Arztbesuch während der Abendzeit +rechten intransitiv oder mit Präpositionalobjekt; gehoben: sich (verbal) mit jemandem über oder um etwas streiten (um sein Recht zu behaupten); für sein Recht einstehen, sein Recht von jemandem fordern +anschicken reflexiv, gehoben: sich dazu bereit machen, etwas zu tun; im Begriff sein, etwas zu tun +lüstern begierig nach etwas +eingeben jemandem etwas (vor allem eine Arznei in einer bestimmten festgesetzten Menge) zum Hinunterschlucken langsam in den Mund geben, jemanden etwas vorsichtig einnehmen lassen +flocken intransitiv, Hilfsverb haben, Hilfsverb sein, gehoben: Flocken bilden; flockig werden +Abendglanz gehoben: glänzendes und strahlendes Licht während der Abendstunden, insbesondere in Verbindung mit einem schönen Abendhimmel +abkargen reflexiv, veraltet, gehoben: etwas, meist Geld, unter Verzicht auf anderes für die spätere Verwendung ansammeln +ohne Zahl gehoben: sehr viele; in solch einer Fülle, die sich nicht zählen lässt +entschlagen mit Genitiv, veraltet, selten, gehoben, reflexiv: sich innerlich frei machen von einer Sache, sich von etwas befreien, auf etwas verzichten +reparabel gehoben: so beschaffen, dass es repariert werden kann +aberhundert gehoben: mehrere hundert, noch einmal hundert +ein Kind des Todes sein gehoben: sterben müssen; (angesichts einer Todesgefahr) bald sterben werden +Sukkus Österreich, gehoben: Zusammenfassung des Wesentlichen; Ergebnis +hineilen zu einem bestimmten Ort laufen; sich schnell wegbewegen +Fürsorger veraltend: Person, die sich im Auftrag einer Fürsorgeeinrichtung beruflich um Hilfsbedürftige kümmert +verhehlen transitiv, gehoben: jemandem etwas (besonders Gefühle und Gedanken) verheimlichen, verbergen +Mildtätigkeit gehoben: Bereitschaft, sich um in Not befindliche Menschen zu kümmern oder (meist finanziell) großzügig zu unterstützen +zuweilen gehoben: zu bestimmten Zeiten, aber nicht regelmäßig; für eine Weile und später wieder für eine Weile +Walplatz gehoben oder veraltet: Platz, an dem ein kriegerischer Kampf stattfindet/stattgefunden hat +Mägdlein dichterisch, gehoben oder veraltet: junge weibliche Person +erdreisten reflexiv, gehoben: sich etwas herausnehmen, etwas Unerwünschtes tun +profund gehoben: gründlich, tiefgreifend, ganz umfassend +wehret den Anfängen gehoben: Mahnung, bereits frühzeitig gegen (für die Gesellschaft) gefährliche Entwicklungen, Strömungen vorzugehen +augenscheinlich gehoben: (auf den ersten Blick) klar erkennbar, klar ersichtlich +anmutlos gehoben veraltet: ohne jegliche Grazie, Eleganz +Applikation veraltete Bedeutung: ein Gesuch, eine Bittschrift +dem Bacchus huldigen gehoben, euphemistisch: Wein trinken +damasten attributiv, gehoben: aus Damast gemacht +segenbringend gehoben: Positives bewirkend, Vorteile für viele bietend +entfliehen intransitiv: aus einer Gefahr, aus einer Zwangslage entkommen +ein Raub der Flammen werden gehoben: durch Feuer vollständig zerstört werden, verbrennen +einstweilen gehoben: fürs Erste, bis auf Weiteres +dürsten intransitiv, gehoben: Durst haben +Mägdelein dichterisch gehoben oder veraltet: junge weibliche Person +Verstorbener gehoben: Person, die verstorben ist +gottigkeit österreichisch, gehoben, veraltet, zur Beteuerung, parenthetisch verwendet: gewissermaßen, sozusagen, gleichsam, wirklich, bei Gott, will sagen +hintanhalten gehoben, sonst besonders Österreich: (durch entsprechende Maßnahmen) bewirken, dass etwas (für eine Weile) nicht geschehen kann, von jemandem (für eine Weile) nicht getan werden kann +röten transitiv, gehoben: etwas rot färben, rot erscheinen lassen +anrühren jemand oder etwas anfassen, berühren +verdämmern intransitiv, gehoben: untätig sein, nicht teilnehmen, keine Anteilnahme, kein Mitgefühl zeigen +anwandeln transitiv, gehoben: (jemanden) unvermittelt erfassen, (jemandem) plötzlich in den Sinn kommen (eine Empfindung, Erinnerung, Idee oder Anderes) +Ungestüm gehoben: überraschende, nicht logisch erklärbare Wildheit +zagen intransitiv, gehoben: ängstlich zögern, bangen +wild Botanik, Zoologie, Gegenwort zu zahm oder veredelt: nicht gezähmt; frei in der Natur vorkommend; nicht veredelt +türein, türaus adverbiell; gehoben: durch eine Tür hinein und (durch dieselbe oder eine andere) wieder hinaus; von einem Raum, Zimmer, einer Amtsstube, Haustür (oder dergleichen) zur nächsten +erquicklich gehoben: so, dass es Freude, Gefallen bereitet, erweckt +Hymnus Keine Definition gefunden +Toilette eine sanitäre Vorrichtung oder Anlage zur Aufnahme von Körperausscheidungen +schweren Herzens gehoben: so dass es jemandem Anstrengung, Sorgen bereitet, jemanden Überwindung kostet; mit Bedenken, Zweifel; sehr ungern; ganz bekümmert; im Widerspruch zu jemandes Gefühl +einstens vor langer/längerer Zeit +immerdar gehoben, poetisch: zu jedem Zeitpunkt in der Zukunft +andachtsvoll gehoben: in Andacht versunken, am Gebet/Gottesdienst/einem spirituellen Inhalt innerlich beteiligt +temperieren die Temperatur von etwas so verändern, wie sie gewünscht wird/wie sie als angenehm/passend empfunden wird +unerfindlich gehoben: sich nicht erklären lassend, rätselhaft erscheinend +in Rauch und Flammen aufgehen gehoben: durch Feuer vollständig zerstört werden, verbrennen +Stachel im Fleische gehoben: immerwährende eindringliche Erinnerung an etwas +Disputant gehoben: Person, die sich an einem Disput beteiligt +Dafürhalten gehoben: Einstellung, dass etwas richtig/zutreffend ist +Küchlein gehoben, veraltet: Jungtier von Geflügel +anempfinden reflexiv, gehoben: sich in jemandes Gefühlswelt hineinversetzen und sich dessen Empfindungen zu eigen machen +unter Waffen stehen gehoben: bewaffnet (und kampfbereit) sein +schärfen transitiv: etwas scharf oder schärfer machen +au contraire gehoben: im Gegenteil +fehlschießen gehoben: einen Schuss abgeben, der das Ziel verfehlt +überliefern etwas, beispielsweise eine Geschichte, einen Brauch, an die Nachkommen weitererzählen/weitergeben +Dolmetschin besonders in Österreich: weibliche Person, die (gesprochene) Texte in eine andere Sprache übersetzt +Dunkel gehoben: lichtarmer oder völlig lichtloser Zustand, in dem sich etwas befindet oder der etwas auszeichnet +bleiern aus Blei bestehend; hergestellt aus Blei +Blutzoll gehoben: Verluste bei bewaffneten Konflikten +Silberbart gehoben: Bart mit hellem, silbrig schimmerndem Grauton +Paradiesgarten Religion: Ort, an den selige Menschen nach dem Tod kommen +Angedenken veraltet: kleiner Gegenstand, der Erinnerungen an ein bestimmtes Ereignis oder eine bestimmte Person hervorrufen soll +zerscherben gehoben: in einzelne Teile (Scherben) zerbrechen (lassen) +Begebnis gehoben oder veraltet: etwas, was geschieht/passiert/sich begibt +Ruhestatt gehoben: Platz/Stelle der Bestattung +zwischenein gehoben, zeitlich: in unregelmäßigen zeitlichen Abständen (ein Geschehen kurz unterbrechend) +Aperçu gehoben: geistreiche Bemerkung +hinwegfegen Hilfsverb sein: schnell über etwas hinwegbewegen +gelüsten unpersönlich, gehoben oder scherzhaft: großes Verlangen nach etwas haben, Lust auf etwas verspüren +blutenden Herzens gehoben: so dass es jemandem Anstrengung, Sorgen bereitet, jemanden Überwindung kostet; mit Bedenken, Zweifel; sehr ungern; ganz bekümmert; im Widerspruch zu jemandes Gefühl +Ich-Sucht gehoben, veraltend: Haltung, die darauf aus ist, sich selbst immer zuerst zu berücksichtigen +nunmehrig österreichisch, sonst gehoben: jetzt stattfindend; sich auf die unmittelbare Gegenwart beziehend +herabwerfen transitiv; gehoben: von (dort) oben nach (hier) unten werfen (in Richtung zum Sprechenden) +kundgeben transitiv, gehoben: etwas öffentlich bekannt geben/machen, jemanden etwas wissen lassen +hinzuaddieren transitiv, gehoben: (etwas) zu einer bekannten Zahl rechnerisch hinzufügen +dartun gehoben: etwas erläuternd darlegen, etwas zum Ausdruck bringen +einbekennen österreichisch, sonst gehoben: eingestehen +Sinnesverwirrung gehoben: (vorübergehende) falsche Interpretation von Sinneseindrücken (zum Beispiel durch Drogenkonsum oder Krankheit) +Spross Botanik: junger Trieb an einer Pflanze, neu wachsender Teil einer Pflanze +auslesen etwas aus einer Menge desselben heraussuchen und entfernen (weil es unbrauchbar [geworden] ist) +behagen intransitiv; gehoben, unpersönlich, mit Dativ: ein wohliges, still vergnügliches Gefühl bereiten +Brüderpaar gehoben: zwei Brüder +Schimpf gehoben, meist Singular: Verletzung der Selbstachtung +sinnenfroh gehoben: mit Sinnenfreude; sich am sinnlichen Genuss erfreuend +abschreiten transitiv, Hilfsverb haben oder Hilfsverb sein: eine Strecke zur Kontrolle, prüfend oder feierlich entlanggehen +Otterngezücht gehoben abwertend übertragen: boshafte, verachtenswerte Menschen +Sprachmittler gehoben: Person, die Text aus einer anderen Sprache übersetzt +davonstieben intransitiv, gehoben, von einer Gruppe oder Menge: rasch, fluchtartig, sich (in verschiedene Richtungen) zerstreuend, weglaufen +Bildner veraltet: jemand, der eine Person oder Sache formt, ausbildet +Disput gehoben: Gespräch oder (seltener schriftlicher) Gedankenaustausch zwischen zwei oder mehr Personen, mit dem Ziel, die jeweilige Gegenseite von den eigenen Argumenten zu überzeugen +nächtlicherweile gehoben: während es Nacht ist, in der Nacht, bei Nacht +wehklagen gehoben: seelische Not äußern +Blütenschnee dichterisch oder gehoben; übertragen: Menge weißer/weißlicher Blüten (die wie Schnee langsam niederfallen, sich wie dieser auf dem Boden ausgebreitet haben, …) +Grundgütiger gehoben, meist als Ausruf: der einzige, allmächtige, unfehlbare Herr +obschon gehoben: einräumende Subjunktion +Band dasjenige, was verbindet oder verknüpft +prostituieren gehoben, pejorativ: etwas Anrüchiges, Unpassendes, Verwerfliches begehen oder jemandem vorwerfen +schlaftrunken gehoben: noch vom Schlaf benommen; durch Müdigkeit hervorgerufenes Gefühl, als sei man betrunken +unlängst gehoben: vor nicht allzu langer Zeit +allerorten gehoben oder veraltet: an jedem Ort, überall +abschweifen gehoben: von einer Richtung abweichen, die Richtung ändern +Berufsethos gehoben: moralisches Bewusstsein, verantwortungsbewusste Einstellung einer Berufsgruppe hinsichtlich der einzuhaltenden Pflichten, Normen bei der Ausübung des Berufs +zerrinnen intransitiv, gehoben: flüssig werden und zerfließen +Wegscheide gehoben: Stelle, an der sich ein Weg gabelt +einherschreiten gehoben: vor jemandes Augen eher langsam und gemessenen Schrittes umhergehen oder vorbeigehen +traun gehoben veraltet: in der Tat, wirklich, fürwahr, wahrlich +Fels kein Plural: zusammenhängende Masse festen Gesteins (Singular 1) +hintanstehen intransitiv; gehoben: sich zugunsten von jemand/etwas anderem zurückhalten; zugunsten von jemand/etwas anderem auf jemanden/etwas verzichten; zugunsten von jemand/etwas anderem unberücksichtigt, vernachlässigt werden +kundtun gehoben, veraltend: etwas anderen mitteilen +unveräußerlich so, dass es nicht beseitigt/aberkannt werden darf/kann +ichsüchtig gehoben: übermäßig auf die eigene Person fixiert, nur zum eigenen Vorteil handelnd +benehmen reflexiv: sich verhalten, sich auf bestimmte Weise in der Umwelt zeigen +Plazet gehoben: Erklärung des Einverständnisses +durchschneiden transitiv, gehoben: einen Raum oder eine Fläche in einer geraden Linie durchqueren +verwinden gehoben: psychisch über etwas hinwegkommen +innewohnen intransitiv, gehoben, mit Dativ: fester Bestandteil sein von etwas; grundsätzlich dazugehören; typische Charakteristik von etwas sein +vulgo bildungssprachlich: im Allgemeinen/auch unter der Bezeichnung x geläufig (oft mit abwertendem, drastischem Ton) +Disputantin gehoben: weibliche Person, die sich an einem Disput beteiligt +herüberbemühen transitiv, gehoben: jemanden darum ersuchen, die Mühe auf sich zu nehmen, um aus einiger Entfernung zum Sprecher hin zu kommen +erharren transitiv, selten, gehoben: auf etwas Ersehntes warten +süffisant gehoben: selbstgefällig, genüsslich überlegene Distanz zeigend, ein Gefühl von meist geistiger Überlegenheit zur Schau tragend, spöttisch-überheblich +Maiennacht dichterisch, gehoben: Nacht im Mai +Jüngling gehoben: junger, fast erwachsener Mann +hinfallen intransitiv: (mit Wucht) zu Boden, auf die Erde fallen +mondbeschienen dichterisch, gehoben: im Mondschein befindlich +woselbst veraltend, gehoben: dort an diesem Ort, an dieser Stelle +einbegreifen gehoben: auch beinhalten, dazunehmen +jüngstens gehoben oder veraltet: vor Kurzem, vor nicht langer Zeit +wegleugnen transitiv; umgangssprachlich: (etwas, eine Sache) durch Leugnen bereinigen, endgültig beseitigen +Aufschwung allgemein, gehoben: mehr Schwung, Auftrieb, Fortschritt +Erlesenheit gehoben, ohne Plural: außerordentlich gute, exquisite Qualität +preiswürdig gehoben: lobenswert, hervorragend • Diese Bedeutungsangabe sollte ergänzt werden. +Ferne große räumliche Distanz +Zauberbann dichterisch und gehoben, auch übertragen: auf jemanden oder etwas Einfluss nehmende, unwiderstehliche Kraft eines Zaubers +dahingehen intransitiv; gehoben: jemanden, etwas gehend passieren, sich an jemanden, etwas gehend vorbeibewegen; (ohne erkennbares, festes Ziel) von einer Stelle zu einer anderen gehen +davongehen sich zu Fuß von einem bestimmten Ort/vom Sprechenden entfernen +Flucht rasches Entfliehen von einer Sache, die Gefahr oder Unglück verheißt +zwiefältig gehoben, veraltend: zweimal so oft oder so viel +untersagen transitiv, gehoben: ein Verbot aussprechen +Tonkünstler gehoben, Musik: Künstler, der musikalische Werke schafft +Selbst gehoben: die eigene Person in ihrer Gesamtheit +gotikeit österreichisch, gehoben, veraltet, zur Beteuerung, parenthetisch verwendet: gewissermaßen, sozusagen, gleichsam, wirklich, bei Gott, will sagen +Menetekel gehoben: (geheimnisvolles) warnendes Vorzeichen eines drohenden Unheils, ernstes Warnzeichen +bewegen die Lage oder Stellung von etwas im Raum verändern; etwas von einem Ort zum anderen schaffen +Placet gehoben: Erklärung des Einverständnisses +Morgentoilette gehoben, kein Plural: Körperreinigung, Körperpflege und Ankleiden am Morgen +Diskutantin gehoben: weibliche Person, die sich an einer Diskussion beteiligt +schöpfen etwas aus einer großen Menge Flüssigkeit entnehmen +zurückgeleiten transitiv, gehoben: jemanden oder etwas wieder dorthin geleiten, wo er/sie/es zuvor hergekommen ist +gesunden nach einer Krankheit wieder gesund werden +abhold gehoben: abgeneigt, ungünstig +anheben ein wenig in die Höhe heben +soupieren intransitiv, gehoben: festlich/in großem Rahmen/mit Gästen zu Abend essen +leidlich gehoben: gerade noch ausreichend, akzeptabel +Bedenken tragen gehoben: noch unentschlossen sein, zagen, zaudern; Vorbehalte (gegen etwas) haben +geifern intransitiv: Speichel aus dem Mund fließen lassen +widerfahren gehoben; intransitiv, unpersönlich, mit Dativ: (jemandem) geschehen (besonders etwas Unausweichliches, scheinbar vom Schicksal Bestimmtes) +Verblichene gehoben: weibliche Person, die gestorben ist +zupasskommen gehoben: für jemanden gerade recht kommen, jemandem äußerst gelegen kommen, jemandem sehr willkommen sein diff --git a/utils/wordlist-generator/out.csv b/utils/wordlist-generator/out.csv new file mode 100644 index 0000000..1e0a59c --- /dev/null +++ b/utils/wordlist-generator/out.csv @@ -0,0 +1 @@ +Wort Definition Sprache Zeitstempel diff --git a/utils/wordlist-generator/refined_wordlist.csv b/utils/wordlist-generator/refined_wordlist.csv new file mode 100644 index 0000000..bc4f41e --- /dev/null +++ b/utils/wordlist-generator/refined_wordlist.csv @@ -0,0 +1,101 @@ +Wort Definition Sprache Zeitstempel +abbummeln eine zuvor außerhalb der regulären/vereinbarten Arbeitszeiten geleistete Arbeit (Mehrarbeit) durch Freizeit anstatt Bezahlung ausgleichen de 2025-09-29 18:26:54 +abschussbereit vorbereitet sein, zu schießen oder etwas abzuschießen de 2025-09-29 18:26:27 +Aalfischerei das gewerbliche, wirtschaftliche Betreiben des Aalfangs de 2025-09-29 18:27:02 +abendlich zum Abend gehörend; am Abend, abends stattfindend de 2025-09-29 18:26:37 +abhandenkommen verloren gehen, nicht mehr auffindbar sein de 2025-09-29 18:26:51 +abfieseln mit den Zähnen, mit den Fingern oder mit einem Messer Fleisch (gründlich) von den Knochen lösen de 2025-09-29 18:26:27 +A-Saite musik]]:'' Saite, die auf den Ton A oder a gestimmt ist de 2025-09-29 18:26:26 +abgelegen weit weg und schlecht zugänglich de 2025-09-29 18:26:06 +abhorreszieren abscheu gegen etwas oder jemanden empfinden de 2025-09-29 18:26:10 +abackern etwas durch Bearbeitung der Erde absondern und somit aus dem Besitz einer anderen Person entziehen de 2025-09-29 18:26:07 +abdikativ sich auf eine Abdikation beziehend oder sie bewirkend de 2025-09-29 18:27:03 +ablandig geographie]], Hydrologie, Meteorologie, Klimatologie:'' hinsichtlich auf Luftströmungen und Meeresströmungen bezogen: vom Lande wegführend de 2025-09-29 18:26:43 +abendfüllend den gesamten oder zumindest einen Großteil des Abends andauernd de 2025-09-29 18:26:20 +abkarten eine heimliche Vereinbarung treffen, etwas heimlich zu jemandes Nachteil aushandeln de 2025-09-29 18:27:08 +abdüsen sich schnell von einem Ort entfernen, meist mithilfe eines Fortbewegungsmittels de 2025-09-29 18:26:13 +a-Schwa vokal, der zwischen einem [a] und einem [ə] (Schwa) liegt und im Deutschen nur unbetont vorkommt de 2025-09-29 18:26:46 +abchecken überprüfen]], kontrollieren de 2025-09-29 18:27:09 +abhörsicher von Räumen oder Geräten:'' vor Abhöraktionen geschützt; so beschaffen, dass es nicht abgehört werden kann de 2025-09-29 18:26:24 +abhauen etwas abschlagen, abtrennen (starke und schwache Konjugation: hieb/haute ab und abgehauen/abgehaut) de 2025-09-29 18:27:07 +abbestellen etwas abbestellen:'' eine Bestellung rückgängig machen, etwas kündigen de 2025-09-29 18:26:11 +abkrüppeln sterben, abkratzen, verrecken de 2025-09-29 18:26:45 +abhinfallen veraltet; bairisch, südalemannisch:'' vom Sprecher weg fallen de 2025-09-29 18:26:36 +abbehalten (eine Kopfbedeckung) nach dem Abnehmen (vorerst) nicht erneut aufsetzen de 2025-09-29 18:26:44 +abgemergelt in schlechter körperlicher Verfassung, durch Arbeit erschöpft de 2025-09-29 18:26:34 +abflachen flach(er) machen de 2025-09-29 18:26:28 +aboral vom Mund weg gelegen de 2025-09-29 18:26:32 +abdreschen stroh ausdreschen, um das Getreide zu erhalten; das Getreide aus dem Stroh dreschen de 2025-09-29 18:26:50 +abbussen süddeutsch, österreichisch, umgangssprachlich:'' über und über mit Küssen bedecken de 2025-09-29 18:26:49 +abern einwände anbringen, erheben de 2025-09-29 18:27:06 +aasfräßig sich von Aas ernährend de 2025-09-29 18:26:40 +Aalstechen art des Aalfanges mittels Stechen nach den Aalen mit Aalspeeren de 2025-09-29 18:26:42 +Aalmöwe im Ostatlantik und den nordeuropäischen Küsten lebender Barschartiger, de 2025-09-29 18:27:10 +abenteuerhungrig übertragen:'' hungrig auf Abenteuer; ein Abenteuer vermissend, erwartend, sich nach einem Abenteuer sehnend de 2025-09-29 18:26:30 +Aalbaum veraltet]], Botanik:'' Geißblattgewächs mit eierförmigen Blättern, gelben Blüten und roten, für den Menschen ungenießbaren Früchten de 2025-09-29 18:27:02 +abendländisch das Abendland betreffend, zu ihm gehörend, charakteristisch für das Abendland de 2025-09-29 18:26:47 +abfretten sich abmühen de 2025-09-29 18:27:04 +abgelehnt zurückgewiesen, nicht genehmigt de 2025-09-29 18:26:26 +abfohlen ein Jungtier (Fohlen) zur Welt bringen de 2025-09-29 18:26:09 +abgrätschen mit gestreckten und gespreizten Beinen von einem Turngerät springen, Abgang von einem Gerät mit einer Grätsche de 2025-09-29 18:27:05 +abfieren etwas am Tau herunterlassen de 2025-09-29 18:26:34 +abkömmlich nicht zwingend benötigt; verzichtbar, unnotwendig, disponibel de 2025-09-29 18:27:06 +abrufbar so, dass man Zugriff darauf hat; so, dass einem etwas zur Verfügung steht de 2025-09-29 18:26:32 +abgekämpft erschöpft von sehr großer Anstrengung de 2025-09-29 18:26:30 +abgerissen in einem schlechten Zustand befindlich, zerlumpt, mitgenommen de 2025-09-29 18:27:00 +abbimsen zur Glättung/Reinigung mit einem Bimsstein abreiben de 2025-09-29 18:26:58 +abberufen jemanden von seinem Amt oder seiner Funktion entheben de 2025-09-29 18:26:55 +abbitten jemanden für etwas um Verzeihung bitten de 2025-09-29 18:26:29 +Aakerbeere mehrjährige Pflanze mit leuchtend roten bis purpurnen Blüten und roten, essbaren Früchten, die im Norden Eurasiens und in Nordamerika vorkommt () de 2025-09-29 18:26:41 +abfetzen etwas (in Fetzen) nach unten reißen de 2025-09-29 18:27:08 +abalienieren entäußern, veräußern de 2025-09-29 18:26:38 +abgegrenzt voneinander getrennt de 2025-09-29 18:26:57 +Aalmolch familie]] der Schwanzlurche, die aalförmig gestreckt sind de 2025-09-29 18:26:52 +abjustieren abgleichen]] de 2025-09-29 18:26:16 +Aalsuppe suppe aus Aal de 2025-09-29 18:26:07 +abbellen (zum Beispiel eine Rede) laut, aber unverständlich, mit heiserer Stimme vortragen de 2025-09-29 18:26:50 +abjudizieren jemandem etwas (gerichtlich) aberkennen, absprechen de 2025-09-29 18:26:48 +Aalenium geologie]]:'' geologisch unterste Stufe des Mittleren Jura Braunjura de 2025-09-29 18:26:59 +Aalspeer gerät]], das einem Speer ähnelt, jedoch über mehrere Zinken verfügt und zum Aalstechen benutzt wird de 2025-09-29 18:26:54 +aasfressend aas fressend, sich von toten Organismen ernährend de 2025-09-29 18:26:29 +abblitzen von jemandem zurückgewiesen werden, jemandem gegenüber keine Chance zur Kommunikation haben de 2025-09-29 18:26:22 +abenteuersüchtig mit einem übersteigerten Verlangen nach Abenteuern de 2025-09-29 18:26:25 +aargauisch den Kanton Aargau oder dessen Bewohner betreffend, aus dem Aargau kommend de 2025-09-29 18:26:20 +Aalfischer person, die Aale fängt de 2025-09-29 18:26:42 +abschlägig ein Ansinnen verweigernd de 2025-09-29 18:27:01 +abfechten jemandem etwas durch eine Kampfhandlung abgewinnen de 2025-09-29 18:26:18 +abgasentgiftet so beschaffen, dass keine giftigen Abgase vorhanden sind de 2025-09-29 18:26:45 +abdecken eine Decke entfernen de 2025-09-29 18:26:19 +abfiedeln etwas mit einem stumpfen Schneidwerkzeug schneidend entfernen de 2025-09-29 18:26:12 +abnorm von der Norm oder dem Üblichen (Normalen) abweichend de 2025-09-29 18:26:21 +abblassen farblich]] weniger intensiv werden, blass werden de 2025-09-29 18:26:53 +Aap kleines Stagsegel auf Segelschiffen de 2025-09-29 18:26:35 +abgefuckt jargon]], derb, vulgär:'' in schlechtem, üblem Zustand befindlich de 2025-09-29 18:26:08 +abdorren trocken werden (und dadurch absterben) de 2025-09-29 18:26:08 +abgelenkt geistig]] abwesend, nicht auf eine Sache konzentriert de 2025-09-29 18:26:33 +abduschen etwas oder sich durch Duschen reinigen de 2025-09-29 18:26:12 +Aalrutte knochenfisch aus der Familie der Quappen de 2025-09-29 18:26:24 +abfangen jemanden oder etwas auf seinem Weg aufhalten de 2025-09-29 18:27:03 +abteilungsübergreifend mehr als eine Abteilung betreffend; mehrere Abteilungen umfassend de 2025-09-29 18:26:36 +absichtlich die Auswirkung seiner Handlung wollend de 2025-09-29 18:26:23 +abducken den Schlag eines Gegners durch Ducken ins Leere gehen lassen de 2025-09-29 18:26:39 +aalähnlich wie ein Aal, an einen Aal erinnernd de 2025-09-29 18:26:48 +abbaken den Fahrweg mit Baken oder eingeschlagenen Pfählen markieren de 2025-09-29 18:26:59 +abfallarm so beschaffen, dass wenig Abfall entsteht de 2025-09-29 18:26:58 +abhandeln mit jemandem über etwas verhandeln, sprechen, mit dem Ziel, dass man von ihm etwas bekommt de 2025-09-29 18:27:05 +abbalzen die Balz beenden de 2025-09-29 18:26:33 +abmarschbereit zum Abmarsch bereit de 2025-09-29 18:26:13 +abkanzeln mit harschen Worten, von oben herab, kritisieren de 2025-09-29 18:26:31 +abbreiten mit einem Breithammer (in bestimmtem Maße) breit schlagen de 2025-09-29 18:26:55 +abbrüchig so beschaffen, dass es leicht abbricht de 2025-09-29 18:26:17 +abdingbar durch andere Vereinbarungen abänderbar de 2025-09-29 18:26:57 +abkommen veraltet]]:'' von (etwas, jemandem) stammen, auf (etwas, jemanden) zurückgehen de 2025-09-29 18:26:15 +abborgen jemandem etwas abborgen:'' mit dem Versprechen der baldigen Rückgabe vorübergehend in seinen Besitz nehmen de 2025-09-29 18:27:02 +abflusslos keinen Abfluss habend de 2025-09-29 18:26:59 +abgasarm nur eine relativ kleine Menge an (schädlichen) Abgasen ausstoßend de 2025-09-29 18:26:18 +abgaunern jemandem etwas durch List, Betrug, Täuschung widerrechtlich wegnehmen de 2025-09-29 18:27:05 +abkindern einen Ehekredit durch das Zeugen von Kindern tilgen de 2025-09-29 18:26:39 +abermalig nochmalig, wiederholt de 2025-09-29 18:26:17 +Aalstreif zoologie]]:'' schwarzer Streifen längs auf dem Rücken eines Tieres, meist eines Pferdes de 2025-09-29 18:26:47 +abachen sich bei etwas bis zur Erschöpfung anstrengen und ächzen de 2025-09-29 18:26:56 +abasinisch auf das Volk der Abasiner/Abasinen bezogen, von ihm stammend, zu ihm gehörend de 2025-09-29 18:26:25 diff --git a/utils/wordlist-generator/wiktionary_random_fetch.php b/utils/wordlist-generator/wiktionary_random_fetch.php new file mode 100644 index 0000000..4fdb01a --- /dev/null +++ b/utils/wordlist-generator/wiktionary_random_fetch.php @@ -0,0 +1,489 @@ +#!/usr/bin/env php +lang = $lang; + $this->api_url = "https://{$lang}.wiktionary.org/w/api.php"; + $this->debug = $debug; + $this->is_cli = $is_cli; + } + + private function debug_print($msg) { + if ($this->debug) { + echo "DEBUG: $msg\n"; + } + } + + private function progress_print($msg) { + if ($this->is_cli) { + echo "\r$msg"; + } else { + echo "$msg
"; + flush(); + } + } + + public function get_category_members($category) { + if (isset($this->category_cache[$category])) { + $this->debug_print("Cache-Hit für Kategorie '$category': " . count($this->category_cache[$category]) . " Member"); + return $this->category_cache[$category]; + } + + $members = []; + $params = [ + 'action' => 'query', + 'list' => 'categorymembers', + 'cmtitle' => "Category:$category", + 'cmtype' => 'page', + 'cmlimit' => '500', + 'format' => 'json' + ]; + $this->debug_print("Starte Abruf für Kategorie '$category' mit URL: {$this->api_url} und Params: " . http_build_query($params)); + $cmcontinue = ''; + $page = 1; + $total_members = 0; + while (true) { + $query = http_build_query($params) . ($cmcontinue ? "&cmcontinue=$cmcontinue" : ''); + $ch = curl_init("{$this->api_url}?$query"); + curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); + curl_setopt($ch, CURLOPT_USERAGENT, 'GrokScript/1.0'); + $response = curl_exec($ch); + $curl_error = curl_error($ch); + $status_code = curl_getinfo($ch, CURLINFO_HTTP_CODE); + curl_close($ch); + if ($curl_error) { + echo "Fehler beim API-Aufruf für $category: $curl_error\n"; + $this->debug_print("Curl Error Details: $curl_error"); + break; + } + $this->debug_print("Response Status: $status_code, Content-Length: " . strlen($response)); + if ($status_code != 200) { + echo "Fehler beim Abrufen von $category: $status_code\n"; + $this->debug_print("Response Text: " . substr($response, 0, 500) . "..."); + break; + } + $data = json_decode($response, true); + $this->debug_print("Data Keys: " . implode(', ', array_keys($data))); + $new_members = []; + foreach ($data['query']['categorymembers'] ?? [] as $member) { + $new_members[] = $member['title']; + } + $members = array_merge($members, $new_members); + $total_members += count($new_members); + $this->progress_print("Kategorie '$category' Paging: Seite $page abgerufen (" . count($new_members) . " neue, total $total_members)"); + if (isset($data['continue']['cmcontinue'])) { + $cmcontinue = $data['continue']['cmcontinue']; + $this->debug_print("Paginierung fortsetzen mit cmcontinue: $cmcontinue"); + $page++; + } else { + if ($this->is_cli) echo "\n"; else echo "
"; + break; + } + sleep(0.5); // Pause + } + $this->category_cache[$category] = $members; + $this->debug_print("Abgerufene Member für '$category' (cached): " . count($members)); + return $members; + } + + public function extract_definition_and_variant($extract, $preferred_variant = null) { + $lines = explode("\n", $extract); + $definition = 'Keine Definition gefunden'; + $variant = ''; + $in_bedeutungen = false; + foreach ($lines as $line) { + if (strpos($line, 'Bedeutungen:') !== false) { + $in_bedeutungen = true; + continue; + } + if ($in_bedeutungen) { + if (strpos($line, '[1] ') === 0) { + $definition = trim(substr($line, 4)); + break; + } elseif (strpos($line, '[1]') === 0) { + $definition = trim(substr($line, strpos($line, '[1]') + 3)); + break; + } elseif (preg_match('/^\[\d+\]/', $line)) { + break; + } + } + } + // Alternative Schreibweise suchen + foreach ($lines as $line) { + if (strpos($line, 'Alternative Schreibweisen:') !== false || strpos($line, 'Nebenformen:') !== false) { + // Split nach Labels wie "Schweizerische Schreibweise:" + $parts = preg_split('/\w+ische Schreibweise:/i', $line); + foreach ($parts as $index => $part) { + if ($index > 0) { // Nach dem ersten Label + preg_match_all('/[\w\-]+/', $part, $matches); + if (!empty($matches[0])) { + if ($preferred_variant && stripos($line, $preferred_variant) !== false) { + $variant = $matches[0][0]; + break 2; // Beende äußere Schleife + } elseif (!$preferred_variant) { + $variant = $matches[0][0]; + break 2; + } + } + } + } + } + } + return [$definition, $variant]; + } + + public function get_definitions_batch($words) { + $definitions = []; + $variants = []; + foreach ($words as $idx => $word) { + $params = [ + 'action' => 'query', + 'prop' => 'extracts', + 'titles' => $word, + 'explaintext' => '1', + 'exsectionformat' => 'plain', + 'format' => 'json' + ]; + $query = http_build_query($params); + $this->debug_print("Starte Definitionsabruf für Wort " . ($idx + 1) . "/" . count($words) . ": '$word' mit URL: {$this->api_url} und Params: $query"); + $ch = curl_init("{$this->api_url}?$query"); + curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); + curl_setopt($ch, CURLOPT_USERAGENT, 'GrokScript/1.0'); + $response = curl_exec($ch); + $curl_error = curl_error($ch); + $status_code = curl_getinfo($ch, CURLINFO_HTTP_CODE); + curl_close($ch); + if ($curl_error) { + echo "Fehler beim Definitionsabruf für '$word': $curl_error\n"; + $this->debug_print("Curl Error Details: $curl_error"); + $definitions[$word] = 'Keine Definition gefunden'; + $variants[$word] = ''; + continue; + } + $this->debug_print("Response Status: $status_code, Content-Length: " . strlen($response)); + if ($status_code != 200) { + echo "Fehler beim Abrufen von Definition für '$word': $status_code\n"; + $this->debug_print("Response Text: " . substr($response, 0, 500) . "..."); + $definitions[$word] = 'Keine Definition gefunden'; + $variants[$word] = ''; + continue; + } + $data = json_decode($response, true); + $this->debug_print("Data Keys: " . implode(', ', array_keys($data))); + $page = reset($data['query']['pages'] ?? []) ?? []; + $extract = $page['extract'] ?? ''; + list($defn, $var) = $this->extract_definition_and_variant($extract, $this->preferred_variant); + $definitions[$word] = $defn; + $variants[$word] = $var; + $this->progress_print("Definitionen abrufen: " . ($idx + 1) . "/" . count($words) . " abgeschlossen ($word)"); + sleep(0.5); // Pause pro Request zur Rate-Limiting-Vermeidung + } + if ($this->is_cli) echo "\n"; else echo "
"; + $this->debug_print("Abgerufene Definitionen: " . count($definitions)); + return [$definitions, $variants]; + } + + public function list_all_categories($filter_str = null) { + $categories = []; + $params = [ + 'action' => 'query', + 'list' => 'allcategories', + 'aclimit' => '500', + 'format' => 'json' + ]; + $this->debug_print("Starte Abruf aller Kategorien mit URL: {$this->api_url} und Params: " . http_build_query($params)); + $accontinue = ''; + $page = 1; + $total_categories = 0; + while (true) { + $query = http_build_query($params) . ($accontinue ? "&accontinue=$accontinue" : ''); + $ch = curl_init("{$this->api_url}?$query"); + curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); + curl_setopt($ch, CURLOPT_USERAGENT, 'GrokScript/1.0'); + $response = curl_exec($ch); + $curl_error = curl_error($ch); + $status_code = curl_getinfo($ch, CURLINFO_HTTP_CODE); + curl_close($ch); + if ($curl_error) { + echo "Fehler beim API-Aufruf für Kategorien: $curl_error\n"; + $this->debug_print("Curl Error Details: $curl_error"); + break; + } + $this->debug_print("Response Status: $status_code, Content-Length: " . strlen($response)); + if ($status_code != 200) { + echo "Fehler beim Abrufen der Kategorien: $status_code\n"; + $this->debug_print("Response Text: " . substr($response, 0, 500) . "..."); + break; + } + $data = json_decode($response, true); + $this->debug_print("Data Keys: " . implode(', ', array_keys($data))); + $new_categories = []; + foreach ($data['query']['allcategories'] ?? [] as $cat) { + $new_categories[] = $cat['*']; + } + $categories = array_merge($categories, $new_categories); + $total_categories += count($new_categories); + $this->progress_print("Kategorien Paging: Seite $page abgerufen (" . count($new_categories) . " neue, total $total_categories)"); + if (isset($data['continue']['accontinue'])) { + $accontinue = $data['continue']['accontinue']; + $this->debug_print("Paginierung fortsetzen mit accontinue: $accontinue"); + $page++; + } else { + if ($this->is_cli) echo "\n"; else echo "
"; + break; + } + sleep(0.5); // Pause + } + + if ($filter_str) { + $filter_lower = strtolower($filter_str); + $categories = array_filter($categories, function($cat) use ($filter_lower) { + return strpos(strtolower($cat), $filter_lower) !== false; + }); + $this->debug_print("Gefiltert nach '$filter_str': " . count($categories) . " Kategorien gefunden"); + } + + echo "Vorhandene Kategorien" . ($filter_str ? " (gefiltert nach '$filter_str')" : "") . ":\n"; + sort($categories); + foreach ($categories as $cat) { + echo "$cat\n"; + } + $this->debug_print("Gesamte Kategorien: " . count($categories)); + return $categories; + } + + public function parse_include_logic($include_str) { + if (empty($include_str)) { + return []; + } + $groups = explode(',', $include_str); + $parsed_groups = []; + foreach ($groups as $group) { + $cats = array_unique(explode('+', $group)); // Unique in Gruppe + $parsed_groups[] = array_filter(array_map('trim', $cats)); + } + return array_filter($parsed_groups); + } + + public function get_words_from_logic($include_groups) { + $all_words = []; + foreach ($include_groups as $group) { + if (empty($group)) continue; + $group_members = []; + foreach ($group as $cat) { + $group_members[] = $this->get_category_members($cat); + } + if (!empty($group_members)) { + $intersection = call_user_func_array('array_intersect', $group_members); + $all_words = array_merge($all_words, $intersection); + } + } + return array_unique($all_words); + } + + public function generate_wordlist($include, $exclude, $num_words, $output_file, $preferred_variant = null, $headers_flag = false, $format = 'csv') { + $this->preferred_variant = $preferred_variant; + $include_groups = $this->parse_include_logic($include); + if (empty($include_groups)) { + echo "Fehler: --include muss angegeben werden, da 'alle' nicht unterstützt wird.\n"; + return; + } + + $all_words = $this->get_words_from_logic($include_groups); + $this->debug_print("Include-Wörter nach Logik: " . count($all_words)); + + $exclude_cats = array_unique(array_map('trim', explode(',', $exclude))); + $exclude_words = []; + foreach ($exclude_cats as $cat) { + if (empty($cat)) continue; + echo "Abrufen von Kategorie (exclude): $cat\n"; + $members = $this->get_category_members($cat); + $exclude_words = array_merge($exclude_words, $members); + } + $this->debug_print("Exclude-Wörter: " . count($exclude_words)); + + $all_words = array_diff($all_words, $exclude_words); + $this->debug_print("Finale Wörter nach Exclude: " . count($all_words)); + + if (empty($all_words)) { + echo "Keine Wörter gefunden.\n"; + return; + } + + shuffle($all_words); // Hohe Zufälligkeit + $selected_words = array_slice($all_words, 0, $num_words); + $this->debug_print("Ausgewählte Wörter: " . count($selected_words)); + + echo "Abrufen von Definitionen für " . count($selected_words) . " Wörter...\n"; + list($definitions, $variants) = $this->get_definitions_batch($selected_words); + + if ($format === 'html') { + $output = "\n\n\n\n"; + $output .= "Wiktionary Wortliste\n"; + $output .= "\n"; + $output .= "\n\n"; + $output .= "
\n"; + $output .= "

Wiktionary Wortliste ({$this->lang})

\n"; + $output .= "\n"; + if ($headers_flag) { + $output .= "\n"; + } + $output .= "\n"; + foreach ($selected_words as $word) { + $var = $variants[$word] ?? ''; + $begriff = $var ? htmlspecialchars($var . ', ' . $word) : htmlspecialchars($word); + $defn = htmlspecialchars($definitions[$word] ?? 'Keine Definition gefunden'); + $output .= "\n"; + } + $output .= "\n
BegriffErste Bedeutung
$begriff$defn
\n
\n\n"; + if ($this->is_cli) { + file_put_contents($output_file, $output); + echo "HTML-Tabelle gespeichert in $output_file\n"; + } else { + header('Content-Type: text/html; charset=UTF-8'); + echo $output; + } + } else { + $file = fopen($output_file, 'w'); + if ($headers_flag) { + fputcsv($file, ['Begriff', 'Erste Bedeutung'], "\t"); + } + foreach ($selected_words as $word) { + $var = $variants[$word] ?? ''; + $begriff = $var ? ($var . ', ' . $word) : $word; + $defn = $definitions[$word] ?? 'Keine Definition gefunden'; + fputcsv($file, [$begriff, $defn], "\t"); + } + fclose($file); + echo "Tabelle gespeichert in $output_file\n"; + } + } +} + +function print_help() { + $help_text = << Sprachcode für die Wiktionary-Instanz (z.B. 'de' für de.wiktionary.org). + Default: 'en'. Erforderlich. + --include, -i Logik für einzubeziehende Kategorien (z.B. 'A+B,C' für (A UND B) ODER C). + Erforderlich für Wortlisten (keine Includes führt zu Fehler), ignoriert bei --list-categories. + --exclude, -e Komma-separierte Liste auszuschließender Kategorien (OR-Logik). + Optional, ignoriert bei --list-categories. + --preferred-variant Bevorzugte Schreibweise (z.B. 'Schweizerische' – extrahiert aus Excerpt und als erstes ausgegeben). + Optional. + --filter, -f Textfilter für Kategorien (Substring-Match, case-insensitive). + Optional, nur bei --list-categories relevant. + --format, -o Ausgabeformat: 'csv' (Standard) oder 'html' (Tabelle mit Tailwind CSS). + Optional. + --debug, -d Aktiviert ausführliche Debug-Ausgaben für API-Aufrufe und Prozesse. + Optional. + --headers, -r Aktiviert die Ausgabe der Spaltenüberschrift in der Ausgabe (default: deaktiviert). + Optional, nur für Wortlisten relevant. + --list-categories, -c Listet alle Kategorien der Wiktionary-Instanz (optional mit --filter). + Wenn gesetzt, werden andere Parameter (außer --lang, --filter, --debug) ignoriert. + --help, -h Zeigt diese Hilfe an und beendet das Skript. + num_words Anzahl der Wörter für die Wortliste (Integer). + Erforderlich für Wortlisten, ignoriert bei --list-categories. + output_file Ausgabedatei für die Wortliste (CSV oder HTML). + Erforderlich für Wortlisten, ignoriert bei --list-categories. Default: 'output.csv'. + +Argumentkombinationen: + 1. Wortliste generieren: + - Erforderlich: --lang, --include, num_words, output_file + - Optional: --exclude, --preferred-variant, --format, --debug, --headers + - Beispiel: php script.php --lang de --include "Substantiv (Deutsch)+Deutsch,Verb (Deutsch)" --exclude "Veraltete Substantive (Deutsch)" --preferred-variant "Schweizerische" --format html 10000 output.html --debug --headers + 2. Kategorien auflisten: + - Erforderlich: --lang, --list-categories + - Optional: --filter, --debug + - Beispiel: php script.php --lang de --list-categories --filter "Deutsch" --debug + +Hinweise: + - Include-Logik: + für UND, , für ODER. Keine Includes führt zu Fehler (da 'alle' nicht unterstützt). + - Duplikate in Kategorien werden automatisch entfernt und gecached, um redundante Abfragen zu vermeiden. + - Die API-Aufrufe enthalten Pausen (0.5s), um Rate-Limits zu respektieren. + - Große Kategorien oder Wortlisten (>10.000) können lange dauern. + - Stelle sicher, dass die Kategorien korrekt benannt sind (z.B. 'Substantiv (Deutsch)' für de.wiktionary.org). +EOT; + echo $help_text . "\n"; +} + +$is_cli = php_sapi_name() == 'cli'; + +if ($is_cli) { + $shortopts = "l:i:e:preferred-variant:f:o:d:c:r h"; + $longopts = ["lang:", "include:", "exclude:", "preferred-variant:", "filter:", "format:", "debug", "list-categories", "headers", "help"]; + $options = getopt($shortopts, $longopts); + + // Positionale Argumente für CLI + $non_opt_args = array_filter($argv, function($arg) { return $arg[0] !== '-'; }); + $non_opt_args = array_values(array_slice($non_opt_args, 1)); // Entferne Script-Namen + $options['num_words'] = $non_opt_args[0] ?? null; + $options['output_file'] = $non_opt_args[1] ?? null; + + if (isset($options['help']) || isset($options['h'])) { + print_help(); + exit; + } + + $lang = $options['lang'] ?? $options['l'] ?? 'en'; + $include = $options['include'] ?? $options['i'] ?? ''; + $exclude = $options['exclude'] ?? $options['e'] ?? ''; + $preferred_variant = $options['preferred-variant'] ?? null; + $filter = $options['filter'] ?? $options['f'] ?? null; + $format = $options['format'] ?? $options['o'] ?? 'csv'; + $debug = isset($options['debug']) || isset($options['d']); + $headers_flag = isset($options['headers']) || isset($options['r']); + $list_categories = isset($options['list-categories']) || isset($options['c']); + $num_words = (int)($options['num_words'] ?? 0); + $output_file = $options['output_file'] ?? 'output.csv'; + + $client = new WiktionaryClient($lang, $debug, $is_cli); + + if ($list_categories) { + $client->list_all_categories($filter); + } else { + $client->generate_wordlist($include, $exclude, $num_words, $output_file, $preferred_variant, $headers_flag, $format); + } +} else { + // Webserver-Kontext: Parameter aus $_GET + $options = $_GET; + $lang = $options['lang'] ?? 'en'; + $include = $options['include'] ?? ''; + $exclude = $options['exclude'] ?? ''; + $preferred_variant = $options['preferred-variant'] ?? null; + $filter = $options['filter'] ?? null; + $format = $options['format'] ?? 'csv'; + $debug = isset($options['debug']); + $headers_flag = isset($options['headers']); + $list_categories = isset($options['list-categories']); + $num_words = (int)($options['num_words'] ?? 0); + $output_file = $options['output_file'] ?? 'output.csv'; + + if (isset($options['help'])) { + header('Content-Type: text/plain; charset=UTF-8'); + print_help(); + exit; + } + + $client = new WiktionaryClient($lang, $debug, $is_cli); + + if ($list_categories) { + header('Content-Type: text/plain; charset=UTF-8'); + $client->list_all_categories($filter); + } else { + $client->generate_wordlist($include, $exclude, $num_words, $output_file, $preferred_variant, $headers_flag, $format); + } +} +?> \ No newline at end of file diff --git a/utils/wordlist-generator/wiktionary_random_fetch.py b/utils/wordlist-generator/wiktionary_random_fetch.py new file mode 100644 index 0000000..500b6c7 --- /dev/null +++ b/utils/wordlist-generator/wiktionary_random_fetch.py @@ -0,0 +1,325 @@ +#!/usr/bin/env python3 + +import requests +import random +import time +import re +import argparse +import sys +from functools import reduce + +def debug_print(msg, debug=False): + if debug: + print(f"DEBUG: {msg}") + +def print_help(): + help_text = """ +Wiktionary Wortliste Generator + +Dieses Skript generiert eine Wortliste mit Begriffen und deren ersten Bedeutungen aus einer Wiktionary-Instanz +oder listet verfügbare Kategorien auf. + +Verfügbare Argumente: + --lang, -l Sprachcode für die Wiktionary-Instanz (z.B. 'de' für de.wiktionary.org). + Default: 'en'. Erforderlich. + --include, -i Logik für einzubeziehende Kategorien (z.B. 'A+B,C' für (A UND B) ODER C). + Erforderlich für Wortlisten (keine Includes führt zu Fehler), ignoriert bei --list-categories. + --exclude, -e Komma-separierte Liste auszuschließender Kategorien (OR-Logik). + Optional, ignoriert bei --list-categories. + --preferred-variant Bevorzugte Schreibweise (z.B. 'Schweizerische' – extrahiert aus Excerpt und als erstes ausgegeben). + Optional. + --filter, -f Textfilter für Kategorien (Substring-Match, case-insensitive). + Optional, nur bei --list-categories relevant. + --debug, -d Aktiviert ausführliche Debug-Ausgaben für API-Aufrufe und Prozesse. + Optional. + --headers Aktiviert die Ausgabe der Spaltenüberschrift in der CSV-Datei (default: deaktiviert). + Optional, nur für Wortlisten relevant. + --list-categories, -c Listet alle Kategorien der Wiktionary-Instanz (optional mit --filter). + Wenn gesetzt, werden andere Parameter (außer --lang, --filter, --debug) ignoriert. + num_words Anzahl der Wörter für die Wortliste (Integer). + Erforderlich für Wortlisten, ignoriert bei --list-categories. + output_file Ausgabedatei für die Wortliste (CSV-Format). + Erforderlich für Wortlisten, ignoriert bei --list-categories. Default: 'output.csv'. + +Argumentkombinationen: + 1. Wortliste generieren: + - Erforderlich: --lang, --include, num_words, output_file + - Optional: --exclude, --preferred-variant, --debug, --headers + - Beispiel: python script.py --lang de --include "Substantiv (Deutsch)+Deutsch,Verb (Deutsch)" --exclude "Veraltete Substantive (Deutsch)" --preferred-variant "Schweizerische" 10000 output.csv --debug --headers + 2. Kategorien auflisten: + - Erforderlich: --lang, --list-categories + - Optional: --filter, --debug + - Beispiel: python script.py --lang de --list-categories --filter "Deutsch" --debug + +Hinweise: + - Include-Logik: + für UND, , für ODER. Keine Includes führt zu Fehler (da 'alle' nicht unterstützt). + - Duplikate in Kategorien werden automatisch entfernt und gecached, um redundante Abfragen zu vermeiden. + - Die API-Aufrufe enthalten Pausen (0.5s), um Rate-Limits zu respektieren. + - Große Kategorien oder Wortlisten (>10.000) können lange dauern. + - Stelle sicher, dass die Kategorien korrekt benannt sind (z.B. 'Substantiv (Deutsch)' für de.wiktionary.org). +""" + print(help_text) + +def get_category_members(api_url, category, debug=False, category_cache={}): + if category in category_cache: + debug_print(f"Cache-Hit für Kategorie '{category}': {len(category_cache[category])} Member", debug) + return category_cache[category] + + members = set() + params = { + 'action': 'query', + 'list': 'categorymembers', + 'cmtitle': f'Category:{category}', + 'cmtype': 'page', + 'cmlimit': '500', + 'format': 'json' + } + headers = {'User-Agent': 'GrokScript/1.0'} + debug_print(f"Starte Abruf für Kategorie '{category}' mit URL: {api_url} und Params: {params}", debug) + page = 1 + total_members = 0 + while True: + try: + response = requests.get(api_url, params=params, headers=headers) + debug_print(f"Response Status: {response.status_code}, Content-Length: {len(response.text)}", debug) + if response.status_code != 200: + print(f"Fehler beim Abrufen von {category}: {response.status_code}") + debug_print(f"Response Text: {response.text[:500]}...", debug) + break + data = response.json() + debug_print(f"Data Keys: {list(data.keys())}", debug) + new_members = [member['title'] for member in data.get('query', {}).get('categorymembers', [])] + members.update(new_members) + total_members += len(new_members) + print(f"\rKategorie '{category}' Paging: Seite {page} abgerufen ({len(new_members)} neue, total {total_members})", end='') + if 'continue' in data: + params['cmcontinue'] = data['continue']['cmcontinue'] + debug_print(f"Paginierung fortsetzen mit cmcontinue: {params['cmcontinue']}", debug) + page += 1 + else: + print() # Neue Zeile nach Abschluss + break + time.sleep(0.5) # Pause zur Rate-Limiting-Vermeidung + except Exception as e: + print(f"Fehler beim API-Aufruf für {category}: {str(e)}") + debug_print(f"Exception Details: {type(e).__name__} - {str(e)}", debug) + break + category_cache[category] = members + debug_print(f"Abgerufene Member für '{category}' (cached): {len(members)}", debug) + return members + +def parse_include_logic(include_str): + if not include_str: + return [] + groups = include_str.split(',') + parsed_groups = [] + for group in groups: + cats = set(group.split('+')) # Set für unique in Gruppe + parsed_groups.append(list(cats)) + return parsed_groups + +def get_words_from_logic(api_url, include_groups, debug=False): + all_words = set() + for group in include_groups: + if not group: + continue + group_members = [get_category_members(api_url, cat, debug) for cat in group] + if group_members: + intersection = reduce(set.intersection, group_members) + all_words.update(intersection) + return all_words + +def extract_definition_and_variant(extract, preferred_variant=None): + lines = extract.split('\n') + definition = 'Keine Definition gefunden' + variant = '' + in_bedeutungen = False + for line in lines: + if 'Bedeutungen:' in line: + in_bedeutungen = True + continue + if in_bedeutungen: + if line.startswith('[1] '): + definition = line[4:].strip() + break + if line.startswith('[1]'): + definition = line.split('[1]', 1)[1].strip() + break + # Alternative Schreibweise suchen + for line in lines: + if 'Alternative Schreibweisen:' in line or 'Nebenformen:' in line: + # Extrahiere Wörter nach Labels + parts = re.split(r'\w+ische Schreibweise:', line) # Split nach Labels wie "Schweizerische Schreibweise:" + for part in parts[1:]: # Ignoriere vor dem ersten Label + words = re.findall(r'[\w\-]+', part) # Extrahiere Wörter + if words: + if preferred_variant and preferred_variant.lower() in line.lower(): + variant = words[0] + break + elif not preferred_variant: + variant = words[0] + break + if variant: + break + return definition, variant + +def get_definitions_batch(api_url, words, debug=False): + definitions = {} + variants = {} + headers = {'User-Agent': 'GrokScript/1.0'} + for idx, word in enumerate(words): + params = { + 'action': 'query', + 'prop': 'extracts', + 'titles': word, + 'explaintext': '1', + 'exsectionformat': 'plain', + 'format': 'json' + } + debug_print(f"Starte Definitionsabruf für Wort {idx+1}/{len(words)}: '{word}' mit URL: {api_url} und Params: {params}", debug) + try: + response = requests.get(api_url, params=params, headers=headers) + debug_print(f"Response Status: {response.status_code}, Content-Length: {len(response.text)}", debug) + if response.status_code != 200: + print(f"Fehler beim Abrufen von Definition für '{word}': {response.status_code}") + debug_print(f"Response Text: {response.text[:500]}...", debug) + definitions[word] = 'Keine Definition gefunden' + variants[word] = '' + continue + data = response.json() + debug_print(f"Data Keys: {list(data.keys())}", debug) + page = next(iter(data.get('query', {}).get('pages', {}).values()), {}) + extract = page.get('extract', '') + defn, var = extract_definition_and_variant(extract, args.preferred_variant) + definitions[word] = defn + variants[word] = var + print(f"\rDefinitionen abrufen: {idx+1}/{len(words)} abgeschlossen ({word})", end='') + time.sleep(0.5) # Pause pro Request zur Rate-Limiting-Vermeidung + except Exception as e: + print(f"Fehler beim Definitionsabruf für '{word}': {str(e)}") + debug_print(f"Exception Details: {type(e).__name__} - {str(e)}", debug) + definitions[word] = 'Keine Definition gefunden' + variants[word] = '' + print() # Neue Zeile nach Abschluss + debug_print(f"Abgerufene Definitionen: {len(definitions)}", debug) + return definitions, variants + +def list_all_categories(api_url, filter_str=None, debug=False): + categories = [] + params = { + 'action': 'query', + 'list': 'allcategories', + 'aclimit': '500', + 'format': 'json' + } + headers = {'User-Agent': 'GrokScript/1.0'} + debug_print(f"Starte Abruf aller Kategorien mit URL: {api_url} und Params: {params}", debug) + page = 1 + total_categories = 0 + while True: + try: + response = requests.get(api_url, params=params, headers=headers) + debug_print(f"Response Status: {response.status_code}, Content-Length: {len(response.text)}", debug) + if response.status_code != 200: + print("Fehler beim Abrufen der Kategorien") + debug_print(f"Response Text: {response.text[:500]}...", debug) + break + data = response.json() + debug_print(f"Data Keys: {list(data.keys())}", debug) + new_categories = [cat['*'] for cat in data.get('query', {}).get('allcategories', [])] + categories.extend(new_categories) + total_categories += len(new_categories) + print(f"\rKategorien Paging: Seite {page} abgerufen ({len(new_categories)} neue, total {total_categories})", end='') + if 'continue' in data: + params['accontinue'] = data['continue']['accontinue'] + debug_print(f"Paginierung fortsetzen mit accontinue: {params['accontinue']}", debug) + page += 1 + else: + print() # Neue Zeile nach Abschluss + break + time.sleep(0.5) # Pause + except Exception as e: + print(f"Fehler beim API-Aufruf für Kategorien: {str(e)}") + debug_print(f"Exception Details: {type(e).__name__} - {str(e)}", debug) + break + if filter_str: + filter_lower = filter_str.lower() + categories = [cat for cat in categories if filter_lower in cat.lower()] + debug_print(f"Gefiltert nach '{filter_str}': {len(categories)} Kategorien gefunden", debug) + + print("Vorhandene Kategorien" + (f" (gefiltert nach '{filter_str}')" if filter_str else "") + ":") + for cat in sorted(categories): + print(cat) + debug_print(f"Gesamte Kategorien: {len(categories)}", debug) + return categories + +def main(args): + category_cache = {} # Globaler Cache für Kategorien + if args.help: + print_help() + return + + api_url = f'https://{args.lang}.wiktionary.org/w/api.php' + debug_print(f"API-URL: {api_url}", args.debug) + + if args.list_categories: + list_all_categories(api_url, args.filter, args.debug) + return + + include_groups = parse_include_logic(args.include) + if not include_groups: + print("Fehler: --include muss angegeben werden, da 'alle' nicht unterstützt wird.") + return + + all_words = get_words_from_logic(api_url, include_groups, args.debug) + debug_print(f"Include-Wörter nach Logik: {len(all_words)}", args.debug) + + exclude_cats = list(set([cat.strip() for cat in args.exclude.split(',') if cat.strip()])) if args.exclude else [] # Unique exclude + exclude_words = set() + for cat in exclude_cats: + print(f"Abrufen von Kategorie (exclude): {cat}") + members = get_category_members(api_url, cat, args.debug, category_cache) + exclude_words.update(members) + debug_print(f"Exclude-Wörter: {len(exclude_words)}", args.debug) + + all_words -= exclude_words + debug_print(f"Finale Wörter nach Exclude: {len(all_words)}", args.debug) + + if not all_words: + print("Keine Wörter gefunden. Überprüfe die Kategorien.") + return + + words_list = list(all_words) + random.shuffle(words_list) + selected_words = words_list[:args.num_words] + debug_print(f"Ausgewählte Wörter: {len(selected_words)}", args.debug) + + print(f"Abrufen von Definitionen für {len(selected_words)} Wörter...") + definitions, variants = get_definitions_batch(api_url, selected_words, args.debug) + + # Erstelle Tabelle (als CSV-Datei) + with open(args.output_file, 'w', encoding='utf-8') as f: + if args.headers: + f.write("Begriff\tErste Bedeutung\n") + for word in selected_words: + var = variants.get(word, '') + begriff = f"{var}, {word}" if var else word + defn = definitions.get(word, 'Keine Definition gefunden') + f.write(f"{begriff}\t{defn}\n") + print(f"Tabelle gespeichert in {args.output_file}") + +if __name__ == "__main__": + parser = argparse.ArgumentParser(description="Wiktionary Wortliste Generator", add_help=False) + parser.add_argument('--lang', '-l', default='en', help='Sprachcode für Wiktionary (z.B. de für de.wiktionary.org)') + parser.add_argument('--include', '-i', default='', help='Logik für einzubeziehende Kategorien (z.B. A+B,C)') + parser.add_argument('--exclude', '-e', default='', help='Komma-separierte Liste auszuschließender Kategorien') + parser.add_argument('--preferred-variant', default=None, help='Bevorzugte Schreibweise (z.B. Schweizerische)') + parser.add_argument('num_words', type=int, nargs='?', default=0, help='Anzahl der Wörter') + parser.add_argument('output_file', nargs='?', default='output.csv', help='Ausgabedatei (CSV)') + parser.add_argument('--list-categories', '-c', action='store_true', help='Liste alle Kategorien der Wiktionary-Instanz') + parser.add_argument('--filter', '-f', default=None, help='Textfilter für Kategorien (Substring-Match, case-insensitive)') + parser.add_argument('--debug', '-d', action='store_true', help='Aktiviere Debug-Ausgaben') + parser.add_argument('--headers', action='store_true', help='Aktiviere Spaltenüberschrift in der Ausgabe') + parser.add_argument('--help', '-h', action='store_true', help='Zeige diese Hilfe an') + args = parser.parse_args() + main(args) \ No newline at end of file diff --git a/utils/wordlist-generator/wiktionary_random_words.py b/utils/wordlist-generator/wiktionary_random_words.py new file mode 100644 index 0000000..9af04f1 --- /dev/null +++ b/utils/wordlist-generator/wiktionary_random_words.py @@ -0,0 +1,410 @@ +#!/usr/bin/env python3 +""" +Wiktionary Random Word Generator 4.2 (Korrigierte Version) + +Erstellt zufällige Wortlisten mit Definitionen aus Wiktionary. +- Echte Zufälligkeit durch MediaWiki Random API +- Integrierte Definition-Extraktion +- Kategorie-Filter und Zahlen-Ausschluss +- Debug-Modus für Fehlerdiagnose +""" + +import argparse +import time +import csv +import re +import requests +import random +import sys +from datetime import datetime +from typing import List, Optional, Dict + +class WiktionaryRandomGenerator: + def __init__(self, language: str, debug: bool = False): + self.language = language + self.debug = debug + self.session = requests.Session() + self.session.headers.update({'User-Agent': 'Wiktionary Generator 4.2'}) + + # API URLs + self.api_url = { + 'de': 'https://de.wiktionary.org/w/api.php', + 'en': 'https://en.wiktionary.org/w/api.php' + }[language] + + # Wortarten-Kategorien (für Filterung) + self.pos_categories = { + 'de': { + 'substantiv': 'Kategorie:Substantiv (Deutsch)', + 'verb': 'Kategorie:Verb (Deutsch)', + 'adjektiv': 'Kategorie:Adjektiv (Deutsch)', + 'adverb': 'Kategorie:Adverb (Deutsch)', + 'artikel': 'Kategorie:Artikel (Deutsch)', + 'pronomen': 'Kategorie:Pronomen (Deutsch)', + 'präposition': 'Kategorie:Präposition (Deutsch)', + 'konjunktion': 'Kategorie:Konjunktion (Deutsch)', + 'interjektion': 'Kategorie:Interjektion (Deutsch)' + }, + 'en': { + 'noun': 'Category:English nouns', + 'verb': 'Category:English verbs', + 'adjective': 'Category:English adjectives', + 'adverb': 'Category:English adverbs', + 'pronoun': 'Category:English pronouns', + 'preposition': 'Category:English prepositions', + 'conjunction': 'Category:English conjunctions', + 'interjection': 'Category:English interjections' + } + }[language] + + # Ausschluss-Kategorien (Namen, Geografie) + self.excluded_categories = { + 'de': { + 'Kategorie:Eigenname (Deutsch)', + 'Kategorie:Vorname (Deutsch)', + 'Kategorie:Nachname (Deutsch)', + 'Kategorie:Toponym (Deutsch)', + 'Kategorie:Stadt (Deutsch)', + 'Kategorie:Land (Deutsch)' + }, + 'en': { + 'Category:English proper nouns', + 'Category:English given names', + 'Category:English surnames' + } + }[language] + + # Standard-Wortarten + self.default_pos = ['substantiv', 'verb', 'adjektiv'] if language == 'de' else ['noun', 'verb', 'adjective'] + + self.debug_print(f"Initialisiert für Sprache: {language}") + self.debug_print(f"API URL: {self.api_url}") + self.debug_print(f"Standard-Wortarten: {self.default_pos}") + + def debug_print(self, msg: str): + if self.debug: + print(f"[DEBUG] {msg}") + + def has_numbers(self, word: str) -> bool: + """Prüft ob ein Wort Ziffern enthält""" + result = bool(re.search(r'\d', word)) + if result and self.debug: + self.debug_print(f"Wort '{word}' enthält Zahlen -> ausgeschlossen") + return result + + def clean_definition(self, text: str) -> str: + """Bereinigt Definition von Wiki-Markup und Formatierung""" + if not text: + return "" + + original = text + # Entferne führende Nummerierungen: [1], 2), etc. + text = re.sub(r'^\s*\[?\d+\]?\s*[\]\)]*\s*', '', text) + # Entferne führende Sonderzeichen: :, •, -, etc. + text = re.sub(r'^\s*[:\-\*\+>•]+\s*', '', text) + # Entferne führende Klammern/Anführungszeichen + text = re.sub(r'^\s*[\(\[\"\'`]+\s*', '', text) + # Normalisiere Leerzeichen + text = re.sub(r'\s+', ' ', text).strip() + + # Kleinschreibung am Anfang (außer bei Eigennamen) + if text and len(text) > 1 and text[0].isupper() and text[1].islower(): + text = text[0].lower() + text[1:] + + if self.debug and original != text: + self.debug_print(f"Definition bereinigt: '{original[:30]}...' -> '{text[:30]}...'") + + return text + + def fetch_random_pages(self, count: int) -> List[Dict]: + """ + Holt zufällige Seiten mit Definitionen und Kategorien. + Verwendet zwei API-Calls: random + details + """ + self.debug_print(f"Hole {count} zufällige Seiten") + + # Schritt 1: Hole zufällige Page-IDs + try: + params = { + 'action': 'query', + 'format': 'json', + 'list': 'random', + 'rnlimit': min(count, 500), + 'rnnamespace': 0 # Nur Hauptnamensraum + } + + self.debug_print(f"Random API Call: {params}") + response = self.session.get(self.api_url, params=params, timeout=15) + response.raise_for_status() + data = response.json() + + if 'query' not in data or 'random' not in data['query']: + self.debug_print(f"Fehler in Random API Response: {data}") + return [] + + random_pages = data['query']['random'] + page_ids = [str(page['id']) for page in random_pages] + titles = [page['title'] for page in random_pages] + + self.debug_print(f"Gefunden: {len(page_ids)} zufällige Seiten") + + if not page_ids: + return [] + + except Exception as e: + self.debug_print(f"Fehler beim Random API Call: {e}") + return [] + + # Schritt 2: Hole Details (Extract + Categories) für diese IDs + try: + params = { + 'action': 'query', + 'format': 'json', + 'pageids': '|'.join(page_ids), + 'prop': 'extracts|categories', + 'exintro': True, + 'explaintext': True, + 'cllimit': 500 + } + + self.debug_print(f"Details API Call: {params}") + response = self.session.get(self.api_url, params=params, timeout=15) + response.raise_for_status() + data = response.json() + + if 'query' not in data or 'pages' not in data['query']: + self.debug_print(f"Fehler in Details API Response: {data}") + return [] + + pages = data['query']['pages'] + results = [] + + for page_id, page_data in pages.items(): + if page_id == '-1': # Ungültige Seite + continue + + title = page_data.get('title', '') + extract = page_data.get('extract', '') + categories = set() + + # Kategorien sammeln + if 'categories' in page_data: + categories = {cat['title'] for cat in page_data['categories']} + + results.append({ + 'title': title, + 'extract': extract, + 'categories': categories + }) + + self.debug_print(f"Seite '{title}': Extract={len(extract)} chars, Categories={len(categories)}") + + self.debug_print(f"Details für {len(results)} Seiten geholt") + return results + + except Exception as e: + self.debug_print(f"Fehler beim Details API Call: {e}") + return [] + + def check_word_categories(self, categories: set, include_pos: List[str]) -> bool: + """ + Prüft ob ein Wort in den gewünschten Wortart-Kategorien ist. + Wenn include_pos leer ist, werden alle Wörter akzeptiert. + """ + if not include_pos: + return True # Keine POS-Filter + + # Prüfe ob eine der gewünschten Kategorien vorhanden ist + desired_categories = {self.pos_categories[pos] for pos in include_pos + if pos in self.pos_categories} + + has_desired_category = bool(categories & desired_categories) + + if self.debug: + if has_desired_category: + matching = categories & desired_categories + self.debug_print(f"Wort in gewünschter Kategorie: {matching}") + else: + self.debug_print(f"Wort nicht in gewünschten Kategorien: {desired_categories}") + + return has_desired_category + + def is_excluded_word(self, categories: set) -> bool: + """Prüft ob ein Wort in Ausschluss-Kategorien ist""" + excluded = bool(categories & self.excluded_categories) + if excluded and self.debug: + matching = categories & self.excluded_categories + self.debug_print(f"Wort ausgeschlossen wegen: {matching}") + return excluded + + def generate(self, count: int, include_pos: List[str], include_names: bool, + exclude_numbers: bool, outfile: str): + """Generiert die Wortliste""" + + pos = include_pos or [] + self.debug_print(f"Parameter: count={count}, pos={pos}, names={include_names}, numbers={exclude_numbers}") + + print(f"Generiere {count} zufällige Wörter aus {self.language.upper()}-Wiktionary") + if pos: + print(f"Wortarten-Filter: {', '.join(pos)}") + else: + print("Keine Wortarten-Filter (alle Wörter)") + print(f"Namen einschließen: {'Ja' if include_names else 'Nein'}") + print(f"Zahlen ausschließen: {'Ja' if exclude_numbers else 'Nein'}") + print() + + results = [] + attempts = 0 + max_attempts = count * 5 # Maximal 5x so viele Versuche + + print("Sammle zufällige Kandidaten...") + + while len(results) < count and attempts < max_attempts: + batch_size = min(50, (count - len(results)) * 2) # Hole mehr als nötig + candidates = self.fetch_random_pages(batch_size) + + if not candidates: + self.debug_print("Keine Kandidaten erhalten") + break + + self.debug_print(f"Verarbeite {len(candidates)} Kandidaten...") + + for candidate in candidates: + if len(results) >= count: + break + + title = candidate['title'] + extract = candidate['extract'] + categories = candidate['categories'] + + self.debug_print(f"Prüfe Kandidat: '{title}'") + + # Filter 1: Namen ausschließen (falls gewünscht) + if not include_names and self.is_excluded_word(categories): + self.debug_print(f"'{title}' wegen Namen-Filter übersprungen") + continue + + # Filter 2: Zahlen ausschließen (falls gewünscht) + if exclude_numbers and self.has_numbers(title): + continue + + # Filter 3: Wortarten-Filter (falls angegeben) + if pos and not self.check_word_categories(categories, pos): + self.debug_print(f"'{title}' wegen POS-Filter übersprungen") + continue + + # Filter 4: Definition muss vorhanden sein + if not extract or len(extract) < 10: + self.debug_print(f"'{title}' hat keine ausreichende Definition") + continue + + # Definition bereinigen + cleaned_definition = self.clean_definition(extract) + if len(cleaned_definition) < 10: + self.debug_print(f"'{title}' Definition zu kurz nach Bereinigung") + continue + + # Wort akzeptieren + results.append((title, cleaned_definition)) + print(f" {len(results):2d}/{count}: {title}") + + self.debug_print(f"'{title}' erfolgreich hinzugefügt") + + attempts += batch_size + + # Kleine Pause zwischen Batches + if len(results) < count: + time.sleep(0.3) + + if not results: + print("FEHLER: Keine Wörter generiert! Versuchen Sie:") + print("- --include-names für mehr Kandidaten") + print("- Andere/keine --include-pos Filter") + print("- --debug für detaillierte Ausgabe") + sys.exit(1) + + # Finale Mischung und Begrenzung + random.shuffle(results) + results = results[:count] + + print(f"\n✅ Erfolgreich {len(results)} Wörter generiert!") + print(f"💾 Speichere in '{outfile}'...") + + # CSV-Datei schreiben + try: + with open(outfile, 'w', encoding='utf-8', newline='') as f: + writer = csv.writer(f, delimiter='\t') + writer.writerow(['Wort', 'Definition', 'Sprache', 'Zeitstempel']) + + for word, definition in results: + writer.writerow([ + word, + definition, + self.language, + datetime.now().strftime('%Y-%m-%d %H:%M:%S') + ]) + + print(f"✅ Datei '{outfile}' erfolgreich erstellt!") + + # Beispiele anzeigen + print("\n📖 Beispiele aus der generierten Liste:") + print("-" * 65) + for i, (word, definition) in enumerate(results[:5], 1): + short_def = definition[:50] + "..." if len(definition) > 50 else definition + print(f"{i:2d}. {word:15s} → {short_def}") + + if len(results) > 5: + print(f" ... und {len(results) - 5} weitere Wörter") + + except Exception as e: + print(f"❌ FEHLER beim Schreiben der Datei: {e}") + sys.exit(1) + +if __name__ == '__main__': + parser = argparse.ArgumentParser( + description='Wiktionary Random Word Generator 4.2', + formatter_class=argparse.RawDescriptionHelpFormatter, + epilog=""" +Beispiele: + python script.py -c 30 -l de + python script.py -c 50 --include-pos substantiv verb + python script.py -c 25 -l en --exclude-numbers + python script.py -c 40 --include-names --debug + +Verfügbare Wortarten: + Deutsch: substantiv, verb, adjektiv, adverb, artikel, pronomen, präposition, konjunktion, interjektion + Englisch: noun, verb, adjective, adverb, pronoun, preposition, conjunction, interjection + """ + ) + + parser.add_argument('-c', '--count', type=int, default=50, + help='Anzahl der zu generierenden Wörter (Standard: 50)') + parser.add_argument('-l', '--language', choices=['de', 'en'], default='de', + help='Wiktionary-Sprache (Standard: de)') + parser.add_argument('-o', '--output', default='wiktionary_words.csv', + help='Output-Datei (Standard: wiktionary_words.csv)') + parser.add_argument('--include-pos', nargs='+', + help='Nur diese Wortarten einschließen') + parser.add_argument('--include-names', action='store_true', + help='Namen und geografische Bezeichnungen einschließen') + parser.add_argument('--exclude-numbers', action='store_true', + help='Wörter mit Ziffern ausschließen') + parser.add_argument('--debug', action='store_true', + help='Debug-Modus für detaillierte Ausgabe') + + args = parser.parse_args() + + # Validierung + if args.count <= 0: + print("❌ Anzahl muss größer als 0 sein!") + sys.exit(1) + + # Generator erstellen und ausführen + gen = WiktionaryRandomGenerator(args.language, debug=args.debug) + gen.generate( + count=args.count, + include_pos=args.include_pos, + include_names=args.include_names, + exclude_numbers=args.exclude_numbers, + outfile=args.output + )