diff --git a/src/main/java/org/olat/core/commons/services/doceditor/collabora/restapi/FilesWebService.java b/src/main/java/org/olat/core/commons/services/doceditor/collabora/restapi/FilesWebService.java
index 0cddee96515f41ff2aaa402f5cecc4df694856e3..11da30f1a788be5bfd130074a521a9942d0af58c 100644
--- a/src/main/java/org/olat/core/commons/services/doceditor/collabora/restapi/FilesWebService.java
+++ b/src/main/java/org/olat/core/commons/services/doceditor/collabora/restapi/FilesWebService.java
@@ -19,7 +19,7 @@
  */
 package org.olat.core.commons.services.doceditor.collabora.restapi;
 
-import static org.olat.core.commons.services.doceditor.wopi.WopiRestHelper.getAsIso6801;
+import static org.olat.core.commons.services.doceditor.wopi.WopiRestHelper.getAsIso8601;
 import static org.olat.core.commons.services.doceditor.wopi.WopiRestHelper.getFirstRequestHeader;
 
 import java.io.InputStream;
@@ -108,7 +108,7 @@ public class FilesWebService {
 				.withUserId(access.getIdentity().getKey().toString())
 				.withUserFriendlyName(userManager.getUserDisplayName(access.getIdentity()))
 				.withVersion(String.valueOf(metadata.getRevisionNr()))
-				.withLastModifiedTime(getAsIso6801(metadata.getLastModified()))
+				.withLastModifiedTime(getAsIso8601(metadata.getLastModified()))
 				.withUserCanWrite(access.isCanEdit())
 				.withDisablePrint(Boolean.FALSE)
 				.withUserCanNotWriteRelative(Boolean.TRUE)
@@ -195,7 +195,7 @@ public class FilesWebService {
 			boolean updated = collaboraService.updateContent(access, fileInputStream);
 			if (updated) {
 				PutFileVO putFileVO = PutFileVO.builder()
-					.withLastModifiedTime(getAsIso6801(new Date()))
+					.withLastModifiedTime(getAsIso8601(new Date()))
 					.build();
 				logPutFileResponse(putFileVO);
 				
diff --git a/src/main/java/org/olat/core/commons/services/doceditor/office365/Office365Service.java b/src/main/java/org/olat/core/commons/services/doceditor/office365/Office365Service.java
index d212cbc2ed76410ab6314d8d4cadf2951cf93d99..7b2db3188f76e7935aac12a4b6c78871802f9c2b 100644
--- a/src/main/java/org/olat/core/commons/services/doceditor/office365/Office365Service.java
+++ b/src/main/java/org/olat/core/commons/services/doceditor/office365/Office365Service.java
@@ -21,6 +21,7 @@ package org.olat.core.commons.services.doceditor.office365;
 
 import java.io.InputStream;
 import java.util.Collection;
+import java.util.Locale;
 
 import org.olat.core.commons.services.doceditor.DocEditor.Mode;
 import org.olat.core.commons.services.doceditor.DocEditorSecurityCallback;
@@ -56,7 +57,7 @@ public interface Office365Service {
 	
 	Collection<String> getContentSecurityPolicyUrls();
 
-	String getEditorActionUrl(VFSMetadata vfsMetadata);
+	String getEditorActionUrl(VFSMetadata vfsMetadata, Mode mode, Locale locale);
 	
 	boolean isSupportingFormat(String suffix, Mode mode);
 	
diff --git a/src/main/java/org/olat/core/commons/services/doceditor/office365/manager/Office365ServiceImpl.java b/src/main/java/org/olat/core/commons/services/doceditor/office365/manager/Office365ServiceImpl.java
index 0444398c73a9db33855b991433294d101eb81d00..0d0ece0ed0a4c69707d42c6d8ed768406c7ff6a8 100644
--- a/src/main/java/org/olat/core/commons/services/doceditor/office365/manager/Office365ServiceImpl.java
+++ b/src/main/java/org/olat/core/commons/services/doceditor/office365/manager/Office365ServiceImpl.java
@@ -26,6 +26,7 @@ import java.util.Calendar;
 import java.util.Collection;
 import java.util.Date;
 import java.util.HashSet;
+import java.util.Locale;
 import java.util.Set;
 
 import javax.annotation.PostConstruct;
@@ -241,33 +242,47 @@ public class Office365ServiceImpl implements Office365Service, GenericEventListe
 	}
 
 	@Override
-	public String getEditorActionUrl(VFSMetadata vfsMetadata) {
-		StringBuilder wopiPath = new StringBuilder();
-		wopiPath.append(Settings.getServerContextPathURI());
-		wopiPath.append(RestSecurityHelper.SUB_CONTEXT);
-		wopiPath.append("/office365/wopi/files/");
-		wopiPath.append(vfsMetadata.getUuid());
+	public String getEditorActionUrl(VFSMetadata vfsMetadata, Mode mode, Locale locale) {
+		String rawActionUrl = getRawActionUrl(vfsMetadata, mode);
+		String wopiSrcUrl = getWopiSrcUrl(vfsMetadata);
 
 		StringBuilder urlSb = new StringBuilder();
-		urlSb.append(getEditorBaseUrl(vfsMetadata));
-		urlSb.append("WOPISrc=");
-		urlSb.append(StringHelper.urlEncodeUTF8(wopiPath.toString()));
+		urlSb.append(urlParser.stripQuery(rawActionUrl));
+		urlSb.append("?");
+		urlSb.append("WOPISrc");
+		urlSb.append("=");
+		urlSb.append(StringHelper.urlEncodeUTF8(wopiSrcUrl));
+		String languageParameter = urlParser.getLanguageParameter(rawActionUrl);
+		if (languageParameter != null) {
+			urlSb.append("&");
+			urlSb.append(languageParameter);
+			urlSb.append("=");
+			urlSb.append(locale.toString());
+		}
+		
 		String url = urlSb.toString();
 		log.debug("Editor action URL: " + url);
 		return url;
 	}
 
-	private String getEditorBaseUrl(VFSMetadata vfsMetadata) {
+	private String getRawActionUrl(VFSMetadata vfsMetadata, Mode mode) {
 		String suffix = FileUtils.getFileSuffix(vfsMetadata.getFilename());
-		Action action = wopiService.getAction(getDiscovery(), "edit", suffix);
-		if (action == null) {
+		Action action = null;
+		if (Mode.EDIT.equals(mode)) {
+			action = wopiService.getAction(getDiscovery(), "edit", suffix);
+		} else if (Mode.VIEW.equals(mode)) {
 			action = wopiService.getAction(getDiscovery(), "view", suffix);
 		}
+		return action != null? action.getUrlSrc(): null;
+	}
 
-		String url = action != null? action.getUrlSrc(): null;
-		// replace all url query parameters
-		url = url!= null? url.substring(0, url.indexOf("?") + 1): null;
-		return url;
+	private String getWopiSrcUrl(VFSMetadata vfsMetadata) {
+		StringBuilder wopiPath = new StringBuilder();
+		wopiPath.append(Settings.getServerContextPathURI());
+		wopiPath.append(RestSecurityHelper.SUB_CONTEXT);
+		wopiPath.append("/office365/wopi/files/");
+		wopiPath.append(vfsMetadata.getUuid());
+		return wopiPath.toString();
 	}
 
 	@Override
diff --git a/src/main/java/org/olat/core/commons/services/doceditor/office365/manager/UrlParser.java b/src/main/java/org/olat/core/commons/services/doceditor/office365/manager/UrlParser.java
index 1a272ad397a7d40bc69c98f3c697fb80b79c3844..84a013872f48a2566ebcc3a7a939ccc6e3ebee5e 100644
--- a/src/main/java/org/olat/core/commons/services/doceditor/office365/manager/UrlParser.java
+++ b/src/main/java/org/olat/core/commons/services/doceditor/office365/manager/UrlParser.java
@@ -35,6 +35,8 @@ import org.springframework.stereotype.Service;
 class UrlParser {
 
 	private static final OLog log = Tracing.createLoggerFor(UrlParser.class);
+	
+	private static final String LANGUAGE_PARAMETER = "UI_LLCC";
 
 	String getProtocolAndDomain(String url) {
 		try {
@@ -49,8 +51,22 @@ class UrlParser {
 		return null;
 	}
 
-	private String stripQuery(String url) {
-		return url!= null && url.indexOf("?") > -1? url.substring(0, url.indexOf("?")): null;
+	String stripQuery(String url) {
+		return url != null && url.indexOf("?") > -1? url.substring(0, url.indexOf("?")): null;
+	}
+
+	String getLanguageParameter(String url) {
+		int languageParameterIndey = url.indexOf(LANGUAGE_PARAMETER);
+		if (languageParameterIndey > -1) {
+			int start = url.lastIndexOf("<", languageParameterIndey);
+			if (start > -1) {
+				int end = url.lastIndexOf("=", languageParameterIndey);
+				if (end > -1) {
+					return url.substring(start + 1, end);
+				}
+			}
+		}
+		return null;
 	}
 
 }
diff --git a/src/main/java/org/olat/core/commons/services/doceditor/office365/restapi/Office365WebService.java b/src/main/java/org/olat/core/commons/services/doceditor/office365/restapi/Office365WebService.java
index 47e49b93ca6587d6ea6ac65533b87181c96edd66..eaab1548af3e96931f36c8b6ddb8750ca483dece 100644
--- a/src/main/java/org/olat/core/commons/services/doceditor/office365/restapi/Office365WebService.java
+++ b/src/main/java/org/olat/core/commons/services/doceditor/office365/restapi/Office365WebService.java
@@ -19,6 +19,8 @@
  */
 package org.olat.core.commons.services.doceditor.office365.restapi;
 
+import static org.olat.core.commons.services.doceditor.wopi.WopiRestHelper.getAsIso8601;
+
 import java.io.InputStream;
 import java.util.List;
 import java.util.Map.Entry;
@@ -119,6 +121,7 @@ public class Office365WebService {
 				.withUserId(access.getIdentity().getKey().toString())
 				.withUserFriendlyName(userManager.getUserDisplayName(access.getIdentity()))
 				.withVersion(String.valueOf(metadata.getRevisionNr()))
+				.withLastModifiedTime(getAsIso8601(metadata.getLastModified()))
 				.withSupportsGetLock(true)
 				.withSupportsLocks(true)
 				.withSupportsExtendedLockLength(true)
diff --git a/src/main/java/org/olat/core/commons/services/doceditor/office365/ui/Office365EditorController.java b/src/main/java/org/olat/core/commons/services/doceditor/office365/ui/Office365EditorController.java
index 45b381f0bf7f42b07e6bf0956252b203676f83e9..4a25848618ef9aa27319db7d8fffd35011b7ea85 100644
--- a/src/main/java/org/olat/core/commons/services/doceditor/office365/ui/Office365EditorController.java
+++ b/src/main/java/org/olat/core/commons/services/doceditor/office365/ui/Office365EditorController.java
@@ -66,10 +66,14 @@ public class Office365EditorController extends BasicController {
 			mainVC.contextPut("warning", translate("editor.warning.no.metadata"));
 		} else {
 			Access access = office365Service.createAccess(vfsMetadata, getIdentity(), secCallback);
-			String actionUrl = office365Service.getEditorActionUrl(vfsMetadata);
-			mainVC.contextPut("actionUrl", actionUrl);
-			mainVC.contextPut("accessToken", access.getToken());
-			mainVC.contextPut("accessTokenTtl", access.getExpiresAt().getTime());
+			String actionUrl = office365Service.getEditorActionUrl(vfsMetadata, secCallback.getMode(), getLocale());
+			if (actionUrl == null) {
+				mainVC.contextPut("warning", translate("editor.warning.no.metadata"));
+			} else {
+				mainVC.contextPut("actionUrl", actionUrl);
+				mainVC.contextPut("accessToken", access.getToken());
+				mainVC.contextPut("accessTokenTtl", access.getExpiresAt().getTime());
+			}
 		}
 		
 		putInitialPanel(mainVC);
diff --git a/src/main/java/org/olat/core/commons/services/doceditor/wopi/WopiRestHelper.java b/src/main/java/org/olat/core/commons/services/doceditor/wopi/WopiRestHelper.java
index 3419a8f19a0bffb4620467f47adb076d1e932fa8..4642099a7ef1c56c7fba47d7e8f5e859370a7f80 100644
--- a/src/main/java/org/olat/core/commons/services/doceditor/wopi/WopiRestHelper.java
+++ b/src/main/java/org/olat/core/commons/services/doceditor/wopi/WopiRestHelper.java
@@ -39,12 +39,12 @@ public class WopiRestHelper {
 		return requestHeader != null && !requestHeader.isEmpty()? requestHeader.get(0): null;
 	}
 
-	public static String getLastModifiedAsIso6801(File file) {
+	public static String getLastModifiedAsIso8601(File file) {
 		long lastModified = file.lastModified();
 		return Instant.ofEpochMilli(lastModified).toString();
 	}
 	
-	public static String getAsIso6801(Date date) {
+	public static String getAsIso8601(Date date) {
 		long lastModified = date.getTime();
 		return Instant.ofEpochMilli(lastModified).toString();
 	}
diff --git a/src/test/java/org/olat/core/commons/services/doceditor/office365/manager/UrlParserTest.java b/src/test/java/org/olat/core/commons/services/doceditor/office365/manager/UrlParserTest.java
index 0fd957284bc0c78d0f916438364d881b8a81a092..af1b1a9c934b773eee04210bff5dcf7666f59c8c 100644
--- a/src/test/java/org/olat/core/commons/services/doceditor/office365/manager/UrlParserTest.java
+++ b/src/test/java/org/olat/core/commons/services/doceditor/office365/manager/UrlParserTest.java
@@ -41,5 +41,33 @@ public class UrlParserTest {
 		
 		assertThat(protocolAndDomain).isEqualTo("https://FFC-excel.officeapps.live.com");
 	}
+	
+	@Test
+	public void shouldStripQuery() {
+		String url = "https://FFC-excel.officeapps.live.com/x/_layouts/xlembed.aspx?<ui=UI_LLCC&><rs=DC_LLCC&><dchat=DISABLE_CHAT&><hid=HOST_SESSION_ID&><sc=SESSION_CONTEXT&><wopisrc=WOPI_SOURCE&>";
+		
+		String strippedUrl = sut.stripQuery(url);
+		
+		assertThat(strippedUrl).isEqualTo("https://FFC-excel.officeapps.live.com/x/_layouts/xlembed.aspx");
+	}
+	
+	@Test
+	public void shouldGetLanguageParameter() {
+		String url = "https://FFC-excel.officeapps.live.com/x/_layouts/xlembed.aspx?<ui=UI_LLCC&><rs=DC_LLCC&><dchat=DISABLE_CHAT&><hid=HOST_SESSION_ID&><sc=SESSION_CONTEXT&><wopisrc=WOPI_SOURCE&>";
+		
+		String languageParameter = sut.getLanguageParameter(url);
+		
+		assertThat(languageParameter).isEqualTo("ui");
+	}
+	
+	@Test
+	public void shouldGetLanguageParameterNotFound() {
+		String url = "https://FFC-excel.officeapps.live.com/x/_layouts/xlembed.aspx?<rs=DC_LLCC&><dchat=DISABLE_CHAT&><hid=HOST_SESSION_ID&><sc=SESSION_CONTEXT&><wopisrc=WOPI_SOURCE&>";
+		
+		String languageParameter = sut.getLanguageParameter(url);
+		
+		assertThat(languageParameter).isNull();
+	}
+
 
 }