Claude Code Plugins

Community-maintained marketplace

Feedback

restapi-translations

@mikopbx/Core
487
0

Управление переводами REST API ключей (rest_*) для MikoPBX. Автоматически находит отсутствующие русские ключи в RestApi.php и синхронизирует их с исходным кодом. Использовать при проверке переводов API, после добавления новых endpoints или перед релизом.

Install Skill

1Download skill
2Enable skills in Claude

Open claude.ai/settings/capabilities and find the "Skills" section

3Upload to Claude

Click "Upload skill" and select the downloaded ZIP file

Note: Please verify skill by going through its instructions before using it.

SKILL.md

name restapi-translations
description Управление переводами REST API ключей (rest_*) для MikoPBX. Автоматически находит отсутствующие русские ключи в RestApi.php и синхронизирует их с исходным кодом. Использовать при проверке переводов API, после добавления новых endpoints или перед релизом.
allowed-tools Bash, Read, Write, Edit, Grep, Glob

REST API Translation Management

Автоматическое управление русскими переводами REST API ключей для документации OpenAPI в MikoPBX.

What This Skill Does

  1. Extracts rest_ keys* from PBXCoreREST source code (~1589 unique keys)
  2. Validates translations comparing code keys with RestApi.php
  3. Finds missing keys (in code but not in RestApi.php) - 219 keys
  4. Finds unused keys (in RestApi.php but not used) - 358 keys
  5. Synchronizes RestApi.php adding/removing keys with backups
  6. Validates PHP syntax after changes

When to Use This Skill

Automatically activate when:

  • User asks "check REST API translations" / "проверь переводы REST API"
  • User says "sync RestApi.php" / "синхронизируй RestApi.php"
  • User asks "find missing rest_* keys" / "найди отсутствующие ключи rest_*"
  • After adding new REST API endpoints
  • Before creating a new release

DO NOT activate when:

  • User asks about general translation management (use translations skill)
  • User needs to translate to other languages (not Russian)

How It Works

Three-Step Workflow

cd .claude/skills/restapi-translations/scripts

# Step 1: Extract keys from code
python3 extract_keys.py

# Step 2: Validate translations
python3 validate_translations.py

# Step 3: Sync RestApi.php
python3 sync_translations.py --add-missing

Interactive Mode

./manage_translations.sh

# Menu:
# 1. Extract keys from source code
# 2. Validate translations
# 3. Add missing keys
# 4. Remove unused keys
# 5. Full sync (add + remove)
# 6. Preview changes (dry run)
# 7. Run all (extract + validate + sync)

Key Patterns

1. API Resource Descriptions

'rest_Extensions_ApiDescription' => 'Комплексное управление внутренними номерами...'

Pattern: rest_{ResourceName}_ApiDescription

2. Operation Summaries & Descriptions

'rest_ext_GetList' => 'Получить список внутренних номеров'
'rest_ext_GetListDesc' => 'Получить пагинированный список всех...'

Pattern: rest_{abbr}_{Operation}[Desc]

3. HTTP Responses

'rest_response_200_get' => 'Запись успешно получена'
'rest_response_404_not_found' => 'Запись не найдена'

Pattern: rest_response_{code}_{type}

4. Parameters, Schemas, Security

'rest_param_name' => 'Название'
'rest_schema_extension_list' => 'Список внутренних номеров'
'rest_security_bearer' => 'JWT Bearer Token аутентификация'

Core Principles

✅ DO:

  • Run extraction before validation
  • Use --dry-run to preview changes
  • Translate placeholder text after adding keys
  • Review unused keys carefully (might be for future features)

❌ DON'T:

  • Skip extraction step (validation needs extracted_keys.json)
  • Remove unused keys without reviewing them
  • Edit RestApi.php manually (use sync script)
  • Ignore [ТРЕБУЕТ ПЕРЕВОДА] placeholders

Typical Workflow

When Creating New Endpoint

# 1. Write controller
vim src/PBXCoreREST/Controllers/MyResource/RestController.php

# 2. Extract + validate + sync
./manage_translations.sh all

# 3. Translate placeholders
grep "ТРЕБУЕТ ПЕРЕВОДА" src/Common/Messages/ru/RestApi.php
vim src/Common/Messages/ru/RestApi.php

# 4. Verify
python3 validate_translations.py

# 5. Commit
git add src/PBXCoreREST/Controllers/MyResource/
git add src/Common/Messages/ru/RestApi.php
git commit -m "feat: add MyResource REST API endpoints"

Monthly Maintenance

# Check for drift
./manage_translations.sh validate

# Review unused keys with team

# Clean up if agreed
./manage_translations.sh sync --remove-unused

Before Release

# Complete check
./manage_translations.sh all

# Ensure no placeholders
grep "ТРЕБУЕТ ПЕРЕВОДА" src/Common/Messages/ru/RestApi.php

