comment_list.inc': $pre .= $default_pre .= 'comment_list.inc.htm'; break; case 'message': $pre .= $default_pre .= 'message.htm'; break; case 'tag_list': $pre .= $default_pre .= 'tag_list.htm'; break; case 'tag': $pre .= $default_pre .= 'tag.htm'; break; case 'flag': $pre .= $default_pre .= 'flag.htm'; break; case 'my': $pre .= $default_pre .= 'my.htm'; break; case 'my_password': $pre .= $default_pre .= 'my_password.htm'; break; case 'my_bind': $pre .= $default_pre .= 'my_bind.htm'; break; case 'my_avatar': $pre .= $default_pre .= 'my_avatar.htm'; break; case 'home_article': $pre .= $default_pre .= 'home_article.htm'; break; case 'home_comment': $pre .= $default_pre .= 'home_comment.htm'; break; case 'user': $pre .= $default_pre .= 'user.htm'; break; case 'user_login': $pre .= $default_pre .= 'user_login.htm'; break; case 'user_create': $pre .= $default_pre .= 'user_create.htm'; break; case 'user_resetpw': $pre .= $default_pre .= 'user_resetpw.htm'; break; case 'user_resetpw_complete': $pre .= $default_pre .= 'user_resetpw_complete.htm'; break; case 'user_comment': $pre .= $default_pre .= 'user_comment.htm'; break; case 'single_page': $pre .= $default_pre .= 'single_page.htm'; break; case 'search': $pre .= $default_pre .= 'search.htm'; break; case 'operate_sticky': $pre .= $default_pre .= 'operate_sticky.htm'; break; case 'operate_close': $pre .= $default_pre .= 'operate_close.htm'; break; case 'operate_delete': $pre .= $default_pre .= 'operate_delete.htm'; break; case 'operate_move': $pre .= $default_pre .= 'operate_move.htm'; break; case '404': $pre .= $default_pre .= '404.htm'; break; case 'read_404': $pre .= $default_pre .= 'read_404.htm'; break; case 'list_404': $pre .= $default_pre .= 'list_404.htm'; break; default: $pre .= $default_pre .= theme_mode_pre(); break; } if ($config['theme']) { $conffile = APP_PATH . 'view/template/' . $config['theme'] . '/conf.json'; $json = is_file($conffile) ? xn_json_decode(file_get_contents($conffile)) : array(); } !empty($json['installed']) and $path_file = APP_PATH . 'view/template/' . $config['theme'] . '/htm/' . ($id ? $id . '_' : '') . $pre; (empty($path_file) || !is_file($path_file)) and $path_file = APP_PATH . 'view/template/' . $config['theme'] . '/htm/' . $pre; if (!empty($config['theme_child']) && is_array($config['theme_child'])) { foreach ($config['theme_child'] as $theme) { if (empty($theme) || is_array($theme)) continue; $path_file = APP_PATH . 'view/template/' . $theme . '/htm/' . ($id ? $id . '_' : '') . $pre; !is_file($path_file) and $path_file = APP_PATH . 'view/template/' . $theme . '/htm/' . $pre; } } !is_file($path_file) and $path_file = APP_PATH . ($dir ? 'plugin/' . $dir . '/view/htm/' : 'view/htm/') . $default_pre; return $path_file; } function theme_mode_pre($type = 0) { global $config; $mode = $config['setting']['website_mode']; $pre = ''; if (1 == $mode) { $pre .= 2 == $type ? 'portal_category.htm' : 'portal.htm'; } elseif (2 == $mode) { $pre .= 2 == $type ? 'flat_category.htm' : 'flat.htm'; } else { $pre .= 2 == $type ? 'index_category.htm' : 'index.htm'; } return $pre; } ?>javascript - Can not read property of undefined i18n - Stack Overflow
最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - Can not read property of undefined i18n - Stack Overflow

programmeradmin1浏览0评论

When I try to pass language dynamically from select dropdown list, It shows following error:

Uncaught TypeError: Cannot read property 'properties' of undefined at changeLanguage

where changeLanguage is my function as follows:

function changeLanguage(lang) 
{ 
 lang = lang || "en_EN"; // if no language is set, use the browser's default 
 jQuery.i18n.properties({ 
 path : 'language', 
 mode : 'both', language: lang,
 name: 'Messages', 
 callback: refresh_i18n }); 
}

The following are the pictures of it:

What is wrong with the code? Please do suggest! Thanks

UPDATE: FOR MORE EXPLANATION: This is my index file and initially I call it with onload it works fine.

<script> 
function refresh_i18n() { 
  console.log('Some code...') 
} 
function changeLanguage(lang) { 
     lang = lang || "en_EN"; 
     jQuery.i18n.properties({ 
     path : 'js/libs/language', 
     mode : 'both', 
     language: lang, 
     callback: refresh_i18n 
   });
} 
changeLanguage("en_US"); 
</script>

but when i call by changing dropdown like:

$('#selectLanguage').change(function(){ 
    changeLanguage(this.value); 
});

It gives above error

When I try to pass language dynamically from select dropdown list, It shows following error:

Uncaught TypeError: Cannot read property 'properties' of undefined at changeLanguage

where changeLanguage is my function as follows:

function changeLanguage(lang) 
{ 
 lang = lang || "en_EN"; // if no language is set, use the browser's default 
 jQuery.i18n.properties({ 
 path : 'language', 
 mode : 'both', language: lang,
 name: 'Messages', 
 callback: refresh_i18n }); 
}

The following are the pictures of it:

What is wrong with the code? Please do suggest! Thanks

UPDATE: FOR MORE EXPLANATION: This is my index file and initially I call it with onload it works fine.

<script> 
function refresh_i18n() { 
  console.log('Some code...') 
} 
function changeLanguage(lang) { 
     lang = lang || "en_EN"; 
     jQuery.i18n.properties({ 
     path : 'js/libs/language', 
     mode : 'both', 
     language: lang, 
     callback: refresh_i18n 
   });
} 
changeLanguage("en_US"); 
</script>

but when i call by changing dropdown like:

$('#selectLanguage').change(function(){ 
    changeLanguage(this.value); 
});

It gives above error

Share Improve this question edited Jun 15, 2023 at 23:45 Michael M. 11.1k11 gold badges21 silver badges44 bronze badges asked Jul 12, 2017 at 10:51 BharatBharat 1392 gold badges4 silver badges17 bronze badges 3
  • 1 Have you added i18n reference and initialized it? – Ved Commented Jul 12, 2017 at 10:55
  • 1 Did you properly include the library? github./wikimedia/jquery.i18n – Matus Commented Jul 12, 2017 at 10:56
  • update your question. Do not add code in ments. – Ved Commented Jul 12, 2017 at 11:07
Add a ment  | 

1 Answer 1

Reset to default 1

Probrably the i18n library is loading before the jquery (problems haha).

So, put the jQuery loading in the head of the html and the plugin i18n (and others, if you are using) in the body (I suggest in the end of body) of the html.

That must solve the problem.

发布评论

评论列表(0)

  1. 暂无评论