#Help Translate Modrinth!
1 messages · Page 3 of 1
Idk if Modrinth is on Crowdin's OS-project plan or paid, but from own experience and what I understand can you not add/change the TM in open source project plans.
It's on by default and set to what crowdin provides.
Afaik modrinth is not on the open source plan tho, cause of Modrinth hosting. I thought TM's were something completely seperate from Crowdins pricing since you bring your own API keys
At least thats how it works for my account
No idea.
I use Crowdin for like one project and it's on OS so...
(And I plan to move stuff anyway)
Ngl I would have put my projects on weblate if the ui wasnt so unintuative
Since from a feature standpoint its pretty solid
Bring your own key
We won't be providing that
Or just have two tabs open and use DeepL free
Thats how I thought it worked, sadly that isnt possible
It seems the word for gift card is being lowercased by the site, which is odd to do as not every language has the world lowercased...
Should perhaps be fixed.
If it's "Search + noun.toLower()" probably also breaks languages in which the verb has to agree with the noun. Or if the verb has to come after the object
(i.e. verb changes based on noun)
i beg your pardon
Lmao
ICU goes brrrr
Just a question, but why does the website, on its first visit, start out on the user's language then revert to English on load?
Are you ready...
just doing it for fun at this point lmao
do you really need itemType/contentType in these components? i think you can use "project" without any meaning loss
no fun!! lol - will change it to project 😭
i do think some of these will get out of hand if we add more project types
How often are proofreader applications read?
Problem is we need to build a util for this, gonna do it later in the week
speaking of which, miroma is having some difficulties catching up on the new lines and approving the strings - I kinda wanted to help out, but idk how much it would take to be a proofreader as well
Translation suggestion: I think we should have English UK and AU as they are very similar to English US but are different enough to be included maybe not AU but definitely English UK
That's why they are not included: they are very similar to English US and for now only languages that are different are included to reduce costs
So english traditional (uk) and english simplified (us)? :^)
Well.... de_ch is similar to de minus some grammar changes, yet it's included.
it's a candidate for being removed though
Thats fair but if it ever changes so dialects of languages are added then i think it should be included
Maybe once the whole website has been translated and all the strings are set
Currently a lot of strings are still missing
We're actually at 40% coverage now, it's getting there! 🙏
Compared to 17% at the start of the year
omg...
what's the primary roadblock to getting most parts covered?
Out of curiosity
Not a roadblock persay but we dont have time to go through everything all at once, we're just chipping away as we upgrade various parts of the frontend
It's also quite invasive if we did it all at once, merge conflicts would be ridiculous/slow down in-flight projects - but yeah we could just do it rn and be done with it, it's just not a great idea
would have the same situ when we did the eslint/prettier changes lol
200k diff
The next day: 200k new lines to translate on crowdin
apparently this string isn't on crowdin?
We're about to prune a lot of broken translations (ICU broken) - we're also now actively deleting old translations if the source English string changes significantly
All the i18n fixes in the GH mega thread should be going out soon though
https://crowdin.com/editor/modrinth-platform/12/en-it?view=comfortable#7507
well there are still some ICUs that could be improved...
But I left a comment for who needs to differenciate between the items
there are a lot of strings with {type},
can they all cointain the same things or are they all different?
@ebon sun I want to request the removal of de_ch and my part as a proofreader for it
I simply can't find any motivation anymore in making the translations.
@dark parcel Can you do this when you have the time? Remove swiss german
I dont see the point in having it anyways honestly
me and miroma were discussing if i should request to be a proofreader too
#announcements message
Looks like Filtered by is not a string on crowdin
I would like to add a Slovenian translation (ping me if reply)
could be a replacement for de_zh
user.profile.badge.alpha.about.1 and user.profile.badge.hosting-alpha.about.1 are missing the ending period
Can you put it into the megathread gh issue?
Same for this 👍
it isn't truly a i18n issue... it's just a mistake in the source string
placing both there
I submitted my proofreader request
Hello (sorry for the reply, I couldn't mention you)
I would like to request the addition of the Persian (Farsi) language to the Modrinth Crowdin project.
There is an active community of Persian-speaking users who would benefit greatly from having the platform available in our language. I am ready to contribute to the translation process as soon as it is added.
Thank you!
currently, due to costs, adding languages is limited to a handful of languages.
the whole platform isn't 100% translated either, so more strings have to come (and that may imply more language cutting due to costs)
if anything, i would recommend to wait for the platform to reach 100% translation first
oh alright, that makes total sense. translation costs can be a pain. I'll wait until you guys hit that 100% mark for the current ones. thanks!
-# why does this sound like an ai generated response (before they edited the message)
Read the message from Laxan3000 above ↑
I know an AI generated response when I see one, yours does not sound close to it, don't worry
I see what u mean
No
This one
.
Crowdin workflow on github seems to be failing currently
@ebon sun
where are you seeing that?
because crowdin broke for the Fabric Docs yesterday, with a configuration similar to Modrinth's
oh huh
i reran and it worked
i thought the rerun failed
it said
❌ Error from server: <Code: <empty_code>, Message: Unexpected character ('<' (code 60)): expected a valid value (JSON String, Number, Array, Object or token 'null', 'true' or 'false')
at [Source: REDACTED (`StreamReadFeature.INCLUDE_SOURCE_IN_LOCATION` disabled); line: 1, column: 1]>
same
I love servers that randomly return xml
dies
Light work no reaction
Apart from all the duplication the strings are pretty translation friendly, just gotta make sure that the server event specific strings use the correct form
we be shipping like crazy
hmmm
@jolly kayak I have actually been putting off setting i18n ally up lol, ty
will rev tommorow 🙂
Lol what a coincidence
Nice
Yea also just discovered it by accident
it is semi annoying it's owned by lokalise though
they aren't the best company out there in terms of open source stuff/lock in
its honestly just crowdin with a faster UI and more expensive
and a massive push towards paying contracts out for translations
they r pushing AI massively now as well i think lol
as usual
It really sucks that there isnt some open source crowdin clone, weblate is okay for what it is but I cant get used to the ui
And its slow
it is something i have wanted to do for years
loqui was gonna be that
but i got a job here instead 😜
Yea i discovered that by accident lol
Tried deploying it on my own machine
Btw did you get the go-to-definition and usage report working? I thought it was impossible with the current object-based setup
there's POEditor but it has less features
for all projs
It isnt open source tho right?
https://github.com/POEditor
they do have a github, altough the platform doesn't appear to be there
POEditor is free for open source projects tho
-# altough modrinth wouldn't fit in the criteria because Modrinth Servers exists
Yea
@ebon sun 👀
i wouldn't recommending running it
it has quite a few pretty nasty security vulns with react
Yea just testing it locally by mocking some data
someone actually hijacked my vps when we had a staging version of it running lol
the security thing wasn't a thing we introduced but part of next.js afaik
I somehow have never actively worked on a next project before
Started with nuxt and vue and stayed there
more expensive than crowdin is impressive O_O
funny, modrinth is also keeping me from building one. when i got laid off back in 2024 it was the first project I started working on was to make better translation software
but didn't get super far bc modrinth took too much of my time still
Out of curiosity, roughly where on their pricing ladder is modrinth? Are you forced to use Team+ / Business?
currently on Pro but it looks like we're about out of strings
and that's already like $140/month it looks like
That would certainly be a jump
looks like we can do one more jump on the Pro plan
Isnt it the same price tho lol?
Wait no, team is way more expensive for the same amount
1.06M vs 100k
just such a ridiculous amount of money to spend on fairly shitty software
Really sucks that weblate isnt really a drop in replacement
weblate is horrible
Yea
would never use it again tbh
Especially their legacy ui
Havent used crowdin for that long but afaik it has always stayed the same even tho the website looks modern
crowdin uses two uis but for some reason their most comfortable one is in the enterprise plan or something
there it lets proofreader vote for strings as if they were regular users, afaik regular crowdin doesn't
Pay to win lol
idk how much it costs the enterprise thing
Yea, I cant vote which sucks
For example when some new user suggests a bad / broken translation, I cant simply bump the old translation up
you approve it
Yea thats why I usually do but sometimes this makes it so im approving my own translation with zero votes which looks weird
German is not that active
time to pay for the enterprise version of crowdin
Better start raising those modrinth plus prices xD
there you can just decide as tho which role to log in
for some reason if you log as proofreader you can't translate new lines, there, tho
you gotta go on crowdsource first
Seems like the enterprise stuff was built on top of everything purely for profit
Instead of creating a single, great ui
i mean... yeah that's how it works
Just asking, what project youre on can afford that plan? Or is it just some company?
you just have an extra workflow tab
it's hacks.guide
idk how much they pay for it but it's just for two subdomains apparently, the others they use regular crowdin
Interesting
uhh... it costs a bunch @jolly kayak
I mean to be fair, for big corporations thats nothing, its more annoying for companies that arent purely profit oriented like modrinth
I know that tools like Weblate have a much more spartan UI and might feel dauting to use at first, but is Crowdin's comfort really worth that inflated price tag? Especially for a non-profit-oriented project like this one, saving that money seems worth the friction of getting used to a rougher UI, or at least looking into other self-hosted alternatives
for the crazy amount of strings modrinth has, i'd say crowdin is really comfortable...
especially for the "translation memory" and "terms" features
some platforms use google sheets instead, which yeah it's free but it's quite uncomfortable and anyone can edit any language at any time and there's no proofreading stuff
-# yes i use to translate on google sheets too and it's very very uncomfortable
As long as you're not using a typewriter, I think it's a good method
the more strings there are the more uncomfortable it gets, because then you can't look up how you translated similar strings without sheets wanting to search on the other languages too
-# not talking for how slow it would get with 16k strings for each language - english and keys included
as far as I know, both Weblate and Tolgee also have translation memory, glossary and proofreading systems… What I don't know is how much better they r than Crowdin
i have only tested POEditor so far,
which has proofreading but lacks translation memory and glossary; but is free for open source projects
Personally, I've felt right at home with Weblate, which is mainly why I recommend it as a good platform. Ultimately, that's just my opinion. What really matter to me is that, in the end, the various translations we're working on are successful
i'd stick on crowdin because that's what we used and are used with so far... would be problematic to try to move everything to a new platform
and i'd feel sorry for whoever would have to move all the context images there
From what I can see, the italian translation is already quite well advanced, right?
yeah me and miroma manage it
Yes, that's why I'm saying it. I saw that you beat the russian
-# well we've been ahead of every other language (as in proofreading) for a while...
we've been hitting a bit slow now, but will recover soon
i'll keep an eye out, bcs I understand and write Italian as… second (and distant) language
if you notice anything that sounds off you can let us know in https://discord.com/channels/734077874708938864/1022256229403344917
Sì, comandante
I apprecciate the correct use of the accented ì there 👍
Btw, over the last few days I've been finishing off the French transl. and I'm now halfway through the Swiss Standard German (de-CH). Just how abandoned is that one? Because it's quite a bit behind many others
de-ch is about to be removed, really
Oops
yeah it's barely any different from regular german and it just wastes words that could be used for other languages
It makes sense, there are four differences from the german version, and above all that pesky ß eszett which becomes a ss double s, but I find it curious
there does exist it-ch and fr-ch too, and it's the same thing
We are also locked into Crowdin until I think sept/aug, so it's not like we can move anyways
Since we're on the paid plan
And honestly
I think Crowdin is working fine?
Yeah crowdin is working flawlessly for now, i like using that platform
My Italian would be it-CH, although the difference is perhaps even smaller than in German
No problems so far, only complaint is that proofreaders can't vote like regular users
and that's only true for the non-enterprise edition of crowdin, for some weird reason
it works perfectly
you're from switzerland?
No… but it almost feels like it. I spend a lot of time in Switzerland, though I live in Barcelona now
I see
Btw, speaking of BCN. I understand that adding new languages might be frozen at the moment, but would it be possible in the short-medium term to include Catalan in Modrinth? It's my native language after all, so I could faithfully translate everything within a few weeks
someone suggested it previously but afair it got refused for now as it shares similarities with spanish
there's both spanish and the latin american one for now
as well as portuguese and brazilian portuguese
I disagree. The fact that Spanish resembles Catalan is to be expected given centuries of shared history and geography within Spain, but that doesn't mean they are the same
Let me explain it simple, Catalan and Occitan are Occitano-romances langs., which branch out from the Gallo-romance family (alongside French)
yes but we also have 4 variations of the same old spanish here
Spanish and Portuguese belong to the Ibero-romance branch
by origin Catalan is closer to French
Could be a replacement for de-ch as long as Catalan people don't understand regular Spanish
Not at all. Everyone forgets that Catalan isn't just spoken in Spain. The Catalan-speaking population is spread across different countries: it's in the southern France (Pyrénées-Orientales, Pirineus Orientals), it's the only official language of Andorra, and it's also spoken in the city of l'Alguer/Alghero, in Italy
each country has their different variation of Spanish xd
No way we're going to include all of those variants...
I think there's a misunderstanding. Catalan doesn't require regional variants like Spanish or Portuguese do! While technically ca-AD exists for Andorra and ca-ES for Spain (and ca-FR & ca-IT), in software localisation everyone just uses the single unified code ca.
Unlike other languages, the written differences between Catalan regions are minimal, so a single translation slot covers everything and every speaker understands it perfectly.
i meant each country having their own version of Spanish and Catalan being one of them
Just to be clear that Catalan is not a version of Spanish. Saying that is like saying Dutch is a version of German
It is a fully independent language with its own grammar and vocabulary, not a regional variant
i may be tired and may be mixing it up with castillan
I mean, Italian also has around 20 different dialects but none of which are actually ever used in platforms as different languages
No worries about the mix-up. But the comparison with Italian dialects doesn't really apply here. Those lack a unified written standard for tech. Catalan is a fully standardised, official language. That's why it's completely supported by Apple, Google, Microsoft, and Minecraft itself. It's a standard industry language, not a local dialect.
Technically venetian is the closest to be a different language entirely
In fact, there are two versions of Catalan in Minecraft
General Catalan (Català) and Valencian Catalan (Valencià)
also Minecraft supports every language almost
Minecraft supports a crazy amount of languages. It even includes ones that aren't technically separate languages (like Valencian, which no serious linguist considers a separate language from Catalan, but politics can be funny like that)…
However you'll notice it still doesn't include any of those Italian dialects you mentioned earlier
Venetian is in Minecraft as a different language, thinking about it
Veneto
In Minecraft there are 3 Italian dialects + Italian
Veneto (Venetian), Lombardo (Lombard) and Friulano (Friulan)
We aren't adding any new languages due to the Crowdin plan limits
It grows exponentially with each language and each app/site/hosting release we do (which is why we're happily removing Swiss German for example if it's being unmaintained)
What about also removing the languages that barely have 20% completion
You got me there, I just looked it up and yeah, Venetian exists in Minecraft.
But wait, I just checked Lombard, Friulian and Venetian too, and none of them are dialects of Italian
Yeah Minecraft got 3 Italian dialects as different languages lmao (thought only 1 or 2)
I was actually the one slowly correcting and improving the Schweizer Hochdeutsch translation. However, as a volunteer, if I have to choose between dedicating time to a dialect with no major differences from standard German (which is already well maintained) and my nativa Catalan, I will prioritise the latter
Personally I just want to know what you want me to do. I can continue with de-CH, although from what I've seen it still needs a lot of work to achieve a consistent style. Or, if you are planning to drop the practially abandoned Schweizer Hochdeutsch in the short term, we could replace it with Catalan, which I commit to actively maintain
Let me know
Appreciate the help.
Tho, I personally have discontinued my efforts to translate swiss german, as I was the only translator.
I requested the removal of the language... why it hasn't been removed yet is odd tbh.
You can continue if you want, but it's fine too if you stop, as I myself cannot see this lang to remain.
Imo removing a language that is similar to another to a language that is different than the others is more worth
Did these bug out?
only for some languages apparently
Also i was thinking if maybe the Master/Duplicate strings feature of crowin may turn useful for strings like this.
Technically, it would save on a couple of words if implemented
-# or just merging these in particular as a single string, but that wasn't the point i was trying to make
Crowdin's UI just updated live wth
Maybe i got the problem,
if the ICUs aren't mathing (eg: a variable is missing), modrinth defaults to the english string.
Can this be fixed? Reporting on the i18n GitHub
I think this was intentional to avoid issues with broken icus
in this case the icu isn't broken and it was a deliberate choice to translate the string like this
-# also we already have approved those strings and it's hard to track all of them down now...
Yea, I also know some icu strings in German that were simplified, ill write a script later to check which ones
I think crowdin has an option to filter for broken/missing ICU tags
it does but it ignores approved strings
approved strings are counted as having no mistakes
time to remove all approvals then 👍
-# spiderman no scream
app.instance.worlds.remove-server-description-with-address
app.modal.install-to-play.mod-count
analytics.chart.controls.active-count
dashboard.analytics.from-projects
dashboard.notifications.link.view-more
dashboard.organizations.member-count
dashboard.projects.links.and-more
profile.label.downloads
profile.stats.projects-followers
project.settings.permissions.search-placeholder
project.stats.downloads-label
project.stats.followers-label
report.already-reported-description
report.back-to-item
report.checking
report.could-not-find
report.question.content-id
report.question.report-reason
content.diff-modal.added-count
content.diff-modal.removed-count
content.diff-modal.updated-count
content.inline-backup.warning-body
content.selection-bar.selected-count
content.selection-bar.selected-count-simple
files.create-modal.header
files.layout.selected-count
files.upload-dropdown.uploads-left
files.upload.drag-and-drop.drop-to-upload
format.bytes.0
installation-settings.unlink.description
project-type.mod.capital
project-type.mod.lowercase
project-type.plugin.capital
project-type.plugin.lowercase
project-type.server.capital
project-type.server.lowercase
project-type.shader.capital
project-type.shader.lowercase
project.download-count-tooltip
project.follower-count-tooltip
servers.audit-log.event.server-plan.cpu
servers.backups.bulk-bar.aria-label
servers.backups.bulk-bar.deleting
servers.backups.delete-modal.header
servers.listing.notice.files-kept-for-download
servers.listing.notice.pending-change
servers.manage.search-placeholder
settings.language.description
settings.language.warning
nags.all-tags-selected.description
nags.description-too-short.description
nags.gpl-license-source-required.description
nags.multiple-resolution-tags.description
nags.select-license.description
nags.summary-too-short.description
nags.too-many-tags-server.description
nags.too-many-tags.description
nags.upload-gallery-image.description
Total: 58 missing ICU string(s) for it-IT
Cant say if its 100% accurate, it just tests which icu strings are missing
I guess I'll add a {count, plural, other {}} to all
I think the pruning that the i18n-icu-contract.ts script does wont really work in general tho. Changing a translation like {count} Server to {count} {count, plural, one {Server} other {Server}} is possible, just boilerplate, but more complex icus, like time-frame-picker.last-timeframe will always look different in some languages
do we actually have to insert the icu in all of these?
even for saving up a few words for the crowdin plan, isn't it best to just accept strings that aren't ICU-complete as well?
I think the checks were added since broken icus messed up the home page
I don't think the Crowdin pricing is based on translated words anyway, only on source words and target languages
some were intentional though;
there's no need to have an icu if both the singular and plural terms are the same, plus if we decide not to include a variable it shouldn't make the whole string explode ig...
Yea, thats the issue
no, but it has a limit on words.
thus, less translated words, the better
Realistically this is probably negligible
i will wait on editing those strings for now (thanks for fetching them!)
its source words * number of languages
i mean, multiply 4 words for 30 languages, that's 120 words that could be used in other strings
@ebon sun
Im not really sure what you're asking? Do you mean like allow it to have extra?
The problem is that it currently prunes strings like
In the last {amount} {unit, select, hours {{amount, plural, one {hour} other {hours}}} days {{amount, plural, one {day} other {days}}} weeks {{amount, plural, one {week} other {weeks}}} months {{amount, plural, one {month} other {months}}} other {days}}
where its impossible to keep the same icu structure in many languages
Because it has to be translated something like
months {{unit, select, hours {{amount, plural, one {In der letzten Stunde} other {In den letzten # Stunden} }} days {{amount, plural, one {Am letzten Tag} other {In den letzten # Tagen} }} weeks {{amount, plural, one {In der letzten Woche} other {In den letzten # Wochen} }} months {{amount, plural, one {Im letzten Monat} other {In den letzten # Monaten} }} other {In den letzten # Tagen}}
oh yeah you made me realize time-frame-picker.last-timeframe-prefix should update based on what the context is
so this string is missing a ICU in the source
{unit, select, hours {{amount, plural, one {Nell'ultima ora} other {Nelle ultime # ore}}} days {{amount, plural, one {Nell'ultimo giorno} other {Negli ultimi # giorni}}} weeks {{amount, plural, one {Nell'ultima settimana} other {Nelle ultime # settimane}}} months {{amount, plural, one {Nell'ultimo mese} other {Negli ultimi # mesi}}} other {Negli ultimi {amount} giorni}}
it's like this in italian
That would also fail tho
would it? i don't see it in the list you sent earlier
Weird, let me check
Yea no, that would work lol, sorry
Will see if I can change the German translation to work
-# yeah i oftentimes check with an ICU editor if they would work
how is the first one missing?
how is this not valid, too...?
pretty sure both settings.language.warning and description worked and we didn't change those in a long time
so it seems now it's discarding any string that doesn't have a 100% match on the ICUs
In that case, I will cease maintenance of de-CH, pending its removal and replacement. Thanks!
Even though I am the only one for the Danish, I'll continue
All I am waiting for is proofreader to approve translations using the Memory thingy
What do you mean
I'll see if I can find an example. One moment
Without any proofreader, this string can't be shown to the public in Danish, but if I wrote it myself using the time, then it would
IDK how often it updates though
That's not how it works though?
But the text below says so
Could be wrong
TM simply means that you clicked on translation memories and used that translation as is.
Everyone can see your string, and it will show up on the website.
It just means that extra attention is needed because a translation was submitted as is without any changes from the memory. It has nothing to do with the visibility and the need to be approved by a proofreader.
And since you are the only contributor for Danish, I would assume that there are currently no Danish proofreaders then?
Yeah. I have applied, but not gotten any reponse
That's not how it works here.
Strings aren't withheld because TM was used here. This is simply an indicator for proofreaders to better check this line as it may contain errors.
Also, as a proofreader are you not allowed to approve your own strings. That defeats the point of the proofreader role
See the oldest pinned message or here: #1404516213689811004 message
Thanks. GeorgeWindsor already told me half of it, and I knew the other half, but thank you either way 
I'd say you're only allowed to if they're simple translations like Cat -> Chat in french
So that one "i18n strings fix" completely broke some strings instead,
it even removed all the strings in which '{name}' was replaced by "{name}" (changing quoting style).
This makes no sense
Where?
like the broken ones
will have a look
Commit #6131
Check the i18n thread
Instead of removing all the strings which ICU structures aren't the same between the original string and the translated one, just remove the ones in which the ICU can't be parsed, so translators are free to make their own ICUs
if its this you're referring to, gonna look further into it later in the week - just got some stuff to do first, bear with us 😅 - frontend is spread pretty thin with 3 engineers
aware of the contract purge script not working perfectly