Browse Source

add tests

euromark 11 years ago
parent
commit
5bad59eb43

+ 0 - 0
src/Locale/Please send me your translations and I will add them here!


+ 6 - 0
src/Locale/README.txt

@@ -0,0 +1,6 @@
+The .pot (template) file contains the translated strings.
+Copy them to your existing .po file in
+/app/Locale/[language]/LC_MESSAGES/tools.po
+
+For some languages there might be already out of the box translations available.
+If not, you can send them to me and I will add them.

+ 743 - 0
src/Locale/ces/LC_MESSAGES/tools.po

@@ -0,0 +1,743 @@
+# LANGUAGE translation of CakePHP Application
+# Copyright YEAR NAME <EMAIL@ADDRESS>
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PROJECT VERSION\n"
+"POT-Creation-Date: 2014-11-09 00:23+0000\n"
+"PO-Revision-Date: YYYY-mm-DD HH:MM+ZZZZ\n"
+"Last-Translator: NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <EMAIL@ADDRESS>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
+
+#: Controller/QloginController.php:38
+msgid "Invalid Key"
+msgstr ""
+
+#: Controller/QloginController.php:50
+msgid "You successfully logged in via qlogin"
+msgstr ""
+
+#: Controller/QloginController.php:108
+msgid "Success"
+msgstr ""
+
+#: Controller/TinyUrlsController.php:100
+msgid "Done"
+msgstr ""
+
+#: Controller/Component/AuthExtComponent.php:80
+msgid "invalidLoginCredentials"
+msgstr ""
+
+#: Controller/Component/AuthExtComponent.php:87;99;103
+msgid "Account not active yet"
+msgstr ""
+
+#: Controller/Component/AuthExtComponent.php:91;107
+msgid "Account temporarily locked"
+msgstr ""
+
+#: Controller/Component/AuthExtComponent.php:93;109;116
+msgid "Reason"
+msgstr ""
+
+#: Controller/Component/AuthExtComponent.php:114
+msgid "Account deleted"
+msgstr ""
+
+#: Controller/Component/AuthExtComponent.php:121
+msgid "Unknown Error"
+msgstr ""
+
+#: Controller/Component/AuthExtComponent.php:126
+msgid "Email not active yet"
+msgstr ""
+
+#: Controller/Component/CalendarComponent.php:65;77
+msgid "invalid date"
+msgstr ""
+
+#: Controller/Component/CommonComponent.php:506
+msgid "Meta Type invalid"
+msgstr ""
+
+#: Controller/Component/CommonComponent.php:819
+msgid "Comma"
+msgstr ""
+
+#: Controller/Component/CommonComponent.php:819
+msgid "Semicolon"
+msgstr ""
+
+#: Controller/Component/CommonComponent.php:819
+msgid "Space"
+msgstr ""
+
+#: Controller/Component/CommonComponent.php:820
+msgid "Tabulator"
+msgstr ""
+
+#: Controller/Component/CommonComponent.php:820
+msgid "New Line"
+msgstr ""
+
+#: Controller/Component/MobileComponent.php:268
+msgid "Engine %s not available"
+msgstr ""
+
+#: Lib/GeocodeLib.php:263
+msgid "Failed geocode parsing of '%s'"
+msgstr ""
+
+#: Lib/GeocodeLib.php:276;364
+msgid "Address '%s' has been geocoded"
+msgstr ""
+
+#: Lib/GeocodeLib.php:283
+msgid "Delay necessary for address '%s'"
+msgstr ""
+
+#: Lib/GeocodeLib.php:299;380
+msgid "Could not geocode '%s'"
+msgstr ""
+
+#: Lib/GeocodeLib.php:306;386
+msgid "Aborted after too many trials with '%s'"
+msgstr ""
+
+#: Lib/GeocodeLib.php:343
+msgid "Could not retrieve url with '%s'"
+msgstr ""
+
+#: Lib/GeocodeLib.php:351
+msgid "Failed reverseGeocode parsing of '%s'"
+msgstr ""
+
+#: Lib/GeocodeLib.php:371
+msgid "Delay necessary for '%s'"
+msgstr ""
+
+#: Lib/GeocodeLib.php:388
+msgid "Too many trials - abort"
+msgstr ""
+
+#: Lib/GeocodeLib.php:423
+msgid "Inconclusive result (total of %s)"
+msgstr ""
+
+#: Lib/GeocodeLib.php:429
+msgid "Accuracy not good enough (%s instead of at least %s)"
+msgstr ""
+
+#: Lib/GeocodeLib.php:444
+msgid "Expectation not reached (we have %s instead of at least one of %s)"
+msgstr ""
+
+#: Lib/GeocodeLib.php:746
+msgid "Invalid Unit: %s"
+msgstr ""
+
+#: Lib/GeocodeLib.php:790
+msgid "Invalid Unit"
+msgstr ""
+
+#: Lib/GeocodeLib.php:835
+msgid "Invalid level '%s'"
+msgstr ""
+
+#: Lib/SpellLib.php:39
+#: Test/Case/Lib/SpellLibTest.php:13
+msgid "Module %s not installed"
+msgstr ""
+
+#: Lib/SpellLib.php:52
+msgid "Engine %s not found"
+msgstr ""
+
+#: Lib/SpellLib.php:58
+msgid "Dictionary %s not found"
+msgstr ""
+
+#: Lib/Misc/ZodiacLib.php:157
+msgid "zodiacAquarius"
+msgstr ""
+
+#: Lib/Misc/ZodiacLib.php:158
+msgid "zodiacPisces"
+msgstr ""
+
+#: Lib/Misc/ZodiacLib.php:159
+#: Test/Case/Lib/Misc/ZodiacLibTest.php:34
+msgid "zodiacAries"
+msgstr ""
+
+#: Lib/Misc/ZodiacLib.php:160
+msgid "zodiacTaurus"
+msgstr ""
+
+#: Lib/Misc/ZodiacLib.php:161
+msgid "zodiacGemini"
+msgstr ""
+
+#: Lib/Misc/ZodiacLib.php:162
+msgid "zodiacCancer"
+msgstr ""
+
+#: Lib/Misc/ZodiacLib.php:163
+msgid "zodiacLeo"
+msgstr ""
+
+#: Lib/Misc/ZodiacLib.php:164
+msgid "zodiacVirgo"
+msgstr ""
+
+#: Lib/Misc/ZodiacLib.php:165
+msgid "zodiacLibra"
+msgstr ""
+
+#: Lib/Misc/ZodiacLib.php:166
+msgid "zodiacScorpio"
+msgstr ""
+
+#: Lib/Misc/ZodiacLib.php:167
+msgid "zodiacSagittarius"
+msgstr ""
+
+#: Lib/Misc/ZodiacLib.php:168
+msgid "zodiacCapricorn"
+msgstr ""
+
+#: Lib/Utility/FolderLib.php:42
+msgid "%s removed"
+msgstr ""
+
+#: Lib/Utility/FolderLib.php:44
+msgid "%s NOT removed"
+msgstr ""
+
+#: Lib/Utility/TimeLib.php:468;521
+#: Test/Case/Lib/Utility/TimeLibTest.php:113;221
+msgid "o'clock"
+msgstr ""
+
+#: Lib/Utility/TimeLib.php:740;891
+#: Test/Case/Lib/Utility/TimeLibTest.php:551
+msgid "%s ago"
+msgstr ""
+
+#: Lib/Utility/TimeLib.php:744
+msgid "in %s"
+msgstr ""
+
+#: Lib/Utility/TimeLib.php:780
+msgid "Month"
+msgstr ""
+
+#: Lib/Utility/TimeLib.php:781
+msgid "Day"
+msgstr ""
+
+#: Lib/Utility/TimeLib.php:782
+msgid "Hour"
+msgstr ""
+
+#: Lib/Utility/TimeLib.php:783
+msgid "Minute"
+msgstr ""
+
+#: Lib/Utility/TimeLib.php:784
+msgid "Second"
+msgstr ""
+
+#: Lib/Utility/TimeLib.php:787
+msgid "Months"
+msgstr ""
+
+#: Lib/Utility/TimeLib.php:788
+#: Test/Case/Lib/Utility/TimeLibTest.php:551;555;664
+msgid "Days"
+msgstr ""
+
+#: Lib/Utility/TimeLib.php:789
+#: Test/Case/Lib/Utility/TimeLibTest.php:551;555;664
+msgid "Hours"
+msgstr ""
+
+#: Lib/Utility/TimeLib.php:790
+#: Test/Case/Lib/Utility/TimeLibTest.php:656;660
+msgid "Minutes"
+msgstr ""
+
+#: Lib/Utility/TimeLib.php:791
+#: Test/Case/Lib/Utility/TimeLibTest.php:656
+msgid "Seconds"
+msgstr ""
+
+#: Lib/Utility/TimeLib.php:890
+#: Test/Case/Lib/Utility/TimeLibTest.php:559
+msgid "justNow"
+msgstr ""
+
+#: Lib/Utility/TimeLib.php:891
+#: Test/Case/Lib/Utility/TimeLibTest.php:555
+msgid "In %s"
+msgstr ""
+
+#: Lib/Utility/TimeLib.php:990
+#: Test/Case/Lib/Utility/TimeLibTest.php:173;233;262;263;264
+#: View/Helper/DatetimeHelper.php:93
+msgid "Today"
+msgstr ""
+
+#: Lib/Utility/TimeLib.php:991
+#: Test/Case/Lib/Utility/TimeLibTest.php:264;265
+#: View/Helper/DatetimeHelper.php:96
+msgid "Tomorrow"
+msgstr ""
+
+#: Lib/Utility/TimeLib.php:992
+#: Test/Case/Lib/Utility/TimeLibTest.php:263;265
+#: View/Helper/DatetimeHelper.php:99
+msgid "Yesterday"
+msgstr ""
+
+#: Lib/Utility/TimeLib.php:993
+msgid "The day after tomorrow"
+msgstr ""
+
+#: Lib/Utility/TimeLib.php:994
+msgid "The day before yesterday"
+msgstr ""
+
+#: Model/Behavior/CaptchaBehavior.php:73;173
+msgid "captchaContentMissing"
+msgstr ""
+
+#: Model/Behavior/CaptchaBehavior.php:76
+msgid "captchaIllegalContent"
+msgstr ""
+
+#: Model/Behavior/CaptchaBehavior.php:79
+msgid "captchaResultTooFast"
+msgstr ""
+
+#: Model/Behavior/CaptchaBehavior.php:82
+msgid "captchaResultTooLate"
+msgstr ""
+
+#: Model/Behavior/CaptchaBehavior.php:85
+msgid "captchaResultIncorrect"
+msgstr ""
+
+#: Model/Behavior/CaptchaBehavior.php:117
+msgid "Illegal call"
+msgstr ""
+
+#: Model/Behavior/CaptchaBehavior.php:121
+msgid "Illegal content"
+msgstr ""
+
+#: Model/Behavior/CaptchaBehavior.php:182
+msgid "Captcha incorrect"
+msgstr ""
+
+#: Model/Behavior/CustomFindsBehavior.php:39
+msgid "The behavior \"Containable\", if used together with \"CustomFinds\" needs to be loaded before."
+msgstr ""
+
+#: Model/Behavior/LogableBehavior.php:401
+msgid "deleted"
+msgstr ""
+
+#: Model/Behavior/LogableBehavior.php:483
+msgid "added"
+msgstr ""
+
+#: Model/Behavior/LogableBehavior.php:485
+msgid "updated"
+msgstr ""
+
+#: Model/Behavior/LogableBehavior.php:624
+msgid "Custom action"
+msgstr ""
+
+#: Model/Behavior/LogableBehavior.php:627
+msgid "by"
+msgstr ""
+
+#: Model/Behavior/LogableBehavior.php:634
+msgid "by System"
+msgstr ""
+
+#: Model/Behavior/PasswordableBehavior.php:231
+#: Test/Case/Model/Behavior/PasswordableBehaviorTest.php:95
+msgid "valErrPwdNotMatch"
+msgstr "Hesla se neshodují"
+
+#: Test/Case/Lib/Utility/TimeLibTest.php:263;264;265
+msgid "until"
+msgstr ""
+
+#: Test/Case/Lib/Utility/TimeLibTest.php:472;481;487
+msgid "Sunday"
+msgstr ""
+
+#: Test/Case/Lib/Utility/TimeLibTest.php:475
+msgid "Tue"
+msgstr ""
+
+#: Test/Case/Lib/Utility/TimeLibTest.php:478
+msgid "Saturday"
+msgstr ""
+
+#: Test/Case/Lib/Utility/TimeLibTest.php:484
+msgid "Tuesday"
+msgstr ""
+
+#: Test/Case/Lib/Utility/TimeLibTest.php:498
+msgid "November"
+msgstr ""
+
+#: Test/Case/Lib/Utility/TimeLibTest.php:501
+msgid "January"
+msgstr ""
+
+#: Test/Case/Lib/Utility/TimeLibTest.php:504
+msgid "Feb"
+msgstr ""
+
+#: Test/Case/Lib/Utility/TimeLibTest.php:507
+msgid "May"
+msgstr ""
+
+#: Test/Case/Model/MyModelTest.php:552
+msgid "e %s f"
+msgstr ""
+
+#: Test/Case/Model/MyModelTest.php:558
+msgid "e %s f %s g"
+msgstr ""
+
+#: Test/Case/Model/MyModelTest.php:564
+msgid "e %s f %s g %s"
+msgstr ""
+
+#: Test/Case/Model/MyModelTest.php:582
+msgid "a %s b %s c %s %s %s %s %s h %s"
+msgstr ""
+
+#: Test/Case/Model/Behavior/BitmaskedBehaviorTest.php:191
+msgid "Active"
+msgstr ""
+
+#: Test/Case/Model/Behavior/BitmaskedBehaviorTest.php:192
+msgid "Published"
+msgstr ""
+
+#: Test/Case/Model/Behavior/BitmaskedBehaviorTest.php:193
+msgid "Approved"
+msgstr ""
+
+#: Test/Case/Model/Behavior/BitmaskedBehaviorTest.php:194
+msgid "Flagged"
+msgstr ""
+
+#: Test/Case/Model/Behavior/GeocoderBehaviorTest.php:138
+msgid "validateLongitudeError"
+msgstr ""
+
+#: Test/Case/Model/Behavior/MasterPasswordBehaviorTest.php:78
+msgid "No way"
+msgstr ""
+
+#: Test/Case/Model/Behavior/PasswordableBehaviorTest.php:769;770
+msgid "valErrBetweenCharacters %s %s"
+msgstr "Počet znaků musí být mezi %s a %s"
+
+#: Test/Case/Model/Behavior/SluggedBehaviorTest.php:288
+msgid "and"
+msgstr ""
+
+#: Test/Case/View/Helper/CommonHelperTest.php:240;255
+msgid "Houses"
+msgstr ""
+
+#: Test/Case/View/Helper/CommonHelperTest.php:244;262
+msgid "House"
+msgstr ""
+
+#: Test/Case/View/Helper/FormatHelperTest.php:64;75;87;99
+msgid "Edit"
+msgstr ""
+
+#: Test/Case/View/Helper/FormatHelperTest.php:158;170
+#: View/Helper/FormatHelper.php:669
+msgid "Yes"
+msgstr ""
+
+#: Test/Case/View/Helper/FormatHelperTest.php:162;174
+#: View/Helper/FormatHelper.php:670
+msgid "No"
+msgstr ""
+
+#: View/RssView.php:222
+msgid "The prefix %s is not specified."
+msgstr ""
+
+#: View/Elements/master_password.ctp:9
+msgid "Master Password"
+msgstr ""
+
+#: View/Elements/master_password.ctp:10
+msgid "Password"
+msgstr ""
+
+#: View/Elements/pagination.ctp:12
+msgid "first"
+msgstr ""
+
+#: View/Elements/pagination.ctp:15
+msgid "last"
+msgstr ""
+
+#: View/Elements/pagination.ctp:18
+msgid "previous"
+msgstr ""
+
+#: View/Elements/pagination.ctp:21
+#: View/Helper/FormatHelper.php:155;157
+msgid "next"
+msgstr ""
+
+#: View/Elements/pagination.ctp:38
+msgid "Page %page% of %pages%, showing %current% records out of %count% total"
+msgstr ""
+
+#: View/Helper/CaptchaHelper.php:40
+msgid "zero"
+msgstr ""
+
+#: View/Helper/CaptchaHelper.php:40
+msgid "one"
+msgstr ""
+
+#: View/Helper/CaptchaHelper.php:40
+msgid "two"
+msgstr ""
+
+#: View/Helper/CaptchaHelper.php:40
+msgid "three"
+msgstr ""
+
+#: View/Helper/CaptchaHelper.php:40
+msgid "four"
+msgstr ""
+
+#: View/Helper/CaptchaHelper.php:40
+msgid "five"
+msgstr ""
+
+#: View/Helper/CaptchaHelper.php:40
+msgid "six"
+msgstr ""
+
+#: View/Helper/CaptchaHelper.php:40
+msgid "seven"
+msgstr ""
+
+#: View/Helper/CaptchaHelper.php:40
+msgid "eight"
+msgstr ""
+
+#: View/Helper/CaptchaHelper.php:40
+msgid "nine"
+msgstr ""
+
+#: View/Helper/CaptchaHelper.php:40
+msgid "ten"
+msgstr ""
+
+#: View/Helper/CaptchaHelper.php:43
+msgid "calcPlus"
+msgstr ""
+
+#: View/Helper/CaptchaHelper.php:43
+msgid "calcMinus"
+msgstr ""
+
+#: View/Helper/CaptchaHelper.php:43
+msgid "calcTimes"
+msgstr ""
+
+#: View/Helper/CaptchaHelper.php:126
+msgid "Captcha"
+msgstr ""
+
+#: View/Helper/CaptchaHelper.php:126
+msgid "captchaExplained"
+msgstr ""
+
+#: View/Helper/CaptchaHelper.php:129
+msgid "captchaTip"
+msgstr ""
+
+#: View/Helper/CommonHelper.php:373
+msgid "Subscribe to this feed"
+msgstr ""
+
+#: View/Helper/CommonHelper.php:502
+msgid "Please enable cookies"
+msgstr ""
+
+#: View/Helper/DatetimeHelper.php:75
+msgid "publishedAlready"
+msgstr ""
+
+#: View/Helper/DatetimeHelper.php:75
+msgid "publishedToday"
+msgstr ""
+
+#: View/Helper/DatetimeHelper.php:75
+msgid "publishedNotYet"
+msgstr ""
+
+#: View/Helper/FlattrHelper.php:101
+msgid "Donate"
+msgstr ""
+
+#: View/Helper/FormExtHelper.php:1118
+msgid "Selection"
+msgstr ""
+
+#: View/Helper/FormExtHelper.php:1120
+msgid "All"
+msgstr ""
+
+#: View/Helper/FormExtHelper.php:1121
+msgid "None"
+msgstr ""
+
+#: View/Helper/FormExtHelper.php:1122
+msgid "Revert"
+msgstr ""
+
+#: View/Helper/FormatHelper.php:56
+msgid "consentThis"
+msgstr ""
+
+#: View/Helper/FormatHelper.php:57
+msgid "dissentThis"
+msgstr ""
+
+#: View/Helper/FormatHelper.php:60
+msgid "alreadyVoted"
+msgstr ""
+
+#: View/Helper/FormatHelper.php:144;146
+msgid "prev"
+msgstr ""
+
+#: View/Helper/FormatHelper.php:146
+msgid "noPrev"
+msgstr ""
+
+#: View/Helper/FormatHelper.php:157
+msgid "noNext"
+msgstr ""
+
+#: View/Helper/FormatHelper.php:279
+msgid "prio"
+msgstr ""
+
+#: View/Helper/FormatHelper.php:502
+msgid "of"
+msgstr ""
+
+#: View/Helper/FormatHelper.php:531
+msgid "Language"
+msgstr ""
+
+#: View/Helper/FormatHelper.php:546
+msgid "active"
+msgstr ""
+
+#: View/Helper/FormatHelper.php:588
+#: View/Helper/TextExtHelper.php:150
+msgid "for use in an external mail client"
+msgstr ""
+
+#: View/Helper/FormatHelper.php:802
+msgid "notAvailable"
+msgstr ""
+
+#: View/Helper/FormatHelper.php:870
+msgid "Percent"
+msgstr ""
+
+#: View/Helper/FormatHelper.php:950;951
+msgid "color"
+msgstr ""
+
+#: View/Helper/GoogleMapV3Helper.php:434
+msgid "Map cannot be displayed!"
+msgstr ""
+
+#: View/Helper/GoogleMapV3Helper.php:596
+msgid "Enter your address"
+msgstr ""
+
+#: View/Helper/GoogleMapV3Helper.php:597
+msgid "Get directions"
+msgstr ""
+
+#: View/Helper/GoogleMapV3Helper.php:1272
+msgid "Map"
+msgstr ""
+
+#: View/Qlogin/admin_index.ctp:3;27;29
+msgid "Qlogins"
+msgstr ""
+
+#: View/Qlogin/admin_index.ctp:4
+msgid "valid ones"
+msgstr ""
+
+#: View/Qlogin/admin_index.ctp:7
+msgid "Generated Link"
+msgstr ""
+
+#: View/Qlogin/admin_index.ctp:11;14
+msgid "Add %s"
+msgstr ""
+
+#: View/Qlogin/admin_index.ctp:11;14
+msgid "Qlogin"
+msgstr ""
+
+#: View/Qlogin/admin_index.ctp:20
+msgid "Submit"
+msgstr ""
+
+#: View/Qlogin/admin_index.ctp:27
+msgid "Reset %s"
+msgstr ""
+
+#: View/Qlogin/admin_index.ctp:27
+msgid "Sure?"
+msgstr ""
+
+#: View/Qlogin/admin_index.ctp:29
+msgid "List %s"
+msgstr ""
+
+#~ msgid "valErrProvideCurrentPwd"
+#~ msgstr "Je třeba zadat stávající heslo"
+
+#~ msgid "valErrCurrentPwdIncorrect"
+#~ msgstr "Stávající heslo není správné"

