• We have updated our Community Code of Conduct. Please read through the new rules for the forum that are an integral part of Paradox Interactive’s User Agreement.
What does this mod do more than L18N Everywhere? Does it provide additional functionality?

Currently I'm writing a documentation and description.

As a quick reply:
It allows users to sideload custom translations that appear in the language selection within the interface settings.
01-before.png


As a longer answer:

the whole project can be found on github: https://github.com/suluknumoh/TranslateCS2

i took I18NEverywhere into account. and it was my first goal to not reinvent the wheel.
please see also:
https://forum.paradoxplaza.com/forum/threads/i18n-everywhere.1646597/

the author of I18N drew my attention to the fact that his mod refers more to existing languages and translations for other mods

there are other threads, people would like to be able to add new languages.
as a workaround, it is possible to simply overwrite existing loc-files.

tbh: i dont feel that comfortable with changing/overwriting those files. so i decided to develop this mod
 
  • 1
Reactions:
thank you for this cynicism
That was completely serious, why wouldn't it be? I think it's great that we can support languages the game doesn't support yet. I never intended to downplay your work in any way, I was just curious what this mod is and was genuinly happy that it's something unique and great.
 
  • 1
Reactions:
Do this need L18N Everywhere as a dependency?
 
  • 1
Reactions:
Great, so no dependency entry in Skyve needed. Thaks for your answer and also for creating this mod :)
 
  • 1
  • 1Like
Reactions:
i try to do the things i need to do but for me its a little difficult

hope someone can help me and maybe to get this to work for me :D i just try to get my game in dutch language :D



within the mods directory, there are the following files:
- CHANGELOG.md ; can also be found over there: https://github.com/suluknumoh/TranslateCS2/blob/main/TranslateCS2.Mod/CHANGELOG.md
- README.md ;can also be found over there https://github.com/suluknumoh/TranslateCS2/blob/main/TranslateCS2.Mod/README.md

and there is the following directory:
- Examples ; can be found over there: https://github.com/suluknumoh/TranslateCS2/tree/main/TranslateCS2.Mod/_Examples


the examples directory contains two json-examples-files and the readme contains a list of supported language-region codes


what to do?

- create a new json file or use an existing ones
- should contain a single Object
- this Object should have commaseparated Key-Value-Pairs
- the Key should be the Key that is used by Colossal Order
- the Value should be the translation
- example:
Code:
{"TranslateCS2.LocaleNameLocalizedKey": "Nederlands","Options.SECTION[General]": "Algemeen"}
- for your desired language, Dutch, three language-region codes are recognized:

- nl
- nl-NL
- nl-BE

- name the json file for example
Code:
nl-NL.json
- drop
Code:
nl-NL.json
file into the following directory:

Code:
%AppData%\..\LocalLow\Colossal Order\Cities Skylines II\ModsData\TranslateCS2.Mod\


- after the game started with this mod active in your active playset, within the interface-settings a new entry should appear `Nederlands` or at least `Dutch`
- after selecting this entry, for each key, that is used somewhere in the game and has a translation, the translation should be shown
- keys that are missing within the translation-json-file are supplemented with colossal orders fallbacklanguage
- the example, mentioned above, should use the translation "Algemeen" for the first menu-item within the options-menu
- everything else should be displayed in english
 
Last edited:
  • 1Like
  • 1
Reactions:
still can't mannage to make this work for my language wich is dutch little hard to find out what i need to do for it XD

hmmm.

what have you done so far or what does not work in detail?


with the mod i try to provide a general solution to sideload translations in the format described above.

the mod itself does not come along with translations

for me it is justifiable to provide the examples that come along with the mod, cause they only contain one or two entries and are controlled by me.

just to mention some aspects:
- first at all, i don't know if i am legally allowed to provide/redistribute at least colossal orders base/fallback-language 'en-US' as a json-file
- due to the facts, that i am unable to speak/read/write every single language and i do not want to bring (potential) harassment and/or similar into the game, I feel more comfortable when users share their translations with each other (also from a legal point of view); with other words: i do not have the capabilities to double check translation files that probably would be uploaded to this mods repo



long story short:

you need to create a json file and translate it by yourself or someone shares it with you

as mentioned over there: https://forum.paradoxplaza.com/forum/threads/dutch-for-cities-skylines-ii.1599265/post-29629053

