From 85128ab5d34b962b2de422046fc76cc09e861186 Mon Sep 17 00:00:00 2001
From: srosse <none@none>
Date: Mon, 2 Mar 2015 14:19:42 +0100
Subject: [PATCH] no-jira: add a property handler with the country code and
 translation

---
 .../CountryCodePropertyHandler.java           | 440 ++++++++++++++++++
 .../_i18n/LocalStrings_de.properties          | 250 +++++++++-
 .../_i18n/LocalStrings_en.properties          | 250 +++++++++-
 .../_i18n/LocalStrings_fr.properties          | 240 +++++++++-
 .../_i18n/LocalStrings_it.properties          | 238 +++++++++-
 .../userPropertriesHandlersContext.xml        |   6 +
 6 files changed, 1420 insertions(+), 4 deletions(-)
 create mode 100644 src/main/java/org/olat/user/propertyhandlers/CountryCodePropertyHandler.java

diff --git a/src/main/java/org/olat/user/propertyhandlers/CountryCodePropertyHandler.java b/src/main/java/org/olat/user/propertyhandlers/CountryCodePropertyHandler.java
new file mode 100644
index 00000000000..763e984ac03
--- /dev/null
+++ b/src/main/java/org/olat/user/propertyhandlers/CountryCodePropertyHandler.java
@@ -0,0 +1,440 @@
+/**
+ * <a href="http://www.openolat.org">
+ * OpenOLAT - Online Learning and Training</a><br>
+ * <p>
+ * Licensed under the Apache License, Version 2.0 (the "License"); <br>
+ * you may not use this file except in compliance with the License.<br>
+ * You may obtain a copy of the License at the
+ * <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache homepage</a>
+ * <p>
+ * Unless required by applicable law or agreed to in writing,<br>
+ * software distributed under the License is distributed on an "AS IS" BASIS, <br>
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br>
+ * See the License for the specific language governing permissions and <br>
+ * limitations under the License.
+ * <p>
+ * Initial code contributed and copyrighted by<br>
+ * frentix GmbH, http://www.frentix.com
+ * <p>
+ */
+package org.olat.user.propertyhandlers;
+
+import java.util.Locale;
+import java.util.Map;
+
+import org.olat.core.gui.components.form.ValidationError;
+import org.olat.core.gui.components.form.flexible.FormItem;
+import org.olat.core.gui.components.form.flexible.FormItemContainer;
+import org.olat.core.gui.components.form.flexible.FormUIFactory;
+import org.olat.core.gui.components.form.flexible.elements.SingleSelection;
+import org.olat.core.gui.translator.Translator;
+import org.olat.core.id.User;
+import org.olat.core.util.Util;
+import org.olat.user.AbstractUserPropertyHandler;
+import org.olat.user.UserManager;
+
+/**
+ * 
+ * Initial date: 02.03.2015<br>
+ * @author srosse, stephane.rosse@frentix.com, http://www.frentix.com
+ *
+ */
+public class CountryCodePropertyHandler extends AbstractUserPropertyHandler {
+	
+	private static final String KEY_PREFIX = "country.code.";
+	private static final String NO_SEL_KEY = "nocountry.doselect";
+	
+	private static final String[] countryKeys = {
+		"country.code.AL",
+		"country.code.DZ",
+		"country.code.AS",
+		"country.code.AD",
+		"country.code.AO",
+		"country.code.AI",
+		"country.code.AQ",
+		"country.code.AG",
+		"country.code.AR",
+		"country.code.AM",
+		"country.code.AW",
+		"country.code.AU",
+		"country.code.AT",
+		"country.code.AZ",
+		"country.code.BS",
+		"country.code.BH",
+		"country.code.BD",
+		"country.code.BB",
+		"country.code.BY",
+		"country.code.BE",
+		"country.code.BZ",
+		"country.code.BJ",
+		"country.code.BM",
+		"country.code.BT",
+		"country.code.BO",
+		"country.code.BQ",
+		"country.code.BA",
+		"country.code.BW",
+		"country.code.BV",
+		"country.code.BR",
+		"country.code.IO",
+		"country.code.BN",
+		"country.code.BG",
+		"country.code.BF",
+		"country.code.BI",
+		"country.code.KH",
+		"country.code.CM",
+		"country.code.CA",
+		"country.code.CV",
+		"country.code.KY",
+		"country.code.CF",
+		"country.code.TD",
+		"country.code.CL",
+		"country.code.CN",
+		"country.code.CX",
+		"country.code.CC",
+		"country.code.CO",
+		"country.code.KM",
+		"country.code.CG",
+		"country.code.CD",
+		"country.code.CK",
+		"country.code.CR",
+		"country.code.CI",
+		"country.code.HR",
+		"country.code.CU",
+		"country.code.CW",
+		"country.code.CY",
+		"country.code.CZ",
+		"country.code.DK",
+		"country.code.DJ",
+		"country.code.DM",
+		"country.code.DO",
+		"country.code.EC",
+		"country.code.EG",
+		"country.code.SV",
+		"country.code.GQ",
+		"country.code.ER",
+		"country.code.EE",
+		"country.code.ET",
+		"country.code.FK",
+		"country.code.FO",
+		"country.code.FJ",
+		"country.code.FI",
+		"country.code.FR",
+		"country.code.GF",
+		"country.code.PF",
+		"country.code.TF",
+		"country.code.GA",
+		"country.code.GM",
+		"country.code.GE",
+		"country.code.DE",
+		"country.code.GH",
+		"country.code.GI",
+		"country.code.GR",
+		"country.code.GL",
+		"country.code.GD",
+		"country.code.GP",
+		"country.code.GU",
+		"country.code.GT",
+		"country.code.GG",
+		"country.code.GN",
+		"country.code.GW",
+		"country.code.GY",
+		"country.code.HT",
+		"country.code.HM",
+		"country.code.VA",
+		"country.code.HN",
+		"country.code.HK",
+		"country.code.HU",
+		"country.code.IS",
+		"country.code.IN",
+		"country.code.ID",
+		"country.code.IR",
+		"country.code.IQ",
+		"country.code.IE",
+		"country.code.IM",
+		"country.code.IL",
+		"country.code.IT",
+		"country.code.JM",
+		"country.code.JP",
+		"country.code.JE",
+		"country.code.JO",
+		"country.code.KZ",
+		"country.code.KE",
+		"country.code.KI",
+		"country.code.KP",
+		"country.code.KR",
+		"country.code.KW",
+		"country.code.KG",
+		"country.code.LA",
+		"country.code.LV",
+		"country.code.LB",
+		"country.code.LS",
+		"country.code.LR",
+		"country.code.LY",
+		"country.code.LI",
+		"country.code.LT",
+		"country.code.LU",
+		"country.code.MO",
+		"country.code.MK",
+		"country.code.MG",
+		"country.code.MW",
+		"country.code.MY",
+		"country.code.MV",
+		"country.code.ML",
+		"country.code.MT",
+		"country.code.MH",
+		"country.code.MQ",
+		"country.code.MR",
+		"country.code.MU",
+		"country.code.YT",
+		"country.code.MX",
+		"country.code.FM",
+		"country.code.MD",
+		"country.code.MC",
+		"country.code.MN",
+		"country.code.ME",
+		"country.code.MS",
+		"country.code.MA",
+		"country.code.MZ",
+		"country.code.MM",
+		"country.code.NA",
+		"country.code.NR",
+		"country.code.NP",
+		"country.code.NL",
+		"country.code.NC",
+		"country.code.NZ",
+		"country.code.NI",
+		"country.code.NE",
+		"country.code.NG",
+		"country.code.NU",
+		"country.code.NF",
+		"country.code.MP",
+		"country.code.NO",
+		"country.code.OM",
+		"country.code.PK",
+		"country.code.PW",
+		"country.code.PS",
+		"country.code.PA",
+		"country.code.PG",
+		"country.code.PY",
+		"country.code.PE",
+		"country.code.PH",
+		"country.code.PN",
+		"country.code.PL",
+		"country.code.PT",
+		"country.code.PR",
+		"country.code.QA",
+		"country.code.RE",
+		"country.code.RO",
+		"country.code.RU",
+		"country.code.RW",
+		"country.code.BL",
+		"country.code.SH",
+		"country.code.KN",
+		"country.code.LC",
+		"country.code.MF",
+		"country.code.PM",
+		"country.code.VC",
+		"country.code.WS",
+		"country.code.SM",
+		"country.code.ST",
+		"country.code.SA",
+		"country.code.SN",
+		"country.code.RS",
+		"country.code.SC",
+		"country.code.SL",
+		"country.code.SG",
+		"country.code.SX",
+		"country.code.SK",
+		"country.code.SI",
+		"country.code.SB",
+		"country.code.SO",
+		"country.code.ZA",
+		"country.code.GS",
+		"country.code.ES",
+		"country.code.LK",
+		"country.code.SD",
+		"country.code.SR",
+		"country.code.SJ",
+		"country.code.SZ",
+		"country.code.SE",
+		"country.code.CH",
+		"country.code.SY",
+		"country.code.TW",
+		"country.code.TJ",
+		"country.code.TZ",
+		"country.code.TH",
+		"country.code.TL",
+		"country.code.TG",
+		"country.code.TK",
+		"country.code.TO",
+		"country.code.TT",
+		"country.code.TN",
+		"country.code.TR",
+		"country.code.TM",
+		"country.code.TC",
+		"country.code.TV",
+		"country.code.UG",
+		"country.code.UA",
+		"country.code.AE",
+		"country.code.GB",
+		"country.code.US",
+		"country.code.UM",
+		"country.code.UY",
+		"country.code.UZ",
+		"country.code.VU",
+		"country.code.VE",
+		"country.code.VN",
+		"country.code.VG",
+		"country.code.VI",
+		"country.code.WF",
+		"country.code.EH",
+		"country.code.YE",
+		"country.code.ZM",
+		"country.code.ZW",
+	};
+
+	/**
+	 * returns a String-Array holding all selection-keys
+	 * (the options in a drop-down)
+	 * 
+	 * @return
+	 */
+	public String[] getSelectionKeys() {
+		return countryKeys;
+	}
+
+	/**
+	 * 
+	 * @see org.olat.user.propertyhandlers.UserPropertyHandler#addFormItem(java.util.Locale,
+	 *      org.olat.core.id.User, java.lang.String, boolean,
+	 *      org.olat.core.gui.components.form.flexible.FormItemContainer)
+	 */
+	@Override
+	public FormItem addFormItem(Locale locale, User user, String usageIdentifyer, boolean isAdministrativeUser,
+			FormItemContainer formItemContainer) {
+
+		String[] allKeys = new String[countryKeys.length + 1];
+		System.arraycopy(countryKeys, 0, allKeys, 1, countryKeys.length);
+		allKeys[0] = NO_SEL_KEY;
+
+		SingleSelection sse = FormUIFactory.getInstance().addDropdownSingleselect(getName(), i18nFormElementLabelKey(), formItemContainer,
+				allKeys, getTranslatedValues(allKeys, locale), null);
+		// make pre-selection of the formItem
+		String internalValue = getInternalValue(user);
+		if(internalValue == null || internalValue.isEmpty() || NO_SEL_KEY.equals(internalValue)) {
+			sse.select(NO_SEL_KEY, true);
+		} else if(isValidValue(user, internalValue, null, null) && internalValue != null) {
+			sse.select("country.code." + internalValue, true);
+		}
+
+		// enable/disable according to settings
+		UserManager um = UserManager.getInstance();
+		if (um.isUserViewReadOnly(usageIdentifyer, this) && !isAdministrativeUser) {
+			sse.setEnabled(false);
+		}
+		if (um.isMandatoryUserProperty(usageIdentifyer, this)) {
+			sse.setMandatory(true);
+		}
+		
+		return sse;
+	}
+
+	/**
+	 * @see org.olat.user.AbstractUserPropertyHandler#getInternalValue(org.olat.core.id.User)
+	 */
+	@Override
+	public String getInternalValue(User user) {
+		String value = super.getInternalValue(user);
+		return (value == null ? NO_SEL_KEY : value);
+	}
+
+	@Override
+	public void updateUserFromFormItem(User user, FormItem formItem) {
+		String internalValue = getStringValue(formItem);
+		setInternalValue(user, internalValue);
+	}
+
+	@Override
+	public boolean isValid(User user, FormItem formItem, Map<String,String> formContext) {
+		if (formItem.isMandatory()) {
+			SingleSelection ssel = (SingleSelection) formItem;
+			if (ssel.getSelectedKey().equals(NO_SEL_KEY)) {
+				ssel.setErrorKey("form.legende.mandatory", null);
+				return false;
+			}
+		}
+		return true;
+	}
+
+	@Override
+	public boolean isValidValue(User user, String value, ValidationError validationError, Locale locale) {
+		boolean allOk = false;
+		if (value == null || value.equals(NO_SEL_KEY)) {
+			allOk = true;
+		} else {
+			if(!value.startsWith(KEY_PREFIX)) {
+				value = KEY_PREFIX + value;
+			}
+			
+			for (int i=countryKeys.length; i-->0; ) {
+				if (countryKeys[i].equals(value)) {
+					allOk = true;
+					break;
+				}
+			}
+		}
+		return allOk;
+	}
+
+	@Override
+	public String getStringValue(FormItem formItem) {
+		if (formItem instanceof SingleSelection) {
+			SingleSelection sel = (SingleSelection)formItem;
+			if(sel.isOneSelected()) {
+				String value = sel.getSelectedKey();
+				if(value.startsWith(KEY_PREFIX)) {
+					value = value.substring(KEY_PREFIX.length());
+				} else if(value.equals(NO_SEL_KEY)) {
+					value = null;
+				}
+				return value;
+			} else {
+				return null;
+			}
+		}
+		return null;
+	}
+
+	@Override
+	public String getStringValue(String displayValue, Locale locale) {
+		return displayValue;
+	}
+
+	/**
+	 * Helper method to create translated values that correspond with the
+	 * selection keys
+	 * 
+	 * @param locale
+	 * @return an Array holding the translated Strings
+	 */
+	private String[] getTranslatedValues(String[] keys, Locale locale) {
+		Translator trans = Util.createPackageTranslator(this.getClass(), locale);
+		String[] values = new String[keys.length];
+		for (int i = 0; i < keys.length; i++) {
+			values[i] = trans.translate(keys[i]);
+		}
+		return values;
+	}
+
+	/**
+	 * @see org.olat.core.id.UserField#getUserFieldValueAsHTML(org.olat.core.id.User,
+	 *      java.util.Locale)
+	 */
+	@Override
+	public String getUserPropertyAsHTML(User user, Locale locale) {
+		StringBuilder htmlValue = new StringBuilder();
+		Translator trans = Util.createPackageTranslator(this.getClass(), locale);
+		htmlValue.append(trans.translate(getInternalValue(user)));
+		return htmlValue.toString();
+	}
+}
\ No newline at end of file
diff --git a/src/main/java/org/olat/user/propertyhandlers/_i18n/LocalStrings_de.properties b/src/main/java/org/olat/user/propertyhandlers/_i18n/LocalStrings_de.properties
index 8725f7f68dd..baef2fd63ec 100644
--- a/src/main/java/org/olat/user/propertyhandlers/_i18n/LocalStrings_de.properties
+++ b/src/main/java/org/olat/user/propertyhandlers/_i18n/LocalStrings_de.properties
@@ -1,4 +1,250 @@
-#Thu Aug 25 10:27:06 CEST 2011
+#Mon Mar 02 14:11:51 CET 2015
+country.code.AD=Andorra
+country.code.AE=Vereinigte Arabische Emirate
+country.code.AG=Antigua und Barbuda
+country.code.AI=Anguilla
+country.code.AL=Albanien
+country.code.AM=Armenien
+country.code.AO=Angola
+country.code.AQ=Antarctica
+country.code.AR=Argentinien
+country.code.AS=Samoa (amerikanischer Teil)
+country.code.AT=\u00d6sterreich
+country.code.AU=Australien
+country.code.AW=Aruba
+country.code.AZ=Aserbaidschan
+country.code.BA=Bosnien-Herzegowina
+country.code.BB=Barbados
+country.code.BD=Bangladesh
+country.code.BE=Belgien
+country.code.BF=Burkina Faso
+country.code.BG=Bulgarien
+country.code.BH=Bahrain
+country.code.BI=Burundi
+country.code.BJ=Benin
+country.code.BL=St. Barth\u00e9lemy
+country.code.BM=Bermuda
+country.code.BN=Brunei
+country.code.BO=Bolivien
+country.code.BQ=Bonaire, Saint Eustatius and Saba
+country.code.BR=Brasilien
+country.code.BS=Bahamas
+country.code.BT=Bhutan
+country.code.BV=Bouvet Island
+country.code.BW=Botswana
+country.code.BY=Belarus
+country.code.BZ=Belize
+country.code.CA=Kanada
+country.code.CC=Cocos-(Keeling) Inseln
+country.code.CD=Kongo, demokratische Republik
+country.code.CF=Zentralafrika
+country.code.CG=Kongo, Republik
+country.code.CH=Schweiz
+country.code.CI=Elfenbeink\u00fcste
+country.code.CK=Cook-Inseln
+country.code.CL=Chile
+country.code.CM=Kamerun
+country.code.CN=China, Volksrepublik
+country.code.CO=Kolumbien
+country.code.CR=Costa Rica
+country.code.CU=Kuba
+country.code.CV=Kapverdische Inseln
+country.code.CW=Cura\u00e7ao
+country.code.CX=Weihnachtsinsel (Indischer Ozean)
+country.code.CY=Zypern
+country.code.CZ=Tschechische Republik
+country.code.DE=Deutschland
+country.code.DJ=Djibouti
+country.code.DK=D\u00e4nemark
+country.code.DM=Dominica
+country.code.DO=Dominikanische Republik
+country.code.DZ=Algerien
+country.code.EC=Ekuador
+country.code.EE=Estland
+country.code.EG=\u00c4gypten
+country.code.EH=Western Sahara
+country.code.ER=Eritrea
+country.code.ES=Spanien
+country.code.ET=\u00c4thiopien
+country.code.FI=Finnland
+country.code.FJ=Fidschi
+country.code.FK=Falkland
+country.code.FM=Micronesia, Federated States of
+country.code.FO=F\u00e4r\u00f6er
+country.code.FR=Frankreich
+country.code.GA=Gabun
+country.code.GB=Grossbritannien und Nordirland
+country.code.GD=Grenada
+country.code.GE=Georgien, Republik
+country.code.GF=Franz\u00f6sisch-Guayana
+country.code.GG=Guernsey
+country.code.GH=Ghana
+country.code.GI=Gibraltar
+country.code.GL=Gr\u00f6nland
+country.code.GM=Gambia
+country.code.GN=Guinea, Republik
+country.code.GP=Guadeloupe
+country.code.GQ=\u00c4quatorial-Guinea
+country.code.GR=Griechenland
+country.code.GS=S\u00fcdgeorgien und die s\u00fcdlichen Sandwichinseln
+country.code.GT=Guatemala
+country.code.GU=Guam
+country.code.GW=Guinea-Bissau
+country.code.GY=Guyana
+country.code.HK=Hongkong
+country.code.HM=Heard Island and McDonald Islands
+country.code.HN=Honduras
+country.code.HR=Kroatien
+country.code.HT=Haiti
+country.code.HU=Ungarn
+country.code.ID=Indonesien
+country.code.IE=Irland
+country.code.IL=Israel
+country.code.IM=Insel Man
+country.code.IN=Indien
+country.code.IO=British Indian Ocean Territory
+country.code.IQ=Irak
+country.code.IR=Iran
+country.code.IS=Island
+country.code.IT=Italien
+country.code.JE=Jersey
+country.code.JM=Jamaika
+country.code.JO=Jordanien
+country.code.JP=Japan
+country.code.KE=Kenia
+country.code.KG=Kirgisistan
+country.code.KH=Kambodscha
+country.code.KI=Kiribati
+country.code.KM=Komoren
+country.code.KN=St. Christoph (St. Kitts) und Nevis
+country.code.KP=Korea, Demo. Volksrepublik (Nordkorea)
+country.code.KR=Korea, Republik (S\u00fcdkorea)
+country.code.KW=Kuwait
+country.code.KY=Cayman
+country.code.KZ=Kasachstan
+country.code.LA=Laos
+country.code.LB=Libanon
+country.code.LC=St. Lucia
+country.code.LI=Liechtenstein
+country.code.LK=Sri Lanka
+country.code.LR=Liberia
+country.code.LS=Lesotho
+country.code.LT=Litauen
+country.code.LU=Luxemburg
+country.code.LV=Lettland
+country.code.LY=Libyen
+country.code.MA=Marokko
+country.code.MC=Monaco
+country.code.MD=Moldova
+country.code.ME=Montenegro, Republik
+country.code.MF=St. Martin
+country.code.MG=Madagaskar
+country.code.MH=Marshallinseln
+country.code.MK=Mazedonien (ehemalige jugoslawische Republik)
+country.code.ML=Mali
+country.code.MM=Myanmar (Union)
+country.code.MN=Mongolei
+country.code.MO=Macao
+country.code.MP=Marianen, n\u00f6rdliche
+country.code.MQ=Martinique
+country.code.MR=Mauretanien
+country.code.MS=Montserrat
+country.code.MT=Malta
+country.code.MU=Mauritius
+country.code.MV=Malediven
+country.code.MW=Malawi
+country.code.MX=Mexiko
+country.code.MY=Malaysia
+country.code.MZ=Mosambik
+country.code.NA=Namibia
+country.code.NC=Neukaledonien
+country.code.NE=Niger
+country.code.NF=Norfolk
+country.code.NG=Nigeria
+country.code.NI=Nikaragua
+country.code.NL=Niederlande
+country.code.NO=Norwegen
+country.code.NP=Nepal
+country.code.NR=Nauru
+country.code.NU=Niue
+country.code.NZ=Neuseeland
+country.code.OM=Oman
+country.code.PA=Panama
+country.code.PE=Peru
+country.code.PF=Franz\u00f6sisch-Polynesien
+country.code.PG=Papua-Neuguinea
+country.code.PH=Philippinen
+country.code.PK=Pakistan
+country.code.PL=Polen
+country.code.PM=St. Pierre und Miquelon
+country.code.PN=Pitcairn
+country.code.PR=Puerto Rico
+country.code.PS=Pal\u00e4stina
+country.code.PT=Portugal
+country.code.PW=Palau
+country.code.PY=Paraguay
+country.code.QA=Qatar
+country.code.RE=R\u00e9union
+country.code.RO=Rum\u00e4nien
+country.code.RS=Serbien, Republik
+country.code.RU=Russische F\u00f6deration
+country.code.RW=Rwanda
+country.code.SA=Saudi-Arabien
+country.code.SB=Salomon-Inseln
+country.code.SC=Seychellen
+country.code.SD=Sudan
+country.code.SE=Schweden
+country.code.SG=Singapur
+country.code.SH=St. Helena, Ascension und Tristan da Cunha
+country.code.SI=Slowenien
+country.code.SJ=Svalbard and Jan Mayen
+country.code.SK=Slowakische Republik
+country.code.SL=Sierra Leone
+country.code.SM=San Marino
+country.code.SN=Senegal
+country.code.SO=Somalia
+country.code.SR=Suriname
+country.code.ST=St. Thomas und Principe
+country.code.SV=El Salvador
+country.code.SX=St. Maarten
+country.code.SY=Syrien
+country.code.SZ=Swasiland
+country.code.TC=Turks und Caicos
+country.code.TD=Tschad
+country.code.TF=French Southern Territories
+country.code.TG=Togo
+country.code.TH=Thailand
+country.code.TJ=Tadschikistan
+country.code.TK=Tokelau
+country.code.TL=Timor-Leste
+country.code.TM=Turkmenistan
+country.code.TN=Tunesien
+country.code.TO=Tonga
+country.code.TR=T\u00fcrkei
+country.code.TT=Trinidad und Tobago
+country.code.TV=Tuvalu
+country.code.TW=China, Taiwan
+country.code.TZ=Tansania
+country.code.UA=Ukraine
+country.code.UG=Uganda
+country.code.UM=Amerikanische \u00dcberseeinseln, kleinere
+country.code.US=Vereinigte Staaten von Amerika
+country.code.UY=Uruguay
+country.code.UZ=Usbekistan
+country.code.VA=Vatikan
+country.code.VC=St. Vincent und die Grenadinen
+country.code.VE=Venezuela
+country.code.VG=Virginische Inseln, britischer Teil (Tortola)
+country.code.VI=Amerikanische Jungferninseln
+country.code.VN=Vietnam
+country.code.VU=Vanuatu
+country.code.WF=Wallis und Futuna
+country.code.WS=Samoa, West
+country.code.YE=Jemen
+country.code.YT=Mayotte
+country.code.ZA=S\u00fcdafrika
+country.code.ZM=Sambia
+country.code.ZW=Zimbabwe
 form.example.free={0}
 form.example.icqname=(16827354)
 form.example.icqname.notvalidated=Ihre ICQ-Nummer konnte nicht \u00FCberpr\u00FCft werden und wird als g\u00FCltig angenommen.
