While looking at https://sourceforge.net/p/scummvm/bugs/6655/ the issue was found to only exist on windows, and ended up being that WME does the following:
(The details can be seen in engines/wintermute/base/base_file_manager.cpp:registerPackages).
To avoid loading the wrong files, a specific name check was then performed on the parent folder, checking whether it was "language" or "languages", so that only i.e. "english.dcp" would be loaded from that folder.
Now, the issue is that the parent folder name was gotten by doing:
Common::String parentName = fileIt->getParent().getName();
Which does not seem to get the same result as doing it->getname() on Windows.
The problem is, on Windows the parentName would contain a trailing \, while on OS X that would not be the case.
Windows has:
const char start = _path.c_str();
const char end = lastPathComponent(_path, '\');
...
p->_path = Common::String(start, end - start);
Posix has:
const char start = _path.c_str();
const char end = start + _path.size();
while (end > start && (*end - 1) != '/') end--;
return makeNode(Common::String(start, end));
So, in practice, the problem is two-fold:
Since both of these birds in theory boil down to the same code, I'm posting this as a single bug.
Diff: