Building a Multi-Language Translation System for SumatraPDF Windows Application
By
jandeboevrie
The bagel they save for the regulars. Don't skim, savour.
Summary
This article details the implementation of a UI translation system for SumatraPDF, a popular C++ Windows application for viewing PDFs, eBooks, and comic books. The author explains the challenges of translating an application's user interface, particularly handling 381 strings across 72 supported languages. The content focuses on the technical design decisions and implementation approach for creating a robust translation framework in a native Win32 C++ environment.
Key quotes
· 5 pulledSumatraPDF is the best PDF/eBook/Comic Book viewer for Windows. It's small, fast, full of features, free and open-source.
It became popular enough that it made sense to translate the UI for non-English users. Currently we support 72 languages.
This article describes how I designed and implemented a translation system in SumatraPDF, a native win32 C++ Windows application.
There are 2 hard things about translating an application
Currently there are 381 strings in SumatraPDF subject to translation
You might also wanna read
Algebras AI Launches Full-Stack Localization Agent for 300+ Languages with Next.js Support
Algebras AI introduces a full-stack AI agent for localization that supports 300+ languages, featuring a QA-safe UI and open-source CLI for a
Why Average LLM Use Is Likely Destroying Value in Software Development
The author argues that, contrary to prevailing hype, the average use of Large Language Models (LLMs) is likely destroying value rather than
How AI Accelerated Prototyping: From Idea to Tangible in Record Time
The author reflects on how AI has transformed their prototyping workflow. Previously, the biggest bottleneck was the time needed to scaffold
GitLab 19.0 launches with Secrets Manager, agentic workflows, and self-hosted AI models
GitLab 19.0 has been released, positioning itself as an intelligent orchestration platform for DevSecOps. The release includes expanded secr
bit.ly·1d agoCentralizing Error Handling in Rust with Custom AppError Enums
This article discusses the importance of centralizing error handling in Rust applications using a custom AppError enum combined with map_err
Zig Devlog: Build System Rework Separates Maker and Configurer Processes
This devlog entry from the Zig programming language project announces a major rework of the build system, separating the maker process from
