Skip to content
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

Localisations for custom levels #904

Open
TerryCavanagh opened this issue Nov 10, 2022 · 6 comments
Open

Localisations for custom levels #904

TerryCavanagh opened this issue Nov 10, 2022 · 6 comments
Labels
localization Implies 'required for 2.4' unless otherwise noted

Comments

@TerryCavanagh
Copy link
Owner

TerryCavanagh commented Nov 10, 2022

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)

@TerryCavanagh TerryCavanagh added the localization Implies 'required for 2.4' unless otherwise noted label Nov 10, 2022
@Daaaav
Copy link
Contributor

Daaaav commented Nov 11, 2022

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:

  • Roomtext can be placed anywhere and everywhere, its placement, centering or number of lines might need to be altered in each translation (each line is an independent entity), the text may fit precisely in rigid containers that cannot be enlarged:

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

  • CJK fonts could be vertically centered in tiles, but translating these multi-line texts will make the lines overlap each other, unless translators specifically take care to spread those translations over half the lines and blank the other half

  • Some levels even write out text with tiles, which we'll almost definitely have to leave the way they are:

You escaped
The end!
Cool!
DTTHW

  • Even if we use a one-off cutscene text extractor, the existing one would need to be rewritten since it's made to handle internal scripting, not simplified. I also put the cutscenes in a reasonably logical order manually.

@InfoTeddy
Copy link
Contributor

InfoTeddy commented Nov 11, 2022

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
Copy link
Contributor

Daaaav commented Nov 11, 2022

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
Copy link
Owner Author

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
Copy link
Contributor

Daaaav commented Nov 11, 2022

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:

  • Making a file for level metadata like title and description (custom_levelmeta.xml?)
  • If deemed necessary and we can find an acceptable way, same for roomtext
  • Making extractors for cutscene text and roomnames, even if one-off (less than two hours work probably)
  • Roomname translator mode can't save in custom levels yet, the only reason might be the different paths?

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.

@Daaaav Daaaav mentioned this issue Aug 23, 2023
4 tasks
@TerryCavanagh
Copy link
Owner Author

vibes from the discord discussion seem to be -

  • Let's not do these for the 2.4 update
  • But we should at least implement the Japanese ones, since they're already present in the Nicalis translation.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
localization Implies 'required for 2.4' unless otherwise noted
Projects
None yet
Development

No branches or pull requests

3 participants