[Localization Issues] -run=GatherText is always saying that no Include Paths were found. What is the correct path syntax for a Unreal Project?

#Update

I have now attached all the ini files I am using for Solus Localization, enjoy!

link text


Dear Friends at Epic,

I have been trying to figure out how to get -run=GatherText to work and actually dump out the .files I need to pass on to translators!

I run this command:

"C:\Program Files\Unreal Engine\4.3\Engine\Binaries\Win64\UE4Editor.exe" "C:\Users\Rama\Documents\Unreal Projects\Solus\Solus.uproject" -run=GatherText -config="C:\Users\Rama\Documents\Unreal Projects\Solus\Config\Localization\Engine.ini" -log

As you can see I am specifying my project.

I get this log:

[2014.07.29-19.41.04:668][  0]LogInit: Executing Class /Script/UnrealEd.GatherTextCommandlet
[2014.07.29-19.41.04:669][  0]LogInit: Initializing Editor Engine...
[2014.07.29-19.41.04:669][  0]LogEngine: Initializing Engine...
[2014.07.29-19.41.04:676][  0]LogLinker:Warning: Asset '../../../../../../Users/Rama/Documents/Unreal Projects/Solus/Content/Rama/SolusDataBP.uasset' has been saved with empty engine version. The asset will be loaded but may be incompatible.
[2014.07.29-19.41.04:689][  0]LogAIModule: Creating AISystem for world NewWorld
[2014.07.29-19.41.04:700][  0]LogDerivedDataCache: Saved boot cache 0.01s 15MB C:/Users/Rama/AppData/Local/UnrealEngine/4.3/DerivedDataCache/Boot.ddc.
[2014.07.29-19.41.04:702][  0]LogInit: Texture streaming: Disabled
[2014.07.29-19.41.04:709][  0]LogInit: Initializing Editor Engine Completed
[2014.07.29-19.41.04:812][  0]LogGatherTextCommandlet: Beginning GatherText Commandlet.
[2014.07.29-19.41.04:812][  0]LogGatherTextCommandlet: Executing GatherTextStep0: GatherTextFromSourceCommandlet
[2014.07.29-19.41.04:813][  0]LogGatherTextFromSourceCommandlet:Error: No include paths in section GatherTextStep0
[2014.07.29-19.41.04:814][  0]LogGatherTextCommandlet:Error: GatherTextStep0-GatherTextFromSourceCommandlet reported an error.

14.07.29-19.41.04:832][  0]LogInit:Display: 
[2014.07.29-19.41.04:833][  0]LogInit:Display: Commandlet->Main return this error code: -1
[2014.07.29-19.41.04:834][  0]LogInit:Display: With 3 error(s), 44 warning(s)
[2014.07.29-19.41.04:834][  0]LogInit:Display: 
Execution of commandlet took:  0.02 seconds
[2014.07.29-19.41.04:835][  0]LogExit: Preparing to exit.
[2014.07.29-19.41.05:253][  0]LogExit: Editor shut down

#No Include Paths

As you can see from the log the primary issue is that no include paths are being found in the Include source section!

Here is the section of the ini I am running that is relevant

;Gather text from source code
[GatherTextStep0]
CommandletClass=GatherTextFromSource
IncludePaths=C:/Users/Rama/Documents/Unreal Projects/Solus/Source/Solus
IncludePaths=Solus
IncludePaths=Solus/Source
IncludePaths=Solus/Source/Solus
IncludePaths=*/Solus
IncludePaths=*/Solus/Source
IncludePaths=*/Solus/Source/Solus

As you can see I am trying a whole variety of things but the error is always the same, indicating there are no include paths at all.

I have tried MANY things now, relative paths, /Game, …/…/…/Elephants, Starting in Source directory, starting where .uproject is located. Absolute Paths, and much more, and nothing works!

No matter what I supply for the include path it is always giving me the same message!

In the Engine version Epic just does this:

;Gather text from source code
[GatherTextStep0]
CommandletClass=GatherTextFromSource
IncludePaths=Engine/Source/Runtime
IncludePaths=Engine/Source/Rocket
IncludePaths=Engine/Source/Developer
IncludePaths=Engine/Config/

But I really dont understand what these paths are relative to and I tried a whole number of paths and I always get the same error

