 So hi, good morning everyone and we are going to start with a presentation regarding trans stats so Thank you for joining and welcome I'll start with this statement like many of the federal software packages seem ineffective to cater native language users because of a lot of reasons and one of the reason is translation coverage Whereas if you'll go and see translation statistics at platform, there is a different story I mean in platforms translation statistics for few of the languages are too good They are really very good, but they couldn't make make to the build system and finally two packages Why so there is a gap in between and we are working on a project to understand this gap and the project is trans stats and Project URL is trans stats dot oergy. So this is the development timeline Basically, there are four important development stages. The first was to develop a Service layer which can actually go and talk to various different services Maybe in two different translation platforms build systems different release schedules and various different services so we need to create a layer which can handle all those services and Actually produce some standard results second was jobs framework We have a concept of jobs in trans stats these jobs collect data and do analysis So we need some we needed some framework to handle all the jobs and Third was to deploy it in Fedora. So we had some development process for open shift compatibility and deployment and hence forth the final one which we did was to get over to pattern fly UI and That was the final development stage before 0 7 5 0 7 5 is the current release Now let's look at the software package localization cycle here We can see that we have an area of translation platforms to choose from first is down lies putter Transfix of a blade Zanata and there are so so much and Suppose you have internationalized application and you need to translate that so you need to push I mean extract and push everything to translation platform and then get that translated and push and merge back into the application And then you are building that that application and shipping it into various different channels In various different file formats. So here you can see that there are so many file formats There are so many translation platforms and final shipments are so many if you look closely Then we are creating three copies of translations at three different places First is your source repository second is translation platform and third is build system and here you can see some mismatch condition being occurring Like suppose you have pushed hundred strings to translation platform and added five more strings at source Repository and building with one zero five strings, but yet only hundred strings are getting translated So five strings will remain Untranslated because that they were not pushed to translation platform for translation so there are so many mismatch conditions and we concluded On these three points is everything translated packaged and built second is our all strings push to translation platform Latest to software repositories and third is how about release readiness now let's look at the use cases to reduce this gap we had and We come up with some use cases first is is everything translated packaged So in trans charts we have two different features first is package translation completeness and second is translation coverage So in package translation completeness we are pulling Translation statistics from these three places upstream platform and downstream and then we are generating diff To understand the gap on the basis of branch mapping which is created for each and every package I'll show what a branch mapping is and second is translation coverage, which is for insights So here you can see that package translation completeness how it works once you will go to translation I mean trans charts were portal that there you have one type packages when you will select the packages You'll land up to package list view from that package list. You can select one of the package Say gnom shell and then you can actually go to Genome shells detailed a view here You can see that we have translation statistics from upstrip from Damdlize for three different versions and from Koji build system and we are generating diff So in diff we are listing some of the languages In two different colors red and blue for the colors red This means that there are some strings translated in translation platform and we need to pull those strings and build the package and Those which are in blue that means that They couldn't make hundred percent in Koji build system. So this is very particular to Languages like for language maintenance or maybe I mean this is very much focused to package maintenance They can easily see like which language is not hundred percent or which language is out of sync Now let's look at translation coverage translation coverage is very interesting thing like here we can create rules and For creating those rules we can use this form There are two important things like in branch mapping. We are mapping build tag with all the releases like for Fedora 31 will be mapping it with F31 build tag and So you can actually use those build tag or you can override those build tags and second is Release it will be more clear with the demo. So let's Go to demo now Here, this is the coverage rule page You can create your own rule for creating your rule You need to log in into the system using your fast login and once you log in You can go and create a coverage rule here You can just give the name of a rule and you have to select a release from Fedora 31 or 30 Whatever then here you need to select tags So you can actually overwrite those branch mapping tags or go with them So I'm going with them. So it will take F31 and now we can select packages So we are selecting different packages like a bird evolution Nominational setup and python may and you can notice that a bird python may are being translated at Zanata Whereas a binom initial setup is being translated at damn nice. So this is very I mean Varied kind of thing now we are selecting some languages in which the coverage will be generated So we have selected four different languages and we are making this rule as a public to To be viewed for all so this is the new rule test We have created and in test you can see that this is just side-by-side diff of Translation platform and Bell system whatsoever we have in translation platform and what has been built and this Statistics is coming from latest build of that particular package for example for if you will consider Python main then In translation platform side statistics is coming from Zanata. Whereas in Bell system it is coming from Bell system and For Japanese in Zanata 23 strings has been translated whereas in build system only 20 strings Irving packets so three strings are missing So this is what mismatch condition I was talking about and you can easily detect that using this coverage rules Once you will create that Now let's go back to our slide and Look at the different question altogether Second was are all strings pushed to translation platform latest to software repositories? So we have a job to deduct string change and there are three important Thing we need to actually handle first is branch for example your repository has Federal 31 specific branch then you have to mention that but branch here and Second is you need to give the command to generate part file like there could be I mean There are some examples where package have their own command for part file generation So you need to provide that here and it is very rare, but some packages maintain different domain So you need to override that domain as well let's Go back and look at the demo for this So in transters you can just select jobs and select viral jobs there We have three templates do we have to go with track a string change template and There this is the YML. I was talking about you can just edit those lines whatsoever required and then you can select package name for example about and release name For example 31 so what actually it does it generates part file from the Repository source repository and it pulls part file from translation platform and then creates some diff So here job is being Running and we got some differences like some strings has been added in source Repository which were not pushed to translation platform. So we'll go to details page and there we can see This is details page for a string change diff that was input YML This is all output for each and every step you had in YML files and these are the strings which Which were which are actually added in source repository, but not push to translation platform So I feel go with full diff then you will have line-by-line diff of what strings has been added and what has not So I'll be searching for one string at line number one nine nine three So here you can see that these strings has been added which were not pushed to translation platform now. Let's move back to slide and How about release readiness so in trans stats now flow has been much improved and From territory view the first is territory view from territory view. We can select either language or releases We can come down to packages and from packages. We can go to jobs and coverage So I'll show this. I mean this is pretty interesting like how things are currently Is there So this is landing page of trans stats here you can see one map so this map is actually release readiness for federal 31 on entire map and We can select any of the territory here Though this map is only based on build packages statistics So this map is not built on translation platform statistics And once you will click on any of the territory for example, Hungary you can see Differences in percentage for translation platform and build system then you can navigate to languages page This is languages details page. You can see contact details of different language maintainers as well for different translation platforms and Here will be going in details of federal 31 So this is the per package view of any of the release where some translation is is remaining This is translation platform statistics and from here. We can go to any of the package say anaconda So this is the page for anaconda. It is pointing to Fedora as an atta and this is branch mapping I was talking about translation platform build system and to release So here we can see that for Dutch anaconda federal 31 has some difference and For Dutch language there were some there are some strings in translation platform Which needs to be pulled from there we can go to related jobs page and these are the jobs which run for Anaconda now, let's go to sync downstream job with which actually sync a package with build system and Go to details page. This is the analysis of Statistics we received for built which for this particular nvr built on this particular date This is why mal and this is I mean output of each and every step of that particular why mal So what it does it actually? Goes and see for latest build details download SRPM apply all the patch patches It actually reads and parses big file and then does everything and then finally Stract translation files and calculate the statistics So this was actually the total view from start to end of transters Now let's move back to slide and I'll explain like what is the trans stats support currently? So we are supporting for translation platforms Damla is transific zanata and the web lit in file formats. We are just supporting one PO part POMO Get text build system federal system and version control. We are supporting get So our next focus would be it in an frameworks or file formats. So we'll be expanding in that zone This is how trans starts work actually their jobs which All the statistics or all the translation resources from various different places and we have a huge amount of translation data Ways with us. We run analytics on them to generate Statistics meaningful data. So in layers, we have resources jobs Presentation layer interaction layer. So resources is basically inventory kind of thing where we need to manage each and everything and then run jobs on top of that and Several other things Interaction layer we have API's we have I think more than five and points as of now CLI notification and integrations. So I'll invite for a CLI demo and further continuation Just wanted to so in the meantime trans stats is available at trans station or for peddler project or talk So please go to that and have a look So I'm going to present about the CLI for this trans stats. So as you have seen that Whatever the Sunday fast talk is about the trans stats projects and its UI how it looks into the way but You know Basically this trans stats is used by Upstream developers package maintainers and translators. So these are the three main people Role who are going to use the trans stats, but They can be a need that they don't need to actually go into the web URL of the trans stats and they want to manage it from their Command line only so They can use the CLI thing and that's why we have developed a trans stats CLI in python So if you want to use it, you can just install it like a DNF install python three trans stats CLI and You will get the trans stats command on your system And this trans stats command can be helpful for you to Use these different different commands like coverage job package release and version so I made demo you so basically After installing that package you just need to run a command trans stats and here is how it looks I mean So there are the five commands and I can show you so basically If you want to check what version is available trans stats on your system So you can check it just say a trans stats version It will tell you what client version is installed on your system And if you want to check what server version is available then just pass our argument like happen happen server and It will communicate with the server and it will tell you that it's at 0.7.5 version. So that is one demo and So in this So we have released the 0.3.0 client version of the trans stats and In this release we have covered the enhancements that is done by Sandeep into the upstream project this enhancements related with the package command so Let's check with the package command So if you just save trans stats package happen happen help You will get to know that there are different different options that you can use you can override the server URL You can check whether a package exists or not So Let's check. Let's check if abrt1 is available on the server or not It's not so you will get a message like abrt package not available on the trans stats server Let's check with the abrt package name. Yes, it exists Then we can try some other options like just getting a package analysis so we have used the auth config package and So Likewise, there are different different options that you can use So even we can use a health command health option So here If you just say package it shows you that for which branch it's a Kojif F30 branch These are the languages and on the right side you will get the completion status. Okay? then If you want to check with the health health will give you the difference so difference like What is the difference between the translation system and what is this difference between the build system Koji build system? There are other commands Like Job command is there So you can even submit a job from your command line to the trans stats server So you can check I mean these are the different different options you can use you can sync the upstream source code with the translation system Downstream and you can even check for a string change. Okay so suppose you want to Run the job of a type sync upstream anaconda For Fedora 31 so It will take some time to generate your end. So here you can see that job Has been created Log and you will get the job ID. Okay. Now you can use the log option To check whether that job Log what it shows you can check that a job type is sync upstream. Okay? Then it's for the anaconda and We have used the same job ID So this is I have a recorded demo So I'm just running that So you can see that the it has blown the repository from the anaconda and It had generated a translation stats So yeah, I mean There are different different commands and options are available in the trans stats CLI that you can utilize So maybe I think I can wrap up for the time any questions I See if you are a package maintainer and if you are knowing that that is an error Then you can go ahead and report that for your project. It might be manual Actually, it is very hybrid kind of situation We have some upstream manage their push and pull thing automatically using their tools and everything Actually GitHub also has a plug-in whereby you can push and pull right so it is very hybrid in nature where push and pull is up to the Decision of the upstream whatsoever. They'll follow So either you need to automate that or you need to use CLI and write a wrapper on that So if you are using Zanata use Zanata CLI write a wrapper on Zanata CLI to push and pull And if you need any help then I can help you It is very platform specific kind of see Internals of Zanata is like they store everything in database and they generate B of us on play on the play so Actually, you can go in you should go and edit in Zanata and then pull back This is the correct method But if you are in the end situation where you have to build it today and deliver then you can go for it Edit kind of like manually it and then push But you should update that in Zanata too That has been updated Exactly, exactly. That's where transtats came in which Any further question? As of now, no as of now, no Because maintainer activity logs are not being pulled from translation platforms Only statistics is being currently pulled. So we have that on our roadmap, but I mean It is not in very near future Exactly Right, exactly. So you have seen the languages detail page where we have contact information So we have plans to enhance that page and get something very catchy So this would be something which would be very catchy if we have some logs running and some feeds would be occurring So yeah that we can do. Thank you for the suggestion. Yeah We have any comments It is it is there I think on the package details on the package list. Yeah So just in case you have some suggestions bugs or something create an issue on github That is github slash transtats slash transtats is server repo. So create issue there and get in touch You can turn to last page So we are available at fedora itl and transtats channel And docs are at docs.transstats github slash transtats is the repository you are in and one important thing if you have some feedback, please drop that in feedback.transstats.xyz Thank you