#**************************************************************
#  
#  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 independently of the language.

# the presenter console extension
# [ language=all && ENABLE_XXX ]
#    file://XXX.oxt

# English dictionary
[ language=en.* || language=de || language=it ]
    21000528c50707539220e05df554172f http://sourceforge.net/projects/aoo-extensions/files/17102/3/dict-en.oxt/download "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 ]
    a9328ce36b272a034b4706721345076d http://sourceforge.net/projects/aoo-extensions/files/1075/13/dict-de_de-frami_2013-12-06.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 ]
    8f7ca241048c70bd7893995ac4bcca3b http://sourceforge.net/projects/aoo-extensions/files/17340/1/dict411.oxt/download "dict411.oxt"

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

# Spanish dictionary.
[ language=es ]
    59dd45e6785ed644adbbd73f4f126182 http://sourceforge.net/projects/aoo-extensions/files/1657/3/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"
    6ee1e24fb17e44577d8e3200f3e44adc http://sourceforge.net/projects/aoo-extensions/files/1429/6/dict-da-current.oxt/download "dict-da-current.oxt"

# Lithuanian dictionary.
[ language=lt ]
    d8d4a3d5c6abfde1b4c81cc1ddd1afa0 http://sourceforge.net/projects/aoo-extensions/files/17703/0/openoffice-spellcheck-lt-1.3.oxt/download "openoffice-spellcheck-lt-1.3.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"

# Slovak dictionary.
[ language=sk ]
    5a7cec122a215c9f6a906ecb8ad46ee6 http://sourceforge.net/projects/aoo-extensions/files/1143/11/dict-sk.oxt/download "dict-sk.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 ]
  47b868a8949faba36b8f0ff351940967 http://sourceforge.net/projects/aoo-extensions/files/1697/10/dict-de_at-frami_2013-12-06.oxt/download "dict-de_AT-frami_2012-06-17.oxt"

# German (Switzerland) dictionary.
[ language=de || language=de_CH || language=de_DE ]
    f4ab5c31fa394f05dab58ab773ab5012 http://sourceforge.net/projects/aoo-extensions/files/1699/10/dict-de_ch-frami_2013-12-06.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"

# Scottish Gaelic.
[ language=gd ]
    3a26a49794077643e802cf2cb738ec18 http://sourceforge.net/projects/aoo-extensions/files/4587/10/hunspell-gd-2.8.oxt/download "hunspell-gd-2.8.oxt"

# Basque.
[ language=eu ]
    f408bb4a333bea2aec86bffaa4ffa229 http://sourceforge.net/projects/aoo-extensions/files/1383/2/xuxen_4_OOo3.oxt/download "xuxen_4_OOo3.oxt"

# Hungarian.
[ language=hu ]
    76345f925e34fef2d29bade4f29108e9 http://sourceforge.net/projects/aoo-extensions/files/3423/4/lightproof-hu_HU-1.3.oxt/download "lightproof-hu_HU-1.3.oxt"
    d320e43e815c2dfd599dbfb7cd0e41fb http://sourceforge.net/projects/aoo-extensions/files/1283/9/dict-hu.oxt/download "dict-hu.oxt"

# Asturian.
[ language=ast ]
    ed5702f25c8f5e36f97cafc606470c42 http://sourceforge.net/projects/aoo-extensions/files/3932/1/asturianu.oxt/download "asturianu.oxt"

# Norwegian.
[ language=nb ]
    e6ca009bc6aa3d70d8b7d66138b1c28d http://sourceforge.net/projects/aoo-extensions/files/1216/6/dictionary-no-NO-2.1.oxt/download "dictionary-no-NO-2.1.oxt"

# Swedish.
[ language=sv ]
    32ab4edf1496a7cf5469ee1643eb0128 http://sourceforge.net/projects/aoo-extensions/files/5959/1/dict-sv.oxt/download "dict-sv.oxt"

# Korean.
[ language=ko ]
    c20c155c47174c1b0ec0a53618044ac3 http://sourceforge.net/projects/aoo-extensions/files/5968/0/Korean_spell-checker-0.5.6_OOo.oxt/download "Korean_spell-checker-0.5.6_OOo.oxt"

# Polish.
[ language=pl ]
    a69f9221864b1360e38ff3f0b0cc9222 http://sourceforge.net/projects/aoo-extensions/files/806/4/pl-dict.oxt/download "pl-dict.oxt"

# Portuguese (European).
[ language=pt || language=pt_PT ]
    ad882aa5fcd1b48ebc2421b0d25ee178 http://sourceforge.net/projects/aoo-extensions/files/1196/27/oo3x-pt-pt-14.1.1.1.oxt/download "dict-pt.oxt"