# Commit if changes
git add src/Common/Messages/ru/RestApi.php
git commit -m "chore: sync REST API translations"

Placeholder Generation

Script generates context-aware Russian placeholders:

  • GetList → "Получить список [ТРЕБУЕТ ПЕРЕВОДА]"
  • Create → "Создать запись [ТРЕБУЕТ ПЕРЕВОДА]"
  • Update → "Обновить запись [ТРЕБУЕТ ПЕРЕВОДА]"
  • Delete → "Удалить запись [ТРЕБУЕТ ПЕРЕВОДА]"
  • _ApiDescription → "Описание API ресурса [ТРЕБУЕТ ПЕРЕВОДА]"
  • rest_response_ → "Описание HTTP ответа [ТРЕБУЕТ ПЕРЕВОДА]"

Always translate [ТРЕБУЕТ ПЕРЕВОДА] to proper Russian text!

Safety Features

  1. Automatic Backups - RestApi.php.bak.YYYYMMDD_HHMMSS before changes
  2. PHP Syntax Validation - Auto-restores if invalid
  3. Dry Run Mode - Preview with --dry-run
  4. User Confirmation - Asks before removing keys
  5. Rollback Support - Manual restore from .bak files

Output Examples

Validation Output

======================================================================
VALIDATION RESULTS
======================================================================

✅ Valid keys:    1370/1589 (86%)
❌ Missing keys:  219 (in code, not in RestApi.php)
⚠️  Unused keys:   358 (in RestApi.php, not used in code)

Missing Keys:
  rest_ext_GetList (Controllers/Extensions/RestController.php:123)
  rest_fw_CreateDesc (Controllers/Firewall/RestController.php:89)

Sync Output

======================================================================
REST API TRANSLATION SYNCHRONIZATION
======================================================================

➕ Adding 219 missing keys...
✅ Backup created: RestApi.php.bak.20251024_143022
🔍 Validating PHP syntax...
✅ PHP syntax is valid

Next steps:
  1. Review changes: git diff src/Common/Messages/ru/RestApi.php
  2. Translate placeholder text from Russian
  3. Run validate_translations.py to verify

Troubleshooting

Error: "Extracted keys file not found"

Fix: Run python3 extract_keys.py first

Error: "PHP syntax error detected"

Fix: Script auto-restores from backup

Too many unused keys

Fix: Review carefully, check if for future features, ask team

Placeholders not translated

Fix: grep -n "ТРЕБУЕТ ПЕРЕВОДА" src/Common/Messages/ru/RestApi.php and edit

Integration with Other Skills

  • openapi-analyzer - Get endpoint list, validate completeness
  • endpoint-validator - Check translation coverage
  • translations - Propagate to other 29 languages

File Structure

.claude/skills/restapi-translations/
├── SKILL.md                        # This file
├── README.md                       # User documentation
├── QUICKSTART.md                   # Quick start guide
└── scripts/
    ├── extract_keys.py             # Extract keys from code
    ├── validate_translations.py    # Validate translations
    ├── sync_translations.py        # Sync RestApi.php
    ├── manage_translations.sh      # Interactive wrapper
    └── extracted_keys.json         # Generated data

Statistics

Current state:

Files scanned:     479 PHP files
Keys found:        2876 total usages
Unique keys:       1589 unique keys

Valid keys:        1370/1589 (86%)
Missing keys:      219 need to be added
Unused keys:       358 could be removed

Goal: 100% Valid keys (perfect sync)

Quality Checklist

Before considering complete:

  • Extraction run successfully
  • Validation shows 100% valid keys
  • No missing keys reported
  • Unused keys reviewed
  • All placeholders translated
  • No [ТРЕБУЕТ ПЕРЕВОДА] markers
  • PHP syntax is valid
  • Changes committed

Command Reference

# Interactive mode
./manage_translations.sh

# Command-line mode
./manage_translations.sh extract
./manage_translations.sh validate
./manage_translations.sh sync --add-missing
./manage_translations.sh sync --remove-unused
./manage_translations.sh all

# Direct Python
python3 extract_keys.py
python3 validate_translations.py
python3 sync_translations.py --add-missing --dry-run
python3 sync_translations.py --add-missing --remove-unused

Success Criteria

Translation management succeeds when:

  1. Extraction runs without errors (479 files)
  2. Validation shows 100% valid keys
  3. No missing keys remain
  4. Unused keys reviewed and handled
  5. No placeholder markers left
  6. PHP syntax valid
  7. Git diff clean and meaningful

Remember

  • Extract before validate - Validation needs extracted_keys.json
  • Validate before sync - Know what will change
  • Dry run first - Preview with --dry-run
  • Translate placeholders - Don't leave [ТРЕБУЕТ ПЕРЕВОДА]
  • Review unused keys - Might be for future features
  • Backup is automatic - RestApi.php.bak.* created
  • PHP validation automatic - Script checks syntax

Additional Resources