Browse Source

test `_(Value)` translations (#131)

Support trans_fun/1 as compile time translation fun too..
Andreas Stenius 11 years ago
parent
commit
b7129725b2
2 changed files with 9 additions and 4 deletions
  1. 5 3
      src/erlydtl_beam_compiler.erl
  2. 4 1
      test/erlydtl_test_defs.erl

+ 5 - 3
src/erlydtl_beam_compiler.erl

@@ -875,7 +875,10 @@ translated_ast({string_literal, _, String}, Context, TreeWalker) ->
             case TreeWalker#treewalker.context#dtl_context.trans_fun of
                 none -> runtime_trans_ast(Text, Context, TreeWalker);
                 Fun when is_function(Fun, 2) ->
-                    compiletime_trans_ast(Text, Context, TreeWalker)
+                    compiletime_trans_ast(Fun, Text, Context, TreeWalker);
+                Fun when is_function(Fun, 1) ->
+                    compiletime_trans_ast(fun (T, _) -> Fun(T) end,
+                                          Text, Context, TreeWalker)
             end;
         TranslatedAst ->
             TranslatedAst
@@ -894,10 +897,9 @@ runtime_trans_ast({{ValueAst, AstInfo}, TreeWalker}, Context) ->
     {{?Q("erlydtl_runtime:translate(_@ValueAst, {_CurrentLocale, _@Context@}, _TranslationFun)"),
       AstInfo}, TreeWalker}.
 
-compiletime_trans_ast(Text, LContext,
+compiletime_trans_ast(TFun, Text, LContext,
                       #treewalker{
                          context=#dtl_context{
-                                    trans_fun=TFun,
                                     trans_locales=TLocales
                                    }=Context
                         }=TreeWalker) ->

+ 4 - 1
test/erlydtl_test_defs.erl

@@ -1290,7 +1290,10 @@ all_test_defs() ->
         <<"Hello Hi">>},
        {"trans as",
         <<"{% trans 'Hans' as name %}Hello {{ name }}">>, [],
-        <<"Hello Hans">>}
+        <<"Hello Hans">>},
+       {"trans value",
+        <<"{{ _('foo') }}">>, [], [], [{locale, none}, {blocktrans_fun, fun ("foo") -> "bar" end}],
+        <<"bar">>}
       ]},
      {"blocktrans",
       [{"blocktrans default locale",