Hello @fespinoza,
I understand the confusion, and let me clarify exactly where things stand.
The GitHub integration works with .xcstrings files for upload and parsing, but it doesn’t support the exact workflow you’re looking for. The <lang> parameter requirement in translation_files_expression is by design for file formats that generate separate files per language. If used with .xcstrings, it would generate one file per language, but all of them would contain content from all target languages, which isn’t what you’re looking for or what the format was designed for.
Here’s the core issue: Transifex’s platform architecture, including repository integrations, the translation_files_expression logic, and how we handle file syncing, was built around the industry-standard pattern of separate files per language. .xcstrings uses a fundamentally different approach: one file containing all languages. This architectural difference is why you’re running into these limitations, and it’s not something a quick configuration change can resolve.
By “doesn’t fully support,” I mean: we can parse and work with the file format itself, but our platform’s sync architecture isn’t designed for single-file-contains-all-languages formats. That’s the gap you’re experiencing.
I completely understand your frustration. You’ve been managing a workaround since September 2024, and .xcstrings has been around since June 2023. Reworking platform architecture to accommodate a format that works fundamentally differently takes significant engineering time and resources. It’s not just about adding support for a new file format in this case, since it requires rethinking how multiple parts of the system handle source files, translations, syncing, and updates. The single-file-contains-all-languages model represents a different paradigm from the separate-files-per-language pattern (like .strings, .json, .xml, .xliff) that most localization platforms and workflows have been built around for years.
This is on our radar as a priority, and your detailed input here directly contributes to how we approach the solution. We genuinely appreciate your patience as we work through the technical challenges involved.
Your manual workflow remains the most reliable path forward, though I know it’s not ideal. You’ll be notified when there are any updates on our progress.
If you’re open to a different approach, our iOS Native SDK is a more integrated solution and can push source content via CLI without dealing with files. However, it’s designed for over-the-air (OTA) translations where your app fetches translations at runtime, rather than bundling them at build time. This requires integrating our SDK into your app and adopting a different localization strategy. It’s not a replacement for the file-based GitHub sync workflow you’re looking for, but it could be worth exploring if dynamic translation updates would fit your use case, and the file-based approach simply has too many limitations for your needs.
Your feedback is noted, and your case is linked to the improvement request we’ve shared with our Product team. If there’s a specific piece of feedback you haven’t shared yet, or if you have questions about any of the options I mentioned, let me know, and I’d be happy to discuss it with our team.