I spent a couple of hours writing a lua function for printing the categories to the gamelog. Requires DFHack, so this is potentially missing anything new to the Steam release.
function log_symbols()
local r = df.global.world.raws
local log = dfhack.gui.writeToGamelog
log("\nCreatures:")
for _, v in ipairs(r.creatures.all) do
log(v.name[0].."; "..v.name[1])
end
log("\nPlants:")
for _, v in ipairs(r.plants.bushes) do
log(v.name.."; "..v.name_plural)
end
for _, v in ipairs(r.plants.grasses) do
log(v.name.."; "..v.name_plural)
end
log("\nTrees:")
for _, v in ipairs(r.plants.trees) do
log(v.name.."; "..v.name_plural)
end
log("\nShapes:")
for _, v in ipairs(r.descriptors.shapes) do
if #v.adj > 0 then
for _, a in ipairs(v.adj) do
log(a.value.." "..v.name.."; "..a.value.." "..v.name_plural)
end
else -- empty adjective vector
log(v.name.."; "..v.name_plural)
end
end
log("\nObjects:")
for _, v in ipairs(r.itemdefs.all) do
if v._type ~= df.itemdef_foodst then
if v._type ~= df.itemdef_toyst and
v._type ~= df.itemdef_instrumentst and
v._type ~= df.itemdef_siegeammost and
v.adjective ~= "" then
log(v.adjective.." "..v.name.."; "..v.adjective.." "..v.name_plural)
else -- no adjective field
log(v.name.."; "..v.name_plural)
end
else -- food lacks name_plural field
log(v.name.."; "..v.name)
--log("prepared meal; prepared meals") -- in-game bug
end
end
log("\nDone!")
end
The plurals are separated by semi-colons (since large, serrated disk uses a comma.) The three prepared food types (biscuits, stew, roast) show up as 3 duplicate entries of "prepared meal" in-game, for some reason. There are a few world-specific procedurally generated things needing to be manually removed, but thankfully these are all at the end of their respective lists.