@@ -24,6 +270,7 @@ form.name.date.past.error=Das gew
 form.name.city=Stadt
 form.name.city.error.empty=Das Feld "Stadt" darf nicht leer sein.
 form.name.country=Land
+form.name.countryCode=$\:form.name.country
 form.name.country.error.empty=Das Feld "Land" darf nicht leer sein.
 form.name.degree=Akademischer Grad
 form.name.department=Dienststelle / Firma
@@ -132,6 +379,7 @@ import.example.telOffice=0449871234
 import.example.telPrivate=0443215467
 import.example.xingname=xingbenutzer oder E-Mail-Adresse
 import.example.zipCode=8000
+nocountry.doselect=-
 table.name.birthDay=Geburtsdatum
 table.name.city=Stadt
 table.name.country=Land
diff --git a/src/main/java/org/olat/user/propertyhandlers/_i18n/LocalStrings_en.properties b/src/main/java/org/olat/user/propertyhandlers/_i18n/LocalStrings_en.properties
index 60fed555904..6bf9a3314ca 100644
--- a/src/main/java/org/olat/user/propertyhandlers/_i18n/LocalStrings_en.properties
+++ b/src/main/java/org/olat/user/propertyhandlers/_i18n/LocalStrings_en.properties
@@ -1,4 +1,250 @@
-#Thu Aug 15 19:15:07 CEST 2013
+#Mon Mar 02 14:03:06 CET 2015
+country.code.AD=Andorra
+country.code.AE=United Arab Emirates
+country.code.AG=Antigua and Barbuda
+country.code.AI=Anguilla
+country.code.AL=Albania
+country.code.AM=Armenia
+country.code.AO=Angola
+country.code.AQ=Antarctica
+country.code.AR=Argentina
+country.code.AS=American Samoa
+country.code.AT=Austria
+country.code.AU=Australia
+country.code.AW=Aruba
+country.code.AZ=Azerbaijan
+country.code.BA=Bosnia and Herzegovina
+country.code.BB=Barbados
+country.code.BD=Bangladesh
+country.code.BE=Belgium
+country.code.BF=Burkina Faso
+country.code.BG=Bulgaria
+country.code.BH=Bahrain
+country.code.BI=Burundi
+country.code.BJ=Benin
+country.code.BL=Saint Barth\u00e9lemy
+country.code.BM=Bermuda
+country.code.BN=Brunei Darussalam
+country.code.BO=Bolivia, Plurinational State of
+country.code.BQ=Bonaire, Saint Eustatius and Saba
+country.code.BR=Brazil
+country.code.BS=Bahamas
+country.code.BT=Bhutan
+country.code.BV=Bouvet Island
+country.code.BW=Botswana
+country.code.BY=Belarus
+country.code.BZ=Belize
+country.code.CA=Canada
+country.code.CC=Cocos (Keeling) Islands
+country.code.CD=Congo, the Democratic Republic of the
+country.code.CF=Central African Republic
+country.code.CG=Congo
+country.code.CH=Switzerland
+country.code.CI=C\u00f4te d'Ivoire
+country.code.CK=Cook Islands
+country.code.CL=Chile
+country.code.CM=Cameroon
+country.code.CN=China
+country.code.CO=Colombia
+country.code.CR=Costa Rica
+country.code.CU=Cuba
+country.code.CV=Cape Verde
+country.code.CW=Cura\u00e7ao
+country.code.CX=Christmas Island
+country.code.CY=Cyprus
+country.code.CZ=Czech Republic
+country.code.DE=Germany
+country.code.DJ=Djibouti
+country.code.DK=Denmark
+country.code.DM=Dominica
+country.code.DO=Dominican Republic
+country.code.DZ=Algeria
+country.code.EC=Ecuador
+country.code.EE=Estonia
+country.code.EG=Egypt
+country.code.EH=Western Sahara
+country.code.ER=Eritrea
+country.code.ES=Spain
+country.code.ET=Ethiopia
+country.code.FI=Finland
+country.code.FJ=Fiji
+country.code.FK=Falkland Islands (Malvinas)
+country.code.FM=Micronesia, Federated States of
+country.code.FO=Faroe Islands
+country.code.FR=France
+country.code.GA=Gabon
+country.code.GB=United Kingdom
+country.code.GD=Grenada
+country.code.GE=Georgia
+country.code.GF=French Guiana
+country.code.GG=Guernsey
+country.code.GH=Ghana
+country.code.GI=Gibraltar
+country.code.GL=Greenland
+country.code.GM=Gambia
+country.code.GN=Guinea
+country.code.GP=Guadeloupe
+country.code.GQ=Equatorial Guinea
+country.code.GR=Greece
+country.code.GS=South Georgia and the South Sandwich Islands
+country.code.GT=Guatemala
+country.code.GU=Guam
+country.code.GW=Guinea-Bissau
+country.code.GY=Guyana
+country.code.HK=Hong Kong
+country.code.HM=Heard Island and McDonald Islands
+country.code.HN=Honduras
+country.code.HR=Croatia
+country.code.HT=Haiti
+country.code.HU=Hungary
+country.code.ID=Indonesia
+country.code.IE=Ireland
+country.code.IL=Israel
+country.code.IM=Isle of Man
+country.code.IN=India
+country.code.IO=British Indian Ocean Territory
+country.code.IQ=Iraq
+country.code.IR=Iran, Islamic Republic of
+country.code.IS=Iceland
+country.code.IT=Italy
+country.code.JE=Jersey
+country.code.JM=Jamaica
+country.code.JO=Jordan
+country.code.JP=Japan
+country.code.KE=Kenya
+country.code.KG=Kyrgyzstan
+country.code.KH=Cambodia
+country.code.KI=Kiribati
+country.code.KM=Comoros
+country.code.KN=Saint Kitts and Nevis
+country.code.KP=Korea, Democratic People's Republic of
+country.code.KR=Korea, Republic of
+country.code.KW=Kuwait
+country.code.KY=Cayman Islands
+country.code.KZ=Kazakhstan
+country.code.LA=Lao People's Democratic Republic
+country.code.LB=Lebanon
+country.code.LC=Saint Lucia
+country.code.LI=Liechtenstein
+country.code.LK=Sri Lanka
+country.code.LR=Liberia
+country.code.LS=Lesotho
+country.code.LT=Lithuania
+country.code.LU=Luxembourg
+country.code.LV=Latvia
+country.code.LY=Libyan Arab Jamahiriya
+country.code.MA=Morocco
+country.code.MC=Monaco
+country.code.MD=Moldova, Republic of
+country.code.ME=Montenegro
+country.code.MF=Saint Martin (French part)
+country.code.MG=Madagascar
+country.code.MH=Marshall Islands
+country.code.MK=Macedonia, the former Yugoslav Republic of
+country.code.ML=Mali
+country.code.MM=Myanmar
+country.code.MN=Mongolia
+country.code.MO=Macao
+country.code.MP=Northern Mariana Islands
+country.code.MQ=Martinique
+country.code.MR=Mauritania
+country.code.MS=Montserrat
+country.code.MT=Malta
+country.code.MU=Mauritius
+country.code.MV=Maldives
+country.code.MW=Malawi
+country.code.MX=Mexico
+country.code.MY=Malaysia
+country.code.MZ=Mozambique
+country.code.NA=Namibia
+country.code.NC=New Caledonia
+country.code.NE=Niger
+country.code.NF=Norfolk Island
+country.code.NG=Nigeria
+country.code.NI=Nicaragua
+country.code.NL=Netherlands
+country.code.NO=Norway
+country.code.NP=Nepal
+country.code.NR=Nauru
+country.code.NU=Niue
+country.code.NZ=New Zealand
+country.code.OM=Oman
+country.code.PA=Panama
+country.code.PE=Peru
+country.code.PF=French Polynesia
+country.code.PG=Papua New Guinea
+country.code.PH=Philippines
+country.code.PK=Pakistan
+country.code.PL=Poland
+country.code.PM=Saint Pierre and Miquelon
+country.code.PN=Pitcairn
+country.code.PR=Puerto Rico
+country.code.PS=Palestinian Territory, Occupied
+country.code.PT=Portugal
+country.code.PW=Palau
+country.code.PY=Paraguay
+country.code.QA=Qatar
+country.code.RE=R\u00e9union
+country.code.RO=Romania
+country.code.RS=Serbia
+country.code.RU=Russian Federation
+country.code.RW=Rwanda
+country.code.SA=Saudi Arabia
+country.code.SB=Solomon Islands
+country.code.SC=Seychelles
+country.code.SD=Sudan
+country.code.SE=Sweden
+country.code.SG=Singapore
+country.code.SH=Saint Helena, Ascension and Tristan da Cunha
+country.code.SI=Slovenia
+country.code.SJ=Svalbard and Jan Mayen
+country.code.SK=Slovakia
+country.code.SL=Sierra Leone
+country.code.SM=San Marino
+country.code.SN=Senegal
+country.code.SO=Somalia
+country.code.SR=Suriname
+country.code.ST=Sao Tome and Principe
+country.code.SV=El Salvador
+country.code.SX=Sint Maarten (Dutch part)
+country.code.SY=Syrian Arab Republic
+country.code.SZ=Swaziland
+country.code.TC=Turks and Caicos Islands
+country.code.TD=Chad
+country.code.TF=French Southern Territories
+country.code.TG=Togo
+country.code.TH=Thailand
+country.code.TJ=Tajikistan
+country.code.TK=Tokelau
+country.code.TL=Timor-Leste
+country.code.TM=Turkmenistan
+country.code.TN=Tunisia
+country.code.TO=Tonga
+country.code.TR=Turkey
+country.code.TT=Trinidad and Tobago
+country.code.TV=Tuvalu
+country.code.TW=Taiwan, Province of China
+country.code.TZ=Tanzania, United Republic of
+country.code.UA=Ukraine
+country.code.UG=Uganda
+country.code.UM=United States Minor Outlying Islands
+country.code.US=United States
+country.code.UY=Uruguay
+country.code.UZ=Uzbekistan
+country.code.VA=Holy See (Vatican City State)
+country.code.VC=Saint Vincent and the Grenadines
+country.code.VE=Venezuela, Bolivarian Republic of
+country.code.VG=Virgin Islands, British
+country.code.VI=Virgin Islands, U.S.
+country.code.VN=Viet Nam
+country.code.VU=Vanuatu
+country.code.WF=Wallis and Futuna
+country.code.WS=Samoa
+country.code.YE=Yemen
+country.code.YT=Mayotte
+country.code.ZA=South Africa
+country.code.ZM=Zambia
+country.code.ZW=Zimbabwe
 form.example.free={0}
 form.example.icqname=(16827354)
 form.example.icqname.notvalidated=Your ICQ number could not be checked and is therefore assumed valid.
