Comments (1)
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)
- Render `{ Rich text with BBCode Content}` HOT 2
- Add real world examples / include example .arrow files in the repo. HOT 1
- New feature: `Tag Match` node HOT 2
- Enhancement: Allow updating several Variables / Character-tag-values in one node HOT 1
- New feature: `Event Emitter` node HOT 3
- Enhancement: Optionally reset/unset key after checking the value in `Tag Pass` HOT 3
- Enhancement: Support parsing Variables and Character-tag-values HOT 1
- Enhancement: Dialog with Monolog option HOT 1
- Spellcheck HOT 1
- Enhancement: Allow Frames to be put behind other nodes HOT 4
- Feature: Node that displays an image HOT 1
- Feature: Node that plays audio HOT 1
- Feature: Scene-specific variables (or a better way to organize resources per scene) HOT 1
- Feature: Array variable type HOT 3
- Add better item sorting mechanisms to nodes with multiple choices such as Interaction & Dialog HOT 7
- Let floating panels (Inspector & Console) keep their user-defined size and position between runs HOT 2
- Bug: Selecting and unselecting a frame causes a change to the scene HOT 1
- Enhancement: Allow usage of variables in Interactible node Actions HOT 3
- Enhance or replace drop-down lists (specially in the inspectors) for better filtering and sorting HOT 4
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from arrow.