+ 743 - 0
src/Locale/deu/LC_MESSAGES/tools.po

@@ -0,0 +1,743 @@
+# LANGUAGE translation of CakePHP Application
+# Copyright YEAR NAME <EMAIL@ADDRESS>
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PROJECT VERSION\n"
+"POT-Creation-Date: 2014-11-09 00:23+0000\n"
+"PO-Revision-Date: YYYY-mm-DD HH:MM+ZZZZ\n"
+"Last-Translator: NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <EMAIL@ADDRESS>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
+
+#: Controller/QloginController.php:38
+msgid "Invalid Key"
+msgstr "Ungültiger Schlüssel"
+
+#: Controller/QloginController.php:50
+msgid "You successfully logged in via qlogin"
+msgstr "Du wurdest erfolgreich eingeloggt."
+
+#: Controller/QloginController.php:108
+msgid "Success"
+msgstr "Erfolg"
+
+#: Controller/TinyUrlsController.php:100
+msgid "Done"
+msgstr ""
+
+#: Controller/Component/AuthExtComponent.php:80
+msgid "invalidLoginCredentials"
+msgstr ""
+
+#: Controller/Component/AuthExtComponent.php:87;99;103
+msgid "Account not active yet"
+msgstr ""
+
+#: Controller/Component/AuthExtComponent.php:91;107
+msgid "Account temporarily locked"
+msgstr ""
+
+#: Controller/Component/AuthExtComponent.php:93;109;116
+msgid "Reason"
+msgstr ""
+
+#: Controller/Component/AuthExtComponent.php:114
+msgid "Account deleted"
+msgstr ""
+
+#: Controller/Component/AuthExtComponent.php:121
+msgid "Unknown Error"
+msgstr ""
+
+#: Controller/Component/AuthExtComponent.php:126
+msgid "Email not active yet"
+msgstr ""
+
+#: Controller/Component/CalendarComponent.php:65;77
+msgid "invalid date"
+msgstr ""
+
+#: Controller/Component/CommonComponent.php:506
+msgid "Meta Type invalid"
+msgstr ""
+
+#: Controller/Component/CommonComponent.php:819
+msgid "Comma"
+msgstr ""
+
+#: Controller/Component/CommonComponent.php:819
+msgid "Semicolon"
+msgstr ""
+
+#: Controller/Component/CommonComponent.php:819
+msgid "Space"
+msgstr ""
+
+#: Controller/Component/CommonComponent.php:820
+msgid "Tabulator"
+msgstr ""
+
+#: Controller/Component/CommonComponent.php:820
+msgid "New Line"
+msgstr ""
+
+#: Controller/Component/MobileComponent.php:268
+msgid "Engine %s not available"
+msgstr ""
+
+#: Lib/GeocodeLib.php:263
+msgid "Failed geocode parsing of '%s'"
+msgstr ""
+
+#: Lib/GeocodeLib.php:276;364
+msgid "Address '%s' has been geocoded"
+msgstr ""
+
+#: Lib/GeocodeLib.php:283
+msgid "Delay necessary for address '%s'"
+msgstr ""
+
+#: Lib/GeocodeLib.php:299;380
+msgid "Could not geocode '%s'"
+msgstr ""
+
+#: Lib/GeocodeLib.php:306;386
+msgid "Aborted after too many trials with '%s'"
+msgstr ""
+
+#: Lib/GeocodeLib.php:343
+msgid "Could not retrieve url with '%s'"
+msgstr ""
+
+#: Lib/GeocodeLib.php:351
+msgid "Failed reverseGeocode parsing of '%s'"
+msgstr ""
+
+#: Lib/GeocodeLib.php:371
+msgid "Delay necessary for '%s'"
+msgstr ""
+
+#: Lib/GeocodeLib.php:388
+msgid "Too many trials - abort"
+msgstr ""
+
+#: Lib/GeocodeLib.php:423
+msgid "Inconclusive result (total of %s)"
+msgstr ""
+
+#: Lib/GeocodeLib.php:429
+msgid "Accuracy not good enough (%s instead of at least %s)"
+msgstr ""
+
+#: Lib/GeocodeLib.php:444
+msgid "Expectation not reached (we have %s instead of at least one of %s)"
+msgstr ""
+
+#: Lib/GeocodeLib.php:746
+msgid "Invalid Unit: %s"
+msgstr ""
+
+#: Lib/GeocodeLib.php:790
+msgid "Invalid Unit"
+msgstr ""
+
+#: Lib/GeocodeLib.php:835
+msgid "Invalid level '%s'"
+msgstr ""
+
+#: Lib/SpellLib.php:39
+#: Test/Case/Lib/SpellLibTest.php:13
+msgid "Module %s not installed"
+msgstr ""
+
+#: Lib/SpellLib.php:52
+msgid "Engine %s not found"
+msgstr ""
+
+#: Lib/SpellLib.php:58
+msgid "Dictionary %s not found"
+msgstr ""
+
+#: Lib/Misc/ZodiacLib.php:157
+msgid "zodiacAquarius"
+msgstr ""
+
+#: Lib/Misc/ZodiacLib.php:158
+msgid "zodiacPisces"
+msgstr ""
+
+#: Lib/Misc/ZodiacLib.php:159
+#: Test/Case/Lib/Misc/ZodiacLibTest.php:34
+msgid "zodiacAries"
+msgstr ""
+
+#: Lib/Misc/ZodiacLib.php:160
+msgid "zodiacTaurus"
+msgstr ""
+
+#: Lib/Misc/ZodiacLib.php:161
+msgid "zodiacGemini"
+msgstr ""
+
+#: Lib/Misc/ZodiacLib.php:162
+msgid "zodiacCancer"
+msgstr ""
+
+#: Lib/Misc/ZodiacLib.php:163
+msgid "zodiacLeo"
+msgstr ""
+
+#: Lib/Misc/ZodiacLib.php:164
+msgid "zodiacVirgo"
+msgstr ""
+
+#: Lib/Misc/ZodiacLib.php:165
+msgid "zodiacLibra"
+msgstr ""
+
+#: Lib/Misc/ZodiacLib.php:166
+msgid "zodiacScorpio"
+msgstr ""
+
+#: Lib/Misc/ZodiacLib.php:167
+msgid "zodiacSagittarius"
+msgstr ""
+
+#: Lib/Misc/ZodiacLib.php:168
+msgid "zodiacCapricorn"
+msgstr ""
+
+#: Lib/Utility/FolderLib.php:42
+msgid "%s removed"
+msgstr ""
+
+#: Lib/Utility/FolderLib.php:44
+msgid "%s NOT removed"
+msgstr ""
+
+#: Lib/Utility/TimeLib.php:468;521
+#: Test/Case/Lib/Utility/TimeLibTest.php:113;221
+msgid "o'clock"
+msgstr ""
+
+#: Lib/Utility/TimeLib.php:740;891
+#: Test/Case/Lib/Utility/TimeLibTest.php:551
+msgid "%s ago"
+msgstr ""
+
+#: Lib/Utility/TimeLib.php:744
+msgid "in %s"
+msgstr ""
+
+#: Lib/Utility/TimeLib.php:780
+msgid "Month"
+msgstr ""
+
+#: Lib/Utility/TimeLib.php:781
+msgid "Day"
+msgstr ""
+
+#: Lib/Utility/TimeLib.php:782
+msgid "Hour"
+msgstr ""
+
+#: Lib/Utility/TimeLib.php:783
+msgid "Minute"
+msgstr ""
+
+#: Lib/Utility/TimeLib.php:784
+msgid "Second"
+msgstr ""
+
+#: Lib/Utility/TimeLib.php:787
+msgid "Months"
+msgstr ""
+
+#: Lib/Utility/TimeLib.php:788
+#: Test/Case/Lib/Utility/TimeLibTest.php:551;555;664
+msgid "Days"
+msgstr ""
+
+#: Lib/Utility/TimeLib.php:789
+#: Test/Case/Lib/Utility/TimeLibTest.php:551;555;664
+msgid "Hours"
+msgstr ""
+
+#: Lib/Utility/TimeLib.php:790
+#: Test/Case/Lib/Utility/TimeLibTest.php:656;660
+msgid "Minutes"
+msgstr ""
+
+#: Lib/Utility/TimeLib.php:791
+#: Test/Case/Lib/Utility/TimeLibTest.php:656
+msgid "Seconds"
+msgstr ""
+
+#: Lib/Utility/TimeLib.php:890
+#: Test/Case/Lib/Utility/TimeLibTest.php:559
+msgid "justNow"
+msgstr ""
+
+#: Lib/Utility/TimeLib.php:891
+#: Test/Case/Lib/Utility/TimeLibTest.php:555
+msgid "In %s"
+msgstr ""
+
+#: Lib/Utility/TimeLib.php:990
+#: Test/Case/Lib/Utility/TimeLibTest.php:173;233;262;263;264
+#: View/Helper/DatetimeHelper.php:93
+msgid "Today"
+msgstr ""
+
+#: Lib/Utility/TimeLib.php:991
+#: Test/Case/Lib/Utility/TimeLibTest.php:264;265
+#: View/Helper/DatetimeHelper.php:96
+msgid "Tomorrow"
+msgstr ""
+
+#: Lib/Utility/TimeLib.php:992
+#: Test/Case/Lib/Utility/TimeLibTest.php:263;265
+#: View/Helper/DatetimeHelper.php:99
+msgid "Yesterday"
+msgstr ""
+
+#: Lib/Utility/TimeLib.php:993
+msgid "The day after tomorrow"
+msgstr ""
+
+#: Lib/Utility/TimeLib.php:994
+msgid "The day before yesterday"
+msgstr ""
+
+#: Model/Behavior/CaptchaBehavior.php:73;173
+msgid "captchaContentMissing"
+msgstr ""
+
+#: Model/Behavior/CaptchaBehavior.php:76
+msgid "captchaIllegalContent"
+msgstr "Illegaler Inhalt im Formular"
+
+#: Model/Behavior/CaptchaBehavior.php:79
+msgid "captchaResultTooFast"
+msgstr "Das Formular wurde zu schnell abgeschickt - kannst du so schnell rechnen? :-)"
+
+#: Model/Behavior/CaptchaBehavior.php:82
+msgid "captchaResultTooLate"
+msgstr ""
+
+#: Model/Behavior/CaptchaBehavior.php:85
+msgid "captchaResultIncorrect"
+msgstr "Das eingegebene Captcha-Ergebnis war nicht korrekt"
+
+#: Model/Behavior/CaptchaBehavior.php:117
+msgid "Illegal call"
+msgstr ""
+
+#: Model/Behavior/CaptchaBehavior.php:121
+msgid "Illegal content"
+msgstr ""
+
+#: Model/Behavior/CaptchaBehavior.php:182
+msgid "Captcha incorrect"
+msgstr ""
+
+#: Model/Behavior/CustomFindsBehavior.php:39
+msgid "The behavior \"Containable\", if used together with \"CustomFinds\" needs to be loaded before."
+msgstr ""
+
+#: Model/Behavior/LogableBehavior.php:401
+msgid "deleted"
+msgstr ""
+
+#: Model/Behavior/LogableBehavior.php:483
+msgid "added"
+msgstr ""
+
+#: Model/Behavior/LogableBehavior.php:485
+msgid "updated"
+msgstr ""
+
+#: Model/Behavior/LogableBehavior.php:624
+msgid "Custom action"
+msgstr ""
+
+#: Model/Behavior/LogableBehavior.php:627
+msgid "by"
+msgstr ""
+
+#: Model/Behavior/LogableBehavior.php:634
+msgid "by System"
+msgstr ""
+
+#: Model/Behavior/PasswordableBehavior.php:231
+#: Test/Case/Model/Behavior/PasswordableBehaviorTest.php:95
+msgid "valErrPwdNotMatch"
+msgstr "Die beiden Passwörter stimmen nicht überein"
+
+#: Test/Case/Lib/Utility/TimeLibTest.php:263;264;265
+msgid "until"
+msgstr ""
+
+#: Test/Case/Lib/Utility/TimeLibTest.php:472;481;487
+msgid "Sunday"
+msgstr ""
+
+#: Test/Case/Lib/Utility/TimeLibTest.php:475
+msgid "Tue"
+msgstr ""
+
+#: Test/Case/Lib/Utility/TimeLibTest.php:478
+msgid "Saturday"
+msgstr ""
+
+#: Test/Case/Lib/Utility/TimeLibTest.php:484
+msgid "Tuesday"
+msgstr ""
+
+#: Test/Case/Lib/Utility/TimeLibTest.php:498
+msgid "November"
+msgstr ""
+
+#: Test/Case/Lib/Utility/TimeLibTest.php:501
+msgid "January"
+msgstr ""
+
+#: Test/Case/Lib/Utility/TimeLibTest.php:504
+msgid "Feb"
+msgstr ""
+
+#: Test/Case/Lib/Utility/TimeLibTest.php:507
+msgid "May"
+msgstr ""
+
+#: Test/Case/Model/MyModelTest.php:552
+msgid "e %s f"
+msgstr ""
+
+#: Test/Case/Model/MyModelTest.php:558
+msgid "e %s f %s g"
+msgstr ""
+
+#: Test/Case/Model/MyModelTest.php:564
+msgid "e %s f %s g %s"
+msgstr ""
+
+#: Test/Case/Model/MyModelTest.php:582
+msgid "a %s b %s c %s %s %s %s %s h %s"
+msgstr ""
+
+#: Test/Case/Model/Behavior/BitmaskedBehaviorTest.php:191
+msgid "Active"
+msgstr ""
+
+#: Test/Case/Model/Behavior/BitmaskedBehaviorTest.php:192
+msgid "Published"
+msgstr ""
+
+#: Test/Case/Model/Behavior/BitmaskedBehaviorTest.php:193
+msgid "Approved"
+msgstr ""
+
+#: Test/Case/Model/Behavior/BitmaskedBehaviorTest.php:194
+msgid "Flagged"
+msgstr ""
+
+#: Test/Case/Model/Behavior/GeocoderBehaviorTest.php:138
+msgid "validateLongitudeError"
+msgstr ""
+
+#: Test/Case/Model/Behavior/MasterPasswordBehaviorTest.php:78
+msgid "No way"
+msgstr ""
+
+#: Test/Case/Model/Behavior/PasswordableBehaviorTest.php:769;770
+msgid "valErrBetweenCharacters %s %s"
+msgstr "Zwischen %s und %s Zeichen"
+
+#: Test/Case/Model/Behavior/SluggedBehaviorTest.php:288
+msgid "and"
+msgstr ""
+
+#: Test/Case/View/Helper/CommonHelperTest.php:240;255
+msgid "Houses"
+msgstr ""
+
+#: Test/Case/View/Helper/CommonHelperTest.php:244;262
+msgid "House"
+msgstr ""
+
+#: Test/Case/View/Helper/FormatHelperTest.php:64;75;87;99
+msgid "Edit"
+msgstr ""
+
+#: Test/Case/View/Helper/FormatHelperTest.php:158;170
+#: View/Helper/FormatHelper.php:669
+msgid "Yes"
+msgstr ""
+
+#: Test/Case/View/Helper/FormatHelperTest.php:162;174
+#: View/Helper/FormatHelper.php:670
+msgid "No"
+msgstr ""
+
+#: View/RssView.php:222
+msgid "The prefix %s is not specified."
+msgstr ""
+
+#: View/Elements/master_password.ctp:9
+msgid "Master Password"
+msgstr ""
+
+#: View/Elements/master_password.ctp:10
+msgid "Password"
+msgstr ""
+
+#: View/Elements/pagination.ctp:12
+msgid "first"
+msgstr ""
+
+#: View/Elements/pagination.ctp:15
+msgid "last"
+msgstr ""
+
+#: View/Elements/pagination.ctp:18
+msgid "previous"
+msgstr ""
+
+#: View/Elements/pagination.ctp:21
+#: View/Helper/FormatHelper.php:155;157
+msgid "next"
+msgstr ""
+
+#: View/Elements/pagination.ctp:38
+msgid "Page %page% of %pages%, showing %current% records out of %count% total"
+msgstr ""
+
+#: View/Helper/CaptchaHelper.php:40
+msgid "zero"
+msgstr "null"
+
+#: View/Helper/CaptchaHelper.php:40
+msgid "one"
+msgstr "eins"
+
+#: View/Helper/CaptchaHelper.php:40
+msgid "two"
+msgstr "zwei"
+
+#: View/Helper/CaptchaHelper.php:40
+msgid "three"
+msgstr "drei"
+
+#: View/Helper/CaptchaHelper.php:40
+msgid "four"
+msgstr "vier"
+
+#: View/Helper/CaptchaHelper.php:40
+msgid "five"
+msgstr "fünf"
+
+#: View/Helper/CaptchaHelper.php:40
+msgid "six"
+msgstr "sechs"
+
+#: View/Helper/CaptchaHelper.php:40
+msgid "seven"
+msgstr "sieben"
+
+#: View/Helper/CaptchaHelper.php:40
+msgid "eight"
+msgstr "acht"
+
+#: View/Helper/CaptchaHelper.php:40
+msgid "nine"
+msgstr "neun"
+
+#: View/Helper/CaptchaHelper.php:40
+msgid "ten"
+msgstr "zehn"
+
+#: View/Helper/CaptchaHelper.php:43
+msgid "calcPlus"
+msgstr "plus"
+
+#: View/Helper/CaptchaHelper.php:43
+msgid "calcMinus"
+msgstr "minus"
+
+#: View/Helper/CaptchaHelper.php:43
+msgid "calcTimes"
+msgstr "mal"
+
+#: View/Helper/CaptchaHelper.php:126
+msgid "Captcha"
+msgstr "Captcha"
+
+#: View/Helper/CaptchaHelper.php:126
+msgid "captchaExplained"
+msgstr "<small>Schutz vor Spam</small>"
+
+#: View/Helper/CaptchaHelper.php:129
+msgid "captchaTip"
+msgstr ""
+
+#: View/Helper/CommonHelper.php:373
+msgid "Subscribe to this feed"
+msgstr ""
+
+#: View/Helper/CommonHelper.php:502
+msgid "Please enable cookies"
+msgstr ""
+
+#: View/Helper/DatetimeHelper.php:75
+msgid "publishedAlready"
+msgstr ""
+
+#: View/Helper/DatetimeHelper.php:75
+msgid "publishedToday"
+msgstr ""
+
+#: View/Helper/DatetimeHelper.php:75
+msgid "publishedNotYet"
+msgstr ""
+
+#: View/Helper/FlattrHelper.php:101
+msgid "Donate"
+msgstr ""
+
+#: View/Helper/FormExtHelper.php:1118
+msgid "Selection"
+msgstr ""
+
+#: View/Helper/FormExtHelper.php:1120
+msgid "All"
+msgstr ""
+
+#: View/Helper/FormExtHelper.php:1121
+msgid "None"
+msgstr ""
+
+#: View/Helper/FormExtHelper.php:1122
+msgid "Revert"
+msgstr ""
+
+#: View/Helper/FormatHelper.php:56
+msgid "consentThis"
+msgstr ""
+
+#: View/Helper/FormatHelper.php:57
+msgid "dissentThis"
+msgstr ""
+
+#: View/Helper/FormatHelper.php:60
+msgid "alreadyVoted"
+msgstr ""
+
+#: View/Helper/FormatHelper.php:144;146
+msgid "prev"
+msgstr ""
+
+#: View/Helper/FormatHelper.php:146
+msgid "noPrev"
+msgstr ""
+
+#: View/Helper/FormatHelper.php:157
+msgid "noNext"
+msgstr ""
+
+#: View/Helper/FormatHelper.php:279
+msgid "prio"
+msgstr ""
+
+#: View/Helper/FormatHelper.php:502
+msgid "of"
+msgstr ""
+
+#: View/Helper/FormatHelper.php:531
+msgid "Language"
+msgstr ""
+
+#: View/Helper/FormatHelper.php:546
+msgid "active"
+msgstr ""
+
+#: View/Helper/FormatHelper.php:588
+#: View/Helper/TextExtHelper.php:150
+msgid "for use in an external mail client"
+msgstr ""
+
+#: View/Helper/FormatHelper.php:802
+msgid "notAvailable"
+msgstr ""
+
+#: View/Helper/FormatHelper.php:870
+msgid "Percent"
+msgstr ""
+
+#: View/Helper/FormatHelper.php:950;951
+msgid "color"
+msgstr ""
+
+#: View/Helper/GoogleMapV3Helper.php:434
+msgid "Map cannot be displayed!"
+msgstr ""
+
+#: View/Helper/GoogleMapV3Helper.php:596
+msgid "Enter your address"
+msgstr ""
+
+#: View/Helper/GoogleMapV3Helper.php:597
+msgid "Get directions"
+msgstr ""
+
+#: View/Helper/GoogleMapV3Helper.php:1272
+msgid "Map"
+msgstr ""
+
+#: View/Qlogin/admin_index.ctp:3;27;29
+msgid "Qlogins"
+msgstr ""
+
+#: View/Qlogin/admin_index.ctp:4
+msgid "valid ones"
+msgstr ""
+
+#: View/Qlogin/admin_index.ctp:7
+msgid "Generated Link"
+msgstr ""
+
+#: View/Qlogin/admin_index.ctp:11;14
+msgid "Add %s"
+msgstr ""
+
+#: View/Qlogin/admin_index.ctp:11;14
+msgid "Qlogin"
+msgstr ""
+
+#: View/Qlogin/admin_index.ctp:20
+msgid "Submit"
+msgstr ""
+
+#: View/Qlogin/admin_index.ctp:27
+msgid "Reset %s"
+msgstr ""
+
+#: View/Qlogin/admin_index.ctp:27
+msgid "Sure?"
+msgstr ""
+
+#: View/Qlogin/admin_index.ctp:29
+msgid "List %s"
+msgstr ""
+
+#~ msgid "valErrProvideCurrentPwd"
+#~ msgstr "Bitte das bisherige Passwort eingeben"
+
+#~ msgid "valErrCurrentPwdIncorrect"
+#~ msgstr "Das bisherige Passwort ist nicht korrekt"