@@ -22,6 +268,7 @@ form.name.birthDay.error.empty=The field "Date of birth" is mandatory.
 form.name.city=City
 form.name.city.error.empty=The field "City" is mandatory.
 form.name.country=Country
+form.name.countryCode=$\:form.name.country
 form.name.country.error.empty=The field "Country" is mandatory.
 form.name.date.future.error=The chosen Date must lie in the future
 form.name.date.past.error=The chosen Date must lie in the past
@@ -132,6 +379,7 @@ import.example.telOffice=0449871234
 import.example.telPrivate=0443215467
 import.example.xingname=xing user or e-mail address
 import.example.zipCode=10000
+nocountry.doselect=-
 table.name.birthDay=Birth date
 table.name.city=City
 table.name.country=Country
diff --git a/src/main/java/org/olat/user/propertyhandlers/_i18n/LocalStrings_fr.properties b/src/main/java/org/olat/user/propertyhandlers/_i18n/LocalStrings_fr.properties
index cd9686d19b4..aee835cf516 100644
--- a/src/main/java/org/olat/user/propertyhandlers/_i18n/LocalStrings_fr.properties
+++ b/src/main/java/org/olat/user/propertyhandlers/_i18n/LocalStrings_fr.properties
@@ -1,4 +1,240 @@
-#Sun Dec 14 10:57:57 CET 2014
+#Mon Mar 02 14:03:06 CET 2015
+country.code.AD=Andorre
+country.code.AE=Emirats Arabes Unis
+country.code.AG=Antigua et Barbuda
+country.code.AI=Anguilla
+country.code.AL=Albanie
+country.code.AM=Arm\u00e9nie
+country.code.AO=Angola
+country.code.AR=Argentine
+country.code.AS=Samoa, partie am\u00e9ricaine
+country.code.AT=Autriche
+country.code.AU=Australie
+country.code.AW=Aruba
+country.code.AZ=Azerba\u00efdjan
+country.code.BA=Bosnie-Herz\u00e9govine
+country.code.BB=Barbade
+country.code.BD=Bangladesh
+country.code.BE=Belgique
+country.code.BF=Burkina Faso
+country.code.BG=Bulgarie
+country.code.BH=Bahrain
+country.code.BI=Burundi
+country.code.BJ=B\u00e9nin
+country.code.BL=St. Barth\u00e9lemy
+country.code.BM=Bermudes
+country.code.BN=Brun\u00e9i
+country.code.BO=Bolivie
+country.code.BR=Br\u00e9sil
+country.code.BS=Bahamas
+country.code.BT=Bhoutan
+country.code.BW=Botswana
+country.code.BY=Belarus
+country.code.BZ=Belize
+country.code.CA=Canada
+country.code.CC=Cocos (Keeling), Iles
+country.code.CD=Congo, R\u00e9publique d\u00e9mocratique
+country.code.CF=Centrafrique
+country.code.CG=Congo, R\u00e9publique
+country.code.CH=Suisse
+country.code.CI=C\u00f4te d'Ivoire
+country.code.CK=Cook, Iles
+country.code.CL=Chili
+country.code.CM=Cameroun
+country.code.CN=Chine, R\u00e9publique populaire
+country.code.CO=Colombie
+country.code.CR=Costa Rica
+country.code.CU=Cuba
+country.code.CV=Cap-Vert, Iles du
+country.code.CW=Cura\u00e7ao
+country.code.CX=Christmas, Ile (Oc\u00e9an indien)
+country.code.CY=Chypre
+country.code.CZ=Tch\u00e8que, R\u00e9publique
+country.code.DE=Allemagne
+country.code.DJ=Djibouti
+country.code.DK=Danemark
+country.code.DM=Dominique, Ile
+country.code.DO=Dominicaine, R\u00e9publique
+country.code.DZ=Alg\u00e9rie
+country.code.EC=Equateur
+country.code.EE=Estonie
+country.code.EG=Egypte
+country.code.ER=Erythr\u00e9e
+country.code.ES=Espagne
+country.code.ET=Ethiopie
+country.code.FI=Finlande
+country.code.FJ=Fidji
+country.code.FK=Falkland
+country.code.FO=F\u00e9ro\u00e9, Iles
+country.code.FR=France
+country.code.GA=Gabon
+country.code.GB=Grande-Bretagne et Irande du Nord
+country.code.GD=Grenade
+country.code.GE=G\u00e9orgie, R\u00e9publique
+country.code.GF=Guyane fran\u00e7aise
+country.code.GG=Guernsey
+country.code.GH=Ghana
+country.code.GI=Gibraltar
+country.code.GL=Groenland
+country.code.GM=Gambie
+country.code.GN=Guin\u00e9e, R\u00e9publique
+country.code.GP=Guadeloupe
+country.code.GQ=Guin\u00e9e Equatoriale
+country.code.GR=Gr\u00e8ce
+country.code.GS=G\u00e9orgie du Sud et les Iles Sandwich du Sud
+country.code.GT=Guat\u00e9mala
+country.code.GU=Guam
+country.code.GW=Guin\u00e9e-Bissau
+country.code.GY=Guyane
+country.code.HK=Hong-Kong
+country.code.HN=Honduras
+country.code.HR=Croatie
+country.code.HT=Ha\u00efti
+country.code.HU=Hongrie
+country.code.ID=Indon\u00e9sie
+country.code.IE=Irlande
+country.code.IL=Isra\u00ebl
+country.code.IM=Il de Man
+country.code.IN=Inde
+country.code.IQ=Iraq
+country.code.IR=Iran
+country.code.IS=Islande
+country.code.IT=Italie
+country.code.JE=Jersey
+country.code.JM=Jama\u00efque
+country.code.JO=Jordanie
+country.code.JP=Japon
+country.code.KE=Kenya
+country.code.KG=Kirghizistan
+country.code.KH=Cambodge
+country.code.KI=Kiribati
+country.code.KM=Comores
+country.code.KN=St. Christophe (St.-Kitts) et Nevis
+country.code.KP=Cor\u00e9e, R\u00e9publique populaire d\u00e9mocratique (Cor\u00e9e du Nord)
+country.code.KR=Cor\u00e9e, R\u00e9publique (Cor\u00e9e du Sud)
+country.code.KW=Kuwait
+country.code.KY=Cayman
+country.code.KZ=Kazakhstan
+country.code.LA=Laos
+country.code.LB=Liban
+country.code.LC=St. Lucia
+country.code.LI=Liechtenstein
+country.code.LK=Sri Lanka
+country.code.LR=Lib\u00e9ria
+country.code.LS=Lesotho
+country.code.LT=Lituanie
+country.code.LU=Luxembourg
+country.code.LV=Lettonie
+country.code.LY=Libye
+country.code.MA=Maroc
+country.code.MC=Monaco
+country.code.MD=Moldova
+country.code.ME=Mont\u00e9n\u00e9gro, R\u00e9publique
+country.code.MF=St. Martin
+country.code.MG=Madagascar
+country.code.MH=Marshall, Iles
+country.code.MK=Mac\u00e9doine
+country.code.ML=Mali
+country.code.MM=Myanmar
+country.code.MN=Mongolie
+country.code.MO=Macao
+country.code.MP=Mariannes du Nord, Iles
+country.code.MQ=Martinique
+country.code.MR=Mauritanie
+country.code.MS=Montserrat
+country.code.MT=Malte
+country.code.MU=Maurice, Ile
+country.code.MV=Maldives
+country.code.MW=Malawi
+country.code.MX=Mexique
+country.code.MY=Malaisie
+country.code.MZ=Mozambique
+country.code.NA=Namibie
+country.code.NC=Nouvelle-Cal\u00e9donie
+country.code.NE=Niger
+country.code.NF=Norfolk, Ile
+country.code.NG=Nig\u00e9ria
+country.code.NI=Nicaragua
+country.code.NL=Pays-Bas
+country.code.NO=Norv\u00e8ge
+country.code.NP=N\u00e9pal
+country.code.NR=Nauru
+country.code.NZ=Nouvelle-Z\u00e9lande
+country.code.OM=Oman
+country.code.PA=Panama
+country.code.PE=P\u00e9rou
+country.code.PF=Polyn\u00e9sie fran\u00e7aise
+country.code.PG=Papouasie-Nouvelle-Guin\u00e9e
+country.code.PH=Philippines
+country.code.PK=Pakistan
+country.code.PL=Pologne
+country.code.PM=St-Pierre et Miquelon
+country.code.PN=Pitcairn
+country.code.PR=Porto Rico
+country.code.PS=Palestine
+country.code.PT=Portugal
+country.code.PW=Palau
+country.code.PY=Paraguay
+country.code.QA=Qatar
+country.code.RE=R\u00e9union
+country.code.RO=Roumanie
+country.code.RS=Serbie, R\u00e9publique
+country.code.RU=Russie, F\u00e9d\u00e9ration de
+country.code.RW=Rwanda
+country.code.SA=Arabie Saoudite
+country.code.SB=Salomon, Iles
+country.code.SC=Seychelles
+country.code.SD=Soudan
+country.code.SE=Su\u00e9de
+country.code.SG=Singapour
+country.code.SH=Sainte H\u00e9l\u00e8ne, Ascension et Tristan da Cunha
+country.code.SI=Slov\u00e9nie
+country.code.SK=Slovaque, R\u00e9publique
+country.code.SL=Sierra Leone
+country.code.SM=St-Marin
+country.code.SN=S\u00e9n\u00e9gal
+country.code.SO=Somalie
+country.code.SR=Suriname
+country.code.ST=St-Thomas et Prince
+country.code.SV=El Salvador
+country.code.SX=Saint Maarten
+country.code.SY=Syrie
+country.code.SZ=Swaziland
+country.code.TC=Turks et Ca\u00efques
+country.code.TD=Tchad
+country.code.TG=Togo
+country.code.TH=Tha\u00eflande
+country.code.TJ=Tadjikistan
+country.code.TK=Tok\u00e9laou
+country.code.TL=Timor-Leste
+country.code.TM=Turkm\u00e9nistan
+country.code.TN=Tunisie
+country.code.TO=Tonga
+country.code.TR=Turquie
+country.code.TT=Trinit\u00e9 et Tobago
+country.code.TV=Tuvalu
+country.code.TW=Chine, Taiwan
+country.code.TZ=Tanzanie
+country.code.UA=Ukraine
+country.code.UG=Ouganda
+country.code.UM=Iles Mineures \u00c9loign\u00e9es des \u00c9tats-Unis
+country.code.US=Etats-Unis d Am\u00e9rique
+country.code.UY=Uruguay
+country.code.UZ=Ouzb\u00e9kistan
+country.code.VA=Vatican
+country.code.VC=St-Vincent et Grenadines
+country.code.VE=Venezuela
+country.code.VG=Vierges, Iles britanniques (Tortola)
+country.code.VI=Vierges (Etats-Unis), Iles
+country.code.VN=Viet Nam
+country.code.VU=Vanuatu
+country.code.WF=Wallis et Futuna
+country.code.WS=Samoa Occidental
+country.code.YE=Y\u00e9men
+country.code.YT=Mayotte
+country.code.ZA=Afrique du Sud
+country.code.ZM=Zambie
+country.code.ZW=Zimbabwe
 form.example.free={0}
 form.example.icqname=(16827354)
 form.example.icqname.notvalidated=Votre num\u00E9ro ICQ n'a pas pu \u00EAtre v\u00E9rifi\u00E9 et est consid\u00E9r\u00E9 comme valdide.
