# Translation Tool

**URL:** <https://discourse.stonehearth.net/t/translation-tool/35584>\
**Category:** Translation and Localization\
**Created:** [May 26, 2018, 4:25am UTC](https://discourse.stonehearth.net/t/translation-tool/35584 "2018-05-26T04:25:14Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![BrunoSupremo](https://sea2.discourse-cdn.com/flex022/user_avatar/discourse.stonehearth.net/brunosupremo/32/54819_2.png) [@BrunoSupremo](https://discourse.stonehearth.net/u/BrunoSupremo)\
**Post date:** [May 26, 2018, 4:25am UTC](https://discourse.stonehearth.net/t/translation-tool/35584/1 "2018-05-26T04:25:14Z")

</div>

[https://brunosupremo.github.io/Stonehearth-Translator/](https://brunosupremo.github.io/Stonehearth-Translator/)

 ![image](https://us1.discourse-cdn.com/flex022/uploads/stonehearth/original/3X/c/f/cfec72bc65603ab25a6a5799eb4a36379c41a5e8.png)

It is very easy to use:  
Click “📂 Load first.json” button to load the file you want to edit. Change the values in the text boxes.  
You can also click in the “📂 Load second.json” to import a file where you already started translating.  
When done, click “💾 Save your.json”. The new file will be downloaded.

“📑 Next untranslated” button will jump to the next visible string needing to be translated.

You can hide portions of the json simple clicking on the arrows▼ at each section to collapse it. Collapsed sections will be ignored by the “Next untranslated” button.  
You can collapse all sections at once that are already fully translated by clicking the button “🔺 Collapse completed blocks”

Yellow colors means that field has untranslated strings. The yellow color will also flow up at each section, so you will know it has a string in it needing your attention.

You will have all your browser tools at your hand. “Ctrl+F” to search things in the page. Spell checking will add those red underlines at misspelled words, etc…

If you guys find errors or have suggestion, just tell me 😊

---

<div class="post-metadata">

**Author:** ![Wiese2007](https://sea2.discourse-cdn.com/flex022/user_avatar/discourse.stonehearth.net/wiese2007/32/15946_2.png) [@Wiese2007](https://discourse.stonehearth.net/u/Wiese2007)\
**Post date:** [May 26, 2018, 5:23am UTC](https://discourse.stonehearth.net/t/translation-tool/35584/2 "2018-05-26T05:23:07Z")

</div>

Heyho - it is possible to add an option to compare two .json or .less files - because like i know the most difficult part for translators is after an update to find the changes (new lines, removed lines etc.).

something like this [http://www.jsondiff.com/](http://www.jsondiff.com/) (for json) or [https://www.diffnow.com/](https://www.diffnow.com/) (for less).

and before some asks the less files are for changes of the UI 😉 and im honest im using the programm beyond compare the compare my 24 files (but its with a price of 60$ not an option for the most of peoples)

---

<div class="post-metadata">

**Author:** ![BrunoSupremo](https://sea2.discourse-cdn.com/flex022/user_avatar/discourse.stonehearth.net/brunosupremo/32/54819_2.png) [@BrunoSupremo](https://discourse.stonehearth.net/u/BrunoSupremo)\
**Post date:** [May 26, 2018, 5:32am UTC](https://discourse.stonehearth.net/t/translation-tool/35584/3 "2018-05-26T05:32:22Z")

</div>

> [@Wiese2007](#):
>
> Heyho - it is possible to add an option to compare two .json or .less files - because like i know the most difficult part for translators is after an update to find the changes

load the first file in “en.json” and the second in “your.json”, done. Yellow means both sides are the same.

> [@Wiese2007](#):
>
> (new lines, removed lines etc.).

new lines will be yellow, cause if you don’t have it in your translation, it will not override the default from the first file (i.e. both are equal, yellow)  
removed lines don’t matter. they are not there anymore so you don’t need to translate.

> [@Wiese2007](#):
>
> the less files are for changes of the UI

What exactly you need to change in the ui? If another mod needs to change it, like a kingdom trying to apply new colors or add a new button it will simple remove all your work.  
If it is something important, report to the team so it gets in the default game.

---

<div class="post-metadata">

**Author:** ![Fornjotr](https://sea2.discourse-cdn.com/flex022/user_avatar/discourse.stonehearth.net/fornjotr/32/54961_2.png) [@Fornjotr](https://discourse.stonehearth.net/u/Fornjotr)\
**Post date:** [May 26, 2018, 5:45am UTC](https://discourse.stonehearth.net/t/translation-tool/35584/4 "2018-05-26T05:45:25Z")

</div>

Great work Bruno. I wonder how many speakers of a language there need to be, before translation become relevant? 🙂

---

<div class="post-metadata">

**Author:** ![Wiese2007](https://sea2.discourse-cdn.com/flex022/user_avatar/discourse.stonehearth.net/wiese2007/32/15946_2.png) [@Wiese2007](https://discourse.stonehearth.net/u/Wiese2007)\
**Post date:** [May 26, 2018, 5:52am UTC](https://discourse.stonehearth.net/t/translation-tool/35584/5 "2018-05-26T05:52:08Z")

</div>

hi bruno - nope in the most translations you need to adjust the ui because not every language has the same size/grammar/symbols - for example german is very long so i need to make some uis wider.

and ok so it would need a new programm to add this functions - so i will recommend your website for translations and the named websites for comparing ^^ Thx 😃

---

<div class="post-metadata">

**Author:** ![BrunoSupremo](https://sea2.discourse-cdn.com/flex022/user_avatar/discourse.stonehearth.net/brunosupremo/32/54819_2.png) [@BrunoSupremo](https://discourse.stonehearth.net/u/BrunoSupremo)\
**Post date:** [May 26, 2018, 5:58am UTC](https://discourse.stonehearth.net/t/translation-tool/35584/6 "2018-05-26T05:58:30Z")

</div>

The ui should auto stretch for longer words. Sometimes the change is easy and doesn’t even mess with other shorter languages, so the team can be warned to include it by default.

Yes, this is for json translation only. To compare other files you need those diff sites. They have function specific for that as some things can’t be used on both. For example in css the code order does matter so if someone flips one line with another the comparator should warn, while in json it does not, so it should not warn.

---

<div class="post-metadata">

**Author:** ![Wiese2007](https://sea2.discourse-cdn.com/flex022/user_avatar/discourse.stonehearth.net/wiese2007/32/15946_2.png) [@Wiese2007](https://discourse.stonehearth.net/u/Wiese2007)\
**Post date:** [May 26, 2018, 3:26pm UTC](https://discourse.stonehearth.net/t/translation-tool/35584/7 "2018-05-26T15:26:55Z")

</div>

yes i know of the autostretch but its not in all uis and sometimes its needed to be removed (for example citizen-screen) with normal settings it looks awfull ^^

here an example with and without changes:

 ![Stonehearth%202018-05-26%2017-22-34-59](https://us1.discourse-cdn.com/flex022/uploads/stonehearth/original/3X/9/3/9352ee6c847a43a7eafcee6bdb5e8c58ba69a42c.jpg) ![Stonehearth%202018-05-26%2017-26-00-38](https://us1.discourse-cdn.com/flex022/uploads/stonehearth/original/3X/b/3/b32bba8fef608d9ada7d4262c64884744596a0c1.jpg)

in the end the first thing would be an font which supports all languages and thats very very very pricy - so lots of moders need to change fontsizes for their own fonts.

---

<div class="post-metadata">

**Author:** ![BrunoSupremo](https://sea2.discourse-cdn.com/flex022/user_avatar/discourse.stonehearth.net/brunosupremo/32/54819_2.png) [@BrunoSupremo](https://discourse.stonehearth.net/u/BrunoSupremo)\
**Post date:** [May 27, 2018, 9:07pm UTC](https://discourse.stonehearth.net/t/translation-tool/35584/8 "2018-05-27T21:07:52Z")

</div>

Added a compare mode.

You can now load two json and it will highlight only the different lines.

(Press Ctrl+f5 to refresh the site, else you will still see the old layout)

---

<div class="post-metadata">

**Author:** ![BrunoSupremo](https://sea2.discourse-cdn.com/flex022/user_avatar/discourse.stonehearth.net/brunosupremo/32/54819_2.png) [@BrunoSupremo](https://discourse.stonehearth.net/u/BrunoSupremo)\
**Post date:** [May 30, 2018, 11:57pm UTC](https://discourse.stonehearth.net/t/translation-tool/35584/9 "2018-05-30T23:57:12Z")

</div>

Fixed a critical and very easy to spot bug. It was not saving.  
Considering I got no reports about it, I’m guessing no one was using it 😅  
That is ok. I build this because the other old tool in the forum was not enough for me, too slow and had two bugs where it did not recognize some strings (parts of the game gets no translation) and it also replaced some of your characters (in game it appears as strange symbols)

But I’m also interested in hearing other translators, if there is something needed in the tool that I haven’t saw the need for yet, maybe I’m missing something obvious? If it is something that can help me translate the game better, I’m all ears. So far, (I think) it has all I need.

---

<div class="post-metadata">

**Author:** ![Wiese2007](https://sea2.discourse-cdn.com/flex022/user_avatar/discourse.stonehearth.net/wiese2007/32/15946_2.png) [@Wiese2007](https://discourse.stonehearth.net/u/Wiese2007)\
**Post date:** [May 31, 2018, 12:18am UTC](https://discourse.stonehearth.net/t/translation-tool/35584/10 "2018-05-31T00:18:09Z")

</div>

im pointing some translators for you 😉 @He_Mo @dalabo @law @Estiva @Thijsjetang @Kiyoshi

---

<div class="post-metadata">

**Author:** ![Moai](https://sea2.discourse-cdn.com/flex022/user_avatar/discourse.stonehearth.net/moai/32/16242_2.png) [@Moai](https://discourse.stonehearth.net/u/Moai)\
**Post date:** [May 31, 2018, 12:19am UTC](https://discourse.stonehearth.net/t/translation-tool/35584/11 "2018-05-31T00:19:10Z")

</div>

I will be using this for my mods to easily add the Russian localization. I’m not at the point where I can add such content, though.

---

<div class="post-metadata">

**Author:** ![Wiese2007](https://sea2.discourse-cdn.com/flex022/user_avatar/discourse.stonehearth.net/wiese2007/32/15946_2.png) [@Wiese2007](https://discourse.stonehearth.net/u/Wiese2007)\
**Post date:** [May 31, 2018, 12:22am UTC](https://discourse.stonehearth.net/t/translation-tool/35584/12 "2018-05-31T00:22:08Z")

</div>

ähmmm [[MOD-849] Русификатор stonehearth Alpha 24](https://discourse.stonehearth.net/t/mod-849-stonehearth-alpha-24/14707/93) there is already an rus translation from @He_Mo

---

<div class="post-metadata">

**Author:** ![dalabo](https://sea2.discourse-cdn.com/flex022/user_avatar/discourse.stonehearth.net/dalabo/32/52082_2.png) [@dalabo](https://discourse.stonehearth.net/u/dalabo)\
**Post date:** [May 31, 2018, 12:23am UTC](https://discourse.stonehearth.net/t/translation-tool/35584/13 "2018-05-31T00:23:07Z")

</div>

Currently I’m using notepad++ to compare new and old en.json, and using ATOM to modify my zh-TW.json according to the comparison result manually.

I’ll try the tool someday. 😉

---

<div class="post-metadata">

**Author:** ![Moai](https://sea2.discourse-cdn.com/flex022/user_avatar/discourse.stonehearth.net/moai/32/16242_2.png) [@Moai](https://discourse.stonehearth.net/u/Moai)\
**Post date:** [May 31, 2018, 12:24am UTC](https://discourse.stonehearth.net/t/translation-tool/35584/14 "2018-05-31T00:24:45Z")

</div>

For my mods, the mods I release. That is, I include both a “en” and “ru-RU” localization inside my mod folder. I don’t want to push effort onto other people that I can do myself. I don’t see why He-Mo has to go through my mod and translate it, when I already can do the same thing.

---

<div class="post-metadata">

**Author:** ![BrunoSupremo](https://sea2.discourse-cdn.com/flex022/user_avatar/discourse.stonehearth.net/brunosupremo/32/54819_2.png) [@BrunoSupremo](https://discourse.stonehearth.net/u/BrunoSupremo)\
**Post date:** [May 31, 2018, 12:33am UTC](https://discourse.stonehearth.net/t/translation-tool/35584/15 "2018-05-31T00:33:54Z")

</div>

> [@dalabo](#):
>
> Currently I’m using notepad++ to compare new and old en.json

I’m going to check. I used notepad++ a lot in the past, but replaced it with sublime later. The ui and the text highlights was kinda outdated.

> [@Moai](#):
>
> That is, I include both a “en” and “ru-RU” localization inside my mod folder.

That is what I did with Archipelago, it has en and pt. But as I’m also helping with the pt translation mod, it does not matter much 😛 But it is a nice thing, if every modder also included his own language in his mods.

---

<div class="post-metadata">

**Author:** ![Kiyoshi](https://sea2.discourse-cdn.com/flex022/user_avatar/discourse.stonehearth.net/kiyoshi/32/60440_2.png) [@Kiyoshi](https://discourse.stonehearth.net/u/Kiyoshi)\
**Post date:** [June 2, 2018, 11:45am UTC](https://discourse.stonehearth.net/t/translation-tool/35584/16 "2018-06-02T11:45:41Z")

</div>

I was also working on a translation tool but im stuck on JSON reading like how can i read all childs and how should i know how much childs the parent has…

---

<div class="post-metadata">

**Author:** ![dalabo](https://sea2.discourse-cdn.com/flex022/user_avatar/discourse.stonehearth.net/dalabo/32/52082_2.png) [@dalabo](https://discourse.stonehearth.net/u/dalabo)\
**Post date:** [June 25, 2018, 6:25am UTC](https://discourse.stonehearth.net/t/translation-tool/35584/17 "2018-06-25T06:25:24Z")

</div>

I just found out that it’s a good tool in translating new added strings, but not the modified strings.  
Is it possible to upload 3 json files?

1. New source json
2. Old source json
3. Translated json

So you can compare 1 & 2 to know the difference and mark it as untranslated in 3.

I know there’s a comparison mode, but after you compare 1 & 2, it’s not easy to locate the string in 3.

P.S. would be better if the removed strings are also considered 😜

---

<div class="post-metadata">

**Author:** ![BrunoSupremo](https://sea2.discourse-cdn.com/flex022/user_avatar/discourse.stonehearth.net/brunosupremo/32/54819_2.png) [@BrunoSupremo](https://discourse.stonehearth.net/u/BrunoSupremo)\
**Post date:** [June 25, 2018, 12:16pm UTC](https://discourse.stonehearth.net/t/translation-tool/35584/18 "2018-06-25T12:16:14Z")

</div>

I will try add an “advanced mode” where those things will be possible. But it will take some time, I’m currently reworking the templates sites.

(But I still do not understand why someone would need to know about removed strings. So far, if a string is removed, nothing will change, it does not matter if you still have a translation for it, the game will simple ignore.)

---

<div class="post-metadata">

**Author:** ![dalabo](https://sea2.discourse-cdn.com/flex022/user_avatar/discourse.stonehearth.net/dalabo/32/52082_2.png) [@dalabo](https://discourse.stonehearth.net/u/dalabo)\
**Post date:** [June 25, 2018, 1:36pm UTC](https://discourse.stonehearth.net/t/translation-tool/35584/19 "2018-06-25T13:36:42Z")

</div>

I just want to keep the whole structure the same as the official json, not more, not less.  
And maybe I’m the only one being picky here. 😂

---

<div class="post-metadata">

**Author:** ![Wiese2007](https://sea2.discourse-cdn.com/flex022/user_avatar/discourse.stonehearth.net/wiese2007/32/15946_2.png) [@Wiese2007](https://discourse.stonehearth.net/u/Wiese2007)\
**Post date:** [June 26, 2018, 10:56am UTC](https://discourse.stonehearth.net/t/translation-tool/35584/20 "2018-06-26T10:56:53Z")

</div>

nope im too 😉 but like you now i use beyond compare for this (so i cant be picky xDDD)

[Next page](https://discourse.stonehearth.net/t/translation-tool/35584.md?page=2)
