[Libreoffice-commits] online.git: Branch 'distro/collabora/co-4-2-8' - 13 commits - android/app android/lib cypress_test/integration_tests ios/CollaboraOnlineWebViewKeyboardManager ios/Mobile ios/Mobile.xcodeproj loleaflet/css loleaflet/html loleaflet/po loleaflet/src

Pranam Lashkari (via logerrit) logerrit at kemper.freedesktop.org
Wed Sep 2 19:01:49 UTC 2020


 android/app/src/main/res/values-af/strings.xml                                    |   33 
 android/app/src/main/res/values-an/strings.xml                                    |   13 
 android/app/src/main/res/values-da/strings.xml                                    |  107 +
 android/app/src/main/res/values-eo/strings.xml                                    |   85 +
 android/app/src/main/res/values-gl/strings.xml                                    |    3 
 android/app/src/main/res/values-id/strings.xml                                    |   15 
 android/app/src/main/res/values-ko/strings.xml                                    |   19 
 android/app/src/main/res/values-nl/strings.xml                                    |    3 
 android/app/src/main/res/values-sl/strings.xml                                    |    3 
 android/app/src/main/res/values-uk/strings.xml                                    |    3 
 android/lib/src/main/res/values-af/strings.xml                                    |   16 
 android/lib/src/main/res/values-ast/strings.xml                                   |    4 
 android/lib/src/main/res/values-bg/strings.xml                                    |    1 
 android/lib/src/main/res/values-ca/strings.xml                                    |    1 
 android/lib/src/main/res/values-cs/strings.xml                                    |    1 
 android/lib/src/main/res/values-cy/strings.xml                                    |    1 
 android/lib/src/main/res/values-da/strings.xml                                    |   16 
 android/lib/src/main/res/values-de/strings.xml                                    |    1 
 android/lib/src/main/res/values-dsb/strings.xml                                   |    1 
 android/lib/src/main/res/values-el/strings.xml                                    |    1 
 android/lib/src/main/res/values-eo/strings.xml                                    |   11 
 android/lib/src/main/res/values-es/strings.xml                                    |    1 
 android/lib/src/main/res/values-eu/strings.xml                                    |    1 
 android/lib/src/main/res/values-fr/strings.xml                                    |    1 
 android/lib/src/main/res/values-gl/strings.xml                                    |    1 
 android/lib/src/main/res/values-hsb/strings.xml                                   |    1 
 android/lib/src/main/res/values-hu/strings.xml                                    |    1 
 android/lib/src/main/res/values-id/strings.xml                                    |    1 
 android/lib/src/main/res/values-it/strings.xml                                    |    1 
 android/lib/src/main/res/values-ja/strings.xml                                    |    1 
 android/lib/src/main/res/values-nb-rNO/strings.xml                                |    1 
 android/lib/src/main/res/values-pl/strings.xml                                    |    1 
 android/lib/src/main/res/values-pt-rBR/strings.xml                                |    1 
 android/lib/src/main/res/values-sk/strings.xml                                    |    1 
 android/lib/src/main/res/values-sl/strings.xml                                    |    1 
 android/lib/src/main/res/values-sv/strings.xml                                    |    1 
 android/lib/src/main/res/values-uk/strings.xml                                    |    1 
 android/lib/src/main/res/values-zh-rCN/strings.xml                                |    1 
 cypress_test/integration_tests/mobile/calc/calc_helper.js                         |   12 
 cypress_test/integration_tests/mobile/calc/spellchecking_spec.js                  |   18 
 ios/CollaboraOnlineWebViewKeyboardManager/CollaboraOnlineWebViewKeyboardManager.h |   28 
 ios/CollaboraOnlineWebViewKeyboardManager/CollaboraOnlineWebViewKeyboardManager.m |  300 +++++
 ios/Mobile.xcodeproj/project.pbxproj                                              |    6 
 ios/Mobile/DocumentViewController.mm                                              |   28 
 loleaflet/css/device-mobile.css                                                   |    2 
 loleaflet/css/mobilewizard.css                                                    |    4 
 loleaflet/css/toolbar.css                                                         |   18 
 loleaflet/html/loleaflet.html.m4                                                  |   15 
 loleaflet/po/help-ab.po                                                           |    8 
 loleaflet/po/help-af.po                                                           |    2 
 loleaflet/po/help-am.po                                                           |    8 
 loleaflet/po/help-an.po                                                           |    2 
 loleaflet/po/help-anp.po                                                          |    2 
 loleaflet/po/help-ar.po                                                           |    8 
 loleaflet/po/help-as.po                                                           |    2 
 loleaflet/po/help-ast.po                                                          |    2 
 loleaflet/po/help-az.po                                                           |    2 
 loleaflet/po/help-bar.po                                                          |    2 
 loleaflet/po/help-be.po                                                           |    4 
 loleaflet/po/help-bg.po                                                           |    2 
 loleaflet/po/help-bm.po                                                           |    2 
 loleaflet/po/help-bn.po                                                           |    2 
 loleaflet/po/help-bn_IN.po                                                        |    2 
 loleaflet/po/help-bo.po                                                           |    2 
 loleaflet/po/help-br.po                                                           |    2 
 loleaflet/po/help-brx.po                                                          |    2 
 loleaflet/po/help-bs.po                                                           |    3 
 loleaflet/po/help-ca-valencia.po                                                  |  102 -
 loleaflet/po/help-ca.po                                                           |   12 
 loleaflet/po/help-ce.po                                                           |    2 
 loleaflet/po/help-cs.po                                                           |    2 
 loleaflet/po/help-cy.po                                                           |    2 
 loleaflet/po/help-da.po                                                           |  432 +++----
 loleaflet/po/help-de.po                                                           |    2 
 loleaflet/po/help-dgo.po                                                          |    2 
 loleaflet/po/help-dsb.po                                                          |    2 
 loleaflet/po/help-dz.po                                                           |    2 
 loleaflet/po/help-el.po                                                           |    2 
 loleaflet/po/help-en_AU.po                                                        |    2 
 loleaflet/po/help-en_GB.po                                                        |    2 
 loleaflet/po/help-en_ZA.po                                                        |    2 
 loleaflet/po/help-eo.po                                                           |  434 +++----
 loleaflet/po/help-es.po                                                           |    2 
 loleaflet/po/help-et.po                                                           |    2 
 loleaflet/po/help-eu.po                                                           |    2 
 loleaflet/po/help-fa.po                                                           |    2 
 loleaflet/po/help-fi.po                                                           |    3 
 loleaflet/po/help-fr.po                                                           |    2 
 loleaflet/po/help-fur.po                                                          |    2 
 loleaflet/po/help-fy.po                                                           |    2 
 loleaflet/po/help-ga.po                                                           |    3 
 loleaflet/po/help-gbm.po                                                          |    2 
 loleaflet/po/help-gd.po                                                           |    8 
 loleaflet/po/help-gl.po                                                           |    2 
 loleaflet/po/help-gu.po                                                           |    2 
 loleaflet/po/help-gug.po                                                          |    2 
 loleaflet/po/help-he.po                                                           |    8 
 loleaflet/po/help-hi.po                                                           |    7 
 loleaflet/po/help-hr.po                                                           |    4 
 loleaflet/po/help-hsb.po                                                          |    2 
 loleaflet/po/help-hu.po                                                           |    2 
 loleaflet/po/help-hy.po                                                           |    2 
 loleaflet/po/help-id.po                                                           |   12 
 loleaflet/po/help-is.po                                                           |    2 
 loleaflet/po/help-it.po                                                           |    2 
 loleaflet/po/help-ja.po                                                           |    8 
 loleaflet/po/help-jv.po                                                           |    3 
 loleaflet/po/help-ka.po                                                           |    2 
 loleaflet/po/help-kab.po                                                          |    2 
 loleaflet/po/help-kk.po                                                           |    4 
 loleaflet/po/help-kl.po                                                           |    2 
 loleaflet/po/help-km.po                                                           |    2 
 loleaflet/po/help-kmr-Latn.po                                                     |    2 
 loleaflet/po/help-kn.po                                                           |    3 
 loleaflet/po/help-ko.po                                                           |    8 
 loleaflet/po/help-kok.po                                                          |    2 
 loleaflet/po/help-ks.po                                                           |    2 
 loleaflet/po/help-ky.po                                                           |    2 
 loleaflet/po/help-lb.po                                                           |    2 
 loleaflet/po/help-lo.po                                                           |    2 
 loleaflet/po/help-lt.po                                                           |    3 
 loleaflet/po/help-lv.po                                                           |    4 
 loleaflet/po/help-mai.po                                                          |    2 
 loleaflet/po/help-mk.po                                                           |    2 
 loleaflet/po/help-ml.po                                                           |    2 
 loleaflet/po/help-mn.po                                                           |    4 
 loleaflet/po/help-mni.po                                                          |    2 
 loleaflet/po/help-mr.po                                                           |    2 
 loleaflet/po/help-mt.po                                                           |    2 
 loleaflet/po/help-my.po                                                           |    2 
 loleaflet/po/help-nah.po                                                          |    2 
 loleaflet/po/help-nb.po                                                           |  386 +++---
 loleaflet/po/help-ne.po                                                           |    8 
 loleaflet/po/help-nl.po                                                           |   42 
 loleaflet/po/help-nn.po                                                           |    8 
 loleaflet/po/help-nqo.po                                                          |    2 
 loleaflet/po/help-nr.po                                                           |    2 
 loleaflet/po/help-nso.po                                                          |    2 
 loleaflet/po/help-oc.po                                                           |    8 
 loleaflet/po/help-om.po                                                           |    2 
 loleaflet/po/help-or.po                                                           |    2 
 loleaflet/po/help-pa_IN.po                                                        |    6 
 loleaflet/po/help-pap_CW.po                                                       |    2 
 loleaflet/po/help-pl.po                                                           |    2 
 loleaflet/po/help-pt.po                                                           |    7 
 loleaflet/po/help-pt_BR.po                                                        |    2 
 loleaflet/po/help-ro.po                                                           |    8 
 loleaflet/po/help-ru.po                                                           |    8 
 loleaflet/po/help-rw.po                                                           |    2 
 loleaflet/po/help-sa_IN.po                                                        |    2 
 loleaflet/po/help-sah.po                                                          |    2 
 loleaflet/po/help-sat.po                                                          |    2 
 loleaflet/po/help-sd.po                                                           |    2 
 loleaflet/po/help-si.po                                                           |    2 
 loleaflet/po/help-sid.po                                                          |    2 
 loleaflet/po/help-sk.po                                                           |    2 
 loleaflet/po/help-sl.po                                                           |    2 
 loleaflet/po/help-sq.po                                                           |    4 
 loleaflet/po/help-ss.po                                                           |    2 
 loleaflet/po/help-st.po                                                           |    2 
 loleaflet/po/help-sv.po                                                           |    4 
 loleaflet/po/help-sw_TZ.po                                                        |    2 
 loleaflet/po/help-ta.po                                                           |    7 
 loleaflet/po/help-te.po                                                           |    2 
 loleaflet/po/help-tg.po                                                           |    2 
 loleaflet/po/help-th.po                                                           |    2 
 loleaflet/po/help-ti.po                                                           |    2 
 loleaflet/po/help-tn.po                                                           |    2 
 loleaflet/po/help-tr.po                                                           |   24 
 loleaflet/po/help-ts.po                                                           |    2 
 loleaflet/po/help-tt.po                                                           |    2 
 loleaflet/po/help-ug.po                                                           |    4 
 loleaflet/po/help-uk.po                                                           |    8 
 loleaflet/po/help-ur.po                                                           |    2 
 loleaflet/po/help-uz.po                                                           |    8 
 loleaflet/po/help-ve.po                                                           |    2 
 loleaflet/po/help-vec.po                                                          |    3 
 loleaflet/po/help-vi.po                                                           |    2 
 loleaflet/po/help-wo.po                                                           |    2 
 loleaflet/po/help-xh.po                                                           |    2 
 loleaflet/po/help-zh_CN.po                                                        |   58 -
 loleaflet/po/help-zh_TW.po                                                        |    7 
 loleaflet/po/help-zu.po                                                           |    2 
 loleaflet/po/ios-bs.po                                                            |   10 
 loleaflet/po/ios-da.po                                                            |    6 
 loleaflet/po/ios-eo.po                                                            |    6 
 loleaflet/po/ios-gl.po                                                            |    4 
 loleaflet/po/ios-id.po                                                            |    6 
 loleaflet/po/ui-ab.po                                                             |  357 +++---
 loleaflet/po/ui-af.po                                                             |  525 ++++-----
 loleaflet/po/ui-am.po                                                             |  359 +++---
 loleaflet/po/ui-an.po                                                             |  335 ++---
 loleaflet/po/ui-anp.po                                                            |  321 ++---
 loleaflet/po/ui-ar.po                                                             |  357 +++---
 loleaflet/po/ui-as.po                                                             |  321 ++---
 loleaflet/po/ui-ast.po                                                            |  352 +++---
 loleaflet/po/ui-az.po                                                             |  321 ++---
 loleaflet/po/ui-bar.po                                                            |  321 ++---
 loleaflet/po/ui-be.po                                                             |  321 ++---
 loleaflet/po/ui-bg.po                                                             |  351 +++---
 loleaflet/po/ui-bm.po                                                             |  321 ++---
 loleaflet/po/ui-bn.po                                                             |  321 ++---
 loleaflet/po/ui-bn_IN.po                                                          |  321 ++---
 loleaflet/po/ui-bo.po                                                             |  321 ++---
 loleaflet/po/ui-br.po                                                             |  321 ++---
 loleaflet/po/ui-brx.po                                                            |  321 ++---
 loleaflet/po/ui-bs.po                                                             |  349 +++---
 loleaflet/po/ui-ca-valencia.po                                                    |  348 +++---
 loleaflet/po/ui-ca.po                                                             |  351 +++---
 loleaflet/po/ui-ce.po                                                             |  321 ++---
 loleaflet/po/ui-cs.po                                                             |  365 +++---
 loleaflet/po/ui-cy.po                                                             |  348 +++---
 loleaflet/po/ui-da.po                                                             |  479 ++++----
 loleaflet/po/ui-de.po                                                             |  351 +++---
 loleaflet/po/ui-dgo.po                                                            |  321 ++---
 loleaflet/po/ui-dsb.po                                                            |  354 +++---
 loleaflet/po/ui-dz.po                                                             |  321 ++---
 loleaflet/po/ui-el.po                                                             |  354 +++---
 loleaflet/po/ui-en_AU.po                                                          |  321 ++---
 loleaflet/po/ui-en_GB.po                                                          |  366 +++---
 loleaflet/po/ui-en_ZA.po                                                          |  321 ++---
 loleaflet/po/ui-eo.po                                                             |  564 +++++-----
 loleaflet/po/ui-et.po                                                             |  353 +++---
 loleaflet/po/ui-eu.po                                                             |  351 +++---
 loleaflet/po/ui-fa.po                                                             |  321 ++---
 loleaflet/po/ui-fi.po                                                             |  356 +++---
 loleaflet/po/ui-fr.po                                                             |  355 +++---
 loleaflet/po/ui-fur.po                                                            |  321 ++---
 loleaflet/po/ui-fy.po                                                             |  321 ++---
 loleaflet/po/ui-ga.po                                                             |  353 +++---
 loleaflet/po/ui-gbm.po                                                            |  321 ++---
 loleaflet/po/ui-gd.po                                                             |  359 +++---
 loleaflet/po/ui-gl.po                                                             |  369 +++---
 loleaflet/po/ui-gu.po                                                             |  321 ++---
 loleaflet/po/ui-gug.po                                                            |  331 ++---
 loleaflet/po/ui-he.po                                                             |  356 +++---
 loleaflet/po/ui-hi.po                                                             |  356 +++---
 loleaflet/po/ui-hr.po                                                             |  356 +++---
 loleaflet/po/ui-hsb.po                                                            |  354 +++---
 loleaflet/po/ui-hu.po                                                             |  351 +++---
 loleaflet/po/ui-hy.po                                                             |  321 ++---
 loleaflet/po/ui-id.po                                                             |  384 +++---
 loleaflet/po/ui-is.po                                                             |  351 +++---
 loleaflet/po/ui-it.po                                                             |  348 +++---
 loleaflet/po/ui-ja.po                                                             |  357 +++---
 loleaflet/po/ui-jv.po                                                             |  349 +++---
 loleaflet/po/ui-ka.po                                                             |  321 ++---
 loleaflet/po/ui-kab.po                                                            |  331 ++---
 loleaflet/po/ui-kk.po                                                             |  349 +++---
 loleaflet/po/ui-kl.po                                                             |  321 ++---
 loleaflet/po/ui-km.po                                                             |  321 ++---
 loleaflet/po/ui-kmr-Latn.po                                                       |  321 ++---
 loleaflet/po/ui-kn.po                                                             |  321 ++---
 loleaflet/po/ui-ko.po                                                             |  354 +++---
 loleaflet/po/ui-kok.po                                                            |  321 ++---
 loleaflet/po/ui-ks.po                                                             |  321 ++---
 loleaflet/po/ui-ky.po                                                             |  321 ++---
 loleaflet/po/ui-lb.po                                                             |  321 ++---
 loleaflet/po/ui-lo.po                                                             |  353 +++---
 loleaflet/po/ui-lt.po                                                             |  350 +++---
 loleaflet/po/ui-lv.po                                                             |  357 +++---
 loleaflet/po/ui-mai.po                                                            |  321 ++---
 loleaflet/po/ui-mk.po                                                             |  321 ++---
 loleaflet/po/ui-ml.po                                                             |  321 ++---
 loleaflet/po/ui-mn.po                                                             |  321 ++---
 loleaflet/po/ui-mni.po                                                            |  321 ++---
 loleaflet/po/ui-mr.po                                                             |  321 ++---
 loleaflet/po/ui-mt.po                                                             |  321 ++---
 loleaflet/po/ui-my.po                                                             |  321 ++---
 loleaflet/po/ui-nah.po                                                            |  321 ++---
 loleaflet/po/ui-nb.po                                                             |  351 +++---
 loleaflet/po/ui-ne.po                                                             |  359 +++---
 loleaflet/po/ui-nl.po                                                             |  353 +++---
 loleaflet/po/ui-nn.po                                                             |  360 +++---
 loleaflet/po/ui-nqo.po                                                            |  321 ++---
 loleaflet/po/ui-nr.po                                                             |  321 ++---
 loleaflet/po/ui-nso.po                                                            |  321 ++---
 loleaflet/po/ui-oc.po                                                             |  350 +++---
 loleaflet/po/ui-om.po                                                             |  321 ++---
 loleaflet/po/ui-or.po                                                             |  321 ++---
 loleaflet/po/ui-pa_IN.po                                                          |  359 +++---
 loleaflet/po/ui-pap_CW.po                                                         |  321 ++---
 loleaflet/po/ui-pl.po                                                             |  354 +++---
 loleaflet/po/ui-pt.po                                                             |  349 +++---
 loleaflet/po/ui-pt_BR.po                                                          |  354 +++---
 loleaflet/po/ui-ro.po                                                             |  357 +++---
 loleaflet/po/ui-ru.po                                                             |  356 +++---
 loleaflet/po/ui-rw.po                                                             |  321 ++---
 loleaflet/po/ui-sa_IN.po                                                          |  321 ++---
 loleaflet/po/ui-sah.po                                                            |  321 ++---
 loleaflet/po/ui-sat.po                                                            |  321 ++---
 loleaflet/po/ui-sd.po                                                             |  321 ++---
 loleaflet/po/ui-si.po                                                             |  321 ++---
 loleaflet/po/ui-sid.po                                                            |  321 ++---
 loleaflet/po/ui-sk.po                                                             |  348 +++---
 loleaflet/po/ui-sl.po                                                             |  372 +++---
 loleaflet/po/ui-sq.po                                                             |  329 ++---
 loleaflet/po/ui-ss.po                                                             |  321 ++---
 loleaflet/po/ui-st.po                                                             |  321 ++---
 loleaflet/po/ui-sv.po                                                             |  348 +++---
 loleaflet/po/ui-sw_TZ.po                                                          |  321 ++---
 loleaflet/po/ui-ta.po                                                             |  350 +++---
 loleaflet/po/ui-te.po                                                             |  321 ++---
 loleaflet/po/ui-tg.po                                                             |  321 ++---
 loleaflet/po/ui-th.po                                                             |  325 ++---
 loleaflet/po/ui-ti.po                                                             |  321 ++---
 loleaflet/po/ui-tn.po                                                             |  321 ++---
 loleaflet/po/ui-tr.po                                                             |  366 +++---
 loleaflet/po/ui-ts.po                                                             |  321 ++---
 loleaflet/po/ui-tt.po                                                             |  321 ++---
 loleaflet/po/ui-ug.po                                                             |  350 +++---
 loleaflet/po/ui-uk.po                                                             |  376 +++---
 loleaflet/po/ui-ur.po                                                             |  321 ++---
 loleaflet/po/ui-uz.po                                                             |  350 +++---
 loleaflet/po/ui-ve.po                                                             |  321 ++---
 loleaflet/po/ui-vec.po                                                            |  356 +++---
 loleaflet/po/ui-vi.po                                                             |  321 ++---
 loleaflet/po/ui-wo.po                                                             |  321 ++---
 loleaflet/po/ui-xh.po                                                             |  321 ++---
 loleaflet/po/ui-zh_CN.po                                                          |  359 +++---
 loleaflet/po/ui-zh_TW.po                                                          |  367 +++---
 loleaflet/po/ui-zu.po                                                             |  321 ++---
 loleaflet/src/control/Control.JSDialogBuilder.js                                  |    2 
 loleaflet/src/layer/marker/TextInput.js                                           |   35 
 loleaflet/src/layer/tile/TileLayer.js                                             |   31 
 325 files changed, 24566 insertions(+), 23879 deletions(-)