+ 743 - 0
src/Locale/spa/LC_MESSAGES/tools.po

@@ -0,0 +1,743 @@
+# LANGUAGE translation of CakePHP Application
+# Copyright YEAR NAME <EMAIL@ADDRESS>
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PROJECT VERSION\n"
+"POT-Creation-Date: 2014-11-09 00:23+0000\n"
+"PO-Revision-Date: YYYY-mm-DD HH:MM+ZZZZ\n"
+"Last-Translator: NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <EMAIL@ADDRESS>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
+
+#: Controller/QloginController.php:38
+msgid "Invalid Key"
+msgstr ""
+
+#: Controller/QloginController.php:50
+msgid "You successfully logged in via qlogin"
+msgstr ""
+
+#: Controller/QloginController.php:108
+msgid "Success"
+msgstr ""
+
+#: Controller/TinyUrlsController.php:100
+msgid "Done"
+msgstr ""
+
+#: Controller/Component/AuthExtComponent.php:80
+msgid "invalidLoginCredentials"
+msgstr ""
+
+#: Controller/Component/AuthExtComponent.php:87;99;103
+msgid "Account not active yet"
+msgstr ""
+
+#: Controller/Component/AuthExtComponent.php:91;107
+msgid "Account temporarily locked"
+msgstr ""
+
+#: Controller/Component/AuthExtComponent.php:93;109;116
+msgid "Reason"
+msgstr ""
+
+#: Controller/Component/AuthExtComponent.php:114
+msgid "Account deleted"
+msgstr ""
+
+#: Controller/Component/AuthExtComponent.php:121
+msgid "Unknown Error"
+msgstr ""
+
+#: Controller/Component/AuthExtComponent.php:126
+msgid "Email not active yet"
+msgstr ""
+
+#: Controller/Component/CalendarComponent.php:65;77
+msgid "invalid date"
+msgstr ""
+
+#: Controller/Component/CommonComponent.php:506
+msgid "Meta Type invalid"
+msgstr ""
+
+#: Controller/Component/CommonComponent.php:819
+msgid "Comma"
+msgstr ""
+
+#: Controller/Component/CommonComponent.php:819
+msgid "Semicolon"
+msgstr ""
+
+#: Controller/Component/CommonComponent.php:819
+msgid "Space"
+msgstr ""
+
+#: Controller/Component/CommonComponent.php:820
+msgid "Tabulator"
+msgstr ""
+
+#: Controller/Component/CommonComponent.php:820
+msgid "New Line"
+msgstr ""
+
+#: Controller/Component/MobileComponent.php:268
+msgid "Engine %s not available"
+msgstr ""
+
+#: Lib/GeocodeLib.php:263
+msgid "Failed geocode parsing of '%s'"
+msgstr ""
+
+#: Lib/GeocodeLib.php:276;364
+msgid "Address '%s' has been geocoded"
+msgstr ""
+
+#: Lib/GeocodeLib.php:283
+msgid "Delay necessary for address '%s'"
+msgstr ""
+
+#: Lib/GeocodeLib.php:299;380
+msgid "Could not geocode '%s'"
+msgstr ""
+
+#: Lib/GeocodeLib.php:306;386
+msgid "Aborted after too many trials with '%s'"
+msgstr ""
+
+#: Lib/GeocodeLib.php:343
+msgid "Could not retrieve url with '%s'"
+msgstr ""
+
+#: Lib/GeocodeLib.php:351
+msgid "Failed reverseGeocode parsing of '%s'"
+msgstr ""
+
+#: Lib/GeocodeLib.php:371
+msgid "Delay necessary for '%s'"
+msgstr ""
+
+#: Lib/GeocodeLib.php:388
+msgid "Too many trials - abort"
+msgstr ""
+
+#: Lib/GeocodeLib.php:423
+msgid "Inconclusive result (total of %s)"
+msgstr ""
+
+#: Lib/GeocodeLib.php:429
+msgid "Accuracy not good enough (%s instead of at least %s)"
+msgstr ""
+
+#: Lib/GeocodeLib.php:444
+msgid "Expectation not reached (we have %s instead of at least one of %s)"
+msgstr ""
+
+#: Lib/GeocodeLib.php:746
+msgid "Invalid Unit: %s"
+msgstr ""
+
+#: Lib/GeocodeLib.php:790
+msgid "Invalid Unit"
+msgstr ""
+
+#: Lib/GeocodeLib.php:835
+msgid "Invalid level '%s'"
+msgstr ""
+
+#: Lib/SpellLib.php:39
+#: Test/Case/Lib/SpellLibTest.php:13
+msgid "Module %s not installed"
+msgstr ""
+
+#: Lib/SpellLib.php:52
+msgid "Engine %s not found"
+msgstr ""
+
+#: Lib/SpellLib.php:58
+msgid "Dictionary %s not found"
+msgstr ""
+
+#: Lib/Misc/ZodiacLib.php:157
+msgid "zodiacAquarius"
+msgstr ""
+
+#: Lib/Misc/ZodiacLib.php:158
+msgid "zodiacPisces"
+msgstr ""
+
+#: Lib/Misc/ZodiacLib.php:159
+#: Test/Case/Lib/Misc/ZodiacLibTest.php:34
+msgid "zodiacAries"
+msgstr ""
+
+#: Lib/Misc/ZodiacLib.php:160
+msgid "zodiacTaurus"
+msgstr ""
+
+#: Lib/Misc/ZodiacLib.php:161
+msgid "zodiacGemini"
+msgstr ""
+
+#: Lib/Misc/ZodiacLib.php:162
+msgid "zodiacCancer"
+msgstr ""
+
+#: Lib/Misc/ZodiacLib.php:163
+msgid "zodiacLeo"
+msgstr ""
+
+#: Lib/Misc/ZodiacLib.php:164
+msgid "zodiacVirgo"
+msgstr ""
+
+#: Lib/Misc/ZodiacLib.php:165
+msgid "zodiacLibra"
+msgstr ""
+
+#: Lib/Misc/ZodiacLib.php:166
+msgid "zodiacScorpio"
+msgstr ""
+
+#: Lib/Misc/ZodiacLib.php:167
+msgid "zodiacSagittarius"
+msgstr ""
+
+#: Lib/Misc/ZodiacLib.php:168
+msgid "zodiacCapricorn"
+msgstr ""
+
+#: Lib/Utility/FolderLib.php:42
+msgid "%s removed"
+msgstr ""
+
+#: Lib/Utility/FolderLib.php:44
+msgid "%s NOT removed"
+msgstr ""
+
+#: Lib/Utility/TimeLib.php:468;521
+#: Test/Case/Lib/Utility/TimeLibTest.php:113;221
+msgid "o'clock"
+msgstr ""
+
+#: Lib/Utility/TimeLib.php:740;891
+#: Test/Case/Lib/Utility/TimeLibTest.php:551
+msgid "%s ago"
+msgstr ""
+
+#: Lib/Utility/TimeLib.php:744
+msgid "in %s"
+msgstr ""
+
+#: Lib/Utility/TimeLib.php:780
+msgid "Month"
+msgstr ""
+
+#: Lib/Utility/TimeLib.php:781
+msgid "Day"
+msgstr ""
+
+#: Lib/Utility/TimeLib.php:782
+msgid "Hour"
+msgstr ""
+
+#: Lib/Utility/TimeLib.php:783
+msgid "Minute"
+msgstr ""
+
+#: Lib/Utility/TimeLib.php:784
+msgid "Second"
+msgstr ""
+
+#: Lib/Utility/TimeLib.php:787
+msgid "Months"
+msgstr ""
+
+#: Lib/Utility/TimeLib.php:788
+#: Test/Case/Lib/Utility/TimeLibTest.php:551;555;664
+msgid "Days"
+msgstr ""
+
+#: Lib/Utility/TimeLib.php:789
+#: Test/Case/Lib/Utility/TimeLibTest.php:551;555;664
+msgid "Hours"
+msgstr ""
+
+#: Lib/Utility/TimeLib.php:790
+#: Test/Case/Lib/Utility/TimeLibTest.php:656;660
+msgid "Minutes"
+msgstr ""
+
+#: Lib/Utility/TimeLib.php:791
+#: Test/Case/Lib/Utility/TimeLibTest.php:656
+msgid "Seconds"
+msgstr ""
+
+#: Lib/Utility/TimeLib.php:890
+#: Test/Case/Lib/Utility/TimeLibTest.php:559
+msgid "justNow"
+msgstr ""
+
+#: Lib/Utility/TimeLib.php:891
+#: Test/Case/Lib/Utility/TimeLibTest.php:555
+msgid "In %s"
+msgstr ""
+
+#: Lib/Utility/TimeLib.php:990
+#: Test/Case/Lib/Utility/TimeLibTest.php:173;233;262;263;264
+#: View/Helper/DatetimeHelper.php:93
+msgid "Today"
+msgstr ""
+
+#: Lib/Utility/TimeLib.php:991
+#: Test/Case/Lib/Utility/TimeLibTest.php:264;265
+#: View/Helper/DatetimeHelper.php:96
+msgid "Tomorrow"
+msgstr ""
+
+#: Lib/Utility/TimeLib.php:992
+#: Test/Case/Lib/Utility/TimeLibTest.php:263;265
+#: View/Helper/DatetimeHelper.php:99
+msgid "Yesterday"
+msgstr ""
+
+#: Lib/Utility/TimeLib.php:993
+msgid "The day after tomorrow"
+msgstr ""
+
+#: Lib/Utility/TimeLib.php:994
+msgid "The day before yesterday"
+msgstr ""
+
+#: Model/Behavior/CaptchaBehavior.php:73;173
+msgid "captchaContentMissing"
+msgstr ""
+
+#: Model/Behavior/CaptchaBehavior.php:76
+msgid "captchaIllegalContent"
+msgstr ""
+
+#: Model/Behavior/CaptchaBehavior.php:79
+msgid "captchaResultTooFast"
+msgstr ""
+
+#: Model/Behavior/CaptchaBehavior.php:82
+msgid "captchaResultTooLate"
+msgstr ""
+
+#: Model/Behavior/CaptchaBehavior.php:85
+msgid "captchaResultIncorrect"
+msgstr ""
+
+#: Model/Behavior/CaptchaBehavior.php:117
+msgid "Illegal call"
+msgstr ""
+
+#: Model/Behavior/CaptchaBehavior.php:121
+msgid "Illegal content"
+msgstr ""
+
+#: Model/Behavior/CaptchaBehavior.php:182
+msgid "Captcha incorrect"
+msgstr ""
+
+#: Model/Behavior/CustomFindsBehavior.php:39
+msgid "The behavior \"Containable\", if used together with \"CustomFinds\" needs to be loaded before."
+msgstr ""
+
+#: Model/Behavior/LogableBehavior.php:401
+msgid "deleted"
+msgstr ""
+
+#: Model/Behavior/LogableBehavior.php:483
+msgid "added"
+msgstr ""
+
+#: Model/Behavior/LogableBehavior.php:485
+msgid "updated"
+msgstr ""
+
+#: Model/Behavior/LogableBehavior.php:624
+msgid "Custom action"
+msgstr ""
+
+#: Model/Behavior/LogableBehavior.php:627
+msgid "by"
+msgstr ""
+
+#: Model/Behavior/LogableBehavior.php:634
+msgid "by System"
+msgstr ""
+
+#: Model/Behavior/PasswordableBehavior.php:231
+#: Test/Case/Model/Behavior/PasswordableBehaviorTest.php:95
+msgid "valErrPwdNotMatch"
+msgstr "Las contraseñas no coinciden"
+
+#: Test/Case/Lib/Utility/TimeLibTest.php:263;264;265
+msgid "until"
+msgstr ""
+
+#: Test/Case/Lib/Utility/TimeLibTest.php:472;481;487
+msgid "Sunday"
+msgstr ""
+
+#: Test/Case/Lib/Utility/TimeLibTest.php:475
+msgid "Tue"
+msgstr ""
+
+#: Test/Case/Lib/Utility/TimeLibTest.php:478
+msgid "Saturday"
+msgstr ""
+
+#: Test/Case/Lib/Utility/TimeLibTest.php:484
+msgid "Tuesday"
+msgstr ""
+
+#: Test/Case/Lib/Utility/TimeLibTest.php:498
+msgid "November"
+msgstr ""
+
+#: Test/Case/Lib/Utility/TimeLibTest.php:501
+msgid "January"
+msgstr ""
+
+#: Test/Case/Lib/Utility/TimeLibTest.php:504
+msgid "Feb"
+msgstr ""
+
+#: Test/Case/Lib/Utility/TimeLibTest.php:507
+msgid "May"
+msgstr ""
+
+#: Test/Case/Model/MyModelTest.php:552
+msgid "e %s f"
+msgstr ""
+
+#: Test/Case/Model/MyModelTest.php:558
+msgid "e %s f %s g"
+msgstr ""
+
+#: Test/Case/Model/MyModelTest.php:564
+msgid "e %s f %s g %s"
+msgstr ""
+
+#: Test/Case/Model/MyModelTest.php:582
+msgid "a %s b %s c %s %s %s %s %s h %s"
+msgstr ""
+
+#: Test/Case/Model/Behavior/BitmaskedBehaviorTest.php:191
+msgid "Active"
+msgstr ""
+
+#: Test/Case/Model/Behavior/BitmaskedBehaviorTest.php:192
+msgid "Published"
+msgstr ""
+
+#: Test/Case/Model/Behavior/BitmaskedBehaviorTest.php:193
+msgid "Approved"
+msgstr ""
+
+#: Test/Case/Model/Behavior/BitmaskedBehaviorTest.php:194
+msgid "Flagged"
+msgstr ""
+
+#: Test/Case/Model/Behavior/GeocoderBehaviorTest.php:138
+msgid "validateLongitudeError"
+msgstr ""
+
+#: Test/Case/Model/Behavior/MasterPasswordBehaviorTest.php:78
+msgid "No way"
+msgstr ""
+
+#: Test/Case/Model/Behavior/PasswordableBehaviorTest.php:769;770
+msgid "valErrBetweenCharacters %s %s"
+msgstr "La contraseña debe tener entre %s y %s caracteres"
+
+#: Test/Case/Model/Behavior/SluggedBehaviorTest.php:288
+msgid "and"
+msgstr ""
+
+#: Test/Case/View/Helper/CommonHelperTest.php:240;255
+msgid "Houses"
+msgstr ""
+
+#: Test/Case/View/Helper/CommonHelperTest.php:244;262
+msgid "House"
+msgstr ""
+
+#: Test/Case/View/Helper/FormatHelperTest.php:64;75;87;99
+msgid "Edit"
+msgstr ""
+
+#: Test/Case/View/Helper/FormatHelperTest.php:158;170
+#: View/Helper/FormatHelper.php:669
+msgid "Yes"
+msgstr ""
+
+#: Test/Case/View/Helper/FormatHelperTest.php:162;174
+#: View/Helper/FormatHelper.php:670
+msgid "No"
+msgstr ""
+
+#: View/RssView.php:222
+msgid "The prefix %s is not specified."
+msgstr ""
+
+#: View/Elements/master_password.ctp:9
+msgid "Master Password"
+msgstr ""
+
+#: View/Elements/master_password.ctp:10
+msgid "Password"
+msgstr ""
+
+#: View/Elements/pagination.ctp:12
+msgid "first"
+msgstr ""
+
+#: View/Elements/pagination.ctp:15
+msgid "last"
+msgstr ""
+
+#: View/Elements/pagination.ctp:18
+msgid "previous"
+msgstr ""
+
+#: View/Elements/pagination.ctp:21
+#: View/Helper/FormatHelper.php:155;157
+msgid "next"
+msgstr ""
+
+#: View/Elements/pagination.ctp:38
+msgid "Page %page% of %pages%, showing %current% records out of %count% total"
+msgstr ""
+
+#: View/Helper/CaptchaHelper.php:40
+msgid "zero"
+msgstr ""
+
+#: View/Helper/CaptchaHelper.php:40
+msgid "one"
+msgstr ""
+
+#: View/Helper/CaptchaHelper.php:40
+msgid "two"
+msgstr ""
+
+#: View/Helper/CaptchaHelper.php:40
+msgid "three"
+msgstr ""
+
+#: View/Helper/CaptchaHelper.php:40
+msgid "four"
+msgstr ""
+
+#: View/Helper/CaptchaHelper.php:40
+msgid "five"
+msgstr ""
+
+#: View/Helper/CaptchaHelper.php:40
+msgid "six"
+msgstr ""
+
+#: View/Helper/CaptchaHelper.php:40
+msgid "seven"
+msgstr ""
+
+#: View/Helper/CaptchaHelper.php:40
+msgid "eight"
+msgstr ""
+
+#: View/Helper/CaptchaHelper.php:40
+msgid "nine"
+msgstr ""
+
+#: View/Helper/CaptchaHelper.php:40
+msgid "ten"
+msgstr ""
+
+#: View/Helper/CaptchaHelper.php:43
+msgid "calcPlus"
+msgstr ""
+
+#: View/Helper/CaptchaHelper.php:43
+msgid "calcMinus"
+msgstr ""
+
+#: View/Helper/CaptchaHelper.php:43
+msgid "calcTimes"
+msgstr ""
+
+#: View/Helper/CaptchaHelper.php:126
+msgid "Captcha"
+msgstr ""
+
+#: View/Helper/CaptchaHelper.php:126
+msgid "captchaExplained"
+msgstr ""
+
+#: View/Helper/CaptchaHelper.php:129
+msgid "captchaTip"
+msgstr ""
+
+#: View/Helper/CommonHelper.php:373
+msgid "Subscribe to this feed"
+msgstr ""
+
+#: View/Helper/CommonHelper.php:502
+msgid "Please enable cookies"
+msgstr ""
+
+#: View/Helper/DatetimeHelper.php:75
+msgid "publishedAlready"
+msgstr ""
+
+#: View/Helper/DatetimeHelper.php:75
+msgid "publishedToday"
+msgstr ""
+
+#: View/Helper/DatetimeHelper.php:75
+msgid "publishedNotYet"
+msgstr ""
+
+#: View/Helper/FlattrHelper.php:101
+msgid "Donate"
+msgstr ""
+
+#: View/Helper/FormExtHelper.php:1118
+msgid "Selection"
+msgstr ""
+
+#: View/Helper/FormExtHelper.php:1120
+msgid "All"
+msgstr ""
+
+#: View/Helper/FormExtHelper.php:1121
+msgid "None"
+msgstr ""
+
+#: View/Helper/FormExtHelper.php:1122
+msgid "Revert"
+msgstr ""
+
+#: View/Helper/FormatHelper.php:56
+msgid "consentThis"
+msgstr ""
+
+#: View/Helper/FormatHelper.php:57
+msgid "dissentThis"
+msgstr ""
+
+#: View/Helper/FormatHelper.php:60
+msgid "alreadyVoted"
+msgstr ""
+
+#: View/Helper/FormatHelper.php:144;146
+msgid "prev"
+msgstr ""
+
+#: View/Helper/FormatHelper.php:146
+msgid "noPrev"
+msgstr ""
+
+#: View/Helper/FormatHelper.php:157
+msgid "noNext"
+msgstr ""
+
+#: View/Helper/FormatHelper.php:279
+msgid "prio"
+msgstr ""
+
+#: View/Helper/FormatHelper.php:502
+msgid "of"
+msgstr ""
+
+#: View/Helper/FormatHelper.php:531
+msgid "Language"
+msgstr ""
+
+#: View/Helper/FormatHelper.php:546
+msgid "active"
+msgstr ""
+
+#: View/Helper/FormatHelper.php:588
+#: View/Helper/TextExtHelper.php:150
+msgid "for use in an external mail client"
+msgstr ""
+
+#: View/Helper/FormatHelper.php:802
+msgid "notAvailable"
+msgstr ""
+
+#: View/Helper/FormatHelper.php:870
+msgid "Percent"
+msgstr ""
+
+#: View/Helper/FormatHelper.php:950;951
+msgid "color"
+msgstr ""
+
+#: View/Helper/GoogleMapV3Helper.php:434
+msgid "Map cannot be displayed!"
+msgstr ""
+
+#: View/Helper/GoogleMapV3Helper.php:596
+msgid "Enter your address"
+msgstr ""
+
+#: View/Helper/GoogleMapV3Helper.php:597
+msgid "Get directions"
+msgstr ""
+
+#: View/Helper/GoogleMapV3Helper.php:1272
+msgid "Map"
+msgstr ""
+
+#: View/Qlogin/admin_index.ctp:3;27;29
+msgid "Qlogins"
+msgstr ""
+
+#: View/Qlogin/admin_index.ctp:4
+msgid "valid ones"
+msgstr ""
+
+#: View/Qlogin/admin_index.ctp:7
+msgid "Generated Link"
+msgstr ""
+
+#: View/Qlogin/admin_index.ctp:11;14
+msgid "Add %s"
+msgstr ""
+
+#: View/Qlogin/admin_index.ctp:11;14
+msgid "Qlogin"
+msgstr ""
+
+#: View/Qlogin/admin_index.ctp:20
+msgid "Submit"
+msgstr ""
+
+#: View/Qlogin/admin_index.ctp:27
+msgid "Reset %s"
+msgstr ""
+
+#: View/Qlogin/admin_index.ctp:27
+msgid "Sure?"
+msgstr ""
+
+#: View/Qlogin/admin_index.ctp:29
+msgid "List %s"
+msgstr ""
+
+#~ msgid "valErrProvideCurrentPwd"
+#~ msgstr "Provea la contraseña actual correcta"
+
+#~ msgid "valErrCurrentPwdIncorrect"
+#~ msgstr "La contraseña actual es incorrecta"