@ElroyNL mentions his discord server over there: https://forum.paradoxplaza.com/foru...e-to-csv-and-vice-versa.1627477/post-29491751
 
Last edited:
  • 1
Reactions:
still can't mannage to make this work for my language wich is dutch little hard to find out what i need to do for it XD
Ik raad je ten zeerste aan om met onderstaande koppeling bij de Discordserver te komen. Daar word je op weg geholpen en ben je als eerste op de hoogte van vernieuwingen en aankondigingen.

(I highly recommend you to join the Discord server using the link below. There you will be guided and be the first to know about updates and announcements.)

 
  • 1
Reactions:
Hello @mettliebe would you consider joining the cities skylines: modding discord so you, myself, and others can discuss how this mod can be improved to handle mod translations for unofficial languages?
 
  • 2
Reactions:
[object Object]
Colossal.Logging.CustomLogHandler:LogFormat(LogType, Object, String, Object[])
UnityEngine.Logger:LogFormat(LogType, String, Object[])
Colossal.Logging.UnityLogger:Log(Level, String, Exception)
Colossal.Logging.UnityLogger:Critical(Object)
TranslateCS2.Mod.Mod:DisplayError() (at D:GitHubCS2_TranslateCS2TranslateCS2.ModMod.cs:126)
TranslateCS2.Mod.Mod:OnLoad(UpdateSystem) (at D:GitHubCS2_TranslateCS2TranslateCS2.ModMod.cs:53)
Game.Modding.ModInfo:OnLoad(UpdateSystem)
Game.Modding.ModInfo:Load(UpdateSystem)
Game.Modding.ModManager:InitializeMods(UpdateSystem)
Game.Modding.ModManager:Initialize(UpdateSystem)
Game.SceneFlow.GameManager:InitializeModManager(Boolean)
Game.SceneFlow.<<RegisterPdxSdk>g__RegisterDatabase|9>d:MoveNext()
System.Runtime.CompilerServices.AsyncTaskMethodBuilder:Start(<<RegisterPdxSdk>g__RegisterDatabase|9>d&)
Game.SceneFlow.<>c__DisplayClass106_1:<RegisterPdxSdk>g__RegisterDatabase|9()
Game.SceneFlow.<<RegisterPdxSdk>b__4>d:MoveNext()
System.Runtime.CompilerServices.MoveNextRunner:InvokeMoveNext(Object)
System.Threading.ExecutionContext:RunInternal(ExecutionContext, ContextCallback, Object, Boolean)
System.Threading.ExecutionContext:Run(ExecutionContext, ContextCallback, Object, Boolean)
System.Runtime.CompilerServices.MoveNextRunner:Run()
System.Threading.Tasks.AwaitTaskContinuation:InvokeAction(Object)
System.Threading.Tasks.AwaitTaskContinuation:RunCallback(ContextCallback, Object, Task&)
System.Threading.Tasks.SynchronizationContextAwaitTaskContinuation:Run(Task, Boolean)
System.Threading.Tasks.Task:FinishContinuations()
System.Threading.Tasks.Task:FinishStageThree()
System.Threading.Tasks.Task`1:TrySetResult(VoidTaskResult)
System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1:SetResult(VoidTaskResult)
System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1:SetResult(Task`1)
System.Runtime.CompilerServices.AsyncTaskMethodBuilder:SetResult()
Colossal.PSI.PdxSdk.<SyncMods>d__151:MoveNext()
System.Runtime.CompilerServices.MoveNextRunner:InvokeMoveNext(Object)
System.Threading.ExecutionContext:RunInternal(ExecutionContext, ContextCallback, Object, Boolean)
System.Threading.ExecutionContext:Run(ExecutionContext, ContextCallback, Object, Boolean)
System.Runtime.CompilerServices.MoveNextRunner:Run()
System.Threading.Tasks.<>c:<.cctor>b__7_0(Object)
UnityEngine.WorkRequest:Invoke()
UnityEngine.UnitySynchronizationContext:Exec()
UnityEngine.UnitySynchronizationContext:ExecuteTasks()
 
hi @annaloine
thank you for sharing the log.
i think you saw an error message, that told you, the entire mod failed to load.

please provide the respective log-file:

it can be found there:

Code:
%AppData%/../LocalLow/Colossal Order/Cities Skylines II/Logs/

and should be named
Code:
TranslateCS2.Mod.log