New commits:
commit 2ba27901d6477e449319ec8ca4e8652c71ef5599
Author:     Pranam Lashkari <lpranam at collabora.com>
AuthorDate: Sun Aug 9 23:50:30 2020 +0530
Commit:     Andras Timar <andras.timar at collabora.com>
CommitDate: Wed Sep 2 21:00:53 2020 +0200

    leaflet: hyperlink popup will not displace the view
    
    hyperlink popups always opend above the links
    when it did not fit into the view it would scroll
    this scrolling caused problem in calc by messing the grid
    
    now popup will not trigger the scroll
    and would be adjusted to fit in view
    
    Change-Id: I6c886e0dc57b010db16f51baed0e7a0465e52d4f
    Reviewed-on: https://gerrit.libreoffice.org/c/online/+/101863
    Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice at gmail.com>
    Reviewed-by: Andras Timar <andras.timar at collabora.com>

diff --git a/loleaflet/src/layer/tile/TileLayer.js b/loleaflet/src/layer/tile/TileLayer.js
index cba7cf179..ba0157ac7 100644
--- a/loleaflet/src/layer/tile/TileLayer.js
+++ b/loleaflet/src/layer/tile/TileLayer.js
@@ -1207,13 +1207,42 @@ L.TileLayer = L.GridLayer.extend({
 	_showURLPopUp: function(position, url) {
 		// # for internal links
 		if (!url.startsWith('#')) {
-			this._map.hyperlinkPopup = new L.Popup({className: 'hyperlink-popup', closeButton: false, closeOnClick: false})
+			this._map.hyperlinkPopup = new L.Popup({className: 'hyperlink-popup', closeButton: false, closeOnClick: false, autoPan: false})
 			.setContent('<a href="' + url + '" target="_blank">' + url + '</a>')
 			.setLatLng(position)
 			.openOn(this._map);
+			var offsetDiffTop = $('.hyperlink-popup').offset().top - $('#map').offset().top;
+			var offsetDiffLeft = $('.hyperlink-popup').offset().left - $('#map').offset().left;
+			if (offsetDiffTop < 10) this._movePopUpBelow();
+			if (offsetDiffLeft < 10) this._movePopUpRight();
 		}
 	},
 
+	_movePopUpBelow: function() {
+		var popUp = $('.hyperlink-popup').first();
+		var pixBounds = L.bounds(this._map.latLngToLayerPoint(this._visibleCursor.getSouthWest()),
+			this._map.latLngToLayerPoint(this._visibleCursor.getNorthEast()));
+		var cursorSize = pixBounds.getSize().multiplyBy(this._map.getZoomScale(this._map.getZoom()));
+		var bottom = cursorSize.y + popUp.height();
+
+		popUp.css({
+			'bottom': bottom ? -bottom + 'px': '',
+			'display': 'flex',
+			'flex-direction': 'column-reverse'
+		});
+		$('.leaflet-popup-tip-container').first().css('transform', 'rotate(180deg)');
+	},
+
+	_movePopUpRight: function() {
+		$('.leaflet-popup-content-wrapper').first().css({
+			'position': 'relative',
+			'left': this._map.hyperlinkPopup._containerLeft * -1
+		});
+		$('.leaflet-popup-tip-container').first().css({
+			'left': '25px'
+		});
+	},
+
 	_closeURLPopUp: function() {
 		this._map.closePopup(this._map.hyperlinkPopup);
 		this._map.hyperlinkPopup = null;
commit f85323324fd5852083f68a34854a8bbf2a944933
Author:     Tor Lillqvist <tml at collabora.com>
AuthorDate: Tue Sep 1 16:58:17 2020 +0300
Commit:     Andras Timar <andras.timar at collabora.com>
CommitDate: Wed Sep 2 21:00:53 2020 +0200

    tdf#133284: Improve hardware and on-screen keyboard in the iOS app
    
    This is a quite complicated change that should both fix tdf#133284
    (cursor keys on a hardware keyboard do not work in a spreadsheet
    document) and also improve the interaction with
    CollaboraOnlineWebViewKeyboardManager that manages the on-screen
    keyboard. We need to jump through complicated hoops in order to get
    the hardware cursor keys handled right after loading a spreadsheet
    document.
    
    In the CollaboraOnlineWebViewKeyboardManager case we try harder to
    keep loleaflet's _textArea buffer in sync with what the UITextView in
    CollaboraOnlineWebViewKeyboardManager uses to provide suggestions
    above the on-screen keyboard.
    
    Also merges in related changes from today to
    CollaboraOnlineWebViewKeyboardManager.
    
    Change-Id: Ic4acb54bd4e815aa8bfb2bf40b08493446ae5ab0
    Reviewed-on: https://gerrit.libreoffice.org/c/online/+/101878
    Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice at gmail.com>
    Reviewed-by: Tor Lillqvist <tml at collabora.com>
    Reviewed-on: https://gerrit.libreoffice.org/c/online/+/101953

diff --git a/ios/CollaboraOnlineWebViewKeyboardManager/CollaboraOnlineWebViewKeyboardManager.m b/ios/CollaboraOnlineWebViewKeyboardManager/CollaboraOnlineWebViewKeyboardManager.m
index 561b726d6..fd1bcaff3 100644
--- a/ios/CollaboraOnlineWebViewKeyboardManager/CollaboraOnlineWebViewKeyboardManager.m
+++ b/ios/CollaboraOnlineWebViewKeyboardManager/CollaboraOnlineWebViewKeyboardManager.m
@@ -79,6 +79,18 @@
 
     NSMutableString *quotedText = [NSMutableString string];
 
+    int location = range.location;
+
+    if (location < self.text.length && location + range.length == self.text.length) {
+        // To guard against possible mismatch between our self.text and the _textArea.value in
+        // TextInput.js, we indicate deletion or replacement from the end with negative location.
+        location = location - self.text.length;
+    }
+    else if (range.location == 0 && range.length == 0 && text.length == 0) {
+        // Backspace without anything known about preceding text
+        location = -1;
+    }
+
     for (unsigned i = 0; i < text.length; i++) {
         const unichar c = [text characterAtIndex:i];
         if (c == '\'' || c == '\\') {
@@ -93,7 +105,7 @@
 
     NSMutableString *message = [NSMutableString string];
 
-    [message appendFormat:@"{id: 'COKbdMgr', command: 'replaceText', location: %lu, length: %lu, text: '", range.location, range.length];
+    [message appendFormat:@"{id: 'COKbdMgr', command: 'replaceText', location: %d, length: %lu, text: '", location, range.length];
     [message appendString:quotedText];
     [message appendString:@"'}"];
 
@@ -209,15 +221,15 @@
         // will be added.
         control.autocapitalizationType = UITextAutocapitalizationTypeNone;
 
-        control.text = text;
-        control.selectedRange = NSMakeRange(location, 0);
-
         lastCommandIsHide = NO;
 
         [self->webView addSubview:control];
         NSLog(@"COKbdMgr: Added _COWVKMKeyInputControl to webView");
         [control becomeFirstResponder];
     }
+    control.text = text;
+    control.selectedRange = NSMakeRange(location, 0);
+
 }
 
 - (void)hideKeyboard {
@@ -253,6 +265,8 @@
             NSString *text = message.body[@"text"];
             NSNumber *location = message.body[@"location"];
             NSLog(@"COKbdMgr: command=display type=%@ text=%@ location=%@", type, text, location);
+            if (text == nil)
+                text = @"";
             [self displayKeyboardOfType:type withText:text at:(location != nil ? [location unsignedIntegerValue] : UINT_MAX)];
         } else if ([stringCommand isEqualToString:@"hide"]) {
             lastCommandIsHide = YES;
diff --git a/ios/Mobile/DocumentViewController.mm b/ios/Mobile/DocumentViewController.mm
index cefd23c9e..eab598c2a 100644
--- a/ios/Mobile/DocumentViewController.mm
+++ b/ios/Mobile/DocumentViewController.mm
@@ -105,8 +105,10 @@ static IMP standardImpOfInputAccessoryView = nil;
     // contents is handled fully in JavaScript, the WebView has no knowledge of that.)
     self.webView.scrollView.delegate = self;
 
-    keyboardManager =
-        [[CollaboraOnlineWebViewKeyboardManager alloc] initForWebView:self.webView];
+    if (!isExternalKeyboardAttached()) {
+        keyboardManager =
+            [[CollaboraOnlineWebViewKeyboardManager alloc] initForWebView:self.webView];
+    }
 
     [self.view addSubview:self.webView];
 
@@ -447,6 +449,27 @@ static IMP standardImpOfInputAccessoryView = nil;
                     std::remove(printFile.c_str());
                 }];
 
+            return;
+        } else if ([message.body isEqualToString:@"FOCUSIFHWKBD"]) {
+            if (isExternalKeyboardAttached()) {
+                NSString *hwKeyboardMagic = @"{"
+                    "    if (window.MagicToGetHWKeyboardWorking) {"
+                    "        window.MagicToGetHWKeyboardWorking();"
+                    "    }"
+                    "}";
+                [self.webView evaluateJavaScript:hwKeyboardMagic
+                               completionHandler:^(id _Nullable obj, NSError * _Nullable error)
+                     {
+                         if (error) {
+                             LOG_ERR("Error after " << [hwKeyboardMagic UTF8String] << ": " << [[error localizedDescription] UTF8String]);
+                             NSString *jsException = error.userInfo[@"WKJavaScriptExceptionMessage"];
+                             if (jsException != nil)
+                                 LOG_ERR("JavaScript exception: " << [jsException UTF8String]);
+                         }
+                     }
+                 ];
+            }
+
             return;
         } else if ([message.body hasPrefix:@"HYPERLINK"]) {
             NSArray *messageBodyItems = [message.body componentsSeparatedByString:@" "];
diff --git a/loleaflet/html/loleaflet.html.m4 b/loleaflet/html/loleaflet.html.m4
index 9f42ed9f9..2a53e2603 100644
--- a/loleaflet/html/loleaflet.html.m4
+++ b/loleaflet/html/loleaflet.html.m4
@@ -69,7 +69,20 @@ m4_ifelse(ANDROIDAPP,[true],
 )
 
 if (window.ThisIsTheiOSApp) {
-  window.addEventListener("keydown", function(e) { e.preventDefault(); });
+  window.addEventListener('keydown', function(e) {
+    if (e.metaKey) {
+      e.preventDefault();
+    }
+    if (window.MagicKeyDownHandler)
+      window.MagicKeyDownHandler(e);
+  });
+  window.addEventListener('keyup', function(e) {
+    if (e.metaKey) {
+      e.preventDefault();
+    }
+    if (window.MagicKeyUpHandler)
+      window.MagicKeyUpHandler(e);
+  });
 }
 
 var Base64ToArrayBuffer = function(base64Str) {
diff --git a/loleaflet/src/layer/marker/TextInput.js b/loleaflet/src/layer/marker/TextInput.js
index 418ffd7d1..42ebdbf34 100644
--- a/loleaflet/src/layer/marker/TextInput.js
+++ b/loleaflet/src/layer/marker/TextInput.js
@@ -102,10 +102,28 @@ L.TextInput = L.Layer.extend({
 			this._onFocusBlur({ type: 'focus' });
 		}
 
+		if (window.ThisIsTheiOSApp) {
+			var that = this;
+			window.MagicToGetHWKeyboardWorking = function() {
+				var that2 = that;
+				window.MagicKeyDownHandler = function(e) {
+					that2._onKeyDown(e);
+				};
+				window.MagicKeyUpHandler = function(e) {
+					that2._onKeyUp(e);
+				};
+			};
+			window.postMobileMessage('FOCUSIFHWKBD');
+		}
+
 		L.DomEvent.on(this._map.getContainer(), 'mousedown touchstart', this._abortComposition, this);
 	},
 
 	onRemove: function() {
+		window.MagicToGetHWKeyboardWorking = null;
+		window.MagicKeyDownHandler = null;
+		window.MagicKeyUpHandler = null;
+
 		if (this._container) {
 			this.getPane().removeChild(this._container);
 		}
@@ -226,10 +244,16 @@ L.TextInput = L.Layer.extend({
 						throw errorMessage;
 					}
 
-					if (that._textArea.value.length == 2 && message.length == 0 && message.text.length == 0) {
-						that._removeTextContent(1, 0);
-					} else {
-						that._textArea.value = that._textArea.value.slice(0, message.location + 1) + message.text + that._textArea.value.slice(message.location + 1 + message.length);
+					if (message.location < 0) {
+						if (that._textArea.value.length > 2) {
+							that._textArea.value = that._textArea.value.slice(0, message.location - 1) + that._textArea.value.slice(-1);
+							that._onInput({});
+						} else {
+							that._removeTextContent(-message.location, 0);
+						}
+					}
+					if (message.text.length > 0) {
+						that._textArea.value = that._textArea.value.slice(0, -1) + message.text + that._textArea.value.slice(-1);
 						that._onInput({});
 					}
 				} else {
@@ -239,8 +263,7 @@ L.TextInput = L.Layer.extend({
 				}
 			};
 
-			// We don't know the seed text to feed CollaboraOnlineWebViewKeyboardManager
-			window.webkit.messageHandlers.CollaboraOnlineWebViewKeyboardManager.postMessage({command: 'display'});
+			window.webkit.messageHandlers.CollaboraOnlineWebViewKeyboardManager.postMessage({command: 'display', text: this._textArea.value.slice(1, -1)});
 			this._onFocusBlur({type: 'focus'});
 
 			return;
commit 71ccdc9f3e9a52251b60f963d4be0cf6531f9638
Author:     Tor Lillqvist <tml at collabora.com>
AuthorDate: Fri Aug 28 18:09:17 2020 +0300
Commit:     Andras Timar <andras.timar at collabora.com>
CommitDate: Wed Sep 2 21:00:53 2020 +0200

    Update CollaboraOnlineWebViewKeyboardManager
    
    Update to latest commit, d7f8383603aa156611d901f5f073666ab45d5e6a.
    
    Change-Id: I24c2bf8fed7d692ba8ea747f3384c8e154f7c8af
    Reviewed-on: https://gerrit.libreoffice.org/c/online/+/101556
    Tested-by: Jenkins
    Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice at gmail.com>
    Reviewed-by: Tor Lillqvist <tml at collabora.com>
    Reviewed-on: https://gerrit.libreoffice.org/c/online/+/101952

diff --git a/ios/CollaboraOnlineWebViewKeyboardManager/CollaboraOnlineWebViewKeyboardManager.m b/ios/CollaboraOnlineWebViewKeyboardManager/CollaboraOnlineWebViewKeyboardManager.m
index 0e7d3208f..561b726d6 100644
--- a/ios/CollaboraOnlineWebViewKeyboardManager/CollaboraOnlineWebViewKeyboardManager.m
+++ b/ios/CollaboraOnlineWebViewKeyboardManager/CollaboraOnlineWebViewKeyboardManager.m
@@ -16,6 +16,7 @@
 
 @interface _COWVKMKeyInputControl : UITextView<UITextViewDelegate> {
     WKWebView *webView;
+    BOOL lastWasNewline;
 }
 
 - (instancetype)initForWebView:(nonnull WKWebView *)webView;
@@ -28,6 +29,7 @@
     self = [super init];
 
     self->webView = webView;
+    self->lastWasNewline = NO;
     self.delegate = self;
 
     return self;
@@ -70,8 +72,10 @@
 }
 
 - (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text {
-    NSLog(@"COKbdMgr: shouldChangeTextInRange({%lu, %lu}, '%@')", (unsigned long)range.location, (unsigned long)range.length, text);
-    NSLog(@"self.text is now length %lu '%@'", self.text.length, self.text);
+    NSLog(@"COKbdMgr: shouldChange({%lu, %lu}, '%@'), self.text:%lu:'%@' selectedRange:{%lu, %lu}",
+          (unsigned long)range.location, (unsigned long)range.length,
+          text, self.text.length, self.text,
+          (unsigned long)self.selectedRange.location, (unsigned long)self.selectedRange.length);
 
     NSMutableString *quotedText = [NSMutableString string];
 
@@ -95,9 +99,23 @@
 
     [self postMessage:message];
 
+    self->lastWasNewline = (range.length == 0 && [text isEqualToString:@"\n"]);
+
     return YES;
 }
 
+- (void)textViewDidChange:(UITextView *)textView {
+    NSLog(@"COKbdMgr: didChange: self.text is now:%lu:'%@'", self.text.length, self.text);
+
+    // Hack to match the logic in loleaflet's manipulation of the _textArea.value in TextInput.js.
+    // Probably means that the local testbed here (COKbdMgrTest's test.html) doesn't necessarily
+    // handle adding newlines properly. Oh well.
+    if (self->lastWasNewline) {
+        self.text = @"";
+        NSLog(@"          Made self.text empty to match TextInput.js");
+    }
+}
+
 - (BOOL)canBecomeFirstResponder {
     return YES;
 }
@@ -109,6 +127,7 @@
 @interface CollaboraOnlineWebViewKeyboardManager () <WKScriptMessageHandler> {
     WKWebView *webView;
     _COWVKMKeyInputControl *control;
+    BOOL lastCommandIsHide;
 }
 
 @end
@@ -146,6 +165,11 @@
                                                  name:UIKeyboardDidHideNotification
                                                object:nil];
 
+    [[NSNotificationCenter defaultCenter] addObserver:self
+                                             selector:@selector(keyboardDidShow:)
+                                                 name:UIKeyboardDidShowNotification
+                                               object:nil];
+
     return self;
 }
 
@@ -188,53 +212,75 @@
         control.text = text;
         control.selectedRange = NSMakeRange(location, 0);
 
+        lastCommandIsHide = NO;
+
         [self->webView addSubview:control];
-        // NSLog(@"COKbdMgr: added _COWVKMKeyInputControl to webView");
+        NSLog(@"COKbdMgr: Added _COWVKMKeyInputControl to webView");
         [control becomeFirstResponder];
     }
 }
 
 - (void)hideKeyboard {
-    if (control != nil) {
-        [control removeFromSuperview];
-        // NSLog(@"COKbdMgr: removed _COWVKMKeyInputControl from webView");
-        control = nil;
-    }
+    // At least for spreadsheet documents, loleaflet calls us to hide the keyboard like crazy even
+    // if it immediately then calls us to show it again. That used to mess things up very badly. Try
+    // to make some sense out of it by not trusting a hide request until we see that it hasn't been
+    // folllowed by a display request within 100 ms.
+    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 100000000ll), dispatch_get_main_queue(), ^{
+            if (!lastCommandIsHide) {
+                NSLog(@"COKbdMgr: Ignoring hide command that was quickly followed by a display command");
+                return;
+            }
+            if (control != nil) {
+                [control removeFromSuperview];
+                NSLog(@"COKbdMgr: Removed _COWVKMKeyInputControl from webView");
+                control = nil;
+            }
+        });
 }
 
 - (void)userContentController:(nonnull WKUserContentController *)userContentController
       didReceiveScriptMessage:(nonnull WKScriptMessage *)message {
     if (![message.name isEqualToString:@"CollaboraOnlineWebViewKeyboardManager"]) {
-        NSLog(@"Received unrecognized script message name: %@ %@", message.name, message.body);
+        NSLog(@"COKbdMgr: Received unrecognized script message name: %@ %@", message.name, message.body);
         return;
     }
 
     if ([message.body isKindOfClass:[NSDictionary class]]) {
         NSString *stringCommand = message.body[@"command"];
+        lastCommandIsHide = NO;
         if ([stringCommand isEqualToString:@"display"]) {
             NSString *type = message.body[@"type"];
             NSString *text = message.body[@"text"];
             NSNumber *location = message.body[@"location"];
+            NSLog(@"COKbdMgr: command=display type=%@ text=%@ location=%@", type, text, location);
             [self displayKeyboardOfType:type withText:text at:(location != nil ? [location unsignedIntegerValue] : UINT_MAX)];
         } else if ([stringCommand isEqualToString:@"hide"]) {
+            lastCommandIsHide = YES;
+            NSLog(@"COKbdMgr: command=hide");
             [self hideKeyboard];
         } else if (stringCommand == nil) {
-            NSLog(@"No 'command' in %@", message.body);
+            NSLog(@"COKbdMgr: No 'command' in %@", message.body);
         } else {
-            NSLog(@"Received unrecognized command:%@", stringCommand);
+            NSLog(@"COKbdMgr: Received unrecognized command:%@", stringCommand);
         }
     } else {
-        NSLog(@"Received unrecognized message body of type %@: %@, should be a dictionary (JS object)", [message.body class], message.body);
+        NSLog(@"COKbdMgr: Received unrecognized message body of type %@: %@, should be a dictionary (JS object)", [message.body class], message.body);
     }
 }
 
 - (void)keyboardDidHide:(NSNotification *)notification {
+    NSLog(@"COKbdMgr: didHide");
     if (control != nil) {
         [control removeFromSuperview];
+        NSLog(@"COKbdMgr: Removed _COWVKMKeyInputControl from webView");
         control = nil;
     }
 }
 