@@ -22,6 +258,7 @@ form.name.birthDay.error.empty=Le champ "date de naissance" ne doit pas rester v
 form.name.city=Ville
 form.name.city.error.empty=Le champ "Ville" ne doit pas rester vide.
 form.name.country=Pays
+form.name.countryCode=$\:form.name.country
 form.name.country.error.empty=Le champ "Pays" ne doit pas rester vide.
 form.name.date.future.error=La date choisie doit \u00EAtre dans le futur
 form.name.date.past.error=La date choisie doit \u00EAtre dans le pass\u00E9
@@ -132,6 +369,7 @@ import.example.telOffice=0449871234
 import.example.telPrivate=0443215467
 import.example.xingname=utilisateur xing ou e-mail
 import.example.zipCode=8000
+nocountry.doselect=-
 table.name.birthDay=Date de naissance
 table.name.city=Ville
 table.name.country=Pays
diff --git a/src/main/java/org/olat/user/propertyhandlers/_i18n/LocalStrings_it.properties b/src/main/java/org/olat/user/propertyhandlers/_i18n/LocalStrings_it.properties
index 8e2274d05e4..04588e1e2ea 100644
--- a/src/main/java/org/olat/user/propertyhandlers/_i18n/LocalStrings_it.properties
+++ b/src/main/java/org/olat/user/propertyhandlers/_i18n/LocalStrings_it.properties
@@ -1,4 +1,240 @@
-#Sun Feb 07 17:30:41 CET 2010
+#Mon Mar 02 14:03:06 CET 2015
+country.code.AD=Andorra
+country.code.AE=Emirati Arabi Uniti
+country.code.AG=Antigua/Barbuda
+country.code.AI=Anguilla
+country.code.AL=Albania
+country.code.AM=Armenia
+country.code.AO=Angola
+country.code.AR=Argentina
+country.code.AS=Samoa (USA)
+country.code.AT=Austria
+country.code.AU=Australia
+country.code.AW=Aruba
+country.code.AZ=Azerbaigian
+country.code.BA=Bosnia-Erzegovina
+country.code.BB=Barbados
+country.code.BD=Bangladesh
+country.code.BE=Belgio
+country.code.BF=Burkina Faso
+country.code.BG=Bulgaria
+country.code.BH=Bahrein
+country.code.BI=Burundi
+country.code.BJ=Benin
+country.code.BL=St. Barth\u00e9lemy
+country.code.BM=Bermude
+country.code.BN=Brunei
+country.code.BO=Bolivia
+country.code.BR=Brasile
+country.code.BS=Bahama
+country.code.BT=Bhutan
+country.code.BW=Botswana
+country.code.BY=Bielorussia
+country.code.BZ=Belize
+country.code.CA=Canada
+country.code.CC=Cocos (Keeling), Isole
+country.code.CD=Congo, Rep. Democratica
+country.code.CF=Centrafrica
+country.code.CG=Congo, Repubblica
+country.code.CH=Svizzera
+country.code.CI=C\u00f4te d'Ivoire
+country.code.CK=Cook, Arcipelago di
+country.code.CL=Cile
+country.code.CM=Camerun
+country.code.CN=Cina, Rep. pop.
+country.code.CO=Colombia
+country.code.CR=Costa Rica
+country.code.CU=Cuba
+country.code.CV=Capo Verde, Isola del
+country.code.CW=Cura\u00e7ao
+country.code.CX=Christmas, isole (Oceano indiano)
+country.code.CY=Cipro
+country.code.CZ=Ceca, Repubblica
+country.code.DE=Germania
+country.code.DJ=Gibuti
+country.code.DK=Danimarca
+country.code.DM=Dominica
+country.code.DO=Dominicana, Repubblica
+country.code.DZ=Algeria
+country.code.EC=Equatore
+country.code.EE=Estonia
+country.code.EG=Egitto
+country.code.ER=Eritrea
+country.code.ES=Spagna
+country.code.ET=Etiopia
+country.code.FI=Finlandia
+country.code.FJ=Figi, Isole
+country.code.FK=Falkland, isole
+country.code.FO=Faer\u00f6er, isole
+country.code.FR=Francia
+country.code.GA=Gabon
+country.code.GB=Gran Bretagna e Irlanda del Nord
+country.code.GD=Grenada
+country.code.GE=Georgia, Repubblica
+country.code.GF=Guiana francese
+country.code.GG=Guernsey
+country.code.GH=Ghana
+country.code.GI=Gibilterra
+country.code.GL=Groenlandia
+country.code.GM=Gambia
+country.code.GN=Guinea, Repubblica
+country.code.GP=Guadalupa
+country.code.GQ=Guinea Equatoriale
+country.code.GR=Grecia
+country.code.GS=Georgia del Sud e Sandwich del Sud, Isole
+country.code.GT=Guatemala
+country.code.GU=Guam
+country.code.GW=Guinea-Bissau
+country.code.GY=Guiana
+country.code.HK=Hongkong
+country.code.HN=Honduras
+country.code.HR=Croazia
+country.code.HT=Haiti
+country.code.HU=Ungheria
+country.code.ID=Indonesia
+country.code.IE=Irlanda
+country.code.IL=Israele
+country.code.IM=Isola di Man
+country.code.IN=India
+country.code.IQ=Iraq
+country.code.IR=Iran
+country.code.IS=Islanda
+country.code.IT=Italia
+country.code.JE=Jersey
+country.code.JM=Giamaica
+country.code.JO=Giordania
+country.code.JP=Giappone
+country.code.KE=Kenya
+country.code.KG=Kirghizistan
+country.code.KH=Cambogia
+country.code.KI=Kiribati
+country.code.KM=Comore
+country.code.KN=St. Cristoforo (St. Kitts) e Nevis
+country.code.KP=Corea, Rep. pop. dem. (Corea del Nord)
+country.code.KR=Corea, Rep. (Corea del Sud)
+country.code.KW=Kuwait
+country.code.KY=Cayman
+country.code.KZ=Kazakistan
+country.code.LA=Laos
+country.code.LB=Libano
+country.code.LC=St. Lucia
+country.code.LI=Liechtenstein
+country.code.LK=Sri Lanka
+country.code.LR=Liberia
+country.code.LS=Lesotho
+country.code.LT=Lituania
+country.code.LU=Lussemburgo
+country.code.LV=Lettonia
+country.code.LY=Libia
+country.code.MA=Marocco
+country.code.MC=Monaco
+country.code.MD=Moldavia
+country.code.ME=Montenegro, Repubblica
+country.code.MF=St. Martin
+country.code.MG=Madagascar
+country.code.MH=Marshall, Isole
+country.code.MK=Macedonia
+country.code.ML=Mali
+country.code.MM=Myanmar (Unione)
+country.code.MN=Mongolia
+country.code.MO=Macao
+country.code.MP=Marianne, Isole
+country.code.MQ=Martinica
+country.code.MR=Mauritania
+country.code.MS=Montserrat
+country.code.MT=Malta
+country.code.MU=Maurizio
+country.code.MV=Maldive
+country.code.MW=Malawi
+country.code.MX=Messico
+country.code.MY=Malaisia
+country.code.MZ=Mozambico
+country.code.NA=Namibia
+country.code.NC=Nuova Caledonia
+country.code.NE=Niger
+country.code.NF=Norfolk, isola
+country.code.NG=Nigeria
+country.code.NI=Nicaragua
+country.code.NL=Paesi Bassi
+country.code.NO=Norvegia
+country.code.NP=Nepal
+country.code.NR=Nauru
+country.code.NZ=Nuova Zelanda
+country.code.OM=Oman
+country.code.PA=Panama
+country.code.PE=Per\u00f9
+country.code.PF=Polinesia Francese
+country.code.PG=Papua-Nuova Guinea
+country.code.PH=Filippine
+country.code.PK=Pakistan
+country.code.PL=Polonia
+country.code.PM=Saint-Pierre et Miquelon
+country.code.PN=Pitcairn
+country.code.PR=Porto Rico
+country.code.PS=Palestina
+country.code.PT=Portogallo
+country.code.PW=Palau, Isole
+country.code.PY=Paraguay
+country.code.QA=Qatar
+country.code.RE=Riunione
+country.code.RO=Romania
+country.code.RS=Serbia, Reppublica
+country.code.RU=Russia, Federazione di
+country.code.RW=Ruanda
+country.code.SA=Arabia Saudita
+country.code.SB=Salomone, isole
+country.code.SC=Seicelle
+country.code.SD=Sudan
+country.code.SE=Svezia
+country.code.SG=Singapore
+country.code.SH=Sant'Elena, Ascension e Tristan da Cunha
+country.code.SI=Slovenia
+country.code.SK=Slovacca, Repubblica
+country.code.SL=Sierra Leone
+country.code.SM=San Marino
+country.code.SN=Senegal
+country.code.SO=Somalia
+country.code.SR=Suriname
+country.code.ST=Sao Tom\u00e9 e Principe
+country.code.SV=El Salvador
+country.code.SX=Saint Maarten
+country.code.SY=Siria
+country.code.SZ=Swaziland
+country.code.TC=Turks e Caicos
+country.code.TD=Ciad
+country.code.TG=Togo
+country.code.TH=Tailandia
+country.code.TJ=Tagiskistan
+country.code.TK=Tokelau, Isole
+country.code.TL=Timor-Leste
+country.code.TM=Turkmenistan
+country.code.TN=Tunisia
+country.code.TO=Tonga
+country.code.TR=Turchia
+country.code.TT=Trinidad e Tobago
+country.code.TV=Tuvalu
+country.code.TW=Cina, Taiwan
+country.code.TZ=Tanzania
+country.code.UA=Ucraina
+country.code.UG=Uganda
+country.code.UM=Isole Minori (USA)
+country.code.US=Stati Uniti d'America
+country.code.UY=Uruguay
+country.code.UZ=Uzbekistan
+country.code.VA=Vaticano
+country.code.VC=Saint Vincent e Grenadine
+country.code.VE=Venezuela
+country.code.VG=Vergini, Isole (britanniche)
+country.code.VI=Vergini, Isole (USA)
+country.code.VN=Vietnam
+country.code.VU=Vanuatu
+country.code.WF=Wallis e Futuna
+country.code.WS=Samoa Occidentali
+country.code.YE=Yemen
+country.code.YT=Mayotte
+country.code.ZA=Sudafrica
+country.code.ZM=Zambia
+country.code.ZW=Zimbabwe
 form.example.free={0}
 form.example.icqname=(16827354)
 form.example.icqname.notvalidated=Il Suo numero ICQ non pu\u00F2 essere verificato e viene considerato come valido.
diff --git a/src/main/java/org/olat/user/propertyhandlers/_spring/userPropertriesHandlersContext.xml b/src/main/java/org/olat/user/propertyhandlers/_spring/userPropertriesHandlersContext.xml
index 5c62ac92c74..cd25ea97667 100644
--- a/src/main/java/org/olat/user/propertyhandlers/_spring/userPropertriesHandlersContext.xml
+++ b/src/main/java/org/olat/user/propertyhandlers/_spring/userPropertriesHandlersContext.xml
@@ -136,6 +136,12 @@
 		<property name="deletable" value="true" />
 	</bean>
 	
+	<bean id="userPropertyCountryCode" class="org.olat.user.propertyhandlers.CountryCodePropertyHandler">
+		<property name="name" value="countryCode" />
+		<property name="group" value="address" />
+		<property name="deletable" value="true" />
+	</bean>
+	
 	<bean id="userPropertyInstitutionalName" class="org.olat.user.propertyhandlers.Generic127CharTextPropertyHandler">
 		<property name="name" value="institutionalName" />
 		<property name="group" value="institute" />
-- 
GitLab