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

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.