+- (void)keyboardDidShow:(NSNotification *)notification {
+    NSLog(@"COKbdMgr: didShow");
+}
+
 @end
 
 // vim:set shiftwidth=4 softtabstop=4 expandtab:
commit 17da137cb38edfa52bf21eefb1f3c474b52fd124
Author:     Tor Lillqvist <tml at collabora.com>
AuthorDate: Mon Aug 24 12:03:40 2020 +0300
Commit:     Andras Timar <andras.timar at collabora.com>
CommitDate: Wed Sep 2 21:00:53 2020 +0200

    Use CollaboraOnlineWebViewKeyboardManager
    
    For now, just copy its source files here. When/if I figure out what is
    the appropriate way to package that framework for use in other
    products (like the Collabora Office iOS app) I will use that instead.
    
    Change-Id: If808f96b6a72c80e54dc84fce80a551503c96335
    Reviewed-on: https://gerrit.libreoffice.org/c/online/+/101268
    Tested-by: Jenkins
    Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice at gmail.com>
    Reviewed-by: Tor Lillqvist <tml at collabora.com>
    Reviewed-on: https://gerrit.libreoffice.org/c/online/+/101951

diff --git a/ios/CollaboraOnlineWebViewKeyboardManager/CollaboraOnlineWebViewKeyboardManager.h b/ios/CollaboraOnlineWebViewKeyboardManager/CollaboraOnlineWebViewKeyboardManager.h
new file mode 100644
index 000000000..c62f54c48
--- /dev/null
+++ b/ios/CollaboraOnlineWebViewKeyboardManager/CollaboraOnlineWebViewKeyboardManager.h
@@ -0,0 +1,28 @@
+// -*- Mode: ObjC; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4; fill-column: 100 -*-
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#import <WebKit/WebKit.h>
+
+ at interface CollaboraOnlineWebViewKeyboardManager : NSObject
+
+/**
+ * @param webView The WKWebView that displays Collabora Online's loleaflet.html. Will not do
+ * anything useful for WKWebViews not displaying that. The loleaflet.html can be in an arbitrarily
+ * deeply nested iframe.
+ */
+- (nonnull CollaboraOnlineWebViewKeyboardManager *)initForWebView:(nonnull WKWebView *)webView;
+
+ at end
+
+// vim:set shiftwidth=4 softtabstop=4 expandtab:
diff --git a/ios/CollaboraOnlineWebViewKeyboardManager/CollaboraOnlineWebViewKeyboardManager.m b/ios/CollaboraOnlineWebViewKeyboardManager/CollaboraOnlineWebViewKeyboardManager.m
new file mode 100644
index 000000000..0e7d3208f
--- /dev/null
+++ b/ios/CollaboraOnlineWebViewKeyboardManager/CollaboraOnlineWebViewKeyboardManager.m
@@ -0,0 +1,240 @@
+// -*- Mode: ObjC; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4; fill-column: 100 -*-
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#import <CollaboraOnlineWebViewKeyboardManager/CollaboraOnlineWebViewKeyboardManager.h>
+
+ at interface _COWVKMKeyInputControl : UITextView<UITextViewDelegate> {
+    WKWebView *webView;
+}
+
+- (instancetype)initForWebView:(nonnull WKWebView *)webView;
+
+ at end
+
+ at implementation _COWVKMKeyInputControl
+
+- (instancetype)initForWebView:(nonnull WKWebView *)webView {
+    self = [super init];
+
+    self->webView = webView;
+    self.delegate = self;
+
+    return self;
+}
+
+- (void)postMessage:(NSString *)message {
+
+    NSMutableString *js = [NSMutableString string];
+
+    [js appendString:@""
+       "{"
+       "     const message = "];
+
+    [js appendString:message];
+
+    // We check if window.COKbdMgrCallback is a function, and in that case call that directly.
+    // Otherwise we iterate over iframes and post a message that the event listener that we install
+    // will receive and handle, and recurse.
+
+    [js appendString:@";"
+        "     if (typeof window.COKbdMgrCallback === 'function') {"
+        "         window.COKbdMgrCallback(message);"
+        "     } else {"
+        "         const iframes = document.getElementsByTagName('iframe');"
+        "         for (let i = 0; i < iframes.length; i++) {"
+        "             iframes[i].contentWindow.postMessage(message, '*');"
+        "         };"
+        "     }"
+        "}"];
+
+    [webView evaluateJavaScript:js
+              completionHandler:^(id _Nullable obj, NSError *_Nullable error) {
+                if (error) {
+                    if (error.userInfo[@"WKJavaScriptExceptionMessage"])
+                        NSLog(@"Error when executing JavaScript: %@: %@", error.localizedDescription, error.userInfo[@"WKJavaScriptExceptionMessage"]);
+                    else
+                        NSLog(@"Error when executing JavaScript: %@", error.localizedDescription);
+                }
+              }];
+}
+
+- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text {
+    NSLog(@"COKbdMgr: shouldChangeTextInRange({%lu, %lu}, '%@')", (unsigned long)range.location, (unsigned long)range.length, text);
+    NSLog(@"self.text is now length %lu '%@'", self.text.length, self.text);
+
+    NSMutableString *quotedText = [NSMutableString string];
+
+    for (unsigned i = 0; i < text.length; i++) {
+        const unichar c = [text characterAtIndex:i];
+        if (c == '\'' || c == '\\') {
+            [quotedText appendString:@"\\"];
+            [quotedText appendFormat:@"%c", c];
+        } else if (c < ' ' || c >= 0x7F) {
+            [quotedText appendFormat:@"\\u%04X", c];
+        } else {
+            [quotedText appendFormat:@"%c", c];
+        }
+    }
+
+    NSMutableString *message = [NSMutableString string];
+
+    [message appendFormat:@"{id: 'COKbdMgr', command: 'replaceText', location: %lu, length: %lu, text: '", range.location, range.length];
+    [message appendString:quotedText];
+    [message appendString:@"'}"];
+
+    [self postMessage:message];
+
+    return YES;
+}
+
+- (BOOL)canBecomeFirstResponder {
+    return YES;
+}
+
+ at synthesize hasText;
+
+ at end
+
+ at interface CollaboraOnlineWebViewKeyboardManager () <WKScriptMessageHandler> {
+    WKWebView *webView;
+    _COWVKMKeyInputControl *control;
+}
+
+ at end
+
+ at implementation CollaboraOnlineWebViewKeyboardManager
+
+- (CollaboraOnlineWebViewKeyboardManager *)initForWebView:(nonnull WKWebView *)webView {
+    self->webView = webView;
+
+    [webView.configuration.userContentController
+        addScriptMessageHandler:self
+                           name:@"CollaboraOnlineWebViewKeyboardManager"];
+
+    NSString *script = @"window.addEventListener('message', function(event) {"
+        "    if (event.data.id === 'COKbdMgr') {"
+        "        if (typeof window.COKbdMgrCallback === 'function') {"
+        "            window.COKbdMgrCallback(event.data);"
+        "         } else {"
+        "             const iframes = document.getElementsByTagName('iframe');"
+        "             for (let i = 0; i < iframes.length; i++) {"
+        "                 iframes[i].contentWindow.postMessage(event.data, '*');"
+        "             };"
+        "          }"
+        "    }"
+        "});";
+
+    WKUserScript *userScript = [[WKUserScript alloc] initWithSource:script
+                                                      injectionTime:WKUserScriptInjectionTimeAtDocumentEnd
+                                                   forMainFrameOnly:NO];
+
+    [webView.configuration.userContentController addUserScript:userScript];
+
+    [[NSNotificationCenter defaultCenter] addObserver:self
+                                             selector:@selector(keyboardDidHide:)
+                                                 name:UIKeyboardDidHideNotification
+                                               object:nil];
+
+    return self;
+}
+
+- (void)displayKeyboardOfType:(NSString *)type withText:(NSString *)text at:(NSUInteger)location {
+    if (control == nil) {
+        control = [[_COWVKMKeyInputControl alloc] initForWebView:self->webView];
+        if (type != nil) {
+            UIKeyboardType keyboardType = UIKeyboardTypeDefault;
+            if ([type caseInsensitiveCompare:@"default"] == NSOrderedSame)
+                ;
+            else if ([type caseInsensitiveCompare:@"asciicapable"] == NSOrderedSame)
+                keyboardType = UIKeyboardTypeASCIICapable;
+            else if ([type caseInsensitiveCompare:@"numbersandpunctuation"] == NSOrderedSame)
+                keyboardType = UIKeyboardTypeNumbersAndPunctuation;
+            else if ([type caseInsensitiveCompare:@"url"] == NSOrderedSame)
+                keyboardType = UIKeyboardTypeURL;
+            else if ([type caseInsensitiveCompare:@"numberpad"] == NSOrderedSame)
+                keyboardType = UIKeyboardTypeNumberPad;
+            else if ([type caseInsensitiveCompare:@"phonepad"] == NSOrderedSame)
+                keyboardType = UIKeyboardTypePhonePad;
+            else if ([type caseInsensitiveCompare:@"namephonepad"] == NSOrderedSame)
+                keyboardType = UIKeyboardTypeNamePhonePad;
+            else if ([type caseInsensitiveCompare:@"emailaddress"] == NSOrderedSame)
+                keyboardType = UIKeyboardTypeEmailAddress;
+            else if ([type caseInsensitiveCompare:@"decimalpad"] == NSOrderedSame)
+                keyboardType = UIKeyboardTypeDecimalPad;
+            else if ([type caseInsensitiveCompare:@"asciicapablenumberpad"] == NSOrderedSame)
+                keyboardType = UIKeyboardTypeASCIICapableNumberPad;
+            else if ([type caseInsensitiveCompare:@"alphabet"] == NSOrderedSame)
+                keyboardType = UIKeyboardTypeAlphabet;
+            else
+                NSLog(@"COKbdMgr: Unrecognized keyboard type %@", type);
+            if (keyboardType != UIKeyboardTypeDefault)
+                control.keyboardType = keyboardType;
+        }
+        // Don't auto-capitalize start of input as we have no idea about the context into which it
+        // will be added.
+        control.autocapitalizationType = UITextAutocapitalizationTypeNone;
+
+        control.text = text;
+        control.selectedRange = NSMakeRange(location, 0);
+
+        [self->webView addSubview:control];
+        // NSLog(@"COKbdMgr: added _COWVKMKeyInputControl to webView");
+        [control becomeFirstResponder];
+    }
+}
+
+- (void)hideKeyboard {
+    if (control != nil) {
+        [control removeFromSuperview];
+        // NSLog(@"COKbdMgr: removed _COWVKMKeyInputControl from webView");
+        control = nil;
+    }
+}
+
+- (void)userContentController:(nonnull WKUserContentController *)userContentController
+      didReceiveScriptMessage:(nonnull WKScriptMessage *)message {
+    if (![message.name isEqualToString:@"CollaboraOnlineWebViewKeyboardManager"]) {
+        NSLog(@"Received unrecognized script message name: %@ %@", message.name, message.body);
+        return;
+    }
+
+    if ([message.body isKindOfClass:[NSDictionary class]]) {
+        NSString *stringCommand = message.body[@"command"];
+        if ([stringCommand isEqualToString:@"display"]) {
+            NSString *type = message.body[@"type"];
+            NSString *text = message.body[@"text"];
+            NSNumber *location = message.body[@"location"];
+            [self displayKeyboardOfType:type withText:text at:(location != nil ? [location unsignedIntegerValue] : UINT_MAX)];
+        } else if ([stringCommand isEqualToString:@"hide"]) {
+            [self hideKeyboard];
+        } else if (stringCommand == nil) {
+            NSLog(@"No 'command' in %@", message.body);
+        } else {
+            NSLog(@"Received unrecognized command:%@", stringCommand);
+        }
+    } else {
+        NSLog(@"Received unrecognized message body of type %@: %@, should be a dictionary (JS object)", [message.body class], message.body);
+    }
+}
+
+- (void)keyboardDidHide:(NSNotification *)notification {
+    if (control != nil) {
+        [control removeFromSuperview];
+        control = nil;
+    }
+}
+
+ at end
+
+// vim:set shiftwidth=4 softtabstop=4 expandtab:
diff --git a/ios/Mobile.xcodeproj/project.pbxproj b/ios/Mobile.xcodeproj/project.pbxproj
index bedc02c3b..68966947d 100644
--- a/ios/Mobile.xcodeproj/project.pbxproj
+++ b/ios/Mobile.xcodeproj/project.pbxproj
@@ -15,6 +15,7 @@
 		BE00F8B5213ED543001CE2D4 /* libiconv.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = BE00F8B4213ED543001CE2D4 /* libiconv.tbd */; };
 		BE00F8B7213ED573001CE2D4 /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = BE00F8B6213ED573001CE2D4 /* libz.tbd */; };
 		BE18C7DE226DE09A001AD27E /* Branding in Resources */ = {isa = PBXBuildFile; fileRef = BE18C7DD226DE09A001AD27E /* Branding */; };
