-
-
Notifications
You must be signed in to change notification settings - Fork 12
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add solution to check consistency of translations #72
Comments
Flag any keys that are present in the JSON files but not used in the code |
I think we first need to check if such a tool does not already exist. Be aware that while all translated strings are stored in JSON files, they are used both in .vue and Jinja2 templates. They could theoretically soon be used in .py files. If it does not exist, then I would suggest to develop a small Python script doing the job. Be aware that we need both directions, i.e. flag any keys present in the JSON but not used in the code AND flag any keys used in the code but not present in at least This Python script should exit with non-zero exit code when problem(s) are detected, and we can add this script to invoke I will soon merge #69, so this will be easier to work on. |
@advait-zx do you confirm you will work on it, shall I assign you the issue? |
yeah but i will need help for this issue |
Isn't what I've described a sufficient start point to make progress and if needed prepare a PR? If not unfortunately I can't help more than that. |
Hi @benoit74, can I work on this issue? |
Hi @Prakhar-Shankar, sure. Note that at first, no code is needed, you need to search for a tool capable of fulfilling this issue requirements. |
Sure, I will first search for the tool, and will try to tell the approach. If the tool does not exist I will try to write a python script. I will try to provide descriptions before committing anything. |
Hi @benoit74, I found a tool called vue-i18n-extract. This tool can flag all the string that are unused or are missing. I ran the tool and here is the output - Also we can make a JSON file where the outputs can be stored. |
Seems promising! Is it possible to check all languages at once? The problem is that :
Note that we need to integrate this check to the CI, so we need to check all languages and we need a clean return code (different than 0 when there is a problem, so that it will fail the CI). |
Got it, the issue with this tool is, it can check only .vue files and not the python files. Therefore, we may have to use two different tools and later combine the result as you said. If nothing works out we may have to write a python script to check the .py files. Coming to your third point, this tool is capable of finding missing keys as well, I don't know why I didn't work, I will surely work on it and verify the process. Also I will keep in mind about the CI part. |
Hii @benoit74 , I have been extensively searching for similar tool which can be helpful with the .py files but, I think there is not any tool available at this moment. |
OK, then we will have to build our own logic in Python, probably based on regexp. Luckily in Python we do not have many pattern (we use either Given that we want to have an overview of both Python and Vue.JS usage, and Vue.JS usage is also limited to few patterns, I wonder if it doesn't make more sense to search for labels used only with our custom Python script for both languages, and avoid spending time integrating |
Yes, I think if we are building a python script, we can use it for both kind of files(if we face any issue then we already have a tool for .vue which can be used anytime). I will try my best to implement these. |
Hey @benoit74 , I have written the script. It check all the json files and also check all the .ts, .vue, .py and .html files. Also shows all the missing keys - There are more results but I have to paste many screenshots. |
Thank you A first feedback:
Note that you do not need to paste screenshots, you can simply copy-paste text? |
sure thanks a lot for guiding me. I will look into it. |
Hii @benoit74, I have been trying to write a script. But I am facing a problem.
It is already present in the json file. Can you suggest some solution for this kind of problem. |
The solution is probably to flatten the JSON file, since your regex pattern will build a list. You will hence have two lists: the list of keys found with regex, and the list of keys found in the JSON(s). Or even better, two sets. Then it is just a matter of making a substraction of the two sets in both direction to find keys which are missing in the translations and keys which are unused in the code. |
@benoit74 , I have written the script and this is what the result I am getting. Please take a look into it. Unused Keys: Missing Keys:
|
All the missing keys which are reported are wrong, these "values" are not used as translation keys in the codebase at all, your regex is probably catching too much. You should also intentionally add an unused key in a JSON file (both a top-level one and a nested one) and check that it pops up in your tool. And intentionally add a missing key both in Python codebase and in TS codebase and check that it pops up in your tool. |
Sure, I got it. I will try to intentionally add both type of keys. |
With #69, we have introduced i18n.
However, currently there is no tooling to ensure consistency:
en
for proper operation and inqqq
for proper TranslateWiki operation)The text was updated successfully, but these errors were encountered: