I'm having troubles converting my string catalog to symbols because for partly translated languages there is no fallback to the reference language. Let me give you an example.
Example
Assume an app that supports two languages: English and Japanese. The app is very simple and has only two strings, using symbols in a String Catalog:
- Key: .helloWorld → “Hello World!”
- Key: .info → “Information”
Case 1: No Japanese translations
If I launch the app in Japanese and neither string is translated, English is used as a fallback. The UI shows:
- “Hello World!”
- “Information”
This is exactly what I would expect.
Case 2: Only one string translated
Now assume I translate only one string into Japanese:
- .helloWorld → “こんにちは世界”
When I launch the app in Japanese now:
- .helloWorld correctly shows “こんにちは世界”
- .info shows info, not “Information”
So instead of falling back to English, the key is displayed.
This issue does not pop up when I don't use symbols. Because then, my SwiftUI Text elements contain the English ideal text as a (kind of) key.
I assume for commercial apps all strings are always translated into all supported languages. But this is not the case for apps where translations happens through crowd translations. Check the following link. There you will see that only English (reference language) and German (my native language) are 100% translated. Others will follow over time.
https://poeditor.com/join/project/J2Qq2SUzYr
For now, I guess I'll have to avoid symbols. Or is there a better way to handle this?