Skip to content


Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP


Dynamic output does not work with hoganjs templates #13

yar0d opened this Issue · 4 comments

3 participants



I'm using Express + Hogan + Lingua for my application. Static translations works well, but dynamic output always results in an empty translation.

Can you help me, please ?

Here is my template test.hjs

<!DOCTYPE html>
<html lang="en">
    <meta charset="utf-8">

And the nodejs module test.js

exports.dialog = function () {
    var show = function (req, res) {
        res.render('test', {
            app: {
                version: '0.0.1'

    return {
        show: show

My en.json file

    "application": {
        "title": "My i18n test app",
        "name": "Test version {version}"

The rendered result :

My i18n test app



Hello yar0d,

thank you for your response. Is good to see that people using lingua with different template engines. One aim of lingua is to make it compatible with as much template engines as possible.

I never used hogan.js in any of my projects before so that I have to create a testcase to see what really happens. Give me a little bit of time to do some research as I'm pretty busy with other stuff at the moment.




I'm also interested in using express-lingua with Hogan. Is there any chance that this issue was resolved?

Many thanks,


express-lingua does not support Hogan.js. After some research I do not see a way to support this template engine in the near future. There might be a possibility in using the "lambda expression" like


but it does not really execute the respective compile function within lingua. I do not use Hogan in any of my projects. So there might be a way. Any idea regarding this topic is much appreciated.


This might not directly relate to lingua, but we did get this working with i18n-node / Express.js / Hogan.js by using Hogan lambdas.

Express.js config:

viewLocale = require('../middleware/view-locale');
var i18n = require('i18n');
this.use(viewLocale(i18n)); //Register middleware for using {{#__}} and {{#localize}} in views

Contents of "view-locale" file:

//Capture localization lambda to i18n its contents
module.exports = function (i18n){
    //register helper function for views
    return function(req, res, next) {
        // View helper: {{#__}} and {{#localize}} will both be used to localize text in views
        res.locals.localize = res.locals.__ =  function localizeInView() {
            return function(text, render) {
                return i18n.__.apply(req, arguments);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Something went wrong with that request. Please try again.