How to export and import .xcstrings
AppFrames integrates with Apple’s XCStrings localization format, allowing you to sync translations between your app development and marketing screenshot workflows. This ensures consistency between your app’s interface text and your App Store screenshots.
Understanding XCStrings
What are XCStrings?
XCStrings (.xcstrings) is Apple’s modern localization format used in Xcode projects:
- Structured format: JSON-based format for storing translations
- Multiple languages: Single file contains all language variants
- Developer-friendly: Integrates directly with Xcode and Swift projects
- Version control: Text-based format works well with Git
Why Use XCStrings with AppFrames?
- Consistency: Use the same translations in app and screenshots
- Efficiency: Avoid duplicate translation work
- Accuracy: Ensure marketing materials match actual app text
- Workflow integration: Seamless developer-to-marketing handoff
[Image placeholder: Diagram showing XCStrings flow from Xcode → AppFrames → App Store]
Importing XCStrings into AppFrames
Step 1: Export from Your Xcode Project
- Open your iOS/Mac app project in Xcode
- Select your .xcstrings file in Project Navigator
- Export the file (Right-click → Export)
- Save to accessible location on your Mac
Step 2: Import into AppFrames
- Open your AppFrames project
- Go to File → Import → XCStrings File
- Select your .xcstrings file from Xcode export
- Choose import options:
- Replace existing translations
- Add to existing translations
- Merge with current project
[Image placeholder: AppFrames import dialog showing XCStrings file selection]
Step 3: Map Text Content
AppFrames will attempt to automatically match:
- Exact text matches: Same text in app and screenshots
- Similar text matches: Close but not identical text
- Manual mapping: You assign which app text corresponds to which screenshot text
Import Results
After import, AppFrames shows:
- Successfully matched text entries
- New translations added count by language
- Unmapped entries requiring manual attention
- Conflicts where existing translations differ
Exporting XCStrings from AppFrames
Step 1: Prepare Export
- Complete your translations in AppFrames
- Add context notes for translators if needed
- Review all languages for completeness
Step 2: Export XCStrings File
- Go to File → Export → XCStrings File
- Choose export location on your Mac
- Select languages to include (or all)
- Configure export options:
- Include context notes
- Export only modified strings
- Include screenshot references
[Image placeholder: AppFrames export dialog with XCStrings options]
Step 3: Import to Xcode Project
- Open your Xcode project
- Drag the exported .xcstrings file into your project
- Choose import options in Xcode
- Build and test to verify translations work
Working with Shared Translation Workflows
Developer-to-Marketing Flow
Scenario: Developers have app translations, marketing needs them for screenshots
- Developer exports .xcstrings from Xcode project
- Marketing imports into AppFrames project
- AppFrames maps app text to screenshot text automatically
- Marketing creates screenshots using consistent translations
Marketing-to-Developer Flow
Scenario: Marketing creates additional translations for screenshots
- Marketing adds new languages or translations in AppFrames
- Export .xcstrings from AppFrames with additions
- Developer imports updated file into Xcode project
- Both use same translations for consistency
Bidirectional Sync Workflow
Scenario: Both teams contribute translations
- Establish master source: Usually Xcode project for app text
- Regular sync points: Weekly or before releases
- Merge workflow: Import updates, resolve conflicts
- Review process: Both teams verify translations
[Image placeholder: Workflow diagram showing bidirectional sync between Xcode and AppFrames]
Managing Translation Conflicts
Types of Conflicts
When importing, you might encounter:
- Different translations: Same source text, different target translations
- Missing context: App text lacks context that screenshots need
- Length mismatches: App text vs marketing text length differences
- Terminology differences: Technical vs marketing language
Resolving Conflicts
AppFrames provides conflict resolution interface:
- Side-by-side comparison: See existing vs imported translations
- Choose source: Keep AppFrames version or use imported version
- Merge option: Combine information from both sources
- Skip conflicts: Handle manually later
Best Practices for Conflict Resolution
- Keep app text for UI elements that appear in screenshots
- Keep marketing text for promotional language
- Add context to disambiguate similar strings
- Document decisions for future reference
Advanced XCStrings Features
Context and Comments
XCStrings supports rich metadata:
- Context strings: Additional info about where/how text is used
- Comments: Translator notes and instructions
- State information: Translation completion status
- Variation data: Platform-specific or context-specific variants
Pluralization Support
Handle plural forms correctly:
- Plural rules: Different languages have different plural rules
- Count-based strings: “1 photo” vs “5 photos”
- AppFrames mapping: Connect app pluralization to screenshot text
String Catalogs Integration
For newer Xcode projects using String Catalogs:
- Export from String Catalog to XCStrings format
- Import into AppFrames using standard workflow
- Maintain compatibility with both old and new Xcode formats
[Image placeholder: Xcode String Catalog interface showing export options]
Technical Implementation Details
File Format Compatibility
AppFrames supports:
- XCStrings version 1.0: Standard format from Xcode 15+
- Legacy formats: Can convert from older .strings files
- Export formats: Generates compatible XCStrings for import to Xcode
Character Encoding
- UTF-8 encoding: Handles all international characters correctly
- Special characters: Emoji, accented letters, non-Latin scripts
- Right-to-left: Proper support for Arabic, Hebrew, etc.
Performance Considerations
- Large files: XCStrings with hundreds of strings import efficiently
- Memory usage: Only active language loaded in memory
- Export speed: Fast generation of XCStrings files
Troubleshooting XCStrings Issues
Import Problems
File won’t import:
- Check file format is valid XCStrings (not .strings)
- Verify file permissions and accessibility
- Try smaller test file first
- Check for Unicode encoding issues
No translations appear:
- Verify text matching criteria
- Check that languages match between file and project
- Look for case sensitivity issues
- Review automatic mapping results
Export Problems
Generated file won’t work in Xcode:
- Check XCStrings format version compatibility
- Verify all required metadata is included
- Test with minimal export first
- Check for invalid characters in translations
Sync Issues
Translations don’t stay in sync:
- Establish clear workflow process
- Use version control for XCStrings files
- Regular sync schedule between teams
- Document who owns which translations
Integration with Translation Services
Professional Translation Workflow
- Export base XCStrings with source text and context
- Send to translation service that supports XCStrings format
- Receive completed translations in same format
- Import back to both AppFrames and Xcode
Machine Translation Integration
- Export for machine translation: Structured format works well with APIs
- Review and edit: Always review machine translations
- Re-import: Updated translations flow back to both tools
Translation Memory Systems
- Consistent terminology: XCStrings format helps maintain consistency
- Reuse translations: Previous work carries forward to new projects
- Quality assurance: Format supports review and approval workflows