+ 736 - 0
src/Locale/tools.pot

@@ -0,0 +1,736 @@
+# LANGUAGE translation of CakePHP Application
+# Copyright YEAR NAME <EMAIL@ADDRESS>
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PROJECT VERSION\n"
+"POT-Creation-Date: 2014-11-09 00:23+0000\n"
+"PO-Revision-Date: YYYY-mm-DD HH:MM+ZZZZ\n"
+"Last-Translator: NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <EMAIL@ADDRESS>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
+
+#: Controller/QloginController.php:38
+msgid "Invalid Key"
+msgstr ""
+
+#: Controller/QloginController.php:50
+msgid "You successfully logged in via qlogin"
+msgstr ""
+
+#: Controller/QloginController.php:108
+msgid "Success"
+msgstr ""
+
+#: Controller/TinyUrlsController.php:100
+msgid "Done"
+msgstr ""
+
+#: Controller/Component/AuthExtComponent.php:80
+msgid "invalidLoginCredentials"
+msgstr ""
+
+#: Controller/Component/AuthExtComponent.php:87;99;103
+msgid "Account not active yet"
+msgstr ""
+
+#: Controller/Component/AuthExtComponent.php:91;107
+msgid "Account temporarily locked"
+msgstr ""
+
+#: Controller/Component/AuthExtComponent.php:93;109;116
+msgid "Reason"
+msgstr ""
+
+#: Controller/Component/AuthExtComponent.php:114
+msgid "Account deleted"
+msgstr ""
+
+#: Controller/Component/AuthExtComponent.php:121
+msgid "Unknown Error"
+msgstr ""
+
+#: Controller/Component/AuthExtComponent.php:126
+msgid "Email not active yet"
+msgstr ""
+
+#: Controller/Component/CalendarComponent.php:65;77
+msgid "invalid date"
+msgstr ""
+
+#: Controller/Component/CommonComponent.php:506
+msgid "Meta Type invalid"
+msgstr ""
+
+#: Controller/Component/CommonComponent.php:819
+msgid "Comma"
+msgstr ""
+
+#: Controller/Component/CommonComponent.php:819
+msgid "Semicolon"
+msgstr ""
+
+#: Controller/Component/CommonComponent.php:819
+msgid "Space"
+msgstr ""
+
+#: Controller/Component/CommonComponent.php:820
+msgid "Tabulator"
+msgstr ""
+
+#: Controller/Component/CommonComponent.php:820
+msgid "New Line"
+msgstr ""
+
+#: Controller/Component/MobileComponent.php:268
+msgid "Engine %s not available"
+msgstr ""
+
+#: Lib/GeocodeLib.php:263
+msgid "Failed geocode parsing of '%s'"
+msgstr ""
+
+#: Lib/GeocodeLib.php:276;364
+msgid "Address '%s' has been geocoded"
+msgstr ""
+
+#: Lib/GeocodeLib.php:283
+msgid "Delay necessary for address '%s'"
+msgstr ""
+
+#: Lib/GeocodeLib.php:299;380
+msgid "Could not geocode '%s'"
+msgstr ""
+
+#: Lib/GeocodeLib.php:306;386
+msgid "Aborted after too many trials with '%s'"
+msgstr ""
+
+#: Lib/GeocodeLib.php:343
+msgid "Could not retrieve url with '%s'"
+msgstr ""
+
+#: Lib/GeocodeLib.php:351
+msgid "Failed reverseGeocode parsing of '%s'"
+msgstr ""
+
+#: Lib/GeocodeLib.php:371
+msgid "Delay necessary for '%s'"
+msgstr ""
+
+#: Lib/GeocodeLib.php:388
+msgid "Too many trials - abort"
+msgstr ""
+
+#: Lib/GeocodeLib.php:423
+msgid "Inconclusive result (total of %s)"
+msgstr ""
+
+#: Lib/GeocodeLib.php:429
+msgid "Accuracy not good enough (%s instead of at least %s)"
+msgstr ""
+
+#: Lib/GeocodeLib.php:444
+msgid "Expectation not reached (we have %s instead of at least one of %s)"
+msgstr ""
+
+#: Lib/GeocodeLib.php:746
+msgid "Invalid Unit: %s"
+msgstr ""
+
+#: Lib/GeocodeLib.php:790
+msgid "Invalid Unit"
+msgstr ""
+
+#: Lib/GeocodeLib.php:835
+msgid "Invalid level '%s'"
+msgstr ""
+
+#: Lib/SpellLib.php:39
+#: Test/Case/Lib/SpellLibTest.php:13
+msgid "Module %s not installed"
+msgstr ""
+
+#: Lib/SpellLib.php:52
+msgid "Engine %s not found"
+msgstr ""
+
+#: Lib/SpellLib.php:58
+msgid "Dictionary %s not found"
+msgstr ""
+
+#: Lib/Misc/ZodiacLib.php:157
+msgid "zodiacAquarius"
+msgstr ""
+
+#: Lib/Misc/ZodiacLib.php:158
+msgid "zodiacPisces"
+msgstr ""
+
+#: Lib/Misc/ZodiacLib.php:159
+#: Test/Case/Lib/Misc/ZodiacLibTest.php:34
+msgid "zodiacAries"
+msgstr ""
+
+#: Lib/Misc/ZodiacLib.php:160
+msgid "zodiacTaurus"
+msgstr ""
+
+#: Lib/Misc/ZodiacLib.php:161
+msgid "zodiacGemini"
+msgstr ""
+
+#: Lib/Misc/ZodiacLib.php:162
+msgid "zodiacCancer"
+msgstr ""
+
+#: Lib/Misc/ZodiacLib.php:163
+msgid "zodiacLeo"
+msgstr ""
+
+#: Lib/Misc/ZodiacLib.php:164
+msgid "zodiacVirgo"
+msgstr ""
+
+#: Lib/Misc/ZodiacLib.php:165
+msgid "zodiacLibra"
+msgstr ""
+
+#: Lib/Misc/ZodiacLib.php:166
+msgid "zodiacScorpio"
+msgstr ""
+
+#: Lib/Misc/ZodiacLib.php:167
+msgid "zodiacSagittarius"
+msgstr ""
+
+#: Lib/Misc/ZodiacLib.php:168
+msgid "zodiacCapricorn"
+msgstr ""
+
+#: Lib/Utility/FolderLib.php:42
+msgid "%s removed"
+msgstr ""
+
+#: Lib/Utility/FolderLib.php:44
+msgid "%s NOT removed"
+msgstr ""
+
+#: Lib/Utility/TimeLib.php:468;521
+#: Test/Case/Lib/Utility/TimeLibTest.php:113;221
+msgid "o'clock"
+msgstr ""
+
+#: Lib/Utility/TimeLib.php:740;891
+#: Test/Case/Lib/Utility/TimeLibTest.php:551
+msgid "%s ago"
+msgstr ""
+
+#: Lib/Utility/TimeLib.php:744
+msgid "in %s"
+msgstr ""
+
+#: Lib/Utility/TimeLib.php:780
+msgid "Month"
+msgstr ""
+
+#: Lib/Utility/TimeLib.php:781
+msgid "Day"
+msgstr ""
+
+#: Lib/Utility/TimeLib.php:782
+msgid "Hour"
+msgstr ""
+
+#: Lib/Utility/TimeLib.php:783
+msgid "Minute"
+msgstr ""
+
+#: Lib/Utility/TimeLib.php:784
+msgid "Second"
+msgstr ""
+
+#: Lib/Utility/TimeLib.php:787
+msgid "Months"
+msgstr ""
+
+#: Lib/Utility/TimeLib.php:788
+#: Test/Case/Lib/Utility/TimeLibTest.php:551;555;664
+msgid "Days"
+msgstr ""
+
+#: Lib/Utility/TimeLib.php:789
+#: Test/Case/Lib/Utility/TimeLibTest.php:551;555;664
+msgid "Hours"
+msgstr ""
+
+#: Lib/Utility/TimeLib.php:790
+#: Test/Case/Lib/Utility/TimeLibTest.php:656;660
+msgid "Minutes"
+msgstr ""
+
+#: Lib/Utility/TimeLib.php:791
+#: Test/Case/Lib/Utility/TimeLibTest.php:656
+msgid "Seconds"
+msgstr ""
+
+#: Lib/Utility/TimeLib.php:890
+#: Test/Case/Lib/Utility/TimeLibTest.php:559
+msgid "justNow"
+msgstr ""
+
+#: Lib/Utility/TimeLib.php:891
+#: Test/Case/Lib/Utility/TimeLibTest.php:555
+msgid "In %s"
+msgstr ""
+
+#: Lib/Utility/TimeLib.php:990
+#: Test/Case/Lib/Utility/TimeLibTest.php:173;233;262;263;264
+#: View/Helper/DatetimeHelper.php:93
+msgid "Today"
+msgstr ""
+
+#: Lib/Utility/TimeLib.php:991
+#: Test/Case/Lib/Utility/TimeLibTest.php:264;265
+#: View/Helper/DatetimeHelper.php:96
+msgid "Tomorrow"
+msgstr ""
+
+#: Lib/Utility/TimeLib.php:992
+#: Test/Case/Lib/Utility/TimeLibTest.php:263;265
+#: View/Helper/DatetimeHelper.php:99
+msgid "Yesterday"
+msgstr ""
+
+#: Lib/Utility/TimeLib.php:993
+msgid "The day after tomorrow"
+msgstr ""
+
+#: Lib/Utility/TimeLib.php:994
+msgid "The day before yesterday"
+msgstr ""
+
+#: Model/Behavior/CaptchaBehavior.php:73;173
+msgid "captchaContentMissing"
+msgstr ""
+
+#: Model/Behavior/CaptchaBehavior.php:76
+msgid "captchaIllegalContent"
+msgstr ""
+
+#: Model/Behavior/CaptchaBehavior.php:79
+msgid "captchaResultTooFast"
+msgstr ""
+
+#: Model/Behavior/CaptchaBehavior.php:82
+msgid "captchaResultTooLate"
+msgstr ""
+
+#: Model/Behavior/CaptchaBehavior.php:85
+msgid "captchaResultIncorrect"
+msgstr ""
+
+#: Model/Behavior/CaptchaBehavior.php:117
+msgid "Illegal call"
+msgstr ""
+
+#: Model/Behavior/CaptchaBehavior.php:121
+msgid "Illegal content"
+msgstr ""
+
+#: Model/Behavior/CaptchaBehavior.php:182
+msgid "Captcha incorrect"
+msgstr ""
+
+#: Model/Behavior/CustomFindsBehavior.php:39
+msgid "The behavior \"Containable\", if used together with \"CustomFinds\" needs to be loaded before."
+msgstr ""
+
+#: Model/Behavior/LogableBehavior.php:401
+msgid "deleted"
+msgstr ""
+
+#: Model/Behavior/LogableBehavior.php:483
+msgid "added"
+msgstr ""
+
+#: Model/Behavior/LogableBehavior.php:485
+msgid "updated"
+msgstr ""
+
+#: Model/Behavior/LogableBehavior.php:624
+msgid "Custom action"
+msgstr ""
+
+#: Model/Behavior/LogableBehavior.php:627
+msgid "by"
+msgstr ""
+
+#: Model/Behavior/LogableBehavior.php:634
+msgid "by System"
+msgstr ""
+
+#: Model/Behavior/PasswordableBehavior.php:231
+#: Test/Case/Model/Behavior/PasswordableBehaviorTest.php:95
+msgid "valErrPwdNotMatch"
+msgstr ""
+
+#: Test/Case/Lib/Utility/TimeLibTest.php:263;264;265
+msgid "until"
+msgstr ""
+
+#: Test/Case/Lib/Utility/TimeLibTest.php:472;481;487
+msgid "Sunday"
+msgstr ""
+
+#: Test/Case/Lib/Utility/TimeLibTest.php:475
+msgid "Tue"
+msgstr ""
+
+#: Test/Case/Lib/Utility/TimeLibTest.php:478
+msgid "Saturday"
+msgstr ""
+
+#: Test/Case/Lib/Utility/TimeLibTest.php:484
+msgid "Tuesday"
+msgstr ""
+
+#: Test/Case/Lib/Utility/TimeLibTest.php:498
+msgid "November"
+msgstr ""
+
+#: Test/Case/Lib/Utility/TimeLibTest.php:501
+msgid "January"
+msgstr ""
+
+#: Test/Case/Lib/Utility/TimeLibTest.php:504
+msgid "Feb"
+msgstr ""
+
+#: Test/Case/Lib/Utility/TimeLibTest.php:507
+msgid "May"
+msgstr ""
+
+#: Test/Case/Model/MyModelTest.php:552
+msgid "e %s f"
+msgstr ""
+
+#: Test/Case/Model/MyModelTest.php:558
+msgid "e %s f %s g"
+msgstr ""
+
+#: Test/Case/Model/MyModelTest.php:564
+msgid "e %s f %s g %s"
+msgstr ""
+
+#: Test/Case/Model/MyModelTest.php:582
+msgid "a %s b %s c %s %s %s %s %s h %s"
+msgstr ""
+
+#: Test/Case/Model/Behavior/BitmaskedBehaviorTest.php:191
+msgid "Active"
+msgstr ""
+
+#: Test/Case/Model/Behavior/BitmaskedBehaviorTest.php:192
+msgid "Published"
+msgstr ""
+
+#: Test/Case/Model/Behavior/BitmaskedBehaviorTest.php:193
+msgid "Approved"
+msgstr ""
+
+#: Test/Case/Model/Behavior/BitmaskedBehaviorTest.php:194
+msgid "Flagged"
+msgstr ""
+
+#: Test/Case/Model/Behavior/GeocoderBehaviorTest.php:138
+msgid "validateLongitudeError"
+msgstr ""
+
+#: Test/Case/Model/Behavior/MasterPasswordBehaviorTest.php:78
+msgid "No way"
+msgstr ""
+
+#: Test/Case/Model/Behavior/PasswordableBehaviorTest.php:769;770
+msgid "valErrBetweenCharacters %s %s"
+msgstr ""
+
+#: Test/Case/Model/Behavior/SluggedBehaviorTest.php:288
+msgid "and"
+msgstr ""
+
+#: Test/Case/View/Helper/CommonHelperTest.php:240;255
+msgid "Houses"
+msgstr ""
+
+#: Test/Case/View/Helper/CommonHelperTest.php:244;262
+msgid "House"
+msgstr ""
+
+#: Test/Case/View/Helper/FormatHelperTest.php:64;75;87;99
+msgid "Edit"
+msgstr ""
+
+#: Test/Case/View/Helper/FormatHelperTest.php:158;170
+#: View/Helper/FormatHelper.php:669
+msgid "Yes"
+msgstr ""
+
+#: Test/Case/View/Helper/FormatHelperTest.php:162;174
+#: View/Helper/FormatHelper.php:670
+msgid "No"
+msgstr ""
+
+#: View/RssView.php:222
+msgid "The prefix %s is not specified."
+msgstr ""
+
+#: View/Elements/master_password.ctp:9
+msgid "Master Password"
+msgstr ""
+
+#: View/Elements/master_password.ctp:10
+msgid "Password"
+msgstr ""
+
+#: View/Elements/pagination.ctp:12
+msgid "first"
+msgstr ""
+
+#: View/Elements/pagination.ctp:15
+msgid "last"
+msgstr ""
+
+#: View/Elements/pagination.ctp:18
+msgid "previous"
+msgstr ""
+
+#: View/Elements/pagination.ctp:21
+#: View/Helper/FormatHelper.php:155;157
+msgid "next"
+msgstr ""
+
+#: View/Elements/pagination.ctp:38
+msgid "Page %page% of %pages%, showing %current% records out of %count% total"
+msgstr ""
+
+#: View/Helper/CaptchaHelper.php:40
+msgid "zero"
+msgstr ""
+
+#: View/Helper/CaptchaHelper.php:40
+msgid "one"
+msgstr ""
+
+#: View/Helper/CaptchaHelper.php:40
+msgid "two"
+msgstr ""
+
+#: View/Helper/CaptchaHelper.php:40
+msgid "three"
+msgstr ""
+
+#: View/Helper/CaptchaHelper.php:40
+msgid "four"
+msgstr ""
+
+#: View/Helper/CaptchaHelper.php:40
+msgid "five"
+msgstr ""
+
+#: View/Helper/CaptchaHelper.php:40
+msgid "six"
+msgstr ""
+
+#: View/Helper/CaptchaHelper.php:40
+msgid "seven"
+msgstr ""
+
+#: View/Helper/CaptchaHelper.php:40
+msgid "eight"
+msgstr ""
+
+#: View/Helper/CaptchaHelper.php:40
+msgid "nine"
+msgstr ""
+
+#: View/Helper/CaptchaHelper.php:40
+msgid "ten"
+msgstr ""
+
+#: View/Helper/CaptchaHelper.php:43
+msgid "calcPlus"
+msgstr ""
+
+#: View/Helper/CaptchaHelper.php:43
+msgid "calcMinus"
+msgstr ""
+
+#: View/Helper/CaptchaHelper.php:43
+msgid "calcTimes"
+msgstr ""
+
+#: View/Helper/CaptchaHelper.php:126
+msgid "Captcha"
+msgstr ""
+
+#: View/Helper/CaptchaHelper.php:126
+msgid "captchaExplained"
+msgstr ""
+
+#: View/Helper/CaptchaHelper.php:129
+msgid "captchaTip"
+msgstr ""
+
+#: View/Helper/CommonHelper.php:373
+msgid "Subscribe to this feed"
+msgstr ""
+
+#: View/Helper/CommonHelper.php:502
+msgid "Please enable cookies"
+msgstr ""
+
+#: View/Helper/DatetimeHelper.php:75
+msgid "publishedAlready"
+msgstr ""
+
+#: View/Helper/DatetimeHelper.php:75
+msgid "publishedToday"
+msgstr ""
+
+#: View/Helper/DatetimeHelper.php:75
+msgid "publishedNotYet"
+msgstr ""
+
+#: View/Helper/FlattrHelper.php:101
+msgid "Donate"
+msgstr ""
+
+#: View/Helper/FormExtHelper.php:1118
+msgid "Selection"
+msgstr ""
+
+#: View/Helper/FormExtHelper.php:1120
+msgid "All"
+msgstr ""
+
+#: View/Helper/FormExtHelper.php:1121
+msgid "None"
+msgstr ""
+
+#: View/Helper/FormExtHelper.php:1122
+msgid "Revert"
+msgstr ""
+
+#: View/Helper/FormatHelper.php:56
+msgid "consentThis"
+msgstr ""
+
+#: View/Helper/FormatHelper.php:57
+msgid "dissentThis"
+msgstr ""
+
+#: View/Helper/FormatHelper.php:60
+msgid "alreadyVoted"
+msgstr ""
+
+#: View/Helper/FormatHelper.php:144;146
+msgid "prev"
+msgstr ""
+
+#: View/Helper/FormatHelper.php:146
+msgid "noPrev"
+msgstr ""
+
+#: View/Helper/FormatHelper.php:157
+msgid "noNext"
+msgstr ""
+
+#: View/Helper/FormatHelper.php:279
+msgid "prio"
+msgstr ""
+
+#: View/Helper/FormatHelper.php:502
+msgid "of"
+msgstr ""
+
+#: View/Helper/FormatHelper.php:531
+msgid "Language"
+msgstr ""
+
+#: View/Helper/FormatHelper.php:546
+msgid "active"
+msgstr ""
+
+#: View/Helper/FormatHelper.php:588
+#: View/Helper/TextExtHelper.php:150
+msgid "for use in an external mail client"
+msgstr ""
+
+#: View/Helper/FormatHelper.php:802
+msgid "notAvailable"
+msgstr ""
+
+#: View/Helper/FormatHelper.php:870
+msgid "Percent"
+msgstr ""
+
+#: View/Helper/FormatHelper.php:950;951
+msgid "color"
+msgstr ""
+
+#: View/Helper/GoogleMapV3Helper.php:434
+msgid "Map cannot be displayed!"
+msgstr ""
+
+#: View/Helper/GoogleMapV3Helper.php:596
+msgid "Enter your address"
+msgstr ""
+
+#: View/Helper/GoogleMapV3Helper.php:597
+msgid "Get directions"
+msgstr ""
+
+#: View/Helper/GoogleMapV3Helper.php:1272
+msgid "Map"
+msgstr ""
+
+#: View/Qlogin/admin_index.ctp:3;27;29
+msgid "Qlogins"
+msgstr ""
+
+#: View/Qlogin/admin_index.ctp:4
+msgid "valid ones"
+msgstr ""
+
+#: View/Qlogin/admin_index.ctp:7
+msgid "Generated Link"
+msgstr ""
+
+#: View/Qlogin/admin_index.ctp:11;14
+msgid "Add %s"
+msgstr ""
+
+#: View/Qlogin/admin_index.ctp:11;14
+msgid "Qlogin"
+msgstr ""
+
+#: View/Qlogin/admin_index.ctp:20
+msgid "Submit"
+msgstr ""
+
+#: View/Qlogin/admin_index.ctp:27
+msgid "Reset %s"
+msgstr ""
+
+#: View/Qlogin/admin_index.ctp:27
+msgid "Sure?"
+msgstr ""
+
+#: View/Qlogin/admin_index.ctp:29
+msgid "List %s"
+msgstr ""

