EdgeTX / buddy

The next generation tool for EdgeTX. A cross platform app, with browser compatibility.
https://buddy.edgetx.org
MIT License
37 stars 19 forks source link

Allow firmware language selection #25

Closed mha1 closed 11 months ago

mha1 commented 2 years ago

It would be nice to allow language selection for the firmware .bin (as for SD card content). The 2.7 release page offers multitlingual builds of 2.7 firmware.

Example: for TX16s french firmware version you'd use the link "Multilingual builds" from the 2.7 release page (https://github.com/EdgeTX/edgetx/releases/tag/v2.7.0), download tx16s-zip and extract tx16s-FR-f79978b6e.bin as the firmware to be flashed.

... image ...

freshollie commented 2 years ago

Hey! This would probably be a large amount of work. We are planning on supporting multiple languages properly when the build system is available.

For now, you can use the local file option to flash the .bin image

mha1 commented 2 years ago

I know the local file option can be used. But this defeats the object of providing a simple to use frontend entirely.

freshollie commented 2 years ago

Absolutely true, but atm the binary builds you refer to are stored in some other platform, and it may require a lot of work to access those which will be undone when we have the build system in place. I'll look into this though

mha1 commented 2 years ago

Hi Oliver,

Thanks for looking into this. At least for 2.7.0 and 2.6.0 doing it by hand is not so difficult. Peter provides multilingual builds (including EN) for the official releases. Supporting official releases with language selection would be an acceptable restriction and I am sure Peter would agree to provide multilingual builds for 2.8 in exactly the same way as long as the new build systems is not up and running.

The multilingual builds are bundled into a single .zip for a given radio target. So the logic for buddy could be:

config:

pseudo code may look like this:

freshollie commented 2 years ago

I understand the process. I think where this may be complicated is portabledev.xyz doesn't seem to provide any API for accessing these files via another webapp, meaning I'd have to hard code the available languages for each release (Which is possible, but not a long term solution).

It would be much better if these builds were released alongside the github releases. (A zip of zips would work). However, if this is not possible hardcoding the available downloads will be the best option.

mha1 commented 2 years ago

Sorry for the delayed reply. I agree that having a hard coded part of the download address is not the most elegant solution, but the rest can be dynamically constructed by using the radioID plus adding "files/?p=/\<radioID>.zip" to the hard coded release address.

I agree there could (and to support the non-English EdgeTX user community should) be better ways to do this. What seems to be necessary is a discussion between you and @pfeerick on how to do this efficiently for both sides.

Maybe a feature request to buddy to make the multi-lingual topic whole: With a multilingual firmware there should also be a multilingual companion/firmware simulator. Please check out this discord message and a few of the following messages too: https://discord.com/channels/839849772864503828/839856795781431317/970393578306142219

I think buddy is a great idea and tool but you got yourself into this by allowing to select different languages for SD card voices packages raises expectations :-).

I am not much of a web programmer but let me know if I can be of any help.

pfeerick commented 2 years ago

Thanks for tagging me, I was unaware of this discussion.

If you want a repo hosting the files, I can do that as well, as I honestly don't know how long the build system is going to be as there haven't been any recent feedback on that.

Just give me an idea as to what structure works best... dump them in a repo, with folder for each version. Actual github release for each version (as that seems to cache better?)? Zip file as it is? Different structure? It's easy enough to redo the packaging part of the build script I run locally do do those builds, and probably even automate it more/better so a separate github repo can host the multi-language builds.

While doing this, there is also the potential of doing the multi-language sim libraries, but for now making it a manual step of installing it, as I really don't want to play setting up the installer and everything for that also. But maybe I'll change my mind once I start looking at that side of things... As I can see merit for end user for a installer for all the language sims that you just pick the language and it overwrites the simulator library with the preferred language one. I'm just currently neck deep in the voice pack stuff so in denial about anything else atm due to the mess that is. :grin:

freshollie commented 2 years ago

@pfeerick is there a way these languages packs could just be included as part of the releases? The GitHub releases API is great for fetching these assets. Even if they were in a separate repo this would be better than fetching from portable

pfeerick commented 2 years ago

I prefer a separate repo if it's not too much trouble... primarily as there are enough assets in the releases already that have confused people, and adding 22 more assets (that's the zip files as they are, one for each transmitter, or if repackaged by language, that would be 12)... I'm thinking if it's done on a seperate repo, there's no need for a zip file... can just shove all the bins in 'as is' in a tagged release?

Any sort of json index for them? Preferred structure? And as a naughty aside, since I also do the english build (for some reason I didn't omit it, even though I should have as that is 22 builds less to do! lol) if I do this properly and run it side-by-side with main releases, you could pull the EN builds from there also. 😇

freshollie commented 2 years ago

How it is atm will work, zip for each target with a bin with each language

raphaelcoeffic commented 11 months ago

@mha1 @pfeerick since #63 has been merged, this is now doable. Just use the "Cloudbuild" tab, and specify your language in the "Flags".

mha1 commented 11 months ago

awesome dude