Giter Club home page Giter Club logo

Comments (1)

mhgolkar avatar mhgolkar commented on May 27, 2024

Hi @albertjane

Do you plan to add multi-language support to arrow ?

Support for multilingual projects, in terms of internationalization, is not planned.
Features such as RTL (right-to-left) and CTL (complex text layout) would be, but definitely not in the short term.

How would you implement multi-language currently ?

If someone is going to do that, one approach is to add multilingualism on the node level.
For example, Dialog node currently keeps { ... lines: ["as a vector of strings"], ... but a multilingual dialog can keep a dictionary per line (e.g. { ..., lines: [ { en: "English version", fr: "...", .. }, ... ], ... }). There as well needs to be changes to the GUI and implementation of the nodes.
But there are reasons (beyond common constraints) that I would not approach the task this way.

How you would approach it ?

First and foremost, you need to set up a quick and convenient way through which different people (translators, audio engineers, etc.) can contribute to your project with the skills they already poses.

The next challenges surface while using dynamic features of Arrow, such as resource modification or exposure (i.e. printing {variable}s and {character.tag}s via content nodes or variable-update nodes on strings) in runtime. Internationalization is a tricky business, specially when the target languages are too different, syntactically, from the source. For example adding word-1 to the right of word-2 can be meaningful in one language, but completely meaningless in another, although you have translated each part independently. In other worlds you have to introduce new logic if you're going to have such dynamic features being used. Exposure can create another league of wired situations in its own way.
These are just the basic challenges.

If I needed to go for multilingualism, considering Arrow as is, and with no change in the runtime side of the things, I would try content re-mapping techniques.

First you need to establish some ground rules: Not to use exposures and string variables (other variables are fine). If you need different versions of a piece of content, take the hard way. It would serve you in the long term.
Then you can create a map (maybe a spreadsheet) of all the data you would show to the users, where there are alternative contents (translations) for each entity. It wouldn't be difficult because all the Arrow resources get unique identifiers. The next step is to have your game using the alternative content whenever the original content is observed. The logic remains universal, generally speaking. You can implement the mapper functions yourself, or rely on your engine's features (such as Godot's translation-server) and use the messages (textual parameters) directly as the keys.

There are other ways of course, including what you've already mentioned, with their own pros and cons.
At the end of the day, the best approach depends on your work-flow, resources, preferences and the project's nature.

Best of luck.

from arrow.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.