+ 94 - 0
src/Network/Email/Email.php

@@ -0,0 +1,94 @@
+<?php
+namespace Tools\Network\Email;
+
+use Cake\Network\Email\Email as CakeEmail;
+use Tools\Utility\Utility;
+use Tools\Utility\Mime;
+
+class Email extends CakeEmail {
+
+	protected $_wrapLength = null;
+
+	protected $_priority = null;
+
+	public function __construct($config = null) {
+		if ($config === null) {
+			$config = 'default';
+		}
+		parent::__construct($config);
+
+		//$this->resetAndSet();
+	}
+
+	/**
+	 * Set/Get wrapLength
+	 *
+	 * @param int $length Must not be more than CakeEmail::LINE_LENGTH_MUST
+	 * @return int|CakeEmail
+	 */
+	public function wrapLength($length = null) {
+		if ($length === null) {
+			return $this->_wrapLength;
+		}
+		$this->_wrapLength = $length;
+		return $this;
+	}
+
+	/**
+	 * Set/Get priority
+	 *
+	 * @param int $priority 1 (highest) to 5 (lowest)
+	 * @return int|CakeEmail
+	 */
+	public function priority($priority = null) {
+		if ($priority === null) {
+			return $this->_priority;
+		}
+		$this->_priority = $priority;
+		return $this;
+	}
+
+	/**
+	 * Fix line length
+	 *
+	 * @overwrite
+	 * @param string $message Message to wrap
+	 * @return array Wrapped message
+	 */
+	protected function _wrap($message, $wrapLength = CakeEmail::LINE_LENGTH_MUST) {
+		if ($this->_wrapLength !== null) {
+			$wrapLength = $this->_wrapLength;
+		}
+		return parent::_wrap($message, $wrapLength);
+	}
+
+	/**
+	 * EmailLib::resetAndSet()
+	 *
+	 * @return void
+	 */
+	public function reset() {
+		parent::reset();
+		$this->_priority = null;
+		$this->_wrapLength = null;
+
+		$this->_error = null;
+		$this->_debug = null;
+
+		if ($fromEmail = Configure::read('Config.systemEmail')) {
+			$fromName = Configure::read('Config.systemName');
+		} else {
+			$fromEmail = Configure::read('Config.adminEmail');
+			$fromName = Configure::read('Config.adminName');
+		}
+		if (!$fromEmail) {
+			throw new RuntimeException('You need to either define Config.systemEmail or Config.adminEmail in Configure.');
+		}
+		$this->from($fromEmail, $fromName);
+
+		if ($xMailer = Configure::read('Config.xMailer')) {
+			$this->addHeaders(array('X-Mailer' => $xMailer));
+		}
+	}
+
+}

+ 26 - 0
src/TestSuite/TestCase.php

@@ -8,4 +8,30 @@ use Cake\TestSuite\TestCase as CakeTestCase;
  *
  */
 abstract class TestCase extends CakeTestCase {
+
+	/**
+	 * Opposite wrapper method of assertWithinMargin.
+	 *
+	 * @param float $result
+	 * @param float $expected
+	 * @param float $margin
+	 * @param string $message
+	 * @return void
+	 */
+	protected static function assertNotWithinMargin($result, $expected, $margin, $message = '') {
+		$upper = $result + $margin;
+		$lower = $result - $margin;
+		return static::assertFalse((($expected <= $upper) && ($expected >= $lower)), $message);
+	}
+
+	/**
+	 * OsFix method
+	 *
+	 * @param string $string
+	 * @return string
+	 */
+	protected static function _osFix($string) {
+		return str_replace(array("\r\n", "\r"), "\n", $string);
+	}
+
 }

+ 832 - 0
src/Utility/Mime.php

