Github service hook for community translation webservice - android

I am taking care of an open source project: mixare. It's an augmented reality browser released under the GPLv3.
The source code of the project is on github and I would like to hook the localization part to some web-service a-la pootle. If necessary I can install my own instance of a translation service on our server, but also an hosted solution would be fine. So I would like to know:
Is there a preferred translation web service that syncs using github's service hooks? Any best practice to share?
Thanks a lot!

Git integration is one of major reasons why I started to write Weblate. It also supports remote trigger for git pull using URL, so it nicely integrates with Github (you just need to put the URL there).
PS: I've just noticed that Android string resources are not supported by backend I use for loading translations (translate toolkit), so it probably won't work for you...

While I appreciate your wish for git support, shouldn't you primarily be looking for a solution that will give you many and good translations?
To get many translations I'd recommend Translatewiki, unfortunately their manual setup takes some time though.
Apart from Translatewiki, transifex seems to be one of the better and not least bigger (counting translators) services. They've made their own client that take care of importing and merging translations. For gettext translations it can also pull in updated template (pot) files automatically from github, I don't know if that's also possible with Android style translations.
Both Translatewiki and Transifex are 100% free and open source software.

I've been through the same "nothing good out there" phase, so I've started writing my own, as a symfony2 bundle. Maybe it's of use to you: https://github.com/tvogt/translator-bundle
Why? Because I couldn't get weblate or pootle to work, you probably have to be familiar with all the pip and python and ve and whatever stuff. Translatewiki is only for free software. Transifix is commercial.

In 2020, with GitHub Actions (hooks executed on GitHub side), you now have GitLocalize
GitLocalize is a continuous localization tool built for communities and teams that want to simplify their workflow when translating their content.
GitLocalize automatically keeps translations up to date by syncing with your repository.
That won't apply to the OP's project github.com/mixare/mixare, which was moved to GitLab in 2018.
But it can help other projects with a similar need.

You can have a look at Amanuens - it's able to sync with any Git repository, including Github. It's totally free for open-source projects (contact support for details). Disclaimer: it is my company's service.

Related

How do developers who customise AOSP keep their changes under version control?

