webmcp
annotate framework/env/locale/_get_translation_table.lua @ 157:004d2d50419e
Allow direct usage of json.null values in JSON library (for writing, not reading)
| author | jbe | 
|---|---|
| date | Thu Jul 31 03:45:33 2014 +0200 (2014-07-31) | 
| parents | 3d43a5cf17c1 | 
| children | 2cb27106aa73 | 
| rev | line source | 
|---|---|
| jbe/bsw@0 | 1 function locale._get_translation_table() | 
| jbe/bsw@0 | 2 local language_code = locale.get("lang") | 
| jbe/bsw@0 | 3 if language_code then | 
| jbe/bsw@0 | 4 if type(language_code) ~= "string" then | 
| jbe/bsw@0 | 5 error('locale.get("lang") does not return a string.') | 
| jbe/bsw@0 | 6 end | 
| jbe/bsw@0 | 7 local translation_table = locale._translation_tables[language_code] | 
| jbe/bsw@0 | 8 if translation_table then | 
| jbe/bsw@0 | 9 return translation_table | 
| jbe/bsw@0 | 10 end | 
| jbe/bsw@0 | 11 local filename = encode.file_path(request.get_app_basepath(), "locale", "translations." .. language_code .. ".lua") | 
| jbe@64 | 12 local func | 
| jbe@64 | 13 if _ENV then | 
| jbe@64 | 14 func = assert(loadfile(filename), nil, {}) | 
| jbe@64 | 15 else | 
| jbe@64 | 16 func = assert(loadfile(filename)) | 
| jbe@64 | 17 setfenv(func, {}) | 
| jbe@64 | 18 end | 
| jbe/bsw@0 | 19 translation_table = func() | 
| jbe/bsw@0 | 20 if type(translation_table) ~= "table" then | 
| jbe/bsw@0 | 21 error("Translation file did not return a table.") | 
| jbe/bsw@0 | 22 end | 
| jbe/bsw@0 | 23 locale._translation_tables[language_code] = translation_table | 
| jbe/bsw@0 | 24 return translation_table | 
| jbe/bsw@0 | 25 else | 
| jbe/bsw@0 | 26 return locale._empty_translation_table | 
| jbe/bsw@0 | 27 end | 
| jbe/bsw@0 | 28 end |