Hello,
git diff attached for comphelper directory. Sent this in last week but
looks like the message got flagged somehow.
This is my first submission; please let me know if I've done something
incorrectly!
-Tom Thorogood
(do you need GPL stuff for comments? If so: I'm submitting this under
the Gnu Public License--do whatever you want with it forever and ever).
diff --git a/comphelper/inc/comphelper/oslfile2streamwrap.hxx
b/comphelper/inc/comphelper/oslfile2streamwrap.hxx
index 6199ea5..754be72 100644
--- a/comphelper/inc/comphelper/oslfile2streamwrap.hxx
+++ b/comphelper/inc/comphelper/oslfile2streamwrap.hxx
@@ -42,7 +42,7 @@ namespace comphelper
//==================================================================
// FmUnoIOStream,
-// strem to read and write from data read from a file
+// stream zum schreiben un lesen von Daten, basieren auf File
//==================================================================
class COMPHELPER_DLLPUBLIC OSLInputStreamWrapper : public
::cppu::WeakImplHelper1<stario::XInputStream>
{
@@ -63,7 +63,7 @@ public:
//==================================================================
// FmUnoOutStream,
-// sync data for the files
+// Datensenke fuer Files
//==================================================================
class OSLOutputStreamWrapper : public ::cppu::WeakImplHelper1<stario::XOutputStream>
{
diff --git a/comphelper/source/container/container.cxx b/comphelper/source/container/container.cxx
index 39ab7ba..7bf2f8f 100644
--- a/comphelper/source/container/container.cxx
+++ b/comphelper/source/container/container.cxx
@@ -51,9 +51,9 @@ IndexAccessIterator::~IndexAccessIterator() {}
::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface> IndexAccessIterator::Next()
{
sal_Bool bCheckingStartingPoint = !m_xCurrentObject.is();
- // Is the current node the starting point ?
+ // ist die aktuelle Node der Anfangspunkt ?
sal_Bool bAlreadyCheckedCurrent = m_xCurrentObject.is();
- // Have I already tested the current node through ShouldHandleElement ?
+ // habe ich die aktuelle Node schon mal mittels ShouldHandleElement testen ?
if (!m_xCurrentObject.is())
m_xCurrentObject = m_xStartingPoint;
@@ -62,7 +62,7 @@ IndexAccessIterator::~IndexAccessIterator() {}
sal_Bool bFoundSomething = sal_False;
while (!bFoundSomething && bHasMoreToSearch)
{
- // Priming loop
+ // pre-order-traversierung
if (!bAlreadyCheckedCurrent && ShouldHandleElement(xSearchLoop))
{
m_xCurrentObject = xSearchLoop;
@@ -70,10 +70,10 @@ IndexAccessIterator::~IndexAccessIterator() {}
}
else
{
- // First, see if there's something below
+ // zuerst absteigen, wenn moeglich
::com::sun::star::uno::Reference< ::com::sun::star::container::XIndexAccess>
xContainerAccess(xSearchLoop, ::com::sun::star::uno::UNO_QUERY);
if (xContainerAccess.is() && xContainerAccess->getCount() &&
ShouldStepInto(xContainerAccess))
- {
+ { // zum ersten Child
::com::sun::star::uno::Any aElement(xContainerAccess->getByIndex(0));
xSearchLoop = *(::com::sun::star::uno::Reference<
::com::sun::star::uno::XInterface>*)aElement.getValue();
bCheckingStartingPoint = sal_False;
@@ -82,9 +82,9 @@ IndexAccessIterator::~IndexAccessIterator() {}
}
else
{
- // Otherwise, look above and to the right, if possible
+ // dann nach oben und nach rechts, wenn moeglich
while (m_arrChildIndizies.size() > 0)
- { // If the list isn't empty and there's nothing above
+ { // (mein Stack ist nich leer, also kann ich noch nach oben gehen)
::com::sun::star::uno::Reference< ::com::sun::star::container::XChild>
xChild(xSearchLoop, ::com::sun::star::uno::UNO_QUERY);
OSL_ENSURE(xChild.is(), "IndexAccessIterator::Next : a content has no
approriate interface !");
@@ -92,35 +92,36 @@ IndexAccessIterator::~IndexAccessIterator() {}
xContainerAccess = ::com::sun::star::uno::Reference<
::com::sun::star::container::XIndexAccess>(xParent, ::com::sun::star::uno::UNO_QUERY);
OSL_ENSURE(xContainerAccess.is(), "IndexAccessIterator::Next : a content has
an invalid parent !");
- // Update the SearchLoop index
+ // den Index, den SearchLoop in diesem Parent hatte, von meinem 'Stack'
sal_Int32 nOldSearchChildIndex = m_arrChildIndizies[m_arrChildIndizies.size()
- 1];
m_arrChildIndizies.pop_back();
if (nOldSearchChildIndex < xContainerAccess->getCount() - 1)
- { // Search to the right in this row
+ { // auf dieser Ebene geht es noch nach rechts
++nOldSearchChildIndex;
- // also the next child
+ // also das naechste Child
::com::sun::star::uno::Any
aElement(xContainerAccess->getByIndex(nOldSearchChildIndex));
xSearchLoop = *(::com::sun::star::uno::Reference<
::com::sun::star::uno::XInterface>*) aElement.getValue();
bCheckingStartingPoint = sal_False;
- // and update its position in the list
+ // und dessen Position auf den 'Stack'
m_arrChildIndizies.push_back((sal_Int32)nOldSearchChildIndex);
break;
}
- // Finally, if there is nothing in this row to the right, we'll move on to the
next row
+ // hierher komme ich, wenn es auf der aktuellen Ebene nicht nach rechts geht,
dann mache ich eine darueber weiter
xSearchLoop = xParent;
bCheckingStartingPoint = sal_False;
}
if (m_arrChildIndizies.empty() && !bCheckingStartingPoint)
- { // This the case if if I have no neighbors to the right in the original serach
loop
+ { // das ist genau dann der Fall, wenn ich keinen rechten Nachbarn fuer
irgendeinen der direkten Vorfahren des
+ // urspruenglichen xSearchLoop gefunden habe
bHasMoreToSearch = sal_False;
}
}
if (bHasMoreToSearch)
- { // If there is still a node in the tree to which can be tested.
+ { // ich habe in xSearchLoop jetzt ein Interface eines 'Knotens' meines 'Baumes',
den ich noch abtesten kann
if (ShouldHandleElement(xSearchLoop))
{
m_xCurrentObject = xSearchLoop;
@@ -128,7 +129,7 @@ IndexAccessIterator::~IndexAccessIterator() {}
}
else
if (bCheckingStartingPoint)
- // Nothing more to do
+ // ich bin noch am Anfang, konnte nicht absteigen, und habe an diesem
Anfang nix gefunden -> nix mehr zu tun
bHasMoreToSearch = sal_False;
bAlreadyCheckedCurrent = sal_True;
}
diff --git a/comphelper/source/container/enumhelper.cxx b/comphelper/source/container/enumhelper.cxx
index 2549f56..3c6afd5 100644
--- a/comphelper/source/container/enumhelper.cxx
+++ b/comphelper/source/container/enumhelper.cxx
@@ -97,7 +97,7 @@ staruno::Any SAL_CALL OEnumerationByName::nextElement( )
m_xAccess.clear();
}
- if (!aRes.hasValue()) //There are no more elements
+ if (!aRes.hasValue()) // es gibt kein Element mehr
throw starcontainer::NoSuchElementException();
return aRes;
@@ -201,7 +201,7 @@ staruno::Any SAL_CALL OEnumerationByIndex::nextElement( )
}
}
- if (!aRes.hasValue()) // there are no more elements
+ if (!aRes.hasValue()) // es gibt kein Element mehr
throw starcontainer::NoSuchElementException();
return aRes;
}
diff --git a/comphelper/source/eventattachermgr/eventattachermgr.cxx
b/comphelper/source/eventattachermgr/eventattachermgr.cxx
index c39f757..9c119a1 100644
--- a/comphelper/source/eventattachermgr/eventattachermgr.cxx
+++ b/comphelper/source/eventattachermgr/eventattachermgr.cxx
@@ -98,9 +98,9 @@ class ImplEventAttacherManager
friend class AttacherAllListener_Impl;
::std::deque< AttacherIndex_Impl > aIndex;
Mutex aLock;
- // Container for the ScriptListener
+ // Container fuer die ScriptListener
OInterfaceContainerHelper aScriptListeners;
- // Instance of EventAttcher
+ // EventAttacher-Instanz
Reference< XEventAttacher2 > xAttacher;
Reference< XMultiServiceFactory > mxSMgr;
Reference< XIdlReflection > mxCoreReflection;
@@ -112,7 +112,7 @@ public:
const Reference< XMultiServiceFactory > rSMgr );
~ImplEventAttacherManager();
- // Methods from XEventAttacherManager
+ // Methoden von XEventAttacherManager
virtual void SAL_CALL registerScriptEvent(sal_Int32 Index, const ScriptEventDescriptor&
ScriptEvent)
throw( IllegalArgumentException, RuntimeException );
virtual void SAL_CALL registerScriptEvents(sal_Int32 Index, const Sequence<
ScriptEventDescriptor >& ScriptEvents)
@@ -136,7 +136,7 @@ public:
virtual void SAL_CALL removeScriptListener(const Reference< XScriptListener >& Listener)
throw( IllegalArgumentException, RuntimeException );
- // Methods from XPersistObject
+ // Methoden von XPersistObject
virtual OUString SAL_CALL getServiceName(void) throw( RuntimeException );
virtual void SAL_CALL write(const Reference< XObjectOutputStream >& OutStream) throw(
IOException, RuntimeException );
virtual void SAL_CALL read(const Reference< XObjectInputStream >& InStream) throw(
IOException, RuntimeException );
@@ -157,9 +157,8 @@ private:
//========================================================================
//========================================================================
-
-// Implementation of an EventAttacher-relation AllListeners, which
-// forwards only individual events of a general AllListener instance
+// Implementation eines EventAttacher-bezogenen AllListeners, der
+// nur einzelne Events an einen allgemeinen AllListener weiterleitet
class AttacherAllListener_Impl : public WeakImplHelper1< XAllListener >
{
ImplEventAttacherManager* mpManager;
@@ -174,11 +173,11 @@ public:
AttacherAllListener_Impl( ImplEventAttacherManager* pManager_, const OUString &rScriptType_,
const OUString & rScriptCode_ );
- // Methods of XAllListener
+ // Methoden von XAllListener
virtual void SAL_CALL firing(const AllEventObject& Event) throw( RuntimeException );
virtual Any SAL_CALL approveFiring(const AllEventObject& Event) throw(
InvocationTargetException, RuntimeException );
- // Methods of XEventListener
+ // Methoden von XEventListener
virtual void SAL_CALL disposing(const EventObject& Source) throw( RuntimeException );
};
@@ -199,7 +198,7 @@ AttacherAllListener_Impl::AttacherAllListener_Impl
//========================================================================
-// Methods from XAllListener
+// Methoden von XAllListener
void SAL_CALL AttacherAllListener_Impl::firing(const AllEventObject& Event)
throw( RuntimeException )
{
@@ -212,8 +211,7 @@ void SAL_CALL AttacherAllListener_Impl::firing(const AllEventObject& Event)
aScriptEvent.ScriptType = aScriptType;
aScriptEvent.ScriptCode = aScriptCode;
-
- // Iterate over all listeners and send events
+ // ueber alle Listener iterieren und Events senden
OInterfaceIteratorHelper aIt( mpManager->aScriptListeners );
while( aIt.hasMoreElements() )
((XScriptListener *)aIt.next())->firing( aScriptEvent );
@@ -280,7 +278,7 @@ Any SAL_CALL AttacherAllListener_Impl::approveFiring( const AllEventObject& Even
aScriptEvent.ScriptCode = aScriptCode;
Any aRet;
- // Iterate over ll listeners and send events
+ // ueber alle Listener iterieren und Events senden
OInterfaceIteratorHelper aIt( mpManager->aScriptListeners );
while( aIt.hasMoreElements() )
{
@@ -354,7 +352,7 @@ Any SAL_CALL AttacherAllListener_Impl::approveFiring( const AllEventObject& Even
}
//========================================================================
-// Methods from XEventListenever
+// Methoden von XEventListener
void SAL_CALL AttacherAllListener_Impl::disposing(const EventObject& )
throw( RuntimeException )
{
@@ -362,7 +360,7 @@ void SAL_CALL AttacherAllListener_Impl::disposing(const EventObject& )
}
-// Constructor methods fur EventAttacherManager
+// Create-Methode fuer EventAttacherManager
Reference< XEventAttacherManager > createEventAttacherManager( const Reference<
XMultiServiceFactory > & rSMgr )
throw( Exception )
{
@@ -417,7 +415,7 @@ ImplEventAttacherManager::~ImplEventAttacherManager()
Reference< XIdlReflection > ImplEventAttacherManager::getReflection() throw( Exception )
{
Guard< Mutex > aGuard( aLock );
- // Is there already a service? If not, create one
+ // Haben wir den Service schon? Sonst anlegen
if( !mxCoreReflection.is() )
{
Reference< XInterface > xIFace( mxSMgr->createInstance( OUString(
RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.reflection.CoreReflection" )) ) );
@@ -476,7 +474,7 @@ public:
}
//-----------------------------------------------------------------------------
-// Methods from XEventAttacherManager
+//*** Methoden von XEventAttacherManager ***
void SAL_CALL ImplEventAttacherManager::registerScriptEvent
(
sal_Int32 nIndex,
@@ -486,7 +484,7 @@ void SAL_CALL ImplEventAttacherManager::registerScriptEvent
{
Guard< Mutex > aGuard( aLock );
- // Examine the index and apply the array
+ // Index pruefen und Array anpassen
::std::deque<AttacherIndex_Impl>::iterator aIt = implCheckIndex( nIndex );
::std::deque< AttachedObject_Impl > aList = (*aIt).aObjList;
@@ -534,7 +532,7 @@ void SAL_CALL ImplEventAttacherManager::registerScriptEvents
{
Guard< Mutex > aGuard( aLock );
- // Examine the index and apply the array
+ // Index pruefen und Array anpassen
::std::deque<AttacherIndex_Impl>::iterator aIt = implCheckIndex( nIndex );
::std::deque< AttachedObject_Impl > aList = (*aIt).aObjList;
@@ -659,7 +657,7 @@ void SAL_CALL ImplEventAttacherManager::attach(sal_Int32 nIndex, const Reference
if( static_cast< ::std::deque< AttacherIndex_Impl >::size_type>(nIndex) >= aIndex.size() )
{
- // Read older files
+ // alte Dateien lesen
if( nVersion == 1 )
{
insertEntry( nIndex );
@@ -677,7 +675,6 @@ void SAL_CALL ImplEventAttacherManager::attach(sal_Int32 nIndex, const Reference
aTmp.aHelper = Helper;
aCurrentPosition->aObjList.push_back( aTmp );
- // ??? What is this comment for ?
//::std::deque< AttachedObject_Impl >::iterator aObjIt = (*aIt).aObjList.back();
AttachedObject_Impl & rCurObj = aCurrentPosition->aObjList.back();
rCurObj.aAttachedListenerSeq = Sequence< Reference< XEventListener > >(
aCurrentPosition->aEventList.size() );
@@ -772,7 +769,7 @@ void SAL_CALL ImplEventAttacherManager::removeScriptListener(const Reference< XS
}
-// Methods of XPersistObject
+// Methoden von XPersistObject
OUString SAL_CALL ImplEventAttacherManager::getServiceName(void)
throw( RuntimeException )
{
@@ -783,26 +780,26 @@ void SAL_CALL ImplEventAttacherManager::write(const Reference<
XObjectOutputStre
throw( IOException, RuntimeException )
{
Guard< Mutex > aGuard( aLock );
- // Don't run without XMarkableStream
+ // Ohne XMarkableStream laeuft nichts
Reference< XMarkableStream > xMarkStream( OutStream, UNO_QUERY );
if( !xMarkStream.is() )
return;
- // Print the version
+ // Version schreiben
OutStream->writeShort( 2 );
- // Mark the position for length
+ // Position fuer Laenge merken
sal_Int32 nObjLenMark = xMarkStream->createMark();
OutStream->writeLong( 0L );
OutStream->writeLong( aIndex.size() );
- // Print sequences
+ // Sequences schreiben
::std::deque<AttacherIndex_Impl>::iterator aIt = aIndex.begin();
::std::deque<AttacherIndex_Impl>::iterator aEnd = aIndex.end();
while( aIt != aEnd )
{
- // Print the length of the sequence and all descriptiors
+ // Laenge der Sequence und alle Descriptoren schreiben
OutStream->writeLong( (*aIt).aEventList.size() );
::std::deque< ScriptEventDescriptor >::iterator aEvtIt = (*aIt).aEventList.begin();
::std::deque< ScriptEventDescriptor >::iterator aEvtEnd = (*aIt).aEventList.end();
@@ -820,7 +817,7 @@ void SAL_CALL ImplEventAttacherManager::write(const Reference< XObjectOutputStre
++aIt;
}
- // The length is now known
+ // Die jetzt bekannte Laenge eintragen
sal_Int32 nObjLen = xMarkStream->offsetToMark( nObjLenMark ) -4;
xMarkStream->jumpToMark( nObjLenMark );
OutStream->writeLong( nObjLen );
@@ -832,31 +829,31 @@ void SAL_CALL ImplEventAttacherManager::read(const Reference<
XObjectInputStream
throw( IOException, RuntimeException )
{
Guard< Mutex > aGuard( aLock );
- // Don't run without XMarkableStream
+ // Ohne XMarkableStream laeuft nichts
Reference< XMarkableStream > xMarkStream( InStream, UNO_QUERY );
if( !xMarkStream.is() )
return;
- // Read the version
+ // Version lesen
nVersion = InStream->readShort();
- // Next is the time since version 1
- // Must this be maintained in later versions?
+ // Zunaechst kommen die Daten gemaess Version 1,
+ // muss auch bei hoeheren Versionen beibehalten werden
sal_Int32 nLen = InStream->readLong();
- // Position for comparative purposes
+ // Position fuer Vergleichszwecke
sal_Int32 nObjLenMark = xMarkStream->createMark();
- // Number of read sequences
+ // Anzahl der zu lesenden Sequences
sal_Int32 nItemCount = InStream->readLong();
for( sal_Int32 i = 0 ; i < nItemCount ; i++ )
{
insertEntry( i );
- // Read the length of the sequence
+ // Laenge der Sequence lesen
sal_Int32 nSeqLen = InStream->readLong();
- // Display the sequence and read the descriptors
+ // Sequence anlegen und Descriptoren lesen
Sequence< ScriptEventDescriptor > aSEDSeq( nSeqLen );
ScriptEventDescriptor* pArray = aSEDSeq.getArray();
for( sal_Int32 j = 0 ; j < nSeqLen ; j++ )
@@ -871,20 +868,21 @@ void SAL_CALL ImplEventAttacherManager::read(const Reference<
XObjectInputStream
registerScriptEvents( i, aSEDSeq );
}
- // Have we read the specified length?
+ // Haben wir die angegebene Laenge gelesen?
sal_Int32 nRealLen = xMarkStream->offsetToMark( nObjLenMark );
if( nRealLen != nLen )
{
- // Only if the StreamVersion is > 1 and the date still follows, can
- // this be true. Otherwise, something is completely gone.
+ // Nur wenn die StreamVersion > 1 ist und noch Daten folgen, kann das
+ // Ganze richtig sein. Sonst ist etwas voellig daneben gegangen.
if( nRealLen > nLen || nVersion == 1 )
{
OSL_FAIL( "ImplEventAttacherManager::read(): Fatal Error, wrong object length" );
}
else
{
- // TODO: Examine if between storage of the dates could be useful
- // But for now, it's easier to skip it
+ // TODO: Pruefen, ob Zwischen-Speicherung der Daten sinnvoll sein koennte
+
+ // Vorerst einfach nur Skippen
sal_Int32 nSkipCount = nLen - nRealLen;
InStream->skipBytes( nSkipCount );
}
diff --git a/comphelper/source/property/propagg.cxx b/comphelper/source/property/propagg.cxx
index e186582..be24a1d 100644
--- a/comphelper/source/property/propagg.cxx
+++ b/comphelper/source/property/propagg.cxx
@@ -146,12 +146,12 @@ OPropertyArrayAggregationHelper::OPropertyArrayAggregationHelper(
m_aProperties.realloc( nMergedProps );
pMergedProps = m_aProperties.getArray(); // reset, needed again below
- // sort the properties by name
+ // sortieren der Properties nach Namen
::std::sort( pMergedProps, pMergedProps+nMergedProps, PropertyCompareByName());
pMergedProps = m_aProperties.getArray();
- // sync the map positions
+ // Positionen in der Map abgleichen
for ( nMPLoop = 0; nMPLoop < nMergedProps; ++nMPLoop, ++pMergedProps )
m_aPropertyAccessors[ pMergedProps->Handle ].nPos = nMPLoop;
}
@@ -292,7 +292,7 @@ sal_Int32 OPropertyArrayAggregationHelper::fillHandles(
for( sal_Int32 i = 0; i < nReqLen; ++i )
{
- // determine the logarithm
+ // Logarithmus ermitteln
sal_uInt32 n = (sal_uInt32)(pEnd - pCur);
sal_Int32 nLog = 0;
while( n )
@@ -301,7 +301,8 @@ sal_Int32 OPropertyArrayAggregationHelper::fillHandles(
n = n >> 1;
}
- // Number of the searched properties * the Log2 of the reamining properties
+ // Anzahl der noch zu suchenden Properties * dem Log2 der verbleibenden
+ // zu dursuchenden Properties.
if( (nReqLen - i) * nLog >= pEnd - pCur )
{
// linear search is better
@@ -484,7 +485,7 @@ void OPropertySetAggregationHelper::disposing()
if ( m_xAggregateSet.is() && m_bListening )
{
- // register as a single listener
+ // als einziger Listener anmelden
m_xAggregateMultiSet->removePropertiesChangeListener(this);
m_xAggregateSet->removeVetoableChangeListener(::rtl::OUString(), this);
m_bListening = sal_False;
@@ -594,7 +595,7 @@ void OPropertySetAggregationHelper::startListening()
if (!m_bListening && m_xAggregateSet.is())
{
- // register as a single listener
+ // als einziger Listener anmelden
::com::sun::star::uno::Sequence< ::rtl::OUString > aPropertyNames;
m_xAggregateMultiSet->addPropertiesChangeListener(aPropertyNames, this);
m_xAggregateSet->addVetoableChangeListener(::rtl::OUString(), this);
diff --git a/solenv/bin/mkdocs.sh b/solenv/bin/mkdocs.sh
index faf39e9..a075a74 100755
--- a/solenv/bin/mkdocs.sh
+++ b/solenv/bin/mkdocs.sh
@@ -81,7 +81,7 @@ function proc_text {
function setup {
parm=$1
if [ -z "${!parm}" ] ; then
- echo "grep \"${parm}=\" ./config_host.mk | sed -re \" s/${parm}=//\")"
+ echo "grep \"${parm}=\" ./config_host.mk | sed -re \" s/${parm}=//\")"
echo "$parm=$(grep \"${parm}=\" ./config_host.mk | sed -re \" s/${parm}=//\")"
eval "$parm=$(grep \"${parm}=\" ./config_host.mk | sed -re \" s/${parm}=//\")"
fi
@@ -209,7 +209,7 @@ for module_name in *; do
else
empty_modules[${#empty_modules[*]}]=$module_name
fi
- fi
+ fi
done
if [ ${#empty_modules[*]} -gt 0 ]; then
echo -e "<p> </p><p>READMEs were not available for these modules:</p><ul>\n" >>
"$BASE_OUTPUT/index.html"
diff --git a/svx/source/gengal/gengal.sh b/svx/source/gengal/gengal.sh
index 7c07db8..5173fb4 100644
--- a/svx/source/gengal/gengal.sh
+++ b/svx/source/gengal/gengal.sh
@@ -2,7 +2,7 @@
#*************************************************************************
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
+#
# Copyright 2000, 2010 Oracle and/or its affiliates.
#
# OpenOffice.org - a multi-platform office productivity suite
@@ -34,7 +34,7 @@ export SAL_ENABLE_FILE_LOCKING
sd_cwd="`pwd`"
if [ -h "$0" ] ; then
sd_basename=`basename "$0"`
- sd_script=`ls -l "$0" | sed "s/.*${sd_basename} -> //g"`
+ sd_script=`ls -l "$0" | sed "s/.*${sd_basename} -> //g"`
cd "`dirname "$0"`"
cd "`dirname "$sd_script"`"
else
Context
- [PATCH] 39468 Translate German comments · Tom Thorogood
Privacy Policy |
Impressum (Legal Info) |
Copyright information: Unless otherwise specified, all text and images
on this website are licensed under the
Creative Commons Attribution-Share Alike 3.0 License.
This does not include the source code of LibreOffice, which is
licensed under the Mozilla Public License (
MPLv2).
"LibreOffice" and "The Document Foundation" are
registered trademarks of their corresponding registered owners or are
in actual use as trademarks in one or more countries. Their respective
logos and icons are also subject to international copyright laws. Use
thereof is explained in our
trademark policy.