Fetching the AOSP source, is 134GB.
A checkout of a particular version of Android is likely to be many GBs.
How do developers who customise AOSP keep their changes under (their own) version control? (Given that checking-in a snapshot of an Android version's source will be many GBs.)
This is my flow, maybe not the best....
I don't like dealing with repo tool and multiple remotes, so I get rid of all the .git subfolders and create just one tremendously huge repository. This has the bad effect of essentially removing all the "history". So we have a server with the original sync for git blame if we need to.
First check-out for a developer will be time-consuming either way. To make it faster, we have a local bare git repo cloned. So people run git clone on the local server, and the switch the origin to the actual remote.
After all is set-up, the day-to-day dealings are not time consuming. Commits and pushes are quite fast ( maybe 5-10s ) even for a large repo like this. Thanks GIT!
Sorry for necro-posting, but maybe somebody find it useful.
I just use repo utility from Google, e.g. repo start.
Only first repo sync procedure take a long time,
even subsequent checkouts do not like so time-consuming.
If you check some popular ROM, e.g. GrapheneOS, you find they repo too.

Working on a project at the same time on separate computers

I'm building an app with android studio with another developer. Is there any way in which I can make it so that both my partner and I can work on the project at the same time on different computers (both Windows computers)? I know there is a similar question, but I am looking for a more detailed explanation on how to do it.
My suggestion: Use Version Control preferably git.
This will help both of you to develop Apps without any problems of copying & pasting and manually making changes in all files one-by-one.
Note: Want to use git but do not want to open source your code (since Github allows creating private repository but with some Payment), then use Bitbucket, you can create private repositories for FREE!
EDIT: Github now provides unlimited private repositories.
Hope it helps!
Take a look at git. I will help you and your partner to work on the same project on a different computer (Windows, Mac, Linux...).
https://www.atlassian.com/git/tutorials/comparing-workflows
As others have indicated, you should use a version control system like git for this. This will give you the following features (among others):
The ability to share code between people
Essentially keeps a backup of your code on an external server
Keeps a history of revisions to files (so you can "back out" changes if you need) as well as differences between your local file and the version on the server
Allows you to merge changes between you and people working with you
How you do this will depend on which version control system you use, but some version control providers will allow you to also set up what's known as "Continuous Integration" - basically, if you or your partner check code in, it'll immediately start a build. If this is available to you, I strongly recommend using it. The advantage of that is that it'll give you quick feedback if you did something that'll prevent it from building for the other person (e.g. if you forgot to check in a file or something). This'll prevent a lot of frustration and wasted time. (This happens a lot more often than you'd think; you don't want the other person to have to spend half an hour trying to get the app to build again when they download your code only to find out that you forgot to check in a file).
I also strongly recommend integrating your stuff with each other as often as possible as well as practicing regular "re-baselines" (i.e. downloading each others' stuff and merging it with what you have locally). The longer you wait to integrate your stuff with each other the more complicated it'll become, and waiting too long greatly increases the risk of introducing bugs when merging or forcing unnecessary rework.

Howto integrate static code analysis (SonarCube) into ship.io for mobile projects?

We have a setup where we want to use https://ship.io/ as our cloud-based continuous-integration server.
However we also want to have some kind of static code analysis (preferably SonarCube but that is debatable), which isn't supported officially by ship.io.
The Projects are classic mobile Projects (Android and iOS).
I have seen some posts of people mentioning that they managed to setup this kind of configuration. SonarCube just has released a gradle plugin http://www.sonarsource.com/2015/06/15/sonarqube-gradle-1-0-released/ so the Android part should be doable.
However at the moment i have no idea what would be the best way do do this for the iOS part of the project.
We already contacted the ship.io team on this issue but did not recieve a response yet.
Any suggestions/insights on this?
My name is Tim Rosenblatt and I'm one of the senior engineers here at Ship.io. I'm not sure why you didn't get a reply from our support email, and I'm glad you posted about this here.
As Viktor mentioned, we definitely support custom scripts. You absolutely can run whatever you like during your build process with this type of step.
I've got a few links that should be helpful for you in getting SonarCube added to your Ship job, but you can definitely get in touch with us if anything isn't clear enough for you. You can use the in-app support icon at the bottom right of your dashboard, or just email me personally -- tim at ship dot io
http://support.ship.io/environment/install-software
http://support.ship.io/environment/custom-shell-scripts
Thanks!
You should be able to write a script (bash, ruby, ...) which runs your static code analysis and then call that script on your own Mac or on any CI which supports running custom scripts. AFAIK ship.io does support this, our service (https://bitrise.io/ - CTO here) certainly does.

Private ways of sharing + synchronizing Dev (Web + Android) project?

I am currently part of 5 person dev team but our members are in different countries. Until now all the dev projects I have worked on were in the university with local teams and we would just share the project over Google Drive and work on it that way. This has worked for us so far but now for different reasons I would like to try to things differently with this new project.
I have a 4 year old computer lying around which I would like to use as a server and to store the project centrally on this server with some sort of VCS solution as well. I want to use this computer as I would like to stay away from all the public cloud based solutions out there.
I would appreciate all suggestions on how I can use that computer and configure it in a way that would best suit our needs. Thanks
You should not be using systems like Google Drive or Dropbox to synchronise code files with your team mates. These systems do nothing to prevent teammates from overriding each-others code (if they happen to work on the same file), and provide very weak tracking methods.
There are many other systems out there which can be used for that. My favourite is Github. You can setup a private repository there, and share it with whoever you want. You can also make some of your repos public. I would recommend you do this where you can, since it allows people anywhere to use your code, and even offer improvements. In addition, if you consider yourself a professional programmer, a rich public Github account can make an impressive portfolio for potential employers or investors.
Using a system like Github allows you to create branches off your main code so multiple people can easily work on the same code files, and provides advanced tools to track what work was done on which files, when and by whom.
In addition, your repos in Github are hosted by Github, removing the need to rely on your own server which is generally a bad idea - what would happen if that specific machine would crash? All your work would be lost.
I would recommend reading up more on the matter:
Github Guide
Git-flows
There are also several clients applications which work with Github. My favourite client is Source Tree, but there are others out there too.

Suggest for working together with a shared project

i am working in an app for my self, nothing big,nothing for customer.i am working with 2 friends and we d like to know the best way to share the project in order to work in the meantime. We are using dropbox,but we are not sure is the best way because some times it gets errors.
we putted all of the file system in dropbox. Then in local everyone imported the file from dropbox so we can have changes in real time. I mean i work in an activity while my friend is setting the layout ecc. The problem is that sometimes some files are missing or not sync properly.
GIT (github.com,bitbucket.org) for version controlling and code management its the best
trello if you want to discuss on some bug issue , feature etc... its free too...
Redmine is a free and open source, web-based project management and issue tracking tool. It handles multiple projects and subprojects
Azendoo some use Evernote/Google Drive/Dropbox , but I have teammates who prefer other platforms. Azendoo works as a central hub and lets everyone use the storage system they have support for email for similar concept
Podio on the other hand also adds support or customer relationship managament (CRM)
WunderList in general a to do list doing stuff collaboratively
As dragon born said, Git is a must-use !
Dropbox, is a quite good software for image / document sharing but not for code.
SugarSync is good too.
For project management, there are a lot of software such as WunderList, Trello, Azendoo, Redmine, Podio and much more. So try some and see which one you like.
Version control
What you are looking for is version control. You might wonder why you need version control. Version control stores the code at a central place for all in your team to access it. This allows you to make sure that everyone in the group is using the latest version of the code.
Version control also allows you to store changes to file. Let say you and your friend change the same file at the same time and then you both upload it to a server like dropbox that you have tag. What happens is that the last person how uploaded will overwrite the code of the first person so that persons code will be lost. Version control handles this by keeping track of the changes and if two people change the same file it will try to resolve this by merge both changes in the file. This can not always be done automatically so most version controls will ask the last party at this point how you want the changes to be merge, but no code is just lost.
Version control creates a snapshot for every committed change so you can always go back to an earlier version if something goes wrong this is useful if some party merges a file incorrectly, or you want to try something you are not sure will work.
What version controls are there?
There are many different version controls to use.
git
svn
Mercurial
How to create a version control project.
As you may have notice by now all of this software require a server of some sort. You can either host it on a server you own or you can use a free service. There are a few to choose from.
github
google code
This are just a few example of the most popular, there are a lot more option out there if you look. Read up on them and choose the one that fits you the best.
Use git for code management and easy to share.

Categories

Resources