#**************************************************************
#  
#  Licensed to the Apache Software Foundation (ASF) under one
#  or more contributor license agreements.  See the NOTICE file
#  distributed with this work for additional information
#  regarding copyright ownership.  The ASF licenses this file
#  to you 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.
#  
#**************************************************************

# This file defines the list of extensions that are preregistered or bundled with the pack sets.
# At first office start the installation of extensions is completed.

# file:// URLs are interpreted relative to the solver/340/<platform>/bin/ directory to which 
# built extensions are delivered by default.

# http:// URLs can be prefixed by an MD5 checksum.  If that is present then it is an error if
# the file pointed to by the URL has a different MD5 checksum.
# When the downloaded file name is not the last part of the URL (everything after the final /) then
# the name has to be specified after the URL enclosed in double quotes.


# Some extensions that are installed indepently of the language.

# the presenter console extension
[ language=all && ENABLE_PRESENTER_SCREEN=YES ]
    file://presenter/presenter-screen.oxt

# the presentation minimizer
[ language=all && ENABLE_MINIMIZER=YES ]
    file://minimizer/presentation-minimizer.oxt



# English dictionary
[ language=en.* || language=de || language=it ]
    b7ce02d25eb302e5b23572cdccaea461 http://numbertext.org/tmp/dict-en.oxt
    
# English (USA, en_US) dictionary
[ language==nl || language==ru ]
    e2eab80772ab1aa09716954219351a80 http://sourceforge.net/projects/aoo-extensions/files/1470/1/en_US.oxt/download "en_US.oxt"

# German dictionary.
[ language=de || language=de_DE || language=nl || language=ru ]
    1051096689e5e3838b9340cde8c3ce37 http://sourceforge.net/projects/aoo-extensions/files/1075/12/dict-de_DE-frami_2012-06-17.oxt/download "dict-de_DE-frami_2012-06-17.oxt"

# Dutch dictionary.
[ language=nl ]
    5c0de383ef649cffefc128cfb36b4d43 http://sourceforge.net/projects/aoo-extensions/files/1456/6/nl-dict-v2.00g.oxt/download "nl-dict-v2.00g.oxt"

# French dictionary.
[ language=fr || language=nl || language=de || language=de_DE ]
    47ca39e385b02839c24a5d953495cb98 http://sourceforge.net/projects/aoo-extensions/files/3554/5/ooo-dictionnaire-fr-moderne-v4.2.oxt/download "ooo-dictionnaire-fr-moderne-v4.2.oxt"

# Italian dictionary.
[ language=it || language=de || language=de_DE ]
    e7ad2666a727b594948cb672a31ba22d http://sourceforge.net/projects/aoo-extensions/files/1204/11/dict-it.oxt/download "dict-it.oxt"

# Spanish dictionary.
[ language=es ]
    28776430bb77547fd70cf6db504bda63 http://sourceforge.net/projects/aoo-extensions/files/1657/2/es_ES.oxt/download "es_ES.oxt"

# Danish dictionary.
[ language=da ]
    b38cba04b6513dd42b031199d617cce6 http://sourceforge.net/projects/aoo-extensions/files/1388/12/DanskeSynonymer.oxt/download "DanskeSynonymer.oxt"

# Norwegian dictionary.
[ language=no ]
    b4971332a09292af069783b089b9014b http://svn.skolelinux.org/websvn/filedetails.php?repname=skolelinux&path=%2Ftrunk%2Fi18n%2Fopenoffice%2Futils%2Fdictionary-no-NO-1.0.oxt&rev=0&sc=0 "dictionary-no-NO-1.0.oxt"

# Romanian dictionary.
[ language=ro ]
    b05941b975afc0321df0cd48a4d295c8 http://sourceforge.net/projects/aoo-extensions/files/1392/8/dict-ro.1.5.oxt/download "dict-ro.1.5.oxt"

# Russian dictionary.
[ language=ru ]
    a63512bc487d7378bbe2e44f59d5ef45 http://sourceforge.net/projects/aoo-extensions/files/3233/2/dict_ru_RU-0.3.6.oxt/download "dict_ru_RU-0.3.6.oxt"

# Slovenian dictionary.
[ language=sl ]
    cfc3e4da22a3bb9f3f5fa7ae443f6407 http://sourceforge.net/projects/aoo-extensions/files/3280/5/pack-sl.oxt "pack-sl.oxt"

# German (Austria) dictionary.
[ language=de || language=de_AT || language=de_DE ]
  149fd9465b7cac8aca393f2c57e9d562 http://sourceforge.net/projects/aoo-extensions/files/1697/9/dict-de_AT-frami_2012-06-17.oxt/download "dict-de_AT-frami_2012-06-17.oxt"

# German (Switzerland) dictionary.
[ language=de || language=de_CH || language=de_DE ]
    e9ddd3ae2a3213a7bd8b5e49198b6b6b http://sourceforge.net/projects/aoo-extensions/files/1699/9/dict-de_CH-frami_2012-06-17.oxt/download "dict-de_CH-frami_2012-06-17.oxt"

# Khmer dictionary.
[ language=km ]
    a22266cfa40fb23a79be27a239321a3f http://sourceforge.net/projects/aoo-extensions/files/1009/1/km_spellchecker_OOo30_V_1.0.2.oxt/download "km_spellchecker_OOo30_V_1.0.2.oxt"