What are these paths relative to for a .uproject?

I have absolutely no idea what to tell the GatherText system so it finds my include paths!

#Is this a bug?

Is the system ready to handle projects that are in c:/Users/UserName/Documents/Unreal Projects/YourProjectName?

If so, what is the right syntax for getting UE4 Localization GatherText Commandlet to recognize my Source folder!

#Related Question

I see the Engine uses relative paths for the Source and Destination

[CommonSettings]
SourcePath=../../../Engine/Content/Localization/Engine
DestinationPath=../../../Engine/Content/Localization/Engine

What I should I use for my uproject?

#Can I use an absolute path?

SourcePath=C:/Users/Rama/Documents/Unreal Projects/Solus/Content/Localization/Engine
DestinationPath=C:/Users/Rama/Documents/Unreal Projects/Solus/Content/Localization/Engine

#Help!

I cannot get the localization files to be created no matter what I do since the Source include paths are never being found!

#Thanks!

Thanks!

Rama

You should probably avoid using Engine.ini as the filename for your game’s localization data configuration file. Not a technical issue, but it could easily lead to confusion. Naming the *.ini after your game or even just Game.ini are both practical.

No Include Paths

It seems as though the commandlet believes, very specifically, that there are “No include paths in section GatherTextStep0”. Your paths are not being used or validated in any way, because they are not being detected in the first place. This is a different issue than a path not existing or being invalid. You can see the relevant code in GatherTextFromSourceCommandlet.cpp, around line 63. Changing how you specify your paths will have no effect, because it is not finding your IncludePaths entries at all for some reason.

What are these paths relative to for a .uproject?

SourcePath and DestinationPath are relative to the directory from which the executable is running (BaseDir), thus the ../../../ to move up from the platform-specific folder, Binaries, and Engine. The IncludePaths are relative to the root directory (RootDir) of the project, which would be above Engine. I don’t know what RootDir would be in your case, since Solus is not next to Engine - I suspect it may be above Solus in that case.

Is this a bug?

Possibly. It should work, but I need to investigate. Can you attach the whole of your Solus/Config/Localization/Engine.ini file to the post? It would help me to debug the issue.

Can I use an absolute path?

Absolute paths are not valid. Relative paths are required for the sake of portability between developers and workspaces. Consider it an enforced best practice, I suppose.

“No Include Paths” Bug Resolution

Fix submitted in changelist 2240116.

On line 110 of GatherTextCommandlet.cpp, the code is generating a fake commandline to pass to the individual commandlets specified in each GatherTextStep section. When it does this, it doesn’t wrap the value of the Config argument in double quotes, causing the specified commandlet to parse the fake commandlet incorrectly when the Config argument has spaces in it (IE: /Unreal Projects/). Adding double quotes around the value of the Config parameter resolves this.

Dear Sheevok,

Thanks so much for the help!

I’ve been totally at a loss for what to do because as you said none of the include paths seem to even get detected.

I’ve attached all my localization files to the very top of my first post.

Thanks for the info about what the paths are relative to / no absolute paths allowed!

Let me know how I can assist further with debugging this!

I’ve tried everything I could think of!

Again the commandline I am using is in the first post

Thanks Sheevok!

I am looking forward to hearing from you as Hourences must have fully functional Localization for Solus done by December!

Rama

Good news! I did manage to reproduce the behavior, immediately, using your file and having created a project in a similar location. I’m investigating right this moment.

Answer Edited with information regarding the discovered and resolved bug.

Woohoo!

Great work Sheevok!

Thank youuuuu!

:slight_smile:

Rama

PS: I gather this change will not make it into 4.4 ? I have to use the downloadable engine version to be in sync with Hourences, so I shall just wait till 4.5 to work on this more right?

Thanks again Sheevok!

I had written in my other post about my concern about the space in “Unreal Projects” ! I am glad the issue was simple!

#Update

Dear Sheevok,

In 4.4 I am having a new issue, the commandlet completes, but no manifest is written to the destination directory,

full details here:

https://answers.unrealengine.com/questions/85815/localization-gathertext-completes-successfully-but.html

I also moved my entire Solus project to c:/ to ensure no issues with spaces.

I dont know what else to do at this point, given that the relative pathing structure for the output files is the same one I am using for the source files, and those are being found!