[strings] Switch to Weblate #10314
No reviewers
Labels
No labels
Accessibility
Accessibility
Address
Address
Android
Android
Android Auto
Android Auto
Android Automotive (AAOS)
Android Automotive (AAOS)
API
API
AppGallery
AppGallery
AppStore
AppStore
Battery and Performance
Battery and Performance
Blocker
Blocker
Bookmarks and Tracks
Bookmarks and Tracks
Borders
Borders
Bug
Bug
Build
Build
CarPlay
CarPlay
Classificator
Classificator
Community
Community
Core
Core
CrashReports
CrashReports
Cycling
Cycling
Desktop
Desktop
DevEx
DevEx
DevOps
DevOps
dev_sandbox
dev_sandbox
Directions
Directions
Documentation
Documentation
Downloader
Downloader
Drape
Drape
Driving
Driving
Duplicate
Duplicate
Editor
Editor
Elevation
Elevation
Enhancement
Enhancement
Epic
Epic
External Map Datasets
External Map Datasets
F-Droid
F-Droid
Fonts
Fonts
Frequently User Reported
Frequently User Reported
Fund
Fund
Generator
Generator
Good first issue
Good first issue
Google Play
Google Play
GPS
GPS
GSoC
GSoC
iCloud
iCloud
Icons
Icons
iOS
iOS
Legal
Legal
Linux Desktop
Linux Desktop
Linux packaging
Linux packaging
Linux Phone
Linux Phone
Mac OS
Mac OS
Map Data
Map Data
Metro
Metro
Navigation
Navigation
Need Feedback
Need Feedback
Night Mode
Night Mode
NLnet 2024-06-281
NLnet 2024-06-281
No Feature Parity
No Feature Parity
Opening Hours
Opening Hours
Outdoors
Outdoors
POI Info
POI Info
Privacy
Privacy
Public Transport
Public Transport
Raw Idea
Raw Idea
Refactoring
Refactoring
Regional
Regional
Regression
Regression
Releases
Releases
RoboTest
RoboTest
Route Planning
Route Planning
Routing
Routing
Ruler
Ruler
Search
Search
Security
Security
Styles
Styles
Tests
Tests
Track Recording
Track Recording
Translations
Translations
TTS
TTS
UI
UI
UX
UX
Walk Navigation
Walk Navigation
Watches
Watches
Web
Web
Wikipedia
Wikipedia
Windows
Windows
Won't fix
Won't fix
World Map
World Map
No milestone
No project
No assignees
4 participants
Due date
No due date set.
Dependencies
No dependencies set.
Reference: organicmaps/organicmaps-tmp#10314
Loading…
Add table
Reference in a new issue
No description provided.
Delete branch "rt-weblate"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
https://hosted.weblate.org/projects/organicmaps/
Weblate seems to be working fine. There is no longer a need to maintain a homegrown, non-standard translation toolchain.
Components supported:
Categories are not in Weblate yet, but they weren't supported by the previous toolkit too. This issue can be addressed later.
We need a lot more detail than just this. Someone should probably instruct a translation team member on how to contribute translations (just a few sentences) and also instruct a developer on how to add new strings to the app (or invalidate / request changes to existing strings!) in a way that works with their local C++/Android/Xcode/Git workflow as well as during the PR approval process. (Do they need to use Google Translate to pre-fill all the missing languages? Just edit the XML file for English? What about C++ strings that need to be copied to both iOS and Android locale files? Do we just edit the XML manually by hand? Where are these files all at? etc) What does quality control look like to ensure translators have time to update strings before release?
Developers no longer need to worry about translations. Just develop as usual in Android Studio and Xcode, adding English strings. Translators will handle the rest. No more pain!
Just in case, if you want to use machine translation, try DeepL first if your language is supported. Not only it often offers superior translation quality, but also the workflow is much better (e.g. it allows you to select alternative translations on a word-by-word basis, automatically rewords the rest of the sentence accordingly) and also it has an API allowing to use it in scripts even in the free tier.
I've added more details to TRANSLATION.md CC: @zyphlar
We will definitely try DeepL in Weblate as the next step. Currently, it is set up to automatically add translations using the translation memory, which helps propagate translations between components, such as from Android to iOS and vice versa.
I think it's looking much better and so would just suggest using this document as a basis for a message sent to all translators and also all developers before merging: so they know what to expect and how to change their workflows, and have a chance to comment before everything changes.
What's the best way of checking? (Git grep? Reviewing the other platform's files? Weblate?)
What about c++ devs who don't use Android Studio or Xcode, how should they ensure the same string is available on all platforms (even Linux?) and consistent and also that translation is finished/pushed before release?
I am not even sure that we have translations for the Linux/Desktop version... I don't see any .po files in the repo.
Probably just searching in the corresponding translation file from another platform. Let's clarify it.
More like, let's say I modify a core routing or place card routine to output a string from deep within C++ (like my work on TTS, though I know Linux doesn't have TTS the Linux-based routing/test suites do) which files do I modify?
What string file(s) does this function pull from if I have neither Android nor Xcode installed? https://github.com/organicmaps/organicmaps/blob/master/routing/turns_tts_text.cpp#L103
wrong url?
why the url is WIP?
Maybe searching in Weblate would be easier though?
iphone/plist.txt
?it wasn't touched in organicmaps/organicmaps#10313
is it expected or was forgotten?
@ -11,0 +10,4 @@
| --------------------------------------------------- | ---------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- |
| [Android][android_weblate] | UI strings | [android/app/src/main/res/values\*/strings.xml][android_git] ([en][android_git_en]) |
| [Android feature types][android_typestrings_weblate] | Map feature types | [android/app/src/main/res/values\*/type_strings.xml][android_git] ([en][android_type_strings_git_en]) |
| [iOS][ios_weblate] | UI strings | [iphone/Maps/LocalizedStrings/\*.lproj/Localizable.strings][ios_git] ([en][ios_git_en]) |
Need to add a "How to become a translator" / coordinator
@ -64,3 +57,1 @@
```
ruby tools/ruby/category_consistency/check_consistency.rb
```
When adding new strings, first check the base file of the component for existing ones. If no relevant strings are found, look for them on the corresponding platform (e.g., iOS when adding Android strings or vice versa). To maintain consistency across platforms, always reuse the existing string key from the other platform with the same English base string.
We should retain the docs for non-Weblate translation files.
how are we going to manage supported langs in gradle.properties?
manually?
and this file also
Fix this PR organicmaps/organicmaps#5665, resolves this case
Let's keep the list static for now and merge #5665 later to avoid unnecessary ripple effects.
Ok, this file is not even in Weblate.
https://hosted.weblate.org/projects/organicmaps/ios-plist/
Probably it doesn't need to be touched as no changes required.
Fixed
Please see organicmaps/organicmaps#10314
New documentation sounds simple and good! Just ping us, as soon as we can beta test it :)
https://hosted.weblate.org/projects/organicmaps/countries/ ?
I will add more detailed instructions.
Updated TRANSLATIONS.md. Deepl will be configured on Weblate.
Updated.
Qt version is not localized at all.
@ -64,3 +57,1 @@
```
ruby tools/ruby/category_consistency/check_consistency.rb
```
When adding new strings, first check the base file of the component for existing ones. If no relevant strings are found, look for them on the corresponding platform (e.g., iOS when adding Android strings or vice versa). To maintain consistency across platforms, always reuse the existing string key from the other platform with the same English base string.
Retained.
@ -11,0 +10,4 @@
| --------------------------------------------------- | ---------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- |
| [Android][android_weblate] | UI strings | [android/app/src/main/res/values\*/strings.xml][android_git] ([en][android_git_en]) |
| [Android feature types][android_typestrings_weblate] | Map feature types | [android/app/src/main/res/values\*/type_strings.xml][android_git] ([en][android_type_strings_git_en]) |
| [iOS][ios_weblate] | UI strings | [iphone/Maps/LocalizedStrings/\*.lproj/Localizable.strings][ios_git] ([en][ios_git_en]) |
I added basic instructions. Let's extend later.
Voice announcement strings for navigation directions (TTS)
instead of
Sound strings for navigation
and TTS instead of Sounds
Weblate Component
?
I'd avoid to call it "Categories". Its quite confusing.
Better call it "Search keywords".
I think this doc should be targeted mostly to translators.
And they don't need the most of this confusing technical info (git, PRs, etc.) especially upfront.
So it lacks a brief introduction to Weblate and how to start translating (just register? no approval / permissions required?) and a brief overview of components and dependency between Android and iOS strings.
Technical details for the devs could follow then.
? title missing
They are called categories, literary here in the code 🤷. I can update title if you think be less confusing.
Yeap I meant the title only.
The filename would stay of course.
OK
Updated.
Updated.
And what is TTS? :-)
Anyway, updated.
Fixed
Text To Speech :)
They're not 1:1 mapping of OSM tags/types, its better to avoid possible confusion