id = "poedit" name = "Poedit" homepage = "https://poedit.net" # The project's own repository description. description = "Simple translation editor for PO, XLIFF, JSON etc. for Mac/Windows/Unix" # The SVG favicon Poedit's own site serves. icon = "https://poedit.com/favicon.svg" executables = ["poedit"] [dotfiles] # src/edapp.cpp in the project's own source picks the config file per platform: # # #if defined(__WXOSX__) # #define CFG_FILE (wxStandardPaths::Get().GetUserConfigDir() + "/net.poedit.Poedit.cfg") # #elif defined(__UNIX__) # ... wxGetEnv("XDG_CONFIG_HOME", &xdgConfigHome) else wxGetHomeDir() + "/.config"; # wxString configFile = xdgConfigHome + "/poedit" + "/config"; # #else # #define CFG_FILE wxString() // Windows: wxConfig falls back to the registry # #endif # Config::Initialize(CFG_FILE.ToStdWstring()); # # so: # * macOS — wxStandardPaths' user config dir is ~/Library/Preferences, which # is [preferences]; the Homebrew cask's zap stanza lists exactly # ~/Library/Preferences/net.poedit.Poedit.cfg # (https://formulae.brew.sh/api/cask/poedit.json). It is a wxFileConfig # text file, not a property list, despite living there. # * Linux — Poedit reads $XDG_CONFIG_HOME itself, which is what [configHome] # names. On macOS Poedit takes the branch above instead and on Windows it # uses the registry, so on those two a consumer simply finds no such file. paths = [ "[preferences]/net.poedit.Poedit.cfg", "[configHome]/poedit/config", ] # ~/Library/Application Support/Poedit, which the same zap stanza lists, is the # translation memory database rather than settings, and it is not named above. exclude = [] # Nothing in the config file is a credential: src/crowdin_client.cpp puts the # Crowdin OAuth token in the system keychain instead — # `keytar::AddPassword("Crowdin", "", "2:" + ct.encoded)` — and reads it back # with keytar::GetPassword, never through wxConfig. secret = [] # The two files are the same wxFileConfig format — `[group]` headers and # `key=value` lines — so one rule with both spellings covers them, and a prefix # rule reads them without needing a `format`. `last_file_path`, which # src/edframe.cpp reads and writes by that name, is the directory the last # catalog was opened from: an absolute path into one machine's filesystem. # Everything else in the file — the translator name and e-mail, spellchecking, # the editor font, the update settings — is a preference the user wants # everywhere. [[dotfiles.machine_lines]] file = ["[preferences]/net.poedit.Poedit.cfg", "[configHome]/poedit/config"] match = { prefix = ["last_file_path"] }