TerryCavanagh / VVVVVV

The source code to VVVVVV! http://thelettervsixtim.es/
Other
7k stars 559 forks source link

Localisations for custom levels #904

Open TerryCavanagh opened 1 year ago

TerryCavanagh commented 1 year ago

All custom levels included in data.zip will need to have their roomnames translated for the localisation update! I'm not sure of the best approach to this, am open to suggestions.

Providing notes for each room might be tricky, but one thing we could do is just provide a zipfile with screenshots of each named room, like this, which I did for the main game: https://thelettervsixtim.es/translatorassets/VVVVVV_rooms.zip

An automated solution to that would be really useful, though that's a big undertaking. Doing it manually would be very time consuming, but you'd only have to do it once, so, maybe that's better... (if you had a dozen people doing it, it would probably only take a couple of hours in total)

Daaaav commented 1 year ago

So, right now the only thing the localization system isn't 100% set up for translating yet is custom levels. It does support translations for roomnames and cutscenes in custom levels if the XML files are there - for example, the Spanish roomnames for a data.zip level like vertexvortex would be at lang/es/levels/vertexvortex/custom_roomnames.xml (outside data.zip). But, there's no way to automatically create those language files, and there's no solution for the level description and roomtext yet. My expectation was that the initial localization update would add translations for everything except the data.zip levels, which would be left in English, and then add translations for data.zip levels in a later update (if/when we're ready for it).

When we do, having screenshots for rooms in custom levels as well would be a good idea; automating that would definitely be worthwhile. Ved can already create full map images of levels, so that'd probably be our best bet - the maps just don't include roomnames or entities but that'd be a small modification. And in general, it's possible to script one-off plugins to automate things like this. I'm more worried that each custom level will need dedicated attention to know what areas each level is made up of, what the routes are, and why things are the way they are in every single level. But as you said, we might be mostly limited to just room screenshots and routes; there are probably enough people who are familiar with the custom levels that come with the game to be able to at least put rooms in a suitable order.

Custom levels have unique challenges as far as making them translatable goes:

Spare Checkpoint Storage Facility, Sendy woz 'ere INFO DESK Purple Zone Red Zone Blue Zone VeeTube

You escaped The end! Cool! DTTHW

InfoTeddy commented 1 year ago

I almost think it'd be easier to just provide a separate version of the .vvvvvv that's translated into the given language (and automatically selected without user intervention). It'd solve the text being spelled out by tiles (or even spelled out in the graphics of custom tiles), and it's what I would have done in the 2.2 days (e.g. upload both levelname.vvvvvv and levelname_es.vvvvvv, levelname_fr.vvvvvv, etc. to Distractionware). Or just add altstates to custom levels.

Daaaav commented 1 year ago

Well, that goes against too many design goals: having to translate the raw scripts themselves means translators have to manually wordwrap their translations when we already made sure they didn't have to. Translators have to know where they need to go to translate what, and it'll be more work and less clear. If we provide complete .vvvvvv versions, should we then distribute them via the data.zip which we didn't have to edit? Or will specifically the English versions of all levels be missing from the repo?

I don't personally think we should want to translate the hand-drawn text, it'd mean way more effort needs to be spent, translators will likely have a hard time making it fit onscreen, and the question is whether that'd all be worth it (animated cartoons for teenagers also get imported from the US, and are shown on TV in Europe with gigantic baked-in English text on-screen, extremely hot temperatures, A-F letter grades, etc, and the translated spoken dialogue just either pretends the huge letters say something different or pretend it's the most normal thing 😛) I also don't think there are many occurrences of hand-drawn text in the built-in levels, and the English is either really simple and more or less universally understood, or it can be ignored for the understanding of the level.

The main remaining problem is the roomtext in the couple of places it appears. We can also ignore that - it seems like much of the same where you either don't really need the roomtext or it's simple English - or we can design a system where translators can somehow flexibly translate all the roomtext they need to without needing to spend too much effort clicking around in an editor to position things just right.

Combined, there's a lot of content in the data.zip levels. Personally, I wouldn't be surprised if the custom levels take much more time to translate than the main game. I imagine the main game will be seen by a lot more people, than the built-in custom levels - the main game is what everyone will start with, and the custom levels are in an alphabetically sorted list which you get no other impression from than the name and description before picking one. There will probably also be custom levels shared around in communities speaking different languages.

TerryCavanagh commented 1 year ago

Ahh, yeah, this is a strong case not trying to do the main game and the custom levels at the same time. Probably this could be kicked down the road a bit (or, you know, maybe not done at all, considering the amount of work involved and the probably very small audience that would even see it. Still, let's talk about it)

It doesn't have to be all or nothing, though. Some custom levels are going to be very challenging to translate (e.g. Dimension 333333), but I think others will be fairly straightforward. The original 2.0 levels (minus Souleye's New Dimension) are probably at least worth evaluating separately?

When we do, having screenshots for rooms in custom levels as well would be a good idea; automating that would definitely be worthwhile. Ved can already create full map images of levels, so that'd probably be our best bet - the maps just don't include roomnames or entities but that'd be a small modification.

This seems like the best way to do this, for sure!

I almost think it'd be easier to just provide a separate version of the .vvvvvv that's translated into the given language (and automatically selected without user intervention).

I think this is a pretty decent solution, from the end user perspective at least! I like the idea of it as a gordian-knot-slicing-solution to the whole thing - that said, @Dav999-v is right, and it's a bit of a nightmare to make this process accessible to translators, so that would need some thought.

Daaaav commented 1 year ago

It doesn't have to be all or nothing, though. Some custom levels are going to be very challenging to translate (e.g. Dimension 333333), but I think others will be fairly straightforward. The original 2.0 levels (minus Souleye's New Dimension) are probably at least worth evaluating separately?

Ah, good point, that would definitely make things more doable! I think that would actually put all my examples of roomtext and hand-drawn text out of scope, except for the "you escaped", and I don't think anyone will blame us for leaving that one in.

I almost think it'd be easier to just provide a separate version of the .vvvvvv that's translated into the given language (and automatically selected without user intervention).

I think this is a pretty decent solution, from the end user perspective at least! I like the idea of it as a gordian-knot-slicing-solution to the whole thing - that said, @Dav999-v is right, and it's a bit of a nightmare to make this process accessible to translators, so that would need some thought.

I'm not really a fan, I'd prefer to make custom levels be translated in the same way as the main game - so with separate language files for roomnames, cutscenes, etc. We're already part of the way there - I think this is a rough list of what still needs to be done for the technical side of making custom levels translatable:

So apart from the roomtext (which we could itself also postpone) it's not particularly difficult to implement the remaining support - I've just prioritized the rest of the system, as well as CJK support, over it.

TerryCavanagh commented 1 year ago

vibes from the discord discussion seem to be -