@@ -0,0 +1,832 @@
+<?php
+namespace Tools\Utility;
+
+use Cake\Network\Response;
+
+App::uses('CakeResponse', 'Network');
+
+/**
+ * Wrapper to be able to read cake core's mime types as well as fix for missing ones
+ *
+ * @version 1.0
+ * @license MIT
+ * @author	Mark Scherer
+ */
+class Mime extends Response {
+
+	protected $_mimeTypesExt = array(
+		'3dm' => 'x-world/x-3dmf',
+		'3dmf' => 'x-world/x-3dmf',
+		'a' => 'application/octet-stream',
+		'aab' => 'application/x-authorware-bin',
+		'aam' => 'application/x-authorware-map',
+		'aas' => 'application/x-authorware-seg',
+		'abc' => 'text/vnd.abc',
+		'acgi' => 'text/html',
+		'afl' => 'video/animaflex',
+		'ai' => 'application/postscript',
+		'aif' => 'audio/aiff',
+		'aif' => 'audio/x-aiff',
+		'aifc' => 'audio/aiff',
+		'aifc' => 'audio/x-aiff',
+		'aiff' => 'audio/aiff',
+		'aiff' => 'audio/x-aiff',
+		'aim' => 'application/x-aim',
+		'aip' => 'text/x-audiosoft-intra',
+		'ani' => 'application/x-navi-animation',
+		'aos' => 'application/x-nokia-9000-communicator-add-on-software',
+		'aps' => 'application/mime',
+		'arc' => 'application/octet-stream',
+		'arj' => 'application/arj',
+		'arj' => 'application/octet-stream',
+		'art' => 'image/x-jg',
+		'asf' => 'video/x-ms-asf',
+		'asm' => 'text/x-asm',
+		'asp' => 'text/asp',
+		'asx' => 'application/x-mplayer2',
+		'asx' => 'video/x-ms-asf',
+		'asx' => 'video/x-ms-asf-plugin',
+		'au' => 'audio/basic',
+		'au' => 'audio/x-au',
+		'avi' => 'application/x-troff-msvideo',
+		'avi' => 'video/avi',
+		'avi' => 'video/msvideo',
+		'avi' => 'video/x-msvideo',
+		'avs' => 'video/avs-video',
+		'bcpio' => 'application/x-bcpio',
+		'bin' => 'application/mac-binary',
+		'bin' => 'application/macbinary',
+		'bin' => 'application/octet-stream',
+		'bin' => 'application/x-binary',
+		'bin' => 'application/x-macbinary',
+		'bm' => 'image/bmp',
+		'bmp' => 'image/bmp',
+		'bmp' => 'image/x-windows-bmp',
+		'boo' => 'application/book',
+		'book' => 'application/book',
+		'boz' => 'application/x-bzip2',
+		'bsh' => 'application/x-bsh',
+		'bz' => 'application/x-bzip',
+		'bz2' => 'application/x-bzip2',
+		'c' => 'text/plain',
+		'c' => 'text/x-c',
+		'c++' => 'text/plain',
+		'cat' => 'application/vnd.ms-pki.seccat',
+		'cc' => 'text/plain',
+		'cc' => 'text/x-c',
+		'ccad' => 'application/clariscad',
+		'cco' => 'application/x-cocoa',
+		'cdf' => 'application/cdf',
+		'cdf' => 'application/x-cdf',
+		'cdf' => 'application/x-netcdf',
+		'cer' => 'application/pkix-cert',
+		'cer' => 'application/x-x509-ca-cert',
+		'cha' => 'application/x-chat',
+		'chat' => 'application/x-chat',
+		'class' => 'application/java',
+		'class' => 'application/java-byte-code',
+		'class' => 'application/x-java-class',
+		'com' => 'application/octet-stream',
+		'com' => 'text/plain',
+		'conf' => 'text/plain',
+		'cpio' => 'application/x-cpio',
+		'cpp' => 'text/x-c',
+		'cpt' => 'application/mac-compactpro',
+		'cpt' => 'application/x-compactpro',
+		'cpt' => 'application/x-cpt',
+		'crl' => 'application/pkcs-crl',
+		'crl' => 'application/pkix-crl',
+		'crt' => 'application/pkix-cert',
+		'crt' => 'application/x-x509-ca-cert',
+		'crt' => 'application/x-x509-user-cert',
+		'csh' => 'application/x-csh',
+		'csh' => 'text/x-script.csh',
+		'css' => 'application/x-pointplus',
+		'css' => 'text/css',
+		'cxx' => 'text/plain',
+		'dcr' => 'application/x-director',
+		'deepv' => 'application/x-deepv',
+		'def' => 'text/plain',
+		'der' => 'application/x-x509-ca-cert',
+		'dif' => 'video/x-dv',
+		'dir' => 'application/x-director',
+		'dl' => 'video/dl',
+		'dl' => 'video/x-dl',
+		'doc' => 'application/msword',
+		'dot' => 'application/msword',
+		'dp' => 'application/commonground',
+		'drw' => 'application/drafting',
+		'dump' => 'application/octet-stream',
+		'dv' => 'video/x-dv',
+		'dvi' => 'application/x-dvi',
+		'dwf' => 'model/vnd.dwf',
+		'dwg' => 'application/acad',
+		'dwg' => 'image/vnd.dwg',
+		'dwg' => 'image/x-dwg',
+		'dxf' => 'application/dxf',
+		'dxf' => 'image/vnd.dwg',
+		'dxf' => 'image/x-dwg',
+		'dxr' => 'application/x-director',
+		'el' => 'text/x-script.elisp',
+		'elc' => 'application/x-bytecode.elisp',
+		'elc' => 'application/x-elc',
+		'env' => 'application/x-envoy',
+		'eps' => 'application/postscript',
+		'es' => 'application/x-esrehber',
+		'etx' => 'text/x-setext',
+		'evy' => 'application/envoy',
+		'evy' => 'application/x-envoy',
+		'exe' => 'application/octet-stream',
+		'f' => 'text/plain',
+		'f' => 'text/x-fortran',
+		'f77' => 'text/x-fortran',
+		'f90' => 'text/plain',
+		'f90' => 'text/x-fortran',
+		'fdf' => 'application/vnd.fdf',
+		'fif' => 'application/fractals',
+		'fif' => 'image/fif',
+		'fli' => 'video/fli',
+		'fli' => 'video/x-fli',
+		'flo' => 'image/florian',
+		'flx' => 'text/vnd.fmi.flexstor',
+		'fmf' => 'video/x-atomic3d-feature',
+		'for' => 'text/plain',
+		'for' => 'text/x-fortran',
+		'fpx' => 'image/vnd.fpx',
+		'fpx' => 'image/vnd.net-fpx',
+		'frl' => 'application/freeloader',
+		'funk' => 'audio/make',
+		'g' => 'text/plain',
+		'g3' => 'image/g3fax',
+		'gif' => 'image/gif',
+		'gl' => 'video/gl',
+		'gl' => 'video/x-gl',
+		'gsd' => 'audio/x-gsm',
+		'gsm' => 'audio/x-gsm',
+		'gsp' => 'application/x-gsp',
+		'gss' => 'application/x-gss',
+		'gtar' => 'application/x-gtar',
+		'gz' => 'application/x-compressed',
+		'gz' => 'application/x-gzip',
+		'gzip' => 'application/x-gzip',
+		'gzip' => 'multipart/x-gzip',
+		'h' => 'text/plain',
+		'h' => 'text/x-h',
+		'hdf' => 'application/x-hdf',
+		'help' => 'application/x-helpfile',
+		'hgl' => 'application/vnd.hp-hpgl',
+		'hh' => 'text/plain',
+		'hh' => 'text/x-h',
+		'hlb' => 'text/x-script',
+		'hlp' => 'application/hlp',
+		'hlp' => 'application/x-helpfile',
+		'hlp' => 'application/x-winhelp',
+		'hpg' => 'application/vnd.hp-hpgl',
+		'hpgl' => 'application/vnd.hp-hpgl',
+		'hqx' => 'application/binhex',
+		'hqx' => 'application/binhex4',
+		'hqx' => 'application/mac-binhex',
+		'hqx' => 'application/mac-binhex40',
+		'hqx' => 'application/x-binhex40',
+		'hqx' => 'application/x-mac-binhex40',
+		'hta' => 'application/hta',
+		'htc' => 'text/x-component',
+		'htmls' => 'text/html',
+		'htt' => 'text/webviewhtml',
+		'htx' => 'text/html',
+		'ice' => 'x-conference/x-cooltalk',
+		'ico' => 'image/x-icon',
+		'ics' => 'application/ics', // important for ipad to properly display ics files
+		'ical' => 'text/calendar',
+		'idc' => 'text/plain',
+		'ief' => 'image/ief',
+		'iefs' => 'image/ief',
+		'ifb' => 'text/calendar',
+		'iges' => 'application/iges',
+		'iges' => 'model/iges',
+		'igs' => 'application/iges',
+		'igs' => 'model/iges',
+		'ima' => 'application/x-ima',
+		'imap' => 'application/x-httpd-imap',
+		'inf' => 'application/inf',
+		'ins' => 'application/x-internett-signup',
+		'ip' => 'application/x-ip2',
+		'isu' => 'video/x-isvideo',
+		'it' => 'audio/it',
+		'iv' => 'application/x-inventor',
+		'ivr' => 'i-world/i-vrml',
+		'ivy' => 'application/x-livescreen',
+		'jam' => 'audio/x-jam',
+		'jav' => 'text/plain',
+		'jav' => 'text/x-java-source',
+		'java' => 'text/plain',
+		'java' => 'text/x-java-source',
+		'jcm' => 'application/x-java-commerce',
+		'jfif' => 'image/jpeg',
+		'jfif' => 'image/pjpeg',
+		'jfif-tbnl' => 'image/jpeg',
+		'jpe' => 'image/jpeg',
+		'jpe' => 'image/pjpeg',
+		'jpeg' => 'image/jpeg',
+		'jpeg' => 'image/pjpeg',
+		'jpg' => 'image/jpeg',
+		'jpg' => 'image/pjpeg',
+		'jps' => 'image/x-jps',
+		'js' => 'text/javascript',
+		'jut' => 'image/jutvision',
+		'kar' => 'audio/midi',
+		'kar' => 'music/x-karaoke',
+		'ksh' => 'application/x-ksh',
+		'ksh' => 'text/x-script.ksh',
+		'la' => 'audio/nspaudio',
+		'la' => 'audio/x-nspaudio',
+		'lam' => 'audio/x-liveaudio',
+		'latex' => 'application/x-latex',
+		'lha' => 'application/lha',
+		'lha' => 'application/octet-stream',
+		'lha' => 'application/x-lha',
+		'lhx' => 'application/octet-stream',
+		'list' => 'text/plain',
+		'lma' => 'audio/nspaudio',
+		'lma' => 'audio/x-nspaudio',
+		'log' => 'text/plain',
+		'lsp' => 'application/x-lisp',
+		'lsp' => 'text/x-script.lisp',
+		'lst' => 'text/plain',
+		'lsx' => 'text/x-la-asf',
+		'ltx' => 'application/x-latex',
+		'lzh' => 'application/octet-stream',
+		'lzh' => 'application/x-lzh',
+		'lzx' => 'application/lzx',
+		'lzx' => 'application/octet-stream',
+		'lzx' => 'application/x-lzx',
+		'm' => 'text/plain',
+		'm' => 'text/x-m',
+		'm1v' => 'video/mpeg',
+		'm2a' => 'audio/mpeg',
+		'm2v' => 'video/mpeg',
+		'm3u' => 'audio/x-mpequrl',
+		'man' => 'application/x-troff-man',
+		'map' => 'application/x-navimap',
+		'mar' => 'text/plain',
+		'mbd' => 'application/mbedlet',
+		'mc$' => 'application/x-magic-cap-package-1.0',
+		'mcd' => 'application/mcad',
+		'mcd' => 'application/x-mathcad',
+		'mcf' => 'image/vasa',
+		'mcf' => 'text/mcf',
+		'mcp' => 'application/netmc',
+		'me' => 'application/x-troff-me',
+		'mht' => 'message/rfc822',
+		'mhtml' => 'message/rfc822',
+		'mid' => 'application/x-midi',
+		'mid' => 'audio/midi',
+		'mid' => 'audio/x-mid',
+		'mid' => 'audio/x-midi',
+		'mid' => 'music/crescendo',
+		'mid' => 'x-music/x-midi',
+		'midi' => 'application/x-midi',
+		'midi' => 'audio/midi',
+		'midi' => 'audio/x-mid',
+		'midi' => 'audio/x-midi',
+		'midi' => 'music/crescendo',
+		'midi' => 'x-music/x-midi',
+		'mif' => 'application/x-frame',
+		'mif' => 'application/x-mif',
+		'mime' => 'message/rfc822',
+		'mime' => 'www/mime',
+		'mjf' => 'audio/x-vnd.audioexplosion.mjuicemediafile',
+		'mjpg' => 'video/x-motion-jpeg',
+		'mm' => 'application/base64',
+		'mm' => 'application/x-meme',
+		'mme' => 'application/base64',
+		'mod' => 'audio/mod',
+		'mod' => 'audio/x-mod',
+		'moov' => 'video/quicktime',
+		'mov' => 'video/quicktime',
+		'movie' => 'video/x-sgi-movie',
+		'mp2' => 'audio/mpeg',
+		'mp2' => 'audio/x-mpeg',
+		'mp2' => 'video/mpeg',
+		'mp2' => 'video/x-mpeg',
+		'mp2' => 'video/x-mpeq2a',
+		'mp3' => 'audio/mpeg3',
+		'mp3' => 'audio/x-mpeg-3',
+		'mp3' => 'video/mpeg',
+		'mp3' => 'video/x-mpeg',
+		'mpa' => 'audio/mpeg',
+		'mpa' => 'video/mpeg',
+		'mpc' => 'application/x-project',
+		'mpe' => 'video/mpeg',
+		'mpeg' => 'video/mpeg',
+		'mpg' => 'audio/mpeg',
+		'mpg' => 'video/mpeg',
+		'mpga' => 'audio/mpeg',
+		'mpp' => 'application/vnd.ms-project',
+		'mpt' => 'application/x-project',
+		'mpv' => 'application/x-project',
+		'mpx' => 'application/x-project',
+		'mrc' => 'application/marc',
+		'ms' => 'application/x-troff-ms',
+		'mv' => 'video/x-sgi-movie',
+		'my' => 'audio/make',
+		'mzz' => 'application/x-vnd.audioexplosion.mzz',
+		'nap' => 'image/naplps',
+		'naplps' => 'image/naplps',
+		'nc' => 'application/x-netcdf',
+		'ncm' => 'application/vnd.nokia.configuration-message',
+		'nif' => 'image/x-niff',
+		'niff' => 'image/x-niff',
+		'nix' => 'application/x-mix-transfer',
+		'nsc' => 'application/x-conference',
+		'nvd' => 'application/x-navidoc',
+		'o' => 'application/octet-stream',
+		'oda' => 'application/oda',
+		'omc' => 'application/x-omc',
+		'omcd' => 'application/x-omcdatamaker',
+		'omcr' => 'application/x-omcregerator',
+		'p' => 'text/x-pascal',
+		'p10' => 'application/pkcs10',
+		'p10' => 'application/x-pkcs10',
+		'p12' => 'application/pkcs-12',
+		'p12' => 'application/x-pkcs12',
+		'p7a' => 'application/x-pkcs7-signature',
+		'p7c' => 'application/pkcs7-mime',
+		'p7c' => 'application/x-pkcs7-mime',
+		'p7m' => 'application/pkcs7-mime',
+		'p7m' => 'application/x-pkcs7-mime',
+		'p7r' => 'application/x-pkcs7-certreqresp',
+		'p7s' => 'application/pkcs7-signature',
+		'part' => 'application/pro_eng',
+		'pas' => 'text/pascal',
+		'pbm' => 'image/x-portable-bitmap',
+		'pcl' => 'application/vnd.hp-pcl',
+		'pcl' => 'application/x-pcl',
+		'pct' => 'image/x-pict',
+		'pcx' => 'image/x-pcx',
+		'pdb' => 'chemical/x-pdb',
+		'pdf' => 'application/pdf',
+		'pfunk' => 'audio/make',
+		'pfunk' => 'audio/make.my.funk',
+		'pgm' => 'image/x-portable-graymap',
+		'pgm' => 'image/x-portable-greymap',
+		'pic' => 'image/pict',
+		'pict' => 'image/pict',
+		'pkg' => 'application/x-newton-compatible-pkg',
+		'pko' => 'application/vnd.ms-pki.pko',
+		'pl' => 'text/plain',
+		'pl' => 'text/x-script.perl',
+		'plx' => 'application/x-pixclscript',
+		'pm' => 'image/x-xpixmap',
+		'pm' => 'text/x-script.perl-module',
+		'pm4' => 'application/x-pagemaker',
+		'pm5' => 'application/x-pagemaker',
+		'png' => 'image/png',
+		'pnm' => 'application/x-portable-anymap',
+		'pnm' => 'image/x-portable-anymap',
+		'pot' => 'application/mspowerpoint',
+		'pot' => 'application/vnd.ms-powerpoint',
+		'pov' => 'model/x-pov',
+		'ppa' => 'application/vnd.ms-powerpoint',
+		'ppm' => 'image/x-portable-pixmap',
+		'pps' => 'application/mspowerpoint',
+		'pps' => 'application/vnd.ms-powerpoint',
+		'ppt' => 'application/mspowerpoint',
+		'ppt' => 'application/powerpoint',
+		'ppt' => 'application/vnd.ms-powerpoint',
+		'ppt' => 'application/x-mspowerpoint',
+		'ppz' => 'application/mspowerpoint',
+		'pre' => 'application/x-freelance',
+		'prt' => 'application/pro_eng',
+		'ps' => 'application/postscript',
+		'psd' => 'application/octet-stream',
+		'pvu' => 'paleovu/x-pv',
+		'pwz' => 'application/vnd.ms-powerpoint',
+		'py' => 'text/x-script.phyton',
+		'pyc' => 'applicaiton/x-bytecode.python',
+		'qcp' => 'audio/vnd.qcelp',
+		'qd3' => 'x-world/x-3dmf',
+		'qd3d' => 'x-world/x-3dmf',
+		'qif' => 'image/x-quicktime',
+		'qt' => 'video/quicktime',
+		'qtc' => 'video/x-qtc',
+		'qti' => 'image/x-quicktime',
+		'qtif' => 'image/x-quicktime',
+		'ra' => 'audio/x-pn-realaudio',
+		'ra' => 'audio/x-pn-realaudio-plugin',
+		'ra' => 'audio/x-realaudio',
+		'ram' => 'audio/x-pn-realaudio',
+		'ras' => 'application/x-cmu-raster',
+		'ras' => 'image/cmu-raster',
+		'ras' => 'image/x-cmu-raster',
+		'rast' => 'image/cmu-raster',
+		'rexx' => 'text/x-script.rexx',
+		'rf' => 'image/vnd.rn-realflash',
+		'rgb' => 'image/x-rgb',
+		'rm' => 'application/vnd.rn-realmedia',
+		'rm' => 'audio/x-pn-realaudio',
+		'rmi' => 'audio/mid',
+		'rmm' => 'audio/x-pn-realaudio',
+		'rmp' => 'audio/x-pn-realaudio',
+		'rmp' => 'audio/x-pn-realaudio-plugin',
+		'rng' => 'application/ringing-tones',
+		'rng' => 'application/vnd.nokia.ringing-tone',
+		'rnx' => 'application/vnd.rn-realplayer',
+		'roff' => 'application/x-troff',
+		'rp' => 'image/vnd.rn-realpix',
+		'rpm' => 'audio/x-pn-realaudio-plugin',
+		'rt' => 'text/richtext',
+		'rt' => 'text/vnd.rn-realtext',
+		'rtf' => 'application/rtf',
+		'rtf' => 'application/x-rtf',
+		'rtf' => 'text/richtext',
+		'rtx' => 'application/rtf',
+		'rtx' => 'text/richtext',
+		'rv' => 'video/vnd.rn-realvideo',
+		's' => 'text/x-asm',
+		's3m' => 'audio/s3m',
+		'saveme' => 'application/octet-stream',
+		'sbk' => 'application/x-tbook',
+		'scm' => 'application/x-lotusscreencam',
+		'scm' => 'text/x-script.guile',
+		'scm' => 'text/x-script.scheme',
+		'scm' => 'video/x-scm',
+		'sdml' => 'text/plain',
+		'sdp' => 'application/sdp',
+		'sdp' => 'application/x-sdp',
+		'sdr' => 'application/sounder',
+		'sea' => 'application/sea',
+		'sea' => 'application/x-sea',
+		'set' => 'application/set',
+		'sgm' => 'text/sgml',
+		'sgm' => 'text/x-sgml',
+		'sgml' => 'text/sgml',
+		'sgml' => 'text/x-sgml',
+		'sh' => 'application/x-bsh',
+		'sh' => 'application/x-sh',
+		'sh' => 'application/x-shar',
+		'sh' => 'text/x-script.sh',
+		'shar' => 'application/x-bsh',
+		'shar' => 'application/x-shar',
+		'shtml' => 'text/html',
+		'sid' => 'audio/x-psid',
+		'sit' => 'application/x-sit',
+		'sit' => 'application/x-stuffit',
+		'skd' => 'application/x-koan',
+		'skm' => 'application/x-koan',
+		'skp' => 'application/x-koan',
+		'skt' => 'application/x-koan',
+		'sl' => 'application/x-seelogo',
+		'smi' => 'application/smil',
+		'smil' => 'application/smil',
+		'snd' => 'audio/basic',
+		'snd' => 'audio/x-adpcm',
+		'sol' => 'application/solids',
+		'spc' => 'application/x-pkcs7-certificates',
+		'spc' => 'text/x-speech',
+		'spl' => 'application/futuresplash',
+		'spr' => 'application/x-sprite',
+		'sprite' => 'application/x-sprite',
+		'src' => 'application/x-wais-source',
+		'ssi' => 'text/x-server-parsed-html',
+		'ssm' => 'application/streamingmedia',
+		'sst' => 'application/vnd.ms-pki.certstore',
+		'step' => 'application/step',
+		'stl' => 'application/sla',
+		'stl' => 'application/vnd.ms-pki.stl',
+		'stl' => 'application/x-navistyle',
+		'stp' => 'application/step',
+		'sv4cpio' => 'application/x-sv4cpio',
+		'sv4crc' => 'application/x-sv4crc',
+		'svf' => 'image/vnd.dwg',
+		'svf' => 'image/x-dwg',
+		'svr' => 'application/x-world',
+		'svr' => 'x-world/x-svr',
+		'swf' => 'application/x-shockwave-flash',
+		't' => 'application/x-troff',
+		'talk' => 'text/x-speech',
+		'tar' => 'application/x-tar',
+		'tbk' => 'application/toolbook',
+		'tbk' => 'application/x-tbook',
+		'tcl' => 'application/x-tcl',
+		'tcl' => 'text/x-script.tcl',
+		'tcsh' => 'text/x-script.tcsh',
+		'tex' => 'application/x-tex',
+		'texi' => 'application/x-texinfo',
+		'texinfo' => 'application/x-texinfo',
+		'text' => 'application/plain',
+		'text' => 'text/plain',
+		'tgz' => 'application/gnutar',
+		'tgz' => 'application/x-compressed',
+		'tif' => 'image/tiff',
+		'tif' => 'image/x-tiff',
+		'tiff' => 'image/tiff',
+		'tiff' => 'image/x-tiff',
+		'tr' => 'application/x-troff',
+		'tsi' => 'audio/tsp-audio',
+		'tsp' => 'application/dsptype',
+		'tsp' => 'audio/tsplayer',
+		'tsv' => 'text/tab-separated-values',
+		'turbot' => 'image/florian',
+		'txt' => 'text/plain',
+		'uil' => 'text/x-uil',
+		'uni' => 'text/uri-list',
+		'unis' => 'text/uri-list',
+		'unv' => 'application/i-deas',
+		'uri' => 'text/uri-list',
+		'uris' => 'text/uri-list',
+		'ustar' => 'application/x-ustar',
+		'ustar' => 'multipart/x-ustar',
+		'uu' => 'application/octet-stream',
+		'uu' => 'text/x-uuencode',
+		'uue' => 'text/x-uuencode',
+		'vcd' => 'application/x-cdlink',
+		'vcs' => 'text/x-vcalendar',
+		'vda' => 'application/vda',
+		'vdo' => 'video/vdo',
+		'vew' => 'application/groupwise',
+		'viv' => 'video/vivo',
+		'viv' => 'video/vnd.vivo',
+		'vivo' => 'video/vivo',
+		'vivo' => 'video/vnd.vivo',
+		'vmd' => 'application/vocaltec-media-desc',
+		'vmf' => 'application/vocaltec-media-file',
+		'voc' => 'audio/voc',
+		'voc' => 'audio/x-voc',
+		'vos' => 'video/vosaic',
+		'vox' => 'audio/voxware',
+		'vqe' => 'audio/x-twinvq-plugin',
+		'vqf' => 'audio/x-twinvq',
+		'vql' => 'audio/x-twinvq-plugin',
+		'vrml' => 'application/x-vrml',
+		'vrml' => 'model/vrml',
+		'vrml' => 'x-world/x-vrml',
+		'vrt' => 'x-world/x-vrt',
+		'vsd' => 'application/x-visio',
+		'vst' => 'application/x-visio',
+		'vsw' => 'application/x-visio',
+		'w60' => 'application/wordperfect6.0',
+		'w61' => 'application/wordperfect6.1',
+		'w6w' => 'application/msword',
+		'wav' => 'audio/wav',
+		'wav' => 'audio/x-wav',
+		'wb1' => 'application/x-qpro',
+		'wbmp' => 'image/vnd.wap.wbmp',
+		'web' => 'application/vnd.xara',
+		'wiz' => 'application/msword',
+		'wk1' => 'application/x-123',
+		'wmf' => 'windows/metafile',
+		'wml' => 'text/vnd.wap.wml',
+		'wmlc' => 'application/vnd.wap.wmlc',
+		'wmls' => 'text/vnd.wap.wmlscript',
+		'wmlsc' => 'application/vnd.wap.wmlscriptc',
+		'word' => 'application/msword',
+		'wp' => 'application/wordperfect',
+		'wp5' => 'application/wordperfect',
+		'wp5' => 'application/wordperfect6.0',
+		'wp6' => 'application/wordperfect',
+		'wpd' => 'application/wordperfect',
+		'wpd' => 'application/x-wpwin',
+		'wq1' => 'application/x-lotus',
+		'wri' => 'application/mswrite',
+		'wri' => 'application/x-wri',
+		'wrl' => 'application/x-world',
+		'wrl' => 'model/vrml',
+		'wrl' => 'x-world/x-vrml',
+		'wrz' => 'model/vrml',
+		'wrz' => 'x-world/x-vrml',
+		'wsc' => 'text/scriplet',
+		'wsrc' => 'application/x-wais-source',
+		'wtk' => 'application/x-wintalk',
+		'xbm' => 'image/x-xbitmap',
+		'xbm' => 'image/x-xbm',
+		'xbm' => 'image/xbm',
+		'xdr' => 'video/x-amt-demorun',
+		'xgz' => 'xgl/drawing',
+		'xif' => 'image/vnd.xiff',
+		'xl' => 'application/excel',
+		'xla' => 'application/excel',
+		'xla' => 'application/x-excel',
+		'xla' => 'application/x-msexcel',
+		'xlb' => 'application/excel',
+		'xlb' => 'application/vnd.ms-excel',
+		'xlb' => 'application/x-excel',
+		'xlc' => 'application/excel',
+		'xlc' => 'application/vnd.ms-excel',
+		'xlc' => 'application/x-excel',
+		'xld' => 'application/excel',
+		'xld' => 'application/x-excel',
+		'xlk' => 'application/excel',
+		'xlk' => 'application/x-excel',
+		'xll' => 'application/excel',
+		'xll' => 'application/vnd.ms-excel',
+		'xll' => 'application/x-excel',
+		'xlm' => 'application/excel',
+		'xlm' => 'application/vnd.ms-excel',
+		'xlm' => 'application/x-excel',
+		'xls' => 'application/excel',
+		'xls' => 'application/vnd.ms-excel',
+		'xls' => 'application/x-excel',
+		'xls' => 'application/x-msexcel',
+		'xlt' => 'application/excel',
+		'xlt' => 'application/x-excel',
+		'xlv' => 'application/excel',
+		'xlv' => 'application/x-excel',
+		'xlw' => 'application/excel',
+		'xlw' => 'application/vnd.ms-excel',
+		'xlw' => 'application/x-excel',
+		'xlw' => 'application/x-msexcel',
+		'xm' => 'audio/xm',
+		'xml' => 'application/xml',
+		'xml' => 'text/xml',
+		'xmz' => 'xgl/movie',
+		'xpix' => 'application/x-vnd.ls-xpix',
+		'xpm' => 'image/x-xpixmap',
+		'xpm' => 'image/xpm',
+		'x-png' => 'image/png',
+		'xsr' => 'video/x-amt-showrun',
+		'xwd' => 'image/x-xwd',
+		'xwd' => 'image/x-xwindowdump',
+		'xyz' => 'chemical/x-pdb',
+		'z' => array('application/x-compress', 'application/x-compressed'),
+		'zip' => 'application/x-compressed',
+		'zip' => 'application/x-zip-compressed',
+		'zip' => 'application/zip',
+		'zip' => 'multipart/x-zip',
+		'zoo' => 'application/octet-stream',
+		'zsh' => 'text/x-script.zsh',
+		'txt' => 'text/plain',
+		'php' => 'application/x-httpd-php',
+		'phps' => 'application/x-httpd-phps',
+		'css' => 'text/css',
+		'js' => 'application/javascript',
+		'json' => 'application/json',
+		'xml' => 'application/xml',
+		'swf' => 'application/x-shockwave-flash',
+		'flv' => 'video/x-flv',
+		'asc' => 'text/plain',
+		'atom' => 'application/atom+xml',
+		'bcpio' => 'application/x-bcpio',
+		'png' => 'image/png',
+		'jpe' => 'image/jpeg',
+		'jpeg' => 'image/jpeg',
+		'jpg' => 'image/jpeg',
+		'gif' => 'image/gif',
+		'bmp' => 'image/bmp',
+		'ico' => 'image/vnd.microsoft.icon',
+		'tiff' => 'image/tiff',
+		'tif' => 'image/tiff',
+		'svg' => 'image/svg+xml',
+		'svgz' => 'image/svg+xml',
+		'zip' => 'application/zip',
+		'rar' => 'application/x-rar-compressed',
+		'exe' => 'application/x-msdownload',
+		'msi' => 'application/x-msdownload',
+		'cab' => 'application/vnd.ms-cab-compressed',
+		'mp3' => 'audio/mpeg',
+		'qt' => 'video/quicktime',
+		'mov' => 'video/quicktime',
+		'au' => 'audio/basic',
+		'avi' => 'video/x-msvideo',
+		'pdf' => 'application/pdf',
+		'psd' => 'image/vnd.adobe.photoshop',
+		'ai' => 'application/postscript',
+		'eps' => 'application/postscript',
+		'ps' => 'application/postscript',
+		'aif' => 'audio/x-aiff',
+		'aifc' => 'audio/x-aiff',
+		'aiff' => 'audio/x-aiff',
+		'doc' => 'application/msword',
+		'rtf' => 'application/rtf',
+		'xls' => 'application/vnd.ms-excel',
+		'ppt' => 'application/vnd.ms-powerpoint',
+		'odt' => 'application/vnd.oasis.opendocument.text',
+		'ods' => 'application/vnd.oasis.opendocument.spreadsheet',
+		'swf' => array('application/x-shockwave-flash', 'application/x-shockwave-flash2-preview', 'application/futuresplash', 'image/vnd.rn-realflash')
+	);
+
+	/**
+	 * Override constructor
+	 */
+	public function __construct(array $options = array()) {
+	}
+
+	/**
+	 * Get all mime types that are supported right now
+	 *
+	 * @return array
+	 */
+	public function getMimeTypes($coreHasPrecedence = false) {
+		if ($coreHasPrecedence) {
+			return $this->_mimeTypes += $this->_mimeTypesExt;
+		}
+		return $this->_mimeTypesExt += $this->_mimeTypes;
+	}
+
+	/**
+	 * Returns the primary mime type definition for an alias
+	 *
+	 * e.g `getMimeType('pdf'); // returns 'application/pdf'`
+	 *
+	 * @param string $alias the content type alias to map
+	 * @param bool $primaryOnly
+	 * @param bool $coreHasPrecedence
+	 * @return mixed string mapped mime type or false if $alias is not mapped
+	 */
+	public function getMimeType($alias, $primaryOnly = true, $coreHasPrecedence = false) {
+		if (empty($this->_mimeTypeTmp)) {
+			$this->_mimeTypesTmp = $this->getMimeTypes($coreHasPrecedence);
+		}
+		if (!isset($this->_mimeTypesTmp[$alias])) {
+			return false;
+		}
+		$mimeType = $this->_mimeTypesTmp[$alias];
+		if ($primaryOnly && is_array($mimeType)) {
+			$mimeType = array_shift($mimeType);
+		}
+		return $mimeType;
+	}
+
+	/**
+	 * Maps a content-type back to an alias
+	 *
+	 * e.g `mapType('application/pdf'); // returns 'pdf'`
+	 *
+	 * @param mixed $ctype Either a string content type to map, or an array of types.
+	 * @return mixed Aliases for the types provided.
+	 */
+	public function mapType($ctype) {
+		return parent::mapType($ctype);
+	}
+
+	/**
+	 * Retrieve the corresponding MIME type, if one exists
+	 *
+	 * @param String $file File Name (relative location such as "image_test.jpg" or full "http://site.com/path/to/image_test.jpg")
+	 * @return String MIMEType - The type of the file passed in the argument
+	 */
+	public function extractMimeType($file = null) {
+		if (!is_file($file)) {
+			return false;
+		}
+		/**
+		* Attempts to retrieve file info from FINFO
+		* If FINFO functions are not available then try to retrieve MIME type from pre-defined MIMEs
+		* If MIME type doesn't exist, then try (as a last resort) to use the (deprecated) mime_content_type function
+		* If all else fails, just return application/octet-stream
+		*/
+		if (!function_exists("finfo_open")) {
+			if (function_exists("mime_content_type")) {
+				$type = mime_content_type($file);
+				if (!empty($type)) {
+					return $type;
+				}
+			}
+			$extension = $this->_getExtension($file);
+			if ($mimeType = $this->getMimeType($extension)) {
+				return $mimeType;
+			}
+			return "application/octet-stream";
+		}
+		$finfo = finfo_open(FILEINFO_MIME_TYPE);
+		$mimeType = finfo_file($finfo, $file);
+		finfo_close($finfo);
+		return $mimeType;
+	}
+
+	/**
+	 * Get encoding.
+	 *
+	 * @param string $file
+	 * @param string $default
+	 * @return void
+	 */
+	public function getEncoding($file = null, $default = 'utf-8') {
+		if (!function_exists("finfo_open")) {
+			return $default;
+		}
+		$finfo = finfo_open(FILEINFO_MIME_ENCODING);
+		$encoding = finfo_file($finfo, $file);
+		finfo_close($finfo);
+		if ($encoding !== false) {
+			return $encoding;
+		}
+		return $default;
+	}
+
+	/**
+	 * Gets the file extention from a string
+	 *
+	 * @param String $file The full file name
+	 * @return String ext The file extension
+	 */
+	protected function _getExtension($file = null) {
+		if ($file !== null) {
+			$pieces = explode('.', $file);
+			$ext = strtolower(array_pop($pieces));
+			return $ext;
+		}
+		return false;
+	}
+
+}

