From bfcc3cabb61438715ccf972be57d3f020fe2343b Mon Sep 17 00:00:00 2001 From: Ayan Sinha Mahapatra Date: Fri, 14 Oct 2022 02:49:34 +0530 Subject: [PATCH] Add unknown license reference to package dereferencing #2965 #1379 There are unknown license statements like "This file is the same license as the package django" which refers to a package which this file is a part of. This is fixed by extending the dereferencing logic to look for packages that the file belongs to and using the detected licenses from the package. Signed-off-by: Ayan Sinha Mahapatra --- .../data/rules/apache-2.0_306.RULE | 2 +- .../data/rules/apache-2.0_306.yml | 2 + src/licensedcode/data/rules/bsd-new_1043.RULE | 2 +- src/licensedcode/data/rules/bsd-new_1043.yml | 2 + src/licensedcode/data/rules/bsd-new_1044.RULE | 4 +- src/licensedcode/data/rules/bsd-new_1044.yml | 3 + .../data/rules/free-unknown-package_1.RULE | 1 + .../data/rules/free-unknown-package_1.yml | 7 + ...wn_80.RULE => free-unknown-package_2.RULE} | 2 +- .../data/rules/free-unknown-package_2.yml | 7 + .../data/rules/free-unknown-package_3.RULE | 1 + .../data/rules/free-unknown-package_3.yml | 7 + .../data/rules/free-unknown_79.RULE | 1 - .../data/rules/free-unknown_79.yml | 4 - .../data/rules/free-unknown_80.yml | 4 - .../data/rules/gpl-2.0-plus_1070.RULE | 1 + .../data/rules/gpl-2.0-plus_1070.yml | 6 + .../data/rules/gpl-2.0-plus_31.RULE | 2 +- .../data/rules/gpl-2.0-plus_31.yml | 2 + .../data/rules/gpl-2.0-plus_793.RULE | 2 +- .../data/rules/gpl-2.0-plus_793.yml | 2 + src/licensedcode/data/rules/gpl-2.0_109.RULE | 2 +- src/licensedcode/data/rules/gpl-2.0_109.yml | 2 + .../data/rules/lgpl-2.1-plus_283.RULE | 2 +- .../data/rules/lgpl-2.1-plus_283.yml | 2 + .../data/rules/license-intro_6.RULE | 1 - .../data/rules/license-intro_6.yml | 3 - .../data/rules/openssl-ssleay_44.RULE | 2 +- .../data/rules/openssl-ssleay_44.yml | 2 + .../data/rules/other-permissive_91.RULE | 5 - .../data/rules/other-permissive_91.yml | 3 - .../data/rules/ruby_or_lgpl-3.0-plus_3.RULE | 2 +- .../data/rules/ruby_or_lgpl-3.0-plus_3.yml | 2 + src/licensedcode/detection.py | 10 +- src/packagedcode/licensing.py | 81 + src/packagedcode/plugin_package.py | 12 + .../main/f/fusiondirectory/stable_copyright | 167 +- .../stable_copyright-detailed.expected.yml | 219 +- .../copyright-detailed.expected.yml | 40 +- .../base-example/PKG-INFO | 23 + .../base-example/django.po | 5002 +++++++++++++++++ .../reference-to-package/base.expected.json | 389 ++ .../google_appengine_sdk.expected.json | 2202 ++++++++ .../google_appengine_sdk/django-1.2/AUTHORS | 531 ++ .../google_appengine_sdk/django-1.2/INSTALL | 16 + .../django-1.2/MANIFEST.in | 29 + .../google_appengine_sdk/django-1.2/METADATA | 24 + .../google_appengine_sdk/django-1.2/README | 43 + .../conf/locale/en/LC_MESSAGES/djangojs.po | 145 + .../django/conf/locale/en/formats.py | 38 + .../conf/locale/uk/LC_MESSAGES/django.po | 4774 ++++++++++++++++ .../conf/locale/uk/LC_MESSAGES/djangojs.po | 118 + .../django/conf/locale/uk/formats.py | 18 + .../google_appengine_sdk/django-1.2/setup.cfg | 4 + .../google_appengine_sdk/django-1.2/setup.py | 98 + .../google_appengine_sdk/django-1.3/AUTHORS | 544 ++ .../google_appengine_sdk/django-1.3/INSTALL | 16 + .../google_appengine_sdk/django-1.3/LICENSE | 27 + .../django-1.3/MANIFEST.in | 34 + .../google_appengine_sdk/django-1.3/METADATA | 24 + .../google_appengine_sdk/django-1.3/PKG-INFO | 27 + .../google_appengine_sdk/django-1.3/README | 46 + .../messages/locale/en/LC_MESSAGES/django.po | 17 + .../messages/locale/uk/LC_MESSAGES/django.po | 20 + .../google_appengine_sdk/django-1.3/setup.cfg | 4 + .../google_appengine_sdk/django-1.3/setup.py | 102 + tests/packagedcode/test_license_detection.py | 34 + 67 files changed, 14748 insertions(+), 222 deletions(-) create mode 100644 src/licensedcode/data/rules/free-unknown-package_1.RULE create mode 100644 src/licensedcode/data/rules/free-unknown-package_1.yml rename src/licensedcode/data/rules/{free-unknown_80.RULE => free-unknown-package_2.RULE} (88%) create mode 100644 src/licensedcode/data/rules/free-unknown-package_2.yml create mode 100644 src/licensedcode/data/rules/free-unknown-package_3.RULE create mode 100644 src/licensedcode/data/rules/free-unknown-package_3.yml delete mode 100644 src/licensedcode/data/rules/free-unknown_79.RULE delete mode 100644 src/licensedcode/data/rules/free-unknown_79.yml delete mode 100644 src/licensedcode/data/rules/free-unknown_80.yml create mode 100644 src/licensedcode/data/rules/gpl-2.0-plus_1070.RULE create mode 100644 src/licensedcode/data/rules/gpl-2.0-plus_1070.yml delete mode 100644 src/licensedcode/data/rules/license-intro_6.RULE delete mode 100644 src/licensedcode/data/rules/license-intro_6.yml delete mode 100644 src/licensedcode/data/rules/other-permissive_91.RULE delete mode 100644 src/licensedcode/data/rules/other-permissive_91.yml create mode 100644 tests/packagedcode/data/license_detection/reference-to-package/base-example/PKG-INFO create mode 100644 tests/packagedcode/data/license_detection/reference-to-package/base-example/django.po create mode 100644 tests/packagedcode/data/license_detection/reference-to-package/base.expected.json create mode 100644 tests/packagedcode/data/license_detection/reference-to-package/google_appengine_sdk.expected.json create mode 100644 tests/packagedcode/data/license_detection/reference-to-package/google_appengine_sdk/django-1.2/AUTHORS create mode 100644 tests/packagedcode/data/license_detection/reference-to-package/google_appengine_sdk/django-1.2/INSTALL create mode 100644 tests/packagedcode/data/license_detection/reference-to-package/google_appengine_sdk/django-1.2/MANIFEST.in create mode 100644 tests/packagedcode/data/license_detection/reference-to-package/google_appengine_sdk/django-1.2/METADATA create mode 100644 tests/packagedcode/data/license_detection/reference-to-package/google_appengine_sdk/django-1.2/README create mode 100644 tests/packagedcode/data/license_detection/reference-to-package/google_appengine_sdk/django-1.2/django/conf/locale/en/LC_MESSAGES/djangojs.po create mode 100644 tests/packagedcode/data/license_detection/reference-to-package/google_appengine_sdk/django-1.2/django/conf/locale/en/formats.py create mode 100644 tests/packagedcode/data/license_detection/reference-to-package/google_appengine_sdk/django-1.2/django/conf/locale/uk/LC_MESSAGES/django.po create mode 100644 tests/packagedcode/data/license_detection/reference-to-package/google_appengine_sdk/django-1.2/django/conf/locale/uk/LC_MESSAGES/djangojs.po create mode 100644 tests/packagedcode/data/license_detection/reference-to-package/google_appengine_sdk/django-1.2/django/conf/locale/uk/formats.py create mode 100644 tests/packagedcode/data/license_detection/reference-to-package/google_appengine_sdk/django-1.2/setup.cfg create mode 100644 tests/packagedcode/data/license_detection/reference-to-package/google_appengine_sdk/django-1.2/setup.py create mode 100644 tests/packagedcode/data/license_detection/reference-to-package/google_appengine_sdk/django-1.3/AUTHORS create mode 100644 tests/packagedcode/data/license_detection/reference-to-package/google_appengine_sdk/django-1.3/INSTALL create mode 100644 tests/packagedcode/data/license_detection/reference-to-package/google_appengine_sdk/django-1.3/LICENSE create mode 100644 tests/packagedcode/data/license_detection/reference-to-package/google_appengine_sdk/django-1.3/MANIFEST.in create mode 100644 tests/packagedcode/data/license_detection/reference-to-package/google_appengine_sdk/django-1.3/METADATA create mode 100644 tests/packagedcode/data/license_detection/reference-to-package/google_appengine_sdk/django-1.3/PKG-INFO create mode 100644 tests/packagedcode/data/license_detection/reference-to-package/google_appengine_sdk/django-1.3/README create mode 100644 tests/packagedcode/data/license_detection/reference-to-package/google_appengine_sdk/django-1.3/django/contrib/messages/locale/en/LC_MESSAGES/django.po create mode 100644 tests/packagedcode/data/license_detection/reference-to-package/google_appengine_sdk/django-1.3/django/contrib/messages/locale/uk/LC_MESSAGES/django.po create mode 100644 tests/packagedcode/data/license_detection/reference-to-package/google_appengine_sdk/django-1.3/setup.cfg create mode 100644 tests/packagedcode/data/license_detection/reference-to-package/google_appengine_sdk/django-1.3/setup.py diff --git a/src/licensedcode/data/rules/apache-2.0_306.RULE b/src/licensedcode/data/rules/apache-2.0_306.RULE index db7fcaecd4e..d7238be40ae 100644 --- a/src/licensedcode/data/rules/apache-2.0_306.RULE +++ b/src/licensedcode/data/rules/apache-2.0_306.RULE @@ -1 +1 @@ -This file is distributed under the same license as the Puppet automation framework package. \ No newline at end of file +This file is distributed under the same license as the {{Puppet}} {{automation}} framework package. diff --git a/src/licensedcode/data/rules/apache-2.0_306.yml b/src/licensedcode/data/rules/apache-2.0_306.yml index fec9233bc17..fb16e716e21 100644 --- a/src/licensedcode/data/rules/apache-2.0_306.yml +++ b/src/licensedcode/data/rules/apache-2.0_306.yml @@ -1,3 +1,5 @@ license_expression: apache-2.0 is_license_notice: yes relevance: 100 +referenced_filenames: + - package diff --git a/src/licensedcode/data/rules/bsd-new_1043.RULE b/src/licensedcode/data/rules/bsd-new_1043.RULE index 7754bb86746..ff63081cdb5 100644 --- a/src/licensedcode/data/rules/bsd-new_1043.RULE +++ b/src/licensedcode/data/rules/bsd-new_1043.RULE @@ -1,2 +1,2 @@ This file is distributed under the same license as the - debian files of the p11-kit package. \ No newline at end of file + {{debian}} files of the {{p11-kit}} package. diff --git a/src/licensedcode/data/rules/bsd-new_1043.yml b/src/licensedcode/data/rules/bsd-new_1043.yml index 01cbfcfa3a0..53ee25a53c9 100644 --- a/src/licensedcode/data/rules/bsd-new_1043.yml +++ b/src/licensedcode/data/rules/bsd-new_1043.yml @@ -2,3 +2,5 @@ license_expression: bsd-new is_license_notice: yes relevance: 100 minimum_coverage: 100 +referenced_filenames: + -package diff --git a/src/licensedcode/data/rules/bsd-new_1044.RULE b/src/licensedcode/data/rules/bsd-new_1044.RULE index fe1fb3c2426..bd454f1018b 100644 --- a/src/licensedcode/data/rules/bsd-new_1044.RULE +++ b/src/licensedcode/data/rules/bsd-new_1044.RULE @@ -1,2 +1,2 @@ -License: same-as-rest-of-p11kit - This file is distributed under the same license as the p11-kit package. \ No newline at end of file +License: {{same-as-rest-of-p11kit}} + This file is distributed under the same license as the {{p11-kit}} package. diff --git a/src/licensedcode/data/rules/bsd-new_1044.yml b/src/licensedcode/data/rules/bsd-new_1044.yml index 9b72fc8912a..5a1a01eb652 100644 --- a/src/licensedcode/data/rules/bsd-new_1044.yml +++ b/src/licensedcode/data/rules/bsd-new_1044.yml @@ -1,3 +1,6 @@ license_expression: bsd-new is_license_notice: yes minimum_coverage: 100 +referenced_filenames: + - package + diff --git a/src/licensedcode/data/rules/free-unknown-package_1.RULE b/src/licensedcode/data/rules/free-unknown-package_1.RULE new file mode 100644 index 00000000000..5a415b810b7 --- /dev/null +++ b/src/licensedcode/data/rules/free-unknown-package_1.RULE @@ -0,0 +1 @@ +This file is distributed under the same license as the package. diff --git a/src/licensedcode/data/rules/free-unknown-package_1.yml b/src/licensedcode/data/rules/free-unknown-package_1.yml new file mode 100644 index 00000000000..4a90cb36831 --- /dev/null +++ b/src/licensedcode/data/rules/free-unknown-package_1.yml @@ -0,0 +1,7 @@ +license_expression: free-unknown +is_license_reference: yes +is_continuous: yes +relevance: 100 +minimum_coverage: 100 +referenced_filenames: + - package diff --git a/src/licensedcode/data/rules/free-unknown_80.RULE b/src/licensedcode/data/rules/free-unknown-package_2.RULE similarity index 88% rename from src/licensedcode/data/rules/free-unknown_80.RULE rename to src/licensedcode/data/rules/free-unknown-package_2.RULE index 31e02c9883a..a8dc7fbe7e6 100644 --- a/src/licensedcode/data/rules/free-unknown_80.RULE +++ b/src/licensedcode/data/rules/free-unknown-package_2.RULE @@ -1 +1 @@ -This file is distributed under the same license as the PACKAGE package +This file is distributed under the same license as the PACKAGE package. diff --git a/src/licensedcode/data/rules/free-unknown-package_2.yml b/src/licensedcode/data/rules/free-unknown-package_2.yml new file mode 100644 index 00000000000..4a90cb36831 --- /dev/null +++ b/src/licensedcode/data/rules/free-unknown-package_2.yml @@ -0,0 +1,7 @@ +license_expression: free-unknown +is_license_reference: yes +is_continuous: yes +relevance: 100 +minimum_coverage: 100 +referenced_filenames: + - package diff --git a/src/licensedcode/data/rules/free-unknown-package_3.RULE b/src/licensedcode/data/rules/free-unknown-package_3.RULE new file mode 100644 index 00000000000..65d5c22bfbb --- /dev/null +++ b/src/licensedcode/data/rules/free-unknown-package_3.RULE @@ -0,0 +1 @@ +This file is distributed under the same license as the DJANGO package. diff --git a/src/licensedcode/data/rules/free-unknown-package_3.yml b/src/licensedcode/data/rules/free-unknown-package_3.yml new file mode 100644 index 00000000000..4a90cb36831 --- /dev/null +++ b/src/licensedcode/data/rules/free-unknown-package_3.yml @@ -0,0 +1,7 @@ +license_expression: free-unknown +is_license_reference: yes +is_continuous: yes +relevance: 100 +minimum_coverage: 100 +referenced_filenames: + - package diff --git a/src/licensedcode/data/rules/free-unknown_79.RULE b/src/licensedcode/data/rules/free-unknown_79.RULE deleted file mode 100644 index 5b8fc18cfb5..00000000000 --- a/src/licensedcode/data/rules/free-unknown_79.RULE +++ /dev/null @@ -1 +0,0 @@ -This file is distributed under the same license as the package diff --git a/src/licensedcode/data/rules/free-unknown_79.yml b/src/licensedcode/data/rules/free-unknown_79.yml deleted file mode 100644 index b6d10267484..00000000000 --- a/src/licensedcode/data/rules/free-unknown_79.yml +++ /dev/null @@ -1,4 +0,0 @@ -license_expression: free-unknown -is_license_notice: yes -relevance: 90 -notes: Seen in gettext diff --git a/src/licensedcode/data/rules/free-unknown_80.yml b/src/licensedcode/data/rules/free-unknown_80.yml deleted file mode 100644 index b6d10267484..00000000000 --- a/src/licensedcode/data/rules/free-unknown_80.yml +++ /dev/null @@ -1,4 +0,0 @@ -license_expression: free-unknown -is_license_notice: yes -relevance: 90 -notes: Seen in gettext diff --git a/src/licensedcode/data/rules/gpl-2.0-plus_1070.RULE b/src/licensedcode/data/rules/gpl-2.0-plus_1070.RULE new file mode 100644 index 00000000000..cf5342547f3 --- /dev/null +++ b/src/licensedcode/data/rules/gpl-2.0-plus_1070.RULE @@ -0,0 +1 @@ +This file is distributed under the same license as the {{fusiondirectory}} \ No newline at end of file diff --git a/src/licensedcode/data/rules/gpl-2.0-plus_1070.yml b/src/licensedcode/data/rules/gpl-2.0-plus_1070.yml new file mode 100644 index 00000000000..2413e7718e3 --- /dev/null +++ b/src/licensedcode/data/rules/gpl-2.0-plus_1070.yml @@ -0,0 +1,6 @@ +license_expression: gpl-2.0-plus +is_license_reference: yes +relevance: 80 +minimum_coverage: 100 +referenced_filenames: + - package diff --git a/src/licensedcode/data/rules/gpl-2.0-plus_31.RULE b/src/licensedcode/data/rules/gpl-2.0-plus_31.RULE index 5e0610acccd..29354930a2e 100644 --- a/src/licensedcode/data/rules/gpl-2.0-plus_31.RULE +++ b/src/licensedcode/data/rules/gpl-2.0-plus_31.RULE @@ -1 +1 @@ -# This file is distributed under the same license as the Pychess package. +This file is distributed under the same license as the {{Pychess}} package. diff --git a/src/licensedcode/data/rules/gpl-2.0-plus_31.yml b/src/licensedcode/data/rules/gpl-2.0-plus_31.yml index 896cb265e02..0f5634b3933 100644 --- a/src/licensedcode/data/rules/gpl-2.0-plus_31.yml +++ b/src/licensedcode/data/rules/gpl-2.0-plus_31.yml @@ -2,4 +2,6 @@ license_expression: gpl-2.0-plus is_license_reference: yes relevance: 80 minimum_coverage: 100 +referenced_filenames: + - package notes: In 2006 Pychess used the GPL 2.0. It became GPL 3.0 in 2011 diff --git a/src/licensedcode/data/rules/gpl-2.0-plus_793.RULE b/src/licensedcode/data/rules/gpl-2.0-plus_793.RULE index e53539e9861..9595c49faf0 100644 --- a/src/licensedcode/data/rules/gpl-2.0-plus_793.RULE +++ b/src/licensedcode/data/rules/gpl-2.0-plus_793.RULE @@ -1,2 +1,2 @@ GNU GPL: -This file is distributed under the same license as the dialog package. \ No newline at end of file +This file is distributed under the same license as the {{dialog}} package. diff --git a/src/licensedcode/data/rules/gpl-2.0-plus_793.yml b/src/licensedcode/data/rules/gpl-2.0-plus_793.yml index 88b875b6871..2f30570bc76 100644 --- a/src/licensedcode/data/rules/gpl-2.0-plus_793.yml +++ b/src/licensedcode/data/rules/gpl-2.0-plus_793.yml @@ -2,3 +2,5 @@ license_expression: gpl-2.0-plus is_license_notice: yes relevance: 100 minimum_coverage: 100 +referenced_filenames: + - package diff --git a/src/licensedcode/data/rules/gpl-2.0_109.RULE b/src/licensedcode/data/rules/gpl-2.0_109.RULE index 2478c236d9b..4365ef49e28 100644 --- a/src/licensedcode/data/rules/gpl-2.0_109.RULE +++ b/src/licensedcode/data/rules/gpl-2.0_109.RULE @@ -1 +1 @@ -# This file is distributed under the same license as the cpufrequtils package. \ No newline at end of file +This file is distributed under the same license as the {{cpufrequtils}} package. diff --git a/src/licensedcode/data/rules/gpl-2.0_109.yml b/src/licensedcode/data/rules/gpl-2.0_109.yml index 6d46e22d7b6..ba834d96765 100644 --- a/src/licensedcode/data/rules/gpl-2.0_109.yml +++ b/src/licensedcode/data/rules/gpl-2.0_109.yml @@ -2,4 +2,6 @@ license_expression: gpl-2.0 is_license_reference: yes relevance: 100 minimum_coverage: 100 +referenced_filenames: + - package notes: cpufrequtils is gpl-2.0 only diff --git a/src/licensedcode/data/rules/lgpl-2.1-plus_283.RULE b/src/licensedcode/data/rules/lgpl-2.1-plus_283.RULE index 99741805d3e..4e350c777aa 100644 --- a/src/licensedcode/data/rules/lgpl-2.1-plus_283.RULE +++ b/src/licensedcode/data/rules/lgpl-2.1-plus_283.RULE @@ -1 +1 @@ -This file is distributed under the same license as the dialog package. \ No newline at end of file +This file is distributed under the same license as the {{dialog}} package. diff --git a/src/licensedcode/data/rules/lgpl-2.1-plus_283.yml b/src/licensedcode/data/rules/lgpl-2.1-plus_283.yml index 73120231ad8..a0b9cfe545a 100644 --- a/src/licensedcode/data/rules/lgpl-2.1-plus_283.yml +++ b/src/licensedcode/data/rules/lgpl-2.1-plus_283.yml @@ -2,3 +2,5 @@ license_expression: lgpl-2.1-plus is_license_notice: yes relevance: 100 minimum_coverage: 100 +referenced_filenames: + - package diff --git a/src/licensedcode/data/rules/license-intro_6.RULE b/src/licensedcode/data/rules/license-intro_6.RULE deleted file mode 100644 index 9cb96277966..00000000000 --- a/src/licensedcode/data/rules/license-intro_6.RULE +++ /dev/null @@ -1 +0,0 @@ -This file is distributed under the same license as the \ No newline at end of file diff --git a/src/licensedcode/data/rules/license-intro_6.yml b/src/licensedcode/data/rules/license-intro_6.yml deleted file mode 100644 index 4254c8e2c41..00000000000 --- a/src/licensedcode/data/rules/license-intro_6.yml +++ /dev/null @@ -1,3 +0,0 @@ -license_expression: unknown-license-reference -is_license_intro: yes -relevance: 100 diff --git a/src/licensedcode/data/rules/openssl-ssleay_44.RULE b/src/licensedcode/data/rules/openssl-ssleay_44.RULE index 04e9dc1beb9..870f13dc34f 100644 --- a/src/licensedcode/data/rules/openssl-ssleay_44.RULE +++ b/src/licensedcode/data/rules/openssl-ssleay_44.RULE @@ -1 +1 @@ -This file is distributed under the same license as OpenSSL \ No newline at end of file +This file is distributed under the same license as {{OpenSSL}} diff --git a/src/licensedcode/data/rules/openssl-ssleay_44.yml b/src/licensedcode/data/rules/openssl-ssleay_44.yml index 93e21d6bc56..b1e2424e179 100644 --- a/src/licensedcode/data/rules/openssl-ssleay_44.yml +++ b/src/licensedcode/data/rules/openssl-ssleay_44.yml @@ -1,4 +1,6 @@ license_expression: openssl-ssleay is_license_notice: yes relevance: 100 +referenced_filenames: + - package notes: Seen in https://github.com/schmel/openssl-gost/blob/18028d11296f4675276f0814674c5143caaa75e7/engine/gost_grasshopper_mac.c#L3 diff --git a/src/licensedcode/data/rules/other-permissive_91.RULE b/src/licensedcode/data/rules/other-permissive_91.RULE deleted file mode 100644 index 8f022a6fe22..00000000000 --- a/src/licensedcode/data/rules/other-permissive_91.RULE +++ /dev/null @@ -1,5 +0,0 @@ -This file is distributed under the same license as the package -Permission is granted to freely copy and distribute -this file and modified versions, provided that this -header is not removed and modified versions are marked -as such. diff --git a/src/licensedcode/data/rules/other-permissive_91.yml b/src/licensedcode/data/rules/other-permissive_91.yml deleted file mode 100644 index 5371f787288..00000000000 --- a/src/licensedcode/data/rules/other-permissive_91.yml +++ /dev/null @@ -1,3 +0,0 @@ -license_expression: other-permissive -is_license_notice: yes -notes: Seen in gettext diff --git a/src/licensedcode/data/rules/ruby_or_lgpl-3.0-plus_3.RULE b/src/licensedcode/data/rules/ruby_or_lgpl-3.0-plus_3.RULE index 244d2b1a933..9df1bee57a7 100644 --- a/src/licensedcode/data/rules/ruby_or_lgpl-3.0-plus_3.RULE +++ b/src/licensedcode/data/rules/ruby_or_lgpl-3.0-plus_3.RULE @@ -1 +1 @@ -This file is distributed under the same license as gettext. \ No newline at end of file +This file is distributed under the same license as {{gettext}} diff --git a/src/licensedcode/data/rules/ruby_or_lgpl-3.0-plus_3.yml b/src/licensedcode/data/rules/ruby_or_lgpl-3.0-plus_3.yml index 99812a3fa21..34523896a26 100644 --- a/src/licensedcode/data/rules/ruby_or_lgpl-3.0-plus_3.yml +++ b/src/licensedcode/data/rules/ruby_or_lgpl-3.0-plus_3.yml @@ -2,4 +2,6 @@ license_expression: ruby OR lgpl-3.0-plus is_license_notice: yes relevance: 90 minimum_coverage: 100 +referenced_filenames: + - package notes: this is found mostly in Ruby gettext diff --git a/src/licensedcode/detection.py b/src/licensedcode/detection.py index 007e95e134d..74d4bf99192 100644 --- a/src/licensedcode/detection.py +++ b/src/licensedcode/detection.py @@ -81,6 +81,7 @@ class DetectionCategory(Enum): PERFECT_DETECTION = 'perfect-detection' UNKNOWN_INTRO_BEFORE_DETECTION = 'unknown-intro-before-detection' UNKNOWN_FILE_REFERENCE_LOCAL = 'unknown-file-reference-local' + UNKNOWN_REFERENCE_IN_FILE_TO_PACKAGE = 'unknown-reference-in-file-to-package' PACKAGE_UNKNOWN_FILE_REFERENCE_LOCAL = 'package-unknown-file-reference-local' PACKAGE_ADD_FROM_SIBLING_FILE = 'from-package-sibling-file' PACKAGE_ADD_FROM_FILE = 'from-package-file' @@ -99,6 +100,7 @@ class DetectionRule(Enum): FALSE_POSITIVE = 'false-positive' UNKNOWN_REFERENCE_TO_LOCAL_FILE = 'unknown-reference-to-local-file' UNKNOWN_INTRO_FOLLOWED_BY_MATCH = 'unknown-intro-followed-by-match' + UNKNOWN_REFERENCE_IN_FILE_TO_PACKAGE = 'unknown-reference-in-file-to-package' CONTAINED_SAME_LICENSE = 'contained-with-same-license' NOTICE_FOLLOWED_BY_TEXT = 'notice-followed-by-text' CONTIGUOUS_SAME_LICENSE = 'contiguous-with-same-license' @@ -443,6 +445,7 @@ def is_correct_detection(license_matches): Return True if all the matches in `license_matches` List of LicenseMatch are correct license detections. """ + #TODO: Add matches with full match coverage matchers = (license_match.matcher for license_match in license_matches) return ( all(matcher in ("1-hash", "1-spdx-id") for matcher in matchers) @@ -578,7 +581,6 @@ def is_license_clues(license_matches): license detection and are mere license clues. """ return not is_correct_detection(license_matches) and ( - has_unknown_matches(license_matches) or is_match_coverage_less_than_threshold( license_matches=license_matches, threshold=CLUES_MATCH_COVERAGE_THR, @@ -718,7 +720,11 @@ def get_detected_license_expression(matches, analysis, post_scan=False): reasons.append(DetectionRule.UNKNOWN_INTRO_FOLLOWED_BY_MATCH.value) elif post_scan: - if analysis == DetectionCategory.UNKNOWN_FILE_REFERENCE_LOCAL.value: + if analysis == DetectionCategory.UNKNOWN_REFERENCE_IN_FILE_TO_PACKAGE.value: + matches_for_expression = filter_license_references(matches) + reasons.append(DetectionRule.UNKNOWN_REFERENCE_IN_FILE_TO_PACKAGE.value) + + elif analysis == DetectionCategory.UNKNOWN_FILE_REFERENCE_LOCAL.value: matches_for_expression = filter_license_references(matches) reasons.append(DetectionRule.UNKNOWN_REFERENCE_TO_LOCAL_FILE.value) diff --git a/src/packagedcode/licensing.py b/src/packagedcode/licensing.py index f25a9304337..d1b71a0a72a 100644 --- a/src/packagedcode/licensing.py +++ b/src/packagedcode/licensing.py @@ -143,6 +143,87 @@ def add_referenced_license_matches_for_package(resource, codebase, no_licenses): yield resource +def add_referenced_license_detection_from_package(resource, codebase): + """ + Return an updated ``resource`` saving it in place, after adding new license + matches (licenses and license_expressions) following their Rule + ``referenced_filenames`` if it is pointing to a package. + """ + if TRACE: + logger_debug(f'packagedcode.licensing: add_referenced_license_matches_from_package: resource: {resource.path}') + + if not resource.is_file: + return + + license_detections = resource.license_detections + if not license_detections: + return + + codebase_packages = codebase.attributes.packages + + modified = False + + for detection in license_detections: + detection_modified = False + matches = detection["matches"] + referenced_filenames = get_referenced_filenames(matches) + if not referenced_filenames: + continue + + has_reference_to_package = any([ + 'package' in referenced_filename + for referenced_filename in referenced_filenames + ]) + + if not has_reference_to_package: + continue + + for_packages = resource.for_packages + for package_uid in for_packages: + + for codebase_package in codebase_packages: + if codebase_package["package_uid"] == package_uid: + break + + pkg_detections = codebase_package["license_detections"] + for pkg_detection in pkg_detections: + modified = True + detection_modified = True + matches.extend(pkg_detection["matches"]) + + if not detection_modified: + continue + + reasons, license_expression = get_detected_license_expression( + matches=matches, + analysis=DetectionCategory.UNKNOWN_REFERENCE_IN_FILE_TO_PACKAGE.value, + post_scan=True, + ) + detection["license_expression"] = str(license_expression) + detection["detection_rules"] = reasons + + if modified: + + license_expressions = [ + detection["license_expression"] + for detection in license_detections + ] + + resource.detected_license_expression = combine_expressions( + expressions=license_expressions, + relation='AND', + unique=True, + ) + + resource.detected_license_expression_spdx = str(build_spdx_license_expression( + license_expression=resource.detected_license_expression, + licensing=get_cache().licensing, + )) + + codebase.save_resource(resource) + yield resource + + def add_license_from_sibling_file(resource, codebase, no_licenses): if TRACE: diff --git a/src/packagedcode/plugin_package.py b/src/packagedcode/plugin_package.py index 7305c40be43..8717395190f 100644 --- a/src/packagedcode/plugin_package.py +++ b/src/packagedcode/plugin_package.py @@ -27,6 +27,7 @@ from licensedcode.detection import DetectionRule from packagedcode import get_package_handler from packagedcode.licensing import add_referenced_license_matches_for_package +from packagedcode.licensing import add_referenced_license_detection_from_package from packagedcode.licensing import add_license_from_sibling_file from packagedcode.licensing import get_license_detection_mappings from packagedcode.licensing import get_license_expression_from_detection_mappings @@ -162,6 +163,8 @@ def process_codebase(self, codebase, strip_root=False, **kwargs): """ no_licenses = False + # These steps add proper license detections to package_data and hence + # this is performed before top level packages creation for resource in codebase.walk(topdown=False): if not hasattr(resource, 'license_detections'): no_licenses=True @@ -190,6 +193,15 @@ def process_codebase(self, codebase, strip_root=False, **kwargs): # Create codebase-level packages and dependencies create_package_and_deps(codebase, strip_root=strip_root, **kwargs) + if not no_licenses: + # This step is dependent on top level packages + for resource in codebase.walk(topdown=False): + # If there is a unknown reference to a package we add the license + # from the package license detection + modified = list(add_referenced_license_detection_from_package(resource, codebase)) + if TRACE and modified: + logger_debug(f'packagedcode: process_codebase: add_referenced_license_matches_from_package: modified: {modified}') + def add_license_from_file(resource, codebase, no_licenses): """ diff --git a/tests/packagedcode/data/debian/copyright/debian-2019-11-15/main/f/fusiondirectory/stable_copyright b/tests/packagedcode/data/debian/copyright/debian-2019-11-15/main/f/fusiondirectory/stable_copyright index d012f46ea31..4026ce695e8 100644 --- a/tests/packagedcode/data/debian/copyright/debian-2019-11-15/main/f/fusiondirectory/stable_copyright +++ b/tests/packagedcode/data/debian/copyright/debian-2019-11-15/main/f/fusiondirectory/stable_copyright @@ -1,7 +1,7 @@ Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ Upstream-Name: FusionDirectory Upstream-Contact: Contact -Source: https://repos.fusiondirectory.org/sources/ +Source: https://gitlab.fusiondirectory.org/fusiondirectory Files: core/contrib/smarty/plugins/function.filePath.php @@ -12,8 +12,10 @@ Files: core/include/class_exceptions.inc core/include/class_exceptions.inc core/include/class_IconTheme.inc + core/include/class_Language.inc core/include/class_ldapFilter.inc core/include/class_ldapGeneralizedTime.inc + core/include/class_ldapSizeLimit.inc core/include/class_objects.inc core/include/class_template.inc core/include/class_templateHandling.inc @@ -31,6 +33,7 @@ Files: core/include/simpleplugin/attributes/class_FileAttribute.inc core/include/simpleplugin/attributes/class_FlagsAttribute.inc core/include/simpleplugin/attributes/class_IntAttribute.inc + core/include/simpleplugin/attributes/class_PhoneNumberAttribute.inc core/include/simpleplugin/attributes/class_SelectAttribute.inc core/include/simpleplugin/attributes/class_SetAttribute.inc core/include/simpleplugin/attributes/class_StringAttribute.inc @@ -41,6 +44,7 @@ Files: core/include/simpleplugin/class_simplePlugin.inc core/include/simpleplugin/class_simpleSelectManagement.inc core/include/simpleplugin/class_simpleService.inc + core/plugins/addons/dashboard/class_dashBoardPasswords.inc core/plugins/addons/dashboard/main.inc core/plugins/addons/dashboard/tabs_dashBoard.inc core/plugins/addons/dashboard/class_dashBoardPasswords.inc @@ -51,11 +55,16 @@ Files: core/plugins/admin/aclrole/main.inc core/plugins/admin/departments/class_country.inc core/plugins/admin/departments/class_dcObject.inc + core/plugins/admin/departments/class_departmentManagement.inc core/plugins/admin/departments/class_domain.inc core/plugins/admin/departments/class_locality.inc core/plugins/admin/departments/class_organization.inc + core/plugins/admin/departments/main.inc + core/plugins/admin/departments/tabs_department.inc core/plugins/admin/groups/class_roleGeneric.inc core/plugins/admin/groups/main.inc + core/plugins/admin/groups/tabs_ogroups.inc + core/plugins/admin/users/main.inc core/plugins/config/class_configInLdap.inc core/plugins/config/class_dashBoardConfig.inc core/plugins/config/class_mainPluginsConfig.inc @@ -83,6 +92,7 @@ Files: plugins/argonaut/addons/argonaut/class_filterArgonautEvents.inc plugins/argonaut/addons/argonaut/main.inc plugins/argonaut/admin/systems/argonaut/class_argonautClient.inc + plugins/argonaut/admin/systems/argonaut/class_deploymentTimeframe.inc plugins/argonaut/admin/systems/services/argonaut/class_argonautDNSConfig.inc plugins/argonaut/admin/systems/services/argonaut/class_argonautFuseConfig.inc plugins/argonaut/admin/systems/services/argonaut/class_argonautFuseFAIConfig.inc @@ -109,8 +119,8 @@ Files: plugins/debconf/admin/debconfProfile/class_debconfProfileManagement.inc plugins/debconf/admin/debconfProfile/main.inc plugins/debconf/admin/systems/debconf/class_debconfStartup.inc - plugins/developers/debug-help/addons/debug-help/class_debugHelp.inc - plugins/developers/debug-help/addons/debug-help/main.inc + plugins/developers/addons/debugHelp/class_debugHelp.inc + plugins/developers/addons/debugHelp/main.inc plugins/dhcp/admin/dhcp/class_dhcpManagement.inc plugins/dhcp/admin/dhcp/class_dhcpPlugin.inc plugins/dhcp/admin/dhcp/main.inc @@ -187,6 +197,7 @@ Files: plugins/newsletter/config/newsletter/class_newsletterConfig.inc plugins/newsletter/personal/newsletter/class_newsletterSubscriptions.inc plugins/newsletter/personal/newsletter/main.inc + plugins/opsi/addons/dashboard/class_dashBoardOpsi.inc plugins/opsi/addons/opsi/main.inc plugins/opsi/admin/opsi/class_opsiOnDemandList.inc plugins/opsi/admin/opsi/class_opsiProductProperties.inc @@ -195,6 +206,7 @@ Files: plugins/opsi/admin/opsi/class_opsiSoftwareList.inc plugins/opsi/admin/opsi/main.inc plugins/opsi/admin/systems/opsi/class_opsiClient.inc + plugins/opsi/admin/systems/opsi/class_opsiLogView.inc plugins/opsi/admin/systems/services/opsi/class_serviceOPSI.inc plugins/opsi/config/opsi/class_opsiConfig.inc plugins/personal/config/personal/class_personalConfig.inc @@ -222,6 +234,12 @@ Files: plugins/samba/admin/samba/main.inc plugins/samba/admin/systems/samba/class_argonautEventSambaShares.inc plugins/samba/config/samba/class_sambaPluginConfig.inc + plugins/sinaps/config/sinaps/class_sinapsConfig.inc + plugins/sinaps/html/sinaps.php + plugins/sinaps/include/class_sinapsDiffusionHandlerJob.inc + plugins/sinaps/include/class_sinapsRequest.inc + plugins/sinaps/include/class_sinapsRequestAcquisition.inc + plugins/sinaps/personal/sinaps/class_sinapsUser.inc plugins/sogo/admin/sogo/class_sogoManagement.inc plugins/sogo/admin/sogo/class_sogoResource.inc plugins/sogo/admin/sogo/main.inc @@ -230,10 +248,13 @@ Files: plugins/spamassassin/personal/spamassassin/main.inc plugins/squid/personal/squid/main.inc plugins/ssh/personal/ssh/main.inc + plugins/subcontracting/personal/subcontracting/class_subContracting.inc plugins/subcontracting/personal/subcontracting/main.inc + plugins/sudo/admin/sudo/class_sudoOptions.inc plugins/sudo/admin/sudo/main.inc plugins/sudo/admin/sudo/tabs_sudo.inc plugins/sudo/config/sudo/class_sudoConfig.inc + plugins/supann-ext/admin/supannStructures/class_supannStructureExt.inc plugins/supann/admin/supannStructures/class_entite.inc plugins/supann/admin/supannStructures/class_etablissement.inc plugins/supann/admin/supannStructures/class_supann.inc @@ -243,6 +264,10 @@ Files: plugins/supann/personal/supann/main.inc plugins/sympa/admin/sympa/main.inc plugins/sympa/admin/sympa/class_sympaAlias.inc + plugins/sympa/admin/sympa/class_sympaManagement.inc + plugins/systems/admin/systems/class_componentGeneric.inc + plugins/systems/admin/systems/class_ipHostPlugin.inc + plugins/systems/admin/systems/system-list.xml plugins/sympa/admin/systems/services/sympa/class_serviceSympa.inc plugins/sympa/config/sympa/class_sympaConfig.inc plugins/systems/admin/systems/class_mobilePhoneGeneric.inc @@ -258,20 +283,15 @@ Files: plugins/weblink/admin/systems/weblink/class_webLink.inc plugins/webservice/config/class_webserviceConfig.inc plugins/webservice/html/jsonrpc.php -Copyright: 2011-2016, FusionDirectory - 2011-2017, FusionDirectory - 2011-2018, FusionDirectory - 2012-2016, FusionDirectory - 2012-2017, FusionDirectory - 2013-2016, FusionDirectory - 2013-2016, FusionDirectory - 2013-2017, FusionDirectory +Copyright: 2011-2018, FusionDirectory + 2012-2018, FusionDirectory + 2012-2019, FusionDirectory + 2013-2018, FusionDirectory 2014-2016, FusionDirectory + 2014-2018, FusionDirectory 2015-2016, FusionDirectory - 2015-2017, FusionDirectory - 2016, FusionDirectory - 2016-2017, FusionDirectory - 2017, FusionDirectory + 2015-2018, FusionDirectory + 2016-2018, FusionDirectory 2017-2018, FusionDirectory 2018, FusionDirectory License: GPL-2+ @@ -328,14 +348,9 @@ Files: core/plugins/admin/acl/class_aclManagement.inc core/plugins/admin/aclrole/class_aclEditionDialog.inc core/plugins/admin/departments/class_department.inc - core/plugins/admin/departments/class_departmentManagement.inc - core/plugins/admin/departments/main.inc - core/plugins/admin/departments/tabs_department.inc core/plugins/admin/groups/class_groupManagement.inc core/plugins/admin/groups/class_ogroup.inc - core/plugins/admin/groups/tabs_ogroups.inc core/plugins/admin/users/class_userManagement.inc - core/plugins/admin/users/main.inc core/plugins/generic/welcome/main.inc core/setup/class_setup.inc core/setup/class_setupStepChecks.inc @@ -379,7 +394,6 @@ Files: plugins/sudo/admin/sudo/class_sudoGeneric.inc plugins/sudo/admin/sudo/class_sudoManagement.inc plugins/sudo/admin/sudo/class_sudoOption.inc - plugins/systems/admin/systems/class_componentGeneric.inc plugins/systems/admin/systems/class_filterServerService.inc plugins/systems/admin/systems/class_printGeneric.inc plugins/systems/admin/systems/class_serverService.inc @@ -392,10 +406,8 @@ Files: plugins/systems/admin/systems/tabs_server.inc Copyright: 2003, Cajus Pollmeier 2003-2010, Cajus Pollmeier - 2011-2015, FusionDirectory 2011-2016, FusionDirectory 2011-2018, FusionDirectory - 2012-2016, FusionDirectory License: GPL-2+ Comment: This file is distributed under the same license as the PACKAGE package. @@ -411,7 +423,7 @@ Files: core/setup/class_setupStepWelcome.inc core/setup/main.inc Copyright: 2007, Fabian Hickert - 2011-2016, FusionDirectory + 2011-2018, FusionDirectory License: GPL-2+ Files: @@ -440,44 +452,53 @@ Copyright: 2014-2015, Dhatim License: GPL-2+ Files: - core/plugins/addons/dashboard/class_dashBoard.inc + core/contrib/man/fusiondirectory-insert-schema.1 + core/contrib/man/fusiondirectory-setup.1 + core/contrib/man/fusiondirectory.conf.5 + plugins/systems/admin/systems/serverService-list.xml + plugins/webservice/contrib/man/fusiondirectory-shell.1 +Copyright: 2011-2019, FusionDirectory +License: GPL-2+ +Comment: + Assuming copyright holdership and license from rest of the + project files. + +Files: core/plugins/addons/dashboard/class_dashBoardUsers.inc plugins/opsi/addons/opsi/class_opsiImport.inc - plugins/sympa/admin/sympa/class_sympaManagement.inc plugins/systems/addons/dashboard/class_dashBoardNetwork.inc plugins/systems/addons/dashboard/class_dashBoardSystems.inc Copyright: 2010, Antoine Gallavardin 2010-2012, Antoine Gallavardin - 2011-2016, FusionDirectory - 2012-2016, FusionDirectory - 2012-2017, FusionDirectory - 2013-2016, FusionDirectory + 2011-2018, FusionDirectory + 2012-2019, FusionDirectory License: GPL-2+ Files: + core/plugins/addons/dashboard/class_dashBoard.inc plugins/alias/admin/alias/class_aliasManagement.inc plugins/quota/admin/systems/services/quota/class_serviceQuota.inc plugins/quota/personal/quota/class_quotaAccount.inc plugins/supann/personal/supann/class_supannAccount.inc Copyright: 2010, Antoine Gallavardin 2010-2012, Antoine Gallavardin - 2011-2016, FusionDirectory - 2012-2016, FusionDirectory - 2013-2016, FusionDirectory + 2011-2018, FusionDirectory + 2012-2018, FusionDirectory + 2013-2018, FusionDirectory License: GPL-2+ Files: plugins/netgroups/admin/netgroups/class_netgroup.inc plugins/netgroups/personal/netgroups/class_netgroupMembership.inc -Copyright: 2011, Alejandro Escanero Blanco (aescanero@gmail.com) - 2011-2016, FusionDirectory +Copyright: 2011, Alejandro Escanero Blanco + 2011-2018, FusionDirectory License: GPL-2+ Files: plugins/freeradius/admin/freeradius/class_freeradiusGroup.inc plugins/freeradius/personal/freeradius/class_freeradiusAccount.inc Copyright: 2003-2009, GONICUS GmbH - 2011-2016, FusionDirectory + 2011-2018, FusionDirectory 2012, WILLIAME Jeremy License: GPL-2+ @@ -521,6 +542,7 @@ Files: plugins/quota/locale/*/fusiondirectory.po plugins/repository/locale/*/fusiondirectory.po plugins/samba/locale/*/fusiondirectory.po + plugins/sinaps/locale/*/fusiondirectory.po plugins/sogo/locale/*/fusiondirectory.po plugins/spamassassin/locale/*/fusiondirectory.po plugins/squid/locale/*/fusiondirectory.po @@ -528,6 +550,7 @@ Files: plugins/subcontracting/locale/*/fusiondirectory.po plugins/sudo/locale/*/fusiondirectory.po plugins/supann/locale/*/fusiondirectory.po + plugins/supann-ext/locale/*/fusiondirectory.po plugins/sympa/locale/*/fusiondirectory.po plugins/systems/locale/*/fusiondirectory.po plugins/user-reminder/locale/*/fusiondirectory.po @@ -1084,16 +1107,14 @@ Files: core/contrib/apache/fusiondirectory-apache.conf core/contrib/bin/fusiondirectory-insert-schema core/contrib/bin/fusiondirectory-setup + core/contrib/docs/fusiondirectory-oid.pdf core/contrib/fusiondirectory.conf core/contrib/images/favicon.png core/contrib/images/favicon.svg core/contrib/images/Fusiondirectory-logo-noir.eps core/contrib/images/Fusiondirectory-logo.png core/contrib/lighttpd/fusiondirectory-lighttpd.conf - core/contrib/man/fusiondirectory.conf.5 core/contrib/man/fusiondirectory.conf.pod - core/contrib/man/fusiondirectory-insert-schema.1 - core/contrib/man/fusiondirectory-setup.1 core/contrib/openldap/core-fd-conf.schema core/contrib/openldap/core-fd.schema core/contrib/openldap/ldapns.schema @@ -1149,6 +1170,7 @@ Files: core/html/themes/legacy/tabs.css core/html/themes/legacy/theme.css core/ihtml/themes/breezy/colors.txt + core/ihtml/themes/breezy/copynotice.tpl core/ihtml/themes/breezy/css.tpl core/ihtml/themes/breezy/framework.tpl core/ihtml/themes/breezy/headers.tpl @@ -1157,7 +1179,6 @@ Files: core/ihtml/themes/breezy/msg_dialog.tpl core/ihtml/themes/breezy/recovery.tpl core/ihtml/themes/breezy/restore-confirm.tpl - core/ihtml/themes/breezy/setup_header.tpl core/ihtml/themes/breezy/simple-filter.tpl core/ihtml/themes/breezy/simple-list.tpl core/ihtml/themes/breezy/simpleplugin_section_alone.tpl @@ -1167,6 +1188,9 @@ Files: core/ihtml/themes/breezy/simple-select-list.tpl core/ihtml/themes/breezy/sizelimit.tpl core/ihtml/themes/breezy/template.tpl + core/ihtml/themes/legacy/login.tpl + core/ihtml/themes/legacy/recovery.tpl + core/ihtml/themes/legacy/setup_header.tpl core/include/functions_debug.inc core/include/functions_debug.inc core/include/functions_debug.inc @@ -1199,7 +1223,15 @@ Files: core/setup/setup_migrate_baseOC.tpl core/setup/setup_migrate.tpl core/setup/setup_welcome.tpl + core/.gitlab/.gitkeep core/.gitlab-ci.yml + core/.gitlab/issue_templates/.gitkeep + core/.gitlab/issue_templates/Backporting.md + core/.gitlab/issue_templates/Bugs.md + core/.gitlab/issue_templates/Contribution.md + core/.gitlab/issue_templates/Enhancement.md + core/.gitlab/merge_request_templates/.gitkeep + core/.gitlab/merge_request_templates/Merge.md core/.tx/config core/AUTHORS.md core/CODE_OF_CONDUCT.md @@ -1217,6 +1249,7 @@ Files: plugins/argonaut/addons/argonaut/deploy-list.xml plugins/argonaut/addons/argonaut/import_events.tpl plugins/argonaut/contrib/openldap/argonaut-fd.schema + plugins/audit/admin/audit/audit-filter.tpl plugins/audit/contrib/openldap/audit-fd-conf.schema plugins/audit/contrib/openldap/audit-fd.schema plugins/autofs/contrib/openldap/autofs-fd-conf.schema @@ -1228,7 +1261,7 @@ Files: plugins/debconf/admin/debconfProfile/debconfProfile-filter.xml plugins/debconf/contrib/openldap/debconf-fd.schema plugins/debconf/contrib/openldap/debconf.schema - plugins/developers/debug-help/addons/debug-help/debughelp.tpl + plugins/developers/addons/debugHelp/debughelp.tpl plugins/dhcp/contrib/openldap/dhcp-fd-conf.schema plugins/dhcp/contrib/openldap/dhcp-fd.schema plugins/dns/admin/systems/dnsrecords.tpl @@ -1265,6 +1298,8 @@ Files: plugins/netgroups/contrib/openldap/netgroups-fd-conf.schema plugins/newsletter/contrib/openldap/newsletter-fd-conf.schema plugins/newsletter/contrib/openldap/newsletter-fd.schema + plugins/opsi/addons/dashboard/opsi_profiles.tpl + plugins/opsi/addons/dashboard/opsi_stats.tpl plugins/opsi/addons/opsi/opsiimport.tpl plugins/opsi/contrib/openldap/opsi-fd-conf.schema plugins/opsi/contrib/openldap/opsi-fd.schema @@ -1304,6 +1339,9 @@ Files: plugins/samba/contrib/openldap/samba-fd-conf.schema plugins/samba/contrib/openldap/samba.schema plugins/samba/personal/samba/sambaLogonHours.tpl + plugins/sinaps/contrib/openldap/sinaps-fd-conf.schema + plugins/sinaps/contrib/test/testAcquisition.php + plugins/sinaps/contrib/test/testEndPoint.php plugins/sogo/contrib/openldap/calEntry.schema plugins/sogo/contrib/openldap/calRessources.schema plugins/sogo/contrib/openldap/sogo-fd-conf.schema @@ -1315,16 +1353,17 @@ Files: plugins/sudo/admin/sudo/usedoptions_section.tpl plugins/sudo/contrib/openldap/sudo-fd-conf.schema plugins/sudo/contrib/openldap/sudo.schema + plugins/supann-ext/contrib/openldap/supann-ext-fd.schema plugins/supann/contrib/openldap/internet2.schema plugins/supann/contrib/openldap/supann_2009.schema plugins/supann/contrib/openldap/supann-fd-conf.schema plugins/supann/contrib/etc/activite_CNU plugins/supann/contrib/etc/activite_REFERENS plugins/supann/contrib/etc/affiliation - plugins/supann/contrib/etc/corps + plugins/supann/contrib/etc/corps_NCORPS plugins/supann/contrib/etc/diplome_SISE plugins/supann/contrib/etc/discipline_SISE - plugins/supann/contrib/etc/entite + plugins/supann/contrib/etc/entite_SUPANN plugins/supann/contrib/etc/etablissement_SUPANN plugins/supann/contrib/etc/eturegimeinscription_SISE plugins/supann/contrib/etc/role_SUPANN @@ -1347,21 +1386,28 @@ Files: plugins/systems/admin/systems/serverService-list.xml plugins/systems/admin/systems/server_import.tpl plugins/systems/admin/systems/services/shares/service_share.tpl - plugins/systems/admin/systems/system-list.xml plugins/systems/contrib/openldap/service-fd.schema plugins/systems/contrib/openldap/systems-fd-conf.schema plugins/systems/contrib/openldap/systems-fd.schema plugins/.gitlab-ci.yml + plugins/.gitlab/.gitkeep + plugins/.gitlab/issue_templates/.gitkeep + plugins/.gitlab/issue_templates/Backporting.md + plugins/.gitlab/issue_templates/Bugs.md + plugins/.gitlab/issue_templates/Contribution.md + plugins/.gitlab/issue_templates/Enhancement.md + plugins/.gitlab/merge_request_templates/.gitkeep + plugins/.gitlab/merge_request_templates/Merge.md plugins/.tx/config plugins/CODE_OF_CONDUCT.md plugins/CONTRIBUTING.md plugins/Changelog.md + plugins/README.md plugins/user-reminder/contrib/openldap/user-reminder-fd-conf.schema plugins/user-reminder/ihtml/themes/breezy/user-reminder.tpl plugins/weblink/contrib/openldap/weblink-fd.schema plugins/webservice/contrib/bin/fusiondirectory-shell plugins/webservice/contrib/docs/jsonrpc.php.doc - plugins/webservice/contrib/man/fusiondirectory-shell.1 plugins/webservice/contrib/openldap/webservice-fd-conf.schema Copyright: *No copyright* License: GPL-2+ @@ -1372,7 +1418,7 @@ Files: plugins/argonaut/include/jsonRPCClient.php plugins/webservice/include/jsonrpcphp/jsonRPCServer.php Copyright: 2007, Sergio Vaccaro - 2012-2016, FusionDirectory + 2012-2018, FusionDirectory 2013-2018, FusionDirectory License: GPL-2+ @@ -1384,23 +1430,22 @@ License: Expat Files: core/include/class_ldap.inc -Copyright: 1998, Eric Kilfoil - 2003, Alejandro Escanero Blanco +Copyright: 1998, Eric Kilfoil + 2003, Alejandro Escanero Blanco 2003-2010, Cajus Pollmeier - 2011-2016, FusionDirectory + 2011-2018, FusionDirectory License: GPL-2+ - Files: plugins/mail/admin/groups/mail/class_mailGroup.inc Copyright: 2009-2010, Bas Tichelaar - 2013-2016, FusionDirectory + 2013-2018, FusionDirectory License: GPL-2+ Files: plugins/nagios/personal/nagios/main.inc Copyright: 2005, Benoit Mortier - 2011-2016, FusionDirectory + 2011-2018, FusionDirectory License: GPL-2+ Files: @@ -1408,37 +1453,37 @@ Files: Copyright: 2005, Guillame Delecourt 2006, Benoit Mortier 2006, Vincent Seynhaeve - 2011-2016, FusionDirectory + 2011-2018, FusionDirectory License: GPL-2+ Files: plugins/ppolicy/addons/dashboard/class_dashBoardPPolicy.inc Copyright: 2014-2015, Dhatim - 2014-2016, FusionDirectory project + 2014-2018, FusionDirectory project License: GPL-2+ Files: plugins/mail/personal/mail/class_mailAccount.inc Copyright: 2007, Fabian Hicker - 2011-2016, FusionDirectory + 2011-2018, FusionDirectory License: GPL-2+ Files: core/include/accept-to-gettext.inc Copyright: 2003, Wouter Verhelst - 2012-2016, FusionDirectory + 2012-2018, FusionDirectory License: GPL-2+ Files: plugins/samba/include/class_smbHash.inc Copyright: 2004, - 2006, Roland Gruber - 2013-2016, FusionDirectory Project + 2013-2018, FusionDirectory Project License: GPL-2+ Files: plugins/subcontracting/personal/subcontracting/class_subContracting.inc Copyright: - 2015-2016, OpenSides + 2015-2018, OpenSides License: GPL-2+ Files: @@ -1461,6 +1506,12 @@ Copyright: 2007, Mathieu Jondet License: Expat +Files: + core/html/include/tsorter.js +Copyright: + 2015, Terrill Dent, http://terrill.ca +License: Expat + Files: debian/* README.multi-orig-tarball-package diff --git a/tests/packagedcode/data/debian/copyright/debian-2019-11-15/main/f/fusiondirectory/stable_copyright-detailed.expected.yml b/tests/packagedcode/data/debian/copyright/debian-2019-11-15/main/f/fusiondirectory/stable_copyright-detailed.expected.yml index a4a99ac4ea2..73ff81c4f73 100644 --- a/tests/packagedcode/data/debian/copyright/debian-2019-11-15/main/f/fusiondirectory/stable_copyright-detailed.expected.yml +++ b/tests/packagedcode/data/debian/copyright/debian-2019-11-15/main/f/fusiondirectory/stable_copyright-detailed.expected.yml @@ -10,6 +10,7 @@ declared_license: - GPL-2+ - GPL-2+ - GPL-2+ + - GPL-2+ - LGPL-3+ - public-domain - GPL-2+ @@ -27,6 +28,7 @@ declared_license: - GPL-2+ - BSD-4-clause - Expat + - Expat - GPL-2+ or GPL-3+ or LGPL-2.1+ or LGPL-3+ or Expat or BSD-3-clause or BSD-4-clause - GPL-2+ - GPL-3+ @@ -40,30 +42,31 @@ declared_license_expression: (gpl-2.0-plus AND gpl-2.0-plus) AND (gpl-2.0-plus A AND free-unknown AND (gpl-2.0-plus AND gpl-2.0-plus) AND (gpl-2.0-plus AND gpl-2.0-plus) AND bsd-new AND (gpl-2.0-plus AND gpl-2.0-plus) AND (gpl-2.0-plus AND gpl-2.0-plus) AND (gpl-2.0-plus AND gpl-2.0-plus) AND (gpl-2.0-plus AND gpl-2.0-plus) AND (gpl-2.0-plus AND gpl-2.0-plus) - AND (gpl-2.0-plus AND gpl-2.0-plus) AND free-unknown AND (lgpl-3.0-plus AND lgpl-3.0-plus) - AND other-permissive AND gpl-2.0-plus AND (gpl-2.0-plus AND gpl-2.0-plus) AND (gpl-2.0-plus - AND gpl-2.0-plus) AND mit AND (gpl-2.0-plus AND gpl-2.0-plus) AND (gpl-2.0-plus AND gpl-2.0-plus) + AND (gpl-2.0-plus AND gpl-2.0-plus) AND (gpl-2.0-plus AND gpl-2.0-plus) AND gpl-2.0-plus AND + (lgpl-3.0-plus AND lgpl-3.0-plus) AND other-permissive AND gpl-2.0-plus AND (gpl-2.0-plus + AND gpl-2.0-plus) AND (gpl-2.0-plus AND gpl-2.0-plus) AND mit AND (gpl-2.0-plus AND gpl-2.0-plus) AND (gpl-2.0-plus AND gpl-2.0-plus) AND (gpl-2.0-plus AND gpl-2.0-plus) AND (gpl-2.0-plus AND gpl-2.0-plus) AND (gpl-2.0-plus AND gpl-2.0-plus) AND (gpl-2.0-plus AND gpl-2.0-plus) AND (gpl-2.0-plus AND gpl-2.0-plus) AND (gpl-2.0-plus AND gpl-2.0-plus) AND (gpl-2.0-plus - AND gpl-2.0-plus) AND bsd-original AND mit AND ((gpl-2.0-plus AND gpl-2.0-plus) OR (gpl-3.0-plus - AND gpl-3.0-plus) OR (lgpl-2.1-plus AND lgpl-2.1-plus) OR (lgpl-3.0-plus AND lgpl-3.0-plus) - OR mit OR bsd-new OR bsd-original) + AND gpl-2.0-plus) AND (gpl-2.0-plus AND gpl-2.0-plus) AND bsd-original AND mit AND mit AND + ((gpl-2.0-plus AND gpl-2.0-plus) OR (gpl-3.0-plus AND gpl-3.0-plus) OR (lgpl-2.1-plus AND + lgpl-2.1-plus) OR (lgpl-3.0-plus AND lgpl-3.0-plus) OR mit OR bsd-new OR bsd-original) declared_license_expression_spdx: (GPL-2.0-or-later AND GPL-2.0-or-later) AND (GPL-2.0-or-later AND GPL-2.0-or-later) AND LicenseRef-scancode-free-unknown AND (GPL-2.0-or-later AND GPL-2.0-or-later) AND (GPL-2.0-or-later AND GPL-2.0-or-later) AND BSD-3-Clause AND (GPL-2.0-or-later AND GPL-2.0-or-later) AND (GPL-2.0-or-later AND GPL-2.0-or-later) AND (GPL-2.0-or-later AND GPL-2.0-or-later) AND (GPL-2.0-or-later AND GPL-2.0-or-later) AND (GPL-2.0-or-later AND GPL-2.0-or-later) AND (GPL-2.0-or-later - AND GPL-2.0-or-later) AND LicenseRef-scancode-free-unknown AND (LGPL-3.0-or-later AND LGPL-3.0-or-later) - AND LicenseRef-scancode-other-permissive AND GPL-2.0-or-later AND (GPL-2.0-or-later AND GPL-2.0-or-later) - AND (GPL-2.0-or-later AND GPL-2.0-or-later) AND MIT AND (GPL-2.0-or-later AND GPL-2.0-or-later) + AND GPL-2.0-or-later) AND (GPL-2.0-or-later AND GPL-2.0-or-later) AND GPL-2.0-or-later AND + (LGPL-3.0-or-later AND LGPL-3.0-or-later) AND LicenseRef-scancode-other-permissive AND GPL-2.0-or-later + AND (GPL-2.0-or-later AND GPL-2.0-or-later) AND (GPL-2.0-or-later AND GPL-2.0-or-later) AND + MIT AND (GPL-2.0-or-later AND GPL-2.0-or-later) AND (GPL-2.0-or-later AND GPL-2.0-or-later) AND (GPL-2.0-or-later AND GPL-2.0-or-later) AND (GPL-2.0-or-later AND GPL-2.0-or-later) AND (GPL-2.0-or-later AND GPL-2.0-or-later) AND (GPL-2.0-or-later AND GPL-2.0-or-later) AND (GPL-2.0-or-later AND GPL-2.0-or-later) AND (GPL-2.0-or-later AND GPL-2.0-or-later) AND (GPL-2.0-or-later AND - GPL-2.0-or-later) AND (GPL-2.0-or-later AND GPL-2.0-or-later) AND (GPL-2.0-or-later AND GPL-2.0-or-later) - AND BSD-4-Clause AND MIT AND ((GPL-2.0-or-later AND GPL-2.0-or-later) OR (GPL-3.0-or-later - AND GPL-3.0-or-later) OR (LGPL-2.1-or-later AND LGPL-2.1-or-later) OR (LGPL-3.0-or-later AND - LGPL-3.0-or-later) OR MIT OR BSD-3-Clause OR BSD-4-Clause) + GPL-2.0-or-later) AND (GPL-2.0-or-later AND GPL-2.0-or-later) AND BSD-4-Clause AND MIT AND + MIT AND ((GPL-2.0-or-later AND GPL-2.0-or-later) OR (GPL-3.0-or-later AND GPL-3.0-or-later) + OR (LGPL-2.1-or-later AND LGPL-2.1-or-later) OR (LGPL-3.0-or-later AND LGPL-3.0-or-later) + OR MIT OR BSD-3-Clause OR BSD-4-Clause) other_license_expression: other_license_expression_spdx: license_detections: @@ -72,8 +75,8 @@ license_detections: - not-combined matches: - score: '100.0' - start_line: 1472 - end_line: 1472 + start_line: 1523 + end_line: 1523 matched_length: 3 match_coverage: '100.0' matcher: 1-hash @@ -104,8 +107,8 @@ license_detections: spdx_license_key: GPL-2.0-or-later spdx_url: https://spdx.org/licenses/GPL-2.0-or-later - score: '100.0' - start_line: 1473 - end_line: 1488 + start_line: 1524 + end_line: 1539 matched_length: 136 match_coverage: '100.0' matcher: 1-hash @@ -157,8 +160,8 @@ license_detections: - not-combined matches: - score: '100.0' - start_line: 1490 - end_line: 1490 + start_line: 1541 + end_line: 1541 matched_length: 3 match_coverage: '100.0' matcher: 1-hash @@ -189,8 +192,8 @@ license_detections: spdx_license_key: GPL-3.0-or-later spdx_url: https://spdx.org/licenses/GPL-3.0-or-later - score: '100.0' - start_line: 1491 - end_line: 1506 + start_line: 1542 + end_line: 1557 matched_length: 136 match_coverage: '100.0' matcher: 1-hash @@ -242,8 +245,8 @@ license_detections: - not-combined matches: - score: '100.0' - start_line: 1508 - end_line: 1508 + start_line: 1559 + end_line: 1559 matched_length: 4 match_coverage: '100.0' matcher: 1-hash @@ -274,8 +277,8 @@ license_detections: spdx_license_key: LGPL-2.1-or-later spdx_url: https://spdx.org/licenses/LGPL-2.1-or-later - score: '100.0' - start_line: 1509 - end_line: 1526 + start_line: 1560 + end_line: 1577 matched_length: 146 match_coverage: '100.0' matcher: 1-hash @@ -329,8 +332,8 @@ license_detections: - not-combined matches: - score: '100.0' - start_line: 1529 - end_line: 1545 + start_line: 1580 + end_line: 1596 matched_length: 161 match_coverage: '100.0' matcher: 1-hash @@ -382,8 +385,8 @@ license_detections: - not-combined matches: - score: '100.0' - start_line: 1548 - end_line: 1570 + start_line: 1599 + end_line: 1621 matched_length: 213 match_coverage: '100.0' matcher: 1-hash @@ -441,8 +444,8 @@ license_detections: - not-combined matches: - score: '100.0' - start_line: 1573 - end_line: 1598 + start_line: 1624 + end_line: 1649 matched_length: 236 match_coverage: '100.0' matcher: 1-hash @@ -503,8 +506,8 @@ license_detections: - not-combined matches: - score: '100.0' - start_line: 1600 - end_line: 1600 + start_line: 1651 + end_line: 1651 matched_length: 3 match_coverage: '100.0' matcher: 1-hash @@ -535,8 +538,8 @@ license_detections: spdx_license_key: LGPL-3.0-or-later spdx_url: https://spdx.org/licenses/LGPL-3.0-or-later - score: '100.0' - start_line: 1601 - end_line: 1612 + start_line: 1652 + end_line: 1663 matched_length: 105 match_coverage: '100.0' matcher: 1-hash @@ -584,8 +587,8 @@ license_detections: - not-combined matches: - score: '100.0' - start_line: 1615 - end_line: 1618 + start_line: 1666 + end_line: 1669 matched_length: 40 match_coverage: '100.0' matcher: 1-hash @@ -620,24 +623,26 @@ license_detections: spdx_license_key: LicenseRef-scancode-other-permissive spdx_url: https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/other-permissive.LICENSE - license_expression: free-unknown - detection_rules: [] + detection_rules: + - not-combined matches: - - score: '90.0' - start_line: 401 - end_line: 401 + - score: '100.0' + start_line: 413 + end_line: 413 matched_length: 12 match_coverage: '100.0' matcher: 1-hash license_expression: free-unknown - rule_identifier: free-unknown_80.RULE - referenced_filenames: [] + rule_identifier: free-unknown-package_2.RULE + referenced_filenames: + - package is_license_text: no - is_license_notice: yes - is_license_reference: no + is_license_notice: no + is_license_reference: yes is_license_tag: no is_license_intro: no rule_length: 12 - rule_relevance: 90 + rule_relevance: 100 matched_text: This file is distributed under the same license as the PACKAGE package. licenses: - key: free-unknown @@ -654,48 +659,49 @@ license_detections: scancode_data_url: https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/free-unknown.yml spdx_license_key: LicenseRef-scancode-free-unknown spdx_url: https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/free-unknown.LICENSE - - license_expression: free-unknown - detection_rules: [] + - license_expression: gpl-2.0-plus + detection_rules: + - not-combined matches: - - score: '82.5' - start_line: 539 - end_line: 539 + - score: '80.0' + start_line: 562 + end_line: 562 matched_length: 11 match_coverage: '100.0' - matcher: 1-hash - license_expression: free-unknown - rule_identifier: free-unknown_79.RULE - referenced_filenames: [] + matcher: 2-aho + license_expression: gpl-2.0-plus + rule_identifier: gpl-2.0-plus_1070.RULE + referenced_filenames: + - package is_license_text: no - is_license_notice: yes - is_license_reference: no + is_license_notice: no + is_license_reference: yes is_license_tag: no is_license_intro: no rule_length: 11 - rule_relevance: 90 + rule_relevance: 80 matched_text: This file is distributed under the same license as the fusiondirectory - package. licenses: - - key: free-unknown - name: Free unknown license detected but not recognized - short_name: Free unknown - category: Unstated License + - key: gpl-2.0-plus + name: GNU General Public License 2.0 or later + short_name: GPL 2.0 or later + category: Copyleft is_exception: no - is_unknown: yes - owner: Unspecified - homepage_url: - text_url: - reference_url: https://scancode-licensedb.aboutcode.org/free-unknown - scancode_text_url: https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/free-unknown.LICENSE - scancode_data_url: https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/free-unknown.yml - spdx_license_key: LicenseRef-scancode-free-unknown - spdx_url: https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/free-unknown.LICENSE + is_unknown: no + owner: Free Software Foundation (FSF) + homepage_url: http://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html + text_url: http://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html + reference_url: https://scancode-licensedb.aboutcode.org/gpl-2.0-plus + scancode_text_url: https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/gpl-2.0-plus.LICENSE + scancode_data_url: https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/gpl-2.0-plus.yml + spdx_license_key: GPL-2.0-or-later + spdx_url: https://spdx.org/licenses/GPL-2.0-or-later - license_expression: gpl-2.0-plus detection_rules: [] matches: - score: '100.0' - start_line: 1076 - end_line: 1076 + start_line: 1099 + end_line: 1099 matched_length: 2 match_coverage: '100.0' matcher: 2-aho @@ -727,50 +733,42 @@ license_detections: spdx_url: https://spdx.org/licenses/GPL-2.0-or-later other_license_detections: [] copyright: | - 2011-2016, FusionDirectory - 2011-2017, FusionDirectory 2011-2018, FusionDirectory - 2012-2016, FusionDirectory - 2012-2017, FusionDirectory - 2013-2016, FusionDirectory - 2013-2016, FusionDirectory - 2013-2017, FusionDirectory + 2012-2018, FusionDirectory + 2012-2019, FusionDirectory + 2013-2018, FusionDirectory 2014-2016, FusionDirectory + 2014-2018, FusionDirectory 2015-2016, FusionDirectory - 2015-2017, FusionDirectory - 2016, FusionDirectory - 2016-2017, FusionDirectory - 2017, FusionDirectory + 2015-2018, FusionDirectory + 2016-2018, FusionDirectory 2017-2018, FusionDirectory 2018, FusionDirectory 2003, Cajus Pollmeier 2003-2010, Cajus Pollmeier - 2011-2015, FusionDirectory 2011-2016, FusionDirectory 2011-2018, FusionDirectory - 2012-2016, FusionDirectory 2007, Fabian Hickert - 2011-2016, FusionDirectory + 2011-2018, FusionDirectory 2005-2009, Cajus Pollmeier 2005-2009, Thomas Lange 2001-2003, PGP Corporation 2014-2015, Dhatim 2014-2016, FusionDirectory + 2011-2019, FusionDirectory 2010, Antoine Gallavardin 2010-2012, Antoine Gallavardin - 2011-2016, FusionDirectory - 2012-2016, FusionDirectory - 2012-2017, FusionDirectory - 2013-2016, FusionDirectory + 2011-2018, FusionDirectory + 2012-2019, FusionDirectory 2010, Antoine Gallavardin 2010-2012, Antoine Gallavardin - 2011-2016, FusionDirectory - 2012-2016, FusionDirectory - 2013-2016, FusionDirectory - 2011, Alejandro Escanero Blanco (aescanero@gmail.com) - 2011-2016, FusionDirectory + 2011-2018, FusionDirectory + 2012-2018, FusionDirectory + 2013-2018, FusionDirectory + 2011, Alejandro Escanero Blanco + 2011-2018, FusionDirectory 2003-2009, GONICUS GmbH - 2011-2016, FusionDirectory + 2011-2018, FusionDirectory 2012, WILLIAME Jeremy FusionDirectory Project 2014, Uri Herrera @@ -786,33 +784,34 @@ copyright: | Jakub Steiner *No copyright* 2007, Sergio Vaccaro - 2012-2016, FusionDirectory + 2012-2018, FusionDirectory 2013-2018, FusionDirectory 2006, Steve Moitozo - 1998, Eric Kilfoil - 2003, Alejandro Escanero Blanco + 1998, Eric Kilfoil + 2003, Alejandro Escanero Blanco 2003-2010, Cajus Pollmeier - 2011-2016, FusionDirectory + 2011-2018, FusionDirectory 2009-2010, Bas Tichelaar - 2013-2016, FusionDirectory + 2013-2018, FusionDirectory 2005, Benoit Mortier - 2011-2016, FusionDirectory + 2011-2018, FusionDirectory 2005, Guillame Delecourt 2006, Benoit Mortier 2006, Vincent Seynhaeve - 2011-2016, FusionDirectory + 2011-2018, FusionDirectory 2014-2015, Dhatim - 2014-2016, FusionDirectory project + 2014-2018, FusionDirectory project 2007, Fabian Hicker - 2011-2016, FusionDirectory + 2011-2018, FusionDirectory 2003, Wouter Verhelst - 2012-2016, FusionDirectory + 2012-2018, FusionDirectory 2004, - 2006, Roland Gruber - 2013-2016, FusionDirectory Project - 2015-2016, OpenSides + 2013-2018, FusionDirectory Project + 2015-2018, OpenSides 2001, Dan Ellis 2001, Dan Ellis 2004, Knallgrau New Medias Solutions GmbH, Vienna - Austria 2007, Mathieu Jondet + 2015, Terrill Dent, http://terrill.ca 2010, Benoit Mortier 2014, Mike Gabriel diff --git a/tests/packagedcode/data/debian/copyright/debian-slim-2021-04-07/usr/share/doc/libp11-kit0/copyright-detailed.expected.yml b/tests/packagedcode/data/debian/copyright/debian-slim-2021-04-07/usr/share/doc/libp11-kit0/copyright-detailed.expected.yml index b7ed717baba..488bb77f8b6 100644 --- a/tests/packagedcode/data/debian/copyright/debian-slim-2021-04-07/usr/share/doc/libp11-kit0/copyright-detailed.expected.yml +++ b/tests/packagedcode/data/debian/copyright/debian-slim-2021-04-07/usr/share/doc/libp11-kit0/copyright-detailed.expected.yml @@ -17,11 +17,11 @@ declared_license_expression: bsd-new declared_license_expression_spdx: BSD-3-Clause other_license_expression: bsd-new AND fsf-unlimited-no-warranty AND bsd-new AND bsd-new AND mit AND isc AND (isc AND ibm-dhcp) AND bsd-new AND bsd-new AND bsd-new AND bsd-new AND bsd-new - AND bsd-new AND bsd-new AND free-unknown + AND bsd-new AND bsd-new AND other-permissive other_license_expression_spdx: BSD-3-Clause AND LicenseRef-scancode-fsf-unlimited-no-warranty AND BSD-3-Clause AND BSD-3-Clause AND MIT AND ISC AND (ISC AND LicenseRef-scancode-ibm-dhcp) AND BSD-3-Clause AND BSD-3-Clause AND BSD-3-Clause AND BSD-3-Clause AND BSD-3-Clause AND BSD-3-Clause - AND BSD-3-Clause AND LicenseRef-scancode-free-unknown + AND BSD-3-Clause AND LicenseRef-scancode-other-permissive license_detections: [] other_license_detections: - license_expression: fsf-unlimited-no-warranty @@ -215,43 +215,43 @@ other_license_detections: scancode_data_url: https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/ibm-dhcp.yml spdx_license_key: LicenseRef-scancode-ibm-dhcp spdx_url: https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/ibm-dhcp.LICENSE - - license_expression: free-unknown + - license_expression: other-permissive detection_rules: [] matches: - - score: '76.15' + - score: '28.95' start_line: 160 end_line: 161 matched_length: 11 - match_coverage: '100.0' + match_coverage: '28.95' matcher: 3-seq - license_expression: free-unknown - rule_identifier: free-unknown_79.RULE + license_expression: other-permissive + rule_identifier: other-permissive_91.RULE referenced_filenames: [] is_license_text: no is_license_notice: yes is_license_reference: no is_license_tag: no is_license_intro: no - rule_length: 11 - rule_relevance: 90 + rule_length: 38 + rule_relevance: 100 matched_text: | This file is distributed under the same license as the p11-kit package. licenses: - - key: free-unknown - name: Free unknown license detected but not recognized - short_name: Free unknown - category: Unstated License + - key: other-permissive + name: Other Permissive Licenses + short_name: Other Permissive Licenses + category: Permissive is_exception: no - is_unknown: yes - owner: Unspecified + is_unknown: no + owner: nexB homepage_url: text_url: - reference_url: https://scancode-licensedb.aboutcode.org/free-unknown - scancode_text_url: https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/free-unknown.LICENSE - scancode_data_url: https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/free-unknown.yml - spdx_license_key: LicenseRef-scancode-free-unknown - spdx_url: https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/free-unknown.LICENSE + reference_url: https://scancode-licensedb.aboutcode.org/other-permissive + scancode_text_url: https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/other-permissive.LICENSE + scancode_data_url: https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/other-permissive.yml + spdx_license_key: LicenseRef-scancode-other-permissive + spdx_url: https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/other-permissive.LICENSE - license_expression: bsd-new detection_rules: - not-combined diff --git a/tests/packagedcode/data/license_detection/reference-to-package/base-example/PKG-INFO b/tests/packagedcode/data/license_detection/reference-to-package/base-example/PKG-INFO new file mode 100644 index 00000000000..ec3a214db62 --- /dev/null +++ b/tests/packagedcode/data/license_detection/reference-to-package/base-example/PKG-INFO @@ -0,0 +1,23 @@ +Metadata-Version: 1.0 +Name: Django +Version: 1.2.5 +Summary: A high-level Python Web framework that encourages rapid development and clean, pragmatic design. +Home-page: http://www.djangoproject.com/ +Author: Django Software Foundation +Author-email: foundation@djangoproject.com +License: UNKNOWN +Download-URL: http://media.djangoproject.com/releases/1.2/Django-1.2.5.tar.gz +Description: UNKNOWN +Platform: UNKNOWN +Classifier: Development Status :: 5 - Production/Stable +Classifier: Environment :: Web Environment +Classifier: Framework :: Django +Classifier: Intended Audience :: Developers +Classifier: License :: OSI Approved :: BSD License +Classifier: Operating System :: OS Independent +Classifier: Programming Language :: Python +Classifier: Topic :: Internet :: WWW/HTTP +Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content +Classifier: Topic :: Internet :: WWW/HTTP :: WSGI +Classifier: Topic :: Software Development :: Libraries :: Application Frameworks +Classifier: Topic :: Software Development :: Libraries :: Python Modules diff --git a/tests/packagedcode/data/license_detection/reference-to-package/base-example/django.po b/tests/packagedcode/data/license_detection/reference-to-package/base-example/django.po new file mode 100644 index 00000000000..2dd2428a813 --- /dev/null +++ b/tests/packagedcode/data/license_detection/reference-to-package/base-example/django.po @@ -0,0 +1,5002 @@ +# This file is distributed under the same license as the package. +# +msgid "" +msgstr "" +"Project-Id-Version: Django\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2010-05-13 15:35+0200\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: conf/global_settings.py:44 +msgid "Arabic" +msgstr "" + +#: conf/global_settings.py:45 +msgid "Bulgarian" +msgstr "" + +#: conf/global_settings.py:46 +msgid "Bengali" +msgstr "" + +#: conf/global_settings.py:47 +msgid "Bosnian" +msgstr "" + +#: conf/global_settings.py:48 +msgid "Catalan" +msgstr "" + +#: conf/global_settings.py:49 +msgid "Czech" +msgstr "" + +#: conf/global_settings.py:50 +msgid "Welsh" +msgstr "" + +#: conf/global_settings.py:51 +msgid "Danish" +msgstr "" + +#: conf/global_settings.py:52 +msgid "German" +msgstr "" + +#: conf/global_settings.py:53 +msgid "Greek" +msgstr "" + +#: conf/global_settings.py:54 +msgid "English" +msgstr "" + +#: conf/global_settings.py:55 +msgid "British English" +msgstr "" + +#: conf/global_settings.py:56 +msgid "Spanish" +msgstr "" + +#: conf/global_settings.py:57 +msgid "Argentinean Spanish" +msgstr "" + +#: conf/global_settings.py:58 +msgid "Estonian" +msgstr "" + +#: conf/global_settings.py:59 +msgid "Basque" +msgstr "" + +#: conf/global_settings.py:60 +msgid "Persian" +msgstr "" + +#: conf/global_settings.py:61 +msgid "Finnish" +msgstr "" + +#: conf/global_settings.py:62 +msgid "French" +msgstr "" + +#: conf/global_settings.py:63 +msgid "Frisian" +msgstr "" + +#: conf/global_settings.py:64 +msgid "Irish" +msgstr "" + +#: conf/global_settings.py:65 +msgid "Galician" +msgstr "" + +#: conf/global_settings.py:66 +msgid "Hebrew" +msgstr "" + +#: conf/global_settings.py:67 +msgid "Hindi" +msgstr "" + +#: conf/global_settings.py:68 +msgid "Croatian" +msgstr "" + +#: conf/global_settings.py:69 +msgid "Hungarian" +msgstr "" + +#: conf/global_settings.py:70 +msgid "Indonesian" +msgstr "" + +#: conf/global_settings.py:71 +msgid "Icelandic" +msgstr "" + +#: conf/global_settings.py:72 +msgid "Italian" +msgstr "" + +#: conf/global_settings.py:73 +msgid "Japanese" +msgstr "" + +#: conf/global_settings.py:74 +msgid "Georgian" +msgstr "" + +#: conf/global_settings.py:75 +msgid "Khmer" +msgstr "" + +#: conf/global_settings.py:76 +msgid "Kannada" +msgstr "" + +#: conf/global_settings.py:77 +msgid "Korean" +msgstr "" + +#: conf/global_settings.py:78 +msgid "Lithuanian" +msgstr "" + +#: conf/global_settings.py:79 +msgid "Latvian" +msgstr "" + +#: conf/global_settings.py:80 +msgid "Macedonian" +msgstr "" + +#: conf/global_settings.py:81 +msgid "Mongolian" +msgstr "" + +#: conf/global_settings.py:82 +msgid "Dutch" +msgstr "" + +#: conf/global_settings.py:83 +msgid "Norwegian" +msgstr "" + +#: conf/global_settings.py:84 +msgid "Norwegian Bokmal" +msgstr "" + +#: conf/global_settings.py:85 +msgid "Norwegian Nynorsk" +msgstr "" + +#: conf/global_settings.py:86 +msgid "Polish" +msgstr "" + +#: conf/global_settings.py:87 +msgid "Portuguese" +msgstr "" + +#: conf/global_settings.py:88 +msgid "Brazilian Portuguese" +msgstr "" + +#: conf/global_settings.py:89 +msgid "Romanian" +msgstr "" + +#: conf/global_settings.py:90 +msgid "Russian" +msgstr "" + +#: conf/global_settings.py:91 +msgid "Slovak" +msgstr "" + +#: conf/global_settings.py:92 +msgid "Slovenian" +msgstr "" + +#: conf/global_settings.py:93 +msgid "Albanian" +msgstr "" + +#: conf/global_settings.py:94 +msgid "Serbian" +msgstr "" + +#: conf/global_settings.py:95 +msgid "Serbian Latin" +msgstr "" + +#: conf/global_settings.py:96 +msgid "Swedish" +msgstr "" + +#: conf/global_settings.py:97 +msgid "Tamil" +msgstr "" + +#: conf/global_settings.py:98 +msgid "Telugu" +msgstr "" + +#: conf/global_settings.py:99 +msgid "Thai" +msgstr "" + +#: conf/global_settings.py:100 +msgid "Turkish" +msgstr "" + +#: conf/global_settings.py:101 +msgid "Ukrainian" +msgstr "" + +#: conf/global_settings.py:102 +msgid "Vietnamese" +msgstr "" + +#: conf/global_settings.py:103 +msgid "Simplified Chinese" +msgstr "" + +#: conf/global_settings.py:104 +msgid "Traditional Chinese" +msgstr "" + +#: contrib/admin/actions.py:48 +#, python-format +msgid "Successfully deleted %(count)d %(items)s." +msgstr "" + +#: contrib/admin/actions.py:55 contrib/admin/options.py:1125 +msgid "Are you sure?" +msgstr "" + +#: contrib/admin/actions.py:73 +#, python-format +msgid "Delete selected %(verbose_name_plural)s" +msgstr "" + +#: contrib/admin/filterspecs.py:44 +#, python-format +msgid "" +"

By %s:

\n" +"
    \n" +msgstr "" + +#: contrib/admin/filterspecs.py:75 contrib/admin/filterspecs.py:92 +#: contrib/admin/filterspecs.py:147 contrib/admin/filterspecs.py:173 +msgid "All" +msgstr "" + +#: contrib/admin/filterspecs.py:113 +msgid "Any date" +msgstr "" + +#: contrib/admin/filterspecs.py:114 +msgid "Today" +msgstr "" + +#: contrib/admin/filterspecs.py:117 +msgid "Past 7 days" +msgstr "" + +#: contrib/admin/filterspecs.py:119 +msgid "This month" +msgstr "" + +#: contrib/admin/filterspecs.py:121 +msgid "This year" +msgstr "" + +#: contrib/admin/filterspecs.py:147 forms/widgets.py:469 +msgid "Yes" +msgstr "" + +#: contrib/admin/filterspecs.py:147 forms/widgets.py:469 +msgid "No" +msgstr "" + +#: contrib/admin/filterspecs.py:154 forms/widgets.py:469 +msgid "Unknown" +msgstr "" + +#: contrib/admin/helpers.py:20 +msgid "Action:" +msgstr "" + +#: contrib/admin/models.py:19 +msgid "action time" +msgstr "" + +#: contrib/admin/models.py:22 +msgid "object id" +msgstr "" + +#: contrib/admin/models.py:23 +msgid "object repr" +msgstr "" + +#: contrib/admin/models.py:24 +msgid "action flag" +msgstr "" + +#: contrib/admin/models.py:25 +msgid "change message" +msgstr "" + +#: contrib/admin/models.py:28 +msgid "log entry" +msgstr "" + +#: contrib/admin/models.py:29 +msgid "log entries" +msgstr "" + +#: contrib/admin/options.py:138 contrib/admin/options.py:153 +msgid "None" +msgstr "" + +#: contrib/admin/options.py:559 +#, python-format +msgid "Changed %s." +msgstr "" + +#: contrib/admin/options.py:559 contrib/admin/options.py:569 +#: contrib/comments/templates/comments/preview.html:16 db/models/base.py:845 +#: forms/models.py:568 +msgid "and" +msgstr "" + +#: contrib/admin/options.py:564 +#, python-format +msgid "Added %(name)s \"%(object)s\"." +msgstr "" + +#: contrib/admin/options.py:568 +#, python-format +msgid "Changed %(list)s for %(name)s \"%(object)s\"." +msgstr "" + +#: contrib/admin/options.py:573 +#, python-format +msgid "Deleted %(name)s \"%(object)s\"." +msgstr "" + +#: contrib/admin/options.py:577 +msgid "No fields changed." +msgstr "" + +#: contrib/admin/options.py:643 +#, python-format +msgid "The %(name)s \"%(obj)s\" was added successfully." +msgstr "" + +#: contrib/admin/options.py:647 contrib/admin/options.py:680 +msgid "You may edit it again below." +msgstr "" + +#: contrib/admin/options.py:657 contrib/admin/options.py:690 +#, python-format +msgid "You may add another %s below." +msgstr "" + +#: contrib/admin/options.py:678 +#, python-format +msgid "The %(name)s \"%(obj)s\" was changed successfully." +msgstr "" + +#: contrib/admin/options.py:686 +#, python-format +msgid "" +"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below." +msgstr "" + +#: contrib/admin/options.py:740 contrib/admin/options.py:997 +msgid "" +"Items must be selected in order to perform actions on them. No items have " +"been changed." +msgstr "" + +#: contrib/admin/options.py:759 +msgid "No action selected." +msgstr "" + +#: contrib/admin/options.py:840 +#, python-format +msgid "Add %s" +msgstr "" + +#: contrib/admin/options.py:866 contrib/admin/options.py:1105 +#, python-format +msgid "%(name)s object with primary key %(key)r does not exist." +msgstr "" + +#: contrib/admin/options.py:931 +#, python-format +msgid "Change %s" +msgstr "" + +#: contrib/admin/options.py:977 +msgid "Database error" +msgstr "" + +#: contrib/admin/options.py:1039 +#, python-format +msgid "%(count)s %(name)s was changed successfully." +msgid_plural "%(count)s %(name)s were changed successfully." +msgstr[0] "" +msgstr[1] "" + +#: contrib/admin/options.py:1066 +#, python-format +msgid "%(total_count)s selected" +msgid_plural "All %(total_count)s selected" +msgstr[0] "" +msgstr[1] "" + +#: contrib/admin/options.py:1071 +#, python-format +msgid "0 of %(cnt)s selected" +msgstr "" + +#: contrib/admin/options.py:1118 +#, python-format +msgid "The %(name)s \"%(obj)s\" was deleted successfully." +msgstr "" + +#: contrib/admin/options.py:1155 +#, python-format +msgid "Change history: %s" +msgstr "" + +#: contrib/admin/sites.py:18 contrib/admin/views/decorators.py:14 +#: contrib/auth/forms.py:81 +msgid "" +"Please enter a correct username and password. Note that both fields are case-" +"sensitive." +msgstr "" + +#: contrib/admin/sites.py:307 contrib/admin/views/decorators.py:40 +msgid "Please log in again, because your session has expired." +msgstr "" + +#: contrib/admin/sites.py:314 contrib/admin/views/decorators.py:47 +msgid "" +"Looks like your browser isn't configured to accept cookies. Please enable " +"cookies, reload this page, and try again." +msgstr "" + +#: contrib/admin/sites.py:330 contrib/admin/sites.py:336 +#: contrib/admin/views/decorators.py:66 +msgid "Usernames cannot contain the '@' character." +msgstr "" + +#: contrib/admin/sites.py:333 contrib/admin/views/decorators.py:62 +#, python-format +msgid "Your e-mail address is not your username. Try '%s' instead." +msgstr "" + +#: contrib/admin/sites.py:389 +msgid "Site administration" +msgstr "" + +#: contrib/admin/sites.py:403 contrib/admin/templates/admin/login.html:26 +#: contrib/admin/templates/registration/password_reset_complete.html:14 +#: contrib/admin/views/decorators.py:20 +msgid "Log in" +msgstr "" + +#: contrib/admin/sites.py:448 +#, python-format +msgid "%s administration" +msgstr "" + +#: contrib/admin/widgets.py:75 +msgid "Date:" +msgstr "" + +#: contrib/admin/widgets.py:75 +msgid "Time:" +msgstr "" + +#: contrib/admin/widgets.py:99 +msgid "Currently:" +msgstr "" + +#: contrib/admin/widgets.py:99 +msgid "Change:" +msgstr "" + +#: contrib/admin/widgets.py:129 +msgid "Lookup" +msgstr "" + +#: contrib/admin/widgets.py:244 +msgid "Add Another" +msgstr "" + +#: contrib/admin/templates/admin/404.html:4 +#: contrib/admin/templates/admin/404.html:8 +msgid "Page not found" +msgstr "" + +#: contrib/admin/templates/admin/404.html:10 +msgid "We're sorry, but the requested page could not be found." +msgstr "" + +#: contrib/admin/templates/admin/500.html:4 +#: contrib/admin/templates/admin/app_index.html:8 +#: contrib/admin/templates/admin/base.html:55 +#: contrib/admin/templates/admin/change_form.html:18 +#: contrib/admin/templates/admin/change_list.html:42 +#: contrib/admin/templates/admin/delete_confirmation.html:6 +#: contrib/admin/templates/admin/delete_selected_confirmation.html:6 +#: contrib/admin/templates/admin/invalid_setup.html:4 +#: contrib/admin/templates/admin/object_history.html:6 +#: contrib/admin/templates/admin/auth/user/change_password.html:11 +#: contrib/admin/templates/registration/logged_out.html:4 +#: contrib/admin/templates/registration/password_change_done.html:4 +#: contrib/admin/templates/registration/password_change_form.html:5 +#: contrib/admin/templates/registration/password_reset_complete.html:4 +#: contrib/admin/templates/registration/password_reset_confirm.html:4 +#: contrib/admin/templates/registration/password_reset_done.html:4 +#: contrib/admin/templates/registration/password_reset_form.html:4 +#: contrib/admindocs/templates/admin_doc/bookmarklets.html:3 +msgid "Home" +msgstr "" + +#: contrib/admin/templates/admin/500.html:4 +msgid "Server error" +msgstr "" + +#: contrib/admin/templates/admin/500.html:6 +msgid "Server error (500)" +msgstr "" + +#: contrib/admin/templates/admin/500.html:9 +msgid "Server Error (500)" +msgstr "" + +#: contrib/admin/templates/admin/500.html:10 +msgid "" +"There's been an error. It's been reported to the site administrators via e-" +"mail and should be fixed shortly. Thanks for your patience." +msgstr "" + +#: contrib/admin/templates/admin/actions.html:4 +msgid "Run the selected action" +msgstr "" + +#: contrib/admin/templates/admin/actions.html:4 +msgid "Go" +msgstr "" + +#: contrib/admin/templates/admin/actions.html:11 +msgid "Click here to select the objects across all pages" +msgstr "" + +#: contrib/admin/templates/admin/actions.html:11 +#, python-format +msgid "Select all %(total_count)s %(module_name)s" +msgstr "" + +#: contrib/admin/templates/admin/actions.html:13 +msgid "Clear selection" +msgstr "" + +#: contrib/admin/templates/admin/app_index.html:10 +#: contrib/admin/templates/admin/index.html:19 +#, python-format +msgid "%(name)s" +msgstr "" + +#: contrib/admin/templates/admin/base.html:28 +msgid "Welcome," +msgstr "" + +#: contrib/admin/templates/admin/base.html:33 +#: contrib/admin/templates/registration/password_change_done.html:3 +#: contrib/admin/templates/registration/password_change_form.html:4 +#: contrib/admindocs/templates/admin_doc/bookmarklets.html:3 +msgid "Documentation" +msgstr "" + +#: contrib/admin/templates/admin/base.html:41 +#: contrib/admin/templates/admin/auth/user/change_password.html:15 +#: contrib/admin/templates/admin/auth/user/change_password.html:48 +#: contrib/admin/templates/registration/password_change_done.html:3 +#: contrib/admin/templates/registration/password_change_form.html:4 +msgid "Change password" +msgstr "" + +#: contrib/admin/templates/admin/base.html:48 +#: contrib/admin/templates/registration/password_change_done.html:3 +#: contrib/admin/templates/registration/password_change_form.html:4 +msgid "Log out" +msgstr "" + +#: contrib/admin/templates/admin/base_site.html:4 +msgid "Django site admin" +msgstr "" + +#: contrib/admin/templates/admin/base_site.html:7 +msgid "Django administration" +msgstr "" + +#: contrib/admin/templates/admin/change_form.html:21 +#: contrib/admin/templates/admin/index.html:29 +msgid "Add" +msgstr "" + +#: contrib/admin/templates/admin/change_form.html:28 +#: contrib/admin/templates/admin/object_history.html:10 +msgid "History" +msgstr "" + +#: contrib/admin/templates/admin/change_form.html:29 +#: contrib/admin/templates/admin/edit_inline/stacked.html:9 +#: contrib/admin/templates/admin/edit_inline/tabular.html:28 +msgid "View on site" +msgstr "" + +#: contrib/admin/templates/admin/change_form.html:39 +#: contrib/admin/templates/admin/change_list.html:71 +#: contrib/admin/templates/admin/auth/user/change_password.html:24 +#: contrib/admin/templates/registration/password_change_form.html:15 +msgid "Please correct the error below." +msgid_plural "Please correct the errors below." +msgstr[0] "" +msgstr[1] "" + +#: contrib/admin/templates/admin/change_list.html:63 +#, python-format +msgid "Add %(name)s" +msgstr "" + +#: contrib/admin/templates/admin/change_list.html:82 +msgid "Filter" +msgstr "" + +#: contrib/admin/templates/admin/delete_confirmation.html:10 +#: contrib/admin/templates/admin/submit_line.html:4 forms/formsets.py:302 +msgid "Delete" +msgstr "" + +#: contrib/admin/templates/admin/delete_confirmation.html:16 +#, python-format +msgid "" +"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting " +"related objects, but your account doesn't have permission to delete the " +"following types of objects:" +msgstr "" + +#: contrib/admin/templates/admin/delete_confirmation.html:23 +#, python-format +msgid "" +"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? " +"All of the following related items will be deleted:" +msgstr "" + +#: contrib/admin/templates/admin/delete_confirmation.html:28 +#: contrib/admin/templates/admin/delete_selected_confirmation.html:33 +msgid "Yes, I'm sure" +msgstr "" + +#: contrib/admin/templates/admin/delete_selected_confirmation.html:9 +msgid "Delete multiple objects" +msgstr "" + +#: contrib/admin/templates/admin/delete_selected_confirmation.html:15 +#, python-format +msgid "" +"Deleting the %(object_name)s would result in deleting related objects, but " +"your account doesn't have permission to delete the following types of " +"objects:" +msgstr "" + +#: contrib/admin/templates/admin/delete_selected_confirmation.html:22 +#, python-format +msgid "" +"Are you sure you want to delete the selected %(object_name)s objects? All of " +"the following objects and their related items will be deleted:" +msgstr "" + +#: contrib/admin/templates/admin/filter.html:2 +#, python-format +msgid " By %(filter_title)s " +msgstr "" + +#: contrib/admin/templates/admin/index.html:18 +#, python-format +msgid "Models available in the %(name)s application." +msgstr "" + +#: contrib/admin/templates/admin/index.html:35 +msgid "Change" +msgstr "" + +#: contrib/admin/templates/admin/index.html:45 +msgid "You don't have permission to edit anything." +msgstr "" + +#: contrib/admin/templates/admin/index.html:53 +msgid "Recent Actions" +msgstr "" + +#: contrib/admin/templates/admin/index.html:54 +msgid "My Actions" +msgstr "" + +#: contrib/admin/templates/admin/index.html:58 +msgid "None available" +msgstr "" + +#: contrib/admin/templates/admin/index.html:72 +msgid "Unknown content" +msgstr "" + +#: contrib/admin/templates/admin/invalid_setup.html:7 +msgid "" +"Something's wrong with your database installation. Make sure the appropriate " +"database tables have been created, and make sure the database is readable by " +"the appropriate user." +msgstr "" + +#: contrib/admin/templates/admin/login.html:19 +msgid "Username:" +msgstr "" + +#: contrib/admin/templates/admin/login.html:22 +msgid "Password:" +msgstr "" + +#: contrib/admin/templates/admin/object_history.html:22 +msgid "Date/time" +msgstr "" + +#: contrib/admin/templates/admin/object_history.html:23 +msgid "User" +msgstr "" + +#: contrib/admin/templates/admin/object_history.html:24 +msgid "Action" +msgstr "" + +#: contrib/admin/templates/admin/object_history.html:38 +msgid "" +"This object doesn't have a change history. It probably wasn't added via this " +"admin site." +msgstr "" + +#: contrib/admin/templates/admin/pagination.html:10 +msgid "Show all" +msgstr "" + +#: contrib/admin/templates/admin/pagination.html:11 +#: contrib/admin/templates/admin/submit_line.html:3 +msgid "Save" +msgstr "" + +#: contrib/admin/templates/admin/search_form.html:8 +msgid "Search" +msgstr "" + +#: contrib/admin/templates/admin/search_form.html:10 +#, python-format +msgid "1 result" +msgid_plural "%(counter)s results" +msgstr[0] "" +msgstr[1] "" + +#: contrib/admin/templates/admin/search_form.html:10 +#, python-format +msgid "%(full_result_count)s total" +msgstr "" + +#: contrib/admin/templates/admin/submit_line.html:5 +msgid "Save as new" +msgstr "" + +#: contrib/admin/templates/admin/submit_line.html:6 +msgid "Save and add another" +msgstr "" + +#: contrib/admin/templates/admin/submit_line.html:7 +msgid "Save and continue editing" +msgstr "" + +#: contrib/admin/templates/admin/auth/user/add_form.html:5 +msgid "" +"First, enter a username and password. Then, you'll be able to edit more user " +"options." +msgstr "" + +#: contrib/admin/templates/admin/auth/user/change_password.html:28 +#, python-format +msgid "Enter a new password for the user %(username)s." +msgstr "" + +#: contrib/admin/templates/admin/auth/user/change_password.html:35 +#: contrib/auth/forms.py:17 contrib/auth/forms.py:61 contrib/auth/forms.py:186 +msgid "Password" +msgstr "" + +#: contrib/admin/templates/admin/auth/user/change_password.html:41 +#: contrib/admin/templates/registration/password_change_form.html:37 +#: contrib/auth/forms.py:187 +msgid "Password (again)" +msgstr "" + +#: contrib/admin/templates/admin/auth/user/change_password.html:42 +#: contrib/auth/forms.py:19 +msgid "Enter the same password as above, for verification." +msgstr "" + +#: contrib/admin/templates/admin/edit_inline/stacked.html:64 +#: contrib/admin/templates/admin/edit_inline/tabular.html:110 +#, python-format +msgid "Add another %(verbose_name)s" +msgstr "" + +#: contrib/admin/templates/admin/edit_inline/stacked.html:67 +#: contrib/admin/templates/admin/edit_inline/tabular.html:113 +#: contrib/comments/templates/comments/delete.html:12 +msgid "Remove" +msgstr "" + +#: contrib/admin/templates/admin/edit_inline/tabular.html:15 +msgid "Delete?" +msgstr "" + +#: contrib/admin/templates/registration/logged_out.html:8 +msgid "Thanks for spending some quality time with the Web site today." +msgstr "" + +#: contrib/admin/templates/registration/logged_out.html:10 +msgid "Log in again" +msgstr "" + +#: contrib/admin/templates/registration/password_change_done.html:4 +#: contrib/admin/templates/registration/password_change_form.html:5 +#: contrib/admin/templates/registration/password_change_form.html:7 +#: contrib/admin/templates/registration/password_change_form.html:19 +msgid "Password change" +msgstr "" + +#: contrib/admin/templates/registration/password_change_done.html:6 +#: contrib/admin/templates/registration/password_change_done.html:10 +msgid "Password change successful" +msgstr "" + +#: contrib/admin/templates/registration/password_change_done.html:12 +msgid "Your password was changed." +msgstr "" + +#: contrib/admin/templates/registration/password_change_form.html:21 +msgid "" +"Please enter your old password, for security's sake, and then enter your new " +"password twice so we can verify you typed it in correctly." +msgstr "" + +#: contrib/admin/templates/registration/password_change_form.html:27 +#: contrib/auth/forms.py:170 +msgid "Old password" +msgstr "" + +#: contrib/admin/templates/registration/password_change_form.html:32 +#: contrib/auth/forms.py:144 +msgid "New password" +msgstr "" + +#: contrib/admin/templates/registration/password_change_form.html:43 +#: contrib/admin/templates/registration/password_reset_confirm.html:21 +msgid "Change my password" +msgstr "" + +#: contrib/admin/templates/registration/password_reset_complete.html:4 +#: contrib/admin/templates/registration/password_reset_confirm.html:6 +#: contrib/admin/templates/registration/password_reset_done.html:4 +#: contrib/admin/templates/registration/password_reset_form.html:4 +#: contrib/admin/templates/registration/password_reset_form.html:6 +#: contrib/admin/templates/registration/password_reset_form.html:10 +msgid "Password reset" +msgstr "" + +#: contrib/admin/templates/registration/password_reset_complete.html:6 +#: contrib/admin/templates/registration/password_reset_complete.html:10 +msgid "Password reset complete" +msgstr "" + +#: contrib/admin/templates/registration/password_reset_complete.html:12 +msgid "Your password has been set. You may go ahead and log in now." +msgstr "" + +#: contrib/admin/templates/registration/password_reset_confirm.html:4 +msgid "Password reset confirmation" +msgstr "" + +#: contrib/admin/templates/registration/password_reset_confirm.html:12 +msgid "Enter new password" +msgstr "" + +#: contrib/admin/templates/registration/password_reset_confirm.html:14 +msgid "" +"Please enter your new password twice so we can verify you typed it in " +"correctly." +msgstr "" + +#: contrib/admin/templates/registration/password_reset_confirm.html:18 +msgid "New password:" +msgstr "" + +#: contrib/admin/templates/registration/password_reset_confirm.html:20 +msgid "Confirm password:" +msgstr "" + +#: contrib/admin/templates/registration/password_reset_confirm.html:26 +msgid "Password reset unsuccessful" +msgstr "" + +#: contrib/admin/templates/registration/password_reset_confirm.html:28 +msgid "" +"The password reset link was invalid, possibly because it has already been " +"used. Please request a new password reset." +msgstr "" + +#: contrib/admin/templates/registration/password_reset_done.html:6 +#: contrib/admin/templates/registration/password_reset_done.html:10 +msgid "Password reset successful" +msgstr "" + +#: contrib/admin/templates/registration/password_reset_done.html:12 +msgid "" +"We've e-mailed you instructions for setting your password to the e-mail " +"address you submitted. You should be receiving it shortly." +msgstr "" + +#: contrib/admin/templates/registration/password_reset_email.html:2 +msgid "You're receiving this e-mail because you requested a password reset" +msgstr "" + +#: contrib/admin/templates/registration/password_reset_email.html:3 +#, python-format +msgid "for your user account at %(site_name)s" +msgstr "" + +#: contrib/admin/templates/registration/password_reset_email.html:5 +msgid "Please go to the following page and choose a new password:" +msgstr "" + +#: contrib/admin/templates/registration/password_reset_email.html:9 +msgid "Your username, in case you've forgotten:" +msgstr "" + +#: contrib/admin/templates/registration/password_reset_email.html:11 +msgid "Thanks for using our site!" +msgstr "" + +#: contrib/admin/templates/registration/password_reset_email.html:13 +#, python-format +msgid "The %(site_name)s team" +msgstr "" + +#: contrib/admin/templates/registration/password_reset_form.html:12 +msgid "" +"Forgotten your password? Enter your e-mail address below, and we'll e-mail " +"instructions for setting a new one." +msgstr "" + +#: contrib/admin/templates/registration/password_reset_form.html:16 +msgid "E-mail address:" +msgstr "" + +#: contrib/admin/templates/registration/password_reset_form.html:16 +msgid "Reset my password" +msgstr "" + +#: contrib/admin/templatetags/admin_list.py:257 +msgid "All dates" +msgstr "" + +#: contrib/admin/views/main.py:65 +#, python-format +msgid "Select %s" +msgstr "" + +#: contrib/admin/views/main.py:65 +#, python-format +msgid "Select %s to change" +msgstr "" + +#: contrib/admin/views/template.py:38 contrib/sites/models.py:38 +msgid "site" +msgstr "" + +#: contrib/admin/views/template.py:40 +msgid "template" +msgstr "" + +#: contrib/admindocs/views.py:61 contrib/admindocs/views.py:63 +#: contrib/admindocs/views.py:65 +msgid "tag:" +msgstr "" + +#: contrib/admindocs/views.py:94 contrib/admindocs/views.py:96 +#: contrib/admindocs/views.py:98 +msgid "filter:" +msgstr "" + +#: contrib/admindocs/views.py:158 contrib/admindocs/views.py:160 +#: contrib/admindocs/views.py:162 +msgid "view:" +msgstr "" + +#: contrib/admindocs/views.py:190 +#, python-format +msgid "App %r not found" +msgstr "" + +#: contrib/admindocs/views.py:197 +#, python-format +msgid "Model %(model_name)r not found in app %(app_label)r" +msgstr "" + +#: contrib/admindocs/views.py:209 +#, python-format +msgid "the related `%(app_label)s.%(data_type)s` object" +msgstr "" + +#: contrib/admindocs/views.py:209 contrib/admindocs/views.py:228 +#: contrib/admindocs/views.py:233 contrib/admindocs/views.py:247 +#: contrib/admindocs/views.py:261 contrib/admindocs/views.py:266 +msgid "model:" +msgstr "" + +#: contrib/admindocs/views.py:224 contrib/admindocs/views.py:256 +#, python-format +msgid "related `%(app_label)s.%(object_name)s` objects" +msgstr "" + +#: contrib/admindocs/views.py:228 contrib/admindocs/views.py:261 +#, python-format +msgid "all %s" +msgstr "" + +#: contrib/admindocs/views.py:233 contrib/admindocs/views.py:266 +#, python-format +msgid "number of %s" +msgstr "" + +#: contrib/admindocs/views.py:271 +#, python-format +msgid "Fields on %s objects" +msgstr "" + +#: contrib/admindocs/views.py:361 +#, python-format +msgid "%s does not appear to be a urlpattern object" +msgstr "" + +#: contrib/admindocs/templates/admin_doc/bookmarklets.html:3 +msgid "Bookmarklets" +msgstr "" + +#: contrib/admindocs/templates/admin_doc/bookmarklets.html:4 +msgid "Documentation bookmarklets" +msgstr "" + +#: contrib/admindocs/templates/admin_doc/bookmarklets.html:8 +msgid "" +"\n" +"

    To install bookmarklets, drag the link to your bookmarks\n" +"toolbar, or right-click the link and add it to your bookmarks. Now you can\n" +"select the bookmarklet from any page in the site. Note that some of these\n" +"bookmarklets require you to be viewing the site from a computer designated\n" +"as \"internal\" (talk to your system administrator if you aren't sure if\n" +"your computer is \"internal\").

    \n" +msgstr "" + +#: contrib/admindocs/templates/admin_doc/bookmarklets.html:18 +msgid "Documentation for this page" +msgstr "" + +#: contrib/admindocs/templates/admin_doc/bookmarklets.html:19 +msgid "" +"Jumps you from any page to the documentation for the view that generates " +"that page." +msgstr "" + +#: contrib/admindocs/templates/admin_doc/bookmarklets.html:21 +msgid "Show object ID" +msgstr "" + +#: contrib/admindocs/templates/admin_doc/bookmarklets.html:22 +msgid "" +"Shows the content-type and unique ID for pages that represent a single " +"object." +msgstr "" + +#: contrib/admindocs/templates/admin_doc/bookmarklets.html:24 +msgid "Edit this object (current window)" +msgstr "" + +#: contrib/admindocs/templates/admin_doc/bookmarklets.html:25 +msgid "Jumps to the admin page for pages that represent a single object." +msgstr "" + +#: contrib/admindocs/templates/admin_doc/bookmarklets.html:27 +msgid "Edit this object (new window)" +msgstr "" + +#: contrib/admindocs/templates/admin_doc/bookmarklets.html:28 +msgid "As above, but opens the admin page in a new window." +msgstr "" + +#: contrib/auth/admin.py:29 +msgid "Personal info" +msgstr "" + +#: contrib/auth/admin.py:30 +msgid "Permissions" +msgstr "" + +#: contrib/auth/admin.py:31 +msgid "Important dates" +msgstr "" + +#: contrib/auth/admin.py:32 +msgid "Groups" +msgstr "" + +#: contrib/auth/admin.py:114 +msgid "Password changed successfully." +msgstr "" + +#: contrib/auth/admin.py:124 +#, python-format +msgid "Change password: %s" +msgstr "" + +#: contrib/auth/forms.py:14 contrib/auth/forms.py:48 contrib/auth/forms.py:60 +msgid "Username" +msgstr "" + +#: contrib/auth/forms.py:15 contrib/auth/forms.py:49 +msgid "Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only." +msgstr "" + +#: contrib/auth/forms.py:16 contrib/auth/forms.py:50 +msgid "This value may contain only letters, numbers and @/./+/-/_ characters." +msgstr "" + +#: contrib/auth/forms.py:18 +msgid "Password confirmation" +msgstr "" + +#: contrib/auth/forms.py:31 +msgid "A user with that username already exists." +msgstr "" + +#: contrib/auth/forms.py:37 contrib/auth/forms.py:156 +#: contrib/auth/forms.py:198 +msgid "The two password fields didn't match." +msgstr "" + +#: contrib/auth/forms.py:83 +msgid "This account is inactive." +msgstr "" + +#: contrib/auth/forms.py:88 +msgid "" +"Your Web browser doesn't appear to have cookies enabled. Cookies are " +"required for logging in." +msgstr "" + +#: contrib/auth/forms.py:101 +msgid "E-mail" +msgstr "" + +#: contrib/auth/forms.py:110 +msgid "" +"That e-mail address doesn't have an associated user account. Are you sure " +"you've registered?" +msgstr "" + +#: contrib/auth/forms.py:136 +#, python-format +msgid "Password reset on %s" +msgstr "" + +#: contrib/auth/forms.py:145 +msgid "New password confirmation" +msgstr "" + +#: contrib/auth/forms.py:178 +msgid "Your old password was entered incorrectly. Please enter it again." +msgstr "" + +#: contrib/auth/models.py:66 contrib/auth/models.py:94 +msgid "name" +msgstr "" + +#: contrib/auth/models.py:68 +msgid "codename" +msgstr "" + +#: contrib/auth/models.py:72 +msgid "permission" +msgstr "" + +#: contrib/auth/models.py:73 contrib/auth/models.py:95 +msgid "permissions" +msgstr "" + +#: contrib/auth/models.py:98 +msgid "group" +msgstr "" + +#: contrib/auth/models.py:99 contrib/auth/models.py:206 +msgid "groups" +msgstr "" + +#: contrib/auth/models.py:196 +msgid "username" +msgstr "" + +#: contrib/auth/models.py:196 +msgid "" +"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters" +msgstr "" + +#: contrib/auth/models.py:197 +msgid "first name" +msgstr "" + +#: contrib/auth/models.py:198 +msgid "last name" +msgstr "" + +#: contrib/auth/models.py:199 +msgid "e-mail address" +msgstr "" + +#: contrib/auth/models.py:200 +msgid "password" +msgstr "" + +#: contrib/auth/models.py:200 +msgid "" +"Use '[algo]$[salt]$[hexdigest]' or use the change " +"password form." +msgstr "" + +#: contrib/auth/models.py:201 +msgid "staff status" +msgstr "" + +#: contrib/auth/models.py:201 +msgid "Designates whether the user can log into this admin site." +msgstr "" + +#: contrib/auth/models.py:202 +msgid "active" +msgstr "" + +#: contrib/auth/models.py:202 +msgid "" +"Designates whether this user should be treated as active. Unselect this " +"instead of deleting accounts." +msgstr "" + +#: contrib/auth/models.py:203 +msgid "superuser status" +msgstr "" + +#: contrib/auth/models.py:203 +msgid "" +"Designates that this user has all permissions without explicitly assigning " +"them." +msgstr "" + +#: contrib/auth/models.py:204 +msgid "last login" +msgstr "" + +#: contrib/auth/models.py:205 +msgid "date joined" +msgstr "" + +#: contrib/auth/models.py:207 +msgid "" +"In addition to the permissions manually assigned, this user will also get " +"all permissions granted to each group he/she is in." +msgstr "" + +#: contrib/auth/models.py:208 +msgid "user permissions" +msgstr "" + +#: contrib/auth/models.py:212 contrib/comments/models.py:50 +#: contrib/comments/models.py:168 +msgid "user" +msgstr "" + +#: contrib/auth/models.py:213 +msgid "users" +msgstr "" + +#: contrib/auth/models.py:394 +msgid "message" +msgstr "" + +#: contrib/auth/views.py:79 +msgid "Logged out" +msgstr "" + +#: contrib/auth/management/commands/createsuperuser.py:23 +#: core/validators.py:120 forms/fields.py:428 +msgid "Enter a valid e-mail address." +msgstr "" + +#: contrib/comments/admin.py:12 +msgid "Content" +msgstr "" + +#: contrib/comments/admin.py:15 +msgid "Metadata" +msgstr "" + +#: contrib/comments/admin.py:40 +msgid "flagged" +msgid_plural "flagged" +msgstr[0] "" +msgstr[1] "" + +#: contrib/comments/admin.py:41 +msgid "Flag selected comments" +msgstr "" + +#: contrib/comments/admin.py:45 +msgid "approved" +msgid_plural "approved" +msgstr[0] "" +msgstr[1] "" + +#: contrib/comments/admin.py:46 +msgid "Approve selected comments" +msgstr "" + +#: contrib/comments/admin.py:50 +msgid "removed" +msgid_plural "removed" +msgstr[0] "" +msgstr[1] "" + +#: contrib/comments/admin.py:51 +msgid "Remove selected comments" +msgstr "" + +#: contrib/comments/admin.py:63 +#, python-format +msgid "1 comment was successfully %(action)s." +msgid_plural "%(count)s comments were successfully %(action)s." +msgstr[0] "" +msgstr[1] "" + +#: contrib/comments/feeds.py:13 +#, python-format +msgid "%(site_name)s comments" +msgstr "" + +#: contrib/comments/feeds.py:23 +#, python-format +msgid "Latest comments on %(site_name)s" +msgstr "" + +#: contrib/comments/forms.py:93 +msgid "Name" +msgstr "" + +#: contrib/comments/forms.py:94 +msgid "Email address" +msgstr "" + +#: contrib/comments/forms.py:95 contrib/flatpages/admin.py:8 +#: contrib/flatpages/models.py:7 db/models/fields/__init__.py:1101 +msgid "URL" +msgstr "" + +#: contrib/comments/forms.py:96 +msgid "Comment" +msgstr "" + +#: contrib/comments/forms.py:175 +#, python-format +msgid "Watch your mouth! The word %s is not allowed here." +msgid_plural "Watch your mouth! The words %s are not allowed here." +msgstr[0] "" +msgstr[1] "" + +#: contrib/comments/forms.py:182 +msgid "" +"If you enter anything in this field your comment will be treated as spam" +msgstr "" + +#: contrib/comments/models.py:22 contrib/contenttypes/models.py:81 +msgid "content type" +msgstr "" + +#: contrib/comments/models.py:24 +msgid "object ID" +msgstr "" + +#: contrib/comments/models.py:52 +msgid "user's name" +msgstr "" + +#: contrib/comments/models.py:53 +msgid "user's email address" +msgstr "" + +#: contrib/comments/models.py:54 +msgid "user's URL" +msgstr "" + +#: contrib/comments/models.py:56 contrib/comments/models.py:76 +#: contrib/comments/models.py:169 +msgid "comment" +msgstr "" + +#: contrib/comments/models.py:59 +msgid "date/time submitted" +msgstr "" + +#: contrib/comments/models.py:60 db/models/fields/__init__.py:896 +msgid "IP address" +msgstr "" + +#: contrib/comments/models.py:61 +msgid "is public" +msgstr "" + +#: contrib/comments/models.py:62 +msgid "" +"Uncheck this box to make the comment effectively disappear from the site." +msgstr "" + +#: contrib/comments/models.py:64 +msgid "is removed" +msgstr "" + +#: contrib/comments/models.py:65 +msgid "" +"Check this box if the comment is inappropriate. A \"This comment has been " +"removed\" message will be displayed instead." +msgstr "" + +#: contrib/comments/models.py:77 +msgid "comments" +msgstr "" + +#: contrib/comments/models.py:119 +msgid "" +"This comment was posted by an authenticated user and thus the name is read-" +"only." +msgstr "" + +#: contrib/comments/models.py:128 +msgid "" +"This comment was posted by an authenticated user and thus the email is read-" +"only." +msgstr "" + +#: contrib/comments/models.py:153 +#, python-format +msgid "" +"Posted by %(user)s at %(date)s\n" +"\n" +"%(comment)s\n" +"\n" +"http://%(domain)s%(url)s" +msgstr "" + +#: contrib/comments/models.py:170 +msgid "flag" +msgstr "" + +#: contrib/comments/models.py:171 +msgid "date" +msgstr "" + +#: contrib/comments/models.py:181 +msgid "comment flag" +msgstr "" + +#: contrib/comments/models.py:182 +msgid "comment flags" +msgstr "" + +#: contrib/comments/templates/comments/approve.html:4 +msgid "Approve a comment" +msgstr "" + +#: contrib/comments/templates/comments/approve.html:7 +msgid "Really make this comment public?" +msgstr "" + +#: contrib/comments/templates/comments/approve.html:12 +msgid "Approve" +msgstr "" + +#: contrib/comments/templates/comments/approved.html:4 +msgid "Thanks for approving" +msgstr "" + +#: contrib/comments/templates/comments/approved.html:7 +#: contrib/comments/templates/comments/deleted.html:7 +#: contrib/comments/templates/comments/flagged.html:7 +msgid "" +"Thanks for taking the time to improve the quality of discussion on our site" +msgstr "" + +#: contrib/comments/templates/comments/delete.html:4 +msgid "Remove a comment" +msgstr "" + +#: contrib/comments/templates/comments/delete.html:7 +msgid "Really remove this comment?" +msgstr "" + +#: contrib/comments/templates/comments/deleted.html:4 +msgid "Thanks for removing" +msgstr "" + +#: contrib/comments/templates/comments/flag.html:4 +msgid "Flag this comment" +msgstr "" + +#: contrib/comments/templates/comments/flag.html:7 +msgid "Really flag this comment?" +msgstr "" + +#: contrib/comments/templates/comments/flag.html:12 +msgid "Flag" +msgstr "" + +#: contrib/comments/templates/comments/flagged.html:4 +msgid "Thanks for flagging" +msgstr "" + +#: contrib/comments/templates/comments/form.html:17 +#: contrib/comments/templates/comments/preview.html:32 +msgid "Post" +msgstr "" + +#: contrib/comments/templates/comments/form.html:18 +#: contrib/comments/templates/comments/preview.html:33 +msgid "Preview" +msgstr "" + +#: contrib/comments/templates/comments/posted.html:4 +msgid "Thanks for commenting" +msgstr "" + +#: contrib/comments/templates/comments/posted.html:7 +msgid "Thank you for your comment" +msgstr "" + +#: contrib/comments/templates/comments/preview.html:4 +#: contrib/comments/templates/comments/preview.html:13 +msgid "Preview your comment" +msgstr "" + +#: contrib/comments/templates/comments/preview.html:11 +msgid "Please correct the error below" +msgid_plural "Please correct the errors below" +msgstr[0] "" +msgstr[1] "" + +#: contrib/comments/templates/comments/preview.html:16 +msgid "Post your comment" +msgstr "" + +#: contrib/comments/templates/comments/preview.html:16 +msgid "or make changes" +msgstr "" + +#: contrib/contenttypes/models.py:77 +msgid "python model class name" +msgstr "" + +#: contrib/contenttypes/models.py:82 +msgid "content types" +msgstr "" + +#: contrib/flatpages/admin.py:9 +msgid "" +"Example: '/about/contact/'. Make sure to have leading and trailing slashes." +msgstr "" + +#: contrib/flatpages/admin.py:11 +msgid "" +"This value must contain only letters, numbers, underscores, dashes or " +"slashes." +msgstr "" + +#: contrib/flatpages/admin.py:22 +msgid "Advanced options" +msgstr "" + +#: contrib/flatpages/models.py:8 +msgid "title" +msgstr "" + +#: contrib/flatpages/models.py:9 +msgid "content" +msgstr "" + +#: contrib/flatpages/models.py:10 +msgid "enable comments" +msgstr "" + +#: contrib/flatpages/models.py:11 +msgid "template name" +msgstr "" + +#: contrib/flatpages/models.py:12 +msgid "" +"Example: 'flatpages/contact_page.html'. If this isn't provided, the system " +"will use 'flatpages/default.html'." +msgstr "" + +#: contrib/flatpages/models.py:13 +msgid "registration required" +msgstr "" + +#: contrib/flatpages/models.py:13 +msgid "If this is checked, only logged-in users will be able to view the page." +msgstr "" + +#: contrib/flatpages/models.py:18 +msgid "flat page" +msgstr "" + +#: contrib/flatpages/models.py:19 +msgid "flat pages" +msgstr "" + +#: contrib/formtools/wizard.py:140 +msgid "" +"We apologize, but your form has expired. Please continue filling out the " +"form from this page." +msgstr "" + +#: contrib/gis/db/models/fields.py:50 +msgid "The base GIS field -- maps to the OpenGIS Specification Geometry type." +msgstr "" + +#: contrib/gis/db/models/fields.py:270 +msgid "Point" +msgstr "" + +#: contrib/gis/db/models/fields.py:274 +msgid "Line string" +msgstr "" + +#: contrib/gis/db/models/fields.py:278 +msgid "Polygon" +msgstr "" + +#: contrib/gis/db/models/fields.py:282 +msgid "Multi-point" +msgstr "" + +#: contrib/gis/db/models/fields.py:286 +msgid "Multi-line string" +msgstr "" + +#: contrib/gis/db/models/fields.py:290 +msgid "Multi polygon" +msgstr "" + +#: contrib/gis/db/models/fields.py:294 +msgid "Geometry collection" +msgstr "" + +#: contrib/gis/forms/fields.py:17 +msgid "No geometry value provided." +msgstr "" + +#: contrib/gis/forms/fields.py:18 +msgid "Invalid geometry value." +msgstr "" + +#: contrib/gis/forms/fields.py:19 +msgid "Invalid geometry type." +msgstr "" + +#: contrib/gis/forms/fields.py:20 +msgid "" +"An error occurred when transforming the geometry to the SRID of the geometry " +"form field." +msgstr "" + +#: contrib/humanize/templatetags/humanize.py:19 +msgid "th" +msgstr "" + +#: contrib/humanize/templatetags/humanize.py:19 +msgid "st" +msgstr "" + +#: contrib/humanize/templatetags/humanize.py:19 +msgid "nd" +msgstr "" + +#: contrib/humanize/templatetags/humanize.py:19 +msgid "rd" +msgstr "" + +#: contrib/humanize/templatetags/humanize.py:51 +#, python-format +msgid "%(value).1f million" +msgid_plural "%(value).1f million" +msgstr[0] "" +msgstr[1] "" + +#: contrib/humanize/templatetags/humanize.py:54 +#, python-format +msgid "%(value).1f billion" +msgid_plural "%(value).1f billion" +msgstr[0] "" +msgstr[1] "" + +#: contrib/humanize/templatetags/humanize.py:57 +#, python-format +msgid "%(value).1f trillion" +msgid_plural "%(value).1f trillion" +msgstr[0] "" +msgstr[1] "" + +#: contrib/humanize/templatetags/humanize.py:73 +msgid "one" +msgstr "" + +#: contrib/humanize/templatetags/humanize.py:73 +msgid "two" +msgstr "" + +#: contrib/humanize/templatetags/humanize.py:73 +msgid "three" +msgstr "" + +#: contrib/humanize/templatetags/humanize.py:73 +msgid "four" +msgstr "" + +#: contrib/humanize/templatetags/humanize.py:73 +msgid "five" +msgstr "" + +#: contrib/humanize/templatetags/humanize.py:73 +msgid "six" +msgstr "" + +#: contrib/humanize/templatetags/humanize.py:73 +msgid "seven" +msgstr "" + +#: contrib/humanize/templatetags/humanize.py:73 +msgid "eight" +msgstr "" + +#: contrib/humanize/templatetags/humanize.py:73 +msgid "nine" +msgstr "" + +#: contrib/humanize/templatetags/humanize.py:93 +msgid "today" +msgstr "" + +#: contrib/humanize/templatetags/humanize.py:95 +msgid "tomorrow" +msgstr "" + +#: contrib/humanize/templatetags/humanize.py:97 +msgid "yesterday" +msgstr "" + +#: contrib/localflavor/ar/forms.py:28 +msgid "Enter a postal code in the format NNNN or ANNNNAAA." +msgstr "" + +#: contrib/localflavor/ar/forms.py:50 contrib/localflavor/br/forms.py:92 +#: contrib/localflavor/br/forms.py:131 contrib/localflavor/pe/forms.py:24 +#: contrib/localflavor/pe/forms.py:52 +msgid "This field requires only numbers." +msgstr "" + +#: contrib/localflavor/ar/forms.py:51 +msgid "This field requires 7 or 8 digits." +msgstr "" + +#: contrib/localflavor/ar/forms.py:80 +msgid "Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format." +msgstr "" + +#: contrib/localflavor/ar/forms.py:81 +msgid "Invalid CUIT." +msgstr "" + +#: contrib/localflavor/at/at_states.py:5 +msgid "Burgenland" +msgstr "" + +#: contrib/localflavor/at/at_states.py:6 +msgid "Carinthia" +msgstr "" + +#: contrib/localflavor/at/at_states.py:7 +msgid "Lower Austria" +msgstr "" + +#: contrib/localflavor/at/at_states.py:8 +msgid "Upper Austria" +msgstr "" + +#: contrib/localflavor/at/at_states.py:9 +msgid "Salzburg" +msgstr "" + +#: contrib/localflavor/at/at_states.py:10 +msgid "Styria" +msgstr "" + +#: contrib/localflavor/at/at_states.py:11 +msgid "Tyrol" +msgstr "" + +#: contrib/localflavor/at/at_states.py:12 +msgid "Vorarlberg" +msgstr "" + +#: contrib/localflavor/at/at_states.py:13 +msgid "Vienna" +msgstr "" + +#: contrib/localflavor/at/forms.py:20 contrib/localflavor/ch/forms.py:17 +#: contrib/localflavor/no/forms.py:13 +msgid "Enter a zip code in the format XXXX." +msgstr "" + +#: contrib/localflavor/at/forms.py:48 +msgid "Enter a valid Austrian Social Security Number in XXXX XXXXXX format." +msgstr "" + +#: contrib/localflavor/au/forms.py:17 +msgid "Enter a 4 digit post code." +msgstr "" + +#: contrib/localflavor/br/forms.py:17 +msgid "Enter a zip code in the format XXXXX-XXX." +msgstr "" + +#: contrib/localflavor/br/forms.py:26 +msgid "Phone numbers must be in XX-XXXX-XXXX format." +msgstr "" + +#: contrib/localflavor/br/forms.py:54 +msgid "" +"Select a valid brazilian state. That state is not one of the available " +"states." +msgstr "" + +#: contrib/localflavor/br/forms.py:90 +msgid "Invalid CPF number." +msgstr "" + +#: contrib/localflavor/br/forms.py:91 +msgid "This field requires at most 11 digits or 14 characters." +msgstr "" + +#: contrib/localflavor/br/forms.py:130 +msgid "Invalid CNPJ number." +msgstr "" + +#: contrib/localflavor/br/forms.py:132 +msgid "This field requires at least 14 digits" +msgstr "" + +#: contrib/localflavor/ca/forms.py:25 +msgid "Enter a postal code in the format XXX XXX." +msgstr "" + +#: contrib/localflavor/ca/forms.py:96 +msgid "Enter a valid Canadian Social Insurance number in XXX-XXX-XXX format." +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:5 +msgid "Aargau" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:6 +msgid "Appenzell Innerrhoden" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:7 +msgid "Appenzell Ausserrhoden" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:8 +msgid "Basel-Stadt" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:9 +msgid "Basel-Land" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:10 +msgid "Berne" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:11 +msgid "Fribourg" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:12 +msgid "Geneva" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:13 +msgid "Glarus" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:14 +msgid "Graubuenden" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:15 +msgid "Jura" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:16 +msgid "Lucerne" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:17 +msgid "Neuchatel" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:18 +msgid "Nidwalden" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:19 +msgid "Obwalden" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:20 +msgid "Schaffhausen" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:21 +msgid "Schwyz" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:22 +msgid "Solothurn" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:23 +msgid "St. Gallen" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:24 +msgid "Thurgau" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:25 +msgid "Ticino" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:26 +msgid "Uri" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:27 +msgid "Valais" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:28 +msgid "Vaud" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:29 +msgid "Zug" +msgstr "" + +#: contrib/localflavor/ch/ch_states.py:30 +msgid "Zurich" +msgstr "" + +#: contrib/localflavor/ch/forms.py:65 +msgid "" +"Enter a valid Swiss identity or passport card number in X1234567<0 or " +"1234567890 format." +msgstr "" + +#: contrib/localflavor/cl/forms.py:30 +msgid "Enter a valid Chilean RUT." +msgstr "" + +#: contrib/localflavor/cl/forms.py:31 +msgid "Enter a valid Chilean RUT. The format is XX.XXX.XXX-X." +msgstr "" + +#: contrib/localflavor/cl/forms.py:32 +msgid "The Chilean RUT is not valid." +msgstr "" + +#: contrib/localflavor/cz/cz_regions.py:8 +msgid "Prague" +msgstr "" + +#: contrib/localflavor/cz/cz_regions.py:9 +msgid "Central Bohemian Region" +msgstr "" + +#: contrib/localflavor/cz/cz_regions.py:10 +msgid "South Bohemian Region" +msgstr "" + +#: contrib/localflavor/cz/cz_regions.py:11 +msgid "Pilsen Region" +msgstr "" + +#: contrib/localflavor/cz/cz_regions.py:12 +msgid "Carlsbad Region" +msgstr "" + +#: contrib/localflavor/cz/cz_regions.py:13 +msgid "Usti Region" +msgstr "" + +#: contrib/localflavor/cz/cz_regions.py:14 +msgid "Liberec Region" +msgstr "" + +#: contrib/localflavor/cz/cz_regions.py:15 +msgid "Hradec Region" +msgstr "" + +#: contrib/localflavor/cz/cz_regions.py:16 +msgid "Pardubice Region" +msgstr "" + +#: contrib/localflavor/cz/cz_regions.py:17 +msgid "Vysocina Region" +msgstr "" + +#: contrib/localflavor/cz/cz_regions.py:18 +msgid "South Moravian Region" +msgstr "" + +#: contrib/localflavor/cz/cz_regions.py:19 +msgid "Olomouc Region" +msgstr "" + +#: contrib/localflavor/cz/cz_regions.py:20 +msgid "Zlin Region" +msgstr "" + +#: contrib/localflavor/cz/cz_regions.py:21 +msgid "Moravian-Silesian Region" +msgstr "" + +#: contrib/localflavor/cz/forms.py:28 contrib/localflavor/sk/forms.py:30 +msgid "Enter a postal code in the format XXXXX or XXX XX." +msgstr "" + +#: contrib/localflavor/cz/forms.py:48 +msgid "Enter a birth number in the format XXXXXX/XXXX or XXXXXXXXXX." +msgstr "" + +#: contrib/localflavor/cz/forms.py:49 +msgid "Invalid optional parameter Gender, valid values are 'f' and 'm'" +msgstr "" + +#: contrib/localflavor/cz/forms.py:50 +msgid "Enter a valid birth number." +msgstr "" + +#: contrib/localflavor/cz/forms.py:107 +msgid "Enter a valid IC number." +msgstr "" + +#: contrib/localflavor/de/de_states.py:5 +msgid "Baden-Wuerttemberg" +msgstr "" + +#: contrib/localflavor/de/de_states.py:6 +msgid "Bavaria" +msgstr "" + +#: contrib/localflavor/de/de_states.py:7 +msgid "Berlin" +msgstr "" + +#: contrib/localflavor/de/de_states.py:8 +msgid "Brandenburg" +msgstr "" + +#: contrib/localflavor/de/de_states.py:9 +msgid "Bremen" +msgstr "" + +#: contrib/localflavor/de/de_states.py:10 +msgid "Hamburg" +msgstr "" + +#: contrib/localflavor/de/de_states.py:11 +msgid "Hessen" +msgstr "" + +#: contrib/localflavor/de/de_states.py:12 +msgid "Mecklenburg-Western Pomerania" +msgstr "" + +#: contrib/localflavor/de/de_states.py:13 +msgid "Lower Saxony" +msgstr "" + +#: contrib/localflavor/de/de_states.py:14 +msgid "North Rhine-Westphalia" +msgstr "" + +#: contrib/localflavor/de/de_states.py:15 +msgid "Rhineland-Palatinate" +msgstr "" + +#: contrib/localflavor/de/de_states.py:16 +msgid "Saarland" +msgstr "" + +#: contrib/localflavor/de/de_states.py:17 +msgid "Saxony" +msgstr "" + +#: contrib/localflavor/de/de_states.py:18 +msgid "Saxony-Anhalt" +msgstr "" + +#: contrib/localflavor/de/de_states.py:19 +msgid "Schleswig-Holstein" +msgstr "" + +#: contrib/localflavor/de/de_states.py:20 +msgid "Thuringia" +msgstr "" + +#: contrib/localflavor/de/forms.py:15 contrib/localflavor/fi/forms.py:13 +#: contrib/localflavor/fr/forms.py:16 +msgid "Enter a zip code in the format XXXXX." +msgstr "" + +#: contrib/localflavor/de/forms.py:42 +msgid "" +"Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X " +"format." +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:5 +msgid "Arava" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:6 +msgid "Albacete" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:7 +msgid "Alacant" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:8 +msgid "Almeria" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:9 +msgid "Avila" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:10 +msgid "Badajoz" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:11 +msgid "Illes Balears" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:12 +msgid "Barcelona" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:13 +msgid "Burgos" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:14 +msgid "Caceres" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:15 +msgid "Cadiz" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:16 +msgid "Castello" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:17 +msgid "Ciudad Real" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:18 +msgid "Cordoba" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:19 +msgid "A Coruna" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:20 +msgid "Cuenca" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:21 +msgid "Girona" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:22 +msgid "Granada" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:23 +msgid "Guadalajara" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:24 +msgid "Guipuzkoa" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:25 +msgid "Huelva" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:26 +msgid "Huesca" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:27 +msgid "Jaen" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:28 +msgid "Leon" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:29 +msgid "Lleida" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:30 +#: contrib/localflavor/es/es_regions.py:17 +msgid "La Rioja" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:31 +msgid "Lugo" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:32 +#: contrib/localflavor/es/es_regions.py:18 +msgid "Madrid" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:33 +msgid "Malaga" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:34 +msgid "Murcia" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:35 +msgid "Navarre" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:36 +msgid "Ourense" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:37 +msgid "Asturias" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:38 +msgid "Palencia" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:39 +msgid "Las Palmas" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:40 +msgid "Pontevedra" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:41 +msgid "Salamanca" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:42 +msgid "Santa Cruz de Tenerife" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:43 +#: contrib/localflavor/es/es_regions.py:11 +msgid "Cantabria" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:44 +msgid "Segovia" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:45 +msgid "Seville" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:46 +msgid "Soria" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:47 +msgid "Tarragona" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:48 +msgid "Teruel" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:49 +msgid "Toledo" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:50 +msgid "Valencia" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:51 +msgid "Valladolid" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:52 +msgid "Bizkaia" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:53 +msgid "Zamora" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:54 +msgid "Zaragoza" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:55 +msgid "Ceuta" +msgstr "" + +#: contrib/localflavor/es/es_provinces.py:56 +msgid "Melilla" +msgstr "" + +#: contrib/localflavor/es/es_regions.py:5 +msgid "Andalusia" +msgstr "" + +#: contrib/localflavor/es/es_regions.py:6 +msgid "Aragon" +msgstr "" + +#: contrib/localflavor/es/es_regions.py:7 +msgid "Principality of Asturias" +msgstr "" + +#: contrib/localflavor/es/es_regions.py:8 +msgid "Balearic Islands" +msgstr "" + +#: contrib/localflavor/es/es_regions.py:9 +msgid "Basque Country" +msgstr "" + +#: contrib/localflavor/es/es_regions.py:10 +msgid "Canary Islands" +msgstr "" + +#: contrib/localflavor/es/es_regions.py:12 +msgid "Castile-La Mancha" +msgstr "" + +#: contrib/localflavor/es/es_regions.py:13 +msgid "Castile and Leon" +msgstr "" + +#: contrib/localflavor/es/es_regions.py:14 +msgid "Catalonia" +msgstr "" + +#: contrib/localflavor/es/es_regions.py:15 +msgid "Extremadura" +msgstr "" + +#: contrib/localflavor/es/es_regions.py:16 +msgid "Galicia" +msgstr "" + +#: contrib/localflavor/es/es_regions.py:19 +msgid "Region of Murcia" +msgstr "" + +#: contrib/localflavor/es/es_regions.py:20 +msgid "Foral Community of Navarre" +msgstr "" + +#: contrib/localflavor/es/es_regions.py:21 +msgid "Valencian Community" +msgstr "" + +#: contrib/localflavor/es/forms.py:20 +msgid "Enter a valid postal code in the range and format 01XXX - 52XXX." +msgstr "" + +#: contrib/localflavor/es/forms.py:40 +msgid "" +"Enter a valid phone number in one of the formats 6XXXXXXXX, 8XXXXXXXX or " +"9XXXXXXXX." +msgstr "" + +#: contrib/localflavor/es/forms.py:67 +msgid "Please enter a valid NIF, NIE, or CIF." +msgstr "" + +#: contrib/localflavor/es/forms.py:68 +msgid "Please enter a valid NIF or NIE." +msgstr "" + +#: contrib/localflavor/es/forms.py:69 +msgid "Invalid checksum for NIF." +msgstr "" + +#: contrib/localflavor/es/forms.py:70 +msgid "Invalid checksum for NIE." +msgstr "" + +#: contrib/localflavor/es/forms.py:71 +msgid "Invalid checksum for CIF." +msgstr "" + +#: contrib/localflavor/es/forms.py:143 +msgid "" +"Please enter a valid bank account number in format XXXX-XXXX-XX-XXXXXXXXXX." +msgstr "" + +#: contrib/localflavor/es/forms.py:144 +msgid "Invalid checksum for bank account number." +msgstr "" + +#: contrib/localflavor/fi/forms.py:29 +msgid "Enter a valid Finnish social security number." +msgstr "" + +#: contrib/localflavor/fr/forms.py:31 +msgid "Phone numbers must be in 0X XX XX XX XX format." +msgstr "" + +#: contrib/localflavor/id/forms.py:28 +msgid "Enter a valid post code" +msgstr "" + +#: contrib/localflavor/id/forms.py:68 contrib/localflavor/nl/forms.py:53 +msgid "Enter a valid phone number" +msgstr "" + +#: contrib/localflavor/id/forms.py:107 +msgid "Enter a valid vehicle license plate number" +msgstr "" + +#: contrib/localflavor/id/forms.py:170 +msgid "Enter a valid NIK/KTP number" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:9 +#: contrib/localflavor/id/id_choices.py:73 +msgid "Bali" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:10 +#: contrib/localflavor/id/id_choices.py:45 +msgid "Banten" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:11 +#: contrib/localflavor/id/id_choices.py:54 +msgid "Bengkulu" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:12 +#: contrib/localflavor/id/id_choices.py:47 +msgid "Yogyakarta" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:13 +#: contrib/localflavor/id/id_choices.py:51 +msgid "Jakarta" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:14 +#: contrib/localflavor/id/id_choices.py:75 +msgid "Gorontalo" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:15 +#: contrib/localflavor/id/id_choices.py:57 +msgid "Jambi" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:16 +msgid "Jawa Barat" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:17 +msgid "Jawa Tengah" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:18 +msgid "Jawa Timur" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:19 +#: contrib/localflavor/id/id_choices.py:88 +msgid "Kalimantan Barat" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:20 +#: contrib/localflavor/id/id_choices.py:66 +msgid "Kalimantan Selatan" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:21 +#: contrib/localflavor/id/id_choices.py:89 +msgid "Kalimantan Tengah" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:22 +#: contrib/localflavor/id/id_choices.py:90 +msgid "Kalimantan Timur" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:23 +msgid "Kepulauan Bangka-Belitung" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:24 +#: contrib/localflavor/id/id_choices.py:62 +msgid "Kepulauan Riau" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:25 +#: contrib/localflavor/id/id_choices.py:55 +msgid "Lampung" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:26 +#: contrib/localflavor/id/id_choices.py:70 +msgid "Maluku" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:27 +#: contrib/localflavor/id/id_choices.py:71 +msgid "Maluku Utara" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:28 +#: contrib/localflavor/id/id_choices.py:59 +msgid "Nanggroe Aceh Darussalam" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:29 +msgid "Nusa Tenggara Barat" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:30 +msgid "Nusa Tenggara Timur" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:31 +msgid "Papua" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:32 +msgid "Papua Barat" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:33 +#: contrib/localflavor/id/id_choices.py:60 +msgid "Riau" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:34 +#: contrib/localflavor/id/id_choices.py:68 +msgid "Sulawesi Barat" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:35 +#: contrib/localflavor/id/id_choices.py:69 +msgid "Sulawesi Selatan" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:36 +#: contrib/localflavor/id/id_choices.py:76 +msgid "Sulawesi Tengah" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:37 +#: contrib/localflavor/id/id_choices.py:79 +msgid "Sulawesi Tenggara" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:38 +msgid "Sulawesi Utara" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:39 +#: contrib/localflavor/id/id_choices.py:52 +msgid "Sumatera Barat" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:40 +#: contrib/localflavor/id/id_choices.py:56 +msgid "Sumatera Selatan" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:41 +#: contrib/localflavor/id/id_choices.py:58 +msgid "Sumatera Utara" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:46 +msgid "Magelang" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:48 +msgid "Surakarta - Solo" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:49 +msgid "Madiun" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:50 +msgid "Kediri" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:53 +msgid "Tapanuli" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:61 +msgid "Kepulauan Bangka Belitung" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:63 +msgid "Corps Consulate" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:64 +msgid "Corps Diplomatic" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:65 +msgid "Bandung" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:67 +msgid "Sulawesi Utara Daratan" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:72 +msgid "NTT - Timor" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:74 +msgid "Sulawesi Utara Kepulauan" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:77 +msgid "NTB - Lombok" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:78 +msgid "Papua dan Papua Barat" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:80 +msgid "Cirebon" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:81 +msgid "NTB - Sumbawa" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:82 +msgid "NTT - Flores" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:83 +msgid "NTT - Sumba" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:84 +msgid "Bogor" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:85 +msgid "Pekalongan" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:86 +msgid "Semarang" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:87 +msgid "Pati" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:91 +msgid "Surabaya" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:92 +msgid "Madura" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:93 +msgid "Malang" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:94 +msgid "Jember" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:95 +msgid "Banyumas" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:96 +msgid "Federal Government" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:97 +msgid "Bojonegoro" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:98 +msgid "Purwakarta" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:99 +msgid "Sidoarjo" +msgstr "" + +#: contrib/localflavor/id/id_choices.py:100 +msgid "Garut" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:8 +msgid "Antrim" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:9 +msgid "Armagh" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:10 +msgid "Carlow" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:11 +msgid "Cavan" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:12 +msgid "Clare" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:13 +msgid "Cork" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:14 +msgid "Derry" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:15 +msgid "Donegal" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:16 +msgid "Down" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:17 +msgid "Dublin" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:18 +msgid "Fermanagh" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:19 +msgid "Galway" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:20 +msgid "Kerry" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:21 +msgid "Kildare" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:22 +msgid "Kilkenny" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:23 +msgid "Laois" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:24 +msgid "Leitrim" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:25 +msgid "Limerick" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:26 +msgid "Longford" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:27 +msgid "Louth" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:28 +msgid "Mayo" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:29 +msgid "Meath" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:30 +msgid "Monaghan" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:31 +msgid "Offaly" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:32 +msgid "Roscommon" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:33 +msgid "Sligo" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:34 +msgid "Tipperary" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:35 +msgid "Tyrone" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:36 +msgid "Waterford" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:37 +msgid "Westmeath" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:38 +msgid "Wexford" +msgstr "" + +#: contrib/localflavor/ie/ie_counties.py:39 +msgid "Wicklow" +msgstr "" + +#: contrib/localflavor/in_/forms.py:15 +msgid "Enter a zip code in the format XXXXXXX." +msgstr "" + +#: contrib/localflavor/is_/forms.py:18 +msgid "" +"Enter a valid Icelandic identification number. The format is XXXXXX-XXXX." +msgstr "" + +#: contrib/localflavor/is_/forms.py:19 +msgid "The Icelandic identification number is not valid." +msgstr "" + +#: contrib/localflavor/it/forms.py:15 +msgid "Enter a valid zip code." +msgstr "" + +#: contrib/localflavor/it/forms.py:44 +msgid "Enter a valid Social Security number." +msgstr "" + +#: contrib/localflavor/it/forms.py:69 +msgid "Enter a valid VAT number." +msgstr "" + +#: contrib/localflavor/jp/forms.py:16 +msgid "Enter a postal code in the format XXXXXXX or XXX-XXXX." +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:4 +msgid "Hokkaido" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:5 +msgid "Aomori" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:6 +msgid "Iwate" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:7 +msgid "Miyagi" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:8 +msgid "Akita" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:9 +msgid "Yamagata" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:10 +msgid "Fukushima" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:11 +msgid "Ibaraki" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:12 +msgid "Tochigi" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:13 +msgid "Gunma" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:14 +msgid "Saitama" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:15 +msgid "Chiba" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:16 +msgid "Tokyo" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:17 +msgid "Kanagawa" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:18 +msgid "Yamanashi" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:19 +msgid "Nagano" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:20 +msgid "Niigata" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:21 +msgid "Toyama" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:22 +msgid "Ishikawa" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:23 +msgid "Fukui" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:24 +msgid "Gifu" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:25 +msgid "Shizuoka" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:26 +msgid "Aichi" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:27 +msgid "Mie" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:28 +msgid "Shiga" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:29 +msgid "Kyoto" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:30 +msgid "Osaka" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:31 +msgid "Hyogo" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:32 +msgid "Nara" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:33 +msgid "Wakayama" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:34 +msgid "Tottori" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:35 +msgid "Shimane" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:36 +msgid "Okayama" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:37 +msgid "Hiroshima" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:38 +msgid "Yamaguchi" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:39 +msgid "Tokushima" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:40 +msgid "Kagawa" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:41 +msgid "Ehime" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:42 +msgid "Kochi" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:43 +msgid "Fukuoka" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:44 +msgid "Saga" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:45 +msgid "Nagasaki" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:46 +msgid "Kumamoto" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:47 +msgid "Oita" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:48 +msgid "Miyazaki" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:49 +msgid "Kagoshima" +msgstr "" + +#: contrib/localflavor/jp/jp_prefectures.py:50 +msgid "Okinawa" +msgstr "" + +#: contrib/localflavor/kw/forms.py:25 +msgid "Enter a valid Kuwaiti Civil ID number" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:12 +msgid "Aguascalientes" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:13 +msgid "Baja California" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:14 +msgid "Baja California Sur" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:15 +msgid "Campeche" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:16 +msgid "Chihuahua" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:17 +msgid "Chiapas" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:18 +msgid "Coahuila" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:19 +msgid "Colima" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:20 +msgid "Distrito Federal" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:21 +msgid "Durango" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:22 +msgid "Guerrero" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:23 +msgid "Guanajuato" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:24 +msgid "Hidalgo" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:25 +msgid "Jalisco" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:26 +msgid "Estado de México" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:27 +msgid "Michoacán" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:28 +msgid "Morelos" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:29 +msgid "Nayarit" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:30 +msgid "Nuevo León" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:31 +msgid "Oaxaca" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:32 +msgid "Puebla" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:33 +msgid "Querétaro" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:34 +msgid "Quintana Roo" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:35 +msgid "Sinaloa" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:36 +msgid "San Luis Potosí" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:37 +msgid "Sonora" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:38 +msgid "Tabasco" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:39 +msgid "Tamaulipas" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:40 +msgid "Tlaxcala" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:41 +msgid "Veracruz" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:42 +msgid "Yucatán" +msgstr "" + +#: contrib/localflavor/mx/mx_states.py:43 +msgid "Zacatecas" +msgstr "" + +#: contrib/localflavor/nl/forms.py:22 +msgid "Enter a valid postal code" +msgstr "" + +#: contrib/localflavor/nl/forms.py:79 +msgid "Enter a valid SoFi number" +msgstr "" + +#: contrib/localflavor/nl/nl_provinces.py:4 +msgid "Drenthe" +msgstr "" + +#: contrib/localflavor/nl/nl_provinces.py:5 +msgid "Flevoland" +msgstr "" + +#: contrib/localflavor/nl/nl_provinces.py:6 +msgid "Friesland" +msgstr "" + +#: contrib/localflavor/nl/nl_provinces.py:7 +msgid "Gelderland" +msgstr "" + +#: contrib/localflavor/nl/nl_provinces.py:8 +msgid "Groningen" +msgstr "" + +#: contrib/localflavor/nl/nl_provinces.py:9 +msgid "Limburg" +msgstr "" + +#: contrib/localflavor/nl/nl_provinces.py:10 +msgid "Noord-Brabant" +msgstr "" + +#: contrib/localflavor/nl/nl_provinces.py:11 +msgid "Noord-Holland" +msgstr "" + +#: contrib/localflavor/nl/nl_provinces.py:12 +msgid "Overijssel" +msgstr "" + +#: contrib/localflavor/nl/nl_provinces.py:13 +msgid "Utrecht" +msgstr "" + +#: contrib/localflavor/nl/nl_provinces.py:14 +msgid "Zeeland" +msgstr "" + +#: contrib/localflavor/nl/nl_provinces.py:15 +msgid "Zuid-Holland" +msgstr "" + +#: contrib/localflavor/no/forms.py:34 +msgid "Enter a valid Norwegian social security number." +msgstr "" + +#: contrib/localflavor/pe/forms.py:25 +msgid "This field requires 8 digits." +msgstr "" + +#: contrib/localflavor/pe/forms.py:53 +msgid "This field requires 11 digits." +msgstr "" + +#: contrib/localflavor/pl/forms.py:38 +msgid "National Identification Number consists of 11 digits." +msgstr "" + +#: contrib/localflavor/pl/forms.py:39 +msgid "Wrong checksum for the National Identification Number." +msgstr "" + +#: contrib/localflavor/pl/forms.py:71 +msgid "" +"Enter a tax number field (NIP) in the format XXX-XXX-XX-XX or XX-XX-XXX-XXX." +msgstr "" + +#: contrib/localflavor/pl/forms.py:72 +msgid "Wrong checksum for the Tax Number (NIP)." +msgstr "" + +#: contrib/localflavor/pl/forms.py:109 +msgid "National Business Register Number (REGON) consists of 9 or 14 digits." +msgstr "" + +#: contrib/localflavor/pl/forms.py:110 +msgid "Wrong checksum for the National Business Register Number (REGON)." +msgstr "" + +#: contrib/localflavor/pl/forms.py:148 +msgid "Enter a postal code in the format XX-XXX." +msgstr "" + +#: contrib/localflavor/pl/pl_voivodeships.py:8 +msgid "Lower Silesia" +msgstr "" + +#: contrib/localflavor/pl/pl_voivodeships.py:9 +msgid "Kuyavia-Pomerania" +msgstr "" + +#: contrib/localflavor/pl/pl_voivodeships.py:10 +msgid "Lublin" +msgstr "" + +#: contrib/localflavor/pl/pl_voivodeships.py:11 +msgid "Lubusz" +msgstr "" + +#: contrib/localflavor/pl/pl_voivodeships.py:12 +msgid "Lodz" +msgstr "" + +#: contrib/localflavor/pl/pl_voivodeships.py:13 +msgid "Lesser Poland" +msgstr "" + +#: contrib/localflavor/pl/pl_voivodeships.py:14 +msgid "Masovia" +msgstr "" + +#: contrib/localflavor/pl/pl_voivodeships.py:15 +msgid "Opole" +msgstr "" + +#: contrib/localflavor/pl/pl_voivodeships.py:16 +msgid "Subcarpatia" +msgstr "" + +#: contrib/localflavor/pl/pl_voivodeships.py:17 +msgid "Podlasie" +msgstr "" + +#: contrib/localflavor/pl/pl_voivodeships.py:18 +msgid "Pomerania" +msgstr "" + +#: contrib/localflavor/pl/pl_voivodeships.py:19 +msgid "Silesia" +msgstr "" + +#: contrib/localflavor/pl/pl_voivodeships.py:20 +msgid "Swietokrzyskie" +msgstr "" + +#: contrib/localflavor/pl/pl_voivodeships.py:21 +msgid "Warmia-Masuria" +msgstr "" + +#: contrib/localflavor/pl/pl_voivodeships.py:22 +msgid "Greater Poland" +msgstr "" + +#: contrib/localflavor/pl/pl_voivodeships.py:23 +msgid "West Pomerania" +msgstr "" + +#: contrib/localflavor/pt/forms.py:17 +msgid "Enter a zip code in the format XXXX-XXX." +msgstr "" + +#: contrib/localflavor/pt/forms.py:37 +msgid "Phone numbers must have 9 digits, or start by + or 00." +msgstr "" + +#: contrib/localflavor/ro/forms.py:19 +msgid "Enter a valid CIF." +msgstr "" + +#: contrib/localflavor/ro/forms.py:56 +msgid "Enter a valid CNP." +msgstr "" + +#: contrib/localflavor/ro/forms.py:141 +msgid "Enter a valid IBAN in ROXX-XXXX-XXXX-XXXX-XXXX-XXXX format" +msgstr "" + +#: contrib/localflavor/ro/forms.py:171 +msgid "Phone numbers must be in XXXX-XXXXXX format." +msgstr "" + +#: contrib/localflavor/ro/forms.py:194 +msgid "Enter a valid postal code in the format XXXXXX" +msgstr "" + +#: contrib/localflavor/se/forms.py:50 +msgid "Enter a valid Swedish organisation number." +msgstr "" + +#: contrib/localflavor/se/forms.py:107 +msgid "Enter a valid Swedish personal identity number." +msgstr "" + +#: contrib/localflavor/se/forms.py:108 +msgid "Co-ordination numbers are not allowed." +msgstr "" + +#: contrib/localflavor/se/forms.py:150 +msgid "Enter a Swedish postal code in the format XXXXX." +msgstr "" + +#: contrib/localflavor/se/se_counties.py:15 +msgid "Stockholm" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:16 +msgid "Västerbotten" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:17 +msgid "Norrbotten" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:18 +msgid "Uppsala" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:19 +msgid "Södermanland" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:20 +msgid "Östergötland" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:21 +msgid "Jönköping" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:22 +msgid "Kronoberg" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:23 +msgid "Kalmar" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:24 +msgid "Gotland" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:25 +msgid "Blekinge" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:26 +msgid "Skåne" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:27 +msgid "Halland" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:28 +msgid "Västra Götaland" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:29 +msgid "Värmland" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:30 +msgid "Örebro" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:31 +msgid "Västmanland" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:32 +msgid "Dalarna" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:33 +msgid "Gävleborg" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:34 +msgid "Västernorrland" +msgstr "" + +#: contrib/localflavor/se/se_counties.py:35 +msgid "Jämtland" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:8 +msgid "Banska Bystrica" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:9 +msgid "Banska Stiavnica" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:10 +msgid "Bardejov" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:11 +msgid "Banovce nad Bebravou" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:12 +msgid "Brezno" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:13 +msgid "Bratislava I" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:14 +msgid "Bratislava II" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:15 +msgid "Bratislava III" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:16 +msgid "Bratislava IV" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:17 +msgid "Bratislava V" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:18 +msgid "Bytca" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:19 +msgid "Cadca" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:20 +msgid "Detva" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:21 +msgid "Dolny Kubin" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:22 +msgid "Dunajska Streda" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:23 +msgid "Galanta" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:24 +msgid "Gelnica" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:25 +msgid "Hlohovec" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:26 +msgid "Humenne" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:27 +msgid "Ilava" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:28 +msgid "Kezmarok" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:29 +msgid "Komarno" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:30 +msgid "Kosice I" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:31 +msgid "Kosice II" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:32 +msgid "Kosice III" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:33 +msgid "Kosice IV" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:34 +msgid "Kosice - okolie" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:35 +msgid "Krupina" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:36 +msgid "Kysucke Nove Mesto" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:37 +msgid "Levice" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:38 +msgid "Levoca" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:39 +msgid "Liptovsky Mikulas" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:40 +msgid "Lucenec" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:41 +msgid "Malacky" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:42 +msgid "Martin" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:43 +msgid "Medzilaborce" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:44 +msgid "Michalovce" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:45 +msgid "Myjava" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:46 +msgid "Namestovo" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:47 +msgid "Nitra" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:48 +msgid "Nove Mesto nad Vahom" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:49 +msgid "Nove Zamky" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:50 +msgid "Partizanske" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:51 +msgid "Pezinok" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:52 +msgid "Piestany" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:53 +msgid "Poltar" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:54 +msgid "Poprad" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:55 +msgid "Povazska Bystrica" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:56 +msgid "Presov" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:57 +msgid "Prievidza" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:58 +msgid "Puchov" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:59 +msgid "Revuca" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:60 +msgid "Rimavska Sobota" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:61 +msgid "Roznava" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:62 +msgid "Ruzomberok" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:63 +msgid "Sabinov" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:64 +msgid "Senec" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:65 +msgid "Senica" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:66 +msgid "Skalica" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:67 +msgid "Snina" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:68 +msgid "Sobrance" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:69 +msgid "Spisska Nova Ves" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:70 +msgid "Stara Lubovna" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:71 +msgid "Stropkov" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:72 +msgid "Svidnik" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:73 +msgid "Sala" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:74 +msgid "Topolcany" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:75 +msgid "Trebisov" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:76 +msgid "Trencin" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:77 +msgid "Trnava" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:78 +msgid "Turcianske Teplice" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:79 +msgid "Tvrdosin" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:80 +msgid "Velky Krtis" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:81 +msgid "Vranov nad Toplou" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:82 +msgid "Zlate Moravce" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:83 +msgid "Zvolen" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:84 +msgid "Zarnovica" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:85 +msgid "Ziar nad Hronom" +msgstr "" + +#: contrib/localflavor/sk/sk_districts.py:86 +msgid "Zilina" +msgstr "" + +#: contrib/localflavor/sk/sk_regions.py:8 +msgid "Banska Bystrica region" +msgstr "" + +#: contrib/localflavor/sk/sk_regions.py:9 +msgid "Bratislava region" +msgstr "" + +#: contrib/localflavor/sk/sk_regions.py:10 +msgid "Kosice region" +msgstr "" + +#: contrib/localflavor/sk/sk_regions.py:11 +msgid "Nitra region" +msgstr "" + +#: contrib/localflavor/sk/sk_regions.py:12 +msgid "Presov region" +msgstr "" + +#: contrib/localflavor/sk/sk_regions.py:13 +msgid "Trencin region" +msgstr "" + +#: contrib/localflavor/sk/sk_regions.py:14 +msgid "Trnava region" +msgstr "" + +#: contrib/localflavor/sk/sk_regions.py:15 +msgid "Zilina region" +msgstr "" + +#: contrib/localflavor/uk/forms.py:21 +msgid "Enter a valid postcode." +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:11 +msgid "Bedfordshire" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:12 +msgid "Buckinghamshire" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:14 +msgid "Cheshire" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:15 +msgid "Cornwall and Isles of Scilly" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:16 +msgid "Cumbria" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:17 +msgid "Derbyshire" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:18 +msgid "Devon" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:19 +msgid "Dorset" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:20 +msgid "Durham" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:21 +msgid "East Sussex" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:22 +msgid "Essex" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:23 +msgid "Gloucestershire" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:24 +msgid "Greater London" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:25 +msgid "Greater Manchester" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:26 +msgid "Hampshire" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:27 +msgid "Hertfordshire" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:28 +msgid "Kent" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:29 +msgid "Lancashire" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:30 +msgid "Leicestershire" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:31 +msgid "Lincolnshire" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:32 +msgid "Merseyside" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:33 +msgid "Norfolk" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:34 +msgid "North Yorkshire" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:35 +msgid "Northamptonshire" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:36 +msgid "Northumberland" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:37 +msgid "Nottinghamshire" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:38 +msgid "Oxfordshire" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:39 +msgid "Shropshire" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:40 +msgid "Somerset" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:41 +msgid "South Yorkshire" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:42 +msgid "Staffordshire" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:43 +msgid "Suffolk" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:44 +msgid "Surrey" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:45 +msgid "Tyne and Wear" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:46 +msgid "Warwickshire" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:47 +msgid "West Midlands" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:48 +msgid "West Sussex" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:49 +msgid "West Yorkshire" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:50 +msgid "Wiltshire" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:51 +msgid "Worcestershire" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:55 +msgid "County Antrim" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:56 +msgid "County Armagh" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:57 +msgid "County Down" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:58 +msgid "County Fermanagh" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:59 +msgid "County Londonderry" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:60 +msgid "County Tyrone" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:64 +msgid "Clwyd" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:65 +msgid "Dyfed" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:66 +msgid "Gwent" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:67 +msgid "Gwynedd" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:68 +msgid "Mid Glamorgan" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:69 +msgid "Powys" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:70 +msgid "South Glamorgan" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:71 +msgid "West Glamorgan" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:75 +msgid "Borders" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:76 +msgid "Central Scotland" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:77 +msgid "Dumfries and Galloway" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:78 +msgid "Fife" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:79 +msgid "Grampian" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:80 +msgid "Highland" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:81 +msgid "Lothian" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:82 +msgid "Orkney Islands" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:83 +msgid "Shetland Islands" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:84 +msgid "Strathclyde" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:85 +msgid "Tayside" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:86 +msgid "Western Isles" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:90 +msgid "England" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:91 +msgid "Northern Ireland" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:92 +msgid "Scotland" +msgstr "" + +#: contrib/localflavor/uk/uk_regions.py:93 +msgid "Wales" +msgstr "" + +#: contrib/localflavor/us/forms.py:17 +msgid "Enter a zip code in the format XXXXX or XXXXX-XXXX." +msgstr "" + +#: contrib/localflavor/us/forms.py:26 +msgid "Phone numbers must be in XXX-XXX-XXXX format." +msgstr "" + +#: contrib/localflavor/us/forms.py:55 +msgid "Enter a valid U.S. Social Security number in XXX-XX-XXXX format." +msgstr "" + +#: contrib/localflavor/us/forms.py:88 +msgid "Enter a U.S. state or territory." +msgstr "" + +#: contrib/localflavor/us/models.py:8 +msgid "U.S. state (two uppercase letters)" +msgstr "" + +#: contrib/localflavor/us/models.py:17 +msgid "Phone number" +msgstr "" + +#: contrib/localflavor/uy/forms.py:28 +msgid "Enter a valid CI number in X.XXX.XXX-X,XXXXXXX-X or XXXXXXXX format." +msgstr "" + +#: contrib/localflavor/uy/forms.py:30 +msgid "Enter a valid CI number." +msgstr "" + +#: contrib/localflavor/za/forms.py:21 +msgid "Enter a valid South African ID number" +msgstr "" + +#: contrib/localflavor/za/forms.py:55 +msgid "Enter a valid South African postal code" +msgstr "" + +#: contrib/localflavor/za/za_provinces.py:4 +msgid "Eastern Cape" +msgstr "" + +#: contrib/localflavor/za/za_provinces.py:5 +msgid "Free State" +msgstr "" + +#: contrib/localflavor/za/za_provinces.py:6 +msgid "Gauteng" +msgstr "" + +#: contrib/localflavor/za/za_provinces.py:7 +msgid "KwaZulu-Natal" +msgstr "" + +#: contrib/localflavor/za/za_provinces.py:8 +msgid "Limpopo" +msgstr "" + +#: contrib/localflavor/za/za_provinces.py:9 +msgid "Mpumalanga" +msgstr "" + +#: contrib/localflavor/za/za_provinces.py:10 +msgid "Northern Cape" +msgstr "" + +#: contrib/localflavor/za/za_provinces.py:11 +msgid "North West" +msgstr "" + +#: contrib/localflavor/za/za_provinces.py:12 +msgid "Western Cape" +msgstr "" + +#: contrib/messages/tests/base.py:101 +msgid "lazy message" +msgstr "" + +#: contrib/redirects/models.py:7 +msgid "redirect from" +msgstr "" + +#: contrib/redirects/models.py:8 +msgid "" +"This should be an absolute path, excluding the domain name. Example: '/" +"events/search/'." +msgstr "" + +#: contrib/redirects/models.py:9 +msgid "redirect to" +msgstr "" + +#: contrib/redirects/models.py:10 +msgid "" +"This can be either an absolute path (as above) or a full URL starting with " +"'http://'." +msgstr "" + +#: contrib/redirects/models.py:13 +msgid "redirect" +msgstr "" + +#: contrib/redirects/models.py:14 +msgid "redirects" +msgstr "" + +#: contrib/sessions/models.py:45 +msgid "session key" +msgstr "" + +#: contrib/sessions/models.py:47 +msgid "session data" +msgstr "" + +#: contrib/sessions/models.py:48 +msgid "expire date" +msgstr "" + +#: contrib/sessions/models.py:53 +msgid "session" +msgstr "" + +#: contrib/sessions/models.py:54 +msgid "sessions" +msgstr "" + +#: contrib/sites/models.py:32 +msgid "domain name" +msgstr "" + +#: contrib/sites/models.py:33 +msgid "display name" +msgstr "" + +#: contrib/sites/models.py:39 +msgid "sites" +msgstr "" + +#: core/validators.py:20 forms/fields.py:66 +msgid "Enter a valid value." +msgstr "" + +#: core/validators.py:87 forms/fields.py:529 +msgid "Enter a valid URL." +msgstr "" + +#: core/validators.py:89 forms/fields.py:530 +msgid "This URL appears to be a broken link." +msgstr "" + +#: core/validators.py:123 forms/fields.py:873 +msgid "" +"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens." +msgstr "" + +#: core/validators.py:126 forms/fields.py:866 +msgid "Enter a valid IPv4 address." +msgstr "" + +#: core/validators.py:129 db/models/fields/__init__.py:572 +msgid "Enter only digits separated by commas." +msgstr "" + +#: core/validators.py:135 +#, python-format +msgid "Ensure this value is %(limit_value)s (it is %(show_value)s)." +msgstr "" + +#: core/validators.py:153 forms/fields.py:205 forms/fields.py:257 +#, python-format +msgid "Ensure this value is less than or equal to %(limit_value)s." +msgstr "" + +#: core/validators.py:158 forms/fields.py:206 forms/fields.py:258 +#, python-format +msgid "Ensure this value is greater than or equal to %(limit_value)s." +msgstr "" + +#: core/validators.py:164 +#, python-format +msgid "" +"Ensure this value has at least %(limit_value)d characters (it has %" +"(show_value)d)." +msgstr "" + +#: core/validators.py:170 +#, python-format +msgid "" +"Ensure this value has at most %(limit_value)d characters (it has %" +"(show_value)d)." +msgstr "" + +#: db/models/base.py:823 +#, python-format +msgid "%(field_name)s must be unique for %(date_field)s %(lookup)s." +msgstr "" + +#: db/models/base.py:838 db/models/base.py:846 +#, python-format +msgid "%(model_name)s with this %(field_label)s already exists." +msgstr "" + +#: db/models/fields/__init__.py:63 +#, python-format +msgid "Value %r is not a valid choice." +msgstr "" + +#: db/models/fields/__init__.py:64 +msgid "This field cannot be null." +msgstr "" + +#: db/models/fields/__init__.py:65 +msgid "This field cannot be blank." +msgstr "" + +#: db/models/fields/__init__.py:70 +#, python-format +msgid "Field of type: %(field_type)s" +msgstr "" + +#: db/models/fields/__init__.py:451 db/models/fields/__init__.py:852 +#: db/models/fields/__init__.py:961 db/models/fields/__init__.py:972 +#: db/models/fields/__init__.py:999 +msgid "Integer" +msgstr "" + +#: db/models/fields/__init__.py:455 db/models/fields/__init__.py:850 +msgid "This value must be an integer." +msgstr "" + +#: db/models/fields/__init__.py:490 +msgid "This value must be either True or False." +msgstr "" + +#: db/models/fields/__init__.py:492 +msgid "Boolean (Either True or False)" +msgstr "" + +#: db/models/fields/__init__.py:539 db/models/fields/__init__.py:982 +#, python-format +msgid "String (up to %(max_length)s)" +msgstr "" + +#: db/models/fields/__init__.py:567 +msgid "Comma-separated integers" +msgstr "" + +#: db/models/fields/__init__.py:581 +msgid "Date (without time)" +msgstr "" + +#: db/models/fields/__init__.py:585 +msgid "Enter a valid date in YYYY-MM-DD format." +msgstr "" + +#: db/models/fields/__init__.py:586 +#, python-format +msgid "Invalid date: %s" +msgstr "" + +#: db/models/fields/__init__.py:667 +msgid "Enter a valid date/time in YYYY-MM-DD HH:MM[:ss[.uuuuuu]] format." +msgstr "" + +#: db/models/fields/__init__.py:669 +msgid "Date (with time)" +msgstr "" + +#: db/models/fields/__init__.py:735 +msgid "This value must be a decimal number." +msgstr "" + +#: db/models/fields/__init__.py:737 +msgid "Decimal number" +msgstr "" + +#: db/models/fields/__init__.py:792 +msgid "E-mail address" +msgstr "" + +#: db/models/fields/__init__.py:799 db/models/fields/files.py:220 +#: db/models/fields/files.py:331 +msgid "File path" +msgstr "" + +#: db/models/fields/__init__.py:822 +msgid "This value must be a float." +msgstr "" + +#: db/models/fields/__init__.py:824 +msgid "Floating point number" +msgstr "" + +#: db/models/fields/__init__.py:883 +msgid "Big (8 byte) integer" +msgstr "" + +#: db/models/fields/__init__.py:912 +msgid "This value must be either None, True or False." +msgstr "" + +#: db/models/fields/__init__.py:914 +msgid "Boolean (Either True, False or None)" +msgstr "" + +#: db/models/fields/__init__.py:1005 +msgid "Text" +msgstr "" + +#: db/models/fields/__init__.py:1021 +msgid "Time" +msgstr "" + +#: db/models/fields/__init__.py:1025 +msgid "Enter a valid time in HH:MM[:ss[.uuuuuu]] format." +msgstr "" + +#: db/models/fields/__init__.py:1109 +msgid "XML text" +msgstr "" + +#: db/models/fields/related.py:799 +#, python-format +msgid "Model %(model)s with pk %(pk)r does not exist." +msgstr "" + +#: db/models/fields/related.py:801 +msgid "Foreign Key (type determined by related field)" +msgstr "" + +#: db/models/fields/related.py:918 +msgid "One-to-one relationship" +msgstr "" + +#: db/models/fields/related.py:980 +msgid "Many-to-many relationship" +msgstr "" + +#: db/models/fields/related.py:1000 +msgid "" +"Hold down \"Control\", or \"Command\" on a Mac, to select more than one." +msgstr "" + +#: db/models/fields/related.py:1061 +#, python-format +msgid "Please enter valid %(self)s IDs. The value %(value)r is invalid." +msgid_plural "" +"Please enter valid %(self)s IDs. The values %(value)r are invalid." +msgstr[0] "" +msgstr[1] "" + +#: forms/fields.py:65 +msgid "This field is required." +msgstr "" + +#: forms/fields.py:204 +msgid "Enter a whole number." +msgstr "" + +#: forms/fields.py:235 forms/fields.py:256 +msgid "Enter a number." +msgstr "" + +#: forms/fields.py:259 +#, python-format +msgid "Ensure that there are no more than %s digits in total." +msgstr "" + +#: forms/fields.py:260 +#, python-format +msgid "Ensure that there are no more than %s decimal places." +msgstr "" + +#: forms/fields.py:261 +#, python-format +msgid "Ensure that there are no more than %s digits before the decimal point." +msgstr "" + +#: forms/fields.py:323 forms/fields.py:838 +msgid "Enter a valid date." +msgstr "" + +#: forms/fields.py:351 forms/fields.py:839 +msgid "Enter a valid time." +msgstr "" + +#: forms/fields.py:377 +msgid "Enter a valid date/time." +msgstr "" + +#: forms/fields.py:435 +msgid "No file was submitted. Check the encoding type on the form." +msgstr "" + +#: forms/fields.py:436 +msgid "No file was submitted." +msgstr "" + +#: forms/fields.py:437 +msgid "The submitted file is empty." +msgstr "" + +#: forms/fields.py:438 +#, python-format +msgid "" +"Ensure this filename has at most %(max)d characters (it has %(length)d)." +msgstr "" + +#: forms/fields.py:473 +msgid "" +"Upload a valid image. The file you uploaded was either not an image or a " +"corrupted image." +msgstr "" + +#: forms/fields.py:596 forms/fields.py:671 +#, python-format +msgid "Select a valid choice. %(value)s is not one of the available choices." +msgstr "" + +#: forms/fields.py:672 forms/fields.py:734 forms/models.py:1002 +msgid "Enter a list of values." +msgstr "" + +#: forms/formsets.py:298 forms/formsets.py:300 +msgid "Order" +msgstr "" + +#: forms/models.py:562 +#, python-format +msgid "Please correct the duplicate data for %(field)s." +msgstr "" + +#: forms/models.py:566 +#, python-format +msgid "Please correct the duplicate data for %(field)s, which must be unique." +msgstr "" + +#: forms/models.py:572 +#, python-format +msgid "" +"Please correct the duplicate data for %(field_name)s which must be unique " +"for the %(lookup)s in %(date_field)s." +msgstr "" + +#: forms/models.py:580 +msgid "Please correct the duplicate values below." +msgstr "" + +#: forms/models.py:855 +msgid "The inline foreign key did not match the parent instance primary key." +msgstr "" + +#: forms/models.py:921 +msgid "Select a valid choice. That choice is not one of the available choices." +msgstr "" + +#: forms/models.py:1003 +#, python-format +msgid "Select a valid choice. %s is not one of the available choices." +msgstr "" + +#: forms/models.py:1005 +#, python-format +msgid "\"%s\" is not a valid value for a primary key." +msgstr "" + +#: template/defaultfilters.py:776 +msgid "yes,no,maybe" +msgstr "" + +#: template/defaultfilters.py:807 +#, python-format +msgid "%(size)d byte" +msgid_plural "%(size)d bytes" +msgstr[0] "" +msgstr[1] "" + +#: template/defaultfilters.py:809 +#, python-format +msgid "%s KB" +msgstr "" + +#: template/defaultfilters.py:811 +#, python-format +msgid "%s MB" +msgstr "" + +#: template/defaultfilters.py:812 +#, python-format +msgid "%s GB" +msgstr "" + +#: utils/dateformat.py:42 +msgid "p.m." +msgstr "" + +#: utils/dateformat.py:43 +msgid "a.m." +msgstr "" + +#: utils/dateformat.py:48 +msgid "PM" +msgstr "" + +#: utils/dateformat.py:49 +msgid "AM" +msgstr "" + +#: utils/dateformat.py:98 +msgid "midnight" +msgstr "" + +#: utils/dateformat.py:100 +msgid "noon" +msgstr "" + +#: utils/dates.py:6 +msgid "Monday" +msgstr "" + +#: utils/dates.py:6 +msgid "Tuesday" +msgstr "" + +#: utils/dates.py:6 +msgid "Wednesday" +msgstr "" + +#: utils/dates.py:6 +msgid "Thursday" +msgstr "" + +#: utils/dates.py:6 +msgid "Friday" +msgstr "" + +#: utils/dates.py:7 +msgid "Saturday" +msgstr "" + +#: utils/dates.py:7 +msgid "Sunday" +msgstr "" + +#: utils/dates.py:10 +msgid "Mon" +msgstr "" + +#: utils/dates.py:10 +msgid "Tue" +msgstr "" + +#: utils/dates.py:10 +msgid "Wed" +msgstr "" + +#: utils/dates.py:10 +msgid "Thu" +msgstr "" + +#: utils/dates.py:10 +msgid "Fri" +msgstr "" + +#: utils/dates.py:11 +msgid "Sat" +msgstr "" + +#: utils/dates.py:11 +msgid "Sun" +msgstr "" + +#: utils/dates.py:18 +msgid "January" +msgstr "" + +#: utils/dates.py:18 +msgid "February" +msgstr "" + +#: utils/dates.py:18 utils/dates.py:31 +msgid "March" +msgstr "" + +#: utils/dates.py:18 utils/dates.py:31 +msgid "April" +msgstr "" + +#: utils/dates.py:18 utils/dates.py:31 +msgid "May" +msgstr "" + +#: utils/dates.py:18 utils/dates.py:31 +msgid "June" +msgstr "" + +#: utils/dates.py:19 utils/dates.py:31 +msgid "July" +msgstr "" + +#: utils/dates.py:19 +msgid "August" +msgstr "" + +#: utils/dates.py:19 +msgid "September" +msgstr "" + +#: utils/dates.py:19 +msgid "October" +msgstr "" + +#: utils/dates.py:19 +msgid "November" +msgstr "" + +#: utils/dates.py:20 +msgid "December" +msgstr "" + +#: utils/dates.py:23 +msgid "jan" +msgstr "" + +#: utils/dates.py:23 +msgid "feb" +msgstr "" + +#: utils/dates.py:23 +msgid "mar" +msgstr "" + +#: utils/dates.py:23 +msgid "apr" +msgstr "" + +#: utils/dates.py:23 +msgid "may" +msgstr "" + +#: utils/dates.py:23 +msgid "jun" +msgstr "" + +#: utils/dates.py:24 +msgid "jul" +msgstr "" + +#: utils/dates.py:24 +msgid "aug" +msgstr "" + +#: utils/dates.py:24 +msgid "sep" +msgstr "" + +#: utils/dates.py:24 +msgid "oct" +msgstr "" + +#: utils/dates.py:24 +msgid "nov" +msgstr "" + +#: utils/dates.py:24 +msgid "dec" +msgstr "" + +#: utils/dates.py:31 +msgid "Jan." +msgstr "" + +#: utils/dates.py:31 +msgid "Feb." +msgstr "" + +#: utils/dates.py:32 +msgid "Aug." +msgstr "" + +#: utils/dates.py:32 +msgid "Sept." +msgstr "" + +#: utils/dates.py:32 +msgid "Oct." +msgstr "" + +#: utils/dates.py:32 +msgid "Nov." +msgstr "" + +#: utils/dates.py:32 +msgid "Dec." +msgstr "" + +#: utils/text.py:130 +msgid "or" +msgstr "" + +#: utils/timesince.py:21 +msgid "year" +msgid_plural "years" +msgstr[0] "" +msgstr[1] "" + +#: utils/timesince.py:22 +msgid "month" +msgid_plural "months" +msgstr[0] "" +msgstr[1] "" + +#: utils/timesince.py:23 +msgid "week" +msgid_plural "weeks" +msgstr[0] "" +msgstr[1] "" + +#: utils/timesince.py:24 +msgid "day" +msgid_plural "days" +msgstr[0] "" +msgstr[1] "" + +#: utils/timesince.py:25 +msgid "hour" +msgid_plural "hours" +msgstr[0] "" +msgstr[1] "" + +#: utils/timesince.py:26 +msgid "minute" +msgid_plural "minutes" +msgstr[0] "" +msgstr[1] "" + +#: utils/timesince.py:45 +msgid "minutes" +msgstr "" + +#: utils/timesince.py:50 +#, python-format +msgid "%(number)d %(type)s" +msgstr "" + +#: utils/timesince.py:56 +#, python-format +msgid ", %(number)d %(type)s" +msgstr "" + +#: utils/translation/trans_real.py:519 +msgid "DATE_FORMAT" +msgstr "N j, Y" + +#: utils/translation/trans_real.py:520 +msgid "DATETIME_FORMAT" +msgstr "N j, Y, P" + +#: utils/translation/trans_real.py:521 +msgid "TIME_FORMAT" +msgstr "P" + +#: utils/translation/trans_real.py:542 +msgid "YEAR_MONTH_FORMAT" +msgstr "F Y" + +#: utils/translation/trans_real.py:543 +msgid "MONTH_DAY_FORMAT" +msgstr "F j" + +#: views/generic/create_update.py:115 +#, python-format +msgid "The %(verbose_name)s was created successfully." +msgstr "" + +#: views/generic/create_update.py:158 +#, python-format +msgid "The %(verbose_name)s was updated successfully." +msgstr "" + +#: views/generic/create_update.py:201 +#, python-format +msgid "The %(verbose_name)s was deleted." +msgstr "" diff --git a/tests/packagedcode/data/license_detection/reference-to-package/base.expected.json b/tests/packagedcode/data/license_detection/reference-to-package/base.expected.json new file mode 100644 index 00000000000..50e7c10e990 --- /dev/null +++ b/tests/packagedcode/data/license_detection/reference-to-package/base.expected.json @@ -0,0 +1,389 @@ +{ + "dependencies": [], + "packages": [ + { + "type": "pypi", + "namespace": null, + "name": "Django", + "version": "1.2.5", + "qualifiers": {}, + "subpath": null, + "primary_language": "Python", + "description": "A high-level Python Web framework that encourages rapid development and clean, pragmatic design.\nUNKNOWN", + "release_date": null, + "parties": [ + { + "type": "person", + "role": "author", + "name": "Django Software Foundation", + "email": "foundation@djangoproject.com", + "url": null + } + ], + "keywords": [ + "Development Status :: 5 - Production/Stable", + "Environment :: Web Environment", + "Framework :: Django", + "Intended Audience :: Developers", + "Operating System :: OS Independent", + "Programming Language :: Python", + "Topic :: Internet :: WWW/HTTP", + "Topic :: Internet :: WWW/HTTP :: Dynamic Content", + "Topic :: Internet :: WWW/HTTP :: WSGI", + "Topic :: Software Development :: Libraries :: Application Frameworks", + "Topic :: Software Development :: Libraries :: Python Modules" + ], + "homepage_url": "http://www.djangoproject.com/", + "download_url": null, + "size": null, + "sha1": null, + "md5": null, + "sha256": null, + "sha512": null, + "bug_tracking_url": null, + "code_view_url": null, + "vcs_url": null, + "copyright": null, + "declared_license_expression": "bsd-new", + "declared_license_expression_spdx": "BSD-3-Clause", + "license_detections": [ + { + "license_expression": "bsd-new", + "detection_rules": [ + "not-combined" + ], + "matches": [ + { + "score": 99.0, + "start_line": 1, + "end_line": 1, + "matched_length": 5, + "match_coverage": 100.0, + "matcher": "1-hash", + "license_expression": "bsd-new", + "rule_identifier": "pypi_bsd_license.RULE", + "referenced_filenames": [], + "is_license_text": false, + "is_license_notice": false, + "is_license_reference": false, + "is_license_tag": true, + "is_license_intro": false, + "rule_length": 5, + "rule_relevance": 99, + "matched_text": "['License :: OSI Approved :: BSD License']", + "licenses": [ + { + "key": "bsd-new", + "name": "BSD-3-Clause", + "short_name": "BSD-3-Clause", + "category": "Permissive", + "is_exception": false, + "is_unknown": false, + "owner": "Regents of the University of California", + "homepage_url": "http://www.opensource.org/licenses/BSD-3-Clause", + "text_url": "http://www.opensource.org/licenses/BSD-3-Clause", + "reference_url": "https://scancode-licensedb.aboutcode.org/bsd-new", + "scancode_text_url": "https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/bsd-new.LICENSE", + "scancode_data_url": "https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/bsd-new.yml", + "spdx_license_key": "BSD-3-Clause", + "spdx_url": "https://spdx.org/licenses/BSD-3-Clause" + } + ] + } + ] + } + ], + "other_license_expression": null, + "other_license_expression_spdx": null, + "other_license_detections": [], + "extracted_license_statement": "{'classifiers': ['License :: OSI Approved :: BSD License']}", + "notice_text": null, + "source_packages": [], + "extra_data": { + "Download-URL": "http://media.djangoproject.com/releases/1.2/Django-1.2.5.tar.gz" + }, + "repository_homepage_url": "https://pypi.org/project/Django", + "repository_download_url": "https://pypi.org/packages/source/D/Django/Django-1.2.5.tar.gz", + "api_data_url": "https://pypi.org/pypi/Django/1.2.5/json", + "package_uid": "pkg:pypi/django@1.2.5?uuid=fixed-uid-done-for-testing-5642512d1758", + "datafile_paths": [ + "PKG-INFO" + ], + "datasource_ids": [ + "pypi_sdist_pkginfo" + ], + "purl": "pkg:pypi/django@1.2.5" + } + ], + "files": [ + { + "path": "PKG-INFO", + "type": "file", + "detected_license_expression": "bsd-new", + "detected_license_expression_spdx": "BSD-3-Clause", + "license_detections": [ + { + "license_expression": "bsd-new", + "detection_rules": [ + "not-combined" + ], + "matches": [ + { + "score": 99.0, + "start_line": 16, + "end_line": 16, + "matched_length": 5, + "match_coverage": 100.0, + "matcher": "2-aho", + "license_expression": "bsd-new", + "rule_identifier": "pypi_bsd_license.RULE", + "referenced_filenames": [], + "is_license_text": false, + "is_license_notice": false, + "is_license_reference": false, + "is_license_tag": true, + "is_license_intro": false, + "rule_length": 5, + "rule_relevance": 99, + "matched_text": "License :: OSI Approved :: BSD License", + "licenses": [ + { + "key": "bsd-new", + "name": "BSD-3-Clause", + "short_name": "BSD-3-Clause", + "category": "Permissive", + "is_exception": false, + "is_unknown": false, + "owner": "Regents of the University of California", + "homepage_url": "http://www.opensource.org/licenses/BSD-3-Clause", + "text_url": "http://www.opensource.org/licenses/BSD-3-Clause", + "reference_url": "https://scancode-licensedb.aboutcode.org/bsd-new", + "scancode_text_url": "https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/bsd-new.LICENSE", + "scancode_data_url": "https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/bsd-new.yml", + "spdx_license_key": "BSD-3-Clause", + "spdx_url": "https://spdx.org/licenses/BSD-3-Clause" + } + ] + } + ] + } + ], + "license_clues": [], + "percentage_of_license_text": 4.03, + "package_data": [ + { + "type": "pypi", + "namespace": null, + "name": "Django", + "version": "1.2.5", + "qualifiers": {}, + "subpath": null, + "primary_language": "Python", + "description": "A high-level Python Web framework that encourages rapid development and clean, pragmatic design.\nUNKNOWN", + "release_date": null, + "parties": [ + { + "type": "person", + "role": "author", + "name": "Django Software Foundation", + "email": "foundation@djangoproject.com", + "url": null + } + ], + "keywords": [ + "Development Status :: 5 - Production/Stable", + "Environment :: Web Environment", + "Framework :: Django", + "Intended Audience :: Developers", + "Operating System :: OS Independent", + "Programming Language :: Python", + "Topic :: Internet :: WWW/HTTP", + "Topic :: Internet :: WWW/HTTP :: Dynamic Content", + "Topic :: Internet :: WWW/HTTP :: WSGI", + "Topic :: Software Development :: Libraries :: Application Frameworks", + "Topic :: Software Development :: Libraries :: Python Modules" + ], + "homepage_url": "http://www.djangoproject.com/", + "download_url": null, + "size": null, + "sha1": null, + "md5": null, + "sha256": null, + "sha512": null, + "bug_tracking_url": null, + "code_view_url": null, + "vcs_url": null, + "copyright": null, + "declared_license_expression": "bsd-new", + "declared_license_expression_spdx": "BSD-3-Clause", + "license_detections": [ + { + "license_expression": "bsd-new", + "detection_rules": [ + "not-combined" + ], + "matches": [ + { + "score": 99.0, + "start_line": 1, + "end_line": 1, + "matched_length": 5, + "match_coverage": 100.0, + "matcher": "1-hash", + "license_expression": "bsd-new", + "rule_identifier": "pypi_bsd_license.RULE", + "referenced_filenames": [], + "is_license_text": false, + "is_license_notice": false, + "is_license_reference": false, + "is_license_tag": true, + "is_license_intro": false, + "rule_length": 5, + "rule_relevance": 99, + "matched_text": "['License :: OSI Approved :: BSD License']", + "licenses": [ + { + "key": "bsd-new", + "name": "BSD-3-Clause", + "short_name": "BSD-3-Clause", + "category": "Permissive", + "is_exception": false, + "is_unknown": false, + "owner": "Regents of the University of California", + "homepage_url": "http://www.opensource.org/licenses/BSD-3-Clause", + "text_url": "http://www.opensource.org/licenses/BSD-3-Clause", + "reference_url": "https://scancode-licensedb.aboutcode.org/bsd-new", + "scancode_text_url": "https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/bsd-new.LICENSE", + "scancode_data_url": "https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/bsd-new.yml", + "spdx_license_key": "BSD-3-Clause", + "spdx_url": "https://spdx.org/licenses/BSD-3-Clause" + } + ] + } + ] + } + ], + "other_license_expression": null, + "other_license_expression_spdx": null, + "other_license_detections": [], + "extracted_license_statement": "{'classifiers': ['License :: OSI Approved :: BSD License']}", + "notice_text": null, + "source_packages": [], + "file_references": [], + "extra_data": { + "Download-URL": "http://media.djangoproject.com/releases/1.2/Django-1.2.5.tar.gz" + }, + "dependencies": [], + "repository_homepage_url": "https://pypi.org/project/Django", + "repository_download_url": "https://pypi.org/packages/source/D/Django/Django-1.2.5.tar.gz", + "api_data_url": "https://pypi.org/pypi/Django/1.2.5/json", + "datasource_id": "pypi_sdist_pkginfo", + "purl": "pkg:pypi/django@1.2.5" + } + ], + "for_packages": [ + "pkg:pypi/django@1.2.5?uuid=fixed-uid-done-for-testing-5642512d1758" + ], + "scan_errors": [] + }, + { + "path": "django.po", + "type": "file", + "detected_license_expression": "bsd-new", + "detected_license_expression_spdx": "BSD-3-Clause", + "license_detections": [ + { + "license_expression": "bsd-new", + "detection_rules": [ + "unknown-reference-in-file-to-package" + ], + "matches": [ + { + "score": 100.0, + "start_line": 1, + "end_line": 1, + "matched_length": 11, + "match_coverage": 100.0, + "matcher": "2-aho", + "license_expression": "free-unknown", + "rule_identifier": "free-unknown-package_1.RULE", + "referenced_filenames": [ + "package" + ], + "is_license_text": false, + "is_license_notice": false, + "is_license_reference": true, + "is_license_tag": false, + "is_license_intro": false, + "rule_length": 11, + "rule_relevance": 100, + "matched_text": "This file is distributed under the same license as the package.", + "licenses": [ + { + "key": "free-unknown", + "name": "Free unknown license detected but not recognized", + "short_name": "Free unknown", + "category": "Unstated License", + "is_exception": false, + "is_unknown": true, + "owner": "Unspecified", + "homepage_url": null, + "text_url": "", + "reference_url": "https://scancode-licensedb.aboutcode.org/free-unknown", + "scancode_text_url": "https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/free-unknown.LICENSE", + "scancode_data_url": "https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/free-unknown.yml", + "spdx_license_key": "LicenseRef-scancode-free-unknown", + "spdx_url": "https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/free-unknown.LICENSE" + } + ] + }, + { + "score": 99.0, + "start_line": 1, + "end_line": 1, + "matched_length": 5, + "match_coverage": 100.0, + "matcher": "1-hash", + "license_expression": "bsd-new", + "rule_identifier": "pypi_bsd_license.RULE", + "referenced_filenames": [], + "is_license_text": false, + "is_license_notice": false, + "is_license_reference": false, + "is_license_tag": true, + "is_license_intro": false, + "rule_length": 5, + "rule_relevance": 99, + "matched_text": "['License :: OSI Approved :: BSD License']", + "licenses": [ + { + "key": "bsd-new", + "name": "BSD-3-Clause", + "short_name": "BSD-3-Clause", + "category": "Permissive", + "is_exception": false, + "is_unknown": false, + "owner": "Regents of the University of California", + "homepage_url": "http://www.opensource.org/licenses/BSD-3-Clause", + "text_url": "http://www.opensource.org/licenses/BSD-3-Clause", + "reference_url": "https://scancode-licensedb.aboutcode.org/bsd-new", + "scancode_text_url": "https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/bsd-new.LICENSE", + "scancode_data_url": "https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/bsd-new.yml", + "spdx_license_key": "BSD-3-Clause", + "spdx_url": "https://spdx.org/licenses/BSD-3-Clause" + } + ] + } + ] + } + ], + "license_clues": [], + "percentage_of_license_text": 0.07, + "package_data": [], + "for_packages": [ + "pkg:pypi/django@1.2.5?uuid=fixed-uid-done-for-testing-5642512d1758" + ], + "scan_errors": [] + } + ] +} \ No newline at end of file diff --git a/tests/packagedcode/data/license_detection/reference-to-package/google_appengine_sdk.expected.json b/tests/packagedcode/data/license_detection/reference-to-package/google_appengine_sdk.expected.json new file mode 100644 index 00000000000..9b2a4934b8a --- /dev/null +++ b/tests/packagedcode/data/license_detection/reference-to-package/google_appengine_sdk.expected.json @@ -0,0 +1,2202 @@ +{ + "dependencies": [], + "packages": [ + { + "type": "pypi", + "namespace": null, + "name": "Django", + "version": null, + "qualifiers": {}, + "subpath": null, + "primary_language": "Python", + "description": "A high-level Python Web framework that encourages rapid development and clean, pragmatic design.", + "release_date": null, + "parties": [ + { + "type": "person", + "role": "author", + "name": "Django Software Foundation", + "email": "foundation@djangoproject.com", + "url": null + } + ], + "keywords": [ + "Development Status :: 5 - Production/Stable", + "Environment :: Web Environment", + "Framework :: Django", + "Intended Audience :: Developers", + "Operating System :: OS Independent", + "Programming Language :: Python", + "Topic :: Internet :: WWW/HTTP", + "Topic :: Internet :: WWW/HTTP :: Dynamic Content", + "Topic :: Internet :: WWW/HTTP :: WSGI", + "Topic :: Software Development :: Libraries :: Application Frameworks", + "Topic :: Software Development :: Libraries :: Python Modules" + ], + "homepage_url": "http://www.djangoproject.com/", + "download_url": null, + "size": null, + "sha1": null, + "md5": null, + "sha256": null, + "sha512": null, + "bug_tracking_url": null, + "code_view_url": null, + "vcs_url": null, + "copyright": null, + "declared_license_expression": "bsd-new", + "declared_license_expression_spdx": "BSD-3-Clause", + "license_detections": [ + { + "license_expression": "bsd-new", + "detection_rules": [ + "not-combined" + ], + "matches": [ + { + "score": 99.0, + "start_line": 1, + "end_line": 1, + "matched_length": 5, + "match_coverage": 100.0, + "matcher": "1-hash", + "license_expression": "bsd-new", + "rule_identifier": "pypi_bsd_license.RULE", + "referenced_filenames": [], + "is_license_text": false, + "is_license_notice": false, + "is_license_reference": false, + "is_license_tag": true, + "is_license_intro": false, + "rule_length": 5, + "rule_relevance": 99, + "matched_text": "['License :: OSI Approved :: BSD License']", + "licenses": [ + { + "key": "bsd-new", + "name": "BSD-3-Clause", + "short_name": "BSD-3-Clause", + "category": "Permissive", + "is_exception": false, + "is_unknown": false, + "owner": "Regents of the University of California", + "homepage_url": "http://www.opensource.org/licenses/BSD-3-Clause", + "text_url": "http://www.opensource.org/licenses/BSD-3-Clause", + "reference_url": "https://scancode-licensedb.aboutcode.org/bsd-new", + "scancode_text_url": "https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/bsd-new.LICENSE", + "scancode_data_url": "https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/bsd-new.yml", + "spdx_license_key": "BSD-3-Clause", + "spdx_url": "https://spdx.org/licenses/BSD-3-Clause" + } + ] + } + ] + } + ], + "other_license_expression": null, + "other_license_expression_spdx": null, + "other_license_detections": [], + "extracted_license_statement": "{'classifiers': ['License :: OSI Approved :: BSD License']}", + "notice_text": null, + "source_packages": [], + "extra_data": { + "Download-URL": "http://media.djangoproject.com/releases/1.2/Django-1.2.5.tar.gz" + }, + "repository_homepage_url": "https://pypi.org/project/Django", + "repository_download_url": null, + "api_data_url": "https://pypi.org/pypi/Django/json", + "package_uid": "pkg:pypi/django?uuid=fixed-uid-done-for-testing-5642512d1758", + "datafile_paths": [ + "django-1.2/setup.py" + ], + "datasource_ids": [ + "pypi_setup_py" + ], + "purl": "pkg:pypi/django" + }, + { + "type": "pypi", + "namespace": null, + "name": "Django", + "version": "1.3.1", + "qualifiers": {}, + "subpath": null, + "primary_language": "Python", + "description": "A high-level Python Web framework that encourages rapid development and clean, pragmatic design.\nUNKNOWN", + "release_date": null, + "parties": [ + { + "type": "person", + "role": "author", + "name": "Django Software Foundation", + "email": "foundation@djangoproject.com", + "url": null + } + ], + "keywords": [ + "Development Status :: 5 - Production/Stable", + "Environment :: Web Environment", + "Framework :: Django", + "Intended Audience :: Developers", + "Operating System :: OS Independent", + "Programming Language :: Python", + "Programming Language :: Python :: 2.4", + "Programming Language :: Python :: 2.5", + "Programming Language :: Python :: 2.6", + "Programming Language :: Python :: 2.7", + "Topic :: Internet :: WWW/HTTP", + "Topic :: Internet :: WWW/HTTP :: Dynamic Content", + "Topic :: Internet :: WWW/HTTP :: WSGI", + "Topic :: Software Development :: Libraries :: Application Frameworks", + "Topic :: Software Development :: Libraries :: Python Modules" + ], + "homepage_url": "http://www.djangoproject.com/", + "download_url": null, + "size": null, + "sha1": null, + "md5": null, + "sha256": null, + "sha512": null, + "bug_tracking_url": null, + "code_view_url": null, + "vcs_url": null, + "copyright": null, + "declared_license_expression": "bsd-new", + "declared_license_expression_spdx": "BSD-3-Clause", + "license_detections": [ + { + "license_expression": "bsd-new", + "detection_rules": [ + "not-combined" + ], + "matches": [ + { + "score": 99.0, + "start_line": 1, + "end_line": 1, + "matched_length": 5, + "match_coverage": 100.0, + "matcher": "1-hash", + "license_expression": "bsd-new", + "rule_identifier": "pypi_bsd_license.RULE", + "referenced_filenames": [], + "is_license_text": false, + "is_license_notice": false, + "is_license_reference": false, + "is_license_tag": true, + "is_license_intro": false, + "rule_length": 5, + "rule_relevance": 99, + "matched_text": "['License :: OSI Approved :: BSD License']", + "licenses": [ + { + "key": "bsd-new", + "name": "BSD-3-Clause", + "short_name": "BSD-3-Clause", + "category": "Permissive", + "is_exception": false, + "is_unknown": false, + "owner": "Regents of the University of California", + "homepage_url": "http://www.opensource.org/licenses/BSD-3-Clause", + "text_url": "http://www.opensource.org/licenses/BSD-3-Clause", + "reference_url": "https://scancode-licensedb.aboutcode.org/bsd-new", + "scancode_text_url": "https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/bsd-new.LICENSE", + "scancode_data_url": "https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/bsd-new.yml", + "spdx_license_key": "BSD-3-Clause", + "spdx_url": "https://spdx.org/licenses/BSD-3-Clause" + } + ] + } + ] + } + ], + "other_license_expression": null, + "other_license_expression_spdx": null, + "other_license_detections": [], + "extracted_license_statement": "{'classifiers': ['License :: OSI Approved :: BSD License']}", + "notice_text": null, + "source_packages": [], + "extra_data": { + "Download-URL": "http://media.djangoproject.com/releases/1.3/Django-1.3.1.tar.gz" + }, + "repository_homepage_url": "https://pypi.org/project/Django", + "repository_download_url": "https://pypi.org/packages/source/D/Django/Django-1.3.1.tar.gz", + "api_data_url": "https://pypi.org/pypi/Django/1.3.1/json", + "package_uid": "pkg:pypi/django@1.3.1?uuid=fixed-uid-done-for-testing-5642512d1758", + "datafile_paths": [ + "django-1.3/PKG-INFO" + ], + "datasource_ids": [ + "pypi_sdist_pkginfo" + ], + "purl": "pkg:pypi/django@1.3.1" + } + ], + "files": [ + { + "path": "django-1.2", + "type": "directory", + "detected_license_expression": null, + "detected_license_expression_spdx": null, + "license_detections": [], + "license_clues": [], + "percentage_of_license_text": 0, + "package_data": [], + "for_packages": [], + "scan_errors": [] + }, + { + "path": "django-1.2/AUTHORS", + "type": "file", + "detected_license_expression": null, + "detected_license_expression_spdx": null, + "license_detections": [], + "license_clues": [], + "percentage_of_license_text": 0, + "package_data": [], + "for_packages": [ + "pkg:pypi/django?uuid=fixed-uid-done-for-testing-5642512d1758" + ], + "scan_errors": [] + }, + { + "path": "django-1.2/INSTALL", + "type": "file", + "detected_license_expression": null, + "detected_license_expression_spdx": null, + "license_detections": [], + "license_clues": [], + "percentage_of_license_text": 0, + "package_data": [], + "for_packages": [ + "pkg:pypi/django?uuid=fixed-uid-done-for-testing-5642512d1758" + ], + "scan_errors": [] + }, + { + "path": "django-1.2/MANIFEST.in", + "type": "file", + "detected_license_expression": "apache-2.0 AND cc-by-nc-nd-3.0 AND other-permissive AND proprietary-license", + "detected_license_expression_spdx": "Apache-2.0 AND CC-BY-NC-ND-3.0 AND LicenseRef-scancode-other-permissive AND LicenseRef-scancode-proprietary-license", + "license_detections": [ + { + "license_expression": "apache-2.0 AND cc-by-nc-nd-3.0 AND other-permissive AND proprietary-license", + "detection_rules": [ + "not-combined" + ], + "matches": [ + { + "score": 5.88, + "start_line": 7, + "end_line": 9, + "matched_length": 5, + "match_coverage": 5.88, + "matcher": "3-seq", + "license_expression": "apache-2.0 AND cc-by-nc-nd-3.0 AND other-permissive AND proprietary-license", + "rule_identifier": "apache-2.0_and_cc-by-nc-nd-3.0_and_other-permissive_and_proprietary-license_1.RULE", + "referenced_filenames": [ + "LICENSE.txt" + ], + "is_license_text": false, + "is_license_notice": true, + "is_license_reference": false, + "is_license_tag": false, + "is_license_intro": false, + "rule_length": 85, + "rule_relevance": 100, + "matched_text": "LICENSE\n[include] [django]/[dispatch]/license.txt\n[include] [django]/[utils]/[simplejson]/LICENSE.txt", + "licenses": [ + { + "key": "apache-2.0", + "name": "Apache License 2.0", + "short_name": "Apache 2.0", + "category": "Permissive", + "is_exception": false, + "is_unknown": false, + "owner": "Apache Software Foundation", + "homepage_url": "http://www.apache.org/licenses/", + "text_url": "http://www.apache.org/licenses/LICENSE-2.0", + "reference_url": "https://scancode-licensedb.aboutcode.org/apache-2.0", + "scancode_text_url": "https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/apache-2.0.LICENSE", + "scancode_data_url": "https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/apache-2.0.yml", + "spdx_license_key": "Apache-2.0", + "spdx_url": "https://spdx.org/licenses/Apache-2.0" + }, + { + "key": "cc-by-nc-nd-3.0", + "name": "Creative Commons Attribution Non-Commercial No Derivatives License 3.0", + "short_name": "CC-BY-NC-ND-3.0", + "category": "Source-available", + "is_exception": false, + "is_unknown": false, + "owner": "Creative Commons", + "homepage_url": "http://creativecommons.org/licenses/by-nc-nd/3.0/", + "text_url": "http://creativecommons.org/licenses/by-nc-nd/3.0/legalcode", + "reference_url": "https://scancode-licensedb.aboutcode.org/cc-by-nc-nd-3.0", + "scancode_text_url": "https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/cc-by-nc-nd-3.0.LICENSE", + "scancode_data_url": "https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/cc-by-nc-nd-3.0.yml", + "spdx_license_key": "CC-BY-NC-ND-3.0", + "spdx_url": "https://spdx.org/licenses/CC-BY-NC-ND-3.0" + }, + { + "key": "other-permissive", + "name": "Other Permissive Licenses", + "short_name": "Other Permissive Licenses", + "category": "Permissive", + "is_exception": false, + "is_unknown": false, + "owner": "nexB", + "homepage_url": null, + "text_url": "", + "reference_url": "https://scancode-licensedb.aboutcode.org/other-permissive", + "scancode_text_url": "https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/other-permissive.LICENSE", + "scancode_data_url": "https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/other-permissive.yml", + "spdx_license_key": "LicenseRef-scancode-other-permissive", + "spdx_url": "https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/other-permissive.LICENSE" + }, + { + "key": "proprietary-license", + "name": "Proprietary License", + "short_name": "Proprietary License", + "category": "Commercial", + "is_exception": false, + "is_unknown": false, + "owner": "Unspecified", + "homepage_url": null, + "text_url": "", + "reference_url": "https://scancode-licensedb.aboutcode.org/proprietary-license", + "scancode_text_url": "https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/proprietary-license.LICENSE", + "scancode_data_url": "https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/proprietary-license.yml", + "spdx_license_key": "LicenseRef-scancode-proprietary-license", + "spdx_url": "https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/proprietary-license.LICENSE" + } + ] + } + ] + } + ], + "license_clues": [], + "percentage_of_license_text": 3.38, + "package_data": [], + "for_packages": [ + "pkg:pypi/django?uuid=fixed-uid-done-for-testing-5642512d1758" + ], + "scan_errors": [] + }, + { + "path": "django-1.2/METADATA", + "type": "file", + "detected_license_expression": null, + "detected_license_expression_spdx": null, + "license_detections": [], + "license_clues": [], + "percentage_of_license_text": 0, + "package_data": [], + "for_packages": [ + "pkg:pypi/django?uuid=fixed-uid-done-for-testing-5642512d1758" + ], + "scan_errors": [] + }, + { + "path": "django-1.2/README", + "type": "file", + "detected_license_expression": null, + "detected_license_expression_spdx": null, + "license_detections": [], + "license_clues": [], + "percentage_of_license_text": 0, + "package_data": [], + "for_packages": [ + "pkg:pypi/django?uuid=fixed-uid-done-for-testing-5642512d1758" + ], + "scan_errors": [] + }, + { + "path": "django-1.2/django", + "type": "directory", + "detected_license_expression": null, + "detected_license_expression_spdx": null, + "license_detections": [], + "license_clues": [], + "percentage_of_license_text": 0, + "package_data": [], + "for_packages": [], + "scan_errors": [] + }, + { + "path": "django-1.2/django/conf", + "type": "directory", + "detected_license_expression": null, + "detected_license_expression_spdx": null, + "license_detections": [], + "license_clues": [], + "percentage_of_license_text": 0, + "package_data": [], + "for_packages": [], + "scan_errors": [] + }, + { + "path": "django-1.2/django/conf/locale", + "type": "directory", + "detected_license_expression": null, + "detected_license_expression_spdx": null, + "license_detections": [], + "license_clues": [], + "percentage_of_license_text": 0, + "package_data": [], + "for_packages": [], + "scan_errors": [] + }, + { + "path": "django-1.2/django/conf/locale/en", + "type": "directory", + "detected_license_expression": null, + "detected_license_expression_spdx": null, + "license_detections": [], + "license_clues": [], + "percentage_of_license_text": 0, + "package_data": [], + "for_packages": [], + "scan_errors": [] + }, + { + "path": "django-1.2/django/conf/locale/en/LC_MESSAGES", + "type": "directory", + "detected_license_expression": null, + "detected_license_expression_spdx": null, + "license_detections": [], + "license_clues": [], + "percentage_of_license_text": 0, + "package_data": [], + "for_packages": [], + "scan_errors": [] + }, + { + "path": "django-1.2/django/conf/locale/en/LC_MESSAGES/djangojs.po", + "type": "file", + "detected_license_expression": "bsd-new", + "detected_license_expression_spdx": "BSD-3-Clause", + "license_detections": [ + { + "license_expression": "bsd-new", + "detection_rules": [ + "unknown-reference-in-file-to-package" + ], + "matches": [ + { + "score": 100.0, + "start_line": 1, + "end_line": 1, + "matched_length": 12, + "match_coverage": 100.0, + "matcher": "2-aho", + "license_expression": "free-unknown", + "rule_identifier": "free-unknown-package_3.RULE", + "referenced_filenames": [ + "package" + ], + "is_license_text": false, + "is_license_notice": false, + "is_license_reference": true, + "is_license_tag": false, + "is_license_intro": false, + "rule_length": 12, + "rule_relevance": 100, + "matched_text": "This file is distributed under the same license as the Django package.", + "licenses": [ + { + "key": "free-unknown", + "name": "Free unknown license detected but not recognized", + "short_name": "Free unknown", + "category": "Unstated License", + "is_exception": false, + "is_unknown": true, + "owner": "Unspecified", + "homepage_url": null, + "text_url": "", + "reference_url": "https://scancode-licensedb.aboutcode.org/free-unknown", + "scancode_text_url": "https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/free-unknown.LICENSE", + "scancode_data_url": "https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/free-unknown.yml", + "spdx_license_key": "LicenseRef-scancode-free-unknown", + "spdx_url": "https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/free-unknown.LICENSE" + } + ] + }, + { + "score": 99.0, + "start_line": 1, + "end_line": 1, + "matched_length": 5, + "match_coverage": 100.0, + "matcher": "1-hash", + "license_expression": "bsd-new", + "rule_identifier": "pypi_bsd_license.RULE", + "referenced_filenames": [], + "is_license_text": false, + "is_license_notice": false, + "is_license_reference": false, + "is_license_tag": true, + "is_license_intro": false, + "rule_length": 5, + "rule_relevance": 99, + "matched_text": "['License :: OSI Approved :: BSD License']", + "licenses": [ + { + "key": "bsd-new", + "name": "BSD-3-Clause", + "short_name": "BSD-3-Clause", + "category": "Permissive", + "is_exception": false, + "is_unknown": false, + "owner": "Regents of the University of California", + "homepage_url": "http://www.opensource.org/licenses/BSD-3-Clause", + "text_url": "http://www.opensource.org/licenses/BSD-3-Clause", + "reference_url": "https://scancode-licensedb.aboutcode.org/bsd-new", + "scancode_text_url": "https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/bsd-new.LICENSE", + "scancode_data_url": "https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/bsd-new.yml", + "spdx_license_key": "BSD-3-Clause", + "spdx_url": "https://spdx.org/licenses/BSD-3-Clause" + } + ] + } + ] + } + ], + "license_clues": [], + "percentage_of_license_text": 2.15, + "package_data": [], + "for_packages": [ + "pkg:pypi/django?uuid=fixed-uid-done-for-testing-5642512d1758" + ], + "scan_errors": [] + }, + { + "path": "django-1.2/django/conf/locale/en/formats.py", + "type": "file", + "detected_license_expression": "bsd-new", + "detected_license_expression_spdx": "BSD-3-Clause", + "license_detections": [ + { + "license_expression": "bsd-new", + "detection_rules": [ + "unknown-reference-in-file-to-package" + ], + "matches": [ + { + "score": 100.0, + "start_line": 2, + "end_line": 2, + "matched_length": 12, + "match_coverage": 100.0, + "matcher": "2-aho", + "license_expression": "free-unknown", + "rule_identifier": "free-unknown-package_3.RULE", + "referenced_filenames": [ + "package" + ], + "is_license_text": false, + "is_license_notice": false, + "is_license_reference": true, + "is_license_tag": false, + "is_license_intro": false, + "rule_length": 12, + "rule_relevance": 100, + "matched_text": "This file is distributed under the same license as the Django package.", + "licenses": [ + { + "key": "free-unknown", + "name": "Free unknown license detected but not recognized", + "short_name": "Free unknown", + "category": "Unstated License", + "is_exception": false, + "is_unknown": true, + "owner": "Unspecified", + "homepage_url": null, + "text_url": "", + "reference_url": "https://scancode-licensedb.aboutcode.org/free-unknown", + "scancode_text_url": "https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/free-unknown.LICENSE", + "scancode_data_url": "https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/free-unknown.yml", + "spdx_license_key": "LicenseRef-scancode-free-unknown", + "spdx_url": "https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/free-unknown.LICENSE" + } + ] + }, + { + "score": 99.0, + "start_line": 1, + "end_line": 1, + "matched_length": 5, + "match_coverage": 100.0, + "matcher": "1-hash", + "license_expression": "bsd-new", + "rule_identifier": "pypi_bsd_license.RULE", + "referenced_filenames": [], + "is_license_text": false, + "is_license_notice": false, + "is_license_reference": false, + "is_license_tag": true, + "is_license_intro": false, + "rule_length": 5, + "rule_relevance": 99, + "matched_text": "['License :: OSI Approved :: BSD License']", + "licenses": [ + { + "key": "bsd-new", + "name": "BSD-3-Clause", + "short_name": "BSD-3-Clause", + "category": "Permissive", + "is_exception": false, + "is_unknown": false, + "owner": "Regents of the University of California", + "homepage_url": "http://www.opensource.org/licenses/BSD-3-Clause", + "text_url": "http://www.opensource.org/licenses/BSD-3-Clause", + "reference_url": "https://scancode-licensedb.aboutcode.org/bsd-new", + "scancode_text_url": "https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/bsd-new.LICENSE", + "scancode_data_url": "https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/bsd-new.yml", + "spdx_license_key": "BSD-3-Clause", + "spdx_url": "https://spdx.org/licenses/BSD-3-Clause" + } + ] + } + ] + } + ], + "license_clues": [], + "percentage_of_license_text": 5.15, + "package_data": [], + "for_packages": [ + "pkg:pypi/django?uuid=fixed-uid-done-for-testing-5642512d1758" + ], + "scan_errors": [] + }, + { + "path": "django-1.2/django/conf/locale/uk", + "type": "directory", + "detected_license_expression": null, + "detected_license_expression_spdx": null, + "license_detections": [], + "license_clues": [], + "percentage_of_license_text": 0, + "package_data": [], + "for_packages": [], + "scan_errors": [] + }, + { + "path": "django-1.2/django/conf/locale/uk/LC_MESSAGES", + "type": "directory", + "detected_license_expression": null, + "detected_license_expression_spdx": null, + "license_detections": [], + "license_clues": [], + "percentage_of_license_text": 0, + "package_data": [], + "for_packages": [], + "scan_errors": [] + }, + { + "path": "django-1.2/django/conf/locale/uk/LC_MESSAGES/django.po", + "type": "file", + "detected_license_expression": "bsd-new", + "detected_license_expression_spdx": "BSD-3-Clause", + "license_detections": [ + { + "license_expression": "bsd-new", + "detection_rules": [ + "unknown-reference-in-file-to-package" + ], + "matches": [ + { + "score": 100.0, + "start_line": 3, + "end_line": 3, + "matched_length": 12, + "match_coverage": 100.0, + "matcher": "2-aho", + "license_expression": "free-unknown", + "rule_identifier": "free-unknown-package_2.RULE", + "referenced_filenames": [ + "package" + ], + "is_license_text": false, + "is_license_notice": false, + "is_license_reference": true, + "is_license_tag": false, + "is_license_intro": false, + "rule_length": 12, + "rule_relevance": 100, + "matched_text": "This file is distributed under the same license as the PACKAGE package.", + "licenses": [ + { + "key": "free-unknown", + "name": "Free unknown license detected but not recognized", + "short_name": "Free unknown", + "category": "Unstated License", + "is_exception": false, + "is_unknown": true, + "owner": "Unspecified", + "homepage_url": null, + "text_url": "", + "reference_url": "https://scancode-licensedb.aboutcode.org/free-unknown", + "scancode_text_url": "https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/free-unknown.LICENSE", + "scancode_data_url": "https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/free-unknown.yml", + "spdx_license_key": "LicenseRef-scancode-free-unknown", + "spdx_url": "https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/free-unknown.LICENSE" + } + ] + }, + { + "score": 99.0, + "start_line": 1, + "end_line": 1, + "matched_length": 5, + "match_coverage": 100.0, + "matcher": "1-hash", + "license_expression": "bsd-new", + "rule_identifier": "pypi_bsd_license.RULE", + "referenced_filenames": [], + "is_license_text": false, + "is_license_notice": false, + "is_license_reference": false, + "is_license_tag": true, + "is_license_intro": false, + "rule_length": 5, + "rule_relevance": 99, + "matched_text": "['License :: OSI Approved :: BSD License']", + "licenses": [ + { + "key": "bsd-new", + "name": "BSD-3-Clause", + "short_name": "BSD-3-Clause", + "category": "Permissive", + "is_exception": false, + "is_unknown": false, + "owner": "Regents of the University of California", + "homepage_url": "http://www.opensource.org/licenses/BSD-3-Clause", + "text_url": "http://www.opensource.org/licenses/BSD-3-Clause", + "reference_url": "https://scancode-licensedb.aboutcode.org/bsd-new", + "scancode_text_url": "https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/bsd-new.LICENSE", + "scancode_data_url": "https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/bsd-new.yml", + "spdx_license_key": "BSD-3-Clause", + "spdx_url": "https://spdx.org/licenses/BSD-3-Clause" + } + ] + } + ] + } + ], + "license_clues": [], + "percentage_of_license_text": 0.07, + "package_data": [], + "for_packages": [ + "pkg:pypi/django?uuid=fixed-uid-done-for-testing-5642512d1758" + ], + "scan_errors": [] + }, + { + "path": "django-1.2/django/conf/locale/uk/LC_MESSAGES/djangojs.po", + "type": "file", + "detected_license_expression": "bsd-new", + "detected_license_expression_spdx": "BSD-3-Clause", + "license_detections": [ + { + "license_expression": "bsd-new", + "detection_rules": [ + "unknown-reference-in-file-to-package" + ], + "matches": [ + { + "score": 100.0, + "start_line": 3, + "end_line": 3, + "matched_length": 12, + "match_coverage": 100.0, + "matcher": "2-aho", + "license_expression": "free-unknown", + "rule_identifier": "free-unknown-package_2.RULE", + "referenced_filenames": [ + "package" + ], + "is_license_text": false, + "is_license_notice": false, + "is_license_reference": true, + "is_license_tag": false, + "is_license_intro": false, + "rule_length": 12, + "rule_relevance": 100, + "matched_text": "This file is distributed under the same license as the PACKAGE package.", + "licenses": [ + { + "key": "free-unknown", + "name": "Free unknown license detected but not recognized", + "short_name": "Free unknown", + "category": "Unstated License", + "is_exception": false, + "is_unknown": true, + "owner": "Unspecified", + "homepage_url": null, + "text_url": "", + "reference_url": "https://scancode-licensedb.aboutcode.org/free-unknown", + "scancode_text_url": "https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/free-unknown.LICENSE", + "scancode_data_url": "https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/free-unknown.yml", + "spdx_license_key": "LicenseRef-scancode-free-unknown", + "spdx_url": "https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/free-unknown.LICENSE" + } + ] + }, + { + "score": 99.0, + "start_line": 1, + "end_line": 1, + "matched_length": 5, + "match_coverage": 100.0, + "matcher": "1-hash", + "license_expression": "bsd-new", + "rule_identifier": "pypi_bsd_license.RULE", + "referenced_filenames": [], + "is_license_text": false, + "is_license_notice": false, + "is_license_reference": false, + "is_license_tag": true, + "is_license_intro": false, + "rule_length": 5, + "rule_relevance": 99, + "matched_text": "['License :: OSI Approved :: BSD License']", + "licenses": [ + { + "key": "bsd-new", + "name": "BSD-3-Clause", + "short_name": "BSD-3-Clause", + "category": "Permissive", + "is_exception": false, + "is_unknown": false, + "owner": "Regents of the University of California", + "homepage_url": "http://www.opensource.org/licenses/BSD-3-Clause", + "text_url": "http://www.opensource.org/licenses/BSD-3-Clause", + "reference_url": "https://scancode-licensedb.aboutcode.org/bsd-new", + "scancode_text_url": "https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/bsd-new.LICENSE", + "scancode_data_url": "https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/bsd-new.yml", + "spdx_license_key": "BSD-3-Clause", + "spdx_url": "https://spdx.org/licenses/BSD-3-Clause" + } + ] + } + ] + } + ], + "license_clues": [], + "percentage_of_license_text": 2.49, + "package_data": [], + "for_packages": [ + "pkg:pypi/django?uuid=fixed-uid-done-for-testing-5642512d1758" + ], + "scan_errors": [] + }, + { + "path": "django-1.2/django/conf/locale/uk/formats.py", + "type": "file", + "detected_license_expression": "bsd-new", + "detected_license_expression_spdx": "BSD-3-Clause", + "license_detections": [ + { + "license_expression": "bsd-new", + "detection_rules": [ + "unknown-reference-in-file-to-package" + ], + "matches": [ + { + "score": 100.0, + "start_line": 2, + "end_line": 2, + "matched_length": 12, + "match_coverage": 100.0, + "matcher": "2-aho", + "license_expression": "free-unknown", + "rule_identifier": "free-unknown-package_3.RULE", + "referenced_filenames": [ + "package" + ], + "is_license_text": false, + "is_license_notice": false, + "is_license_reference": true, + "is_license_tag": false, + "is_license_intro": false, + "rule_length": 12, + "rule_relevance": 100, + "matched_text": "This file is distributed under the same license as the Django package.", + "licenses": [ + { + "key": "free-unknown", + "name": "Free unknown license detected but not recognized", + "short_name": "Free unknown", + "category": "Unstated License", + "is_exception": false, + "is_unknown": true, + "owner": "Unspecified", + "homepage_url": null, + "text_url": "", + "reference_url": "https://scancode-licensedb.aboutcode.org/free-unknown", + "scancode_text_url": "https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/free-unknown.LICENSE", + "scancode_data_url": "https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/free-unknown.yml", + "spdx_license_key": "LicenseRef-scancode-free-unknown", + "spdx_url": "https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/free-unknown.LICENSE" + } + ] + }, + { + "score": 99.0, + "start_line": 1, + "end_line": 1, + "matched_length": 5, + "match_coverage": 100.0, + "matcher": "1-hash", + "license_expression": "bsd-new", + "rule_identifier": "pypi_bsd_license.RULE", + "referenced_filenames": [], + "is_license_text": false, + "is_license_notice": false, + "is_license_reference": false, + "is_license_tag": true, + "is_license_intro": false, + "rule_length": 5, + "rule_relevance": 99, + "matched_text": "['License :: OSI Approved :: BSD License']", + "licenses": [ + { + "key": "bsd-new", + "name": "BSD-3-Clause", + "short_name": "BSD-3-Clause", + "category": "Permissive", + "is_exception": false, + "is_unknown": false, + "owner": "Regents of the University of California", + "homepage_url": "http://www.opensource.org/licenses/BSD-3-Clause", + "text_url": "http://www.opensource.org/licenses/BSD-3-Clause", + "reference_url": "https://scancode-licensedb.aboutcode.org/bsd-new", + "scancode_text_url": "https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/bsd-new.LICENSE", + "scancode_data_url": "https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/bsd-new.yml", + "spdx_license_key": "BSD-3-Clause", + "spdx_url": "https://spdx.org/licenses/BSD-3-Clause" + } + ] + } + ] + } + ], + "license_clues": [], + "percentage_of_license_text": 17.91, + "package_data": [], + "for_packages": [ + "pkg:pypi/django?uuid=fixed-uid-done-for-testing-5642512d1758" + ], + "scan_errors": [] + }, + { + "path": "django-1.2/setup.cfg", + "type": "file", + "detected_license_expression": null, + "detected_license_expression_spdx": null, + "license_detections": [], + "license_clues": [], + "percentage_of_license_text": 0, + "package_data": [ + { + "type": "pypi", + "namespace": null, + "name": null, + "version": null, + "qualifiers": {}, + "subpath": null, + "primary_language": "Python", + "description": null, + "release_date": null, + "parties": [], + "keywords": [], + "homepage_url": null, + "download_url": null, + "size": null, + "sha1": null, + "md5": null, + "sha256": null, + "sha512": null, + "bug_tracking_url": null, + "code_view_url": null, + "vcs_url": null, + "copyright": null, + "declared_license_expression": null, + "declared_license_expression_spdx": null, + "license_detections": [], + "other_license_expression": null, + "other_license_expression_spdx": null, + "other_license_detections": [], + "extracted_license_statement": null, + "notice_text": null, + "source_packages": [], + "file_references": [], + "extra_data": {}, + "dependencies": [], + "repository_homepage_url": null, + "repository_download_url": null, + "api_data_url": null, + "datasource_id": "pypi_setup_cfg", + "purl": null + } + ], + "for_packages": [ + "pkg:pypi/django?uuid=fixed-uid-done-for-testing-5642512d1758" + ], + "scan_errors": [] + }, + { + "path": "django-1.2/setup.py", + "type": "file", + "detected_license_expression": "bsd-new", + "detected_license_expression_spdx": "BSD-3-Clause", + "license_detections": [ + { + "license_expression": "bsd-new", + "detection_rules": [ + "not-combined" + ], + "matches": [ + { + "score": 99.0, + "start_line": 89, + "end_line": 89, + "matched_length": 5, + "match_coverage": 100.0, + "matcher": "2-aho", + "license_expression": "bsd-new", + "rule_identifier": "pypi_bsd_license.RULE", + "referenced_filenames": [], + "is_license_text": false, + "is_license_notice": false, + "is_license_reference": false, + "is_license_tag": true, + "is_license_intro": false, + "rule_length": 5, + "rule_relevance": 99, + "matched_text": "License :: OSI Approved :: BSD License',", + "licenses": [ + { + "key": "bsd-new", + "name": "BSD-3-Clause", + "short_name": "BSD-3-Clause", + "category": "Permissive", + "is_exception": false, + "is_unknown": false, + "owner": "Regents of the University of California", + "homepage_url": "http://www.opensource.org/licenses/BSD-3-Clause", + "text_url": "http://www.opensource.org/licenses/BSD-3-Clause", + "reference_url": "https://scancode-licensedb.aboutcode.org/bsd-new", + "scancode_text_url": "https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/bsd-new.LICENSE", + "scancode_data_url": "https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/bsd-new.yml", + "spdx_license_key": "BSD-3-Clause", + "spdx_url": "https://spdx.org/licenses/BSD-3-Clause" + } + ] + } + ] + } + ], + "license_clues": [], + "percentage_of_license_text": 0.99, + "package_data": [ + { + "type": "pypi", + "namespace": null, + "name": "Django", + "version": null, + "qualifiers": {}, + "subpath": null, + "primary_language": "Python", + "description": "A high-level Python Web framework that encourages rapid development and clean, pragmatic design.", + "release_date": null, + "parties": [ + { + "type": "person", + "role": "author", + "name": "Django Software Foundation", + "email": "foundation@djangoproject.com", + "url": null + } + ], + "keywords": [ + "Development Status :: 5 - Production/Stable", + "Environment :: Web Environment", + "Framework :: Django", + "Intended Audience :: Developers", + "Operating System :: OS Independent", + "Programming Language :: Python", + "Topic :: Internet :: WWW/HTTP", + "Topic :: Internet :: WWW/HTTP :: Dynamic Content", + "Topic :: Internet :: WWW/HTTP :: WSGI", + "Topic :: Software Development :: Libraries :: Application Frameworks", + "Topic :: Software Development :: Libraries :: Python Modules" + ], + "homepage_url": "http://www.djangoproject.com/", + "download_url": null, + "size": null, + "sha1": null, + "md5": null, + "sha256": null, + "sha512": null, + "bug_tracking_url": null, + "code_view_url": null, + "vcs_url": null, + "copyright": null, + "declared_license_expression": "bsd-new", + "declared_license_expression_spdx": "BSD-3-Clause", + "license_detections": [ + { + "license_expression": "bsd-new", + "detection_rules": [ + "not-combined" + ], + "matches": [ + { + "score": 99.0, + "start_line": 1, + "end_line": 1, + "matched_length": 5, + "match_coverage": 100.0, + "matcher": "1-hash", + "license_expression": "bsd-new", + "rule_identifier": "pypi_bsd_license.RULE", + "referenced_filenames": [], + "is_license_text": false, + "is_license_notice": false, + "is_license_reference": false, + "is_license_tag": true, + "is_license_intro": false, + "rule_length": 5, + "rule_relevance": 99, + "matched_text": "['License :: OSI Approved :: BSD License']", + "licenses": [ + { + "key": "bsd-new", + "name": "BSD-3-Clause", + "short_name": "BSD-3-Clause", + "category": "Permissive", + "is_exception": false, + "is_unknown": false, + "owner": "Regents of the University of California", + "homepage_url": "http://www.opensource.org/licenses/BSD-3-Clause", + "text_url": "http://www.opensource.org/licenses/BSD-3-Clause", + "reference_url": "https://scancode-licensedb.aboutcode.org/bsd-new", + "scancode_text_url": "https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/bsd-new.LICENSE", + "scancode_data_url": "https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/bsd-new.yml", + "spdx_license_key": "BSD-3-Clause", + "spdx_url": "https://spdx.org/licenses/BSD-3-Clause" + } + ] + } + ] + } + ], + "other_license_expression": null, + "other_license_expression_spdx": null, + "other_license_detections": [], + "extracted_license_statement": "{'classifiers': ['License :: OSI Approved :: BSD License']}", + "notice_text": null, + "source_packages": [], + "file_references": [], + "extra_data": { + "Download-URL": "http://media.djangoproject.com/releases/1.2/Django-1.2.5.tar.gz" + }, + "dependencies": [], + "repository_homepage_url": "https://pypi.org/project/Django", + "repository_download_url": null, + "api_data_url": "https://pypi.org/pypi/Django/json", + "datasource_id": "pypi_setup_py", + "purl": "pkg:pypi/django" + } + ], + "for_packages": [ + "pkg:pypi/django?uuid=fixed-uid-done-for-testing-5642512d1758" + ], + "scan_errors": [] + }, + { + "path": "django-1.3", + "type": "directory", + "detected_license_expression": null, + "detected_license_expression_spdx": null, + "license_detections": [], + "license_clues": [], + "percentage_of_license_text": 0, + "package_data": [], + "for_packages": [], + "scan_errors": [] + }, + { + "path": "django-1.3/AUTHORS", + "type": "file", + "detected_license_expression": null, + "detected_license_expression_spdx": null, + "license_detections": [], + "license_clues": [], + "percentage_of_license_text": 0, + "package_data": [], + "for_packages": [ + "pkg:pypi/django@1.3.1?uuid=fixed-uid-done-for-testing-5642512d1758" + ], + "scan_errors": [] + }, + { + "path": "django-1.3/INSTALL", + "type": "file", + "detected_license_expression": null, + "detected_license_expression_spdx": null, + "license_detections": [], + "license_clues": [], + "percentage_of_license_text": 0, + "package_data": [], + "for_packages": [ + "pkg:pypi/django@1.3.1?uuid=fixed-uid-done-for-testing-5642512d1758" + ], + "scan_errors": [] + }, + { + "path": "django-1.3/LICENSE", + "type": "file", + "detected_license_expression": "bsd-new", + "detected_license_expression_spdx": "BSD-3-Clause", + "license_detections": [ + { + "license_expression": "bsd-new", + "detection_rules": [ + "not-combined" + ], + "matches": [ + { + "score": 100.0, + "start_line": 4, + "end_line": 27, + "matched_length": 214, + "match_coverage": 100.0, + "matcher": "2-aho", + "license_expression": "bsd-new", + "rule_identifier": "bsd-new_683.RULE", + "referenced_filenames": [], + "is_license_text": true, + "is_license_notice": false, + "is_license_reference": false, + "is_license_tag": false, + "is_license_intro": false, + "rule_length": 214, + "rule_relevance": 100, + "matched_text": "Redistribution and use in source and binary forms, with or without modification,\nare permitted provided that the following conditions are met:\n\n 1. Redistributions of source code must retain the above copyright notice, \n this list of conditions and the following disclaimer.\n \n 2. Redistributions in binary form must reproduce the above copyright \n notice, this list of conditions and the following disclaimer in the\n documentation and/or other materials provided with the distribution.\n\n 3. Neither the name of Django nor the names of its contributors may be used\n to endorse or promote products derived from this software without\n specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\nANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\nWARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR\nANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\nLOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON\nANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\nSOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.", + "licenses": [ + { + "key": "bsd-new", + "name": "BSD-3-Clause", + "short_name": "BSD-3-Clause", + "category": "Permissive", + "is_exception": false, + "is_unknown": false, + "owner": "Regents of the University of California", + "homepage_url": "http://www.opensource.org/licenses/BSD-3-Clause", + "text_url": "http://www.opensource.org/licenses/BSD-3-Clause", + "reference_url": "https://scancode-licensedb.aboutcode.org/bsd-new", + "scancode_text_url": "https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/bsd-new.LICENSE", + "scancode_data_url": "https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/bsd-new.yml", + "spdx_license_key": "BSD-3-Clause", + "spdx_url": "https://spdx.org/licenses/BSD-3-Clause" + } + ] + } + ] + } + ], + "license_clues": [], + "percentage_of_license_text": 95.11, + "package_data": [], + "for_packages": [ + "pkg:pypi/django@1.3.1?uuid=fixed-uid-done-for-testing-5642512d1758" + ], + "scan_errors": [] + }, + { + "path": "django-1.3/MANIFEST.in", + "type": "file", + "detected_license_expression": "apache-2.0 AND cc-by-nc-nd-3.0 AND other-permissive AND proprietary-license", + "detected_license_expression_spdx": "Apache-2.0 AND CC-BY-NC-ND-3.0 AND LicenseRef-scancode-other-permissive AND LicenseRef-scancode-proprietary-license", + "license_detections": [ + { + "license_expression": "apache-2.0 AND cc-by-nc-nd-3.0 AND other-permissive AND proprietary-license", + "detection_rules": [ + "not-combined" + ], + "matches": [ + { + "score": 5.88, + "start_line": 7, + "end_line": 9, + "matched_length": 5, + "match_coverage": 5.88, + "matcher": "3-seq", + "license_expression": "apache-2.0 AND cc-by-nc-nd-3.0 AND other-permissive AND proprietary-license", + "rule_identifier": "apache-2.0_and_cc-by-nc-nd-3.0_and_other-permissive_and_proprietary-license_1.RULE", + "referenced_filenames": [ + "LICENSE.txt" + ], + "is_license_text": false, + "is_license_notice": true, + "is_license_reference": false, + "is_license_tag": false, + "is_license_intro": false, + "rule_length": 85, + "rule_relevance": 100, + "matched_text": "LICENSE\n[include] [django]/[dispatch]/license.txt\n[include] [django]/[utils]/[simplejson]/LICENSE.txt", + "licenses": [ + { + "key": "apache-2.0", + "name": "Apache License 2.0", + "short_name": "Apache 2.0", + "category": "Permissive", + "is_exception": false, + "is_unknown": false, + "owner": "Apache Software Foundation", + "homepage_url": "http://www.apache.org/licenses/", + "text_url": "http://www.apache.org/licenses/LICENSE-2.0", + "reference_url": "https://scancode-licensedb.aboutcode.org/apache-2.0", + "scancode_text_url": "https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/apache-2.0.LICENSE", + "scancode_data_url": "https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/apache-2.0.yml", + "spdx_license_key": "Apache-2.0", + "spdx_url": "https://spdx.org/licenses/Apache-2.0" + }, + { + "key": "cc-by-nc-nd-3.0", + "name": "Creative Commons Attribution Non-Commercial No Derivatives License 3.0", + "short_name": "CC-BY-NC-ND-3.0", + "category": "Source-available", + "is_exception": false, + "is_unknown": false, + "owner": "Creative Commons", + "homepage_url": "http://creativecommons.org/licenses/by-nc-nd/3.0/", + "text_url": "http://creativecommons.org/licenses/by-nc-nd/3.0/legalcode", + "reference_url": "https://scancode-licensedb.aboutcode.org/cc-by-nc-nd-3.0", + "scancode_text_url": "https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/cc-by-nc-nd-3.0.LICENSE", + "scancode_data_url": "https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/cc-by-nc-nd-3.0.yml", + "spdx_license_key": "CC-BY-NC-ND-3.0", + "spdx_url": "https://spdx.org/licenses/CC-BY-NC-ND-3.0" + }, + { + "key": "other-permissive", + "name": "Other Permissive Licenses", + "short_name": "Other Permissive Licenses", + "category": "Permissive", + "is_exception": false, + "is_unknown": false, + "owner": "nexB", + "homepage_url": null, + "text_url": "", + "reference_url": "https://scancode-licensedb.aboutcode.org/other-permissive", + "scancode_text_url": "https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/other-permissive.LICENSE", + "scancode_data_url": "https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/other-permissive.yml", + "spdx_license_key": "LicenseRef-scancode-other-permissive", + "spdx_url": "https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/other-permissive.LICENSE" + }, + { + "key": "proprietary-license", + "name": "Proprietary License", + "short_name": "Proprietary License", + "category": "Commercial", + "is_exception": false, + "is_unknown": false, + "owner": "Unspecified", + "homepage_url": null, + "text_url": "", + "reference_url": "https://scancode-licensedb.aboutcode.org/proprietary-license", + "scancode_text_url": "https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/proprietary-license.LICENSE", + "scancode_data_url": "https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/proprietary-license.yml", + "spdx_license_key": "LicenseRef-scancode-proprietary-license", + "spdx_url": "https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/proprietary-license.LICENSE" + } + ] + } + ] + } + ], + "license_clues": [], + "percentage_of_license_text": 2.73, + "package_data": [], + "for_packages": [ + "pkg:pypi/django@1.3.1?uuid=fixed-uid-done-for-testing-5642512d1758" + ], + "scan_errors": [] + }, + { + "path": "django-1.3/METADATA", + "type": "file", + "detected_license_expression": null, + "detected_license_expression_spdx": null, + "license_detections": [], + "license_clues": [], + "percentage_of_license_text": 0, + "package_data": [], + "for_packages": [ + "pkg:pypi/django@1.3.1?uuid=fixed-uid-done-for-testing-5642512d1758" + ], + "scan_errors": [] + }, + { + "path": "django-1.3/PKG-INFO", + "type": "file", + "detected_license_expression": "bsd-new", + "detected_license_expression_spdx": "BSD-3-Clause", + "license_detections": [ + { + "license_expression": "bsd-new", + "detection_rules": [ + "not-combined" + ], + "matches": [ + { + "score": 99.0, + "start_line": 16, + "end_line": 16, + "matched_length": 5, + "match_coverage": 100.0, + "matcher": "2-aho", + "license_expression": "bsd-new", + "rule_identifier": "pypi_bsd_license.RULE", + "referenced_filenames": [], + "is_license_text": false, + "is_license_notice": false, + "is_license_reference": false, + "is_license_tag": true, + "is_license_intro": false, + "rule_length": 5, + "rule_relevance": 99, + "matched_text": "License :: OSI Approved :: BSD License", + "licenses": [ + { + "key": "bsd-new", + "name": "BSD-3-Clause", + "short_name": "BSD-3-Clause", + "category": "Permissive", + "is_exception": false, + "is_unknown": false, + "owner": "Regents of the University of California", + "homepage_url": "http://www.opensource.org/licenses/BSD-3-Clause", + "text_url": "http://www.opensource.org/licenses/BSD-3-Clause", + "reference_url": "https://scancode-licensedb.aboutcode.org/bsd-new", + "scancode_text_url": "https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/bsd-new.LICENSE", + "scancode_data_url": "https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/bsd-new.yml", + "spdx_license_key": "BSD-3-Clause", + "spdx_url": "https://spdx.org/licenses/BSD-3-Clause" + } + ] + } + ] + } + ], + "license_clues": [], + "percentage_of_license_text": 3.38, + "package_data": [ + { + "type": "pypi", + "namespace": null, + "name": "Django", + "version": "1.3.1", + "qualifiers": {}, + "subpath": null, + "primary_language": "Python", + "description": "A high-level Python Web framework that encourages rapid development and clean, pragmatic design.\nUNKNOWN", + "release_date": null, + "parties": [ + { + "type": "person", + "role": "author", + "name": "Django Software Foundation", + "email": "foundation@djangoproject.com", + "url": null + } + ], + "keywords": [ + "Development Status :: 5 - Production/Stable", + "Environment :: Web Environment", + "Framework :: Django", + "Intended Audience :: Developers", + "Operating System :: OS Independent", + "Programming Language :: Python", + "Programming Language :: Python :: 2.4", + "Programming Language :: Python :: 2.5", + "Programming Language :: Python :: 2.6", + "Programming Language :: Python :: 2.7", + "Topic :: Internet :: WWW/HTTP", + "Topic :: Internet :: WWW/HTTP :: Dynamic Content", + "Topic :: Internet :: WWW/HTTP :: WSGI", + "Topic :: Software Development :: Libraries :: Application Frameworks", + "Topic :: Software Development :: Libraries :: Python Modules" + ], + "homepage_url": "http://www.djangoproject.com/", + "download_url": null, + "size": null, + "sha1": null, + "md5": null, + "sha256": null, + "sha512": null, + "bug_tracking_url": null, + "code_view_url": null, + "vcs_url": null, + "copyright": null, + "declared_license_expression": "bsd-new", + "declared_license_expression_spdx": "BSD-3-Clause", + "license_detections": [ + { + "license_expression": "bsd-new", + "detection_rules": [ + "not-combined" + ], + "matches": [ + { + "score": 99.0, + "start_line": 1, + "end_line": 1, + "matched_length": 5, + "match_coverage": 100.0, + "matcher": "1-hash", + "license_expression": "bsd-new", + "rule_identifier": "pypi_bsd_license.RULE", + "referenced_filenames": [], + "is_license_text": false, + "is_license_notice": false, + "is_license_reference": false, + "is_license_tag": true, + "is_license_intro": false, + "rule_length": 5, + "rule_relevance": 99, + "matched_text": "['License :: OSI Approved :: BSD License']", + "licenses": [ + { + "key": "bsd-new", + "name": "BSD-3-Clause", + "short_name": "BSD-3-Clause", + "category": "Permissive", + "is_exception": false, + "is_unknown": false, + "owner": "Regents of the University of California", + "homepage_url": "http://www.opensource.org/licenses/BSD-3-Clause", + "text_url": "http://www.opensource.org/licenses/BSD-3-Clause", + "reference_url": "https://scancode-licensedb.aboutcode.org/bsd-new", + "scancode_text_url": "https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/bsd-new.LICENSE", + "scancode_data_url": "https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/bsd-new.yml", + "spdx_license_key": "BSD-3-Clause", + "spdx_url": "https://spdx.org/licenses/BSD-3-Clause" + } + ] + } + ] + } + ], + "other_license_expression": null, + "other_license_expression_spdx": null, + "other_license_detections": [], + "extracted_license_statement": "{'classifiers': ['License :: OSI Approved :: BSD License']}", + "notice_text": null, + "source_packages": [], + "file_references": [], + "extra_data": { + "Download-URL": "http://media.djangoproject.com/releases/1.3/Django-1.3.1.tar.gz" + }, + "dependencies": [], + "repository_homepage_url": "https://pypi.org/project/Django", + "repository_download_url": "https://pypi.org/packages/source/D/Django/Django-1.3.1.tar.gz", + "api_data_url": "https://pypi.org/pypi/Django/1.3.1/json", + "datasource_id": "pypi_sdist_pkginfo", + "purl": "pkg:pypi/django@1.3.1" + } + ], + "for_packages": [ + "pkg:pypi/django@1.3.1?uuid=fixed-uid-done-for-testing-5642512d1758" + ], + "scan_errors": [] + }, + { + "path": "django-1.3/README", + "type": "file", + "detected_license_expression": null, + "detected_license_expression_spdx": null, + "license_detections": [], + "license_clues": [], + "percentage_of_license_text": 0, + "package_data": [], + "for_packages": [ + "pkg:pypi/django@1.3.1?uuid=fixed-uid-done-for-testing-5642512d1758" + ], + "scan_errors": [] + }, + { + "path": "django-1.3/django", + "type": "directory", + "detected_license_expression": null, + "detected_license_expression_spdx": null, + "license_detections": [], + "license_clues": [], + "percentage_of_license_text": 0, + "package_data": [], + "for_packages": [], + "scan_errors": [] + }, + { + "path": "django-1.3/django/contrib", + "type": "directory", + "detected_license_expression": null, + "detected_license_expression_spdx": null, + "license_detections": [], + "license_clues": [], + "percentage_of_license_text": 0, + "package_data": [], + "for_packages": [], + "scan_errors": [] + }, + { + "path": "django-1.3/django/contrib/messages", + "type": "directory", + "detected_license_expression": null, + "detected_license_expression_spdx": null, + "license_detections": [], + "license_clues": [], + "percentage_of_license_text": 0, + "package_data": [], + "for_packages": [], + "scan_errors": [] + }, + { + "path": "django-1.3/django/contrib/messages/locale", + "type": "directory", + "detected_license_expression": null, + "detected_license_expression_spdx": null, + "license_detections": [], + "license_clues": [], + "percentage_of_license_text": 0, + "package_data": [], + "for_packages": [], + "scan_errors": [] + }, + { + "path": "django-1.3/django/contrib/messages/locale/en", + "type": "directory", + "detected_license_expression": null, + "detected_license_expression_spdx": null, + "license_detections": [], + "license_clues": [], + "percentage_of_license_text": 0, + "package_data": [], + "for_packages": [], + "scan_errors": [] + }, + { + "path": "django-1.3/django/contrib/messages/locale/en/LC_MESSAGES", + "type": "directory", + "detected_license_expression": null, + "detected_license_expression_spdx": null, + "license_detections": [], + "license_clues": [], + "percentage_of_license_text": 0, + "package_data": [], + "for_packages": [], + "scan_errors": [] + }, + { + "path": "django-1.3/django/contrib/messages/locale/en/LC_MESSAGES/django.po", + "type": "file", + "detected_license_expression": "bsd-new", + "detected_license_expression_spdx": "BSD-3-Clause", + "license_detections": [ + { + "license_expression": "bsd-new", + "detection_rules": [ + "unknown-reference-in-file-to-package" + ], + "matches": [ + { + "score": 100.0, + "start_line": 1, + "end_line": 1, + "matched_length": 12, + "match_coverage": 100.0, + "matcher": "2-aho", + "license_expression": "free-unknown", + "rule_identifier": "free-unknown-package_3.RULE", + "referenced_filenames": [ + "package" + ], + "is_license_text": false, + "is_license_notice": false, + "is_license_reference": true, + "is_license_tag": false, + "is_license_intro": false, + "rule_length": 12, + "rule_relevance": 100, + "matched_text": "This file is distributed under the same license as the Django package.", + "licenses": [ + { + "key": "free-unknown", + "name": "Free unknown license detected but not recognized", + "short_name": "Free unknown", + "category": "Unstated License", + "is_exception": false, + "is_unknown": true, + "owner": "Unspecified", + "homepage_url": null, + "text_url": "", + "reference_url": "https://scancode-licensedb.aboutcode.org/free-unknown", + "scancode_text_url": "https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/free-unknown.LICENSE", + "scancode_data_url": "https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/free-unknown.yml", + "spdx_license_key": "LicenseRef-scancode-free-unknown", + "spdx_url": "https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/free-unknown.LICENSE" + } + ] + }, + { + "score": 99.0, + "start_line": 1, + "end_line": 1, + "matched_length": 5, + "match_coverage": 100.0, + "matcher": "1-hash", + "license_expression": "bsd-new", + "rule_identifier": "pypi_bsd_license.RULE", + "referenced_filenames": [], + "is_license_text": false, + "is_license_notice": false, + "is_license_reference": false, + "is_license_tag": true, + "is_license_intro": false, + "rule_length": 5, + "rule_relevance": 99, + "matched_text": "['License :: OSI Approved :: BSD License']", + "licenses": [ + { + "key": "bsd-new", + "name": "BSD-3-Clause", + "short_name": "BSD-3-Clause", + "category": "Permissive", + "is_exception": false, + "is_unknown": false, + "owner": "Regents of the University of California", + "homepage_url": "http://www.opensource.org/licenses/BSD-3-Clause", + "text_url": "http://www.opensource.org/licenses/BSD-3-Clause", + "reference_url": "https://scancode-licensedb.aboutcode.org/bsd-new", + "scancode_text_url": "https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/bsd-new.LICENSE", + "scancode_data_url": "https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/bsd-new.yml", + "spdx_license_key": "BSD-3-Clause", + "spdx_url": "https://spdx.org/licenses/BSD-3-Clause" + } + ] + } + ] + } + ], + "license_clues": [], + "percentage_of_license_text": 16.9, + "package_data": [], + "for_packages": [ + "pkg:pypi/django@1.3.1?uuid=fixed-uid-done-for-testing-5642512d1758" + ], + "scan_errors": [] + }, + { + "path": "django-1.3/django/contrib/messages/locale/uk", + "type": "directory", + "detected_license_expression": null, + "detected_license_expression_spdx": null, + "license_detections": [], + "license_clues": [], + "percentage_of_license_text": 0, + "package_data": [], + "for_packages": [], + "scan_errors": [] + }, + { + "path": "django-1.3/django/contrib/messages/locale/uk/LC_MESSAGES", + "type": "directory", + "detected_license_expression": null, + "detected_license_expression_spdx": null, + "license_detections": [], + "license_clues": [], + "percentage_of_license_text": 0, + "package_data": [], + "for_packages": [], + "scan_errors": [] + }, + { + "path": "django-1.3/django/contrib/messages/locale/uk/LC_MESSAGES/django.po", + "type": "file", + "detected_license_expression": "bsd-new", + "detected_license_expression_spdx": "BSD-3-Clause", + "license_detections": [ + { + "license_expression": "bsd-new", + "detection_rules": [ + "unknown-reference-in-file-to-package" + ], + "matches": [ + { + "score": 100.0, + "start_line": 1, + "end_line": 1, + "matched_length": 12, + "match_coverage": 100.0, + "matcher": "2-aho", + "license_expression": "free-unknown", + "rule_identifier": "free-unknown-package_3.RULE", + "referenced_filenames": [ + "package" + ], + "is_license_text": false, + "is_license_notice": false, + "is_license_reference": true, + "is_license_tag": false, + "is_license_intro": false, + "rule_length": 12, + "rule_relevance": 100, + "matched_text": "This file is distributed under the same license as the Django package.", + "licenses": [ + { + "key": "free-unknown", + "name": "Free unknown license detected but not recognized", + "short_name": "Free unknown", + "category": "Unstated License", + "is_exception": false, + "is_unknown": true, + "owner": "Unspecified", + "homepage_url": null, + "text_url": "", + "reference_url": "https://scancode-licensedb.aboutcode.org/free-unknown", + "scancode_text_url": "https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/free-unknown.LICENSE", + "scancode_data_url": "https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/free-unknown.yml", + "spdx_license_key": "LicenseRef-scancode-free-unknown", + "spdx_url": "https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/free-unknown.LICENSE" + } + ] + }, + { + "score": 99.0, + "start_line": 1, + "end_line": 1, + "matched_length": 5, + "match_coverage": 100.0, + "matcher": "1-hash", + "license_expression": "bsd-new", + "rule_identifier": "pypi_bsd_license.RULE", + "referenced_filenames": [], + "is_license_text": false, + "is_license_notice": false, + "is_license_reference": false, + "is_license_tag": true, + "is_license_intro": false, + "rule_length": 5, + "rule_relevance": 99, + "matched_text": "['License :: OSI Approved :: BSD License']", + "licenses": [ + { + "key": "bsd-new", + "name": "BSD-3-Clause", + "short_name": "BSD-3-Clause", + "category": "Permissive", + "is_exception": false, + "is_unknown": false, + "owner": "Regents of the University of California", + "homepage_url": "http://www.opensource.org/licenses/BSD-3-Clause", + "text_url": "http://www.opensource.org/licenses/BSD-3-Clause", + "reference_url": "https://scancode-licensedb.aboutcode.org/bsd-new", + "scancode_text_url": "https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/bsd-new.LICENSE", + "scancode_data_url": "https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/bsd-new.yml", + "spdx_license_key": "BSD-3-Clause", + "spdx_url": "https://spdx.org/licenses/BSD-3-Clause" + } + ] + } + ] + } + ], + "license_clues": [], + "percentage_of_license_text": 12.12, + "package_data": [], + "for_packages": [ + "pkg:pypi/django@1.3.1?uuid=fixed-uid-done-for-testing-5642512d1758" + ], + "scan_errors": [] + }, + { + "path": "django-1.3/setup.cfg", + "type": "file", + "detected_license_expression": null, + "detected_license_expression_spdx": null, + "license_detections": [], + "license_clues": [], + "percentage_of_license_text": 0, + "package_data": [ + { + "type": "pypi", + "namespace": null, + "name": null, + "version": null, + "qualifiers": {}, + "subpath": null, + "primary_language": "Python", + "description": null, + "release_date": null, + "parties": [], + "keywords": [], + "homepage_url": null, + "download_url": null, + "size": null, + "sha1": null, + "md5": null, + "sha256": null, + "sha512": null, + "bug_tracking_url": null, + "code_view_url": null, + "vcs_url": null, + "copyright": null, + "declared_license_expression": "bsd-new", + "declared_license_expression_spdx": "BSD-3-Clause", + "license_detections": [ + { + "license_expression": "bsd-new", + "detection_rules": [ + "not-combined" + ], + "matches": [ + { + "score": 100.0, + "start_line": 4, + "end_line": 27, + "matched_length": 214, + "match_coverage": 100.0, + "matcher": "2-aho", + "license_expression": "bsd-new", + "rule_identifier": "bsd-new_683.RULE", + "referenced_filenames": [], + "is_license_text": true, + "is_license_notice": false, + "is_license_reference": false, + "is_license_tag": false, + "is_license_intro": false, + "rule_length": 214, + "rule_relevance": 100, + "matched_text": "Redistribution and use in source and binary forms, with or without modification,\nare permitted provided that the following conditions are met:\n\n 1. Redistributions of source code must retain the above copyright notice, \n this list of conditions and the following disclaimer.\n \n 2. Redistributions in binary form must reproduce the above copyright \n notice, this list of conditions and the following disclaimer in the\n documentation and/or other materials provided with the distribution.\n\n 3. Neither the name of Django nor the names of its contributors may be used\n to endorse or promote products derived from this software without\n specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\nANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\nWARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR\nANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\nLOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON\nANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\nSOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.", + "licenses": [ + { + "key": "bsd-new", + "name": "BSD-3-Clause", + "short_name": "BSD-3-Clause", + "category": "Permissive", + "is_exception": false, + "is_unknown": false, + "owner": "Regents of the University of California", + "homepage_url": "http://www.opensource.org/licenses/BSD-3-Clause", + "text_url": "http://www.opensource.org/licenses/BSD-3-Clause", + "reference_url": "https://scancode-licensedb.aboutcode.org/bsd-new", + "scancode_text_url": "https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/bsd-new.LICENSE", + "scancode_data_url": "https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/bsd-new.yml", + "spdx_license_key": "BSD-3-Clause", + "spdx_url": "https://spdx.org/licenses/BSD-3-Clause" + } + ] + } + ] + } + ], + "other_license_expression": null, + "other_license_expression_spdx": null, + "other_license_detections": [], + "extracted_license_statement": null, + "notice_text": null, + "source_packages": [], + "file_references": [], + "extra_data": {}, + "dependencies": [], + "repository_homepage_url": null, + "repository_download_url": null, + "api_data_url": null, + "datasource_id": "pypi_setup_cfg", + "purl": null + } + ], + "for_packages": [ + "pkg:pypi/django@1.3.1?uuid=fixed-uid-done-for-testing-5642512d1758" + ], + "scan_errors": [] + }, + { + "path": "django-1.3/setup.py", + "type": "file", + "detected_license_expression": "bsd-new", + "detected_license_expression_spdx": "BSD-3-Clause", + "license_detections": [ + { + "license_expression": "bsd-new", + "detection_rules": [ + "not-combined" + ], + "matches": [ + { + "score": 99.0, + "start_line": 89, + "end_line": 89, + "matched_length": 5, + "match_coverage": 100.0, + "matcher": "2-aho", + "license_expression": "bsd-new", + "rule_identifier": "pypi_bsd_license.RULE", + "referenced_filenames": [], + "is_license_text": false, + "is_license_notice": false, + "is_license_reference": false, + "is_license_tag": true, + "is_license_intro": false, + "rule_length": 5, + "rule_relevance": 99, + "matched_text": "License :: OSI Approved :: BSD License',", + "licenses": [ + { + "key": "bsd-new", + "name": "BSD-3-Clause", + "short_name": "BSD-3-Clause", + "category": "Permissive", + "is_exception": false, + "is_unknown": false, + "owner": "Regents of the University of California", + "homepage_url": "http://www.opensource.org/licenses/BSD-3-Clause", + "text_url": "http://www.opensource.org/licenses/BSD-3-Clause", + "reference_url": "https://scancode-licensedb.aboutcode.org/bsd-new", + "scancode_text_url": "https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/bsd-new.LICENSE", + "scancode_data_url": "https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/bsd-new.yml", + "spdx_license_key": "BSD-3-Clause", + "spdx_url": "https://spdx.org/licenses/BSD-3-Clause" + } + ] + } + ] + } + ], + "license_clues": [], + "percentage_of_license_text": 0.95, + "package_data": [ + { + "type": "pypi", + "namespace": null, + "name": "Django", + "version": null, + "qualifiers": {}, + "subpath": null, + "primary_language": "Python", + "description": "A high-level Python Web framework that encourages rapid development and clean, pragmatic design.", + "release_date": null, + "parties": [ + { + "type": "person", + "role": "author", + "name": "Django Software Foundation", + "email": "foundation@djangoproject.com", + "url": null + } + ], + "keywords": [ + "Development Status :: 5 - Production/Stable", + "Environment :: Web Environment", + "Framework :: Django", + "Intended Audience :: Developers", + "Operating System :: OS Independent", + "Programming Language :: Python", + "Programming Language :: Python :: 2.4", + "Programming Language :: Python :: 2.5", + "Programming Language :: Python :: 2.6", + "Programming Language :: Python :: 2.7", + "Topic :: Internet :: WWW/HTTP", + "Topic :: Internet :: WWW/HTTP :: Dynamic Content", + "Topic :: Internet :: WWW/HTTP :: WSGI", + "Topic :: Software Development :: Libraries :: Application Frameworks", + "Topic :: Software Development :: Libraries :: Python Modules" + ], + "homepage_url": "http://www.djangoproject.com/", + "download_url": null, + "size": null, + "sha1": null, + "md5": null, + "sha256": null, + "sha512": null, + "bug_tracking_url": null, + "code_view_url": null, + "vcs_url": null, + "copyright": null, + "declared_license_expression": "bsd-new", + "declared_license_expression_spdx": "BSD-3-Clause", + "license_detections": [ + { + "license_expression": "bsd-new", + "detection_rules": [ + "not-combined" + ], + "matches": [ + { + "score": 99.0, + "start_line": 1, + "end_line": 1, + "matched_length": 5, + "match_coverage": 100.0, + "matcher": "1-hash", + "license_expression": "bsd-new", + "rule_identifier": "pypi_bsd_license.RULE", + "referenced_filenames": [], + "is_license_text": false, + "is_license_notice": false, + "is_license_reference": false, + "is_license_tag": true, + "is_license_intro": false, + "rule_length": 5, + "rule_relevance": 99, + "matched_text": "['License :: OSI Approved :: BSD License']", + "licenses": [ + { + "key": "bsd-new", + "name": "BSD-3-Clause", + "short_name": "BSD-3-Clause", + "category": "Permissive", + "is_exception": false, + "is_unknown": false, + "owner": "Regents of the University of California", + "homepage_url": "http://www.opensource.org/licenses/BSD-3-Clause", + "text_url": "http://www.opensource.org/licenses/BSD-3-Clause", + "reference_url": "https://scancode-licensedb.aboutcode.org/bsd-new", + "scancode_text_url": "https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/bsd-new.LICENSE", + "scancode_data_url": "https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/bsd-new.yml", + "spdx_license_key": "BSD-3-Clause", + "spdx_url": "https://spdx.org/licenses/BSD-3-Clause" + } + ] + } + ] + } + ], + "other_license_expression": null, + "other_license_expression_spdx": null, + "other_license_detections": [], + "extracted_license_statement": "{'classifiers': ['License :: OSI Approved :: BSD License']}", + "notice_text": null, + "source_packages": [], + "file_references": [], + "extra_data": { + "Download-URL": "http://media.djangoproject.com/releases/1.3/Django-1.3.1.tar.gz" + }, + "dependencies": [], + "repository_homepage_url": "https://pypi.org/project/Django", + "repository_download_url": null, + "api_data_url": "https://pypi.org/pypi/Django/json", + "datasource_id": "pypi_setup_py", + "purl": "pkg:pypi/django" + } + ], + "for_packages": [ + "pkg:pypi/django@1.3.1?uuid=fixed-uid-done-for-testing-5642512d1758" + ], + "scan_errors": [] + } + ] +} \ No newline at end of file diff --git a/tests/packagedcode/data/license_detection/reference-to-package/google_appengine_sdk/django-1.2/AUTHORS b/tests/packagedcode/data/license_detection/reference-to-package/google_appengine_sdk/django-1.2/AUTHORS new file mode 100644 index 00000000000..3656e92a42d --- /dev/null +++ b/tests/packagedcode/data/license_detection/reference-to-package/google_appengine_sdk/django-1.2/AUTHORS @@ -0,0 +1,531 @@ +Django was originally created in late 2003 at World Online, the Web division +of the Lawrence Journal-World newspaper in Lawrence, Kansas. + +The PRIMARY AUTHORS are (and/or have been): + + * Adrian Holovaty + * Simon Willison + * Jacob Kaplan-Moss + * Wilson Miner + * Malcolm Tredinnick + * Georg "Hugo" Bauer + * Luke Plant + * Russell Keith-Magee + * Robert Wittams + * Gary Wilson + * Brian Rosner + * Justin Bronn + * Karen Tracey + * Jannis Leidel + * James Tauber + * Alex Gaynor + * Andrew Godwin + * Carl Meyer + * Ramiro Morales + * Chris Beaven + +More information on the main contributors to Django can be found in +docs/internals/committers.txt. + +And here is an inevitably incomplete list of MUCH-APPRECIATED CONTRIBUTORS -- +people who have submitted patches, reported bugs, added translations, helped +answer newbie questions, and generally made Django that much better: + + Gisle Aas + ajs + alang@bright-green.com + Andi Albrecht + Marty Alchin + Ahmad Alhashemi + Ahmad Al-Ibrahim + Antoni Aloy + Daniel Alves Barbosa de Oliveira Vaz + AgarFu + Dagur Páll Ammendrup + Collin Anderson + Jeff Anderson + Marian Andre + Andreas + Victor Andrée + andy@jadedplanet.net + Fabrice Aneche + ant9000@netwise.it + Florian Apolloner + arien + David Ascher + atlithorn + Jökull Sólberg Auðunsson + Arthur + av0000@mail.ru + David Avsajanishvili + Mike Axiak + Niran Babalola + Vitaly Babiy + Morten Bagai + Jeff Balogh + Mikaël Barbero + Randy Barlow + Scott Barr + Jiri Barton + Ned Batchelder + batiste@dosimple.ch + Batman + Brian Beck + Shannon -jj Behrens + Esdras Beleza + Chris Bennett + James Bennett + Julian Bez + Arvis Bickovskis + Natalia Bidart + Paul Bissex + Simon Blanchard + David Blewett + Matt Boersma + boobsd@gmail.com + Matías Bordese + Sean Brant + Andrew Brehaut + David Brenneman + brut.alll@gmail.com + bthomas + btoll@bestweb.net + Jonathan Buchanan + Keith Bussell + C8E + Chris Cahoon + Juan Manuel Caicedo + Trevor Caira + Brett Cannon + Ricardo Javier Cárdenes Medina + Jeremy Carbaugh + Graham Carlyle + Antonio Cavedoni + cedric@terramater.net + Chris Chamberlin + Amit Chakradeo + ChaosKCW + Kowito Charoenratchatabhan + Sengtha Chay + ivan.chelubeev@gmail.com + Bryan Chow + Antonis Christofides + Michal Chruszcz + Can Burak Çilingir + Ian Clelland + Travis Cline + Russell Cloran + colin@owlfish.com + crankycoder@gmail.com + Paul Collier + Robert Coup + Pete Crosier + Matt Croydon + Leah Culver + flavio.curella@gmail.com + Jure Cuhalev + John D'Agostino + dackze+django@gmail.com + Mihai Damian + David Danier + Dirk Datzert + Jonathan Daugherty (cygnus) + dave@thebarproject.com + david@kazserve.org + Jason Davies (Esaj) + Richard Davies + Alex Dedul + Matt Dennenbaum + deric@monowerks.com + Max Derkachev + Rajesh Dhawan + Sander Dijkhuis + Jordan Dimov + Nebojša Dorđević + dne@mayonnaise.net + dready + Maximillian Dornseif + Jeremy Dunck + Andrew Durdin + dusk@woofle.net + Andy Dustman + Alexander Dutton + J. Clifford Dyer + Clint Ecker + Nick Efford + eibaan@gmail.com + Julia Elman + enlight + Enrico + A. Murat Eren + Ludvig Ericson + eriks@win.tue.nl + Tomáš Ehrlich + Dirk Eschler + Marc Fargas + Szilveszter Farkas + Grigory Fateyev + favo@exoweb.net + fdr + Dmitri Fedortchenko + Jonathan Feignberg + Liang Feng + Bill Fenner + Stefane Fermgier + J. Pablo Fernandez + Maciej Fijalkowski + Ben Firshman + Matthew Flanagan + Eric Floehr + Eric Florenzano + Vincent Foley + Alcides Fonseca + Rudolph Froger + Jorge Gajon + gandalf@owca.info + Marc Garcia + Andy Gayton + Idan Gazit + geber@datacollect.com + Baishampayan Ghose + Dimitris Glezos + glin@seznam.cz + martin.glueck@gmail.com + Artyom Gnilov + Ben Godfrey + GomoX + Guilherme Mesquita Gondim + Mario Gonzalez + David Gouldin + pradeep.gowda@gmail.com + Collin Grady + Gabriel Grant + Simon Greenhill + Owen Griffiths + Espen Grindhaug + Janos Guljas + Thomas Güttler + Horst Gutmann + Scot Hacker + dAniel hAhler + hambaloney + Brian Harring + Brant Harris + Ronny Haryanto + Hawkeye + Joe Heck + Joel Heenan + Mikko Hellsing + Sebastian Hillig + hipertracker@gmail.com + Deryck Hodge + Brett Hoerner + Eric Holscher + Ian Holsman + Kieran Holland + Sung-Jin Hong + Leo "hylje" Honkanen + Tareque Hossain + Richard House + Robert Rock Howard + John Huddleston + Rob Hudson + Jason Huggins + Gabriel Hurley + Hyun Mi Ae + Ibon + Tom Insam + Baurzhan Ismagulov + Stephan Jaekel + james_027@yahoo.com + jcrasta@gmail.com + jdetaeye + jhenry + Zak Johnson + Nis Jørgensen + Michael Josephson + jpellerin@gmail.com + junzhang.jn@gmail.com + Antti Kaihola + Bahadır Kandemir + Karderio + Nagy Károly + George Karpenkov + Erik Karulf + Ben Dean Kawamura + Ian G. Kelly + Niall Kelly + Ryan Kelly + Thomas Kerpe + Wiley Kestner + Ossama M. Khayat + Ben Khoo + Garth Kidd + kilian + Sune Kirkeby + Bastian Kleineidam + Cameron Knight (ckknight) + Nena Kojadin + Igor Kolar + Tomáš Kopeček + Gasper Koren + Martin Kosír + Arthur Koziel + Honza Král + Meir Kriheli + Bruce Kroeze + krzysiek.pawlik@silvermedia.pl + Joseph Kocherhans + konrad@gwu.edu + knox + David Krauth + Kevin Kubasik + kurtiss@meetro.com + Denis Kuzmichyov + Panos Laganakos + Nick Lane + Stuart Langridge + Paul Lanier + David Larlet + Nicolas Lara + Nicola Larosa + Finn Gruwier Larsen + Lau Bech Lauritzen + Rune Rønde Laursen + Mark Lavin + Eugene Lazutkin + lcordier@point45.com + Jeong-Min Lee + Tai Lee + Christopher Lenz + lerouxb@gmail.com + Piotr Lewandowski + Charlie Leifer + Justin Lilly + Waylan Limberg + limodou + Philip Lindborg + Simon Litchfield + Daniel Lindsley + Trey Long + Laurent Luce + Martin Mahner + Matt McClanahan + Stanislaus Madueke + Yann Malet + Frantisek Malina + Mike Malone + Martin Maney + masonsimon+django@gmail.com + Manuzhai + Petr Marhoun + Petar Marić + Nuno Mariz + mark@junklight.com + Orestis Markou + Takashi Matsuo + Yasushi Masuda + mattycakes@gmail.com + Glenn Maynard + Jason McBrayer + Kevin McConnell + mccutchen@gmail.com + michael.mcewan@gmail.com + Paul McLanahan + Tobias McNulty + Zain Memon + Christian Metts + michal@plovarna.cz + Slawek Mikula + mitakummaa@gmail.com + mmarshall + Andreas Mock + Reza Mohammadi + Aljosa Mohorovic + Eric Moritz + msaelices + Gregor Müllegger + Robin Munn + James Murty + msundstr + Robert Myers + Alexander Myodov + Doug Napoleone + Gopal Narayanan + Fraser Nevett + Sam Newman + Filip Noetzel + Afonso Fernández Nogueira + Neal Norwitz + Todd O'Bryan + Selwin Ong + Christian Oudard + oggie rob + oggy + Jay Parlar + Claude Paroz + Carlos Eduardo de Paula + pavithran s + Barry Pederson + Andreas Pelme + permonik@mesias.brnonet.cz + peter@mymart.com + pgross@thoughtworks.com + phaedo + Julien Phalip + phil@produxion.net + phil.h.smith@gmail.com + Gustavo Picon + Michael Placentra II + plisk + Daniel Poelzleithner + polpak@yahoo.com + Ross Poulton + Mihai Preda + Matthias Pronk + Jyrki Pulliainen + Thejaswi Puthraya + Johann Queuniet + Jan Rademaker + Michael Radziej + Laurent Rahuel + Stéphane Raimbault + Luciano Ramalho + Amit Ramon + Philippe Raoult + Massimiliano Ravelli + Brian Ray + remco@diji.biz + Marc Remolt + Bruno Renié + David Reynolds + rhettg@gmail.com + ricardojbarrios@gmail.com + Mike Richardson + Matt Riggott + Alex Robbins + Henrique Romano + Armin Ronacher + Daniel Roseman + Rozza + Oliver Rutherfurd + ryankanno + Gonzalo Saavedra + Manuel Saelices + Ivan Sagalaev (Maniac) + Vinay Sajip + Kadesarin Sanjek + Massimo Scamarcia + Paulo Scardine + David Schein + Bernd Schlapsi + schwank@gmail.com + scott@staplefish.com + Ilya Semenov + serbaut@gmail.com + John Shaffer + Pete Shinners + Leo Shklovskii + jason.sidabras@gmail.com + Brenton Simpson + Jozko Skrablin + Ben Slavin + sloonz + Paul Smith + Warren Smith + smurf@smurf.noris.de + Vsevolod Solovyov + sopel + Leo Soto + Wiliam Alves de Souza + Don Spaulding + Bjørn Stabell + Georgi Stanojevski + starrynight + Vasiliy Stavenko + Thomas Steinacher + Johan C. Stöver + Nowell Strite + Thomas Stromberg + Pascal Varet + SuperJared + Radek Švarz + Swaroop C H + Aaron Swartz + Ville Säävuori + Mart Sõmermaa + Christian Tanzer + Tyler Tarabula + Tyson Tate + Aryeh Leib Taurog + Frank Tegtmeyer + Marcel Telka + Terry Huang + Travis Terry + thebjorn + Zach Thompson + Michael Thornhill + Deepak Thukral + tibimicu@gmx.net + tobias@neuyork.de + Tom Tobin + Joe Topjian + torne-django@wolfpuppy.org.uk + Jeff Triplett + tstromberg@google.com + Makoto Tsuyuki + tt@gurgle.no + David Tulig + Amit Upadhyay + Adam Vandenberg + Geert Vanderkelen + Vasil Vangelovski + I.S. van Oostveen + viestards.lists@gmail.com + George Vilches + Vlado + Zachary Voase + Marijn Vriens + Milton Waddams + Chris Wagner + Rick Wagner + wam-djangobug@wamber.net + Wang Chun + Filip Wasilewski + Dan Watson + Joel Watts + Lakin Wecker + Chris Wesseling + James Wheare + Mike Wiacek + Frank Wierzbicki + charly.wilhelm@gmail.com + Derek Willis + Rachel Willmer + Jakub Wilk + Jakub Wiśniowski + Maciej Wiśniowski + wojtek + Jason Yan + Lars Yencken + ye7cakf02@sneakemail.com + ymasuda@ethercube.com + Jesse Young + Mykola Zamkovoi + zegor + Gasper Zejn + Jarek Zgoda + Cheng Zhang + +A big THANK YOU goes to: + + Rob Curley and Ralph Gage for letting us open-source Django. + + Frank Wiles for making excellent arguments for open-sourcing, and for + his sage sysadmin advice. + + Ian Bicking for convincing Adrian to ditch code generation. + + Mark Pilgrim for diveintopython.org. + + Guido van Rossum for creating Python. diff --git a/tests/packagedcode/data/license_detection/reference-to-package/google_appengine_sdk/django-1.2/INSTALL b/tests/packagedcode/data/license_detection/reference-to-package/google_appengine_sdk/django-1.2/INSTALL new file mode 100644 index 00000000000..644c524bbbf --- /dev/null +++ b/tests/packagedcode/data/license_detection/reference-to-package/google_appengine_sdk/django-1.2/INSTALL @@ -0,0 +1,16 @@ +Thanks for downloading Django. + +To install it, make sure you have Python 2.4 or greater installed. Then run +this command from the command prompt: + + python setup.py install + +AS AN ALTERNATIVE, you can just copy the entire "django" directory to Python's +site-packages directory, which is located wherever your Python installation +lives. Some places you might check are: + + /usr/lib/python2.5/site-packages (Unix, Python 2.5) + /usr/lib/python2.4/site-packages (Unix, Python 2.4) + C:\\PYTHON\site-packages (Windows) + +For more detailed instructions, see docs/intro/install.txt. diff --git a/tests/packagedcode/data/license_detection/reference-to-package/google_appengine_sdk/django-1.2/MANIFEST.in b/tests/packagedcode/data/license_detection/reference-to-package/google_appengine_sdk/django-1.2/MANIFEST.in new file mode 100644 index 00000000000..d12b2523cd8 --- /dev/null +++ b/tests/packagedcode/data/license_detection/reference-to-package/google_appengine_sdk/django-1.2/MANIFEST.in @@ -0,0 +1,29 @@ +include README +include AUTHORS +include INSTALL +include LICENSE +include MANIFEST.in +include django/contrib/gis/gdal/LICENSE +include django/contrib/gis/geos/LICENSE +include django/dispatch/license.txt +include django/utils/simplejson/LICENSE.txt +recursive-include docs * +recursive-include scripts * +recursive-include extras * +recursive-include tests * +recursive-include django/conf/locale * +recursive-include django/contrib/admin/templates * +recursive-include django/contrib/admin/media * +recursive-include django/contrib/admindocs/templates * +recursive-include django/contrib/auth/fixtures * +recursive-include django/contrib/auth/tests/templates * +recursive-include django/contrib/comments/templates * +recursive-include django/contrib/databrowse/templates * +recursive-include django/contrib/formtools/templates * +recursive-include django/contrib/flatpages/fixtures * +recursive-include django/contrib/flatpages/tests/templates * +recursive-include django/contrib/gis/templates * +recursive-include django/contrib/gis/tests/data * +recursive-include django/contrib/gis/tests/geoapp/fixtures * +recursive-include django/contrib/gis/tests/geogapp/fixtures * +recursive-include django/contrib/sitemaps/templates * diff --git a/tests/packagedcode/data/license_detection/reference-to-package/google_appengine_sdk/django-1.2/METADATA b/tests/packagedcode/data/license_detection/reference-to-package/google_appengine_sdk/django-1.2/METADATA new file mode 100644 index 00000000000..2de9ddca4bb --- /dev/null +++ b/tests/packagedcode/data/license_detection/reference-to-package/google_appengine_sdk/django-1.2/METADATA @@ -0,0 +1,24 @@ +# Format: google3/devtools/metadata/metadata.proto (go/google3metadata) + +name: "django" +description: + "Django is a python-based web framework. As of 02/09/2011 this was listed " + "as the latest official version." + +third_party { + url { + type: ARCHIVE + value: "http://www.djangoproject.com/download/1.2.5/tarball/" + } + version: "1.2.5" + last_upgrade_date: { + year: 2011 + month: 2 + day: 9 + } + + # NOTE: The "local_modifications" field is entirely optional and may be + # removed if it's not useful for the package. + # See go/thirdparty-metadata-local-modifications + local_modifications: "http://google3/third_party/apphosting/python/django/v1_2_5_vendor/README.google?cl=19403388" +} diff --git a/tests/packagedcode/data/license_detection/reference-to-package/google_appengine_sdk/django-1.2/README b/tests/packagedcode/data/license_detection/reference-to-package/google_appengine_sdk/django-1.2/README new file mode 100644 index 00000000000..c1cd37e0a09 --- /dev/null +++ b/tests/packagedcode/data/license_detection/reference-to-package/google_appengine_sdk/django-1.2/README @@ -0,0 +1,43 @@ +Django is a high-level Python Web framework that encourages rapid development +and clean, pragmatic design. + +All documentation is in the "docs" directory and online at +http://docs.djangoproject.com/en/dev/. If you're just getting started, here's +how we recommend you read the docs: + + * First, read docs/intro/install.txt for instructions on installing Django. + + * Next, work through the tutorials in order (docs/intro/tutorial01.txt, + docs/intro/tutorial02.txt, etc.). + + * If you want to set up an actual deployment server, read + docs/howto/deployment/index.txt for instructions. + + * You'll probably want to read through the topical guides (in docs/topics) + next; from there you can jump to the HOWTOs (in docs/howto) for specific + problems, and check out the reference (docs/ref) for gory details. + +Docs are updated rigorously. If you find any problems in the docs, or think they +should be clarified in any way, please take 30 seconds to fill out a ticket +here: + +http://code.djangoproject.com/newticket + +To get more help: + + * Join the #django channel on irc.freenode.net. Lots of helpful people + hang out there. Read the archives at http://botland.oebfare.com/logger/django/. + + * Join the django-users mailing list, or read the archives, at + http://groups.google.com/group/django-users. + +To contribute to Django: + + * Check out http://www.djangoproject.com/community/ for information + about getting involved. + +To run Django's test suite: + + * Follow the instructions in the "Unit tests" section of + docs/internals/contributing.txt, published online at + http://docs.djangoproject.com/en/dev/internals/contributing/#running-the-unit-tests diff --git a/tests/packagedcode/data/license_detection/reference-to-package/google_appengine_sdk/django-1.2/django/conf/locale/en/LC_MESSAGES/djangojs.po b/tests/packagedcode/data/license_detection/reference-to-package/google_appengine_sdk/django-1.2/django/conf/locale/en/LC_MESSAGES/djangojs.po new file mode 100644 index 00000000000..bbd692afe75 --- /dev/null +++ b/tests/packagedcode/data/license_detection/reference-to-package/google_appengine_sdk/django-1.2/django/conf/locale/en/LC_MESSAGES/djangojs.po @@ -0,0 +1,145 @@ +# This file is distributed under the same license as the Django package. +# +msgid "" +msgstr "" +"Project-Id-Version: Django\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2010-05-13 15:39+0200\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: contrib/admin/media/js/SelectFilter2.js:37 +#, perl-format +msgid "Available %s" +msgstr "" + +#: contrib/admin/media/js/SelectFilter2.js:45 +msgid "Choose all" +msgstr "" + +#: contrib/admin/media/js/SelectFilter2.js:50 +msgid "Add" +msgstr "" + +#: contrib/admin/media/js/SelectFilter2.js:52 +msgid "Remove" +msgstr "" + +#: contrib/admin/media/js/SelectFilter2.js:57 +#, perl-format +msgid "Chosen %s" +msgstr "" + +#: contrib/admin/media/js/SelectFilter2.js:58 +msgid "Select your choice(s) and click " +msgstr "" + +#: contrib/admin/media/js/SelectFilter2.js:63 +msgid "Clear all" +msgstr "" + +#: contrib/admin/media/js/actions.js:18 +#: contrib/admin/media/js/actions.min.js:1 +msgid "%(sel)s of %(cnt)s selected" +msgid_plural "%(sel)s of %(cnt)s selected" +msgstr[0] "" +msgstr[1] "" + +#: contrib/admin/media/js/actions.js:109 +#: contrib/admin/media/js/actions.min.js:5 +msgid "" +"You have unsaved changes on individual editable fields. If you run an " +"action, your unsaved changes will be lost." +msgstr "" + +#: contrib/admin/media/js/actions.js:121 +#: contrib/admin/media/js/actions.min.js:6 +msgid "" +"You have selected an action, but you haven't saved your changes to " +"individual fields yet. Please click OK to save. You'll need to re-run the " +"action." +msgstr "" + +#: contrib/admin/media/js/actions.js:123 +#: contrib/admin/media/js/actions.min.js:6 +msgid "" +"You have selected an action, and you haven't made any changes on individual " +"fields. You're probably looking for the Go button rather than the Save " +"button." +msgstr "" + +#: contrib/admin/media/js/calendar.js:24 +#: contrib/admin/media/js/dateparse.js:32 +msgid "" +"January February March April May June July August September October November " +"December" +msgstr "" + +#: contrib/admin/media/js/calendar.js:25 +msgid "S M T W T F S" +msgstr "" + +#: contrib/admin/media/js/collapse.js:9 contrib/admin/media/js/collapse.js:21 +#: contrib/admin/media/js/collapse.min.js:1 +msgid "Show" +msgstr "" + +#: contrib/admin/media/js/collapse.js:16 +#: contrib/admin/media/js/collapse.min.js:1 +msgid "Hide" +msgstr "" + +#: contrib/admin/media/js/dateparse.js:33 +msgid "Sunday Monday Tuesday Wednesday Thursday Friday Saturday" +msgstr "" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:49 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:84 +msgid "Now" +msgstr "" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:53 +msgid "Clock" +msgstr "" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:80 +msgid "Choose a time" +msgstr "" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:85 +msgid "Midnight" +msgstr "" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:86 +msgid "6 a.m." +msgstr "" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:87 +msgid "Noon" +msgstr "" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:91 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:188 +msgid "Cancel" +msgstr "" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:133 +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:182 +msgid "Today" +msgstr "" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:137 +msgid "Calendar" +msgstr "" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:180 +msgid "Yesterday" +msgstr "" + +#: contrib/admin/media/js/admin/DateTimeShortcuts.js:184 +msgid "Tomorrow" +msgstr "" diff --git a/tests/packagedcode/data/license_detection/reference-to-package/google_appengine_sdk/django-1.2/django/conf/locale/en/formats.py b/tests/packagedcode/data/license_detection/reference-to-package/google_appengine_sdk/django-1.2/django/conf/locale/en/formats.py new file mode 100644 index 00000000000..c59a94a1c77 --- /dev/null +++ b/tests/packagedcode/data/license_detection/reference-to-package/google_appengine_sdk/django-1.2/django/conf/locale/en/formats.py @@ -0,0 +1,38 @@ +# -*- encoding: utf-8 -*- +# This file is distributed under the same license as the Django package. +# + +DATE_FORMAT = 'N j, Y' +TIME_FORMAT = 'P' +DATETIME_FORMAT = 'N j, Y, P' +YEAR_MONTH_FORMAT = 'F Y' +MONTH_DAY_FORMAT = 'F j' +SHORT_DATE_FORMAT = 'm/d/Y' +SHORT_DATETIME_FORMAT = 'm/d/Y P' +FIRST_DAY_OF_WEEK = 0 # Sunday +DATE_INPUT_FORMATS = ( + '%Y-%m-%d', '%m/%d/%Y', '%m/%d/%y', # '2006-10-25', '10/25/2006', '10/25/06' + # '%b %d %Y', '%b %d, %Y', # 'Oct 25 2006', 'Oct 25, 2006' + # '%d %b %Y', '%d %b, %Y', # '25 Oct 2006', '25 Oct, 2006' + # '%B %d %Y', '%B %d, %Y', # 'October 25 2006', 'October 25, 2006' + # '%d %B %Y', '%d %B, %Y', # '25 October 2006', '25 October, 2006' +) +TIME_INPUT_FORMATS = ( + '%H:%M:%S', # '14:30:59' + '%H:%M', # '14:30' +) +DATETIME_INPUT_FORMATS = ( + '%Y-%m-%d %H:%M:%S', # '2006-10-25 14:30:59' + '%Y-%m-%d %H:%M', # '2006-10-25 14:30' + '%Y-%m-%d', # '2006-10-25' + '%m/%d/%Y %H:%M:%S', # '10/25/2006 14:30:59' + '%m/%d/%Y %H:%M', # '10/25/2006 14:30' + '%m/%d/%Y', # '10/25/2006' + '%m/%d/%y %H:%M:%S', # '10/25/06 14:30:59' + '%m/%d/%y %H:%M', # '10/25/06 14:30' + '%m/%d/%y', # '10/25/06' +) +DECIMAL_SEPARATOR = u'.' +THOUSAND_SEPARATOR = u',' +NUMBER_GROUPING = 3 + diff --git a/tests/packagedcode/data/license_detection/reference-to-package/google_appengine_sdk/django-1.2/django/conf/locale/uk/LC_MESSAGES/django.po b/tests/packagedcode/data/license_detection/reference-to-package/google_appengine_sdk/django-1.2/django/conf/locale/uk/LC_MESSAGES/django.po new file mode 100644 index 00000000000..f7793d820aa --- /dev/null +++ b/tests/packagedcode/data/license_detection/reference-to-package/google_appengine_sdk/django-1.2/django/conf/locale/uk/LC_MESSAGES/django.po @@ -0,0 +1,4774 @@ +# Django, ukrainian translation. +# Copyright (C) 2008 +# This file is distributed under the same license as the PACKAGE package. +# +msgid "" +msgstr "" +"Project-Id-Version: Django\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-11-19 19:42+0200\n" +"PO-Revision-Date: 2008-11-23 00:02+0300\n" +"Last-Translator: Mykola Zamkovoy \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: .\conf\global_settings.py:44 +msgid "Arabic" +msgstr "Арабська" + +#: .\conf\global_settings.py:45 +msgid "Bengali" +msgstr "Бенгальська" + +#: .\conf\global_settings.py:46 +msgid "Bulgarian" +msgstr "Болгарська" + +#: .\conf\global_settings.py:47 +msgid "Catalan" +msgstr "Каталонська" + +#: .\conf\global_settings.py:48 +msgid "Czech" +msgstr "Чеська" + +#: .\conf\global_settings.py:49 +msgid "Welsh" +msgstr "Валлійська" + +#: .\conf\global_settings.py:50 +msgid "Danish" +msgstr "Датська" + +#: .\conf\global_settings.py:51 +msgid "German" +msgstr "Німецька" + +#: .\conf\global_settings.py:52 +msgid "Greek" +msgstr "Грецька" + +#: .\conf\global_settings.py:53 +msgid "English" +msgstr "Англійська" + +#: .\conf\global_settings.py:54 +msgid "Spanish" +msgstr "Іспанська" + +#: .\conf\global_settings.py:55 + +msgid "Estonian" +msgstr "Румунська" + +#: .\conf\global_settings.py:56 +msgid "Argentinean Spanish" +msgstr "Аргентинська іспанська" + +#: .\conf\global_settings.py:57 +msgid "Basque" +msgstr "Баскський" + +#: .\conf\global_settings.py:58 +msgid "Persian" +msgstr "Перська" + +#: .\conf\global_settings.py:59 +msgid "Finnish" +msgstr "Фінська" + +#: .\conf\global_settings.py:60 +msgid "French" +msgstr "Французька" + +#: .\conf\global_settings.py:61 +msgid "Irish" +msgstr "Ірландська" + +#: .\conf\global_settings.py:62 +msgid "Galician" +msgstr "Галіційська" + +#: .\conf\global_settings.py:63 +msgid "Hungarian" +msgstr "Угорська" + +#: .\conf\global_settings.py:64 +msgid "Hebrew" +msgstr "Іврит" + +#: .\conf\global_settings.py:65 +msgid "Hindi" +msgstr "Хінді" + +#: .\conf\global_settings.py:66 +msgid "Croatian" +msgstr "Хорватська" + +#: .\conf\global_settings.py:67 +msgid "Icelandic" +msgstr "Ісландська" + +#: .\conf\global_settings.py:68 +msgid "Italian" +msgstr "Італійська" + +#: .\conf\global_settings.py:69 +msgid "Japanese" +msgstr "Японська" + +#: .\conf\global_settings.py:70 +msgid "Georgian" +msgstr "Грузинська" + +#: .\conf\global_settings.py:71 +msgid "Korean" +msgstr "Корейська" + +#: .\conf\global_settings.py:72 +msgid "Khmer" +msgstr "Кхмерська" + +#: .\conf\global_settings.py:73 +msgid "Kannada" +msgstr "Канадська" + +#: .\conf\global_settings.py:74 +msgid "Latvian" +msgstr "Латвійська" + +#: .\conf\global_settings.py:75 +msgid "Lithuanian" +msgstr "Литовська" + +#: .\conf\global_settings.py:76 +msgid "Macedonian" +msgstr "Македонська" + +#: .\conf\global_settings.py:77 +msgid "Dutch" +msgstr "Голландська" + +#: .\conf\global_settings.py:78 +msgid "Norwegian" +msgstr "Норвезька" + +#: .\conf\global_settings.py:79 +msgid "Polish" +msgstr "Польська" + +#: .\conf\global_settings.py:80 +msgid "Portuguese" +msgstr "Португальська" + +#: .\conf\global_settings.py:81 +msgid "Brazilian Portuguese" +msgstr "Бразильска" + +#: .\conf\global_settings.py:82 +msgid "Romanian" +msgstr "Румунська" + +#: .\conf\global_settings.py:83 +msgid "Russian" +msgstr "Російська" + +#: .\conf\global_settings.py:84 +msgid "Slovak" +msgstr "Словацька" + +#: .\conf\global_settings.py:85 +msgid "Slovenian" +msgstr "Словенська" + +#: .\conf\global_settings.py:86 +msgid "Serbian" +msgstr "Сербська" + +#: .\conf\global_settings.py:87 +msgid "Swedish" +msgstr "Шведська" + +#: .\conf\global_settings.py:88 +msgid "Tamil" +msgstr "Тамільська" + +#: .\conf\global_settings.py:89 +msgid "Telugu" +msgstr "Телугу" + +#: .\conf\global_settings.py:90 +msgid "Thai" +msgstr "Тайська" + +#: .\conf\global_settings.py:91 +msgid "Turkish" +msgstr "Турецька" + +#: .\conf\global_settings.py:92 + +msgid "Ukrainian" +msgstr "Українська" + +#: .\conf\global_settings.py:93 +msgid "Simplified Chinese" +msgstr "Китайська спрощена" + +#: .\conf\global_settings.py:94 +msgid "Traditional Chinese" +msgstr "Китайська традиційна" + +#: .\contrib\admin\filterspecs.py:44 +#, python-format +msgid "" +"

    By %s:

    \n" +"
      \n" +msgstr "" +"

      За %s:

      \n" +"
        \n" + +#: .\contrib\admin\filterspecs.py:74 .\contrib\admin\filterspecs.py:91 +#: .\contrib\admin\filterspecs.py:146 .\contrib\admin\filterspecs.py:172 +msgid "All" +msgstr "Всі" + +#: .\contrib\admin\filterspecs.py:112 +msgid "Any date" +msgstr "Будь-яка дата" + +#: .\contrib\admin\filterspecs.py:113 +msgid "Today" +msgstr "Сьогодні" + +#: .\contrib\admin\filterspecs.py:116 +msgid "Past 7 days" +msgstr "Останні 7 днів" + +#: .\contrib\admin\filterspecs.py:118 +msgid "This month" +msgstr "Цього місяця" + +#: .\contrib\admin\filterspecs.py:120 +msgid "This year" +msgstr "Цього року" + +#: .\contrib\admin\filterspecs.py:146 .\forms\widgets.py:390 +#: .\newforms\widgets.py:361 .\oldforms\__init__.py:588 +msgid "Yes" +msgstr "Так" + +#: .\contrib\admin\filterspecs.py:146 .\forms\widgets.py:390 +#: .\newforms\widgets.py:361 .\oldforms\__init__.py:588 +msgid "No" +msgstr "Ні" + +#: .\contrib\admin\filterspecs.py:153 .\forms\widgets.py:390 +#: .\newforms\widgets.py:361 .\oldforms\__init__.py:588 +msgid "Unknown" +msgstr "Невідомо" + +#: .\contrib\admin\models.py:19 +msgid "action time" +msgstr "час дії" + +#: .\contrib\admin\models.py:22 +msgid "object id" +msgstr "id об'єкту" + +#: .\contrib\admin\models.py:23 +msgid "object repr" +msgstr "представлення об'єкту(repr)" + +#: .\contrib\admin\models.py:24 +msgid "action flag" +msgstr "прапор дії" + +#: .\contrib\admin\models.py:25 +msgid "change message" +msgstr "змінити повідомлення" + +#: .\contrib\admin\models.py:28 +msgid "log entry" +msgstr "реєстрування записів" + +#: .\contrib\admin\models.py:29 +msgid "log entries" +msgstr "реєстрування записів" + +#: .\contrib\admin\options.py:60 .\contrib\admin\options.py:121 + +msgid "None" +msgstr "Ніщо" + +#: .\contrib\admin\options.py:338 +#, python-format +msgid "Changed %s." +msgstr "Змінено %s." + +#: .\contrib\admin\options.py:338 .\contrib\admin\options.py:348 +#: .\contrib\comments\templates\comments\preview.html.py:15 +#: .\core\validators.py:279 .\db\models\manipulators.py:305 +#: .\forms\models.py:288 +msgid "and" +msgstr "та" + +#: .\contrib\admin\options.py:343 +#, python-format +msgid "Added %(name)s \"%(object)s\"." +msgstr "Додано %(name)s \"%(object)s\"." + +#: .\contrib\admin\options.py:347 +#, python-format +msgid "Changed %(list)s for %(name)s \"%(object)s\"." +msgstr "Змінено %(list)s для %(name)s \"%(object)s\"." + +#: .\contrib\admin\options.py:352 +#, python-format +msgid "Deleted %(name)s \"%(object)s\"." +msgstr "Видалено %(name)s \"%(object)s\"." + +#: .\contrib\admin\options.py:356 +msgid "No fields changed." +msgstr "Поля не змінені." + +#: .\contrib\admin\options.py:417 .\contrib\admin\views\auth.py:20 +#: .\contrib\auth\admin.py:51 +msgid "The %(name)s \"%(obj)s\" was added successfully." +msgstr "%(name)s \"%(obj)s\" було додано успішно." + +#: .\contrib\admin\options.py:421 .\contrib\admin\options.py:454 +#: .\contrib\admin\views\auth.py:25 .\contrib\auth\admin.py:59 +msgid "You may edit it again below." +msgstr "Ви можете редагувати це знову внизу." + +#: .\contrib\admin\options.py:431 .\contrib\admin\options.py:464 +#, python-format +msgid "You may add another %s below." +msgstr "Ви можете додати інший %s внизу." + +#: .\contrib\admin\options.py:452 +#, python-format +msgid "The %(name)s \"%(obj)s\" was changed successfully." +msgstr "%(name)s \"%(obj)s\" був успішно змінений." + +#: .\contrib\admin\options.py:460 +#, python-format +msgid "" +"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below." +msgstr "" +"%(name)s \"%(obj)s\" був успішно доданий. Ви модете редагувати його знову " +"внизу." + +#: .\contrib\admin\options.py:528 +#, python-format +msgid "Add %s" +msgstr "Додати %s" + +#: .\contrib\admin\options.py:559 .\contrib\admin\options.py:673 +#, python-format +msgid "%(name)s object with primary key %(key)r does not exist." +msgstr "%(name)s об'єкт з первинним ключем %(key)r не існує." + +#: .\contrib\admin\options.py:606 +#, python-format +msgid "Change %s" +msgstr "Змінити %s" + +#: .\contrib\admin\options.py:638 +msgid "Database error" +msgstr "Помилка бази даних" + +#: .\contrib\admin\options.py:688 +#, python-format +msgid "The %(name)s \"%(obj)s\" was deleted successfully." +msgstr "%(name)s \"%(obj)s\" був видалений успішно." + +#: .\contrib\admin\options.py:695 +msgid "Are you sure?" +msgstr "Ви впевнені?" + +#: .\contrib\admin\options.py:724 +#, python-format +msgid "Change history: %s" +msgstr "Історія змін: %s" + +#: .\contrib\admin\sites.py:16 .\contrib\admin\views\decorators.py:14 +#: .\contrib\auth\forms.py:80 +msgid "" +"Please enter a correct username and password. Note that both fields are case-" +"sensitive." +msgstr "" +"Будь-ласка введіть правильне ім'я та пароль. Зауважте, що обидва поля " +"розрізняють великі і маленькі літери." + +#: .\contrib\admin\sites.py:226 .\contrib\admin\views\decorators.py:40 + +msgid "Please log in again, because your session has expired." +msgstr "" +"Будь ласка, увійдіть знову, ваша сесія закінчилася. Не хвилюйтесь: все, що " +"ви додавали збережено." + +#: .\contrib\admin\sites.py:233 .\contrib\admin\views\decorators.py:47 +msgid "" +"Looks like your browser isn't configured to accept cookies. Please enable " +"cookies, reload this page, and try again." +msgstr "" +"Здається ваш броузер не сконфігурований приймати cookies. Будь ласка, " +"увімкніть cookies, перезавантажте цю сторінку і спробуйте знову" + +#: .\contrib\admin\sites.py:249 .\contrib\admin\sites.py:255 +#: .\contrib\admin\views\decorators.py:66 +msgid "Usernames cannot contain the '@' character." +msgstr "Ім'я користувача не може містити символ '@'." + +#: .\contrib\admin\sites.py:252 .\contrib\admin\views\decorators.py:62 +msgid "Your e-mail address is not your username. Try '%s' instead." +msgstr "" +"Ваша e-mail адреса не є вашим ім'ям користувача. Замість спробуйте '%s'" + +#: .\contrib\admin\sites.py:312 +msgid "Site administration" +msgstr "Адміністрування сайта" + +#: .\contrib\admin\sites.py:325 +#: .\contrib\admin\templates\admin\login.html.py:26 +#: .\contrib\admin\templates\registration\password_reset_complete.html.py:14 +#: .\contrib\admin\views\decorators.py:20 +msgid "Log in" +msgstr "Увійти" + +#: .\contrib\admin\sites.py:372 +#, python-format +msgid "%s administration" +msgstr "Адміністрування %s" + +#: .\contrib\admin\util.py:138 +#, python-format +msgid "One or more %(fieldname)s in %(name)s: %(obj)s" +msgstr "Одне або більше %(fieldname)s у %(name)s: %(obj)s" + +#: .\contrib\admin\util.py:143 +#, python-format +msgid "One or more %(fieldname)s in %(name)s:" +msgstr "Одне або більше %(fieldname)s у %(name)s:" + +#: .\contrib\admin\widgets.py:70 +#: .\contrib\admin\templates\widget\date_time.html.py:3 +msgid "Date:" +msgstr "Дата:" + +#: .\contrib\admin\widgets.py:70 +#: .\contrib\admin\templates\widget\date_time.html.py:4 +msgid "Time:" +msgstr "Час:" + +#: .\contrib\admin\widgets.py:94 +#: .\contrib\admin\templates\widget\file.html.py:2 +msgid "Currently:" +msgstr "Зараз:" + +#: .\contrib\admin\widgets.py:94 +#: .\contrib\admin\templates\widget\file.html.py:3 +msgid "Change:" +msgstr "Змінити:" + +#: .\contrib\admin\widgets.py:123 + +msgid "Lookup" +msgstr "Вийти" + +#: .\contrib\admin\widgets.py:230 +msgid "Add Another" +msgstr "Додати інше" + +#: .\contrib\admin\templates\admin\404.html.py:4 +#: .\contrib\admin\templates\admin\404.html.py:8 +msgid "Page not found" +msgstr "Сторінка не знайдена" + +#: .\contrib\admin\templates\admin\404.html.py:10 +msgid "We're sorry, but the requested page could not be found." +msgstr "Ми шкодуємо, але сторінка яку ви запросили, не знайдена." + +#: .\contrib\admin\templates\admin\500.html.py:4 +#: .\contrib\admin\templates\admin\app_index.html.py:8 +#: .\contrib\admin\templates\admin\base.html.py:33 +#: .\contrib\admin\templates\admin\change_form.html.py:17 +#: .\contrib\admin\templates\admin\change_list.html.py:8 +#: .\contrib\admin\templates\admin\delete_confirmation.html.py:6 +#: .\contrib\admin\templates\admin\invalid_setup.html.py:4 +#: .\contrib\admin\templates\admin\object_history.html.py:6 +#: .\contrib\admin\templates\admin\auth\user\change_password.html.py:10 +#: .\contrib\admin\templates\admin_doc\bookmarklets.html.py:3 +#: .\contrib\admin\templates\registration\logged_out.html.py:4 +#: .\contrib\admin\templates\registration\password_change_done.html.py:4 +#: .\contrib\admin\templates\registration\password_change_form.html.py:4 +#: .\contrib\admin\templates\registration\password_reset_complete.html.py:4 +#: .\contrib\admin\templates\registration\password_reset_confirm.html.py:4 +#: .\contrib\admin\templates\registration\password_reset_done.html.py:4 +#: .\contrib\admin\templates\registration\password_reset_form.html.py:4 +#: .\contrib\admindocs\templates\admin_doc\bookmarklets.html.py:3 +msgid "Home" +msgstr "Домівка" + +#: .\contrib\admin\templates\admin\500.html.py:4 +msgid "Server error" +msgstr "Помилка сервера" + +#: .\contrib\admin\templates\admin\500.html.py:6 +msgid "Server error (500)" +msgstr "Помилка сервера (500)" + +#: .\contrib\admin\templates\admin\500.html.py:9 +msgid "Server Error (500)" +msgstr "Помилка сервера (500)" + +#: .\contrib\admin\templates\admin\500.html.py:10 +msgid "" +"There's been an error. It's been reported to the site administrators via e-" +"mail and should be fixed shortly. Thanks for your patience." +msgstr "" +"Виникла помилка. Про неї було повідомлено адміністраторам сайту e-mail'ом і " +"вона повинна бути незабаром виправлена. Дякуємо за ваше терпіння." + +#: .\contrib\admin\templates\admin\app_index.html.py:10 +#: .\contrib\admin\templates\admin\index.html.py:19 +msgid "%(name)s" +msgstr "Додати %(name)s" + +#: .\contrib\admin\templates\admin\base.html.py:28 +msgid "Welcome," +msgstr "Вітаємо," + +#: .\contrib\admin\templates\admin\base.html.py:28 +#: .\contrib\admin\templates\admin_doc\bookmarklets.html.py:3 +#: .\contrib\admin\templates\registration\password_change_done.html.py:3 +#: .\contrib\admin\templates\registration\password_change_form.html.py:3 +#: .\contrib\admindocs\templates\admin_doc\bookmarklets.html.py:3 +msgid "Documentation" +msgstr "Документація" + +#: .\contrib\admin\templates\admin\base.html.py:28 +#: .\contrib\admin\templates\admin\auth\user\change_password.html.py:13 +#: .\contrib\admin\templates\admin\auth\user\change_password.html.py:46 +#: .\contrib\admin\templates\admin_doc\bookmarklets.html.py:4 +#: .\contrib\admin\templates\admin_doc\missing_docutils.html.py:4 +#: .\contrib\admin\templates\admin_doc\model_index.html.py:5 +#: .\contrib\admin\templates\admin_doc\template_detail.html.py:4 +#: .\contrib\admin\templates\admin_doc\template_filter_index.html.py:5 +#: .\contrib\admin\templates\admin_doc\template_tag_index.html.py:5 +#: .\contrib\admin\templates\admin_doc\view_detail.html.py:4 +#: .\contrib\admin\templates\registration\password_change_done.html.py:3 +#: .\contrib\admin\templates\registration\password_change_form.html.py:3 +msgid "Change password" +msgstr "Змінити пароль" + +#: .\contrib\admin\templates\admin\base.html.py:28 +#: .\contrib\admin\templates\admin_doc\bookmarklets.html.py:4 +#: .\contrib\admin\templates\admin_doc\missing_docutils.html.py:4 +#: .\contrib\admin\templates\admin_doc\model_index.html.py:5 +#: .\contrib\admin\templates\admin_doc\template_detail.html.py:4 +#: .\contrib\admin\templates\admin_doc\template_filter_index.html.py:5 +#: .\contrib\admin\templates\admin_doc\template_tag_index.html.py:5 +#: .\contrib\admin\templates\admin_doc\view_detail.html.py:4 +#: .\contrib\admin\templates\registration\password_change_done.html.py:3 +#: .\contrib\admin\templates\registration\password_change_form.html.py:3 +msgid "Log out" +msgstr "Вийти" + +#: .\contrib\admin\templates\admin\base_site.html.py:4 +msgid "Django site admin" +msgstr "Django сайт адміністрування" + +#: .\contrib\admin\templates\admin\change_form.html.py:20 +#: .\contrib\admin\templates\admin\index.html.py:29 +msgid "Add" +msgstr "Додати" + +#: .\contrib\admin\templates\admin\change_form.html.py:27 +#: .\contrib\admin\templates\admin\object_history.html.py:10 +msgid "History" +msgstr "Історія" + +#: .\contrib\admin\templates\admin\change_form.html.py:28 +#: .\contrib\admin\templates\admin\edit_inline\stacked.html.py:13 +#: .\contrib\admin\templates\admin\edit_inline\tabular.html.py:27 +msgid "View on site" +msgstr "Дивитися на сайті" + +#: .\contrib\admin\templates\admin\change_form.html.py:38 +#: .\contrib\admin\templates\admin\auth\user\change_password.html.py:22 +msgid "Please correct the error below." +msgid_plural "Please correct the errors below." +msgstr[0] "Будь ласка, виправте помилку, що зазначена нижче" +msgstr[1] "Будь ласка, виправте помилки, що зазначені нижче" + +#: .\contrib\admin\templates\admin\change_list.html.py:16 +#, python-format +msgid "Add %(name)s" +msgstr "Додати %(name)s" + +#: .\contrib\admin\templates\admin\change_list.html.py:26 +#: .\contrib\admin\templates\admin\filters.html.py:4 +msgid "Filter" +msgstr "Відфільтрувати" + +#: .\contrib\admin\templates\admin\delete_confirmation.html.py:10 +#: .\contrib\admin\templates\admin\submit_line.html.py:4 +#: .\forms\formsets.py:246 +msgid "Delete" +msgstr "Видалити" + +#: .\contrib\admin\templates\admin\delete_confirmation.html.py:16 +#, python-format +msgid "" +"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting " +"related objects, but your account doesn't have permission to delete the " +"following types of objects:" +msgstr "" +"Видалення %(object_name)s '%(escaped_object)s' призведе до видалення пов'язаних " +"об'єктів, але ваш реєстраційний запис не має дозволу видаляти наступні типи " +"об'єктів:" + +#: .\contrib\admin\templates\admin\delete_confirmation.html.py:23 +#, python-format +msgid "" +"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? " +"All of the following related items will be deleted:" +msgstr "" +"Ви впевнені що хочете видалити %(object_name)s \"%(escaped_object)s\"? Всі пов'язані " +"записи, що перелічені, будуть видалені:" + +#: .\contrib\admin\templates\admin\delete_confirmation.html.py:28 +msgid "Yes, I'm sure" +msgstr "Так, я впевнений" + +#: .\contrib\admin\templates\admin\filter.html.py:2 +#, python-format +msgid " By %(filter_title)s " +msgstr "За %(filter_title)s" + +#: .\contrib\admin\templates\admin\index.html.py:18 +#, python-format +msgid "Models available in the %(name)s application." +msgstr "Моделі, що є в наявності у прикладній системі %(name)s." + +#: .\contrib\admin\templates\admin\index.html.py:35 +msgid "Change" +msgstr "Змінити" + +#: .\contrib\admin\templates\admin\index.html.py:45 +msgid "You don't have permission to edit anything." +msgstr "У вас немає дозволу редагувати будь-що." + +#: .\contrib\admin\templates\admin\index.html.py:53 +msgid "Recent Actions" +msgstr "Недавні дії" + +#: .\contrib\admin\templates\admin\index.html.py:54 +msgid "My Actions" +msgstr "Мої дії" + +#: .\contrib\admin\templates\admin\index.html.py:58 +msgid "None available" +msgstr "Немає" + +#: .\contrib\admin\templates\admin\invalid_setup.html.py:7 +msgid "" +"Something's wrong with your database installation. Make sure the appropriate " +"database tables have been created, and make sure the database is readable by " +"the appropriate user." +msgstr "" +"Щось не так з інсталяцією бази даних. Перевірте, що таблиці бази даних " +"створено і база даних може бути прочитана відповідним користувачем." + +#: .\contrib\admin\templates\admin\login.html.py:19 +msgid "Username:" +msgstr "Користувач:" + +#: .\contrib\admin\templates\admin\login.html.py:22 +msgid "Password:" +msgstr "Пароль:" + +#: .\contrib\admin\templates\admin\object_history.html.py:22 +msgid "Date/time" +msgstr "Дата/час" + +#: .\contrib\admin\templates\admin\object_history.html.py:23 +msgid "User" +msgstr "Користувач" + +#: .\contrib\admin\templates\admin\object_history.html.py:24 +#: .\contrib\comments\templates\comments\moderation_queue.html.py:33 +msgid "Action" +msgstr "Дія" + +#: .\contrib\admin\templates\admin\object_history.html.py:30 +#: .\utils\translation\trans_real.py:404 +msgid "DATETIME_FORMAT" +msgstr "d.m.Y H:i" + +#: .\contrib\admin\templates\admin\object_history.html.py:38 +msgid "" +"This object doesn't have a change history. It probably wasn't added via this " +"admin site." +msgstr "" +"Цей об'єкт не має історії змін. Напевно, він був доданий не через цей сайт " +"адміністрування." + +#: .\contrib\admin\templates\admin\pagination.html.py:10 +msgid "Show all" +msgstr "Показати всі" + +#: .\contrib\admin\templates\admin\search_form.html.py:8 +msgid "Go" +msgstr "Уперед" + +#: .\contrib\admin\templates\admin\search_form.html.py:10 +#, python-format +msgid "1 result" +msgid_plural "%(counter)s results" +msgstr[0] "1 результат" +msgstr[1] "Результатів: %(counter)s" + +#: .\contrib\admin\templates\admin\search_form.html.py:10 +#, python-format +msgid "%(full_result_count)s total" +msgstr "%(full_result_count)s всього" + +#: .\contrib\admin\templates\admin\submit_line.html.py:3 +msgid "Save" +msgstr "Зберегти" + +#: .\contrib\admin\templates\admin\submit_line.html.py:5 +msgid "Save as new" +msgstr "Зберегти як нове" + +#: .\contrib\admin\templates\admin\submit_line.html.py:6 +msgid "Save and add another" +msgstr "Зберегти і додати інше" + +#: .\contrib\admin\templates\admin\submit_line.html.py:7 +msgid "Save and continue editing" +msgstr "Зберегти і продовжити редагування" + +#: .\contrib\admin\templates\admin\auth\user\add_form.html.py:6 +msgid "" +"First, enter a username and password. Then, you'll be able to edit more user " +"options." +msgstr "" +"Спочатку, введіть ім'я користувача і пароль. Потім ви зможете редагувати " +"більше опцій користувача." + +#: .\contrib\admin\templates\admin\auth\user\add_form.html.py:13 +#: .\contrib\auth\forms.py:14 .\contrib\auth\forms.py:47 +#: .\contrib\auth\forms.py:59 +msgid "Username" +msgstr "Користувач:" + +#: .\contrib\admin\templates\admin\auth\user\add_form.html.py:20 +#: .\contrib\admin\templates\admin\auth\user\change_password.html.py:33 +#: .\contrib\auth\forms.py:17 .\contrib\auth\forms.py:60 +#: .\contrib\auth\forms.py:184 +msgid "Password" +msgstr "Пароль:" + +#: .\contrib\admin\templates\admin\auth\user\add_form.html.py:26 +#: .\contrib\admin\templates\admin\auth\user\change_password.html.py:39 +#: .\contrib\auth\forms.py:185 +msgid "Password (again)" +msgstr "Зміна пароля" + +#: .\contrib\admin\templates\admin\auth\user\add_form.html.py:27 +#: .\contrib\admin\templates\admin\auth\user\change_password.html.py:40 +msgid "Enter the same password as above, for verification." +msgstr "Повторіть пароль для перевірки." + +#: .\contrib\admin\templates\admin\auth\user\change_password.html.py:26 +#, python-format +msgid "Enter a new password for the user %(username)s." +msgstr "Введіть новий пароль для користувача %(username)s." + +#: .\contrib\admin\templates\admin\edit_inline\tabular.html.py:15 +msgid "Delete?" +msgstr "Видалити" + +#: .\contrib\admin\templates\admin_doc\bookmarklets.html.py:3 +#: .\contrib\admindocs\templates\admin_doc\bookmarklets.html.py:3 +msgid "Bookmarklets" +msgstr "Інтерактивні закладки" + +#: .\contrib\admin\templates\admin_doc\bookmarklets.html.py:5 +#: .\contrib\admindocs\templates\admin_doc\bookmarklets.html.py:4 +msgid "Documentation bookmarklets" +msgstr "Інтерактивні закладки документації" + +#: .\contrib\admin\templates\admin_doc\bookmarklets.html.py:9 +#: .\contrib\admindocs\templates\admin_doc\bookmarklets.html.py:8 +msgid "" +"\n" +"

        To install bookmarklets, drag the link to your bookmarks\n" +"toolbar, or right-click the link and add it to your bookmarks. Now you can\n" +"select the bookmarklet from any page in the site. Note that some of these\n" +"bookmarklets require you to be viewing the site from a computer designated\n" +"as \"internal\" (talk to your system administrator if you aren't sure if\n" +"your computer is \"internal\").

        \n" +msgstr "" +"\n" +"

        Щоб встановити інтерактивні закладки, перетягніть лінк до\n" +"тулбару закладок, або клікніть правою кнопкою миші та додайте у\n" +"свої закладки. Тепер ви можете обрати інтерактивні закладки з будь-якої\n" +"сторінки сайту. Зауважте, що деякі з цих інтерактивних закладок на сайті\n" +"можуть переглядатися тільки з комп'ютера, що є в одній внутрішній мережі з \n" +"даним сайтом (запитайте у вашого системного адміністратора, якщо ви не " +"впевнені,\n" +"що сайт і ваш комп'ютер є в одній внутрішній мережі).

        \n" + +#: .\contrib\admin\templates\admin_doc\bookmarklets.html.py:19 +#: .\contrib\admindocs\templates\admin_doc\bookmarklets.html.py:18 +msgid "Documentation for this page" +msgstr "Документація для цієї сторінки" + +#: .\contrib\admin\templates\admin_doc\bookmarklets.html.py:20 +#: .\contrib\admindocs\templates\admin_doc\bookmarklets.html.py:19 +msgid "" +"Jumps you from any page to the documentation for the view that generates " +"that page." +msgstr "" +"Перекидає вас з будь-якої сторінки в документацію для функції, що " +"сгенерувала цю сторінку." + +#: .\contrib\admin\templates\admin_doc\bookmarklets.html.py:22 +#: .\contrib\admindocs\templates\admin_doc\bookmarklets.html.py:21 +msgid "Show object ID" +msgstr "Показати ID об'єкту" + +#: .\contrib\admin\templates\admin_doc\bookmarklets.html.py:23 +#: .\contrib\admindocs\templates\admin_doc\bookmarklets.html.py:22 +msgid "" +"Shows the content-type and unique ID for pages that represent a single " +"object." +msgstr "" +"Показує content-type та унікальний ID для сторінок, які являють собою єдиний " +"об'єкт." + +#: .\contrib\admin\templates\admin_doc\bookmarklets.html.py:25 +#: .\contrib\admindocs\templates\admin_doc\bookmarklets.html.py:24 +msgid "Edit this object (current window)" +msgstr "Редагувати цей об'єкт (поточне вікно)" + +#: .\contrib\admin\templates\admin_doc\bookmarklets.html.py:26 +#: .\contrib\admindocs\templates\admin_doc\bookmarklets.html.py:25 +msgid "Jumps to the admin page for pages that represent a single object." +msgstr "" +"Перекидає до адміністраторської сторінки для сторінок, що " +"відображають окремий об'єкт." + +#: .\contrib\admin\templates\admin_doc\bookmarklets.html.py:28 +#: .\contrib\admindocs\templates\admin_doc\bookmarklets.html.py:27 +msgid "Edit this object (new window)" +msgstr "Редагувати цей об'єкт (нове вікно)" + +#: .\contrib\admin\templates\admin_doc\bookmarklets.html.py:29 +#: .\contrib\admindocs\templates\admin_doc\bookmarklets.html.py:28 +msgid "As above, but opens the admin page in a new window." +msgstr "Як і вище, але відкриває сторінку адміністрування у новому вікні." + +#: .\contrib\admin\templates\registration\logged_out.html.py:8 +msgid "Thanks for spending some quality time with the Web site today." +msgstr "Дякуємо за час, проведений сьогодні на сайті." + +#: .\contrib\admin\templates\registration\logged_out.html.py:10 +msgid "Log in again" +msgstr "Увійти знову" + +#: .\contrib\admin\templates\registration\password_change_done.html.py:4 +#: .\contrib\admin\templates\registration\password_change_form.html.py:4 +#: .\contrib\admin\templates\registration\password_change_form.html.py:6 +#: .\contrib\admin\templates\registration\password_change_form.html.py:10 +msgid "Password change" +msgstr "Зміна паролю" + +#: .\contrib\admin\templates\registration\password_change_done.html.py:6 +#: .\contrib\admin\templates\registration\password_change_done.html.py:10 +msgid "Password change successful" +msgstr "Зміна паролю успішна" + +#: .\contrib\admin\templates\registration\password_change_done.html.py:12 +msgid "Your password was changed." +msgstr "Ваш пароль було змінено." + +#: .\contrib\admin\templates\registration\password_change_form.html.py:12 +msgid "" +"Please enter your old password, for security's sake, and then enter your new " +"password twice so we can verify you typed it in correctly." +msgstr "" +"Будь ласка введіть ваш старий пароль, задля безпеки, потім введіть ваш новий " +"пароль двічі, щоб ми могли перевірити, що ви ввели його правильно" + +#: .\contrib\admin\templates\registration\password_change_form.html.py:17 +msgid "Old password:" +msgstr "Старий пароль:" + +#: .\contrib\admin\templates\registration\password_change_form.html.py:19 +#: .\contrib\admin\templates\registration\password_reset_confirm.html.py:18 +msgid "New password:" +msgstr "Новий пароль:" + +#: .\contrib\admin\templates\registration\password_change_form.html.py:21 +#: .\contrib\admin\templates\registration\password_reset_confirm.html.py:20 +msgid "Confirm password:" +msgstr "Підтвердіть пароль:" + +#: .\contrib\admin\templates\registration\password_change_form.html.py:23 +#: .\contrib\admin\templates\registration\password_reset_confirm.html.py:21 +msgid "Change my password" +msgstr "Змінити мій пароль" + +#: .\contrib\admin\templates\registration\password_reset_complete.html.py:4 +#: .\contrib\admin\templates\registration\password_reset_confirm.html.py:6 +#: .\contrib\admin\templates\registration\password_reset_done.html.py:4 +#: .\contrib\admin\templates\registration\password_reset_form.html.py:4 +#: .\contrib\admin\templates\registration\password_reset_form.html.py:6 +#: .\contrib\admin\templates\registration\password_reset_form.html.py:10 +msgid "Password reset" +msgstr "Перевстановлення паролю" + +#: .\contrib\admin\templates\registration\password_reset_complete.html.py:6 +#: .\contrib\admin\templates\registration\password_reset_complete.html.py:10 +msgid "Password reset complete" +msgstr "Пароль перевстановлено" + +#: .\contrib\admin\templates\registration\password_reset_complete.html.py:12 +msgid "Your password has been set. You may go ahead and log in now." +msgstr "Пароль встановлено. Ви можете увійти зараз." + +#: .\contrib\admin\templates\registration\password_reset_confirm.html.py:4 + +msgid "Password reset confirmation" +msgstr "Підтвердження перевстановлення паролю" + +#: .\contrib\admin\templates\registration\password_reset_confirm.html.py:12 + +msgid "Enter new password" +msgstr "Новий пароль:" + +#: .\contrib\admin\templates\registration\password_reset_confirm.html.py:14 +msgid "" +"Please enter your new password twice so we can verify you typed it in " +"correctly." +msgstr "" +"Будь ласка, введіть ваш старий пароль, задля безпеки, потім введіть ваш " +"новий пароль двічі, щоб ми могли перевірити, що ви ввели його правильно" + +#: .\contrib\admin\templates\registration\password_reset_confirm.html.py:26 +msgid "Password reset unsuccessful" +msgstr "Пароль не перевстановлено" + +#: .\contrib\admin\templates\registration\password_reset_confirm.html.py:28 +msgid "" +"The password reset link was invalid, possibly because it has already been " +"used. Please request a new password reset." +msgstr "" +"Посилання на перевстановлення паролю було помилковим. Можливо тому, що воно " +"було вже використано. Будь ласка, замовте нове перевстановлення паролю." + +#: .\contrib\admin\templates\registration\password_reset_done.html.py:6 +#: .\contrib\admin\templates\registration\password_reset_done.html.py:10 +msgid "Password reset successful" +msgstr "Пароль перевстановлено успішно" + +#: .\contrib\admin\templates\registration\password_reset_done.html.py:12 +msgid "" +"We've e-mailed you instructions for setting your password to the e-mail " +"address you submitted. You should be receiving it shortly." +msgstr "" +"Ми надіслали інструкції по встановленню нового паролю поштою на адресу, яку " +"ви вказали. Незабаром ви повинні його отримати." + +#: .\contrib\admin\templates\registration\password_reset_email.html.py:2 +msgid "You're receiving this e-mail because you requested a password reset" +msgstr "Ви отримали цього листа, тому що замовили перевстановлення паролю" + +#: .\contrib\admin\templates\registration\password_reset_email.html.py:3 +#, python-format +msgid "for your user account at %(site_name)s" +msgstr "для вашого рахунку користувача на сайті %(site_name)s" + +#: .\contrib\admin\templates\registration\password_reset_email.html.py:5 +msgid "Please go to the following page and choose a new password:" +msgstr "Будь ласка, перейдіть на цю сторінку, та оберіть новий пароль:" + +#: .\contrib\admin\templates\registration\password_reset_email.html.py:9 +msgid "Your username, in case you've forgotten:" +msgstr "У разі, якщо ви забули, ваше ім'я користувача:" + +#: .\contrib\admin\templates\registration\password_reset_email.html.py:11 +msgid "Thanks for using our site!" +msgstr "Дякуємо за користування нашим сайтом!" + +#: .\contrib\admin\templates\registration\password_reset_email.html.py:13 +#, python-format +msgid "The %(site_name)s team" +msgstr "Команда сайту %(site_name)s " + +#: .\contrib\admin\templates\registration\password_reset_form.html.py:12 +msgid "" +"Forgotten your password? Enter your e-mail address below, and we'll e-mail " +"instructions for setting a new one." +msgstr "" +"Забули свій пароль? Введіть свою e-mail адресу і ми надішлемо інструкції для " +"встановлення нового паролю по e-mail." + +#: .\contrib\admin\templates\registration\password_reset_form.html.py:16 +msgid "E-mail address:" +msgstr "E-mail адреса:" + +#: .\contrib\admin\templates\registration\password_reset_form.html.py:16 +msgid "Reset my password" +msgstr "Перевстановіть мій пароль" + +#: .\contrib\admin\templatetags\admin_list.py:284 +msgid "All dates" +msgstr "Всі дати" + +#: .\contrib\admin\views\auth.py:31 .\contrib\auth\admin.py:64 + +msgid "Add user" +msgstr "Додати користувача" + +#: .\contrib\admin\views\auth.py:58 .\contrib\auth\admin.py:90 + +msgid "Password changed successfully." +msgstr "Зміна паролю успішна" + +#: .\contrib\admin\views\auth.py:65 .\contrib\auth\admin.py:96 + +msgid "Change password: %s" +msgstr "Змінити пароль: %s" + +#: .\contrib\admin\views\doc.py:48 .\contrib\admin\views\doc.py:50 +#: .\contrib\admin\views\doc.py:52 .\contrib\admindocs\views.py:57 +#: .\contrib\admindocs\views.py:59 .\contrib\admindocs\views.py:61 +msgid "tag:" +msgstr "тег:" + +#: .\contrib\admin\views\doc.py:79 .\contrib\admin\views\doc.py:81 +#: .\contrib\admin\views\doc.py:83 .\contrib\admindocs\views.py:90 +#: .\contrib\admindocs\views.py:92 .\contrib\admindocs\views.py:94 +msgid "filter:" +msgstr "відфільтрувати:" + +#: .\contrib\admin\views\doc.py:137 .\contrib\admin\views\doc.py:139 +#: .\contrib\admin\views\doc.py:141 .\contrib\admindocs\views.py:154 +#: .\contrib\admindocs\views.py:156 .\contrib\admindocs\views.py:158 +msgid "view:" +msgstr "переглянути:" + +#: .\contrib\admin\views\doc.py:166 .\contrib\admindocs\views.py:186 + +msgid "App %r not found" +msgstr "Прикладна система(app) %r не знайдена" + +#: .\contrib\admin\views\doc.py:173 +#, python-format +msgid "Model %(name)r not found in app %(label)r" +msgstr "Модель %(name)r не знайдено у прикладній системі %(label)r" + +#: .\contrib\admin\views\doc.py:185 +#, python-format +msgid "the related `%(label)s.%(type)s` object" +msgstr "пов'язаний `%(label)s.%(type)s` об'єкт" + +#: .\contrib\admin\views\doc.py:185 .\contrib\admin\views\doc.py:207 +#: .\contrib\admin\views\doc.py:221 .\contrib\admin\views\doc.py:226 +#: .\contrib\admindocs\views.py:205 .\contrib\admindocs\views.py:227 +#: .\contrib\admindocs\views.py:241 .\contrib\admindocs\views.py:246 +msgid "model:" +msgstr "модель:" + +#: .\contrib\admin\views\doc.py:216 +#, python-format +msgid "related `%(label)s.%(name)s` objects" +msgstr "зв'язані `%(label)s.%(name)s` об'єкти" + +#: .\contrib\admin\views\doc.py:221 .\contrib\admindocs\views.py:241 +msgid "all %s" +msgstr "всі %s" + +#: .\contrib\admin\views\doc.py:226 .\contrib\admindocs\views.py:246 +msgid "number of %s" +msgstr "кількість з %s" + +#: .\contrib\admin\views\doc.py:231 .\contrib\admindocs\views.py:251 +msgid "Fields on %s objects" +msgstr "Поля об'єктів %s" + +#: .\contrib\admin\views\doc.py:293 .\contrib\admin\views\doc.py:304 +#: .\contrib\admin\views\doc.py:306 .\contrib\admin\views\doc.py:312 +#: .\contrib\admin\views\doc.py:313 .\contrib\admin\views\doc.py:315 +#: .\contrib\admindocs\views.py:314 .\contrib\admindocs\views.py:325 +#: .\contrib\admindocs\views.py:327 .\contrib\admindocs\views.py:333 +#: .\contrib\admindocs\views.py:334 .\contrib\admindocs\views.py:336 +msgid "Integer" +msgstr "Ціле" + +#: .\contrib\admin\views\doc.py:294 .\contrib\admindocs\views.py:315 +msgid "Boolean (Either True or False)" +msgstr "Булеве значення (True або False)" + +#: .\contrib\admin\views\doc.py:295 .\contrib\admin\views\doc.py:314 +#: .\contrib\admindocs\views.py:316 .\contrib\admindocs\views.py:335 + +msgid "String (up to %(max_length)s)" +msgstr "Рядок (до %(maxlength)s символів)" + +#: .\contrib\admin\views\doc.py:296 .\contrib\admindocs\views.py:317 +msgid "Comma-separated integers" +msgstr "Цілі, розділені комою" + +#: .\contrib\admin\views\doc.py:297 .\contrib\admindocs\views.py:318 +msgid "Date (without time)" +msgstr "Дата (без часу)" + +#: .\contrib\admin\views\doc.py:298 .\contrib\admindocs\views.py:319 +msgid "Date (with time)" +msgstr "Дата (з часом)" + +#: .\contrib\admin\views\doc.py:299 .\contrib\admindocs\views.py:320 +msgid "Decimal number" +msgstr "Десяткове число" + +#: .\contrib\admin\views\doc.py:300 .\contrib\admindocs\views.py:321 +msgid "E-mail address" +msgstr "E-mail адреса" + +#: .\contrib\admin\views\doc.py:301 .\contrib\admin\views\doc.py:302 +#: .\contrib\admin\views\doc.py:305 .\contrib\admindocs\views.py:322 +#: .\contrib\admindocs\views.py:323 .\contrib\admindocs\views.py:326 +msgid "File path" +msgstr "Шлях до файла" + +#: .\contrib\admin\views\doc.py:303 .\contrib\admindocs\views.py:324 +msgid "Floating point number" +msgstr "Число з плаваючою комою" + +#: .\contrib\admin\views\doc.py:307 .\contrib\admindocs\views.py:328 +#: .\contrib\comments\models.py:58 +msgid "IP address" +msgstr "IP адреса" + +#: .\contrib\admin\views\doc.py:309 .\contrib\admindocs\views.py:330 +msgid "Boolean (Either True, False or None)" +msgstr "Булеве значення (включаючи True, False або None)" + +#: .\contrib\admin\views\doc.py:310 .\contrib\admindocs\views.py:331 +msgid "Relation to parent model" +msgstr "Відношення до батьківської моделі" + +#: .\contrib\admin\views\doc.py:311 .\contrib\admindocs\views.py:332 +msgid "Phone number" +msgstr "Телефонний номер" + +#: .\contrib\admin\views\doc.py:316 .\contrib\admindocs\views.py:337 +msgid "Text" +msgstr "Текст" + +#: .\contrib\admin\views\doc.py:317 .\contrib\admindocs\views.py:338 +msgid "Time" +msgstr "Час" + +#: .\contrib\admin\views\doc.py:318 .\contrib\admindocs\views.py:339 +#: .\contrib\comments\forms.py:21 +#: .\contrib\comments\templates\comments\moderation_queue.html.py:37 +#: .\contrib\flatpages\admin.py:8 .\contrib\flatpages\models.py:7 +msgid "URL" +msgstr "URL" + +#: .\contrib\admin\views\doc.py:319 .\contrib\admindocs\views.py:340 +msgid "U.S. state (two uppercase letters)" +msgstr "Штат Сполучених Штатів Америки (дві великіх букви)" + +#: .\contrib\admin\views\doc.py:320 .\contrib\admindocs\views.py:341 +msgid "XML text" +msgstr "текст XML" + +#: .\contrib\admin\views\doc.py:346 .\contrib\admindocs\views.py:367 +msgid "%s does not appear to be a urlpattern object" +msgstr "%s не є об'єктом urlpattern" + +#: .\contrib\admin\views\main.py:69 +#, python-format +msgid "Select %s" +msgstr "Вибрати %s" + +#: .\contrib\admin\views\main.py:69 +#, python-format +msgid "Select %s to change" +msgstr "Виберіть %s щоб змінити" + +#: .\contrib\admin\views\template.py:36 .\contrib\sites\models.py:38 +msgid "site" +msgstr "сайт" + +#: .\contrib\admin\views\template.py:38 +msgid "template" +msgstr "ім'я шаблона" + +#: .\contrib\admindocs\views.py:193 +#, python-format +msgid "Model %(model_name)r not found in app %(app_label)r" +msgstr "Модель %(model_name)r не знайдено в прикладній системі %(app_label)r" + +#: .\contrib\admindocs\views.py:205 +#, python-format +msgid "the related `%(app_label)s.%(data_type)s` object" +msgstr "пов'язаний `%(app_label)s.%(data_type)s` об'єкт" + +#: .\contrib\admindocs\views.py:236 +#, python-format +msgid "related `%(app_label)s.%(object_name)s` objects" +msgstr "пов'язані з `%(app_label)s.%(object_name)s` об'єкти" + +#: .\contrib\auth\admin.py:21 +msgid "Personal info" +msgstr "Персональна інформація" + +#: .\contrib\auth\admin.py:22 +msgid "Permissions" +msgstr "Дозволи" + +#: .\contrib\auth\admin.py:23 +msgid "Important dates" +msgstr "Важливі дати" + +#: .\contrib\auth\admin.py:24 +msgid "Groups" +msgstr "Групи" + +#: .\contrib\auth\forms.py:15 .\contrib\auth\forms.py:48 +#: .\contrib\auth\models.py:127 +msgid "" +"Required. 30 characters or fewer. Alphanumeric characters only (letters, " +"digits and underscores)." +msgstr "" +"Необхідне поле. 30 символів або менше. Тільки букви, цифри та символ " +"підкреслювання." + +#: .\contrib\auth\forms.py:16 .\contrib\auth\forms.py:49 +#: .\core\validators.py:72 +msgid "This value must contain only letters, numbers and underscores." +msgstr "" +"Це значення може містити тільки літери, числа та символи підкреслювання" + +#: .\contrib\auth\forms.py:18 +msgid "Password confirmation" +msgstr "Підтвердження паролю" + +#: .\contrib\auth\forms.py:30 +msgid "A user with that username already exists." +msgstr "Користувач з таким ім'ям вже існує." + +#: .\contrib\auth\forms.py:36 .\contrib\auth\forms.py:154 +#: .\contrib\auth\forms.py:196 +msgid "The two password fields didn't match." +msgstr "Паролі у двох полях не співпадають." + +#: .\contrib\auth\forms.py:82 +msgid "This account is inactive." +msgstr "Цей запис користувача не активний." + +#: .\contrib\auth\forms.py:87 +msgid "" +"Your Web browser doesn't appear to have cookies enabled. Cookies are " +"required for logging in." +msgstr "" +"Схоже, що у вашому браузері на увімкнені cookies. Cookies необхідні для " +"входу." + +#: .\contrib\auth\forms.py:100 +msgid "E-mail" +msgstr "E-mail" + +#: .\contrib\auth\forms.py:109 +msgid "" +"That e-mail address doesn't have an associated user account. Are you sure " +"you've registered?" +msgstr "" +"Ця e-mail адреса не пов'язана з користувацьким запитом. Ви впевнені, що ви " +"реєструвалися?" + +#: .\contrib\auth\forms.py:134 +#, python-format +msgid "Password reset on %s" +msgstr "Пароль перевстановлено %s" + +#: .\contrib\auth\forms.py:142 +msgid "New password" +msgstr "Новий пароль:" + +#: .\contrib\auth\forms.py:143 +msgid "New password confirmation" +msgstr "Новий пароль (підтвердження):" + +#: .\contrib\auth\forms.py:168 + +msgid "Old password" +msgstr "Старий пароль:" + +#: .\contrib\auth\forms.py:176 +msgid "Your old password was entered incorrectly. Please enter it again." +msgstr "" +"Старий пароль було введено неправильно. Будь ласка, введіть його знову." + +#: .\contrib\auth\models.py:63 .\contrib\auth\models.py:86 +msgid "name" +msgstr "ім'я" + +#: .\contrib\auth\models.py:65 +msgid "codename" +msgstr "код" + +#: .\contrib\auth\models.py:68 + +msgid "permission" +msgstr "дозвіл" + +#: .\contrib\auth\models.py:69 .\contrib\auth\models.py:87 + +msgid "permissions" +msgstr "дозволи" + +#: .\contrib\auth\models.py:90 + +msgid "group" +msgstr "група" + +#: .\contrib\auth\models.py:91 .\contrib\auth\models.py:137 + +msgid "groups" +msgstr "групи" + +#: .\contrib\auth\models.py:127 +msgid "username" +msgstr "ім'я користувача" + +#: .\contrib\auth\models.py:128 +msgid "first name" +msgstr "ім'я" + +#: .\contrib\auth\models.py:129 +msgid "last name" +msgstr "прізвище" + +#: .\contrib\auth\models.py:130 +msgid "e-mail address" +msgstr "e-mail адреса" + +#: .\contrib\auth\models.py:131 +msgid "password" +msgstr "пароль" + +#: .\contrib\auth\models.py:131 +msgid "" +"Use '[algo]$[salt]$[hexdigest]' or use the change " +"password form." +msgstr "" +"Використайте '[algo]$[salt]$[hexdigest]' або використайте форму зміни паролю." + +#: .\contrib\auth\models.py:132 +msgid "staff status" +msgstr "Статус персоналу" + +#: .\contrib\auth\models.py:132 +msgid "Designates whether the user can log into this admin site." +msgstr "Визначає, чи може користувач увійти до цього сайту адміністрування." + +#: .\contrib\auth\models.py:133 +msgid "active" +msgstr "Активний" + +#: .\contrib\auth\models.py:133 +msgid "" +"Designates whether this user should be treated as active. Unselect this " +"instead of deleting accounts." +msgstr "" +"Визначає, чи можна цього користувача вважати діючим. Заберіть галочку, " +"замість відалення запису користувача." + +#: .\contrib\auth\models.py:134 +msgid "superuser status" +msgstr "Статус суперкористувача" + +#: .\contrib\auth\models.py:134 +msgid "" +"Designates that this user has all permissions without explicitly assigning " +"them." +msgstr "Визначає, що цей користувач має всі дозволи без їх точного зазначення." + +#: .\contrib\auth\models.py:135 +msgid "last login" +msgstr "Останній вхід" + +#: .\contrib\auth\models.py:136 +msgid "date joined" +msgstr "Дата приєднання" + +#: .\contrib\auth\models.py:138 +msgid "" +"In addition to the permissions manually assigned, this user will also get " +"all permissions granted to each group he/she is in." +msgstr "" +"На додаток до прав, які призначені вручну, цей користувач також отримує усі " +"права, що має група, в якій він знаходиться." + +#: .\contrib\auth\models.py:139 + +msgid "user permissions" +msgstr "дозволи користувача" + +#: .\contrib\auth\models.py:143 + +msgid "user" +msgstr "користувач" + +#: .\contrib\auth\models.py:144 + +msgid "users" +msgstr "користувачі" + +#: .\contrib\auth\models.py:300 + +msgid "message" +msgstr "повідомлення" + +#: .\contrib\auth\views.py:50 +msgid "Logged out" +msgstr "Вихід" + +#: .\contrib\auth\management\commands\createsuperuser.py:23 +#: .\core\validators.py:166 .\forms\fields.py:428 .\newforms\fields.py:403 +msgid "Enter a valid e-mail address." +msgstr "Уведіть коректну e-mail адресу." + +#: .\contrib\comments\admin.py:11 +msgid "Content" +msgstr "Зміст" + +#: .\contrib\comments\admin.py:14 +msgid "Metadata" +msgstr "Мета-дані" + +#: .\contrib\comments\forms.py:19 +#: .\contrib\comments\templates\comments\moderation_queue.html.py:34 +msgid "Name" +msgstr "Ім'я" + +#: .\contrib\comments\forms.py:20 +msgid "Email address" +msgstr "E-mail адреса" + +#: .\contrib\comments\forms.py:22 +#: .\contrib\comments\templates\comments\moderation_queue.html.py:35 +msgid "Comment" +msgstr "Коментар" + +#: .\contrib\comments\forms.py:25 +msgid "" +"If you enter anything in this field your comment will be treated as spam" +msgstr "Якщо ви введете щось в це поле, ваш коментар буде вважатися спамом" + +#: .\contrib\comments\forms.py:125 .\core\validators.py:277 +msgid "Watch your mouth! The word %s is not allowed here." +msgid_plural "Watch your mouth! The words %s are not allowed here." +msgstr[0] "Слідкуйте за виразами! Слово %s тут заборонено." +msgstr[1] "Слідкуйте за виразами! Слова %s тут заборонені." + +#: .\contrib\comments\models.py:23 +msgid "object ID" +msgstr "ID об'єкту" + +#: .\contrib\comments\models.py:50 + +msgid "user's name" +msgstr "ім'я користувача" + +#: .\contrib\comments\models.py:51 + +msgid "user's email address" +msgstr "e-mail адреса користувача" + +#: .\contrib\comments\models.py:52 + +msgid "user's URL" +msgstr "URL користувачів" + +#: .\contrib\comments\models.py:54 +msgid "comment" +msgstr "коментар" + +#: .\contrib\comments\models.py:57 +msgid "date/time submitted" +msgstr "дата/час додавання" + +#: .\contrib\comments\models.py:59 +msgid "is public" +msgstr "публічний" + +#: .\contrib\comments\models.py:60 +msgid "" +"Uncheck this box to make the comment effectively disappear from the site." +msgstr "Заберіть галочку звідси, щоб коментар зник з сайту." + +#: .\contrib\comments\models.py:62 +msgid "is removed" +msgstr "видалений" + +#: .\contrib\comments\models.py:63 +msgid "" +"Check this box if the comment is inappropriate. A \"This comment has been " +"removed\" message will be displayed instead." +msgstr "" +"Поставте тут галочку, якщо коментар неприйнятний. Повідомлення \"Цей " +"коментар було видалено\" буде відображено замість цього коментаря." + +#: .\contrib\comments\models.py:115 +msgid "" +"This comment was posted by an authenticated user and thus the name is read-" +"only." +msgstr "" +"Цей коментар був розміщений зареєстрованим користувачем і тому ім'я не " +"може бути відредаговано." + +#: .\contrib\comments\models.py:124 +msgid "" +"This comment was posted by an authenticated user and thus the email is read-" +"only." +msgstr "" +"Цей коментар був розміщений зареєстрованим користувачем і тому email не " +"може бути відредагований." + +#: .\contrib\comments\models.py:149 +#, python-format +msgid "" +"Posted by %(user)s at %(date)s\n" +"\n" +"%(comment)s\n" +"\n" +"http://%(domain)s%(url)s" +msgstr "" +"Додав %(user)s %(date)s\n" +"\n" +"%(comment)s\n" +"\n" +"http://%(domain)s%(url)s" + +#: .\contrib\comments\templates\comments\approve.html.py:4 +msgid "Approve a comment" +msgstr "Затвердіть коментар" + +#: .\contrib\comments\templates\comments\approve.html.py:7 +msgid "Really make this comment public?" +msgstr "Дійсно, зробити цей коментар публічним?" + +#: .\contrib\comments\templates\comments\approve.html.py:12 +#: .\contrib\comments\templates\comments\moderation_queue.html.py:49 +msgid "Approve" +msgstr "Затвердити" + +#: .\contrib\comments\templates\comments\approved.html.py:4 +msgid "Thanks for approving" +msgstr "Дякуємо за затвердження." + +#: .\contrib\comments\templates\comments\approved.html.py:7 +#: .\contrib\comments\templates\comments\deleted.html.py:7 +#: .\contrib\comments\templates\comments\flagged.html.py:7 +msgid "" +"Thanks for taking the time to improve the quality of discussion on our site" +msgstr "" +"Дякуємо за те, що ви приділили увагу покращенню якості дискусії на нашому " +"сайті" + +#: .\contrib\comments\templates\comments\delete.html.py:4 +msgid "Remove a comment" +msgstr "Видалити коментар" + +#: .\contrib\comments\templates\comments\delete.html.py:7 +msgid "Really remove this comment?" +msgstr "Дійсно, видалити цей коментар?" + +#: .\contrib\comments\templates\comments\delete.html.py:12 +#: .\contrib\comments\templates\comments\moderation_queue.html.py:53 +msgid "Remove" +msgstr "Видалити" + +#: .\contrib\comments\templates\comments\deleted.html.py:4 +msgid "Thanks for removing" +msgstr "Дякуємо за видалення." + +#: .\contrib\comments\templates\comments\flag.html.py:4 +msgid "Flag this comment" +msgstr "Відмітити цей коментар?" + +#: .\contrib\comments\templates\comments\flag.html.py:7 +msgid "Really flag this comment?" +msgstr "Дійсно відмітити цей коментар?" + +#: .\contrib\comments\templates\comments\flag.html.py:12 +msgid "Flag" +msgstr "Відмітити" + +#: .\contrib\comments\templates\comments\flagged.html.py:4 + +msgid "Thanks for flagging" +msgstr "Дякуємо за користування нашим сайтом." + +#: .\contrib\comments\templates\comments\form.html.py:16 +#: .\contrib\comments\templates\comments\preview.html.py:31 +msgid "Post" +msgstr "Надіслати" + +#: .\contrib\comments\templates\comments\form.html.py:17 +#: .\contrib\comments\templates\comments\preview.html.py:32 +msgid "Preview" +msgstr "Попередній перегляд" + +#: .\contrib\comments\templates\comments\freeform.html.py:4 +msgid "Your name:" +msgstr "Ваше ім'я:" + +#: .\contrib\comments\templates\comments\freeform.html.py:5 +msgid "Comment:" +msgstr "Коментар:" + +#: .\contrib\comments\templates\comments\freeform.html.py:10 +msgid "Preview comment" +msgstr "Попередній перегляд коментаря" + +#: .\contrib\comments\templates\comments\moderation_queue.html.py:4 +#: .\contrib\comments\templates\comments\moderation_queue.html.py:19 +msgid "Comment moderation queue" +msgstr "Черга коментарів на модерацію" + +#: .\contrib\comments\templates\comments\moderation_queue.html.py:26 +msgid "No comments to moderate" +msgstr "Немає коментарів для модерації" + +#: .\contrib\comments\templates\comments\moderation_queue.html.py:36 +msgid "Email" +msgstr "Email" + +#: .\contrib\comments\templates\comments\moderation_queue.html.py:38 +msgid "Authenticated?" +msgstr "Зроблено вхід?" + +#: .\contrib\comments\templates\comments\moderation_queue.html.py:39 +msgid "IP Address" +msgstr "IP адреса" + +#: .\contrib\comments\templates\comments\moderation_queue.html.py:40 +msgid "Date posted" +msgstr "Дата відсилки" + +#: .\contrib\comments\templates\comments\moderation_queue.html.py:63 +msgid "yes" +msgstr "так" + +#: .\contrib\comments\templates\comments\moderation_queue.html.py:63 +msgid "no" +msgstr "ні" + +#: .\contrib\comments\templates\comments\posted.html.py:4 +msgid "Thanks for commenting" +msgstr "Дякуємо за коментування" + +#: .\contrib\comments\templates\comments\posted.html.py:7 +msgid "Thank you for your comment" +msgstr "Дякуємо за ваш коментар" + +#: .\contrib\comments\templates\comments\preview.html.py:4 +#: .\contrib\comments\templates\comments\preview.html.py:12 +msgid "Preview your comment" +msgstr "Попередній перегляд коментаря" + +#: .\contrib\comments\templates\comments\preview.html.py:10 +msgid "Please correct the error below" +msgid_plural "Please correct the errors below" +msgstr[0] "Будь ласка, виправте помилку, що зазначена нижче" +msgstr[1] "Будь ласка, виправте помилки, що зазначені нижче" + +#: .\contrib\comments\templates\comments\preview.html.py:15 +msgid "Post your comment" +msgstr "Опублікуйте коментар" + +#: .\contrib\comments\templates\comments\preview.html.py:15 +msgid "or make changes" +msgstr "або зробіть зміни." + +#: .\contrib\comments\views\karma.py:21 +msgid "Anonymous users cannot vote" +msgstr "Анонімний користувач не може голосувати" + +#: .\contrib\comments\views\karma.py:25 +msgid "Invalid comment ID" +msgstr "Невірний ID коментаря" + +#: .\contrib\comments\views\karma.py:27 +msgid "No voting for yourself" +msgstr "Не можна голосувати за себе" + +#: .\contrib\contenttypes\models.py:67 +msgid "python model class name" +msgstr "python model class name" + +#: .\contrib\contenttypes\models.py:71 +msgid "content type" +msgstr "content type" + +#: .\contrib\contenttypes\models.py:72 +msgid "content types" +msgstr "content types" + +#: .\contrib\flatpages\admin.py:9 +msgid "" +"Example: '/about/contact/'. Make sure to have leading and trailing slashes." +msgstr "" +"Приклад: '/about/contact/'. Переконайтеся у наявності слешу на початку та у " +"кінці." + +#: .\contrib\flatpages\admin.py:11 .\core\validators.py:76 + +msgid "" +"This value must contain only letters, numbers, underscores, dashes or " +"slashes." +msgstr "" +"Це значення може містити тільки літери, числа, символи підкреслювання та " +"слеші." + +#: .\contrib\flatpages\admin.py:22 +msgid "Advanced options" +msgstr "Додаткові опції" + +#: .\contrib\flatpages\models.py:8 +msgid "title" +msgstr "заголовок" + +#: .\contrib\flatpages\models.py:9 +msgid "content" +msgstr "зміст" + +#: .\contrib\flatpages\models.py:10 +msgid "enable comments" +msgstr "увімкнути коментарі" + +#: .\contrib\flatpages\models.py:11 +msgid "template name" +msgstr "ім'я шаблона" + +#: .\contrib\flatpages\models.py:12 +msgid "" +"Example: 'flatpages/contact_page.html'. If this isn't provided, the system " +"will use 'flatpages/default.html'." +msgstr "" +"Приклад: 'flatpages/contact_page'. Якщо це не надано, система буда " +"використовувати 'flatpages/default'." + +#: .\contrib\flatpages\models.py:13 +msgid "registration required" +msgstr "потрібна реєстрація" + +#: .\contrib\flatpages\models.py:13 +msgid "If this is checked, only logged-in users will be able to view the page." +msgstr "" +"Якщо тут є галочка, тільки користувачи, що увійшли, зможуть переглядати цю " +"сторінку." + +#: .\contrib\flatpages\models.py:18 +msgid "flat page" +msgstr "проста сторінка" + +#: .\contrib\flatpages\models.py:19 +msgid "flat pages" +msgstr "прості сторінки" + +#: .\contrib\formtools\wizard.py:130 +msgid "" +"We apologize, but your form has expired. Please continue filling out the " +"form from this page." +msgstr "" +"Пробачте, але закінчився строк заповнення форми. Будь ласка, продовжіть " +"заповнення форми з цієї сторінки." + +#: .\contrib\gis\forms\fields.py:14 +msgid "No geometry value provided." +msgstr "Не задано геометрічне значення." + +#: .\contrib\gis\forms\fields.py:15 +msgid "Invalid geometry value." +msgstr "Невірне геометричне значення." + +#: .\contrib\gis\forms\fields.py:16 +msgid "Invalid geometry type." +msgstr "Невірний геометричний тип." + +#: .\contrib\humanize\templatetags\humanize.py:19 +msgid "th" +msgstr "" + +#: .\contrib\humanize\templatetags\humanize.py:19 +msgid "st" +msgstr "" + +#: .\contrib\humanize\templatetags\humanize.py:19 +msgid "nd" +msgstr "" + +#: .\contrib\humanize\templatetags\humanize.py:19 +msgid "rd" +msgstr "" + +#: .\contrib\humanize\templatetags\humanize.py:51 +#, python-format +msgid "%(value).1f million" +msgid_plural "%(value).1f million" +msgstr[0] "%(value).1f мільйон" +msgstr[1] "%(value).1f мільйона(ів)" + +#: .\contrib\humanize\templatetags\humanize.py:54 +#, python-format +msgid "%(value).1f billion" +msgid_plural "%(value).1f billion" +msgstr[0] "%(value).1f більйон" +msgstr[1] "%(value).1f більйона(ів)" + +#: .\contrib\humanize\templatetags\humanize.py:57 +#, python-format +msgid "%(value).1f trillion" +msgid_plural "%(value).1f trillion" +msgstr[0] "%(value).1f трильйон" +msgstr[1] "%(value).1f трильйона(ів)" + +#: .\contrib\humanize\templatetags\humanize.py:73 +msgid "one" +msgstr "один" + +#: .\contrib\humanize\templatetags\humanize.py:73 +msgid "two" +msgstr "два" + +#: .\contrib\humanize\templatetags\humanize.py:73 +msgid "three" +msgstr "три" + +#: .\contrib\humanize\templatetags\humanize.py:73 + +msgid "four" +msgstr "чотири" + +#: .\contrib\humanize\templatetags\humanize.py:73 +msgid "five" +msgstr "п'ять" + +#: .\contrib\humanize\templatetags\humanize.py:73 +msgid "six" +msgstr "шість" + +#: .\contrib\humanize\templatetags\humanize.py:73 +msgid "seven" +msgstr "сім" + +#: .\contrib\humanize\templatetags\humanize.py:73 +msgid "eight" +msgstr "вісім" + +#: .\contrib\humanize\templatetags\humanize.py:73 +msgid "nine" +msgstr "дев'ять" + +#: .\contrib\humanize\templatetags\humanize.py:93 + +msgid "today" +msgstr "сьогодні" + +#: .\contrib\humanize\templatetags\humanize.py:95 +msgid "tomorrow" +msgstr "завтра" + +#: .\contrib\humanize\templatetags\humanize.py:97 +msgid "yesterday" +msgstr "вчора" + +#: .\contrib\localflavor\ar\forms.py:27 +msgid "Enter a postal code in the format NNNN or ANNNNAAA." +msgstr "Введіть поштовий індекс у форматі NNNN або ANNNNAAA." + +#: .\contrib\localflavor\ar\forms.py:49 .\contrib\localflavor\br\forms.py:96 +#: .\contrib\localflavor\br\forms.py:135 .\contrib\localflavor\pe\forms.py:23 +#: .\contrib\localflavor\pe\forms.py:51 +msgid "This field requires only numbers." +msgstr "В це поле можна вводити тільки числа." + +#: .\contrib\localflavor\ar\forms.py:50 +msgid "This field requires 7 or 8 digits." +msgstr "В це поле можна вводити тільки 7 або 8 цифр." + +#: .\contrib\localflavor\ar\forms.py:79 +msgid "Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format." +msgstr "Введіть правильний CUIT у форматі XX-XXXXXXXX-X або XXXXXXXXXXXX." + +#: .\contrib\localflavor\ar\forms.py:80 +msgid "Invalid CUIT." +msgstr "Невірний CUIT." + +#: .\contrib\localflavor\at\at_states.py:5 +msgid "Burgenland" +msgstr "Бургенленд" + +#: .\contrib\localflavor\at\at_states.py:6 +msgid "Carinthia" +msgstr "Каринтія" + +#: .\contrib\localflavor\at\at_states.py:7 +msgid "Lower Austria" +msgstr "Нижня Австрія" + +#: .\contrib\localflavor\at\at_states.py:8 +msgid "Upper Austria" +msgstr "Верхня Австрія" + +#: .\contrib\localflavor\at\at_states.py:9 +msgid "Salzburg" +msgstr "Зальцбург" + +#: .\contrib\localflavor\at\at_states.py:10 +msgid "Styria" +msgstr "Штирія" + +#: .\contrib\localflavor\at\at_states.py:11 +msgid "Tyrol" +msgstr "Тіроль" + +#: .\contrib\localflavor\at\at_states.py:12 +msgid "Vorarlberg" +msgstr "Форарльберг" + +#: .\contrib\localflavor\at\at_states.py:13 +msgid "Vienna" +msgstr "Відень" + +#: .\contrib\localflavor\at\forms.py:20 .\contrib\localflavor\ch\forms.py:16 +#: .\contrib\localflavor\no\forms.py:12 +msgid "Enter a zip code in the format XXXX." +msgstr "Введіть поштовий індекс у форматі ХХХХ." + +#: .\contrib\localflavor\at\forms.py:48 +msgid "Enter a valid Austrian Social Security Number in XXXX XXXXXX format." +msgstr "" +"Введіть правильний австрійський номер соціального страхування в форматі XXXX " +"XXXXXX." + +#: .\contrib\localflavor\au\forms.py:16 +msgid "Enter a 4 digit post code." +msgstr "Введіть поштовий індекс з 4 цифр." + +#: .\contrib\localflavor\br\forms.py:21 +msgid "Enter a zip code in the format XXXXX-XXX." +msgstr "Введіть поштовий індекс у форматі XXXXX-XXX." + +#: .\contrib\localflavor\br\forms.py:30 +msgid "Phone numbers must be in XX-XXXX-XXXX format." +msgstr "Телефонні номери мають бути у форматі XX-XXXX-XXXX." + +#: .\contrib\localflavor\br\forms.py:58 +msgid "" +"Select a valid brazilian state. That state is not one of the available " +"states." +msgstr "" +"Оберіть правильний бразильський штат. Штата, який ви обрали, не має серед " +"представлених тут." + +#: .\contrib\localflavor\br\forms.py:94 +msgid "Invalid CPF number." +msgstr "Помилковий номер CPF." + +#: .\contrib\localflavor\br\forms.py:95 +msgid "This field requires at most 11 digits or 14 characters." +msgstr "Це поле вимагає максимум 11 цифр або 14 символів." + +#: .\contrib\localflavor\br\forms.py:134 +msgid "Invalid CNPJ number." +msgstr "Помилковий номер CNPJ." + +#: .\contrib\localflavor\br\forms.py:136 +msgid "This field requires at least 14 digits" +msgstr "Це поле вимагає як мінімум 14 цифр" + +#: .\contrib\localflavor\ca\forms.py:17 +msgid "Enter a postal code in the format XXX XXX." +msgstr "Введіть поштовий індекс у форматі XXX XXX." + +#: .\contrib\localflavor\ca\forms.py:88 +msgid "Enter a valid Canadian Social Insurance number in XXX-XXX-XXX format." +msgstr "" +"Введіть правильний канадський номер соціального страхування у форматі XXX-" +"XXX-XXX." + +#: .\contrib\localflavor\ch\ch_states.py:5 +msgid "Aargau" +msgstr "Ааргау" + +#: .\contrib\localflavor\ch\ch_states.py:6 +msgid "Appenzell Innerrhoden" +msgstr "Аппенцелль Іннерходен" + +#: .\contrib\localflavor\ch\ch_states.py:7 +msgid "Appenzell Ausserrhoden" +msgstr "Аппенцелль Ауссеррходен" + +#: .\contrib\localflavor\ch\ch_states.py:8 +msgid "Basel-Stadt" +msgstr "Базель" + +#: .\contrib\localflavor\ch\ch_states.py:9 +msgid "Basel-Land" +msgstr "Базель-Ленд" + +#: .\contrib\localflavor\ch\ch_states.py:10 +msgid "Berne" +msgstr "Берн" + +#: .\contrib\localflavor\ch\ch_states.py:11 +msgid "Fribourg" +msgstr "Фрібург" + +#: .\contrib\localflavor\ch\ch_states.py:12 +msgid "Geneva" +msgstr "Женева" + +#: .\contrib\localflavor\ch\ch_states.py:13 +msgid "Glarus" +msgstr "Гларус" + +#: .\contrib\localflavor\ch\ch_states.py:14 +msgid "Graubuenden" +msgstr "Граубюнден" + +#: .\contrib\localflavor\ch\ch_states.py:15 +msgid "Jura" +msgstr "Юра" + +#: .\contrib\localflavor\ch\ch_states.py:16 +msgid "Lucerne" +msgstr "Люцерн" + +#: .\contrib\localflavor\ch\ch_states.py:17 +msgid "Neuchatel" +msgstr "Невшатель" + +#: .\contrib\localflavor\ch\ch_states.py:18 +msgid "Nidwalden" +msgstr "Нідвальден" + +#: .\contrib\localflavor\ch\ch_states.py:19 +msgid "Obwalden" +msgstr "Обвальден" + +#: .\contrib\localflavor\ch\ch_states.py:20 +msgid "Schaffhausen" +msgstr "Шафхаузен" + +#: .\contrib\localflavor\ch\ch_states.py:21 +msgid "Schwyz" +msgstr "Швіц" + +#: .\contrib\localflavor\ch\ch_states.py:22 +msgid "Solothurn" +msgstr "Золотурн" + +#: .\contrib\localflavor\ch\ch_states.py:23 +msgid "St. Gallen" +msgstr "Санкт-Галлен" + +#: .\contrib\localflavor\ch\ch_states.py:24 +msgid "Thurgau" +msgstr "Тургау" + +#: .\contrib\localflavor\ch\ch_states.py:25 +msgid "Ticino" +msgstr "Тичино" + +#: .\contrib\localflavor\ch\ch_states.py:26 +msgid "Uri" +msgstr "Урі" + +#: .\contrib\localflavor\ch\ch_states.py:27 +msgid "Valais" +msgstr "Вале" + +#: .\contrib\localflavor\ch\ch_states.py:28 +msgid "Vaud" +msgstr "Во" + +#: .\contrib\localflavor\ch\ch_states.py:29 +msgid "Zug" +msgstr "Цуг" + +#: .\contrib\localflavor\ch\ch_states.py:30 +msgid "Zurich" +msgstr "Цюріх" + +#: .\contrib\localflavor\ch\forms.py:64 +msgid "" +"Enter a valid Swiss identity or passport card number in X1234567<0 or " +"1234567890 format." +msgstr "" +"Введіть вірний номер посвідчення особи або паспорту у форматі X1234567<0 або " +"1234567890." + +#: .\contrib\localflavor\cl\forms.py:29 +msgid "Enter a valid Chilean RUT." +msgstr "Введіть вірний чилійський RUT." + +#: .\contrib\localflavor\cl\forms.py:30 +msgid "Enter a valid Chilean RUT. The format is XX.XXX.XXX-X." +msgstr "Введіть вірний чилійський RUT. Формат: XX.XXX.XXX-X." + +#: .\contrib\localflavor\cl\forms.py:31 +msgid "The Chilean RUT is not valid." +msgstr "Чилійський RUT не правильний." + +#: .\contrib\localflavor\de\de_states.py:5 +msgid "Baden-Wuerttemberg" +msgstr "Баден-Вюртемберг" + +#: .\contrib\localflavor\de\de_states.py:6 +msgid "Bavaria" +msgstr "Баварія" + +#: .\contrib\localflavor\de\de_states.py:7 +msgid "Berlin" +msgstr "Берлін" + +#: .\contrib\localflavor\de\de_states.py:8 +msgid "Brandenburg" +msgstr "Бранденбург" + +#: .\contrib\localflavor\de\de_states.py:9 +msgid "Bremen" +msgstr "Бремен" + +#: .\contrib\localflavor\de\de_states.py:10 +msgid "Hamburg" +msgstr "Гамбург" + +#: .\contrib\localflavor\de\de_states.py:11 +msgid "Hessen" +msgstr "Гессен" + +#: .\contrib\localflavor\de\de_states.py:12 +msgid "Mecklenburg-Western Pomerania" +msgstr "Мекленбург — Передня Померанія" + +#: .\contrib\localflavor\de\de_states.py:13 +msgid "Lower Saxony" +msgstr "Нижня Саксонія" + +#: .\contrib\localflavor\de\de_states.py:14 +msgid "North Rhine-Westphalia" +msgstr "Північний Рейн – Вестфалія" + +#: .\contrib\localflavor\de\de_states.py:15 +msgid "Rhineland-Palatinate" +msgstr "Райнланд-Пфальц" + +#: .\contrib\localflavor\de\de_states.py:16 +msgid "Saarland" +msgstr "Саарланд" + +#: .\contrib\localflavor\de\de_states.py:17 +msgid "Saxony" +msgstr "Саксонія" + +#: .\contrib\localflavor\de\de_states.py:18 +msgid "Saxony-Anhalt" +msgstr "Саксонія-Ангальт" + +#: .\contrib\localflavor\de\de_states.py:19 +msgid "Schleswig-Holstein" +msgstr "Шлезвіг-Гольштайн" + +#: .\contrib\localflavor\de\de_states.py:20 +msgid "Thuringia" +msgstr "Тюрінгія" + +#: .\contrib\localflavor\de\forms.py:14 .\contrib\localflavor\fi\forms.py:12 +#: .\contrib\localflavor\fr\forms.py:15 +msgid "Enter a zip code in the format XXXXX." +msgstr "Введіть поштовий індекс у форматі XXXXX." + +#: .\contrib\localflavor\de\forms.py:41 +msgid "" +"Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X " +"format." +msgstr "" +"Введіть правильний номер німецького посвідчення особи в форматі XXXXXXXXXXX-" +"XXXXXXX-XXXXXXX-X " + +#: .\contrib\localflavor\es\es_provinces.py:5 +msgid "Arava" +msgstr "Алава" + +#: .\contrib\localflavor\es\es_provinces.py:6 +msgid "Albacete" +msgstr "Альбасете" + +#: .\contrib\localflavor\es\es_provinces.py:7 +msgid "Alacant" +msgstr "Аліканте" + +#: .\contrib\localflavor\es\es_provinces.py:8 +msgid "Almeria" +msgstr "Альмерія" + +#: .\contrib\localflavor\es\es_provinces.py:9 +msgid "Avila" +msgstr "Авіла" + +#: .\contrib\localflavor\es\es_provinces.py:10 +msgid "Badajoz" +msgstr "Бадахос" + +#: .\contrib\localflavor\es\es_provinces.py:11 +msgid "Illes Balears" +msgstr "Балеарські острови" + +#: .\contrib\localflavor\es\es_provinces.py:12 +msgid "Barcelona" +msgstr "Барселона" + +#: .\contrib\localflavor\es\es_provinces.py:13 +msgid "Burgos" +msgstr "Бургос" + +#: .\contrib\localflavor\es\es_provinces.py:14 +msgid "Caceres" +msgstr "Касерес" + +#: .\contrib\localflavor\es\es_provinces.py:15 +msgid "Cadiz" +msgstr "Кадіс" + +#: .\contrib\localflavor\es\es_provinces.py:16 +msgid "Castello" +msgstr "Кастельйон" + +#: .\contrib\localflavor\es\es_provinces.py:17 +msgid "Ciudad Real" +msgstr "Сьюдад-Реаль" + +#: .\contrib\localflavor\es\es_provinces.py:18 +msgid "Cordoba" +msgstr "Кордова" + +#: .\contrib\localflavor\es\es_provinces.py:19 +msgid "A Coruna" +msgstr "Ла-Корунья" + +#: .\contrib\localflavor\es\es_provinces.py:20 +msgid "Cuenca" +msgstr "Куенка" + +#: .\contrib\localflavor\es\es_provinces.py:21 +msgid "Girona" +msgstr "Жірона" + +#: .\contrib\localflavor\es\es_provinces.py:22 + +msgid "Granada" +msgstr "Гранада" + +#: .\contrib\localflavor\es\es_provinces.py:23 +msgid "Guadalajara" +msgstr "Гвадалахара" + +#: .\contrib\localflavor\es\es_provinces.py:24 +msgid "Guipuzkoa" +msgstr "Гіпускоа" + +#: .\contrib\localflavor\es\es_provinces.py:25 +msgid "Huelva" +msgstr "Уельва" + +#: .\contrib\localflavor\es\es_provinces.py:26 +msgid "Huesca" +msgstr "Уеска" + +#: .\contrib\localflavor\es\es_provinces.py:27 +msgid "Jaen" +msgstr "Хаен" + +#: .\contrib\localflavor\es\es_provinces.py:28 +msgid "Leon" +msgstr "Леон" + +#: .\contrib\localflavor\es\es_provinces.py:29 +msgid "Lleida" +msgstr "Льєйда" + +#: .\contrib\localflavor\es\es_provinces.py:30 +#: .\contrib\localflavor\es\es_regions.py:17 +msgid "La Rioja" +msgstr "Ла-Ріоха" + +#: .\contrib\localflavor\es\es_provinces.py:31 +msgid "Lugo" +msgstr "Луго" + +#: .\contrib\localflavor\es\es_provinces.py:32 +#: .\contrib\localflavor\es\es_regions.py:18 +msgid "Madrid" +msgstr "Мадрід" + +#: .\contrib\localflavor\es\es_provinces.py:33 +msgid "Malaga" +msgstr "Малага" + +#: .\contrib\localflavor\es\es_provinces.py:34 +msgid "Murcia" +msgstr "Мурсія" + +#: .\contrib\localflavor\es\es_provinces.py:35 +msgid "Navarre" +msgstr "Наварра" + +#: .\contrib\localflavor\es\es_provinces.py:36 +msgid "Ourense" +msgstr "Оренсе" + +#: .\contrib\localflavor\es\es_provinces.py:37 +msgid "Asturias" +msgstr "Астурія" + +#: .\contrib\localflavor\es\es_provinces.py:38 +msgid "Palencia" +msgstr "Паленсія" + +#: .\contrib\localflavor\es\es_provinces.py:39 +msgid "Las Palmas" +msgstr "Лас-Пальмас" + +#: .\contrib\localflavor\es\es_provinces.py:40 +msgid "Pontevedra" +msgstr "Понтеведра" + +#: .\contrib\localflavor\es\es_provinces.py:41 +msgid "Salamanca" +msgstr "Саламанка" + +#: .\contrib\localflavor\es\es_provinces.py:42 +msgid "Santa Cruz de Tenerife" +msgstr "Санта-Крус-де-Тенерифе" + +#: .\contrib\localflavor\es\es_provinces.py:43 +#: .\contrib\localflavor\es\es_regions.py:11 +msgid "Cantabria" +msgstr "Кантабрія" + +#: .\contrib\localflavor\es\es_provinces.py:44 +msgid "Segovia" +msgstr "Сеговія" + +#: .\contrib\localflavor\es\es_provinces.py:45 +msgid "Seville" +msgstr "Севілья" + +#: .\contrib\localflavor\es\es_provinces.py:46 +msgid "Soria" +msgstr "Сорія" + +#: .\contrib\localflavor\es\es_provinces.py:47 +msgid "Tarragona" +msgstr "Таррагона" + +#: .\contrib\localflavor\es\es_provinces.py:48 +msgid "Teruel" +msgstr "Теруель" + +#: .\contrib\localflavor\es\es_provinces.py:49 +msgid "Toledo" +msgstr "Толедо" + +#: .\contrib\localflavor\es\es_provinces.py:50 +msgid "Valencia" +msgstr "Валенсія" + +#: .\contrib\localflavor\es\es_provinces.py:51 +msgid "Valladolid" +msgstr "Вальядолід" + +#: .\contrib\localflavor\es\es_provinces.py:52 +msgid "Bizkaia" +msgstr "Біскайя" + +#: .\contrib\localflavor\es\es_provinces.py:53 +msgid "Zamora" +msgstr "Самора" + +#: .\contrib\localflavor\es\es_provinces.py:54 +msgid "Zaragoza" +msgstr "Сарагоса" + +#: .\contrib\localflavor\es\es_provinces.py:55 +msgid "Ceuta" +msgstr "Сеута" + +#: .\contrib\localflavor\es\es_provinces.py:56 +msgid "Melilla" +msgstr "Мелілья" + +#: .\contrib\localflavor\es\es_regions.py:5 +msgid "Andalusia" +msgstr "Андалусія" + +#: .\contrib\localflavor\es\es_regions.py:6 +msgid "Aragon" +msgstr "Арагон" + +#: .\contrib\localflavor\es\es_regions.py:7 +msgid "Principality of Asturias" +msgstr "Астурія" + +#: .\contrib\localflavor\es\es_regions.py:8 +msgid "Balearic Islands" +msgstr "Балеарські острови" + +#: .\contrib\localflavor\es\es_regions.py:9 +msgid "Basque Country" +msgstr "Країна Басків (Еускаді)" + +#: .\contrib\localflavor\es\es_regions.py:10 +msgid "Canary Islands" +msgstr "Канарські острови" + +#: .\contrib\localflavor\es\es_regions.py:12 +msgid "Castile-La Mancha" +msgstr "Кастилія — Ла-Манча" + +#: .\contrib\localflavor\es\es_regions.py:13 +msgid "Castile and Leon" +msgstr "Кастилія і Леон" + +#: .\contrib\localflavor\es\es_regions.py:14 +msgid "Catalonia" +msgstr "Каталонія" + +#: .\contrib\localflavor\es\es_regions.py:15 +msgid "Extremadura" +msgstr "Естремадура" + +#: .\contrib\localflavor\es\es_regions.py:16 +msgid "Galicia" +msgstr "Галісія" + +#: .\contrib\localflavor\es\es_regions.py:19 +msgid "Region of Murcia" +msgstr "Мурсія" + +#: .\contrib\localflavor\es\es_regions.py:20 +msgid "Foral Community of Navarre" +msgstr "Наварра" + +#: .\contrib\localflavor\es\es_regions.py:21 +msgid "Valencian Community" +msgstr "Валенсія" + +#: .\contrib\localflavor\es\forms.py:19 +msgid "Enter a valid postal code in the range and format 01XXX - 52XXX." +msgstr "Введіть правильний поштовий індекс в диапазоні формату 01XXX - 52XXX." + +#: .\contrib\localflavor\es\forms.py:39 +msgid "" +"Enter a valid phone number in one of the formats 6XXXXXXXX, 8XXXXXXXX or " +"9XXXXXXXX." +msgstr "" +"Введіть правильний номер телефону в одному з форматів 6XXXXXXXX,8XXXXXXXX or " +"9XXXXXXXX." + +#: .\contrib\localflavor\es\forms.py:66 +msgid "Please enter a valid NIF, NIE, or CIF." +msgstr "Будь ласка введіть правильний NIF, NIE, або CIF." + +#: .\contrib\localflavor\es\forms.py:67 +msgid "Please enter a valid NIF or NIE." +msgstr "Будь ласка введіть правильний NIF або NIE" + +#: .\contrib\localflavor\es\forms.py:68 +msgid "Invalid checksum for NIF." +msgstr "Помилкова контрольна сума для NIF." + +#: .\contrib\localflavor\es\forms.py:69 +msgid "Invalid checksum for NIE." +msgstr "Помилкова контрольна сума для NIE." + +#: .\contrib\localflavor\es\forms.py:70 +msgid "Invalid checksum for CIF." +msgstr "Помилкова контрольна сума для CIF." + +#: .\contrib\localflavor\es\forms.py:142 +msgid "" +"Please enter a valid bank account number in format XXXX-XXXX-XX-XXXXXXXXXX." +msgstr "" +"Будь ласка, введіть правильний номер банківського рахунку у форматі XXXX-" +"XXXX-XX-XXXXXXXXXX." + +#: .\contrib\localflavor\es\forms.py:143 +msgid "Invalid checksum for bank account number." +msgstr "Помилкова контрольна сума для номеру банківського рахунку." + +#: .\contrib\localflavor\fi\forms.py:28 +msgid "Enter a valid Finnish social security number." +msgstr "Введіть правильний номер фінського соціального страхування." + +#: .\contrib\localflavor\in_\forms.py:14 +msgid "Enter a zip code in the format XXXXXXX." +msgstr "Введіть поштовий індекс у форматі XXXXXXX." + +#: .\contrib\localflavor\is_\forms.py:17 +msgid "" +"Enter a valid Icelandic identification number. The format is XXXXXX-XXXX." +msgstr "" +"Введіть правильний номер ісландського посвідчення особи. Формат: XXXXXX-XXXX." + +#: .\contrib\localflavor\is_\forms.py:18 +msgid "The Icelandic identification number is not valid." +msgstr "Номер ісландського посвідчення особи не вірний." + +#: .\contrib\localflavor\it\forms.py:14 +msgid "Enter a valid zip code." +msgstr "Введіть правильну поштову адресу." + +#: .\contrib\localflavor\it\forms.py:43 +msgid "Enter a valid Social Security number." +msgstr "Введіть правильний номер соціального страхування" + +#: .\contrib\localflavor\it\forms.py:68 +msgid "Enter a valid VAT number." +msgstr "Введіть правильний номер VAT." + +#: .\contrib\localflavor\jp\forms.py:16 +msgid "Enter a postal code in the format XXXXXXX or XXX-XXXX." +msgstr "Введіть поштовий індекс у форматі XXXXXXX or XXX-XXXX." + +#: .\contrib\localflavor\jp\jp_prefectures.py:4 +msgid "Hokkaido" +msgstr "Хоккайдо" + +#: .\contrib\localflavor\jp\jp_prefectures.py:5 +msgid "Aomori" +msgstr "Аоморі" + +#: .\contrib\localflavor\jp\jp_prefectures.py:6 +msgid "Iwate" +msgstr "Івате" + +#: .\contrib\localflavor\jp\jp_prefectures.py:7 +msgid "Miyagi" +msgstr "Міяґі" + +#: .\contrib\localflavor\jp\jp_prefectures.py:8 +msgid "Akita" +msgstr "Акіта" + +#: .\contrib\localflavor\jp\jp_prefectures.py:9 +msgid "Yamagata" +msgstr "Ямаґата" + +#: .\contrib\localflavor\jp\jp_prefectures.py:10 +msgid "Fukushima" +msgstr "Фукусіма" + +#: .\contrib\localflavor\jp\jp_prefectures.py:11 +msgid "Ibaraki" +msgstr "Ібаракі" + +#: .\contrib\localflavor\jp\jp_prefectures.py:12 +msgid "Tochigi" +msgstr "Тотіґі" + +#: .\contrib\localflavor\jp\jp_prefectures.py:13 +msgid "Gunma" +msgstr "Ґумма" + +#: .\contrib\localflavor\jp\jp_prefectures.py:14 +msgid "Saitama" +msgstr "Сайтама" + +#: .\contrib\localflavor\jp\jp_prefectures.py:15 +msgid "Chiba" +msgstr "Тіба" + +#: .\contrib\localflavor\jp\jp_prefectures.py:16 +msgid "Tokyo" +msgstr "Токіо" + +#: .\contrib\localflavor\jp\jp_prefectures.py:17 +msgid "Kanagawa" +msgstr "Канаґава" + +#: .\contrib\localflavor\jp\jp_prefectures.py:18 +msgid "Yamanashi" +msgstr "Яманасі" + +#: .\contrib\localflavor\jp\jp_prefectures.py:19 +msgid "Nagano" +msgstr "Наґано" + +#: .\contrib\localflavor\jp\jp_prefectures.py:20 +msgid "Niigata" +msgstr "Ніїґата" + +#: .\contrib\localflavor\jp\jp_prefectures.py:21 +msgid "Toyama" +msgstr "Тояма" + +#: .\contrib\localflavor\jp\jp_prefectures.py:22 +msgid "Ishikawa" +msgstr "Ісікава" + +#: .\contrib\localflavor\jp\jp_prefectures.py:23 +msgid "Fukui" +msgstr "Фукуї" + +#: .\contrib\localflavor\jp\jp_prefectures.py:24 +msgid "Gifu" +msgstr "Ґіфу" + +#: .\contrib\localflavor\jp\jp_prefectures.py:25 +msgid "Shizuoka" +msgstr "Сідзуока" + +#: .\contrib\localflavor\jp\jp_prefectures.py:26 +msgid "Aichi" +msgstr "Аїті" + +#: .\contrib\localflavor\jp\jp_prefectures.py:27 +msgid "Mie" +msgstr "Міє" + +#: .\contrib\localflavor\jp\jp_prefectures.py:28 +msgid "Shiga" +msgstr "Сіґа" + +#: .\contrib\localflavor\jp\jp_prefectures.py:29 +msgid "Kyoto" +msgstr "Кіото" + +#: .\contrib\localflavor\jp\jp_prefectures.py:30 +msgid "Osaka" +msgstr "Осака" + +#: .\contrib\localflavor\jp\jp_prefectures.py:31 +msgid "Hyogo" +msgstr "Хьоґо" + +#: .\contrib\localflavor\jp\jp_prefectures.py:32 +msgid "Nara" +msgstr "Нара" + +#: .\contrib\localflavor\jp\jp_prefectures.py:33 +msgid "Wakayama" +msgstr "Вакаяма" + +#: .\contrib\localflavor\jp\jp_prefectures.py:34 +msgid "Tottori" +msgstr "Тотторі" + +#: .\contrib\localflavor\jp\jp_prefectures.py:35 +msgid "Shimane" +msgstr "Сімане" + +#: .\contrib\localflavor\jp\jp_prefectures.py:36 +msgid "Okayama" +msgstr "Окаяма" + +#: .\contrib\localflavor\jp\jp_prefectures.py:37 +msgid "Hiroshima" +msgstr "Хіросіма" + +#: .\contrib\localflavor\jp\jp_prefectures.py:38 +msgid "Yamaguchi" +msgstr "Ямаґуті" + +#: .\contrib\localflavor\jp\jp_prefectures.py:39 +msgid "Tokushima" +msgstr "Токусіма" + +#: .\contrib\localflavor\jp\jp_prefectures.py:40 +msgid "Kagawa" +msgstr "Каґава" + +#: .\contrib\localflavor\jp\jp_prefectures.py:41 +msgid "Ehime" +msgstr "Ехіме" + +#: .\contrib\localflavor\jp\jp_prefectures.py:42 +msgid "Kochi" +msgstr "Коті" + +#: .\contrib\localflavor\jp\jp_prefectures.py:43 +msgid "Fukuoka" +msgstr "Фукуока" + +#: .\contrib\localflavor\jp\jp_prefectures.py:44 +msgid "Saga" +msgstr "Саґа" + +#: .\contrib\localflavor\jp\jp_prefectures.py:45 +msgid "Nagasaki" +msgstr "Наґасакі" + +#: .\contrib\localflavor\jp\jp_prefectures.py:46 +msgid "Kumamoto" +msgstr "Кумамото" + +#: .\contrib\localflavor\jp\jp_prefectures.py:47 +msgid "Oita" +msgstr "Оїта" + +#: .\contrib\localflavor\jp\jp_prefectures.py:48 +msgid "Miyazaki" +msgstr "Міядзакі" + +#: .\contrib\localflavor\jp\jp_prefectures.py:49 +msgid "Kagoshima" +msgstr "Каґосіма" + +#: .\contrib\localflavor\jp\jp_prefectures.py:50 +msgid "Okinawa" +msgstr "Окінава" + +#: .\contrib\localflavor\mx\mx_states.py:12 +msgid "Aguascalientes" +msgstr "Аґуаскальєнтес" + +#: .\contrib\localflavor\mx\mx_states.py:13 +msgid "Baja California" +msgstr "Нижня Каліфорнія Північна" + +#: .\contrib\localflavor\mx\mx_states.py:14 +msgid "Baja California Sur" +msgstr "Нижня Каліфорнія Південна" + +#: .\contrib\localflavor\mx\mx_states.py:15 +msgid "Campeche" +msgstr "Кампече" + +#: .\contrib\localflavor\mx\mx_states.py:16 +msgid "Chihuahua" +msgstr "Чіуауа" + +#: .\contrib\localflavor\mx\mx_states.py:17 +msgid "Chiapas" +msgstr "Чіапас" + +#: .\contrib\localflavor\mx\mx_states.py:18 +msgid "Coahuila" +msgstr "Коауїла" + +#: .\contrib\localflavor\mx\mx_states.py:19 +msgid "Colima" +msgstr "Коліма" + +#: .\contrib\localflavor\mx\mx_states.py:20 +msgid "Distrito Federal" +msgstr "Федеральний округ" + +#: .\contrib\localflavor\mx\mx_states.py:21 +msgid "Durango" +msgstr "Дуранго" + +#: .\contrib\localflavor\mx\mx_states.py:22 +msgid "Guerrero" +msgstr "Ґерреро" + +#: .\contrib\localflavor\mx\mx_states.py:23 +msgid "Guanajuato" +msgstr "Ґуанахуато" + +#: .\contrib\localflavor\mx\mx_states.py:24 +msgid "Hidalgo" +msgstr "Ідальґо" + +#: .\contrib\localflavor\mx\mx_states.py:25 +msgid "Jalisco" +msgstr "Халіско" + +#: .\contrib\localflavor\mx\mx_states.py:26 +msgid "Estado de México" +msgstr "Мехіко" + +#: .\contrib\localflavor\mx\mx_states.py:27 +msgid "Michoacán" +msgstr "Мічоакан" + +#: .\contrib\localflavor\mx\mx_states.py:28 +msgid "Morelos" +msgstr "Морелос" + +#: .\contrib\localflavor\mx\mx_states.py:29 +msgid "Nayarit" +msgstr "Наяріт" + +#: .\contrib\localflavor\mx\mx_states.py:30 +msgid "Nuevo León" +msgstr "Нуево-Леон" + +#: .\contrib\localflavor\mx\mx_states.py:31 +msgid "Oaxaca" +msgstr "Оахака" + +#: .\contrib\localflavor\mx\mx_states.py:32 +msgid "Puebla" +msgstr "Пуебла" + +#: .\contrib\localflavor\mx\mx_states.py:33 +msgid "Querétaro" +msgstr "Керетаро" + +#: .\contrib\localflavor\mx\mx_states.py:34 +msgid "Quintana Roo" +msgstr "Кінтана-Роо" + +#: .\contrib\localflavor\mx\mx_states.py:35 +msgid "Sinaloa" +msgstr "Сіналоа" + +#: .\contrib\localflavor\mx\mx_states.py:36 +msgid "San Luis Potosí" +msgstr "Сан-Луїс-Потосі" + +#: .\contrib\localflavor\mx\mx_states.py:37 +msgid "Sonora" +msgstr "Сонора" + +#: .\contrib\localflavor\mx\mx_states.py:38 +msgid "Tabasco" +msgstr "Табаско" + +#: .\contrib\localflavor\mx\mx_states.py:39 +msgid "Tamaulipas" +msgstr "Тамауліпас" + +#: .\contrib\localflavor\mx\mx_states.py:40 +msgid "Tlaxcala" +msgstr "Тлашкала" + +#: .\contrib\localflavor\mx\mx_states.py:41 +msgid "Veracruz" +msgstr "Веракрус" + +#: .\contrib\localflavor\mx\mx_states.py:42 +msgid "Yucatán" +msgstr "Юкатан" + +#: .\contrib\localflavor\mx\mx_states.py:43 +msgid "Zacatecas" +msgstr "Сакатекас" + +#: .\contrib\localflavor\nl\forms.py:21 +msgid "Enter a valid postal code" +msgstr "Уведіть правильний поштовий індекс." + +#: .\contrib\localflavor\nl\forms.py:52 +msgid "Enter a valid phone number" +msgstr "Введіть правильний номер телефону." + +#: .\contrib\localflavor\nl\forms.py:78 +msgid "Enter a valid SoFi number" +msgstr "Введіть правильний номер SoFi." + +#: .\contrib\localflavor\nl\nl_provinces.py:4 +msgid "Drenthe" +msgstr "Дренте" + +#: .\contrib\localflavor\nl\nl_provinces.py:5 +msgid "Flevoland" +msgstr "Флеволанд" + +#: .\contrib\localflavor\nl\nl_provinces.py:6 +msgid "Friesland" +msgstr "Фризляндія" + +#: .\contrib\localflavor\nl\nl_provinces.py:7 +msgid "Gelderland" +msgstr "Ґельдерланд" + +#: .\contrib\localflavor\nl\nl_provinces.py:8 +msgid "Groningen" +msgstr "Ґронінґен" + +#: .\contrib\localflavor\nl\nl_provinces.py:9 +msgid "Limburg" +msgstr "Лімбурґ" + +#: .\contrib\localflavor\nl\nl_provinces.py:10 +msgid "Noord-Brabant" +msgstr "Північний Брабант" + +#: .\contrib\localflavor\nl\nl_provinces.py:11 +msgid "Noord-Holland" +msgstr "Північна Голландія" + +#: .\contrib\localflavor\nl\nl_provinces.py:12 +msgid "Overijssel" +msgstr "Оверейсел" + +#: .\contrib\localflavor\nl\nl_provinces.py:13 +msgid "Utrecht" +msgstr "Утрехт" + +#: .\contrib\localflavor\nl\nl_provinces.py:14 +msgid "Zeeland" +msgstr "Зеландія" + +#: .\contrib\localflavor\nl\nl_provinces.py:15 +msgid "Zuid-Holland" +msgstr "Південна Голландія" + +#: .\contrib\localflavor\no\forms.py:33 +msgid "Enter a valid Norwegian social security number." +msgstr "Введіть правильний номер норвезького соціального страхування." + +#: .\contrib\localflavor\pe\forms.py:24 +msgid "This field requires 8 digits." +msgstr "В це поле можна ввести тільки 8 цифр." + +#: .\contrib\localflavor\pe\forms.py:52 +msgid "This field requires 11 digits." +msgstr "В це поле можна ввести тільки 11 цифр." + +#: .\contrib\localflavor\pl\forms.py:38 +msgid "National Identification Number consists of 11 digits." +msgstr "Національний ідентифікаційний номер складається з 11 цифр." + +#: .\contrib\localflavor\pl\forms.py:39 +msgid "Wrong checksum for the National Identification Number." +msgstr "Помилкова контрольна сума для Національного ідентифікаційного номера" + +#: .\contrib\localflavor\pl\forms.py:71 +msgid "" +"Enter a tax number field (NIP) in the format XXX-XXX-XX-XX or XX-XX-XXX-XXX." +msgstr "" +"Заповніть поле податковий номер (NIP) у форматі XXX-XXX-XX-XX або XX-XX-XXX-" +"XXX." + +#: .\contrib\localflavor\pl\forms.py:72 +msgid "Wrong checksum for the Tax Number (NIP)." +msgstr "Помилкова контрольна сума для податкового номеру (NIP)." + +#: .\contrib\localflavor\pl\forms.py:111 +msgid "National Business Register Number (REGON) consists of 7 or 9 digits." +msgstr "" +"Національний діловий реєстраційний номер (REGON) складається з 7 або 9 цифр." + +#: .\contrib\localflavor\pl\forms.py:112 +msgid "Wrong checksum for the National Business Register Number (REGON)." +msgstr "" +"Помилкова контрольна сума для Національного ділового реєстраційного номеру " +"(REGON)." + +#: .\contrib\localflavor\pl\forms.py:155 +msgid "Enter a postal code in the format XX-XXX." +msgstr "Введіть поштовий індекс у форматі XX-XXX." + +#: .\contrib\localflavor\pl\pl_voivodeships.py:8 +msgid "Lower Silesia" +msgstr "Нижньосілезьке" + +#: .\contrib\localflavor\pl\pl_voivodeships.py:9 +msgid "Kuyavia-Pomerania" +msgstr "Куявсько-Поморське" + +#: .\contrib\localflavor\pl\pl_voivodeships.py:10 +msgid "Lublin" +msgstr "Люблінське" + +#: .\contrib\localflavor\pl\pl_voivodeships.py:11 +msgid "Lubusz" +msgstr "Любуське" + +#: .\contrib\localflavor\pl\pl_voivodeships.py:12 +msgid "Lodz" +msgstr "Лодзинське" + +#: .\contrib\localflavor\pl\pl_voivodeships.py:13 +msgid "Lesser Poland" +msgstr "Малопольське" + +#: .\contrib\localflavor\pl\pl_voivodeships.py:14 +msgid "Masovia" +msgstr "Мазовецьке" + +#: .\contrib\localflavor\pl\pl_voivodeships.py:15 +msgid "Opole" +msgstr "Опольське" + +#: .\contrib\localflavor\pl\pl_voivodeships.py:16 +msgid "Subcarpatia" +msgstr "Підкарпатське" + +#: .\contrib\localflavor\pl\pl_voivodeships.py:17 +msgid "Podlasie" +msgstr "Підляське" + +#: .\contrib\localflavor\pl\pl_voivodeships.py:18 +msgid "Pomerania" +msgstr "Поморське" + +#: .\contrib\localflavor\pl\pl_voivodeships.py:19 +msgid "Silesia" +msgstr "Сілезьке" + +#: .\contrib\localflavor\pl\pl_voivodeships.py:20 +msgid "Swietokrzyskie" +msgstr "Свентокшиське" + +#: .\contrib\localflavor\pl\pl_voivodeships.py:21 +msgid "Warmia-Masuria" +msgstr "Вармінсько-Мазурське" + +#: .\contrib\localflavor\pl\pl_voivodeships.py:22 +msgid "Greater Poland" +msgstr "Великопольське" + +#: .\contrib\localflavor\pl\pl_voivodeships.py:23 +msgid "West Pomerania" +msgstr "Західнопоморське" + +#: .\contrib\localflavor\ro\forms.py:19 +msgid "Enter a valid CIF." +msgstr "Введіть правильний CIF." + +#: .\contrib\localflavor\ro\forms.py:56 +msgid "Enter a valid CNP." +msgstr "Введіть правильний CNP." + +#: .\contrib\localflavor\ro\forms.py:141 +msgid "Enter a valid IBAN in ROXX-XXXX-XXXX-XXXX-XXXX-XXXX format" +msgstr "Введіть правильний IBAN в форматі ROXX-XXXX-XXXX-XXXX-XXXX-XXXX" + +#: .\contrib\localflavor\ro\forms.py:171 +msgid "Phone numbers must be in XXXX-XXXXXX format." +msgstr "Телефонні номери мають бути у форматі XXX-XXX-XXXX." + +#: .\contrib\localflavor\ro\forms.py:194 + +msgid "Enter a valid postal code in the format XXXXXX" +msgstr "Введіть правильний поштовий індекс у форматі XXXXXX" + +#: .\contrib\localflavor\sk\forms.py:30 +msgid "Enter a postal code in the format XXXXX or XXX XX." +msgstr "Введіть поштовий індекс у форматі XXXXX або XXX XX." + +#: .\contrib\localflavor\sk\sk_districts.py:8 +msgid "Banska Bystrica" +msgstr "Банська Бистриця" + +#: .\contrib\localflavor\sk\sk_districts.py:9 +msgid "Banska Stiavnica" +msgstr "Банська Шт'явниця" + +#: .\contrib\localflavor\sk\sk_districts.py:10 +msgid "Bardejov" +msgstr "Бардейов" + +#: .\contrib\localflavor\sk\sk_districts.py:11 +msgid "Banovce nad Bebravou" +msgstr "Бановце-над-Бебравоу" + +#: .\contrib\localflavor\sk\sk_districts.py:12 +msgid "Brezno" +msgstr "Брезно" + +#: .\contrib\localflavor\sk\sk_districts.py:13 +msgid "Bratislava I" +msgstr "Братіслава I" + +#: .\contrib\localflavor\sk\sk_districts.py:14 +msgid "Bratislava II" +msgstr "Братіслава II" + +#: .\contrib\localflavor\sk\sk_districts.py:15 +msgid "Bratislava III" +msgstr "Братіслава III" + +#: .\contrib\localflavor\sk\sk_districts.py:16 +msgid "Bratislava IV" +msgstr "Братіслава IV" + +#: .\contrib\localflavor\sk\sk_districts.py:17 +msgid "Bratislava V" +msgstr "Братіслава V" + +#: .\contrib\localflavor\sk\sk_districts.py:18 +msgid "Bytca" +msgstr "Бітча" + +#: .\contrib\localflavor\sk\sk_districts.py:19 +msgid "Cadca" +msgstr "Чадца" + +#: .\contrib\localflavor\sk\sk_districts.py:20 +msgid "Detva" +msgstr "Детва" + +#: .\contrib\localflavor\sk\sk_districts.py:21 +msgid "Dolny Kubin" +msgstr "Долни Кубін" + +#: .\contrib\localflavor\sk\sk_districts.py:22 +msgid "Dunajska Streda" +msgstr "Дунайська Стреда" + +#: .\contrib\localflavor\sk\sk_districts.py:23 +msgid "Galanta" +msgstr "Галанта" + +#: .\contrib\localflavor\sk\sk_districts.py:24 +msgid "Gelnica" +msgstr "Гелница" + +#: .\contrib\localflavor\sk\sk_districts.py:25 +msgid "Hlohovec" +msgstr "Глоговець" + +#: .\contrib\localflavor\sk\sk_districts.py:26 +msgid "Humenne" +msgstr "Гуменне" + +#: .\contrib\localflavor\sk\sk_districts.py:27 +msgid "Ilava" +msgstr "Ілава" + +#: .\contrib\localflavor\sk\sk_districts.py:28 +msgid "Kezmarok" +msgstr "Кежмарок" + +#: .\contrib\localflavor\sk\sk_districts.py:29 +msgid "Komarno" +msgstr "Комарно" + +#: .\contrib\localflavor\sk\sk_districts.py:30 +msgid "Kosice I" +msgstr "Кошице I" + +#: .\contrib\localflavor\sk\sk_districts.py:31 +msgid "Kosice II" +msgstr "Кошице II" + +#: .\contrib\localflavor\sk\sk_districts.py:32 +msgid "Kosice III" +msgstr "Кошице III" + +#: .\contrib\localflavor\sk\sk_districts.py:33 +msgid "Kosice IV" +msgstr "Кошице IV" + +#: .\contrib\localflavor\sk\sk_districts.py:34 +msgid "Kosice - okolie" +msgstr "Кошице - периферія" + +#: .\contrib\localflavor\sk\sk_districts.py:35 +msgid "Krupina" +msgstr "Крупіна" + +#: .\contrib\localflavor\sk\sk_districts.py:36 +msgid "Kysucke Nove Mesto" +msgstr "Кошицький край" + +#: .\contrib\localflavor\sk\sk_districts.py:37 +msgid "Levice" +msgstr "Левіце" + +#: .\contrib\localflavor\sk\sk_districts.py:38 +msgid "Levoca" +msgstr "Левоча" + +#: .\contrib\localflavor\sk\sk_districts.py:39 +msgid "Liptovsky Mikulas" +msgstr "Ліптовскі Мікулаш" + +#: .\contrib\localflavor\sk\sk_districts.py:40 +msgid "Lucenec" +msgstr "Лученєць" + +#: .\contrib\localflavor\sk\sk_districts.py:41 +msgid "Malacky" +msgstr "Малацькі" + +#: .\contrib\localflavor\sk\sk_districts.py:42 +msgid "Martin" +msgstr "Мартін" + +#: .\contrib\localflavor\sk\sk_districts.py:43 +msgid "Medzilaborce" +msgstr "Мєдзілаборце" + +#: .\contrib\localflavor\sk\sk_districts.py:44 +msgid "Michalovce" +msgstr "Міхаловце" + +#: .\contrib\localflavor\sk\sk_districts.py:45 +msgid "Myjava" +msgstr "Міява" + +#: .\contrib\localflavor\sk\sk_districts.py:46 +msgid "Namestovo" +msgstr "Намєстово" + +#: .\contrib\localflavor\sk\sk_districts.py:47 +msgid "Nitra" +msgstr "Нітра" + +#: .\contrib\localflavor\sk\sk_districts.py:48 +msgid "Nove Mesto nad Vahom" +msgstr "Нове Мєсто-над-Вагом" + +#: .\contrib\localflavor\sk\sk_districts.py:49 +msgid "Nove Zamky" +msgstr "Нове Замкі" + +#: .\contrib\localflavor\sk\sk_districts.py:50 +msgid "Partizanske" +msgstr "Партизанське" + +#: .\contrib\localflavor\sk\sk_districts.py:51 +msgid "Pezinok" +msgstr "Пєзінок" + +#: .\contrib\localflavor\sk\sk_districts.py:52 +msgid "Piestany" +msgstr "П'єштяни" + +#: .\contrib\localflavor\sk\sk_districts.py:53 +msgid "Poltar" +msgstr "Полтар" + +#: .\contrib\localflavor\sk\sk_districts.py:54 +msgid "Poprad" +msgstr "Попрад" + +#: .\contrib\localflavor\sk\sk_districts.py:55 +msgid "Povazska Bystrica" +msgstr "Поважська Бистриця" + +#: .\contrib\localflavor\sk\sk_districts.py:56 +msgid "Presov" +msgstr "Прєшов" + +#: .\contrib\localflavor\sk\sk_districts.py:57 +msgid "Prievidza" +msgstr "Пр'євідза" + +#: .\contrib\localflavor\sk\sk_districts.py:58 +msgid "Puchov" +msgstr "Пухов" + +#: .\contrib\localflavor\sk\sk_districts.py:59 +msgid "Revuca" +msgstr "Рєвуца" + +#: .\contrib\localflavor\sk\sk_districts.py:60 +msgid "Rimavska Sobota" +msgstr "Рімавська Собота" + +#: .\contrib\localflavor\sk\sk_districts.py:61 +msgid "Roznava" +msgstr "Рожнява" + +#: .\contrib\localflavor\sk\sk_districts.py:62 +msgid "Ruzomberok" +msgstr "Ружомберок" + +#: .\contrib\localflavor\sk\sk_districts.py:63 +msgid "Sabinov" +msgstr "Сабінов" + +#: .\contrib\localflavor\sk\sk_districts.py:64 +msgid "Senec" +msgstr "Сєнєц" + +#: .\contrib\localflavor\sk\sk_districts.py:65 + +msgid "Senica" +msgstr "Сєніца" + +#: .\contrib\localflavor\sk\sk_districts.py:66 +msgid "Skalica" +msgstr "Скаліца" + +#: .\contrib\localflavor\sk\sk_districts.py:67 +msgid "Snina" +msgstr "Сніна" + +#: .\contrib\localflavor\sk\sk_districts.py:68 +msgid "Sobrance" +msgstr "Собранце" + +#: .\contrib\localflavor\sk\sk_districts.py:69 +msgid "Spisska Nova Ves" +msgstr "Спішська Нова Вєс" + +#: .\contrib\localflavor\sk\sk_districts.py:70 +msgid "Stara Lubovna" +msgstr "Стара Любовня" + +#: .\contrib\localflavor\sk\sk_districts.py:71 +msgid "Stropkov" +msgstr "Стропков" + +#: .\contrib\localflavor\sk\sk_districts.py:72 +msgid "Svidnik" +msgstr "Свіднік" + +#: .\contrib\localflavor\sk\sk_districts.py:73 +msgid "Sala" +msgstr "Шаля" + +#: .\contrib\localflavor\sk\sk_districts.py:74 +msgid "Topolcany" +msgstr "Топольчани" + +#: .\contrib\localflavor\sk\sk_districts.py:75 +msgid "Trebisov" +msgstr "Требішов" + +#: .\contrib\localflavor\sk\sk_districts.py:76 + +msgid "Trencin" +msgstr "Трєнчін" + +#: .\contrib\localflavor\sk\sk_districts.py:77 +msgid "Trnava" +msgstr "Трнава" + +#: .\contrib\localflavor\sk\sk_districts.py:78 +msgid "Turcianske Teplice" +msgstr "Турч'янське Тепліце" + +#: .\contrib\localflavor\sk\sk_districts.py:79 +msgid "Tvrdosin" +msgstr "Тврдошін" + +#: .\contrib\localflavor\sk\sk_districts.py:80 +msgid "Velky Krtis" +msgstr "Вельки Кртіш" + +#: .\contrib\localflavor\sk\sk_districts.py:81 +msgid "Vranov nad Toplou" +msgstr "Вранов-над-Топльеу" + +#: .\contrib\localflavor\sk\sk_districts.py:82 +msgid "Zlate Moravce" +msgstr "Злате Моравце" + +#: .\contrib\localflavor\sk\sk_districts.py:83 +msgid "Zvolen" +msgstr "Зволен" + +#: .\contrib\localflavor\sk\sk_districts.py:84 +msgid "Zarnovica" +msgstr "Жарновиця" + +#: .\contrib\localflavor\sk\sk_districts.py:85 +msgid "Ziar nad Hronom" +msgstr "Ж'яр-над-Гроном" + +#: .\contrib\localflavor\sk\sk_districts.py:86 +msgid "Zilina" +msgstr "Жиліна" + +#: .\contrib\localflavor\sk\sk_regions.py:8 +msgid "Banska Bystrica region" +msgstr "Банкобистрицький край" + +#: .\contrib\localflavor\sk\sk_regions.py:9 +msgid "Bratislava region" +msgstr "Братиславський край" + +#: .\contrib\localflavor\sk\sk_regions.py:10 +msgid "Kosice region" +msgstr "Кошицький край" + +#: .\contrib\localflavor\sk\sk_regions.py:11 +msgid "Nitra region" +msgstr "Нітранський край" + +#: .\contrib\localflavor\sk\sk_regions.py:12 +msgid "Presov region" +msgstr "Прєшовський край" + +#: .\contrib\localflavor\sk\sk_regions.py:13 +msgid "Trencin region" +msgstr "Тренчин" + +#: .\contrib\localflavor\sk\sk_regions.py:14 +msgid "Trnava region" +msgstr "Трнава" + +#: .\contrib\localflavor\sk\sk_regions.py:15 +msgid "Zilina region" +msgstr "Жилінський край" + +#: .\contrib\localflavor\uk\forms.py:21 +msgid "Enter a valid postcode." +msgstr "Уведіть правильний поштовий індекс." + +#: .\contrib\localflavor\uk\uk_regions.py:11 +msgid "Bedfordshire" +msgstr "Бедфордшір" + +#: .\contrib\localflavor\uk\uk_regions.py:12 +msgid "Buckinghamshire" +msgstr "Бакінгемшир" + +#: .\contrib\localflavor\uk\uk_regions.py:14 +msgid "Cheshire" +msgstr "Чешир" + +#: .\contrib\localflavor\uk\uk_regions.py:15 +msgid "Cornwall and Isles of Scilly" +msgstr "Корнуолл" + +#: .\contrib\localflavor\uk\uk_regions.py:16 +msgid "Cumbria" +msgstr "Камбрія" + +#: .\contrib\localflavor\uk\uk_regions.py:17 +msgid "Derbyshire" +msgstr "Дербішир" + +#: .\contrib\localflavor\uk\uk_regions.py:18 +msgid "Devon" +msgstr "Девон" + +#: .\contrib\localflavor\uk\uk_regions.py:19 +msgid "Dorset" +msgstr "Дорсет" + +#: .\contrib\localflavor\uk\uk_regions.py:20 +msgid "Durham" +msgstr "Дарем" + +#: .\contrib\localflavor\uk\uk_regions.py:21 +msgid "East Sussex" +msgstr "Східний Сассекс" + +#: .\contrib\localflavor\uk\uk_regions.py:22 +msgid "Essex" +msgstr "Ессекс" + +#: .\contrib\localflavor\uk\uk_regions.py:23 +msgid "Gloucestershire" +msgstr "Глостершир" + +#: .\contrib\localflavor\uk\uk_regions.py:24 +msgid "Greater London" +msgstr "Великий Лондон" + +#: .\contrib\localflavor\uk\uk_regions.py:25 +msgid "Greater Manchester" +msgstr "Великий Манчестер" + +#: .\contrib\localflavor\uk\uk_regions.py:26 +msgid "Hampshire" +msgstr "Хемпшир" + +#: .\contrib\localflavor\uk\uk_regions.py:27 +msgid "Hertfordshire" +msgstr "Хартфордшир" + +#: .\contrib\localflavor\uk\uk_regions.py:28 +msgid "Kent" +msgstr "Кент" + +#: .\contrib\localflavor\uk\uk_regions.py:29 +msgid "Lancashire" +msgstr "Ланкашир" + +#: .\contrib\localflavor\uk\uk_regions.py:30 +msgid "Leicestershire" +msgstr "Лестершир" + +#: .\contrib\localflavor\uk\uk_regions.py:31 +msgid "Lincolnshire" +msgstr "Лінкольншир" + +#: .\contrib\localflavor\uk\uk_regions.py:32 +msgid "Merseyside" +msgstr "Мерсісайд" + +#: .\contrib\localflavor\uk\uk_regions.py:33 +msgid "Norfolk" +msgstr "Норфолк" + +#: .\contrib\localflavor\uk\uk_regions.py:34 +msgid "North Yorkshire" +msgstr "Північний Йоркшир" + +#: .\contrib\localflavor\uk\uk_regions.py:35 +msgid "Northamptonshire" +msgstr "Нортгемптоншир" + +#: .\contrib\localflavor\uk\uk_regions.py:36 +msgid "Northumberland" +msgstr "Нортумберленд" + +#: .\contrib\localflavor\uk\uk_regions.py:37 +msgid "Nottinghamshire" +msgstr "Ноттінгемшир" + +#: .\contrib\localflavor\uk\uk_regions.py:38 +msgid "Oxfordshire" +msgstr "Оксфордшир" + +#: .\contrib\localflavor\uk\uk_regions.py:39 +msgid "Shropshire" +msgstr "Шропшир" + +#: .\contrib\localflavor\uk\uk_regions.py:40 +msgid "Somerset" +msgstr "Сомерсет" + +#: .\contrib\localflavor\uk\uk_regions.py:41 +msgid "South Yorkshire" +msgstr "Південний Йоркшир" + +#: .\contrib\localflavor\uk\uk_regions.py:42 +msgid "Staffordshire" +msgstr "Стаффордшир" + +#: .\contrib\localflavor\uk\uk_regions.py:43 +msgid "Suffolk" +msgstr "Саффолк" + +#: .\contrib\localflavor\uk\uk_regions.py:44 +msgid "Surrey" +msgstr "Суррей" + +#: .\contrib\localflavor\uk\uk_regions.py:45 +msgid "Tyne and Wear" +msgstr "Тайн-енд-Уїр" + +#: .\contrib\localflavor\uk\uk_regions.py:46 +msgid "Warwickshire" +msgstr "Варвікшир" + +#: .\contrib\localflavor\uk\uk_regions.py:47 +msgid "West Midlands" +msgstr "Уест Мідлендс" + +#: .\contrib\localflavor\uk\uk_regions.py:48 +msgid "West Sussex" +msgstr "Західний Сассекс" + +#: .\contrib\localflavor\uk\uk_regions.py:49 +msgid "West Yorkshire" +msgstr "Західний Йоркшир" + +#: .\contrib\localflavor\uk\uk_regions.py:50 +msgid "Wiltshire" +msgstr "Уілтшир" + +#: .\contrib\localflavor\uk\uk_regions.py:51 +msgid "Worcestershire" +msgstr "Вустершир" + +#: .\contrib\localflavor\uk\uk_regions.py:55 +msgid "County Antrim" +msgstr "Графство Антрім" + +#: .\contrib\localflavor\uk\uk_regions.py:56 +msgid "County Armagh" +msgstr "Графство Арма" + +#: .\contrib\localflavor\uk\uk_regions.py:57 +msgid "County Down" +msgstr "Графство Даун" + +#: .\contrib\localflavor\uk\uk_regions.py:58 +msgid "County Fermanagh" +msgstr "Графство Фєрмана" + +#: .\contrib\localflavor\uk\uk_regions.py:59 +msgid "County Londonderry" +msgstr "Графство Лондондеррі" + +#: .\contrib\localflavor\uk\uk_regions.py:60 +msgid "County Tyrone" +msgstr "Графство Тірон" + +#: .\contrib\localflavor\uk\uk_regions.py:64 +msgid "Clwyd" +msgstr "Клуід" + +#: .\contrib\localflavor\uk\uk_regions.py:65 +msgid "Dyfed" +msgstr "Давєд" + +#: .\contrib\localflavor\uk\uk_regions.py:66 +msgid "Gwent" +msgstr "Гвєнт" + +#: .\contrib\localflavor\uk\uk_regions.py:67 +msgid "Gwynedd" +msgstr "Гвінед" + +#: .\contrib\localflavor\uk\uk_regions.py:68 +msgid "Mid Glamorgan" +msgstr "Мід Гламорган" + +#: .\contrib\localflavor\uk\uk_regions.py:69 +msgid "Powys" +msgstr "Поуіс" + +#: .\contrib\localflavor\uk\uk_regions.py:70 +msgid "South Glamorgan" +msgstr "Південний Гламорган" + +#: .\contrib\localflavor\uk\uk_regions.py:71 +msgid "West Glamorgan" +msgstr "Західний Гламорган" + +#: .\contrib\localflavor\uk\uk_regions.py:75 +msgid "Borders" +msgstr "Бордерс" + +#: .\contrib\localflavor\uk\uk_regions.py:76 +msgid "Central Scotland" +msgstr "Центральна Шотландія" + +#: .\contrib\localflavor\uk\uk_regions.py:77 +msgid "Dumfries and Galloway" +msgstr "Дамфріс і Галлоуей" + +#: .\contrib\localflavor\uk\uk_regions.py:78 +msgid "Fife" +msgstr "Файф" + +#: .\contrib\localflavor\uk\uk_regions.py:79 +msgid "Grampian" +msgstr "Гремпіан" + +#: .\contrib\localflavor\uk\uk_regions.py:80 +msgid "Highland" +msgstr "Хайленд" + +#: .\contrib\localflavor\uk\uk_regions.py:81 +msgid "Lothian" +msgstr "Лотіан" + +#: .\contrib\localflavor\uk\uk_regions.py:82 +msgid "Orkney Islands" +msgstr "Оркнейські острови" + +#: .\contrib\localflavor\uk\uk_regions.py:83 +msgid "Shetland Islands" +msgstr "Шетлендські острови" + +#: .\contrib\localflavor\uk\uk_regions.py:84 +msgid "Strathclyde" +msgstr "Стресклайд" + +#: .\contrib\localflavor\uk\uk_regions.py:85 +msgid "Tayside" +msgstr "Тейсайд" + +#: .\contrib\localflavor\uk\uk_regions.py:86 +msgid "Western Isles" +msgstr "Західні острови" + +#: .\contrib\localflavor\uk\uk_regions.py:90 +msgid "England" +msgstr "Англія" + +#: .\contrib\localflavor\uk\uk_regions.py:91 +msgid "Northern Ireland" +msgstr "Північна Ірландія" + +#: .\contrib\localflavor\uk\uk_regions.py:92 +msgid "Scotland" +msgstr "Шотландія" + +#: .\contrib\localflavor\uk\uk_regions.py:93 +msgid "Wales" +msgstr "Уельс" + +#: .\contrib\localflavor\us\forms.py:16 +msgid "Enter a zip code in the format XXXXX or XXXXX-XXXX." +msgstr "Введіть поштовий індекс у форматі XXXXX або XXXXX-XXXX." + +#: .\contrib\localflavor\us\forms.py:54 +msgid "Enter a valid U.S. Social Security number in XXX-XX-XXXX format." +msgstr "" +"Введіть правильний номер соціального забезпення США в форматі XXX-XX-XXXX." + +#: .\contrib\localflavor\za\forms.py:20 +msgid "Enter a valid South African ID number" +msgstr "Введіть правильний Південно-Африканський ідентифікаційний номер" + +#: .\contrib\localflavor\za\forms.py:54 +msgid "Enter a valid South African postal code" +msgstr "Введіть правильний поштовий індекс Південної Африки" + +#: .\contrib\localflavor\za\za_provinces.py:4 +msgid "Eastern Cape" +msgstr "Східна Капська" + +#: .\contrib\localflavor\za\za_provinces.py:5 +msgid "Free State" +msgstr "Вільна країна" + +#: .\contrib\localflavor\za\za_provinces.py:6 +msgid "Gauteng" +msgstr "Гаутенг" + +#: .\contrib\localflavor\za\za_provinces.py:7 +msgid "KwaZulu-Natal" +msgstr "КваЗулу-Наталь" + +#: .\contrib\localflavor\za\za_provinces.py:8 +msgid "Limpopo" +msgstr "Лімпопо" + +#: .\contrib\localflavor\za\za_provinces.py:9 +msgid "Mpumalanga" +msgstr "Мпумаланга" + +#: .\contrib\localflavor\za\za_provinces.py:10 +msgid "Northern Cape" +msgstr "Північна Капська" + +#: .\contrib\localflavor\za\za_provinces.py:11 +msgid "North West" +msgstr "Північно-Західна" + +#: .\contrib\localflavor\za\za_provinces.py:12 +msgid "Western Cape" +msgstr "Західна Капська" + +#: .\contrib\redirects\models.py:7 +msgid "redirect from" +msgstr "перенаправлення з" + +#: .\contrib\redirects\models.py:8 +msgid "" +"This should be an absolute path, excluding the domain name. Example: '/" +"events/search/'." +msgstr "" +"Це повинен бути абсолютний шлях, виключаючи ім'я домену. Приклад: '/events/" +"search/'." + +#: .\contrib\redirects\models.py:9 +msgid "redirect to" +msgstr "перенаправлення до" + +#: .\contrib\redirects\models.py:10 +msgid "" +"This can be either an absolute path (as above) or a full URL starting with " +"'http://'." +msgstr "" +"Це може бути або абсолютний шлях (як вище), або повний URL, який починається " +"з 'http://'." + +#: .\contrib\redirects\models.py:13 +msgid "redirect" +msgstr "перенаправлення" + +#: .\contrib\redirects\models.py:14 +msgid "redirects" +msgstr "перенаправлення" + +#: .\contrib\sessions\models.py:45 +msgid "session key" +msgstr "ключ сесії" + +#: .\contrib\sessions\models.py:47 +msgid "session data" +msgstr "дані сесії" + +#: .\contrib\sessions\models.py:48 +msgid "expire date" +msgstr "термін придатності" + +#: .\contrib\sessions\models.py:53 +msgid "session" +msgstr "сесія" + +#: .\contrib\sessions\models.py:54 +msgid "sessions" +msgstr "сесії" + +#: .\contrib\sites\models.py:32 +msgid "domain name" +msgstr "доменне ім'я" + +#: .\contrib\sites\models.py:33 +msgid "display name" +msgstr "відображуване ім'я" + +#: .\contrib\sites\models.py:39 +msgid "sites" +msgstr "сайти" + +#: .\core\validators.py:80 +msgid "This value must contain only letters, numbers, underscores or hyphens." +msgstr "" +"Це значення повинно містити тільки літери, числа, символи підкреслювання або " +"дефіси." + +#: .\core\validators.py:84 +msgid "Uppercase letters are not allowed here." +msgstr "Літери у верхньому регістрі тут недозволені." + +#: .\core\validators.py:88 +msgid "Lowercase letters are not allowed here." +msgstr "Літери у нижньому регістрі тут недозволені." + +#: .\core\validators.py:95 .\db\models\fields\__init__.py:428 +msgid "Enter only digits separated by commas." +msgstr "Введіть тільки цифри, що розділені комами." + +#: .\core\validators.py:107 +msgid "Enter valid e-mail addresses separated by commas." +msgstr "Введіть правильні e-mail адреси, що розділені комами." + +#: .\core\validators.py:111 +msgid "Please enter a valid IP address." +msgstr "Будь ласка, введіть правильну IP-адресу." + +#: .\core\validators.py:115 +msgid "Empty values are not allowed here." +msgstr "Порожні значення тут не дозволені." + +#: .\core\validators.py:119 +msgid "Non-numeric characters aren't allowed here." +msgstr "Не-цифрові символи тут не дозволені" + +#: .\core\validators.py:123 +msgid "This value can't be comprised solely of digits." +msgstr "Це значення не може складатися з одних цифр." + +#: .\core\validators.py:128 .\forms\fields.py:166 .\newforms\fields.py:152 +msgid "Enter a whole number." +msgstr "Введіть ціле число." + +#: .\core\validators.py:132 +msgid "Only alphabetical characters are allowed here." +msgstr "Тільки алфавітні символи дозволені тут." + +#: .\core\validators.py:147 .\db\models\fields\__init__.py:468 +msgid "Invalid date: %s" +msgstr "Неправильна дата: %s" + +#: .\core\validators.py:152 .\db\models\fields\__init__.py:459 +msgid "Enter a valid date in YYYY-MM-DD format." +msgstr "Уведіть правильну дату у форматі РРРР-ММ-ДД." + +#: .\core\validators.py:157 +msgid "Enter a valid time in HH:MM format." +msgstr "Введіть коректний час у форматі ГГ:ХХ." + +#: .\core\validators.py:161 +msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format." +msgstr "Введіть коректні дату/час у форматі ГГГГ-ММ-ДД ГГ:ХХ" + +#: .\core\validators.py:178 .\core\validators.py:470 .\forms\fields.py:446 +#: .\newforms\fields.py:433 +msgid "No file was submitted. Check the encoding type on the form." +msgstr "Файл не надіслано. Перевірте тип кодування форми." + +#: .\core\validators.py:189 .\forms\fields.py:477 .\newforms\fields.py:459 +msgid "" +"Upload a valid image. The file you uploaded was either not an image or a " +"corrupted image." +msgstr "" +"Завантажте правильний малюнок. Файл, який ви завантажили, не є малюнком, або " +"є зіпсованим малюнком." + +#: .\core\validators.py:196 +#, python-format +msgid "The URL %s does not point to a valid image." +msgstr "URL %s не вказує на правильний малюнок." + +#: .\core\validators.py:200 +#, python-format +msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid." +msgstr "" +"Телефонні номери мають бути у форматі XXX-XXX-XXXX. \"%s\" є неправильним." + +#: .\core\validators.py:208 +#, python-format +msgid "The URL %s does not point to a valid QuickTime video." +msgstr "URL %s не вказує на коректне відео у форматі QuickTime." + +#: .\core\validators.py:212 +msgid "A valid URL is required." +msgstr "Необхадно ввести правильний URL." + +#: .\core\validators.py:226 +#, python-format +msgid "" +"Valid HTML is required. Specific errors are:\n" +"%s" +msgstr "" +"Необхідно ввести валідний HTML. Помилки:\n" +"%s" + +#: .\core\validators.py:233 +#, python-format +msgid "Badly formed XML: %s" +msgstr "Погано сформований XML: %s" + +#: .\core\validators.py:250 +#, python-format +msgid "Invalid URL: %s" +msgstr "Невірний URL: %s" + +#: .\core\validators.py:255 .\core\validators.py:257 +#, python-format +msgid "The URL %s is a broken link." +msgstr "URL %s є пошкодженим посиланням." + +#: .\core\validators.py:263 +msgid "Enter a valid U.S. state abbreviation." +msgstr "Введіть правильну аббревіатуру штата США" + +#: .\core\validators.py:284 +#, python-format +msgid "This field must match the '%s' field." +msgstr "Це поле повинно співпадати з полем '%s'" + +#: .\core\validators.py:303 +msgid "Please enter something for at least one field." +msgstr "Будь ласка, введіть щось в хоча б одне поле." + +#: .\core\validators.py:312 .\core\validators.py:323 +msgid "Please enter both fields or leave them both empty." +msgstr "Будь ласка, заповніть обидва поля або залишіть їх обох пустими." + +#: .\core\validators.py:331 +#, python-format +msgid "This field must be given if %(field)s is %(value)s" +msgstr "Це поле повинно бути заданим, у разі якщо %(field)s є %(value)s" + +#: .\core\validators.py:344 +#, python-format +msgid "This field must be given if %(field)s is not %(value)s" +msgstr "Це поле повинно бути заданим, у разі якщо %(field)s не є %(value)s" + +#: .\core\validators.py:363 +msgid "Duplicate values are not allowed." +msgstr "Продубльовані значення недозволені." + +#: .\core\validators.py:378 +#, python-format +msgid "This value must be between %(lower)s and %(upper)s." +msgstr "Це значення повинно бути між %(lower)s та %(upper)s." + +#: .\core\validators.py:380 +#, python-format +msgid "This value must be at least %s." +msgstr "Це значення повинно бути, принаймні %s." + +#: .\core\validators.py:382 +#, python-format +msgid "This value must be no more than %s." +msgstr "Це значення повинно бути не більше %s." + +#: .\core\validators.py:423 +#, python-format +msgid "This value must be a power of %s." +msgstr "Це значення повинно бути ступенем %s." + +#: .\core\validators.py:433 +msgid "Please enter a valid decimal number." +msgstr "Будь ласка, введіть правильне десяткове число." + +#: .\core\validators.py:440 +#, python-format +msgid "Please enter a valid decimal number with at most %s total digit." +msgid_plural "" +"Please enter a valid decimal number with at most %s total digits." +msgstr[0] "" +"Будь ласка, введіть правильне десяткове число з загальною кількістю цифр не " +"більше ніж %s." +msgstr[1] "" +"Будь ласка, введіть правильне десяткове число з загальною кількістю цифр не " +"більше ніж %s." + +#: .\core\validators.py:443 +#, python-format +msgid "" +"Please enter a valid decimal number with a whole part of at most %s digit." +msgid_plural "" +"Please enter a valid decimal number with a whole part of at most %s digits." +msgstr[0] "" +"Будь ласка, введіть правильне десяткове число з цілою частиною, що налічує " +"максимум %s цифр" +msgstr[1] "" +"Будь ласка, введіть правильне десяткове число з цілою частиною, що налічує " +"максимум %s цифр" + +#: .\core\validators.py:446 +#, python-format +msgid "Please enter a valid decimal number with at most %s decimal place." +msgid_plural "" +"Please enter a valid decimal number with at most %s decimal places." +msgstr[0] "Будь ласка, введіть правильне десяткове число з %s цифр після коми." +msgstr[1] "Будь ласка, введіть правильне десяткове число з %s цифр після коми." + +#: .\core\validators.py:454 +msgid "Please enter a valid floating point number." +msgstr "Будь ласка, введіть правильне число з плаваючою точкою." + +#: .\core\validators.py:463 +#, python-format +msgid "Make sure your uploaded file is at least %s bytes big." +msgstr "Перевірте, щоб розмір закачаного файлу був як мінімум %s байтів." + +#: .\core\validators.py:464 +#, python-format +msgid "Make sure your uploaded file is at most %s bytes big." +msgstr "Перевірте, щоб розмір закачаного файлу був максимум %s байтів." + +#: .\core\validators.py:481 +msgid "The format for this field is wrong." +msgstr "Невірний формат для цього поля." + +#: .\core\validators.py:496 +msgid "This field is invalid." +msgstr "Це поле містить помилки." + +#: .\core\validators.py:532 +#, python-format +msgid "Could not retrieve anything from %s." +msgstr "Не можу нічого отримати з %s." + +#: .\core\validators.py:535 +#, python-format +msgid "" +"The URL %(url)s returned the invalid Content-Type header '%(contenttype)s'." +msgstr "" +"URL %(url)s повернув помилковий заголовок Content-Type '%(contenttype)s'." + +#: .\core\validators.py:568 +#, python-format +msgid "" +"Please close the unclosed %(tag)s tag from line %(line)s. (Line starts with " +"\"%(start)s\".)" +msgstr "" +"Будь ласка, закрийте незакритий %(tag)s тег у рядку %(line)s. (Початок " +"рядка: \"%(start)s\".)" + +#: .\core\validators.py:572 +#, python-format +msgid "" +"Some text starting on line %(line)s is not allowed in that context. (Line " +"starts with \"%(start)s\".)" +msgstr "" +"Частина тексту, що починається у рядку %(line)s неприпустима у цьому " +"контексті. (Початок рядка: \"%(start)s\".)" + +#: .\core\validators.py:577 +#, python-format +msgid "" +"\"%(attr)s\" on line %(line)s is an invalid attribute. (Line starts with \"%" +"(start)s\".)" +msgstr "" +"\"%(attr)s\" у рядку %(line)s має помилковий атрибут. (Початок рядка: \"%" +"(start)s\".)" + +#: .\core\validators.py:582 +#, python-format +msgid "" +"\"<%(tag)s>\" on line %(line)s is an invalid tag. (Line starts with \"%" +"(start)s\".)" +msgstr "" +"Тег \"<%(tag)s>\" у рядку %(line)s є помилковим. (Початок рядка: \"%(start)s" +"\".)" + +#: .\core\validators.py:586 +#, python-format +msgid "" +"A tag on line %(line)s is missing one or more required attributes. (Line " +"starts with \"%(start)s\".)" +msgstr "" +"У тега в рядку %(line)s відсутній один або декілька необхідних атрибутів. " +"(Початок рядка: \"%(start)s\".)" + +#: .\core\validators.py:591 +#, python-format +msgid "" +"The \"%(attr)s\" attribute on line %(line)s has an invalid value. (Line " +"starts with \"%(start)s\".)" +msgstr "" +"Атрибут \"%(attr)s\" у рядку %(line)s має помилкове значення. (Початок " +"рядка: \"%(start)s\".)" + +#: .\db\models\manipulators.py:304 +#, python-format +msgid "%(object)s with this %(type)s already exists for the given %(field)s." +msgstr "%(object)s з таким %(type)s вже існує для даних %(field)s." + +#: .\db\models\fields\__init__.py:348 .\db\models\fields\__init__.py:683 +msgid "This value must be an integer." +msgstr "Це значення має бути цілим." + +#: .\db\models\fields\__init__.py:379 +msgid "This value must be either True or False." +msgstr "Це значення повинно бути True або False." + +#: .\db\models\fields\__init__.py:412 +msgid "This field cannot be null." +msgstr "Це поле не може бути пустим." + +#: .\db\models\fields\__init__.py:532 .\db\models\fields\__init__.py:550 +msgid "Enter a valid date/time in YYYY-MM-DD HH:MM[:ss[.uuuuuu]] format." +msgstr "Введіть коректну дату у форматі РРРР-ММ-ДД[:сс[.мммммм]]." + +#: .\db\models\fields\__init__.py:586 +msgid "This value must be a decimal number." +msgstr "Це значення повинно бути цілим числом." + +#: .\db\models\fields\__init__.py:719 +msgid "This value must be either None, True or False." +msgstr "Це значення повинно бути None, True або False." + +#: .\db\models\fields\__init__.py:817 .\db\models\fields\__init__.py:831 +msgid "Enter a valid time in HH:MM[:ss[.uuuuuu]] format." +msgstr "Уведіть коректний час у форматі ГГ:ХХ[:сс[.мммммм]]." + +#: .\db\models\fields\related.py:761 +msgid "" +"Hold down \"Control\", or \"Command\" on a Mac, to select more than one." +msgstr "" +"Затисніть клавішу \"Control\", або \"Command\" на Маку, щоб обрати більше " +"однієї опції." + +#: .\db\models\fields\related.py:838 +#, python-format +msgid "Please enter valid %(self)s IDs. The value %(value)r is invalid." +msgid_plural "" +"Please enter valid %(self)s IDs. The values %(value)r are invalid." +msgstr[0] "" +"Будь ласка, введіть правильні %(self)s ID. Значення %(value)r помилкове." +msgstr[1] "" + +#: .\forms\fields.py:54 .\newforms\fields.py:46 .\oldforms\__init__.py:370 +msgid "This field is required." +msgstr "Це поле обов'язкове." + +#: .\forms\fields.py:55 .\newforms\fields.py:47 +msgid "Enter a valid value." +msgstr "Уведіть коректне значення." + +#: .\forms\fields.py:138 .\newforms\fields.py:124 +msgid "Ensure this value has at most %(max)d characters (it has %(length)d)." +msgstr "" +"Переконайтеся, що це значення має не більше %(max)d символів (зараз %(length)" +"d)." + +#: .\forms\fields.py:139 .\newforms\fields.py:125 +msgid "Ensure this value has at least %(min)d characters (it has %(length)d)." +msgstr "" +"Переконайтеся, що це значення має не менще %(min)d символів (зараз %(length)" +"d)." + +#: .\forms\fields.py:167 .\forms\fields.py:196 .\forms\fields.py:225 +#: .\newforms\fields.py:153 .\newforms\fields.py:182 .\newforms\fields.py:211 +msgid "Ensure this value is less than or equal to %s." +msgstr "Переконайтеся, що це значення менше або дорівнює %s." + +#: .\forms\fields.py:168 .\forms\fields.py:197 .\forms\fields.py:226 +#: .\newforms\fields.py:154 .\newforms\fields.py:183 .\newforms\fields.py:212 +msgid "Ensure this value is greater than or equal to %s." +msgstr "Переконайтеся, що це значення більше або дорівнює %s." + +#: .\forms\fields.py:195 .\forms\fields.py:224 .\newforms\fields.py:181 +#: .\newforms\fields.py:210 +msgid "Enter a number." +msgstr "Введіть число." + +#: .\forms\fields.py:227 .\newforms\fields.py:213 +msgid "Ensure that there are no more than %s digits in total." +msgstr "Переконайтеся, що тут не більше ніж %s цифр загалом." + +#: .\forms\fields.py:228 .\newforms\fields.py:214 +msgid "Ensure that there are no more than %s decimal places." +msgstr "Переконайтеся, що тут не більше ніж %s цифр після десяткової коми." + +#: .\forms\fields.py:229 .\newforms\fields.py:215 +msgid "Ensure that there are no more than %s digits before the decimal point." +msgstr "Переконайтеся, що тут не більше ніж %s цифр до десяткової коми." + +#: .\forms\fields.py:287 .\forms\fields.py:849 .\newforms\fields.py:263 +#: .\newforms\fields.py:750 +msgid "Enter a valid date." +msgstr "Введіть коректну дату." + +#: .\forms\fields.py:321 .\forms\fields.py:850 .\newforms\fields.py:296 +#: .\newforms\fields.py:751 +msgid "Enter a valid time." +msgstr "Введіть коректний час." + +#: .\forms\fields.py:360 .\newforms\fields.py:335 +msgid "Enter a valid date/time." +msgstr "Уведіть коректну дату/час адресу." + +#: .\forms\fields.py:447 .\newforms\fields.py:434 +msgid "No file was submitted." +msgstr "Файл не було надіслано." + +#: .\forms\fields.py:448 .\newforms\fields.py:435 .\oldforms\__init__.py:689 +msgid "The submitted file is empty." +msgstr "Переданий файл порожній." + +#: .\forms\fields.py:538 .\newforms\fields.py:497 +msgid "Enter a valid URL." +msgstr "Уведіть коректний URL." + +#: .\forms\fields.py:539 .\newforms\fields.py:498 +msgid "This URL appears to be a broken link." +msgstr "URL %s є пошкодженим посиланням." + +#: .\forms\fields.py:618 .\forms\fields.py:696 .\newforms\fields.py:598 +msgid "Select a valid choice. %(value)s is not one of the available choices." +msgstr "Зробить коректний вибір, %(value)s немає серед варіантів вибору." + +#: .\forms\fields.py:697 .\forms\fields.py:758 .\forms\models.py:714 +#: .\newforms\fields.py:599 .\newforms\fields.py:661 .\newforms\models.py:563 +msgid "Enter a list of values." +msgstr "Введіть список значень." + +#: .\forms\fields.py:878 .\newforms\fields.py:779 +msgid "Enter a valid IPv4 address." +msgstr "Введіть коректну IPv4 адресу." + +#: .\forms\fields.py:888 +msgid "" +"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens." +msgstr "" +"Введіть коректне значення 'slug' (короткого заголовку), що може містити " +"тільки літери, числа, символи підкреслювання та дефіси." + +#: .\forms\formsets.py:242 .\forms\formsets.py:244 +msgid "Order" +msgstr "Послідовність" + +#: .\forms\models.py:281 .\forms\models.py:290 +#, python-format +msgid "%(model_name)s with this %(field_label)s already exists." +msgstr "%(model_name)s з таким %(field_label)s вже існує." + +#: .\forms\models.py:581 +msgid "The inline foreign key did not match the parent instance primary key." +msgstr "" +"Зв'язаний зовнішній ключ не відповідає первісному ключу батьківського " +"екземпляру." + +#: .\forms\models.py:644 .\newforms\fields.py:559 .\newforms\models.py:497 +msgid "Select a valid choice. That choice is not one of the available choices." +msgstr "Зробить коректний вибір. Такого варіанту нема серед доступних." + +#: .\forms\models.py:715 .\newforms\models.py:564 +msgid "Select a valid choice. %s is not one of the available choices." +msgstr "Зробить коректний вибір. Такого варіанту %s нема серед доступних." + +#: .\oldforms\__init__.py:405 +#, python-format +msgid "Ensure your text is less than %s character." +msgid_plural "Ensure your text is less than %s characters." +msgstr[0] "Переконайтеся, що ваш текст менше, ніж %s символ." +msgstr[1] "Переконайтеся, що ваш текст менше, ніж %s символів." + +#: .\oldforms\__init__.py:410 +msgid "Line breaks are not allowed here." +msgstr "Символи нового рядку тут не дозволені." + +#: .\oldforms\__init__.py:508 .\oldforms\__init__.py:582 +#: .\oldforms\__init__.py:621 +#, python-format +msgid "Select a valid choice; '%(data)s' is not in %(choices)s." +msgstr "Зробить коректний вибір; '%(data)s' немає у %(choices)s." + +#: .\oldforms\__init__.py:750 +msgid "Enter a whole number between -32,768 and 32,767." +msgstr "Введіть ціле число між -32,768 та 32,767." + +#: .\oldforms\__init__.py:760 +msgid "Enter a positive number." +msgstr "Введіть додатне число." + +#: .\oldforms\__init__.py:770 +msgid "Enter a whole number between 0 and 32,767." +msgstr "Введіть ціле число між 0 та 32,767." + +#: .\template\defaultfilters.py:743 +msgid "yes,no,maybe" +msgstr "так,ні,можливо" + +#: .\template\defaultfilters.py:774 +#, python-format +msgid "%(size)d byte" +msgid_plural "%(size)d bytes" +msgstr[0] "%(size)d байт" +msgstr[1] "%(size)d байтів" + +#: .\template\defaultfilters.py:776 +#, python-format +msgid "%s KB" +msgstr "%s КБ" + +#: .\template\defaultfilters.py:778 +#, python-format +msgid "%s MB" +msgstr "%s МБ" + +#: .\template\defaultfilters.py:779 +#, python-format +msgid "%s GB" +msgstr "%s ГБ" + +#: .\utils\dateformat.py:41 +msgid "p.m." +msgstr "після полудня" + +#: .\utils\dateformat.py:42 +msgid "a.m." +msgstr "до полудня" + +#: .\utils\dateformat.py:47 +msgid "PM" +msgstr "після полудня" + +#: .\utils\dateformat.py:48 +msgid "AM" +msgstr "до полудня" + +#: .\utils\dateformat.py:97 +msgid "midnight" +msgstr "північ" + +#: .\utils\dateformat.py:99 +msgid "noon" +msgstr "полудень" + +#: .\utils\dates.py:6 +msgid "Monday" +msgstr "Понеділок" + +#: .\utils\dates.py:6 +msgid "Tuesday" +msgstr "Вівторок" + +#: .\utils\dates.py:6 +msgid "Wednesday" +msgstr "Середа" + +#: .\utils\dates.py:6 +msgid "Thursday" +msgstr "Четвер" + +#: .\utils\dates.py:6 +msgid "Friday" +msgstr "П'ятниця" + +#: .\utils\dates.py:7 +msgid "Saturday" +msgstr "Субота" + +#: .\utils\dates.py:7 +msgid "Sunday" +msgstr "Неділя" + +#: .\utils\dates.py:10 +msgid "Mon" +msgstr "Пн" + +#: .\utils\dates.py:10 +msgid "Tue" +msgstr "Вт" + +#: .\utils\dates.py:10 +msgid "Wed" +msgstr "Сер" + +#: .\utils\dates.py:10 +msgid "Thu" +msgstr "Чт" + +#: .\utils\dates.py:10 +msgid "Fri" +msgstr "Пт" + +#: .\utils\dates.py:11 +msgid "Sat" +msgstr "Сб" + +#: .\utils\dates.py:11 +msgid "Sun" +msgstr "Нед" + +#: .\utils\dates.py:18 +msgid "January" +msgstr "Січень" + +#: .\utils\dates.py:18 +msgid "February" +msgstr "Лютий" + +#: .\utils\dates.py:18 .\utils\dates.py:31 +msgid "March" +msgstr "Березень" + +#: .\utils\dates.py:18 .\utils\dates.py:31 +msgid "April" +msgstr "Квітень" + +#: .\utils\dates.py:18 .\utils\dates.py:31 +msgid "May" +msgstr "Травень" + +#: .\utils\dates.py:18 .\utils\dates.py:31 +msgid "June" +msgstr "Червень" + +#: .\utils\dates.py:19 .\utils\dates.py:31 +msgid "July" +msgstr "Липень" + +#: .\utils\dates.py:19 +msgid "August" +msgstr "Серпень" + +#: .\utils\dates.py:19 +msgid "September" +msgstr "Вересень" + +#: .\utils\dates.py:19 +msgid "October" +msgstr "Жовтень" + +#: .\utils\dates.py:19 +msgid "November" +msgstr "Листопад" + +#: .\utils\dates.py:20 +msgid "December" +msgstr "Грудень" + +#: .\utils\dates.py:23 +msgid "jan" +msgstr "січ" + +#: .\utils\dates.py:23 +msgid "feb" +msgstr "лют" + +#: .\utils\dates.py:23 +msgid "mar" +msgstr "бер" + +#: .\utils\dates.py:23 +msgid "apr" +msgstr "кві" + +#: .\utils\dates.py:23 +msgid "may" +msgstr "тра" + +#: .\utils\dates.py:23 +msgid "jun" +msgstr "чер" + +#: .\utils\dates.py:24 +msgid "jul" +msgstr "лип" + +#: .\utils\dates.py:24 +msgid "aug" +msgstr "сер" + +#: .\utils\dates.py:24 +msgid "sep" +msgstr "вер" + +#: .\utils\dates.py:24 +msgid "oct" +msgstr "жов" + +#: .\utils\dates.py:24 +msgid "nov" +msgstr "лис" + +#: .\utils\dates.py:24 +msgid "dec" +msgstr "гру" + +#: .\utils\dates.py:31 +msgid "Jan." +msgstr "Січ." + +#: .\utils\dates.py:31 +msgid "Feb." +msgstr "Лют." + +#: .\utils\dates.py:32 +msgid "Aug." +msgstr "Сер." + +#: .\utils\dates.py:32 +msgid "Sept." +msgstr "Вер." + +#: .\utils\dates.py:32 +msgid "Oct." +msgstr "Жов." + +#: .\utils\dates.py:32 +msgid "Nov." +msgstr "Лис." + +#: .\utils\dates.py:32 +msgid "Dec." +msgstr "Груд." + +#: .\utils\text.py:128 +msgid "or" +msgstr "або" + +#: .\utils\timesince.py:21 +msgid "year" +msgid_plural "years" +msgstr[0] "рік" +msgstr[1] "рокі(в)" + +#: .\utils\timesince.py:22 +msgid "month" +msgid_plural "months" +msgstr[0] "місяць" +msgstr[1] "місяці(в)" + +#: .\utils\timesince.py:23 +msgid "week" +msgid_plural "weeks" +msgstr[0] "тиждень" +msgstr[1] "тижні(в)" + +#: .\utils\timesince.py:24 +msgid "day" +msgid_plural "days" +msgstr[0] "день" +msgstr[1] "дні(в)" + +#: .\utils\timesince.py:25 +msgid "hour" +msgid_plural "hours" +msgstr[0] "година" +msgstr[1] "годин(и)" + +#: .\utils\timesince.py:26 +msgid "minute" +msgid_plural "minutes" +msgstr[0] "хвилина" +msgstr[1] "хвилин(и)" + +#: .\utils\timesince.py:43 +msgid "minutes" +msgstr "хвилин(а)" + +#: .\utils\timesince.py:48 +#, python-format +msgid "%(number)d %(type)s" +msgstr "%(number)d %(type)s" + +#: .\utils\timesince.py:54 +#, python-format +msgid ", %(number)d %(type)s" +msgstr ", %(number)d %(type)s" + +#: .\utils\translation\trans_real.py:403 +msgid "DATE_FORMAT" +msgstr "d.m.Y" + +#: .\utils\translation\trans_real.py:405 +msgid "TIME_FORMAT" +msgstr "H:i" + +#: .\utils\translation\trans_real.py:421 +msgid "YEAR_MONTH_FORMAT" +msgstr "d.m.Y" + +#: .\utils\translation\trans_real.py:422 +msgid "MONTH_DAY_FORMAT" +msgstr "d.m.Y" + +#: .\views\generic\create_update.py:114 +#, python-format +msgid "The %(verbose_name)s was created successfully." +msgstr "Об'єкт %(verbose_name)s був успішно створений." + +#: .\views\generic\create_update.py:156 +#, python-format +msgid "The %(verbose_name)s was updated successfully." +msgstr "Об'єкт %(verbose_name)s був успішно змінений." + +#: .\views\generic\create_update.py:198 +#, python-format +msgid "The %(verbose_name)s was deleted." +msgstr "Об'єкт %(verbose_name)s був успішно видалений." + +#~ msgid "rating #1" +#~ msgstr "рейтинг #1" + +#~ msgid "rating #2" +#~ msgstr "рейтинг #2" + +#~ msgid "rating #3" +#~ msgstr "рейтинг #3" + +#~ msgid "rating #4" +#~ msgstr "рейтинг #4" + +#~ msgid "rating #5" +#~ msgstr "рейтинг #5" + +#~ msgid "rating #6" +#~ msgstr "рейтинг #6" + +#~ msgid "rating #7" +#~ msgstr "рейтинг #7" + +#~ msgid "rating #8" +#~ msgstr "рейтинг #8" + + +#~ msgid "comments" +#~ msgstr "коментарі" + +#~ msgid "person's name" +#~ msgstr "Ім'я людини" + +#~ msgid "ip address" +#~ msgstr "ip адреса" + +#~ msgid "approved by staff" +#~ msgstr "схвалено адміністрацією" + + +#~ msgid "free comments" +#~ msgstr "вільні коментарі" + +#~ msgid "score" +#~ msgstr "рахунок" + + +#~ msgid "karma score" +#~ msgstr "рахунок карми" + + +#~ msgid "user flag" +#~ msgstr "ознака користувача" + + +#~ msgid "user flags" +#~ msgstr "ознаки користувача" + +#~ msgid "deletion date" +#~ msgstr "дата видалення" + + +#~ msgid "moderator deletion" +#~ msgstr "видалено модератором" + + +#~ msgid "moderator deletions" +#~ msgstr "видалено модератором" + +#~ msgid "" +#~ "This comment was posted by a user who has posted fewer than %(count)s " +#~ "comment:\n" +#~ "\n" +#~ "%(text)s" +#~ msgid_plural "" +#~ "This comment was posted by a user who has posted fewer than %(count)s " +#~ "comments:\n" +#~ "\n" +#~ "%(text)s" +#~ msgstr[0] "" +#~ "Цей коментар доданий користувачем, який додав меньше ніж %(count)s " +#~ "коментаря" +#~ msgstr[1] "" +#~ "Цей коментар доданий користувачем, який додав меньше ніж %(count)s " +#~ "коментарів" + +#~ msgid "Only POSTs are allowed" +#~ msgstr "Тільки POST'и дозволені" + +#~ msgid "One or more of the required fields wasn't submitted" +#~ msgstr "Одне або декілька обов'язкових полів не було заповнено" + +#~ msgid "" +#~ "The comment form had an invalid 'target' parameter -- the object ID was " +#~ "invalid" +#~ msgstr "" +#~ "Форма для коментарів мала невірний параметр 'target' -- ID об'єкту був " +#~ "невірний" + +#~ msgid "The comment form didn't provide either 'preview' or 'post'" +#~ msgstr "" +#~ "Форма для коментарів не забезпечувала функції 'переглянути' або 'додати'" + + +#~ msgid "Forgotten your password?" +#~ msgstr "Забули пароль?" + +#~ msgid "Added %s." +#~ msgstr "Додано %s." + +#~ msgid "Deleted %s." +#~ msgstr "Видалено %s." + +#~ msgid "DATE_WITH_TIME_FULL" +#~ msgstr "j N Y H:i" + +#~ msgid "Django administration" +#~ msgstr "Django адміністрування" + +#~ msgid "Have you forgotten your password?" +#~ msgstr "Забули пароль?" + +#~ msgid "Your new password is: %(new_password)s" +#~ msgstr "Ваш новий пароль: %(new_password)s" + +#~ msgid "Feel free to change this password by going to this page:" +#~ msgstr "Ви можете змінити цей пароль, перейшовши до цієї сторінки:" + +#~ msgid "Comments" +#~ msgstr "Коментарі" + +#~ msgid "String (up to 50)" +#~ msgstr "Рядок (до 50 символів)" + +#~ msgid "label" +#~ msgstr "мітка" + +#~ msgid "package" +#~ msgstr "пакунок" + +#~ msgid "packages" +#~ msgstr "пакунки" diff --git a/tests/packagedcode/data/license_detection/reference-to-package/google_appengine_sdk/django-1.2/django/conf/locale/uk/LC_MESSAGES/djangojs.po b/tests/packagedcode/data/license_detection/reference-to-package/google_appengine_sdk/django-1.2/django/conf/locale/uk/LC_MESSAGES/djangojs.po new file mode 100644 index 00000000000..f956b627365 --- /dev/null +++ b/tests/packagedcode/data/license_detection/reference-to-package/google_appengine_sdk/django-1.2/django/conf/locale/uk/LC_MESSAGES/djangojs.po @@ -0,0 +1,118 @@ +# Django, ukrainian translation. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +msgid "" +msgstr "" +"Project-Id-Version: Django\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-11-16 04:00+0200\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: Mykola Zamkovoy \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: .\contrib\admin\media\js\SelectFilter2.js.py:33 +#, perl-format +msgid "Available %s" +msgstr "В наявності %s" + +#: .\contrib\admin\media\js\SelectFilter2.js.py:41 +msgid "Choose all" +msgstr "Обрати всі" + +#: .\contrib\admin\media\js\SelectFilter2.js.py:46 +msgid "Add" +msgstr "Додати" + +#: .\contrib\admin\media\js\SelectFilter2.js.py:48 +msgid "Remove" +msgstr "Видалити" + +#: .\contrib\admin\media\js\SelectFilter2.js.py:53 +#, perl-format +msgid "Chosen %s" +msgstr "Обрано %s" + +#: .\contrib\admin\media\js\SelectFilter2.js.py:54 +msgid "Select your choice(s) and click " +msgstr "Зробіть ваш вибір та клікніть " + +#: .\contrib\admin\media\js\SelectFilter2.js.py:59 +msgid "Clear all" +msgstr "Очистити все" + +#: .\contrib\admin\media\js\calendar.js.py:24 +#: .\contrib\admin\media\js\dateparse.js.py:32 +msgid "" +"January February March April May June July August September October November " +"December" +msgstr "" +"Січень Лютий Березень Квітень Травень Червень Липень Серпень Вересень Жовтень Листопад " +"Грудень" + +#: .\contrib\admin\media\js\calendar.js.py:25 +msgid "S M T W T F S" +msgstr "Нд Пн Вт Ср Чт Пт Сб" + +#: .\contrib\admin\media\js\dateparse.js.py:33 +msgid "Sunday Monday Tuesday Wednesday Thursday Friday Saturday" +msgstr "Неділя Понеділок Вівторок Середа Четвер П'ятниця Субота" + +#: .\contrib\admin\media\js\admin\CollapsedFieldsets.js.py:34 +#: .\contrib\admin\media\js\admin\CollapsedFieldsets.js.py:72 +msgid "Show" +msgstr "Показати" + +#: .\contrib\admin\media\js\admin\CollapsedFieldsets.js.py:63 +msgid "Hide" +msgstr "Сховати" + +#: .\contrib\admin\media\js\admin\DateTimeShortcuts.js.py:47 +#: .\contrib\admin\media\js\admin\DateTimeShortcuts.js.py:81 +msgid "Now" +msgstr "Зараз" + +#: .\contrib\admin\media\js\admin\DateTimeShortcuts.js.py:51 +msgid "Clock" +msgstr "Годинник" + +#: .\contrib\admin\media\js\admin\DateTimeShortcuts.js.py:78 +msgid "Choose a time" +msgstr "Оберіть час" + +#: .\contrib\admin\media\js\admin\DateTimeShortcuts.js.py:82 +msgid "Midnight" +msgstr "північ" + +#: .\contrib\admin\media\js\admin\DateTimeShortcuts.js.py:83 +msgid "6 a.m." +msgstr "6" + +#: .\contrib\admin\media\js\admin\DateTimeShortcuts.js.py:84 +msgid "Noon" +msgstr "полудень" + +#: .\contrib\admin\media\js\admin\DateTimeShortcuts.js.py:88 +#: .\contrib\admin\media\js\admin\DateTimeShortcuts.js.py:183 +msgid "Cancel" +msgstr "Відмінити" + +#: .\contrib\admin\media\js\admin\DateTimeShortcuts.js.py:128 +#: .\contrib\admin\media\js\admin\DateTimeShortcuts.js.py:177 +msgid "Today" +msgstr "Сьогодні" + +#: .\contrib\admin\media\js\admin\DateTimeShortcuts.js.py:132 +msgid "Calendar" +msgstr "Календар" + +#: .\contrib\admin\media\js\admin\DateTimeShortcuts.js.py:175 +msgid "Yesterday" +msgstr "Вчора" + +#: .\contrib\admin\media\js\admin\DateTimeShortcuts.js.py:179 +msgid "Tomorrow" +msgstr "Завтра" diff --git a/tests/packagedcode/data/license_detection/reference-to-package/google_appengine_sdk/django-1.2/django/conf/locale/uk/formats.py b/tests/packagedcode/data/license_detection/reference-to-package/google_appengine_sdk/django-1.2/django/conf/locale/uk/formats.py new file mode 100644 index 00000000000..8c01f3ddbde --- /dev/null +++ b/tests/packagedcode/data/license_detection/reference-to-package/google_appengine_sdk/django-1.2/django/conf/locale/uk/formats.py @@ -0,0 +1,18 @@ +# -*- encoding: utf-8 -*- +# This file is distributed under the same license as the Django package. +# + +DATE_FORMAT = 'j F Y р.' +TIME_FORMAT = 'H:i:s' +# DATETIME_FORMAT = +YEAR_MONTH_FORMAT = 'F Y' +MONTH_DAY_FORMAT = 'j F' +SHORT_DATE_FORMAT = 'j M Y' +# SHORT_DATETIME_FORMAT = +# FIRST_DAY_OF_WEEK = +# DATE_INPUT_FORMATS = +# TIME_INPUT_FORMATS = +# DATETIME_INPUT_FORMATS = +DECIMAL_SEPARATOR = ',' +THOUSAND_SEPARATOR = u' ' +# NUMBER_GROUPING = diff --git a/tests/packagedcode/data/license_detection/reference-to-package/google_appengine_sdk/django-1.2/setup.cfg b/tests/packagedcode/data/license_detection/reference-to-package/google_appengine_sdk/django-1.2/setup.cfg new file mode 100644 index 00000000000..37cc9a592f2 --- /dev/null +++ b/tests/packagedcode/data/license_detection/reference-to-package/google_appengine_sdk/django-1.2/setup.cfg @@ -0,0 +1,4 @@ +[bdist_rpm] +doc_files = docs extras AUTHORS INSTALL LICENSE README +install-script = scripts/rpm-install.sh + diff --git a/tests/packagedcode/data/license_detection/reference-to-package/google_appengine_sdk/django-1.2/setup.py b/tests/packagedcode/data/license_detection/reference-to-package/google_appengine_sdk/django-1.2/setup.py new file mode 100644 index 00000000000..430fdb9b48d --- /dev/null +++ b/tests/packagedcode/data/license_detection/reference-to-package/google_appengine_sdk/django-1.2/setup.py @@ -0,0 +1,98 @@ +from distutils.core import setup +from distutils.command.install_data import install_data +from distutils.command.install import INSTALL_SCHEMES +import os +import sys + +class osx_install_data(install_data): + # On MacOS, the platform-specific lib dir is /System/Library/Framework/Python/.../ + # which is wrong. Python 2.5 supplied with MacOS 10.5 has an Apple-specific fix + # for this in distutils.command.install_data#306. It fixes install_lib but not + # install_data, which is why we roll our own install_data class. + + def finalize_options(self): + # By the time finalize_options is called, install.install_lib is set to the + # fixed directory, so we set the installdir to install_lib. The + # install_data class uses ('install_data', 'install_dir') instead. + self.set_undefined_options('install', ('install_lib', 'install_dir')) + install_data.finalize_options(self) + +if sys.platform == "darwin": + cmdclasses = {'install_data': osx_install_data} +else: + cmdclasses = {'install_data': install_data} + +def fullsplit(path, result=None): + """ + Split a pathname into components (the opposite of os.path.join) in a + platform-neutral way. + """ + if result is None: + result = [] + head, tail = os.path.split(path) + if head == '': + return [tail] + result + if head == path: + return result + return fullsplit(head, [tail] + result) + +# Tell distutils to put the data_files in platform-specific installation +# locations. See here for an explanation: +# http://groups.google.com/group/comp.lang.python/browse_thread/thread/35ec7b2fed36eaec/2105ee4d9e8042cb +for scheme in INSTALL_SCHEMES.values(): + scheme['data'] = scheme['purelib'] + +# Compile the list of packages available, because distutils doesn't have +# an easy way to do this. +packages, data_files = [], [] +root_dir = os.path.dirname(__file__) +if root_dir != '': + os.chdir(root_dir) +django_dir = 'django' + +for dirpath, dirnames, filenames in os.walk(django_dir): + # Ignore dirnames that start with '.' + for i, dirname in enumerate(dirnames): + if dirname.startswith('.'): del dirnames[i] + if '__init__.py' in filenames: + packages.append('.'.join(fullsplit(dirpath))) + elif filenames: + data_files.append([dirpath, [os.path.join(dirpath, f) for f in filenames]]) + +# Small hack for working with bdist_wininst. +# See http://mail.python.org/pipermail/distutils-sig/2004-August/004134.html +if len(sys.argv) > 1 and sys.argv[1] == 'bdist_wininst': + for file_info in data_files: + file_info[0] = '\\PURELIB\\%s' % file_info[0] + +# Dynamically calculate the version based on django.VERSION. +version = __import__('django').get_version() +if u'SVN' in version: + version = ' '.join(version.split(' ')[:-1]) + +setup( + name = "Django", + version = version.replace(' ', '-'), + url = 'http://www.djangoproject.com/', + author = 'Django Software Foundation', + author_email = 'foundation@djangoproject.com', + description = 'A high-level Python Web framework that encourages rapid development and clean, pragmatic design.', + download_url = 'http://media.djangoproject.com/releases/1.2/Django-1.2.5.tar.gz', + packages = packages, + cmdclass = cmdclasses, + data_files = data_files, + scripts = ['django/bin/django-admin.py'], + classifiers = ['Development Status :: 5 - Production/Stable', + 'Environment :: Web Environment', + 'Framework :: Django', + 'Intended Audience :: Developers', + 'License :: OSI Approved :: BSD License', + 'Operating System :: OS Independent', + 'Programming Language :: Python', + 'Topic :: Internet :: WWW/HTTP', + 'Topic :: Internet :: WWW/HTTP :: Dynamic Content', + 'Topic :: Internet :: WWW/HTTP :: WSGI', + 'Topic :: Software Development :: Libraries :: Application Frameworks', + 'Topic :: Software Development :: Libraries :: Python Modules', + ], +) diff --git a/tests/packagedcode/data/license_detection/reference-to-package/google_appengine_sdk/django-1.3/AUTHORS b/tests/packagedcode/data/license_detection/reference-to-package/google_appengine_sdk/django-1.3/AUTHORS new file mode 100644 index 00000000000..8e7842e0251 --- /dev/null +++ b/tests/packagedcode/data/license_detection/reference-to-package/google_appengine_sdk/django-1.3/AUTHORS @@ -0,0 +1,544 @@ +Django was originally created in late 2003 at World Online, the Web division +of the Lawrence Journal-World newspaper in Lawrence, Kansas. + +The PRIMARY AUTHORS are (and/or have been): + + * Adrian Holovaty + * Simon Willison + * Jacob Kaplan-Moss + * Wilson Miner + * Malcolm Tredinnick + * Georg "Hugo" Bauer + * Luke Plant + * Russell Keith-Magee + * Robert Wittams + * Gary Wilson + * Brian Rosner + * Justin Bronn + * Karen Tracey + * Jannis Leidel + * James Tauber + * Alex Gaynor + * Andrew Godwin + * Carl Meyer + * Ramiro Morales + * Chris Beaven + * Honza Král + * Idan Gazit + +More information on the main contributors to Django can be found in +docs/internals/committers.txt. + +And here is an inevitably incomplete list of MUCH-APPRECIATED CONTRIBUTORS -- +people who have submitted patches, reported bugs, added translations, helped +answer newbie questions, and generally made Django that much better: + + Gisle Aas + Chris Adams + ajs + alang@bright-green.com + A S Alam + Andi Albrecht + Marty Alchin + Ahmad Alhashemi + Ahmad Al-Ibrahim + Antoni Aloy + Daniel Alves Barbosa de Oliveira Vaz + AgarFu + Dagur Páll Ammendrup + Collin Anderson + Jeff Anderson + Marian Andre + Andreas + Victor Andrée + andy@jadedplanet.net + Fabrice Aneche + ant9000@netwise.it + Florian Apolloner + arien + David Ascher + atlithorn + Jökull Sólberg Auðunsson + Arthur + av0000@mail.ru + David Avsajanishvili + Mike Axiak + Niran Babalola + Vitaly Babiy + Morten Bagai + Jeff Balogh + Mikaël Barbero + Randy Barlow + Scott Barr + Jiri Barton + Ned Batchelder + batiste@dosimple.ch + Batman + Brian Beck + Shannon -jj Behrens + Esdras Beleza + Chris Bennett + James Bennett + Shai Berger + Julian Bez + Arvis Bickovskis + Natalia Bidart + Paul Bissex + Simon Blanchard + David Blewett + Matt Boersma + boobsd@gmail.com + Matías Bordese + Sean Brant + Andrew Brehaut + David Brenneman + Anthony Briggs + brut.alll@gmail.com + bthomas + btoll@bestweb.net + Jonathan Buchanan + Keith Bussell + C8E + Chris Cahoon + Juan Manuel Caicedo + Trevor Caira + Brett Cannon + Ricardo Javier Cárdenes Medina + Jeremy Carbaugh + Graham Carlyle + Antonio Cavedoni + cedric@terramater.net + Chris Chamberlin + Amit Chakradeo + ChaosKCW + Kowito Charoenratchatabhan + Sengtha Chay + ivan.chelubeev@gmail.com + Bryan Chow + Antonis Christofides + Michal Chruszcz + Can Burak Çilingir + Ian Clelland + Travis Cline + Russell Cloran + colin@owlfish.com + crankycoder@gmail.com + Paul Collier + Robert Coup + Pete Crosier + Matt Croydon + Leah Culver + flavio.curella@gmail.com + Jure Cuhalev + John D'Agostino + dackze+django@gmail.com + Jim Dalton + Mihai Damian + David Danier + Dirk Datzert + Jonathan Daugherty (cygnus) + dave@thebarproject.com + david@kazserve.org + Jason Davies (Esaj) + Richard Davies + Alex Dedul + Matt Dennenbaum + deric@monowerks.com + Max Derkachev + Rajesh Dhawan + Sander Dijkhuis + Jordan Dimov + Nebojša Dorđević + dne@mayonnaise.net + dready + Maximillian Dornseif + Jeremy Dunck + Andrew Durdin + dusk@woofle.net + Andy Dustman + Alexander Dutton + J. Clifford Dyer + Clint Ecker + Nick Efford + eibaan@gmail.com + Julia Elman + enlight + Enrico + A. Murat Eren + Ludvig Ericson + eriks@win.tue.nl + Tomáš Ehrlich + Dirk Eschler + Marc Fargas + Szilveszter Farkas + Grigory Fateyev + favo@exoweb.net + fdr + Dmitri Fedortchenko + Jonathan Feignberg + Liang Feng + Bill Fenner + Stefane Fermgier + J. Pablo Fernandez + Maciej Fijalkowski + Ben Firshman + Matthew Flanagan + Eric Floehr + Eric Florenzano + Vincent Foley + Alcides Fonseca + Rudolph Froger + Jorge Gajon + gandalf@owca.info + Marc Garcia + Andy Gayton + geber@datacollect.com + Baishampayan Ghose + Joshua Ginsberg + Dimitris Glezos + glin@seznam.cz + martin.glueck@gmail.com + Artyom Gnilov + Ben Godfrey + GomoX + Guilherme Mesquita Gondim + Mario Gonzalez + David Gouldin + pradeep.gowda@gmail.com + Collin Grady + Gabriel Grant + Simon Greenhill + Owen Griffiths + Espen Grindhaug + Janos Guljas + Thomas Güttler + Horst Gutmann + Scot Hacker + dAniel hAhler + hambaloney + Brian Harring + Brant Harris + Ronny Haryanto + Hawkeye + Kent Hauser + Joe Heck + Joel Heenan + Mikko Hellsing + Sebastian Hillig + hipertracker@gmail.com + Deryck Hodge + Brett Hoerner + Eric Holscher + Ian Holsman + Kieran Holland + Sung-Jin Hong + Leo "hylje" Honkanen + Matt Hoskins + Tareque Hossain + Richard House + Robert Rock Howard + John Huddleston + Rob Hudson + Jason Huggins + Gabriel Hurley + Hyun Mi Ae + Ibon + Tom Insam + Baurzhan Ismagulov + Stephan Jaekel + james_027@yahoo.com + jcrasta@gmail.com + jdetaeye + jhenry + john@calixto.net + Zak Johnson + Nis Jørgensen + Michael Josephson + jpellerin@gmail.com + junzhang.jn@gmail.com + Antti Kaihola + Bahadır Kandemir + Karderio + Nagy Károly + George Karpenkov + Erik Karulf + Ben Dean Kawamura + Ian G. Kelly + Niall Kelly + Ryan Kelly + Thomas Kerpe + Wiley Kestner + Ossama M. Khayat + Ben Khoo + Garth Kidd + kilian + Sune Kirkeby + Bastian Kleineidam + Cameron Knight (ckknight) + Nena Kojadin + Igor Kolar + Tomáš Kopeček + Gasper Koren + Mikhail Korobov + Martin Kosír + Arthur Koziel + Meir Kriheli + Bruce Kroeze + krzysiek.pawlik@silvermedia.pl + Joseph Kocherhans + konrad@gwu.edu + knox + David Krauth + Kevin Kubasik + kurtiss@meetro.com + Denis Kuzmichyov + Panos Laganakos + Nick Lane + Stuart Langridge + Paul Lanier + David Larlet + Nicolas Lara + Nicola Larosa + Finn Gruwier Larsen + Lau Bech Lauritzen + Rune Rønde Laursen + Mark Lavin + Eugene Lazutkin + lcordier@point45.com + Jeong-Min Lee + Tai Lee + Christopher Lenz + lerouxb@gmail.com + Piotr Lewandowski + Charlie Leifer + Justin Lilly + Waylan Limberg + limodou + Philip Lindborg + Simon Litchfield + Daniel Lindsley + Trey Long + Laurent Luce + Martin Mahner + Matt McClanahan + Stanislaus Madueke + Yann Malet + Frantisek Malina + Mike Malone + Martin Maney + masonsimon+django@gmail.com + Manuzhai + Petr Marhoun + Petar Marić + Nuno Mariz + mark@junklight.com + Orestis Markou + Takashi Matsuo + Yasushi Masuda + mattycakes@gmail.com + Glenn Maynard + Jason McBrayer + Kevin McConnell + mccutchen@gmail.com + michael.mcewan@gmail.com + Paul McLanahan + Tobias McNulty + Zain Memon + Christian Metts + michal@plovarna.cz + Slawek Mikula + mitakummaa@gmail.com + mmarshall + Andreas Mock + Reza Mohammadi + Aljosa Mohorovic + Eric Moritz + msaelices + Gregor Müllegger + Robin Munn + James Murty + msundstr + Robert Myers + Aaron T. Myers + Alexander Myodov + Doug Napoleone + Gopal Narayanan + Fraser Nevett + Sam Newman + Filip Noetzel + Afonso Fernández Nogueira + Neal Norwitz + Todd O'Bryan + Selwin Ong + Christian Oudard + oggie rob + oggy + Jay Parlar + Claude Paroz + Carlos Eduardo de Paula + pavithran s + Barry Pederson + Andreas Pelme + permonik@mesias.brnonet.cz + peter@mymart.com + pgross@thoughtworks.com + phaedo + Julien Phalip + phil@produxion.net + phil.h.smith@gmail.com + Gustavo Picon + Michael Placentra II + plisk + Daniel Poelzleithner + polpak@yahoo.com + Ross Poulton + Mihai Preda + Matthias Pronk + Jyrki Pulliainen + Thejaswi Puthraya + Johann Queuniet + Jan Rademaker + Michael Radziej + Laurent Rahuel + Stéphane Raimbault + Luciano Ramalho + Amit Ramon + Philippe Raoult + Massimiliano Ravelli + Brian Ray + Łukasz Rekucki + remco@diji.biz + Marc Remolt + Bruno Renié + David Reynolds + rhettg@gmail.com + ricardojbarrios@gmail.com + Mike Richardson + Matt Riggott + Alex Robbins + Henrique Romano + Armin Ronacher + Daniel Roseman + Rozza + Oliver Rutherfurd + ryankanno + Gonzalo Saavedra + Manuel Saelices + Ivan Sagalaev (Maniac) + Vinay Sajip + Kadesarin Sanjek + Massimo Scamarcia + Paulo Scardine + David Schein + Bernd Schlapsi + schwank@gmail.com + scott@staplefish.com + Ilya Semenov + serbaut@gmail.com + John Shaffer + Pete Shinners + Leo Shklovskii + jason.sidabras@gmail.com + Brenton Simpson + Jozko Skrablin + Ben Slavin + sloonz + Paul Smith + Warren Smith + smurf@smurf.noris.de + Vsevolod Solovyov + sopel + Leo Soto + Wiliam Alves de Souza + Don Spaulding + Bjørn Stabell + Georgi Stanojevski + starrynight + Vasiliy Stavenko + Thomas Steinacher + Johan C. Stöver + Nowell Strite + Thomas Stromberg + Pascal Varet + SuperJared + Radek Švarz + Swaroop C H + Aaron Swartz + Ville Säävuori + Mart Sõmermaa + Christian Tanzer + Tyler Tarabula + Tyson Tate + Aryeh Leib Taurog + Frank Tegtmeyer + Marcel Telka + Terry Huang + Travis Terry + thebjorn + Zach Thompson + Michael Thornhill + Deepak Thukral + tibimicu@gmx.net + tobias@neuyork.de + Tom Tobin + Joe Topjian + torne-django@wolfpuppy.org.uk + Jeff Triplett + tstromberg@google.com + Makoto Tsuyuki + tt@gurgle.no + David Tulig + Amit Upadhyay + Adam Vandenberg + Geert Vanderkelen + Vasil Vangelovski + I.S. van Oostveen + viestards.lists@gmail.com + George Vilches + Vlado + Zachary Voase + Marijn Vriens + Milton Waddams + Chris Wagner + Rick Wagner + wam-djangobug@wamber.net + Wang Chun + Filip Wasilewski + Dan Watson + Joel Watts + Lakin Wecker + Chris Wesseling + Benjamin Wohlwend + James Wheare + Mike Wiacek + Frank Wierzbicki + charly.wilhelm@gmail.com + Derek Willis + Rachel Willmer + Jakub Wilk + Jakub Wiśniowski + Maciej Wiśniowski + wojtek + Jason Yan + Lars Yencken + ye7cakf02@sneakemail.com + ymasuda@ethercube.com + Jesse Young + Mykola Zamkovoi + zegor + Gasper Zejn + Jarek Zgoda + Cheng Zhang + +A big THANK YOU goes to: + + Rob Curley and Ralph Gage for letting us open-source Django. + + Frank Wiles for making excellent arguments for open-sourcing, and for + his sage sysadmin advice. + + Ian Bicking for convincing Adrian to ditch code generation. + + Mark Pilgrim for diveintopython.org. + + Guido van Rossum for creating Python. diff --git a/tests/packagedcode/data/license_detection/reference-to-package/google_appengine_sdk/django-1.3/INSTALL b/tests/packagedcode/data/license_detection/reference-to-package/google_appengine_sdk/django-1.3/INSTALL new file mode 100644 index 00000000000..644c524bbbf --- /dev/null +++ b/tests/packagedcode/data/license_detection/reference-to-package/google_appengine_sdk/django-1.3/INSTALL @@ -0,0 +1,16 @@ +Thanks for downloading Django. + +To install it, make sure you have Python 2.4 or greater installed. Then run +this command from the command prompt: + + python setup.py install + +AS AN ALTERNATIVE, you can just copy the entire "django" directory to Python's +site-packages directory, which is located wherever your Python installation +lives. Some places you might check are: + + /usr/lib/python2.5/site-packages (Unix, Python 2.5) + /usr/lib/python2.4/site-packages (Unix, Python 2.4) + C:\\PYTHON\site-packages (Windows) + +For more detailed instructions, see docs/intro/install.txt. diff --git a/tests/packagedcode/data/license_detection/reference-to-package/google_appengine_sdk/django-1.3/LICENSE b/tests/packagedcode/data/license_detection/reference-to-package/google_appengine_sdk/django-1.3/LICENSE new file mode 100644 index 00000000000..d0c3f2838df --- /dev/null +++ b/tests/packagedcode/data/license_detection/reference-to-package/google_appengine_sdk/django-1.3/LICENSE @@ -0,0 +1,27 @@ +Copyright (c) Django Software Foundation and individual contributors. +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + 3. Neither the name of Django nor the names of its contributors may be used + to endorse or promote products derived from this software without + specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/tests/packagedcode/data/license_detection/reference-to-package/google_appengine_sdk/django-1.3/MANIFEST.in b/tests/packagedcode/data/license_detection/reference-to-package/google_appengine_sdk/django-1.3/MANIFEST.in new file mode 100644 index 00000000000..497b834f26c --- /dev/null +++ b/tests/packagedcode/data/license_detection/reference-to-package/google_appengine_sdk/django-1.3/MANIFEST.in @@ -0,0 +1,34 @@ +include README +include AUTHORS +include INSTALL +include LICENSE +include MANIFEST.in +include django/contrib/gis/gdal/LICENSE +include django/contrib/gis/geos/LICENSE +include django/dispatch/license.txt +include django/utils/simplejson/LICENSE.txt +recursive-include docs * +recursive-include scripts * +recursive-include extras * +recursive-include tests * +recursive-include django/conf/locale * +recursive-include django/contrib/*/locale * +recursive-include django/contrib/admin/templates * +recursive-include django/contrib/admin/media * +recursive-include django/contrib/admindocs/templates * +recursive-include django/contrib/auth/fixtures * +recursive-include django/contrib/auth/tests/templates * +recursive-include django/contrib/comments/templates * +recursive-include django/contrib/databrowse/templates * +recursive-include django/contrib/formtools/templates * +recursive-include django/contrib/formtools/tests/templates * +recursive-include django/contrib/flatpages/fixtures * +recursive-include django/contrib/flatpages/tests/templates * +recursive-include django/contrib/gis/templates * +recursive-include django/contrib/gis/tests/data * +recursive-include django/contrib/gis/tests/distapp/fixtures * +recursive-include django/contrib/gis/tests/geoapp/fixtures * +recursive-include django/contrib/gis/tests/geogapp/fixtures * +recursive-include django/contrib/gis/tests/relatedapp/fixtures * +recursive-include django/contrib/sitemaps/templates * +recursive-include django/contrib/sitemaps/tests/templates * diff --git a/tests/packagedcode/data/license_detection/reference-to-package/google_appengine_sdk/django-1.3/METADATA b/tests/packagedcode/data/license_detection/reference-to-package/google_appengine_sdk/django-1.3/METADATA new file mode 100644 index 00000000000..68c225e6110 --- /dev/null +++ b/tests/packagedcode/data/license_detection/reference-to-package/google_appengine_sdk/django-1.3/METADATA @@ -0,0 +1,24 @@ +# Format: google3/devtools/metadata/metadata.proto (go/google3metadata) + +name: "django" +description: + "Django is a python-based web framework. As of 2011-09-12 this was listed " + "as the latest official version." + +third_party { + url { + type: ARCHIVE + value: "http://www.djangoproject.com/download/1.3.1/tarball/" + } + version: "1.3.1" + last_upgrade_date: { + year: 2011 + month: 9 + day: 13 + } + + # NOTE: The "local_modifications" field is entirely optional and may be + # removed if it's not useful for the package. + # See go/thirdparty-metadata-local-modifications + local_modifications: "http://google3/third_party/apphosting/python/django/v1_3_1_vendor/README.google?cl=23904997" +} diff --git a/tests/packagedcode/data/license_detection/reference-to-package/google_appengine_sdk/django-1.3/PKG-INFO b/tests/packagedcode/data/license_detection/reference-to-package/google_appengine_sdk/django-1.3/PKG-INFO new file mode 100644 index 00000000000..b7609cd0eba --- /dev/null +++ b/tests/packagedcode/data/license_detection/reference-to-package/google_appengine_sdk/django-1.3/PKG-INFO @@ -0,0 +1,27 @@ +Metadata-Version: 1.0 +Name: Django +Version: 1.3.1 +Summary: A high-level Python Web framework that encourages rapid development and clean, pragmatic design. +Home-page: http://www.djangoproject.com/ +Author: Django Software Foundation +Author-email: foundation@djangoproject.com +License: UNKNOWN +Download-URL: http://media.djangoproject.com/releases/1.3/Django-1.3.1.tar.gz +Description: UNKNOWN +Platform: UNKNOWN +Classifier: Development Status :: 5 - Production/Stable +Classifier: Environment :: Web Environment +Classifier: Framework :: Django +Classifier: Intended Audience :: Developers +Classifier: License :: OSI Approved :: BSD License +Classifier: Operating System :: OS Independent +Classifier: Programming Language :: Python +Classifier: Programming Language :: Python :: 2.4 +Classifier: Programming Language :: Python :: 2.5 +Classifier: Programming Language :: Python :: 2.6 +Classifier: Programming Language :: Python :: 2.7 +Classifier: Topic :: Internet :: WWW/HTTP +Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content +Classifier: Topic :: Internet :: WWW/HTTP :: WSGI +Classifier: Topic :: Software Development :: Libraries :: Application Frameworks +Classifier: Topic :: Software Development :: Libraries :: Python Modules diff --git a/tests/packagedcode/data/license_detection/reference-to-package/google_appengine_sdk/django-1.3/README b/tests/packagedcode/data/license_detection/reference-to-package/google_appengine_sdk/django-1.3/README new file mode 100644 index 00000000000..c7d225c1e2f --- /dev/null +++ b/tests/packagedcode/data/license_detection/reference-to-package/google_appengine_sdk/django-1.3/README @@ -0,0 +1,46 @@ +Django is a high-level Python Web framework that encourages rapid development +and clean, pragmatic design. + +All documentation is in the "docs" directory and online at +http://docs.djangoproject.com/en/dev/. If you're just getting started, here's +how we recommend you read the docs: + + * First, read docs/intro/install.txt for instructions on installing Django. + + * Next, work through the tutorials in order (docs/intro/tutorial01.txt, + docs/intro/tutorial02.txt, etc.). + + * If you want to set up an actual deployment server, read + docs/howto/deployment/index.txt for instructions. + + * You'll probably want to read through the topical guides (in docs/topics) + next; from there you can jump to the HOWTOs (in docs/howto) for specific + problems, and check out the reference (docs/ref) for gory details. + + * See docs/README for instructions on building an HTML version of the docs. + +Docs are updated rigorously. If you find any problems in the docs, or think they +should be clarified in any way, please take 30 seconds to fill out a ticket +here: + +http://code.djangoproject.com/newticket + +To get more help: + + * Join the #django channel on irc.freenode.net. Lots of helpful people + hang out there. Read the archives at http://botland.oebfare.com/logger/django/. + + * Join the django-users mailing list, or read the archives, at + http://groups.google.com/group/django-users. + +To contribute to Django: + + * Check out http://www.djangoproject.com/community/ for information + about getting involved. + +To run Django's test suite: + + * Follow the instructions in the "Unit tests" section of + docs/internals/contributing.txt, published online at + https://docs.djangoproject.com/en/dev/internals/contributing/writing-code/unit-tests/#running-the-unit-tests + diff --git a/tests/packagedcode/data/license_detection/reference-to-package/google_appengine_sdk/django-1.3/django/contrib/messages/locale/en/LC_MESSAGES/django.po b/tests/packagedcode/data/license_detection/reference-to-package/google_appengine_sdk/django-1.3/django/contrib/messages/locale/en/LC_MESSAGES/django.po new file mode 100644 index 00000000000..2672b7d9411 --- /dev/null +++ b/tests/packagedcode/data/license_detection/reference-to-package/google_appengine_sdk/django-1.3/django/contrib/messages/locale/en/LC_MESSAGES/django.po @@ -0,0 +1,17 @@ +# This file is distributed under the same license as the Django package. +# +msgid "" +msgstr "" +"Project-Id-Version: Django\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2011-03-15 13:20-0400\n" +"PO-Revision-Date: 2010-05-13 15:35+0200\n" +"Last-Translator: Django team\n" +"Language-Team: English \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: tests/base.py:117 +msgid "lazy message" +msgstr "" diff --git a/tests/packagedcode/data/license_detection/reference-to-package/google_appengine_sdk/django-1.3/django/contrib/messages/locale/uk/LC_MESSAGES/django.po b/tests/packagedcode/data/license_detection/reference-to-package/google_appengine_sdk/django-1.3/django/contrib/messages/locale/uk/LC_MESSAGES/django.po new file mode 100644 index 00000000000..a5e73a5bb6f --- /dev/null +++ b/tests/packagedcode/data/license_detection/reference-to-package/google_appengine_sdk/django-1.3/django/contrib/messages/locale/uk/LC_MESSAGES/django.po @@ -0,0 +1,20 @@ +# This file is distributed under the same license as the Django package. +# +msgid "" +msgstr "" +"Project-Id-Version: Django\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2011-03-15 13:20-0400\n" +"PO-Revision-Date: 2011-03-04 18:42+0000\n" +"Last-Translator: Jannis \n" +"Language-Team: Ukrainian <>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: uk\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%" +"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n" + +#: tests/base.py:117 +msgid "lazy message" +msgstr "" diff --git a/tests/packagedcode/data/license_detection/reference-to-package/google_appengine_sdk/django-1.3/setup.cfg b/tests/packagedcode/data/license_detection/reference-to-package/google_appengine_sdk/django-1.3/setup.cfg new file mode 100644 index 00000000000..37cc9a592f2 --- /dev/null +++ b/tests/packagedcode/data/license_detection/reference-to-package/google_appengine_sdk/django-1.3/setup.cfg @@ -0,0 +1,4 @@ +[bdist_rpm] +doc_files = docs extras AUTHORS INSTALL LICENSE README +install-script = scripts/rpm-install.sh + diff --git a/tests/packagedcode/data/license_detection/reference-to-package/google_appengine_sdk/django-1.3/setup.py b/tests/packagedcode/data/license_detection/reference-to-package/google_appengine_sdk/django-1.3/setup.py new file mode 100644 index 00000000000..1d8732fa242 --- /dev/null +++ b/tests/packagedcode/data/license_detection/reference-to-package/google_appengine_sdk/django-1.3/setup.py @@ -0,0 +1,102 @@ +from distutils.core import setup +from distutils.command.install_data import install_data +from distutils.command.install import INSTALL_SCHEMES +import os +import sys + +class osx_install_data(install_data): + # On MacOS, the platform-specific lib dir is /System/Library/Framework/Python/.../ + # which is wrong. Python 2.5 supplied with MacOS 10.5 has an Apple-specific fix + # for this in distutils.command.install_data#306. It fixes install_lib but not + # install_data, which is why we roll our own install_data class. + + def finalize_options(self): + # By the time finalize_options is called, install.install_lib is set to the + # fixed directory, so we set the installdir to install_lib. The + # install_data class uses ('install_data', 'install_dir') instead. + self.set_undefined_options('install', ('install_lib', 'install_dir')) + install_data.finalize_options(self) + +if sys.platform == "darwin": + cmdclasses = {'install_data': osx_install_data} +else: + cmdclasses = {'install_data': install_data} + +def fullsplit(path, result=None): + """ + Split a pathname into components (the opposite of os.path.join) in a + platform-neutral way. + """ + if result is None: + result = [] + head, tail = os.path.split(path) + if head == '': + return [tail] + result + if head == path: + return result + return fullsplit(head, [tail] + result) + +# Tell distutils to put the data_files in platform-specific installation +# locations. See here for an explanation: +# http://groups.google.com/group/comp.lang.python/browse_thread/thread/35ec7b2fed36eaec/2105ee4d9e8042cb +for scheme in INSTALL_SCHEMES.values(): + scheme['data'] = scheme['purelib'] + +# Compile the list of packages available, because distutils doesn't have +# an easy way to do this. +packages, data_files = [], [] +root_dir = os.path.dirname(__file__) +if root_dir != '': + os.chdir(root_dir) +django_dir = 'django' + +for dirpath, dirnames, filenames in os.walk(django_dir): + # Ignore dirnames that start with '.' + for i, dirname in enumerate(dirnames): + if dirname.startswith('.'): del dirnames[i] + if '__init__.py' in filenames: + packages.append('.'.join(fullsplit(dirpath))) + elif filenames: + data_files.append([dirpath, [os.path.join(dirpath, f) for f in filenames]]) + +# Small hack for working with bdist_wininst. +# See http://mail.python.org/pipermail/distutils-sig/2004-August/004134.html +if len(sys.argv) > 1 and sys.argv[1] == 'bdist_wininst': + for file_info in data_files: + file_info[0] = '\\PURELIB\\%s' % file_info[0] + +# Dynamically calculate the version based on django.VERSION. +version = __import__('django').get_version() +if u'SVN' in version: + version = ' '.join(version.split(' ')[:-1]) + +setup( + name = "Django", + version = version.replace(' ', '-'), + url = 'http://www.djangoproject.com/', + author = 'Django Software Foundation', + author_email = 'foundation@djangoproject.com', + description = 'A high-level Python Web framework that encourages rapid development and clean, pragmatic design.', + download_url = 'http://media.djangoproject.com/releases/1.3/Django-1.3.1.tar.gz', + packages = packages, + cmdclass = cmdclasses, + data_files = data_files, + scripts = ['django/bin/django-admin.py'], + classifiers = ['Development Status :: 5 - Production/Stable', + 'Environment :: Web Environment', + 'Framework :: Django', + 'Intended Audience :: Developers', + 'License :: OSI Approved :: BSD License', + 'Operating System :: OS Independent', + 'Programming Language :: Python', + 'Programming Language :: Python :: 2.4', + 'Programming Language :: Python :: 2.5', + 'Programming Language :: Python :: 2.6', + 'Programming Language :: Python :: 2.7', + 'Topic :: Internet :: WWW/HTTP', + 'Topic :: Internet :: WWW/HTTP :: Dynamic Content', + 'Topic :: Internet :: WWW/HTTP :: WSGI', + 'Topic :: Software Development :: Libraries :: Application Frameworks', + 'Topic :: Software Development :: Libraries :: Python Modules', + ], +) diff --git a/tests/packagedcode/test_license_detection.py b/tests/packagedcode/test_license_detection.py index 9066b66ec02..6ae2cd08d1b 100644 --- a/tests/packagedcode/test_license_detection.py +++ b/tests/packagedcode/test_license_detection.py @@ -149,3 +149,37 @@ def test_license_reference_detection_in_manifest_siblings_without_license(): run_scan_click(args) test_loc = test_env.get_test_loc('license_detection/license-beside-manifest/google-built-collection_without_license.expected.json') check_json_scan(test_loc, result_file, regen=REGEN_TEST_FIXTURES) + +def test_license_reference_to_unknown_package_django(): + test_dir = test_env.get_test_loc('license_detection/reference-to-package/google_appengine_sdk/') + result_file = test_env.get_temp_file('json') + args = [ + '--license', + '--license-text', + '--license-text-diagnostics', + '--package', + '--strip-root', + '--verbose', + '--json', result_file, + test_dir, + ] + run_scan_click(args) + test_loc = test_env.get_test_loc('license_detection/reference-to-package/google_appengine_sdk.expected.json') + check_json_scan(test_loc, result_file, regen=REGEN_TEST_FIXTURES) + +def test_license_reference_to_unknown_package_django_base(): + test_dir = test_env.get_test_loc('license_detection/reference-to-package/base-example/') + result_file = test_env.get_temp_file('json') + args = [ + '--license', + '--license-text', + '--license-text-diagnostics', + '--package', + '--strip-root', + '--verbose', + '--json', result_file, + test_dir, + ] + run_scan_click(args) + test_loc = test_env.get_test_loc('license_detection/reference-to-package/base.expected.json', must_exist=False) + check_json_scan(test_loc, result_file, regen=REGEN_TEST_FIXTURES)