A simple, idiomatic internationalization and localization library for Clojure and ClojureScript.
Tower is an internationalization and localization library for Clojure and ClojureScript that simplifies building multilingual applications. It provides a clean, functional API for handling translations, date/number formatting, and locale-aware sorting, wrapping Java's standard localization tools in a more idiomatic Clojure interface. The library addresses the cumbersome nature of Java's i18n tools by offering map-based dictionaries, automatic reloading, and seamless ClojureScript support.
Clojure and ClojureScript developers building web or desktop applications that require multilingual support, such as internationalized web apps, SaaS platforms, or localized software tools.
Developers choose Tower for its simplicity, idiomatic Clojure design, and practical features like dev-mode dictionary reloading and Markdown support. It reduces the boilerplate associated with Java's i18n APIs while maintaining compatibility and offering a smooth migration path for existing projects.
i18n & L10n library for Clojure/Script
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Uses Clojure maps for translations instead of XML or resource files, making dictionaries easy to write, maintain, and version control directly in code.
Enables real-time dictionary updates during development with the :dev-mode? option, perfect for REPL-driven workflows without app restarts.
Allows translators to use Markdown in strings with automatic HTML escaping (unless marked with '!'), balancing flexibility and security against XSS.
Implements hierarchical locale and key fallbacks to handle missing translations gracefully, reducing runtime errors and improving user experience.
The library is no longer actively maintained (EOL as of 2016), with the author focusing on newer projects like Tempura, limiting future support and enhancements.
Due to ClojureScript's lack of a locale-aware format function, translations cannot use Java-style formatting patterns, restricting advanced localization features in the browser.
Designed before the rise of React and modern ClojureScript, the API carries legacy decisions that may not align with current best practices or developer expectations.