В общих чертах .po-файл представляет собой текст вида
#коммент
msgid "Оригинал"
msgstr "Перевод"
Накидал на скорую руку пару простых скриптов на Lua. Если нет строк с несколькими формами множественного числа, вроде работают. Язык в свойствах файла после конвертации менять вручную (ну или скрипты дополнить). Использовать типа 
lua poinvert.lua in.po out.popoinvert.lua - меняет оригинал<->перевод местами
Lua
if arg[1] == nil then 
    print "Usage: lua poinvert.lua input.po [output.po]"
    os.exit()
end
 
po = {}
i = 1
 
for line in io.lines(arg[1]) do
    if line:sub(1, 5) == "msgid" then
        po[i + 1] = "msgstr" .. line:sub(6)
    elseif line:sub(1, 6) == "msgstr" then
        po[i - 1] = "msgid" .. line:sub(7)
    else
        po[i] = line
    end
 
    i = i + 1;
end
 
if arg[2] then f = io.open(arg[2], "w") else f = io.stdout end
for _, line in pairs(po) do f:write(line, "\n") end
f:close()
 
invtemplate.lua - то же самое, только перевод будет пустой.
Lua
if arg[1] == nil then 
    print "Usage: lua invtemplate.lua input.po [output.po]"
    os.exit()
end
 
if arg[2] then f = io.open(arg[2], "w") else f = io.stdout end
 
for line in io.lines(arg[1]) do
    if line:sub(1, 6) == "msgstr" then
        f:write("msgid ", line:sub(7), "\nmsgstr \"\"\n")
    elseif line:sub(1, 5) ~= "msgid" then
        f:write(line, "\n")
    end
end
 
f:close()
 
Интерпретатор под винду в аттаче со скриптами, под другие платформы - см. 
Lua Binaries и 
Lua.org.