Updated by "Cleanup translation files" hook in Weblate. Change-Id: Ie0d7d835fba42e9a8cfb73370a8b153168a9cf9e android-viewer translated using Weblate Slovenian currently translated at 100.0% (132 of 132 strings) Change-Id: Id07e5c018310b97460f7750c2db2f43127c483c5 Added translation for android-viewer using Weblate (Slovenian) Change-Id: Ie9008b437173feb5a871e119fd00e5f134dd0da9 android-viewer translated using Weblate Polish currently translated at 100.0% (132 of 132 strings) Change-Id: Iacacacd662c48986358e904598d458c44ca8805f Added translation for android-viewer using Weblate (Japanese) Change-Id: I3373654075eabc79c42cd2c67daf62f5f7111158 Added translation for android-viewer using Weblate (Chinese (Traditional)) Change-Id: I7af06e08b6567f990641ad532b8b94df2ec7d367 android-viewer translated using Weblate Basque currently translated at 100.0% (132 of 132 strings) Change-Id: I9b29af97d0642fa36c09ce38bf14290f60ccb8cd android-viewer translated using Weblate Polish currently translated at 100.0% (132 of 132 strings) Change-Id: Ie0b345d1dc63102120cb871f8066ed710917e72f android-viewer translated using Weblate Portuguese (Brazil) currently translated at 54.5% (72 of 132 strings) Change-Id: I652b6dde8cd02c9b4baff5ba5453f7471f8eb896 android-viewer translated using Weblate Catalan currently translated at 100.0% (132 of 132 strings) Change-Id: Ic7b42998072d6bb02937e88af76620564abc51b8 Added translation for android-viewer using Weblate (Finnish) Change-Id: Iae55f9b007d7d34162d77c8f62d025fa54ff8035 Added translation for android-viewer using Weblate (Basque) Change-Id: I88291444f52d5f4189c17330f855683268a2bffc android-viewer translated using Weblate Catalan currently translated at 62.1% (82 of 132 strings) Change-Id: I28ec1b2f54d39209f7d802ba9aa899d12b2a3b35 android-viewer translated using Weblate Persian currently translated at 2.2% (3 of 132 strings) Change-Id: I7ba58594540aff2ad592771e73efeeccdff027db android-viewer translated using Weblate Portuguese (Brazil) currently translated at 33.3% (44 of 132 strings) Change-Id: I092277ffea906ad3da9b73e7831536a482bb104f android-viewer translated using Weblate French currently translated at 1.5% (2 of 132 strings) Change-Id: Ia8553c387bec6c66c6def3de9b4b41016ead2bb1 Added translation for android-viewer using Weblate (Polish) Change-Id: Ibe83470b27b286030024f654df5cf30b2cb727ed Added translation for android-viewer using Weblate (Persian) Change-Id: I67bb9684aaa873ca4129139fb340b84634c9fe7e android-viewer translated using Weblate Portuguese (Brazil) currently translated at 20.4% (27 of 132 strings) Change-Id: I628da41052ac2957601226a5e03796bd67744863 Added translation for android-viewer using Weblate (Portuguese (Brazil)) Change-Id: I8ee44239235aaba0c44f805d93d2cb8db4383fab android-viewer translated using Weblate Punjabi currently translated at 87.8% (116 of 132 strings) Change-Id: Ic9ae2d4d5d007638ecf8d58c9069c103d30af7c1 android-viewer translated using Weblate Catalan currently translated at 59.0% (78 of 132 strings) Change-Id: Ib6d7f7e1adf85c57f6de66cf21795c27d6945a03 Added translation for android-viewer using Weblate (French) Change-Id: I936f355b82bf58baea5f1738227b7b1755b23193 Co-authored-by: A S Alam <amanpreet.alam@gmail.com> Co-authored-by: Adam Rak <kitynska@gmail.com> Co-authored-by: Aitor Salaberria <trslbrr@gmail.com> Co-authored-by: Hossein <hossein@libreoffice.org> Co-authored-by: Joan Montané <joan@montane.cat> Co-authored-by: Martin Srebotnjak <miles@filmsi.net> Co-authored-by: Naruhiko Ogasawara <naruoga@gmail.com> Co-authored-by: Olivier Hallot <olivier.hallot@libreoffice.org> Co-authored-by: Tuomas Hietala <tuomas.hietala@iki.fi> Co-authored-by: Weblate <noreply@documentfoundation.org> Co-authored-by: Weblate <noreply@weblate.org> Co-authored-by: sophie <gautier.sophie@gmail.com> Translate-URL: https://translations.documentfoundation.org/projects/android-viewer/android-strings/ Translate-URL: https://translations.documentfoundation.org/projects/android-viewer/android-strings/ca/ Translate-URL: https://translations.documentfoundation.org/projects/android-viewer/android-strings/eu/ Translate-URL: https://translations.documentfoundation.org/projects/android-viewer/android-strings/fa/ Translate-URL: https://translations.documentfoundation.org/projects/android-viewer/android-strings/fr/ Translate-URL: https://translations.documentfoundation.org/projects/android-viewer/android-strings/pa/ Translate-URL: https://translations.documentfoundation.org/projects/android-viewer/android-strings/pl/ Translate-URL: https://translations.documentfoundation.org/projects/android-viewer/android-strings/pt_BR/ Translate-URL: https://translations.documentfoundation.org/projects/android-viewer/android-strings/sl/ Translation: android-viewer/android-strings Reviewed-on: https://gerrit.libreoffice.org/c/core/+/160824 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
LibreOffice
LibreOffice is an integrated office suite based on copyleft licenses and compatible with most document formats and standards. Libreoffice is backed by The Document Foundation, which represents a large independent community of enterprises, developers and other volunteers moved by the common goal of bringing to the market the best software for personal productivity. LibreOffice is open source, and free to download, use and distribute.
A quick overview of the LibreOffice code structure.
Overview
You can develop for LibreOffice in one of two ways, one recommended and one much less so. First the somewhat less recommended way: it is possible to use the SDK to develop an extension, for which you can read the API docs and Developers Guide. This re-uses the (extremely generic) UNO APIs that are also used by macro scripting in StarBasic.
The best way to add a generally useful feature to LibreOffice is to work on the code base however. Overall this way makes it easier to compile and build your code, it avoids any arbitrary limitations of our scripting APIs, and in general is far more simple and intuitive - if you are a reasonably able C++ programmer.
The Build Chain and Runtime Baselines
These are the current minimal operating system and compiler versions to run and compile LibreOffice, also used by the TDF builds:
- Windows:
- Runtime: Windows 7
- Build: Cygwin + Visual Studio 2019 version 16.10
- macOS:
- Runtime: 10.15
- Build: 12 (13 for aarch64) + Xcode 14
- Linux:
- Runtime: RHEL 8 or CentOS 8 and comparable
- Build: either GCC 12; or Clang 12 with libstdc++ 8.5
- iOS (only for LibreOfficeKit):
- Runtime: 11.4 (only support for newer i devices == 64 bit)
- Build: Xcode 9.3 and iPhone SDK 11.4
- Android:
- Build: NDK r23 and SDK 30.0.3
- Emscripten / WASM:
- Runtime: a browser with SharedMemory support (threads + atomics)
- Build: Qt 5.15 with Qt supported Emscripten 1.39.8
- See README.wasm
Java is required for building many parts of LibreOffice. In TDF Wiki article Development/Java, the exact modules that depend on Java are listed.
The baseline for Java is Java Development Kit (JDK) Version 17 or later.
If you want to use Clang with the LibreOffice compiler plugins, the minimal version of Clang is 12.0.1. Since Xcode doesn't provide the compiler plugin headers, you have to compile your own Clang to use them on macOS.
You can find the TDF configure switches in the distro-configs/ directory.
To setup your initial build environment on Windows and macOS, we provide the LibreOffice Development Environment (LODE) scripts.
For more information see the build instructions for your platform in the TDF wiki.
The Important Bits of Code
Each module should have a README.md file inside it which has some
degree of documentation for that module; patches are most welcome to
improve those. We have those turned into a web page here:
However, there are two hundred modules, many of them of only peripheral interest for a specialist audience. So - where is the good stuff, the code that is most useful. Here is a quick overview of the most important ones:
| Module | Description |
|---|---|
| sal/ | this provides a simple System Abstraction Layer |
| tools/ | this provides basic internal types: Rectangle, Color etc. |
| vcl/ | this is the widget toolkit library and one rendering abstraction |
| framework/ | UNO framework, responsible for building toolbars, menus, status bars, and the chrome around the document using widgets from VCL, and XML descriptions from /uiconfig/ files |
| sfx2/ | legacy core framework used by Writer/Calc/Draw: document model / load/save / signals for actions etc. |
| svx/ | drawing model related helper code, including much of Draw/Impress |
Then applications
| Module | Description |
|---|---|
| desktop/ | this is where the main() for the application lives, init / bootstrap. the name dates back to an ancient StarOffice that also drew a desktop |
| sw/ | Writer |
| sc/ | Calc |
| sd/ | Draw / Impress |
There are several other libraries that are helpful from a graphical perspective:
| Module | Description |
|---|---|
| basegfx/ | algorithms and data-types for graphics as used in the canvas |
| canvas/ | new (UNO) canvas rendering model with various backends |
| cppcanvas/ | C++ helper classes for using the UNO canvas |
| drawinglayer/ | View code to render drawable objects and break them down into primitives we can render more easily. |
Rules for #include Directives (C/C++)
Use the "..." form if and only if the included file is found next to the
including file. Otherwise, use the <...> form. (For further details, see the
mail Re: C[++]: Normalizing include syntax ("" vs
<>).)
The UNO API include files should consistently use double quotes, for the benefit of external users of this API.
loplugin:includeform (compilerplugins/clang/includeform.cxx) enforces these rules.
Finding Out More
Beyond this, you can read the README.md files, send us patches, ask
on the mailing list libreoffice@lists.freedesktop.org (no subscription
required) or poke people on IRC #libreoffice-dev on irc.libera.chat -
we're a friendly and generally helpful mob. We know the code can be
hard to get into at first, and so there are no silly questions.