You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dubbo.apache.org by hu...@apache.org on 2018/07/23 10:14:24 UTC

[incubator-dubbo-ops] branch master updated: i18n support (#74)

This is an automated email from the ASF dual-hosted git repository.

huxing pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-dubbo-ops.git


The following commit(s) were added to refs/heads/master by this push:
     new f0834e8  i18n support (#74)
f0834e8 is described below

commit f0834e878072ebde21fc6c9f2577baed84da60ce
Author: min <z8...@gmail.com>
AuthorDate: Mon Jul 23 18:14:22 2018 +0800

    i18n support (#74)
---
 .../templates/governance/layout/default.vm         |  74 ++++----
 .../templates/governance/screen/accesses/add.vm    |  28 +--
 .../templates/governance/screen/accesses/index.vm  |  38 ++--
 .../templates/governance/screen/addresses/index.vm |  18 +-
 .../governance/screen/applications/index.vm        | 118 ++++++-------
 .../templates/governance/screen/consumers/edit.vm  |  82 ++++-----
 .../templates/governance/screen/consumers/index.vm | 196 ++++++++++-----------
 .../governance/screen/consumers/notified.vm        |  76 ++++----
 .../governance/screen/consumers/routed.vm          |  78 ++++----
 .../templates/governance/screen/consumers/show.vm  |  80 ++++-----
 .../governance/screen/loadbalances/add.vm          |  40 ++---
 .../governance/screen/loadbalances/edit.vm         |  26 +--
 .../governance/screen/loadbalances/index.vm        |  50 +++---
 .../governance/screen/loadbalances/show.vm         |  10 +-
 .../templates/governance/screen/overrides/add.vm   |  76 ++++----
 .../templates/governance/screen/overrides/edit.vm  |  94 +++++-----
 .../templates/governance/screen/overrides/index.vm |  52 +++---
 .../templates/governance/screen/overrides/show.vm  |  42 ++---
 .../templates/governance/screen/owners/add.vm      |  14 +-
 .../templates/governance/screen/owners/index.vm    |  16 +-
 .../templates/governance/screen/providers/add.vm   |  26 +--
 .../templates/governance/screen/providers/edit.vm  |  60 +++----
 .../templates/governance/screen/providers/index.vm | 144 +++++++--------
 .../templates/governance/screen/providers/show.vm  |  72 ++++----
 .../templates/governance/screen/redirect.vm        |   6 +-
 .../templates/governance/screen/routes/add.vm      |  86 ++++-----
 .../templates/governance/screen/routes/edit.vm     |  98 +++++------
 .../templates/governance/screen/routes/index.vm    |  92 +++++-----
 .../templates/governance/screen/routes/show.vm     |  44 ++---
 .../templates/governance/screen/services/index.vm  | 116 ++++++------
 .../templates/governance/screen/weights/add.vm     |  24 +--
 .../templates/governance/screen/weights/edit.vm    |  20 +--
 .../templates/governance/screen/weights/index.vm   |  30 ++--
 .../templates/governance/screen/weights/show.vm    |  22 +--
 .../main/resources/templates/home/control/menu.vm  |  52 +++---
 .../main/resources/templates/home/screen/index.vm  |  98 +++++------
 .../resources/templates/sysinfo/layout/default.vm  |  30 ++--
 .../templates/sysinfo/screen/dumps/index.vm        |  34 ++--
 .../templates/sysinfo/screen/envs/index.vm         |   6 +-
 .../templates/sysinfo/screen/logs/index.vm         |  10 +-
 .../templates/sysinfo/screen/statuses/index.vm     |  24 +--
 .../templates/sysinfo/screen/versions/index.vm     |   6 +-
 .../templates/sysinfo/screen/versions/show.vm      |   6 +-
 43 files changed, 1157 insertions(+), 1157 deletions(-)

diff --git a/dubbo-admin/src/main/resources/templates/governance/layout/default.vm b/dubbo-admin/src/main/resources/templates/governance/layout/default.vm
index 3ef9247..9db4781 100644
--- a/dubbo-admin/src/main/resources/templates/governance/layout/default.vm
+++ b/dubbo-admin/src/main/resources/templates/governance/layout/default.vm
@@ -33,58 +33,58 @@
 <script language="javascript">setActiveTab(2);</script>
 <div class="dubbo_search">
     <div class="title title_search"><h2>
-        #if($_method != "index")#springMessage($_method)#end #springMessage($_type)
+        #if($_method != "index")#springMessageText($_method,$_method)#end #springMessageText($_type,$_type)
     </h2></div>
     <div class="crumbs">
-        <a href="$rootContextPath.getURI("/")">#springMessage("home")</a> &gt; #springMessage("governance")
+        <a href="$rootContextPath.getURI("/")">#springMessageText("home", "home")</a> &gt; #springMessageText("governance", "governance")
         #if($app && $app != '*')
             &gt;
-            #springMessage("applications")
+            #springMessageText("applications", "applications")
             &gt; $app
         #end
         #if($service && $service != '*')
             &gt;
             #if($app && $app != '*')
-                <a href="$rootContextPath.getURI("/governance/applications")/$app/services">#springMessage(
-                    "services")</a>
+                <a href="$rootContextPath.getURI("/governance/applications")/$app/services">#springMessageText(
+                    "services","addresses")</a>
             #else
-                #springMessage("services")
+                #springMessageText("services", "services")
             #end
             &gt; $service
         #elseif($address && $address != '*')
             &gt;
             #if($app && $app != '*')
-                <a href="$rootContextPath.getURI("/governance/applications")/$app/addresses">#springMessage(
-                    "addresses")</a>
+                <a href="$rootContextPath.getURI("/governance/applications")/$app/addresses">#springMessageText(
+                    "addresses","addresses")</a>
             #else
-                #springMessage("addresses")
+                #springMessageText("addresses", "addresses")
             #end
             &gt; $address
         #end
         #if($_method == "index")
-            &gt; #springMessage($_type)
+            &gt; #springMessageText($_type, $_type)
         #else
             &gt;
             #if($_method == "show")
-                <a href="../$_type">#springMessage($_type)</a>
+                <a href="../$_type">#springMessageText($_type, $_type)</a>
             #elseif($id)
-                <a href="../../$_type">#springMessage($_type)</a>
+                <a href="../../$_type">#springMessageText($_type, $_type)</a>
             #else
-                <a href="../$_type">#springMessage($_type)</a>
+                <a href="../$_type">#springMessageText($_type, $_type)</a>
             #end
             &gt;
             #if($id)$id &gt;#end
-            #springMessage($_method)
+            #springMessageText($_method,$_method)
         #end
     </div>
     <div class="search_o" id="Tab1">
         <div class="search_categories">
             <ul>
-                <li id="one1" onclick="setTab2('one',1,3); return false;"><a href="#">#springMessage("service")</a><span
+                <li id="one1" onclick="setTab2('one',1,3); return false;"><a href="#">#springMessageText("service", "service")</a><span
                         class="search_line">|</span></li>
-                <li id="one2" onclick="setTab2('one',2,3); return false;"><a href="#">#springMessage("application")</a><span
+                <li id="one2" onclick="setTab2('one',2,3); return false;"><a href="#">#springMessageText("application", "application")</a><span
                         class="search_line">|</span></li>
-                <li id="one3" onclick="setTab2('one',3,3); return false;"><a href="#">#springMessage("address")</a></li>
+                <li id="one3" onclick="setTab2('one',3,3); return false;"><a href="#">#springMessageText("address", "address")</a></li>
             </ul>
         </div>
         <div class="contentbox">
@@ -131,7 +131,7 @@
                                     "show" || $_method == "add" || $_method == "addMock")../#elseif($_method ==
                                     "edit" || $_method == "editMock" || $_method == "routed" || $_method ==
                                     "notified" || $_method == "preview" || $_method == "routeselect" || $_method ==
-                                    "testrun" || $_method == "notified")../../#{end}$tab';">#springMessage($tab)</li>
+                                    "testrun" || $_method == "notified")../../#{end}$tab';">#springMessageText($tab, $tab)</li>
                         #end
                     #end
                 </ul>
@@ -152,14 +152,14 @@
                                 style="cursor: pointer;" width="20" height="20"/></td>
         </tr>
         <tr height="120">
-            <td align="right"><span id="alertText" style="font-size: 32px;">#springMessage("please.input")</span><br/><span
+            <td align="right"><span id="alertText" style="font-size: 32px;">#springMessageText("please.input", "please.input")</span><br/><span
                     id="alertData" style="font-size: 12px;"></span></td>
             <td></td>
         </tr>
         <tr>
             <td align="right">
-                <div class="btn_info" style="float: right; clear: left;"><a href="#" onclick="alertOK();">#springMessage(
-                    "confirm")</a></div>
+                <div class="btn_info" style="float: right; clear: left;"><a href="#" onclick="alertOK();">#springMessageText(
+                    "confirm","confirm")</a></div>
             </td>
             <td></td>
         </tr>
@@ -173,16 +173,16 @@
                                 style="cursor: pointer;" width="20" height="20"/></td>
         </tr>
         <tr height="120">
-            <td align="right"><span id="confirmText" style="font-size: 32px;">#springMessage("confirm")</span><br/><span
+            <td align="right"><span id="confirmText" style="font-size: 32px;">#springMessageText("confirm", "confirm")</span><br/><span
                     id="confirmData" style="font-size: 12px;"></span></td>
             <td></td>
         </tr>
         <tr>
             <td align="right">
                 <div class="btn_info" style="float: right; clear: left;"><a href="#"
-                                                                            onclick="confirmCancel();">#springMessage(
-                    "cancel")</a></div>&nbsp;&nbsp;&nbsp;&nbsp;<div class="btn_info" style="float: right; clear: left;">
-                <a href="#" onclick="confirmOK();">#springMessage("confirm")</a></div>
+                                                                            onclick="confirmCancel();">#springMessageText(
+                    "cancel","cancel")</a></div>&nbsp;&nbsp;&nbsp;&nbsp;<div class="btn_info" style="float: right; clear: left;">
+                <a href="#" onclick="confirmOK();">#springMessageText("confirm", "confirm")</a></div>
             </td>
             <td></td>
         </tr>
@@ -203,9 +203,9 @@
             return;
         }
         if (keyword == ''
-                || keyword == '#springMessage("please.input.service")'
-                || keyword == '#springMessage("please.input.application")'
-                || keyword == '#springMessage("please.input.address")') {
+                || keyword == '#springMessageText("please.input.service", "please.input.service")'
+                || keyword == '#springMessageText("please.input.application", "please.input.application")'
+                || keyword == '#springMessageText("please.input.address", "please.input.address")') {
             keyword = '*';
         }
         window.location.href = '$rootContextPath.getURI("governance/")' + searchType + '?keyword=' + keyword;
@@ -228,7 +228,7 @@
         var msg = "";
         var val = "";
         if (cursel == 1) {
-            msg = '#springMessage("please.input.service")';
+            msg = '#springMessageText("please.input.service", "please.input.service")';
             #if($service)
                 #if($keyword)
                     val = '$keyword';
@@ -241,7 +241,7 @@
             searchType = "services";
         }
         else if (cursel == 2) {
-            msg = '#springMessage("please.input.application")';
+            msg = '#springMessageText("please.input.application", "please.input.application")';
             #if($app)
                 #if($keyword)
                     val = '$keyword';
@@ -254,7 +254,7 @@
             searchType = "applications";
         }
         else if (cursel == 3) {
-            msg = '#springMessage("please.input.address")';
+            msg = '#springMessageText("please.input.address", "please.input.address")';
             #if($address)
                 #if($keyword)
                     val = '$keyword';
@@ -272,9 +272,9 @@
     }
     function fnonfocus() {
         var obj = document.getElementById('searchContent');
-        if (obj.value == '#springMessage("please.input.service")'
-                || obj.value == '#springMessage("please.input.application")'
-                || obj.value == '#springMessage("please.input.address")') {
+        if (obj.value == '#springMessageText("please.input.service", "please.input.service")'
+                || obj.value == '#springMessageText("please.input.application", "please.input.application")'
+                || obj.value == '#springMessageText("please.input.address", "please.input.address")') {
             obj.value = '';
         }
     }
@@ -282,11 +282,11 @@
         var obj = document.getElementById('searchContent');
         if (obj.value == '') {
             if (searchType == 'services')
-                obj.value = '#springMessage("please.input.service")';
+                obj.value = '#springMessageText("please.input.service", "please.input.service")';
             else if (searchType == 'applications')
-                obj.value = '#springMessage("please.input.application")';
+                obj.value = '#springMessageText("please.input.application", "please.input.application")';
             else if (searchType == 'addresses')
-                obj.value = '#springMessage("please.input.address")';
+                obj.value = '#springMessageText("please.input.address", "please.input.address")';
         }
     }
 </script>
diff --git a/dubbo-admin/src/main/resources/templates/governance/screen/accesses/add.vm b/dubbo-admin/src/main/resources/templates/governance/screen/accesses/add.vm
index 2f06e16..f358a45 100644
--- a/dubbo-admin/src/main/resources/templates/governance/screen/accesses/add.vm
+++ b/dubbo-admin/src/main/resources/templates/governance/screen/accesses/add.vm
@@ -15,13 +15,13 @@
 #set($layout = "/templates/governance/layout/default.vm")
 <div class="ico_btn">
     <a href="../accesses"><img src="$rootContextPath.getURI("images/ico_back.png")" width="12" height="12"/><span
-            class="ico_font">#springMessage("back")</span></a>
+            class="ico_font">#springMessageText("back", "back")</span></a>
 </div>
 <br/>
 <form id="accessesForm" action="../accesses/create" method="POST">
     <table cellpadding="0" cellspacing="0" class="info">
         <tr>
-            <th width="100">#springMessage("service")&nbsp;&nbsp;<font color='red'>*</font></th>
+            <th width="100">#springMessageText("service", "service")&nbsp;&nbsp;<font color='red'>*</font></th>
             <td>
                 #if($service)
                     <input type="hidden" id="serviceName" name="service" value="$service"/>$service
@@ -29,7 +29,7 @@
                     <textarea id="serviceName" name="service" style="ime-mode:disabled" rows="2" cols="40"></textarea>
                     #if ($serviceList && $serviceList.size() > 0)
                         <select id="selectService" name="selectService" onchange="fnSetService(this)">
-                            <option value="">#springMessage("Choose")</option>
+                            <option value="">#springMessageText("Choose", "Choose")</option>
                             #foreach ($s in $serviceList)
                                 <option value="$s">$tool.getSimpleName($s)</option>
                             #end
@@ -39,7 +39,7 @@
             </td>
         </tr>
         <tr>
-            <th style="width: 100px;">#springMessage("ConsumerAddress"):&nbsp;&nbsp;<font color='red'>*</font></th>
+            <th style="width: 100px;">#springMessageText("ConsumerAddress", "ConsumerAddress"):&nbsp;&nbsp;<font color='red'>*</font></th>
             <td>
                 #if($address)
                     <input type="hidden" id="address" name="address"
@@ -47,24 +47,24 @@
                 #else
                     <textarea id="consumerAddress" name="consumerAddress" rows="2" cols="40"></textarea>
                 #end
-                <font color="blue">#springMessage("BatchAddressTip")</font>
+                <font color="blue">#springMessageText("BatchAddressTip", "BatchAddressTip")</font>
             </td>
         </tr>
         <tr>
-            <th>#springMessage("status"):</th>
+            <th>#springMessageText("status", "status"):</th>
             <td>
                 <select id="allow" name="allow">
-                    <option value="false" selected="selected">#springMessage("Forbidden")</option>
-                    <option value="true">#springMessage("Allowed")</option>
+                    <option value="false" selected="selected">#springMessageText("Forbidden", "Forbidden")</option>
+                    <option value="true">#springMessageText("Allowed", "Allowed")</option>
                 </select>
-                <font color="blue">#springMessage("AccessControlTip")</font>
+                <font color="blue">#springMessageText("AccessControlTip", "AccessControlTip")</font>
             </td>
         </tr>
         <tr>
             <th>
                 <div class="btn"><a href="#"
-                                    onclick="if(check()){document.getElementById('accessesForm').submit();}">#springMessage(
-                    "save")</a></div>
+                                    onclick="if(check()){document.getElementById('accessesForm').submit();}">#springMessageText(
+                    "save","save")</a></div>
             </th>
             <td></td>
         </tr>
@@ -83,12 +83,12 @@
     function check() {
         var serviceName = byId('serviceName').value.trim();
         if (serviceName == '') {
-            showAlert("#springMessage("PleaseInput")#springMessage("service")", 'serviceName');
+            showAlert("#springMessageText("PleaseInput", "PleaseInput")#springMessageText("service", "service")", 'serviceName');
             return false;
         }
         var consumerAddress = byId('consumerAddress').value.trim();
         if (consumerAddress == '') {
-            showAlert("#springMessage("PleaseInput")#springMessage("ConsumerAddress")", 'consumerAddress');
+            showAlert("#springMessageText("PleaseInput", "PleaseInput")#springMessageText("ConsumerAddress", "ConsumerAddress")", 'consumerAddress');
             return false;
         }
         var exp = /^(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])$/;
@@ -98,7 +98,7 @@
             var address = addresses[i];
             if (address != "") {
                 if (!address.match(exp) && !address.match(exp2)) {
-                    showAlert("#springMessage("InvalidIp")", 'consumerAddress');
+                    showAlert("#springMessageText("InvalidIp", "InvalidIp")", 'consumerAddress');
                     return false;
                 }
             }
diff --git a/dubbo-admin/src/main/resources/templates/governance/screen/accesses/index.vm b/dubbo-admin/src/main/resources/templates/governance/screen/accesses/index.vm
index f15740d..b432c0d 100644
--- a/dubbo-admin/src/main/resources/templates/governance/screen/accesses/index.vm
+++ b/dubbo-admin/src/main/resources/templates/governance/screen/accesses/index.vm
@@ -17,42 +17,42 @@
     #if($currentUser.role != "G")
         <a href="accesses/add#if($service)?service=$service#end"><img
                 src="$rootContextPath.getURI("images/ico_add.png")" width="9" height="9"/><span
-                class="ico_font">#springMessage("add")</span></a>
+                class="ico_font">#springMessageText("add", "add")</span></a>
         <span class="ico_line">|</span>
-        <a href="#" onclick="if(! hasCheckbox('ids')) { showAlert('#springMessage(
-            "empty.list")'); } else if(! hasChecked('ids')) { showAlert('#springMessage(
-            "please.select")'); } else { showConfirm('#springMessage(
-            "confirm.batch.delete")', 'accesses' + '/delete?accesses=' + getCheckedAccesses('ids')); } return false;"><img
+        <a href="#" onclick="if(! hasCheckbox('ids')) { showAlert('#springMessageText(
+            "empty.list","empty.list")'); } else if(! hasChecked('ids')) { showAlert('#springMessageText(
+            "please.select","please.select")'); } else { showConfirm('#springMessageText(
+            "confirm.batch.delete","confirm.batch.delete")', 'accesses' + '/delete?accesses=' + getCheckedAccesses('ids')); } return false;"><img
                 src="$rootContextPath.getURI("images/ico_delete.png")" width="12" height="12"/><span
-                class="ico_font">#springMessage("batch.delete")</span></a>
+                class="ico_font">#springMessageText("batch.delete", "batch.delete")</span></a>
     #end
 </div>
 <br/>
 <table cellpadding="0" cellspacing="0" class="list list_dubbo" id="table_o">
     <tr>
         <th width="20"><input type="checkbox" onclick="checkAll('table_o', 'ids', this.checked)"/></th>
-        <th>#springMessage("consumer.address"): <input type="text" onkeyup="searchTable('table_o', 1, this.value);"
+        <th>#springMessageText("consumer.address", "consumer.address"): <input type="text" onkeyup="searchTable('table_o', 1, this.value);"
                                                   onclick="searchTable('table_o', 1, this.value);"/>&nbsp;<img
                 src="$rootContextPath.getURI("images/ico_search.png")" width="12" height="12"/></th>
         #set($column = 2) ## 是否显示 服务名一列
         #if(!$service)
-            <th>#springMessage("service"):
+            <th>#springMessageText("service", "service"):
                 <input type="text" onkeyup="searchTable('table_o', 2, this.value);"
                        onclick="searchTable('table_o', 2, this.value);"/>&nbsp;
                 <img src="$rootContextPath.getURI("images/ico_search.png")" width="12" height="12"/>
             </th>
             #set($column = $column + 1)
         #end
-        <th width="110">#springMessage("type"):
+        <th width="110">#springMessageText("type", "type"):
             <select onchange="searchTable('table_o', $column, this.value);"
                     onclick="searchTable('table_o', $column, this.value);">
-                <option value="">#springMessage("all")</option>
-                <option value="#springMessage("whitelist")">#springMessage("whitelist")</option>
-                <option value="#springMessage("blacklist")">#springMessage("blacklist")</option>
+                <option value="">#springMessageText("all", "all")</option>
+                <option value="#springMessageText("whitelist", "whitelist")">#springMessageText("whitelist", "whitelist")</option>
+                <option value="#springMessageText("blacklist", "blacklist")">#springMessageText("blacklist", "blacklist")</option>
             </select>
         </th>
         #if($currentUser.role != "G")
-            <th width="170">#springMessage("operation")</th>#end
+            <th width="170">#springMessageText("operation", "operation")</th>#end
     </tr>
     #foreach($access in $accesses)
         <tr>
@@ -61,20 +61,20 @@
             #if(!$service)
                 <td><a href="services/$access.service/accesses">$access.service</a></td>
             #end
-            <td>#if($access.allow==true) <font color="green">#springMessage("whitelist")</font> #elseif($access.allow==false)
-                <font color="red">#springMessage("blacklist")</font> #end</td>
+            <td>#if($access.allow==true) <font color="green">#springMessageText("whitelist", "whitelist")</font> #elseif($access.allow==false)
+                <font color="red">#springMessageText("blacklist", "blacklist")</font> #end</td>
             #if($currentUser.role != "G")
                 <td>
-                    <a href="#" onclick="showConfirm('#springMessage(
-                        "confirm.delete")', '$access.address', 'accesses/delete?accesses=$access.service=$access.address'); return false;">
+                    <a href="#" onclick="showConfirm('#springMessageText(
+                        "confirm.delete","confirm.delete")', '$access.address', 'accesses/delete?accesses=$access.service=$access.address'); return false;">
                         <img src="$rootContextPath.getURI("images/ico_delete.png")" width="12" height="12"/>
-                        <span class="ico_font">#springMessage("delete")</span></a>
+                        <span class="ico_font">#springMessageText("delete", "delete")</span></a>
                 </td>
             #end
         </tr>
     #end
 </table>
-<div class="page">#springMessage("page.total")$accesses.size()#springMessage("page.records") </div>
+<div class="page">#springMessageText("page.total", "page.total")$accesses.size()#springMessageText("page.records", "page.records") </div>
 <script language="javascript">
     function getCheckedAccesses(name) {
         var resultController = "";
diff --git a/dubbo-admin/src/main/resources/templates/governance/screen/addresses/index.vm b/dubbo-admin/src/main/resources/templates/governance/screen/addresses/index.vm
index e7fab6e..e86d5ea 100644
--- a/dubbo-admin/src/main/resources/templates/governance/screen/addresses/index.vm
+++ b/dubbo-admin/src/main/resources/templates/governance/screen/addresses/index.vm
@@ -14,7 +14,7 @@
 ##limitations under the License.
 #set($layout = "/templates/governance/layout/default.vm")
 #if(! $addresses || $addresses.size() == 0)
-<font color="red">#springMessage("not.found")</font> (<a href="addresses?keyword=*">#springMessage("show.all") </a>)
+<font color="red">#springMessageText("not.found", "not.found")</font> (<a href="addresses?keyword=*">#springMessageText("show.all", "show.all") </a>)
 #elseif($keyword && $addresses.size() == 1)
 <script type="text/javascript">
         #if($providerAddresses.contains($addresses.iterator().next()))
@@ -26,16 +26,16 @@
 #else
 <table cellpadding="0" cellspacing="0" class="list list_dubbo" id="table_o">
     <tr>
-        <th>#springMessage("address"):
+        <th>#springMessageText("address", "address"):
             <input type="text" onkeyup="searchTable('table_o', 0, this.value);"
                    onclick="searchTable('table_o', 0, this.value);"/>&nbsp;<img
                     src="$rootContextPath.getURI("images/ico_search.png")" width="12" height="12"/>
         </th>
-        <th width="100">#springMessage("role"): <select onchange="searchTable('table_o', 1, this.value);"
+        <th width="100">#springMessageText("role", "role"): <select onchange="searchTable('table_o', 1, this.value);"
                                                    onclick="searchTable('table_o', 1, this.value);">
-            <option value="">#springMessage("all")</option>
-            <option value="#springMessage("provider")">#springMessage("provider")</option>
-            <option value="#springMessage("consumer")">#springMessage("consumer")</option>
+            <option value="">#springMessageText("all", "all")</option>
+            <option value="#springMessageText("provider", "provider")">#springMessageText("provider", "provider")</option>
+            <option value="#springMessageText("consumer", "consumer")">#springMessageText("consumer", "consumer")</option>
         </select></th>
     </tr>
     #foreach($address in $addresses)
@@ -49,14 +49,14 @@
             </td>
             <td>
                 #if($providerAddresses.contains($address))
-                    <font color="green">#springMessage("provider")</font>
+                    <font color="green">#springMessageText("provider", "provider")</font>
                 #end
                 #if($consumerAddresses.contains($address))
-                    <font color="blue">#springMessage("consumer")</font>
+                    <font color="blue">#springMessageText("consumer", "consumer")</font>
                 #end
             </td>
         </tr>
     #end
 </table>
-<div class="page">#springMessage("page.total")$addresses.size()#springMessage("page.records") </div>
+<div class="page">#springMessageText("page.total", "page.total")$addresses.size()#springMessageText("page.records", "page.records") </div>
 #end
\ No newline at end of file
diff --git a/dubbo-admin/src/main/resources/templates/governance/screen/applications/index.vm b/dubbo-admin/src/main/resources/templates/governance/screen/applications/index.vm
index 04b354e..a75e364 100644
--- a/dubbo-admin/src/main/resources/templates/governance/screen/applications/index.vm
+++ b/dubbo-admin/src/main/resources/templates/governance/screen/applications/index.vm
@@ -14,7 +14,7 @@
 ##limitations under the License.
 #set($layout = "/templates/governance/layout/default.vm")
 #if(! $applications || $applications.size() == 0)
-<font color="red">#springMessage("not.found")</font> (<a href="applications?keyword=*">#springMessage("show.all") </a>)
+<font color="red">#springMessageText("not.found", "not.found")</font> (<a href="applications?keyword=*">#springMessageText("show.all", "show.all") </a>)
 #elseif($keyword && $applications.size() == 1)
 <script type="text/javascript">
     window.location.href = "applications/$applications.iterator().next()/services";
@@ -23,41 +23,41 @@
 <div class="ico_btn">
     #if($currentUser.role != "G")
         #if($service)
-            <a href="#" onclick="if(! hasCheckbox('ids')) { showAlert('#springMessage(
-                "empty.list")'); } else if(! hasChecked('ids')) { showAlert('#springMessage(
-                "please.select")'); } else { showConfirm('#springMessage(
-                "confirm.batch.force.mock")', 'applications/0/shield?application=' + getChecked('ids'));} return false;"><img
+            <a href="#" onclick="if(! hasCheckbox('ids')) { showAlert('#springMessageText(
+                "empty.list","empty.list")'); } else if(! hasChecked('ids')) { showAlert('#springMessageText(
+                "please.select","please.select")'); } else { showConfirm('#springMessageText(
+                "confirm.batch.force.mock","confirm.batch.force.mock")', 'applications/0/shield?application=' + getChecked('ids'));} return false;"><img
                     src="$rootContextPath.getURI("images/ico_disable.png")" width="12" height="12"/><span
-                    class="ico_font">#springMessage("batch.force.mock")</span></a>
+                    class="ico_font">#springMessageText("batch.force.mock", "batch.force.mock")</span></a>
             <span class="ico_line">|</span>
-            <a href="#" onclick="if(! hasCheckbox('ids')) { showAlert('#springMessage(
-                "empty.list")'); } else if(! hasChecked('ids')) { showAlert('#springMessage(
-                "please.select")'); } else { showConfirm('#springMessage(
-                "confirm.batch.fail.mock")', 'applications/0/tolerant?application=' + getChecked('ids'));} return false;"><img
+            <a href="#" onclick="if(! hasCheckbox('ids')) { showAlert('#springMessageText(
+                "empty.list","empty.list")'); } else if(! hasChecked('ids')) { showAlert('#springMessageText(
+                "please.select","please.select")'); } else { showConfirm('#springMessageText(
+                "confirm.batch.fail.mock","confirm.batch.fail.mock")', 'applications/0/tolerant?application=' + getChecked('ids'));} return false;"><img
                     src="$rootContextPath.getURI("images/ico_run.png")" width="12" height="12"/><span
-                    class="ico_font">#springMessage("batch.fail.mock")</span></a>
+                    class="ico_font">#springMessageText("batch.fail.mock", "batch.fail.mock")</span></a>
             <span class="ico_line">|</span>
-            <a href="#" onclick="if(! hasCheckbox('ids')) { showAlert('#springMessage(
-                "empty.list")'); } else if(! hasChecked('ids')) { showAlert('#springMessage(
-                "please.select")'); } else { showConfirm('#springMessage(
-                "confirm.batch.cancel.mock")', 'applications/0/recover?application=' + getChecked('ids'));} return false;"><img
+            <a href="#" onclick="if(! hasCheckbox('ids')) { showAlert('#springMessageText(
+                "empty.list","empty.list")'); } else if(! hasChecked('ids')) { showAlert('#springMessageText(
+                "please.select","please.select")'); } else { showConfirm('#springMessageText(
+                "confirm.batch.cancel.mock","confirm.batch.cancel.mock")', 'applications/0/recover?application=' + getChecked('ids'));} return false;"><img
                     src="$rootContextPath.getURI("images/ico_enable.png")" width="12" height="12"/><span
-                    class="ico_font">#springMessage("batch.cancel.mock")</span></a>
+                    class="ico_font">#springMessageText("batch.cancel.mock", "batch.cancel.mock")</span></a>
             <span class="ico_line">|</span>
-            <a href="#" onclick="showConfirm('#springMessage(
-                "confirm.all.force.mock")', 'applications/0/allshield'); return false;"><img
+            <a href="#" onclick="showConfirm('#springMessageText(
+                "confirm.all.force.mock","confirm.all.force.mock")', 'applications/0/allshield'); return false;"><img
                     src="$rootContextPath.getURI("images/ico_cancel.png")" width="12" height="12"/><span
-                    class="ico_font">#springMessage("all.force.mock")</span></a>
+                    class="ico_font">#springMessageText("all.force.mock", "all.force.mock")</span></a>
             <span class="ico_line">|</span>
             <a href="#"
-               onclick="showConfirm('#springMessage("confirm.all.fail.mock")', 'applications/0/alltolerant'); return false;"><img
+               onclick="showConfirm('#springMessageText("confirm.all.fail.mock", "confirm.all.fail.mock")', 'applications/0/alltolerant'); return false;"><img
                     src="$rootContextPath.getURI("images/ico_run.png")" width="12" height="12"/><span
-                    class="ico_font">#springMessage("all.fail.mock")</span></a>
+                    class="ico_font">#springMessageText("all.fail.mock", "all.fail.mock")</span></a>
             <span class="ico_line">|</span>
-            <a href="#" onclick="showConfirm('#springMessage(
-                "confirm.all.cancel.mock")', 'applications/0/allrecover'); return false;"><img
+            <a href="#" onclick="showConfirm('#springMessageText(
+                "confirm.all.cancel.mock","confirm.all.cancel.mock")', 'applications/0/allrecover'); return false;"><img
                     src="$rootContextPath.getURI("images/ico_enable.png")" width="12" height="12"/><span
-                    class="ico_font">#springMessage("all.cancel.mock")</span></a>
+                    class="ico_font">#springMessageText("all.cancel.mock", "all.cancel.mock")</span></a>
         #end
     #end
 </div>
@@ -65,26 +65,26 @@
 <table cellpadding="0" cellspacing="0" class="list list_dubbo" id="table_o">
     <tr>
         <th width="20"><input type="checkbox" onclick="checkAll('table_o', 'ids', this.checked)"/></th>
-        <th>#springMessage("application"):
+        <th>#springMessageText("application", "application"):
             <input type="text" onkeyup="searchTable('table_o', 1, this.value);"
                    onclick="searchTable('table_o', 1, this.value);"/>&nbsp;<img
                     src="$rootContextPath.getURI("images/ico_search.png")" width="12" height="12"/>
         </th>
-        <th width="110">#springMessage("role"): <select onchange="searchTable('table_o', 2, this.value);"
+        <th width="110">#springMessageText("role", "role"): <select onchange="searchTable('table_o', 2, this.value);"
                                                    onclick="searchTable('table_o', 2, this.value);">
-            <option value="">#springMessage("all")</option>
-            <option value="#springMessage("provider")">#springMessage("provider")</option>
-            <option value="#springMessage("consumer")">#springMessage("consumer")</option>
+            <option value="">#springMessageText("all", "all")</option>
+            <option value="#springMessageText("provider", "provider")">#springMessageText("provider", "provider")</option>
+            <option value="#springMessageText("consumer", "consumer")">#springMessageText("consumer", "consumer")</option>
         </select></th>
         #if($service)
-            <th width="110">#springMessage("mock"): <select onchange="searchTable('table_o', 3, this.value);"
+            <th width="110">#springMessageText("mock", "mock"): <select onchange="searchTable('table_o', 3, this.value);"
                                                        onclick="searchTable('table_o', 3, this.value);">
-                <option value="">#springMessage("all")</option>
-                <option value="#springMessage("ok")">#springMessage("ok")</option>
-                <option value="#springMessage("force.mock")">#springMessage("force.mock")</option>
-                <option value="#springMessage("fail.mock")">#springMessage("fail.mock")</option>
+                <option value="">#springMessageText("all", "all")</option>
+                <option value="#springMessageText("ok", "ok")">#springMessageText("ok", "ok")</option>
+                <option value="#springMessageText("force.mock", "force.mock")">#springMessageText("force.mock", "force.mock")</option>
+                <option value="#springMessageText("fail.mock", "fail.mock")">#springMessageText("fail.mock", "fail.mock")</option>
             </select></th>
-            <th>#springMessage("operation")</th>
+            <th>#springMessageText("operation", "operation")</th>
         #end
     </tr>
     #foreach($app in $applications)
@@ -93,10 +93,10 @@
             <td>#if($service)$app#else<a href="applications/$app/services">$app</a>#end</td>
             <td>
                 #if($providerApplications.contains($app))
-                    <font color="green">#springMessage("provider")</font>
+                    <font color="green">#springMessageText("provider", "provider")</font>
                 #end
                 #if($consumerApplications.contains($app))
-                    <font color="blue">#springMessage("consumer")</font>
+                    <font color="blue">#springMessageText("consumer", "consumer")</font>
                 #end
             </td>
             #if($service)
@@ -104,11 +104,11 @@
                     #if($consumerApplications.contains($app))
                         #set($mock=$tool.getOverridesMock($overrides.get($app)))
                         #if($mock == "force%3Areturn+null")
-                            <font color="red">#springMessage("force.mocked")</font>
+                            <font color="red">#springMessageText("force.mocked", "force.mocked")</font>
                         #elseif ($mock == "fail%3Areturn+null")
-                            <font color="blue">#springMessage("fail.mocked")</font>
+                            <font color="blue">#springMessageText("fail.mocked", "fail.mocked")</font>
                         #else
-                            <font color="gray">#springMessage("no.mocked")</font>
+                            <font color="gray">#springMessageText("no.mocked", "no.mocked")</font>
                         #end
                     #end
                 </td>
@@ -116,35 +116,35 @@
                     #if($consumerApplications.contains($app))
                         #set($mock=$tool.getOverridesMock($overrides.get($app)))
                         #if($mock == "force%3Areturn+null")
-                            <a href="#" onclick="showConfirm('#springMessage(
-                                "confirm.cancel.mock")', '$app -&gt; $service', 'applications/0/recover?application=$app'); return false;"><img
+                            <a href="#" onclick="showConfirm('#springMessageText(
+                                "confirm.cancel.mock","confirm.cancel.mock")', '$app -&gt; $service', 'applications/0/recover?application=$app'); return false;"><img
                                     src="$rootContextPath.getURI("images/ico_enable.png")" width="12" height="12"/><span
-                                    class="ico_font">#springMessage("cancel.mock")</span></a>
+                                    class="ico_font">#springMessageText("cancel.mock", "cancel.mock")</span></a>
                             <span class="ico_line">|</span>
-                            <a href="#" onclick="showConfirm('#springMessage(
-                                "confirm.fail.mock")', '$app -&gt; $service', 'applications/0/tolerant?application=$app'); return false;"><img
+                            <a href="#" onclick="showConfirm('#springMessageText(
+                                "confirm.fail.mock","confirm.fail.mock")', '$app -&gt; $service', 'applications/0/tolerant?application=$app'); return false;"><img
                                     src="$rootContextPath.getURI("images/ico_run.png")" width="12" height="12"/><span
-                                    class="ico_font">#springMessage("fail.mock")</span></a>
+                                    class="ico_font">#springMessageText("fail.mock", "fail.mock")</span></a>
                         #elseif ($mock == "fail%3Areturn+null")
-                            <a href="#" onclick="showConfirm('#springMessage(
-                                "confirm.force.mock")', '$app -&gt; $service', 'applications/0/shield?application=$app'); return false;"><img
+                            <a href="#" onclick="showConfirm('#springMessageText(
+                                "confirm.force.mock","confirm.force.mock")', '$app -&gt; $service', 'applications/0/shield?application=$app'); return false;"><img
                                     src="$rootContextPath.getURI("images/ico_disable.png")" width="12"
-                                    height="12"/><span class="ico_font">#springMessage("force.mock")</span></a>
+                                    height="12"/><span class="ico_font">#springMessageText("force.mock", "force.mock")</span></a>
                             <span class="ico_line">|</span>
-                            <a href="#" onclick="showConfirm('#springMessage(
-                                "confirm.cancel.mock")', '$app -&gt; $service', 'applications/0/recover?application=$app'); return false;"><img
+                            <a href="#" onclick="showConfirm('#springMessageText(
+                                "confirm.cancel.mock","confirm.cancel.mock")', '$app -&gt; $service', 'applications/0/recover?application=$app'); return false;"><img
                                     src="$rootContextPath.getURI("images/ico_enable.png")" width="12" height="12"/><span
-                                    class="ico_font">#springMessage("cancel.mock")</span></a>
+                                    class="ico_font">#springMessageText("cancel.mock", "cancel.mock")</span></a>
                         #else
-                            <a href="#" onclick="showConfirm('#springMessage(
-                                "confirm.force.mock")', '$app -&gt; $service', 'applications/0/shield?application=$app'); return false;"><img
+                            <a href="#" onclick="showConfirm('#springMessageText(
+                                "confirm.force.mock","confirm.force.mock")', '$app -&gt; $service', 'applications/0/shield?application=$app'); return false;"><img
                                     src="$rootContextPath.getURI("images/ico_disable.png")" width="12"
-                                    height="12"/><span class="ico_font">#springMessage("force.mock")</span></a>
+                                    height="12"/><span class="ico_font">#springMessageText("force.mock", "force.mock")</span></a>
                             <span class="ico_line">|</span>
-                            <a href="#" onclick="showConfirm('#springMessage(
-                                "confirm.fail.mock")', '$app -&gt; $service', 'applications/0/tolerant?application=$app'); return false;"><img
+                            <a href="#" onclick="showConfirm('#springMessageText(
+                                "confirm.fail.mock","confirm.fail.mock")', '$app -&gt; $service', 'applications/0/tolerant?application=$app'); return false;"><img
                                     src="$rootContextPath.getURI("images/ico_run.png")" width="12" height="12"/><span
-                                    class="ico_font">#springMessage("fail.mock")</span></a>
+                                    class="ico_font">#springMessageText("fail.mock", "fail.mock")</span></a>
                         #end
                     #end
                 </td>
@@ -152,5 +152,5 @@
         </tr>
     #end
 </table>
-<div class="page">#springMessage("page.total")$applications.size()#springMessage("page.records") </div>
+<div class="page">#springMessageText("page.total", "page.total")$applications.size()#springMessageText("page.records", "page.records") </div>
 #end
\ No newline at end of file
diff --git a/dubbo-admin/src/main/resources/templates/governance/screen/consumers/edit.vm b/dubbo-admin/src/main/resources/templates/governance/screen/consumers/edit.vm
index f38daf3..f91cade 100644
--- a/dubbo-admin/src/main/resources/templates/governance/screen/consumers/edit.vm
+++ b/dubbo-admin/src/main/resources/templates/governance/screen/consumers/edit.vm
@@ -15,55 +15,55 @@
 #set($layout = "/templates/governance/layout/default.vm")
 <div class="ico_btn">
     <a href="../../consumers"><img src="$rootContextPath.getURI("images/ico_back.png")" width="12" height="12"/><span
-            class="ico_font">#springMessage("back")</span></a>
+            class="ico_font">#springMessageText("back", "back")</span></a>
     <span class="ico_line">|</span>
     <a href="../$consumer.id"><img src="$rootContextPath.getURI("images/ico_show.png")" width="12" height="12"/><span
-            class="ico_font">#springMessage("show")</span></a>
+            class="ico_font">#springMessageText("show", "show")</span></a>
     #set($mock=$tool.getConsumerMock($consumer))
     #if($currentUser.hasServicePrivilege($consumer.service))
         <span class="ico_line">|</span>
         #if($mock.equals("force%3Areturn+null"))
-            <a href="#" onclick="showConfirm('#springMessage(
-                "confirm.cancel.mock")', '$consumer.address -&gt; $tool.getSimpleName($consumer.service)', '../$consumer.id/recover'); return false;"><img
+            <a href="#" onclick="showConfirm('#springMessageText(
+                "confirm.cancel.mock","confirm.cancel.mock")', '$consumer.address -&gt; $tool.getSimpleName($consumer.service)', '../$consumer.id/recover'); return false;"><img
                     src="$rootContextPath.getURI("images/ico_enable.png")" width="12" height="12"/><span
-                    class="ico_font">#springMessage("cancel.mock")</span></a>
+                    class="ico_font">#springMessageText("cancel.mock", "cancel.mock")</span></a>
             <span class="ico_line">|</span>
-            <a href="#" onclick="showConfirm('#springMessage(
-                "confirm.fail.mock")', '$consumer.address -&gt; $tool.getSimpleName($consumer.service)', '../$consumer.id/tolerant'); return false;"><img
+            <a href="#" onclick="showConfirm('#springMessageText(
+                "confirm.fail.mock","confirm.fail.mock")', '$consumer.address -&gt; $tool.getSimpleName($consumer.service)', '../$consumer.id/tolerant'); return false;"><img
                     src="$rootContextPath.getURI("images/ico_run.png")" width="12" height="12"/><span
-                    class="ico_font">#springMessage("fail.mock")</span></a>
+                    class="ico_font">#springMessageText("fail.mock", "fail.mock")</span></a>
         #elseif ($mock.equals("fail%3Areturn+null"))
-            <a href="#" onclick="showConfirm('#springMessage(
-                "confirm.force.mock")', '$consumer.address -&gt; $tool.getSimpleName($consumer.service)', '../$consumer.id/shield'); return false;"><img
+            <a href="#" onclick="showConfirm('#springMessageText(
+                "confirm.force.mock","confirm.force.mock")', '$consumer.address -&gt; $tool.getSimpleName($consumer.service)', '../$consumer.id/shield'); return false;"><img
                     src="$rootContextPath.getURI("images/ico_cancel.png")" width="12" height="12"/><span
-                    class="ico_font">#springMessage("force.mock")</span></a>
+                    class="ico_font">#springMessageText("force.mock", "force.mock")</span></a>
             <span class="ico_line">|</span>
-            <a href="#" onclick="showConfirm('#springMessage(
-                "confirm.cancel.mock")', '$consumer.address -&gt; $tool.getSimpleName($consumer.service)', '../$consumer.id/recover'); return false;"><img
+            <a href="#" onclick="showConfirm('#springMessageText(
+                "confirm.cancel.mock","confirm.cancel.mock")', '$consumer.address -&gt; $tool.getSimpleName($consumer.service)', '../$consumer.id/recover'); return false;"><img
                     src="$rootContextPath.getURI("images/ico_enable.png")" width="12" height="12"/><span
-                    class="ico_font">#springMessage("cancel.mock")</span></a>
+                    class="ico_font">#springMessageText("cancel.mock", "cancel.mock")</span></a>
         #else
-            <a href="#" onclick="showConfirm('#springMessage(
-                "confirm.force.mock")', '$consumer.address -&gt; $tool.getSimpleName($consumer.service)', '../$consumer.id/shield'); return false;"><img
+            <a href="#" onclick="showConfirm('#springMessageText(
+                "confirm.force.mock","confirm.force.mock")', '$consumer.address -&gt; $tool.getSimpleName($consumer.service)', '../$consumer.id/shield'); return false;"><img
                     src="$rootContextPath.getURI("images/ico_cancel.png")" width="12" height="12"/><span
-                    class="ico_font">#springMessage("force.mock")</span></a>
+                    class="ico_font">#springMessageText("force.mock", "force.mock")</span></a>
             <span class="ico_line">|</span>
-            <a href="#" onclick="showConfirm('#springMessage(
-                "confirm.fail.mock")', '$consumer.address -&gt; $tool.getSimpleName($consumer.service)', '../$consumer.id/tolerant'); return false;"><img
+            <a href="#" onclick="showConfirm('#springMessageText(
+                "confirm.fail.mock","confirm.fail.mock")', '$consumer.address -&gt; $tool.getSimpleName($consumer.service)', '../$consumer.id/tolerant'); return false;"><img
                     src="$rootContextPath.getURI("images/ico_run.png")" width="12" height="12"/><span
-                    class="ico_font">#springMessage("fail.mock")</span></a>
+                    class="ico_font">#springMessageText("fail.mock", "fail.mock")</span></a>
         #end
     #end
     #if ($consumer.routes && $consumer.routes.size() > 0)
         <span class="ico_line">|</span>
         <a href="../$consumer.id/routed"><img src="$rootContextPath.getURI("images/ico_balance.png")" width="12"
-                                              height="12"/><span class="ico_font">#springMessage("routed")
+                                              height="12"/><span class="ico_font">#springMessageText("routed", "routed")
             ($consumer.routes.size())</span></a>
     #end
     #if ($consumer.providers && $consumer.providers.size() > 0)
         <span class="ico_line">|</span>
         <a href="../$consumer.id/notified"><img src="$rootContextPath.getURI("images/ico_renotify.png")" width="12"
-                                                height="12"/><span class="ico_font">#springMessage("notified")
+                                                height="12"/><span class="ico_font">#springMessageText("notified", "notified")
             ($consumer.providers.size())</span></a>
     #end
 </div>
@@ -77,65 +77,65 @@
         </tr>
         #if(! $service)
             <tr>
-                <th style="width: 100px;">#springMessage("service"):</th>
+                <th style="width: 100px;">#springMessageText("service", "service"):</th>
                 <td>$!consumer.service</td>
             </tr>
         #end
         <tr>
-            <th style="width: 100px;">#springMessage("consumerAddress"):</th>
+            <th style="width: 100px;">#springMessageText("ConsumerAddress", "ConsumerAddress"):</th>
             <td>consumer://$!consumer.address/$!consumer.service?$!consumer.parameters</td>
         </tr>
         <tr>
-            <th>#springMessage("overrides"):</th>
+            <th>#springMessageText("overrides", "overrides"):</th>
             <td><input type="text" name="parameters" value="$!consumer.override.params" class="setting_input"
-                       style="width: 400px;"/> <font color="blue">#springMessage("dynamic.parameters.tip")</font></td>
+                       style="width: 400px;"/> <font color="blue">#springMessageText("dynamic.parameters.tip", "dynamic.parameters.tip")</font></td>
         </tr>
         <tr>
-            <th>#springMessage("mock"):</th>
+            <th>#springMessageText("mock", "mock"):</th>
             <td>
                 #if($mock.equals("force%3Areturn+null"))
-                    <font color="red">#springMessage("force.mocked")</font>
+                    <font color="red">#springMessageText("force.mocked", "force.mocked")</font>
                 #elseif ($mock.equals("fail%3Areturn+null"))
-                    <font color="blue">#springMessage("fail.mocked")</font>
+                    <font color="blue">#springMessageText("fail.mocked", "fail.mocked")</font>
                 #else
-                    <font color="gray">#springMessage("no.mocked")</font>
+                    <font color="gray">#springMessageText("no.mocked", "no.mocked")</font>
                 #end
             </td>
         </tr>
         <tr>
-            <th>#springMessage("Status"):</th>
+            <th>#springMessageText("status", "status"):</th>
             <td>
                 #if($tool.isInBlackList($consumer))
-                    <font color="red">#springMessage("Forbidden")</font>
+                    <font color="red">#springMessageText("Forbidden", "Forbidden")</font>
                 #else
-                    <font color="green">#springMessage("Allowed")</font>
+                    <font color="green">#springMessageText("Allowed", "Allowed")</font>
                 #end
             </td>
         </tr>
         <tr>
-            <th>#springMessage("Route"):</th>
+            <th>#springMessageText("Route", "Route"):</th>
             <td>
                 #if($consumer.routes && $consumer.routes.size() > 0)
-                    <a href="../$consumer.id/routed">#springMessage("routed")($consumer.routes.size())</a>
+                    <a href="../$consumer.id/routed">#springMessageText("routed", "routed")($consumer.routes.size())</a>
                 #else
-                    <font color="gray">#springMessage("unrouted")</font>
+                    <font color="gray">#springMessageText("unrouted", "unrouted")</font>
                 #end
             </td>
         </tr>
         <tr>
-            <th>#springMessage("notify"):</th>
+            <th>#springMessageText("notify", "notify"):</th>
             <td>
                 #if($consumer.providers && $consumer.providers.size() > 0)
-                    <a href="../$consumer.id/notified">#springMessage("notified")($consumer.providers.size())</a>
+                    <a href="../$consumer.id/notified">#springMessageText("notified", "notified")($consumer.providers.size())</a>
                 #else
-                    <font color="red">#springMessage("NoProvider")</font>
+                    <font color="red">#springMessageText("noProvider", "noProvider")</font>
                 #end
             </td>
         </tr>
         <tr>
             <th>
-                <div class="btn"><a href="#" onclick="document.getElementById('consumerForm').submit();">#springMessage(
-                    "save")</a></div>
+                <div class="btn"><a href="#" onclick="document.getElementById('consumerForm').submit();">#springMessageText(
+                    "save","save")</a></div>
             </th>
             <td></td>
         </tr>
diff --git a/dubbo-admin/src/main/resources/templates/governance/screen/consumers/index.vm b/dubbo-admin/src/main/resources/templates/governance/screen/consumers/index.vm
index 45c4c96..9965bb5 100644
--- a/dubbo-admin/src/main/resources/templates/governance/screen/consumers/index.vm
+++ b/dubbo-admin/src/main/resources/templates/governance/screen/consumers/index.vm
@@ -15,70 +15,70 @@
 #set($layout = "/templates/governance/layout/default.vm")
 <div class="ico_btn">
     #if($currentUser.role != "G")
-        <a href="#" onclick="if(! hasCheckbox('ids')) { showAlert('#springMessage(
-            "empty.list")'); } else if(! hasChecked('ids')) { showAlert('#springMessage(
-            "please.select")'); } else { showConfirm('#springMessage(
-            "confirm.batch.forbid")', 'consumers/' + getChecked('ids') + '/forbid');} return false;"><img
+        <a href="#" onclick="if(! hasCheckbox('ids')) { showAlert('#springMessageText(
+            "empty.list","empty.list")'); } else if(! hasChecked('ids')) { showAlert('#springMessageText(
+            "please.select","please.select")'); } else { showConfirm('#springMessageText(
+            "confirm.batch.forbid","confirm.batch.forbid")', 'consumers/' + getChecked('ids') + '/forbid');} return false;"><img
                 src="$rootContextPath.getURI("images/ico_disable.png")" width="12" height="12"/><span
-                class="ico_font">#springMessage("batch.forbid")</span></a>
+                class="ico_font">#springMessageText("batch.forbid", "batch.forbid")</span></a>
         <span class="ico_line">|</span>
-        <a href="#" onclick="if(! hasCheckbox('ids')) { showAlert('#springMessage(
-            "empty.list")'); } else if(! hasChecked('ids')) { showAlert('#springMessage(
-            "please.select")'); } else { showConfirm('#springMessage(
-            "confirm.batch.allow")', 'consumers/' + getChecked('ids') + '/allow' );} return false;"><img
+        <a href="#" onclick="if(! hasCheckbox('ids')) { showAlert('#springMessageText(
+            "empty.list","empty.list")'); } else if(! hasChecked('ids')) { showAlert('#springMessageText(
+            "please.select","please.select")'); } else { showConfirm('#springMessageText(
+            "confirm.batch.allow","confirm.batch.allow")', 'consumers/' + getChecked('ids') + '/allow' );} return false;"><img
                 src="$rootContextPath.getURI("images/ico_enable.png")" width="12" height="12"/><span
-                class="ico_font">#springMessage("batch.allow")</span></a>
+                class="ico_font">#springMessageText("batch.allow", "batch.allow")</span></a>
         <span class="ico_line">|</span>
-        <a href="#" onclick="if(! hasCheckbox('ids')) { showAlert('#springMessage(
-            "empty.list")'); } else if(! hasChecked('ids')) { showAlert('#springMessage(
-            "please.select")'); } else { showConfirm('#springMessage(
-            "confirm.only.forbid")',  'consumers/' + getChecked('ids') + '/onlyforbid');} return false;"><img
+        <a href="#" onclick="if(! hasCheckbox('ids')) { showAlert('#springMessageText(
+            "empty.list","empty.list")'); } else if(! hasChecked('ids')) { showAlert('#springMessageText(
+            "please.select","please.select")'); } else { showConfirm('#springMessageText(
+            "confirm.only.forbid","confirm.only.forbid")',  'consumers/' + getChecked('ids') + '/onlyforbid');} return false;"><img
                 src="$rootContextPath.getURI("images/ico_disable.png")" width="12" height="12"/><span
-                class="ico_font">#springMessage("only.forbid")</span></a>
+                class="ico_font">#springMessageText("only.forbid", "only.forbid")</span></a>
         <span class="ico_line">|</span>
-        <a href="#" onclick="if(! hasCheckbox('ids')) { showAlert('#springMessage(
-            "empty.list")'); } else if(! hasChecked('ids')) { showAlert('#springMessage(
-            "please.select")'); } else { showConfirm('#springMessage(
-            "confirm.only.allow")',  'consumers/' + getChecked('ids') + '/onlyallow');} return false;"><img
+        <a href="#" onclick="if(! hasCheckbox('ids')) { showAlert('#springMessageText(
+            "empty.list","empty.list")'); } else if(! hasChecked('ids')) { showAlert('#springMessageText(
+            "please.select","please.select")'); } else { showConfirm('#springMessageText(
+            "confirm.only.allow","confirm.only.allow")',  'consumers/' + getChecked('ids') + '/onlyallow');} return false;"><img
                 src="$rootContextPath.getURI("images/ico_enable.png")" width="12" height="12"/><span
-                class="ico_font">#springMessage("only.allow")</span></a>
+                class="ico_font">#springMessageText("only.allow", "only.allow")</span></a>
         <span class="ico_line">|</span>
-        <a href="#" onclick="if(! hasCheckbox('ids')) { showAlert('#springMessage(
-            "empty.list")'); } else if(! hasChecked('ids')) { showAlert('#springMessage(
-            "please.select")'); } else { showConfirm('#springMessage(
-            "confirm.batch.force.mock")', 'consumers/' + getChecked('ids') + '/shield');} return false;"><img
+        <a href="#" onclick="if(! hasCheckbox('ids')) { showAlert('#springMessageText(
+            "empty.list","empty.list")'); } else if(! hasChecked('ids')) { showAlert('#springMessageText(
+            "please.select","please.select")'); } else { showConfirm('#springMessageText(
+            "confirm.batch.force.mock", "confirm.batch.force.mock")', 'consumers/' + getChecked('ids') + '/shield');} return false;"><img
                 src="$rootContextPath.getURI("images/ico_cancel.png")" width="12" height="12"/><span
-                class="ico_font">#springMessage("batch.force.mock")</span></a>
+                class="ico_font">#springMessageText("batch.force.mock", "batch.force.mock")</span></a>
         <span class="ico_line">|</span>
-        <a href="#" onclick="if(! hasCheckbox('ids')) { showAlert('#springMessage(
-            "empty.list")'); } else if(! hasChecked('ids')) { showAlert('#springMessage(
-            "please.select")'); } else { showConfirm('#springMessage(
-            "confirm.batch.fail.mock")', 'consumers/' + getChecked('ids') + '/tolerant');} return false;"><img
+        <a href="#" onclick="if(! hasCheckbox('ids')) { showAlert('#springMessageText(
+            "empty.list","empty.list")'); } else if(! hasChecked('ids')) { showAlert('#springMessageText(
+            "please.select","please.select")'); } else { showConfirm('#springMessageText(
+            "confirm.batch.fail.mock","confirm.batch.fail.mock")', 'consumers/' + getChecked('ids') + '/tolerant');} return false;"><img
                 src="$rootContextPath.getURI("images/ico_run.png")" width="12" height="12"/><span
-                class="ico_font">#springMessage("batch.fail.mock")</span></a>
+                class="ico_font">#springMessageText("batch.fail.mock", "batch.fail.mock")</span></a>
         <span class="ico_line">|</span>
-        <a href="#" onclick="if(! hasCheckbox('ids')) { showAlert('#springMessage(
-            "empty.list")'); } else if(! hasChecked('ids')) { showAlert('#springMessage(
-            "please.select")'); } else { showConfirm('#springMessage(
-            "confirm.batch.cancel.mock")', 'consumers/' + getChecked('ids') + '/recover');} return false;"><img
+        <a href="#" onclick="if(! hasCheckbox('ids')) { showAlert('#springMessageText(
+            "empty.list","empty.list")'); } else if(! hasChecked('ids')) { showAlert('#springMessageText(
+            "please.select","please.select")'); } else { showConfirm('#springMessageText(
+            "confirm.batch.cancel.mock","confirm.batch.cancel.mock")', 'consumers/' + getChecked('ids') + '/recover');} return false;"><img
                 src="$rootContextPath.getURI("images/ico_enable.png")" width="12" height="12"/><span
-                class="ico_font">#springMessage("batch.cancel.mock")</span></a>
+                class="ico_font">#springMessageText("batch.cancel.mock", "batch.cancel.mock")</span></a>
         #if($service)
             <span class="ico_line">|</span>
             <a href="#"
-               onclick="showConfirm('#springMessage("confirm.all.force.mock")', 'consumers/0/allshield'); return false;"><img
+               onclick="showConfirm('#springMessageText("confirm.all.force.mock", "confirm.all.force.mock")', 'consumers/0/allshield'); return false;"><img
                     src="$rootContextPath.getURI("images/ico_cancel.png")" width="12" height="12"/><span
-                    class="ico_font">#springMessage("all.force.mock")</span></a>
+                    class="ico_font">#springMessageText("all.force.mock", "all.force.mock")</span></a>
             <span class="ico_line">|</span>
-            <a href="#" onclick="showConfirm('#springMessage(
-                "confirm.all.fail.mock")', 'consumers/0/alltolerant'); return false;"><img
+            <a href="#" onclick="showConfirm('#springMessageText(
+                "confirm.all.fail.mock","confirm.all.fail.mock")', 'consumers/0/alltolerant'); return false;"><img
                     src="$rootContextPath.getURI("images/ico_run.png")" width="12" height="12"/><span
-                    class="ico_font">#springMessage("all.fail.mock")</span></a>
+                    class="ico_font">#springMessageText("all.fail.mock", "all.fail.mock")</span></a>
             <span class="ico_line">|</span>
-            <a href="#" onclick="showConfirm('#springMessage(
-                "confirm.all.cancel.mock")', 'consumers/0/allrecover'); return false;"><img
+            <a href="#" onclick="showConfirm('#springMessageText(
+                "confirm.all.cancel.mock","confirm.all.cancel.mock")', 'consumers/0/allrecover'); return false;"><img
                     src="$rootContextPath.getURI("images/ico_enable.png")" width="12" height="12"/><span
-                    class="ico_font">#springMessage("all.cancel.mock")</span></a>
+                    class="ico_font">#springMessageText("all.cancel.mock", "all.cancel.mock")</span></a>
         #end
     #end
 </div>
@@ -86,41 +86,41 @@
 <table cellpadding="0" cellspacing="0" class="list list_dubbo" id="table_o">
     <tr>
         <th width="20"><input type="checkbox" onclick="checkAll('table_o', 'ids', this.checked)"/></th>
-        <th>#if($address)#springMessage("service")#else#springMessage("address")#end: <input type="text" style="width: 60px;"
+        <th>#if($address)#springMessageText("service", "service")#else#springMessageText("address", "address")#end: <input type="text" style="width: 60px;"
                                                                                    onkeyup="searchTable('table_o', 1, this.value);"
                                                                                    onclick="searchTable('table_o', 1, this.value);"/>&nbsp;<img
                 src="$rootContextPath.getURI("images/ico_search.png")" width="12" height="12"/></th>
-        <th>#springMessage("application"): <input type="text" style="width: 60px;"
+        <th>#springMessageText("application", "application"): <input type="text" style="width: 60px;"
                                              onkeyup="searchTable('table_o', 2, this.value);"
                                              onclick="searchTable('table_o', 2, this.value);"/>&nbsp;<img
                 src="$rootContextPath.getURI("images/ico_search.png")" width="12" height="12"/></th>
-        <th width="110">#springMessage("access"): <select onchange="searchTable('table_o', 3, this.value);"
+        <th width="110">#springMessageText("access", "access"): <select onchange="searchTable('table_o', 3, this.value);"
                                                      onclick="searchTable('table_o', 3, this.value);">
-            <option value="">#springMessage("all")</option>
-            <option value="#springMessage("Allowed")">#springMessage("Allowed")</option>
-            <option value="#springMessage("Forbidden")">#springMessage("Forbidden")</option>
+            <option value="">#springMessageText("all", "all")</option>
+            <option value="#springMessageText("Allowed", "Allowed")">#springMessageText("Allowed","Allowed")</option>
+            <option value="#springMessageText("Forbidden", "Forbidden")">#springMessageText("Forbidden","Forbidden")</option>
         </select></th>
-        <th width="110">#springMessage("mock"): <select onchange="searchTable('table_o', 4, this.value);"
+        <th width="110">#springMessageText("mock", "mock"): <select onchange="searchTable('table_o', 4, this.value);"
                                                    onclick="searchTable('table_o', 4, this.value);">
-            <option value="">#springMessage("all")</option>
-            <option value="#springMessage("no.mocked")">#springMessage("no.mocked")</option>
-            <option value="#springMessage("force.mocked")">#springMessage("force.mocked")</option>
-            <option value="#springMessage("fail.mocked")">#springMessage("fail.mocked")</option>
+            <option value="">#springMessageText("all", "all")</option>
+            <option value="#springMessageText("no.mocked", "no.mocked")">#springMessageText("no.mocked", "no.mocked")</option>
+            <option value="#springMessageText("force.mocked", "force.mocked")">#springMessageText("force.mocked", "force.mocked")</option>
+            <option value="#springMessageText("fail.mocked", "fail.mocked")">#springMessageText("fail.mocked", "fail.mocked")</option>
         </select></th>
-        <th width="110">#springMessage("Route"): <select onchange="searchTable('table_o', 5, this.value);"
+        <th width="110">#springMessageText("Route", "Route"): <select onchange="searchTable('table_o', 5, this.value);"
                                                     onclick="searchTable('table_o', 5, this.value);">
-            <option value="">#springMessage("all")</option>
-            <option value="#springMessage("routed")">#springMessage("routed")</option>
-            <option value="#springMessage("unrouted")">#springMessage("unrouted")</option>
+            <option value="">#springMessageText("all", "all")</option>
+            <option value="#springMessageText("routed", "routed")">#springMessageText("routed", "routed")</option>
+            <option value="#springMessageText("unrouted", "unrouted")">#springMessageText("unrouted", "unrouted")</option>
         </select></th>
-        <th width="110">#springMessage("notify"): <select onchange="searchTable('table_o', 6, this.value);"
+        <th width="110">#springMessageText("notify", "notify"): <select onchange="searchTable('table_o', 6, this.value);"
                                                      onclick="searchTable('table_o', 6, this.value);">
-            <option value="">#springMessage("all")</option>
-            <option value="#springMessage("notified")">#springMessage("notified")</option>
-            <option value="#springMessage("unnotified")">#springMessage("unnotified")</option>
+            <option value="">#springMessageText("all", "all")</option>
+            <option value="#springMessageText("notified", "notified")">#springMessageText("notified", "notified")</option>
+            <option value="#springMessageText("unnotified", "unnotified")">#springMessageText("unnotified", "unnotified")</option>
         </select></th>
         #if($currentUser.role != "G")
-            <th>#springMessage("operation")</th>#end
+            <th>#springMessageText("operation", "operation")</th>#end
     </tr>
     #foreach($consumer in $consumers)
         <tr>
@@ -131,33 +131,33 @@
             <td>$consumer.application</td>
             <td>
                 #if($tool.isInBlackList($consumer))
-                    <font color="red">#springMessage("Forbidden")</font>
+                    <font color="red">#springMessageText("Forbidden","Forbidden")</font>
                 #else
-                    <font color="green">#springMessage("Allowed")</font>
+                    <font color="green">#springMessageText("Allowed","Allowed")</font>
                 #end
             </td>
             <td>
                 #set($mock=$tool.getConsumerMock($consumer))
                 #if($mock.equals("force%3Areturn+null"))
-                    <font color="red">#springMessage("force.mocked")</font>
+                    <font color="red">#springMessageText("force.mocked", "force.mocked")</font>
                 #elseif ($mock.equals("fail%3Areturn+null"))
-                    <font color="blue">#springMessage("fail.mocked")</font>
+                    <font color="blue">#springMessageText("fail.mocked", "fail.mocked")</font>
                 #else
-                    <font color="gray">#springMessage("no.mocked")</font>
+                    <font color="gray">#springMessageText("no.mocked", "no.mocked")</font>
                 #end
             </td>
             <td>
                 #if($consumer.routes && $consumer.routes.size() > 0)
-                    <a href="consumers/$consumer.id/routed">#springMessage("routed")($consumer.routes.size())</a>
+                    <a href="consumers/$consumer.id/routed">#springMessageText("routed", "routed")($consumer.routes.size())</a>
                 #else
-                    <font color="gray">#springMessage("unrouted")</font>
+                    <font color="gray">#springMessageText("unrouted", "unrouted")</font>
                 #end
             </td>
             <td>
                 #if($consumer.providers && $consumer.providers.size() > 0)
-                    <a href="consumers/$consumer.id/notified">#springMessage("notified")($consumer.providers.size())</a>
+                    <a href="consumers/$consumer.id/notified">#springMessageText("notified", "notified")($consumer.providers.size())</a>
                 #else
-                    <font color="red">#springMessage("NoProvider")</font>
+                    <font color="red">#springMessageText("noProvider", "noProvider")</font>
                 #end
             </td>
             #if($currentUser.role != "G")
@@ -165,50 +165,50 @@
                     #if($currentUser.hasServicePrivilege($consumer.service))
                         <a href="consumers/$consumer.id/edit"><img src="$rootContextPath.getURI("images/ico_edit.png")"
                                                                    width="12" height="12"/><span
-                                class="ico_font">#springMessage("edit")</span></a>
+                                class="ico_font">#springMessageText("edit", "edit")</span></a>
                         <span class="ico_line">|</span>
                         #if($tool.isInBlackList($consumer))
-                            <a href="#" onclick="showConfirm('#springMessage(
-                                "confirm.allow")', '$consumer.address -&gt; $tool.getSimpleName($consumer.service)', 'consumers/$consumer.id/allow'); return false;"><img
+                            <a href="#" onclick="showConfirm('#springMessageText(
+                                "confirm.allow","confirm.allow")', '$consumer.address -&gt; $tool.getSimpleName($consumer.service)', 'consumers/$consumer.id/allow'); return false;"><img
                                     src="$rootContextPath.getURI("images/ico_enable.png")" width="12" height="12"/><span
-                                    class="ico_font">#springMessage("allow")</span></a>
+                                    class="ico_font">#springMessageText("allow", "allow")</span></a>
                         #else
-                            <a href="#" onclick="showConfirm('#springMessage(
-                                "confirm.forbid")', '$consumer.address -&gt; $tool.getSimpleName($consumer.service)', 'consumers/$consumer.id/forbid'); return false;"><img
+                            <a href="#" onclick="showConfirm('#springMessageText(
+                                "confirm.forbid","confirm.forbid")', '$consumer.address -&gt; $tool.getSimpleName($consumer.service)', 'consumers/$consumer.id/forbid'); return false;"><img
                                     src="$rootContextPath.getURI("images/ico_disable.png")" width="12"
-                                    height="12"/><span class="ico_font">#springMessage("forbid")</span></a>
+                                    height="12"/><span class="ico_font">#springMessageText("forbid", "forbid")</span></a>
                         #end
                         <span class="ico_line">|</span>
                         #if($mock.equals("force%3Areturn+null"))
-                            <a href="#" onclick="showConfirm('#springMessage(
-                                "confirm.cancel.mock")', '$consumer.address -&gt; $tool.getSimpleName($consumer.service)', 'consumers/$consumer.id/recover'); return false;"><img
+                            <a href="#" onclick="showConfirm('#springMessageText(
+                                "confirm.cancel.mock","confirm.cancel.mock")', '$consumer.address -&gt; $tool.getSimpleName($consumer.service)', 'consumers/$consumer.id/recover'); return false;"><img
                                     src="$rootContextPath.getURI("images/ico_enable.png")" width="12" height="12"/><span
-                                    class="ico_font">#springMessage("cancel.mock")</span></a>
+                                    class="ico_font">#springMessageText("cancel.mock", "cancel.mock")</span></a>
                             <span class="ico_line">|</span>
-                            <a href="#" onclick="showConfirm('#springMessage(
-                                "confirm.fail.mock")', '$consumer.address -&gt; $tool.getSimpleName($consumer.service)', 'consumers/$consumer.id/tolerant'); return false;"><img
+                            <a href="#" onclick="showConfirm('#springMessageText(
+                                "confirm.fail.mock","confirm.fail.mock")', '$consumer.address -&gt; $tool.getSimpleName($consumer.service)', 'consumers/$consumer.id/tolerant'); return false;"><img
                                     src="$rootContextPath.getURI("images/ico_run.png")" width="12" height="12"/><span
-                                    class="ico_font">#springMessage("fail.mock")</span></a>
+                                    class="ico_font">#springMessageText("fail.mock", "fail.mock")</span></a>
                         #elseif ($mock.equals("fail%3Areturn+null"))
-                            <a href="#" onclick="showConfirm('#springMessage(
-                                "confirm.force.mock")', '$consumer.address -&gt; $tool.getSimpleName($consumer.service)', 'consumers/$consumer.id/shield'); return false;"><img
+                            <a href="#" onclick="showConfirm('#springMessageText(
+                                "confirm.force.mock","confirm.force.mock")', '$consumer.address -&gt; $tool.getSimpleName($consumer.service)', 'consumers/$consumer.id/shield'); return false;"><img
                                     src="$rootContextPath.getURI("images/ico_cancel.png")" width="12" height="12"/><span
-                                    class="ico_font">#springMessage("force.mock")</span></a>
+                                    class="ico_font">#springMessageText("force.mock", "force.mock")</span></a>
                             <span class="ico_line">|</span>
-                            <a href="#" onclick="showConfirm('#springMessage(
-                                "confirm.cancel.mock")', '$consumer.address -&gt; $tool.getSimpleName($consumer.service)', 'consumers/$consumer.id/recover'); return false;"><img
+                            <a href="#" onclick="showConfirm('#springMessageText(
+                                "confirm.cancel.mock","confirm.cancel.mock")', '$consumer.address -&gt; $tool.getSimpleName($consumer.service)', 'consumers/$consumer.id/recover'); return false;"><img
                                     src="$rootContextPath.getURI("images/ico_enable.png")" width="12" height="12"/><span
-                                    class="ico_font">#springMessage("cancel.mock")</span></a>
+                                    class="ico_font">#springMessageText("cancel.mock", "cancel.mock")</span></a>
                         #else
-                            <a href="#" onclick="showConfirm('#springMessage(
-                                "confirm.force.mock")', '$consumer.address -&gt; $tool.getSimpleName($consumer.service)', 'consumers/$consumer.id/shield'); return false;"><img
+                            <a href="#" onclick="showConfirm('#springMessageText(
+                                "confirm.force.mock","confirm.force.mock")', '$consumer.address -&gt; $tool.getSimpleName($consumer.service)', 'consumers/$consumer.id/shield'); return false;"><img
                                     src="$rootContextPath.getURI("images/ico_cancel.png")" width="12" height="12"/><span
-                                    class="ico_font">#springMessage("force.mock")</span></a>
+                                    class="ico_font">#springMessageText("force.mock", "force.mock")</span></a>
                             <span class="ico_line">|</span>
-                            <a href="#" onclick="showConfirm('#springMessage(
-                                "confirm.fail.mock")', '$consumer.address -&gt; $tool.getSimpleName($consumer.service)', 'consumers/$consumer.id/tolerant'); return false;"><img
+                            <a href="#" onclick="showConfirm('#springMessageText(
+                                "confirm.fail.mock","confirm.fail.mock")', '$consumer.address -&gt; $tool.getSimpleName($consumer.service)', 'consumers/$consumer.id/tolerant'); return false;"><img
                                     src="$rootContextPath.getURI("images/ico_run.png")" width="12" height="12"/><span
-                                    class="ico_font">#springMessage("fail.mock")</span></a>
+                                    class="ico_font">#springMessageText("fail.mock", "fail.mock")</span></a>
                         #end
                     #end
                 </td>
@@ -216,4 +216,4 @@
         </tr>
     #end
 </table>
-<div class="page">#springMessage("page.total")$consumers.size()#springMessage("page.records") </div>
+<div class="page">#springMessageText("page.total", "page.total")$consumers.size()#springMessageText("page.records", "page.records") </div>
diff --git a/dubbo-admin/src/main/resources/templates/governance/screen/consumers/notified.vm b/dubbo-admin/src/main/resources/templates/governance/screen/consumers/notified.vm
index 331e6e3..f31d462 100644
--- a/dubbo-admin/src/main/resources/templates/governance/screen/consumers/notified.vm
+++ b/dubbo-admin/src/main/resources/templates/governance/screen/consumers/notified.vm
@@ -15,112 +15,112 @@
 #set($layout = "/templates/governance/layout/default.vm")
 <div class="ico_btn">
     <a href="../../consumers"><img src="$rootContextPath.getURI("images/ico_back.png")" width="12" height="12"/><span
-            class="ico_font">#springMessage("back")</span></a>
+            class="ico_font">#springMessageText("back", "back")</span></a>
     #set($mock=$tool.getConsumerMock($consumer))
     #if($currentUser.hasServicePrivilege($consumer.service))
         <span class="ico_line">|</span>
         <a href="../$consumer.id/edit"><img src="$rootContextPath.getURI("images/ico_edit.png")" width="12"
-                                            height="12"/><span class="ico_font">#springMessage("edit")</span></a>
+                                            height="12"/><span class="ico_font">#springMessageText("edit", "edit")</span></a>
         <span class="ico_line">|</span>
         #if($mock.equals("force%3Areturn+null"))
-            <a href="#" onclick="showConfirm('#springMessage(
-                "confirm.cancel.mock")', '$consumer.address -&gt; $tool.getSimpleName($consumer.service)', '../$consumer.id/recover'); return false;"><img
+            <a href="#" onclick="showConfirm('#springMessageText(
+                "confirm.cancel.mock","confirm.cancel.mock")', '$consumer.address -&gt; $tool.getSimpleName($consumer.service)', '../$consumer.id/recover'); return false;"><img
                     src="$rootContextPath.getURI("images/ico_enable.png")" width="12" height="12"/><span
-                    class="ico_font">#springMessage("cancel.mock")</span></a>
+                    class="ico_font">#springMessageText("cancel.mock", "cancel.mock")</span></a>
             <span class="ico_line">|</span>
-            <a href="#" onclick="showConfirm('#springMessage(
-                "confirm.fail.mock")', '$consumer.address -&gt; $tool.getSimpleName($consumer.service)', '../$consumer.id/tolerant'); return false;"><img
+            <a href="#" onclick="showConfirm('#springMessageText(
+                "confirm.fail.mock","confirm.fail.mock")', '$consumer.address -&gt; $tool.getSimpleName($consumer.service)', '../$consumer.id/tolerant'); return false;"><img
                     src="$rootContextPath.getURI("images/ico_run.png")" width="12" height="12"/><span
-                    class="ico_font">#springMessage("fail.mock")</span></a>
+                    class="ico_font">#springMessageText("fail.mock", "fail.mock")</span></a>
         #elseif ($mock.equals("fail%3Areturn+null"))
-            <a href="#" onclick="showConfirm('#springMessage(
-                "confirm.force.mock")', '$consumer.address -&gt; $tool.getSimpleName($consumer.service)', '../$consumer.id/shield'); return false;"><img
+            <a href="#" onclick="showConfirm('#springMessageText(
+                "confirm.force.mock","confirm.force.mock")', '$consumer.address -&gt; $tool.getSimpleName($consumer.service)', '../$consumer.id/shield'); return false;"><img
                     src="$rootContextPath.getURI("images/ico_cancel.png")" width="12" height="12"/><span
-                    class="ico_font">#springMessage("force.mock")</span></a>
+                    class="ico_font">#springMessageText("force.mock", "force.mock")</span></a>
             <span class="ico_line">|</span>
-            <a href="#" onclick="showConfirm('#springMessage(
-                "confirm.cancel.mock")', '$consumer.address -&gt; $tool.getSimpleName($consumer.service)', '../$consumer.id/recover'); return false;"><img
+            <a href="#" onclick="showConfirm('#springMessageText(
+                "confirm.cancel.mock","confirm.cancel.mock")', '$consumer.address -&gt; $tool.getSimpleName($consumer.service)', '../$consumer.id/recover'); return false;"><img
                     src="$rootContextPath.getURI("images/ico_enable.png")" width="12" height="12"/><span
-                    class="ico_font">#springMessage("cancel.mock")</span></a>
+                    class="ico_font">#springMessageText("cancel.mock", "cancel.mock")</span></a>
         #else
-            <a href="#" onclick="showConfirm('#springMessage(
-                "confirm.force.mock")', '$consumer.address -&gt; $tool.getSimpleName($consumer.service)', '../$consumer.id/shield'); return false;"><img
+            <a href="#" onclick="showConfirm('#springMessageText(
+                "confirm.force.mock","confirm.force.mock")', '$consumer.address -&gt; $tool.getSimpleName($consumer.service)', '../$consumer.id/shield'); return false;"><img
                     src="$rootContextPath.getURI("images/ico_cancel.png")" width="12" height="12"/><span
-                    class="ico_font">#springMessage("force.mock")</span></a>
+                    class="ico_font">#springMessageText("force.mock", "force.mock")</span></a>
             <span class="ico_line">|</span>
-            <a href="#" onclick="showConfirm('#springMessage(
-                "confirm.fail.mock")', '$consumer.address -&gt; $tool.getSimpleName($consumer.service)', '../$consumer.id/tolerant'); return false;"><img
+            <a href="#" onclick="showConfirm('#springMessageText(
+                "confirm.fail.mock","confirm.fail.mock")', '$consumer.address -&gt; $tool.getSimpleName($consumer.service)', '../$consumer.id/tolerant'); return false;"><img
                     src="$rootContextPath.getURI("images/ico_run.png")" width="12" height="12"/><span
-                    class="ico_font">#springMessage("fail.mock")</span></a>
+                    class="ico_font">#springMessageText("fail.mock", "fail.mock")</span></a>
         #end
     #end
     #if ($consumer.routes && $consumer.routes.size() > 0)
         <span class="ico_line">|</span>
         <a href="../$consumer.id/routed"><img src="$rootContextPath.getURI("images/ico_balance.png")" width="12"
-                                              height="12"/><span class="ico_font">#springMessage("routed")
+                                              height="12"/><span class="ico_font">#springMessageText("routed", "routed")
             ($consumer.routes.size())</span></a>
     #end
     <span class="ico_line">|</span>
     <a href="../$consumer.id"><img src="$rootContextPath.getURI("images/ico_show.png")" width="12" height="12"/><span
-            class="ico_font">#springMessage("show")</span></a>
+            class="ico_font">#springMessageText("show", "show")</span></a>
 </div>
 <br/>
 <table cellpadding="0" cellspacing="0" class="info">
     #if(! $service)
         <tr>
-            <th style="width: 100px;">#springMessage("service"):</th>
+            <th style="width: 100px;">#springMessageText("service", "service"):</th>
             <td>$!consumer.service</td>
         </tr>
     #end
     <tr>
-        <th style="width: 100px;">#springMessage("consumerAddress"):</th>
+        <th style="width: 100px;">#springMessageText("ConsumerAddress", "ConsumerAddress"):</th>
         <td>consumer://$!consumer.address/$!consumer.service?$!consumer.parameters</td>
     </tr>
     <tr>
-        <th>#springMessage("overrides"):</th>
+        <th>#springMessageText("overrides", "overrides"):</th>
         <td>$!consumer.override.params</td>
     </tr>
     <tr>
-        <th>#springMessage("mock"):</th>
+        <th>#springMessageText("mock", "mock"):</th>
         <td>
             #if($mock.equals("force%3Areturn+null"))
-                <font color="red">#springMessage("force.mocked")</font>
+                <font color="red">#springMessageText("force.mocked", "force.mocked")</font>
             #elseif ($mock.equals("fail%3Areturn+null"))
-                <font color="blue">#springMessage("fail.mocked")</font>
+                <font color="blue">#springMessageText("fail.mocked", "fail.mocked")</font>
             #else
-                <font color="gray">#springMessage("no.mocked")</font>
+                <font color="gray">#springMessageText("no.mocked", "no.mocked")</font>
             #end
         </td>
     </tr>
     <tr>
-        <th>#springMessage("Status"):</th>
+        <th>#springMessageText("status", "status"):</th>
         <td>
             #if($tool.isInBlackList($consumer))
-                <font color="red">#springMessage("Forbidden")</font>
+                <font color="red">#springMessageText("Forbidden", "Forbidden")</font>
             #else
-                <font color="green">#springMessage("Allowed")</font>
+                <font color="green">#springMessageText("Allowed", "Allowed")</font>
             #end
         </td>
     </tr>
     <tr>
-        <th>#springMessage("Route"):</th>
+        <th>#springMessageText("Route", "Route"):</th>
         <td>
             #if($consumer.routes && $consumer.routes.size() > 0)
-                <a href="../$consumer.id/routed">#springMessage("routed")($consumer.routes.size())</a>
+                <a href="../$consumer.id/routed">#springMessageText("routed", "routed")($consumer.routes.size())</a>
             #else
-                <font color="gray">#springMessage("unrouted")</font>
+                <font color="gray">#springMessageText("unrouted", "unrouted")</font>
             #end
         </td>
     </tr>
     <tr>
-        <th>#springMessage("notify"):</th>
+        <th>#springMessageText("notify", "notify"):</th>
         <td></td>
     </tr>
 </table>
 <br/>
 <table cellpadding="0" cellspacing="0" class="list list_dubbo" id="table_o">
     <tr>
-        <th>#springMessage("url"): <input type="text" style="width: 100px;" onkeyup="searchTable('table_o', 0, this.value);"
+        <th>#springMessageText("url", "url"): <input type="text" style="width: 100px;" onkeyup="searchTable('table_o', 0, this.value);"
                                      onclick="searchTable('table_o', 1, this.value);"/>&nbsp;<img
                 src="$rootContextPath.getURI("images/ico_search.png")" width="12" height="12"/></th>
     </tr>
@@ -130,4 +130,4 @@
         </tr>
     #end
 </table>
-<div class="page">#springMessage("page.total")$providers.size()#springMessage("page.records") </div>
+<div class="page">#springMessageText("page.total", "page.total")$providers.size()#springMessageText("page.records", "page.records") </div>
diff --git a/dubbo-admin/src/main/resources/templates/governance/screen/consumers/routed.vm b/dubbo-admin/src/main/resources/templates/governance/screen/consumers/routed.vm
index 9844de6..a6da47c 100644
--- a/dubbo-admin/src/main/resources/templates/governance/screen/consumers/routed.vm
+++ b/dubbo-admin/src/main/resources/templates/governance/screen/consumers/routed.vm
@@ -15,52 +15,52 @@
 #set($layout = "/templates/governance/layout/default.vm")
 <div class="ico_btn">
     <a href="../../consumers"><img src="$rootContextPath.getURI("images/ico_back.png")" width="12" height="12"/><span
-            class="ico_font">#springMessage("back")</span></a>
+            class="ico_font">#springMessageText("back", "back")</span></a>
     #set($mock=$tool.getConsumerMock($consumer))
     #if($currentUser.hasServicePrivilege($consumer.service))
         <span class="ico_line">|</span>
         <a href="../$consumer.id/edit"><img src="$rootContextPath.getURI("images/ico_edit.png")" width="12"
-                                            height="12"/><span class="ico_font">#springMessage("edit")</span></a>
+                                            height="12"/><span class="ico_font">#springMessageText("edit", "edit")</span></a>
         <span class="ico_line">|</span>
         #if($mock.equals("force%3Areturn+null"))
-            <a href="#" onclick="showConfirm('#springMessage(
-                "confirm.cancel.mock")', '$consumer.address -&gt; $tool.getSimpleName($consumer.service)', '../$consumer.id/recover'); return false;"><img
+            <a href="#" onclick="showConfirm('#springMessageText(
+                "confirm.cancel.mock","confirm.cancel.mock")', '$consumer.address -&gt; $tool.getSimpleName($consumer.service)', '../$consumer.id/recover'); return false;"><img
                     src="$rootContextPath.getURI("images/ico_enable.png")" width="12" height="12"/><span
-                    class="ico_font">#springMessage("cancel.mock")</span></a>
+                    class="ico_font">#springMessageText("cancel.mock", "cancel.mock")</span></a>
             <span class="ico_line">|</span>
-            <a href="#" onclick="showConfirm('#springMessage(
-                "confirm.fail.mock")', '$consumer.address -&gt; $tool.getSimpleName($consumer.service)', '../$consumer.id/tolerant'); return false;"><img
+            <a href="#" onclick="showConfirm('#springMessageText(
+                "confirm.fail.mock","confirm.fail.mock")', '$consumer.address -&gt; $tool.getSimpleName($consumer.service)', '../$consumer.id/tolerant'); return false;"><img
                     src="$rootContextPath.getURI("images/ico_run.png")" width="12" height="12"/><span
-                    class="ico_font">#springMessage("fail.mock")</span></a>
+                    class="ico_font">#springMessageText("fail.mock", "fail.mock")</span></a>
         #elseif ($mock.equals("fail%3Areturn+null"))
-            <a href="#" onclick="showConfirm('#springMessage(
-                "confirm.force.mock")', '$consumer.address -&gt; $tool.getSimpleName($consumer.service)', '../$consumer.id/shield'); return false;"><img
+            <a href="#" onclick="showConfirm('#springMessageText(
+                "confirm.force.mock","confirm.force.mock")', '$consumer.address -&gt; $tool.getSimpleName($consumer.service)', '../$consumer.id/shield'); return false;"><img
                     src="$rootContextPath.getURI("images/ico_cancel.png")" width="12" height="12"/><span
-                    class="ico_font">#springMessage("force.mock")</span></a>
+                    class="ico_font">#springMessageText("force.mock", "force.mock")</span></a>
             <span class="ico_line">|</span>
-            <a href="#" onclick="showConfirm('#springMessage(
-                "confirm.cancel.mock")', '$consumer.address -&gt; $tool.getSimpleName($consumer.service)', '../$consumer.id/recover'); return false;"><img
+            <a href="#" onclick="showConfirm('#springMessageText(
+                "confirm.cancel.mock","confirm.cancel.mock")', '$consumer.address -&gt; $tool.getSimpleName($consumer.service)', '../$consumer.id/recover'); return false;"><img
                     src="$rootContextPath.getURI("images/ico_enable.png")" width="12" height="12"/><span
-                    class="ico_font">#springMessage("cancel.mock")</span></a>
+                    class="ico_font">#springMessageText("cancel.mock", "cancel.mock")</span></a>
         #else
-            <a href="#" onclick="showConfirm('#springMessage(
-                "confirm.force.mock")', '$consumer.address -&gt; $tool.getSimpleName($consumer.service)', '../$consumer.id/shield'); return false;"><img
+            <a href="#" onclick="showConfirm('#springMessageText(
+                "confirm.force.mock","confirm.force.mock")', '$consumer.address -&gt; $tool.getSimpleName($consumer.service)', '../$consumer.id/shield'); return false;"><img
                     src="$rootContextPath.getURI("images/ico_cancel.png")" width="12" height="12"/><span
-                    class="ico_font">#springMessage("force.mock")</span></a>
+                    class="ico_font">#springMessageText("force.mock", "force.mock")</span></a>
             <span class="ico_line">|</span>
-            <a href="#" onclick="showConfirm('#springMessage(
-                "confirm.fail.mock")', '$consumer.address -&gt; $tool.getSimpleName($consumer.service)', '../$consumer.id/tolerant'); return false;"><img
+            <a href="#" onclick="showConfirm('#springMessageText(
+                "confirm.fail.mock","confirm.fail.mock")', '$consumer.address -&gt; $tool.getSimpleName($consumer.service)', '../$consumer.id/tolerant'); return false;"><img
                     src="$rootContextPath.getURI("images/ico_run.png")" width="12" height="12"/><span
-                    class="ico_font">#springMessage("fail.mock")</span></a>
+                    class="ico_font">#springMessageText("fail.mock", "fail.mock")</span></a>
         #end
     #end
     <span class="ico_line">|</span>
     <a href="../$consumer.id"><img src="$rootContextPath.getURI("images/ico_show.png")" width="12" height="12"/><span
-            class="ico_font">#springMessage("show")</span></a>
+            class="ico_font">#springMessageText("show", "show")</span></a>
     #if ($consumer.providers && $consumer.providers.size() > 0)
         <span class="ico_line">|</span>
         <a href="../$consumer.id/notified"><img src="$rootContextPath.getURI("images/ico_renotify.png")" width="12"
-                                                height="12"/><span class="ico_font">#springMessage("notified")
+                                                height="12"/><span class="ico_font">#springMessageText("notified", "notified")
             ($consumer.providers.size())</span></a>
     #end
 </div>
@@ -68,63 +68,63 @@
 <table cellpadding="0" cellspacing="0" class="info">
     #if(! $service)
         <tr>
-            <th style="width: 100px;">#springMessage("service"):</th>
+            <th style="width: 100px;">#springMessageText("service", "service"):</th>
             <td>$!consumer.service</td>
         </tr>
     #end
     <tr>
-        <th style="width: 100px;">#springMessage("consumerAddress"):</th>
+        <th style="width: 100px;">#springMessageText("consumerAddress", "consumerAddress"):</th>
         <td>consumer://$!consumer.address/$!consumer.service?$!consumer.parameters</td>
     </tr>
     <tr>
-        <th>#springMessage("overrides"):</th>
+        <th>#springMessageText("overrides", "overrides"):</th>
         <td>$!consumer.override.params</td>
     </tr>
     <tr>
-        <th>#springMessage("mock"):</th>
+        <th>#springMessageText("mock", "mock"):</th>
         <td>
             #if($mock.equals("force%3Areturn+null"))
-                <font color="red">#springMessage("force.mocked")</font>
+                <font color="red">#springMessageText("force.mocked", "force.mocked")</font>
             #elseif ($mock.equals("fail%3Areturn+null"))
-                <font color="blue">#springMessage("fail.mocked")</font>
+                <font color="blue">#springMessageText("fail.mocked", "fail.mocked")</font>
             #else
-                <font color="gray">#springMessage("no.mocked")</font>
+                <font color="gray">#springMessageText("no.mocked", "no.mocked")</font>
             #end
         </td>
     </tr>
     <tr>
-        <th>#springMessage("Status"):</th>
+        <th>#springMessageText("status", "status"):</th>
         <td>
             #if($tool.isInBlackList($consumer))
-                <font color="red">#springMessage("Forbidden")</font>
+                <font color="red">#springMessageText("Forbidden", "Forbidden")</font>
             #else
-                <font color="green">#springMessage("Allowed")</font>
+                <font color="green">#springMessageText("Allowed", "Allowed")</font>
             #end
         </td>
     </tr>
     <tr>
-        <th>#springMessage("notify"):</th>
+        <th>#springMessageText("notify", "notify"):</th>
         <td>
             #if($consumer.providers && $consumer.providers.size() > 0)
-                <a href="../$consumer.id/notified">#springMessage("notified")($consumer.providers.size())</a>
+                <a href="../$consumer.id/notified">#springMessageText("notified", "notified")($consumer.providers.size())</a>
             #else
-                <font color="red">#springMessage("NoProvider")</font>
+                <font color="red">#springMessageText("noProvider", "noProvider")</font>
             #end
         </td>
     </tr>
     <tr>
-        <th>#springMessage("Route"):</th>
+        <th>#springMessageText("Route", "Route"):</th>
         <td></td>
     </tr>
 </table>
 <br/>
 <table cellpadding="0" cellspacing="0" class="list list_dubbo" id="table_o">
     <tr>
-        <th>#springMessage("routeName"): <input type="text" style="width: 100px;"
+        <th>#springMessageText("routeName", "routeName"): <input type="text" style="width: 100px;"
                                            onkeyup="searchTable('table_o', 0, this.value);"
                                            onclick="searchTable('table_o', 1, this.value);"/>&nbsp;<img
                 src="$rootContextPath.getURI("images/ico_search.png")" width="12" height="12"/></th>
-        <th>#springMessage("routeRule"): <input type="text" style="width: 100px;"
+        <th>#springMessageText("routeRule", "routeRule"): <input type="text" style="width: 100px;"
                                            onkeyup="searchTable('table_o', 0, this.value);"
                                            onclick="searchTable('table_o', 1, this.value);"/>&nbsp;<img
                 src="$rootContextPath.getURI("images/ico_search.png")" width="12" height="12"/></th>
@@ -136,4 +136,4 @@
         </tr>
     #end
 </table>
-<div class="page">#springMessage("page.total")$providers.size()#springMessage("page.records") </div>
\ No newline at end of file
+<div class="page">#springMessageText("page.total", "page.total")$providers.size()#springMessageText("page.records", "page.records") </div>
\ No newline at end of file
diff --git a/dubbo-admin/src/main/resources/templates/governance/screen/consumers/show.vm b/dubbo-admin/src/main/resources/templates/governance/screen/consumers/show.vm
index 3cea616..53dca52 100644
--- a/dubbo-admin/src/main/resources/templates/governance/screen/consumers/show.vm
+++ b/dubbo-admin/src/main/resources/templates/governance/screen/consumers/show.vm
@@ -15,55 +15,55 @@
 #set($layout = "/templates/governance/layout/default.vm")
 <div class="ico_btn">
     <a href="../consumers"><img src="$rootContextPath.getURI("images/ico_back.png")" width="12" height="12"/><span
-            class="ico_font">#springMessage("back")</span></a>
+            class="ico_font">#springMessageText("back", "back")</span></a>
     #set($mock=$tool.getConsumerMock($consumer))
     #if($currentUser.hasServicePrivilege($consumer.service))
         <span class="ico_line">|</span>
         <a href="$consumer.id/edit"><img src="$rootContextPath.getURI("images/ico_edit.png")" width="12"
-                                         height="12"/><span class="ico_font">#springMessage("edit")</span></a>
+                                         height="12"/><span class="ico_font">#springMessageText("edit", "edit")</span></a>
         <span class="ico_line">|</span>
         #if($mock.equals("force%3Areturn+null"))
-            <a href="#" onclick="showConfirm('#springMessage(
-                "confirm.cancel.mock")', '$consumer.address -&gt; $tool.getSimpleName($consumer.service)', '$consumer.id/recover'); return false;"><img
+            <a href="#" onclick="showConfirm('#springMessageText(
+                "confirm.cancel.mock","confirm.cancel.mock")', '$consumer.address -&gt; $tool.getSimpleName($consumer.service)', '$consumer.id/recover'); return false;"><img
                     src="$rootContextPath.getURI("images/ico_enable.png")" width="12" height="12"/><span
-                    class="ico_font">#springMessage("cancel.mock")</span></a>
+                    class="ico_font">#springMessageText("cancel.mock", "cancel.mock")</span></a>
             <span class="ico_line">|</span>
-            <a href="#" onclick="showConfirm('#springMessage(
-                "confirm.fail.mock")', '$consumer.address -&gt; $tool.getSimpleName($consumer.service)', '$consumer.id/tolerant'); return false;"><img
+            <a href="#" onclick="showConfirm('#springMessageText(
+                "confirm.fail.mock","confirm.fail.mock")', '$consumer.address -&gt; $tool.getSimpleName($consumer.service)', '$consumer.id/tolerant'); return false;"><img
                     src="$rootContextPath.getURI("images/ico_run.png")" width="12" height="12"/><span
-                    class="ico_font">#springMessage("fail.mock")</span></a>
+                    class="ico_font">#springMessageText("fail.mock", "fail.mock")</span></a>
         #elseif ($mock.equals("fail%3Areturn+null"))
-            <a href="#" onclick="showConfirm('#springMessage(
-                "confirm.force.mock")', '$consumer.address -&gt; $tool.getSimpleName($consumer.service)', '$consumer.id/shield'); return false;"><img
+            <a href="#" onclick="showConfirm('#springMessageText(
+                "confirm.force.mock","confirm.force.mock")', '$consumer.address -&gt; $tool.getSimpleName($consumer.service)', '$consumer.id/shield'); return false;"><img
                     src="$rootContextPath.getURI("images/ico_cancel.png")" width="12" height="12"/><span
-                    class="ico_font">#springMessage("force.mock")</span></a>
+                    class="ico_font">#springMessageText("force.mock", "force.mock")</span></a>
             <span class="ico_line">|</span>
-            <a href="#" onclick="showConfirm('#springMessage(
-                "confirm.cancel.mock")', '$consumer.address -&gt; $tool.getSimpleName($consumer.service)', '$consumer.id/recover'); return false;"><img
+            <a href="#" onclick="showConfirm('#springMessageText(
+                "confirm.cancel.mock","confirm.cancel.mock")', '$consumer.address -&gt; $tool.getSimpleName($consumer.service)', '$consumer.id/recover'); return false;"><img
                     src="$rootContextPath.getURI("images/ico_enable.png")" width="12" height="12"/><span
-                    class="ico_font">#springMessage("cancel.mock")</span></a>
+                    class="ico_font">#springMessageText("cancel.mock", "cancel.mock")</span></a>
         #else
-            <a href="#" onclick="showConfirm('#springMessage(
-                "confirm.force.mock")', '$consumer.address -&gt; $tool.getSimpleName($consumer.service)', '$consumer.id/shield'); return false;"><img
+            <a href="#" onclick="showConfirm('#springMessageText(
+                "confirm.force.mock","confirm.force.mock")', '$consumer.address -&gt; $tool.getSimpleName($consumer.service)', '$consumer.id/shield'); return false;"><img
                     src="$rootContextPath.getURI("images/ico_cancel.png")" width="12" height="12"/><span
-                    class="ico_font">#springMessage("force.mock")</span></a>
+                    class="ico_font">#springMessageText("force.mock", "force.mock")</span></a>
             <span class="ico_line">|</span>
-            <a href="#" onclick="showConfirm('#springMessage(
-                "confirm.fail.mock")', '$consumer.address -&gt; $tool.getSimpleName($consumer.service)', '$consumer.id/tolerant'); return false;"><img
+            <a href="#" onclick="showConfirm('#springMessageText(
+                "confirm.fail.mock","confirm.fail.mock")', '$consumer.address -&gt; $tool.getSimpleName($consumer.service)', '$consumer.id/tolerant'); return false;"><img
                     src="$rootContextPath.getURI("images/ico_run.png")" width="12" height="12"/><span
-                    class="ico_font">#springMessage("fail.mock")</span></a>
+                    class="ico_font">#springMessageText("fail.mock", "fail.mock")</span></a>
         #end
     #end
     #if ($consumer.routes && $consumer.routes.size() > 0)
         <span class="ico_line">|</span>
         <a href="$consumer.id/routed"><img src="$rootContextPath.getURI("images/ico_balance.png")" width="12"
-                                           height="12"/><span class="ico_font">#springMessage("routed")
+                                           height="12"/><span class="ico_font">#springMessageText("routed", "routed")
             ($consumer.routes.size())</span></a>
     #end
     #if ($consumer.providers && $consumer.providers.size() > 0)
         <span class="ico_line">|</span>
         <a href="$consumer.id/notified"><img src="$rootContextPath.getURI("images/ico_renotify.png")" width="12"
-                                             height="12"/><span class="ico_font">#springMessage("notified")
+                                             height="12"/><span class="ico_font">#springMessageText("notified", "notified")
             ($consumer.providers.size())</span></a>
     #end
 </div>
@@ -71,68 +71,68 @@
 <table cellpadding="0" cellspacing="0" class="info" id="content">
     #if(! $service)
         <tr>
-            <th style="width: 100px;">#springMessage("service"):</th>
+            <th style="width: 100px;">#springMessageText("service", "service"):</th>
             <td>$!consumer.service</td>
         </tr>
     #end
     <tr>
-        <th style="width: 100px;">#springMessage("consumerAddress"):</th>
+        <th style="width: 100px;">#springMessageText("consumerAddress", "consumerAddress"):</th>
         <td>consumer://$!consumer.address/$!consumer.service?$!consumer.parameters</td>
     </tr>
     <tr>
-        <th>#springMessage("overrides"):</th>
+        <th>#springMessageText("overrides", "overrides"):</th>
         <td>$!consumer.override.params</td>
     </tr>
     <tr>
-        <th>#springMessage("host"):</th>
+        <th>#springMessageText("host", "host"):</th>
         <td>$tool.getHostPrefix($!consumer.address)$!consumer.address</td>
     </tr>
     #foreach($entry in $tool.toParameterMap($!consumer.parameters).entrySet())
         <tr>
-            <th>#springMessage($entry.key):</th>
+            <th>#springMessageText($entry.key, $entry.key):</th>
             <td>#if($entry.key == "timestamp") $tool.formatTimestamp($entry.value)
                 ($entry.value) #else $entry.value #end</td>
         </tr>
     #end
     <tr>
-        <th>#springMessage("mock"):</th>
+        <th>#springMessageText("mock", "mock"):</th>
         <td>
             #if($mock.equals("force%3Areturn+null"))
-                <font color="red">#springMessage("force.mocked")</font>
+                <font color="red">#springMessageText("force.mocked", "force.mocked")</font>
             #elseif ($mock.equals("fail%3Areturn+null"))
-                <font color="blue">#springMessage("fail.mocked")</font>
+                <font color="blue">#springMessageText("fail.mocked", "fail.mocked")</font>
             #else
-                <font color="gray">#springMessage("no.mocked")</font>
+                <font color="gray">#springMessageText("no.mocked", "no.mocked")</font>
             #end
         </td>
     </tr>
     <tr>
-        <th>#springMessage("Status"):</th>
+        <th>#springMessageText("status", "status"):</th>
         <td>
             #if($tool.isInBlackList($consumer))
-                <font color="red">#springMessage("Forbidden")</font>
+                <font color="red">#springMessageText("Forbidden", "Forbidden")</font>
             #else
-                <font color="green">#springMessage("Allowed")</font>
+                <font color="green">#springMessageText("Allowed", "Allowed")</font>
             #end
         </td>
     </tr>
     <tr>
-        <th>#springMessage("Route"):</th>
+        <th>#springMessageText("Route", "Route"):</th>
         <td>
             #if($consumer.routes && $consumer.routes.size() > 0)
-                <a href="$consumer.id/routed">#springMessage("routed")($consumer.routes.size())</a>
+                <a href="$consumer.id/routed">#springMessageText("routed", "routed")($consumer.routes.size())</a>
             #else
-                <font color="gray">#springMessage("unrouted")</font>
+                <font color="gray">#springMessageText("unrouted", "unrouted")</font>
             #end
         </td>
     </tr>
     <tr>
-        <th>#springMessage("notify"):</th>
+        <th>#springMessageText("notify", "notify"):</th>
         <td>
             #if($consumer.providers && $consumer.providers.size() > 0)
-                <a href="$consumer.id/notified">#springMessage("notified")($consumer.providers.size())</a>
+                <a href="$consumer.id/notified">#springMessageText("notified", "notified")($consumer.providers.size())</a>
             #else
-                <font color="red">#springMessage("NoProvider")</font>
+                <font color="red">#springMessageText("noProvider", "noProvider")</font>
             #end
         </td>
     </tr>
diff --git a/dubbo-admin/src/main/resources/templates/governance/screen/loadbalances/add.vm b/dubbo-admin/src/main/resources/templates/governance/screen/loadbalances/add.vm
index 0bc3080..d33caf2 100644
--- a/dubbo-admin/src/main/resources/templates/governance/screen/loadbalances/add.vm
+++ b/dubbo-admin/src/main/resources/templates/governance/screen/loadbalances/add.vm
@@ -15,45 +15,45 @@
 #set($layout = "/templates/governance/layout/default.vm")
 <div class="ico_btn">
     <a href="../loadbalances"><img src="$rootContextPath.getURI("images/ico_back.png")" width="12" height="12"/><span
-            class="ico_font">#springMessage("back")</span></a>
+            class="ico_font">#springMessageText("back", "back")</span></a>
 </div>
 <br/>
 <form id="df" action="../loadbalances/create" method="POST" onsubmit="return check()">
     <table cellpadding="0" cellspacing="0" class="info">
         <tr>
-            <th style="width: 150px;">#springMessage("service")&nbsp;&nbsp;<font color='red'>*</font></th>
+            <th style="width: 150px;">#springMessageText("service", "service")&nbsp;&nbsp;<font color='red'>*</font></th>
             <td>#if($service)
                 <input type="hidden" id="service" name="service" value="$service"/>$service
                 #if($input)
-                    <button onclick="window.location.href='../loadbalances/add'; return false;">#springMessage(
-                        "Edit")</button>
+                    <button onclick="window.location.href='../loadbalances/add'; return false;">#springMessageText(
+                        "Edit","Edit")</button>
                 #end
             #else
                 <input type="text" id="service" name="service" value="$!route.serviceName" style="ime-mode:disabled"
                        maxlength="200"/>
                 #if ($serviceList && $serviceList.size() > 0)
                     <select onchange="if (this.value != '') { byId('service').value = this.value; this.value = ''; }">
-                        <option value="">#springMessage("Choose")</option>
+                        <option value="">#springMessageText("Choose", "Choose")</option>
                         #foreach ($s in $serviceList)
                             <option value="$s">$tool.getSimpleName($s)</option>
                         #end
                     </select>
                 #end
-                <button onclick="if(byId('service').value == '') { showAlert('#springMessage("PleaseInput")#springMessage(
-                    "ServiceName")', 'service'); } else if(!checkService(byId('service').value)) { showAlert('Service name can not contain , only last * is allowed', 'service'); } else { window.location.href='../services/' + byId('service').value+'/loadbalances/add?input=true'; } return false;">#springMessage(
-                    "getMethods")</button>
+                <button onclick="if(byId('service').value == '') { showAlert('#springMessageText("PleaseInput", "PleaseInput")#springMessageText(
+                    "ServiceName", "ServiceName")', 'service'); } else if(!checkService(byId('service').value)) { showAlert('Service name can not contain , only last * is allowed', 'service'); } else { window.location.href='../services/' + byId('service').value+'/loadbalances/add?input=true'; } return false;">#springMessageText(
+                    "getMethods","getMethods")</button>
                 <br>
-                <font color='blue'>#springMessage("MultiServiceTip")</font>
+                <font color='blue'>#springMessageText("MultiServiceTip", "MultiServiceTip")</font>
             #end
             </td>
         </tr>
         <tr>
-            <th style="width: 150px;">#springMessage("methodName")&nbsp;&nbsp;<font color='red'>*</font></th>
+            <th style="width: 150px;">#springMessageText("methodName", "methodName")&nbsp;&nbsp;<font color='red'>*</font></th>
             <td>
                 <input type="type" id="method" name="method" value="*" style="ime-mode:disabled" maxlength="200"/>
                 #if ($methods)
                     <select onchange="if (this.value != '') {byId('method').value = this.value; this.value = '';}">
-                        <option value="">#springMessage("Choose")</option>
+                        <option value="">#springMessageText("Choose", "Choose")</option>
                         #foreach ($m in $methods)
                             <option value="$m">$m</option>
                         #end
@@ -63,22 +63,22 @@
             </td>
         </tr>
         <tr>
-            <th>#springMessage("loadBalanceStrategy"):</th>
+            <th>#springMessageText("loadBalanceStrategy", "loadBalanceStrategy"):</th>
             <td>
                 <input type="text" id="strategy" name="strategy" style="ime-mode:disabled" maxlength="200" value=""/>
                 <select id="lbstrategy" name="lbstrategy"
                         onchange="if (this.value != '') { byId('strategy').value = this.value; this.value = ''; }">>
-                    <option value="">#springMessage("Choose")</option>
-                    <option value="random">#springMessage("random")</option>
-                    <option value="roundrobin">#springMessage("roundrobin")</option>
-                    <option value="leastactive">#springMessage("leastactive")</option>
+                    <option value="">#springMessageText("Choose", "Choose")</option>
+                    <option value="random">#springMessageText("random", "random")</option>
+                    <option value="roundrobin">#springMessageText("roundrobin", "roundrobin")</option>
+                    <option value="leastactive">#springMessageText("leastactive", "leastactive")</option>
                 </select>
             </td>
         </tr>
         <tr>
             <th>
-                <div class="btn"><a href="#" onclick="if(check()){document.getElementById('df').submit();}">#springMessage(
-                    "save")</a></div>
+                <div class="btn"><a href="#" onclick="if(check()){document.getElementById('df').submit();}">#springMessageText(
+                    "save","save")</a></div>
             </th>
             <td></td>
         </tr>
@@ -106,12 +106,12 @@
     function check() {
         var method = byId('method').value.trim();
         if (method == '') {
-            showAlert("#springMessage("PleaseInput")#springMessage("methodName")", 'method');
+            showAlert("#springMessageText("PleaseInput", "PleaseInput")#springMessageText("methodName", "methodName")", 'method');
             return false;
         }
         var strategy = byId('strategy').value.trim();
         if (strategy == '') {
-            showAlert("#springMessage("PleaseInput")#springMessage("loadBalanceStrategy")", 'strategy');
+            showAlert("#springMessageText("PleaseInput", "PleaseInput")#springMessageText("loadBalanceStrategy", "loadBalanceStrategy")", 'strategy');
             return false;
         }
         return true;
diff --git a/dubbo-admin/src/main/resources/templates/governance/screen/loadbalances/edit.vm b/dubbo-admin/src/main/resources/templates/governance/screen/loadbalances/edit.vm
index a9c83ff..f1305d7 100644
--- a/dubbo-admin/src/main/resources/templates/governance/screen/loadbalances/edit.vm
+++ b/dubbo-admin/src/main/resources/templates/governance/screen/loadbalances/edit.vm
@@ -15,10 +15,10 @@
 #set($layout = "/templates/governance/layout/default.vm")
 <div class="ico_btn">
     <a href="../../loadbalances"><img src="$rootContextPath.getURI("images/ico_back.png")" width="12" height="12"/><span
-            class="ico_font">#springMessage("back")</span></a>
+            class="ico_font">#springMessageText("back", "back")</span></a>
     <span class="ico_line">|</span>
     <a href="../$loadbalance.id"><img src="$rootContextPath.getURI("images/ico_show.png")" width="12" height="12"/><span
-            class="ico_font">#springMessage("show")</span></a>
+            class="ico_font">#springMessageText("show", "show")</span></a>
 </div>
 <br/>
 <form id="df" action="../update" method="POST" onsubmit="return check();">
@@ -29,19 +29,19 @@
             </td>
         </tr>
         <tr>
-            <th style="width: 100px;">#springMessage("service")&nbsp;&nbsp;<font color='red'>*</font></th>
+            <th style="width: 100px;">#springMessageText("service", "service")&nbsp;&nbsp;<font color='red'>*</font></th>
             <td>
                 $loadbalance.service
             </td>
         </tr>
         <tr>
-            <th style="width: 100px;">#springMessage("methodName")&nbsp;&nbsp;<font color='red'>*</font></th>
+            <th style="width: 100px;">#springMessageText("methodName", "methodName")&nbsp;&nbsp;<font color='red'>*</font></th>
             <td>
                 $loadbalance.method
             </td>
         </tr>
         <tr>
-            <th>#springMessage("loadBalanceStrategy"):</th>
+            <th>#springMessageText("loadBalanceStrategy", "loadBalanceStrategy"):</th>
             <td>
                 <input type="hidden" id="service" name="service" style="ime-mode:disabled" maxlength="200"
                        value="$loadbalance.service"/>
@@ -51,17 +51,17 @@
                        value="$loadbalance.strategy"/>
                 <select id="lbstrategy" name="lbstrategy"
                         onchange="if (this.value != '') { byId('strategy').value = this.value; this.value = ''; }">>
-                    <option value="">#springMessage("Choose")</option>
-                    <option value="random">#springMessage("random")</option>
-                    <option value="roundrobin">#springMessage("roundrobin")</option>
-                    <option value="leastactive">#springMessage("leastactive")</option>
+                    <option value="">#springMessageText("Choose", "Choose")</option>
+                    <option value="random">#springMessageText("random", "random")</option>
+                    <option value="roundrobin">#springMessageText("roundrobin", "roundrobin")</option>
+                    <option value="leastactive">#springMessageText("leastactive", "leastactive")</option>
                 </select>
             </td>
         </tr>
         <tr>
             <th>
-                <div class="btn"><a href="#" onclick="if(check){document.getElementById('df').submit();}">#springMessage(
-                    "save")</a></div>
+                <div class="btn"><a href="#" onclick="if(check){document.getElementById('df').submit();}">#springMessageText(
+                    "save","save")</a></div>
             </th>
             <td></td>
         </tr>
@@ -89,12 +89,12 @@
     function check() {
         var method = byId('method').value.trim();
         if (method == '') {
-            showAlert("#springMessage("PleaseInput")#springMessage("methodName")", 'method');
+            showAlert("#springMessageText("PleaseInput", "PleaseInput")#springMessageText("methodName", "methodName")", 'method');
             return false;
         }
         var strategy = byId('strategy').value.trim();
         if (strategy == '') {
-            showAlert("#springMessage("PleaseInput")#springMessage("loadBalanceStrategy")", 'strategy');
+            showAlert("#springMessageText("PleaseInput", "PleaseInput")#springMessageText("loadBalanceStrategy", "loadBalanceStrategy")", 'strategy');
             return false;
         }
         return true;
diff --git a/dubbo-admin/src/main/resources/templates/governance/screen/loadbalances/index.vm b/dubbo-admin/src/main/resources/templates/governance/screen/loadbalances/index.vm
index 46f2ec5..288d951 100644
--- a/dubbo-admin/src/main/resources/templates/governance/screen/loadbalances/index.vm
+++ b/dubbo-admin/src/main/resources/templates/governance/screen/loadbalances/index.vm
@@ -16,45 +16,45 @@
 <div class="ico_btn">
     #if($currentUser.role != "G")
         <a href="loadbalances/add"><img src="$rootContextPath.getURI("images/ico_add.png")" width="9" height="9"/><span
-                class="ico_font">#springMessage("add")</span></a>
+                class="ico_font">#springMessageText("add", "add")</span></a>
         <span class="ico_line">|</span>
-        <a href="#" onclick="if(! hasCheckbox('ids')) { showAlert('#springMessage(
-            "empty.list")'); } else if(! hasChecked('ids')) { showAlert('#springMessage(
-            "please.select")'); } else { showConfirm('#springMessage(
-            "confirm.batch.delete")', 'loadbalances/' + getChecked('ids') + '/delete'); } return false;"><img
+        <a href="#" onclick="if(! hasCheckbox('ids')) { showAlert('#springMessageText(
+            "empty.list","empty.list")'); } else if(! hasChecked('ids')) { showAlert('#springMessageText(
+            "please.select","please.select")'); } else { showConfirm('#springMessageText(
+            "confirm.batch.delete","confirm.batch.delete")', 'loadbalances/' + getChecked('ids') + '/delete'); } return false;"><img
                 src="$rootContextPath.getURI("images/ico_delete.png")" width="12" height="12"/><span
-                class="ico_font">#springMessage("batch.delete")</span></a>
+                class="ico_font">#springMessageText("batch.delete", "batch.delete")</span></a>
     #end
 </div>
 <br/>
 <table cellpadding="0" cellspacing="0" class="list list_dubbo" id="table_o">
     <tr>
         <th width="20"><input type="checkbox" onclick="checkAll('table_o', 'ids', this.checked)"/></th>
-        <th>#springMessage("service.method"): <input type="text" onkeyup="searchTable('table_o', 1, this.value);"
+        <th>#springMessageText("service.method", "service.method"): <input type="text" onkeyup="searchTable('table_o', 1, this.value);"
                                                 onclick="searchTable('table_o', 1, this.value);"/>&nbsp;<img
                 src="$rootContextPath.getURI("images/ico_search.png")" width="12" height="12"/></th>
         #if(! $service)
-            <th>#springMessage("service"): <input type="text" onkeyup="searchTable('table_o', 2, this.value);"
+            <th>#springMessageText("service", "service"): <input type="text" onkeyup="searchTable('table_o', 2, this.value);"
                                              onclick="searchTable('table_o', 2, this.value);"/>&nbsp;<img
                     src="$rootContextPath.getURI("images/ico_search.png")" width="12" height="12"/></th>
-            <th width="190">#springMessage("loadBalanceStrategy"): <select onchange="searchTable('table_o', 3, this.value);"
+            <th width="190">#springMessageText("loadBalanceStrategy", "loadBalanceStrategy"): <select onchange="searchTable('table_o', 3, this.value);"
                                                                       onclick="searchTable('table_o', 3, this.value);">
-                <option value="">#springMessage("all")</option>
-                <option value="#springMessage("random")">#springMessage("random")</option>
-                <option value="#springMessage("roundrobin")">#springMessage("roundrobin")</option>
-                <option value="#springMessage("leastactive")">#springMessage("leastactive")</option>
+                <option value="">#springMessageText("all", "all")</option>
+                <option value="#springMessageText("random", "random")">#springMessageText("random", "random")</option>
+                <option value="#springMessageText("roundrobin", "roundrobin")">#springMessageText("roundrobin", "roundrobin")</option>
+                <option value="#springMessageText("leastactive", "leastactive")">#springMessageText("leastactive", "leastactive")</option>
             </select></th>
         #else
-            <th width="190">#springMessage("loadBalanceStrategy"): <select onchange="searchTable('table_o', 2, this.value);"
+            <th width="190">#springMessageText("loadBalanceStrategy", "loadBalanceStrategy"): <select onchange="searchTable('table_o', 2, this.value);"
                                                                       onclick="searchTable('table_o', 2, this.value);">
-                <option value="">#springMessage("all")</option>
-                <option value="#springMessage("random")">#springMessage("random")</option>
-                <option value="#springMessage("roundrobin")">#springMessage("roundrobin")</option>
-                <option value="#springMessage("leastactive")">#springMessage("leastactive")</option>
+                <option value="">#springMessageText("all", "all")</option>
+                <option value="#springMessageText("random", "random")">#springMessageText("random", "random")</option>
+                <option value="#springMessageText("roundrobin", "roundrobin")">#springMessageText("roundrobin", "roundrobin")</option>
+                <option value="#springMessageText("leastactive", "leastactive")">#springMessageText("leastactive", "leastactive")</option>
             </select></th>
         #end
         #if($currentUser.role != "G")
-            <th width="130">#springMessage("operation")</th>#end
+            <th width="130">#springMessageText("operation", "operation")</th>#end
     </tr>
     #foreach($loadbalance in $loadbalances)
         <tr>
@@ -63,20 +63,20 @@
             #if(! $service)
                 <td><a href="services/$loadbalance.service/loadbalances">$loadbalance.service</a></td>
             #end
-            <td>#springMessage($loadbalance.strategy)</td>
+            <td>#springMessageText($loadbalance.strategy,$loadbalance.strategy)</td>
             #if($currentUser.role != "G")
                 <td>
                     <a href="loadbalances/$loadbalance.id/edit"><img
                             src="$rootContextPath.getURI("images/ico_edit.png")" width="12" height="12"/><span
-                            class="ico_font">#springMessage("edit")</span></a>
+                            class="ico_font">#springMessageText("edit", "edit")</span></a>
                     <span class="ico_line">|</span>
-                    <a href="#" onclick="showConfirm('#springMessage(
-                        "confirm.delete")', '$loadbalance.service', 'loadbalances/$loadbalance.id/delete'); return false;">
+                    <a href="#" onclick="showConfirm('#springMessageText(
+                        "confirm.delete","confirm.delete")', '$loadbalance.service', 'loadbalances/$loadbalance.id/delete'); return false;">
                         <img src="$rootContextPath.getURI("images/ico_delete.png")" width="12" height="12"/>
-                        <span class="ico_font">#springMessage("delete")</span></a>
+                        <span class="ico_font">#springMessageText("delete", "delete")</span></a>
                 </td>
             #end
         </tr>
     #end
 </table>
-<div class="page">#springMessage("page.total")$loadbalances.size()#springMessage("page.records") </div>
+<div class="page">#springMessageText("page.total", "page.total")$loadbalances.size()#springMessageText("page.records", "page.records") </div>
diff --git a/dubbo-admin/src/main/resources/templates/governance/screen/loadbalances/show.vm b/dubbo-admin/src/main/resources/templates/governance/screen/loadbalances/show.vm
index d84a810..4b2cdb3 100644
--- a/dubbo-admin/src/main/resources/templates/governance/screen/loadbalances/show.vm
+++ b/dubbo-admin/src/main/resources/templates/governance/screen/loadbalances/show.vm
@@ -15,28 +15,28 @@
 #set($layout = "/templates/governance/layout/default.vm")
 <div class="ico_btn">
     <a href="../loadbalances"><img src="$rootContextPath.getURI("images/ico_back.png")" width="12" height="12"/><span
-            class="ico_font">#springMessage("back")</span></a>
+            class="ico_font">#springMessageText("back", "back")</span></a>
     <span class="ico_line">|</span>
     <a href="$loadbalance.id/edit"><img src="$rootContextPath.getURI("images/ico_edit.png")" width="12"
-                                        height="12"/><span class="ico_font">#springMessage("edit")</span></a>
+                                        height="12"/><span class="ico_font">#springMessageText("edit", "edit")</span></a>
 </div>
 <br/>
 <form id="df" action="../$loadbalance.id" method="POST">
     <table cellpadding="0" cellspacing="0" class="info">
         <tr>
-            <th style="width: 100px;">#springMessage("service")&nbsp;&nbsp;<font color='red'>*</font></th>
+            <th style="width: 100px;">#springMessageText("service", "service")&nbsp;&nbsp;<font color='red'>*</font></th>
             <td>
                 $service
             </td>
         </tr>
         <tr>
-            <th style="width: 100px;">#springMessage("methodName")&nbsp;&nbsp;<font color='red'>*</font></th>
+            <th style="width: 100px;">#springMessageText("methodName", "methodName")&nbsp;&nbsp;<font color='red'>*</font></th>
             <td>
                 $loadbalance.method
             </td>
         </tr>
         <tr>
-            <th>#springMessage("loadBalanceStrategy"):</th>
+            <th>#springMessageText("loadBalanceStrategy", "loadBalanceStrategy"):</th>
             <td>
                 $loadbalance.strategy
             </td>
diff --git a/dubbo-admin/src/main/resources/templates/governance/screen/overrides/add.vm b/dubbo-admin/src/main/resources/templates/governance/screen/overrides/add.vm
index 17a34f8..0398a3e 100644
--- a/dubbo-admin/src/main/resources/templates/governance/screen/overrides/add.vm
+++ b/dubbo-admin/src/main/resources/templates/governance/screen/overrides/add.vm
@@ -15,7 +15,7 @@
 #set($layout = "/templates/governance/layout/default.vm")
 <div class="ico_btn">
     <a href="../overrides"><img src="$rootContextPath.getURI("images/ico_back.png")" width="12" height="12"/><span
-            class="ico_font">#springMessage("back")</span></a>
+            class="ico_font">#springMessageText("back", "back")</span></a>
 </div>
 <br/>
 <form id="df" action="../overrides/create" method="POST">
@@ -23,11 +23,11 @@
     <table cellpadding="0" cellspacing="0" class="info" id="table1">
         #if(! $service)
             <tr>
-                <td style="width: 100px;"><b>#springMessage("service"):</b></td>
+                <td style="width: 100px;"><b>#springMessageText("service", "service"):</b></td>
                 <td style="width: 300px;"><input id="service" type="text" name="service" class="setting_input"
                                                  style="width: 200px;"/>
                     <select onchange="fnSetService(this)">
-                        <option value="">#springMessage("Choose")</option>
+                        <option value="">#springMessageText("Choose", "Choose")</option>
                         #foreach($s in $serviceList)
                             <option value="$s">$tool.getSimpleName($s)</option>
                         #end
@@ -35,13 +35,13 @@
                 </td>
             </tr>
         #else
-            <td><b>#springMessage("service"):</b></td>
+            <td><b>#springMessageText("service", "service"):</b></td>
             <td
             ">$service<input id="service" type="hidden" name="service" class="setting_input" style="width: 200px;"
                              value="$service"/>
         #end
         <tr>
-            <td><b>#springMessage("ConsumerApplication"):</b></td>
+            <td><b>#springMessageText("ConsumerApplication", "ConsumerApplication"):</b></td>
             #if($app)
                 <td>$app</td>
             #else
@@ -50,66 +50,66 @@
             #end
         </tr>
         <tr>
-            <td><b>#springMessage("overrideConsumerAddress"):</b></td>
+            <td><b>#springMessageText("overrideConsumerAddress", "overrideConsumerAddress"):</b></td>
             <td><input type="text" id="address" name="address" class="setting_input" style="width: 300px;" value=""
-                       maxlength="200"/> <font color="blue">#springMessage("tipConsumerAddress")</font></td>
+                       maxlength="200"/> <font color="blue">#springMessageText("tipConsumerAddress", "tipConsumerAddress")</font></td>
         </tr>
         <tr>
-            <td><b>#springMessage("status"): <b></td>
+            <td><b>#springMessageText("status", "status"): <b></td>
             <td>
                 <select name="enabled">
-                    <option value="true">#springMessage("enable")</option>
-                    <option value="false" selected="selected">#springMessage("disable")</option>
+                    <option value="true">#springMessageText("enable", "enable")</option>
+                    <option value="false" selected="selected">#springMessageText("disable", "disable")</option>
                 </select>
             </td>
         </tr>
     </table>
     <hr>
-    <b>#springMessage("override.config")</b>
+    <b>#springMessageText("override.config", "override.config")</b>
     <br>
     <table cellpadding="0" cellspacing="0" class="info" id="paramTable">
         <tr>
-            <td style="width: 150px;"><b>#springMessage("parameter.key"): </b><input name='overrideKey0' id='overrideKey0'
+            <td style="width: 150px;"><b>#springMessageText("parameter.key", "parameter.key"): </b><input name='overrideKey0' id='overrideKey0'
                                                                                 type='text' style='width: 100px;'/></td>
-            <td><b>#springMessage("parameter.value"): </b><input type="text" id="overrideValue0" name="overrideValue0"
+            <td><b>#springMessageText("parameter.value", "parameter.value"): </b><input type="text" id="overrideValue0" name="overrideValue0"
                                                             class="setting_input" style="width: 300px;" value=""
-                                                            maxlength="200"/> <font color="blue">#springMessage(
-                "parameter.tip")</font></td>
+                                                            maxlength="200"/> <font color="blue">#springMessageText(
+                "parameter.tip","parameter.tip")</font></td>
         </tr>
     </table>
     <br>
     <div class="btn">
-        <a href="#" onclick="paramTableAddRow(); return false;"><b>#springMessage("add")#springMessage("parameter")</b></a>
+        <a href="#" onclick="paramTableAddRow(); return false;"><b>#springMessageText("add", "add")#springMessageText("parameter", "parameter")</b></a>
     </div>
 
     <br>
     <br>
     <hr>
 
-    <b>#springMessage("override.mock")</b>
+    <b>#springMessageText("override.mock", "override.mock")</b>
     <br>
     <table cellpadding="0" cellspacing="0" class="info" id="mockTable">
         <tr>
-            <td style="width: 230px;"><b>#springMessage("mock.all.method"):</b>
+            <td style="width: 230px;"><b>#springMessageText("mock.all.method", "mock.all.method"):</b>
             </th>
             <td><select type="text" id="mockDefaultMethodForce" name="mockDefaultMethodForce">
-                <option value='fail'>#springMessage("fail.mock")</option>
-                <option value='force'>#springMessage("force.mock")</option>
+                <option value='fail'>#springMessageText("fail.mock", "fail.mock")</option>
+                <option value='force'>#springMessageText("force.mock", "force.mock")</option>
             </select></td>
             <td><input type="text" id="mockDefaultMethodJson" name="mockDefaultMethodJson" class="setting_input"
-                       style="width: 300px;" value="" maxlength="200"/> <font color="blue">#springMessage("mock.tip")</font>
+                       style="width: 300px;" value="" maxlength="200"/> <font color="blue">#springMessageText("mock.tip", "mock.tip")</font>
             </td>
         </tr>
     </table>
     <br/>
     <div class="btn">
-        <a href="#" onclick="mockTableAddRow(); return false;"><b>#springMessage("add")#springMessage("mock.method")</b></a>
+        <a href="#" onclick="mockTableAddRow(); return false;"><b>#springMessageText("add", "add")#springMessageText("mock.method", "mock.method")</b></a>
     </div>
     <br/>
     <hr>
     <br/>
     <div class="btn">
-        <a href="#" onclick="if(check()){byId('df').submit();}"><b>#springMessage("save")</b></a>
+        <a href="#" onclick="if(check()){byId('df').submit();}"><b>#springMessageText("save", "save")</b></a>
     </div>
 </form>
 
@@ -123,7 +123,7 @@
     function check() {
         var service = byId('service').value.trim();
         if (service == '') {
-            showAlert("#springMessage("PleaseInput") #springMessage("service")", 'service');
+            showAlert("#springMessageText("PleaseInput", "PleaseInput") #springMessageText("service", "service")", 'service');
             return false;
         }
 
@@ -133,7 +133,7 @@
         var address = byId('address').value.trim();
         if (address != "") {
             if (!address.match(exp) && !address.match(exp2)) {
-                showAlert("#springMessage("InvalidIp")", 'address');
+                showAlert("#springMessageText("InvalidIp", "InvalidIp")", 'address');
                 return false;
             }
         }
@@ -164,13 +164,13 @@
         var newNameTH = document.createElement('th');
 
         var newNameTD = newTR.insertCell(0);
-        newNameTD.innerHTML = "<b>#springMessage(
-                    "parameter.key"): </b><input name='overrideKey" + paramTRLastIndex + "' id='overrideKey" + paramTRLastIndex + "' type='text' style='width: 100px;' />";
+        newNameTD.innerHTML = "<b>#springMessageText(
+                    "parameter.key","parameter.key"): </b><input name='overrideKey" + paramTRLastIndex + "' id='overrideKey" + paramTRLastIndex + "' type='text' style='width: 100px;' />";
         var newMockTD = newTR.insertCell(1);
-        newMockTD.innerHTML = "<b>#springMessage(
-                    "parameter.value"): </b><input type='text' id='overrideValue" + paramTRLastIndex + "' name='overrideValue" + paramTRLastIndex + "' class='setting_input' style='width: 300px;' value='' maxlength='200'/>"
-                + "&nbsp;<a href='javascript:;' onclick=\"tableDeleteRow('paramTable', 'paramTable" + paramTRLastIndex + "'); return false;\">#springMessage(
-                    "delete")</a>";
+        newMockTD.innerHTML = "<b>#springMessageText(
+                    "parameter.value","parameter.value"): </b><input type='text' id='overrideValue" + paramTRLastIndex + "' name='overrideValue" + paramTRLastIndex + "' class='setting_input' style='width: 300px;' value='' maxlength='200'/>"
+                + "&nbsp;<a href='javascript:;' onclick=\"tableDeleteRow('paramTable', 'paramTable" + paramTRLastIndex + "'); return false;\">#springMessageText(
+                    "delete","delete")</a>";
 
         paramTRLastIndex++; //将行号推进下一行
     }
@@ -185,16 +185,16 @@
         var newNameTH = document.createElement('th');
 
         var newNameTD = newTR.insertCell(0);
-        newNameTD.innerHTML = "<b>#springMessage(
-                    "mock.method"):</b><input name='mockMethodName" + mockTRLastIndex + "' id='mockMethodName" + mockTRLastIndex + "' type='text' style='width: 100px;' /><b>#springMessage(
-                    "mock.value"):</b>";
+        newNameTD.innerHTML = "<b>#springMessageText(
+                    "mock.method","mock.method"):</b><input name='mockMethodName" + mockTRLastIndex + "' id='mockMethodName" + mockTRLastIndex + "' type='text' style='width: 100px;' /><b>#springMessageText(
+                    "mock.value","mock.value"):</b>";
         var newNameTD = newTR.insertCell(1);
-        newNameTD.innerHTML = "<select name='mockMethodForce" + mockTRLastIndex + "' id='mockMethodForce" + mockTRLastIndex + "'><option value='fail'>#springMessage(
-                    "fail.mock")</option><option value='force'>#springMessage("force.mock")</option></select>";
+        newNameTD.innerHTML = "<select name='mockMethodForce" + mockTRLastIndex + "' id='mockMethodForce" + mockTRLastIndex + "'><option value='fail'>#springMessageText(
+                    "fail.mock","fail.mock")</option><option value='force'>#springMessageText("force.mock", "force.mock")</option></select>";
         var newMockTD = newTR.insertCell(2);
         newMockTD.innerHTML = "<input name='mockMethodJson" + mockTRLastIndex + "' id='mockMethodJson" + mockTRLastIndex + "' type='text' value='return empty' style='width: 300px;' />"
-                + "&nbsp;<a href='javascript:;' onclick=\"tableDeleteRow('mockTable', 'mockTable" + mockTRLastIndex + "'); return false;\">#springMessage(
-                    "delete")</a>";
+                + "&nbsp;<a href='javascript:;' onclick=\"tableDeleteRow('mockTable', 'mockTable" + mockTRLastIndex + "'); return false;\">#springMessageText(
+                    "delete","delete")</a>";
 
         mockTRLastIndex++; //将行号推进下一行
     }
diff --git a/dubbo-admin/src/main/resources/templates/governance/screen/overrides/edit.vm b/dubbo-admin/src/main/resources/templates/governance/screen/overrides/edit.vm
index 3fba8c2..4fe7e29 100644
--- a/dubbo-admin/src/main/resources/templates/governance/screen/overrides/edit.vm
+++ b/dubbo-admin/src/main/resources/templates/governance/screen/overrides/edit.vm
@@ -15,15 +15,15 @@
 #set($layout = "/templates/governance/layout/default.vm")
 <div class="ico_btn">
     <a href="../../overrides"><img src="$rootContextPath.getURI("images/ico_back.png")" width="12" height="12"/><span
-            class="ico_font">#springMessage("back")</span></a>
+            class="ico_font">#springMessageText("back", "back")</span></a>
     <span class="ico_line">|</span>
     <a href="../$override.id">
         <img src="$rootContextPath.getURI("images/ico_show.png")" width="13" height="13"/>
-        <span class="ico_font">#springMessage("show")</span></a>
+        <span class="ico_font">#springMessageText("show", "show")</span></a>
     <span class="ico_line">|</span>
-    <a href="#" onclick="showConfirm('#springMessage("confirm.delete")', '$override.id', 'delete'); return false;">
+    <a href="#" onclick="showConfirm('#springMessageText("confirm.delete", "confirm.delete")', '$override.id', 'delete'); return false;">
         <img src="$rootContextPath.getURI("images/ico_delete.png")" width="12" height="12"/>
-        <span class="ico_font">#springMessage("delete")</span></a>
+        <span class="ico_font">#springMessageText("delete", "delete")</span></a>
 </div>
 <br/>
 <form id="df" action="../update" method="POST">
@@ -35,63 +35,63 @@
             </td>
         </tr>
         <tr>
-            <td style="width: 100px;"><b>#springMessage("service"):</b></td>
+            <td style="width: 100px;"><b>#springMessageText("service", "service"):</b></td>
             <td style="width: 300px;">$override.service <input type="hidden" id="service" name="service"
                                                                value="$override.service" style="ime-mode:disabled"
                                                                maxlength="200"/></td>
         </tr>
         <tr>
-            <td><b>#springMessage("status"): <b></td>
+            <td><b>#springMessageText("status", "status"): <b></td>
             <td>
                 #if($override.enabled)
-				#springMessage("enable")
+				#springMessageText("enable", "enable")
 			#else
-                    #springMessage("disable")
+                    #springMessageText("disable", "disable")
                 #end
             </td>
         </tr>
         <tr>
-            <td style="width: 100px;"><b>#springMessage("ConsumerApplication"):</b></td>
+            <td style="width: 100px;"><b>#springMessageText("ConsumerApplication", "ConsumerApplication"):</b></td>
             <td>$!override.application<input type="hidden" id="application" name="application"
                                              value="$override.application" style="ime-mode:disabled" maxlength="200"/>
             </td>
         </tr>
         <tr>
-            <td style="width: 100px;"><b>#springMessage("overrideConsumerAddress"):</b></td>
+            <td style="width: 100px;"><b>#springMessageText("overrideConsumerAddress", "overrideConsumerAddress"):</b></td>
             <td>$!override.address<input type="hidden" id="address" name="address" value="$override.address"
-                                         style="ime-mode:disabled" maxlength="200"/> <font color="blue">#springMessage(
-                "tipConsumerAddress")</font></td>
+                                         style="ime-mode:disabled" maxlength="200"/> <font color="blue">#springMessageText(
+                "tipConsumerAddress","tipConsumerAddress")</font></td>
         </tr>
     </table>
     <br>
 
     <hr>
-    <b>#springMessage("override.config")</b>
+    <b>#springMessageText("override.config", "override.config")</b>
     <br>
     <table cellpadding="0" cellspacing="0" class="info" id="paramTable">
         #if($parameters.empty())
             <tr>
-                <td style="width: 150px;"><b>#springMessage("parameter.key"): </b><input name='overrideKey0'
+                <td style="width: 150px;"><b>#springMessageText("parameter.key", "parameter.key"): </b><input name='overrideKey0'
                                                                                     id='overrideKey0' type='text'
                                                                                     style='width: 100px;'/></td>
-                <td><b>#springMessage("parameter.value"): </b><input type="text" id="overrideValue0" name="overrideValue0"
+                <td><b>#springMessageText("parameter.value", "parameter.value"): </b><input type="text" id="overrideValue0" name="overrideValue0"
                                                                 class="setting_input" style="width: 300px;" value=""
-                                                                maxlength="200"/> <font color="blue">#springMessage(
-                    "parameter.tip")</font></td>
+                                                                maxlength="200"/> <font color="blue">#springMessageText(
+                    "parameter.tip","parameter.tip")</font></td>
             </tr>
         #else
             #foreach($p in $parameters.entrySet())
                 <tr id="paramTable.old.$velocityCount">
-                    <td style="width: 150px;"><b>#springMessage("parameter.key"): </b><input
+                    <td style="width: 150px;"><b>#springMessageText("parameter.key", "parameter.key"): </b><input
                             name='overrideKey.old.$velocityCount' id='overrideKey.old.$velocityCount' type='text'
                             style='width: 100px;' value='$p.key'/></td>
-                    <td><b>#springMessage("parameter.value"): </b><input type="text" id="overrideValue.old.$velocityCount"
+                    <td><b>#springMessageText("parameter.value", "parameter.value"): </b><input type="text" id="overrideValue.old.$velocityCount"
                                                                     name="overrideValue.old.$velocityCount"
                                                                     class="setting_input" style="width: 300px;"
                                                                     value="$p.value" maxlength="200"/>
                         &nbsp;<a href='javascript:;'
-                                 onclick="tableDeleteRow('paramTable', 'paramTable.old.$velocityCount'); return false;">#springMessage(
-                            "delete")</a>
+                                 onclick="tableDeleteRow('paramTable', 'paramTable.old.$velocityCount'); return false;">#springMessageText(
+                            "delete","delete")</a>
                     </td>
                 </tr>
             #end
@@ -99,35 +99,35 @@
     </table>
     <br>
     <div class="btn">
-        <a href="#" onclick="paramTableAddRow(); return false;"><b>#springMessage("add")#springMessage("parameter")</b></a>
+        <a href="#" onclick="paramTableAddRow(); return false;"><b>#springMessageText("add", "add")#springMessageText("parameter", "parameter")</b></a>
     </div>
 
     <br>
     <br>
     <hr>
 
-    <b>#springMessage("override.mock")</b>
+    <b>#springMessageText("override.mock", "override.mock")</b>
     <br>
     <table cellpadding="0" cellspacing="0" class="info" id="mockTable">
         <tr>
-            <td style="width: 230px;"><b>#springMessage("mock.all.method"):</b>
+            <td style="width: 230px;"><b>#springMessageText("mock.all.method", "mock.all.method"):</b>
             </th>
             <td><select type="text" id="mockDefaultMethodForce" name="mockDefaultMethodForce">
-                <option value='fail'>#springMessage("fail.mock")</option>
-                <option value='force'>#springMessage("force.mock")</option>
+                <option value='fail'>#springMessageText("fail.mock", "fail.mock")</option>
+                <option value='force'>#springMessageText("force.mock", "force.mock")</option>
             </select></td>
             <td><input type="text" id="mockDefaultMethodJson" name="mockDefaultMethodJson" class="setting_input"
                        style="width: 300px;" value="$!mockDefaultMethodJson" maxlength="200"/> <font
-                    color="blue">#springMessage("mock.tip")</font></td>
+                    color="blue">#springMessageText("mock.tip", "mock.tip")</font></td>
         </tr>
         #foreach($m in $methodJsons.entrySet())
-            <td><b>#springMessage("mock.method")<font color="orange"><code>${m.key}</code></font>#springMessage("mock.value"):</b>
+            <td><b>#springMessageText("mock.method", "mock.method")<font color="orange"><code>${m.key}</code></font>#springMessageText("mock.value", "mock.value"):</b>
             </td>
             <td><select type="text" id="mockMethodForce.$m.key" name="mockMethodForce.$m.key">
-                <option value='fail'#if($methodForces.get($m.key) != "force") selected='selected'#end>#springMessage(
-                    "fail.mock")</option>
-                <option value='force'#if($methodForces.get($m.key) == "force") selected='selected'#end>#springMessage(
-                    "force.mock")</option>
+                <option value='fail'#if($methodForces.get($m.key) != "force") selected='selected'#end>#springMessageText(
+                    "fail.mock","fail.mock")</option>
+                <option value='force'#if($methodForces.get($m.key) == "force") selected='selected'#end>#springMessageText(
+                    "force.mock","force.mock")</option>
             </select></td>
             <td><input type="text" id="mockMethod.$m.key" name="mockMethod.$m.key" class="setting_input"
                        style="width: 300px;" value="$!m.value" maxlength="200"/></td>
@@ -136,7 +136,7 @@
     </table>
     <br/>
     <div class="btn">
-        <a href="#" onclick="mockTableAddRow(); return false;"><b>#springMessage("add")#springMessage("mock.method")</b></a>
+        <a href="#" onclick="mockTableAddRow(); return false;"><b>#springMessageText("add", "add")#springMessageText("mock.method", "mock.method")</b></a>
     </div>
     <br/>
     <hr>
@@ -144,8 +144,8 @@
 
 
     <div class="btn">
-        <div class="btn"><a href="#" onclick="if(check()){document.getElementById('df').submit();}"><b>#springMessage(
-            "save")</b></a>
+        <div class="btn"><a href="#" onclick="if(check()){document.getElementById('df').submit();}"><b>#springMessageText(
+            "save","save")</b></a>
         </div>
 </form>
 
@@ -160,7 +160,7 @@
     function check() {
         var service = byId('service').value.trim();
         if (service == '') {
-            showAlert("#springMessage("PleaseInput"), #springMessage("service"))", 'service');
+            showAlert("#springMessageText("PleaseInput", "PleaseInput"), #springMessageText("service", "service"))", 'service');
             return false;
         }
         return true;
@@ -189,13 +189,13 @@
         var newNameTH = document.createElement('th');
 
         var newNameTD = newTR.insertCell(0);
-        newNameTD.innerHTML = "<b>#springMessage(
-                    "parameter.key"): </b><input name='overrideKey" + paramTRLastIndex + "' id='overrideKey" + paramTRLastIndex + "' type='text' style='width: 100px;' />";
+        newNameTD.innerHTML = "<b>#springMessageText(
+                    "parameter.key","parameter.key"): </b><input name='overrideKey" + paramTRLastIndex + "' id='overrideKey" + paramTRLastIndex + "' type='text' style='width: 100px;' />";
         var newMockTD = newTR.insertCell(1);
-        newMockTD.innerHTML = "<b>#springMessage(
-                    "parameter.value"): </b><input type='text' id='overrideValue" + paramTRLastIndex + "' name='overrideValue" + paramTRLastIndex + "' class='setting_input' style='width: 300px;' value='' maxlength='200'/>"
-                + "&nbsp;<a href='javascript:;' onclick=\"tableDeleteRow('paramTable', 'paramTable" + paramTRLastIndex + "'); return false;\">#springMessage(
-                    "delete")</a>";
+        newMockTD.innerHTML = "<b>#springMessageText(
+                    "parameter.value","parameter.value"): </b><input type='text' id='overrideValue" + paramTRLastIndex + "' name='overrideValue" + paramTRLastIndex + "' class='setting_input' style='width: 300px;' value='' maxlength='200'/>"
+                + "&nbsp;<a href='javascript:;' onclick=\"tableDeleteRow('paramTable', 'paramTable" + paramTRLastIndex + "'); return false;\">#springMessageText(
+                    "delete","delete")</a>";
 
         paramTRLastIndex++; //将行号推进下一行
     }
@@ -210,15 +210,15 @@
         var newNameTH = document.createElement('th');
 
         var newNameTD = newTR.insertCell(0);
-        newNameTD.innerHTML = "<b>#springMessage(
-                    "mock.method"):</b><input name='mockMethodName" + mockTRLastIndex + "' id='mockMethodName" + mockTRLastIndex + "' type='text' style='width: 100px;' /><b>#springMessage(
-                    "mock.value"):</b>";
+        newNameTD.innerHTML = "<b>#springMessageText(
+                    "mock.method","mock.method"):</b><input name='mockMethodName" + mockTRLastIndex + "' id='mockMethodName" + mockTRLastIndex + "' type='text' style='width: 100px;' /><b>#springMessageText(
+                    "mock.value","mock.value"):</b>";
         var newNameTD = newTR.insertCell(1);
         newNameTD.innerHTML = "<select name='mockMethodForce" + mockTRLastIndex + "' id='mockMethodForce" + mockTRLastIndex + "'><option value='fail'>fail</option><option value='force'>force</option></select>";
         var newMockTD = newTR.insertCell(2);
         newMockTD.innerHTML = "<input name='mockMethodJson" + mockTRLastIndex + "' id='mockMethodJson" + mockTRLastIndex + "' type='text' value='return empty' style='width: 300px;' />"
-                + "&nbsp;<a href='javascript:;' onclick=\"tableDeleteRow('mockTable', 'mockTable" + mockTRLastIndex + "'); return false;\">#springMessage(
-                    "delete")</a>";
+                + "&nbsp;<a href='javascript:;' onclick=\"tableDeleteRow('mockTable', 'mockTable" + mockTRLastIndex + "'); return false;\">#springMessageText(
+                    "delete","delete")</a>";
 
         mockTRLastIndex++; //将行号推进下一行
     }
diff --git a/dubbo-admin/src/main/resources/templates/governance/screen/overrides/index.vm b/dubbo-admin/src/main/resources/templates/governance/screen/overrides/index.vm
index f569521..1820164 100644
--- a/dubbo-admin/src/main/resources/templates/governance/screen/overrides/index.vm
+++ b/dubbo-admin/src/main/resources/templates/governance/screen/overrides/index.vm
@@ -16,14 +16,14 @@
 <div class="ico_btn">
     #if($currentUser.role != "G")
         <a href="overrides/add"><img src="$rootContextPath.getURI("images/ico_add.png")" width="9" height="9"/><span
-                class="ico_font">#springMessage("add")</span></a>
+                class="ico_font">#springMessageText("add", "add")</span></a>
         <span class="ico_line">|</span>
-        <a href="#" onclick="if(! hasCheckbox('ids')) { showAlert('#springMessage(
-            "empty.list")'); } else if(! hasChecked('ids')) { showAlert('#springMessage(
-            "please.select")'); } else { showConfirm('#springMessage(
-            "confirm.batch.delete")', 'overrides/' + getChecked('ids') + '/delete'); } return false;"><img
+        <a href="#" onclick="if(! hasCheckbox('ids')) { showAlert('#springMessageText(
+            "empty.list","empty.list")'); } else if(! hasChecked('ids')) { showAlert('#springMessageText(
+            "please.select","please.select")'); } else { showConfirm('#springMessageText(
+            "confirm.batch.delete","confirm.batch.delete")', 'overrides/' + getChecked('ids') + '/delete'); } return false;"><img
                 src="$rootContextPath.getURI("images/ico_delete.png")" width="12" height="12"/><span
-                class="ico_font">#springMessage("batch.delete")</span></a>
+                class="ico_font">#springMessageText("batch.delete", "batch.delete")</span></a>
     #end
 </div>
 <br/>
@@ -31,14 +31,14 @@
     <tr>
         <th width="20"><input type="checkbox" onclick="checkAll('table_o', 'ids', this.checked)"/></th>
         #if(!$service)
-            <th>#springMessage("service")</th>
+            <th>#springMessageText("service", "service")</th>
         #end
-        <th>#springMessage("application")</th>
-        <th>#springMessage("address")</th>
-        <th>#springMessage("parameters")</th>
-        <th>#springMessage("status")</th>
+        <th>#springMessageText("application", "application")</th>
+        <th>#springMessageText("address", "address")</th>
+        <th>#springMessageText("parameters", "parameters")</th>
+        <th>#springMessageText("status", "status")</th>
         #if($currentUser.role != "G")
-            <th>#springMessage("operation")</th>#end
+            <th>#springMessageText("operation", "operation")</th>#end
     </tr>
     #foreach($override in $overrides)
         <tr>
@@ -51,40 +51,40 @@
             <td>$!tool.decodeUrl($override.params)</td>
             <td>
                 #if($override.enabled)
-                    <font color="green">#springMessage("Enabled")</font>
+                    <font color="green">#springMessageText("enabled", "enabled")</font>
                 #else
-                    <font color="red">#springMessage("Disabled")</font>
+                    <font color="red">#springMessageText("disabled", "disabled")</font>
                 #end
             </td>
             #if($currentUser.role != "G")
                 <td>
                     <a href="overrides/$override.id">
                         <img src="$rootContextPath.getURI("images/ico_show.png")" width="13" height="13"/>
-                        <span class="ico_font">#springMessage("show")</span></a>
+                        <span class="ico_font">#springMessageText("show", "show")</span></a>
                     <span class="ico_line">|</span>
                     <a href="overrides/$override.id/edit">
                         <img src="$rootContextPath.getURI("images/ico_edit.png")" width="13" height="13"/>
-                        <span class="ico_font">#springMessage("edit")</span></a>
+                        <span class="ico_font">#springMessageText("edit", "edit")</span></a>
                     <span class="ico_line">|</span>
                     #if($override.enabled)
-                        <a href="#" onclick="showConfirm('#springMessage(
-                            "confirm.disable")', '$override.application - $override.address', 'overrides/$override.id/disable'); return false;"><img
+                        <a href="#" onclick="showConfirm('#springMessageText(
+                            "confirm.disable","confirm.disable")', '$override.application - $override.address', 'overrides/$override.id/disable'); return false;"><img
                                 src="$rootContextPath.getURI("images/ico_disable.png")" width="12" height="12"/><span
-                                class="ico_font">#springMessage("disable")</span></a>
+                                class="ico_font">#springMessageText("disable", "disable")</span></a>
                     #else
-                        <a href="#" onclick="showConfirm('#springMessage(
-                            "confirm.enable")', '$override.application - $override.address', 'overrides/$override.id/enable'); return false;"><img
+                        <a href="#" onclick="showConfirm('#springMessageText(
+                            "confirm.enable","confirm.enable")', '$override.application - $override.address', 'overrides/$override.id/enable'); return false;"><img
                                 src="$rootContextPath.getURI("images/ico_enable.png")" width="12" height="12"/><span
-                                class="ico_font">#springMessage("enable")</span></a>
+                                class="ico_font">#springMessageText("enable", "enable")</span></a>
                     #end
                     <span class="ico_line">|</span>
-                    <a href="#" onclick="showConfirm('#springMessage(
-                        "confirm.delete")', '$override.id', 'overrides/$override.id/delete'); return false;">
+                    <a href="#" onclick="showConfirm('#springMessageText(
+                        "confirm.delete","confirm.delete")', '$override.id', 'overrides/$override.id/delete'); return false;">
                         <img src="$rootContextPath.getURI("images/ico_delete.png")" width="12" height="12"/>
-                        <span class="ico_font">#springMessage("delete")</span></a>
+                        <span class="ico_font">#springMessageText("delete", "delete")</span></a>
                 </td>
             #end
         </tr>
     #end
 </table>
-<div class="page">#springMessage("page.total")$overrides.size()#springMessage("page.records") </div>
+<div class="page">#springMessageText("page.total", "page.total")$overrides.size()#springMessageText("page.records", "page.records") </div>
diff --git a/dubbo-admin/src/main/resources/templates/governance/screen/overrides/show.vm b/dubbo-admin/src/main/resources/templates/governance/screen/overrides/show.vm
index cdbc8b3..2a7980f 100644
--- a/dubbo-admin/src/main/resources/templates/governance/screen/overrides/show.vm
+++ b/dubbo-admin/src/main/resources/templates/governance/screen/overrides/show.vm
@@ -15,53 +15,53 @@
 #set($layout = "/templates/governance/layout/default.vm")
 <div class="ico_btn">
     <a href="../overrides"><img src="$rootContextPath.getURI("images/ico_back.png")" width="12" height="12"/><span
-            class="ico_font">#springMessage("back")</span></a>
+            class="ico_font">#springMessageText("back", "back")</span></a>
     <span class="ico_line">|</span>
     <a href="$override.id/edit">
         <img src="$rootContextPath.getURI("images/ico_edit.png")" width="13" height="13"/>
-        <span class="ico_font">#springMessage("edit")</span></a>
+        <span class="ico_font">#springMessageText("edit", "edit")</span></a>
     <span class="ico_line">|</span>
     <a href="#"
-       onclick="showConfirm('#springMessage("confirm.delete")', '$override.id', '$override.id/delete'); return false;">
+       onclick="showConfirm('#springMessageText("confirm.delete", "confirm.delete")', '$override.id', '$override.id/delete'); return false;">
         <img src="$rootContextPath.getURI("images/ico_delete.png")" width="12" height="12"/>
-        <span class="ico_font">#springMessage("delete")</span></a>
+        <span class="ico_font">#springMessageText("delete", "delete")</span></a>
 </div>
 <br/>
 
 <table cellpadding="0" cellspacing="0" class="info" id="dynamicTable">
     <tr>
-        <td style="width: 100px;"><b>#springMessage("service"):</b></td>
+        <td style="width: 100px;"><b>#springMessageText("service", "service"):</b></td>
         <td style="width: 300px;">$override.service</td>
     </tr>
     <tr>
-        <td><b>#springMessage("status"): <b></td>
+        <td><b>#springMessageText("status", "status"): <b></td>
         <td>
             #if($override.enabled)
-				#springMessage("enable")
+				#springMessageText("enable", "enable")
 			#else
-                #springMessage("disable")
+                #springMessageText("disable", "disable")
             #end
         </td>
     </tr>
     <tr>
-        <td style="width: 100px;"><b>#springMessage("application")</b></td>
+        <td style="width: 100px;"><b>#springMessageText("application", "application")</b></td>
         <td>$!override.application</td>
     </tr>
     <tr>
-        <td style="width: 100px;"><b>#springMessage("clientAddress")</b></td>
+        <td style="width: 100px;"><b>#springMessageText("clientAddress", "clientAddress")</b></td>
         <td>$!override.address</td>
     </tr>
 </table>
 <br>
 
 <hr>
-<b>#springMessage("override.config")</b>
+<b>#springMessageText("override.config", "override.config")</b>
 <br>
 <table cellpadding="0" cellspacing="0" class="info" id="paramTable">
     #foreach($p in $parameters.entrySet())
         <tr id="paramTable.old.$velocityCount">
-            <td style="width: 150px;"><b>#springMessage("parameter.key"): </b> $p.key</td>
-            <td><b>#springMessage("parameter.value"): </b> $p.value
+            <td style="width: 150px;"><b>#springMessageText("parameter.key", "parameter.key"): </b> $p.key</td>
+            <td><b>#springMessageText("parameter.value", "parameter.value"): </b> $p.value
             </td>
         </tr>
     #end
@@ -71,18 +71,18 @@
 <br>
 <hr>
 
-<b>#springMessage("override.mock")</b>
+<b>#springMessageText("override.mock", "override.mock")</b>
 <br>
 <table cellpadding="0" cellspacing="0" class="info" id="mockTable">
     #if($mockDefaultMethodJson)
         <tr>
-            <td style="width: 150px;"><b>#springMessage("mock.all.method"):</b>
+            <td style="width: 150px;"><b>#springMessageText("mock.all.method", "mock.all.method"):</b>
             </th>
             <td>
                 #if($mockDefaultMethodForce == "force")
-                    #springMessage("force.mock")
+                    #springMessageText("force.mock", "force.mock")
                 #else
-                    #springMessage("fail.mock")
+                    #springMessageText("fail.mock", "fail.mock")
                 #end
                 :
                 $mockDefaultMethodJson
@@ -90,13 +90,13 @@
         </tr>
     #end
     #foreach($m in $methodJsons.entrySet())
-        <td><b>#springMessage("mock.method")<font color="orange"><code>${m.key}</code></font>#springMessage("mock.value"):</b>
+        <td><b>#springMessageText("mock.method", "mock.method")<font color="orange"><code>${m.key}</code></font>#springMessageText("mock.value", "mock.value"):</b>
         </td>
         <td>
             #if($methodForces.get($m.key) == "force")
-                #springMessage("force.mock")
+                #springMessageText("force.mock", "force.mock")
             #else
-                #springMessage("fail.mock")
+                #springMessageText("fail.mock", "fail.mock")
             #end
             :
             $m.value
@@ -119,7 +119,7 @@
     function check() {
         var service = byId('service').value.trim();
         if (service == '') {
-            showAlert("#springMessage("PleaseInput"), #springMessage("service"))", 'service');
+            showAlert("#springMessageText("PleaseInput", "PleaseInput"), #springMessageText("service", "service"))", 'service');
             return false;
         }
         return true;
diff --git a/dubbo-admin/src/main/resources/templates/governance/screen/owners/add.vm b/dubbo-admin/src/main/resources/templates/governance/screen/owners/add.vm
index 9414245..963f423 100644
--- a/dubbo-admin/src/main/resources/templates/governance/screen/owners/add.vm
+++ b/dubbo-admin/src/main/resources/templates/governance/screen/owners/add.vm
@@ -15,13 +15,13 @@
 #set($layout = "/templates/governance/layout/default.vm")
 <div class="ico_btn">
     <a href="../owners"><img src="$rootContextPath.getURI("images/ico_back.png")" width="12" height="12"/><span
-            class="ico_font">#springMessage("back")</span></a>
+            class="ico_font">#springMessageText("back", "back")</span></a>
 </div>
 <br/>
 <form id="df" action="create" method="POST">
     <table cellpadding="0" cellspacing="0" class="info">
         <tr>
-            <th style="width: 150px;">#springMessage("service")&nbsp;&nbsp;<font color='red'>*</font></th>
+            <th style="width: 150px;">#springMessageText("service", "service")&nbsp;&nbsp;<font color='red'>*</font></th>
             <td>
                 #if($service)
                     <input type="hidden" id="serviceName" name="service" value="$service"/>$service
@@ -29,7 +29,7 @@
                     <input id="serviceName" name="service" rows="5" cols="40" maxlength="200">
                     #if ($serviceList && $serviceList.size() > 0)
                         <select id="selectService" name="selectService" onchange="fnSetService(this)">
-                            <option value="">#springMessage("Choose")</option>
+                            <option value="">#springMessageText("Choose", "Choose")</option>
                             #foreach ($s in $serviceList)
                                 <option value="$s">$tool.getSimpleName($s)</option>
                             #end
@@ -39,14 +39,14 @@
             </td>
         </tr>
         <tr>
-            <th style="width: 150px;">#springMessage("Username")&nbsp;&nbsp;<font color='red'>*</font></th>
+            <th style="width: 150px;">#springMessageText("Username", "Username")&nbsp;&nbsp;<font color='red'>*</font></th>
             <td><input type="text" id="username" name="username" style="ime-mode:disabled" value="$operator"
                        maxlength="100"/></td>
         </tr>
         <tr>
             <th>
-                <div class="btn"><a href="#" onclick="if(check()){document.getElementById('df').submit();}">#springMessage(
-                    "save")</a></div>
+                <div class="btn"><a href="#" onclick="if(check()){document.getElementById('df').submit();}">#springMessageText(
+                    "save","save")</a></div>
             </th>
             <td></td>
         </tr>
@@ -56,7 +56,7 @@
     function check() {
         var username = byId('username').value.trim();
         if (username == '') {
-            showAlert("#springMessage("PleaseInput")#springMessage("Username")", 'username');
+            showAlert("#springMessageText("PleaseInput", "PleaseInput")#springMessageText("Username", "Username")", 'username');
             return false;
         }
         return true;
diff --git a/dubbo-admin/src/main/resources/templates/governance/screen/owners/index.vm b/dubbo-admin/src/main/resources/templates/governance/screen/owners/index.vm
index 98a1716..168f253 100644
--- a/dubbo-admin/src/main/resources/templates/governance/screen/owners/index.vm
+++ b/dubbo-admin/src/main/resources/templates/governance/screen/owners/index.vm
@@ -16,22 +16,22 @@
 <div class="ico_btn">
     #if($currentUser.role != "G")
         <a href="owners/add"><img src="$rootContextPath.getURI("images/ico_add.png")" width="12" height="12"/><span
-                class="ico_font">#springMessage("add")</span></a>
+                class="ico_font">#springMessageText("add", "add")</span></a>
     #end
 </div>
 <br/>
 <table cellpadding="0" cellspacing="0" class="list list_dubbo" id="table_o">
     <tr>
-        <th>#springMessage("username"): <input type="text" onkeyup="searchTable('table_o', 1, this.value);"
+        <th>#springMessageText("Username", "Username"): <input type="text" onkeyup="searchTable('table_o', 1, this.value);"
                                           onclick="searchTable('table_o', 1, this.value);"/>&nbsp;<img
                 src="$rootContextPath.getURI("images/ico_search.png")" width="12" height="12"/></th>
         #if(! $service)
-            <th>#springMessage("service"): <input type="text" onkeyup="searchTable('table_o', 2, this.value);"
+            <th>#springMessageText("service", "service"): <input type="text" onkeyup="searchTable('table_o', 2, this.value);"
                                              onclick="searchTable('table_o', 2, this.value);"/>&nbsp;<img
                     src="$rootContextPath.getURI("images/ico_search.png")" width="12" height="12"/></th>
         #end
         #if($currentUser.role != "G")
-            <th>#springMessage("operation")</th>#end
+            <th>#springMessageText("operation", "operation")</th>#end
     </tr>
     #foreach($owner in $owners)
         <tr>
@@ -42,14 +42,14 @@
             #if($currentUser.role != "G")
                 <td>
                     #if($currentUser.hasServicePrivilege($owner.service))
-                        <a href="#" onclick="showConfirm('#springMessage(
-                            "confirm.delete")', '$owner.username', 'owners/0/delete?username=$owner.username#if(! $service)&service=$owner.service#end'); return false;"><img
+                        <a href="#" onclick="showConfirm('#springMessageText(
+                            "confirm.delete","confirm.delete")', '$owner.username', 'owners/0/delete?username=$owner.username#if(! $service)&service=$owner.service#end'); return false;"><img
                                 src="$rootContextPath.getURI("images/ico_delete.png")" width="12" height="12"/><span
-                                class="ico_font">#springMessage("delete")</span></a>
+                                class="ico_font">#springMessageText("delete", "delete")</span></a>
                     #end
                 </td>
             #end
         </tr>
     #end
 </table>
-<div class="page">#springMessage("page.total")$owners.size()#springMessage("page.records") </div>
+<div class="page">#springMessageText("page.total", "page.total")$owners.size()#springMessageText("page.records", "page.records") </div>
diff --git a/dubbo-admin/src/main/resources/templates/governance/screen/providers/add.vm b/dubbo-admin/src/main/resources/templates/governance/screen/providers/add.vm
index 5a02d1a..0f60dfd 100644
--- a/dubbo-admin/src/main/resources/templates/governance/screen/providers/add.vm
+++ b/dubbo-admin/src/main/resources/templates/governance/screen/providers/add.vm
@@ -15,7 +15,7 @@
 #set($layout = "/templates/governance/layout/default.vm")
 <div class="ico_btn">
     <a href="#if($id)../#end../providers"><img src="$rootContextPath.getURI("images/ico_back.png")" width="12"
-                                               height="12"/><span class="ico_font">#springMessage("back")</span></a>
+                                               height="12"/><span class="ico_font">#springMessageText("back", "back")</span></a>
 </div>
 <br/>
 <form id="providerForm" action="#if($id)../create#{else}create#end" method="POST">
@@ -25,11 +25,11 @@
                 <input type="hidden" id="service" name="service" value="$!provider.service"/>
             #else
                 <tr>
-                    <th style="width: 100px;">#springMessage("service"):</th>
+                    <th style="width: 100px;">#springMessageText("service", "service"):</th>
                     <td style="width: 300px;"><input id="service" type="text" name="service" class="setting_input"
                                                      style="width: 200px;"/>
                         <select onchange="fnSetService(this)">
-                            <option value="">#springMessage("Choose")</option>
+                            <option value="">#springMessageText("Choose", "Choose")</option>
                             #foreach($s in $serviceList)
                                 <option value="$s">$tool.getSimpleName($s)</option>
                             #end
@@ -39,29 +39,29 @@
             #end
         #end
         <tr>
-            <th style="width: 100px;">#springMessage("url"):</th>
+            <th style="width: 100px;">#springMessageText("url", "url"):</th>
             <td><input type="text" id="url" name="url"
                        value="#if($provider.url)$!provider.url?$!provider.parameters#{else}dubbo://#if($address)$address#{else}0.0.0.0:20880#end/#if($service)$tool.getInterface($service)#{else}com.xxx.XxxService#end?application=#if($app)$app#{else}xxx#end#if($tool.getGroup($service))&group=$tool.getGroup($service)#end#if($tool.getVersion($service))&version=$tool.getVersion($service)#end#end"
                        class="setting_input" style="width: 700px;" maxlength="2000"/></td>
         </tr>
         <tr>
-            <th>#springMessage("type"):</th>
-            <td><font color="blue">#springMessage("static")</font></td>
+            <th>#springMessageText("type", "type"):</th>
+            <td><font color="blue">#springMessageText("static", "static")</font></td>
         </tr>
         <tr>
-            <th>#springMessage("status"):</th>
+            <th>#springMessageText("status", "status"):</th>
             <td>
                 <select name="enabled">
-                    <option value="true">#springMessage("enable")</option>
-                    <option value="false" selected="selected">#springMessage("disable")</option>
+                    <option value="true">#springMessageText("enable", "enable")</option>
+                    <option value="false" selected="selected">#springMessageText("disable", "disable")</option>
                 </select>
             </td>
         </tr>
         <tr>
             <th>
                 <div class="btn"><a href="#"
-                                    onclick="if(check()){document.getElementById('providerForm').submit();}">#springMessage(
-                    "save")</a></div>
+                                    onclick="if(check()){document.getElementById('providerForm').submit();}">#springMessageText(
+                    "save","save")</a></div>
             </th>
         </tr>
     </table>
@@ -84,13 +84,13 @@
         #if(! $service)
             var service = byId('service').value.trim();
             if (service == '') {
-                showAlert("#springMessage("PleaseInput")#springMessage("service")", 'service');
+                showAlert("#springMessageText("PleaseInput", "PleaseInput")#springMessageText("service", "service")", 'service');
                 return false;
             }
         #end
         var url = byId('url').value.trim();
         if (url == '' || url.indexOf('0.0.0.0') > 0 || url.indexOf('com.xxx.XxxService') > 0 || url.indexOf('application=xxx') > 0) {
-            showAlert("#springMessage("PleaseInput")#springMessage("url")", 'url');
+            showAlert("#springMessageText("PleaseInput", "PleaseInput")#springMessageText("url", "url")", 'url');
             return false;
         }
         return true;
diff --git a/dubbo-admin/src/main/resources/templates/governance/screen/providers/edit.vm b/dubbo-admin/src/main/resources/templates/governance/screen/providers/edit.vm
index a777b77..456592a 100644
--- a/dubbo-admin/src/main/resources/templates/governance/screen/providers/edit.vm
+++ b/dubbo-admin/src/main/resources/templates/governance/screen/providers/edit.vm
@@ -15,42 +15,42 @@
 #set($layout = "/templates/governance/layout/default.vm")
 <div class="ico_btn">
     <a href="../../providers"><img src="$rootContextPath.getURI("images/ico_back.png")" width="12" height="12"/><span
-            class="ico_font">#springMessage("back")</span></a>
+            class="ico_font">#springMessageText("back", "back")</span></a>
     <span class="ico_line">|</span>
     <a href="../$provider.id"><img src="$rootContextPath.getURI("images/ico_show.png")" width="12" height="12"/><span
-            class="ico_font">#springMessage("show")</span></a>
+            class="ico_font">#springMessageText("show", "show")</span></a>
     #if($currentUser.hasServicePrivilege($provider.service))
         <span class="ico_line">|</span>
         <a href="../$provider.id/add"><img src="$rootContextPath.getURI("images/ico_add.png")" width="12"
-                                           height="12"/><span class="ico_font">#springMessage("copy")</span></a>
+                                           height="12"/><span class="ico_font">#springMessageText("copy", "copy")</span></a>
         <span class="ico_line">|</span>
-        <a href="#" onclick="showConfirm('#springMessage(
-            "confirm.weight.doubling")', '$provider.url', '../$provider.id/doubling'); return false;"><img
+        <a href="#" onclick="showConfirm('#springMessageText(
+            "confirm.weight.doubling","confirm.weight.doubling")', '$provider.url', '../$provider.id/doubling'); return false;"><img
                 src="$rootContextPath.getURI("images/ico_up.png")" width="12" height="12"/><span
-                class="ico_font">#springMessage("weight.doubling")</span></a>
+                class="ico_font">#springMessageText("weight.doubling", "weight.doubling")</span></a>
         <span class="ico_line">|</span>
-        <a href="#" onclick="showConfirm('#springMessage(
-            "confirm.weight.halving")', '$provider.url', '../$provider.id/halving'); return false;"><img
+        <a href="#" onclick="showConfirm('#springMessageText(
+            "confirm.weight.halving","confirm.weight.halving")', '$provider.url', '../$provider.id/halving'); return false;"><img
                 src="$rootContextPath.getURI("images/ico_down.png")" width="12" height="12"/><span
-                class="ico_font">#springMessage("weight.halving")</span></a>
+                class="ico_font">#springMessageText("weight.halving", "weight.halving")</span></a>
         <span class="ico_line">|</span>
         #if($tool.isProviderEnabled($provider))
-            <a href="#" onclick="showConfirm('#springMessage(
-                "confirm.disable")', '$provider.url', '../$provider.id/disable'); return false;"><img
+            <a href="#" onclick="showConfirm('#springMessageText(
+                "confirm.disable","confirm.disable")', '$provider.url', '../$provider.id/disable'); return false;"><img
                     src="$rootContextPath.getURI("images/ico_disable.png")" width="12" height="12"/><span
-                    class="ico_font">#springMessage("disable")</span></a>
+                    class="ico_font">#springMessageText("disable", "disable")</span></a>
         #else
-            <a href="#" onclick="showConfirm('#springMessage(
-                "confirm.enable")', '$provider.url', '../$provider.id/enable'); return false;"><img
+            <a href="#" onclick="showConfirm('#springMessageText(
+                "confirm.enable","confirm.enable")', '$provider.url', '../$provider.id/enable'); return false;"><img
                     src="$rootContextPath.getURI("images/ico_enable.png")" width="12" height="12"/><span
-                    class="ico_font">#springMessage("enable")</span></a>
+                    class="ico_font">#springMessageText("enable", "enable")</span></a>
         #end
         #if(! $provider.dynamic)
             <span class="ico_line">|</span>
-            <a href="#" onclick="showConfirm('#springMessage(
-                "confirm.delete")', '$provider.url', '../$provider.id/delete'); return false;"><img
+            <a href="#" onclick="showConfirm('#springMessageText(
+                "confirm.delete","confirm.delete")', '$provider.url', '../$provider.id/delete'); return false;"><img
                     src="$rootContextPath.getURI("images/ico_delete.png")" width="12" height="12"/><span
-                    class="ico_font">#springMessage("delete")</span></a>
+                    class="ico_font">#springMessageText("delete", "delete")</span></a>
         #end
     #end
 </div>
@@ -64,13 +64,13 @@
         </tr>
         #if(! $service)
             <tr>
-                <th style="width: 100px;">#springMessage("service"):</th>
+                <th style="width: 100px;">#springMessageText("service", "service"):</th>
                 <td style="width: 300px;"><input type="hidden" name="service"
                                                  value="$provider.service"/>$provider.service</td>
             </tr>
         #end
         <tr>
-            <th style="width: 100px;">#springMessage("url"):</th>
+            <th style="width: 100px;">#springMessageText("url", "url"):</th>
             <td>
                 <input type="hidden" name="url" value="$provider.url"/>
                 #if($provider.dynamic)
@@ -83,25 +83,25 @@
         </tr>
         #if($provider.dynamic)
             <tr>
-                <th>#springMessage("overrides"):</th>
+                <th>#springMessageText("overrides", "overrides"):</th>
                 <td><input type="text" name="parameters" value="$!provider.override.params" class="setting_input"
-                           style="width: 400px;"/> <font color="blue">#springMessage("dynamic.parameters.tip")</font></td>
+                           style="width: 400px;"/> <font color="blue">#springMessageText("dynamic.parameters.tip", "dynamic.parameters.tip")</font></td>
             </tr>
         #end
         <tr>
-            <th>#springMessage("type"):</th>
-            <td>#if($provider.dynamic)<font color="green">#springMessage("dynamic")</font>#else<font color="blue">#springMessage(
-                "static")</font>#end</td>
+            <th>#springMessageText("type", "type"):</th>
+            <td>#if($provider.dynamic)<font color="green">#springMessageText("dynamic", "dynamic")</font>#else<font color="blue">#springMessageText(
+                "static","static")</font>#end</td>
         </tr>
         <tr>
-            <th>#springMessage("status"):</th>
-            <td>#if($provider.enabled)<font color="green">#springMessage("enabled")</font>#else<font color="red">#springMessage(
-                "disabled")</font>#end</td>
+            <th>#springMessageText("status", "status"):</th>
+            <td>#if($provider.enabled)<font color="green">#springMessageText("enabled", "enabled")</font>#else<font color="red">#springMessageText(
+                "disabled","disabled")</font>#end</td>
         </tr>
         <tr>
             <th>
-                <div class="btn"><a href="#" onclick="document.getElementById('providerForm').submit();">#springMessage(
-                    "save")</a></div>
+                <div class="btn"><a href="#" onclick="document.getElementById('providerForm').submit();">#springMessageText(
+                    "save","save")</a></div>
             </th>
             <td></td>
         </tr>
diff --git a/dubbo-admin/src/main/resources/templates/governance/screen/providers/index.vm b/dubbo-admin/src/main/resources/templates/governance/screen/providers/index.vm
index 08d5aff..b10dff3 100644
--- a/dubbo-admin/src/main/resources/templates/governance/screen/providers/index.vm
+++ b/dubbo-admin/src/main/resources/templates/governance/screen/providers/index.vm
@@ -16,77 +16,77 @@
 <div class="ico_btn">
     #if($currentUser.role != "G")
         <a href="providers/add"><img src="$rootContextPath.getURI("images/ico_add.png")" width="12" height="12"/><span
-                class="ico_font">#springMessage("add")</span></a>
+                class="ico_font">#springMessageText("add", "add")</span></a>
         <span class="ico_line">|</span>
-        <a href="#" onclick="if(! hasCheckbox('ids')) { showAlert('#springMessage(
-            "empty.list")'); } else if(! hasChecked('ids')) { showAlert('#springMessage(
-            "please.select")'); } else { showConfirm('#springMessage(
-            "confirm.batch.weight.doubling")', 'providers/' + getChecked('ids') + '/doubling' );} return false;"><img
+        <a href="#" onclick="if(! hasCheckbox('ids')) { showAlert('#springMessageText(
+            "empty.list","empty.list")'); } else if(! hasChecked('ids')) { showAlert('#springMessageText(
+            "please.select","please.select")'); } else { showConfirm('#springMessageText(
+            "confirm.batch.weight.doubling","confirm.batch.weight.doubling")', 'providers/' + getChecked('ids') + '/doubling' );} return false;"><img
                 src="$rootContextPath.getURI("images/ico_up.png")" width="12" height="12"/><span
-                class="ico_font">#springMessage("batch.weight.doubling")</span></a>
+                class="ico_font">#springMessageText("batch.weight.doubling", "batch.weight.doubling")</span></a>
         <span class="ico_line">|</span>
-        <a href="#" onclick="if(! hasCheckbox('ids')) { showAlert('#springMessage(
-            "empty.list")'); } else if(! hasChecked('ids')) { showAlert('#springMessage(
-            "please.select")'); } else { showConfirm('#springMessage(
-            "confirm.batch.weight.halving")', 'providers/' + getChecked('ids') + '/halving' );} return false;"><img
+        <a href="#" onclick="if(! hasCheckbox('ids')) { showAlert('#springMessageText(
+            "empty.list","empty.list")'); } else if(! hasChecked('ids')) { showAlert('#springMessageText(
+            "please.select","please.select")'); } else { showConfirm('#springMessageText(
+            "confirm.batch.weight.halving","confirm.batch.weight.halving")', 'providers/' + getChecked('ids') + '/halving' );} return false;"><img
                 src="$rootContextPath.getURI("images/ico_down.png")" width="12" height="12"/><span
-                class="ico_font">#springMessage("batch.weight.halving")</span></a>
+                class="ico_font">#springMessageText("batch.weight.halving", "batch.weight.halving")</span></a>
         <span class="ico_line">|</span>
-        <a href="#" onclick="if(! hasCheckbox('ids')) { showAlert('#springMessage(
-            "empty.list")'); } else if(! hasChecked('ids')) { showAlert('#springMessage(
-            "please.select")'); } else { showConfirm('#springMessage(
-            "confirm.batch.disable")', 'providers/' + getChecked('ids') + '/disable' );} return false;"><img
+        <a href="#" onclick="if(! hasCheckbox('ids')) { showAlert('#springMessageText(
+            "empty.list","empty.list")'); } else if(! hasChecked('ids')) { showAlert('#springMessageText(
+            "please.select","please.select")'); } else { showConfirm('#springMessageText(
+            "confirm.batch.disable","confirm.batch.disable")', 'providers/' + getChecked('ids') + '/disable' );} return false;"><img
                 src="$rootContextPath.getURI("images/ico_disable.png")" width="12" height="12"/><span
-                class="ico_font">#springMessage("batch.disable")</span></a>
+                class="ico_font">#springMessageText("batch.disable", "batch.disable")</span></a>
         <span class="ico_line">|</span>
-        <a href="#" onclick="if(! hasCheckbox('ids')) { showAlert('#springMessage(
-            "empty.list")'); } else if(! hasChecked('ids')) { showAlert('#springMessage(
-            "please.select")'); } else { showConfirm('#springMessage(
-            "confirm.batch.enable")', 'providers/' + getChecked('ids') + '/enable' );} return false;"><img
+        <a href="#" onclick="if(! hasCheckbox('ids')) { showAlert('#springMessageText(
+            "empty.list","empty.list")'); } else if(! hasChecked('ids')) { showAlert('#springMessageText(
+            "please.select","please.select")'); } else { showConfirm('#springMessageText(
+            "confirm.batch.enable","confirm.batch.enable")', 'providers/' + getChecked('ids') + '/enable' );} return false;"><img
                 src="$rootContextPath.getURI("images/ico_enable.png")" width="12" height="12"/><span
-                class="ico_font">#springMessage("batch.enable")</span></a>
+                class="ico_font">#springMessageText("batch.enable", "batch.enable")</span></a>
         <span class="ico_line">|</span>
-        <a href="#" onclick="if(! hasCheckbox('ids')) { showAlert('#springMessage(
-            "empty.list")'); } else if(! hasChecked('ids')) { showAlert('#springMessage(
-            "please.select")'); } else { showConfirm('#springMessage(
-            "confirm.batch.delete")', 'providers/' + getChecked('ids') + '/delete' ); } return false;"><img
+        <a href="#" onclick="if(! hasCheckbox('ids')) { showAlert('#springMessageText(
+            "empty.list","empty.list")'); } else if(! hasChecked('ids')) { showAlert('#springMessageText(
+            "please.select","please.select")'); } else { showConfirm('#springMessageText(
+            "confirm.batch.delete","confirm.batch.delete")', 'providers/' + getChecked('ids') + '/delete' ); } return false;"><img
                 src="$rootContextPath.getURI("images/ico_delete.png")" width="12" height="12"/><span
-                class="ico_font">#springMessage("batch.delete")</span></a>
+                class="ico_font">#springMessageText("batch.delete", "batch.delete")</span></a>
     #end
 </div>
 <br/>
 <table cellpadding="0" cellspacing="0" class="list list_dubbo" id="table_o">
     <tr>
         <th width="20"><input type="checkbox" onclick="checkAll('table_o', 'ids', this.checked)"/></th>
-        <th>#if($address)#springMessage("service")#else#springMessage("address")#end: <input type="text" style="width: 60px;"
+        <th>#if($address)#springMessageText("service", "service")#else#springMessageText("address", "address")#end: <input type="text" style="width: 60px;"
                                                                                    onkeyup="searchTable('table_o', 1, this.value);"
                                                                                    onclick="searchTable('table_o', 1, this.value);"/>&nbsp;<img
                 src="$rootContextPath.getURI("images/ico_search.png")" width="12" height="12"/></th>
-        <th>#springMessage("weight"): <input type="text" style="width: 60px;"
+        <th>#springMessageText("weight", "weight"): <input type="text" style="width: 60px;"
                                         onkeyup="searchTable('table_o', 2, this.value);"
                                         onclick="searchTable('table_o', 2, this.value);"/>&nbsp;<img
                 src="$rootContextPath.getURI("images/ico_search.png")" width="12" height="12"/></th>
-        <th width="100">#springMessage("type"): <select onchange="searchTable('table_o', 3, this.value);"
+        <th width="100">#springMessageText("type", "type"): <select onchange="searchTable('table_o', 3, this.value);"
                                                    onclick="searchTable('table_o', 3, this.value);">
-            <option value="">#springMessage("all")</option>
-            <option value="#springMessage("dynamic")">#springMessage("dynamic")</option>
-            <option value="#springMessage("static")">#springMessage("static")</option>
+            <option value="">#springMessageText("all", "all")</option>
+            <option value="#springMessageText("dynamic", "dynamic")">#springMessageText("dynamic", "dynamic")</option>
+            <option value="#springMessageText("static", "static")">#springMessageText("static", "static")</option>
         </select></th>
-        <th width="110">#springMessage("status"): <select onchange="searchTable('table_o', 4, this.value);"
+        <th width="110">#springMessageText("status", "status"): <select onchange="searchTable('table_o', 4, this.value);"
                                                      onclick="searchTable('table_o', 4, this.value);">
-            <option value="">#springMessage("all")</option>
-            <option value="#springMessage("enabled")">#springMessage("enabled")</option>
-            <option value="#springMessage("disabled")">#springMessage("disabled")</option>
+            <option value="">#springMessageText("all", "all")</option>
+            <option value="#springMessageText("enabled", "enabled")">#springMessageText("enabled", "enabled")</option>
+            <option value="#springMessageText("disabled", "disabled")">#springMessageText("disabled", "disabled")</option>
         </select></th>
-        <th width="100">#springMessage("check"): <select onchange="searchTable('table_o', 5, this.value);"
+        <th width="100">#springMessageText("check", "check"): <select onchange="searchTable('table_o', 5, this.value);"
                                                     onclick="searchTable('table_o', 5, this.value);">
-            <option value="">#springMessage("all")</option>
-            <option value="#springMessage("ok")">#springMessage("ok")</option>
-            <option value="#springMessage("warn")">#springMessage("warn")</option>
-            <option value="#springMessage("error")">#springMessage("error")</option>
+            <option value="">#springMessageText("all", "all")</option>
+            <option value="#springMessageText("ok", "ok")">#springMessageText("ok", "ok")</option>
+            <option value="#springMessageText("warn", "warn")">#springMessageText("warn", "warn")</option>
+            <option value="#springMessageText("error", "error")">#springMessageText("error", "error")</option>
         </select></th>
         #if($currentUser.role != "G")
-            <th>#springMessage("operation")</th>#end
+            <th>#springMessageText("operation", "operation")</th>#end
     </tr>
 
     #foreach($provider in $providers)
@@ -97,17 +97,17 @@
                 <a href="providers/$provider.id">#if($address)$tool.getSimpleName($provider.service)#else$provider.address#end</a>
             </td>
             <td>$tool.getProviderWeight($provider)</td>
-            <td>#if($provider.dynamic)<font color="green">#springMessage("dynamic")</font>#else<font color="blue">#springMessage(
-                "static")</font>#end</td>
-            <td>#if($tool.isProviderEnabled($provider))<font color="green">#springMessage("enabled")</font>#else<font
-                    color="red">#springMessage("disabled")</font>#end</td>
+            <td>#if($provider.dynamic)<font color="green">#springMessageText("dynamic", "dynamic")</font>#else<font color="blue">#springMessageText(
+                "static","static")</font>#end</td>
+            <td>#if($tool.isProviderEnabled($provider))<font color="green">#springMessageText("enabled", "enabled")</font>#else<font
+                    color="red">#springMessageText("disabled", "disabled")</font>#end</td>
             <td>
                 #set($errorLevel = "ok")
                 #set($errorMessage = "")
                 #set($appList = $!serviceAppMap.get($provider.service))
                 #if($appList.size()>1)
                     #if ($errorLevel != "error") #set($errorLevel = "warn") #end
-                    #set($errorMessage ="$errorMessage<br>#springMessage('warn'): #springMessage(
+                    #set($errorMessage ="$errorMessage<br>#springMessageText('warn', 'warn'): #springMessageText(
                         'CheckProviderApplicationDifferent', $appList)")
                 #end
 
@@ -115,23 +115,23 @@
                     "localhost:") || $provider.address.startsWith("0.0.0.0:"))
                     #if ($errorLevel != "error") #set($errorLevel = "warn") #end
                     #set($errorMessage =
-                        "$errorMessage<br>#springMessage('warn'): #springMessage('CheckProviderLocalAddress', $provider.address)")
+                        "$errorMessage<br>#springMessageText('warn', 'warn'): #springMessage('CheckProviderLocalAddress', $provider.address)")
                 #end
 
                 #if ($errorLevel == "warn")
-                    <a href="#" onclick="showAlert('<font color=orange>#springMessage(
-                        "warn")</font>', '$errorMessage'); return false;">
+                    <a href="#" onclick="showAlert('<font color=orange>#springMessageText(
+                        'warn','warn')</font>', '$errorMessage'); return false;">
                         <img src="$rootContextPath.getURI("images/ico_warn.png")" width="12" height="12"/>
-                        <font color="orange"><u>#springMessage("warn")</u></font>
+                        <font color="orange"><u>#springMessageText("warn", "warn")</u></font>
                     </a>
                 #elseif ($errorLevel == "error")
                     <a href="#"
-                       onclick="showAlert('<font color=red>#springMessage("error")</font>', '$errorMessage'); return false;">
+                       onclick="showAlert('<font color=red>#springMessageText("error", "error")</font>', '$errorMessage'); return false;">
                         <img src="$rootContextPath.getURI("images/ico_error.png")" width="12" height="12"/>
-                        <font color="red"><u>#springMessage("error")</u></font>
+                        <font color="red"><u>#springMessageText("error", "error")</u></font>
                     </a>
                 #else
-                    <font color="green">#springMessage("ok")</font>
+                    <font color="green">#springMessageText("ok", "ok")</font>
                 #end
             </td>
             #if($currentUser.role != "G")
@@ -139,39 +139,39 @@
                     #if($currentUser.hasServicePrivilege($provider.service))
                         <a href="providers/$provider.id/edit"><img src="$rootContextPath.getURI("images/ico_edit.png")"
                                                                    width="12" height="12"/><span
-                                class="ico_font">#springMessage("edit")</span></a>
+                                class="ico_font">#springMessageText("edit", "edit")</span></a>
                         <span class="ico_line">|</span>
                         <a href="providers/$provider.id/add"><img src="$rootContextPath.getURI("images/ico_add.png")"
                                                                   width="12" height="12"/><span
-                                class="ico_font">#springMessage("copy")</span></a>
+                                class="ico_font">#springMessageText("copy", "copy")</span></a>
                         <span class="ico_line">|</span>
-                        <a href="#" onclick="showConfirm('#springMessage(
-                            "confirm.weight.doubling")', '$provider.url', 'providers/$provider.id/doubling'); return false;"><img
+                        <a href="#" onclick="showConfirm('#springMessageText(
+                            "confirm.weight.doubling","confirm.weight.doubling")', '$provider.url', 'providers/$provider.id/doubling'); return false;"><img
                                 src="$rootContextPath.getURI("images/ico_up.png")" width="12" height="12"/><span
-                                class="ico_font">#springMessage("weight.doubling")</span></a>
+                                class="ico_font">#springMessageText("weight.doubling", "weight.doubling")</span></a>
                         <span class="ico_line">|</span>
-                        <a href="#" onclick="showConfirm('#springMessage(
-                            "confirm.weight.halving")', '$provider.url', 'providers/$provider.id/halving'); return false;"><img
+                        <a href="#" onclick="showConfirm('#springMessageText(
+                            "confirm.weight.halving","confirm.weight.halving")', '$provider.url', 'providers/$provider.id/halving'); return false;"><img
                                 src="$rootContextPath.getURI("images/ico_down.png")" width="12" height="12"/><span
-                                class="ico_font">#springMessage("weight.halving")</span></a>
+                                class="ico_font">#springMessageText("weight.halving", "weight.halving")</span></a>
                         <span class="ico_line">|</span>
                         #if($tool.isProviderEnabled($provider))
-                            <a href="#" onclick="showConfirm('#springMessage(
-                                "confirm.disable")', '$provider.url', 'providers/$provider.id/disable'); return false;"><img
+                            <a href="#" onclick="showConfirm('#springMessageText(
+                                "confirm.disable","confirm.disable")', '$provider.url', 'providers/$provider.id/disable'); return false;"><img
                                     src="$rootContextPath.getURI("images/ico_disable.png")" width="12"
-                                    height="12"/><span class="ico_font">#springMessage("disable")</span></a>
+                                    height="12"/><span class="ico_font">#springMessageText("disable", "disable")</span></a>
                         #else
-                            <a href="#" onclick="showConfirm('#springMessage(
-                                "confirm.enable")', '$provider.url', 'providers/$provider.id/enable'); return false;"><img
+                            <a href="#" onclick="showConfirm('#springMessageText(
+                                "confirm.enable","confirm.enable")', '$provider.url', 'providers/$provider.id/enable'); return false;"><img
                                     src="$rootContextPath.getURI("images/ico_enable.png")" width="12" height="12"/><span
-                                    class="ico_font">#springMessage("enable")</span></a>
+                                    class="ico_font">#springMessageText("enable", "enable")</span></a>
                         #end
                         #if(! $provider.dynamic)
                             <span class="ico_line">|</span>
-                            <a href="#" onclick="showConfirm('#springMessage(
-                                "confirm.delete")', '$provider.url', 'providers/$provider.id/delete'); return false;"><img
+                            <a href="#" onclick="showConfirm('#springMessageText(
+                                "confirm.delete","confirm.delete")', '$provider.url', 'providers/$provider.id/delete'); return false;"><img
                                     src="$rootContextPath.getURI("images/ico_delete.png")" width="12" height="12"/><span
-                                    class="ico_font">#springMessage("delete")</span></a>
+                                    class="ico_font">#springMessageText("delete", "delete")</span></a>
                         #end
                     #end
                 </td>
@@ -179,4 +179,4 @@
         </tr>
     #end
 </table>
-<div class="page">#springMessage("page.total")$providers.size()#springMessage("page.records") </div>
+<div class="page">#springMessageText("page.total", "page.total")$providers.size()#springMessageText("page.records", "page.records") </div>
diff --git a/dubbo-admin/src/main/resources/templates/governance/screen/providers/show.vm b/dubbo-admin/src/main/resources/templates/governance/screen/providers/show.vm
index fed35a7..50aade4 100644
--- a/dubbo-admin/src/main/resources/templates/governance/screen/providers/show.vm
+++ b/dubbo-admin/src/main/resources/templates/governance/screen/providers/show.vm
@@ -15,42 +15,42 @@
 #set($layout = "/templates/governance/layout/default.vm")
 <div class="ico_btn">
     <a href="../providers"><img src="$rootContextPath.getURI("images/ico_back.png")" width="12" height="12"/><span
-            class="ico_font">#springMessage("back")</span></a>
+            class="ico_font">#springMessageText("back", "back")</span></a>
     #if($currentUser.hasServicePrivilege($provider.service))
         <span class="ico_line">|</span>
         <a href="$provider.id/edit"><img src="$rootContextPath.getURI("images/ico_edit.png")" width="12"
-                                         height="12"/><span class="ico_font">#springMessage("edit")</span></a>
+                                         height="12"/><span class="ico_font">#springMessageText("edit", "edit")</span></a>
         <span class="ico_line">|</span>
         <a href="$provider.id/add"><img src="$rootContextPath.getURI("images/ico_add.png")" width="12"
-                                        height="12"/><span class="ico_font">#springMessage("copy")</span></a>
+                                        height="12"/><span class="ico_font">#springMessageText("copy", "copy")</span></a>
         <span class="ico_line">|</span>
-        <a href="#" onclick="showConfirm('#springMessage(
-            "confirm.weight.doubling")', '$provider.url', '../doubling?ids=$provider.id'); return false;"><img
+        <a href="#" onclick="showConfirm('#springMessageText(
+            "confirm.weight.doubling","confirm.weight.doubling")', '$provider.url', '../doubling?ids=$provider.id'); return false;"><img
                 src="$rootContextPath.getURI("images/ico_up.png")" width="12" height="12"/><span
-                class="ico_font">#springMessage("weight.doubling")</span></a>
+                class="ico_font">#springMessageText("weight.doubling", "weight.doubling")</span></a>
         <span class="ico_line">|</span>
-        <a href="#" onclick="showConfirm('#springMessage(
-            "confirm.weight.halving")', '$provider.url', '../halving?ids=$provider.id'); return false;"><img
+        <a href="#" onclick="showConfirm('#springMessageText(
+            "confirm.weight.halving","confirm.weight.halving")', '$provider.url', '../halving?ids=$provider.id'); return false;"><img
                 src="$rootContextPath.getURI("images/ico_down.png")" width="12" height="12"/><span
-                class="ico_font">#springMessage("weight.halving")</span></a>
+                class="ico_font">#springMessageText("weight.halving", "weight.halving")</span></a>
         <span class="ico_line">|</span>
         #if($tool.isProviderEnabled($provider))
-            <a href="#" onclick="showConfirm('#springMessage(
-                "confirm.disable")', '$provider.url', '../disable?ids=$provider.id'); return false;"><img
+            <a href="#" onclick="showConfirm('#springMessageText(
+                "confirm.disable","confirm.disable")', '$provider.url', '../disable?ids=$provider.id'); return false;"><img
                     src="$rootContextPath.getURI("images/ico_disable.png")" width="12" height="12"/><span
-                    class="ico_font">#springMessage("disable")</span></a>
+                    class="ico_font">#springMessageText("disable", "disable")</span></a>
         #else
-            <a href="#" onclick="showConfirm('#springMessage(
-                "confirm.enable")', '$provider.url', '../enable?ids=$provider.id'); return false;"><img
+            <a href="#" onclick="showConfirm('#springMessageText(
+                "confirm.enable", "confirm.enable")', '$provider.url', '../enable?ids=$provider.id'); return false;"><img
                     src="$rootContextPath.getURI("images/ico_enable.png")" width="12" height="12"/><span
-                    class="ico_font">#springMessage("enable")</span></a>
+                    class="ico_font">#springMessageText("enable", "enable")</span></a>
         #end
         #if(! $provider.dynamic)
             <span class="ico_line">|</span>
-            <a href="#" onclick="showConfirm('#springMessage(
-                "confirm.delete")', '$provider.url', '../delete?ids=$provider.id'); return false;"><img
+            <a href="#" onclick="showConfirm('#springMessageText(
+                "confirm.delete","confirm.delete")', '$provider.url', '../delete?ids=$provider.id'); return false;"><img
                     src="$rootContextPath.getURI("images/ico_delete.png")" width="12" height="12"/><span
-                    class="ico_font">#springMessage("delete")</span></a>
+                    class="ico_font">#springMessageText("delete", "delete")</span></a>
         #end
     #end
 </div>
@@ -58,43 +58,43 @@
 <table cellpadding="0" cellspacing="0" class="info">
     #if(! $service)
         <tr>
-            <th style="width: 100px;">#springMessage("service"):</th>
+            <th style="width: 100px;">#springMessageText("service", "service"):</th>
             <td>$!provider.service</td>
         </tr>
     #end
     <tr>
-        <th style="width: 100px;">#springMessage("url"):</th>
+        <th style="width: 100px;">#springMessageText("url", "url"):</th>
         <td>$!provider.url?$!provider.parameters</td>
     </tr>
     #if($provider.dynamic)
         <tr>
-            <th>#springMessage("overrides"):</th>
+            <th>#springMessageText("overrides", "overrides"):</th>
             <td>$!provider.override.params</td>
         </tr>
     #end
     <tr>
-        <th>#springMessage("host"):</th>
+        <th>#springMessageText("host", "host"):</th>
         <td>$tool.getHostPrefix($!provider.address)$!provider.address</td>
     </tr>
     #foreach($entry in $tool.toParameterMap($!provider.parameters).entrySet())
         <tr>
-            <th>#springMessage($entry.key):</th>
+            <th>#springMessageText($entry.key, $entry.key):</th>
             <td>#if($entry.key == "timestamp") $tool.formatTimestamp($entry.value)
                 ($entry.value) #else $entry.value #end</td>
         </tr>
     #end
     <tr>
-        <th>#springMessage("type"):</th>
-        <td>#if($provider.dynamic)<font color="green">#springMessage("dynamic")</font>#else<font color="blue">#springMessage(
-            "static")</font>#end</td>
+        <th>#springMessageText("type", "type"):</th>
+        <td>#if($provider.dynamic)<font color="green">#springMessageText("dynamic", "dynamic")</font>#else<font color="blue">#springMessageText(
+            "static","static")</font>#end</td>
     </tr>
     <tr>
-        <th>#springMessage("status"):</th>
-        <td>#if($provider.enabled)<font color="green">#springMessage("enabled")</font>#else<font color="red">#springMessage(
-            "disabled")</font>#end</td>
+        <th>#springMessageText("status", "status"):</th>
+        <td>#if($provider.enabled)<font color="green">#springMessageText("enabled", "enabled")</font>#else<font color="red">#springMessageText(
+            "disabled","disabled")</font>#end</td>
     </tr>
     <tr>
-        <th>#springMessage("check"):</th>
+        <th>#springMessageText("check", "check"):</th>
         <td>
             #set($errorLevel = "ok")
             #set($errorMessage = "")
@@ -103,23 +103,23 @@
                 "localhost:") || $provider.address.startsWith("0.0.0.0:"))
                 #if ($errorLevel != "error") #set($errorLevel = "warn") #end
                 #set($errorMessage =
-                    "$errorMessage<br>#springMessage('warn'): #springMessage('CheckProviderLocalAddress', $provider.address)")
+                    "$errorMessage<br>#springMessageText('warn', 'warn'): #springMessage('CheckProviderLocalAddress', $provider.address)")
             #end
 
             #if ($errorLevel == "warn")
                 <a href="#"
-                   onclick="showAlert('<font color=orange>#springMessage("warn")</font>', '$errorMessage'); return false;">
+                   onclick="showAlert('<font color=orange>#springMessageText("warn", "warn")</font>', '$errorMessage'); return false;">
                     <img src="$rootContextPath.getURI("images/ico_warn.png")" width="12" height="12"/>
-                    <font color="orange"><u>#springMessage("warn")</u></font>
+                    <font color="orange"><u>#springMessageText("warn", "warn")</u></font>
                 </a>
             #elseif ($errorLevel == "error")
                 <a href="#"
-                   onclick="showAlert('<font color=red>#springMessage("error")</font>', '$errorMessage'); return false;">
+                   onclick="showAlert('<font color=red>#springMessageText("error", "error")</font>', '$errorMessage'); return false;">
                     <img src="$rootContextPath.getURI("images/ico_error.png")" width="12" height="12"/>
-                    <font color="red"><u>#springMessage("error")</u></font>
+                    <font color="red"><u>#springMessageText("error", "error")</u></font>
                 </a>
             #else
-                <font color="green">#springMessage("ok")</font>
+                <font color="green">#springMessageText("ok", "ok")</font>
             #end
         </td>
     </tr>
diff --git a/dubbo-admin/src/main/resources/templates/governance/screen/redirect.vm b/dubbo-admin/src/main/resources/templates/governance/screen/redirect.vm
index a21659f..4b86740 100644
--- a/dubbo-admin/src/main/resources/templates/governance/screen/redirect.vm
+++ b/dubbo-admin/src/main/resources/templates/governance/screen/redirect.vm
@@ -25,14 +25,14 @@
                                 height="20"/></td>
         </tr>
         <tr height="120">
-            <td align="right"><span style="font-size: 32px;">#if($success)#springMessage("operation.success")#else#springMessage(
-                "operation.failure")#end</span><br/>$!message$!exception.message</td>
+            <td align="right"><span style="font-size: 32px;">#if($success)#springMessageText("operation.success", "operation.success")#else#springMessageText(
+                "operation.failure","operation.failure")#end</span><br/>$!message$!exception.message</td>
             <td></td>
         </tr>
         <tr>
             <td align="right">#if(!$success)
                 <div class="btn_info" style="float: right; clear: left;"><a
-                        href="$redirect">#springMessage("confirm")</a>
+                        href="$redirect">#springMessageText("confirm", "confirm")</a>
                 </div>#end</td>
             <td></td>
         </tr>
diff --git a/dubbo-admin/src/main/resources/templates/governance/screen/routes/add.vm b/dubbo-admin/src/main/resources/templates/governance/screen/routes/add.vm
index c48b4f7..b502738 100644
--- a/dubbo-admin/src/main/resources/templates/governance/screen/routes/add.vm
+++ b/dubbo-admin/src/main/resources/templates/governance/screen/routes/add.vm
@@ -15,60 +15,60 @@
 #set($layout = "/templates/governance/layout/default.vm")
 <div class="ico_btn">
     <a href="../routes"><img src="$rootContextPath.getURI("images/ico_back.png")" width="12" height="12"/><span
-            class="ico_font">#springMessage("back")</span></a>
+            class="ico_font">#springMessageText("back", "back")</span></a>
 </div>
 <br/>
 <form id="df" action="create" method="POST" onsubmit="return check();">
     <table cellpadding="0" cellspacing="0" class="info">
         <tr>
-            <th width="100">#springMessage("route.name"): <font color='red'>*</font></th>
+            <th width="100">#springMessageText("route.name", "route.name"): <font color='red'>*</font></th>
             <td colspan="2"><input type="text" id="name" name="name" maxlength="200"/></td>
-            <td><font color='blue'>#springMessage("RouteNameTip")</font></td>
+            <td><font color='blue'>#springMessageText("RouteNameTip", "RouteNameTip")</font></td>
         </tr>
         <tr>
-            <th>#springMessage("Priority"):</th>
+            <th>#springMessageText("Priority", "Priority"):</th>
             <td colspan="2">
                 <input type="text" id="priority" name="priority" value="#if($route)$route.priority#{else}0#end"
                        onkeydown="return checkNumber();"/>
             </td>
-            <td><font color='blue'>#springMessage("RoutePriorityTip")</font></td>
+            <td><font color='blue'>#springMessageText("RoutePriorityTip", "RoutePriorityTip")</font></td>
         </tr>
         <tr>
-            <th>#springMessage("service"): <font color='red'>*</font></th>
+            <th>#springMessageText("service", "service"): <font color='red'>*</font></th>
             <td colspan="2">
                 #if($service)
                     <input type="hidden" id="service" name="service" value="$service"/>$service
                     #if($input)
-                        <button onclick="window.location.href='../routes/add'; return false;">#springMessage("Edit")</button>
+                        <button onclick="window.location.href='../routes/add'; return false;">#springMessageText("edit", "edit")</button>
                     #end
                 #else
                     <input type="text" id="service" name="service" value="$!route.serviceName" style="ime-mode:disabled"
                            maxlength="200"/>
                     #if ($serviceList && $serviceList.size() > 0)
                         <select onchange="if (this.value != '') { byId('service').value = this.value; this.value = ''; }">
-                            <option value="">#springMessage("Choose")</option>
+                            <option value="">#springMessageText("Choose", "Choose")</option>
                             #foreach ($s in $serviceList)
                                 <option value="$s">$tool.getSimpleName($s)</option>
                             #end
                         </select>
                     #end
-                    <button onclick="if(byId('service').value == '') { showAlert('#springMessage("PleaseInput")#springMessage(
-                        "ServiceName")', 'service'); } else if(!checkService(byId('service').value)) { showAlert('Service name can not contain , only last * is allowed', 'service'); } else { window.location.href='../services/' + byId('service').value+'/routes/add?input=true'; } return false;">#springMessage(
-                        "getMethods")</button>
+                    <button onclick="if(byId('service').value == '') { showAlert('#springMessageText("PleaseInput", "PleaseInput")#springMessageText(
+                        "ServiceName","ServiceName")', 'service'); } else if(!checkService(byId('service').value)) { showAlert('Service name can not contain , only last * is allowed', 'service'); } else { window.location.href='../services/' + byId('service').value+'/routes/add?input=true'; } return false;">#springMessageText(
+                        "getMethods","getMethods")</button>
                     <br>
-                    <font color='blue'>#springMessage("RouteServiceTip")</font>
+                    <font color='blue'>#springMessageText("RouteServiceTip", "RouteServiceTip")</font>
                 #end
             </td>
             <td>
             </td>
         </tr>
         <tr>
-            <th>#springMessage("methodName"):</th>
+            <th>#springMessageText("methodName", "methodName"):</th>
             <td colspan="2">
                 <input type="text" id="method" name="method" value="" style="ime-mode:disabled"/>
                 #if ($methods)
                     <select onchange="if (this.value != '') { if (byId('method').value == '') { byId('method').value = this.value; } else { byId('method').value = byId('method').value + ',' + this.value; } this.value = ''; }">
-                        <option value="">#springMessage("Choose")</option>
+                        <option value="">#springMessageText("Choose", "Choose")</option>
                         #foreach ($m in $methods)
                             <option value="$m">$m</option>
                         #end
@@ -78,37 +78,37 @@
 
             </td>
             <td>
-                <font color='blue'>#springMessage("RouteMethodTip")<font>
+                <font color='blue'>#springMessageText("RouteMethodTip", "RouteMethodTip")<font>
             </td>
         </tr>
         <tr>
-            <th>#springMessage("MatchRule")</th>
-            <th>#springMessage("Match")</th>
-            <th>#springMessage("Mismatch")</th>
-            <td><font color='blue'>#springMessage("RouteMatchTip")</font></td>
+            <th>#springMessageText("MatchRule","MatchRule")</th>
+            <th>#springMessageText("Match", "Match")</th>
+            <th>#springMessageText("Mismatch", "Mismatch")</th>
+            <td><font color='blue'>#springMessageText("RouteMatchTip", "RouteMatchTip")</font></td>
         </tr>
         <tr>
-            <th>#springMessage("ConsumerHost"):</th>
+            <th>#springMessageText("ConsumerHost", "ConsumerHost"):</th>
             <td><input type="text" id="consumerHost" name="consumerHost" value="$!tool.getIP($address)"
                        style="ime-mode:disabled"/></td>
             <td><input type="text" id="unconsumerHost" name="unconsumerHost" value="" style="ime-mode:disabled"/></td>
-            <td><font color="blue">#springMessage("RouteHostTip")</font></td>
+            <td><font color="blue">#springMessageText("RouteHostTip", "RouteHostTip")</font></td>
         </tr>
         <tr>
-            <th>#springMessage("ConsumerApplication"):</th>
+            <th>#springMessageText("ConsumerApplication", "ConsumerApplication"):</th>
             <td><input type="text" id="consumerApplication" name="consumerApplication" value=""
                        style="ime-mode:disabled"/></td>
             <td><input type="text" id="unconsumerApplication" name="unconsumerApplication" value=""
                        style="ime-mode:disabled"/></td>
-            <td><font color="blue">#springMessage("RouteApplicationTip")</font></td>
+            <td><font color="blue">#springMessageText("RouteApplicationTip", "RouteApplicationTip")</font></td>
         </tr>
         <tr>
-            <th>#springMessage("ConsumerCluster"):</th>
+            <th>#springMessageText("ConsumerCluster", "ConsumerCluster"):</th>
             <td>
                 <input type="text" id="consumerCluster" name="consumerCluster" value="" style="ime-mode:disabled"/>
                 #if ($clusterNames && $clusterNames.size() > 0)
                     <select onchange="if (this.value != '') { if (byId('consumerCluster').value == '') { byId('consumerCluster').value = this.value; } else { byId('consumerCluster').value = byId('consumerCluster').value + ',' + this.value; } this.value = ''; }">
-                        <option value="">#springMessage("Choose")</option>
+                        <option value="">#springMessageText("Choose", "Choose")</option>
                         #foreach ($c in $clusterNames)
                             <option value="$c">$c</option>
                         #end
@@ -119,36 +119,36 @@
                 <input type="text" id="unconsumerCluster" name="unconsumerCluster" value="" style="ime-mode:disabled"/>
                 #if ($clusterNames && $clusterNames.size() > 0)
                     <select onchange="if (this.value != '') { if (byId('unconsumerCluster').value == '') { byId('unconsumerCluster').value = this.value; } else { byId('unconsumerCluster').value = byId('unconsumerCluster').value + ',' + this.value; } this.value = ''; }">
-                        <option value="">#springMessage("Choose")</option>
+                        <option value="">#springMessageText("Choose", "Choose")</option>
                         #foreach ($c in $clusterNames)
                             <option value="$c">$c</option>
                         #end
                     </select>
                 #end
             </td>
-            <td><font color="blue">#springMessage("RouteClusterTip")</font></td>
+            <td><font color="blue">#springMessageText("RouteClusterTip","RouteClusterTip")</font></td>
         </tr>
         <tr>
-            <th>#springMessage("FilterRule")</th>
-            <th>#springMessage("Match")</th>
-            <th>#springMessage("Mismatch")</th>
-            <td><font color='blue'>#springMessage("RouteFilterTip")</font></td>
+            <th>#springMessageText("FilterRule","FilterRule")</th>
+            <th>#springMessageText("Match","Match")</th>
+            <th>#springMessageText("Mismatch","Mismatch")</th>
+            <td><font color='blue'>#springMessageText("RouteFilterTip","RouteFilterTip")</font></td>
         </tr>
         <tr id="host">
-            <th>#springMessage("ProviderHost"):</th>
+            <th>#springMessageText("ProviderHost","ProviderHost"):</th>
             <td><input type="text" id="providerHost" value=""
                        name="providerHost" style="ime-mode:disabled"/></td>
             <td><input type="text" id="unproviderHost" value=""
                        name="unproviderHost" style="ime-mode:disabled"/></td>
-            <td><font color="blue">#springMessage("RouteHostTip")</font></td>
+            <td><font color="blue">#springMessageText("RouteHostTip","RouteHostTip")</font></td>
         </tr>
         <tr id="cluster">
-            <th>#springMessage("ProviderCluster"):</th>
+            <th>#springMessageText("ProviderCluster","ProviderCluster"):</th>
             <td>
                 <input type="text" id="providerCluster" value="" name="providerCluster" style="ime-mode:disabled"/>
                 #if ($clusterNames && $clusterNames.size() > 0)
                     <select onchange="if (this.value != '') { if (byId('providerCluster').value == '') { byId('providerCluster').value = this.value; } else { byId('providerCluster').value = byId('providerCluster').value + ',' + this.value; } this.value = ''; }">
-                        <option value="">#springMessage("Choose")</option>
+                        <option value="">#springMessageText("Choose", "Choose")</option>
                         #foreach ($c in $clusterNames)
                             <option value="$c">$c</option>
                         #end
@@ -159,17 +159,17 @@
                 <input type="text" id="unproviderCluster" value="" name="unproviderCluster" style="ime-mode:disabled"/>
                 #if ($clusterNames && $clusterNames.size() > 0)
                     <select onchange="if (this.value != '') { if (byId('unproviderCluster').value == '') { byId('unproviderCluster').value = this.value; } else { byId('unproviderCluster').value = byId('unproviderCluster').value + ',' + this.value; } this.value = ''; }">
-                        <option value="">#springMessage("Choose")</option>
+                        <option value="">#springMessageText("Choose", "Choose")</option>
                         #foreach ($c in $clusterNames)
                             <option value="$c">$c</option>
                         #end
                     </select>
                 #end
             </td>
-            <td><font color="blue">#springMessage("RouteClusterTip")</font></td>
+            <td><font color="blue">#springMessageText("RouteClusterTip")</font></td>
         </tr>
         <tr id="protocol">
-            <th>#springMessage("ProviderProtocol"):</th>
+            <th>#springMessageText("ProviderProtocol","ProviderProtocol"):</th>
             <td><input type="text" id="providerProtocol" value=""
                        name="providerProtocol" style="ime-mode:disabled"/></td>
             <td><input type="text" id="unproviderProtocol" value=""
@@ -177,15 +177,15 @@
             <td></td>
         </tr>
         <tr id="port">
-            <th>#springMessage("ProviderPort"):</th>
+            <th>#springMessageText("ProviderPort","ProviderPort"):</th>
             <td><input type="text" id="providerPort" name="providerPort" value="" style="ime-mode:disabled"/>
             </td>
             <td><input type="text" id="unproviderPort" name="unproviderPort" value="" style="ime-mode:disabled"/></td>
         </tr>
         <tr>
             <td colspan="4">
-                <div class="btn"><a href="#" onclick="if(check()){document.getElementById('df').submit();}">#springMessage(
-                    "save")</a></div>
+                <div class="btn"><a href="#" onclick="if(check()){document.getElementById('df').submit();}">#springMessageText(
+                    "save","save")</a></div>
             </td>
         </tr>
     </table>
@@ -213,11 +213,11 @@
 
     function check() {
         if (byId('name').value.trim() == '') {
-            showAlert("#springMessage("PleaseInput")#springMessage("route.name")", 'name');
+            showAlert("#springMessageText("PleaseInput", "PleaseInput")#springMessageText("route.name","route.name")", 'name');
             return false;
         }
         if (byId('service').value.trim() == '') {
-            showAlert("#springMessage("PleaseInput")#springMessage("service")", 'service');
+            showAlert("#springMessageText("PleaseInput", "PleaseInput")#springMessageText("service", "service")", 'service');
             return false;
         }
         if (byId('service').value.indexOf('*') != -1 || byId('service').value.indexOf(',') != -1) {
diff --git a/dubbo-admin/src/main/resources/templates/governance/screen/routes/edit.vm b/dubbo-admin/src/main/resources/templates/governance/screen/routes/edit.vm
index 2369f3b..b85445a 100644
--- a/dubbo-admin/src/main/resources/templates/governance/screen/routes/edit.vm
+++ b/dubbo-admin/src/main/resources/templates/governance/screen/routes/edit.vm
@@ -15,35 +15,35 @@
 #set($layout = "/templates/governance/layout/default.vm")
 <div class="ico_btn">
     <a href="../../routes"><img src="$rootContextPath.getURI("images/ico_back.png")" width="12" height="12"/><span
-            class="ico_font">#springMessage("back")</span></a>
+            class="ico_font">#springMessageText("back", "back")</span></a>
     <span class="ico_line">|</span>
     <a href="../$route.id/routeselect"><img src="$rootContextPath.getURI("images/ico_show.png")" width="12"
-                                            height="12"/><span class="ico_font">#springMessage("proview")</span></a>
+                                            height="12"/><span class="ico_font">#springMessageText("proview", "proview")</span></a>
     #if($currentUser.role != "G")
         <span class="ico_line">|</span>
         <a href="../$route.id"><img src="$rootContextPath.getURI("images/ico_show.png")" width="12" height="12"/><span
-                class="ico_font">#springMessage("show")</span></a>
+                class="ico_font">#springMessageText("show", "show")</span></a>
         <span class="ico_line">|</span>
         <a href="../$route.id/edit?actionflag=copy"><img src="$rootContextPath.getURI("images/ico_register.png")"
-                                                         width="12" height="12"/><span class="ico_font">#springMessage(
-            "copy")</span></a>
+                                                         width="12" height="12"/><span class="ico_font">#springMessageText(
+            "copy","copy")</span></a>
         <span class="ico_line">|</span>
         #if($route.enabled)
-            <a href="#" onclick="showConfirm('#springMessage(
-                "confirm.disable")', '$route.name', '../$route.id/disable'); return false;">
+            <a href="#" onclick="showConfirm('#springMessageText(
+                "confirm.disable","confirm.disable")', '$route.name', '../$route.id/disable'); return false;">
                 <img src="$rootContextPath.getURI("images/ico_disable.png")" width="13" height="13"/>
-                <span class="ico_font">#springMessage("disable")</span></a>
+                <span class="ico_font">#springMessageText("disable", "disable")</span></a>
         #else
-            <a href="#" onclick="showConfirm('#springMessage(
-                "confirm.enable")', '$route.name', '../$route.id/enable'); return false;">
+            <a href="#" onclick="showConfirm('#springMessageText(
+                "confirm.enable","confirm.enable")', '$route.name', '../$route.id/enable'); return false;">
                 <img src="$rootContextPath.getURI("images/ico_enable.png")" width="13" height="13"/>
-                <span class="ico_font">#springMessage("enable")</span></a>
+                <span class="ico_font">#springMessageText("enable", "enable")</span></a>
         #end
         <span class="ico_line">|</span>
         <a href="#"
-           onclick="showConfirm('#springMessage("confirm.delete")', '$route.name', '../$route.id/delete'); return false;">
+           onclick="showConfirm('#springMessageText("confirm.delete", "confirm.delete")', '$route.name', '../$route.id/delete'); return false;">
             <img src="$rootContextPath.getURI("images/ico_delete.png")" width="12" height="12"/>
-            <span class="ico_font">#springMessage("delete")</span></a>
+            <span class="ico_font">#springMessageText("delete", "delete")</span></a>
     #end
 </div>
 <br/>
@@ -51,7 +51,7 @@
       method="POST">
     <table cellpadding="0" cellspacing="0" class="info">
         <tr>
-            <th width="100">#springMessage("route.name"): <font color='red'>*</font></th>
+            <th width="100">#springMessageText("route.name", "route.name"): <font color='red'>*</font></th>
             <td colspan="2">
                 #if($actionflag=="copy")
                     <input type="text" id="name" name="name" maxlength="200" value=""/>
@@ -59,32 +59,32 @@
                     <input type="text" id="name" name="name" maxlength="200" value="$route.name"/>
                 #end
             </td>
-            <td><font color='blue'>#springMessage("RouteNameTip")</font></td>
+            <td><font color='blue'>#springMessageText("RouteNameTip", "RouteNameTip")</font></td>
         </tr>
         <tr>
-            <th>#springMessage("Priority"):</th>
+            <th>#springMessageText("Priority", "Priority"):</th>
             <td colspan="2">
                 <input type="text" id="priority" name="priority" value="#if($route)$route.priority#{else}0#end"
                        onkeydown="return checkNumber();"/>
             </td>
             <td>
-                <font color='blue'>#springMessage("RoutePriorityTip")</font>
+                <font color='blue'>#springMessageText("RoutePriorityTip", "RoutePriorityTip")</font>
             </td>
         </tr>
         <tr>
-            <th>#springMessage("service"): <font color='red'>*</font></th>
+            <th>#springMessageText("service", "service"): <font color='red'>*</font></th>
             <td colspan="2">
                 <input type="hidden" id="service" name="service" value="$service"/>$service
             </td>
             <td></td>
         </tr>
         <tr>
-            <th>#springMessage("methodName"):</th>
+            <th>#springMessageText("methodName", "methodName"):</th>
             <td colspan="2">
                 <input type="text" id="method" name="method" value="$!method" style="ime-mode:disabled"/>
                 #if ($methods)
                     <select onchange="if (this.value != '') { if (byId('method').value == '') { byId('method').value = this.value; } else { byId('method').value = byId('method').value + ',' + this.value; } this.value = ''; }">
-                        <option value="">#springMessage("Choose")</option>
+                        <option value="">#springMessageText("Choose", "Choose")</option>
                         #foreach ($m in $methods)
                             <option value="$m">$m</option>
                         #end
@@ -92,39 +92,39 @@
                 #end
             </td>
             <td>
-                <font color='blue'>#springMessage("RouteMethodTip")<font>
+                <font color='blue'>#springMessageText("RouteMethodTip", "RouteMethodTip")<font>
             </td>
         </tr>
         <tr>
-            <th>#springMessage("MatchRule")</th>
-            <th>#springMessage("Match")</th>
-            <th>#springMessage("Mismatch")</th>
-            <td><font color='blue'>#springMessage("RouteMatchTip")</font></td>
+            <th>#springMessageText("MatchRule","MatchRule")</th>
+            <th>#springMessageText("Match", "Match")</th>
+            <th>#springMessageText("Mismatch", "Mismatch")</th>
+            <td><font color='blue'>#springMessageText("RouteMatchTip", "RouteMatchTip")</font></td>
         </tr>
         <tr>
-            <th>#springMessage("ConsumerHost"):</th>
+            <th>#springMessageText("ConsumerHost", "ConsumerHost"):</th>
             <td><input type="text" id="consumerHost" name="consumerHost" value="$!consumerHost"
                        style="ime-mode:disabled"/></td>
             <td><input type="text" id="unconsumerHost" name="unconsumerHost" value="$!unconsumerHost"
                        style="ime-mode:disabled"/></td>
-            <td><font color="blue">#springMessage("RouteHostTip")</font></td>
+            <td><font color="blue">#springMessageText("RouteHostTip", "RouteHostTip")</font></td>
         </tr>
         <tr>
-            <th>#springMessage("ConsumerApplication"):</th>
+            <th>#springMessageText("ConsumerApplication", "ConsumerApplication"):</th>
             <td><input type="text" id="consumerApplication" name="consumerApplication" value="$!consumerApplication"
                        style="ime-mode:disabled"/></td>
             <td><input type="text" id="unconsumerApplication" name="unconsumerApplication"
                        value="$!unconsumerApplication" style="ime-mode:disabled"/></td>
-            <td><font color="blue">#springMessage("RouteApplicationTip")</font></td>
+            <td><font color="blue">#springMessageText("RouteApplicationTip", "RouteApplicationTip")</font></td>
         </tr>
         <tr>
-            <th>#springMessage("ConsumerCluster"):</th>
+            <th>#springMessageText("ConsumerCluster","ConsumerCluster"):</th>
             <td>
                 <input type="text" id="consumerCluster" name="consumerCluster" value="$!consumerCluster"
                        style="ime-mode:disabled"/>
                 #if ($clusterNames && $clusterNames.size() > 0)
                     <select onchange="if (this.value != '') { if (byId('consumerCluster').value == '') { byId('consumerCluster').value = this.value; } else { byId('consumerCluster').value = byId('consumerCluster').value + ',' + this.value; } this.value = ''; }">
-                        <option value="">#springMessage("Choose")</option>
+                        <option value="">#springMessageText("Choose", "Choose")</option>
                         #foreach ($c in $clusterNames)
                             <option value="$c">$c</option>
                         #end
@@ -136,37 +136,37 @@
                        style="ime-mode:disabled"/>
                 #if ($clusterNames && $clusterNames.size() > 0)
                     <select onchange="if (this.value != '') { if (byId('unconsumerCluster').value == '') { byId('unconsumerCluster').value = this.value; } else { byId('unconsumerCluster').value = byId('unconsumerCluster').value + ',' + this.value; } this.value = ''; }">
-                        <option value="">#springMessage("Choose")</option>
+                        <option value="">#springMessageText("Choose", "Choose")</option>
                         #foreach ($c in $clusterNames)
                             <option value="$c">$c</option>
                         #end
                     </select>
                 #end
             </td>
-            <td><font color="blue">#springMessage("RouteClusterTip")</font></td>
+            <td><font color="blue">#springMessageText("RouteClusterTip", "RouteClusterTip")</font></td>
         </tr>
         <tr>
-            <th>#springMessage("FilterRule")</th>
-            <th>#springMessage("Match")</th>
-            <th>#springMessage("Mismatch")</th>
-            <td><font color='blue'>#springMessage("RouteFilterTip")</font></td>
+            <th>#springMessageText("FilterRule","FilterRule")</th>
+            <th>#springMessageText("Match", "Match")</th>
+            <th>#springMessageText("Mismatch", "Mismatch")</th>
+            <td><font color='blue'>#springMessageText("RouteFilterTip", "RouteFilterTip")</font></td>
         </tr>
         <tr id="host">
-            <th>#springMessage("ProviderHost"):</th>
+            <th>#springMessageText("ProviderHost", "ProviderHost"):</th>
             <td><input type="text" id="providerHost" value="$!providerHost"
                        name="providerHost" style="ime-mode:disabled"/></td>
             <td><input type="text" id="unproviderHost" value="$!unproviderHost"
                        name="unproviderHost" style="ime-mode:disabled"/></td>
-            <td><font color="blue">#springMessage("RouteHostTip")</font></td>
+            <td><font color="blue">#springMessageText("RouteHostTip", "RouteHostTip")</font></td>
         </tr>
         <tr id="cluster">
-            <th>#springMessage("ProviderCluster"):</th>
+            <th>#springMessageText("ProviderCluster", "ProviderCluster"):</th>
             <td>
                 <input type="text" id="providerCluster" value="$!providerCluster" name="providerCluster"
                        style="ime-mode:disabled"/>
                 #if ($clusterNames && $clusterNames.size() > 0)
                     <select onchange="if (this.value != '') { if (byId('providerCluster').value == '') { byId('providerCluster').value = this.value; } else { byId('providerCluster').value = byId('providerCluster').value + ',' + this.value; } this.value = ''; }">
-                        <option value="">#springMessage("Choose")</option>
+                        <option value="">#springMessageText("Choose", "Choose")</option>
                         #foreach ($c in $clusterNames)
                             <option value="$c">$c</option>
                         #end
@@ -178,17 +178,17 @@
                        style="ime-mode:disabled"/>
                 #if ($clusterNames && $clusterNames.size() > 0)
                     <select onchange="if (this.value != '') { if (byId('unproviderCluster').value == '') { byId('unproviderCluster').value = this.value; } else { byId('unproviderCluster').value = byId('unproviderCluster').value + ',' + this.value; } this.value = ''; }">
-                        <option value="">#springMessage("Choose")</option>
+                        <option value="">#springMessageText("Choose", "Choose")</option>
                         #foreach ($c in $clusterNames)
                             <option value="$c">$c</option>
                         #end
                     </select>
                 #end
             </td>
-            <td><font color="blue">#springMessage("RouteClusterTip")</font></td>
+            <td><font color="blue">#springMessageText("RouteClusterTip", "RouteClusterTip")</font></td>
         </tr>
         <tr id="protocol">
-            <th>#springMessage("ProviderProtocol"):</th>
+            <th>#springMessageText("ProviderProtocol","ProviderProtocol"):</th>
             <td><input type="text" id="providerProtocol" value="$!providerProtocol"
                        name="providerProtocol" style="ime-mode:disabled"/></td>
             <td><input type="text" id="unproviderProtocol" value="$!unproviderProtocol"
@@ -196,7 +196,7 @@
             <td></td>
         </tr>
         <tr id="port">
-            <th>#springMessage("ProviderPort"):</th>
+            <th>#springMessageText("ProviderPort","ProviderPort"):</th>
             <td><input type="text" id="providerPort" name="providerPort" value="$!providerPort"
                        style="ime-mode:disabled"/>
             </td>
@@ -205,8 +205,8 @@
         </tr>
         <tr>
             <td colspan="4">
-                <div class="btn"><a href="#" onclick="if(check()){document.getElementById('df').submit();}">#springMessage(
-                    "save")</a></div>
+                <div class="btn"><a href="#" onclick="if(check()){document.getElementById('df').submit();}">#springMessageText(
+                    "save","save")</a></div>
             </td>
         </tr>
     </table>
@@ -216,11 +216,11 @@
 <script type="text/javascript">
     function check() {
         if (byId('name').value.trim() == '') {
-            showAlert("#springMessage("PleaseInput"), #springMessage("route.name"))", 'name');
+            showAlert("#springMessageText("PleaseInput", "PleaseInput"), #springMessageText("route.name","route.name"))", 'name');
             return false;
         }
         if (byId('service').value.trim() == '') {
-            showAlert("#springMessage("PleaseInput"), #springMessage("service"))", 'service');
+            showAlert("#springMessageText("PleaseInput", "PleaseInput"), #springMessageText("service", "service"))", 'service');
             return false;
         }
         if (byId('service').value.indexOf('*') != -1 || byId('service').value.indexOf(',') != -1) {
diff --git a/dubbo-admin/src/main/resources/templates/governance/screen/routes/index.vm b/dubbo-admin/src/main/resources/templates/governance/screen/routes/index.vm
index 63afa36..2bed7ff 100644
--- a/dubbo-admin/src/main/resources/templates/governance/screen/routes/index.vm
+++ b/dubbo-admin/src/main/resources/templates/governance/screen/routes/index.vm
@@ -16,58 +16,58 @@
 <div class="ico_btn">
     #if($currentUser.role != "G")
         <a href="routes/add"><img src="$rootContextPath.getURI("images/ico_add.png")" width="12" height="12"/><span
-                class="ico_font">#springMessage("add")</span></a>
+                class="ico_font">#springMessageText("add", "add")</span></a>
         <span class="ico_line">|</span>
-        <a href="#" onclick="if(! hasCheckbox('ids')) { showAlert('#springMessage(
-            "empty.list")'); } else if(! hasChecked('ids')) { showAlert('#springMessage(
-            "please.select")'); } else { showConfirm('#springMessage(
-            "confirm.batch.delete")', 'routes/' + getChecked('ids') + '/delete'); } return false;"><img
+        <a href="#" onclick="if(! hasCheckbox('ids')) { showAlert('#springMessageText(
+            "empty.list","empty.list")'); } else if(! hasChecked('ids')) { showAlert('#springMessageText(
+            "please.select","please.select")'); } else { showConfirm('#springMessageText(
+            "confirm.batch.delete","confirm.batch.delete")', 'routes/' + getChecked('ids') + '/delete'); } return false;"><img
                 src="$rootContextPath.getURI("images/ico_delete.png")" width="12" height="12"/><span
-                class="ico_font">#springMessage("batch.delete")</span></a>
+                class="ico_font">#springMessageText("batch.delete", "batch.delete")</span></a>
         <span class="ico_line">|</span>
-        <a href="#" onclick="if(! hasCheckbox('ids')) { showAlert('#springMessage(
-            "empty.list")'); } else if(! hasChecked('ids')) { showAlert('#springMessage(
-            "please.select")'); } else { showConfirm('#springMessage(
-            "confirm.batch.enable")', 'routes/' + getChecked('ids') + '/enable');} return false;"><img
+        <a href="#" onclick="if(! hasCheckbox('ids')) { showAlert('#springMessageText(
+            "empty.list","empty.list")'); } else if(! hasChecked('ids')) { showAlert('#springMessageText(
+            "please.select","please.select")'); } else { showConfirm('#springMessageText(
+            "confirm.batch.enable","confirm.batch.enable")', 'routes/' + getChecked('ids') + '/enable');} return false;"><img
                 src="$rootContextPath.getURI("images/ico_enable.png")" width="12" height="12"/><span
-                class="ico_font">#springMessage("batch.enable")</span></a>
+                class="ico_font">#springMessageText("batch.enable", "batch.enable")</span></a>
         <span class="ico_line">|</span>
-        <a href="#" onclick="if(! hasCheckbox('ids')) { showAlert('#springMessage(
-            "empty.list")'); } else if(! hasChecked('ids')) { showAlert('#springMessage(
-            "please.select")'); } else { showConfirm('#springMessage(
-            "confirm.batch.disable")', 'routes/' + getChecked('ids') + '/disable');} return false;"><img
+        <a href="#" onclick="if(! hasCheckbox('ids')) { showAlert('#springMessageText(
+            "empty.list","empty.list")'); } else if(! hasChecked('ids')) { showAlert('#springMessageText(
+            "please.select","please.select")'); } else { showConfirm('#springMessageText(
+            "confirm.batch.disable","confirm.batch.delete")', 'routes/' + getChecked('ids') + '/disable');} return false;"><img
                 src="$rootContextPath.getURI("images/ico_disable.png")" width="12" height="12"/><span
-                class="ico_font">#springMessage("batch.disable")</span></a>
+                class="ico_font">#springMessageText("batch.disable", "batch.disable")</span></a>
     #end
 </div>
 <br/>
 <table cellpadding="0" cellspacing="0" class="list list_dubbo" id="table_o">
     <tr>
         <th width="20"><input type="checkbox" onclick="checkAll('table_o', 'ids', this.checked)"/></th>
-        <th>#springMessage("route.name"): <input type="text" onkeyup="searchTable('table_o', 1, this.value);"
+        <th>#springMessageText("route.name", "route.name"): <input type="text" onkeyup="searchTable('table_o', 1, this.value);"
                                             onclick="searchTable('table_o', 1, this.value);"/>&nbsp;<img
                 src="$rootContextPath.getURI("images/ico_search.png")" width="12" height="12"/></th>
         #if(!$service)
-            <th>#springMessage("ServiceName"): <input type="text" onkeyup="searchTable('table_o', 2, this.value);"
+            <th>#springMessageText("ServiceName", "ServiceName"): <input type="text" onkeyup="searchTable('table_o', 2, this.value);"
                                                  onclick="searchTable('table_o', 2, this.value);"/>&nbsp;<img
                     src="$rootContextPath.getURI("images/ico_search.png")" width="12" height="12"/></th>
-            <th width="50">#springMessage("Priority")</th>
-            <th width="100">#springMessage("status"): <select onchange="searchTable('table_o', 4, this.value);"
+            <th width="50">#springMessageText("Priority", "Priority")</th>
+            <th width="100">#springMessageText("status", "status"): <select onchange="searchTable('table_o', 4, this.value);"
                                                          onclick="searchTable('table_o', 4, this.value);">
-                <option value="">#springMessage("all")</option>
-                <option value="#springMessage("enabled")">#springMessage("enabled")</option>
-                <option value="#springMessage("disabled")">#springMessage("disabled")</option>
+                <option value="">#springMessageText("all", "all")</option>
+                <option value="#springMessageText("enabled", "enabled")">#springMessageText("enabled", "enabled")</option>
+                <option value="#springMessageText("disabled", "disabled")">#springMessageText("disabled", "disabled")</option>
             </select></th>
         #else
-            <th width="50">#springMessage("Priority")</th>
-            <th width="100">#springMessage("status"): <select onchange="searchTable('table_o', 3, this.value);"
+            <th width="50">#springMessageText("Priority", "Priority")</th>
+            <th width="100">#springMessageText("status", "status"): <select onchange="searchTable('table_o', 3, this.value);"
                                                          onclick="searchTable('table_o', 3, this.value);">
-                <option value="">#springMessage("all")</option>
-                <option value="#springMessage("enabled")">#springMessage("enabled")</option>
-                <option value="#springMessage("disabled")">#springMessage("disabled")</option>
+                <option value="">#springMessageText("all", "all")</option>
+                <option value="#springMessageText("enabled", "enabled")">#springMessageText("enabled", "enabled")</option>
+                <option value="#springMessageText("disabled", "disabled")">#springMessageText("disabled", "disabled")</option>
             </select></th>
         #end
-        <th width="340">#springMessage("operation")</th>
+        <th width="340">#springMessageText("operation", "operation")</th>
     </tr>
     #foreach($route in $routes)
         <tr>
@@ -79,44 +79,44 @@
             <td>$route.priority</td>
             <td>
                 #if($route.enabled)
-                    <font color="green">#springMessage("Enabled")</font>
+                    <font color="green">#springMessageText("enabled", "enabled")</font>
                 #else
-                    <font color="red">#springMessage("Disabled")</font>
+                    <font color="red">#springMessageText("disabled", "disabled")</font>
                 #end
             </td>
             <td>
                 <a href="routes/$route.id/routeselect"><img src="$rootContextPath.getURI("images/ico_show.png")"
-                                                            width="12" height="12"/><span class="ico_font">#springMessage(
-                    "proview")</span></a>
+                                                            width="12" height="12"/><span class="ico_font">#springMessageText(
+                    "proview","proview")</span></a>
                 #if($currentUser.role != "G")
                     <span class="ico_line">|</span>
                     <a href="routes/$route.id/edit"><img src="$rootContextPath.getURI("images/ico_edit.png")" width="12"
-                                                         height="12"/><span class="ico_font">#springMessage(
-                        "edit")</span></a>
+                                                         height="12"/><span class="ico_font">#springMessageText(
+                        "edit","edit")</span></a>
                     <span class="ico_line">|</span>
                     <a href="routes/$route.id/edit?actionflag=copy"><img
                             src="$rootContextPath.getURI("images/ico_register.png")" width="12" height="12"/><span
-                            class="ico_font">#springMessage("copy")</span></a>
+                            class="ico_font">#springMessageText("copy", "copy")</span></a>
                     <span class="ico_line">|</span>
                     #if($route.enabled)
-                        <a href="#" onclick="showConfirm('#springMessage(
-                            "confirm.disable")', '$route.name', 'routes/$route.id/disable'); return false;">
+                        <a href="#" onclick="showConfirm('#springMessageText(
+                            "confirm.disable","confirm.disable")', '$route.name', 'routes/$route.id/disable'); return false;">
                             <img src="$rootContextPath.getURI("images/ico_disable.png")" width="13" height="13"/>
-                            <span class="ico_font">#springMessage("disable")</span></a>
+                            <span class="ico_font">#springMessageText("disable", "disable")</span></a>
                     #else
-                        <a href="#" onclick="showConfirm('#springMessage(
-                            "confirm.enable")', '$route.name', 'routes/$route.id/enable'); return false;">
+                        <a href="#" onclick="showConfirm('#springMessageText(
+                            "confirm.enable","confirm.enable")', '$route.name', 'routes/$route.id/enable'); return false;">
                             <img src="$rootContextPath.getURI("images/ico_enable.png")" width="13" height="13"/>
-                            <span class="ico_font">#springMessage("enable")</span></a>
+                            <span class="ico_font">#springMessageText("enable", "enable")</span></a>
                     #end
                     <span class="ico_line">|</span>
-                    <a href="#" onclick="showConfirm('#springMessage(
-                        "confirm.delete")', '$route.name', 'routes/$route.id/delete'); return false;">
+                    <a href="#" onclick="showConfirm('#springMessageText(
+                        "confirm.delete","confirm.delete")', '$route.name', 'routes/$route.id/delete'); return false;">
                         <img src="$rootContextPath.getURI("images/ico_delete.png")" width="12" height="12"/>
-                        <span class="ico_font">#springMessage("delete")</span></a>
+                        <span class="ico_font">#springMessageText("delete", "delete")</span></a>
                 #end
             </td>
         </tr>
     #end
 </table>
-<div class="page">#springMessage("page.total")$routes.size()#springMessage("page.records") </div>
+<div class="page">#springMessageText("page.total", "page.total")$routes.size()#springMessageText("page.records", "page.records") </div>
diff --git a/dubbo-admin/src/main/resources/templates/governance/screen/routes/show.vm b/dubbo-admin/src/main/resources/templates/governance/screen/routes/show.vm
index ae38d13..5b43466 100644
--- a/dubbo-admin/src/main/resources/templates/governance/screen/routes/show.vm
+++ b/dubbo-admin/src/main/resources/templates/governance/screen/routes/show.vm
@@ -15,80 +15,80 @@
 #set($layout = "/templates/governance/layout/default.vm")
 <div class="ico_btn">
     <a href="../routes"><img src="$rootContextPath.getURI("images/ico_back.png")" width="12" height="12"/><span
-            class="ico_font">#springMessage("back")</span></a>
+            class="ico_font">#springMessageText("back", "back")</span></a>
     <span class="ico_line">|</span>
     <a href="$route.id/routeselect"><img src="$rootContextPath.getURI("images/ico_show.png")" width="12"
-                                         height="12"/><span class="ico_font">#springMessage("proview")</span></a>
+                                         height="12"/><span class="ico_font">#springMessageText("proview", "proview")</span></a>
     #if($currentUser.role != "G")
         <span class="ico_line">|</span>
         <a href="$route.id/edit"><img src="$rootContextPath.getURI("images/ico_edit.png")" width="12" height="12"/><span
-                class="ico_font">#springMessage("edit")</span></a>
+                class="ico_font">#springMessageText("edit", "edit")</span></a>
         <span class="ico_line">|</span>
         <a href="$route.id/edit?actionflag=copy"><img src="$rootContextPath.getURI("images/ico_register.png")"
-                                                      width="12" height="12"/><span class="ico_font">#springMessage(
-            "copy")</span></a>
+                                                      width="12" height="12"/><span class="ico_font">#springMessageText(
+            "copy","copy")</span></a>
         <span class="ico_line">|</span>
         #if($route.enabled)
             <a href="#"
-               onclick="showConfirm('#springMessage("confirm.disable")', '$route.name', '$route.id/disable'); return false;">
+               onclick="showConfirm('#springMessageText("confirm.disable", "confirm.disable")', '$route.name', '$route.id/disable'); return false;">
                 <img src="$rootContextPath.getURI("images/ico_disable.png")" width="13" height="13"/>
-                <span class="ico_font">#springMessage("disable")</span></a>
+                <span class="ico_font">#springMessageText("disable", "disable")</span></a>
         #else
             <a href="#"
-               onclick="showConfirm('#springMessage("confirm.enable")', '$route.name', '$route.id/enable'); return false;">
+               onclick="showConfirm('#springMessageText("confirm.enable", "confirm.enable")', '$route.name', '$route.id/enable'); return false;">
                 <img src="$rootContextPath.getURI("images/ico_enable.png")" width="13" height="13"/>
-                <span class="ico_font">#springMessage("enable")</span></a>
+                <span class="ico_font">#springMessageText("enable", "enable")</span></a>
         #end
         <span class="ico_line">|</span>
         <a href="#"
-           onclick="showConfirm('#springMessage("confirm.delete")', '$route.name', '$route.id/delete'); return false;">
+           onclick="showConfirm('#springMessageText("confirm.delete", "confirm.delete")', '$route.name', '$route.id/delete'); return false;">
             <img src="$rootContextPath.getURI("images/ico_delete.png")" width="12" height="12"/>
-            <span class="ico_font">#springMessage("delete")</span></a>
+            <span class="ico_font">#springMessageText("delete", "delete")</span></a>
     #end
 </div>
 <br/>
 <table cellpadding="0" cellspacing="0" class="info">
     #if(! $service)
         <tr>
-            <th style="width: 100px;">#springMessage("service"):</th>
+            <th style="width: 100px;">#springMessageText("service", "service"):</th>
             <td>$!route.service</td>
         </tr>
     #end
     <tr>
-        <th style="width: 100px;">#springMessage("route.name"):</th>
+        <th style="width: 100px;">#springMessageText("route.name", "route.name"):</th>
         <td>$!route.name</td>
     </tr>
     <tr>
-        <th style="width: 100px;">#springMessage("rule.match"):</th>
+        <th style="width: 100px;">#springMessageText("rule.match","rule.match"):</th>
         <td>$!route.matchRule</td>
     </tr>
     <tr>
-        <th>#springMessage("rule.filtrate"):</th>
+        <th>#springMessageText("rule.filtrate","rule.filtrate"):</th>
         <td>$!route.filterRule</td>
     </tr>
     <tr>
-        <th>#springMessage("Priority"):</th>
+        <th>#springMessageText("Priority", "Priority"):</th>
         <td>$!route.priority</td>
     </tr>
     <tr>
-        <th>#springMessage("Username"):</th>
+        <th>#springMessageText("Username", "Username"):</th>
         <td>$!route.username</td>
     </tr>
     <tr>
-        <th>#springMessage("created"):</th>
+        <th>#springMessageText("created", "created"):</th>
         <td>$tool.formatDate($!route.created)</td>
     </tr>
     <tr>
-        <th>#springMessage("modified"):</th>
+        <th>#springMessageText("modified", "modified"):</th>
         <td>$tool.formatDate($!route.modified)</td>
     </tr>
     <tr>
-        <th>#springMessage("Status"):</th>
+        <th>#springMessageText("status", "status"):</th>
         <td>
             #if($route.enabled)
-                <font color="green">#springMessage("Enabled")</font>
+                <font color="green">#springMessageText("enabled", "enabled")</font>
             #else
-                <font color="red">#springMessage("Disabled")</font>
+                <font color="red">#springMessageText("disabled", "disabled")</font>
             #end
         </td>
     </tr>
diff --git a/dubbo-admin/src/main/resources/templates/governance/screen/services/index.vm b/dubbo-admin/src/main/resources/templates/governance/screen/services/index.vm
index c465507..e49d55a 100644
--- a/dubbo-admin/src/main/resources/templates/governance/screen/services/index.vm
+++ b/dubbo-admin/src/main/resources/templates/governance/screen/services/index.vm
@@ -14,7 +14,7 @@
 ##limitations under the License.
 #set($layout = "/templates/governance/layout/default.vm")
 #if(! $services || $services.size() == 0)
-<font color="red">#springMessage("not.found")</font> (<a href="services?keyword=*">#springMessage("show.all")</a>)
+<font color="red">#springMessageText("not.found", "not.found")</font> (<a href="services?keyword=*">#springMessageText("show.all", "show.all")</a>)
 #elseif($keyword && $services.size() == 1)
 <script type="text/javascript">
         #if(! $providerServices.contains($services.iterator().next()))
@@ -27,26 +27,26 @@
 <div class="ico_btn">
     #if($currentUser.role != "G")
         #if($app)
-            <a href="#" onclick="if(! hasCheckbox('ids')) { showAlert('#springMessage(
-                "empty.list")'); } else if(! hasChecked('ids')) { showAlert('#springMessage(
-                "please.select")'); } else { showConfirm('#springMessage(
-                "confirm.batch.force.mock")', 'services/0/shield?service=' + getChecked('ids'));} return false;"><img
+            <a href="#" onclick="if(! hasCheckbox('ids')) { showAlert('#springMessageText(
+                "empty.list","empty.list")'); } else if(! hasChecked('ids')) { showAlert('#springMessageText(
+                "please.select","please.select")'); } else { showConfirm('#springMessageText(
+                "confirm.batch.force.mock","confirm.batch.force.mock")', 'services/0/shield?service=' + getChecked('ids'));} return false;"><img
                     src="$rootContextPath.getURI("images/ico_disable.png")" width="12" height="12"/><span
-                    class="ico_font">#springMessage("batch.force.mock")</span></a>
+                    class="ico_font">#springMessageText("batch.force.mock", "batch.force.mock")</span></a>
             <span class="ico_line">|</span>
-            <a href="#" onclick="if(! hasCheckbox('ids')) { showAlert('#springMessage(
-                "empty.list")'); } else if(! hasChecked('ids')) { showAlert('#springMessage(
-                "please.select")'); } else { showConfirm('#springMessage(
-                "confirm.batch.fail.mock")', 'services/0/tolerant?service=' + getChecked('ids'));} return false;"><img
+            <a href="#" onclick="if(! hasCheckbox('ids')) { showAlert('#springMessageText(
+                "empty.list","empty.list")'); } else if(! hasChecked('ids')) { showAlert('#springMessageText(
+                "please.select","please.select")'); } else { showConfirm('#springMessageText(
+                "confirm.batch.fail.mock","confirm.batch.fail.mock")', 'services/0/tolerant?service=' + getChecked('ids'));} return false;"><img
                     src="$rootContextPath.getURI("images/ico_run.png")" width="12" height="12"/><span
-                    class="ico_font">#springMessage("batch.fail.mock")</span></a>
+                    class="ico_font">#springMessageText("batch.fail.mock", "batch.fail.mock")</span></a>
             <span class="ico_line">|</span>
-            <a href="#" onclick="if(! hasCheckbox('ids')) { showAlert('#springMessage(
-                "empty.list")'); } else if(! hasChecked('ids')) { showAlert('#springMessage(
-                "please.select")'); } else { showConfirm('#springMessage(
-                "confirm.batch.fail.mock")', 'services/0/recover?service=' + getChecked('ids'));} return false;"><img
+            <a href="#" onclick="if(! hasCheckbox('ids')) { showAlert('#springMessageText(
+                "empty.list","empty.list")'); } else if(! hasChecked('ids')) { showAlert('#springMessageText(
+                "please.select","please.select")'); } else { showConfirm('#springMessageText(
+                "confirm.batch.fail.mock","confirm.batch.fail.mock")', 'services/0/recover?service=' + getChecked('ids'));} return false;"><img
                     src="$rootContextPath.getURI("images/ico_enable.png")" width="12" height="12"/><span
-                    class="ico_font">#springMessage("batch.cancel.mock")</span></a>
+                    class="ico_font">#springMessageText("batch.cancel.mock", "batch.cancel.mock")</span></a>
         #end
     #end
 </div>
@@ -54,32 +54,32 @@
 <table cellpadding="0" cellspacing="0" class="list list_dubbo" id="table_o">
     <tr>
         <th width="20"><input type="checkbox" onclick="checkAll('table_o', 'ids', this.checked)"/></th>
-        <th>#springMessage("service"):
+        <th>#springMessageText("service", "service"):
             <input type="text" onkeyup="searchTable('table_o', 0, this.value);"
                    onclick="searchTable('table_o', 0, this.value);"/>&nbsp;<img
                     src="$rootContextPath.getURI("images/ico_search.png")" width="12" height="12"/>
         </th>
-        <th width="135">#springMessage("status"):
+        <th width="135">#springMessageText("status", "status"):
         <select onchange="searchTable('table_o', 2, this.value);" onclick="searchTable('table_o', 2, this.value);">
-            <option value="">#springMessage("all")</option>
+            <option value="">#springMessageText("all", "all")</option>
             #if($app)
-                <option value="#springMessage("provided")">#springMessage("provided")</option>
-                <option value="#springMessage("consumed")">#springMessage("consumed")</option>
+                <option value="#springMessageText("provided", "provided")">#springMessageText("provided", "provided")</option>
+                <option value="#springMessageText("consumed", "consumed")">#springMessageText("consumed", "consumed")</option>
             #else
-                <option value="#springMessage("ok")">#springMessage("ok")</option>
-                <option value="#springMessage("no.provider")">#springMessage("no.provider")</option>
-                <option value="#springMessage("no.consumer")">#springMessage("no.consumer")</option></select>
+                <option value="#springMessageText("ok", "ok")">#springMessageText("ok", "ok")</option>
+                <option value="#springMessageText("no.provider", "no.provider")">#springMessageText("no.provider", "no.provider")</option>
+                <option value="#springMessageText("no.consumer", "no.consumer")">#springMessageText("no.consumer", "no.consumer")</option></select>
             #end
             </select></th>
         #if($appj)
-            <th width="110">#springMessage("mock"): <select onchange="searchTable('table_o', 3, this.value);"
+            <th width="110">#springMessageText("mock", "mock"): <select onchange="searchTable('table_o', 3, this.value);"
                                                        onclick="searchTable('table_o', 3, this.value);">
-                <option value="">#springMessage("all")</option>
-                <option value="#springMessage("ok")">#springMessage("ok")</option>
-                <option value="#springMessage("force.mock")">#springMessage("force.mock")</option>
-                <option value="#springMessage("fail.mock")">#springMessage("fail.mock")</option>
+                <option value="">#springMessageText("all", "all")</option>
+                <option value="#springMessageText("ok", "ok")">#springMessageText("ok", "ok")</option>
+                <option value="#springMessageText("force.mock", "force.mock")">#springMessageText("force.mock", "force.mock")</option>
+                <option value="#springMessageText("fail.mock", "fail.mock")">#springMessageText("fail.mock", "fail.mock")</option>
             </select></th>
-            <th>#springMessage("operation")</th>
+            <th>#springMessageText("operation", "operation")</th>
         #end
     </tr>
     #foreach($service in $services)
@@ -95,20 +95,20 @@
             <td>
                 #if($app)
                     #if($providerServices.contains($service))
-                        <font color="green">#springMessage("provided")</font>
+                        <font color="green">#springMessageText("provided", "provided")</font>
                         #if($consumerServices.contains($service))
-                            &<font color="blue">#springMessage("consumed")</font>
+                            &<font color="blue">#springMessageText("consumed", "consumed")</font>
                         #end
                     #elseif($consumerServices.contains($service))
-                        <font color="blue">#springMessage("consumed")</font>
+                        <font color="blue">#springMessageText("consumed", "consumed")</font>
                     #end
                 #else
                     #if(! $providerServices.contains($service))
-                        <font color="red">#springMessage("no.provider")</font>
+                        <font color="red">#springMessageText("no.provider", "no.provider")</font>
                     #elseif(! $consumerServices.contains($service))
-                        <font color="blue">#springMessage("no.consumer")</font>
+                        <font color="blue">#springMessageText("no.consumer", "no.consumer")</font>
                     #else
-                        <font color="green">#springMessage("ok")</font>
+                        <font color="green">#springMessageText("ok", "ok")</font>
                     #end
                 #end
             </td>
@@ -117,11 +117,11 @@
                     #if($consumerServices.contains($service))
                         #set($mock=$tool.getOverridesMock($overrides.get($app)))
                         #if($mock == "force%3Areturn+null")
-                            <font color="red">#springMessage("force.mocked")</font>
+                            <font color="red">#springMessageText("force.mocked", "force.mocked")</font>
                         #elseif ($mock == "fail%3Areturn+null")
-                            <font color="blue">#springMessage("fail.mocked")</font>
+                            <font color="blue">#springMessageText("fail.mocked", "fail.mocked")</font>
                         #else
-                            <font color="gray">#springMessage("no.mocked")</font>
+                            <font color="gray">#springMessageText("no.mocked", "no.mocked")</font>
                         #end
                     #end
                 </td>
@@ -129,35 +129,35 @@
                     #if($consumerServices.contains($service))
                         #set($mock=$tool.getOverridesMock($overrides.get($app)))
                         #if($mock == "force%3Areturn+null")
-                            <a href="#" onclick="showConfirm('#springMessage(
-                                "confirm.cancel.mock")', 'services/0/recover?service=$service'); return false;"><img
+                            <a href="#" onclick="showConfirm('#springMessageText(
+                                "confirm.cancel.mock","confirm.cancel.mock")', 'services/0/recover?service=$service'); return false;"><img
                                     src="$rootContextPath.getURI("images/ico_enable.png")" width="12" height="12"/><span
-                                    class="ico_font">#springMessage("cancel.mock")</span></a>
+                                    class="ico_font">#springMessageText("cancel.mock", "cancel.mock")</span></a>
                             <span class="ico_line">|</span>
-                            <a href="#" onclick="showConfirm('#springMessage(
-                                "confirm.fail.mock")', 'services/0/tolerant?service=$service'); return false;"><img
+                            <a href="#" onclick="showConfirm('#springMessageText(
+                                "confirm.fail.mock","confirm.fail.mock")', 'services/0/tolerant?service=$service'); return false;"><img
                                     src="$rootContextPath.getURI("images/ico_run.png")" width="12" height="12"/><span
-                                    class="ico_font">#springMessage("fail.mock")</span></a>
+                                    class="ico_font">#springMessageText("fail.mock", "fail.mock")</span></a>
                         #elseif ($mock == "fail%3Areturn+null")
-                            <a href="#" onclick="showConfirm('#springMessage(
-                                "confirm.force.mock")', 'services/0/shield?service=$service'); return false;"><img
+                            <a href="#" onclick="showConfirm('#springMessageText(
+                                "confirm.force.mock","confirm.force.mock")', 'services/0/shield?service=$service'); return false;"><img
                                     src="$rootContextPath.getURI("images/ico_disable.png")" width="12"
-                                    height="12"/><span class="ico_font">#springMessage("force.mock")</span></a>
+                                    height="12"/><span class="ico_font">#springMessageText("force.mock", "force.mock")</span></a>
                             <span class="ico_line">|</span>
-                            <a href="#" onclick="showConfirm('#springMessage(
-                                "confirm.cancel.mock")', 'services/0/recover?service=$service'); return false;"><img
+                            <a href="#" onclick="showConfirm('#springMessageText(
+                                "confirm.cancel.mock","confirm.cancel.mock")', 'services/0/recover?service=$service'); return false;"><img
                                     src="$rootContextPath.getURI("images/ico_enable.png")" width="12" height="12"/><span
-                                    class="ico_font">#springMessage("cancel.mock")</span></a>
+                                    class="ico_font">#springMessageText("cancel.mock", "cancel.mock")</span></a>
                         #else
-                            <a href="#" onclick="showConfirm('#springMessage(
-                                "confirm.force.mock")', 'services/0/shield?service=$service'); return false;"><img
+                            <a href="#" onclick="showConfirm('#springMessageText(
+                                "confirm.force.mock","confirm.force.mock")', 'services/0/shield?service=$service'); return false;"><img
                                     src="$rootContextPath.getURI("images/ico_disable.png")" width="12"
-                                    height="12"/><span class="ico_font">#springMessage("force.mock")</span></a>
+                                    height="12"/><span class="ico_font">#springMessageText("force.mock", "force.mock")</span></a>
                             <span class="ico_line">|</span>
-                            <a href="#" onclick="showConfirm('#springMessage(
-                                "confirm.fail.mock")', 'services/0/tolerant?service=$service'); return false;"><img
+                            <a href="#" onclick="showConfirm('#springMessageText(
+                                "confirm.fail.mock","confirm.fail.mock")', 'services/0/tolerant?service=$service'); return false;"><img
                                     src="$rootContextPath.getURI("images/ico_run.png")" width="12" height="12"/><span
-                                    class="ico_font">#springMessage("fail.mock")</span></a>
+                                    class="ico_font">#springMessageText("fail.mock", "fail.mock")</span></a>
                         #end
                     #end
                 </td>
@@ -165,5 +165,5 @@
         </tr>
     #end
 </table>
-<div class="page">#springMessage("page.total")$services.size()#springMessage("page.records") </div>
+<div class="page">#springMessageText("page.total", "page.total")$services.size()#springMessageText("page.records", "page.records") </div>
 #end
\ No newline at end of file
diff --git a/dubbo-admin/src/main/resources/templates/governance/screen/weights/add.vm b/dubbo-admin/src/main/resources/templates/governance/screen/weights/add.vm
index 51909c4..7afce5e 100644
--- a/dubbo-admin/src/main/resources/templates/governance/screen/weights/add.vm
+++ b/dubbo-admin/src/main/resources/templates/governance/screen/weights/add.vm
@@ -15,13 +15,13 @@
 #set($layout = "/templates/governance/layout/default.vm")
 <div class="ico_btn">
     <a href="../weights"><img src="$rootContextPath.getURI("images/ico_back.png")" width="12" height="12"/><span
-            class="ico_font">#springMessage("back")</span></a>
+            class="ico_font">#springMessageText("back", "back")</span></a>
 </div>
 <br/>
 <form id="df" action="../weights/create" method="POST">
     <table cellpadding="0" cellspacing="0" class="info">
         <tr>
-            <th width="100">#springMessage("service")&nbsp;&nbsp;<font color='red'>*</font></th>
+            <th width="100">#springMessageText("service", "service")&nbsp;&nbsp;<font color='red'>*</font></th>
             <td width="300">
                 #if($service)
                     <input type="hidden" id="multiservice" name="service" value="$service"/>$service
@@ -29,7 +29,7 @@
                     <textarea id="service" name="multiservice" style="ime-mode:disabled" rows="2" cols="40"></textarea>
                     #if ($serviceList && $serviceList.size() > 0)
                         <select id="selectService" name="selectService" onchange="fnSetService(this)">
-                            <option value="">#springMessage("Choose")</option>
+                            <option value="">#springMessageText("Choose", "Choose")</option>
                             #foreach ($s in $serviceList)
                                 <option value="$s">$tool.getSimpleName($s)</option>
                             #end
@@ -39,7 +39,7 @@
             </td>
         </tr>
         <tr>
-            <th style="width: 100px;">#springMessage("provider"):&nbsp;&nbsp;<font color='red'>*</font></th>
+            <th style="width: 100px;">#springMessageText("provider", "provider"):&nbsp;&nbsp;<font color='red'>*</font></th>
             <td>
                 #if($address)
                     <input type="hidden" id="address" name="address"
@@ -48,25 +48,25 @@
                     <textarea id="address" name="address" rows="2" cols="40"></textarea>
                     #if ($addressList && $addressList.size() > 0)
                         <select id="selectAddeess" name="selectAddeess" onchange="fnSetAddress(this)">
-                            <option value="">#springMessage("Choose")</option>
+                            <option value="">#springMessageText("Choose", "Choose")</option>
                             #foreach ($s in $addressList)
                                 <option value="$s">$tool.getHostPrefix($s)$s</option>
                             #end
                         </select>
                     #end
-                    <font color="blue">#springMessage("BatchAddressTip")</font>
+                    <font color="blue">#springMessageText("BatchAddressTip", "BatchAddressTip")</font>
                 #end
             </td>
         </tr>
         <tr>
-            <th style="width: 100px;">#springMessage("weights"):&nbsp;&nbsp;<font color='red'>*</font></th>
+            <th style="width: 100px;">#springMessageText("weights", "weights"):&nbsp;&nbsp;<font color='red'>*</font></th>
             <td><input type="text" id="weight" name="weight" value="" maxlength="3" onkeydown="return checkNumber();"/>
             </td>
         </tr>
         <tr>
             <th>
-                <div class="btn"><a href="#" onclick="if(check()){document.getElementById('df').submit();}">#springMessage(
-                    "save")</a></div>
+                <div class="btn"><a href="#" onclick="if(check()){document.getElementById('df').submit();}">#springMessageText(
+                    "save","save")</a></div>
             </th>
             <td></td>
         </tr>
@@ -112,12 +112,12 @@
     function check() {
         var service = byId('service').value.trim();
         if (service == '') {
-            showAlert("#springMessage("PleaseInput"), #springMessage("service")", 'service');
+            showAlert("#springMessageText("PleaseInput", "PleaseInput"), #springMessageText("service", "service")", 'service');
             return false;
         }
         var address = byId('address').value.trim();
         if (address == '') {
-            showAlert("#springMessage("PleaseInput"), #springMessage("address")", 'address');
+            showAlert("#springMessageText("PleaseInput", "PleaseInput"), #springMessageText("address", "address")", 'address');
             return false;
         }
         var exp = /^(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5]):\d+$/;
@@ -129,7 +129,7 @@
             var address = addresses[i];
             if (address != "") {
                 if (!address.match(exp) && !address.match(exp2) && !address.match(exp3) && !address.match(exp4)) {
-                    showAlert("#springMessage("InvalidIp"), #springMessage("address")", 'address');
+                    showAlert("#springMessageText("InvalidIp", "InvalidIp"), #springMessageText("address", "address")", 'address');
                     return false;
                 }
             }
diff --git a/dubbo-admin/src/main/resources/templates/governance/screen/weights/edit.vm b/dubbo-admin/src/main/resources/templates/governance/screen/weights/edit.vm
index 74eed5a..3a13ed6 100644
--- a/dubbo-admin/src/main/resources/templates/governance/screen/weights/edit.vm
+++ b/dubbo-admin/src/main/resources/templates/governance/screen/weights/edit.vm
@@ -15,7 +15,7 @@
 #set($layout = "/templates/governance/layout/default.vm")
 <div class="ico_btn">
     <a href="../../weights"><img src="$rootContextPath.getURI("images/ico_back.png")" width="12" height="12"/><span
-            class="ico_font">#springMessage("back")</span></a>
+            class="ico_font">#springMessageText("back", "back")</span></a>
 </div>
 <br/>
 <form id="weightForm" action="../update" method="POST">
@@ -26,21 +26,21 @@
             </td>
         </tr>
         <tr>
-            <th width="100">#springMessage("service")&nbsp;&nbsp;<font color='red'>*</font></th>
+            <th width="100">#springMessageText("service", "service")&nbsp;&nbsp;<font color='red'>*</font></th>
             <td>
                 $weight.service <input type="hidden" id="serviceName" name="service" value="$weight.service"
                                        style="ime-mode:disabled" maxlength="200"/>
             </td>
         </tr>
         <tr>
-            <th>#springMessage("provider")&nbsp;&nbsp;<font color='red'>*</font></th>
+            <th>#springMessageText("provider", "provider")&nbsp;&nbsp;<font color='red'>*</font></th>
             <td>
                 #if($actionflag=="copy")
                     <input type="text" id="address" name="address" value="$!weight.address" style="ime-mode:disabled"
                            maxlength="200"/>
                     #if($service)
                         <select id="selectAddeess" name="selectAddeess" onchange="fnSetService(this,'address')">
-                            <option value="">#springMessage("Choose")</option>
+                            <option value="">#springMessageText("Choose", "Choose")</option>
                             #if ($addressList && $addressList.size() > 0)
                                 #foreach ($s in $addressList)
                                     <option value="$s">$s</option>
@@ -56,7 +56,7 @@
             </td>
         </tr>
         <tr>
-            <th style="width: 100px;">#springMessage("weights")&nbsp;&nbsp;<font color='red'>*</font></th>
+            <th style="width: 100px;">#springMessageText("weights", "weights")&nbsp;&nbsp;<font color='red'>*</font></th>
             <td>
                 <input type="text" id="weight" name="weight" value="$!weight.weight" maxlength="3"
                        onkeydown="return checkNumber();"/>
@@ -65,8 +65,8 @@
         <tr>
             <th>
                 <div class="btn"><a href="#"
-                                    onclick="if(check()){document.getElementById('weightForm').submit();}">#springMessage(
-                    "save")</a></div>
+                                    onclick="if(check()){document.getElementById('weightForm').submit();}">#springMessageText(
+                    "save","save")</a></div>
             </th>
             <td></td>
         </tr>
@@ -103,12 +103,12 @@
     function check() {
         var serviceName = byId('serviceName').value.trim();
         if (serviceName == '') {
-            showAlert("#springMessage("PleaseInput"), #springMessage("service")", 'serviceName');
+            showAlert("#springMessageText("PleaseInput", "PleaseInput"), #springMessageText("service", "service")", 'serviceName');
             return false;
         }
         var address = byId('address').value.trim();
         if (address == '') {
-            showAlert("#springMessage("PleaseInput"), #springMessage("address")", 'address');
+            showAlert("#springMessageText("PleaseInput", "PleaseInput"), #springMessageText("address", "address")", 'address');
             return false;
         }
         var exp = /^(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5]):\d+$/;
@@ -120,7 +120,7 @@
             var address = addresses[i];
             if (address != "") {
                 if (!address.match(exp) && !address.match(exp2) && !address.match(exp3) && !address.match(exp4)) {
-                    showAlert("#springMessage("InvalidIp"), #springMessage("address")", 'address');
+                    showAlert("#springMessageText("InvalidIp", "InvalidIp"), #springMessageText("address", "address")", 'address');
                     return false;
                 }
             }
diff --git a/dubbo-admin/src/main/resources/templates/governance/screen/weights/index.vm b/dubbo-admin/src/main/resources/templates/governance/screen/weights/index.vm
index d46362f..2aee5d6 100644
--- a/dubbo-admin/src/main/resources/templates/governance/screen/weights/index.vm
+++ b/dubbo-admin/src/main/resources/templates/governance/screen/weights/index.vm
@@ -17,31 +17,31 @@
     #if($currentUser.role != "G")
         <a href="weights/add"><img src="$rootContextPath.getURI("images/ico_add.png")"
                                                                      width="9" height="9"/><span
-                class="ico_font">#springMessage("add")</span></a>
+                class="ico_font">#springMessageText("add", "add")</span></a>
         <span class="ico_line">|</span>
-        <a href="#" onclick="if(! hasCheckbox('ids')) { showAlert('#springMessage(
-            "empty.list")'); } else if(! hasChecked('ids')) { showAlert('#springMessage(
-            "please.select")'); } else { showConfirm('#springMessage(
-            "confirm.batch.delete")', 'weights/' + getChecked('ids') + '/delete'); } return false;"><img
+        <a href="#" onclick="if(! hasCheckbox('ids')) { showAlert('#springMessageText(
+            "empty.list","empty.list")'); } else if(! hasChecked('ids')) { showAlert('#springMessageText(
+            "please.select","please.select")'); } else { showConfirm('#springMessageText(
+            "confirm.batch.delete","confirm.batch.delete")', 'weights/' + getChecked('ids') + '/delete'); } return false;"><img
                 src="$rootContextPath.getURI("images/ico_delete.png")" width="12" height="12"/><span
-                class="ico_font">#springMessage("batch.delete")</span></a>
+                class="ico_font">#springMessageText("batch.delete", "batch.delete")</span></a>
     #end
 </div>
 <br/>
 <table cellpadding="0" cellspacing="0" class="list list_dubbo" id="table_o">
     <tr>
         <th width="20"><input type="checkbox" onclick="checkAll('table_o', 'ids', this.checked)"/></th>
-        <th>#springMessage("address"): <input type="text" onkeyup="searchTable('table_o', 1, this.value);"
+        <th>#springMessageText("address", "address"): <input type="text" onkeyup="searchTable('table_o', 1, this.value);"
                                          onclick="searchTable('table_o', 1, this.value);"/>&nbsp;<img
                 src="$rootContextPath.getURI("images/ico_search.png")" width="12" height="12"/></th>
         #if(! $service)
-            <th>#springMessage("service"): <input type="text" onkeyup="searchTable('table_o', 2, this.value);"
+            <th>#springMessageText("service", "service"): <input type="text" onkeyup="searchTable('table_o', 2, this.value);"
                                              onclick="searchTable('table_o', 2, this.value);"/>&nbsp;<img
                     src="$rootContextPath.getURI("images/ico_search.png")" width="12" height="12"/></th>
         #end
-        <th width="50">#springMessage("weights")</th>
+        <th width="50">#springMessageText("weights", "weights")</th>
         #if($currentUser.role != "G")
-            <th width="135">#springMessage("operation")</th>#end
+            <th width="135">#springMessageText("operation", "operation")</th>#end
     </tr>
     #foreach($weight in $weights)
         <tr>
@@ -55,15 +55,15 @@
                 <td>
                     <a href="weights/$weight.id/edit">
                         <img src="$rootContextPath.getURI("images/ico_edit.png")" width="13" height="13"/>
-                        <span class="ico_font">#springMessage("edit")</span></a>
+                        <span class="ico_font">#springMessageText("edit", "edit")</span></a>
                     <span class="ico_line">|</span>
-                    <a href="#" onclick="showConfirm('#springMessage(
-                        "confirm.delete")', '$weight.address', 'weights/$weight.id/delete'); return false;">
+                    <a href="#" onclick="showConfirm('#springMessageText(
+                        "confirm.delete","confirm.delete")', '$weight.address', 'weights/$weight.id/delete'); return false;">
                         <img src="$rootContextPath.getURI("images/ico_delete.png")" width="12" height="12"/>
-                        <span class="ico_font">#springMessage("delete")</span></a>
+                        <span class="ico_font">#springMessageText("delete", "delete")</span></a>
                 </td>
             #end
         </tr>
     #end
 </table>
-<div class="page">#springMessage("page.total")$weights.size()#springMessage("page.records") </div>
+<div class="page">#springMessageText("page.total", "page.total")$weights.size()#springMessageText("page.records", "page.records") </div>
diff --git a/dubbo-admin/src/main/resources/templates/governance/screen/weights/show.vm b/dubbo-admin/src/main/resources/templates/governance/screen/weights/show.vm
index 0639e03..05d2073 100644
--- a/dubbo-admin/src/main/resources/templates/governance/screen/weights/show.vm
+++ b/dubbo-admin/src/main/resources/templates/governance/screen/weights/show.vm
@@ -15,36 +15,36 @@
 #set($layout = "/templates/governance/layout/default.vm")
 <div class="ico_btn">
     <a href="../weights"><img src="$rootContextPath.getURI("images/ico_back.png")" width="12" height="12"/><span
-            class="ico_font">#springMessage("back")</span></a>
+            class="ico_font">#springMessageText("back", "back")</span></a>
     #if($currentUser.role != "G")
         <span class="ico_line">|</span>
         <a href="$weight.id/edit">
             <img src="$rootContextPath.getURI("images/ico_edit.png")" width="13" height="13"/>
-            <span class="ico_font">#springMessage("edit")</span></a>
+            <span class="ico_font">#springMessageText("edit", "edit")</span></a>
         <span class="ico_line">|</span>
-        <a href="#" onclick="showConfirm('#springMessage(
-            "confirm.delete")', '$weight.address', '$weight.id/delete'); return false;"><img
+        <a href="#" onclick="showConfirm('#springMessageText(
+            "confirm.delete","confirm.delete")', '$weight.address', '$weight.id/delete'); return false;"><img
                 src="$rootContextPath.getURI("images/ico_delete.png")" width="12" height="12"/><span
-                class="ico_font">#springMessage("delete")</span></a>
+                class="ico_font">#springMessageText("delete", "delete")</span></a>
     #end
 </div>
 <br/>
 <form id="weightForm" action="../$weight.id" method="POST">
     <table cellpadding="0" cellspacing="0" class="info">
         <tr>
-            <th style="width: 100px;">#springMessage("service")&nbsp;&nbsp;<font color='red'>*</font></th>
+            <th style="width: 100px;">#springMessageText("service", "service")&nbsp;&nbsp;<font color='red'>*</font></th>
             <td>
                 $weight.service
             </td>
         </tr>
         <tr>
-            <th style="width: 100px;">#springMessage("provider")&nbsp;&nbsp;<font color='red'>*</font></th>
+            <th style="width: 100px;">#springMessageText("provider", "provider")&nbsp;&nbsp;<font color='red'>*</font></th>
             <td>
                 $weight.address
             </td>
         </tr>
         <tr>
-            <th style="width: 100px;">#springMessage("weights")&nbsp;&nbsp;<font color='red'>*</font></th>
+            <th style="width: 100px;">#springMessageText("weights", "weights")&nbsp;&nbsp;<font color='red'>*</font></th>
             <td>
                 $weight.weight
             </td>
@@ -65,12 +65,12 @@
     function check() {
         var serviceName = byId('serviceName').value.trim();
         if (serviceName == '') {
-            showAlert("#springMessage("PleaseInput") #springMessage("service")", 'serviceName');
+            showAlert("#springMessageText("PleaseInput", "PleaseInput") #springMessageText("service", "service")", 'serviceName');
             return false;
         }
         var consumerAddress = byId('consumerAddress').value.trim();
         if (consumerAddress == '') {
-            showAlert("#springMessage("PleaseInput") #springMessage("ConsumerAddress")", 'consumerAddress');
+            showAlert("#springMessageText("PleaseInput", "PleaseInput") #springMessageText("ConsumerAddress", "ConsumerAddress")", 'consumerAddress');
             return false;
         }
         var exp = /^(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])$/;
@@ -80,7 +80,7 @@
             var address = addresses[i];
             if (address != "") {
                 if (!address.match(exp) && !address.match(exp2)) {
-                    showAlert("#springMessage("InvalidIp") #springMessage("ConsumerAddress")", 'consumerAddress');
+                    showAlert("#springMessageText("InvalidIp", "InvalidIp") #springMessageText("ConsumerAddress", "ConsumerAddress")", 'consumerAddress');
                     return false;
                 }
             }
diff --git a/dubbo-admin/src/main/resources/templates/home/control/menu.vm b/dubbo-admin/src/main/resources/templates/home/control/menu.vm
index 7ef63cd..d3f8365 100644
--- a/dubbo-admin/src/main/resources/templates/home/control/menu.vm
+++ b/dubbo-admin/src/main/resources/templates/home/control/menu.vm
@@ -64,13 +64,13 @@
                         <td style="padding-left: 10px;"><img src="$rootContextPath.getURI("images/ico_user.png")"
                                                              width="14" height="14" border="0"/></td>
                         <td>
-                            #if($currentUser.name)$currentUser.name#else$currentUser.username#end, #springMessage("welcome")
+                            #if($currentUser.name)$currentUser.name#else$currentUser.username#end, #springMessageText("welcome", "welcome")
                         </td>
                         <td style="padding-left: 10px;"><img src="$rootContextPath.getURI("images/exit.png")" width="14"
                                                              height="19" border="0"/></td>
-                        <td><a href="#" onclick="showConfirm('#springMessage("confirm.logout")', '#springMessage(
-                            "current.user"): $currentUser.Name', '/logout'); return false;"
-                               style="color: white;">#springMessage("logout")</a></td>
+                        <td><a href="#" onclick="showConfirm('#springMessageText("confirm.logout", "confirm.logout")', '#springMessageText(
+                            "current.user","current.user"): $currentUser.Name', '/logout'); return false;"
+                               style="color: white;">#springMessageText("logout", "logout")</a></td>
                     </tr>
                 </table>
             </td>
@@ -79,49 +79,49 @@
 </div>
 <div class="nav">
     <ul>
-        <li id="unique_tab1"><a href="$rootContextPath.getURI("/")">#springMessage("home")</a></li>
-        <li id="unique_tab2" class="sub_nav"><a href="#" onclick="return false;" style="cursor:default;">#springMessage(
-            "governance")</a>
+        <li id="unique_tab1"><a href="$rootContextPath.getURI("/")">#springMessageText("home", "home")</a></li>
+        <li id="unique_tab2" class="sub_nav"><a href="#" onclick="return false;" style="cursor:default;">#springMessageText(
+            "governance","governance")</a>
             <ul>
                 #if($tool.checkUrl($currentUser,"/governance/services"))
-                    <li><a href="$rootContextPath.getURI("/governance/services")">#springMessage("services")</a></li>#end
+                    <li><a href="$rootContextPath.getURI("/governance/services")">#springMessageText("services", "services")</a></li>#end
                 #if($tool.checkUrl($currentUser,"/governance/applications"))
-                    <li><a href="$rootContextPath.getURI("/governance/applications")">#springMessage("applications")</a>
+                    <li><a href="$rootContextPath.getURI("/governance/applications")">#springMessageText("applications", "applications")</a>
                     </li>#end
                 #if($tool.checkUrl($currentUser,"/governance/addresses"))
-                    <li><a href="$rootContextPath.getURI("/governance/addresses")">#springMessage("addresses")</a></li>#end
+                    <li><a href="$rootContextPath.getURI("/governance/addresses")">#springMessageText("addresses", "addresses")</a></li>#end
                 #if($tool.checkUrl($currentUser,"/governance/providers"))
-                    <li><a href="$rootContextPath.getURI("/governance/providers")">#springMessage("providers")</a></li>#end
+                    <li><a href="$rootContextPath.getURI("/governance/providers")">#springMessageText("providers", "providers")</a></li>#end
                 #if($tool.checkUrl($currentUser,"/governance/consumers"))
-                    <li><a href="$rootContextPath.getURI("/governance/consumers")">#springMessage("consumers")</a></li>#end
+                    <li><a href="$rootContextPath.getURI("/governance/consumers")">#springMessageText("consumers", "consumers")</a></li>#end
                 #if($tool.checkUrl($currentUser,"/governance/routes"))
-                    <li><a href="$rootContextPath.getURI("/governance/routes")">#springMessage("routes")</a></li>#end
+                    <li><a href="$rootContextPath.getURI("/governance/routes")">#springMessageText("routes", "routes")</a></li>#end
                 #if($tool.checkUrl($currentUser,"/governance/overrides"))
-                    <li><a href="$rootContextPath.getURI("/governance/overrides")">#springMessage("overrides")</a></li>#end
+                    <li><a href="$rootContextPath.getURI("/governance/overrides")">#springMessageText("overrides", "overrides")</a></li>#end
                 #if($tool.checkUrl($currentUser,"/governance/accesses"))
-                    <li><a href="$rootContextPath.getURI("/governance/accesses")">#springMessage("accesses")</a></li>#end
+                    <li><a href="$rootContextPath.getURI("/governance/accesses")">#springMessageText("accesses", "accesses")</a></li>#end
                 #if($tool.checkUrl($currentUser,"/governance/weights"))
-                    <li><a href="$rootContextPath.getURI("/governance/weights")">#springMessage("weights")</a></li>#end
+                    <li><a href="$rootContextPath.getURI("/governance/weights")">#springMessageText("weights", "weights")</a></li>#end
                 #if($tool.checkUrl($currentUser,"/governance/loadbalances"))
-                    <li><a href="$rootContextPath.getURI("/governance/loadbalances")">#springMessage("loadbalances")</a>
+                    <li><a href="$rootContextPath.getURI("/governance/loadbalances")">#springMessageText("loadbalances", "loadbalances")</a>
                     </li>#end
                 #if($tool.checkUrl($currentUser,"/governance/owners"))
-                    <li><a href="$rootContextPath.getURI("/governance/owners")">#springMessage("owners")</a></li>#end
+                    <li><a href="$rootContextPath.getURI("/governance/owners")">#springMessageText("owners", "owners")</a></li>#end
             </ul>
         </li>
-        <li id="unique_tab3" class="sub_nav"><a href="#" onclick="return false;" style="cursor:default;">#springMessage(
-            "system.management")</a>
+        <li id="unique_tab3" class="sub_nav"><a href="#" onclick="return false;" style="cursor:default;">#springMessageText(
+            "system.management","system.management")</a>
             <ul>
                 #if($tool.checkUrl($currentUser,"/sysinfo/versions"))
-                    <li><a href="$rootContextPath.getURI("/sysinfo/versions")">#springMessage("versions")</a></li>#end
+                    <li><a href="$rootContextPath.getURI("/sysinfo/versions")">#springMessageText("versions", "versions")</a></li>#end
                 #if($tool.checkUrl($currentUser,"/sysinfo/dumps"))
-                    <li><a href="$rootContextPath.getURI("/sysinfo/dumps")">#springMessage("dumps")</a></li>#end
+                    <li><a href="$rootContextPath.getURI("/sysinfo/dumps")">#springMessageText("dumps", "dumps")</a></li>#end
                 #if($tool.checkUrl($currentUser,"/sysinfo/statuses"))
-                    <li><a href="$rootContextPath.getURI("/sysinfo/statuses")">#springMessage("statuses")</a></li>#end
+                    <li><a href="$rootContextPath.getURI("/sysinfo/statuses")">#springMessageText("statuses", "statuses")</a></li>#end
                 #if($tool.checkUrl($currentUser,"/sysinfo/logs"))
-                    <li><a href="$rootContextPath.getURI("/sysinfo/logs")">#springMessage("logs")</a></li>#end
+                    <li><a href="$rootContextPath.getURI("/sysinfo/logs")">#springMessageText("logs", "logs")</a></li>#end
                 #if($tool.checkUrl($currentUser,"/sysinfo/envs"))
-                    <li><a href="$rootContextPath.getURI("/sysinfo/envs")">#springMessage("envs")</a></li>#end
+                    <li><a href="$rootContextPath.getURI("/sysinfo/envs")">#springMessageText("envs", "envs")</a></li>#end
             </ul>
         </li>
     </ul>
@@ -129,7 +129,7 @@
         <table>
             <tr>
                 <td><img src="$rootContextPath.getURI("images/ico_help.png")" width="14" height="14" border="0"/></td>
-                <td><a href="$helpUrl" target="_blank">#springMessage("help")</a></td>
+                <td><a href="$helpUrl" target="_blank">#springMessageText("help", "help")</a></td>
             </tr>
         </table>
     </div>
diff --git a/dubbo-admin/src/main/resources/templates/home/screen/index.vm b/dubbo-admin/src/main/resources/templates/home/screen/index.vm
index 477e278..6970ebc 100644
--- a/dubbo-admin/src/main/resources/templates/home/screen/index.vm
+++ b/dubbo-admin/src/main/resources/templates/home/screen/index.vm
@@ -63,13 +63,13 @@
                                     style="cursor: pointer;" width="20" height="20"/></td>
             </tr>
             <tr height="100">
-                <td align="right"><span id="alertText" style="font-size: 32px;">#springMessage('please.input')</span><br/><span id="alertData" style="font-size: 12px;"></span></td>
+                <td align="right"><span id="alertText" style="font-size: 32px;">#springMessageText("please.input", "please.input")</span><br/><span id="alertData" style="font-size: 12px;"></span></td>
                 <td></td>
             </tr>
             <tr>
                 <td align="right">
-                    <div class="btn_info" style="float: right; clear: left;"><a href="#" onclick="alertOK();">#springMessage(
-                        "confirm")</a></div>
+                    <div class="btn_info" style="float: right; clear: left;"><a href="#" onclick="alertOK();">#springMessageText(
+                        "confirm", "confirm")</a></div>
                 </td>
                 <td></td>
             </tr>
@@ -85,18 +85,18 @@
                                     style="cursor: pointer;" width="20" height="20"/></td>
             </tr>
             <tr height="120">
-                <td align="right"><span id="confirmText" style="font-size: 32px;">#springMessage("confirm")</span><br/><span
+                <td align="right"><span id="confirmText" style="font-size: 32px;">#springMessageText("confirm", "confirm")</span><br/><span
                         id="confirmData" style="font-size: 12px;"></span></td>
                 <td></td>
             </tr>
             <tr>
                 <td align="right">
                     <div class="btn_info" style="float: right; clear: left;"><a href="#"
-                                                                                onclick="confirmCancel();">#springMessage(
-                        "cancel")</a></div>&nbsp;&nbsp;&nbsp;&nbsp;<div class="btn_info"
+                                                                                onclick="confirmCancel();">#springMessageText(
+                        "cancel", "cancel")</a></div>&nbsp;&nbsp;&nbsp;&nbsp;<div class="btn_info"
                                                                         style="float: right; clear: left;"><a href="#"
-                                                                                                              onclick="confirmOK();">#springMessage(
-                    "confirm")</a></div>
+                                                                                                              onclick="confirmOK();">#springMessageText(
+                    "confirm", "confirm")</a></div>
                 </td>
                 <td></td>
             </tr>
@@ -110,24 +110,24 @@
     <input id="providerId" name="providerId" value="" type="hidden"/>
 
     <div class="main">
-        <div class="title"><h2>#springMessage("search")</h2></div>
-        <div class="crumbs">#springMessage("home") &gt; #springMessage("search")</div>
+        <div class="title"><h2>#springMessageText("addresses", "addresses")</h2></div>
+        <div class="crumbs">#springMessageText("home", "home") &gt; #springMessageText("addresses", "addresses")</div>
         <!--
  <div class="favorite">
  <div id="Tab2" class="fav_tab">
    <ul>
-    <li class="active" id="two1" onclick="setTab('two',1,2)"><a href="#">#springMessage("favorites")</a></li>
-    <li id="two2" onclick="setTab('two',2,2)"><a href="#">#springMessage("histories")</a></li>
+    <li class="active" id="two1" onclick="setTab('two',1,2)"><a href="#">#springMessageText("favorites", "favorites")</a></li>
+    <li id="two2" onclick="setTab('two',2,2)"><a href="#">#springMessageText("histories", "histories")</a></li>
    </ul>
  </div>
  <div class="fav_box" id="fav_box">
     <div id="con_two_1">
      <div class="fav_box_title">
       <div class="fav_title_left">
-       <a onclick="fnSelectAll()"><input name="favoritesAll" type="checkbox" value="" class="checkbox"/> <span>#springMessage(
-            "select.all")</span></a>
+       <a onclick="fnSelectAll()"><input name="favoritesAll" type="checkbox" value="" class="checkbox"/> <span>#springMessageText(
+            "select.all","select.all")</span></a>
        <a onclick="fnDeleteAll()"><img src="$rootContextPath.getURI(
-            "images/ico_delete.png")" width="13" height="13"/><span>#springMessage("delete")</span></a>
+            "images/ico_delete.png")" width="13" height="13"/><span>#springMessageText("delete", "delete")</span></a>
       </div>
        <a href="#" onclick="fnFolder()"><img src="$rootContextPath.getURI("images/fav_arrow.png")" width="14" height="15" class="fav_arrow"/></a>
      </div>
@@ -156,11 +156,11 @@
         <div class="search" id="Tab1">
             <div class="search_categories">
                 <ul>
-                    <li id="one1" onclick="setTab2('one',1,3); return false;" class="active"><a href="#">#springMessage(
-                        "service")</a><span class="search_line">|</span></li>
-                    <li id="one2" onclick="setTab2('one',2,3); return false;"><a href="#">#springMessage(
-                        "application")</a><span class="search_line">|</span></li>
-                    <li id="one3" onclick="setTab2('one',3,3); return false;"><a href="#">#springMessage("address")</a><span
+                    <li id="one1" onclick="setTab2('one',1,3); return false;" class="active"><a href="#">#springMessageText(
+                        "service", "service")</a><span class="search_line">|</span></li>
+                    <li id="one2" onclick="setTab2('one',2,3); return false;"><a href="#">#springMessageText(
+                        "application", "application")</a><span class="search_line">|</span></li>
+                    <li id="one3" onclick="setTab2('one',3,3); return false;"><a href="#">#springMessageText("address", "address")</a><span
                             class="search_line_end">|</span></li>
                 </ul>
             </div>
@@ -183,16 +183,16 @@
             <table id="serviceCompletion" style="margin-top: 20px;">
                 #if($currentUser.role != "G")
                     <tr>
-                        <th>#springMessage("add"):</th>
+                        <th>#springMessageText("add", "add"):</th>
                         <td style="padding-left: 10px;">
-                            <a href="$rootContextPath.getURI("governance/providers/add")">#springMessage("providers")</a>&nbsp;
-                            <a href="$rootContextPath.getURI("governance/routes/add")">#springMessage("routes")</a>&nbsp;
-                            <a href="$rootContextPath.getURI("governance/overrides/add")">#springMessage("overrides")</a>&nbsp;
-                            <a href="$rootContextPath.getURI("governance/accesses/add")">#springMessage("accesses")</a>&nbsp;
-                            <a href="$rootContextPath.getURI("governance/weights/add")">#springMessage("weights")</a>&nbsp;
-                            <a href="$rootContextPath.getURI("governance/loadbalances/add")">#springMessage(
-                                "loadbalances")</a>&nbsp;
-                            <a href="$rootContextPath.getURI("governance/owners/add")">#springMessage("owners")</a>&nbsp;
+                            <a href="$rootContextPath.getURI("governance/providers/add")">#springMessageText("providers", "providers")</a>&nbsp;
+                            <a href="$rootContextPath.getURI("governance/routes/add")">#springMessageText("routes", "routes")</a>&nbsp;
+                            <a href="$rootContextPath.getURI("governance/overrides/add")">#springMessageText("overrides", "overrides")</a>&nbsp;
+                            <a href="$rootContextPath.getURI("governance/accesses/add")">#springMessageText("accesses", "accesses")</a>&nbsp;
+                            <a href="$rootContextPath.getURI("governance/weights/add")">#springMessageText("weights", "weights")</a>&nbsp;
+                            <a href="$rootContextPath.getURI("governance/loadbalances/add")">#springMessageText(
+                                "loadbalances", "loadbalances")</a>&nbsp;
+                            <a href="$rootContextPath.getURI("governance/owners/add")">#springMessageText("owners", "owners")</a>&nbsp;
                         </td>
                     </tr>
                     <tr>
@@ -201,12 +201,12 @@
                     </tr>
                 #end
                 <tr>
-                    <th>#springMessage("stat"):</th>
+                    <th>#springMessageText("stat","stat"):</th>
                     <td style="padding-left: 10px;">
-                        #springMessage("serviceNum"):$services &nbsp;
-                        #springMessage("applicationNum"):$applications &nbsp;
-                        #springMessage("providerNum"):$providers &nbsp;
-                        #springMessage("consumerNum"):$consumers &nbsp;
+                        #springMessageText("serviceNum","serviceNum"):$services &nbsp;
+                        #springMessageText("applicationNum","applicationNum"):$applications &nbsp;
+                        #springMessageText("providerNum", "providerNum"):$providers &nbsp;
+                        #springMessageText("consumerNum", "consumerNum"):$consumers &nbsp;
                     </td>
                 </tr>
             </table>
@@ -223,9 +223,9 @@
             var searchContent = document.getElementById('searchContent');
             var keyword = searchContent.value;
             if (keyword == ''
-                    || keyword == '#springMessage("please.input.service")'
-                    || keyword == '#springMessage("please.input.application")'
-                    || keyword == '#springMessage("please.input.address")') {
+                    || keyword == '#springMessageText("please.input.service", "please.input.service")'
+                    || keyword == '#springMessageText("please.input.application", "please.input.application")'
+                    || keyword == '#springMessageText("please.input.address", "please.input.address")') {
                 keyword = '*';
             }
             window.location.href = '$rootContextPath.getURI("governance")/' + searchType + '?keyword=' + keyword;
@@ -238,19 +238,19 @@
             }
             var msg = "";
             if (cursel == 1) {
-                msg = '#springMessage("please.input.service")';
+                msg = '#springMessageText("please.input.service", "please.input.service")';
                 searchType = "services";
             } else if (cursel == 2) {
-                msg = '#springMessage("please.input.application")';
+                msg = '#springMessageText("please.input.application", "please.input.application")';
                 searchType = "applications";
             } else if (cursel == 3) {
-                msg = '#springMessage("please.input.address")';
+                msg = '#springMessageText("please.input.address", "please.input.address")';
                 searchType = "addresses";
             }
 
-            if (obj.value == '' || obj.value == '#springMessage("please.input.service")'
-                    || obj.value == '#springMessage("please.input.application")'
-                    || obj.value == '#springMessage("please.input.address")') {
+            if (obj.value == '' || obj.value == '#springMessageText("please.input.service", "please.input.service")'
+                    || obj.value == '#springMessageText("please.input.application", "please.input.application")'
+                    || obj.value == '#springMessageText("please.input.address", "please.input.address")') {
                 obj.value = msg;
             }
             obj.setAttribute("onfocus", "fnonfocus('" + msg + "')");
@@ -260,9 +260,9 @@
         }
         function fnonfocus() {
             var obj = document.getElementById('searchContent');
-            if (obj.value == '#springMessage("please.input.service")'
-                    || obj.value == '#springMessage("please.input.application")'
-                    || obj.value == '#springMessage("please.input.address")') {
+            if (obj.value == '#springMessageText("please.input.service", "please.input.service")'
+                    || obj.value == '#springMessageText("please.input.application", "please.input.application")'
+                    || obj.value == '#springMessageText("please.input.address", "please.input.address")') {
                 obj.value = '';
             }
         }
@@ -270,11 +270,11 @@
             var obj = document.getElementById('searchContent');
             if (obj.value == '') {
                 if (searchType == 'services')
-                    obj.value = '#springMessage("please.input.service")';
+                    obj.value = '#springMessageText("please.input.service", "please.input.service")';
                 else if (searchType == 'applications')
-                    obj.value = '#springMessage("please.input.application")';
+                    obj.value = '#springMessageText("please.input.application", "please.input.application")';
                 else if (searchType == 'addresses')
-                    obj.value = '#springMessage("please.input.address")';
+                    obj.value = '#springMessageText("please.input.address", "please.input.address")';
             }
         }
     </script>
diff --git a/dubbo-admin/src/main/resources/templates/sysinfo/layout/default.vm b/dubbo-admin/src/main/resources/templates/sysinfo/layout/default.vm
index 61f1490..5e18d04 100644
--- a/dubbo-admin/src/main/resources/templates/sysinfo/layout/default.vm
+++ b/dubbo-admin/src/main/resources/templates/sysinfo/layout/default.vm
@@ -38,32 +38,32 @@
     <div class="title title_search">
         <h2>
             #if($_method == "index")
-                #springMessage("sysinfo.$_type")
+                #springMessageText("sysinfo.$_type", "sysinfo.$_type")
             #else
-                #springMessage($_method)
+                #springMessageText($_method, $_method)
             #end
         </h2>
     </div>
     <div class="crumbs">
-        <a href="$rootContextPath.getURI("/")">#springMessage("home")</a> &gt; #springMessage("system.management")
+        <a href="$rootContextPath.getURI("/")">#springMessageText("home", "home")</a> &gt; #springMessageText("system.management", "system.management")
         #if($service)
             &gt; <a href="../../#if($_method == "show" || $_method == "add")../#elseif($_method ==
-            "edit")../../#{end}services">#springMessage("services")</a>
+            "edit")../../#{end}services">#springMessageText("services", "services")</a>
             &gt; $service
         #elseif($app)
             &gt; <a href="../../#if($_method == "show" || $_method == "add")../#elseif($_method ==
-            "edit")../../#{end}applications">#springMessage("applications")</a>
+            "edit")../../#{end}applications">#springMessageText("applications", "applications")</a>
             &gt; $app
         #elseif($address)
             &gt; <a href="../../#if($_method == "show" || $_method == "add")../#elseif($_method ==
-            "edit")../../#{end}addresses">#springMessage("addresses")</a>
+            "edit")../../#{end}addresses">#springMessageText("addresses", "addresses")</a>
             &gt; $address
         #end
         #if($_method == "index")
-            &gt; #springMessage("sysinfo.$_type")
+            &gt; #springMessageText("sysinfo.$_type", "sysinfo.$_type")
         #else
-            &gt; <a href="../$_type">#springMessage("sysinfo.$_type")</a>
-            &gt; #if($id)$id &gt;#end #springMessage($_method)
+            &gt; <a href="../$_type">#springMessageText("sysinfo.$_type", "sysinfo.$_type")</a>
+            &gt; #if($id)$id &gt;#end #springMessageText($_method, $_method)
         #end
     </div>
 </div>
@@ -76,7 +76,7 @@
                     #if($tool.checkUrl($currentUser,"/sysinfo/$tab"))
                         <li id="$tab"#if($_type == $tab) class="active"#else style="color: white;"#end
                             onclick="window.location.href='$rootContextPath.getURI(
-                                "/sysinfo/$tab")';">#springMessage($tab)</li>
+                                "/sysinfo/$tab")';">#springMessageText($tab, $tab)</li>
                     #end
                 #end
             </ul>
@@ -99,7 +99,7 @@
         </tr>
         <tr height="120">
             <td align="right">
-                <span id="alertText" style="font-size: 32px;">#springMessage("please.input")</span>
+                <span id="alertText" style="font-size: 32px;">#springMessageText("please.input", "please.input")</span>
                 <br/><span id="alertData" style="font-size: 12px;"></span>
             </td>
             <td></td>
@@ -107,7 +107,7 @@
         <tr>
             <td align="right">
                 <div class="btn_info" style="float: right; clear: left;">
-                    <a href="#" onclick="alertOK();">#springMessage("confirm")</a>
+                    <a href="#" onclick="alertOK();">#springMessageText("confirm", "confirm")</a>
                 </div>
             </td>
             <td></td>
@@ -125,7 +125,7 @@
         </tr>
         <tr height="120">
             <td align="right">
-                <span id="confirmText" style="font-size: 32px;">#springMessage("confirm")</span>
+                <span id="confirmText" style="font-size: 32px;">#springMessageText("confirm", "confirm")</span>
                 <br/>
                 <span id="confirmData" style="font-size: 12px;"></span>
             </td>
@@ -134,10 +134,10 @@
         <tr>
             <td align="right">
                 <div class="btn_info" style="float: right; clear: left;">
-                    <a href="#" onclick="confirmCancel();">#springMessage("cancel")</a>
+                    <a href="#" onclick="confirmCancel();">#springMessageText("cancel", "cancel")</a>
                 </div>
                 &nbsp;&nbsp;&nbsp;&nbsp;<div class="btn_info" style="float: right; clear: left;">
-                <a href="#" onclick="confirmOK();">#springMessage("confirm")</a>
+                <a href="#" onclick="confirmOK();">#springMessageText("confirm", "confirm")</a>
             </div>
             </td>
             <td></td>
diff --git a/dubbo-admin/src/main/resources/templates/sysinfo/screen/dumps/index.vm b/dubbo-admin/src/main/resources/templates/sysinfo/screen/dumps/index.vm
index 5f1c541..8648ff9 100644
--- a/dubbo-admin/src/main/resources/templates/sysinfo/screen/dumps/index.vm
+++ b/dubbo-admin/src/main/resources/templates/sysinfo/screen/dumps/index.vm
@@ -18,59 +18,59 @@
 <br/>
 <table cellpadding="0" cellspacing="0" class="list list_dubbo" id="table_o">
     <tr>
-        <th>#springMessage("property.name"): <input type="text" onkeyup="searchTable('table_o', 0, this.value);"
+        <th>#springMessageText("property.name", "property.name"): <input type="text" onkeyup="searchTable('table_o', 0, this.value);"
                                                onclick="searchTable('table_o', 0, this.value);"/>&nbsp;<img
                 src="$rootContextPath.getURI("images/ico_search.png")" width="12" height="12"/></th>
-        <th>#springMessage("property.count")</th>
+        <th>#springMessageText("property.count", "property.count")</th>
     </tr>
     <tr>
         <td>
-            #springMessage("NoProvider")
+            #springMessageText("noProvider", "noProvider")
         </td>
         <td>
-            <a herf="#" onclick="window.open('$rootContextPath.getURI("/sysinfo/dump/noProviders")')">#springMessage(
-                "property.count")
+            <a herf="#" onclick="window.open('$rootContextPath.getURI("/sysinfo/dump/noProviders")')">#springMessageText(
+                "property.count","property.count")
                 ($noProviderServices.size())</a>
         </td>
     </tr>
     <tr>
         <td>
-            #springMessage("services")
+            #springMessageText("services", "services")
         </td>
         <td>
-            <a herf="#" onclick="window.open('$rootContextPath.getURI("/sysinfo/dump/services")')">#springMessage(
-                "property.count")
+            <a herf="#" onclick="window.open('$rootContextPath.getURI("/sysinfo/dump/services")')">#springMessageText(
+                "property.count","property.count")
                 ($services.size())</a>
         </td>
     </tr>
     <tr>
         <td>
-            #springMessage("providers")
+            #springMessageText("providers", "providers")
         </td>
         <td>
-            <a herf="#" onclick="window.open('$rootContextPath.getURI("/sysinfo/dump/providers")')">#springMessage(
-                "property.count")
+            <a herf="#" onclick="window.open('$rootContextPath.getURI("/sysinfo/dump/providers")')">#springMessageText(
+                "property.count","property.count")
                 ($providers.size())</a>
         </td>
     </tr>
     <tr>
         <td>
-            #springMessage("consumers")
+            #springMessageText("consumers", "consumers")
         </td>
         <td>
-            <a herf="#" onclick="window.open('$rootContextPath.getURI("/sysinfo/dump/consumers")')">#springMessage(
-                "property.count")
+            <a herf="#" onclick="window.open('$rootContextPath.getURI("/sysinfo/dump/consumers")')">#springMessageText(
+                "property.count","property.count")
                 ($consumers.size())</a>
         </td>
     </tr>
     <tr>
         <td>
-            #springMessage("versions")
+            #springMessageText("versions", "versions")
         </td>
         <td>
             #set ($client=$providers.size()+$consumers.size())
-            <a herf="#" onclick="window.open('$rootContextPath.getURI("/sysinfo/dump/versions")')">#springMessage(
-                "property.count")($client)</a>
+            <a herf="#" onclick="window.open('$rootContextPath.getURI("/sysinfo/dump/versions")')">#springMessageText(
+                "property.count","property.count")($client)</a>
         </td>
     </tr>
 </table>
\ No newline at end of file
diff --git a/dubbo-admin/src/main/resources/templates/sysinfo/screen/envs/index.vm b/dubbo-admin/src/main/resources/templates/sysinfo/screen/envs/index.vm
index 055c57d..fb78d32 100644
--- a/dubbo-admin/src/main/resources/templates/sysinfo/screen/envs/index.vm
+++ b/dubbo-admin/src/main/resources/templates/sysinfo/screen/envs/index.vm
@@ -18,17 +18,17 @@
 <br/>
 <table cellpadding="0" cellspacing="0" class="list list_dubbo" id="table_o">
     <tr>
-        <th width="140">#springMessage("property.name"): <input type="text" style="width: 60px;"
+        <th width="140">#springMessageText("property.name", "property.name"): <input type="text" style="width: 60px;"
                                                            onkeyup="searchTable('table_o', 0, this.value);"
                                                            onclick="searchTable('table_o', 0, this.value);"/>&nbsp;<img
                 src="$rootContextPath.getURI("images/ico_search.png")" width="12" height="12"/></th>
-        <th>#springMessage("property.value"): <input type="text" onkeyup="searchTable('table_o', 1, this.value);"
+        <th>#springMessageText("property.value", "property.value"): <input type="text" onkeyup="searchTable('table_o', 1, this.value);"
                                                 onclick="searchTable('table_o', 1, this.value);"/>&nbsp;<img
                 src="$rootContextPath.getURI("images/ico_search.png")" width="12" height="12"/></th>
     </tr>
     #foreach($entry in $properties.entrySet())
         <tr>
-            <td>#springMessage($entry.key)</td>
+            <td>#springMessageText($entry.key, $entry.key)</td>
             <td>$entry.value</td>
         </tr>
     #end
diff --git a/dubbo-admin/src/main/resources/templates/sysinfo/screen/logs/index.vm b/dubbo-admin/src/main/resources/templates/sysinfo/screen/logs/index.vm
index a70cd5a..4a00104 100644
--- a/dubbo-admin/src/main/resources/templates/sysinfo/screen/logs/index.vm
+++ b/dubbo-admin/src/main/resources/templates/sysinfo/screen/logs/index.vm
@@ -24,10 +24,10 @@
             <option value="ERROR" #if($level == "ERROR")selected="selected"#end>ERROR</option>
             <option value="OFF" #if($level == "OFF")selected="selected"#end>OFF</option>
         </select>
-        <a href="#" onclick="showConfirm('#springMessage(
-            "logs.confirmChangeLogLevel")', '/sysinfo/logs/change?level=' + document.getElementById('logLevel').value);">
+        <a href="#" onclick="showConfirm('#springMessageText(
+            "logs.confirmChangeLogLevel","logs.confirmChangeLogLevel")', '/sysinfo/logs/change?level=' + document.getElementById('logLevel').value);">
             <img src="$rootContextPath.getURI("images/ico_enable.png")" width="12" height="12"/><span
-                class="ico_font">#springMessage("change.log.level")</span>
+                class="ico_font">#springMessageText("change.log.level", "change.log.level")</span>
         </a>
     #end
 </div>
@@ -35,8 +35,8 @@
 <table cellpadding="0" cellspacing="0" class="list list_dubbo" id="table_o">
     <tr>
         <th>
-            #springMessage("logs.file"): $name (#springMessage("logs.size"): $size / #springMessage(
-            "logs.modify"): $modified) #springMessage("logs.level"): $level
+            #springMessageText("logs.file", "logs.file"): $name (#springMessageText("logs.size", "logs.size"): $size / #springMessageText(
+            "logs.modify","logs.modify"): $modified) #springMessageText("logs.level", "logs.level"): $level
             : <input type="text" onkeyup="searchTable('table_o', 0, this.value);"
                      onclick="searchTable('table_o', 0, this.value);"/>&nbsp;<img
                 src="$rootContextPath.getURI("images/ico_search.png")" width="12" height="12"/>
diff --git a/dubbo-admin/src/main/resources/templates/sysinfo/screen/statuses/index.vm b/dubbo-admin/src/main/resources/templates/sysinfo/screen/statuses/index.vm
index 11623c7..d88d0bc 100644
--- a/dubbo-admin/src/main/resources/templates/sysinfo/screen/statuses/index.vm
+++ b/dubbo-admin/src/main/resources/templates/sysinfo/screen/statuses/index.vm
@@ -15,30 +15,30 @@
 #set($layout = "/templates/sysinfo/layout/default.vm")
 <div class="ico_btn">
     <a href="../status" target="_blank"><img src="$rootContextPath.getURI("images/ico_run.png")" width="12"
-                                             height="12"/><span class="ico_font">#springMessage("summary")</span></a>
+                                             height="12"/><span class="ico_font">#springMessageText("summary", "summary")</span></a>
 </div>
 <br/>
 <table cellpadding="0" cellspacing="0" class="list list_dubbo" id="table_o">
     <tr>
-        <th width="140">#springMessage("status.resourcename"): <input type="text" style="width: 60px;"
+        <th width="140">#springMessageText("status.resourcename", "status.resourcename"): <input type="text" style="width: 60px;"
                                                                  onkeyup="searchTable('table_o', 0, this.value);"
                                                                  onclick="searchTable('table_o', 0, this.value);"/>&nbsp;<img
                 src="$rootContextPath.getURI("images/ico_search.png")" width="12" height="12"/></th>
-        <th width="100">#springMessage("status.status"): <select onchange="searchTable('table_o', 1, this.value);"
+        <th width="100">#springMessageText("status.status", "status.status"): <select onchange="searchTable('table_o', 1, this.value);"
                                                             onclick="searchTable('table_o', 1, this.value);">
-            <option value="">#springMessage("all")</option>
-            <option value="#springMessage("status.OK")">#springMessage("status.OK")</option>
-            <option value="#springMessage("status.WARN")">#springMessage("status.WARN")</option>
-            <option value="#springMessage("status.ERROR")">#springMessage("status.ERROR")</option>
+            <option value="">#springMessageText("all", "all")</option>
+            <option value="#springMessageText("status.OK", "status.OK")">#springMessageText("status.OK", "status.OK")</option>
+            <option value="#springMessageText("status.WARN", "status.WARN")">#springMessageText("status.WARN", "status.WARN")</option>
+            <option value="#springMessageText("status.ERROR", "status.ERROR")">#springMessageText("status.ERROR", "status.ERROR")</option>
         </select></th>
-        <th width="50%">#springMessage("status.message"): <input type="text" onkeyup="searchTable('table_o', 2, this.value);"
+        <th width="50%">#springMessageText("status.message", "status.message"): <input type="text" onkeyup="searchTable('table_o', 2, this.value);"
                                                             onclick="searchTable('table_o', 2, this.value);"/>&nbsp;<img
                 src="$rootContextPath.getURI("images/ico_search.png")" width="12" height="12"/></th>
-        <th>#springMessage("status.description")</th>
+        <th>#springMessageText("status.description","status.description")</th>
     </tr>
     #foreach($status in $statusList.entrySet())
         <tr>
-            <td>#springMessage("status.${status.key}Status")</td>
+            <td>#springMessageText("status.${status.key}Status","status.${status.key}Status")</td>
             <td>
                 #if($status.value.level == "OK")
                 <font color="green">
@@ -49,11 +49,11 @@
                 #else
                 <font color="gray">
                 #end
-                #springMessage("status.$status.value.level")
+                #springMessageText("status.$status.value.level","status.$status.value.level")
             </font>
             </td>
             <td>$tool.unescape($status.value.message)</td>
-            <td>#springMessage("status.${status.key}StatusDesc")</td>
+            <td>#springMessageText("status.${status.key}StatusDesc", "status.${status.key}StatusDesc")</td>
         </tr>
     #end
 </table>
\ No newline at end of file
diff --git a/dubbo-admin/src/main/resources/templates/sysinfo/screen/versions/index.vm b/dubbo-admin/src/main/resources/templates/sysinfo/screen/versions/index.vm
index e985898..c253187 100644
--- a/dubbo-admin/src/main/resources/templates/sysinfo/screen/versions/index.vm
+++ b/dubbo-admin/src/main/resources/templates/sysinfo/screen/versions/index.vm
@@ -18,10 +18,10 @@
 <br/>
 <table cellpadding="0" cellspacing="0" class="list list_dubbo" id="table_o">
     <tr>
-        <th>#springMessage("versions"): <input type="text" onkeyup="searchTable('table_o', 0, this.value);"
+        <th>#springMessageText("versions", "versions"): <input type="text" onkeyup="searchTable('table_o', 0, this.value);"
                                           onclick="searchTable('table_o', 0, this.value);"/>&nbsp;<img
                 src="$rootContextPath.getURI("images/ico_search.png")" width="12" height="12"/></th>
-        <th>#springMessage("applications")</th>
+        <th>#springMessageText("applications", "applications")</th>
     </tr>
     #foreach($version in $versions.entrySet())
         <tr>
@@ -32,4 +32,4 @@
         </tr>
     #end
 </table>
-<div class="page">#springMessage("page.total")$versions.size()#springMessage("page.records")</div>
+<div class="page">#springMessageText("page.total", "page.total")$versions.size()#springMessageText("page.records", "page.records")</div>
diff --git a/dubbo-admin/src/main/resources/templates/sysinfo/screen/versions/show.vm b/dubbo-admin/src/main/resources/templates/sysinfo/screen/versions/show.vm
index d385601..f2f3589 100644
--- a/dubbo-admin/src/main/resources/templates/sysinfo/screen/versions/show.vm
+++ b/dubbo-admin/src/main/resources/templates/sysinfo/screen/versions/show.vm
@@ -15,12 +15,12 @@
 #set($layout = "/templates/sysinfo/layout/default.vm")
 <div class="ico_btn">
     <a href="../../../versions"><img src="$rootContextPath.getURI("images/ico_back.png")" width="12" height="12"/><span
-            class="ico_font">#springMessage("back")</span></a>
+            class="ico_font">#springMessageText("back", "back")</span></a>
 </div>
 <br/>
 <table cellpadding="0" cellspacing="0" class="list list_dubbo" id="table_o">
     <tr>
-        <th>#springMessage("applications"): <input type="text" onkeyup="searchTable('table_o', 0, this.value);"
+        <th>#springMessageText("applications", "applications"): <input type="text" onkeyup="searchTable('table_o', 0, this.value);"
                                               onclick="searchTable('table_o', 0, this.value);"/>&nbsp;<img
                 src="$rootContextPath.getURI("images/ico_search.png")" width="12" height="12"/></th>
     </tr>
@@ -35,4 +35,4 @@
         </tr>
     #end
 </table>
-<div class="page">#springMessage("page.total")$applications.size()#springMessage("page.records")</div>
+<div class="page">#springMessageText("page.total", "page.total")$applications.size()#springMessageText("page.records", "page.records")</div>