restapi-translations
Syncs Russian translation keys with MikoPBX source code and validates PHP syntax.
Install
mkdir -p .claude/skills/restapi-translations && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/6706" && unzip -o skill.zip -d .claude/skills/restapi-translations && rm skill.zipInstalls to .claude/skills/restapi-translations
Activation
This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.
Управление переводами REST API ключей (rest_*) для MikoPBX. Автоматически находит отсутствующие русские ключи в RestApi.php и синхронизирует их с исходным кодом. Использовать при проверке переводов API, после добавления новых endpoints или перед релизом.Key capabilities
- →Extracts REST API translation keys from source code
- →Validates translation coverage against RestApi.php
- →Identifies missing or unused language keys
- →Synchronizes translation files with PHP syntax validation
How it works
Runs Python scripts to parse the codebase for key patterns, compares against existing translations, and performs bulk file updates.
Inputs & outputs
When to use restapi-translations
- →Syncing new API endpoints
- →Checking translation coverage
- →Preparing for a new release
About this skill
REST API Translation Management
Автоматическое управление русскими переводами REST API ключей для документации OpenAPI в MikoPBX.
What This Skill Does
- Extracts rest_ keys* from PBXCoreREST source code (~1589 unique keys)
- Validates translations comparing code keys with RestApi.php
- Finds missing keys (in code but not in RestApi.php) - 219 keys
- Finds unused keys (in RestApi.php but not used) - 358 keys
- Synchronizes RestApi.php adding/removing keys with backups
- 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
translationsskill) - 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
- Automatic Backups -
RestApi.php.bak.YYYYMMDD_HHMMSSbefore changes - PHP Syntax Validation - Auto-restores if invalid
- Dry Run Mode - Preview with
--dry-run - User Confirmation - Asks before removing keys
- Rollback Support - Manual restore from
.bakfiles
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 completenessendpoint-validator- Check translation coveragetranslations- 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:
- Extraction runs without errors (479 files)
- Validation shows 100% valid keys
- No missing keys remain
- Unused keys reviewed and handled
- No placeholder markers left
- PHP syntax valid
- 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
- README.md - Complete documentation
- QUICKSTART.md - Quick examples
- SUMMARY.md - Project summary
When not to use it
- →Projects unrelated to MikoPBX source code
- →Translation tasks involving non-Russian languages
Prerequisites
Limitations
- →Hardcoded for Russian translation keys
- →Only handles rest_* key patterns
How it compares
Automates the entire maintenance cycle for API keys rather than manual search-and-replace.
Compared to similar skills
restapi-translations side by side with the closest alternatives in the catalog.
| Skill | Installs | Updated | Safety | Difficulty |
|---|---|---|---|---|
| restapi-translations (this skill) | 1 | 2mo | Review | Advanced |
| ccxt | 0 | 8mo | No flags | Intermediate |
| fastapi-templates | 520 | 2mo | No flags | Intermediate |
| fastapi-pro | 79 | 4mo | No flags | Advanced |
Try saying
Example prompts that trigger this skill in your AI assistant.
More by mikopbx
View all by mikopbx →You might also like
ccxt
2025Emma
CCXT cryptocurrency trading library. Use for cryptocurrency exchange APIs, trading, market data, order management, and crypto trading automation across 150+ exchanges. Supports JavaScript/Python/PHP.
fastapi-templates
wshobson
Create production-ready FastAPI projects with async patterns, dependency injection, and comprehensive error handling. Use when building new FastAPI applications or setting up backend API projects.
fastapi-pro
sickn33
Build high-performance async APIs with FastAPI, SQLAlchemy 2.0, and Pydantic V2. Master microservices, WebSockets, and modern Python async patterns. Use PROACTIVELY for FastAPI development, async optimization, or API architecture.
telegram-bot-builder
davila7
Expert in building Telegram bots that solve real problems - from simple automation to complex AI-powered bots. Covers bot architecture, the Telegram Bot API, user experience, monetization strategies, and scaling bots to thousands of users. Use when: telegram bot, bot api, telegram automation, chat bot telegram, tg bot.
stripe-integration
wshobson
Implement Stripe payment processing for robust, PCI-compliant payment flows including checkout, subscriptions, and webhooks. Use when integrating Stripe payments, building subscription systems, or implementing secure checkout flows.
billing-automation
wshobson
Build automated billing systems for recurring payments, invoicing, subscription lifecycle, and dunning management. Use when implementing subscription billing, automating invoicing, or managing recurring payment systems.