+ 145 - 0
tests/TestCase/Utility/MimeTest.php

@@ -0,0 +1,145 @@
+<?php
+App::uses('MimeLib', 'Tools.Lib');
+App::uses('MyCakeTestCase', 'Tools.TestSuite');
+App::uses('CakeResponse', 'Network');
+
+class MimeTest extends CakeTestCase {
+
+	public $Mime;
+
+	public function setUp() {
+		parent::setUp();
+
+		$this->Mime = new MimeLib();
+	}
+
+	public function testObject() {
+		$this->assertTrue(is_object($this->Mime));
+		$this->assertInstanceOf('MimeLib', $this->Mime);
+	}
+
+	public function testAll() {
+		$res = $this->Mime->getMimeTypes();
+		$this->assertTrue(is_array($res) && count($res) > 100);
+	}
+
+	public function testSingle() {
+		$res = $this->Mime->getMimeType('odxs');
+		$this->assertFalse($res);
+
+		$res = $this->Mime->getMimeType('ods');
+		$this->assertEquals('application/vnd.oasis.opendocument.spreadsheet', $res);
+	}
+
+	public function testOverwrite() {
+		$res = $this->Mime->getMimeType('ics');
+		$this->assertEquals('application/ics', $res);
+	}
+
+	public function testReverseToSingle() {
+		$res = $this->Mime->getMimeType('html');
+		$this->assertEquals('text/html', $res);
+
+		$res = $this->Mime->getMimeType('csv');
+		$this->assertEquals('text/csv', $res);
+	}
+
+	public function testReverseToMultiple() {
+		$res = $this->Mime->getMimeType('html', false);
+		$this->assertTrue(is_array($res) && count($res) === 2);
+
+		$res = $this->Mime->getMimeType('csv', false);
+		$this->assertTrue(is_array($res) && count($res) > 2);
+	}
+
+	/**
+	 * Test fake files
+	 */
+	public function testCorrectFileExtension() {
+		file_put_contents(TMP . 'sometest.txt', 'xyz');
+		$is = $this->Mime->extractMimeType(TMP . 'sometest.txt');
+		//pr($is);
+		$this->assertEquals($is, 'text/plain');
+	}
+
+	/**
+	 * Test fake files
+	 */
+	public function testWrongFileExtension() {
+		file_put_contents(TMP . 'sometest.zip', 'xyz');
+		$is = $this->Mime->extractMimeType(TMP . 'sometest.zip');
+		//pr($is);
+		$this->assertEquals($is, 'text/plain');
+		//Test failes? finfo_open not availaible??
+	}
+
+	/**
+	 * Test fake files
+	 */
+	public function testEncoding() {
+		file_put_contents(TMP . 'sometest.txt', 'xyz');
+		$is = $this->Mime->getEncoding(TMP . 'sometest.txt');
+		//pr($is);
+		$this->assertEquals($is, 'us-ascii');
+
+		file_put_contents(TMP . 'sometest.zip', utf8_encode('xäääyz'));
+		$is = $this->Mime->getEncoding(TMP . 'sometest.zip');
+		//pr($is);
+		$this->assertEquals($is, 'utf-8');
+
+		file_put_contents(TMP . 'sometest.zip', utf8_encode('xyz'));
+		$is = $this->Mime->getEncoding(TMP . 'sometest.zip');
+		//pr($is);
+		$this->assertEquals($is, 'us-ascii');
+		//Tests fail? finfo_open not availaible??
+	}
+
+	/**
+	 * MimeLibTest::testDifferenceBetweenPluginAndCore()
+	 *
+	 * @return void
+	 */
+	public function testDifferenceBetweenPluginAndCore() {
+		$this->TestCakeResponse = new TestCakeResponse();
+		$this->TestMime = new TestMimeLib();
+
+		$core = $this->TestCakeResponse->getMimeTypes();
+		$plugin = $this->TestMime->getMimeTypes();
+
+		$diff = array(
+			'coreonly' => array(),
+			'pluginonly' => array(),
+			'modified' => array()
+		);
+		foreach ($core as $key => $value) {
+			if (!isset($plugin[$key])) {
+				$diff['coreonly'][$key] = $value;
+			} elseif ($value !== $plugin[$key]) {
+				$diff['modified'][$key] = array('was' => $value, 'is' => $plugin[$key]);
+			}
+			unset($plugin[$key]);
+		}
+		foreach ($plugin as $key => $value) {
+			$diff['pluginonly'][$key] = $value;
+		}
+		$this->debug($diff);
+	}
+
+}
+
+class TestCakeResponse extends CakeResponse {
+
+	public function getMimeTypes() {
+		return $this->_mimeTypes;
+	}
+
+}
+
+class TestMimeLib extends MimeLib {
+
+	public function getMimeTypes($coreHasPrecedence = false) {
+		return $this->_mimeTypesExt;
+	}
+
+}
+

+ 304 - 0
tests/TestCase/Utility/NumberTest.php

@@ -0,0 +1,304 @@
+<?php
+
+App::uses('NumberLib', 'Tools.Utility');
+App::uses('MyCakeTestCase', 'Tools.TestSuite');
+
+class NumberLibTest extends MyCakeTestCase {
+
+	public $NumberLib = null;
+
+	public function setUp() {
+		parent::setUp();
+
+		Configure::write('Localization', array(
+			'decimals' => ',',
+			'thousands' => '.'
+		));
+		NumberLib::config();
+	}
+
+	/**
+	 * NumberLibTest::testAverage()
+	 *
+	 * @return void
+	 */
+	public function testAverage() {
+		$array = array();
+		$is = NumberLib::average($array);
+		$expected = 0.0;
+		$this->assertSame($expected, $is);
+
+		$array = array(3, 8, 4);
+		$is = NumberLib::average($array);
+		$expected = 5.0;
+		$this->assertSame($expected, $is);
+
+		$array = array(0.0, 3.8);
+		$is = NumberLib::average($array);
+		$expected = 2.0;
+		$this->assertSame($expected, $is);
+
+		$array = array(0.0, 3.7);
+		$is = NumberLib::average($array, 1);
+		$expected = 1.9;
+		$this->assertSame($expected, $is);
+
+		$array = array(0.0, 3.7);
+		$is = NumberLib::average($array, 2);
+		$expected = 1.85;
+		$this->assertSame($expected, $is);
+	}
+
+	/**
+	 * NumberLibTest::testMoney()
+	 *
+	 * @return void
+	 */
+	public function testMoney() {
+		$is = NumberLib::money(22.11);
+		$expected = '22,11 €';
+		$this->assertSame($expected, $is);
+
+		$is = NumberLib::money(-22.11);
+		$expected = '-22,11 €';
+		$this->assertSame($expected, $is);
+	}
+
+	/**
+	 * NumberLibTest::testPrice()
+	 *
+	 * @return void
+	 */
+	public function testPrice() {
+		$is = NumberLib::price(22.11);
+		$expected = '22,11 €';
+		$this->assertSame($expected, $is);
+
+		$is = NumberLib::price(-22.11);
+		$expected = '0,00 €';
+		$this->assertSame($expected, $is);
+	}
+
+	/**
+	 * NumberLibTest::testCurrency()
+	 *
+	 * @return void
+	 */
+	public function testCurrency() {
+		$is = NumberLib::currency(22.11);
+		$expected = '22,11 €';
+		$this->assertSame($expected, $is);
+
+		$is = NumberLib::currency(-22.11);
+		$expected = '-22,11 €';
+		$this->assertSame($expected, $is);
+
+		$is = NumberLib::currency(-22.11, 'EUR', array('signed' => true));
+		$expected = '-22,11 €';
+		$this->assertSame($expected, $is);
+
+		$is = NumberLib::currency(22.11, 'EUR', array('signed' => true));
+		$expected = '+22,11 €';
+		$this->assertSame($expected, $is);
+	}
+
+	/**
+	 * NumberLibTest::testFormat()
+	 *
+	 * @return void
+	 */
+	public function testFormat() {
+		$is = NumberLib::format(22.11);
+		$expected = '22,11';
+		$this->assertSame($expected, $is);
+
+		$is = NumberLib::format(22933773);
+		$expected = '22.933.773,00';
+		$this->assertSame($expected, $is);
+
+		$is = NumberLib::format(-0.895, array('places' => 3));
+		$expected = '-0,895';
+		$this->assertSame($expected, $is);
+	}
+
+	/**
+	 * @return void
+	 */
+	public function testToPercentage() {
+		$is = NumberLib::toPercentage(22.11, 2, array('decimals' => '.'));
+		$expected = '22.11%';
+		$this->assertSame($expected, $is);
+
+		$is = NumberLib::toPercentage(22.11, 2, array('decimals' => ','));
+		$expected = '22,11%';
+		$this->assertSame($expected, $is);
+
+		$is = NumberLib::toPercentage(22.11, 0, array('decimals' => '.'));
+		$expected = '22%';
+		$this->assertSame($expected, $is);
+
+		$is = NumberLib::toPercentage(0.2311, 0, array('multiply' => true, 'decimals' => '.'));
+		$expected = '23%';
+		$this->assertSame($expected, $is);
+	}
+
+	/**
+	 * @return void
+	 */
+	public function testRoundTo() {
+		//increment = 10
+		$values = array(
+			'22' => 20,
+			'15' => 20,
+			'3.4' => 0,
+			'6' => 10,
+			'-3.12' => 0,
+			'-10' => -10
+		);
+		foreach ($values as $was => $expected) {
+			$is = NumberLib::roundTo($was, 10);
+			$this->assertSame($expected, $is, null, $was);
+		}
+		//increment = 0.1
+		$values2 = array(
+			'22' => 22.0,
+			'15.234' => 15.2,
+			'3.4' => 3.4,
+			'6.131' => 6.1,
+			'-3.17' => -3.2,
+			'-10.99' => -11.0
+		);
+		foreach ($values2 as $was => $expected) {
+			$is = NumberLib::roundTo($was, 0.1);
+			$this->assertSame($expected, $is, null, $was);
+		}
+	}
+
+	/**
+	 */
+	public function testRoundUpTo() {
+		//increment = 10
+		$values = array(
+			'22.765' => 30.0,
+			'15.22' => 20.0,
+			'3.4' => 10.0,
+			'6' => 10.0,
+			'-3.12' => -0.0,
+			'-10' => -10.0
+		);
+		foreach ($values as $was => $expected) {
+			$is = NumberLib::roundUpTo($was, 10);
+			$this->assertSame($expected, $is, null, $was);
+		}
+		//increment = 5
+		$values = array(
+			'22' => 25.0,
+			'15.234' => 20.0,
+			'3.4' => 5.0,
+			'6.131' => 10.0,
+			'-3.17' => -0.0,
+			'-10.99' => -10.0
+		);
+		foreach ($values as $was => $expected) {
+			$is = NumberLib::roundUpTo($was, 5);
+			$this->assertSame($expected, $is, null, $was);
+		}
+	}
+
+	/**
+	 */
+	public function testRoundDownTo() {
+		//increment = 10
+		$values = array(
+			'22.765' => 20.0,
+			'15.22' => 10.0,
+			'3.4' => 0.0,
+			'6' => 0.0,
+			'-3.12' => -10.0,
+			'-10' => -10.0
+		);
+		foreach ($values as $was => $expected) {
+			$is = NumberLib::roundDownTo($was, 10);
+			$this->assertSame($expected, $is, null, $was);
+		}
+		//increment = 3
+		$values = array(
+			'22' => 21.0,
+			'15.234' => 15.0,
+			'3.4' => 3.0,
+			'6.131' => 6.0,
+			'-3.17' => -6.0,
+			'-10.99' => -12.0
+		);
+		foreach ($values as $was => $expected) {
+			$is = NumberLib::roundDownTo($was, 3);
+			$this->assertSame($expected, $is, null, $was);
+		}
+	}
+
+	/**
+	 */
+	public function testGetDecimalPlaces() {
+		$values = array(
+			'100' => -2,
+			'0.0001' => 4,
+			'10' => -1,
+			'0.1' => 1,
+			'1' => 0,
+			'0.001' => 3
+		);
+		foreach ($values as $was => $expected) {
+			$is = NumberLib::getDecimalPlaces($was, 10);
+			$this->assertSame($expected, $is); //, null, $was
+		}
+	}
+
+	/**
+	 * Test spacer format options for currency() method
+	 *
+	 * @return void
+	 */
+	public function testCurrencySpacer() {
+		if ((float)Configure::version() < 2.4) {
+			$format = NumberLib::getFormat('GBP');
+			$format['wholeSymbol'] = '£';
+			NumberLib::addFormat('GBP', $format);
+		}
+
+		$result = NumberLib::currency('4.111', 'GBP');
+		$expected = '£4.11';
+		$this->assertEquals($expected, $result);
+
+		$result = NumberLib::currency('4.111', 'GBP', array('spacer' => false));
+		$expected = '£4.11';
+		$this->assertEquals($expected, $result);
+
+		$result = NumberLib::currency('4.111', 'GBP', array('spacer' => true));
+		$expected = '£ 4.11';
+		$this->assertEquals($expected, $result);
+
+		$result = NumberLib::currency('-4.111', 'GBP', array('spacer' => false, 'negative' => '-'));
+		$expected = '-£4.11';
+		$this->assertEquals($expected, $result);
+
+		$result = NumberLib::currency('-4.111', 'GBP', array('spacer' => true, 'negative' => '-'));
+		$expected = '-£ 4.11';
+		$this->assertEquals($expected, $result);
+
+		$result = NumberLib::currency('4.111', 'GBP', array('spacer' => '&nbsp;', 'escape' => false));
+		$expected = '£&nbsp;4.11';
+		$this->assertEquals($expected, $result);
+	}
+
+	/**
+	 * NumberLibTest::testCurrencyUnknown()
+	 *
+	 * @return void
+	 */
+	public function testCurrencyUnknown() {
+		$result = NumberLib::currency('4.111', 'XYZ');
+		$expected = 'XYZ 4,11';
+		$this->assertEquals($expected, $result);
+	}
+
+}

+ 69 - 0
tests/TestCase/Utility/TextTest.php

@@ -0,0 +1,69 @@
+<?php
+App::uses('TextLib', 'Tools.Utility');
+
+/**
+ */
+class TextLibTest extends CakeTestCase {
+
+	public $TextLib;
+
+	public function setUp() {
+		parent::setUp();
+
+		$this->TextLib = new TextLib();
+	}
+
+	public function testReadTab() {
+		$data = <<<TXT
+some	tabbed	data
+and	another	line
+TXT;
+		$this->TextLib = new TextLib($data);
+		$result = $this->TextLib->readTab();
+
+		$this->assertSame(2, count($result));
+		$this->assertSame(array('and', 'another', 'line'), $result[1]);
+	}
+
+	public function testReadWithPattern() {
+		$data = <<<TXT
+some random data
+and another line
+and a   third
+TXT;
+		$this->TextLib = new TextLib($data);
+		$result = $this->TextLib->readWithPattern("%s %s %s");
+
+		$this->assertSame(3, count($result));
+		$this->assertSame(array('and', 'a', 'third'), $result[2]);
+	}
+
+	public function testConvertToOrd() {
+		$this->TextLib = new TextLib('h H');
+		$is = $this->TextLib->convertToOrd();
+		//pr($is);
+		$this->assertEquals($is, '0-104-32-72-0');
+
+		$is = $this->TextLib->convertToOrd('x' . NL . 'x' . LF . 'x' . PHP_EOL . 'x' . CR . 'x' . TB . 'x');
+		//pr($is);
+	}
+
+	public function testConvertToOrdTable() {
+		$is = $this->TextLib->convertToOrdTable('x' . NL . 'x' . LF . 'x' . PHP_EOL . 'x' . CR . 'x' . TB . 'x');
+		//pr($is);
+	}
+
+	public function testMaxWords() {
+		$this->assertEquals('Taylor...', TextLib::maxWords('Taylor Otwell', 1));
+		$this->assertEquals('Taylor___', TextLib::maxWords('Taylor Otwell', 1, array('ellipsis' => '___')));
+		$this->assertEquals('Taylor Otwell', TextLib::maxWords('Taylor Otwell', 3));
+	}
+
+	public function testWords() {
+		$this->TextLib = new TextLib('Hochhaus, Unter dem Bau von ae Äußeren Einflüssen - und von Autos.');
+		$is = $this->TextLib->words(array('min_char' => 3));
+		//pr($is);
+		$this->assertTrue(!empty($is) && is_array($is) && count($is) === 9);
+	}
+
+}

File diff suppressed because it is too large
+ 1122 - 0
tests/TestCase/Utility/TimeTest.php


+ 718 - 0
tests/TestCase/Utility/UtilityTest.php

