-
Notifications
You must be signed in to change notification settings - Fork 5
Description
This issue serves as a draft proposal to the "poglang" translation framework. A conclusion of the discussion of poglang will be migrated to its own repo when it gets created.
What is this about?
poglang is a translation framework powered by Poggit. Why Poggit? Because it consists of several components that use Poggit's service.
The flow
- The developer creates a base language file and enables poglang in .poggit.yml. The changes are received by Poggit through a GitHub commit.
- Translating
- An unofficial translator visits Poggit's translation page and edits the translations online. ("Proposed")
- Other unofficial translators/reviewers visit Poggit's translation page and vote to approve it. ("Voted")
- Official translators/reviewers (the developer, or people appointed by the developer) approve the translations. ("Approved")
- Each time Poggit-CI builds the project, the latest translation data are injected into resources/poglang. Three versions (Proposed, Voted, Approved) will be injected in respective subdirectories.
- When the plugin is executed, it tries to update the language files from Poggit's API.
Crowdsourced Translation Online
Few plugin developers know many languages from multiple continents. Very few plugin developers (virtually none) would hire a translation team for their plugin. Automatic translation tools like Google Translate are unreliable and almost unreadable. The only translation solution that plugin developers are left with is crowdsourcing β let the international fans of the plugin do the translation work.
Translators can visit a page like /tr/{OwnerName}/{RepoName}/{ProjectName} to propose translations, where others will see it and vote to go through a vote-approve procedure similar to the flow in Poggit Release, except there isn't a "Checked" stage.
Why not Crowdin?
Crowdin is cool, but it isn't easy or affordable to setup for everyone. Just as always, Poggit aims to turn the difficult and annoying things in plugin development simple by integrating them in Poggit, and this time it aims for easy translations.
When will this be available?
We want poglang to be released as its best state without incompatible updates, so this will be a slow progress.
Things requesting for comment
Base language file
- Data declared
- Description
- Value in English
- Arguments
- Support conditionals
- Constants
- Used for systematic coloring
- Maybe some common terms too
- Versioning each translation (in case the desired value is changed)
- Inheritance, e.g. Chinese Simplified inherits Chinese Traditional
- File Format
- JSON
- Might not look nice with attributes like description etc.
- XML
- Closing tags are annoying
- Custom format
- How?
- JSON
- Argument replacing
- How should be the format of the "default translation" to escape translations, do formatting, etc.?
Customizable format
- A possibility is to allow users to edit the language files, so the format downloaded from Poggit has to be editor-friendly.
Plugin API
- Is it possible to allow auto-completion in IDEs?
- What about making a script that autogenerates a constant enum class from the base language file?
- Any better method than the old
get("k.e.y")syntax?- Make it possible to internally pass the desired translation as key without resolving the actual value.