+		BE2FB29E24F3B146006E18B1 /* CollaboraOnlineWebViewKeyboardManager.m in Sources */ = {isa = PBXBuildFile; fileRef = BE2FB29D24F3B146006E18B1 /* CollaboraOnlineWebViewKeyboardManager.m */; };
 		BE5EB5C1213FE29900E0826C /* Log.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BE5EB5B9213FE29900E0826C /* Log.cpp */; };
 		BE5EB5C2213FE29900E0826C /* SpookyV2.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BE5EB5BA213FE29900E0826C /* SpookyV2.cpp */; };
 		BE5EB5C3213FE29900E0826C /* Session.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BE5EB5BB213FE29900E0826C /* Session.cpp */; };
@@ -103,6 +104,8 @@
 		BE28F896228CE04700C00C48 /* langselect.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = langselect.cxx; path = "../../ios-device/desktop/source/app/langselect.cxx"; sourceTree = "<group>"; };
 		BE28F897228CE04700C00C48 /* lockfile2.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = lockfile2.cxx; path = "../../ios-device/desktop/source/app/lockfile2.cxx"; sourceTree = "<group>"; };
 		BE28F898228CE04700C00C48 /* userinstall.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = userinstall.cxx; path = "../../ios-device/desktop/source/app/userinstall.cxx"; sourceTree = "<group>"; };
+		BE2FB29C24F3B146006E18B1 /* CollaboraOnlineWebViewKeyboardManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CollaboraOnlineWebViewKeyboardManager.h; path = CollaboraOnlineWebViewKeyboardManager/CollaboraOnlineWebViewKeyboardManager.h; sourceTree = SOURCE_ROOT; };
+		BE2FB29D24F3B146006E18B1 /* CollaboraOnlineWebViewKeyboardManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = CollaboraOnlineWebViewKeyboardManager.m; path = CollaboraOnlineWebViewKeyboardManager/CollaboraOnlineWebViewKeyboardManager.m; sourceTree = SOURCE_ROOT; };
 		BE34D10F218B66B600815297 /* docsh.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = docsh.cxx; path = "../../ios-device/sw/source/uibase/app/docsh.cxx"; sourceTree = "<group>"; };
 		BE34D110218B66B600815297 /* docstyle.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = docstyle.cxx; path = "../../ios-device/sw/source/uibase/app/docstyle.cxx"; sourceTree = "<group>"; };
 		BE34D111218B66B600815297 /* docshdrw.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = docshdrw.cxx; path = "../../ios-device/sw/source/uibase/app/docshdrw.cxx"; sourceTree = "<group>"; };
@@ -2263,6 +2266,8 @@
 		BE8D77292136762500AC58EA /* Mobile */ = {
 			isa = PBXGroup;
 			children = (
+				BE2FB29C24F3B146006E18B1 /* CollaboraOnlineWebViewKeyboardManager.h */,
+				BE2FB29D24F3B146006E18B1 /* CollaboraOnlineWebViewKeyboardManager.m */,
 				BE58E13021874A2E00249358 /* Mobile.entitlements */,
 				BE5EB5D92140363100E0826C /* ios.mm */,
 				BE00F8922139494E001CE2D4 /* Resources */,
@@ -3048,6 +3053,7 @@
 				BE5EB5C7213FE29900E0826C /* Protocol.cpp in Sources */,
 				BE8D772F2136762500AC58EA /* DocumentBrowserViewController.mm in Sources */,
 				BE5EB5D0213FE2D000E0826C /* TileCache.cpp in Sources */,
+				BE2FB29E24F3B146006E18B1 /* CollaboraOnlineWebViewKeyboardManager.m in Sources */,
 				BE5EB5C5213FE29900E0826C /* MessageQueue.cpp in Sources */,
 				BE7228E22417BC9F000ADABD /* StringVector.cpp in Sources */,
 				BE5EB5D621401E0F00E0826C /* Storage.cpp in Sources */,
diff --git a/ios/Mobile/DocumentViewController.mm b/ios/Mobile/DocumentViewController.mm
index c94161c02..cefd23c9e 100644
--- a/ios/Mobile/DocumentViewController.mm
+++ b/ios/Mobile/DocumentViewController.mm
@@ -19,6 +19,7 @@
 #import <sys/stat.h>
 
 #import "ios.h"
+#import "CollaboraOnlineWebViewKeyboardManager.h"
 #import "FakeSocket.hpp"
 #import "LOOLWSD.hpp"
 #import "Log.hpp"
@@ -32,6 +33,7 @@ static DocumentViewController* theSingleton = nil;
 @interface DocumentViewController() <WKNavigationDelegate, WKUIDelegate, WKScriptMessageHandler, UIScrollViewDelegate, UIDocumentPickerDelegate> {
     int closeNotificationPipeForForwardingThread[2];
     NSURL *downloadAsTmpURL;
+    CollaboraOnlineWebViewKeyboardManager *keyboardManager;
 }
 
 @end
@@ -103,6 +105,9 @@ static IMP standardImpOfInputAccessoryView = nil;
     // contents is handled fully in JavaScript, the WebView has no knowledge of that.)
     self.webView.scrollView.delegate = self;
 
+    keyboardManager =
+        [[CollaboraOnlineWebViewKeyboardManager alloc] initForWebView:self.webView];
+
     [self.view addSubview:self.webView];
 
     self.webView.navigationDelegate = self;
commit 768cabad83915998963c5017f5111ef33b2add32
Author:     gokaysatir <gokaysatir at collabora.com>
AuthorDate: Wed Sep 2 19:36:24 2020 +0300
Commit:     Andras Timar <andras.timar at collabora.com>
CommitDate: Wed Sep 2 21:00:53 2020 +0200

    leaflet: Insert shape dialog icon height adjustment.
    
    Change-Id: I17cd5701cb5b8fa2f03be76ee83df225b25bca39
    Reviewed-on: https://gerrit.libreoffice.org/c/online/+/101949
    Tested-by: Andras Timar <andras.timar at collabora.com>
    Reviewed-by: Andras Timar <andras.timar at collabora.com>

diff --git a/loleaflet/css/toolbar.css b/loleaflet/css/toolbar.css
index b5c69c9f8..0c99b92f5 100644
--- a/loleaflet/css/toolbar.css
+++ b/loleaflet/css/toolbar.css
@@ -799,7 +799,6 @@ button.leaflet-control-search-next
 }
 
 .insertshape-grid .row {
-		height: 30px;
 		height: auto;
 		position: static;
 		text-align: left;
@@ -810,8 +809,7 @@ button.leaflet-control-search-next
 }
 
 .insertshape-grid .col {
-		height: 100%;
-		float: left;
+		height: 30px;
 		padding: 2px;
 		width: 30px;
 		border: 1px solid transparent;
commit 575f3fcf0fff9af2870a347512214838f9879464
Author:     Pedro Pinto Silva <pedro.silva at collabora.com>
AuthorDate: Wed Sep 2 16:25:25 2020 +0200
Commit:     Andras Timar <andras.timar at collabora.com>
CommitDate: Wed Sep 2 21:00:53 2020 +0200

    Mobile: menu entries with icon missing extra class
    
    .flex-fullwidth
    
    This was causing elements (without arrow) in the insert mobilewizard
    to have its labels misaligned
    
    Change-Id: I0472a5d39a2691b48d7920a75821447622cc1801
    Reviewed-on: https://gerrit.libreoffice.org/c/online/+/101873
    Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice at gmail.com>
    Reviewed-by: Andras Timar <andras.timar at collabora.com>

diff --git a/loleaflet/src/control/Control.JSDialogBuilder.js b/loleaflet/src/control/Control.JSDialogBuilder.js
index a925b0a1f..1422a71b6 100644
--- a/loleaflet/src/control/Control.JSDialogBuilder.js
+++ b/loleaflet/src/control/Control.JSDialogBuilder.js
@@ -2104,7 +2104,7 @@ L.Control.JSDialogBuilder = L.Control.extend({
 
 		var titleSpan = L.DomUtil.create('span', '', menuEntry);
 		titleSpan.innerHTML = title;
-		var paddingClass = icon ? 'menu-entry-with-icon' : 'menu-entry-no-icon';
+		var paddingClass = icon ? 'menu-entry-with-icon flex-fullwidth' : 'menu-entry-no-icon';
 		L.DomUtil.addClass(titleSpan, paddingClass);
 
 		if (builder.wizard) {
commit 6563bf3dc6e1dd640402b02ed550ceda53d8892f
Author:     Tamás Zolnai <tamas.zolnai at collabora.com>
AuthorDate: Mon Jun 22 13:10:49 2020 +0200
Commit:     Andras Timar <andras.timar at collabora.com>
CommitDate: Wed Sep 2 21:00:53 2020 +0200

    cypress: stabilize calc/spellchecking_spec.js test.
    
    Reviewed-on: https://gerrit.libreoffice.org/c/online/+/96856
    Tested-by: Jenkins
    Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice at gmail.com>
    Reviewed-by: Tamás Zolnai <tamas.zolnai at collabora.com>
    (cherry picked from commit 14be173ccd74766177a9d27cfdb87ad20c572f8e)
    
    Change-Id: I8f49e305c32cf24f167890e8e9d8088440bb788e
    Reviewed-on: https://gerrit.libreoffice.org/c/online/+/101939
    Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice at gmail.com>
    Reviewed-by: Tamás Zolnai <tamas.zolnai at collabora.com>

diff --git a/cypress_test/integration_tests/mobile/calc/calc_helper.js b/cypress_test/integration_tests/mobile/calc/calc_helper.js
index 47a14aa9c..d0e966913 100644
--- a/cypress_test/integration_tests/mobile/calc/calc_helper.js
+++ b/cypress_test/integration_tests/mobile/calc/calc_helper.js
@@ -35,12 +35,8 @@ function selectAllMobile(removeSelection = true) {
 	cy.get('#spreadsheet-header-corner')
 		.click();
 
-	cy.get('.spreadsheet-cell-resize-marker:nth-of-type(2)')
-		.should('not.be.visible');
-
-	cy.get('.spreadsheet-cell-resize-marker:nth-of-type(1)')
-		.invoke('attr', 'style')
-		.should('contain', '(-9px, -8px,');
+	cy.get('.spreadsheet-cell-resize-marker')
+		.should('be.visible');
 
 	cy.get('input#addressInput')
 		.should('have.prop', 'value', 'A1:AMJ1048576');
diff --git a/cypress_test/integration_tests/mobile/calc/spellchecking_spec.js b/cypress_test/integration_tests/mobile/calc/spellchecking_spec.js
index 198603ba8..8af197b36 100644
--- a/cypress_test/integration_tests/mobile/calc/spellchecking_spec.js
+++ b/cypress_test/integration_tests/mobile/calc/spellchecking_spec.js
@@ -60,16 +60,6 @@ describe('Calc spell checking menu.', function() {
 		cy.contains('.context-menu-link', 'hello')
 			.click();
 
-		// Click outside of the cell
-		cy.get('.leaflet-marker-icon')
-			.then(function(items) {
-				expect(items).to.have.length(2);
-				var XPos = items[0].getBoundingClientRect().right;
-				var YPos = items[0].getBoundingClientRect().bottom + 10;
-				cy.get('body')
-					.click(XPos, YPos);
-			});
-
 		calcHelper.selectAllMobile();
 
 		cy.get('#copy-paste-container table td')
@@ -106,9 +96,9 @@ describe('Calc spell checking menu.', function() {
 			.click();
 
 		// Click outside of the cell
-		cy.get('.leaflet-marker-icon')
+		cy.get('.leaflet-selection-marker-end')
 			.then(function(items) {
-				expect(items).to.have.length(2);
+				expect(items).to.have.length(1);
 				var XPos = items[0].getBoundingClientRect().right;
 				var YPos = items[0].getBoundingClientRect().bottom + 10;
 				cy.get('body')
@@ -129,9 +119,9 @@ describe('Calc spell checking menu.', function() {
 			.click();
 
 		// Click outside of the cell
-		cy.get('.leaflet-marker-icon')
+		cy.get('.leaflet-selection-marker-end')
 			.then(function(items) {
-				expect(items).to.have.length(2);
+				expect(items).to.have.length(1);
 				var XPos = items[0].getBoundingClientRect().right;
 				var YPos = items[0].getBoundingClientRect().bottom + 10;
 				cy.get('body')
commit 2e6768228f20194c87ed08cab66eb8639f706882
Author:     Tamás Zolnai <tamas.zolnai at collabora.com>
AuthorDate: Fri Jun 19 16:24:23 2020 +0200
Commit:     Andras Timar <andras.timar at collabora.com>
CommitDate: Wed Sep 2 21:00:53 2020 +0200

    cypress: stabilize calc/cell_appearance_spec.js test.
    
    Change-Id: I3695e3e5608dee9b6f1f7f1dfc43dad76d9844f1
    Reviewed-on: https://gerrit.libreoffice.org/c/online/+/96740
    Tested-by: Jenkins
    Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice at gmail.com>
    Reviewed-by: Tamás Zolnai <tamas.zolnai at collabora.com>
    (cherry picked from commit 008d4ea32f475a669668394f6b886d255a586090)
    Reviewed-on: https://gerrit.libreoffice.org/c/online/+/101938

diff --git a/cypress_test/integration_tests/mobile/calc/calc_helper.js b/cypress_test/integration_tests/mobile/calc/calc_helper.js
index cd24896ce..47a14aa9c 100644
--- a/cypress_test/integration_tests/mobile/calc/calc_helper.js
+++ b/cypress_test/integration_tests/mobile/calc/calc_helper.js
@@ -18,6 +18,9 @@ function removeTextSelection() {
 		cy.get('.spreadsheet-cell-resize-marker')
 			.invoke('attr', 'style')
 			.should('contain', '-8px,');
+
+		cy.get('input#addressInput')
+			.should('have.prop', 'value', 'B1:B1048576');
 	}
 
 	cy.log('Removing text selection - end.');
@@ -39,6 +42,9 @@ function selectAllMobile(removeSelection = true) {
 		.invoke('attr', 'style')
 		.should('contain', '(-9px, -8px,');
 
+	cy.get('input#addressInput')
+		.should('have.prop', 'value', 'A1:AMJ1048576');
+
 	cy.log('Selecting all text - end.');
 }
 
commit 1c4b0e4e4aaeff7be593fa78b8f1e14b2b25e1fc
Author:     Andras Timar <andras.timar at collabora.com>
AuthorDate: Wed Sep 2 16:54:39 2020 +0200
Commit:     Andras Timar <andras.timar at collabora.com>
CommitDate: Wed Sep 2 21:00:53 2020 +0200

    [cp] updated iOS translations from master
    
    Change-Id: I6ee343a70694e744d860d590f9d96777e83c4471

diff --git a/loleaflet/po/ios-bs.po b/loleaflet/po/ios-bs.po
index 248f63892..8352a6fe9 100644
--- a/loleaflet/po/ios-bs.po
+++ b/loleaflet/po/ios-bs.po
@@ -18,20 +18,20 @@ msgstr ""
 
 #: Version+information
 msgid "Version information"
-msgstr ""
+msgstr "Informacije o verziji"
 
 #: Online+git+hash
 msgid "Online git hash"
-msgstr ""
+msgstr "Online git hash"
 
 #: Core+git+hash
 msgid "Core git hash"
-msgstr ""
+msgstr "Core git hash"
 
 #: Settings
 msgid "Settings"
-msgstr ""
+msgstr "Podešavanja"
 
 #: Template+list+URL
 msgid "Template list URL"
-msgstr ""
+msgstr "URL liste predloška"
diff --git a/loleaflet/po/ios-da.po b/loleaflet/po/ios-da.po
index 5ae85ed51..0bff69f42 100644
--- a/loleaflet/po/ios-da.po
+++ b/loleaflet/po/ios-da.po
@@ -18,15 +18,15 @@ msgstr ""
 
 #: Version+information
 msgid "Version information"
-msgstr ""
+msgstr "Versionsinformation"
 
 #: Online+git+hash
 msgid "Online git hash"
-msgstr ""
+msgstr "Online git hash"
 
 #: Core+git+hash
 msgid "Core git hash"
-msgstr ""
+msgstr "Kerne git-hash"
 
 #: Settings
 msgid "Settings"
diff --git a/loleaflet/po/ios-eo.po b/loleaflet/po/ios-eo.po
index 552e81b83..d5e3594bb 100644
--- a/loleaflet/po/ios-eo.po
+++ b/loleaflet/po/ios-eo.po
@@ -19,15 +19,15 @@ msgstr ""
 
 #: Version+information
 msgid "Version information"
-msgstr ""
+msgstr "Versia informo"
 
 #: Online+git+hash
 msgid "Online git hash"
-msgstr ""
+msgstr "Enreta Git-haketaĵo"
 
 #: Core+git+hash
 msgid "Core git hash"
-msgstr ""
+msgstr "Kerna Git-haketaĵo"
 
 #: Settings
 msgid "Settings"
diff --git a/loleaflet/po/ios-gl.po b/loleaflet/po/ios-gl.po
index 78d1a1e47..7b6ee40cc 100644
--- a/loleaflet/po/ios-gl.po
+++ b/loleaflet/po/ios-gl.po
@@ -23,11 +23,11 @@ msgstr "Información sobre a versión"
 
 #: Online+git+hash
 msgid "Online git hash"
-msgstr ""
+msgstr "Identificador da versión no repositorio «git» na rede"
 
 #: Core+git+hash
 msgid "Core git hash"
-msgstr ""
+msgstr "Identificador da versión no repositorio «git» «core»"
 
 #: Settings
 msgid "Settings"
diff --git a/loleaflet/po/ios-id.po b/loleaflet/po/ios-id.po
index 7c869b176..480b5bb09 100644
--- a/loleaflet/po/ios-id.po
+++ b/loleaflet/po/ios-id.po
@@ -18,15 +18,15 @@ msgstr ""
 
 #: Version+information
 msgid "Version information"
-msgstr ""
+msgstr "Informasi versi"
 
 #: Online+git+hash
 msgid "Online git hash"
-msgstr ""
+msgstr "Hash git daring"
 
 #: Core+git+hash
 msgid "Core git hash"
-msgstr ""
+msgstr "Hash git core"
 
 #: Settings
 msgid "Settings"
commit 27e7fdd1b01798a71adc18698912d9fac2bf6bd9
Author:     Andras Timar <andras.timar at collabora.com>
AuthorDate: Wed Sep 2 16:52:08 2020 +0200
Commit:     Andras Timar <andras.timar at collabora.com>
CommitDate: Wed Sep 2 21:00:53 2020 +0200

    [cp] updated Android translations from master
    
    Change-Id: I0ee333d0ae03070102307301b220d063909065dc

diff --git a/android/app/src/main/res/values-af/strings.xml b/android/app/src/main/res/values-af/strings.xml
index a6b3daec9..07fb04b43 100644
--- a/android/app/src/main/res/values-af/strings.xml
+++ b/android/app/src/main/res/values-af/strings.xml
@@ -1,2 +1,33 @@
 <?xml version="1.0" encoding="utf-8"?>
-<resources></resources>
\ No newline at end of file
+<resources>
+    <string name="directory_not_saved">Vouer is nie gestoor nie.</string>
+    <string name="pref_enable_chrome_debugger">Chrome Foutopsporing</string>
+    <string name="pref_show_debug_info_summary">Aktiveer ontfoutings-informasie in dokument vertoner</string>
+    <string name="pref_show_debug_info">Vertoon Fout-Infomasie</string>
+    <string name="pref_filter_summary">Stel watter lêer filter moet by bestek gebruik word.</string>
+    <string name="pref_filter_title">Verstek Lêer Filter</string>
+    <string name="pref_sort_title">Lêer Volgorde</string>
+    <string name="pref_file_explorer_title">Lêer Beheer uitleg</string>
+    <string name="pref_viewmode_summary">Vertoon lêers as \'n rooster in a lys.</string>
+    <string name="pref_sort_summary">Selekteer hoe lêers georden moet word: A-Z, by grootte of datum.</string>
+    <string name="pref_show_hidden_files_summary">Aktiveer die vertoon van lêers/vouers</string>
+    <string name="pref_show_hidden_files">Verborge Lêers/Vouers</string>
+    <string name="pref_category_editor">Redigeerder Instellings</string>
+    <string name="pref_category_explorer">Lêer beheerinstellings</string>
+    <string name="grid_view">Rooster</string>
+    <string name="list_view">Lys</string>
+    <string name="failed_to_load_file">Faal met die lêer se lading.</string>
+    <string name="storage_permission_required">Skryf bevoegheid is vereis</string>
+    <string name="file_creation_failed">Die lêer se skepping faal</string>
+    <string name="file_exists_warning">\'n Lêer met hierdie naam bestaan alreeds, en sal oorkryf word.</string>
+    <string name="temp_file_saving_disabled">Die lêer is lees-alleen, stoor is gedeaktiveerd.</string>
+    <string name="title_activity_show_html">Meer oor</string>
+    <string name="no_items">Geen items</string>
+    <string name="no_recent_items">Maak \'n lêer oop via die vouer-simbool in die werkbalk.</string>
+    <string name="app_vendor">Hierdie weergawe was voorsien deur $VENDOR.</string>
+    <string name="app_description">$APP_NAME is \'n moderne, maklik--om-te-gebruik, oopbron produktiwiteits suite vir woordverwerking, spreiblaaie, aanbiedings en meer.</string>
+    <string name="app_version_and_hash">Weergawe: %1$s
+\naanlyn git-huts: %2$s
+\nkern git-huts: %3$s</string>
+    <string name="app_name_settings">Instellings</string>
+</resources>
\ No newline at end of file
diff --git a/android/app/src/main/res/values-an/strings.xml b/android/app/src/main/res/values-an/strings.xml
index b058e4c8e..2e1713963 100644
--- a/android/app/src/main/res/values-an/strings.xml
+++ b/android/app/src/main/res/values-an/strings.xml
@@ -11,4 +11,17 @@
     <string name="action_overwrite">Sobrescribir</string>
     <string name="pref_category_explorer">Achustes d\'o chestor de fichers</string>
     <string name="pref_category_editor">Achustes d\'o editor</string>
+    <string name="grid_view">Quadricula</string>
+    <string name="app_version_and_hash">Versión: %1$s
+\nRevisión d\'o reposte Git «online»: %2$s
+\nRevisión d\'o reposte Git «core»: %3$s</string>
+    <string name="directory_not_saved">No s\'ha alzau o directorio.</string>
+    <string name="no_items">No bi ha garra elemento</string>
+    <string name="pref_show_hidden_files">Fichers/carpetas amagaus</string>
+    <string name="password">Clau de paso</string>
+    <string name="user_name">Nome d\'usuario</string>
+    <string name="cancel_label">Cancelar</string>
+    <string name="action_cancel">Cancelar</string>
+    <string name="negative_cancel">Cancelar</string>
+    <string name="positive_ok">Acceptar</string>
 </resources>
\ No newline at end of file
diff --git a/android/app/src/main/res/values-da/strings.xml b/android/app/src/main/res/values-da/strings.xml
index a6b3daec9..0b5d5ff90 100644
--- a/android/app/src/main/res/values-da/strings.xml
+++ b/android/app/src/main/res/values-da/strings.xml
@@ -1,2 +1,107 @@
 <?xml version="1.0" encoding="utf-8"?>
-<resources></resources>
\ No newline at end of file
+<resources>
+    <string name="app_name_settings">Indstillinger</string>
+    <string name="no_items">Ingen elementer</string>
+    <string name="no_recent_items">Åbn en fil ved at klikke på fil-ikonet på værktøjslinjen.</string>
+    <string name="app_vendor">"Denne udgave er fra  $VENDOR."</string>
+    <string name="app_description">$APP_NAME er en moderne open source kontorpakke som er nem at bruge, indeholdende tekstbehandling, regneark, præsentationer, mm.</string>
+    <string name="temp_file_saving_disabled">Denne fil er skrivebeskyttet og kan ikke gemmes.</string>
+    <string name="file_creation_failed">Filoprettelse mislykkedes</string>
+    <string name="file_exists_warning">Der findes allerede en anden fil med dette navn, som bliver overskrevet.</string>
+    <string name="pref_sort_summary">Vælg i hvilken rækkefølge filerne vises: A-Z, efter størrelse eller efter dato.</string>
+    <string name="pref_show_hidden_files_summary">Aktiver visning af skjulte filer/mapper</string>
+    <string name="list_view">Liste</string>
+    <string name="storage_permission_required">Du skal have tilladelse for at kunne gemme</string>
+    <string name="local_documents">Dokumentmappe</string>
+    <string name="owncloud_wrong_connection">Kan ikke forbinde til cloud-serveren. Tjek din Konfiguration.</string>
+    <string name="remote_server">Fjern-server</string>
+    <string name="external_sd_file_system">Eksternt SD</string>
+    <string name="local_file_system">Lokalt fil-system</string>
+    <string name="filter_spreadsheets">Regneark</string>
+    <string name="filter_documents">Dokumenter</string>
+    <string name="filter_everything">Alt</string>
+    <string name="share_via">Del via</string>
+    <string name="share">Del</string>
+    <string name="open">Åbn</string>
+    <string name="action_settings">Indstillinger</string>
+    <string name="action_about">Om</string>
+    <string name="title_browser">Alle filer</string>
+    <string name="title_recents">Seneste filer</string>
+    <string name="file_icon_desc">Fil-ikon</string>
+    <string name="sort_newest">Nyeste først</string>
+    <string name="sort_oldest">Ældste først</string>
+    <string name="sort_za">Å-A</string>
+    <string name="sort_az">A-Å</string>
+    <string name="sort_largest">Største først</string>
+    <string name="sort_smallest">Mindste først</string>
+    <string name="sort">Sortér efter</string>
+    <string name="filter">Filtrer efter</string>
+    <string name="default_document_name">uden navn</string>
+    <string name="new_spreadsheet">Nyt regneark</string>
+    <string name="new_textdocument">Nyt tekst-dokument</string>
+    <string name="about_moreinfo">Mere information</string>
+    <string name="about_notice">Vis bemærkning</string>
+    <string name="about_license">Vis licens</string>
+    <string name="pref_filter_summary">Vælg hvilket fil-filter der skal bruges som standard.</string>
+    <string name="pref_filter_title">Standard fil-filter</string>
+    <string name="pref_sort_title">Fil-rækkefølge</string>
+    <string name="owncloud_unauthorized">Kan ikke logge ind på cloud-serveren. Tjek din konfiguration.</string>
+    <string name="owncloud_unspecified_error">"Uspecificeret fejl ved forbindelse til  cloud-serveren. Tjek din konfiguration og/eller prøv senere."</string>
+    <string name="server_url_and_port">Cloudserverens URL og port.</string>
+    <string name="server_url">Serverens URL</string>
+    <string name="owncloud_settings">Cloudserver-indstillinger</string>
+    <string name="password">Adgangskode</string>
+    <string name="cancel_label">Annuller</string>
+    <string name="confirm_label">Bekræft</string>
+    <string name="user_name">Brugernavn</string>
+    <string name="title_permission_required">Tilladelse krævet</string>
+    <string name="negative_cancel">Annuller</string>
+    <string name="negative_im_sure">Jeg er sikker</string>
+    <string name="positive_ok">OK</string>
+    <string name="reason_required_to_read_documents">Tilladelse til at gemme er nødvendig for at kunne læse dokumenterne.</string>
+    <string name="action_cancel">Annuller</string>
+    <string name="title_activity_show_html">Om</string>
+    <string name="unable_to_go_further">Kan ikke fortsætte.</string>
+    <string name="share_document">Del dokument</string>
+    <string name="action_overwrite">Overskriv</string>
+    <string name="action_create">Opret</string>
+    <string name="enter_filename">Skriv fil-navnet:</string>
+    <string name="create_new_document_title">Opret nyt dokument</string>
+    <string name="pref_viewmode_summary">Se filer som gitter eller på en liste.</string>
+    <string name="ext_document_provider_error">Ugyldig rodfil. Tjek konfigurationen på dit sd-kort.</string>
+    <string name="remove_from_list">Fjern fra liste</string>
+    <string name="pref_show_hidden_files">Skjulte filer/mapper</string>
+    <string name="directory_not_saved">Mappe ikke gemt.</string>
+    <string name="bmp_null">Bmp er nul!</string>
+    <string name="up_description">Til overordnet mappe</string>
+    <string name="otg_device_path">Sti til OTG-enhed</string>
+    <string name="otg_missing_error">Ugyldig rodfil. Tjek din OTG-enhed og/eller konfiguration.</string>
+    <string name="usb_connected_configure">USB forbundet, konfigurer din enhed.</string>
+    <string name="otg_file_system">OTG-enhed (eksperimentel)</string>
+    <string name="filter_presentations">Præsentationer</string>
+    <string name="new_presentation">Ny præsentation</string>
+    <string name="failed_to_load_file">Kunne ikke bestemme, hvilken fil der skal indlæses</string>
+    <string name="app_version_and_hash">Version: %1$s
+\nonline git-hash: %2$s
+\ncore git-hash: %3$s</string>
+    <string name="loading">Indlæser…</string>
+    <string name="current_dir">Aktuel mappe: % 1$s</string>
+    <string name="bad_directory">Ugyldig stil til mappe</string>
+    <string name="directory_browser_label">Vælg mappe</string>
+    <string name="search_label">Kør</string>
+    <string name="otg_warning">Eksperimentel funktionalitet: Anvend kun, hvis der kan kan skrives på OTG-enheden.</string>
+    <string name="external_sd_path">Sti til SD-kort</string>
+    <string name="physical_storage_settings">Indstillinger for fysisk lager</string>
+    <string name="storage_provider_settings">Indstillinger for lagerleverandør</string>
+    <string name="close_document_locations">Luk dokumentplaceringer</string>
+    <string name="document_locations">Dokumentplaceringer</string>
+    <string name="file_actions_icon_desc">Filhandlinger</string>
+    <string name="pref_enable_chrome_debugger_info">Aktivér for at bruge Chromes fejlsøgningsværktøj på dokumentet</string>
+    <string name="pref_enable_chrome_debugger">Chrome-fejlsøgning</string>
+    <string name="pref_show_debug_info_summary">Aktivér for at vise debugginginformation i dokumentfremviseren</string>
+    <string name="pref_show_debug_info">Vis debugging-information</string>
+    <string name="pref_file_explorer_title">Filmanager-layout</string>
+    <string name="pref_category_editor">Redigeringsindstillinger</string>
+    <string name="pref_category_explorer">Filmanager-indstillinger</string>
+    <string name="grid_view">Gitter</string>
+</resources>
\ No newline at end of file
diff --git a/android/app/src/main/res/values-eo/strings.xml b/android/app/src/main/res/values-eo/strings.xml
index 1c2792c38..71454a379 100644
--- a/android/app/src/main/res/values-eo/strings.xml
+++ b/android/app/src/main/res/values-eo/strings.xml
@@ -20,4 +20,89 @@
     <string name="list_view">Listo</string>
     <string name="temp_file_saving_disabled">La dosiero estas nurlegebla; la konservo estas malŝaltita.</string>
     <string name="app_version">Versio: %1$s. Kunmetaĵa identigilo: %2$s</string>
+    <string name="file_exists_warning">Jam ekzistas dosiero samnoma, ĝi anstataŭiĝos.</string>
+    <string name="no_items">Neniu elemento</string>
+    <string name="no_recent_items">Bonvolu malfermi dosieron per la dosieruja bildsimbolo en la ilobreto.</string>
+    <string name="app_vendor">Ĉi tiun eldonon liveris $VENDOR.</string>
+    <string name="app_description">$APP_NAME estas moderna, facile uzebla, malfermitkoda, produktiva programaro por verkado, kalkultabeloj, prezentaĵoj kaj plu.</string>
+    <string name="app_version_and_hash">Versio: %1$s
+\nreta git-hash: %2$s
+\nkerna git-hash: %3$s</string>
+    <string name="directory_not_saved">Ne konservis dosierujon</string>
+    <string name="bmp_null">Bmp estas nevalida!</string>
+    <string name="unable_to_go_further">Ne povas iri plu.</string>
+    <string name="share_document">Kunhavi dokumenton</string>
+    <string name="action_overwrite">Anstataŭigi</string>
+    <string name="action_create">Krei</string>
+    <string name="enter_filename">Bonvolu enigi la dosieran nomon:</string>
+    <string name="create_new_document_title">Krei novan dokumenton</string>
+    <string name="negative_im_sure">Mi estas certa</string>
+    <string name="positive_ok">Akcepti</string>
+    <string name="reason_required_to_read_documents">Necesas permeso por konservejo por legi viajn dokumentojn</string>
+    <string name="title_permission_required">Permeso bezonata</string>
+    <string name="current_dir">Aktuala dosierujo: %1$s</string>
+    <string name="bad_directory">Nevalida dosieruja vojprefikso</string>
+    <string name="directory_browser_label">Elekti dosierujon</string>
+    <string name="search_label">Ek</string>
+    <string name="confirm_label">Konfirmi</string>
+    <string name="up_description">Al patra dosierujo</string>
+    <string name="server_url_and_port">URL kaj pordo de la nuba servilo.</string>
+    <string name="server_url">URL de servilo</string>
+    <string name="otg_warning">Eksperimenta funkcio: uzu nur se OTG-ilo estas skribebla.</string>
+    <string name="otg_device_path">Vojprefikso al OTG-ilo</string>
+    <string name="external_sd_path">Ekstera SD-vojprefikso</string>
+    <string name="physical_storage_settings">Agordoj pri fizika konservejo</string>
+    <string name="owncloud_settings">Agordoj pri nuba servilo</string>
+    <string name="storage_provider_settings">"Agordoj  pri provizanto de enhavo"</string>
+    <string name="otg_missing_error">Radika dosiero ne validas. Kontrolu vian OTG-ilon kaj/aŭ viajn agordojn.</string>
+    <string name="ext_document_provider_error">Radika dosiero ne validas. Kontrolu viajn SD-kartajn agordojn.</string>
+    <string name="owncloud_unspecified_error">Ne indikita eraro okazis konekti al la nuba servilo. Kontrolu viajn agordon kaj/aŭ provu postiome.</string>
+    <string name="owncloud_unauthorized">Ne povas alsaluti al la nuba servilo. Kontrolu viajn agordojn.</string>
+    <string name="owncloud_wrong_connection">Ne povas konekti al la nuba servilo. Kontrolu viajn agordojn.</string>
+    <string name="usb_connected_configure">USB konektita, agordu vian ilon.</string>
+    <string name="remote_server">Fora servilo</string>
+    <string name="otg_file_system">OTG-ilo (eksperimenta)</string>
+    <string name="external_sd_file_system">Ekstera SD</string>
+    <string name="local_file_system">Loka dosiersistemo</string>
+    <string name="local_documents">Dokumenta dosierujo</string>
+    <string name="close_document_locations">Fermi dokumentajn lokojn</string>
+    <string name="document_locations">Dokumentaj lokoj</string>
+    <string name="filter_presentations">Prezentaĵoj</string>
+    <string name="filter_spreadsheets">Kalkultabeloj</string>
+    <string name="filter_documents">Dokumentoj</string>
+    <string name="filter_everything">Ĉio</string>
+    <string name="share_via">Kunhavi per</string>
+    <string name="remove_from_list">Forigi el la listo</string>
+    <string name="share">Kunhavi</string>
+    <string name="title_recents">Lastatempaj dosieroj</string>
+    <string name="file_actions_icon_desc">Dosieraj agoj</string>
+    <string name="file_icon_desc">Dosiera bildsimbolo</string>
+    <string name="sort_oldest">Plej malnova unue</string>
+    <string name="sort_newest">Plej nova unue</string>
+    <string name="sort_za">Z-A</string>
+    <string name="sort_az">A-Z</string>
+    <string name="sort_largest">Plej granda unue</string>
+    <string name="sort_smallest">Plej malgranda unue</string>
+    <string name="new_spreadsheet">Nova kalkultabelo</string>
+    <string name="new_presentation">Nova prezentaĵo</string>
+    <string name="new_textdocument">Nova teksta dokumento</string>
+    <string name="about_notice">Vidigi rimarkon</string>
+    <string name="about_license">Vidigi permesilon</string>
+    <string name="pref_enable_chrome_debugger_info">Aktivigi la uzadon de la sencimigilo de Chrome en la dokumento</string>
+    <string name="pref_enable_chrome_debugger">Sencimigi per Chrome</string>
+    <string name="pref_show_debug_info_summary">Enŝaltu por vidigi sencimigan informon en dokumentvidigilo</string>
+    <string name="pref_show_debug_info">Vidigi sencimigan informon</string>
+    <string name="pref_filter_summary">Agordi la apriore uzotan dosieran filtrilon.</string>
+    <string name="pref_filter_title">Apriora dosiera filtrilo</string>
+    <string name="pref_sort_title">Ordo de dosieroj</string>
+    <string name="pref_file_explorer_title">Aranĝo de dosiermastrumilo</string>
+    <string name="pref_viewmode_summary">Vidigi dosierojn kiel kradon aŭ en listo.</string>
+    <string name="pref_sort_summary">Agordi kiel ordigi dosierojn: A-Z laŭ grando aŭ laŭ dato.</string>
+    <string name="pref_show_hidden_files_summary">Enŝaltu por vidigi kaŝitajn dosierojn/dosierujojn</string>
+    <string name="pref_category_editor">Agordi redaktilon</string>
+    <string name="pref_category_explorer">Agordi dosiermastrumilon</string>
+    <string name="grid_view">Krado</string>
+    <string name="failed_to_load_file">Malsukcesis decidi dosieron ŝargotan</string>
+    <string name="storage_permission_required">Permeso bezonata por konservi</string>
+    <string name="file_creation_failed">Malsukcesis krei dosieron</string>
 </resources>
\ No newline at end of file
diff --git a/android/app/src/main/res/values-gl/strings.xml b/android/app/src/main/res/values-gl/strings.xml
index 9b16d758b..1bf88cb6a 100644
--- a/android/app/src/main/res/values-gl/strings.xml
+++ b/android/app/src/main/res/values-gl/strings.xml
@@ -102,4 +102,7 @@
     <string name="remove_from_list">Retirar da lista</string>
     <string name="file_actions_icon_desc">Accións para ficheiros</string>
     <string name="pref_category_editor">Configuración do editor</string>
+    <string name="app_version_and_hash">Versión: %1$s
+\nonline git-hash: %2$s
+\ncore git-hash: %3$s</string>
 </resources>
\ No newline at end of file
diff --git a/android/app/src/main/res/values-id/strings.xml b/android/app/src/main/res/values-id/strings.xml
index 3ebbae584..b42d517e2 100644
--- a/android/app/src/main/res/values-id/strings.xml
+++ b/android/app/src/main/res/values-id/strings.xml
@@ -28,7 +28,7 @@
     <string name="up_description">Ke direktori induk</string>
     <string name="password">Kata Sandi</string>
     <string name="user_name">nama Pengguna</string>
-    <string name="server_url_and_port">URL dan port cloud server</string>
+    <string name="server_url_and_port">"URL dan port server  cloud."</string>
     <string name="server_url">URL Peladen</string>
     <string name="otg_warning">Fitur Eksperimental: Gunakan hanya ketika alat OTG dapat ditulis.</string>
     <string name="otg_device_path">jalur alat OTG</string>
@@ -89,15 +89,20 @@
     <string name="pref_show_hidden_files_summary">Nyalakan untuk menampilkan berkas/folder tersembunyi</string>
     <string name="pref_show_hidden_files">File/Folder Tersembunyi</string>
     <string name="pref_category_editor">Pengaturan Penyunting</string>
-    <string name="pref_category_explorer">Pengaturan Manajer File</string>
+    <string name="pref_category_explorer">Pengaturan Manajer Berkas</string>
     <string name="grid_view">Kisi</string>
     <string name="failed_to_load_file">Gagal untuk menetapkan sebuah berkas untuk dimuat</string>
     <string name="file_creation_failed">Pembuatan berkas gagal</string>
     <string name="file_exists_warning">Sebuah berkas dengan nama ini telah ada, dan akan ditimpa.</string>
-    <string name="temp_file_saving_disabled">Berkas ini hanya baca, penyimpanan dimatikan.</string>
+    <string name="temp_file_saving_disabled">Berkas ini hanya baca, penyimpanan dinonaktifkan.</string>
     <string name="no_items">Tidak ada item</string>
-    <string name="no_recent_items">Silahkan buka sebuah berkas menggunakan ikon folder pada bilah alat.</string>
+    <string name="no_recent_items">Silakan buka sebuah berkas menggunakan ikon folder pada bilah alat.</string>
     <string name="app_vendor">Rilis ini dipasok oleh $VENDOR.</string>
-    <string name="app_description">$APP_NAME adalah rangkaian produktivitas sumber terbuka modern, mudah digunakan, untuk pemrosesan kata, spreadsheet, presentasi, dan lainnya.</string>
+    <string name="app_description">$APP_NAME adalah keluarga produktivitas sumber terbuka yang modern, mudah digunakan, untuk pemrosesan kata, lembar kerja, presentasi, dan lainnya.</string>
     <string name="app_version">Versi: %1$s, Nomor Pembentukan: %2$s</string>
+    <string name="storage_provider_settings">Pengaturan penyedia penyimpanan</string>
+    <string name="otg_missing_error">Berkas root tidak valid. Periksalah peranti OTG dan/atau konfigurasi Anda.</string>
+    <string name="app_version_and_hash">Versi: %1$s
+\ngit-hash daring: %2$s
+\ngit-hash core: %3$s</string>
 </resources>
\ No newline at end of file
diff --git a/android/app/src/main/res/values-ko/strings.xml b/android/app/src/main/res/values-ko/strings.xml
index a2f1dea3f..7320b53f5 100644
--- a/android/app/src/main/res/values-ko/strings.xml
+++ b/android/app/src/main/res/values-ko/strings.xml
@@ -4,4 +4,23 @@
     <string name="app_description">$APP_NAME 은 현대적이며, 사용하기 쉬운 오픈소스 제품군이다. 이 제품군은 워드 프로세서, 스프레드시트, 프레젠테이션 등등이 포함되어 있습니다.</string>
     <string name="app_version">버전: %1$s, 빌드 ID: %2$s</string>
     <string name="app_name_settings">설정</string>
+    <string name="file_creation_failed">파일 생성 실패</string>
+    <string name="file_exists_warning">동일한 이름을 가진 파일이 이미 존재하며, 덮어 씁니다.</string>
+    <string name="temp_file_saving_disabled">이 파일은 읽기 전용이며, 저장이 비활성화됩니다.</string>
+    <string name="no_items">항목 없음</string>
+    <string name="no_recent_items">도구 모음의 폴더 아이콘을 사용하여 파일을 여십시오.</string>
+    <string name="app_version_and_hash">버전 : %1$s
+\n온라인 git-hash : %2$s
+\n핵심 git-hash : %3$s</string>
+    <string name="pref_file_explorer_title">파일 관리자 레이아웃</string>
+    <string name="pref_viewmode_summary">파일을 그리드 또는 리스트로 봅니다.</string>
+    <string name="pref_sort_summary">파일을 불러올 방법을 선택 하십시오 : A-Z, 크기 또는 날짜</string>
+    <string name="pref_show_hidden_files_summary">숨겨진 파일/폴더 표시 가능</string>
+    <string name="pref_show_hidden_files">숨겨진 파일/폴더</string>
+    <string name="pref_category_explorer">파일 관리자 설정</string>
+    <string name="grid_view">그리드</string>
+    <string name="failed_to_load_file">로드할 파일을 결정하지 못하였습니다</string>
+    <string name="storage_permission_required">저장 권한이 필요합니다</string>
+    <string name="pref_category_editor">편집기 설정</string>
+    <string name="list_view">목록</string>
 </resources>
\ No newline at end of file
diff --git a/android/app/src/main/res/values-nl/strings.xml b/android/app/src/main/res/values-nl/strings.xml
index f5cdfc737..ffd39b8b3 100644
--- a/android/app/src/main/res/values-nl/strings.xml
+++ b/android/app/src/main/res/values-nl/strings.xml
@@ -104,4 +104,7 @@
     <string name="remove_from_list">Van de lijst verwijderen</string>
     <string name="file_actions_icon_desc">Bestandsacties</string>
     <string name="pref_category_editor">Editor-instellingen</string>
+    <string name="app_version_and_hash">Versie: %1$s
+\nonline git-hash: %2$s
+\ncore git-hash: %3$s</string>
 </resources>
\ No newline at end of file
diff --git a/android/app/src/main/res/values-sl/strings.xml b/android/app/src/main/res/values-sl/strings.xml
index 6d32674b1..79e8e259c 100644
--- a/android/app/src/main/res/values-sl/strings.xml
+++ b/android/app/src/main/res/values-sl/strings.xml
@@ -102,4 +102,7 @@
     <string name="pref_category_editor">Nastavitve urejevalnika</string>
     <string name="file_actions_icon_desc">Dejanja datotek</string>
     <string name="remove_from_list">Odstrani s seznama</string>
+    <string name="app_version_and_hash">Različica: %1$s
+\nSpletna LO (git-hash): %2$s
+\nOsrčje LO (git-hash): %3$s</string>
 </resources>
\ No newline at end of file
diff --git a/android/app/src/main/res/values-uk/strings.xml b/android/app/src/main/res/values-uk/strings.xml
index 71d3fef0e..bd769e961 100644
--- a/android/app/src/main/res/values-uk/strings.xml
+++ b/android/app/src/main/res/values-uk/strings.xml
@@ -102,4 +102,7 @@
     <string name="pref_category_editor">Налаштування Редактора</string>
     <string name="remove_from_list">Видалити зі списку</string>
     <string name="file_actions_icon_desc">Дії з файлами</string>
+    <string name="app_version_and_hash">Версія: %1$s
+\nonline git-hash: %2$s
+\ncore git-hash: %3$s</string>
 </resources>
\ No newline at end of file
diff --git a/android/lib/src/main/res/values-af/strings.xml b/android/lib/src/main/res/values-af/strings.xml
index a6b3daec9..7ca66cf7b 100644
--- a/android/lib/src/main/res/values-af/strings.xml
+++ b/android/lib/src/main/res/values-af/strings.xml
@@ -1,2 +1,16 @@
 <?xml version="1.0" encoding="utf-8"?>
-<resources></resources>
\ No newline at end of file
+<resources>
+    <string name="exiting">Beeindig...</string>
+    <string name="loading">Laai...</string>
+    <string name="rate_our_app_text">As u daarvan hou, gee ons 5 sterre in Google Play. U goeie resensies is ons beste motivering.</string>
+    <string name="rate_our_app_title">Dankie vir die gebruik van %1$s!</string>
+    <string name="later">Later</string>
+    <string name="rate_now">Resenseer nou</string>
+    <string name="preparing_for_the_first_start_after_an_update">Voorbereiding van die eerste na-opdattering begin.</string>
+    <string name="cannot_open_file_chooser">Kan Lêer-kiesdialoog nie open nie.</string>
+    <string name="failed_to_insert_image">Die Beeld se invoeging, faal</string>
+    <string name="failed_to_load_file">Kon nie die lêer bepaal wat gelaai moet word nie</string>
+    <string name="storage_permission_required">Stoor-permissie is benodig.</string>
+    <string name="temp_file_saving_disabled">Die lêer is lees-alleen, stoor is geblokkeer.</string>
+    <string name="file_chromeos_read_only">Hier lêer kan nie in die lokasie gestoor word nie, open dit lees-alleen. Verskuif na \"Play\"-lêers vir volle lees/skryf toegang.</string>
+</resources>
\ No newline at end of file
diff --git a/android/lib/src/main/res/values-ast/strings.xml b/android/lib/src/main/res/values-ast/strings.xml
index 9f2f7300f..048424bda 100644
--- a/android/lib/src/main/res/values-ast/strings.xml
+++ b/android/lib/src/main/res/values-ast/strings.xml
@@ -1,10 +1,12 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources>
     <string name="loading">Cargando…</string>
-    <string name="temp_file_saving_disabled">Esti ficheru ye namái de llectura; nun se pue atroxar.</string>
+    <string name="temp_file_saving_disabled">Esti ficheru ye namái de llectura; nun pue guardase.</string>
     <string name="preparing_for_the_first_start_after_an_update">Preparando pal primer aniciu dempués d\'un anovamientu.</string>
     <string name="storage_permission_required">Ríquese permisu d\'almacenamientu</string>
     <string name="later">Sero</string>
     <string name="failed_to_load_file">Nun pudo determinase qué ficheru cargar</string>
     <string name="exiting">Colando…</string>
+    <string name="failed_to_insert_image">Nun se pudo inxertar la imaxe</string>
+    <string name="file_chromeos_read_only">Esti ficheru nun se pue abrir nesta ubicación; abrióse nel mou namái de llectura. Muévilu a Ficheros de Play pa un accesu completu de llectura y escritura.</string>
 </resources>
\ No newline at end of file
diff --git a/android/lib/src/main/res/values-bg/strings.xml b/android/lib/src/main/res/values-bg/strings.xml
index 59cac7299..12d5be0f5 100644
--- a/android/lib/src/main/res/values-bg/strings.xml
+++ b/android/lib/src/main/res/values-bg/strings.xml
@@ -13,4 +13,5 @@
     <string name="exiting">Излизане...</string>
     <string name="rate_our_app_text">Ако го харесвате, моля, дайте ни 5 звездички в Google Play. Добрите ви рецензии са най-силната ни мотивация.</string>
     <string name="rate_our_app_title">Благодарим ви, че използвате %1$s!</string>
+    <string name="file_chromeos_read_only">Файлът не може да се запише в това местоположение, ще бъде отворен само за четене. Преместете го в папката Play Files за пълен достъп за четене и писане.</string>
 </resources>
\ No newline at end of file
diff --git a/android/lib/src/main/res/values-ca/strings.xml b/android/lib/src/main/res/values-ca/strings.xml
index 74682a355..e89fdf5c7 100644
--- a/android/lib/src/main/res/values-ca/strings.xml
+++ b/android/lib/src/main/res/values-ca/strings.xml
@@ -13,4 +13,5 @@
     <string name="rate_our_app_text">Si en gaudiu, poseu-li 5 estrelles al Google Play. Les vostres ressenyes positives són la nostra motivació més gran.</string>
     <string name="rate_our_app_title">Gràcies per utilitzar el %1$s!</string>
     <string name="exiting">S\'està sortint…</string>
+    <string name="file_chromeos_read_only">El fitxer no es pot obrir en aquesta ubicació; s\'ha obert en el mode només de lectura. Desplaceu-lo a Fitxers de Play per a obtenir l\'accés complet de lectura i escriptura.</string>
 </resources>
\ No newline at end of file
diff --git a/android/lib/src/main/res/values-cs/strings.xml b/android/lib/src/main/res/values-cs/strings.xml
index 72170a53e..2e22019fd 100644
--- a/android/lib/src/main/res/values-cs/strings.xml
+++ b/android/lib/src/main/res/values-cs/strings.xml
@@ -13,4 +13,5 @@
     <string name="exiting">Ukončování...</string>
     <string name="rate_our_app_text">Pokud se vám tato aplikace líbí, dejte jí na Google Play 5 hvězdiček. Příznivé recenze jsou pro nás tou nejlepší motivací.</string>
     <string name="rate_now">Ohodnotit nyní</string>
+    <string name="file_chromeos_read_only">Soubor nelze v tomto umístění uložit, je proto otevřen jen pro čtení. Chcete-li využít přístup pro čtení i zápis, přesuňte jej mezi soubory Play.</string>
 </resources>
\ No newline at end of file
diff --git a/android/lib/src/main/res/values-cy/strings.xml b/android/lib/src/main/res/values-cy/strings.xml
index 8b9294bab..4b3260cc1 100644
--- a/android/lib/src/main/res/values-cy/strings.xml
+++ b/android/lib/src/main/res/values-cy/strings.xml
@@ -13,4 +13,5 @@
     <string name="rate_now">Graddio nawr</string>
     <string name="exiting">Gorffen...</string>
     <string name="rate_our_app_text">Os ydych yn ei hoffi, rhowch 5 seren i ni ar Google Play. Mae eich adolygiadau da yn ein hysbrydoli.</string>
+    <string name="file_chromeos_read_only">Nid oes modd cadw\'r ffeil yn y lleoliad yma. Bydd angen ei symud i\'r fan Chwarae ffeiliau ar gyfer mynediad darllen/ysgrifennu llawn.</string>
 </resources>
\ No newline at end of file
diff --git a/android/lib/src/main/res/values-da/strings.xml b/android/lib/src/main/res/values-da/strings.xml
index a6b3daec9..46e50425a 100644
--- a/android/lib/src/main/res/values-da/strings.xml
+++ b/android/lib/src/main/res/values-da/strings.xml
@@ -1,2 +1,16 @@
 <?xml version="1.0" encoding="utf-8"?>
-<resources></resources>
\ No newline at end of file
+<resources>
+    <string name="exiting">Afslutter…</string>
+    <string name="loading">Indlæser…</string>
+    <string name="rate_our_app_text">Hvis du kan lide den, giv os venligst 5 stjerner i Google Play. Dine gode anmeldelser er vores bedste motivation.</string>
+    <string name="rate_our_app_title">Tak, fordi du bruger %1$s!</string>
+    <string name="later">Senere</string>
+    <string name="rate_now">Vurdér nu</string>
+    <string name="preparing_for_the_first_start_after_an_update">Forbereder den første åbning efter en opdatering.</string>
+    <string name="cannot_open_file_chooser">Kan ikke åbne filvælgeren</string>
+    <string name="failed_to_insert_image">Kunne ikke indsætte billede</string>
+    <string name="failed_to_load_file">Kunne ikke bestemme, hvilken fil der skal indlæses</string>
+    <string name="storage_permission_required">Lagringstilladelse er nødvendig.</string>
+    <string name="file_chromeos_read_only">Denne fil kan ikke gemmes her og er skrivebeskyttet. Flyt den til Play-filerne og få fulde læse-/skrive-adgang.</string>
+    <string name="temp_file_saving_disabled">Denne fil er skrivebeskyttet. Lagring er deaktiveret.</string>
+</resources>
\ No newline at end of file
diff --git a/android/lib/src/main/res/values-de/strings.xml b/android/lib/src/main/res/values-de/strings.xml
index 072400b91..3daa5982a 100644
--- a/android/lib/src/main/res/values-de/strings.xml
+++ b/android/lib/src/main/res/values-de/strings.xml
@@ -12,4 +12,5 @@
     <string name="later">Später</string>
     <string name="rate_now">Jetzt bewerten</string>
     <string name="preparing_for_the_first_start_after_an_update">Vorbereitung auf den ersten Start nach einem Update.</string>
+    <string name="file_chromeos_read_only">Diese Datei kann nicht an diesem Speicherort gespeichert werden und ist schreibgeschützt. Verschieben Sie es in die Wiedergabedateien, um vollen Lese- / Schreibzugriff zu erhalten.</string>
 </resources>
\ No newline at end of file
diff --git a/android/lib/src/main/res/values-dsb/strings.xml b/android/lib/src/main/res/values-dsb/strings.xml
index f7bde4490..e33c2b118 100644
--- a/android/lib/src/main/res/values-dsb/strings.xml
+++ b/android/lib/src/main/res/values-dsb/strings.xml
@@ -13,4 +13,5 @@
     <string name="rate_our_app_title">Źěkujomy se, až sćo wužywał %1$s!</string>
     <string name="later">Pózdźej</string>
     <string name="rate_now">Něnto pógódnośiś</string>
+    <string name="file_chromeos_read_only">Toś ta dataja njedajo se na toś tom městnje składowaś, wócynja se jano pśeśiwo pisanjeju šćitana. Pśesuńśo ju do wótgrawańskich datajow za połny cytański/pisański pśistup.</string>
 </resources>
\ No newline at end of file
diff --git a/android/lib/src/main/res/values-el/strings.xml b/android/lib/src/main/res/values-el/strings.xml
index 3ecf544e0..b3358e3b4 100644
--- a/android/lib/src/main/res/values-el/strings.xml
+++ b/android/lib/src/main/res/values-el/strings.xml
@@ -13,4 +13,5 @@
     <string name="rate_our_app_title">Σας ευχαριστούμε για τη χρήση του %1$s!</string>
     <string name="later">Αργότερα</string>
     <string name="rate_now">Αξιολόγηση τώρα</string>
+    <string name="file_chromeos_read_only">Αυτό το αρχείο δεν μπορεί να αποθηκευτεί σε αυτήν τη θέση, το άνοιγμα του είναι μόνο για ανάγνωση. Μετακινήστε το στα αρχεία αναπαραγωγής για δικαίωμα πλήρους ανάγνωσης/εγγραφής.</string>
 </resources>
\ No newline at end of file
diff --git a/android/lib/src/main/res/values-eo/strings.xml b/android/lib/src/main/res/values-eo/strings.xml
index fbe9e02bf..2769cd7b1 100644
--- a/android/lib/src/main/res/values-eo/strings.xml
+++ b/android/lib/src/main/res/values-eo/strings.xml
@@ -5,4 +5,13 @@
     <string name="temp_file_saving_disabled">La dosiero estas nurlegebla; la konservo estas malŝaltita.</string>
     <string name="preparing_for_the_first_start_after_an_update">Preparas sin por la unua komencigo post ĝisdatigo.</string>
     <string name="cannot_open_file_chooser">Neeblis malfermi la dosierelektilon</string>
-</resources>
\ No newline at end of file
+    <string name="exiting">Elirante...</string>
+    <string name="rate_our_app_text">Se plaĉas al vi, bonvolu doni al ni 5 stelojn en Google Play. Viaj bonaj taksoj estas nia plej bona motivo.</string>
+    <string name="rate_our_app_title">Dankon pro via uzo de %1$s!</string>
+    <string name="later">Poste</string>
+    <string name="rate_now">Taksi nun</string>
+    <string name="failed_to_insert_image">Malsukcesis enmeti bildon</string>
+    <string name="failed_to_load_file">Malsukcesis decidi dosieron ŝargotan</string>
+    <string name="storage_permission_required">Permeso bezonata por konservi</string>
+    <string name="file_chromeos_read_only">Ne eblas konservi ĉi tiun dosieron en ĉi tiu loko, malfermas ĝin nurlega. Movu ĝin al la spektaj dosieroj por plena legi/skribi aliro.</string>
+</resources>
diff --git a/android/lib/src/main/res/values-es/strings.xml b/android/lib/src/main/res/values-es/strings.xml
index 834015b2c..30df22045 100644
--- a/android/lib/src/main/res/values-es/strings.xml
+++ b/android/lib/src/main/res/values-es/strings.xml
@@ -14,4 +14,5 @@
     <string name="later">Luego</string>
     <string name="rate_now">Calificar ahora</string>
     <string name="exiting">Saliendo…</string>
+    <string name="file_chromeos_read_only">No se puede guardar este archivo en esta ubicación; se ha abierto en modo de solo lectura. Muévalo a Archivos de Play para poder modificarlo.</string>
 </resources>
\ No newline at end of file
diff --git a/android/lib/src/main/res/values-eu/strings.xml b/android/lib/src/main/res/values-eu/strings.xml
index 4a9ed79a8..6d3ec18d7 100644
--- a/android/lib/src/main/res/values-eu/strings.xml
+++ b/android/lib/src/main/res/values-eu/strings.xml
@@ -13,4 +13,5 @@
     <string name="later">Geroago</string>
     <string name="rate_now">Eman puntuazioa orain</string>
     <string name="exiting">Irteten...</string>
+    <string name="file_chromeos_read_only">Fitxategi hau ezin da gorde kokaleku honetan, irakurtzeko moduan irekiko da. Eraman Play fitxategietara irakurtzeko/idazteko atzipen osoa eduki ahal izateko.</string>
 </resources>
\ No newline at end of file
diff --git a/android/lib/src/main/res/values-fr/strings.xml b/android/lib/src/main/res/values-fr/strings.xml
index 1cf33f551..82d726061 100644
--- a/android/lib/src/main/res/values-fr/strings.xml
+++ b/android/lib/src/main/res/values-fr/strings.xml
@@ -13,4 +13,5 @@
     <string name="rate_our_app_title">"Merci d\'utiliser  %1$s !"</string>
     <string name="later">Plus tard</string>
     <string name="rate_now">Évaluer maintenant</string>
+    <string name="file_chromeos_read_only">Ce fichier ne peut pas être enregistré à cet emplacement, l\'ouvrir en lecture seule. Déplacez-le vers les fichiers de lecture pour un accès complet en lecture/écriture.</string>
 </resources>
\ No newline at end of file
diff --git a/android/lib/src/main/res/values-gl/strings.xml b/android/lib/src/main/res/values-gl/strings.xml
index 693a57227..288708155 100644
--- a/android/lib/src/main/res/values-gl/strings.xml
+++ b/android/lib/src/main/res/values-gl/strings.xml
@@ -13,4 +13,5 @@
     <string name="rate_our_app_title">Grazas por utilizar %1$s!</string>
     <string name="later">Máis tarde</string>
     <string name="rate_now">Avaliar agora</string>
+    <string name="file_chromeos_read_only">Non é posíbel gardar este ficheiro neste sitio, polo que se abre só para lectura. Móvao para os ficheiros de Play para un acceso de lectura e escritura completo.</string>
 </resources>
\ No newline at end of file
diff --git a/android/lib/src/main/res/values-hsb/strings.xml b/android/lib/src/main/res/values-hsb/strings.xml
index e93a59f2f..ed60ec757 100644
--- a/android/lib/src/main/res/values-hsb/strings.xml
+++ b/android/lib/src/main/res/values-hsb/strings.xml
@@ -13,4 +13,5 @@
     <string name="rate_our_app_title">Dźakujemy so, zo sće %1$s wužiwał!</string>
     <string name="later">Pozdźišo</string>
     <string name="rate_now">Nětko pohódnoćić</string>
+    <string name="file_chromeos_read_only">Tuta dataja njeda so na tutym městnje składować, wočinja so jenož přećiwo pisanju škitana. Přesuńće ju do wothrawanskich datajow za połny čitanski/pisanski přistup.</string>
 </resources>
\ No newline at end of file
diff --git a/android/lib/src/main/res/values-hu/strings.xml b/android/lib/src/main/res/values-hu/strings.xml
index bb910d83e..7e52ed1dc 100644
--- a/android/lib/src/main/res/values-hu/strings.xml
+++ b/android/lib/src/main/res/values-hu/strings.xml
@@ -13,4 +13,5 @@
     <string name="rate_our_app_title">Köszönjük, hogy a %1$s-t használja!</string>
     <string name="later">Később</string>
     <string name="rate_now">Értékelés most</string>
+    <string name="file_chromeos_read_only">Ezt a fájlt nem lehet erre a helyre menteni, ezért csak olvashatóként lesz megnyitva. Helyezze át a Play fájlok közé, ott már írható lesz.</string>
 </resources>
\ No newline at end of file
diff --git a/android/lib/src/main/res/values-id/strings.xml b/android/lib/src/main/res/values-id/strings.xml
index f47176bed..f69cbb45f 100644
--- a/android/lib/src/main/res/values-id/strings.xml
+++ b/android/lib/src/main/res/values-id/strings.xml
@@ -12,4 +12,5 @@
     <string name="failed_to_load_file">Gagal menetapkan berkas untuk dimuat</string>
     <string name="storage_permission_required">perijinan Penyimpanan dibutuhkan</string>
     <string name="temp_file_saving_disabled">Berkas ini hanya-baca, menyimpan dimatikan.</string>
+    <string name="file_chromeos_read_only">Berkas ini tidak dapat disimpan dalam lokasi ini, membukanya hanya-baca. Pindahkan itu ke berkas Play untuk akses baca/tulis penuh.</string>
 </resources>
\ No newline at end of file
diff --git a/android/lib/src/main/res/values-it/strings.xml b/android/lib/src/main/res/values-it/strings.xml
index 291b12520..fa61799f8 100644
--- a/android/lib/src/main/res/values-it/strings.xml
+++ b/android/lib/src/main/res/values-it/strings.xml
@@ -13,4 +13,5 @@
     <string name="rate_our_app_title">Grazie per utilizzare %1$s!</string>
     <string name="later">Più tardi</string>
     <string name="rate_now">Valuta ora</string>
+    <string name="file_chromeos_read_only">Impossibile salvare il file in questa posizione, verrà aperto in modalità di sola lettura. Per avere un accesso completo in lettura e scrittura, spostalo nei file di Play.</string>
 </resources>
\ No newline at end of file
diff --git a/android/lib/src/main/res/values-ja/strings.xml b/android/lib/src/main/res/values-ja/strings.xml
index 06d7ea8f4..19f047a33 100644
--- a/android/lib/src/main/res/values-ja/strings.xml
+++ b/android/lib/src/main/res/values-ja/strings.xml
@@ -3,4 +3,5 @@
     <string name="loading">ロード中...</string>
     <string name="temp_file_saving_disabled">読み取り専用です。保存できません。</string>
     <string name="storage_permission_required">ストレージの権限が必要です</string>
+    <string name="failed_to_insert_image">画像の挿入に失敗しました</string>
 </resources>
\ No newline at end of file
diff --git a/android/lib/src/main/res/values-nb-rNO/strings.xml b/android/lib/src/main/res/values-nb-rNO/strings.xml
index ed30b0bdb..5058de674 100644
--- a/android/lib/src/main/res/values-nb-rNO/strings.xml
+++ b/android/lib/src/main/res/values-nb-rNO/strings.xml
@@ -13,4 +13,5 @@
     <string name="rate_our_app_title">Takk for at du bruker %1$s!</string>
     <string name="later">Senere</string>
     <string name="rate_now">Ranger nå</string>
+    <string name="file_chromeos_read_only">Denne filen kan ikke lagres på dette stedet, og åpner den bare for lesing. Flytt den til Play-filene for full tilgang til lese / skriving.</string>
 </resources>
\ No newline at end of file
diff --git a/android/lib/src/main/res/values-pl/strings.xml b/android/lib/src/main/res/values-pl/strings.xml
index 952a016f0..876a77eb5 100644
--- a/android/lib/src/main/res/values-pl/strings.xml
+++ b/android/lib/src/main/res/values-pl/strings.xml
@@ -13,4 +13,5 @@
     <string name="rate_our_app_title">Dziękujemy za używanie %1$s!</string>
     <string name="later">Później</string>
     <string name="rate_now">Oceń teraz</string>
+    <string name="file_chromeos_read_only">Tego pliku tylko do odczytu nie można zapisać w tej lokalizacji. Przenieś go do plików Play, aby uzyskać pełny dostęp do odczytu i zapisu.</string>
 </resources>
\ No newline at end of file
diff --git a/android/lib/src/main/res/values-pt-rBR/strings.xml b/android/lib/src/main/res/values-pt-rBR/strings.xml
index 98b088211..c5dcc247c 100644
--- a/android/lib/src/main/res/values-pt-rBR/strings.xml
+++ b/android/lib/src/main/res/values-pt-rBR/strings.xml
@@ -14,4 +14,5 @@
     <string name="rate_our_app_title">Obrigado por usar %1$s!</string>
     <string name="later">Mais tarde</string>
     <string name="exiting">Saindo...</string>
+    <string name="file_chromeos_read_only">Este arquivo não pode ser salvo neste local, abrindo-o em só leitura. Mova-o para os arquivos de Play para poder ler e gravar o arquivo.</string>
 </resources>
\ No newline at end of file
diff --git a/android/lib/src/main/res/values-sk/strings.xml b/android/lib/src/main/res/values-sk/strings.xml
index 1f17d8953..b17659923 100644
--- a/android/lib/src/main/res/values-sk/strings.xml
+++ b/android/lib/src/main/res/values-sk/strings.xml
@@ -13,4 +13,5 @@
     <string name="rate_our_app_title">Ďakujeme, že používate %1$s!</string>
     <string name="later">Neskôr</string>
     <string name="rate_now">Ohodnotiť teraz</string>
+    <string name="file_chromeos_read_only">Súbor sa nedá v tomto umiestnení uložiť, je preto otvorený iba na čítanie. Ak chcete využiť prístup na čítanie aj zápis, presuňte ho medzi súbory Play.</string>
 </resources>
\ No newline at end of file
diff --git a/android/lib/src/main/res/values-sl/strings.xml b/android/lib/src/main/res/values-sl/strings.xml
index 7ec72a124..fc635b003 100644
--- a/android/lib/src/main/res/values-sl/strings.xml
+++ b/android/lib/src/main/res/values-sl/strings.xml
@@ -13,4 +13,5 @@
     <string name="rate_our_app_title">Hvala, ker uporabljate %1$s!</string>
     <string name="later">Kasneje</string>
     <string name="rate_now">Ocenite zdaj</string>
+    <string name="file_chromeos_read_only">Te datoteke ni mogoče shraniti na tem mestu, zato je odprta samo za branje. Premaknite jih med datoteke Play, da boste imeli dostop s polnimi pravicami branja in pisanja.</string>
 </resources>
\ No newline at end of file
diff --git a/android/lib/src/main/res/values-sv/strings.xml b/android/lib/src/main/res/values-sv/strings.xml
index 9d42f949c..94fc2d8b1 100644
--- a/android/lib/src/main/res/values-sv/strings.xml
+++ b/android/lib/src/main/res/values-sv/strings.xml
@@ -12,4 +12,5 @@
     <string name="failed_to_load_file">Det gick inte att fastställa vilken fil som ska laddas</string>
     <string name="storage_permission_required">Behörighet krävs för lagring</string>
     <string name="temp_file_saving_disabled">Denna fil är skrivskyddad, spara är inaktiverat.</string>
+    <string name="file_chromeos_read_only">Den här filen kan inte sparas på den här platsen och är skrivskyddad. Flytta den till Play-filerna för fullständig läs-/skrivåtkomst.</string>
 </resources>
\ No newline at end of file
diff --git a/android/lib/src/main/res/values-uk/strings.xml b/android/lib/src/main/res/values-uk/strings.xml
index 66c7a3d4b..af193e490 100644
--- a/android/lib/src/main/res/values-uk/strings.xml
+++ b/android/lib/src/main/res/values-uk/strings.xml
@@ -13,4 +13,5 @@
     <string name="rate_our_app_title">Дякуємо за використання %1$s!</string>
     <string name="later">Пізніше</string>
     <string name="rate_now">Оцінити зараз</string>
+    <string name="file_chromeos_read_only">Цей файл неможливо зберегти за вказаним призначенням, відкриваю в режимі читання. Перемістіть його до Play файлів для повного доступу до операцій читання/запису.</string>
 </resources>
\ No newline at end of file
diff --git a/android/lib/src/main/res/values-zh-rCN/strings.xml b/android/lib/src/main/res/values-zh-rCN/strings.xml
index 90627e536..397d7b5dd 100644
--- a/android/lib/src/main/res/values-zh-rCN/strings.xml
+++ b/android/lib/src/main/res/values-zh-rCN/strings.xml
@@ -12,4 +12,5 @@
     <string name="failed_to_load_file">无法决定要加载的文件</string>
     <string name="storage_permission_required">需要存储权限</string>
     <string name="temp_file_saving_disabled">此文件是只读文件,已禁用保存功能。</string>
+    <string name="file_chromeos_read_only">此文件无法在本位置保存,因此以只读方式打开。如果要对文件拥有全部读写权限,请将其移动到 Play 文件中。</string>
 </resources>
\ No newline at end of file
commit 21d8893650deab4ad2a1541ed99f4c73896214bb
Author:     Andras Timar <andras.timar at collabora.com>
AuthorDate: Wed Sep 2 16:42:34 2020 +0200
Commit:     Andras Timar <andras.timar at collabora.com>
CommitDate: Wed Sep 2 21:00:53 2020 +0200

    [cp] updated loleaflet translations from master
    
    for i in ui-*.po ; do msgmerge -N --no-wrap -o $i.new -C /home/timar/online/loleaflet/po/$i $i templates/loleaflet-ui.pot;mv $i.new $i;done
    for i in help-*.po ; do msgmerge -N --no-wrap -o $i.new -C /home/timar/online/loleaflet/po/$i $i templates/loleaflet-help.pot;mv $i.new $i;done
    
    Change-Id: Ic79e5b1bd8cd4d055e69486e3b3007849e988447

diff --git a/loleaflet/po/help-ab.po b/loleaflet/po/help-ab.po
index a16019b06..b9d5d45c6 100644
--- a/loleaflet/po/help-ab.po
+++ b/loleaflet/po/help-ab.po
@@ -2,7 +2,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-03-15 22:15+0200\n"
+"POT-Creation-Date: 2020-03-31 22:32+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
 "Language-Team: LANGUAGE <LL at li.org>\n"
@@ -914,7 +914,6 @@ msgstr ""
 #: html/loleaflet-help.html%2Bdiv.p:213-5
 #: html/loleaflet-help.html%2Bdiv.h3:251-5
 #, fuzzy
-#| msgid "Cell formatting"
 msgid "Collaborative editing"
 msgstr "Абларҭа аформат"
 
@@ -1244,7 +1243,6 @@ msgstr ""
 
 #: html/loleaflet-help.html%2Bdiv.h4:327-5
 #, fuzzy
-#| msgid "Go to end of document"
 msgid "Comments in documents"
 msgstr "Ииастәуп адокумент анҵәамҭахь"
 
@@ -1350,7 +1348,6 @@ msgstr ""
 
 #: html/loleaflet-help.html%2Bdiv.div.h3:393-5
 #, fuzzy
-#| msgid "Text formatting"
 msgid "Formatting text"
 msgstr "Атеқст аформат"
 
@@ -1560,7 +1557,6 @@ msgstr ""
 
 #: html/loleaflet-help.html%2Bdiv.div.h4:474-5
 #, fuzzy
-#| msgid "Go to start of document"
 msgid "How do I get a word count of my document?"
 msgstr "Ииастәуп адокумент алагамҭахь"
 
@@ -1638,7 +1634,6 @@ msgstr ""
 
 #: html/loleaflet-help.html%2Bdiv.div.h4:503-5
 #, fuzzy
-#| msgid "Go to start of document"
 msgid "How do I set the margins of the document?"
 msgstr "Ииастәуп адокумент алагамҭахь"
 
@@ -1709,7 +1704,6 @@ msgstr ""
 
 #: html/loleaflet-help.html%2Bdiv.div.p:527-5
 #, fuzzy
-#| msgid "Apply Default paragraph style"
 msgid "Applying a paragraph style:"
 msgstr "Ихархәатәуп абзац абазатә стиль"
 
diff --git a/loleaflet/po/help-af.po b/loleaflet/po/help-af.po
index 98b9479a9..73b1ee5ac 100644
--- a/loleaflet/po/help-af.po
+++ b/loleaflet/po/help-af.po
@@ -2,7 +2,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-03-15 22:15+0200\n"
+"POT-Creation-Date: 2020-03-31 22:32+0200\n"
 "PO-Revision-Date: 2020-05-14 08:13+0000\n"
 "Last-Translator: Paul Roos <iNetRoos at gmail.com>\n"
 "Language-Team: Afrikaans <https://weblate.documentfoundation.org/projects/libo_online/loleaflet-help/af/>\n"
diff --git a/loleaflet/po/help-am.po b/loleaflet/po/help-am.po
index 1398fa9e1..24e684d56 100644
--- a/loleaflet/po/help-am.po
+++ b/loleaflet/po/help-am.po
@@ -2,7 +2,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"

... etc. - the rest is truncated


More information about the Libreoffice-commits mailing list