@@ -0,0 +1,718 @@
+<?php
+App::uses('Utility', 'Tools.Utility');
+App::uses('MyCakeTestCase', 'Tools.TestSuite');
+
+/**
+ * @covers Utility
+ */
+class UtilityTest extends MyCakeTestCase {
+
+	/**
+	 * UtilityTest::testInArray()
+	 *
+	 * @covers Utility::inArray
+	 * @return void
+	 */
+	public function testInArray() {
+		$res = Utility::inArray(2, array(1, 2, 3));
+		$this->assertTrue($res);
+
+		$res = Utility::inArray(4, array(1, 2, 7));
+		$this->assertFalse($res);
+
+		$res = Utility::inArray('2', array(1, 2, 3));
+		$this->assertTrue($res);
+
+		$res = Utility::inArray(2, array('1x', '2x', '3x'));
+		$this->assertFalse($res);
+
+		$res = Utility::inArray('3x', array('1x', '2x', '3x'));
+		$this->assertTrue($res);
+
+		$res = Utility::inArray(3, array('1', '2', '3'));
+		$this->assertTrue($res);
+
+		$res = Utility::inArray('2x', array(1, 2, 3));
+		$this->assertFalse($res);
+	}
+
+	public function testTokenize() {
+		$res = Utility::tokenize('');
+		$this->assertSame(array(), $res);
+
+		$res = Utility::tokenize('some');
+		$this->assertSame(array('some'), $res);
+
+		$res = Utility::tokenize('some, thing');
+		$this->assertSame(array('some', 'thing'), $res);
+
+		$res = Utility::tokenize(',some,,, ,, thing,');
+		$this->assertSame(array('some', 'thing'), array_values($res));
+	}
+
+	/**
+	 * UtilityTest::testPregMatch()
+	 *
+	 * @covers Utility::pregMatch
+	 * @return void
+	 */
+	public function testPregMatch() {
+		$string = '<abc>';
+		preg_match('/\<(\w+)\>/', $string, $matches);
+		$this->assertSame(array($string, 'abc'), $matches);
+
+		$matches = Utility::pregMatch('/\<(\w+)\>/', $string);
+		$this->assertSame(array($string, 'abc'), $matches);
+
+		$string = '<äöü>';
+		preg_match('/\<(.+)\>/', $string, $matches);
+		$this->assertSame(array($string, 'äöü'), $matches);
+
+		$matches = Utility::pregMatch('/\<(.+)\>/', $string);
+		$this->assertSame(array($string, 'äöü'), $matches);
+
+		$string = 'D-81245 München';
+		preg_match('/(*UTF8)([\w+])-([a-z0-9]+)\s+\b([\w\s]+)\b/iu', $string, $matches);
+		$expected = array(
+			$string,
+			'D',
+			'81245',
+			'München'
+		);
+		$this->assertSame($expected, $matches);
+
+		// we dont need the utf8 hack:
+		$matches = Utility::pregMatch('/([\w+])-([a-z0-9]+)\s+\b([\w\s]+)\b/iu', $string);
+		$this->assertSame($expected, $matches);
+	}
+
+	/**
+	 * UtilityTest::testPregMatchWithPatternEscape()
+	 *
+	 * @covers Utility::pregMatch
+	 * @return void
+	 */
+	public function testPregMatchWithPatternEscape() {
+		$string = 'http://www.example.com/s?q=php.net+docs';
+		$res = preg_quote($string);
+		$this->assertSame('http\://www\.example\.com/s\?q\=php\.net\+docs', $res);
+
+		$string = 'http://www.example.com/s?q=php.net+docs';
+		$res = preg_quote($string, '/');
+		$this->assertSame('http\:\/\/www\.example\.com\/s\?q\=php\.net\+docs', $res);
+
+		$res = '/a\s*' . $res . '\s*z/i';
+		$string = 'a ' . $string . ' z';
+		$matches = Utility::pregMatch($res, $string);
+		$expected = array($string);
+		$this->assertSame($expected, $matches);
+	}
+
+	/**
+	 * UtilityTest::testPregMatchAll()
+	 *
+	 * @covers Utility::pregMatchAll
+	 * @return void
+	 */
+	public function testPregMatchAll() {
+		$string = 'D-81245 München';
+		preg_match_all('/(*UTF8)([\w+])-([a-z0-9]+)\s+\b([\w\s]+)\b/iu', $string, $matches, PREG_SET_ORDER);
+		$expected = array(
+			array(
+				$string,
+				'D',
+				'81245',
+				'München'
+			)
+		);
+		$this->assertSame($expected, $matches);
+
+		// we dont need the utf8 hack:
+		$matches = Utility::pregMatchAll('/([\w+])-([a-z0-9]+)\s+\b([\w\s]+)\b/iu', $string);
+		$this->assertSame($expected, $matches);
+	}
+
+	/**
+	 * UtilityTest::testStrSplit()
+	 *
+	 * @covers Utility::strSplit
+	 * @return void
+	 */
+	public function testStrSplit() {
+		$res = str_split('some äöü string', 7);
+		$expected = array('some äö', 'ü strin', 'g');
+		$this->assertNotSame($expected, $res);
+
+		$res = Utility::strSplit('some äöü string', 7);
+		$this->assertSame($expected, $res);
+	}
+
+	/**
+	 * UtilityTest::testUrlEncode()
+	 *
+	 * @covers Utility::urlEncode
+	 * @return void
+	 */
+	public function testUrlEncode() {
+		$res = Utility::urlEncode('Some/cool=value+more-infos');
+		$this->assertSame('U29tZS9jb29sPXZhbHVlK21vcmUtaW5mb3M_', $res);
+	}
+
+	/**
+	 * UtilityTest::testUrlDecode()
+	 *
+	 * @covers Utility::urlDecode
+	 * @return void
+	 */
+	public function testUrlDecode() {
+		$res = Utility::urlDecode('U29tZS9jb29sPXZhbHVlK21vcmUtaW5mb3M_');
+		$this->assertSame('Some/cool=value+more-infos', $res);
+	}
+
+	/**
+	 * UtilityTest::testTypeCast()
+	 *
+	 * @covers Utility::typeCast
+	 * @return void
+	 */
+	public function testTypeCast() {
+		$res = Utility::typeCast(2, 'string');
+		$this->assertNotSame(2, $res);
+		$this->assertSame('2', $res);
+	}
+
+	/**
+	 * UtilityTest::testGetClientIp()
+	 *
+	 * @covers Utility::getClientIp
+	 * @return void
+	 */
+	public function testGetClientIp() {
+		$res = Utility::getClientIp();
+		$this->assertEquals(env('REMOTE_ADDR'), $res);
+	}
+
+	/**
+	 * UtilityTest::testGetMimeType()
+	 *
+	 * @covers Utility::getMimeType
+	 * @return void
+	 */
+	public function testGetMimeType() {
+		$res = Utility::getMimeType('http://www.spiegel.de/static/sys/v10/icons/home_v2.png');
+		$this->assertEquals('image/png', $res);
+
+		$res = Utility::getMimeType('http://www.spiegel.de/static/sys/v10/icons/home_v2_inexistent.png');
+		$this->assertEquals('', $res);
+
+		$res = Utility::getMimeType(CakePlugin::path('Tools') . 'Test' . DS . 'test_files' . DS . 'img' . DS . 'hotel.jpg');
+		$this->assertEquals('image/jpeg', $res);
+	}
+
+	/**
+	 * UtilityTest::testFileExists()
+	 *
+	 * @covers Utility::fileExists
+	 * @return void
+	 */
+	public function testFileExists() {
+		$res = Utility::fileExists('http://www.spiegel.de/static/sys/v10/icons/home_v2.png');
+		$this->assertTrue($res);
+
+		$res = Utility::fileExists(CakePlugin::path('Tools') . 'Test' . DS . 'test_files' . DS . 'img' . DS . 'hotel.jpg');
+		$this->assertTrue($res);
+
+		$res = Utility::fileExists('http://www.spiegel.de/static/sys/v10/icons/home_v2_inexistent.png');
+		$this->assertFalse($res);
+
+		$res = Utility::fileExists(CakePlugin::path('Tools') . 'Test' . DS . 'test_files' . DS . 'img' . DS . 'fooooo.jpg');
+		$this->assertFalse($res);
+	}
+
+	/**
+	 * UtilityTest::testUrlExists()
+	 *
+	 * @covers Utility::urlExists
+	 * @return void
+	 */
+	public function testUrlExists() {
+		$res = Utility::urlExists('http://www.spiegel.de');
+		$this->assertTrue($res);
+
+		$res = Utility::urlExists('http://www.spiegel.de/some/inexistent.img');
+		$this->assertFalse($res);
+	}
+
+	/**
+	 * UtilityTest::testGetReferer()
+	 *
+	 * @covers Utility::getReferer
+	 * @return void
+	 */
+	public function testGetReferer() {
+		$res = Utility::getReferer();
+		$this->assertEquals(env('HTTP_REFERER'), $res);
+
+		$res = Utility::getReferer(true);
+		$this->assertEquals(env('HTTP_REFERER'), $res);
+
+		$_SERVER['HTTP_REFERER'] = '/foo/bar';
+		$res = Utility::getReferer(true);
+		$base = Configure::read('App.fullBaseUrl');
+		if (!$base) {
+			$base = 'http://localhost';
+		}
+		$this->assertEquals($base . env('HTTP_REFERER'), $res);
+	}
+
+	/**
+	 * UtilityTest::testGetHeaderFromUrl()
+	 *
+	 * @covers Utility::getHeaderFromUrl
+	 * @return void
+	 */
+	public function testGetHeaderFromUrl() {
+		$res = Utility::getHeaderFromUrl('http://www.spiegel.de');
+		$this->assertTrue(is_array($res) && count($res) > 1);
+		//$this->assertEquals('HTTP/1.0 200 OK', $res[0]);
+	}
+
+	/**
+	 * UtilityTest::testAutoPrefixUrl()
+	 *
+	 * @covers Utility::autoPrefixUrl
+	 * @return void
+	 */
+	public function testAutoPrefixUrl() {
+		$res = Utility::autoPrefixUrl('www.spiegel.de');
+		$this->assertEquals('http://www.spiegel.de', $res);
+	}
+
+	/**
+	 * UtilityTest::testCleanUrl()
+	 *
+	 * @covers Utility::cleanUrl
+	 * @return void
+	 */
+	public function testCleanUrl() {
+		$res = Utility::cleanUrl('www.spiegel.de');
+		$this->assertEquals('http://www.spiegel.de', $res);
+
+		$res = Utility::cleanUrl('http://');
+		$this->assertEquals('', $res);
+
+		$res = Utility::cleanUrl('http://www');
+		$this->assertEquals('', $res);
+
+		$res = Utility::cleanUrl('spiegel.de');
+		$this->assertEquals('http://spiegel.de', $res);
+
+		$res = Utility::cleanUrl('spiegel.de', true);
+		//echo returns($res);
+		$this->assertEquals('http://www.spiegel.de', $res);
+	}
+
+	/**
+	 * UtilityTest::testDeep()
+	 *
+	 * @covers Utility::trimDeep
+	 * @return void
+	 */
+	public function testDeep() {
+		$is = array(
+			'f some',
+			'e 49r ' => 'rf r ',
+			'er' => array(array('ee' => array('rr ' => ' tt ')))
+		);
+		$expected = array(
+			'f some',
+			'e 49r ' => 'rf r',
+			'er' => array(array('ee' => array('rr ' => 'tt')))
+		);
+		//$this->assertSame($expected, $is);
+
+		$res = Utility::trimDeep($is);
+		$this->assertSame($expected, $res);
+
+		//$res = CommonComponent::trimDeep($is);
+		//$this->assertSame($expected, $res);
+	}
+
+	//TODO: move to boostrap
+
+	public function _testDeepFunction() {
+		$is = array(
+			'f some',
+			'e 49r ' => 'rf r ',
+			'er' => array(array('ee' => array('rr ' => ' tt ')))
+		);
+		$expected = array(
+			'f some',
+			'e 49r ' => 'rf r',
+			'er' => array(array('ee' => array('rr ' => 'tt')))
+		);
+
+		$result = Utility::deep('trim', $is);
+		$this->assertSame($expected, $result);
+	}
+
+	/**
+	 * TestCountDim method
+	 *
+	 * @return void
+	 */
+	public function testCountDim() {
+		$data = array('one', '2', 'three');
+		$result = Utility::countDim($data);
+		$this->assertEquals(1, $result);
+
+		$data = array('1' => '1.1', '2', '3');
+		$result = Utility::countDim($data);
+		$this->assertEquals(1, $result);
+
+		$data = array('1' => array('1.1' => '1.1.1'), '2', '3' => array('3.1' => '3.1.1'));
+		$result = Utility::countDim($data);
+		$this->assertEquals(2, $result);
+
+		$data = array('1' => '1.1', '2', '3' => array('3.1' => '3.1.1'));
+		$result = Utility::countDim($data);
+		$this->assertEquals(1, $result);
+
+		$data = array('1' => '1.1', '2', '3' => array('3.1' => '3.1.1'));
+		$result = Utility::countDim($data, true);
+		$this->assertEquals(2, $result);
+
+		$data = array('1' => array('1.1' => '1.1.1'), '2', '3' => array('3.1' => array('3.1.1' => '3.1.1.1')));
+		$result = Utility::countDim($data);
+		$this->assertEquals(2, $result);
+
+		$data = array('1' => array('1.1' => '1.1.1'), '2', '3' => array('3.1' => array('3.1.1' => '3.1.1.1')));
+		$result = Utility::countDim($data, true);
+		$this->assertEquals(3, $result);
+
+		$data = array('1' => array('1.1' => '1.1.1'), array('2' => array('2.1' => array('2.1.1' => '2.1.1.1'))), '3' => array('3.1' => array('3.1.1' => '3.1.1.1')));
+		$result = Utility::countDim($data, true);
+		$this->assertEquals(4, $result);
+
+		$data = array('1' => array('1.1' => '1.1.1'), array('2' => array('2.1' => array('2.1.1' => array('2.1.1.1')))), '3' => array('3.1' => array('3.1.1' => '3.1.1.1')));
+		$result = Utility::countDim($data, true);
+		$this->assertEquals(5, $result);
+
+		$data = array('1' => array('1.1' => '1.1.1'), array('2' => array('2.1' => array('2.1.1' => array('2.1.1.1' => '2.1.1.1.1')))), '3' => array('3.1' => array('3.1.1' => '3.1.1.1')));
+		$result = Utility::countDim($data, true);
+		$this->assertEquals(5, $result);
+
+		$set = array('1' => array('1.1' => '1.1.1'), array('2' => array('2.1' => array('2.1.1' => array('2.1.1.1' => '2.1.1.1.1')))), '3' => array('3.1' => array('3.1.1' => '3.1.1.1')));
+		$result = Utility::countDim($set, false, 0);
+		$this->assertEquals(2, $result);
+
+		$result = Utility::countDim($set, true);
+		$this->assertEquals(5, $result);
+
+		$data = array('one' => array(null), array('null' => null), 'three' => array(true, false, null));
+		$result = Utility::countDim($data, true);
+		$this->assertEquals(2, $result);
+	}
+
+	/**
+	 * UtilityTest::testExpand()
+	 *
+	 * @return void
+	 */
+	public function testExpandList() {
+		$is = array(
+			'Some.Deep.Value1',
+			'Some.Deep.Value2',
+			'Some.Even.Deeper.Nested.Value',
+			'Empty.',
+			'0.1.2',
+			'.EmptyString'
+		);
+		$result = Utility::expandList($is);
+
+		$expected = array(
+			'Some' => array(
+				'Deep' => array('Value1', 'Value2'),
+				'Even' => array('Deeper' => array('Nested' => array('Value')))
+			),
+			'Empty' => array(''),
+			'0' => array('1' => array('2')),
+			'' => array('EmptyString')
+		);
+		$this->assertSame($expected, $result);
+	}
+
+	/**
+	 * UtilityTest::testExpandListWithKeyLessListInvalid()
+	 *
+	 * @expectedException RuntimeException
+	 * @return void
+	 */
+	public function testExpandListWithKeyLessListInvalid() {
+		$is = array(
+			'Some',
+			'ValueOnly',
+		);
+		Utility::expandList($is);
+	}
+
+	/**
+	 * UtilityTest::testExpandListWithKeyLessList()
+	 *
+	 * @return void
+	 */
+	public function testExpandListWithKeyLessList() {
+		$is = array(
+			'Some',
+			'Thing',
+			'.EmptyString'
+		);
+		$result = Utility::expandList($is, '.', '');
+
+		$expected = array(
+			'' => array('Some', 'Thing', 'EmptyString'),
+		);
+		$this->assertSame($expected, $result);
+	}
+
+	/**
+	 * UtilityTest::testFlatten()
+	 *
+	 * @return void
+	 */
+	public function testFlatten() {
+		$is = array(
+			'Some' => array(
+				'Deep' => array('Value1', 'Value2'),
+				'Even' => array('Deeper' => array('Nested' => array('Value')))
+			),
+			'Empty' => array(''),
+			'0' => array('1' => array('2')),
+			//'ValueOnly',
+			'' => array('EmptyString')
+		);
+		$result = Utility::flattenList($is);
+
+		$expected = array(
+			'Some.Deep.Value1',
+			'Some.Deep.Value2',
+			'Some.Even.Deeper.Nested.Value',
+			'Empty.',
+			'0.1.2',
+			//'1.ValueOnly'
+			'.EmptyString'
+		);
+		$this->assertSame($expected, $result);
+
+		// Test integers als booleans
+		$is = array(
+			'Some' => array(
+				'Deep' => array(true),
+				'Even' => array('Deeper' => array('Nested' => array(false, true)))
+			),
+			'Integer' => array('Value' => array(-3)),
+		);
+		$result = Utility::flattenList($is);
+
+		$expected = array(
+			'Some.Deep.1',
+			'Some.Even.Deeper.Nested.0',
+			'Some.Even.Deeper.Nested.1',
+			'Integer.Value.-3',
+		);
+		$this->assertSame($expected, $result);
+	}
+
+	/**
+	 * UtilityTest::testArrayFlattenBasic()
+	 *
+	 * @covers Utility::arrayFlatten
+	 * @return void
+	 */
+	public function testArrayFlattenBasic() {
+		$strings = array(
+			'a' => array('a' => 'A'),
+			'b' => array('b' => 'B', 'c' => 'C'),
+			'c' => array(),
+			'd' => array(array(array('z' => 'Z'), 'y' => 'Y'))
+		);
+
+		$result = Utility::arrayFlatten($strings);
+		$expected = array(
+			'a' => 'A',
+			'b' => 'B',
+			'c' => 'C',
+			'z' => 'Z',
+			'y' => 'Y'
+		);
+		$this->assertSame($expected, $result);
+	}
+
+	/**
+	 * Test that deeper nested values overwrite higher ones.
+	 *
+	 * @covers Utility::arrayFlatten
+	 * @return void
+	 */
+	public function testArrayFlatten() {
+		$array = array(
+			'a' => 1,
+			'b' => array('h' => false, 'c' => array('d' => array('f' => 'g', 'h' => true))),
+			'k' => 'm',
+		);
+		$res = Utility::arrayFlatten($array);
+
+		$expected = array(
+			'a' => 1,
+			'h' => true,
+			'f' => 'g',
+			'k' => 'm',
+		);
+		$this->assertSame($expected, $res);
+	}
+
+	/**
+	 * UtilityTest::testArrayFlattenAndPreserveKeys()
+	 *
+	 * @covers Utility::arrayFlatten
+	 * @return void
+	 */
+	public function testArrayFlattenAndPreserveKeys() {
+		$array = array(
+			0 => 1,
+			1 => array('c' => array('d' => array('g', 'h' => true))),
+			2 => 'm',
+		);
+		$res = Utility::arrayFlatten($array, true);
+
+		$expected = array(
+			0 => 'g',
+			'h' => true,
+			2 => 'm',
+		);
+		$this->assertSame($expected, $res);
+	}
+
+	/**
+	 * UtilityTest::testArrayShiftKeys()
+	 *
+	 * @covers Utility::arrayShiftKeys
+	 * @return void
+	 */
+	public function testArrayShiftKeys() {
+		$array = array(
+			'a' => 1,
+			'b' => array('c' => array('d' => array('f' => 'g', 'h' => true))),
+			'k' => 'm',
+		);
+		$res = Utility::arrayShiftKeys($array);
+
+		$expected = 'a';
+		$this->assertSame($expected, $res);
+		$expected = array(
+			'b' => array('c' => array('d' => array('f' => 'g', 'h' => true))),
+			'k' => 'm',
+		);
+		$this->assertSame($expected, $array);
+	}
+
+	/**
+	 * UtilityTest::testTime()
+	 *
+	 * @covers Utility::returnElapsedTime
+	 * @return void
+	 */
+	public function testTime() {
+		Utility::startClock();
+		time_nanosleep(0, 200000000);
+		$res = Utility::returnElapsedTime();
+		$this->assertTrue(round($res, 1) === 0.2);
+
+		time_nanosleep(0, 100000000);
+		$res = Utility::returnElapsedTime(8, true);
+		$this->assertTrue(round($res, 1) === 0.3);
+
+		time_nanosleep(0, 100000000);
+		$res = Utility::returnElapsedTime();
+		$this->assertTrue(round($res, 1) === 0.1);
+	}
+
+	/**
+	 * UtilityTest::testLogicalAnd()
+	 *
+	 * @covers Utility::logicalAnd
+	 * @return void
+	 */
+	public function testLogicalAnd() {
+		$array = array(
+			'a' => 1,
+			'b' => 1,
+			'c' => 0,
+			'd' => 1,
+		);
+		$is = Utility::logicalAnd($array);
+		$this->assertFalse($is);
+
+		$array = array(
+			'a' => 1,
+			'b' => 1,
+			'c' => 1,
+			'd' => 1,
+		);
+		$is = Utility::logicalAnd($array);
+		$this->assertTrue($is);
+	}
+
+	/**
+	 * UtilityTest::testLogicalOr()
+	 *
+	 * @covers Utility::logicalOr
+	 * @return void
+	 */
+	public function testLogicalOr() {
+		$array = array(
+			'a' => 0,
+			'b' => 1,
+			'c' => 0,
+			'd' => 1,
+		);
+		$is = Utility::logicalOr($array);
+		$this->assertTrue($is);
+
+		$array = array(
+			'a' => 1,
+			'b' => 1,
+			'c' => 1,
+			'd' => 1,
+		);
+		$is = Utility::logicalOr($array);
+		$this->assertTrue($is);
+
+		$array = array(
+			'a' => 0,
+			'b' => 0,
+			'c' => 0,
+			'd' => 0,
+		);
+		$is = Utility::logicalOr($array);
+		$this->assertFalse($is);
+	}
+
+	/**
+	 * UtilityTest::testIsValidSaveAll()
+	 *
+	 * @covers Utility::isValidSaveAll
+	 * @return void
+	 */
+	public function testIsValidSaveAll() {
+		$result = Utility::isValidSaveAll(array());
+		$this->assertFalse($result);
+
+		$result = Utility::isValidSaveAll(array(true, true));
+		$this->assertTrue($result);
+
+		$result = Utility::isValidSaveAll(array(true, false));
+		$this->assertFalse($result);
+	}
+
+}