restapi-translations by mikopbx
Управление переводами REST API ключей (rest_*) для MikoPBX. Автоматически находит отсутствующие русские ключи в RestApi.php и синхронизирует их с исходным кодом. Использовать при проверке переводов API, после добавления новых endpoints или перед релизом.
Content & Writing
516 Stars
75 Forks
Updated Oct 24, 2025, 01:50 PM
Why Use This
This skill provides specialized capabilities for mikopbx's codebase.
Use Cases
- Developing new features in the mikopbx repository
- Refactoring existing code to follow mikopbx standards
- Understanding and working with mikopbx's codebase structure
Install Guide
2 steps- 1
Skip this step if Ananke is already installed.
- 2
Skill Snapshot
Auto scan of skill assets. Informational only.
Valid SKILL.md
Checks against SKILL.md specification
Source & Community
Skill Stats
SKILL.md 321 Lines
Total Files 6
Total Size 9.7 KB
License GPL-3.0
---
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
```bash
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
```bash
./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
```php
'rest_Extensions_ApiDescription' => 'Комплексное управление внутренними номерами...'
```
Pattern: `rest_{ResourceName}_ApiDescription`
### 2. Operation Summaries & Descriptions
```php
'rest_ext_GetList' => 'Получить список внутренних номеров'
'rest_ext_GetListDesc' => 'Получить пагинированный список всех...'
```
Pattern: `rest_{abbr}_{Operation}[Desc]`
### 3. HTTP Responses
```php
'rest_response_200_get' => 'Запись успешно получена'
'rest_response_404_not_found' => 'Запись не найдена'
```
Pattern: `rest_response_{code}_{type}`
### 4. Parameters, Schemas, Security
```php
'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
```bash
# 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
```bash
# Check for drift
./manage_translations.sh validate
# Review unused keys with team
# Clean up if agreed
./manage_translations.sh sync --remove-unused
```
### Before Release
```bash
# 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
```bash
# 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
- **[README.md](README.md)** - Complete documentation
- **[QUICKSTART.md](QUICKSTART.md)** - Quick examples
- **[SUMMARY.md](SUMMARY.md)** - Project summary