Author: thomas.heute(a)jboss.com
Date: 2010-08-24 11:05:06 -0400 (Tue, 24 Aug 2010)
New Revision: 3908
Modified:
epp/portal/branches/EPP_5_0_Branch/web/portal/src/main/webapp/WEB-INF/classes/locale/portal/webui_de.properties
epp/portal/branches/EPP_5_0_Branch/web/portal/src/main/webapp/WEB-INF/classes/locale/portal/webui_en.properties
epp/portal/branches/EPP_5_0_Branch/web/portal/src/main/webapp/WEB-INF/classes/locale/portal/webui_es.properties
epp/portal/branches/EPP_5_0_Branch/web/portal/src/main/webapp/WEB-INF/classes/locale/portal/webui_fr.properties
epp/portal/branches/EPP_5_0_Branch/web/portal/src/main/webapp/WEB-INF/classes/locale/portal/webui_it.properties
epp/portal/branches/EPP_5_0_Branch/web/portal/src/main/webapp/WEB-INF/classes/locale/portal/webui_ja.properties
epp/portal/branches/EPP_5_0_Branch/web/portal/src/main/webapp/WEB-INF/classes/locale/portal/webui_ne.properties
epp/portal/branches/EPP_5_0_Branch/web/portal/src/main/webapp/WEB-INF/classes/locale/portal/webui_zh.xml
epp/portal/branches/EPP_5_0_Branch/web/portal/src/main/webapp/WEB-INF/classes/locale/portal/webui_zh_TW.xml
epp/portal/branches/EPP_5_0_Branch/webui/eXo/src/main/java/org/exoplatform/webui/organization/UIUserProfileInputSet.java
epp/portal/branches/EPP_5_0_Branch/webui/portal/src/main/java/org/exoplatform/portal/webui/portal/UILanguageSelector.java
epp/portal/branches/EPP_5_0_Branch/webui/portal/src/main/java/org/exoplatform/portal/webui/portal/UIPortalForm.java
Log:
JBEPP-382: Show "Simplified Chinese" for zh_CN and "Traditional
Chinese" for zh_TW
Modified:
epp/portal/branches/EPP_5_0_Branch/web/portal/src/main/webapp/WEB-INF/classes/locale/portal/webui_de.properties
===================================================================
---
epp/portal/branches/EPP_5_0_Branch/web/portal/src/main/webapp/WEB-INF/classes/locale/portal/webui_de.properties 2010-08-24
14:47:20 UTC (rev 3907)
+++
epp/portal/branches/EPP_5_0_Branch/web/portal/src/main/webapp/WEB-INF/classes/locale/portal/webui_de.properties 2010-08-24
15:05:06 UTC (rev 3908)
@@ -1402,3 +1402,6 @@
UIGadget.tooltip.Unmaximize=Normalgr\u00f6\u00dfe
UIGadget.tooltip.editGadget=Gadget bearbeiten
UIGadget.tooltip.deleteGadget=Gadget l\u00f6schen
+
+Locale.zh_CN=Vereinfachtes Chinesisch
+Locale.zh_TW=Traditionelles Chinesisch
Modified:
epp/portal/branches/EPP_5_0_Branch/web/portal/src/main/webapp/WEB-INF/classes/locale/portal/webui_en.properties
===================================================================
---
epp/portal/branches/EPP_5_0_Branch/web/portal/src/main/webapp/WEB-INF/classes/locale/portal/webui_en.properties 2010-08-24
14:47:20 UTC (rev 3907)
+++
epp/portal/branches/EPP_5_0_Branch/web/portal/src/main/webapp/WEB-INF/classes/locale/portal/webui_en.properties 2010-08-24
15:05:06 UTC (rev 3908)
@@ -174,6 +174,7 @@
Asia.label=Asia
Language.left.title=Select a language
+
#############################################################################
# Change Skin #
#############################################################################
@@ -1418,3 +1419,15 @@
UIListPermissionSelectorPopup.title.ListPermissionSelector=Select Permission
UIUserToolBarDashboard.page.ClickAndType=Click & Type Page Name
+
+ #######################################################################
+ # org.exoplatform.webui.core.UIConfirmation #
+ #######################################################################
+
+UIConfirmation.title.exoMessages=Confirm message
+UIConfirmation.Close=Close
+
+
+ ### Locales
+Locale.zh_CN=Simplified Chinese
+Locale.zh_TW=Traditional Chinese
Modified:
epp/portal/branches/EPP_5_0_Branch/web/portal/src/main/webapp/WEB-INF/classes/locale/portal/webui_es.properties
===================================================================
---
epp/portal/branches/EPP_5_0_Branch/web/portal/src/main/webapp/WEB-INF/classes/locale/portal/webui_es.properties 2010-08-24
14:47:20 UTC (rev 3907)
+++
epp/portal/branches/EPP_5_0_Branch/web/portal/src/main/webapp/WEB-INF/classes/locale/portal/webui_es.properties 2010-08-24
15:05:06 UTC (rev 3908)
@@ -1354,3 +1354,7 @@
UIGadget.tooltip.Unmaximize=Restaurar
UIGadget.tooltip.editGadget=Editar Gadget
UIGadget.tooltip.deleteGadget=Borrar Gadget
+
+Locale.zh_CN=Chino simplificado
+Locale.zh_TW=Chino tradicional
+
Modified:
epp/portal/branches/EPP_5_0_Branch/web/portal/src/main/webapp/WEB-INF/classes/locale/portal/webui_fr.properties
===================================================================
---
epp/portal/branches/EPP_5_0_Branch/web/portal/src/main/webapp/WEB-INF/classes/locale/portal/webui_fr.properties 2010-08-24
14:47:20 UTC (rev 3907)
+++
epp/portal/branches/EPP_5_0_Branch/web/portal/src/main/webapp/WEB-INF/classes/locale/portal/webui_fr.properties 2010-08-24
15:05:06 UTC (rev 3908)
@@ -1324,3 +1324,7 @@
UIGadget.tooltip.deleteGadget=Supprimer la Gadget
UIUserToolBarDashboard.page.ClickAndType=Cliquez pour renommer
+
+Locale.zh_CN=Chinois simplifié
+Locale.zh_TW=Chinois traditionnel
+
Modified:
epp/portal/branches/EPP_5_0_Branch/web/portal/src/main/webapp/WEB-INF/classes/locale/portal/webui_it.properties
===================================================================
---
epp/portal/branches/EPP_5_0_Branch/web/portal/src/main/webapp/WEB-INF/classes/locale/portal/webui_it.properties 2010-08-24
14:47:20 UTC (rev 3907)
+++
epp/portal/branches/EPP_5_0_Branch/web/portal/src/main/webapp/WEB-INF/classes/locale/portal/webui_it.properties 2010-08-24
15:05:06 UTC (rev 3908)
@@ -1410,3 +1410,6 @@
UIWsrp.consumer.grid.action.deactivate.fail=Il Consumer deve essere Attivo per poter
essere Disattivato.
UIListPermissionSelectorPopup.title.ListPermissionSelector=Seleziona il Permesso
+
+Locale.zh_CN=Cinese semplificato
+Locale.zh_TW=Cinese tradizionale
Modified:
epp/portal/branches/EPP_5_0_Branch/web/portal/src/main/webapp/WEB-INF/classes/locale/portal/webui_ja.properties
===================================================================
---
epp/portal/branches/EPP_5_0_Branch/web/portal/src/main/webapp/WEB-INF/classes/locale/portal/webui_ja.properties 2010-08-24
14:47:20 UTC (rev 3907)
+++
epp/portal/branches/EPP_5_0_Branch/web/portal/src/main/webapp/WEB-INF/classes/locale/portal/webui_ja.properties 2010-08-24
15:05:06 UTC (rev 3908)
@@ -1401,6 +1401,7 @@
UIGadget.tooltip.editGadget=\u30ac\u30b8\u30a7\u30c3\u30c8\u306e\u7de8\u96c6
UIGadget.tooltip.deleteGadget=\u30ac\u30b8\u30a7\u30c3\u30c8\u306e\u524a\u9664
+<<<<<<< .working
############################################################################
# org.exoplatform.wsrp.webui.component.UIWsrp #
############################################################################
@@ -1420,3 +1421,5 @@
UIWsrp.consumer.grid.action.deactivate.fail=\u30b3\u30f3\u30b7\u30e5\u30fc\u30de\u30fc\u3092\u30c7\u30a3\u30a2\u30af\u30c6\u30a3\u30d9\u30fc\u30c8\u3059\u308b\u305f\u3081\u306b\u306f\u30a2\u30af\u30c6\u30a3\u30d6\u3067\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002
+Locale.zh_CN=\u7c21\u4f53\u5b57\u4e2d\u56fd\u8a9e
+Locale.zh_TW=\u7e41\u4f53\u5b57\u4e2d\u56fd\u8a9e
Modified:
epp/portal/branches/EPP_5_0_Branch/web/portal/src/main/webapp/WEB-INF/classes/locale/portal/webui_ne.properties
===================================================================
---
epp/portal/branches/EPP_5_0_Branch/web/portal/src/main/webapp/WEB-INF/classes/locale/portal/webui_ne.properties 2010-08-24
14:47:20 UTC (rev 3907)
+++
epp/portal/branches/EPP_5_0_Branch/web/portal/src/main/webapp/WEB-INF/classes/locale/portal/webui_ne.properties 2010-08-24
15:05:06 UTC (rev 3908)
@@ -1396,3 +1396,5 @@
UIGadget.tooltip.Unmaximize=\u0930\u093f\u0938\u094d\u091f\u094b\u0930
\u0921\u093e\u0909\u0928
UIGadget.tooltip.editGadget=\u0917\u094d\u092f\u093e\u091c\u0947\u091f
\u092a\u0930\u093f\u092e\u093e\u0930\u094d\u091c\u0928
\u0917\u0930\u094d\u0928\u0941\u0939\u094b\u0938\u094d
UIGadget.tooltip.deleteGadget=\u0917\u094d\u092f\u093e\u091c\u0947\u091f
\u092e\u0947\u091f\u093e\u0909\u0928\u0941\u0939\u094b\u0938\u094d
+
+Locale.ne=\u0928\u0947\u092a\u093e\u0932\u0940
Modified:
epp/portal/branches/EPP_5_0_Branch/web/portal/src/main/webapp/WEB-INF/classes/locale/portal/webui_zh.xml
===================================================================
---
epp/portal/branches/EPP_5_0_Branch/web/portal/src/main/webapp/WEB-INF/classes/locale/portal/webui_zh.xml 2010-08-24
14:47:20 UTC (rev 3907)
+++
epp/portal/branches/EPP_5_0_Branch/web/portal/src/main/webapp/WEB-INF/classes/locale/portal/webui_zh.xml 2010-08-24
15:05:06 UTC (rev 3908)
@@ -1891,4 +1891,8 @@
<deleteGadget>删除小工具</deleteGadget>
</tooltip>
</UIGadget>
+ <Locale>
+ <zh_CN>简体中文</zh_CN>
+ <zh_TW>簡體中文</zh_TW>
+ </Locale>
</bundle>
Modified:
epp/portal/branches/EPP_5_0_Branch/web/portal/src/main/webapp/WEB-INF/classes/locale/portal/webui_zh_TW.xml
===================================================================
---
epp/portal/branches/EPP_5_0_Branch/web/portal/src/main/webapp/WEB-INF/classes/locale/portal/webui_zh_TW.xml 2010-08-24
14:47:20 UTC (rev 3907)
+++
epp/portal/branches/EPP_5_0_Branch/web/portal/src/main/webapp/WEB-INF/classes/locale/portal/webui_zh_TW.xml 2010-08-24
15:05:06 UTC (rev 3908)
@@ -2068,4 +2068,9 @@
<deleteGadget>刪除小工具</deleteGadget>
</tooltip>
</UIGadget>
+
+ <Locale>
+ <zh_CN>繁体中文</zh_CN>
+ <zh_TW>正體中文</zh_TW>
+ </Locale>
</bundle>
Modified:
epp/portal/branches/EPP_5_0_Branch/webui/eXo/src/main/java/org/exoplatform/webui/organization/UIUserProfileInputSet.java
===================================================================
---
epp/portal/branches/EPP_5_0_Branch/webui/eXo/src/main/java/org/exoplatform/webui/organization/UIUserProfileInputSet.java 2010-08-24
14:47:20 UTC (rev 3907)
+++
epp/portal/branches/EPP_5_0_Branch/webui/eXo/src/main/java/org/exoplatform/webui/organization/UIUserProfileInputSet.java 2010-08-24
15:05:06 UTC (rev 3908)
@@ -20,11 +20,15 @@
package org.exoplatform.webui.organization;
import org.exoplatform.commons.serialization.api.annotations.Serialized;
+import org.exoplatform.container.ExoContainer;
+import org.exoplatform.container.ExoContainerContext;
+import org.exoplatform.portal.Constants;
import org.exoplatform.services.organization.OrganizationService;
import org.exoplatform.services.organization.UserProfile;
import org.exoplatform.services.organization.UserProfileHandler;
import org.exoplatform.services.resources.LocaleConfig;
import org.exoplatform.services.resources.LocaleConfigService;
+import org.exoplatform.services.resources.ResourceBundleService;
import org.exoplatform.web.application.ApplicationMessage;
import org.exoplatform.webui.application.WebuiRequestContext;
import org.exoplatform.webui.application.portlet.PortletRequestContext;
@@ -41,6 +45,7 @@
import java.util.Iterator;
import java.util.List;
import java.util.Locale;
+import java.util.ResourceBundle;
/**
* Created by The eXo Platform SARL Author : Dang Van Minh minhdv81(a)yahoo.com
@@ -140,7 +145,6 @@
LocaleConfigService localeService =
getApplicationComponent(LocaleConfigService.class);
Locale currentLocale =
((PortletRequestContext)WebuiRequestContext.getCurrentInstance()).getLocale();
Iterator<LocaleConfig> i = localeService.getLocalConfigs().iterator();
- String displayLanguage = null;
String displayName = null;
String language = null;
String country = null;
@@ -149,18 +153,31 @@
{
LocaleConfig config = i.next();
Locale locale = config.getLocale();
- displayName = locale.getDisplayName(currentLocale);
+ displayName = capitalizeFirstLetter(locale.getDisplayName(currentLocale));
+
language = locale.getLanguage();
country = locale.getCountry();
if (country != null && country.length() > 0)
{
- displayLanguage = displayName + " (" +
locale.getDisplayCountry(currentLocale) + ")";
}
- else
+
+
+ ResourceBundle localeResourceBundle;
+ try
{
- displayLanguage = displayName;
+ localeResourceBundle = getResourceBundle(currentLocale);
+ String key = "Locale." + language;
+ if (localeResourceBundle.containsKey(key))
+ {
+ displayName = localeResourceBundle.getString(key);
+ }
}
- option = new SelectItemOption<String>(displayLanguage, language,
displayName);
+ catch (Exception e)
+ {
+ // ignore, use default displayName
+ }
+
+ option = new SelectItemOption<String>(displayName, language);
if (language.equals(selectedLang))
{
option.setSelected(true);
@@ -240,5 +257,28 @@
}
uiApp.addMessage(new
ApplicationMessage("UIUserProfileInputSet.msg.sucsesful.update.userprofile",
args));
}
+
+ private String capitalizeFirstLetter(String word)
+ {
+ if (word == null)
+ {
+ return null;
+ }
+ if (word.length() == 0)
+ {
+ return word;
+ }
+ StringBuilder result = new StringBuilder(word);
+ result.replace(0, 1, result.substring(0, 1).toUpperCase());
+ return result.toString();
+ }
+ private ResourceBundle getResourceBundle(Locale locale) throws Exception
+ {
+ ExoContainer appContainer = ExoContainerContext.getCurrentContainer();
+ ResourceBundleService service =
+
(ResourceBundleService)appContainer.getComponentInstanceOfType(ResourceBundleService.class);
+ ResourceBundle res = service.getResourceBundle("locale.portal.webui",
locale);
+ return res;
+ }
}
Modified:
epp/portal/branches/EPP_5_0_Branch/webui/portal/src/main/java/org/exoplatform/portal/webui/portal/UILanguageSelector.java
===================================================================
---
epp/portal/branches/EPP_5_0_Branch/webui/portal/src/main/java/org/exoplatform/portal/webui/portal/UILanguageSelector.java 2010-08-24
14:47:20 UTC (rev 3907)
+++
epp/portal/branches/EPP_5_0_Branch/webui/portal/src/main/java/org/exoplatform/portal/webui/portal/UILanguageSelector.java 2010-08-24
15:05:06 UTC (rev 3908)
@@ -19,6 +19,12 @@
package org.exoplatform.portal.webui.portal;
+import org.exoplatform.container.ExoContainer;
+import org.exoplatform.container.ExoContainerContext;
+import org.exoplatform.portal.Constants;
+import org.exoplatform.portal.config.model.PageNavigation;
+import org.exoplatform.portal.config.model.PageNode;
+import org.exoplatform.portal.config.model.PortalConfig;
import org.exoplatform.portal.webui.util.Util;
import org.exoplatform.portal.webui.workspace.UIMaskWorkspace;
import org.exoplatform.portal.webui.workspace.UIPortalApplication;
@@ -27,6 +33,9 @@
import org.exoplatform.services.organization.UserProfileHandler;
import org.exoplatform.services.resources.LocaleConfig;
import org.exoplatform.services.resources.LocaleConfigService;
+import org.exoplatform.services.resources.ResourceBundleManager;
+import org.exoplatform.services.resources.ResourceBundleService;
+import org.exoplatform.webui.application.WebuiRequestContext;
import org.exoplatform.webui.config.annotation.ComponentConfig;
import org.exoplatform.webui.config.annotation.EventConfig;
import org.exoplatform.webui.core.UIContainer;
@@ -41,6 +50,7 @@
import java.util.Comparator;
import java.util.List;
import java.util.Locale;
+import java.util.ResourceBundle;
@ComponentConfig(template =
"system:/groovy/portal/webui/portal/UILanguageSelector.gtmpl", events = {
@EventConfig(listeners = UILanguageSelector.SaveActionListener.class),
@@ -62,16 +72,57 @@
{
LocaleConfig localeConfig = (LocaleConfig)object;
Locale locale = localeConfig.getLocale();
- String displayName =
capitalizeFirstLetter(locale.getDisplayLanguage(currentLocale));
String lang = locale.getLanguage();
String country = locale.getCountry();
- String localedName = capitalizeFirstLetter(locale.getDisplayLanguage(locale));;
+ ResourceBundle currentLocaleResourceBundle = getResourceBundle(currentLocale);
+ ResourceBundle localeResourceBundle = getResourceBundle(locale);
+
+ String key = "Locale." + lang;
+
+ String displayName = null;
+ if (currentLocaleResourceBundle.containsKey(key))
+ {
+ displayName = currentLocaleResourceBundle.getString(key);
+ }
+ else
+ {
+ displayName =
capitalizeFirstLetter(locale.getDisplayLanguage(currentLocale));
+ }
+
+ String localedName = null;
+ if (localeResourceBundle.containsKey(key))
+ {
+ localedName = localeResourceBundle.getString(key);
+ }
+ else
+ {
+ localedName = capitalizeFirstLetter(locale.getDisplayLanguage(locale));
+ }
+
+
if (country != null && country.length() > 0)
{
- displayName = capitalizeFirstLetter(locale.getDisplayLanguage(currentLocale)) +
" - " + capitalizeFirstLetter(locale.getDisplayCountry(currentLocale));
- localedName = capitalizeFirstLetter(locale.getDisplayLanguage(locale)) +
" - " + capitalizeFirstLetter(locale.getDisplayCountry(locale));
lang = lang + "_" + country;
+ key = "Locale." + lang;
+
+ if (currentLocaleResourceBundle.containsKey(key))
+ {
+ displayName = currentLocaleResourceBundle.getString(key);
+ }
+ else
+ {
+ displayName =
capitalizeFirstLetter(locale.getDisplayLanguage(currentLocale)) + " - " +
capitalizeFirstLetter(locale.getDisplayCountry(currentLocale));
+ }
+
+ if (localeResourceBundle.containsKey(key))
+ {
+ localedName = localeResourceBundle.getString(key);
+ }
+ else
+ {
+ localedName = capitalizeFirstLetter(locale.getDisplayLanguage(locale)) +
" - " + capitalizeFirstLetter(locale.getDisplayCountry(locale));
+ }
}
if (localedName == null || localedName.length() == 0)
@@ -158,4 +209,15 @@
result.replace(0, 1, result.substring(0, 1).toUpperCase());
return result.toString();
}
-}
\ No newline at end of file
+
+ private ResourceBundle getResourceBundle(Locale locale) throws Exception
+ {
+ ExoContainer appContainer = ExoContainerContext.getCurrentContainer();
+ ResourceBundleService service =
+
(ResourceBundleService)appContainer.getComponentInstanceOfType(ResourceBundleService.class);
+ ResourceBundle res = service.getResourceBundle("locale.portal.webui",
locale);
+ return res;
+ }
+
+
+}
Modified:
epp/portal/branches/EPP_5_0_Branch/webui/portal/src/main/java/org/exoplatform/portal/webui/portal/UIPortalForm.java
===================================================================
---
epp/portal/branches/EPP_5_0_Branch/webui/portal/src/main/java/org/exoplatform/portal/webui/portal/UIPortalForm.java 2010-08-24
14:47:20 UTC (rev 3907)
+++
epp/portal/branches/EPP_5_0_Branch/webui/portal/src/main/java/org/exoplatform/portal/webui/portal/UIPortalForm.java 2010-08-24
15:05:06 UTC (rev 3908)
@@ -19,6 +19,8 @@
package org.exoplatform.portal.webui.portal;
+import org.exoplatform.container.ExoContainer;
+import org.exoplatform.container.ExoContainerContext;
import org.exoplatform.portal.application.PortalRequestContext;
import org.exoplatform.portal.config.DataStorage;
import org.exoplatform.portal.config.UserPortalConfig;
@@ -37,6 +39,7 @@
import org.exoplatform.services.organization.OrganizationService;
import org.exoplatform.services.resources.LocaleConfig;
import org.exoplatform.services.resources.LocaleConfigService;
+import org.exoplatform.services.resources.ResourceBundleService;
import org.exoplatform.web.application.ApplicationMessage;
import org.exoplatform.webui.application.WebuiRequestContext;
import org.exoplatform.webui.config.InitParams;
@@ -71,6 +74,7 @@
import java.util.Iterator;
import java.util.List;
import java.util.Locale;
+import java.util.ResourceBundle;
@ComponentConfigs({
@ComponentConfig(lifecycle = UIFormLifecycle.class, template =
"system:/groovy/webui/form/UIFormTabPane.gtmpl", events = {
@@ -187,13 +191,27 @@
Collection<?> listLocaleConfig = localeConfigService.getLocalConfigs();
LocaleConfig defaultLocale = localeConfigService.getDefaultLocaleConfig();
String defaultLanguage = defaultLocale.getLanguage();
- Locale currentLocate = Util.getPortalRequestContext().getLocale();
+ Locale currentLocale = Util.getPortalRequestContext().getLocale();
Iterator<?> iterator = listLocaleConfig.iterator();
while (iterator.hasNext())
{
LocaleConfig localeConfig = (LocaleConfig)iterator.next();
+ String displayName =
capitalizeFirstLetter(localeConfig.getLocale().getDisplayName(currentLocale));
+ ResourceBundle localeResourceBundle = getResourceBundle(currentLocale);
+
+ String key = "Locale." + localeConfig.getLocale().getLanguage();
+ if (localeConfig.getLocale().getCountry() != null)
+ {
+ key += "_" + localeConfig.getLocale().getCountry();
+ }
+
+ if (localeResourceBundle.containsKey(key))
+ {
+ displayName = localeResourceBundle.getString(key);
+ }
+
SelectItemOption<String> option =
- new
SelectItemOption<String>(localeConfig.getLocale().getDisplayName(currentLocate),
localeConfig
+ new SelectItemOption<String>(displayName, localeConfig
.getLanguage());
if (defaultLanguage.equals(localeConfig.getLanguage()))
{
@@ -372,4 +390,27 @@
}
}
+ private String capitalizeFirstLetter(String word)
+ {
+ if (word == null)
+ {
+ return null;
+ }
+ if (word.length() == 0)
+ {
+ return word;
+ }
+ StringBuilder result = new StringBuilder(word);
+ result.replace(0, 1, result.substring(0, 1).toUpperCase());
+ return result.toString();
+ }
+
+ private ResourceBundle getResourceBundle(Locale locale) throws Exception
+ {
+ ExoContainer appContainer = ExoContainerContext.getCurrentContainer();
+ ResourceBundleService service =
+
(ResourceBundleService)appContainer.getComponentInstanceOfType(ResourceBundleService.class);
+ ResourceBundle res = service.getResourceBundle("locale.portal.webui",
locale);
+ return res;
+ }
}