diff --git a/cdo/bundles/org.eclipse.papyrus.cdo.core/META-INF/MANIFEST.MF b/cdo/bundles/org.eclipse.papyrus.cdo.core/META-INF/MANIFEST.MF
index 3e044af..c1322ed 100755
--- a/cdo/bundles/org.eclipse.papyrus.cdo.core/META-INF/MANIFEST.MF
+++ b/cdo/bundles/org.eclipse.papyrus.cdo.core/META-INF/MANIFEST.MF
@@ -23,7 +23,8 @@
  org.eclipse.papyrus.infra.services.localizer;bundle-version="1.2.0",
  org.eclipse.net4j;bundle-version="[4.3.0,5.0.0)",
  org.eclipse.emf.cdo.admin;bundle-version="[4.1.200,5.0.0)",
- org.eclipse.papyrus.infra.core.sashwindows.di;bundle-version="1.2.0"
+ org.eclipse.papyrus.infra.core.sashwindows.di;bundle-version="1.2.0",
+ org.eclipse.papyrus.infra.internationalization;bundle-version="[1.2.100,2.0.0)"
 Export-Package: org.eclipse.papyrus.cdo.core,
  org.eclipse.papyrus.cdo.core.admin,
  org.eclipse.papyrus.cdo.core.exporter,
diff --git a/cdo/bundles/org.eclipse.papyrus.cdo.core/plugin.xml b/cdo/bundles/org.eclipse.papyrus.cdo.core/plugin.xml
index a84c144..1bf33a7 100755
--- a/cdo/bundles/org.eclipse.papyrus.cdo.core/plugin.xml
+++ b/cdo/bundles/org.eclipse.papyrus.cdo.core/plugin.xml
@@ -100,5 +100,11 @@
             scheme="cdo.checkout">
       </sashModelProvider>
    </extension>
+   <extension
+         point="org.eclipse.papyrus.infra.internationalization.internationalizationPreferenceModelProvider">
+      <internationalizationPreferenceModelProvider
+            class="org.eclipse.papyrus.cdo.core.InternationalizationPreferenceModelProvider1">
+      </internationalizationPreferenceModelProvider>
+   </extension>
 
 </plugin>
diff --git a/cdo/bundles/org.eclipse.papyrus.cdo.core/src/org/eclipse/papyrus/cdo/internal/core/resource/CDOInternationalizationPreferenceModelProvider.java b/cdo/bundles/org.eclipse.papyrus.cdo.core/src/org/eclipse/papyrus/cdo/internal/core/resource/CDOInternationalizationPreferenceModelProvider.java
new file mode 100644
index 0000000..7f26802
--- /dev/null
+++ b/cdo/bundles/org.eclipse.papyrus.cdo.core/src/org/eclipse/papyrus/cdo/internal/core/resource/CDOInternationalizationPreferenceModelProvider.java
@@ -0,0 +1,71 @@
+/*****************************************************************************
+ * Copyright (c) 2020 CEA LIST and others.
+ * 
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ *   CEA LIST - Initial API and implementation
+ *   
+ *****************************************************************************/
+
+package org.eclipse.papyrus.cdo.internal.core.resource;
+
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.emf.cdo.explorer.CDOExplorerUtil;
+import org.eclipse.emf.cdo.explorer.checkouts.CDOCheckout;
+import org.eclipse.emf.cdo.util.CDOURIUtil;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.papyrus.cdo.internal.core.Activator;
+import org.eclipse.papyrus.infra.core.resource.ModelSet;
+import org.eclipse.papyrus.infra.internationalization.modelresource.AbstractInternationalizationPreferenceModelProvider;
+import org.eclipse.papyrus.infra.internationalization.modelresource.InternationalizationPreferenceModel;
+
+
+public class CDOInternationalizationPreferenceModelProvider extends AbstractInternationalizationPreferenceModelProvider {
+
+
+	public CDOInternationalizationPreferenceModelProvider() {
+		super();
+	}
+
+	/**
+	 * @see org.eclipse.papyrus.infra.internationalization.modelresource.IInternationalizationPreferenceModelProvider#getInternationalizationPreferenceModelURI(org.eclipse.emf.common.util.URI)
+	 *
+	 * @param userModelURI
+	 * @return
+	 */
+	@Override
+	public URI getInternationalizationPreferenceModelURI(URI userModelURI) {
+		URI uriWithoutExtension = userModelURI.trimFileExtension();
+		IPath stateLocation = indexFolder.append(CDOURIUtil.extractResourcePath(uriWithoutExtension));
+		return URI.createFileURI(stateLocation.toString()).appendFileExtension(InternationalizationPreferenceModel.INTERNATIONALIZATION_PREFERENCE_FILE_EXTENSION);
+	}
+
+	private static final IPath INTERNATIONALIZATION_PREFERENCE_MODEL_STORAGE_ROOT = Activator.getDefault().getStateLocation().append("internationalizationidx"); //$NON-NLS-1$
+
+	private IPath indexFolder;
+
+	@Override
+	public void initialize(ModelSet modelSet) {
+		super.initialize(modelSet);
+
+		CDOCheckout checkout = CDOExplorerUtil.getCheckout(modelSet);
+		if (checkout != null) {
+			initialize(checkout);
+		} else {
+			// Model probably is in the workspace if null
+			indexFolder = INTERNATIONALIZATION_PREFERENCE_MODEL_STORAGE_ROOT;
+		}
+	}
+
+	public CDOInternationalizationPreferenceModelProvider initialize(CDOCheckout checkout) {
+		indexFolder = INTERNATIONALIZATION_PREFERENCE_MODEL_STORAGE_ROOT.append(checkout.getView().getSession().getRepositoryInfo().getUUID());
+		return this;
+	}
+
+}
