private boolean _save(ActionRequest req, ActionResponse res, PortletConfig config, ActionForm form)
throws Exception {
Pattern p = Pattern.compile("[A-Za-z0-9-_\\.]+");
Language lang = (Language) req.getAttribute(WebKeys.LANGUAGE_MANAGER_LANGUAGE);
int numberOfKeys = Integer.parseInt(req.getParameter("keys"));
Map<String, String> generalKeys = new HashMap<String, String>();
Map<String, String> specificKeys = new HashMap<String, String>();
Set<String> toDeleteKeys = new HashSet<String>();
for(int i = 0; i < numberOfKeys; i++) {
String remove = req.getParameter(lang.getLanguageCode() + "-" + i + "-remove");
String key = req.getParameter(lang.getLanguageCode() + "-" + i + "-key");
if(!p.matcher(key).matches()) {
SessionMessages.add(req, "message", "message.languagemanager.key.error");
return false;
}
String general = req.getParameter(lang.getLanguageCode() + "-general-" + i + "-value");
String specific = req.getParameter(lang.getLanguageCode() + "-" + lang.getCountryCode() + "-" + i + "-value");
if(remove == null) {
generalKeys.put(key, general);
specificKeys.put(key, specific);
} else {
toDeleteKeys.add(key);