From cf21e11eaf394c4167be61aca20cbaa9fe6e753b Mon Sep 17 00:00:00 2001 From: James Cameron Date: Wed, 18 Jul 2018 13:57:55 +1000 Subject: [PATCH 1/5] Port to JavaScript - port from Python to JavaScript (by Shirsh Zibbu), - change from GPLv2+ to Apache-2.0 license (by Shirsh Zibbu), - most translations lost; only {en,es,fr} are implemented, needs a translation team to bring forward any matching strings from the previous version, - bundle inexplicably includes a generated locale/ directory, - tested on Ubuntu 18.04 with Sugar 0.112; works fine except for save image button, which does nothing. Written-by: SHIRSH ZIBBU --- .gitignore | 2 - AUTHORS | 4 +- COPYING | 528 ++--- README.md | 16 + activity/{moon-icon.svg => activity-icon.svg} | 0 activity/activity.info | 13 +- ca.po | 271 --- css/activity.css | 34 + css/navbar.css | 20 + data.ini | 130 ++ icons/{grid-icon.svg => toggle-grid.svg} | 0 .../{hemi-icon.svg => toggle-hemisphere.svg} | 0 moon.jpg => img/moon.jpg | Bin index.html | 45 + js/activity.js | 34 + js/data-model.js | 409 ++++ js/draw.js | 269 +++ js/loader.js | 8 + js/moon-activity.js | 329 +++ lib/domReady.js | 129 ++ lib/moment-with-locales.min.js | 76 + lib/require.js | 2000 +++++++++++++++++ lib/sugar-web/LICENSE | 202 ++ lib/sugar-web/README.md | 7 + lib/sugar-web/activity/activity.js | 169 ++ lib/sugar-web/activity/shortcut.js | 60 + lib/sugar-web/bus.js | 14 + lib/sugar-web/bus/sugarizer.js | 82 + lib/sugar-web/bus/sugaros.js | 223 ++ lib/sugar-web/datastore.js | 14 + lib/sugar-web/datastore/sugarizer.js | 331 +++ lib/sugar-web/datastore/sugaros.js | 224 ++ lib/sugar-web/dictstore.js | 68 + lib/sugar-web/env.js | 108 + lib/sugar-web/graphics/README.md | 40 + lib/sugar-web/graphics/activitypalette.html | 9 + lib/sugar-web/graphics/activitypalette.js | 62 + lib/sugar-web/graphics/css/sugar-200dpi.css | 457 ++++ lib/sugar-web/graphics/css/sugar-200dpi.less | 2 + lib/sugar-web/graphics/css/sugar-96dpi.css | 457 ++++ lib/sugar-web/graphics/css/sugar-96dpi.less | 2 + lib/sugar-web/graphics/css/sugar.less | 587 +++++ lib/sugar-web/graphics/grid.js | 57 + lib/sugar-web/graphics/icon.js | 89 + .../graphics/icons/actions/activity-stop.svg | 6 + .../actions/checkbox-checked-selected.svg | 27 + .../icons/actions/checkbox-checked.svg | 27 + .../actions/checkbox-unchecked-selected.svg | 22 + .../icons/actions/checkbox-unchecked.svg | 22 + .../icons/actions/dialog-cancel-active.svg | 6 + .../graphics/icons/actions/dialog-cancel.svg | 6 + .../icons/actions/dialog-ok-active.svg | 6 + .../graphics/icons/actions/dialog-ok.svg | 6 + .../icons/actions/entry-cancel-active.svg | 23 + .../icons/actions/entry-cancel-disabled.svg | 21 + .../graphics/icons/actions/entry-cancel.svg | 21 + .../icons/actions/radio-active-selected.svg | 31 + .../graphics/icons/actions/radio-active.svg | 31 + .../graphics/icons/actions/radio-selected.svg | 26 + .../graphics/icons/actions/radio.svg | 26 + .../graphics/icons/actions/zoom-groups.svg | 6 + .../graphics/icons/actions/zoom-home.svg | 6 + .../icons/actions/zoom-neighborhood.svg | 6 + .../graphics/icons/emblems/arrow-down.svg | 20 + .../graphics/icons/emblems/arrow-up.svg | 20 + lib/sugar-web/graphics/menupalette.html | 8 + lib/sugar-web/graphics/menupalette.js | 53 + lib/sugar-web/graphics/palette.js | 182 ++ lib/sugar-web/graphics/radiobuttonsgroup.js | 62 + lib/sugar-web/graphics/xocolor.js | 731 ++++++ lib/sugar-web/package.json | 10 + lib/sugar-web/presence.js | 302 +++ .../test/functional/datastoreSpec.js | 253 +++ .../test/functional/toolkitContractSpec.js | 31 + lib/sugar-web/test/graphics/iconSpec.js | 59 + .../test/graphics/menupaletteSpec.js | 78 + lib/sugar-web/test/graphics/paletteSpec.js | 36 + .../test/graphics/radiobuttonsgroupSpec.js | 97 + lib/sugar-web/test/karma-shared.conf.js | 75 + lib/sugar-web/test/karma-unit.conf.js | 19 + lib/sugar-web/test/karma.conf.js | 16 + lib/sugar-web/test/loader.js | 21 + lib/sugar-web/test/unit/busSpec.js | 156 ++ lib/sugar-web/test/unit/datastoreSpec.js | 32 + lib/sugar-web/test/unit/dictstoreSpec.js | 54 + lib/sugar-web/test/unit/envSpec.js | 137 ++ lib/text.js | 386 ++++ lib/webL10n.js | 1029 +++++++++ package.json | 10 + po/Moon.pot | 233 -- po/POTFILES.in | 3 - po/ach.po | 234 -- po/af.po | 243 -- po/ak.po | 198 -- po/am.po | 231 -- po/ar.po | 199 -- po/ayc.po | 236 -- po/aym.po | 201 -- po/bg.po | 248 -- po/bi.po | 221 -- po/bn.po | 266 --- po/bn_IN.po | 230 -- po/bs.po | 202 -- po/ca.po | 271 --- po/cpp.po | 230 -- po/cs.po | 263 --- po/da.po | 233 -- po/de.po | 324 --- po/dz.po | 234 -- po/el.po | 266 --- po/en.po | 270 --- po/en_GB.po | 254 --- po/en_US.po | 258 --- po/es.po | 516 ++--- po/fa.po | 216 -- po/fa_AF.po | 264 --- po/ff.po | 198 -- po/fi.po | 202 -- po/fil.po | 226 -- po/fr.po | 402 ++-- po/gn.po | 198 -- po/gu.po | 226 -- po/gug.po | 236 -- po/ha.po | 199 -- po/he.po | 226 -- po/hi.po | 262 --- po/ht.po | 264 --- po/hu.po | 226 -- po/hus.po | 232 -- po/hy.po | 257 --- po/id.po | 250 --- po/ig.po | 226 -- po/is.po | 226 -- po/it.po | 272 --- po/ja.po | 259 --- po/km.po | 219 -- po/kn.po | 202 -- po/ko.po | 226 -- po/kos.po | 226 -- po/ku.po | 198 -- po/lt.po | 226 -- po/lv.po | 202 -- po/mg.po | 247 -- po/mi.po | 249 -- po/mk.po | 230 -- po/ml.po | 226 -- po/mn.po | 225 -- po/mr.po | 233 -- po/ms.po | 226 -- po/mvo.po | 226 -- po/na.po | 226 -- po/nah.po | 198 -- po/nb.po | 226 -- po/ne.po | 263 --- po/nl.po | 266 --- po/nn.po | 202 -- po/pa.po | 226 -- po/pap.po | 256 --- po/pbs.po | 234 -- po/pl.po | 266 --- po/ps.po | 261 --- po/pt.po | 262 --- po/pt_BR.po | 258 --- po/quy.po | 197 -- po/quz.po | 201 -- po/ro.po | 226 -- po/ru.po | 263 --- po/rw.po | 228 -- po/sd.po | 230 -- po/si.po | 257 --- po/sk.po | 227 -- po/sl.po | 258 --- po/sm.po | 214 -- po/son.po | 198 -- po/sq.po | 229 -- po/sr.po | 218 -- po/st.po | 202 -- po/sv.po | 262 --- po/sw.po | 269 --- po/ta.po | 272 --- po/te.po | 230 -- po/template.pot | 200 ++ po/th.po | 261 --- po/to.po | 198 -- po/tr.po | 257 --- po/tvl.po | 226 -- po/tyv.po | 198 -- po/tzm.po | 199 -- po/tzo.po | 230 -- po/ug.po | 226 -- po/uk.po | 235 -- po/ur.po | 228 -- po/vi.po | 257 --- po/wa.po | 226 -- po/yo.po | 198 -- po/zh_CN.po | 263 --- po/zh_HK.po | 206 -- po/zh_TW.po | 260 --- ru.po | 263 --- setup.py | 4 +- 200 files changed, 11697 insertions(+), 26038 deletions(-) create mode 100644 README.md rename activity/{moon-icon.svg => activity-icon.svg} (100%) delete mode 100644 ca.po create mode 100644 css/activity.css create mode 100644 css/navbar.css create mode 100644 data.ini rename icons/{grid-icon.svg => toggle-grid.svg} (100%) rename icons/{hemi-icon.svg => toggle-hemisphere.svg} (100%) rename moon.jpg => img/moon.jpg (100%) create mode 100644 index.html create mode 100644 js/activity.js create mode 100644 js/data-model.js create mode 100644 js/draw.js create mode 100644 js/loader.js create mode 100644 js/moon-activity.js create mode 100644 lib/domReady.js create mode 100644 lib/moment-with-locales.min.js create mode 100644 lib/require.js create mode 100644 lib/sugar-web/LICENSE create mode 100644 lib/sugar-web/README.md create mode 100644 lib/sugar-web/activity/activity.js create mode 100644 lib/sugar-web/activity/shortcut.js create mode 100644 lib/sugar-web/bus.js create mode 100644 lib/sugar-web/bus/sugarizer.js create mode 100644 lib/sugar-web/bus/sugaros.js create mode 100644 lib/sugar-web/datastore.js create mode 100644 lib/sugar-web/datastore/sugarizer.js create mode 100644 lib/sugar-web/datastore/sugaros.js create mode 100644 lib/sugar-web/dictstore.js create mode 100644 lib/sugar-web/env.js create mode 100644 lib/sugar-web/graphics/README.md create mode 100644 lib/sugar-web/graphics/activitypalette.html create mode 100644 lib/sugar-web/graphics/activitypalette.js create mode 100644 lib/sugar-web/graphics/css/sugar-200dpi.css create mode 100644 lib/sugar-web/graphics/css/sugar-200dpi.less create mode 100644 lib/sugar-web/graphics/css/sugar-96dpi.css create mode 100644 lib/sugar-web/graphics/css/sugar-96dpi.less create mode 100644 lib/sugar-web/graphics/css/sugar.less create mode 100644 lib/sugar-web/graphics/grid.js create mode 100644 lib/sugar-web/graphics/icon.js create mode 100644 lib/sugar-web/graphics/icons/actions/activity-stop.svg create mode 100644 lib/sugar-web/graphics/icons/actions/checkbox-checked-selected.svg create mode 100644 lib/sugar-web/graphics/icons/actions/checkbox-checked.svg create mode 100644 lib/sugar-web/graphics/icons/actions/checkbox-unchecked-selected.svg create mode 100644 lib/sugar-web/graphics/icons/actions/checkbox-unchecked.svg create mode 100644 lib/sugar-web/graphics/icons/actions/dialog-cancel-active.svg create mode 100644 lib/sugar-web/graphics/icons/actions/dialog-cancel.svg create mode 100644 lib/sugar-web/graphics/icons/actions/dialog-ok-active.svg create mode 100644 lib/sugar-web/graphics/icons/actions/dialog-ok.svg create mode 100644 lib/sugar-web/graphics/icons/actions/entry-cancel-active.svg create mode 100644 lib/sugar-web/graphics/icons/actions/entry-cancel-disabled.svg create mode 100644 lib/sugar-web/graphics/icons/actions/entry-cancel.svg create mode 100644 lib/sugar-web/graphics/icons/actions/radio-active-selected.svg create mode 100644 lib/sugar-web/graphics/icons/actions/radio-active.svg create mode 100644 lib/sugar-web/graphics/icons/actions/radio-selected.svg create mode 100644 lib/sugar-web/graphics/icons/actions/radio.svg create mode 100644 lib/sugar-web/graphics/icons/actions/zoom-groups.svg create mode 100644 lib/sugar-web/graphics/icons/actions/zoom-home.svg create mode 100644 lib/sugar-web/graphics/icons/actions/zoom-neighborhood.svg create mode 100644 lib/sugar-web/graphics/icons/emblems/arrow-down.svg create mode 100644 lib/sugar-web/graphics/icons/emblems/arrow-up.svg create mode 100644 lib/sugar-web/graphics/menupalette.html create mode 100644 lib/sugar-web/graphics/menupalette.js create mode 100644 lib/sugar-web/graphics/palette.js create mode 100644 lib/sugar-web/graphics/radiobuttonsgroup.js create mode 100644 lib/sugar-web/graphics/xocolor.js create mode 100644 lib/sugar-web/package.json create mode 100644 lib/sugar-web/presence.js create mode 100644 lib/sugar-web/test/functional/datastoreSpec.js create mode 100644 lib/sugar-web/test/functional/toolkitContractSpec.js create mode 100644 lib/sugar-web/test/graphics/iconSpec.js create mode 100644 lib/sugar-web/test/graphics/menupaletteSpec.js create mode 100644 lib/sugar-web/test/graphics/paletteSpec.js create mode 100644 lib/sugar-web/test/graphics/radiobuttonsgroupSpec.js create mode 100644 lib/sugar-web/test/karma-shared.conf.js create mode 100644 lib/sugar-web/test/karma-unit.conf.js create mode 100644 lib/sugar-web/test/karma.conf.js create mode 100644 lib/sugar-web/test/loader.js create mode 100644 lib/sugar-web/test/unit/busSpec.js create mode 100644 lib/sugar-web/test/unit/datastoreSpec.js create mode 100644 lib/sugar-web/test/unit/dictstoreSpec.js create mode 100644 lib/sugar-web/test/unit/envSpec.js create mode 100644 lib/text.js create mode 100644 lib/webL10n.js create mode 100644 package.json delete mode 100644 po/Moon.pot delete mode 100644 po/POTFILES.in delete mode 100644 po/ach.po delete mode 100644 po/af.po delete mode 100644 po/ak.po delete mode 100644 po/am.po delete mode 100644 po/ar.po delete mode 100644 po/ayc.po delete mode 100644 po/aym.po delete mode 100644 po/bg.po delete mode 100644 po/bi.po delete mode 100644 po/bn.po delete mode 100644 po/bn_IN.po delete mode 100644 po/bs.po delete mode 100644 po/ca.po delete mode 100644 po/cpp.po delete mode 100644 po/cs.po delete mode 100644 po/da.po delete mode 100644 po/de.po delete mode 100644 po/dz.po delete mode 100644 po/el.po delete mode 100644 po/en.po delete mode 100644 po/en_GB.po delete mode 100644 po/en_US.po delete mode 100644 po/fa.po delete mode 100644 po/fa_AF.po delete mode 100644 po/ff.po delete mode 100644 po/fi.po delete mode 100644 po/fil.po delete mode 100644 po/gn.po delete mode 100644 po/gu.po delete mode 100644 po/gug.po delete mode 100644 po/ha.po delete mode 100644 po/he.po delete mode 100644 po/hi.po delete mode 100644 po/ht.po delete mode 100644 po/hu.po delete mode 100644 po/hus.po delete mode 100644 po/hy.po delete mode 100644 po/id.po delete mode 100644 po/ig.po delete mode 100644 po/is.po delete mode 100644 po/it.po delete mode 100644 po/ja.po delete mode 100644 po/km.po delete mode 100644 po/kn.po delete mode 100644 po/ko.po delete mode 100644 po/kos.po delete mode 100644 po/ku.po delete mode 100644 po/lt.po delete mode 100644 po/lv.po delete mode 100644 po/mg.po delete mode 100644 po/mi.po delete mode 100644 po/mk.po delete mode 100644 po/ml.po delete mode 100644 po/mn.po delete mode 100644 po/mr.po delete mode 100644 po/ms.po delete mode 100644 po/mvo.po delete mode 100644 po/na.po delete mode 100644 po/nah.po delete mode 100644 po/nb.po delete mode 100644 po/ne.po delete mode 100644 po/nl.po delete mode 100644 po/nn.po delete mode 100644 po/pa.po delete mode 100644 po/pap.po delete mode 100644 po/pbs.po delete mode 100644 po/pl.po delete mode 100644 po/ps.po delete mode 100644 po/pt.po delete mode 100644 po/pt_BR.po delete mode 100644 po/quy.po delete mode 100644 po/quz.po delete mode 100644 po/ro.po delete mode 100644 po/ru.po delete mode 100644 po/rw.po delete mode 100644 po/sd.po delete mode 100644 po/si.po delete mode 100644 po/sk.po delete mode 100644 po/sl.po delete mode 100644 po/sm.po delete mode 100644 po/son.po delete mode 100644 po/sq.po delete mode 100644 po/sr.po delete mode 100644 po/st.po delete mode 100644 po/sv.po delete mode 100644 po/sw.po delete mode 100644 po/ta.po delete mode 100644 po/te.po create mode 100644 po/template.pot delete mode 100644 po/th.po delete mode 100644 po/to.po delete mode 100644 po/tr.po delete mode 100644 po/tvl.po delete mode 100644 po/tyv.po delete mode 100644 po/tzm.po delete mode 100644 po/tzo.po delete mode 100644 po/ug.po delete mode 100644 po/uk.po delete mode 100644 po/ur.po delete mode 100644 po/vi.po delete mode 100644 po/wa.po delete mode 100644 po/yo.po delete mode 100644 po/zh_CN.po delete mode 100644 po/zh_HK.po delete mode 100644 po/zh_TW.po delete mode 100644 ru.po diff --git a/.gitignore b/.gitignore index 6fd0efc..fcd20f2 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,2 @@ -*.xo -*.pyc .DS_Store locale diff --git a/AUTHORS b/AUTHORS index e31a508..dc6af4e 100644 --- a/AUTHORS +++ b/AUTHORS @@ -1 +1,3 @@ -Gary Cliff Martin +Gary Cliff Martin GTK+ 2 +SHIRSH ZIBBU Port to JavaScript +llaske Fixes diff --git a/COPYING b/COPYING index d511905..d399da1 100644 --- a/COPYING +++ b/COPYING @@ -1,339 +1,191 @@ - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - Copyright (C) 1989, 1991 Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Lesser General Public License instead.) You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License along - with this program; if not, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - - Gnomovision version 69, Copyright (C) year name of author - Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the program - `Gnomovision' (which makes passes at compilers) written by James Hacker. - - , 1 April 1989 - Ty Coon, President of Vice - -This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may -consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Lesser General -Public License instead of this License. + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + Copyright Lionel Laské + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/README.md b/README.md new file mode 100644 index 0000000..d4a65dc --- /dev/null +++ b/README.md @@ -0,0 +1,16 @@ +What is this? +============= + +Moon phase viewer, includes Lunar phase information and eclipse data. + +The Moon Activity provides a graphical representation of the current Lunar phase, and a range of common astronomical information including, phase, Julian date, Moon age, Lunation, surface visibility, selenographic terminator longitude (position of shadow on Moon's surface), next Full Moon, next New Moon, next Lunar eclipse, next Solar eclipse. The graphical image can be generated for Northern or Southern hemisphere viewing locations, and a latitude/longitude grid can be added for surface feature reference. + +This activity does not require internet access to work, and will show reasonably accurate information (within an error of about 60 seconds), up until the end of 2018. + +How to use? +=========== + +Moon is part of the Sugar desktop. Please refer to; + +* [How to Get Sugar on sugarlabs.org](https://sugarlabs.org/), +* [How to use Sugar](https://help.sugarlabs.org/), diff --git a/activity/moon-icon.svg b/activity/activity-icon.svg similarity index 100% rename from activity/moon-icon.svg rename to activity/activity-icon.svg diff --git a/activity/activity.info b/activity/activity.info index 7e392ca..ce94868 100644 --- a/activity/activity.info +++ b/activity/activity.info @@ -1,12 +1,9 @@ [Activity] name = Moon -summary = For all those interested in the moon! See the different phases of the moon, latitudes and longitudes and impress all by "predicting" the next full moon! -activity_version = 18 -host_version = 1 +activity_version = 19 bundle_id = com.garycmartin.Moon -icon = moon-icon -exec = sugar-activity moon.MoonActivity -show_launcher = yes -license = GPLv2+ -max_participants = 1 +exec = sugar-activity-web +icon = activity-icon +license = Apache-2.0 repository = https://github.com/sugarlabs/moon-activity.git +summary = For all those interested in the moon! See the different phases of the moon, latitudes and longitudes and impress all by "predicting" the next full moon! diff --git a/ca.po b/ca.po deleted file mode 100644 index 5737bdc..0000000 --- a/ca.po +++ /dev/null @@ -1,271 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-10-03 00:33-0400\n" -"PO-Revision-Date: 2016-04-25 09:12+0000\n" -"Last-Translator: Robert \n" -"Language-Team: LANGUAGE \n" -"Language: ca\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.5.1.1\n" -"X-POOTLE-MTIME: 1461575523.000000\n" - -#. TRANS: "name" option from activity.info file -#: moon.py:68 -msgid "Moon" -msgstr "Lluna" - -#. TRANS: "summary" option from activity.info file -#. TRANS: "description" option from activity.info file -msgid "" -"For all those interested in the moon! See the different phases of the moon, " -"latitudes and longtiutdes and impress all by \"predicting\" the next full " -"moon!" -msgstr "" -"Per a tots aquells que estiguin interessats amb la Lluna! Veure les " -"diferents fases de la Lluna, les latituds i les longituds i impressionar a " -"tothom amb la «predicció» de la propera Lluna plena!" - -#. TRANS: Date format for next full/new moon and next solar/lunar eclipse -#: moon.py:60 -#, python-format -msgid "%c" -msgstr "%c" - -#: moon.py:92 moon.py:118 -msgid "Toggle Grid View" -msgstr "Canvia a la visualització de la quadrícula" - -#: moon.py:98 moon.py:124 -msgid "Toggle Hemisphere View" -msgstr "Canvia a la visualització de l'hemisferi" - -#: moon.py:130 -msgid "View" -msgstr "Visualitza" - -#: moon.py:250 -msgid "" -"Today's Moon Information\n" -"\n" -msgstr "" -"Informació de la Lluna d'avui\n" -"\n" - -#: moon.py:252 -#, python-format -msgid "" -"Phase:\n" -"%s\n" -"\n" -msgstr "" -"Fase:\n" -"%s\n" -"\n" - -#: moon.py:253 -#, python-format -msgid "" -"Julian Date:\n" -"%.2f (astronomical)\n" -"\n" -msgstr "" -"Dia julià:\n" -"%.2f (astronòmic)\n" -"\n" - -#: moon.py:254 -#, python-format -msgid "" -"Age:\n" -"%(days).0f days, %(hours).0f hours, %(minutes).0f minutes\n" -"\n" -msgstr "" -"Envelliment:\n" -"%(days).0f dies, %(hours).0f hores, %(minutes).0f minuts\n" -"\n" - -#: moon.py:255 -#, python-format -msgid "" -"Lunation:\n" -"%(phase).2f%% through lunation %(lunation)d\n" -"\n" -msgstr "" -"Lluna nova:\n" -"%(phase).2f%% fins a la Lluna nova %(lunation)d\n" -"\n" - -#: moon.py:256 -#, python-format -msgid "" -"Surface Visibility:\n" -"%.0f%% (estimated)\n" -"\n" -msgstr "" -"Superfície visible:\n" -"%.0f%% (aproximació)\n" -"\n" - -#: moon.py:257 -#, python-format -msgid "" -"Selenographic Terminator Longitude:\n" -"%(deg).1f°%(westOrEast)s (%(riseOrSet)s)\n" -"\n" -msgstr "" -"Colongitud selenogràfica:\n" -"%(deg).1f°%(westOrEast)s (%(riseOrSet)s)\n" -"\n" - -#: moon.py:258 -#, python-format -msgid "" -"Next Full Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"Pròxima Lluna plena:\n" -"%(date)s en %(days).0f dies\n" -"\n" - -#: moon.py:259 -#, python-format -msgid "" -"Next New Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"Pròxima Lluna nova:\n" -"%(date)s en %(days).0f dies\n" -"\n" - -#: moon.py:260 -#, python-format -msgid "" -"Next Lunar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"Pròxim eclipse de Lluna:\n" -"%(date)s en %(days).0f dies\n" -"\n" - -#: moon.py:261 -#, python-format -msgid "" -"Next Solar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"Pròxim eclipse de Sol:\n" -"%(date)s en %(days).0f dies\n" -"\n" - -#: moon.py:354 -msgid "SNWE" -msgstr "SNOE" - -#: moon.py:357 -msgid "NSEW" -msgstr "NSEO" - -#: moon.py:409 -msgid "Latitude" -msgstr "Latitud" - -#: moon.py:411 -msgid "Longitude" -msgstr "Longitud" - -#: moon.py:522 -msgid "west" -msgstr "oest" - -#: moon.py:524 -msgid "east" -msgstr "est" - -#: moon.py:527 -msgid "Sunset" -msgstr "Posta de sol" - -#: moon.py:529 -msgid "Sunrise" -msgstr "Sortida del sol" - -#: moon.py:545 moon.py:561 -msgid "New Moon" -msgstr "Lluna Nova" - -#: moon.py:547 -msgid "Waxing Crescent" -msgstr "Lluna nova visible" - -#: moon.py:549 -msgid "First Quarter" -msgstr "Quart creixent" - -#: moon.py:551 -msgid "Waxing Gibbous" -msgstr "Lluna gibosa creixent" - -#: moon.py:553 -msgid "Full Moon" -msgstr "Lluna Plena" - -#: moon.py:555 -msgid "Waning Gibbous" -msgstr "Lluna gibosa minvant" - -#: moon.py:557 -msgid "Last Quarter" -msgstr "Quart minvant" - -#: moon.py:559 -msgid "Waning Crescent" -msgstr "Lluna minvant" diff --git a/css/activity.css b/css/activity.css new file mode 100644 index 0000000..0eb100e --- /dev/null +++ b/css/activity.css @@ -0,0 +1,34 @@ +@import url(navbar.css); + +body { + overflow: hidden; +} + +#panel-container { + height: 100%; + width: 100%; +} + +.panel { + box-sizing: border-box; + float: left; + height: 100%; +} + +#panel-left { + overflow-y: auto; + padding: 10px; + width: 40%; +} + +#panel-right { + background-color: black; + width: 60%; + position: relative; +} + +canvas { + position: absolute; + top: 0; + left: 0; +} \ No newline at end of file diff --git a/css/navbar.css b/css/navbar.css new file mode 100644 index 0000000..90e8a1c --- /dev/null +++ b/css/navbar.css @@ -0,0 +1,20 @@ +#main-toolbar button:active, +#main-toolbar button.active { + background-color: #ddd; +} + +#activity-button { + background-image: url(../activity/activity-icon.svg); +} + +#toggle-grid-button { + background-image: url(../icons/toggle-grid.svg); +} + +#toggle-hemisphere-button { + background-image: url(../icons/toggle-hemisphere.svg); +} + +#save-image-button { + background-image: url(../icons/save-image.svg); +} diff --git a/data.ini b/data.ini new file mode 100644 index 0000000..8cdb72e --- /dev/null +++ b/data.ini @@ -0,0 +1,130 @@ +[*] +phase-0=New Moon +phase-1=Waxing Crescent +phase-2=First Quarter +phase-3=Waxing Gibbous +phase-4=Full Moon +phase-5=Waning Gibbous +phase-6=Last Quarter +phase-7=Waning Crescent + +moonInfo=Today\'s Moon Information +phase=Phase +julian=Julian Date +age=Age +lunation=Lunation +visibility=Surface Visibility +seleno=Selenographic Terminator Longitude +full=Next Full Moon +new=Next New Moon +lunar=Next Lunar eclipse +solar=Next Solar eclipse + +minutes=minutes +hours=hours +days=days +astro=(astronomical) +thru=through lunation +in=in +estimated=(estimated) +west=west +east=east +Sunset=Sunset +Sunrise=Sunrise + +SNWE=SNWE +NSEW=NSEW +Latitude=Latitude +Longitude=Longitude + +ToggleGrid=Toggle Grid View +ToggleHemisphere=Toggle Hemisphere View +SaveImage=Save As Image + + +[fr] +phase-0=Nouvelle lune +phase-1=Premier croissant +phase-2=Premier quartier +phase-3=Lune gibbeuse croissante +phase-4=Pleine lune +phase-5=Lune gibbeuse décroissante +phase-6=Dernier quartier +phase-7=Dernier croissant + +moonInfo=Information sur la lune d'aujourd'hui +phase=Phase +julian=Date julienne +age=Âge +lunation=Lunaison +visibility=Visibilité de la surface +seleno=Sélénographique Terminator Longitude +full=Prochaine pleine lune +new=Prochaine nouvelle lune +lunar=Prochaine éclipse de lune +solar=Prochaine éclipse de soleil + +minutes=minutes +hours=heures +days=jours +astro=(astronomique) +thru=de la lunaison +in=dans +estimated=(estimée) +west=ouest +east=est +Sunset=Coucher du soleil +Sunrise=Lever du soleil + +SNWE=SNOE +NSEW=NSEO +Latitude=Latitude +Longitude=Longitude + +ToggleGrid=Afficher/Masquer la grille +ToggleHemisphere=Changer d'hémisphère +SaveImage=Enregistrer en tant qu'image + + +[es] +phase-0=Luna Nueva +phase-1=Luna Nueva Visible +phase-2=Cuarto Creciente +phase-3=Luna Gibada Creciente +phase-4=Luna Llena +phase-5=Luna Gibada Menguante +phase-6=Cuarto Menguante +phase-7=Luna Menguante + +moonInfo=Información de la Luna para hoy +phase=Fase +julian=Fecha Juliana +age=Edad +lunation=Lunation +visibility=Visibilidad de la superficie +seleno=Longitud del terminador selenográfico +full=Próxima Luna Llena +new=Próxima Luna Nueva +lunar=Próximo eclipse lunar +solar=Próximo eclipse solar + +minutes=minutos +hours=días +days=días +astro=(astronómical) +thru=hasta la lunación +in=en +estimated=(estimada) +west=oeste +east=este +Sunset=Se pone +Sunrise=Sale + +SNWE=SNOE +NSEW=NSEO +Latitude=Latitud +Longitude=Longitud + +ToggleGrid=Cambiar a vista grilla +ToggleHemisphere=Cambiar a vista hemisferio +SaveImage=Guardarla como una imagen \ No newline at end of file diff --git a/icons/grid-icon.svg b/icons/toggle-grid.svg similarity index 100% rename from icons/grid-icon.svg rename to icons/toggle-grid.svg diff --git a/icons/hemi-icon.svg b/icons/toggle-hemisphere.svg similarity index 100% rename from icons/hemi-icon.svg rename to icons/toggle-hemisphere.svg diff --git a/moon.jpg b/img/moon.jpg similarity index 100% rename from moon.jpg rename to img/moon.jpg diff --git a/index.html b/index.html new file mode 100644 index 0000000..cd5a4d7 --- /dev/null +++ b/index.html @@ -0,0 +1,45 @@ + + + + + +Moon + + + + + + + + + +
+ + + + + + + + + +
+ +
+
+

+
+
+ +
+
+ + + + + + diff --git a/js/activity.js b/js/activity.js new file mode 100644 index 0000000..6dd4d3a --- /dev/null +++ b/js/activity.js @@ -0,0 +1,34 @@ + +define(["sugar-web/activity/activity","activity/moon-activity","webL10n"], function (activity, moonActivity, l10n) { + + // Manipulate the DOM only when it is ready. + require(['domReady!'], function (doc) { + + // Initialize the activity. + activity.setup(); + moonActivity.setup(); + var datastoreObject = activity.getDatastoreObject(); + datastoreObject.loadAsText(function (error, metadata, data) { + if (data == null) { + return; + } + moonActivity.initPrefs(data); + }); + var stopButton = document.getElementById("stop-button"); + stopButton.addEventListener('click', function (event) { + var pref = moonActivity.getPrefs(); + datastoreObject.setDataAsText(pref); + console.log("writing..."); + datastoreObject.save(function (error) { + if (error === null) { + console.log("write done."); + } + else { + console.log("write failed."); + } + }); + }); + + }); + +}); diff --git a/js/data-model.js b/js/data-model.js new file mode 100644 index 0000000..3908f28 --- /dev/null +++ b/js/data-model.js @@ -0,0 +1,409 @@ +define(function() { + /* + Moon phase data model and various utility methods. + + Accessible properties: + -> functions + update_moon_calculations() + moon_phase_name() + + -> Julian Date + julian_date + + -> Age + days_old + hours_old + minutes_old + + -> Lunation + phase_of_moon + lunation + + -> Visibility + percent_of_full_moon + + -> Selenography + selenographic_deg + west_or_east + rise_or_set + + -> Next new-moon + days_until_new_moon + next_new_moon_date + + -> Next full-moon + days_until_full_moon + next_full_moon_date + + -> Next lunar-eclipse + days_until_lunar_eclipse + next_lunar_eclipse_date + + -> Next solar-eclipse + days_until_solar_eclipse + next_solar_eclipse_date + */ + + 'use strict'; + + var self = {}; + var new_moon_array, full_moon_array, first_quarter_array, last_quarter_array; + var currOffset = (new Date()).getTimezoneOffset() * 60; + + /* + Init hard coded, arrays for New, First Quarter, Full Last Quarter Moon UTC data. + + 2008 to 2018 data from http://sunearth.gsfc.nasa.gov/eclipse/phase/phasecat.html + algorithms used in predicting the phases of the Moon and eclipses are based + on Jean Meeus' Astronomical Algorithms (Willmann-Bell, Inc., 1998). All + calculations are by Fred Espenak, and he assumes full responsibility for + their accuracy. Permission is freely granted to reproduce this data when + accompanied by an acknowledgment. + + Data is all UTC and in YYYY-MM-DD HH:MM format, with New and Full Moon + arrays with an extra end character for eclipse types T=Total (Solar), + A=Annular (Solar), H=Hybrid (Solar Annular/Total), P=Partial (Solar), + t=Total (Lunar Umbral), p=Partial (Lunar Umbral), n=Penumbral (Lunar), + _=none. + */ + + new_moon_array = ["2008-01-08T11:37Z_", "2008-02-07T03:44ZA", "2008-03-07T17:14Z_", "2008-04-06T03:55Z_", "2008-05-05T12:18Z_", "2008-06-03T19:23Z_", "2008-07-03T02:19Z_", "2008-08-01T10:13ZT", "2008-08-30T19:58Z_", "2008-09-29T08:12Z_", "2008-10-28T23:14Z_", "2008-11-27T16:55Z_", "2008-12-27T12:23Z_", "2009-01-26T07:55ZA", "2009-02-25T01:35Z_", "2009-03-26T16:06Z_", "2009-04-25T03:23Z_", "2009-05-24T12:11Z_", "2009-06-22T19:35Z_", "2009-07-22T02:35ZT", "2009-08-20T10:01Z_", "2009-09-18T18:44Z_", "2009-10-18T05:33Z_", "2009-11-16T19:14Z_", "2009-12-16T12:02Z_", "2010-01-15T07:11ZA", "2010-02-14T02:51Z_", "2010-03-15T21:01Z_", "2010-04-14T12:29Z_", "2010-05-14T01:04Z_", "2010-06-12T11:15Z_", "2010-07-11T19:40ZT", "2010-08-10T03:08Z_", "2010-09-08T10:30Z_", "2010-10-07T18:44Z_", "2010-11-06T04:52Z_", "2010-12-05T17:36Z_", "2011-01-04T09:03ZP", "2011-02-03T02:31Z_", "2011-03-04T20:46Z_", "2011-04-03T14:32Z_", "2011-05-03T06:51Z_", "2011-06-01T21:03ZP", "2011-07-01T08:54ZP", "2011-07-30T18:40Z_", "2011-08-29T03:04Z_", "2011-09-27T11:09Z_", "2011-10-26T19:56Z_", "2011-11-25T06:10ZP", "2011-12-24T18:06Z_", "2012-01-23T07:39Z_", "2012-02-21T22:35Z_", "2012-03-22T14:37Z_", "2012-04-21T07:18Z_", "2012-05-20T23:47ZA", "2012-06-19T15:02Z_", "2012-07-19T04:24Z_", "2012-08-17T15:54Z_", "2012-09-16T02:11Z_", "2012-10-15T12:02Z_", "2012-11-13T22:08ZT", "2012-12-13T08:42Z_", "2013-01-11T19:44Z_", "2013-02-10T07:20Z_", "2013-03-11T19:51Z_", "2013-04-10T09:35Z_", "2013-05-10T00:29ZA", "2013-06-08T15:56Z_", "2013-07-08T07:14Z_", "2013-08-06T21:51Z_", "2013-09-05T11:36Z_", "2013-10-05T00:35Z_", "2013-11-03T12:50ZH", "2013-12-03T00:22Z_", "2014-01-01T11:14Z_", "2014-01-30T21:39Z_", "2014-03-01T08:00Z_", "2014-03-30T18:45Z_", "2014-04-29T06:14ZA", "2014-05-28T18:40Z_", "2014-06-27T08:09Z_", "2014-07-26T22:42Z_", "2014-08-25T14:13Z_", "2014-09-24T06:14Z_", "2014-10-23T21:57ZP", "2014-11-22T12:32Z_", "2014-12-22T01:36Z_", "2015-01-20T13:14Z_", "2015-02-18T23:47Z_", "2015-03-20T09:36ZT", "2015-04-18T18:57Z_", "2015-05-18T04:13Z_", "2015-06-16T14:05Z_", "2015-07-16T01:24Z_", "2015-08-14T14:54Z_", "2015-09-13T06:41ZP", "2015-10-13T00:06Z_", "2015-11-11T17:47Z_", "2015-12-11T10:29Z_", "2016-01-10T01:30Z_", "2016-02-08T14:39Z_", "2016-03-09T01:54ZT", "2016-04-07T11:24Z_", "2016-05-06T19:30Z_", "2016-06-05T03:00Z_", "2016-07-04T11:01Z_", "2016-08-02T20:45Z_", "2016-09-01T09:03ZA", "2016-10-01T00:12Z_", "2016-10-30T17:38Z_", "2016-11-29T12:18Z_", "2016-12-29T06:53Z_", "2017-01-28T00:07Z_", "2017-02-26T14:58ZA", "2017-03-28T02:57Z_", "2017-04-26T12:16Z_", "2017-05-25T19:44Z_", "2017-06-24T02:31Z_", "2017-07-23T09:46Z_", "2017-08-21T18:30ZT", "2017-09-20T05:30Z_", "2017-10-19T19:12Z_", "2017-11-18T11:42Z_", "2017-12-18T06:31Z_", "2018-01-17T02:17Z_", "2018-02-15T21:05ZP", "2018-03-17T13:12Z_", "2018-04-16T01:57Z_", "2018-05-15T11:48Z_", "2018-06-13T19:43Z_", "2018-07-13T02:48ZP", "2018-08-11T09:58ZP", "2018-09-09T18:01Z_", "2018-10-09T03:47Z_", "2018-11-07T16:02Z_", "2018-12-07T07:20Z_"]; + full_moon_array = ["2008-01-22T13:35Z_", "2008-02-21T03:31Zt", "2008-03-21T18:40Z_", "2008-04-20T10:25Z_", "2008-05-20T02:11Z_", "2008-06-18T17:30Z_", "2008-07-18T07:59Z_", "2008-08-16T21:16Zp", "2008-09-15T09:13Z_", "2008-10-14T20:03Z_", "2008-11-13T06:17Z_", "2008-12-12T16:37Z_", "2009-01-11T03:27Z_", "2009-02-09T14:49Zn", "2009-03-11T02:38Z_", "2009-04-09T14:56Z_", "2009-05-09T04:01Z_", "2009-06-07T18:12Z_", "2009-07-07T09:21Zn", "2009-08-06T00:55Zn", "2009-09-04T16:03Z_", "2009-10-04T06:10Z_", "2009-11-02T19:14Z_", "2009-12-02T07:30Z_", "2009-12-31T19:13Zp", "2010-01-30T06:18Z_", "2010-02-28T16:38Z_", "2010-03-30T02:25Z_", "2010-04-28T12:18Z_", "2010-05-27T23:07Z_", "2010-06-26T11:30Zp", "2010-07-26T01:37Z_", "2010-08-24T17:05Z_", "2010-09-23T09:17Z_", "2010-10-23T01:36Z_", "2010-11-21T17:27Z_", "2010-12-21T08:13Zt", "2011-01-19T21:21Z_", "2011-02-18T08:36Z_", "2011-03-19T18:10Z_", "2011-04-18T02:44Z_", "2011-05-17T11:09Z_", "2011-06-15T20:13Zt", "2011-07-15T06:40Z_", "2011-08-13T18:58Z_", "2011-09-12T09:27Z_", "2011-10-12T02:06Z_", "2011-11-10T20:16Z_", "2011-12-10T14:36Zt", "2012-01-09T07:30Z_", "2012-02-07T21:54Z_", "2012-03-08T09:40Z_", "2012-04-06T19:19Z_", "2012-05-06T03:35Z_", "2012-06-04T11:12Zp", "2012-07-03T18:52Z_", "2012-08-02T03:27Z_", "2012-08-31T13:58Z_", "2012-09-30T03:19Z_", "2012-10-29T19:50Z_", "2012-11-28T14:46Zn", "2012-12-28T10:21Z_", "2013-01-27T04:38Z_", "2013-02-25T20:26Z_", "2013-03-27T09:27Z_", "2013-04-25T19:57Zp", "2013-05-25T04:25Zn", "2013-06-23T11:32Z_", "2013-07-22T18:15Z_", "2013-08-21T01:45Z_", "2013-09-19T11:13Z_", "2013-10-18T23:38Zn", "2013-11-17T15:16Z_", "2013-12-17T09:28Z_", "2014-01-16T04:52Z_", "2014-02-14T23:53Z_", "2014-03-16T17:09Z_", "2014-04-15T07:42Zt", "2014-05-14T19:16Z_", "2014-06-13T04:11Z_", "2014-07-12T11:25Z_", "2014-08-10T18:09Z_", "2014-09-09T01:38Z_", "2014-10-08T10:51Zt", "2014-11-06T22:23Z_", "2014-12-06T12:27Z_", "2015-01-05T04:53Z_", "2015-02-03T23:09Z_", "2015-03-05T18:06Z_", "2015-04-04T12:06Zp", "2015-05-04T03:42Z_", "2015-06-02T16:19Z_", "2015-07-02T02:20Z_", "2015-07-31T10:43Z_", "2015-08-29T18:35Z_", "2015-09-28T02:50Zt", "2015-10-27T12:05Z_", "2015-11-25T22:44Z_", "2015-12-25T11:11Z_", "2016-01-24T01:46Z_", "2016-02-22T18:20Z_", "2016-03-23T12:01Zn", "2016-04-22T05:24Z_", "2016-05-21T21:15Z_", "2016-06-20T11:02Z_", "2016-07-19T22:57Z_", "2016-08-18T09:27Z_", "2016-09-16T19:05Zn", "2016-10-16T04:23Z_", "2016-11-14T13:52Z_", "2016-12-14T00:06Z_", "2017-01-12T11:34Z_", "2017-02-11T00:33Zn", "2017-03-12T14:54Z_", "2017-04-11T06:08Z_", "2017-05-10T21:43Z_", "2017-06-09T13:10Z_", "2017-07-09T04:07Z_", "2017-08-07T18:11Zp", "2017-09-06T07:03Z_", "2017-10-05T18:40Z_", "2017-11-04T05:23Z_", "2017-12-03T15:47Z_", "2018-01-02T02:24Z_", "2018-01-31T13:27Zt", "2018-03-02T00:51Z_", "2018-03-31T12:37Z_", "2018-04-30T00:58Z_", "2018-05-29T14:20Z_", "2018-06-28T04:53Z_", "2018-07-27T20:20Zt", "2018-08-26T11:56Z_", "2018-09-25T02:53Z_", "2018-10-24T16:45Z_", "2018-11-23T05:39Z_", "2018-12-22T17:49Z_"]; + first_quarter_array = ["2008-01-15T19:46Z", "2008-02-14T03:34Z", "2008-03-14T10:46Z", "2008-04-12T18:32Z", "2008-05-12T03:47Z", "2008-06-10T15:04Z", "2008-07-10T04:35Z", "2008-08-08T20:20Z", "2008-09-07T14:04Z", "2008-10-07T09:04Z", "2008-11-06T04:04Z", "2008-12-05T21:26Z", "2009-01-04T11:56Z", "2009-02-02T23:13Z", "2009-03-04T07:46Z", "2009-04-02T14:34Z", "2009-05-01T20:44Z", "2009-05-31T03:22Z", "2009-06-29T11:28Z", "2009-07-28T22:00Z", "2009-08-27T11:42Z", "2009-09-26T04:50Z", "2009-10-26T00:42Z", "2009-11-24T21:39Z", "2009-12-24T17:36Z", "2010-01-23T10:53Z", "2010-02-22T00:42Z", "2010-03-23T11:00Z", "2010-04-21T18:20Z", "2010-05-20T23:43Z", "2010-06-19T04:30Z", "2010-07-18T10:11Z", "2010-08-16T18:14Z", "2010-09-15T05:50Z", "2010-10-14T21:27Z", "2010-11-13T16:39Z", "2010-12-13T13:59Z", "2011-01-12T11:31Z", "2011-02-11T07:18Z", "2011-03-12T23:45Z", "2011-04-11T12:05Z", "2011-05-10T20:33Z", "2011-06-09T02:11Z", "2011-07-08T06:29Z", "2011-08-06T11:08Z", "2011-09-04T17:39Z", "2011-10-04T03:15Z", "2011-11-02T16:38Z", "2011-12-02T09:52Z", "2012-01-01T06:15Z", "2012-01-31T04:10Z", "2012-03-01T01:22Z", "2012-03-30T19:41Z", "2012-04-29T09:58Z", "2012-05-28T20:16Z", "2012-06-27T03:30Z", "2012-07-26T08:56Z", "2012-08-24T13:54Z", "2012-09-22T19:41Z", "2012-10-22T03:32Z", "2012-11-20T14:31Z", "2012-12-20T05:19Z", "2013-01-18T23:45Z", "2013-02-17T20:31Z", "2013-03-19T17:27Z", "2013-04-18T12:31Z", "2013-05-18T04:35Z", "2013-06-16T17:24Z", "2013-07-16T03:18Z", "2013-08-14T10:56Z", "2013-09-12T17:08Z", "2013-10-11T23:02Z", "2013-11-10T05:57Z", "2013-12-09T15:12Z", "2014-01-08T03:39Z", "2014-02-06T19:22Z", "2014-03-08T13:27Z", "2014-04-07T08:31Z", "2014-05-07T03:15Z", "2014-06-05T20:39Z", "2014-07-05T11:59Z", "2014-08-04T00:50Z", "2014-09-02T11:11Z", "2014-10-01T19:33Z", "2014-10-31T02:48Z", "2014-11-29T10:06Z", "2014-12-28T18:31Z", "2015-01-27T04:48Z", "2015-02-25T17:14Z", "2015-03-27T07:43Z", "2015-04-25T23:55Z", "2015-05-25T17:19Z", "2015-06-24T11:03Z", "2015-07-24T04:04Z", "2015-08-22T19:31Z", "2015-09-21T08:59Z", "2015-10-20T20:31Z", "2015-11-19T06:27Z", "2015-12-18T15:14Z", "2016-01-16T23:26Z", "2016-02-15T07:46Z", "2016-03-15T17:03Z", "2016-04-14T03:59Z", "2016-05-13T17:02Z", "2016-06-12T08:10Z", "2016-07-12T00:52Z", "2016-08-10T18:21Z", "2016-09-09T11:49Z", "2016-10-09T04:33Z", "2016-11-07T19:51Z", "2016-12-07T09:03Z", "2017-01-05T19:47Z", "2017-02-04T04:19Z", "2017-03-05T11:32Z", "2017-04-03T18:39Z", "2017-05-03T02:47Z", "2017-06-01T12:42Z", "2017-07-01T00:51Z", "2017-07-30T15:23Z", "2017-08-29T08:13Z", "2017-09-28T02:54Z", "2017-10-27T22:22Z", "2017-11-26T17:03Z", "2017-12-26T09:20Z", "2018-01-24T22:20Z", "2018-02-23T08:09Z", "2018-03-24T15:35Z", "2018-04-22T21:46Z", "2018-05-22T03:49Z", "2018-06-20T10:51Z", "2018-07-19T19:52Z", "2018-08-18T07:49Z", "2018-09-16T23:15Z", "2018-10-16T18:02Z", "2018-11-15T14:54Z", "2018-12-15T11:49Z"]; + last_quarter_array = ["2008-01-30T05:03Z", "2008-02-29T02:18Z", "2008-03-29T21:47Z", "2008-04-28T14:12Z", "2008-05-28T02:57Z", "2008-06-26T12:10Z", "2008-07-25T18:42Z", "2008-08-23T23:50Z", "2008-09-22T05:04Z", "2008-10-21T11:55Z", "2008-11-19T21:31Z", "2008-12-19T10:29Z", "2009-01-18T02:46Z", "2009-02-16T21:37Z", "2009-03-18T17:47Z", "2009-04-17T13:36Z", "2009-05-17T07:26Z", "2009-06-15T22:15Z", "2009-07-15T09:53Z", "2009-08-13T18:55Z", "2009-09-12T02:16Z", "2009-10-11T08:56Z", "2009-11-09T15:56Z", "2009-12-09T00:13Z", "2010-01-07T10:40Z", "2010-02-05T23:49Z", "2010-03-07T15:42Z", "2010-04-06T09:37Z", "2010-05-06T04:15Z", "2010-06-04T22:13Z", "2010-07-04T14:35Z", "2010-08-03T04:59Z", "2010-09-01T17:22Z", "2010-10-01T03:52Z", "2010-10-30T12:46Z", "2010-11-28T20:36Z", "2010-12-28T04:18Z", "2011-01-26T12:57Z", "2011-02-24T23:26Z", "2011-03-26T12:07Z", "2011-04-25T02:47Z", "2011-05-24T18:52Z", "2011-06-23T11:48Z", "2011-07-23T05:02Z", "2011-08-21T21:55Z", "2011-09-20T13:39Z", "2011-10-20T03:30Z", "2011-11-18T15:09Z", "2011-12-18T00:48Z", "2012-01-16T09:08Z", "2012-02-14T17:04Z", "2012-03-15T01:25Z", "2012-04-13T10:50Z", "2012-05-12T21:47Z", "2012-06-11T10:41Z", "2012-07-11T01:48Z", "2012-08-09T18:55Z", "2012-09-08T13:15Z", "2012-10-08T07:33Z", "2012-11-07T00:36Z", "2012-12-06T15:32Z", "2013-01-05T03:58Z", "2013-02-03T13:56Z", "2013-03-04T21:53Z", "2013-04-03T04:37Z", "2013-05-02T11:14Z", "2013-05-31T18:58Z", "2013-06-30T04:54Z", "2013-07-29T17:43Z", "2013-08-28T09:35Z", "2013-09-27T03:56Z", "2013-10-26T23:41Z", "2013-11-25T19:28Z", "2013-12-25T13:48Z", "2014-01-24T05:19Z", "2014-02-22T17:15Z", "2014-03-24T01:46Z", "2014-04-22T07:52Z", "2014-05-21T12:59Z", "2014-06-19T18:39Z", "2014-07-19T02:08Z", "2014-08-17T12:26Z", "2014-09-16T02:05Z", "2014-10-15T19:12Z", "2014-11-14T15:16Z", "2014-12-14T12:51Z", "2015-01-13T09:47Z", "2015-02-12T03:50Z", "2015-03-13T17:48Z", "2015-04-12T03:44Z", "2015-05-11T10:36Z", "2015-06-09T15:42Z", "2015-07-08T20:24Z", "2015-08-07T02:03Z", "2015-09-05T09:54Z", "2015-10-04T21:06Z", "2015-11-03T12:24Z", "2015-12-03T07:40Z", "2016-01-02T05:30Z", "2016-02-01T03:28Z", "2016-03-01T23:11Z", "2016-03-31T15:17Z", "2016-04-30T03:29Z", "2016-05-29T12:12Z", "2016-06-27T18:19Z", "2016-07-26T23:00Z", "2016-08-25T03:41Z", "2016-09-23T09:56Z", "2016-10-22T19:14Z", "2016-11-21T08:33Z", "2016-12-21T01:56Z", "2017-01-19T22:14Z", "2017-02-18T19:33Z", "2017-03-20T15:58Z", "2017-04-19T09:57Z", "2017-05-19T00:33Z", "2017-06-17T11:33Z", "2017-07-16T19:26Z", "2017-08-15T01:15Z", "2017-09-13T06:25Z", "2017-10-12T12:25Z", "2017-11-10T20:37Z", "2017-12-10T07:51Z", "2018-01-08T22:25Z", "2018-02-07T15:54Z", "2018-03-09T11:20Z", "2018-04-08T07:18Z", "2018-05-08T02:09Z", "2018-06-06T18:32Z", "2018-07-06T07:51Z", "2018-08-04T18:18Z", "2018-09-03T02:37Z", "2018-10-02T09:45Z", "2018-10-31T16:40Z", "2018-11-30T00:19Z", "2018-12-29T09:34Z"]; + + + + self.update_moon_calculations = function() { + /* + Generate all Moon data ready for display. + */ + + var currDate = (new Date().getTime()) / 1000; + + var SECONDS_PER_DAY = 86400; + var last_new_moon_sec = last_new_moon_sec_at_time(currDate); + var next_new_moon_sec = next_new_moon_sec_at_time(currDate); + var last_full_moon_sec = last_full_moon_sec_at_time(currDate); + var next_full_moon_sec = next_full_moon_sec_at_time(currDate); + var last_quarter_moon_sec = last_quarter_moon_sec_at_time(currDate); + var next_quarter_moon_sec = next_quarter_moon_sec_at_time(currDate); + + /* Calculate phase percent of Moon based on nearest two data values */ + if (next_full_moon_sec <= next_new_moon_sec) { + if (next_quarter_moon_sec <= next_full_moon_sec) { + self.phase_of_moon = (last_new_moon_sec / (last_new_moon_sec + next_quarter_moon_sec)) * 0.25; + } else { + self.phase_of_moon = (last_quarter_moon_sec / (last_quarter_moon_sec + next_full_moon_sec)) * 0.25 + 0.25; + } + } else { + if (next_quarter_moon_sec <= next_new_moon_sec) { + self.phase_of_moon = (last_full_moon_sec / (last_full_moon_sec + next_quarter_moon_sec)) * 0.25 + 0.5; + } else { + self.phase_of_moon = (last_quarter_moon_sec / (last_quarter_moon_sec + next_new_moon_sec)) * 0.25 + 0.75; + } + } + + /* Generate interesting human readable values */ + self.percent_of_full_moon = (Math.cos(((self.phase_of_moon + 0.5) / 0.5 * Math.PI)) + 1) * 0.5; + self.julian_date = 2452135 + ((currDate - 997700400) / SECONDS_PER_DAY); + self.lunation = lunation_at_time(currDate); + var day_with_fraction = last_new_moon_sec / SECONDS_PER_DAY; + self.days_old = Math.floor(day_with_fraction); + self.hours_old = Math.floor((day_with_fraction - self.days_old) * 24); + self.minutes_old = Math.floor((((day_with_fraction - self.days_old) * 24) - self.hours_old) * 60); + self.days_until_new_moon = next_new_moon_sec / SECONDS_PER_DAY; + self.next_new_moon_date = currDate + next_new_moon_sec - correct_for_tz_and_dst(currDate + next_new_moon_sec); + self.days_until_full_moon = next_full_moon_sec / SECONDS_PER_DAY; + self.next_full_moon_date = currDate + next_full_moon_sec - correct_for_tz_and_dst(currDate + next_full_moon_sec); + + /* Eclipse information */ + self.next_lunar_eclipse_sec = next_lunar_eclipse_sec_at_time(currDate); + var next_solar_eclipse_sec = next_solar_eclipse_sec_at_time(currDate); + self.last_lunar_eclipse_sec = last_lunar_eclipse_sec_at_time(currDate); + self.days_until_lunar_eclipse = self.next_lunar_eclipse_sec / SECONDS_PER_DAY; + self.next_lunar_eclipse_date = currDate + self.next_lunar_eclipse_sec - correct_for_tz_and_dst(currDate + self.next_lunar_eclipse_sec); + self.days_until_solar_eclipse = next_solar_eclipse_sec / SECONDS_PER_DAY; + self.next_solar_eclipse_date = currDate + next_solar_eclipse_sec - correct_for_tz_and_dst(currDate + next_solar_eclipse_sec); + + /* Selenographic terminator longitude */ + var selenographic_tmp = 270 + (self.phase_of_moon * 360); + if (selenographic_tmp >= 360) { + selenographic_tmp -= 360; + } + if (selenographic_tmp >= 270) { + selenographic_tmp -= 360; + } else if (selenographic_tmp >= 180) { + selenographic_tmp -= 180; + } else if (selenographic_tmp >= 90) { + selenographic_tmp -= 180; + } + selenographic_tmp = -selenographic_tmp; + if (selenographic_tmp < 0) { + self.west_or_east = "west"; + } else { + self.west_or_east = "east"; + } + self.selenographic_deg = Math.abs(selenographic_tmp); + if (self.phase_of_moon >= 0.5) { + self.rise_or_set = "Sunset"; + } else { + self.rise_or_set = "Sunrise"; + } + }; + + + function correct_for_tz_and_dst(date_sec_of_event) { + /* + Time-zone and/or daylight-saving correction (internal data is UTC). + */ + + return currOffset; + // if (time.daylight === 0 || time.localtime(date_sec_of_event)[8] === 0) { + // /* Time-zone correction */ + // return time.timezone; + // } else { + // /* Time-zone & daylight saving correction */ + // return time.altzone; + // } + } + + + self.moon_phase_name = function() { + /* + Return the moon image name for a given phase value. + */ + + if (self.phase_of_moon >= 0 && self.phase_of_moon < 0.025) { + return "phase-0"; + // return "New Moon"; + } else if (self.phase_of_moon >= 0.025 && self.phase_of_moon < 0.225) { + return "phase-1"; + // return "Waxing Crescent"; + } else if (self.phase_of_moon >= 0.225 && self.phase_of_moon < 0.275) { + return "phase-2"; + // return "First Quarter"; + } else if (self.phase_of_moon >= 0.275 && self.phase_of_moon < 0.475) { + return "phase-3"; + // return "Waxing Gibbous"; + } else if (self.phase_of_moon >= 0.475 && self.phase_of_moon < 0.525) { + return "phase-4"; + // return "Full Moon"; + } else if (self.phase_of_moon >= 0.525 && self.phase_of_moon < 0.735) { + return "phase-5"; + // return "Waning Gibbous"; + } else if (self.phase_of_moon >= 0.735 && self.phase_of_moon < 0.775) { + return "phase-6"; + // return "Last Quarter"; + } else if (self.phase_of_moon >= 0.775 && self.phase_of_moon < 0.975) { + return "phase-7"; + // return "Waning Crescent"; + } else { + return "phase-0"; + // return "New Moon"; + } + }; + + + function next_full_moon_sec_at_time(now) { + /* + Return seconds to the next Full Moon. + */ + + var next; + for (var i = 0; i < full_moon_array.length; i++) { + var date_string = full_moon_array[i]; + next = Date.parse(date_string.slice(0, -1)) / 1000 + currOffset; + if (next >= now) { + break; + } + } + return next - now; + } + + + function next_new_moon_sec_at_time(now) { + /* + Return seconds to the next New Moon. + */ + + var next; + for (var i = 0; i < new_moon_array.length; i++) { + var date_string = new_moon_array[i]; + next = Date.parse(date_string.slice(0, -1)) / 1000 + currOffset; + if (next >= now) { + break; + } + } + return next - now; + } + + + function next_quarter_moon_sec_at_time(now) { + /* + Return seconds to the next Quater Moon phase (could be First or Last). + */ + + var next1, next2; + for (var i = 0; i < first_quarter_array.length; i++) { + var date_string = first_quarter_array[i]; + next1 = Date.parse(date_string) / 1000 + currOffset; + if (next1 >= now) { + break; + } + } + for (var i = 0; i < last_quarter_array.length; i++) { + var date_string = last_quarter_array[i]; + next2 = Date.parse(date_string) / 1000 + currOffset; + if (next2 >= now) { + break; + } + } + var next = Math.min(next1, next2); + return next - now; + } + + + function last_full_moon_sec_at_time(now) { + /* + Return (positive) seconds since the last Full Moon. + */ + + var last; + for (var i = 0; i < full_moon_array.length; i++) { + var date_string = full_moon_array[i]; + var then = Date.parse(date_string.slice(0, -1)) / 1000 + currOffset; + if (then >= now) { + break; + } + last = then; + } + return now - last; + } + + + function last_new_moon_sec_at_time(now) { + /* + Return (positive) seconds since the last New Moon. + */ + + var last; + for (var i = 0; i < new_moon_array.length; i++) { + var date_string = new_moon_array[i]; + var then = Date.parse(date_string.slice(0, -1)) / 1000 + currOffset; + if (then >= now) { + break; + } + last = then; + } + return now - last; + } + + + function last_quarter_moon_sec_at_time(now) { + /* + Return (positive) seconds to the last Quater Moon phase (could be First or Last). + */ + + var last1, last2; + for (var i = 0; i < first_quarter_array.length; i++) { + var date_string = first_quarter_array[i]; + var then = Date.parse(date_string) / 1000 + currOffset; + if (then >= now) { + break; + } + last1 = then; + } + for (var i = 0; i < last_quarter_array.length; i++) { + var date_string = last_quarter_array[i]; + var then = Date.parse(date_string) / 1000 + currOffset; + if (then >= now) { + break; + } + last2 = then; + } + var last = Math.max(last1, last2); + return now - last; + } + + + function lunation_at_time(now) { + /* + Return lunation number, 0 started on Dec 18, 1922, current data set starts as 2008 + */ + + self.lunation = 1051; + for (var i = 0; i < new_moon_array.length; i++) { + var date_string = new_moon_array[i]; + var next = Date.parse(date_string.slice(0, -1)) / 1000 + currOffset; + if (next >= now) { + break; + } + self.lunation += 1; + } + return self.lunation; + } + + + function next_lunar_eclipse_sec_at_time(now) { + /* + Return (positive) seconds to the next Lunar eclipe or -1. + */ + + for (var i = 0; i < full_moon_array.length; i++) { + var date_string = full_moon_array[i]; + if (date_string.slice(-1) !== "_") { + var next = Date.parse(date_string.slice(0, -1)) / 1000 + currOffset; + if (next >= now) { + console.log(new Date(1000*next)) + return next - now; + } + } + } + return -1; + } + + + function last_lunar_eclipse_sec_at_time(now) { + /* + Return (positive) seconds to the last Lunar eclipe or -1. + */ + + var last = -1; + for (var i = 0; i < full_moon_array.length; i++) { + var date_string = full_moon_array[i]; + if (date_string.slice(-1) !== "_") { + var then = Date.parse(date_string.slice(0, -1)) / 1000 + currOffset; + if (then >= now) { + break; + } + last = then; + } + } + if (last === -1) { + return -1; + } else { + return now - last; + } + } + + + function next_solar_eclipse_sec_at_time(now) { + /* + Return (positive) seconds to the next Solar eclipe or -1. + */ + + for (var i = 0; i < new_moon_array.length; i++) { + var date_string = new_moon_array[i]; + if (date_string.slice(-1) !== "_") { + var next = Date.parse(date_string.slice(0, -1)) / 1000 + currOffset; + if (next >= now) { + return next - now; + } + } + } + return -1; + } + + return self; +}); diff --git a/js/draw.js b/js/draw.js new file mode 100644 index 0000000..2fc6dc4 --- /dev/null +++ b/js/draw.js @@ -0,0 +1,269 @@ +define(['activity/data-model', 'webL10n'], function(DataModel, l10n) { + + 'use strict'; + + var canvas = document.querySelector('canvas'), + ctx = canvas.getContext('2d'), + moon = document.querySelector('img#moon'); + + var _ = l10n.get; + + var IMAGE_SIZE, HALF_SIZE; + + if (!ctx.ellipse) { + /* + CanvasRenderingContext2D.ellipse() is esperimental at the time of writing + Provide pollyfill + */ + + ctx.ellipse = function(x, y, radiusX, radiusY, rotation, startAngle, endAngle, anticlockwise) { + /* for this project, we do not need: rotation, startAngle, endAngle, anticlockwise */ + x -= radiusX; + y -= radiusY; + radiusX *= 2; + radiusY *= 2; + + var kappa = 0.5522848, + ox = (radiusX / 2) * kappa, // control point offset horizontal + oy = (radiusY / 2) * kappa, // control point offset vertical + xe = x + radiusX, // x-end + ye = y + radiusY, // y-end + xm = x + radiusX / 2, // x-middle + ym = y + radiusY / 2; // y-middle + + if (startAngle === Math.PI / 2 && endAngle === 3 * Math.PI / 2) { + ctx.moveTo(xm, ye); + ctx.bezierCurveTo(xm - ox, ye, x, ym + oy, x, ym); /* 2nd quarter */ + ctx.bezierCurveTo(x, ym - oy, xm - ox, y, xm, y); /* 3rd quarter */ + } else if (startAngle === 3 * Math.PI / 2 && endAngle === Math.PI / 2) { + ctx.moveTo(xm, y); + ctx.bezierCurveTo(xm + ox, y, xe, ym - oy, xe, ym); /* 4th quarter */ + ctx.bezierCurveTo(xe, ym + oy, xm + ox, ye, xm, ye); /* 1st quarter */ + } else if (startAngle === 0 && endAngle === 2 * Math.PI) { + ctx.moveTo(xe, ym); + ctx.bezierCurveTo(xe, ym + oy, xm + ox, ye, xm, ye); /* 1st quarter */ + ctx.bezierCurveTo(xm - ox, ye, x, ym + oy, x, ym); /* 2nd quarter */ + ctx.bezierCurveTo(x, ym - oy, xm - ox, y, xm, y); /* 3rd quarter */ + ctx.bezierCurveTo(xm + ox, y, xe, ym - oy, xe, ym); /* 4th quarter */ + } + }; + } + + + function drawMoon() { + /* + Draw mask corresponding to either shaded region or lit region + */ + + var phase_shadow_adjust = null; + var arc_scale = null; + + ctx.strokeStyle = 'black'; + ctx.fillStyle = 'black'; + ctx.fillRect(0, 0, IMAGE_SIZE, IMAGE_SIZE); + + if (DataModel.phase_of_moon < 0.25) { + phase_shadow_adjust = DataModel.phase_of_moon - Math.abs(Math.sin(DataModel.phase_of_moon * Math.PI * 4) / 18.0); + arc_scale = 1 - (4 * phase_shadow_adjust); + + ctx.fillStyle = 'white'; + ctx.fillRect(HALF_SIZE, 0, HALF_SIZE, IMAGE_SIZE); + ctx.fillStyle = 'black'; + drawEllipse(HALF_SIZE - IMAGE_SIZE * arc_scale / 2, 0, IMAGE_SIZE * arc_scale, IMAGE_SIZE, 0, 3 * Math.PI / 2, Math.PI / 2); + ctx.fill(); + + } else if (DataModel.phase_of_moon < 0.50) { + phase_shadow_adjust = DataModel.phase_of_moon + Math.abs(Math.sin(DataModel.phase_of_moon * Math.PI * 4) / 18.0); + arc_scale = 4 * (phase_shadow_adjust - 0.25); + + ctx.fillStyle = 'white'; + ctx.fillRect(HALF_SIZE, 0, HALF_SIZE, IMAGE_SIZE); + ctx.fillStyle = 'white'; + drawEllipse(HALF_SIZE - IMAGE_SIZE * arc_scale / 2, 0, IMAGE_SIZE * arc_scale, IMAGE_SIZE, 0, Math.PI / 2, 3 * Math.PI / 2); + ctx.fill(); + + } else if (DataModel.phase_of_moon < 0.75) { + phase_shadow_adjust = DataModel.phase_of_moon - Math.abs(Math.sin(DataModel.phase_of_moon * Math.PI * 4) / 18.0); + arc_scale = 1 - (4 * (phase_shadow_adjust - 0.5)); + + ctx.fillStyle = 'white'; + ctx.fillRect(0, 0, HALF_SIZE, IMAGE_SIZE); + ctx.fillStyle = 'white'; + drawEllipse(HALF_SIZE - IMAGE_SIZE * arc_scale / 2, 0, IMAGE_SIZE * arc_scale, IMAGE_SIZE, 0, 3 * Math.PI / 2, Math.PI / 2); + ctx.fill(); + + } else { + phase_shadow_adjust = DataModel.phase_of_moon + Math.abs(Math.sin(DataModel.phase_of_moon * Math.PI * 4) / 18.0); + arc_scale = 4 * (phase_shadow_adjust - 0.75); + + ctx.fillStyle = 'white'; + ctx.fillRect(0, 0, HALF_SIZE, IMAGE_SIZE); + ctx.fillStyle = 'black'; + drawEllipse(HALF_SIZE - IMAGE_SIZE * arc_scale / 2, 0, IMAGE_SIZE * arc_scale, IMAGE_SIZE, 0, Math.PI / 2, 3 * Math.PI / 2); + ctx.fill(); + } + + ctx.save(); + + ctx.globalCompositeOperation = 'multiply'; + ctx.drawImage(moon, 0, 0, IMAGE_SIZE, IMAGE_SIZE); + + ctx.globalAlpha = 0.5; + ctx.globalCompositeOperation = 'source-over'; + ctx.drawImage(moon, 0, 0, IMAGE_SIZE, IMAGE_SIZE); + + ctx.restore(); + + drawEclipse(); + } + + + function drawEclipse() { + if ( + ( + DataModel.next_lunar_eclipse_sec !== -1 || + DataModel.last_lunar_eclipse_sec <= 7200 + ) && ( + DataModel.next_lunar_eclipse_sec <= 7200 || + DataModel.last_lunar_eclipse_sec !== -1 + ) && ( + Math.min(DataModel.next_lunar_eclipse_sec, DataModel.last_lunar_eclipse_sec) <= 7200 + ) + ) { + var eclipse_alpha; + if (DataModel.next_lunar_eclipse_sec == -1) { + eclipse_alpha = DataModel.last_lunar_eclipse_sec / 7200; + } + else if (DataModel.last_lunar_eclipse_sec == -1) { + eclipse_alpha = DataModel.next_lunar_eclipse_sec / 7200; + } + else { + eclipse_alpha = Math.min(DataModel.next_lunar_eclipse_sec, DataModel.last_lunar_eclipse_sec) / 7200; + } + + ctx.save(); + + ctx.globalAlpha = 0.25 * (1 - eclipse_alpha); + ctx.globalCompositeOperation = 'multiply'; + ctx.fillStyle = 'red'; + ctx.fillRect(0, 0, IMAGE_SIZE, IMAGE_SIZE); + + ctx.restore(); + } + } + + + function drawGrid(compass_text) { + /* + Draw longitudes at 0, +/-30 and +/-60 degrees + Draw latitudes at 0, +/-30 and +/-60 degrees + Draw compass + */ + + var needleLength = 0.08 * IMAGE_SIZE; + + ctx.font = '16px Sans'; + ctx.lineWidth = 3; + + /* Latitude Labels */ + ctx.fillStyle = 'blue'; + drawLabel(HALF_SIZE + 1, HALF_SIZE, 26, 22, '0\xB0'); + drawLabel(HALF_SIZE + 1, HALF_SIZE * 0.50, 36, 22, '30\xB0'); + drawLabel(HALF_SIZE + 1, HALF_SIZE * 1.5, 36, 22, '30\xB0'); + drawLabel(HALF_SIZE + 1, HALF_SIZE * 0.15, 36, 22, '60\xB0'); + drawLabel(HALF_SIZE + 1, HALF_SIZE * 1.85, 36, 22, '60\xB0'); + + /* Longitude Labels */ + ctx.fillStyle = 'red'; + drawLabel((HALF_SIZE * 0.48), HALF_SIZE, 36, 22, '30\xB0'); + drawLabel((HALF_SIZE * 1.52), HALF_SIZE, 36, 22, '30\xB0'); + drawLabel((HALF_SIZE * 0.15), HALF_SIZE, 36, 22, '60\xB0'); + drawLabel((HALF_SIZE * 1.85), HALF_SIZE, 36, 22, '60\xB0'); + + /* Latitude Lines*/ + ctx.strokeStyle = 'blue'; + drawLine(0, HALF_SIZE, IMAGE_SIZE, HALF_SIZE); + drawLine(HALF_SIZE * 0.15, HALF_SIZE * 0.5, IMAGE_SIZE - HALF_SIZE * 0.15, HALF_SIZE * 0.5); + drawLine(HALF_SIZE * 0.15, HALF_SIZE * 1.5, IMAGE_SIZE - HALF_SIZE * 0.15, HALF_SIZE * 1.5); + drawLine(HALF_SIZE * 0.5, HALF_SIZE * 0.15, IMAGE_SIZE - HALF_SIZE * 0.5, HALF_SIZE * 0.15); + drawLine(HALF_SIZE * 0.5, HALF_SIZE * 1.85, IMAGE_SIZE - HALF_SIZE * 0.5, HALF_SIZE * 1.85); + + /* Longitude Lines*/ + ctx.strokeStyle = 'red'; + drawLine(HALF_SIZE, 0, HALF_SIZE, IMAGE_SIZE); + drawEllipse(HALF_SIZE * 0.15, 0, IMAGE_SIZE - IMAGE_SIZE * 0.15, IMAGE_SIZE, 0, 0, 2 * Math.PI); + drawEllipse(HALF_SIZE * 0.48, 0, IMAGE_SIZE - IMAGE_SIZE * 0.48, IMAGE_SIZE, 0, 0, 2 * Math.PI); + + /* Compass */ + ctx.fillStyle = 'red'; + ctx.fillRect(0 + 16, needleLength, needleLength, 4); + ctx.fillText(compass_text[3], 0, needleLength + 8); + ctx.fillText(compass_text[2], needleLength + 16 + 4, needleLength + 8); + ctx.fillText(_('Longitude'), 0, IMAGE_SIZE - 16); + + ctx.fillStyle = 'blue'; + ctx.fillRect(0.5 * needleLength + 16, 0.5 * needleLength, 4, needleLength); + ctx.fillText(compass_text[0], 0.5 * needleLength + 16 - 4, 0.5 * needleLength - 8); + ctx.fillText(compass_text[1], 0.5 * needleLength + 16 - 4, 1.5 * needleLength + 16 + 4); + ctx.fillText(_('Latitude'), 0, IMAGE_SIZE - 40); + } + + + function drawEllipse(x, y, width, height, rotation, startAngle, endAngle, anticlockwise) { + /* + Wrapper for drawing ellipse on canvas + converts bounding-box drawing instructions to center-axes instructions + */ + + ctx.beginPath(); + x += width / 2; + y += height / 2; + var radiusX = width / 2; + var radiusY = height / 2; + ctx.ellipse(x, y, radiusX, radiusY, rotation, startAngle, endAngle, anticlockwise); + ctx.stroke(); + } + + + function drawLine(x1, y1, x2, y2) { + /* + Wrapper for drawing line on canvas + */ + + ctx.beginPath(); + ctx.moveTo(x1, y1); + ctx.lineTo(x2, y2); + ctx.stroke(); + } + + + function drawLabel(x, y, width, height, text) { + /* + Wrapper for placing text on canvas + */ + + var labelColor = ctx.fillStyle; + ctx.fillRect(x, y, width, height); + ctx.fillStyle = 'white'; + ctx.fillText(text, x + 5, y + 18); + ctx.fillStyle = labelColor; + } + + + function setImageSize(size) { + /* + Update IMAGE_SIZE as window resizes + */ + + IMAGE_SIZE = size; + HALF_SIZE = 0.5 * IMAGE_SIZE; + } + + + return { + moon: drawMoon, + eclipse: drawEclipse, + grid: drawGrid, + setImageSize: setImageSize + }; +}); diff --git a/js/loader.js b/js/loader.js new file mode 100644 index 0000000..01021e9 --- /dev/null +++ b/js/loader.js @@ -0,0 +1,8 @@ +requirejs.config({ + baseUrl: "lib", + paths: { + activity: "../js" + } +}); + +requirejs(["activity/activity"]); diff --git a/js/moon-activity.js b/js/moon-activity.js new file mode 100644 index 0000000..b98f9ae --- /dev/null +++ b/js/moon-activity.js @@ -0,0 +1,329 @@ +define(['activity/data-model', 'activity/draw', 'webL10n', 'sugar-web/env', 'sugar-web/datastore', 'moment-with-locales.min'], function(DataModel, Draw, l10n, env, datastore, moment) { + + 'use strict'; + + var toggleGridBtn = document.querySelector('#toggle-grid-button'), + toggleHemisphereBtn = document.querySelector('#toggle-hemisphere-button'); + + var canvas = document.querySelector('canvas'), + ctx = canvas.getContext('2d'); + + var _ = l10n.get; + + var first = true; + + l10n.ready(function() { + if (first) { + first = false; + env.getEnvironment(function(err, environment) { + var defaultLanguage = (typeof chrome != 'undefined' && chrome.app && chrome.app.runtime) ? chrome.i18n.getUILanguage() : navigator.language; + var language = environment.user ? environment.user.language : defaultLanguage; + l10n.language.code = language; + moment.locale(language); + var refreshTime = setTimeout(function() { + clearTimeout(refreshTime); + updateView(); + }, 50); + }); + } + }); + + var IMAGE_SIZE, HALF_SIZE, updateTimeout; + var showGrid, showSouth; + + + + function setup() { + /* + Exposed function - calls all other functions + */ + + initEventListeners(); + updateSizes(); + } + + + function initPrefs(pref) { + /* + Read user preferences from datastore + */ + + showGrid = pref.showGrid; + if (showGrid) { + showGrid = true; + toggleGridBtn.classList.add('active'); + } else { + showGrid = false; + toggleGridBtn.classList.remove('active'); + } + + showSouth = pref.showSouth; + if (showSouth) { + showSouth = true; + toggleHemisphereBtn.classList.add('active'); + } else { + showSouth = false; + toggleHemisphereBtn.classList.remove('active'); + } + + } + + function getPrefs() { + return { + showGrid: showGrid, + showSouth: showSouth + }; + } + + + function updateSizes() { + /* + Dynamically resize elements as and when the window resizes. + */ + + var navbarOffset = document.querySelector('#main-toolbar').clientHeight; + document.querySelector('#panel-container').style.height = (window.innerHeight - navbarOffset) + 'px'; + + var canvasPanelHeight = document.querySelector('#panel-right').clientHeight; + var canvasPanelWidth = document.querySelector('#panel-right').clientWidth; + var paddingPercent = 0.05; + + IMAGE_SIZE = (1 - paddingPercent) * Math.min(canvasPanelWidth, canvasPanelHeight); + HALF_SIZE = 0.5 * IMAGE_SIZE; + + canvas.width = IMAGE_SIZE; + canvas.height = IMAGE_SIZE; + + canvas.style.top = 0.5 * (canvasPanelHeight - canvas.height) + 'px'; + canvas.style.left = 0.5 * (canvasPanelWidth - canvas.width) + 'px'; + } + + + function updateView() { + /* + Update moon data and + draw moon, repeteadly, after a fixed interval. + + Also, depending on user's preferences: + * Toggle hemisphere + * Draw grid + */ + + clearTimeout(updateTimeout); + updateInfo(); + Draw.setImageSize(IMAGE_SIZE); + Draw.moon(); + if (showSouth) { + ctx.save(); + ctx.rotate(Math.PI); + ctx.drawImage(canvas, -IMAGE_SIZE, -IMAGE_SIZE); + ctx.restore(); + + if (showGrid) { + Draw.grid(_('SNWE')); + } + } else if (showGrid) { + Draw.grid(_('NSEW')); + } + updateTimeout = setTimeout(updateView, 5000); + } + + + function updateInfo() { + /* + Update moon data and + render updated information as HTML + */ + + DataModel.update_moon_calculations(); + + var infoParts = {}; + var keys = [ + 'moonInfo', + 'phase', + 'julian', + 'age', + 'lunation', + 'visibility', + 'seleno', + 'full', + 'new', + 'lunar', + 'solar' + ]; + + infoParts[_(keys[0])] = [ + formatDate() + ]; + + infoParts[_(keys[1])] = [ + _(DataModel.moon_phase_name()) + ]; + + infoParts[_(keys[2])] = [ + DataModel.julian_date.toFixed(2), + _('astro') + ]; + + infoParts[_(keys[3])] = [DataModel.days_old, + _('days') + ',', + DataModel.hours_old, + _('hours') + ',', + DataModel.minutes_old, + _('minutes') + ]; + + infoParts[_(keys[4])] = [ + (100 * DataModel.phase_of_moon).toFixed(4) + '%', + _('thru'), + DataModel.lunation + ]; + + infoParts[_(keys[5])] = [ + (100 * DataModel.percent_of_full_moon).toFixed(4) + '%', + _('estimated') + ]; + + infoParts[_(keys[6])] = [ + DataModel.selenographic_deg.toFixed(2) + '\u00b0', + _(DataModel.west_or_east), + '(' + _(DataModel.rise_or_set) + ')' + ]; + + infoParts[_(keys[7])] = [ + formatDate(DataModel.next_full_moon_date), + _('in'), + DataModel.days_until_full_moon.toFixed(), + _('days') + ]; + + infoParts[_(keys[8])] = [ + formatDate(DataModel.next_new_moon_date), + _('in'), + DataModel.days_until_new_moon.toFixed(), + _('days') + ]; + + infoParts[_(keys[9])] = [ + formatDate(DataModel.next_lunar_eclipse_date), + _('in'), + DataModel.days_until_lunar_eclipse.toFixed(), + _('days') + ]; + + infoParts[_(keys[10])] = [ + formatDate(DataModel.next_solar_eclipse_date), + _('in'), + DataModel.days_until_solar_eclipse.toFixed(), + _('days') + ]; + + + var infoHTML = []; + for (var k in infoParts) { + var html = '

' + k + ':
' + infoParts[k].join(' ') + '

'; + infoHTML.push(html); + } + + infoHTML = infoHTML.join(''); + document.querySelector('#panel-left').innerHTML = infoHTML; + + document.getElementById("toggle-grid-button").title = _('ToggleGrid'); + document.getElementById("toggle-hemisphere-button").title = _('ToggleHemisphere'); + document.getElementById("save-image-button").title = _('SaveImage'); + } + + + function initEventListeners() { + /* + Bind event-listeners. + */ + + window.addEventListener('resize', function() { + updateSizes(); + updateView(); + }); + + toggleGridBtn.addEventListener('click', toggleGrid); + toggleHemisphereBtn.addEventListener('click', toggleHemisphere); + document.querySelector('#save-image-button').addEventListener('click', saveImage); + } + + + function toggleGrid() { + /* + Show/hide grid + */ + + showGrid = !showGrid; + if (showGrid) { + toggleGridBtn.classList.add('active'); + } else { + toggleGridBtn.classList.remove('active'); + } + + updateView(); + } + + + function toggleHemisphere() { + /* + Rotate moon image to represent southern-hemisphere view. + */ + + showSouth = !showSouth; + if (showSouth) { + toggleHemisphereBtn.classList.add('active'); + } else { + toggleHemisphereBtn.classList.remove('active'); + } + + updateView(); + } + + + function saveImage() { + /* + Read canvas data as base64 string and + store image in datastore + */ + + var mimetype = 'image/jpeg'; + var inputData = canvas.toDataURL(mimetype, 1); + var metadata = { + mimetype: mimetype, + title: "Image Moon", + activity: "org.olpcfrance.MediaViewerActivity", + timestamp: new Date().getTime(), + creation_time: new Date().getTime(), + file_size: 0 + }; + datastore.create(metadata, function() { + console.log("export done.") + }, inputData); + } + + + function formatDate(date) { + /* + Modify rendered dates to match Sugar Moon format + */ + + if (!date) { + date = new Date(); + } else { + + date = new Date(1000 * date); + } + + var momentDate = moment(date); + return momentDate.format('LLLL').replace(momentDate.format('LT'), momentDate.format('LTS')); + } + + return { + setup: setup, + initPrefs: initPrefs, + getPrefs: getPrefs, + updateInfo: updateInfo + }; +}); diff --git a/lib/domReady.js b/lib/domReady.js new file mode 100644 index 0000000..2b54122 --- /dev/null +++ b/lib/domReady.js @@ -0,0 +1,129 @@ +/** + * @license RequireJS domReady 2.0.1 Copyright (c) 2010-2012, The Dojo Foundation All Rights Reserved. + * Available via the MIT or new BSD license. + * see: http://github.com/requirejs/domReady for details + */ +/*jslint */ +/*global require: false, define: false, requirejs: false, + window: false, clearInterval: false, document: false, + self: false, setInterval: false */ + + +define(function () { + 'use strict'; + + var isTop, testDiv, scrollIntervalId, + isBrowser = typeof window !== "undefined" && window.document, + isPageLoaded = !isBrowser, + doc = isBrowser ? document : null, + readyCalls = []; + + function runCallbacks(callbacks) { + var i; + for (i = 0; i < callbacks.length; i += 1) { + callbacks[i](doc); + } + } + + function callReady() { + var callbacks = readyCalls; + + if (isPageLoaded) { + //Call the DOM ready callbacks + if (callbacks.length) { + readyCalls = []; + runCallbacks(callbacks); + } + } + } + + /** + * Sets the page as loaded. + */ + function pageLoaded() { + if (!isPageLoaded) { + isPageLoaded = true; + if (scrollIntervalId) { + clearInterval(scrollIntervalId); + } + + callReady(); + } + } + + if (isBrowser) { + if (document.addEventListener) { + //Standards. Hooray! Assumption here that if standards based, + //it knows about DOMContentLoaded. + document.addEventListener("DOMContentLoaded", pageLoaded, false); + window.addEventListener("load", pageLoaded, false); + } else if (window.attachEvent) { + window.attachEvent("onload", pageLoaded); + + testDiv = document.createElement('div'); + try { + isTop = window.frameElement === null; + } catch (e) {} + + //DOMContentLoaded approximation that uses a doScroll, as found by + //Diego Perini: http://javascript.nwbox.com/IEContentLoaded/, + //but modified by other contributors, including jdalton + if (testDiv.doScroll && isTop && window.external) { + scrollIntervalId = setInterval(function () { + try { + testDiv.doScroll(); + pageLoaded(); + } catch (e) {} + }, 30); + } + } + + //Check if document already complete, and if so, just trigger page load + //listeners. Latest webkit browsers also use "interactive", and + //will fire the onDOMContentLoaded before "interactive" but not after + //entering "interactive" or "complete". More details: + //http://dev.w3.org/html5/spec/the-end.html#the-end + //http://stackoverflow.com/questions/3665561/document-readystate-of-interactive-vs-ondomcontentloaded + //Hmm, this is more complicated on further use, see "firing too early" + //bug: https://github.com/requirejs/domReady/issues/1 + //so removing the || document.readyState === "interactive" test. + //There is still a window.onload binding that should get fired if + //DOMContentLoaded is missed. + if (document.readyState === "complete") { + pageLoaded(); + } + } + + /** START OF PUBLIC API **/ + + /** + * Registers a callback for DOM ready. If DOM is already ready, the + * callback is called immediately. + * @param {Function} callback + */ + function domReady(callback) { + if (isPageLoaded) { + callback(doc); + } else { + readyCalls.push(callback); + } + return domReady; + } + + domReady.version = '2.0.1'; + + /** + * Loader Plugin API method + */ + domReady.load = function (name, req, onLoad, config) { + if (config.isBuild) { + onLoad(null); + } else { + domReady(onLoad); + } + }; + + /** END OF PUBLIC API **/ + + return domReady; +}); diff --git a/lib/moment-with-locales.min.js b/lib/moment-with-locales.min.js new file mode 100644 index 0000000..4b3fe51 --- /dev/null +++ b/lib/moment-with-locales.min.js @@ -0,0 +1,76 @@ +!function(a,b){"object"==typeof exports&&"undefined"!=typeof module?module.exports=b():"function"==typeof define&&define.amd?define(b):a.moment=b()}(this,function(){"use strict";function a(){return ce.apply(null,arguments)}function b(a){ce=a}function c(a){return a instanceof Array||"[object Array]"===Object.prototype.toString.call(a)}function d(a){return a instanceof Date||"[object Date]"===Object.prototype.toString.call(a)}function e(a,b){var c,d=[];for(c=0;c0)for(c in ee)d=ee[c],e=b[d],m(e)||(a[d]=e);return a}function o(b){n(this,b),this._d=new Date(null!=b._d?b._d.getTime():NaN),fe===!1&&(fe=!0,a.updateOffset(this),fe=!1)}function p(a){return a instanceof o||null!=a&&null!=a._isAMomentObject}function q(a){return 0>a?Math.ceil(a):Math.floor(a)}function r(a){var b=+a,c=0;return 0!==b&&isFinite(b)&&(c=q(b)),c}function s(a,b,c){var d,e=Math.min(a.length,b.length),f=Math.abs(a.length-b.length),g=0;for(d=0;e>d;d++)(c&&a[d]!==b[d]||!c&&r(a[d])!==r(b[d]))&&g++;return g+f}function t(b){a.suppressDeprecationWarnings===!1&&"undefined"!=typeof console&&console.warn&&console.warn("Deprecation warning: "+b)}function u(b,c){var d=!0;return g(function(){return null!=a.deprecationHandler&&a.deprecationHandler(null,b),d&&(t(b+"\nArguments: "+Array.prototype.slice.call(arguments).join(", ")+"\n"+(new Error).stack),d=!1),c.apply(this,arguments)},c)}function v(b,c){null!=a.deprecationHandler&&a.deprecationHandler(b,c),ge[b]||(t(c),ge[b]=!0)}function w(a){return a instanceof Function||"[object Function]"===Object.prototype.toString.call(a)}function x(a){return"[object Object]"===Object.prototype.toString.call(a)}function y(a){var b,c;for(c in a)b=a[c],w(b)?this[c]=b:this["_"+c]=b;this._config=a,this._ordinalParseLenient=new RegExp(this._ordinalParse.source+"|"+/\d{1,2}/.source)}function z(a,b){var c,d=g({},a);for(c in b)f(b,c)&&(x(a[c])&&x(b[c])?(d[c]={},g(d[c],a[c]),g(d[c],b[c])):null!=b[c]?d[c]=b[c]:delete d[c]);return d}function A(a){null!=a&&this.set(a)}function B(a){return a?a.toLowerCase().replace("_","-"):a}function C(a){for(var b,c,d,e,f=0;f0;){if(d=D(e.slice(0,b).join("-")))return d;if(c&&c.length>=b&&s(e,c,!0)>=b-1)break;b--}f++}return null}function D(a){var b=null;if(!ke[a]&&"undefined"!=typeof module&&module&&module.exports)try{b=ie._abbr,require("./locale/"+a),E(b)}catch(c){}return ke[a]}function E(a,b){var c;return a&&(c=m(b)?H(a):F(a,b),c&&(ie=c)),ie._abbr}function F(a,b){return null!==b?(b.abbr=a,null!=ke[a]?(v("defineLocaleOverride","use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale"),b=z(ke[a]._config,b)):null!=b.parentLocale&&(null!=ke[b.parentLocale]?b=z(ke[b.parentLocale]._config,b):v("parentLocaleUndefined","specified parentLocale is not defined yet")),ke[a]=new A(b),E(a),ke[a]):(delete ke[a],null)}function G(a,b){if(null!=b){var c;null!=ke[a]&&(b=z(ke[a]._config,b)),c=new A(b),c.parentLocale=ke[a],ke[a]=c,E(a)}else null!=ke[a]&&(null!=ke[a].parentLocale?ke[a]=ke[a].parentLocale:null!=ke[a]&&delete ke[a]);return ke[a]}function H(a){var b;if(a&&a._locale&&a._locale._abbr&&(a=a._locale._abbr),!a)return ie;if(!c(a)){if(b=D(a))return b;a=[a]}return C(a)}function I(){return he(ke)}function J(a,b){var c=a.toLowerCase();le[c]=le[c+"s"]=le[b]=a}function K(a){return"string"==typeof a?le[a]||le[a.toLowerCase()]:void 0}function L(a){var b,c,d={};for(c in a)f(a,c)&&(b=K(c),b&&(d[b]=a[c]));return d}function M(b,c){return function(d){return null!=d?(O(this,b,d),a.updateOffset(this,c),this):N(this,b)}}function N(a,b){return a.isValid()?a._d["get"+(a._isUTC?"UTC":"")+b]():NaN}function O(a,b,c){a.isValid()&&a._d["set"+(a._isUTC?"UTC":"")+b](c)}function P(a,b){var c;if("object"==typeof a)for(c in a)this.set(c,a[c]);else if(a=K(a),w(this[a]))return this[a](b);return this}function Q(a,b,c){var d=""+Math.abs(a),e=b-d.length,f=a>=0;return(f?c?"+":"":"-")+Math.pow(10,Math.max(0,e)).toString().substr(1)+d}function R(a,b,c,d){var e=d;"string"==typeof d&&(e=function(){return this[d]()}),a&&(pe[a]=e),b&&(pe[b[0]]=function(){return Q(e.apply(this,arguments),b[1],b[2])}),c&&(pe[c]=function(){return this.localeData().ordinal(e.apply(this,arguments),a)})}function S(a){return a.match(/\[[\s\S]/)?a.replace(/^\[|\]$/g,""):a.replace(/\\/g,"")}function T(a){var b,c,d=a.match(me);for(b=0,c=d.length;c>b;b++)pe[d[b]]?d[b]=pe[d[b]]:d[b]=S(d[b]);return function(b){var e,f="";for(e=0;c>e;e++)f+=d[e]instanceof Function?d[e].call(b,a):d[e];return f}}function U(a,b){return a.isValid()?(b=V(b,a.localeData()),oe[b]=oe[b]||T(b),oe[b](a)):a.localeData().invalidDate()}function V(a,b){function c(a){return b.longDateFormat(a)||a}var d=5;for(ne.lastIndex=0;d>=0&&ne.test(a);)a=a.replace(ne,c),ne.lastIndex=0,d-=1;return a}function W(a,b,c){He[a]=w(b)?b:function(a,d){return a&&c?c:b}}function X(a,b){return f(He,a)?He[a](b._strict,b._locale):new RegExp(Y(a))}function Y(a){return Z(a.replace("\\","").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(a,b,c,d,e){return b||c||d||e}))}function Z(a){return a.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}function $(a,b){var c,d=b;for("string"==typeof a&&(a=[a]),"number"==typeof b&&(d=function(a,c){c[b]=r(a)}),c=0;cd;++d)f=h([2e3,d]),this._shortMonthsParse[d]=this.monthsShort(f,"").toLocaleLowerCase(),this._longMonthsParse[d]=this.months(f,"").toLocaleLowerCase();return c?"MMM"===b?(e=je.call(this._shortMonthsParse,g),-1!==e?e:null):(e=je.call(this._longMonthsParse,g),-1!==e?e:null):"MMM"===b?(e=je.call(this._shortMonthsParse,g),-1!==e?e:(e=je.call(this._longMonthsParse,g),-1!==e?e:null)):(e=je.call(this._longMonthsParse,g),-1!==e?e:(e=je.call(this._shortMonthsParse,g),-1!==e?e:null))}function fa(a,b,c){var d,e,f;if(this._monthsParseExact)return ea.call(this,a,b,c);for(this._monthsParse||(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[]),d=0;12>d;d++){if(e=h([2e3,d]),c&&!this._longMonthsParse[d]&&(this._longMonthsParse[d]=new RegExp("^"+this.months(e,"").replace(".","")+"$","i"),this._shortMonthsParse[d]=new RegExp("^"+this.monthsShort(e,"").replace(".","")+"$","i")),c||this._monthsParse[d]||(f="^"+this.months(e,"")+"|^"+this.monthsShort(e,""),this._monthsParse[d]=new RegExp(f.replace(".",""),"i")),c&&"MMMM"===b&&this._longMonthsParse[d].test(a))return d;if(c&&"MMM"===b&&this._shortMonthsParse[d].test(a))return d;if(!c&&this._monthsParse[d].test(a))return d}}function ga(a,b){var c;if(!a.isValid())return a;if("string"==typeof b)if(/^\d+$/.test(b))b=r(b);else if(b=a.localeData().monthsParse(b),"number"!=typeof b)return a;return c=Math.min(a.date(),ba(a.year(),b)),a._d["set"+(a._isUTC?"UTC":"")+"Month"](b,c),a}function ha(b){return null!=b?(ga(this,b),a.updateOffset(this,!0),this):N(this,"Month")}function ia(){return ba(this.year(),this.month())}function ja(a){return this._monthsParseExact?(f(this,"_monthsRegex")||la.call(this),a?this._monthsShortStrictRegex:this._monthsShortRegex):this._monthsShortStrictRegex&&a?this._monthsShortStrictRegex:this._monthsShortRegex}function ka(a){return this._monthsParseExact?(f(this,"_monthsRegex")||la.call(this),a?this._monthsStrictRegex:this._monthsRegex):this._monthsStrictRegex&&a?this._monthsStrictRegex:this._monthsRegex}function la(){function a(a,b){return b.length-a.length}var b,c,d=[],e=[],f=[];for(b=0;12>b;b++)c=h([2e3,b]),d.push(this.monthsShort(c,"")),e.push(this.months(c,"")),f.push(this.months(c,"")),f.push(this.monthsShort(c,""));for(d.sort(a),e.sort(a),f.sort(a),b=0;12>b;b++)d[b]=Z(d[b]),e[b]=Z(e[b]),f[b]=Z(f[b]);this._monthsRegex=new RegExp("^("+f.join("|")+")","i"),this._monthsShortRegex=this._monthsRegex,this._monthsStrictRegex=new RegExp("^("+e.join("|")+")","i"),this._monthsShortStrictRegex=new RegExp("^("+d.join("|")+")","i")}function ma(a){var b,c=a._a;return c&&-2===j(a).overflow&&(b=c[Ke]<0||c[Ke]>11?Ke:c[Le]<1||c[Le]>ba(c[Je],c[Ke])?Le:c[Me]<0||c[Me]>24||24===c[Me]&&(0!==c[Ne]||0!==c[Oe]||0!==c[Pe])?Me:c[Ne]<0||c[Ne]>59?Ne:c[Oe]<0||c[Oe]>59?Oe:c[Pe]<0||c[Pe]>999?Pe:-1,j(a)._overflowDayOfYear&&(Je>b||b>Le)&&(b=Le),j(a)._overflowWeeks&&-1===b&&(b=Qe),j(a)._overflowWeekday&&-1===b&&(b=Re),j(a).overflow=b),a}function na(a){var b,c,d,e,f,g,h=a._i,i=Xe.exec(h)||Ye.exec(h);if(i){for(j(a).iso=!0,b=0,c=$e.length;c>b;b++)if($e[b][1].exec(i[1])){e=$e[b][0],d=$e[b][2]!==!1;break}if(null==e)return void(a._isValid=!1);if(i[3]){for(b=0,c=_e.length;c>b;b++)if(_e[b][1].exec(i[3])){f=(i[2]||" ")+_e[b][0];break}if(null==f)return void(a._isValid=!1)}if(!d&&null!=f)return void(a._isValid=!1);if(i[4]){if(!Ze.exec(i[4]))return void(a._isValid=!1);g="Z"}a._f=e+(f||"")+(g||""),Ca(a)}else a._isValid=!1}function oa(b){var c=af.exec(b._i);return null!==c?void(b._d=new Date(+c[1])):(na(b),void(b._isValid===!1&&(delete b._isValid,a.createFromInputFallback(b))))}function pa(a,b,c,d,e,f,g){var h=new Date(a,b,c,d,e,f,g);return 100>a&&a>=0&&isFinite(h.getFullYear())&&h.setFullYear(a),h}function qa(a){var b=new Date(Date.UTC.apply(null,arguments));return 100>a&&a>=0&&isFinite(b.getUTCFullYear())&&b.setUTCFullYear(a),b}function ra(a){return sa(a)?366:365}function sa(a){return a%4===0&&a%100!==0||a%400===0}function ta(){return sa(this.year())}function ua(a,b,c){var d=7+b-c,e=(7+qa(a,0,d).getUTCDay()-b)%7;return-e+d-1}function va(a,b,c,d,e){var f,g,h=(7+c-d)%7,i=ua(a,d,e),j=1+7*(b-1)+h+i;return 0>=j?(f=a-1,g=ra(f)+j):j>ra(a)?(f=a+1,g=j-ra(a)):(f=a,g=j),{year:f,dayOfYear:g}}function wa(a,b,c){var d,e,f=ua(a.year(),b,c),g=Math.floor((a.dayOfYear()-f-1)/7)+1;return 1>g?(e=a.year()-1,d=g+xa(e,b,c)):g>xa(a.year(),b,c)?(d=g-xa(a.year(),b,c),e=a.year()+1):(e=a.year(),d=g),{week:d,year:e}}function xa(a,b,c){var d=ua(a,b,c),e=ua(a+1,b,c);return(ra(a)-d+e)/7}function ya(a,b,c){return null!=a?a:null!=b?b:c}function za(b){var c=new Date(a.now());return b._useUTC?[c.getUTCFullYear(),c.getUTCMonth(),c.getUTCDate()]:[c.getFullYear(),c.getMonth(),c.getDate()]}function Aa(a){var b,c,d,e,f=[];if(!a._d){for(d=za(a),a._w&&null==a._a[Le]&&null==a._a[Ke]&&Ba(a),a._dayOfYear&&(e=ya(a._a[Je],d[Je]),a._dayOfYear>ra(e)&&(j(a)._overflowDayOfYear=!0),c=qa(e,0,a._dayOfYear),a._a[Ke]=c.getUTCMonth(),a._a[Le]=c.getUTCDate()),b=0;3>b&&null==a._a[b];++b)a._a[b]=f[b]=d[b];for(;7>b;b++)a._a[b]=f[b]=null==a._a[b]?2===b?1:0:a._a[b];24===a._a[Me]&&0===a._a[Ne]&&0===a._a[Oe]&&0===a._a[Pe]&&(a._nextDay=!0,a._a[Me]=0),a._d=(a._useUTC?qa:pa).apply(null,f),null!=a._tzm&&a._d.setUTCMinutes(a._d.getUTCMinutes()-a._tzm),a._nextDay&&(a._a[Me]=24)}}function Ba(a){var b,c,d,e,f,g,h,i;b=a._w,null!=b.GG||null!=b.W||null!=b.E?(f=1,g=4,c=ya(b.GG,a._a[Je],wa(Ka(),1,4).year),d=ya(b.W,1),e=ya(b.E,1),(1>e||e>7)&&(i=!0)):(f=a._locale._week.dow,g=a._locale._week.doy,c=ya(b.gg,a._a[Je],wa(Ka(),f,g).year),d=ya(b.w,1),null!=b.d?(e=b.d,(0>e||e>6)&&(i=!0)):null!=b.e?(e=b.e+f,(b.e<0||b.e>6)&&(i=!0)):e=f),1>d||d>xa(c,f,g)?j(a)._overflowWeeks=!0:null!=i?j(a)._overflowWeekday=!0:(h=va(c,d,e,f,g),a._a[Je]=h.year,a._dayOfYear=h.dayOfYear)}function Ca(b){if(b._f===a.ISO_8601)return void na(b);b._a=[],j(b).empty=!0;var c,d,e,f,g,h=""+b._i,i=h.length,k=0;for(e=V(b._f,b._locale).match(me)||[],c=0;c0&&j(b).unusedInput.push(g),h=h.slice(h.indexOf(d)+d.length),k+=d.length),pe[f]?(d?j(b).empty=!1:j(b).unusedTokens.push(f),aa(f,d,b)):b._strict&&!d&&j(b).unusedTokens.push(f);j(b).charsLeftOver=i-k,h.length>0&&j(b).unusedInput.push(h),j(b).bigHour===!0&&b._a[Me]<=12&&b._a[Me]>0&&(j(b).bigHour=void 0),j(b).parsedDateParts=b._a.slice(0),j(b).meridiem=b._meridiem,b._a[Me]=Da(b._locale,b._a[Me],b._meridiem),Aa(b),ma(b)}function Da(a,b,c){var d;return null==c?b:null!=a.meridiemHour?a.meridiemHour(b,c):null!=a.isPM?(d=a.isPM(c),d&&12>b&&(b+=12),d||12!==b||(b=0),b):b}function Ea(a){var b,c,d,e,f;if(0===a._f.length)return j(a).invalidFormat=!0,void(a._d=new Date(NaN));for(e=0;ef)&&(d=f,c=b));g(a,c||b)}function Fa(a){if(!a._d){var b=L(a._i);a._a=e([b.year,b.month,b.day||b.date,b.hour,b.minute,b.second,b.millisecond],function(a){return a&&parseInt(a,10)}),Aa(a)}}function Ga(a){var b=new o(ma(Ha(a)));return b._nextDay&&(b.add(1,"d"),b._nextDay=void 0),b}function Ha(a){var b=a._i,e=a._f;return a._locale=a._locale||H(a._l),null===b||void 0===e&&""===b?l({nullInput:!0}):("string"==typeof b&&(a._i=b=a._locale.preparse(b)),p(b)?new o(ma(b)):(c(e)?Ea(a):e?Ca(a):d(b)?a._d=b:Ia(a),k(a)||(a._d=null),a))}function Ia(b){var f=b._i;void 0===f?b._d=new Date(a.now()):d(f)?b._d=new Date(f.valueOf()):"string"==typeof f?oa(b):c(f)?(b._a=e(f.slice(0),function(a){return parseInt(a,10)}),Aa(b)):"object"==typeof f?Fa(b):"number"==typeof f?b._d=new Date(f):a.createFromInputFallback(b)}function Ja(a,b,c,d,e){var f={};return"boolean"==typeof c&&(d=c,c=void 0),f._isAMomentObject=!0,f._useUTC=f._isUTC=e,f._l=c,f._i=a,f._f=b,f._strict=d,Ga(f)}function Ka(a,b,c,d){return Ja(a,b,c,d,!1)}function La(a,b){var d,e;if(1===b.length&&c(b[0])&&(b=b[0]),!b.length)return Ka();for(d=b[0],e=1;ea&&(a=-a,c="-"),c+Q(~~(a/60),2)+b+Q(~~a%60,2)})}function Ra(a,b){var c=(b||"").match(a)||[],d=c[c.length-1]||[],e=(d+"").match(ff)||["-",0,0],f=+(60*e[1])+r(e[2]);return"+"===e[0]?f:-f}function Sa(b,c){var e,f;return c._isUTC?(e=c.clone(),f=(p(b)||d(b)?b.valueOf():Ka(b).valueOf())-e.valueOf(),e._d.setTime(e._d.valueOf()+f),a.updateOffset(e,!1),e):Ka(b).local()}function Ta(a){return 15*-Math.round(a._d.getTimezoneOffset()/15)}function Ua(b,c){var d,e=this._offset||0;return this.isValid()?null!=b?("string"==typeof b?b=Ra(Ee,b):Math.abs(b)<16&&(b=60*b),!this._isUTC&&c&&(d=Ta(this)),this._offset=b,this._isUTC=!0,null!=d&&this.add(d,"m"),e!==b&&(!c||this._changeInProgress?jb(this,db(b-e,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,a.updateOffset(this,!0),this._changeInProgress=null)),this):this._isUTC?e:Ta(this):null!=b?this:NaN}function Va(a,b){return null!=a?("string"!=typeof a&&(a=-a),this.utcOffset(a,b),this):-this.utcOffset()}function Wa(a){return this.utcOffset(0,a)}function Xa(a){return this._isUTC&&(this.utcOffset(0,a),this._isUTC=!1,a&&this.subtract(Ta(this),"m")),this}function Ya(){return this._tzm?this.utcOffset(this._tzm):"string"==typeof this._i&&this.utcOffset(Ra(De,this._i)),this}function Za(a){return this.isValid()?(a=a?Ka(a).utcOffset():0,(this.utcOffset()-a)%60===0):!1}function $a(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()}function _a(){if(!m(this._isDSTShifted))return this._isDSTShifted;var a={};if(n(a,this),a=Ha(a),a._a){var b=a._isUTC?h(a._a):Ka(a._a);this._isDSTShifted=this.isValid()&&s(a._a,b.toArray())>0}else this._isDSTShifted=!1;return this._isDSTShifted}function ab(){return this.isValid()?!this._isUTC:!1}function bb(){return this.isValid()?this._isUTC:!1}function cb(){return this.isValid()?this._isUTC&&0===this._offset:!1}function db(a,b){var c,d,e,g=a,h=null;return Pa(a)?g={ms:a._milliseconds,d:a._days,M:a._months}:"number"==typeof a?(g={},b?g[b]=a:g.milliseconds=a):(h=gf.exec(a))?(c="-"===h[1]?-1:1,g={y:0,d:r(h[Le])*c,h:r(h[Me])*c,m:r(h[Ne])*c,s:r(h[Oe])*c,ms:r(h[Pe])*c}):(h=hf.exec(a))?(c="-"===h[1]?-1:1,g={y:eb(h[2],c),M:eb(h[3],c),w:eb(h[4],c),d:eb(h[5],c),h:eb(h[6],c),m:eb(h[7],c),s:eb(h[8],c)}):null==g?g={}:"object"==typeof g&&("from"in g||"to"in g)&&(e=gb(Ka(g.from),Ka(g.to)),g={},g.ms=e.milliseconds,g.M=e.months),d=new Oa(g),Pa(a)&&f(a,"_locale")&&(d._locale=a._locale),d}function eb(a,b){var c=a&&parseFloat(a.replace(",","."));return(isNaN(c)?0:c)*b}function fb(a,b){var c={milliseconds:0,months:0};return c.months=b.month()-a.month()+12*(b.year()-a.year()),a.clone().add(c.months,"M").isAfter(b)&&--c.months,c.milliseconds=+b-+a.clone().add(c.months,"M"),c}function gb(a,b){var c;return a.isValid()&&b.isValid()?(b=Sa(b,a),a.isBefore(b)?c=fb(a,b):(c=fb(b,a),c.milliseconds=-c.milliseconds,c.months=-c.months),c):{milliseconds:0,months:0}}function hb(a){return 0>a?-1*Math.round(-1*a):Math.round(a)}function ib(a,b){return function(c,d){var e,f;return null===d||isNaN(+d)||(v(b,"moment()."+b+"(period, number) is deprecated. Please use moment()."+b+"(number, period)."),f=c,c=d,d=f),c="string"==typeof c?+c:c,e=db(c,d),jb(this,e,a),this}}function jb(b,c,d,e){var f=c._milliseconds,g=hb(c._days),h=hb(c._months);b.isValid()&&(e=null==e?!0:e,f&&b._d.setTime(b._d.valueOf()+f*d),g&&O(b,"Date",N(b,"Date")+g*d),h&&ga(b,N(b,"Month")+h*d),e&&a.updateOffset(b,g||h))}function kb(a,b){var c=a||Ka(),d=Sa(c,this).startOf("day"),e=this.diff(d,"days",!0),f=-6>e?"sameElse":-1>e?"lastWeek":0>e?"lastDay":1>e?"sameDay":2>e?"nextDay":7>e?"nextWeek":"sameElse",g=b&&(w(b[f])?b[f]():b[f]);return this.format(g||this.localeData().calendar(f,this,Ka(c)))}function lb(){return new o(this)}function mb(a,b){var c=p(a)?a:Ka(a);return this.isValid()&&c.isValid()?(b=K(m(b)?"millisecond":b),"millisecond"===b?this.valueOf()>c.valueOf():c.valueOf()b-f?(c=a.clone().add(e-1,"months"),d=(b-f)/(f-c)):(c=a.clone().add(e+1,"months"),d=(b-f)/(c-f)),-(e+d)||0}function ub(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")}function vb(){var a=this.clone().utc();return 0f&&(b=f),Vb.call(this,a,b,c,d,e))}function Vb(a,b,c,d,e){var f=va(a,b,c,d,e),g=qa(f.year,0,f.dayOfYear);return this.year(g.getUTCFullYear()),this.month(g.getUTCMonth()),this.date(g.getUTCDate()),this}function Wb(a){return null==a?Math.ceil((this.month()+1)/3):this.month(3*(a-1)+this.month()%3)}function Xb(a){return wa(a,this._week.dow,this._week.doy).week}function Yb(){return this._week.dow}function Zb(){return this._week.doy}function $b(a){var b=this.localeData().week(this);return null==a?b:this.add(7*(a-b),"d")}function _b(a){var b=wa(this,1,4).week;return null==a?b:this.add(7*(a-b),"d")}function ac(a,b){return"string"!=typeof a?a:isNaN(a)?(a=b.weekdaysParse(a),"number"==typeof a?a:null):parseInt(a,10)}function bc(a,b){return c(this._weekdays)?this._weekdays[a.day()]:this._weekdays[this._weekdays.isFormat.test(b)?"format":"standalone"][a.day()]}function cc(a){return this._weekdaysShort[a.day()]}function dc(a){return this._weekdaysMin[a.day()]}function ec(a,b,c){var d,e,f,g=a.toLocaleLowerCase();if(!this._weekdaysParse)for(this._weekdaysParse=[],this._shortWeekdaysParse=[],this._minWeekdaysParse=[],d=0;7>d;++d)f=h([2e3,1]).day(d),this._minWeekdaysParse[d]=this.weekdaysMin(f,"").toLocaleLowerCase(),this._shortWeekdaysParse[d]=this.weekdaysShort(f,"").toLocaleLowerCase(),this._weekdaysParse[d]=this.weekdays(f,"").toLocaleLowerCase();return c?"dddd"===b?(e=je.call(this._weekdaysParse,g),-1!==e?e:null):"ddd"===b?(e=je.call(this._shortWeekdaysParse,g),-1!==e?e:null):(e=je.call(this._minWeekdaysParse,g),-1!==e?e:null):"dddd"===b?(e=je.call(this._weekdaysParse,g),-1!==e?e:(e=je.call(this._shortWeekdaysParse,g),-1!==e?e:(e=je.call(this._minWeekdaysParse,g),-1!==e?e:null))):"ddd"===b?(e=je.call(this._shortWeekdaysParse,g),-1!==e?e:(e=je.call(this._weekdaysParse,g),-1!==e?e:(e=je.call(this._minWeekdaysParse,g),-1!==e?e:null))):(e=je.call(this._minWeekdaysParse,g),-1!==e?e:(e=je.call(this._weekdaysParse,g),-1!==e?e:(e=je.call(this._shortWeekdaysParse,g),-1!==e?e:null)))}function fc(a,b,c){var d,e,f;if(this._weekdaysParseExact)return ec.call(this,a,b,c);for(this._weekdaysParse||(this._weekdaysParse=[],this._minWeekdaysParse=[],this._shortWeekdaysParse=[],this._fullWeekdaysParse=[]),d=0;7>d;d++){if(e=h([2e3,1]).day(d),c&&!this._fullWeekdaysParse[d]&&(this._fullWeekdaysParse[d]=new RegExp("^"+this.weekdays(e,"").replace(".",".?")+"$","i"),this._shortWeekdaysParse[d]=new RegExp("^"+this.weekdaysShort(e,"").replace(".",".?")+"$","i"),this._minWeekdaysParse[d]=new RegExp("^"+this.weekdaysMin(e,"").replace(".",".?")+"$","i")),this._weekdaysParse[d]||(f="^"+this.weekdays(e,"")+"|^"+this.weekdaysShort(e,"")+"|^"+this.weekdaysMin(e,""),this._weekdaysParse[d]=new RegExp(f.replace(".",""),"i")),c&&"dddd"===b&&this._fullWeekdaysParse[d].test(a))return d;if(c&&"ddd"===b&&this._shortWeekdaysParse[d].test(a))return d;if(c&&"dd"===b&&this._minWeekdaysParse[d].test(a))return d;if(!c&&this._weekdaysParse[d].test(a))return d}}function gc(a){if(!this.isValid())return null!=a?this:NaN;var b=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=a?(a=ac(a,this.localeData()),this.add(a-b,"d")):b}function hc(a){if(!this.isValid())return null!=a?this:NaN;var b=(this.day()+7-this.localeData()._week.dow)%7;return null==a?b:this.add(a-b,"d")}function ic(a){return this.isValid()?null==a?this.day()||7:this.day(this.day()%7?a:a-7):null!=a?this:NaN}function jc(a){return this._weekdaysParseExact?(f(this,"_weekdaysRegex")||mc.call(this),a?this._weekdaysStrictRegex:this._weekdaysRegex):this._weekdaysStrictRegex&&a?this._weekdaysStrictRegex:this._weekdaysRegex}function kc(a){return this._weekdaysParseExact?(f(this,"_weekdaysRegex")||mc.call(this),a?this._weekdaysShortStrictRegex:this._weekdaysShortRegex):this._weekdaysShortStrictRegex&&a?this._weekdaysShortStrictRegex:this._weekdaysShortRegex}function lc(a){return this._weekdaysParseExact?(f(this,"_weekdaysRegex")||mc.call(this),a?this._weekdaysMinStrictRegex:this._weekdaysMinRegex):this._weekdaysMinStrictRegex&&a?this._weekdaysMinStrictRegex:this._weekdaysMinRegex}function mc(){function a(a,b){return b.length-a.length}var b,c,d,e,f,g=[],i=[],j=[],k=[];for(b=0;7>b;b++)c=h([2e3,1]).day(b),d=this.weekdaysMin(c,""),e=this.weekdaysShort(c,""),f=this.weekdays(c,""),g.push(d),i.push(e),j.push(f),k.push(d),k.push(e),k.push(f);for(g.sort(a),i.sort(a),j.sort(a),k.sort(a),b=0;7>b;b++)i[b]=Z(i[b]),j[b]=Z(j[b]),k[b]=Z(k[b]);this._weekdaysRegex=new RegExp("^("+k.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+j.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+i.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+g.join("|")+")","i")}function nc(a){var b=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/864e5)+1;return null==a?b:this.add(a-b,"d")}function oc(){return this.hours()%12||12}function pc(){return this.hours()||24}function qc(a,b){R(a,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),b)})}function rc(a,b){return b._meridiemParse}function sc(a){return"p"===(a+"").toLowerCase().charAt(0)}function tc(a,b,c){return a>11?c?"pm":"PM":c?"am":"AM"}function uc(a,b){b[Pe]=r(1e3*("0."+a))}function vc(){return this._isUTC?"UTC":""}function wc(){return this._isUTC?"Coordinated Universal Time":""}function xc(a){return Ka(1e3*a)}function yc(){return Ka.apply(null,arguments).parseZone()}function zc(a,b,c){var d=this._calendar[a];return w(d)?d.call(b,c):d}function Ac(a){var b=this._longDateFormat[a],c=this._longDateFormat[a.toUpperCase()];return b||!c?b:(this._longDateFormat[a]=c.replace(/MMMM|MM|DD|dddd/g,function(a){return a.slice(1)}),this._longDateFormat[a])}function Bc(){return this._invalidDate}function Cc(a){return this._ordinal.replace("%d",a)}function Dc(a){return a}function Ec(a,b,c,d){var e=this._relativeTime[c];return w(e)?e(a,b,c,d):e.replace(/%d/i,a)}function Fc(a,b){var c=this._relativeTime[a>0?"future":"past"];return w(c)?c(b):c.replace(/%s/i,b)}function Gc(a,b,c,d){var e=H(),f=h().set(d,b);return e[c](f,a)}function Hc(a,b,c){if("number"==typeof a&&(b=a,a=void 0),a=a||"",null!=b)return Gc(a,b,c,"month");var d,e=[];for(d=0;12>d;d++)e[d]=Gc(a,d,c,"month");return e}function Ic(a,b,c,d){"boolean"==typeof a?("number"==typeof b&&(c=b,b=void 0),b=b||""):(b=a,c=b,a=!1,"number"==typeof b&&(c=b,b=void 0),b=b||"");var e=H(),f=a?e._week.dow:0;if(null!=c)return Gc(b,(c+f)%7,d,"day");var g,h=[];for(g=0;7>g;g++)h[g]=Gc(b,(g+f)%7,d,"day");return h}function Jc(a,b){return Hc(a,b,"months")}function Kc(a,b){return Hc(a,b,"monthsShort")}function Lc(a,b,c){return Ic(a,b,c,"weekdays")}function Mc(a,b,c){return Ic(a,b,c,"weekdaysShort")}function Nc(a,b,c){return Ic(a,b,c,"weekdaysMin")}function Oc(){var a=this._data;return this._milliseconds=Jf(this._milliseconds),this._days=Jf(this._days),this._months=Jf(this._months),a.milliseconds=Jf(a.milliseconds),a.seconds=Jf(a.seconds),a.minutes=Jf(a.minutes),a.hours=Jf(a.hours),a.months=Jf(a.months),a.years=Jf(a.years),this}function Pc(a,b,c,d){var e=db(b,c);return a._milliseconds+=d*e._milliseconds,a._days+=d*e._days,a._months+=d*e._months,a._bubble()}function Qc(a,b){return Pc(this,a,b,1)}function Rc(a,b){return Pc(this,a,b,-1)}function Sc(a){return 0>a?Math.floor(a):Math.ceil(a)}function Tc(){var a,b,c,d,e,f=this._milliseconds,g=this._days,h=this._months,i=this._data;return f>=0&&g>=0&&h>=0||0>=f&&0>=g&&0>=h||(f+=864e5*Sc(Vc(h)+g),g=0,h=0),i.milliseconds=f%1e3,a=q(f/1e3),i.seconds=a%60,b=q(a/60),i.minutes=b%60,c=q(b/60),i.hours=c%24,g+=q(c/24),e=q(Uc(g)),h+=e,g-=Sc(Vc(e)),d=q(h/12),h%=12,i.days=g,i.months=h,i.years=d,this}function Uc(a){return 4800*a/146097}function Vc(a){return 146097*a/4800}function Wc(a){var b,c,d=this._milliseconds;if(a=K(a),"month"===a||"year"===a)return b=this._days+d/864e5,c=this._months+Uc(b),"month"===a?c:c/12;switch(b=this._days+Math.round(Vc(this._months)),a){case"week":return b/7+d/6048e5;case"day":return b+d/864e5;case"hour":return 24*b+d/36e5;case"minute":return 1440*b+d/6e4;case"second":return 86400*b+d/1e3;case"millisecond":return Math.floor(864e5*b)+d;default:throw new Error("Unknown unit "+a)}}function Xc(){return this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*r(this._months/12)}function Yc(a){return function(){return this.as(a)}}function Zc(a){ +return a=K(a),this[a+"s"]()}function $c(a){return function(){return this._data[a]}}function _c(){return q(this.days()/7)}function ad(a,b,c,d,e){return e.relativeTime(b||1,!!c,a,d)}function bd(a,b,c){var d=db(a).abs(),e=Zf(d.as("s")),f=Zf(d.as("m")),g=Zf(d.as("h")),h=Zf(d.as("d")),i=Zf(d.as("M")),j=Zf(d.as("y")),k=e<$f.s&&["s",e]||1>=f&&["m"]||f<$f.m&&["mm",f]||1>=g&&["h"]||g<$f.h&&["hh",g]||1>=h&&["d"]||h<$f.d&&["dd",h]||1>=i&&["M"]||i<$f.M&&["MM",i]||1>=j&&["y"]||["yy",j];return k[2]=b,k[3]=+a>0,k[4]=c,ad.apply(null,k)}function cd(a,b){return void 0===$f[a]?!1:void 0===b?$f[a]:($f[a]=b,!0)}function dd(a){var b=this.localeData(),c=bd(this,!a,b);return a&&(c=b.pastFuture(+this,c)),b.postformat(c)}function ed(){var a,b,c,d=_f(this._milliseconds)/1e3,e=_f(this._days),f=_f(this._months);a=q(d/60),b=q(a/60),d%=60,a%=60,c=q(f/12),f%=12;var g=c,h=f,i=e,j=b,k=a,l=d,m=this.asSeconds();return m?(0>m?"-":"")+"P"+(g?g+"Y":"")+(h?h+"M":"")+(i?i+"D":"")+(j||k||l?"T":"")+(j?j+"H":"")+(k?k+"M":"")+(l?l+"S":""):"P0D"} +//! moment.js locale configuration +//! locale : belarusian (be) +//! author : Dmitry Demidov : https://github.com/demidov91 +//! author: Praleska: http://praleska.pro/ +//! Author : Menelion Elensúle : https://github.com/Oire +function fd(a,b){var c=a.split("_");return b%10===1&&b%100!==11?c[0]:b%10>=2&&4>=b%10&&(10>b%100||b%100>=20)?c[1]:c[2]}function gd(a,b,c){var d={mm:b?"хвіліна_хвіліны_хвілін":"хвіліну_хвіліны_хвілін",hh:b?"гадзіна_гадзіны_гадзін":"гадзіну_гадзіны_гадзін",dd:"дзень_дні_дзён",MM:"месяц_месяцы_месяцаў",yy:"год_гады_гадоў"};return"m"===c?b?"хвіліна":"хвіліну":"h"===c?b?"гадзіна":"гадзіну":a+" "+fd(d[c],+a)} +//! moment.js locale configuration +//! locale : breton (br) +//! author : Jean-Baptiste Le Duigou : https://github.com/jbleduigou +function hd(a,b,c){var d={mm:"munutenn",MM:"miz",dd:"devezh"};return a+" "+kd(d[c],a)}function id(a){switch(jd(a)){case 1:case 3:case 4:case 5:case 9:return a+" bloaz";default:return a+" vloaz"}}function jd(a){return a>9?jd(a%10):a}function kd(a,b){return 2===b?ld(a):a}function ld(a){var b={m:"v",b:"v",d:"z"};return void 0===b[a.charAt(0)]?a:b[a.charAt(0)]+a.substring(1)} +//! moment.js locale configuration +//! locale : bosnian (bs) +//! author : Nedim Cholich : https://github.com/frontyard +//! based on (hr) translation by Bojan Marković +function md(a,b,c){var d=a+" ";switch(c){case"m":return b?"jedna minuta":"jedne minute";case"mm":return d+=1===a?"minuta":2===a||3===a||4===a?"minute":"minuta";case"h":return b?"jedan sat":"jednog sata";case"hh":return d+=1===a?"sat":2===a||3===a||4===a?"sata":"sati";case"dd":return d+=1===a?"dan":"dana";case"MM":return d+=1===a?"mjesec":2===a||3===a||4===a?"mjeseca":"mjeseci";case"yy":return d+=1===a?"godina":2===a||3===a||4===a?"godine":"godina"}}function nd(a){return a>1&&5>a&&1!==~~(a/10)}function od(a,b,c,d){var e=a+" ";switch(c){case"s":return b||d?"pár sekund":"pár sekundami";case"m":return b?"minuta":d?"minutu":"minutou";case"mm":return b||d?e+(nd(a)?"minuty":"minut"):e+"minutami";break;case"h":return b?"hodina":d?"hodinu":"hodinou";case"hh":return b||d?e+(nd(a)?"hodiny":"hodin"):e+"hodinami";break;case"d":return b||d?"den":"dnem";case"dd":return b||d?e+(nd(a)?"dny":"dní"):e+"dny";break;case"M":return b||d?"měsíc":"měsícem";case"MM":return b||d?e+(nd(a)?"měsíce":"měsíců"):e+"měsíci";break;case"y":return b||d?"rok":"rokem";case"yy":return b||d?e+(nd(a)?"roky":"let"):e+"lety"}} +//! moment.js locale configuration +//! locale : austrian german (de-at) +//! author : lluchs : https://github.com/lluchs +//! author: Menelion Elensúle: https://github.com/Oire +//! author : Martin Groller : https://github.com/MadMG +//! author : Mikolaj Dadela : https://github.com/mik01aj +function pd(a,b,c,d){var e={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[a+" Tage",a+" Tagen"],M:["ein Monat","einem Monat"],MM:[a+" Monate",a+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[a+" Jahre",a+" Jahren"]};return b?e[c][0]:e[c][1]} +//! moment.js locale configuration +//! locale : german (de) +//! author : lluchs : https://github.com/lluchs +//! author: Menelion Elensúle: https://github.com/Oire +//! author : Mikolaj Dadela : https://github.com/mik01aj +function qd(a,b,c,d){var e={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[a+" Tage",a+" Tagen"],M:["ein Monat","einem Monat"],MM:[a+" Monate",a+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[a+" Jahre",a+" Jahren"]};return b?e[c][0]:e[c][1]} +//! moment.js locale configuration +//! locale : estonian (et) +//! author : Henry Kehlmann : https://github.com/madhenry +//! improvements : Illimar Tambek : https://github.com/ragulka +function rd(a,b,c,d){var e={s:["mõne sekundi","mõni sekund","paar sekundit"],m:["ühe minuti","üks minut"],mm:[a+" minuti",a+" minutit"],h:["ühe tunni","tund aega","üks tund"],hh:[a+" tunni",a+" tundi"],d:["ühe päeva","üks päev"],M:["kuu aja","kuu aega","üks kuu"],MM:[a+" kuu",a+" kuud"],y:["ühe aasta","aasta","üks aasta"],yy:[a+" aasta",a+" aastat"]};return b?e[c][2]?e[c][2]:e[c][1]:d?e[c][0]:e[c][1]}function sd(a,b,c,d){var e="";switch(c){case"s":return d?"muutaman sekunnin":"muutama sekunti";case"m":return d?"minuutin":"minuutti";case"mm":e=d?"minuutin":"minuuttia";break;case"h":return d?"tunnin":"tunti";case"hh":e=d?"tunnin":"tuntia";break;case"d":return d?"päivän":"päivä";case"dd":e=d?"päivän":"päivää";break;case"M":return d?"kuukauden":"kuukausi";case"MM":e=d?"kuukauden":"kuukautta";break;case"y":return d?"vuoden":"vuosi";case"yy":e=d?"vuoden":"vuotta"}return e=td(a,d)+" "+e}function td(a,b){return 10>a?b?yg[a]:xg[a]:a} +//! moment.js locale configuration +//! locale : hrvatski (hr) +//! author : Bojan Marković : https://github.com/bmarkovic +function ud(a,b,c){var d=a+" ";switch(c){case"m":return b?"jedna minuta":"jedne minute";case"mm":return d+=1===a?"minuta":2===a||3===a||4===a?"minute":"minuta";case"h":return b?"jedan sat":"jednog sata";case"hh":return d+=1===a?"sat":2===a||3===a||4===a?"sata":"sati";case"dd":return d+=1===a?"dan":"dana";case"MM":return d+=1===a?"mjesec":2===a||3===a||4===a?"mjeseca":"mjeseci";case"yy":return d+=1===a?"godina":2===a||3===a||4===a?"godine":"godina"}}function vd(a,b,c,d){var e=a;switch(c){case"s":return d||b?"néhány másodperc":"néhány másodperce";case"m":return"egy"+(d||b?" perc":" perce");case"mm":return e+(d||b?" perc":" perce");case"h":return"egy"+(d||b?" óra":" órája");case"hh":return e+(d||b?" óra":" órája");case"d":return"egy"+(d||b?" nap":" napja");case"dd":return e+(d||b?" nap":" napja");case"M":return"egy"+(d||b?" hónap":" hónapja");case"MM":return e+(d||b?" hónap":" hónapja");case"y":return"egy"+(d||b?" év":" éve");case"yy":return e+(d||b?" év":" éve")}return""}function wd(a){return(a?"":"[múlt] ")+"["+Ig[this.day()]+"] LT[-kor]"} +//! moment.js locale configuration +//! locale : icelandic (is) +//! author : Hinrik Örn Sigurðsson : https://github.com/hinrik +function xd(a){return a%100===11?!0:a%10===1?!1:!0}function yd(a,b,c,d){var e=a+" ";switch(c){case"s":return b||d?"nokkrar sekúndur":"nokkrum sekúndum";case"m":return b?"mínúta":"mínútu";case"mm":return xd(a)?e+(b||d?"mínútur":"mínútum"):b?e+"mínúta":e+"mínútu";case"hh":return xd(a)?e+(b||d?"klukkustundir":"klukkustundum"):e+"klukkustund";case"d":return b?"dagur":d?"dag":"degi";case"dd":return xd(a)?b?e+"dagar":e+(d?"daga":"dögum"):b?e+"dagur":e+(d?"dag":"degi");case"M":return b?"mánuður":d?"mánuð":"mánuði";case"MM":return xd(a)?b?e+"mánuðir":e+(d?"mánuði":"mánuðum"):b?e+"mánuður":e+(d?"mánuð":"mánuði");case"y":return b||d?"ár":"ári";case"yy":return xd(a)?e+(b||d?"ár":"árum"):e+(b||d?"ár":"ári")}} +//! moment.js locale configuration +//! locale : Luxembourgish (lb) +//! author : mweimerskirch : https://github.com/mweimerskirch, David Raison : https://github.com/kwisatz +function zd(a,b,c,d){var e={m:["eng Minutt","enger Minutt"],h:["eng Stonn","enger Stonn"],d:["een Dag","engem Dag"],M:["ee Mount","engem Mount"],y:["ee Joer","engem Joer"]};return b?e[c][0]:e[c][1]}function Ad(a){var b=a.substr(0,a.indexOf(" "));return Cd(b)?"a "+a:"an "+a}function Bd(a){var b=a.substr(0,a.indexOf(" "));return Cd(b)?"viru "+a:"virun "+a}function Cd(a){if(a=parseInt(a,10),isNaN(a))return!1;if(0>a)return!0;if(10>a)return a>=4&&7>=a?!0:!1;if(100>a){var b=a%10,c=a/10;return Cd(0===b?c:b)}if(1e4>a){for(;a>=10;)a/=10;return Cd(a)}return a/=1e3,Cd(a)}function Dd(a,b,c,d){return b?"kelios sekundės":d?"kelių sekundžių":"kelias sekundes"}function Ed(a,b,c,d){return b?Gd(c)[0]:d?Gd(c)[1]:Gd(c)[2]}function Fd(a){return a%10===0||a>10&&20>a}function Gd(a){return Lg[a].split("_")}function Hd(a,b,c,d){var e=a+" ";return 1===a?e+Ed(a,b,c[0],d):b?e+(Fd(a)?Gd(c)[1]:Gd(c)[0]):d?e+Gd(c)[1]:e+(Fd(a)?Gd(c)[1]:Gd(c)[2])}function Id(a,b,c){return c?b%10===1&&11!==b?a[2]:a[3]:b%10===1&&11!==b?a[0]:a[1]}function Jd(a,b,c){return a+" "+Id(Mg[c],a,b)}function Kd(a,b,c){return Id(Mg[c],a,b)}function Ld(a,b){return b?"dažas sekundes":"dažām sekundēm"}function Md(a,b,c,d){var e="";if(b)switch(c){case"s":e="काही सेकंद";break;case"m":e="एक मिनिट";break;case"mm":e="%d मिनिटे";break;case"h":e="एक तास";break;case"hh":e="%d तास";break;case"d":e="एक दिवस";break;case"dd":e="%d दिवस";break;case"M":e="एक महिना";break;case"MM":e="%d महिने";break;case"y":e="एक वर्ष";break;case"yy":e="%d वर्षे"}else switch(c){case"s":e="काही सेकंदां";break;case"m":e="एका मिनिटा";break;case"mm":e="%d मिनिटां";break;case"h":e="एका तासा";break;case"hh":e="%d तासां";break;case"d":e="एका दिवसा";break;case"dd":e="%d दिवसां";break;case"M":e="एका महिन्या";break;case"MM":e="%d महिन्यां";break;case"y":e="एका वर्षा";break;case"yy":e="%d वर्षां"}return e.replace(/%d/i,a)}function Nd(a){return 5>a%10&&a%10>1&&~~(a/10)%10!==1}function Od(a,b,c){var d=a+" ";switch(c){case"m":return b?"minuta":"minutę";case"mm":return d+(Nd(a)?"minuty":"minut");case"h":return b?"godzina":"godzinę";case"hh":return d+(Nd(a)?"godziny":"godzin");case"MM":return d+(Nd(a)?"miesiące":"miesięcy");case"yy":return d+(Nd(a)?"lata":"lat")}} +//! moment.js locale configuration +//! locale : romanian (ro) +//! author : Vlad Gurdiga : https://github.com/gurdiga +//! author : Valentin Agachi : https://github.com/avaly +function Pd(a,b,c){var d={mm:"minute",hh:"ore",dd:"zile",MM:"luni",yy:"ani"},e=" ";return(a%100>=20||a>=100&&a%100===0)&&(e=" de "),a+e+d[c]} +//! moment.js locale configuration +//! locale : russian (ru) +//! author : Viktorminator : https://github.com/Viktorminator +//! Author : Menelion Elensúle : https://github.com/Oire +//! author : Коренберг Марк : https://github.com/socketpair +function Qd(a,b){var c=a.split("_");return b%10===1&&b%100!==11?c[0]:b%10>=2&&4>=b%10&&(10>b%100||b%100>=20)?c[1]:c[2]}function Rd(a,b,c){var d={mm:b?"минута_минуты_минут":"минуту_минуты_минут",hh:"час_часа_часов",dd:"день_дня_дней",MM:"месяц_месяца_месяцев",yy:"год_года_лет"};return"m"===c?b?"минута":"минуту":a+" "+Qd(d[c],+a)}function Sd(a){return a>1&&5>a}function Td(a,b,c,d){var e=a+" ";switch(c){case"s":return b||d?"pár sekúnd":"pár sekundami";case"m":return b?"minúta":d?"minútu":"minútou";case"mm":return b||d?e+(Sd(a)?"minúty":"minút"):e+"minútami";break;case"h":return b?"hodina":d?"hodinu":"hodinou";case"hh":return b||d?e+(Sd(a)?"hodiny":"hodín"):e+"hodinami";break;case"d":return b||d?"deň":"dňom";case"dd":return b||d?e+(Sd(a)?"dni":"dní"):e+"dňami";break;case"M":return b||d?"mesiac":"mesiacom";case"MM":return b||d?e+(Sd(a)?"mesiace":"mesiacov"):e+"mesiacmi";break;case"y":return b||d?"rok":"rokom";case"yy":return b||d?e+(Sd(a)?"roky":"rokov"):e+"rokmi"}} +//! moment.js locale configuration +//! locale : slovenian (sl) +//! author : Robert Sedovšek : https://github.com/sedovsek +function Ud(a,b,c,d){var e=a+" ";switch(c){case"s":return b||d?"nekaj sekund":"nekaj sekundami";case"m":return b?"ena minuta":"eno minuto";case"mm":return e+=1===a?b?"minuta":"minuto":2===a?b||d?"minuti":"minutama":5>a?b||d?"minute":"minutami":b||d?"minut":"minutami";case"h":return b?"ena ura":"eno uro";case"hh":return e+=1===a?b?"ura":"uro":2===a?b||d?"uri":"urama":5>a?b||d?"ure":"urami":b||d?"ur":"urami";case"d":return b||d?"en dan":"enim dnem";case"dd":return e+=1===a?b||d?"dan":"dnem":2===a?b||d?"dni":"dnevoma":b||d?"dni":"dnevi";case"M":return b||d?"en mesec":"enim mesecem";case"MM":return e+=1===a?b||d?"mesec":"mesecem":2===a?b||d?"meseca":"mesecema":5>a?b||d?"mesece":"meseci":b||d?"mesecev":"meseci";case"y":return b||d?"eno leto":"enim letom";case"yy":return e+=1===a?b||d?"leto":"letom":2===a?b||d?"leti":"letoma":5>a?b||d?"leta":"leti":b||d?"let":"leti"}}function Vd(a){var b=a;return b=-1!==a.indexOf("jaj")?b.slice(0,-3)+"leS":-1!==a.indexOf("jar")?b.slice(0,-3)+"waQ":-1!==a.indexOf("DIS")?b.slice(0,-3)+"nem":b+" pIq"}function Wd(a){var b=a;return b=-1!==a.indexOf("jaj")?b.slice(0,-3)+"Hu’":-1!==a.indexOf("jar")?b.slice(0,-3)+"wen":-1!==a.indexOf("DIS")?b.slice(0,-3)+"ben":b+" ret"}function Xd(a,b,c,d){var e=Yd(a);switch(c){case"mm":return e+" tup";case"hh":return e+" rep";case"dd":return e+" jaj";case"MM":return e+" jar";case"yy":return e+" DIS"}}function Yd(a){var b=Math.floor(a%1e3/100),c=Math.floor(a%100/10),d=a%10,e="";return b>0&&(e+=fh[b]+"vatlh"),c>0&&(e+=(""!==e?" ":"")+fh[c]+"maH"),d>0&&(e+=(""!==e?" ":"")+fh[d]),""===e?"pagh":e}function Zd(a,b,c,d){var e={s:["viensas secunds","'iensas secunds"],m:["'n míut","'iens míut"],mm:[a+" míuts",""+a+" míuts"],h:["'n þora","'iensa þora"],hh:[a+" þoras",""+a+" þoras"],d:["'n ziua","'iensa ziua"],dd:[a+" ziuas",""+a+" ziuas"],M:["'n mes","'iens mes"],MM:[a+" mesen",""+a+" mesen"],y:["'n ar","'iens ar"],yy:[a+" ars",""+a+" ars"]};return d?e[c][0]:b?e[c][0]:e[c][1]} +//! moment.js locale configuration +//! locale : ukrainian (uk) +//! author : zemlanin : https://github.com/zemlanin +//! Author : Menelion Elensúle : https://github.com/Oire +function $d(a,b){var c=a.split("_");return b%10===1&&b%100!==11?c[0]:b%10>=2&&4>=b%10&&(10>b%100||b%100>=20)?c[1]:c[2]}function _d(a,b,c){var d={mm:b?"хвилина_хвилини_хвилин":"хвилину_хвилини_хвилин",hh:b?"година_години_годин":"годину_години_годин",dd:"день_дні_днів",MM:"місяць_місяці_місяців",yy:"рік_роки_років"};return"m"===c?b?"хвилина":"хвилину":"h"===c?b?"година":"годину":a+" "+$d(d[c],+a)}function ae(a,b){var c={nominative:"неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота".split("_"),accusative:"неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу".split("_"),genitive:"неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи".split("_")},d=/(\[[ВвУу]\]) ?dddd/.test(b)?"accusative":/\[?(?:минулої|наступної)? ?\] ?dddd/.test(b)?"genitive":"nominative";return c[d][a.day()]}function be(a){return function(){return a+"о"+(11===this.hours()?"б":"")+"] LT"}}var ce,de;de=Array.prototype.some?Array.prototype.some:function(a){for(var b=Object(this),c=b.length>>>0,d=0;c>d;d++)if(d in b&&a.call(this,b[d],d,b))return!0;return!1};var ee=a.momentProperties=[],fe=!1,ge={};a.suppressDeprecationWarnings=!1,a.deprecationHandler=null;var he;he=Object.keys?Object.keys:function(a){var b,c=[];for(b in a)f(a,b)&&c.push(b);return c};var ie,je,ke={},le={},me=/(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,ne=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,oe={},pe={},qe=/\d/,re=/\d\d/,se=/\d{3}/,te=/\d{4}/,ue=/[+-]?\d{6}/,ve=/\d\d?/,we=/\d\d\d\d?/,xe=/\d\d\d\d\d\d?/,ye=/\d{1,3}/,ze=/\d{1,4}/,Ae=/[+-]?\d{1,6}/,Be=/\d+/,Ce=/[+-]?\d+/,De=/Z|[+-]\d\d:?\d\d/gi,Ee=/Z|[+-]\d\d(?::?\d\d)?/gi,Fe=/[+-]?\d+(\.\d{1,3})?/,Ge=/[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i,He={},Ie={},Je=0,Ke=1,Le=2,Me=3,Ne=4,Oe=5,Pe=6,Qe=7,Re=8;je=Array.prototype.indexOf?Array.prototype.indexOf:function(a){var b;for(b=0;b=a?""+a:"+"+a}),R(0,["YY",2],0,function(){return this.year()%100}),R(0,["YYYY",4],0,"year"),R(0,["YYYYY",5],0,"year"),R(0,["YYYYYY",6,!0],0,"year"),J("year","y"),W("Y",Ce),W("YY",ve,re),W("YYYY",ze,te),W("YYYYY",Ae,ue),W("YYYYYY",Ae,ue),$(["YYYYY","YYYYYY"],Je),$("YYYY",function(b,c){c[Je]=2===b.length?a.parseTwoDigitYear(b):r(b)}),$("YY",function(b,c){c[Je]=a.parseTwoDigitYear(b)}),$("Y",function(a,b){b[Je]=parseInt(a,10)}),a.parseTwoDigitYear=function(a){return r(a)+(r(a)>68?1900:2e3)};var bf=M("FullYear",!0);a.ISO_8601=function(){};var cf=u("moment().min is deprecated, use moment.max instead. https://github.com/moment/moment/issues/1548",function(){var a=Ka.apply(null,arguments);return this.isValid()&&a.isValid()?this>a?this:a:l()}),df=u("moment().max is deprecated, use moment.min instead. https://github.com/moment/moment/issues/1548",function(){var a=Ka.apply(null,arguments);return this.isValid()&&a.isValid()?a>this?this:a:l()}),ef=function(){return Date.now?Date.now():+new Date};Qa("Z",":"),Qa("ZZ",""),W("Z",Ee),W("ZZ",Ee),$(["Z","ZZ"],function(a,b,c){c._useUTC=!0,c._tzm=Ra(Ee,a)});var ff=/([\+\-]|\d\d)/gi;a.updateOffset=function(){};var gf=/^(\-)?(?:(\d*)[. ])?(\d+)\:(\d+)(?:\:(\d+)\.?(\d{3})?\d*)?$/,hf=/^(-)?P(?:(-?[0-9,.]*)Y)?(?:(-?[0-9,.]*)M)?(?:(-?[0-9,.]*)W)?(?:(-?[0-9,.]*)D)?(?:T(?:(-?[0-9,.]*)H)?(?:(-?[0-9,.]*)M)?(?:(-?[0-9,.]*)S)?)?$/;db.fn=Oa.prototype;var jf=ib(1,"add"),kf=ib(-1,"subtract");a.defaultFormat="YYYY-MM-DDTHH:mm:ssZ",a.defaultFormatUtc="YYYY-MM-DDTHH:mm:ss[Z]";var lf=u("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",function(a){return void 0===a?this.localeData():this.locale(a)});R(0,["gg",2],0,function(){return this.weekYear()%100}),R(0,["GG",2],0,function(){return this.isoWeekYear()%100}),Pb("gggg","weekYear"),Pb("ggggg","weekYear"),Pb("GGGG","isoWeekYear"),Pb("GGGGG","isoWeekYear"),J("weekYear","gg"),J("isoWeekYear","GG"),W("G",Ce),W("g",Ce),W("GG",ve,re),W("gg",ve,re),W("GGGG",ze,te),W("gggg",ze,te),W("GGGGG",Ae,ue),W("ggggg",Ae,ue),_(["gggg","ggggg","GGGG","GGGGG"],function(a,b,c,d){b[d.substr(0,2)]=r(a)}),_(["gg","GG"],function(b,c,d,e){c[e]=a.parseTwoDigitYear(b)}),R("Q",0,"Qo","quarter"),J("quarter","Q"),W("Q",qe),$("Q",function(a,b){b[Ke]=3*(r(a)-1)}),R("w",["ww",2],"wo","week"),R("W",["WW",2],"Wo","isoWeek"),J("week","w"),J("isoWeek","W"),W("w",ve),W("ww",ve,re),W("W",ve),W("WW",ve,re),_(["w","ww","W","WW"],function(a,b,c,d){b[d.substr(0,1)]=r(a)});var mf={dow:0,doy:6};R("D",["DD",2],"Do","date"),J("date","D"),W("D",ve),W("DD",ve,re),W("Do",function(a,b){return a?b._ordinalParse:b._ordinalParseLenient}),$(["D","DD"],Le),$("Do",function(a,b){b[Le]=r(a.match(ve)[0],10)});var nf=M("Date",!0);R("d",0,"do","day"),R("dd",0,0,function(a){return this.localeData().weekdaysMin(this,a)}),R("ddd",0,0,function(a){return this.localeData().weekdaysShort(this,a)}),R("dddd",0,0,function(a){return this.localeData().weekdays(this,a)}),R("e",0,0,"weekday"),R("E",0,0,"isoWeekday"),J("day","d"),J("weekday","e"),J("isoWeekday","E"),W("d",ve),W("e",ve),W("E",ve),W("dd",function(a,b){return b.weekdaysMinRegex(a)}),W("ddd",function(a,b){return b.weekdaysShortRegex(a)}),W("dddd",function(a,b){return b.weekdaysRegex(a)}),_(["dd","ddd","dddd"],function(a,b,c,d){var e=c._locale.weekdaysParse(a,d,c._strict);null!=e?b.d=e:j(c).invalidWeekday=a}),_(["d","e","E"],function(a,b,c,d){b[d]=r(a)});var of="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),pf="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),qf="Su_Mo_Tu_We_Th_Fr_Sa".split("_"),rf=Ge,sf=Ge,tf=Ge;R("DDD",["DDDD",3],"DDDo","dayOfYear"),J("dayOfYear","DDD"),W("DDD",ye),W("DDDD",se),$(["DDD","DDDD"],function(a,b,c){c._dayOfYear=r(a)}),R("H",["HH",2],0,"hour"),R("h",["hh",2],0,oc),R("k",["kk",2],0,pc),R("hmm",0,0,function(){return""+oc.apply(this)+Q(this.minutes(),2)}),R("hmmss",0,0,function(){return""+oc.apply(this)+Q(this.minutes(),2)+Q(this.seconds(),2)}),R("Hmm",0,0,function(){return""+this.hours()+Q(this.minutes(),2)}),R("Hmmss",0,0,function(){return""+this.hours()+Q(this.minutes(),2)+Q(this.seconds(),2)}),qc("a",!0),qc("A",!1),J("hour","h"),W("a",rc),W("A",rc),W("H",ve),W("h",ve),W("HH",ve,re),W("hh",ve,re),W("hmm",we),W("hmmss",xe),W("Hmm",we),W("Hmmss",xe),$(["H","HH"],Me),$(["a","A"],function(a,b,c){c._isPm=c._locale.isPM(a),c._meridiem=a}),$(["h","hh"],function(a,b,c){b[Me]=r(a),j(c).bigHour=!0}),$("hmm",function(a,b,c){var d=a.length-2;b[Me]=r(a.substr(0,d)),b[Ne]=r(a.substr(d)),j(c).bigHour=!0}),$("hmmss",function(a,b,c){var d=a.length-4,e=a.length-2;b[Me]=r(a.substr(0,d)),b[Ne]=r(a.substr(d,2)),b[Oe]=r(a.substr(e)),j(c).bigHour=!0}),$("Hmm",function(a,b,c){var d=a.length-2;b[Me]=r(a.substr(0,d)),b[Ne]=r(a.substr(d))}),$("Hmmss",function(a,b,c){var d=a.length-4,e=a.length-2;b[Me]=r(a.substr(0,d)),b[Ne]=r(a.substr(d,2)),b[Oe]=r(a.substr(e))});var uf=/[ap]\.?m?\.?/i,vf=M("Hours",!0);R("m",["mm",2],0,"minute"),J("minute","m"),W("m",ve),W("mm",ve,re),$(["m","mm"],Ne);var wf=M("Minutes",!1);R("s",["ss",2],0,"second"),J("second","s"),W("s",ve),W("ss",ve,re),$(["s","ss"],Oe);var xf=M("Seconds",!1);R("S",0,0,function(){return~~(this.millisecond()/100)}),R(0,["SS",2],0,function(){return~~(this.millisecond()/10)}),R(0,["SSS",3],0,"millisecond"),R(0,["SSSS",4],0,function(){return 10*this.millisecond()}),R(0,["SSSSS",5],0,function(){return 100*this.millisecond()}),R(0,["SSSSSS",6],0,function(){return 1e3*this.millisecond()}),R(0,["SSSSSSS",7],0,function(){return 1e4*this.millisecond()}),R(0,["SSSSSSSS",8],0,function(){return 1e5*this.millisecond()}),R(0,["SSSSSSSSS",9],0,function(){return 1e6*this.millisecond()}),J("millisecond","ms"),W("S",ye,qe),W("SS",ye,re),W("SSS",ye,se);var yf;for(yf="SSSS";yf.length<=9;yf+="S")W(yf,Be);for(yf="S";yf.length<=9;yf+="S")$(yf,uc);var zf=M("Milliseconds",!1);R("z",0,0,"zoneAbbr"),R("zz",0,0,"zoneName");var Af=o.prototype;Af.add=jf,Af.calendar=kb,Af.clone=lb,Af.diff=sb,Af.endOf=Eb,Af.format=wb,Af.from=xb,Af.fromNow=yb,Af.to=zb,Af.toNow=Ab,Af.get=P,Af.invalidAt=Nb,Af.isAfter=mb,Af.isBefore=nb,Af.isBetween=ob,Af.isSame=pb,Af.isSameOrAfter=qb,Af.isSameOrBefore=rb,Af.isValid=Lb,Af.lang=lf,Af.locale=Bb,Af.localeData=Cb,Af.max=df,Af.min=cf,Af.parsingFlags=Mb,Af.set=P,Af.startOf=Db,Af.subtract=kf,Af.toArray=Ib,Af.toObject=Jb,Af.toDate=Hb,Af.toISOString=vb,Af.toJSON=Kb,Af.toString=ub,Af.unix=Gb,Af.valueOf=Fb,Af.creationData=Ob,Af.year=bf,Af.isLeapYear=ta,Af.weekYear=Qb,Af.isoWeekYear=Rb,Af.quarter=Af.quarters=Wb,Af.month=ha,Af.daysInMonth=ia,Af.week=Af.weeks=$b,Af.isoWeek=Af.isoWeeks=_b,Af.weeksInYear=Tb,Af.isoWeeksInYear=Sb,Af.date=nf,Af.day=Af.days=gc,Af.weekday=hc,Af.isoWeekday=ic,Af.dayOfYear=nc,Af.hour=Af.hours=vf,Af.minute=Af.minutes=wf,Af.second=Af.seconds=xf,Af.millisecond=Af.milliseconds=zf,Af.utcOffset=Ua,Af.utc=Wa,Af.local=Xa,Af.parseZone=Ya,Af.hasAlignedHourOffset=Za,Af.isDST=$a,Af.isDSTShifted=_a,Af.isLocal=ab,Af.isUtcOffset=bb,Af.isUtc=cb,Af.isUTC=cb,Af.zoneAbbr=vc,Af.zoneName=wc,Af.dates=u("dates accessor is deprecated. Use date instead.",nf),Af.months=u("months accessor is deprecated. Use month instead",ha),Af.years=u("years accessor is deprecated. Use year instead",bf),Af.zone=u("moment().zone is deprecated, use moment().utcOffset instead. https://github.com/moment/moment/issues/1779",Va);var Bf=Af,Cf={sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},Df={LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},Ef="Invalid date",Ff="%d",Gf=/\d{1,2}/,Hf={future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},If=A.prototype;If._calendar=Cf,If.calendar=zc,If._longDateFormat=Df,If.longDateFormat=Ac,If._invalidDate=Ef,If.invalidDate=Bc,If._ordinal=Ff,If.ordinal=Cc,If._ordinalParse=Gf,If.preparse=Dc,If.postformat=Dc,If._relativeTime=Hf,If.relativeTime=Ec,If.pastFuture=Fc,If.set=y,If.months=ca,If._months=Te,If.monthsShort=da,If._monthsShort=Ue,If.monthsParse=fa,If._monthsRegex=We,If.monthsRegex=ka,If._monthsShortRegex=Ve,If.monthsShortRegex=ja,If.week=Xb,If._week=mf,If.firstDayOfYear=Zb,If.firstDayOfWeek=Yb,If.weekdays=bc,If._weekdays=of,If.weekdaysMin=dc,If._weekdaysMin=qf,If.weekdaysShort=cc,If._weekdaysShort=pf,If.weekdaysParse=fc,If._weekdaysRegex=rf,If.weekdaysRegex=jc,If._weekdaysShortRegex=sf,If.weekdaysShortRegex=kc,If._weekdaysMinRegex=tf,If.weekdaysMinRegex=lc,If.isPM=sc,If._meridiemParse=uf,If.meridiem=tc,E("en",{ordinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(a){var b=a%10,c=1===r(a%100/10)?"th":1===b?"st":2===b?"nd":3===b?"rd":"th";return a+c}}),a.lang=u("moment.lang is deprecated. Use moment.locale instead.",E),a.langData=u("moment.langData is deprecated. Use moment.localeData instead.",H);var Jf=Math.abs,Kf=Yc("ms"),Lf=Yc("s"),Mf=Yc("m"),Nf=Yc("h"),Of=Yc("d"),Pf=Yc("w"),Qf=Yc("M"),Rf=Yc("y"),Sf=$c("milliseconds"),Tf=$c("seconds"),Uf=$c("minutes"),Vf=$c("hours"),Wf=$c("days"),Xf=$c("months"),Yf=$c("years"),Zf=Math.round,$f={s:45,m:45,h:22,d:26,M:11},_f=Math.abs,ag=Oa.prototype;ag.abs=Oc,ag.add=Qc,ag.subtract=Rc,ag.as=Wc,ag.asMilliseconds=Kf,ag.asSeconds=Lf,ag.asMinutes=Mf,ag.asHours=Nf,ag.asDays=Of,ag.asWeeks=Pf,ag.asMonths=Qf,ag.asYears=Rf,ag.valueOf=Xc,ag._bubble=Tc,ag.get=Zc,ag.milliseconds=Sf,ag.seconds=Tf,ag.minutes=Uf,ag.hours=Vf,ag.days=Wf,ag.weeks=_c,ag.months=Xf,ag.years=Yf,ag.humanize=dd,ag.toISOString=ed,ag.toString=ed,ag.toJSON=ed,ag.locale=Bb,ag.localeData=Cb,ag.toIsoString=u("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",ed),ag.lang=lf,R("X",0,0,"unix"),R("x",0,0,"valueOf"),W("x",Ce),W("X",Fe),$("X",function(a,b,c){c._d=new Date(1e3*parseFloat(a,10))}),$("x",function(a,b,c){c._d=new Date(r(a))}), +//! moment.js +//! version : 2.13.0 +//! authors : Tim Wood, Iskren Chernev, Moment.js contributors +//! license : MIT +//! momentjs.com +a.version="2.13.0",b(Ka),a.fn=Bf,a.min=Ma,a.max=Na,a.now=ef,a.utc=h,a.unix=xc,a.months=Jc,a.isDate=d,a.locale=E,a.invalid=l,a.duration=db,a.isMoment=p,a.weekdays=Lc,a.parseZone=yc,a.localeData=H,a.isDuration=Pa,a.monthsShort=Kc,a.weekdaysMin=Nc,a.defineLocale=F,a.updateLocale=G,a.locales=I,a.weekdaysShort=Mc,a.normalizeUnits=K,a.relativeTimeThreshold=cd,a.prototype=Bf;var bg=a,cg=(bg.defineLocale("af",{months:"Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember".split("_"),monthsShort:"Jan_Feb_Mar_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des".split("_"),weekdays:"Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag".split("_"),weekdaysShort:"Son_Maa_Din_Woe_Don_Vry_Sat".split("_"),weekdaysMin:"So_Ma_Di_Wo_Do_Vr_Sa".split("_"),meridiemParse:/vm|nm/i,isPM:function(a){return/^nm$/i.test(a)},meridiem:function(a,b,c){return 12>a?c?"vm":"VM":c?"nm":"NM"},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Vandag om] LT",nextDay:"[Môre om] LT",nextWeek:"dddd [om] LT",lastDay:"[Gister om] LT",lastWeek:"[Laas] dddd [om] LT",sameElse:"L"},relativeTime:{future:"oor %s",past:"%s gelede",s:"'n paar sekondes",m:"'n minuut",mm:"%d minute",h:"'n uur",hh:"%d ure",d:"'n dag",dd:"%d dae",M:"'n maand",MM:"%d maande",y:"'n jaar",yy:"%d jaar"},ordinalParse:/\d{1,2}(ste|de)/,ordinal:function(a){return a+(1===a||8===a||a>=20?"ste":"de")},week:{dow:1,doy:4}}),bg.defineLocale("ar-ma",{months:"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),monthsShort:"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),weekdays:"الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},week:{dow:6,doy:12}}),{1:"١",2:"٢",3:"٣",4:"٤",5:"٥",6:"٦",7:"٧",8:"٨",9:"٩",0:"٠"}),dg={"١":"1","٢":"2","٣":"3","٤":"4","٥":"5","٦":"6","٧":"7","٨":"8","٩":"9","٠":"0"},eg=(bg.defineLocale("ar-sa",{months:"يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),monthsShort:"يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/ص|م/,isPM:function(a){return"م"===a},meridiem:function(a,b,c){return 12>a?"ص":"م"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},preparse:function(a){return a.replace(/[١٢٣٤٥٦٧٨٩٠]/g,function(a){return dg[a]}).replace(/،/g,",")},postformat:function(a){return a.replace(/\d/g,function(a){return cg[a]}).replace(/,/g,"،")},week:{dow:6,doy:12}}),bg.defineLocale("ar-tn",{months:"جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),monthsShort:"جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},week:{dow:1,doy:4}}),{1:"١",2:"٢",3:"٣",4:"٤",5:"٥",6:"٦",7:"٧",8:"٨",9:"٩",0:"٠"}),fg={"١":"1","٢":"2","٣":"3","٤":"4","٥":"5","٦":"6","٧":"7","٨":"8","٩":"9","٠":"0"},gg=function(a){return 0===a?0:1===a?1:2===a?2:a%100>=3&&10>=a%100?3:a%100>=11?4:5},hg={s:["أقل من ثانية","ثانية واحدة",["ثانيتان","ثانيتين"],"%d ثوان","%d ثانية","%d ثانية"],m:["أقل من دقيقة","دقيقة واحدة",["دقيقتان","دقيقتين"],"%d دقائق","%d دقيقة","%d دقيقة"],h:["أقل من ساعة","ساعة واحدة",["ساعتان","ساعتين"],"%d ساعات","%d ساعة","%d ساعة"],d:["أقل من يوم","يوم واحد",["يومان","يومين"],"%d أيام","%d يومًا","%d يوم"],M:["أقل من شهر","شهر واحد",["شهران","شهرين"],"%d أشهر","%d شهرا","%d شهر"],y:["أقل من عام","عام واحد",["عامان","عامين"],"%d أعوام","%d عامًا","%d عام"]},ig=function(a){return function(b,c,d,e){var f=gg(b),g=hg[a][gg(b)];return 2===f&&(g=g[c?0:1]),g.replace(/%d/i,b)}},jg=["كانون الثاني يناير","شباط فبراير","آذار مارس","نيسان أبريل","أيار مايو","حزيران يونيو","تموز يوليو","آب أغسطس","أيلول سبتمبر","تشرين الأول أكتوبر","تشرين الثاني نوفمبر","كانون الأول ديسمبر"],kg=(bg.defineLocale("ar",{months:jg,monthsShort:jg,weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/‏M/‏YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/ص|م/,isPM:function(a){return"م"===a},meridiem:function(a,b,c){return 12>a?"ص":"م"},calendar:{sameDay:"[اليوم عند الساعة] LT",nextDay:"[غدًا عند الساعة] LT",nextWeek:"dddd [عند الساعة] LT",lastDay:"[أمس عند الساعة] LT",lastWeek:"dddd [عند الساعة] LT",sameElse:"L"},relativeTime:{future:"بعد %s",past:"منذ %s",s:ig("s"),m:ig("m"),mm:ig("m"),h:ig("h"),hh:ig("h"),d:ig("d"),dd:ig("d"),M:ig("M"),MM:ig("M"),y:ig("y"),yy:ig("y")},preparse:function(a){return a.replace(/\u200f/g,"").replace(/[١٢٣٤٥٦٧٨٩٠]/g,function(a){return fg[a]}).replace(/،/g,",")},postformat:function(a){return a.replace(/\d/g,function(a){return eg[a]}).replace(/,/g,"،")},week:{dow:6,doy:12}}),{1:"-inci",5:"-inci",8:"-inci",70:"-inci",80:"-inci",2:"-nci",7:"-nci",20:"-nci",50:"-nci",3:"-üncü",4:"-üncü",100:"-üncü",6:"-ncı",9:"-uncu",10:"-uncu",30:"-uncu",60:"-ıncı",90:"-ıncı"}),lg=(bg.defineLocale("az",{months:"yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr".split("_"),monthsShort:"yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek".split("_"),weekdays:"Bazar_Bazar ertəsi_Çərşənbə axşamı_Çərşənbə_Cümə axşamı_Cümə_Şənbə".split("_"),weekdaysShort:"Baz_BzE_ÇAx_Çər_CAx_Cüm_Şən".split("_"),weekdaysMin:"Bz_BE_ÇA_Çə_CA_Cü_Şə".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[bugün saat] LT",nextDay:"[sabah saat] LT",nextWeek:"[gələn həftə] dddd [saat] LT",lastDay:"[dünən] LT",lastWeek:"[keçən həftə] dddd [saat] LT",sameElse:"L"},relativeTime:{future:"%s sonra",past:"%s əvvəl",s:"birneçə saniyyə",m:"bir dəqiqə",mm:"%d dəqiqə",h:"bir saat",hh:"%d saat",d:"bir gün",dd:"%d gün",M:"bir ay",MM:"%d ay",y:"bir il",yy:"%d il"},meridiemParse:/gecə|səhər|gündüz|axşam/,isPM:function(a){return/^(gündüz|axşam)$/.test(a)},meridiem:function(a,b,c){return 4>a?"gecə":12>a?"səhər":17>a?"gündüz":"axşam"},ordinalParse:/\d{1,2}-(ıncı|inci|nci|üncü|ncı|uncu)/,ordinal:function(a){if(0===a)return a+"-ıncı";var b=a%10,c=a%100-b,d=a>=100?100:null;return a+(kg[b]||kg[c]||kg[d])},week:{dow:1,doy:7}}),bg.defineLocale("be",{months:{format:"студзеня_лютага_сакавіка_красавіка_траўня_чэрвеня_ліпеня_жніўня_верасня_кастрычніка_лістапада_снежня".split("_"),standalone:"студзень_люты_сакавік_красавік_травень_чэрвень_ліпень_жнівень_верасень_кастрычнік_лістапад_снежань".split("_")},monthsShort:"студ_лют_сак_крас_трав_чэрв_ліп_жнів_вер_каст_ліст_снеж".split("_"),weekdays:{format:"нядзелю_панядзелак_аўторак_сераду_чацвер_пятніцу_суботу".split("_"),standalone:"нядзеля_панядзелак_аўторак_серада_чацвер_пятніца_субота".split("_"),isFormat:/\[ ?[Вв] ?(?:мінулую|наступную)? ?\] ?dddd/},weekdaysShort:"нд_пн_ат_ср_чц_пт_сб".split("_"),weekdaysMin:"нд_пн_ат_ср_чц_пт_сб".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY г.",LLL:"D MMMM YYYY г., HH:mm",LLLL:"dddd, D MMMM YYYY г., HH:mm"},calendar:{sameDay:"[Сёння ў] LT",nextDay:"[Заўтра ў] LT",lastDay:"[Учора ў] LT",nextWeek:function(){return"[У] dddd [ў] LT"},lastWeek:function(){switch(this.day()){case 0:case 3:case 5:case 6:return"[У мінулую] dddd [ў] LT";case 1:case 2:case 4:return"[У мінулы] dddd [ў] LT"}},sameElse:"L"},relativeTime:{future:"праз %s",past:"%s таму",s:"некалькі секунд",m:gd,mm:gd,h:gd,hh:gd,d:"дзень",dd:gd,M:"месяц",MM:gd,y:"год",yy:gd},meridiemParse:/ночы|раніцы|дня|вечара/,isPM:function(a){return/^(дня|вечара)$/.test(a)},meridiem:function(a,b,c){return 4>a?"ночы":12>a?"раніцы":17>a?"дня":"вечара"},ordinalParse:/\d{1,2}-(і|ы|га)/,ordinal:function(a,b){switch(b){case"M":case"d":case"DDD":case"w":case"W":return a%10!==2&&a%10!==3||a%100===12||a%100===13?a+"-ы":a+"-і";case"D":return a+"-га";default:return a}},week:{dow:1,doy:7}}),bg.defineLocale("bg",{months:"януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември".split("_"),monthsShort:"янр_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек".split("_"),weekdays:"неделя_понеделник_вторник_сряда_четвъртък_петък_събота".split("_"),weekdaysShort:"нед_пон_вто_сря_чет_пет_съб".split("_"),weekdaysMin:"нд_пн_вт_ср_чт_пт_сб".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"D.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[Днес в] LT",nextDay:"[Утре в] LT",nextWeek:"dddd [в] LT",lastDay:"[Вчера в] LT",lastWeek:function(){switch(this.day()){case 0:case 3:case 6:return"[В изминалата] dddd [в] LT";case 1:case 2:case 4:case 5:return"[В изминалия] dddd [в] LT"}},sameElse:"L"},relativeTime:{future:"след %s",past:"преди %s",s:"няколко секунди",m:"минута",mm:"%d минути",h:"час",hh:"%d часа",d:"ден",dd:"%d дни",M:"месец",MM:"%d месеца",y:"година",yy:"%d години"},ordinalParse:/\d{1,2}-(ев|ен|ти|ви|ри|ми)/,ordinal:function(a){var b=a%10,c=a%100;return 0===a?a+"-ев":0===c?a+"-ен":c>10&&20>c?a+"-ти":1===b?a+"-ви":2===b?a+"-ри":7===b||8===b?a+"-ми":a+"-ти"},week:{dow:1,doy:7}}),{1:"১",2:"২",3:"৩",4:"৪",5:"৫",6:"৬",7:"৭",8:"৮",9:"৯",0:"০"}),mg={"১":"1","২":"2","৩":"3","৪":"4","৫":"5","৬":"6","৭":"7","৮":"8","৯":"9","০":"0"},ng=(bg.defineLocale("bn",{months:"জানুয়ারী_ফেবুয়ারী_মার্চ_এপ্রিল_মে_জুন_জুলাই_অগাস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর".split("_"),monthsShort:"জানু_ফেব_মার্চ_এপর_মে_জুন_জুল_অগ_সেপ্ট_অক্টো_নভ_ডিসেম্".split("_"),weekdays:"রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পত্তিবার_শুক্রবার_শনিবার".split("_"),weekdaysShort:"রবি_সোম_মঙ্গল_বুধ_বৃহস্পত্তি_শুক্র_শনি".split("_"),weekdaysMin:"রব_সম_মঙ্গ_বু_ব্রিহ_শু_শনি".split("_"),longDateFormat:{LT:"A h:mm সময়",LTS:"A h:mm:ss সময়",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm সময়",LLLL:"dddd, D MMMM YYYY, A h:mm সময়"},calendar:{sameDay:"[আজ] LT",nextDay:"[আগামীকাল] LT",nextWeek:"dddd, LT",lastDay:"[গতকাল] LT",lastWeek:"[গত] dddd, LT",sameElse:"L"},relativeTime:{future:"%s পরে",past:"%s আগে",s:"কয়েক সেকেন্ড",m:"এক মিনিট",mm:"%d মিনিট",h:"এক ঘন্টা",hh:"%d ঘন্টা",d:"এক দিন",dd:"%d দিন",M:"এক মাস",MM:"%d মাস",y:"এক বছর",yy:"%d বছর"},preparse:function(a){return a.replace(/[১২৩৪৫৬৭৮৯০]/g,function(a){return mg[a]})},postformat:function(a){return a.replace(/\d/g,function(a){return lg[a]})},meridiemParse:/রাত|সকাল|দুপুর|বিকাল|রাত/,meridiemHour:function(a,b){return 12===a&&(a=0),"রাত"===b&&a>=4||"দুপুর"===b&&5>a||"বিকাল"===b?a+12:a},meridiem:function(a,b,c){return 4>a?"রাত":10>a?"সকাল":17>a?"দুপুর":20>a?"বিকাল":"রাত"},week:{dow:0,doy:6}}),{1:"༡",2:"༢",3:"༣",4:"༤",5:"༥",6:"༦",7:"༧",8:"༨",9:"༩",0:"༠"}),og={"༡":"1","༢":"2","༣":"3","༤":"4","༥":"5","༦":"6","༧":"7","༨":"8","༩":"9","༠":"0"},pg=(bg.defineLocale("bo",{months:"ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ".split("_"),monthsShort:"ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ".split("_"),weekdays:"གཟའ་ཉི་མ་_གཟའ་ཟླ་བ་_གཟའ་མིག་དམར་_གཟའ་ལྷག་པ་_གཟའ་ཕུར་བུ_གཟའ་པ་སངས་_གཟའ་སྤེན་པ་".split("_"),weekdaysShort:"ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་".split("_"),weekdaysMin:"ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm",LLLL:"dddd, D MMMM YYYY, A h:mm"},calendar:{sameDay:"[དི་རིང] LT",nextDay:"[སང་ཉིན] LT",nextWeek:"[བདུན་ཕྲག་རྗེས་མ], LT",lastDay:"[ཁ་སང] LT",lastWeek:"[བདུན་ཕྲག་མཐའ་མ] dddd, LT",sameElse:"L"},relativeTime:{future:"%s ལ་",past:"%s སྔན་ལ",s:"ལམ་སང",m:"སྐར་མ་གཅིག",mm:"%d སྐར་མ",h:"ཆུ་ཚོད་གཅིག",hh:"%d ཆུ་ཚོད",d:"ཉིན་གཅིག",dd:"%d ཉིན་",M:"ཟླ་བ་གཅིག",MM:"%d ཟླ་བ",y:"ལོ་གཅིག",yy:"%d ལོ"},preparse:function(a){return a.replace(/[༡༢༣༤༥༦༧༨༩༠]/g,function(a){return og[a]})},postformat:function(a){return a.replace(/\d/g,function(a){return ng[a]})},meridiemParse:/མཚན་མོ|ཞོགས་ཀས|ཉིན་གུང|དགོང་དག|མཚན་མོ/,meridiemHour:function(a,b){return 12===a&&(a=0),"མཚན་མོ"===b&&a>=4||"ཉིན་གུང"===b&&5>a||"དགོང་དག"===b?a+12:a},meridiem:function(a,b,c){return 4>a?"མཚན་མོ":10>a?"ཞོགས་ཀས":17>a?"ཉིན་གུང":20>a?"དགོང་དག":"མཚན་མོ"},week:{dow:0,doy:6}}),bg.defineLocale("br",{months:"Genver_C'hwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu".split("_"),monthsShort:"Gen_C'hwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker".split("_"),weekdays:"Sul_Lun_Meurzh_Merc'her_Yaou_Gwener_Sadorn".split("_"),weekdaysShort:"Sul_Lun_Meu_Mer_Yao_Gwe_Sad".split("_"),weekdaysMin:"Su_Lu_Me_Mer_Ya_Gw_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"h[e]mm A",LTS:"h[e]mm:ss A",L:"DD/MM/YYYY",LL:"D [a viz] MMMM YYYY",LLL:"D [a viz] MMMM YYYY h[e]mm A",LLLL:"dddd, D [a viz] MMMM YYYY h[e]mm A"},calendar:{sameDay:"[Hiziv da] LT",nextDay:"[Warc'hoazh da] LT",nextWeek:"dddd [da] LT",lastDay:"[Dec'h da] LT",lastWeek:"dddd [paset da] LT",sameElse:"L"},relativeTime:{future:"a-benn %s",past:"%s 'zo",s:"un nebeud segondennoù",m:"ur vunutenn",mm:hd,h:"un eur",hh:"%d eur",d:"un devezh",dd:hd,M:"ur miz",MM:hd,y:"ur bloaz",yy:id},ordinalParse:/\d{1,2}(añ|vet)/,ordinal:function(a){var b=1===a?"añ":"vet";return a+b},week:{dow:1,doy:4}}),bg.defineLocale("bs",{months:"januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar".split("_"),monthsShort:"jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD. MM. YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedjelju] [u] LT";case 3:return"[u] [srijedu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[jučer u] LT",lastWeek:function(){switch(this.day()){case 0:case 3:return"[prošlu] dddd [u] LT";case 6:return"[prošle] [subote] [u] LT";case 1:case 2:case 4:case 5:return"[prošli] dddd [u] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"prije %s",s:"par sekundi",m:md,mm:md,h:md,hh:md,d:"dan",dd:md,M:"mjesec",MM:md,y:"godinu",yy:md},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}}),bg.defineLocale("ca",{months:"gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre".split("_"),monthsShort:"gen._febr._mar._abr._mai._jun._jul._ag._set._oct._nov._des.".split("_"),monthsParseExact:!0,weekdays:"diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte".split("_"),weekdaysShort:"dg._dl._dt._dc._dj._dv._ds.".split("_"),weekdaysMin:"Dg_Dl_Dt_Dc_Dj_Dv_Ds".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd D MMMM YYYY H:mm"},calendar:{sameDay:function(){return"[avui a "+(1!==this.hours()?"les":"la")+"] LT"},nextDay:function(){return"[demà a "+(1!==this.hours()?"les":"la")+"] LT"},nextWeek:function(){return"dddd [a "+(1!==this.hours()?"les":"la")+"] LT"},lastDay:function(){return"[ahir a "+(1!==this.hours()?"les":"la")+"] LT"},lastWeek:function(){return"[el] dddd [passat a "+(1!==this.hours()?"les":"la")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"fa %s",s:"uns segons",m:"un minut",mm:"%d minuts",h:"una hora",hh:"%d hores",d:"un dia",dd:"%d dies",M:"un mes",MM:"%d mesos",y:"un any",yy:"%d anys"},ordinalParse:/\d{1,2}(r|n|t|è|a)/,ordinal:function(a,b){var c=1===a?"r":2===a?"n":3===a?"r":4===a?"t":"è";return("w"===b||"W"===b)&&(c="a"),a+c},week:{dow:1,doy:4}}),"leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec".split("_")),qg="led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro".split("_"),rg=(bg.defineLocale("cs",{months:pg,monthsShort:qg,monthsParse:function(a,b){var c,d=[];for(c=0;12>c;c++)d[c]=new RegExp("^"+a[c]+"$|^"+b[c]+"$","i");return d}(pg,qg),shortMonthsParse:function(a){var b,c=[];for(b=0;12>b;b++)c[b]=new RegExp("^"+a[b]+"$","i");return c}(qg),longMonthsParse:function(a){var b,c=[];for(b=0;12>b;b++)c[b]=new RegExp("^"+a[b]+"$","i");return c}(pg),weekdays:"neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota".split("_"),weekdaysShort:"ne_po_út_st_čt_pá_so".split("_"),weekdaysMin:"ne_po_út_st_čt_pá_so".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd D. MMMM YYYY H:mm"},calendar:{sameDay:"[dnes v] LT",nextDay:"[zítra v] LT",nextWeek:function(){switch(this.day()){case 0:return"[v neděli v] LT";case 1:case 2:return"[v] dddd [v] LT";case 3:return"[ve středu v] LT";case 4:return"[ve čtvrtek v] LT";case 5:return"[v pátek v] LT";case 6:return"[v sobotu v] LT"}},lastDay:"[včera v] LT",lastWeek:function(){switch(this.day()){case 0:return"[minulou neděli v] LT";case 1:case 2:return"[minulé] dddd [v] LT";case 3:return"[minulou středu v] LT";case 4:case 5:return"[minulý] dddd [v] LT";case 6:return"[minulou sobotu v] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"před %s",s:od,m:od,mm:od,h:od,hh:od,d:od,dd:od,M:od,MM:od,y:od,yy:od},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),bg.defineLocale("cv",{months:"кӑрлач_нарӑс_пуш_ака_май_ҫӗртме_утӑ_ҫурла_авӑн_юпа_чӳк_раштав".split("_"),monthsShort:"кӑр_нар_пуш_ака_май_ҫӗр_утӑ_ҫур_авн_юпа_чӳк_раш".split("_"),weekdays:"вырсарникун_тунтикун_ытларикун_юнкун_кӗҫнерникун_эрнекун_шӑматкун".split("_"),weekdaysShort:"выр_тун_ытл_юн_кӗҫ_эрн_шӑм".split("_"),weekdaysMin:"вр_тн_ыт_юн_кҫ_эр_шм".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ]",LLL:"YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm",LLLL:"dddd, YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm"},calendar:{sameDay:"[Паян] LT [сехетре]",nextDay:"[Ыран] LT [сехетре]",lastDay:"[Ӗнер] LT [сехетре]",nextWeek:"[Ҫитес] dddd LT [сехетре]",lastWeek:"[Иртнӗ] dddd LT [сехетре]",sameElse:"L"},relativeTime:{future:function(a){var b=/сехет$/i.exec(a)?"рен":/ҫул$/i.exec(a)?"тан":"ран";return a+b},past:"%s каялла",s:"пӗр-ик ҫеккунт",m:"пӗр минут",mm:"%d минут",h:"пӗр сехет",hh:"%d сехет",d:"пӗр кун",dd:"%d кун",M:"пӗр уйӑх",MM:"%d уйӑх",y:"пӗр ҫул",yy:"%d ҫул"},ordinalParse:/\d{1,2}-мӗш/,ordinal:"%d-мӗш",week:{dow:1,doy:7}}),bg.defineLocale("cy",{months:"Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr".split("_"),monthsShort:"Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag".split("_"),weekdays:"Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn".split("_"),weekdaysShort:"Sul_Llun_Maw_Mer_Iau_Gwe_Sad".split("_"),weekdaysMin:"Su_Ll_Ma_Me_Ia_Gw_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Heddiw am] LT",nextDay:"[Yfory am] LT",nextWeek:"dddd [am] LT",lastDay:"[Ddoe am] LT",lastWeek:"dddd [diwethaf am] LT",sameElse:"L"},relativeTime:{future:"mewn %s",past:"%s yn ôl",s:"ychydig eiliadau",m:"munud",mm:"%d munud",h:"awr",hh:"%d awr",d:"diwrnod",dd:"%d diwrnod",M:"mis",MM:"%d mis",y:"blwyddyn",yy:"%d flynedd"},ordinalParse:/\d{1,2}(fed|ain|af|il|ydd|ed|eg)/,ordinal:function(a){var b=a,c="",d=["","af","il","ydd","ydd","ed","ed","ed","fed","fed","fed","eg","fed","eg","eg","fed","eg","eg","fed","eg","fed"];return b>20?c=40===b||50===b||60===b||80===b||100===b?"fed":"ain":b>0&&(c=d[b]),a+c},week:{dow:1,doy:4}}),bg.defineLocale("da",{months:"januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec".split("_"),weekdays:"søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag".split("_"),weekdaysShort:"søn_man_tir_ons_tor_fre_lør".split("_"),weekdaysMin:"sø_ma_ti_on_to_fr_lø".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd [d.] D. MMMM YYYY HH:mm"},calendar:{sameDay:"[I dag kl.] LT",nextDay:"[I morgen kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[I går kl.] LT",lastWeek:"[sidste] dddd [kl] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"%s siden",s:"få sekunder",m:"et minut",mm:"%d minutter",h:"en time",hh:"%d timer",d:"en dag",dd:"%d dage",M:"en måned",MM:"%d måneder",y:"et år",yy:"%d år"},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),bg.defineLocale("de-at",{months:"Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jän._Febr._Mrz._Apr._Mai_Jun._Jul._Aug._Sept._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So._Mo._Di._Mi._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},calendar:{sameDay:"[heute um] LT [Uhr]",sameElse:"L",nextDay:"[morgen um] LT [Uhr]",nextWeek:"dddd [um] LT [Uhr]",lastDay:"[gestern um] LT [Uhr]",lastWeek:"[letzten] dddd [um] LT [Uhr]"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",m:pd,mm:"%d Minuten",h:pd,hh:"%d Stunden",d:pd,dd:pd,M:pd,MM:pd,y:pd,yy:pd},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),bg.defineLocale("de",{months:"Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Febr._Mrz._Apr._Mai_Jun._Jul._Aug._Sept._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So._Mo._Di._Mi._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},calendar:{sameDay:"[heute um] LT [Uhr]",sameElse:"L",nextDay:"[morgen um] LT [Uhr]",nextWeek:"dddd [um] LT [Uhr]",lastDay:"[gestern um] LT [Uhr]",lastWeek:"[letzten] dddd [um] LT [Uhr]"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",m:qd,mm:"%d Minuten",h:qd,hh:"%d Stunden",d:qd,dd:qd,M:qd,MM:qd,y:qd,yy:qd},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),["ޖެނުއަރީ","ފެބްރުއަރީ","މާރިޗު","އޭޕްރީލު","މޭ","ޖޫން","ޖުލައި","އޯގަސްޓު","ސެޕްޓެމްބަރު","އޮކްޓޯބަރު","ނޮވެމްބަރު","ޑިސެމްބަރު"]),sg=["އާދިއްތަ","ހޯމަ","އަންގާރަ","ބުދަ","ބުރާސްފަތި","ހުކުރު","ހޮނިހިރު"],tg=(bg.defineLocale("dv",{months:rg,monthsShort:rg,weekdays:sg,weekdaysShort:sg,weekdaysMin:"އާދި_ހޯމަ_އަން_ބުދަ_ބުރާ_ހުކު_ހޮނި".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/M/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/މކ|މފ/,isPM:function(a){return"މފ"===a},meridiem:function(a,b,c){return 12>a?"މކ":"މފ"},calendar:{sameDay:"[މިއަދު] LT",nextDay:"[މާދަމާ] LT",nextWeek:"dddd LT",lastDay:"[އިއްޔެ] LT",lastWeek:"[ފާއިތުވި] dddd LT",sameElse:"L"},relativeTime:{future:"ތެރޭގައި %s",past:"ކުރިން %s",s:"ސިކުންތުކޮޅެއް",m:"މިނިޓެއް",mm:"މިނިޓު %d",h:"ގަޑިއިރެއް",hh:"ގަޑިއިރު %d",d:"ދުވަހެއް",dd:"ދުވަސް %d",M:"މަހެއް",MM:"މަސް %d",y:"އަހަރެއް",yy:"އަހަރު %d"},preparse:function(a){return a.replace(/،/g,",")},postformat:function(a){return a.replace(/,/g,"،")},week:{dow:7,doy:12}}),bg.defineLocale("el",{monthsNominativeEl:"Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος".split("_"),monthsGenitiveEl:"Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου".split("_"),months:function(a,b){return/D/.test(b.substring(0,b.indexOf("MMMM")))?this._monthsGenitiveEl[a.month()]:this._monthsNominativeEl[a.month()]},monthsShort:"Ιαν_Φεβ_Μαρ_Απρ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Νοε_Δεκ".split("_"),weekdays:"Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο".split("_"),weekdaysShort:"Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ".split("_"),weekdaysMin:"Κυ_Δε_Τρ_Τε_Πε_Πα_Σα".split("_"),meridiem:function(a,b,c){return a>11?c?"μμ":"ΜΜ":c?"πμ":"ΠΜ"},isPM:function(a){return"μ"===(a+"").toLowerCase()[0]},meridiemParse:/[ΠΜ]\.?Μ?\.?/i,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendarEl:{sameDay:"[Σήμερα {}] LT",nextDay:"[Αύριο {}] LT",nextWeek:"dddd [{}] LT",lastDay:"[Χθες {}] LT",lastWeek:function(){switch(this.day()){case 6:return"[το προηγούμενο] dddd [{}] LT";default:return"[την προηγούμενη] dddd [{}] LT"}},sameElse:"L"},calendar:function(a,b){var c=this._calendarEl[a],d=b&&b.hours();return w(c)&&(c=c.apply(b)),c.replace("{}",d%12===1?"στη":"στις")},relativeTime:{future:"σε %s",past:"%s πριν",s:"λίγα δευτερόλεπτα",m:"ένα λεπτό",mm:"%d λεπτά",h:"μία ώρα",hh:"%d ώρες",d:"μία μέρα",dd:"%d μέρες",M:"ένας μήνας",MM:"%d μήνες",y:"ένας χρόνος",yy:"%d χρόνια"},ordinalParse:/\d{1,2}η/,ordinal:"%dη",week:{dow:1,doy:4}}),bg.defineLocale("en-au",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},ordinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(a){var b=a%10,c=1===~~(a%100/10)?"th":1===b?"st":2===b?"nd":3===b?"rd":"th";return a+c},week:{dow:1,doy:4}}),bg.defineLocale("en-ca",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"YYYY-MM-DD",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},ordinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(a){var b=a%10,c=1===~~(a%100/10)?"th":1===b?"st":2===b?"nd":3===b?"rd":"th";return a+c}}),bg.defineLocale("en-gb",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},ordinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(a){var b=a%10,c=1===~~(a%100/10)?"th":1===b?"st":2===b?"nd":3===b?"rd":"th";return a+c},week:{dow:1,doy:4}}),bg.defineLocale("en-ie",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},ordinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(a){var b=a%10,c=1===~~(a%100/10)?"th":1===b?"st":2===b?"nd":3===b?"rd":"th";return a+c},week:{dow:1,doy:4}}),bg.defineLocale("en-nz",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months", +y:"a year",yy:"%d years"},ordinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(a){var b=a%10,c=1===~~(a%100/10)?"th":1===b?"st":2===b?"nd":3===b?"rd":"th";return a+c},week:{dow:1,doy:4}}),bg.defineLocale("eo",{months:"januaro_februaro_marto_aprilo_majo_junio_julio_aŭgusto_septembro_oktobro_novembro_decembro".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_aŭg_sep_okt_nov_dec".split("_"),weekdays:"Dimanĉo_Lundo_Mardo_Merkredo_Ĵaŭdo_Vendredo_Sabato".split("_"),weekdaysShort:"Dim_Lun_Mard_Merk_Ĵaŭ_Ven_Sab".split("_"),weekdaysMin:"Di_Lu_Ma_Me_Ĵa_Ve_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"D[-an de] MMMM, YYYY",LLL:"D[-an de] MMMM, YYYY HH:mm",LLLL:"dddd, [la] D[-an de] MMMM, YYYY HH:mm"},meridiemParse:/[ap]\.t\.m/i,isPM:function(a){return"p"===a.charAt(0).toLowerCase()},meridiem:function(a,b,c){return a>11?c?"p.t.m.":"P.T.M.":c?"a.t.m.":"A.T.M."},calendar:{sameDay:"[Hodiaŭ je] LT",nextDay:"[Morgaŭ je] LT",nextWeek:"dddd [je] LT",lastDay:"[Hieraŭ je] LT",lastWeek:"[pasinta] dddd [je] LT",sameElse:"L"},relativeTime:{future:"je %s",past:"antaŭ %s",s:"sekundoj",m:"minuto",mm:"%d minutoj",h:"horo",hh:"%d horoj",d:"tago",dd:"%d tagoj",M:"monato",MM:"%d monatoj",y:"jaro",yy:"%d jaroj"},ordinalParse:/\d{1,2}a/,ordinal:"%da",week:{dow:1,doy:7}}),"ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_")),ug="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),vg=(bg.defineLocale("es",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(a,b){return/-MMM-/.test(b)?ug[a.month()]:tg[a.month()]},monthsParseExact:!0,weekdays:"domingo_lunes_martes_miércoles_jueves_viernes_sábado".split("_"),weekdaysShort:"dom._lun._mar._mié._jue._vie._sáb.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY H:mm",LLLL:"dddd, D [de] MMMM [de] YYYY H:mm"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[mañana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un día",dd:"%d días",M:"un mes",MM:"%d meses",y:"un año",yy:"%d años"},ordinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}}),bg.defineLocale("et",{months:"jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember".split("_"),monthsShort:"jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets".split("_"),weekdays:"pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev".split("_"),weekdaysShort:"P_E_T_K_N_R_L".split("_"),weekdaysMin:"P_E_T_K_N_R_L".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[Täna,] LT",nextDay:"[Homme,] LT",nextWeek:"[Järgmine] dddd LT",lastDay:"[Eile,] LT",lastWeek:"[Eelmine] dddd LT",sameElse:"L"},relativeTime:{future:"%s pärast",past:"%s tagasi",s:rd,m:rd,mm:rd,h:rd,hh:rd,d:rd,dd:"%d päeva",M:rd,MM:rd,y:rd,yy:rd},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),bg.defineLocale("eu",{months:"urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua".split("_"),monthsShort:"urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.".split("_"),monthsParseExact:!0,weekdays:"igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata".split("_"),weekdaysShort:"ig._al._ar._az._og._ol._lr.".split("_"),weekdaysMin:"ig_al_ar_az_og_ol_lr".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY[ko] MMMM[ren] D[a]",LLL:"YYYY[ko] MMMM[ren] D[a] HH:mm",LLLL:"dddd, YYYY[ko] MMMM[ren] D[a] HH:mm",l:"YYYY-M-D",ll:"YYYY[ko] MMM D[a]",lll:"YYYY[ko] MMM D[a] HH:mm",llll:"ddd, YYYY[ko] MMM D[a] HH:mm"},calendar:{sameDay:"[gaur] LT[etan]",nextDay:"[bihar] LT[etan]",nextWeek:"dddd LT[etan]",lastDay:"[atzo] LT[etan]",lastWeek:"[aurreko] dddd LT[etan]",sameElse:"L"},relativeTime:{future:"%s barru",past:"duela %s",s:"segundo batzuk",m:"minutu bat",mm:"%d minutu",h:"ordu bat",hh:"%d ordu",d:"egun bat",dd:"%d egun",M:"hilabete bat",MM:"%d hilabete",y:"urte bat",yy:"%d urte"},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}}),{1:"۱",2:"۲",3:"۳",4:"۴",5:"۵",6:"۶",7:"۷",8:"۸",9:"۹",0:"۰"}),wg={"۱":"1","۲":"2","۳":"3","۴":"4","۵":"5","۶":"6","۷":"7","۸":"8","۹":"9","۰":"0"},xg=(bg.defineLocale("fa",{months:"ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر".split("_"),monthsShort:"ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر".split("_"),weekdays:"یک‌شنبه_دوشنبه_سه‌شنبه_چهارشنبه_پنج‌شنبه_جمعه_شنبه".split("_"),weekdaysShort:"یک‌شنبه_دوشنبه_سه‌شنبه_چهارشنبه_پنج‌شنبه_جمعه_شنبه".split("_"),weekdaysMin:"ی_د_س_چ_پ_ج_ش".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},meridiemParse:/قبل از ظهر|بعد از ظهر/,isPM:function(a){return/بعد از ظهر/.test(a)},meridiem:function(a,b,c){return 12>a?"قبل از ظهر":"بعد از ظهر"},calendar:{sameDay:"[امروز ساعت] LT",nextDay:"[فردا ساعت] LT",nextWeek:"dddd [ساعت] LT",lastDay:"[دیروز ساعت] LT",lastWeek:"dddd [پیش] [ساعت] LT",sameElse:"L"},relativeTime:{future:"در %s",past:"%s پیش",s:"چندین ثانیه",m:"یک دقیقه",mm:"%d دقیقه",h:"یک ساعت",hh:"%d ساعت",d:"یک روز",dd:"%d روز",M:"یک ماه",MM:"%d ماه",y:"یک سال",yy:"%d سال"},preparse:function(a){return a.replace(/[۰-۹]/g,function(a){return wg[a]}).replace(/،/g,",")},postformat:function(a){return a.replace(/\d/g,function(a){return vg[a]}).replace(/,/g,"،")},ordinalParse:/\d{1,2}م/,ordinal:"%dم",week:{dow:6,doy:12}}),"nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän".split(" ")),yg=["nolla","yhden","kahden","kolmen","neljän","viiden","kuuden",xg[7],xg[8],xg[9]],zg=(bg.defineLocale("fi",{months:"tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu".split("_"),monthsShort:"tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu".split("_"),weekdays:"sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai".split("_"),weekdaysShort:"su_ma_ti_ke_to_pe_la".split("_"),weekdaysMin:"su_ma_ti_ke_to_pe_la".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD.MM.YYYY",LL:"Do MMMM[ta] YYYY",LLL:"Do MMMM[ta] YYYY, [klo] HH.mm",LLLL:"dddd, Do MMMM[ta] YYYY, [klo] HH.mm",l:"D.M.YYYY",ll:"Do MMM YYYY",lll:"Do MMM YYYY, [klo] HH.mm",llll:"ddd, Do MMM YYYY, [klo] HH.mm"},calendar:{sameDay:"[tänään] [klo] LT",nextDay:"[huomenna] [klo] LT",nextWeek:"dddd [klo] LT",lastDay:"[eilen] [klo] LT",lastWeek:"[viime] dddd[na] [klo] LT",sameElse:"L"},relativeTime:{future:"%s päästä",past:"%s sitten",s:sd,m:sd,mm:sd,h:sd,hh:sd,d:sd,dd:sd,M:sd,MM:sd,y:sd,yy:sd},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),bg.defineLocale("fo",{months:"januar_februar_mars_apríl_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_"),weekdays:"sunnudagur_mánadagur_týsdagur_mikudagur_hósdagur_fríggjadagur_leygardagur".split("_"),weekdaysShort:"sun_mán_týs_mik_hós_frí_ley".split("_"),weekdaysMin:"su_má_tý_mi_hó_fr_le".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D. MMMM, YYYY HH:mm"},calendar:{sameDay:"[Í dag kl.] LT",nextDay:"[Í morgin kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[Í gjár kl.] LT",lastWeek:"[síðstu] dddd [kl] LT",sameElse:"L"},relativeTime:{future:"um %s",past:"%s síðani",s:"fá sekund",m:"ein minutt",mm:"%d minuttir",h:"ein tími",hh:"%d tímar",d:"ein dagur",dd:"%d dagar",M:"ein mánaði",MM:"%d mánaðir",y:"eitt ár",yy:"%d ár"},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),bg.defineLocale("fr-ca",{months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),monthsParseExact:!0,weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"Di_Lu_Ma_Me_Je_Ve_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd'hui à] LT",nextDay:"[Demain à] LT",nextWeek:"dddd [à] LT",lastDay:"[Hier à] LT",lastWeek:"dddd [dernier à] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},ordinalParse:/\d{1,2}(er|e)/,ordinal:function(a){return a+(1===a?"er":"e")}}),bg.defineLocale("fr-ch",{months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),monthsParseExact:!0,weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"Di_Lu_Ma_Me_Je_Ve_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd'hui à] LT",nextDay:"[Demain à] LT",nextWeek:"dddd [à] LT",lastDay:"[Hier à] LT",lastWeek:"dddd [dernier à] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},ordinalParse:/\d{1,2}(er|e)/,ordinal:function(a){return a+(1===a?"er":"e")},week:{dow:1,doy:4}}),bg.defineLocale("fr",{months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),monthsParseExact:!0,weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"Di_Lu_Ma_Me_Je_Ve_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd'hui à] LT",nextDay:"[Demain à] LT",nextWeek:"dddd [à] LT",lastDay:"[Hier à] LT",lastWeek:"dddd [dernier à] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},ordinalParse:/\d{1,2}(er|)/,ordinal:function(a){return a+(1===a?"er":"")},week:{dow:1,doy:4}}),"jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.".split("_")),Ag="jan_feb_mrt_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_"),Bg=(bg.defineLocale("fy",{months:"jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber".split("_"),monthsShort:function(a,b){return/-MMM-/.test(b)?Ag[a.month()]:zg[a.month()]},monthsParseExact:!0,weekdays:"snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon".split("_"),weekdaysShort:"si._mo._ti._wo._to._fr._so.".split("_"),weekdaysMin:"Si_Mo_Ti_Wo_To_Fr_So".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[hjoed om] LT",nextDay:"[moarn om] LT",nextWeek:"dddd [om] LT",lastDay:"[juster om] LT",lastWeek:"[ôfrûne] dddd [om] LT",sameElse:"L"},relativeTime:{future:"oer %s",past:"%s lyn",s:"in pear sekonden",m:"ien minút",mm:"%d minuten",h:"ien oere",hh:"%d oeren",d:"ien dei",dd:"%d dagen",M:"ien moanne",MM:"%d moannen",y:"ien jier",yy:"%d jierren"},ordinalParse:/\d{1,2}(ste|de)/,ordinal:function(a){return a+(1===a||8===a||a>=20?"ste":"de")},week:{dow:1,doy:4}}),["Am Faoilleach","An Gearran","Am Màrt","An Giblean","An Cèitean","An t-Ògmhios","An t-Iuchar","An Lùnastal","An t-Sultain","An Dàmhair","An t-Samhain","An Dùbhlachd"]),Cg=["Faoi","Gear","Màrt","Gibl","Cèit","Ògmh","Iuch","Lùn","Sult","Dàmh","Samh","Dùbh"],Dg=["Didòmhnaich","Diluain","Dimàirt","Diciadain","Diardaoin","Dihaoine","Disathairne"],Eg=["Did","Dil","Dim","Dic","Dia","Dih","Dis"],Fg=["Dò","Lu","Mà","Ci","Ar","Ha","Sa"],Gg=(bg.defineLocale("gd",{months:Bg,monthsShort:Cg,monthsParseExact:!0,weekdays:Dg,weekdaysShort:Eg,weekdaysMin:Fg,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[An-diugh aig] LT",nextDay:"[A-màireach aig] LT",nextWeek:"dddd [aig] LT",lastDay:"[An-dè aig] LT",lastWeek:"dddd [seo chaidh] [aig] LT",sameElse:"L"},relativeTime:{future:"ann an %s",past:"bho chionn %s",s:"beagan diogan",m:"mionaid",mm:"%d mionaidean",h:"uair",hh:"%d uairean",d:"latha",dd:"%d latha",M:"mìos",MM:"%d mìosan",y:"bliadhna",yy:"%d bliadhna"},ordinalParse:/\d{1,2}(d|na|mh)/,ordinal:function(a){var b=1===a?"d":a%10===2?"na":"mh";return a+b},week:{dow:1,doy:4}}),bg.defineLocale("gl",{months:"Xaneiro_Febreiro_Marzo_Abril_Maio_Xuño_Xullo_Agosto_Setembro_Outubro_Novembro_Decembro".split("_"),monthsShort:"Xan._Feb._Mar._Abr._Mai._Xuñ._Xul._Ago._Set._Out._Nov._Dec.".split("_"),monthsParseExact:!0,weekdays:"Domingo_Luns_Martes_Mércores_Xoves_Venres_Sábado".split("_"),weekdaysShort:"Dom._Lun._Mar._Mér._Xov._Ven._Sáb.".split("_"),weekdaysMin:"Do_Lu_Ma_Mé_Xo_Ve_Sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd D MMMM YYYY H:mm"},calendar:{sameDay:function(){return"[hoxe "+(1!==this.hours()?"ás":"á")+"] LT"},nextDay:function(){return"[mañá "+(1!==this.hours()?"ás":"á")+"] LT"},nextWeek:function(){return"dddd ["+(1!==this.hours()?"ás":"a")+"] LT"},lastDay:function(){return"[onte "+(1!==this.hours()?"á":"a")+"] LT"},lastWeek:function(){return"[o] dddd [pasado "+(1!==this.hours()?"ás":"a")+"] LT"},sameElse:"L"},relativeTime:{future:function(a){return"uns segundos"===a?"nuns segundos":"en "+a},past:"hai %s",s:"uns segundos",m:"un minuto",mm:"%d minutos",h:"unha hora",hh:"%d horas",d:"un día",dd:"%d días",M:"un mes",MM:"%d meses",y:"un ano",yy:"%d anos"},ordinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:7}}),bg.defineLocale("he",{months:"ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר".split("_"),monthsShort:"ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳".split("_"),weekdays:"ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת".split("_"),weekdaysShort:"א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳".split("_"),weekdaysMin:"א_ב_ג_ד_ה_ו_ש".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [ב]MMMM YYYY",LLL:"D [ב]MMMM YYYY HH:mm",LLLL:"dddd, D [ב]MMMM YYYY HH:mm",l:"D/M/YYYY",ll:"D MMM YYYY",lll:"D MMM YYYY HH:mm",llll:"ddd, D MMM YYYY HH:mm"},calendar:{sameDay:"[היום ב־]LT",nextDay:"[מחר ב־]LT",nextWeek:"dddd [בשעה] LT",lastDay:"[אתמול ב־]LT",lastWeek:"[ביום] dddd [האחרון בשעה] LT",sameElse:"L"},relativeTime:{future:"בעוד %s",past:"לפני %s",s:"מספר שניות",m:"דקה",mm:"%d דקות",h:"שעה",hh:function(a){return 2===a?"שעתיים":a+" שעות"},d:"יום",dd:function(a){return 2===a?"יומיים":a+" ימים"},M:"חודש",MM:function(a){return 2===a?"חודשיים":a+" חודשים"},y:"שנה",yy:function(a){return 2===a?"שנתיים":a%10===0&&10!==a?a+" שנה":a+" שנים"}},meridiemParse:/אחה"צ|לפנה"צ|אחרי הצהריים|לפני הצהריים|לפנות בוקר|בבוקר|בערב/i,isPM:function(a){return/^(אחה"צ|אחרי הצהריים|בערב)$/.test(a)},meridiem:function(a,b,c){return 5>a?"לפנות בוקר":10>a?"בבוקר":12>a?c?'לפנה"צ':"לפני הצהריים":18>a?c?'אחה"צ':"אחרי הצהריים":"בערב"}}),{1:"१",2:"२",3:"३",4:"४",5:"५",6:"६",7:"७",8:"८",9:"९",0:"०"}),Hg={"१":"1","२":"2","३":"3","४":"4","५":"5","६":"6","७":"7","८":"8","९":"9","०":"0"},Ig=(bg.defineLocale("hi",{months:"जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर".split("_"),monthsShort:"जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.".split("_"),monthsParseExact:!0,weekdays:"रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार".split("_"),weekdaysShort:"रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि".split("_"),weekdaysMin:"र_सो_मं_बु_गु_शु_श".split("_"),longDateFormat:{LT:"A h:mm बजे",LTS:"A h:mm:ss बजे",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm बजे",LLLL:"dddd, D MMMM YYYY, A h:mm बजे"},calendar:{sameDay:"[आज] LT",nextDay:"[कल] LT",nextWeek:"dddd, LT",lastDay:"[कल] LT",lastWeek:"[पिछले] dddd, LT",sameElse:"L"},relativeTime:{future:"%s में",past:"%s पहले",s:"कुछ ही क्षण",m:"एक मिनट",mm:"%d मिनट",h:"एक घंटा",hh:"%d घंटे",d:"एक दिन",dd:"%d दिन",M:"एक महीने",MM:"%d महीने",y:"एक वर्ष",yy:"%d वर्ष"},preparse:function(a){return a.replace(/[१२३४५६७८९०]/g,function(a){return Hg[a]})},postformat:function(a){return a.replace(/\d/g,function(a){return Gg[a]})},meridiemParse:/रात|सुबह|दोपहर|शाम/,meridiemHour:function(a,b){return 12===a&&(a=0),"रात"===b?4>a?a:a+12:"सुबह"===b?a:"दोपहर"===b?a>=10?a:a+12:"शाम"===b?a+12:void 0},meridiem:function(a,b,c){return 4>a?"रात":10>a?"सुबह":17>a?"दोपहर":20>a?"शाम":"रात"},week:{dow:0,doy:6}}),bg.defineLocale("hr",{months:{format:"siječnja_veljače_ožujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca".split("_"),standalone:"siječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac".split("_")},monthsShort:"sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.".split("_"),monthsParseExact:!0,weekdays:"nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD. MM. YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedjelju] [u] LT";case 3:return"[u] [srijedu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[jučer u] LT",lastWeek:function(){switch(this.day()){case 0:case 3:return"[prošlu] dddd [u] LT";case 6:return"[prošle] [subote] [u] LT";case 1:case 2:case 4:case 5:return"[prošli] dddd [u] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"prije %s",s:"par sekundi",m:ud,mm:ud,h:ud,hh:ud,d:"dan",dd:ud,M:"mjesec",MM:ud,y:"godinu",yy:ud},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}}),"vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton".split(" ")),Jg=(bg.defineLocale("hu",{months:"január_február_március_április_május_június_július_augusztus_szeptember_október_november_december".split("_"),monthsShort:"jan_feb_márc_ápr_máj_jún_júl_aug_szept_okt_nov_dec".split("_"),weekdays:"vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat".split("_"),weekdaysShort:"vas_hét_kedd_sze_csüt_pén_szo".split("_"),weekdaysMin:"v_h_k_sze_cs_p_szo".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"YYYY.MM.DD.",LL:"YYYY. MMMM D.",LLL:"YYYY. MMMM D. H:mm",LLLL:"YYYY. MMMM D., dddd H:mm"},meridiemParse:/de|du/i,isPM:function(a){return"u"===a.charAt(1).toLowerCase()},meridiem:function(a,b,c){return 12>a?c===!0?"de":"DE":c===!0?"du":"DU"},calendar:{sameDay:"[ma] LT[-kor]",nextDay:"[holnap] LT[-kor]",nextWeek:function(){return wd.call(this,!0)},lastDay:"[tegnap] LT[-kor]",lastWeek:function(){return wd.call(this,!1)},sameElse:"L"},relativeTime:{future:"%s múlva",past:"%s",s:vd,m:vd,mm:vd,h:vd,hh:vd,d:vd,dd:vd,M:vd,MM:vd,y:vd,yy:vd},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}}),bg.defineLocale("hy-am",{months:{format:"հունվարի_փետրվարի_մարտի_ապրիլի_մայիսի_հունիսի_հուլիսի_օգոստոսի_սեպտեմբերի_հոկտեմբերի_նոյեմբերի_դեկտեմբերի".split("_"),standalone:"հունվար_փետրվար_մարտ_ապրիլ_մայիս_հունիս_հուլիս_օգոստոս_սեպտեմբեր_հոկտեմբեր_նոյեմբեր_դեկտեմբեր".split("_")},monthsShort:"հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ".split("_"),weekdays:"կիրակի_երկուշաբթի_երեքշաբթի_չորեքշաբթի_հինգշաբթի_ուրբաթ_շաբաթ".split("_"),weekdaysShort:"կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ".split("_"),weekdaysMin:"կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY թ.",LLL:"D MMMM YYYY թ., HH:mm",LLLL:"dddd, D MMMM YYYY թ., HH:mm"},calendar:{sameDay:"[այսօր] LT",nextDay:"[վաղը] LT",lastDay:"[երեկ] LT",nextWeek:function(){return"dddd [օրը ժամը] LT"},lastWeek:function(){return"[անցած] dddd [օրը ժամը] LT"},sameElse:"L"},relativeTime:{future:"%s հետո",past:"%s առաջ",s:"մի քանի վայրկյան",m:"րոպե",mm:"%d րոպե",h:"ժամ",hh:"%d ժամ",d:"օր",dd:"%d օր",M:"ամիս",MM:"%d ամիս",y:"տարի",yy:"%d տարի"},meridiemParse:/գիշերվա|առավոտվա|ցերեկվա|երեկոյան/,isPM:function(a){return/^(ցերեկվա|երեկոյան)$/.test(a)},meridiem:function(a){return 4>a?"գիշերվա":12>a?"առավոտվա":17>a?"ցերեկվա":"երեկոյան"},ordinalParse:/\d{1,2}|\d{1,2}-(ին|րդ)/,ordinal:function(a,b){switch(b){case"DDD":case"w":case"W":case"DDDo":return 1===a?a+"-ին":a+"-րդ";default:return a}},week:{dow:1,doy:7}}),bg.defineLocale("id",{months:"Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember".split("_"),monthsShort:"Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nov_Des".split("_"),weekdays:"Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu".split("_"),weekdaysShort:"Min_Sen_Sel_Rab_Kam_Jum_Sab".split("_"),weekdaysMin:"Mg_Sn_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/pagi|siang|sore|malam/,meridiemHour:function(a,b){return 12===a&&(a=0),"pagi"===b?a:"siang"===b?a>=11?a:a+12:"sore"===b||"malam"===b?a+12:void 0},meridiem:function(a,b,c){return 11>a?"pagi":15>a?"siang":19>a?"sore":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Besok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kemarin pukul] LT",lastWeek:"dddd [lalu pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lalu",s:"beberapa detik",m:"semenit",mm:"%d menit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:1,doy:7}}),bg.defineLocale("is",{months:"janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember".split("_"),monthsShort:"jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des".split("_"),weekdays:"sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur".split("_"),weekdaysShort:"sun_mán_þri_mið_fim_fös_lau".split("_"),weekdaysMin:"Su_Má_Þr_Mi_Fi_Fö_La".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] H:mm",LLLL:"dddd, D. MMMM YYYY [kl.] H:mm"},calendar:{sameDay:"[í dag kl.] LT",nextDay:"[á morgun kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[í gær kl.] LT",lastWeek:"[síðasta] dddd [kl.] LT",sameElse:"L"},relativeTime:{future:"eftir %s",past:"fyrir %s síðan",s:yd,m:yd,mm:yd,h:"klukkustund",hh:yd,d:yd,dd:yd,M:yd,MM:yd,y:yd,yy:yd},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),bg.defineLocale("it",{months:"gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre".split("_"),monthsShort:"gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic".split("_"),weekdays:"Domenica_Lunedì_Martedì_Mercoledì_Giovedì_Venerdì_Sabato".split("_"),weekdaysShort:"Dom_Lun_Mar_Mer_Gio_Ven_Sab".split("_"),weekdaysMin:"Do_Lu_Ma_Me_Gi_Ve_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Oggi alle] LT",nextDay:"[Domani alle] LT",nextWeek:"dddd [alle] LT",lastDay:"[Ieri alle] LT",lastWeek:function(){switch(this.day()){case 0:return"[la scorsa] dddd [alle] LT";default:return"[lo scorso] dddd [alle] LT"}},sameElse:"L"},relativeTime:{future:function(a){return(/^[0-9].+$/.test(a)?"tra":"in")+" "+a},past:"%s fa",s:"alcuni secondi",m:"un minuto",mm:"%d minuti",h:"un'ora",hh:"%d ore",d:"un giorno",dd:"%d giorni",M:"un mese",MM:"%d mesi",y:"un anno",yy:"%d anni"},ordinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}}),bg.defineLocale("ja",{months:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日".split("_"),weekdaysShort:"日_月_火_水_木_金_土".split("_"),weekdaysMin:"日_月_火_水_木_金_土".split("_"),longDateFormat:{LT:"Ah時m分",LTS:"Ah時m分s秒",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日Ah時m分",LLLL:"YYYY年M月D日Ah時m分 dddd"},meridiemParse:/午前|午後/i,isPM:function(a){return"午後"===a},meridiem:function(a,b,c){return 12>a?"午前":"午後"},calendar:{sameDay:"[今日] LT",nextDay:"[明日] LT",nextWeek:"[来週]dddd LT",lastDay:"[昨日] LT",lastWeek:"[前週]dddd LT",sameElse:"L"},ordinalParse:/\d{1,2}日/,ordinal:function(a,b){switch(b){case"d":case"D":case"DDD":return a+"日";default:return a}},relativeTime:{future:"%s後",past:"%s前",s:"数秒",m:"1分",mm:"%d分",h:"1時間",hh:"%d時間",d:"1日",dd:"%d日",M:"1ヶ月",MM:"%dヶ月",y:"1年",yy:"%d年"}}),bg.defineLocale("jv",{months:"Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_Nopember_Desember".split("_"),monthsShort:"Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nop_Des".split("_"),weekdays:"Minggu_Senen_Seloso_Rebu_Kemis_Jemuwah_Septu".split("_"),weekdaysShort:"Min_Sen_Sel_Reb_Kem_Jem_Sep".split("_"),weekdaysMin:"Mg_Sn_Sl_Rb_Km_Jm_Sp".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/enjing|siyang|sonten|ndalu/,meridiemHour:function(a,b){return 12===a&&(a=0),"enjing"===b?a:"siyang"===b?a>=11?a:a+12:"sonten"===b||"ndalu"===b?a+12:void 0},meridiem:function(a,b,c){return 11>a?"enjing":15>a?"siyang":19>a?"sonten":"ndalu"},calendar:{sameDay:"[Dinten puniko pukul] LT",nextDay:"[Mbenjang pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kala wingi pukul] LT",lastWeek:"dddd [kepengker pukul] LT",sameElse:"L"},relativeTime:{future:"wonten ing %s",past:"%s ingkang kepengker",s:"sawetawis detik",m:"setunggal menit",mm:"%d menit",h:"setunggal jam",hh:"%d jam",d:"sedinten",dd:"%d dinten",M:"sewulan",MM:"%d wulan",y:"setaun",yy:"%d taun"},week:{dow:1,doy:7}}),bg.defineLocale("ka",{months:{standalone:"იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი".split("_"),format:"იანვარს_თებერვალს_მარტს_აპრილის_მაისს_ივნისს_ივლისს_აგვისტს_სექტემბერს_ოქტომბერს_ნოემბერს_დეკემბერს".split("_")},monthsShort:"იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ".split("_"),weekdays:{standalone:"კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი".split("_"),format:"კვირას_ორშაბათს_სამშაბათს_ოთხშაბათს_ხუთშაბათს_პარასკევს_შაბათს".split("_"),isFormat:/(წინა|შემდეგ)/},weekdaysShort:"კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ".split("_"),weekdaysMin:"კვ_ორ_სა_ოთ_ხუ_პა_შა".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[დღეს] LT[-ზე]",nextDay:"[ხვალ] LT[-ზე]",lastDay:"[გუშინ] LT[-ზე]",nextWeek:"[შემდეგ] dddd LT[-ზე]",lastWeek:"[წინა] dddd LT-ზე",sameElse:"L"},relativeTime:{future:function(a){return/(წამი|წუთი|საათი|წელი)/.test(a)?a.replace(/ი$/,"ში"):a+"ში"},past:function(a){return/(წამი|წუთი|საათი|დღე|თვე)/.test(a)?a.replace(/(ი|ე)$/,"ის წინ"):/წელი/.test(a)?a.replace(/წელი$/,"წლის წინ"):void 0},s:"რამდენიმე წამი",m:"წუთი",mm:"%d წუთი",h:"საათი",hh:"%d საათი",d:"დღე",dd:"%d დღე",M:"თვე",MM:"%d თვე",y:"წელი",yy:"%d წელი"},ordinalParse:/0|1-ლი|მე-\d{1,2}|\d{1,2}-ე/,ordinal:function(a){return 0===a?a:1===a?a+"-ლი":20>a||100>=a&&a%20===0||a%100===0?"მე-"+a:a+"-ე"},week:{dow:1,doy:7}}),{0:"-ші",1:"-ші",2:"-ші",3:"-ші",4:"-ші",5:"-ші",6:"-шы",7:"-ші",8:"-ші",9:"-шы",10:"-шы",20:"-шы",30:"-шы",40:"-шы",50:"-ші",60:"-шы",70:"-ші",80:"-ші",90:"-шы",100:"-ші"}),Kg=(bg.defineLocale("kk",{months:"қаңтар_ақпан_наурыз_сәуір_мамыр_маусым_шілде_тамыз_қыркүйек_қазан_қараша_желтоқсан".split("_"),monthsShort:"қаң_ақп_нау_сәу_мам_мау_шіл_там_қыр_қаз_қар_жел".split("_"),weekdays:"жексенбі_дүйсенбі_сейсенбі_сәрсенбі_бейсенбі_жұма_сенбі".split("_"),weekdaysShort:"жек_дүй_сей_сәр_бей_жұм_сен".split("_"),weekdaysMin:"жк_дй_сй_ср_бй_жм_сн".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Бүгін сағат] LT",nextDay:"[Ертең сағат] LT",nextWeek:"dddd [сағат] LT",lastDay:"[Кеше сағат] LT",lastWeek:"[Өткен аптаның] dddd [сағат] LT",sameElse:"L"},relativeTime:{future:"%s ішінде",past:"%s бұрын",s:"бірнеше секунд",m:"бір минут",mm:"%d минут",h:"бір сағат",hh:"%d сағат",d:"бір күн",dd:"%d күн",M:"бір ай",MM:"%d ай",y:"бір жыл",yy:"%d жыл"},ordinalParse:/\d{1,2}-(ші|шы)/,ordinal:function(a){var b=a%10,c=a>=100?100:null;return a+(Jg[a]||Jg[b]||Jg[c])},week:{dow:1,doy:7}}),bg.defineLocale("km",{months:"មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ".split("_"),monthsShort:"មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ".split("_"),weekdays:"អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍".split("_"),weekdaysShort:"អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍".split("_"),weekdaysMin:"អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[ថ្ងៃនេះ ម៉ោង] LT",nextDay:"[ស្អែក ម៉ោង] LT",nextWeek:"dddd [ម៉ោង] LT",lastDay:"[ម្សិលមិញ ម៉ោង] LT",lastWeek:"dddd [សប្តាហ៍មុន] [ម៉ោង] LT",sameElse:"L"},relativeTime:{future:"%sទៀត",past:"%sមុន",s:"ប៉ុន្មានវិនាទី",m:"មួយនាទី",mm:"%d នាទី",h:"មួយម៉ោង",hh:"%d ម៉ោង",d:"មួយថ្ងៃ",dd:"%d ថ្ងៃ",M:"មួយខែ",MM:"%d ខែ",y:"មួយឆ្នាំ",yy:"%d ឆ្នាំ"},week:{dow:1,doy:4}}),bg.defineLocale("ko",{months:"1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월".split("_"),monthsShort:"1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월".split("_"),weekdays:"일요일_월요일_화요일_수요일_목요일_금요일_토요일".split("_"),weekdaysShort:"일_월_화_수_목_금_토".split("_"),weekdaysMin:"일_월_화_수_목_금_토".split("_"),longDateFormat:{LT:"A h시 m분",LTS:"A h시 m분 s초",L:"YYYY.MM.DD",LL:"YYYY년 MMMM D일",LLL:"YYYY년 MMMM D일 A h시 m분",LLLL:"YYYY년 MMMM D일 dddd A h시 m분"},calendar:{sameDay:"오늘 LT",nextDay:"내일 LT",nextWeek:"dddd LT",lastDay:"어제 LT",lastWeek:"지난주 dddd LT",sameElse:"L"},relativeTime:{future:"%s 후",past:"%s 전",s:"몇 초",ss:"%d초",m:"일분",mm:"%d분",h:"한 시간",hh:"%d시간",d:"하루",dd:"%d일",M:"한 달",MM:"%d달",y:"일 년",yy:"%d년"},ordinalParse:/\d{1,2}일/,ordinal:"%d일",meridiemParse:/오전|오후/,isPM:function(a){return"오후"===a},meridiem:function(a,b,c){return 12>a?"오전":"오후"}}),{0:"-чү",1:"-чи",2:"-чи",3:"-чү",4:"-чү",5:"-чи",6:"-чы",7:"-чи",8:"-чи",9:"-чу",10:"-чу",20:"-чы",30:"-чу",40:"-чы",50:"-чү",60:"-чы",70:"-чи",80:"-чи",90:"-чу",100:"-чү"}),Lg=(bg.defineLocale("ky",{months:"январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь".split("_"),monthsShort:"янв_фев_март_апр_май_июнь_июль_авг_сен_окт_ноя_дек".split("_"),weekdays:"Жекшемби_Дүйшөмбү_Шейшемби_Шаршемби_Бейшемби_Жума_Ишемби".split("_"),weekdaysShort:"Жек_Дүй_Шей_Шар_Бей_Жум_Ише".split("_"),weekdaysMin:"Жк_Дй_Шй_Шр_Бй_Жм_Иш".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Бүгүн саат] LT",nextDay:"[Эртең саат] LT",nextWeek:"dddd [саат] LT",lastDay:"[Кече саат] LT",lastWeek:"[Өткен аптанын] dddd [күнү] [саат] LT", +sameElse:"L"},relativeTime:{future:"%s ичинде",past:"%s мурун",s:"бирнече секунд",m:"бир мүнөт",mm:"%d мүнөт",h:"бир саат",hh:"%d саат",d:"бир күн",dd:"%d күн",M:"бир ай",MM:"%d ай",y:"бир жыл",yy:"%d жыл"},ordinalParse:/\d{1,2}-(чи|чы|чү|чу)/,ordinal:function(a){var b=a%10,c=a>=100?100:null;return a+(Kg[a]||Kg[b]||Kg[c])},week:{dow:1,doy:7}}),bg.defineLocale("lb",{months:"Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg".split("_"),weekdaysShort:"So._Mé._Dë._Më._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mé_Dë_Më_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm [Auer]",LTS:"H:mm:ss [Auer]",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm [Auer]",LLLL:"dddd, D. MMMM YYYY H:mm [Auer]"},calendar:{sameDay:"[Haut um] LT",sameElse:"L",nextDay:"[Muer um] LT",nextWeek:"dddd [um] LT",lastDay:"[Gëschter um] LT",lastWeek:function(){switch(this.day()){case 2:case 4:return"[Leschten] dddd [um] LT";default:return"[Leschte] dddd [um] LT"}}},relativeTime:{future:Ad,past:Bd,s:"e puer Sekonnen",m:zd,mm:"%d Minutten",h:zd,hh:"%d Stonnen",d:zd,dd:"%d Deeg",M:zd,MM:"%d Méint",y:zd,yy:"%d Joer"},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),bg.defineLocale("lo",{months:"ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ".split("_"),monthsShort:"ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ".split("_"),weekdays:"ອາທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ".split("_"),weekdaysShort:"ທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ".split("_"),weekdaysMin:"ທ_ຈ_ອຄ_ພ_ພຫ_ສກ_ສ".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"ວັນdddd D MMMM YYYY HH:mm"},meridiemParse:/ຕອນເຊົ້າ|ຕອນແລງ/,isPM:function(a){return"ຕອນແລງ"===a},meridiem:function(a,b,c){return 12>a?"ຕອນເຊົ້າ":"ຕອນແລງ"},calendar:{sameDay:"[ມື້ນີ້ເວລາ] LT",nextDay:"[ມື້ອື່ນເວລາ] LT",nextWeek:"[ວັນ]dddd[ໜ້າເວລາ] LT",lastDay:"[ມື້ວານນີ້ເວລາ] LT",lastWeek:"[ວັນ]dddd[ແລ້ວນີ້ເວລາ] LT",sameElse:"L"},relativeTime:{future:"ອີກ %s",past:"%sຜ່ານມາ",s:"ບໍ່ເທົ່າໃດວິນາທີ",m:"1 ນາທີ",mm:"%d ນາທີ",h:"1 ຊົ່ວໂມງ",hh:"%d ຊົ່ວໂມງ",d:"1 ມື້",dd:"%d ມື້",M:"1 ເດືອນ",MM:"%d ເດືອນ",y:"1 ປີ",yy:"%d ປີ"},ordinalParse:/(ທີ່)\d{1,2}/,ordinal:function(a){return"ທີ່"+a}}),{m:"minutė_minutės_minutę",mm:"minutės_minučių_minutes",h:"valanda_valandos_valandą",hh:"valandos_valandų_valandas",d:"diena_dienos_dieną",dd:"dienos_dienų_dienas",M:"mėnuo_mėnesio_mėnesį",MM:"mėnesiai_mėnesių_mėnesius",y:"metai_metų_metus",yy:"metai_metų_metus"}),Mg=(bg.defineLocale("lt",{months:{format:"sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio".split("_"),standalone:"sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjūtis_rugsėjis_spalis_lapkritis_gruodis".split("_")},monthsShort:"sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd".split("_"),weekdays:{format:"sekmadienį_pirmadienį_antradienį_trečiadienį_ketvirtadienį_penktadienį_šeštadienį".split("_"),standalone:"sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis".split("_"),isFormat:/dddd HH:mm/},weekdaysShort:"Sek_Pir_Ant_Tre_Ket_Pen_Šeš".split("_"),weekdaysMin:"S_P_A_T_K_Pn_Š".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY [m.] MMMM D [d.]",LLL:"YYYY [m.] MMMM D [d.], HH:mm [val.]",LLLL:"YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]",l:"YYYY-MM-DD",ll:"YYYY [m.] MMMM D [d.]",lll:"YYYY [m.] MMMM D [d.], HH:mm [val.]",llll:"YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]"},calendar:{sameDay:"[Šiandien] LT",nextDay:"[Rytoj] LT",nextWeek:"dddd LT",lastDay:"[Vakar] LT",lastWeek:"[Praėjusį] dddd LT",sameElse:"L"},relativeTime:{future:"po %s",past:"prieš %s",s:Dd,m:Ed,mm:Hd,h:Ed,hh:Hd,d:Ed,dd:Hd,M:Ed,MM:Hd,y:Ed,yy:Hd},ordinalParse:/\d{1,2}-oji/,ordinal:function(a){return a+"-oji"},week:{dow:1,doy:4}}),{m:"minūtes_minūtēm_minūte_minūtes".split("_"),mm:"minūtes_minūtēm_minūte_minūtes".split("_"),h:"stundas_stundām_stunda_stundas".split("_"),hh:"stundas_stundām_stunda_stundas".split("_"),d:"dienas_dienām_diena_dienas".split("_"),dd:"dienas_dienām_diena_dienas".split("_"),M:"mēneša_mēnešiem_mēnesis_mēneši".split("_"),MM:"mēneša_mēnešiem_mēnesis_mēneši".split("_"),y:"gada_gadiem_gads_gadi".split("_"),yy:"gada_gadiem_gads_gadi".split("_")}),Ng=(bg.defineLocale("lv",{months:"janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris".split("_"),monthsShort:"jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec".split("_"),weekdays:"svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena".split("_"),weekdaysShort:"Sv_P_O_T_C_Pk_S".split("_"),weekdaysMin:"Sv_P_O_T_C_Pk_S".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY.",LL:"YYYY. [gada] D. MMMM",LLL:"YYYY. [gada] D. MMMM, HH:mm",LLLL:"YYYY. [gada] D. MMMM, dddd, HH:mm"},calendar:{sameDay:"[Šodien pulksten] LT",nextDay:"[Rīt pulksten] LT",nextWeek:"dddd [pulksten] LT",lastDay:"[Vakar pulksten] LT",lastWeek:"[Pagājušā] dddd [pulksten] LT",sameElse:"L"},relativeTime:{future:"pēc %s",past:"pirms %s",s:Ld,m:Kd,mm:Jd,h:Kd,hh:Jd,d:Kd,dd:Jd,M:Kd,MM:Jd,y:Kd,yy:Jd},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),{words:{m:["jedan minut","jednog minuta"],mm:["minut","minuta","minuta"],h:["jedan sat","jednog sata"],hh:["sat","sata","sati"],dd:["dan","dana","dana"],MM:["mjesec","mjeseca","mjeseci"],yy:["godina","godine","godina"]},correctGrammaticalCase:function(a,b){return 1===a?b[0]:a>=2&&4>=a?b[1]:b[2]},translate:function(a,b,c){var d=Ng.words[c];return 1===c.length?b?d[0]:d[1]:a+" "+Ng.correctGrammaticalCase(a,d)}}),Og=(bg.defineLocale("me",{months:"januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar".split("_"),monthsShort:"jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD. MM. YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sjutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedjelju] [u] LT";case 3:return"[u] [srijedu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[juče u] LT",lastWeek:function(){var a=["[prošle] [nedjelje] [u] LT","[prošlog] [ponedjeljka] [u] LT","[prošlog] [utorka] [u] LT","[prošle] [srijede] [u] LT","[prošlog] [četvrtka] [u] LT","[prošlog] [petka] [u] LT","[prošle] [subote] [u] LT"];return a[this.day()]},sameElse:"L"},relativeTime:{future:"za %s",past:"prije %s",s:"nekoliko sekundi",m:Ng.translate,mm:Ng.translate,h:Ng.translate,hh:Ng.translate,d:"dan",dd:Ng.translate,M:"mjesec",MM:Ng.translate,y:"godinu",yy:Ng.translate},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}}),bg.defineLocale("mk",{months:"јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември".split("_"),monthsShort:"јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек".split("_"),weekdays:"недела_понеделник_вторник_среда_четврток_петок_сабота".split("_"),weekdaysShort:"нед_пон_вто_сре_чет_пет_саб".split("_"),weekdaysMin:"нe_пo_вт_ср_че_пе_сa".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"D.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[Денес во] LT",nextDay:"[Утре во] LT",nextWeek:"[Во] dddd [во] LT",lastDay:"[Вчера во] LT",lastWeek:function(){switch(this.day()){case 0:case 3:case 6:return"[Изминатата] dddd [во] LT";case 1:case 2:case 4:case 5:return"[Изминатиот] dddd [во] LT"}},sameElse:"L"},relativeTime:{future:"после %s",past:"пред %s",s:"неколку секунди",m:"минута",mm:"%d минути",h:"час",hh:"%d часа",d:"ден",dd:"%d дена",M:"месец",MM:"%d месеци",y:"година",yy:"%d години"},ordinalParse:/\d{1,2}-(ев|ен|ти|ви|ри|ми)/,ordinal:function(a){var b=a%10,c=a%100;return 0===a?a+"-ев":0===c?a+"-ен":c>10&&20>c?a+"-ти":1===b?a+"-ви":2===b?a+"-ри":7===b||8===b?a+"-ми":a+"-ти"},week:{dow:1,doy:7}}),bg.defineLocale("ml",{months:"ജനുവരി_ഫെബ്രുവരി_മാർച്ച്_ഏപ്രിൽ_മേയ്_ജൂൺ_ജൂലൈ_ഓഗസ്റ്റ്_സെപ്റ്റംബർ_ഒക്ടോബർ_നവംബർ_ഡിസംബർ".split("_"),monthsShort:"ജനു._ഫെബ്രു._മാർ._ഏപ്രി._മേയ്_ജൂൺ_ജൂലൈ._ഓഗ._സെപ്റ്റ._ഒക്ടോ._നവം._ഡിസം.".split("_"),monthsParseExact:!0,weekdays:"ഞായറാഴ്ച_തിങ്കളാഴ്ച_ചൊവ്വാഴ്ച_ബുധനാഴ്ച_വ്യാഴാഴ്ച_വെള്ളിയാഴ്ച_ശനിയാഴ്ച".split("_"),weekdaysShort:"ഞായർ_തിങ്കൾ_ചൊവ്വ_ബുധൻ_വ്യാഴം_വെള്ളി_ശനി".split("_"),weekdaysMin:"ഞാ_തി_ചൊ_ബു_വ്യാ_വെ_ശ".split("_"),longDateFormat:{LT:"A h:mm -നു",LTS:"A h:mm:ss -നു",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm -നു",LLLL:"dddd, D MMMM YYYY, A h:mm -നു"},calendar:{sameDay:"[ഇന്ന്] LT",nextDay:"[നാളെ] LT",nextWeek:"dddd, LT",lastDay:"[ഇന്നലെ] LT",lastWeek:"[കഴിഞ്ഞ] dddd, LT",sameElse:"L"},relativeTime:{future:"%s കഴിഞ്ഞ്",past:"%s മുൻപ്",s:"അൽപ നിമിഷങ്ങൾ",m:"ഒരു മിനിറ്റ്",mm:"%d മിനിറ്റ്",h:"ഒരു മണിക്കൂർ",hh:"%d മണിക്കൂർ",d:"ഒരു ദിവസം",dd:"%d ദിവസം",M:"ഒരു മാസം",MM:"%d മാസം",y:"ഒരു വർഷം",yy:"%d വർഷം"},meridiemParse:/രാത്രി|രാവിലെ|ഉച്ച കഴിഞ്ഞ്|വൈകുന്നേരം|രാത്രി/i,meridiemHour:function(a,b){return 12===a&&(a=0),"രാത്രി"===b&&a>=4||"ഉച്ച കഴിഞ്ഞ്"===b||"വൈകുന്നേരം"===b?a+12:a},meridiem:function(a,b,c){return 4>a?"രാത്രി":12>a?"രാവിലെ":17>a?"ഉച്ച കഴിഞ്ഞ്":20>a?"വൈകുന്നേരം":"രാത്രി"}}),{1:"१",2:"२",3:"३",4:"४",5:"५",6:"६",7:"७",8:"८",9:"९",0:"०"}),Pg={"१":"1","२":"2","३":"3","४":"4","५":"5","६":"6","७":"7","८":"8","९":"9","०":"0"},Qg=(bg.defineLocale("mr",{months:"जानेवारी_फेब्रुवारी_मार्च_एप्रिल_मे_जून_जुलै_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर".split("_"),monthsShort:"जाने._फेब्रु._मार्च._एप्रि._मे._जून._जुलै._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.".split("_"),monthsParseExact:!0,weekdays:"रविवार_सोमवार_मंगळवार_बुधवार_गुरूवार_शुक्रवार_शनिवार".split("_"),weekdaysShort:"रवि_सोम_मंगळ_बुध_गुरू_शुक्र_शनि".split("_"),weekdaysMin:"र_सो_मं_बु_गु_शु_श".split("_"),longDateFormat:{LT:"A h:mm वाजता",LTS:"A h:mm:ss वाजता",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm वाजता",LLLL:"dddd, D MMMM YYYY, A h:mm वाजता"},calendar:{sameDay:"[आज] LT",nextDay:"[उद्या] LT",nextWeek:"dddd, LT",lastDay:"[काल] LT",lastWeek:"[मागील] dddd, LT",sameElse:"L"},relativeTime:{future:"%sमध्ये",past:"%sपूर्वी",s:Md,m:Md,mm:Md,h:Md,hh:Md,d:Md,dd:Md,M:Md,MM:Md,y:Md,yy:Md},preparse:function(a){return a.replace(/[१२३४५६७८९०]/g,function(a){return Pg[a]})},postformat:function(a){return a.replace(/\d/g,function(a){return Og[a]})},meridiemParse:/रात्री|सकाळी|दुपारी|सायंकाळी/,meridiemHour:function(a,b){return 12===a&&(a=0),"रात्री"===b?4>a?a:a+12:"सकाळी"===b?a:"दुपारी"===b?a>=10?a:a+12:"सायंकाळी"===b?a+12:void 0},meridiem:function(a,b,c){return 4>a?"रात्री":10>a?"सकाळी":17>a?"दुपारी":20>a?"सायंकाळी":"रात्री"},week:{dow:0,doy:6}}),bg.defineLocale("ms-my",{months:"Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember".split("_"),monthsShort:"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis".split("_"),weekdays:"Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu".split("_"),weekdaysShort:"Ahd_Isn_Sel_Rab_Kha_Jum_Sab".split("_"),weekdaysMin:"Ah_Is_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/pagi|tengahari|petang|malam/,meridiemHour:function(a,b){return 12===a&&(a=0),"pagi"===b?a:"tengahari"===b?a>=11?a:a+12:"petang"===b||"malam"===b?a+12:void 0},meridiem:function(a,b,c){return 11>a?"pagi":15>a?"tengahari":19>a?"petang":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Esok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kelmarin pukul] LT",lastWeek:"dddd [lepas pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lepas",s:"beberapa saat",m:"seminit",mm:"%d minit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:1,doy:7}}),bg.defineLocale("ms",{months:"Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember".split("_"),monthsShort:"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis".split("_"),weekdays:"Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu".split("_"),weekdaysShort:"Ahd_Isn_Sel_Rab_Kha_Jum_Sab".split("_"),weekdaysMin:"Ah_Is_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/pagi|tengahari|petang|malam/,meridiemHour:function(a,b){return 12===a&&(a=0),"pagi"===b?a:"tengahari"===b?a>=11?a:a+12:"petang"===b||"malam"===b?a+12:void 0},meridiem:function(a,b,c){return 11>a?"pagi":15>a?"tengahari":19>a?"petang":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Esok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kelmarin pukul] LT",lastWeek:"dddd [lepas pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lepas",s:"beberapa saat",m:"seminit",mm:"%d minit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:1,doy:7}}),{1:"၁",2:"၂",3:"၃",4:"၄",5:"၅",6:"၆",7:"၇",8:"၈",9:"၉",0:"၀"}),Rg={"၁":"1","၂":"2","၃":"3","၄":"4","၅":"5","၆":"6","၇":"7","၈":"8","၉":"9","၀":"0"},Sg=(bg.defineLocale("my",{months:"ဇန်နဝါရီ_ဖေဖော်ဝါရီ_မတ်_ဧပြီ_မေ_ဇွန်_ဇူလိုင်_သြဂုတ်_စက်တင်ဘာ_အောက်တိုဘာ_နိုဝင်ဘာ_ဒီဇင်ဘာ".split("_"),monthsShort:"ဇန်_ဖေ_မတ်_ပြီ_မေ_ဇွန်_လိုင်_သြ_စက်_အောက်_နို_ဒီ".split("_"),weekdays:"တနင်္ဂနွေ_တနင်္လာ_အင်္ဂါ_ဗုဒ္ဓဟူး_ကြာသပတေး_သောကြာ_စနေ".split("_"),weekdaysShort:"နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ".split("_"),weekdaysMin:"နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[ယနေ.] LT [မှာ]",nextDay:"[မနက်ဖြန်] LT [မှာ]",nextWeek:"dddd LT [မှာ]",lastDay:"[မနေ.က] LT [မှာ]",lastWeek:"[ပြီးခဲ့သော] dddd LT [မှာ]",sameElse:"L"},relativeTime:{future:"လာမည့် %s မှာ",past:"လွန်ခဲ့သော %s က",s:"စက္ကန်.အနည်းငယ်",m:"တစ်မိနစ်",mm:"%d မိနစ်",h:"တစ်နာရီ",hh:"%d နာရီ",d:"တစ်ရက်",dd:"%d ရက်",M:"တစ်လ",MM:"%d လ",y:"တစ်နှစ်",yy:"%d နှစ်"},preparse:function(a){return a.replace(/[၁၂၃၄၅၆၇၈၉၀]/g,function(a){return Rg[a]})},postformat:function(a){return a.replace(/\d/g,function(a){return Qg[a]})},week:{dow:1,doy:4}}),bg.defineLocale("nb",{months:"januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan._feb._mars_april_mai_juni_juli_aug._sep._okt._nov._des.".split("_"),monthsParseExact:!0,weekdays:"søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag".split("_"),weekdaysShort:"sø._ma._ti._on._to._fr._lø.".split("_"),weekdaysMin:"sø_ma_ti_on_to_fr_lø".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] HH:mm",LLLL:"dddd D. MMMM YYYY [kl.] HH:mm"},calendar:{sameDay:"[i dag kl.] LT",nextDay:"[i morgen kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[i går kl.] LT",lastWeek:"[forrige] dddd [kl.] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"%s siden",s:"noen sekunder",m:"ett minutt",mm:"%d minutter",h:"en time",hh:"%d timer",d:"en dag",dd:"%d dager",M:"en måned",MM:"%d måneder",y:"ett år",yy:"%d år"},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),{1:"१",2:"२",3:"३",4:"४",5:"५",6:"६",7:"७",8:"८",9:"९",0:"०"}),Tg={"१":"1","२":"2","३":"3","४":"4","५":"5","६":"6","७":"7","८":"8","९":"9","०":"0"},Ug=(bg.defineLocale("ne",{months:"जनवरी_फेब्रुवरी_मार्च_अप्रिल_मई_जुन_जुलाई_अगष्ट_सेप्टेम्बर_अक्टोबर_नोभेम्बर_डिसेम्बर".split("_"),monthsShort:"जन._फेब्रु._मार्च_अप्रि._मई_जुन_जुलाई._अग._सेप्ट._अक्टो._नोभे._डिसे.".split("_"),monthsParseExact:!0,weekdays:"आइतबार_सोमबार_मङ्गलबार_बुधबार_बिहिबार_शुक्रबार_शनिबार".split("_"),weekdaysShort:"आइत._सोम._मङ्गल._बुध._बिहि._शुक्र._शनि.".split("_"),weekdaysMin:"आ._सो._मं._बु._बि._शु._श.".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"Aको h:mm बजे",LTS:"Aको h:mm:ss बजे",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, Aको h:mm बजे",LLLL:"dddd, D MMMM YYYY, Aको h:mm बजे"},preparse:function(a){return a.replace(/[१२३४५६७८९०]/g,function(a){return Tg[a]})},postformat:function(a){return a.replace(/\d/g,function(a){return Sg[a]})},meridiemParse:/राति|बिहान|दिउँसो|साँझ/,meridiemHour:function(a,b){return 12===a&&(a=0),"राति"===b?4>a?a:a+12:"बिहान"===b?a:"दिउँसो"===b?a>=10?a:a+12:"साँझ"===b?a+12:void 0},meridiem:function(a,b,c){return 3>a?"राति":12>a?"बिहान":16>a?"दिउँसो":20>a?"साँझ":"राति"},calendar:{sameDay:"[आज] LT",nextDay:"[भोलि] LT",nextWeek:"[आउँदो] dddd[,] LT",lastDay:"[हिजो] LT",lastWeek:"[गएको] dddd[,] LT",sameElse:"L"},relativeTime:{future:"%sमा",past:"%s अगाडि",s:"केही क्षण",m:"एक मिनेट",mm:"%d मिनेट",h:"एक घण्टा",hh:"%d घण्टा",d:"एक दिन",dd:"%d दिन",M:"एक महिना",MM:"%d महिना",y:"एक बर्ष",yy:"%d बर्ष"},week:{dow:0,doy:6}}),"jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.".split("_")),Vg="jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec".split("_"),Wg=(bg.defineLocale("nl",{months:"januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december".split("_"),monthsShort:function(a,b){return/-MMM-/.test(b)?Vg[a.month()]:Ug[a.month()]},monthsParseExact:!0,weekdays:"zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag".split("_"),weekdaysShort:"zo._ma._di._wo._do._vr._za.".split("_"),weekdaysMin:"Zo_Ma_Di_Wo_Do_Vr_Za".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[vandaag om] LT",nextDay:"[morgen om] LT",nextWeek:"dddd [om] LT",lastDay:"[gisteren om] LT",lastWeek:"[afgelopen] dddd [om] LT",sameElse:"L"},relativeTime:{future:"over %s",past:"%s geleden",s:"een paar seconden",m:"één minuut",mm:"%d minuten",h:"één uur",hh:"%d uur",d:"één dag",dd:"%d dagen",M:"één maand",MM:"%d maanden",y:"één jaar",yy:"%d jaar"},ordinalParse:/\d{1,2}(ste|de)/,ordinal:function(a){return a+(1===a||8===a||a>=20?"ste":"de")},week:{dow:1,doy:4}}),bg.defineLocale("nn",{months:"januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_"),weekdays:"sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag".split("_"),weekdaysShort:"sun_mån_tys_ons_tor_fre_lau".split("_"),weekdaysMin:"su_må_ty_on_to_fr_lø".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] H:mm",LLLL:"dddd D. MMMM YYYY [kl.] HH:mm"},calendar:{sameDay:"[I dag klokka] LT",nextDay:"[I morgon klokka] LT",nextWeek:"dddd [klokka] LT",lastDay:"[I går klokka] LT",lastWeek:"[Føregåande] dddd [klokka] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"%s sidan",s:"nokre sekund",m:"eit minutt",mm:"%d minutt",h:"ein time",hh:"%d timar",d:"ein dag",dd:"%d dagar",M:"ein månad",MM:"%d månader",y:"eit år",yy:"%d år"},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),{1:"੧",2:"੨",3:"੩",4:"੪",5:"੫",6:"੬",7:"੭",8:"੮",9:"੯",0:"੦"}),Xg={"੧":"1","੨":"2","੩":"3","੪":"4","੫":"5","੬":"6","੭":"7","੮":"8","੯":"9","੦":"0"},Yg=(bg.defineLocale("pa-in",{months:"ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ".split("_"),monthsShort:"ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ".split("_"),weekdays:"ਐਤਵਾਰ_ਸੋਮਵਾਰ_ਮੰਗਲਵਾਰ_ਬੁਧਵਾਰ_ਵੀਰਵਾਰ_ਸ਼ੁੱਕਰਵਾਰ_ਸ਼ਨੀਚਰਵਾਰ".split("_"),weekdaysShort:"ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ".split("_"),weekdaysMin:"ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ".split("_"),longDateFormat:{LT:"A h:mm ਵਜੇ",LTS:"A h:mm:ss ਵਜੇ",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm ਵਜੇ",LLLL:"dddd, D MMMM YYYY, A h:mm ਵਜੇ"},calendar:{sameDay:"[ਅਜ] LT",nextDay:"[ਕਲ] LT",nextWeek:"dddd, LT",lastDay:"[ਕਲ] LT",lastWeek:"[ਪਿਛਲੇ] dddd, LT",sameElse:"L"},relativeTime:{future:"%s ਵਿੱਚ",past:"%s ਪਿਛਲੇ",s:"ਕੁਝ ਸਕਿੰਟ",m:"ਇਕ ਮਿੰਟ",mm:"%d ਮਿੰਟ",h:"ਇੱਕ ਘੰਟਾ",hh:"%d ਘੰਟੇ",d:"ਇੱਕ ਦਿਨ",dd:"%d ਦਿਨ",M:"ਇੱਕ ਮਹੀਨਾ",MM:"%d ਮਹੀਨੇ",y:"ਇੱਕ ਸਾਲ",yy:"%d ਸਾਲ"},preparse:function(a){return a.replace(/[੧੨੩੪੫੬੭੮੯੦]/g,function(a){return Xg[a]})},postformat:function(a){return a.replace(/\d/g,function(a){return Wg[a]})},meridiemParse:/ਰਾਤ|ਸਵੇਰ|ਦੁਪਹਿਰ|ਸ਼ਾਮ/,meridiemHour:function(a,b){return 12===a&&(a=0),"ਰਾਤ"===b?4>a?a:a+12:"ਸਵੇਰ"===b?a:"ਦੁਪਹਿਰ"===b?a>=10?a:a+12:"ਸ਼ਾਮ"===b?a+12:void 0},meridiem:function(a,b,c){return 4>a?"ਰਾਤ":10>a?"ਸਵੇਰ":17>a?"ਦੁਪਹਿਰ":20>a?"ਸ਼ਾਮ":"ਰਾਤ"},week:{dow:0,doy:6}}),"styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień".split("_")),Zg="stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia".split("_"),$g=(bg.defineLocale("pl",{months:function(a,b){return""===b?"("+Zg[a.month()]+"|"+Yg[a.month()]+")":/D MMMM/.test(b)?Zg[a.month()]:Yg[a.month()]},monthsShort:"sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru".split("_"),weekdays:"niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota".split("_"),weekdaysShort:"nie_pon_wt_śr_czw_pt_sb".split("_"),weekdaysMin:"Nd_Pn_Wt_Śr_Cz_Pt_So".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Dziś o] LT",nextDay:"[Jutro o] LT",nextWeek:"[W] dddd [o] LT",lastDay:"[Wczoraj o] LT",lastWeek:function(){switch(this.day()){case 0:return"[W zeszłą niedzielę o] LT";case 3:return"[W zeszłą środę o] LT";case 6:return"[W zeszłą sobotę o] LT";default:return"[W zeszły] dddd [o] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"%s temu",s:"kilka sekund",m:Od,mm:Od,h:Od,hh:Od,d:"1 dzień",dd:"%d dni",M:"miesiąc",MM:Od,y:"rok",yy:Od},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),bg.defineLocale("pt-br",{months:"Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro".split("_"),monthsShort:"Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez".split("_"),weekdays:"Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado".split("_"),weekdaysShort:"Dom_Seg_Ter_Qua_Qui_Sex_Sáb".split("_"),weekdaysMin:"Dom_2ª_3ª_4ª_5ª_6ª_Sáb".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY [às] HH:mm",LLLL:"dddd, D [de] MMMM [de] YYYY [às] HH:mm"},calendar:{sameDay:"[Hoje às] LT",nextDay:"[Amanhã às] LT",nextWeek:"dddd [às] LT",lastDay:"[Ontem às] LT",lastWeek:function(){return 0===this.day()||6===this.day()?"[Último] dddd [às] LT":"[Última] dddd [às] LT"},sameElse:"L"},relativeTime:{future:"em %s",past:"%s atrás",s:"poucos segundos",m:"um minuto",mm:"%d minutos",h:"uma hora",hh:"%d horas",d:"um dia",dd:"%d dias",M:"um mês",MM:"%d meses",y:"um ano",yy:"%d anos"},ordinalParse:/\d{1,2}º/,ordinal:"%dº"}),bg.defineLocale("pt",{months:"Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro".split("_"),monthsShort:"Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez".split("_"),weekdays:"Domingo_Segunda-Feira_Terça-Feira_Quarta-Feira_Quinta-Feira_Sexta-Feira_Sábado".split("_"),weekdaysShort:"Dom_Seg_Ter_Qua_Qui_Sex_Sáb".split("_"),weekdaysMin:"Dom_2ª_3ª_4ª_5ª_6ª_Sáb".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY HH:mm",LLLL:"dddd, D [de] MMMM [de] YYYY HH:mm"},calendar:{sameDay:"[Hoje às] LT",nextDay:"[Amanhã às] LT",nextWeek:"dddd [às] LT",lastDay:"[Ontem às] LT",lastWeek:function(){return 0===this.day()||6===this.day()?"[Último] dddd [às] LT":"[Última] dddd [às] LT"},sameElse:"L"},relativeTime:{future:"em %s",past:"há %s",s:"segundos",m:"um minuto",mm:"%d minutos",h:"uma hora",hh:"%d horas",d:"um dia",dd:"%d dias",M:"um mês",MM:"%d meses",y:"um ano",yy:"%d anos"},ordinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}}),bg.defineLocale("ro",{months:"ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie".split("_"),monthsShort:"ian._febr._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"duminică_luni_marți_miercuri_joi_vineri_sâmbătă".split("_"),weekdaysShort:"Dum_Lun_Mar_Mie_Joi_Vin_Sâm".split("_"),weekdaysMin:"Du_Lu_Ma_Mi_Jo_Vi_Sâ".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[azi la] LT",nextDay:"[mâine la] LT",nextWeek:"dddd [la] LT",lastDay:"[ieri la] LT",lastWeek:"[fosta] dddd [la] LT",sameElse:"L"},relativeTime:{future:"peste %s",past:"%s în urmă",s:"câteva secunde",m:"un minut",mm:Pd,h:"o oră",hh:Pd,d:"o zi",dd:Pd,M:"o lună",MM:Pd,y:"un an",yy:Pd},week:{dow:1,doy:7}}),[/^янв/i,/^фев/i,/^мар/i,/^апр/i,/^ма[йя]/i,/^июн/i,/^июл/i,/^авг/i,/^сен/i,/^окт/i,/^ноя/i,/^дек/i]),_g=(bg.defineLocale("ru",{months:{format:"января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря".split("_"),standalone:"январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь".split("_")},monthsShort:{format:"янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.".split("_"),standalone:"янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.".split("_")},weekdays:{standalone:"воскресенье_понедельник_вторник_среда_четверг_пятница_суббота".split("_"),format:"воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу".split("_"),isFormat:/\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?\] ?dddd/},weekdaysShort:"вс_пн_вт_ср_чт_пт_сб".split("_"),weekdaysMin:"вс_пн_вт_ср_чт_пт_сб".split("_"),monthsParse:$g,longMonthsParse:$g,shortMonthsParse:$g,monthsRegex:/^(сентябр[яь]|октябр[яь]|декабр[яь]|феврал[яь]|январ[яь]|апрел[яь]|августа?|ноябр[яь]|сент\.|февр\.|нояб\.|июнь|янв.|июль|дек.|авг.|апр.|марта|мар[.т]|окт.|июн[яь]|июл[яь]|ма[яй])/i,monthsShortRegex:/^(сентябр[яь]|октябр[яь]|декабр[яь]|феврал[яь]|январ[яь]|апрел[яь]|августа?|ноябр[яь]|сент\.|февр\.|нояб\.|июнь|янв.|июль|дек.|авг.|апр.|марта|мар[.т]|окт.|июн[яь]|июл[яь]|ма[яй])/i,monthsStrictRegex:/^(сентябр[яь]|октябр[яь]|декабр[яь]|феврал[яь]|январ[яь]|апрел[яь]|августа?|ноябр[яь]|марта?|июн[яь]|июл[яь]|ма[яй])/i,monthsShortStrictRegex:/^(нояб\.|февр\.|сент\.|июль|янв\.|июн[яь]|мар[.т]|авг\.|апр\.|окт\.|дек\.|ма[яй])/i,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY г.",LLL:"D MMMM YYYY г., HH:mm",LLLL:"dddd, D MMMM YYYY г., HH:mm"},calendar:{sameDay:"[Сегодня в] LT",nextDay:"[Завтра в] LT",lastDay:"[Вчера в] LT",nextWeek:function(a){if(a.week()===this.week())return 2===this.day()?"[Во] dddd [в] LT":"[В] dddd [в] LT";switch(this.day()){case 0:return"[В следующее] dddd [в] LT";case 1:case 2:case 4:return"[В следующий] dddd [в] LT";case 3:case 5:case 6:return"[В следующую] dddd [в] LT"}},lastWeek:function(a){if(a.week()===this.week())return 2===this.day()?"[Во] dddd [в] LT":"[В] dddd [в] LT";switch(this.day()){case 0:return"[В прошлое] dddd [в] LT";case 1:case 2:case 4:return"[В прошлый] dddd [в] LT";case 3:case 5:case 6:return"[В прошлую] dddd [в] LT"}},sameElse:"L"},relativeTime:{future:"через %s",past:"%s назад",s:"несколько секунд",m:Rd,mm:Rd,h:"час",hh:Rd,d:"день",dd:Rd,M:"месяц",MM:Rd,y:"год",yy:Rd},meridiemParse:/ночи|утра|дня|вечера/i,isPM:function(a){return/^(дня|вечера)$/.test(a)},meridiem:function(a,b,c){return 4>a?"ночи":12>a?"утра":17>a?"дня":"вечера"},ordinalParse:/\d{1,2}-(й|го|я)/,ordinal:function(a,b){switch(b){case"M":case"d":case"DDD":return a+"-й";case"D":return a+"-го";case"w":case"W":return a+"-я";default:return a}},week:{dow:1,doy:7}}),bg.defineLocale("se",{months:"ođđajagemánnu_guovvamánnu_njukčamánnu_cuoŋománnu_miessemánnu_geassemánnu_suoidnemánnu_borgemánnu_čakčamánnu_golggotmánnu_skábmamánnu_juovlamánnu".split("_"),monthsShort:"ođđj_guov_njuk_cuo_mies_geas_suoi_borg_čakč_golg_skáb_juov".split("_"),weekdays:"sotnabeaivi_vuossárga_maŋŋebárga_gaskavahkku_duorastat_bearjadat_lávvardat".split("_"),weekdaysShort:"sotn_vuos_maŋ_gask_duor_bear_láv".split("_"),weekdaysMin:"s_v_m_g_d_b_L".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"MMMM D. [b.] YYYY",LLL:"MMMM D. [b.] YYYY [ti.] HH:mm",LLLL:"dddd, MMMM D. [b.] YYYY [ti.] HH:mm"},calendar:{sameDay:"[otne ti] LT",nextDay:"[ihttin ti] LT",nextWeek:"dddd [ti] LT",lastDay:"[ikte ti] LT",lastWeek:"[ovddit] dddd [ti] LT",sameElse:"L"},relativeTime:{future:"%s geažes",past:"maŋit %s",s:"moadde sekunddat",m:"okta minuhta",mm:"%d minuhtat",h:"okta diimmu",hh:"%d diimmut",d:"okta beaivi",dd:"%d beaivvit",M:"okta mánnu",MM:"%d mánut",y:"okta jahki",yy:"%d jagit"},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),bg.defineLocale("si",{months:"ජනවාරි_පෙබරවාරි_මාර්තු_අප්‍රේල්_මැයි_ජූනි_ජූලි_අගෝස්තු_සැප්තැම්බර්_ඔක්තෝබර්_නොවැම්බර්_දෙසැම්බර්".split("_"),monthsShort:"ජන_පෙබ_මාර්_අප්_මැයි_ජූනි_ජූලි_අගෝ_සැප්_ඔක්_නොවැ_දෙසැ".split("_"),weekdays:"ඉරිදා_සඳුදා_අඟහරුවාදා_බදාදා_බ්‍රහස්පතින්දා_සිකුරාදා_සෙනසුරාදා".split("_"),weekdaysShort:"ඉරි_සඳු_අඟ_බදා_බ්‍රහ_සිකු_සෙන".split("_"),weekdaysMin:"ඉ_ස_අ_බ_බ්‍ර_සි_සෙ".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"a h:mm",LTS:"a h:mm:ss",L:"YYYY/MM/DD",LL:"YYYY MMMM D",LLL:"YYYY MMMM D, a h:mm",LLLL:"YYYY MMMM D [වැනි] dddd, a h:mm:ss"},calendar:{sameDay:"[අද] LT[ට]",nextDay:"[හෙට] LT[ට]",nextWeek:"dddd LT[ට]",lastDay:"[ඊයේ] LT[ට]",lastWeek:"[පසුගිය] dddd LT[ට]",sameElse:"L"},relativeTime:{future:"%sකින්",past:"%sකට පෙර",s:"තත්පර කිහිපය",m:"මිනිත්තුව",mm:"මිනිත්තු %d",h:"පැය",hh:"පැය %d",d:"දිනය",dd:"දින %d",M:"මාසය",MM:"මාස %d",y:"වසර",yy:"වසර %d"},ordinalParse:/\d{1,2} වැනි/,ordinal:function(a){return a+" වැනි"},meridiemParse:/පෙර වරු|පස් වරු|පෙ.ව|ප.ව./,isPM:function(a){return"ප.ව."===a||"පස් වරු"===a},meridiem:function(a,b,c){return a>11?c?"ප.ව.":"පස් වරු":c?"පෙ.ව.":"පෙර වරු"}}),"január_február_marec_apríl_máj_jún_júl_august_september_október_november_december".split("_")),ah="jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec".split("_"),bh=(bg.defineLocale("sk",{months:_g,monthsShort:ah,weekdays:"nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota".split("_"),weekdaysShort:"ne_po_ut_st_št_pi_so".split("_"),weekdaysMin:"ne_po_ut_st_št_pi_so".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd D. MMMM YYYY H:mm"},calendar:{sameDay:"[dnes o] LT",nextDay:"[zajtra o] LT",nextWeek:function(){switch(this.day()){case 0:return"[v nedeľu o] LT";case 1:case 2:return"[v] dddd [o] LT";case 3:return"[v stredu o] LT";case 4:return"[vo štvrtok o] LT";case 5:return"[v piatok o] LT";case 6:return"[v sobotu o] LT"}},lastDay:"[včera o] LT",lastWeek:function(){switch(this.day()){case 0:return"[minulú nedeľu o] LT";case 1:case 2:return"[minulý] dddd [o] LT";case 3:return"[minulú stredu o] LT";case 4:case 5:return"[minulý] dddd [o] LT";case 6:return"[minulú sobotu o] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"pred %s",s:Td,m:Td,mm:Td,h:Td,hh:Td,d:Td,dd:Td,M:Td,MM:Td,y:Td,yy:Td},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),bg.defineLocale("sl",{months:"januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december".split("_"),monthsShort:"jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota".split("_"),weekdaysShort:"ned._pon._tor._sre._čet._pet._sob.".split("_"),weekdaysMin:"ne_po_to_sr_če_pe_so".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD. MM. YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danes ob] LT",nextDay:"[jutri ob] LT",nextWeek:function(){switch(this.day()){case 0:return"[v] [nedeljo] [ob] LT"; +case 3:return"[v] [sredo] [ob] LT";case 6:return"[v] [soboto] [ob] LT";case 1:case 2:case 4:case 5:return"[v] dddd [ob] LT"}},lastDay:"[včeraj ob] LT",lastWeek:function(){switch(this.day()){case 0:return"[prejšnjo] [nedeljo] [ob] LT";case 3:return"[prejšnjo] [sredo] [ob] LT";case 6:return"[prejšnjo] [soboto] [ob] LT";case 1:case 2:case 4:case 5:return"[prejšnji] dddd [ob] LT"}},sameElse:"L"},relativeTime:{future:"čez %s",past:"pred %s",s:Ud,m:Ud,mm:Ud,h:Ud,hh:Ud,d:Ud,dd:Ud,M:Ud,MM:Ud,y:Ud,yy:Ud},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}}),bg.defineLocale("sq",{months:"Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor".split("_"),monthsShort:"Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj".split("_"),weekdays:"E Diel_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë".split("_"),weekdaysShort:"Die_Hën_Mar_Mër_Enj_Pre_Sht".split("_"),weekdaysMin:"D_H_Ma_Më_E_P_Sh".split("_"),weekdaysParseExact:!0,meridiemParse:/PD|MD/,isPM:function(a){return"M"===a.charAt(0)},meridiem:function(a,b,c){return 12>a?"PD":"MD"},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Sot në] LT",nextDay:"[Nesër në] LT",nextWeek:"dddd [në] LT",lastDay:"[Dje në] LT",lastWeek:"dddd [e kaluar në] LT",sameElse:"L"},relativeTime:{future:"në %s",past:"%s më parë",s:"disa sekonda",m:"një minutë",mm:"%d minuta",h:"një orë",hh:"%d orë",d:"një ditë",dd:"%d ditë",M:"një muaj",MM:"%d muaj",y:"një vit",yy:"%d vite"},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),{words:{m:["један минут","једне минуте"],mm:["минут","минуте","минута"],h:["један сат","једног сата"],hh:["сат","сата","сати"],dd:["дан","дана","дана"],MM:["месец","месеца","месеци"],yy:["година","године","година"]},correctGrammaticalCase:function(a,b){return 1===a?b[0]:a>=2&&4>=a?b[1]:b[2]},translate:function(a,b,c){var d=bh.words[c];return 1===c.length?b?d[0]:d[1]:a+" "+bh.correctGrammaticalCase(a,d)}}),ch=(bg.defineLocale("sr-cyrl",{months:"јануар_фебруар_март_април_мај_јун_јул_август_септембар_октобар_новембар_децембар".split("_"),monthsShort:"јан._феб._мар._апр._мај_јун_јул_авг._сеп._окт._нов._дец.".split("_"),monthsParseExact:!0,weekdays:"недеља_понедељак_уторак_среда_четвртак_петак_субота".split("_"),weekdaysShort:"нед._пон._уто._сре._чет._пет._суб.".split("_"),weekdaysMin:"не_по_ут_ср_че_пе_су".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD. MM. YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[данас у] LT",nextDay:"[сутра у] LT",nextWeek:function(){switch(this.day()){case 0:return"[у] [недељу] [у] LT";case 3:return"[у] [среду] [у] LT";case 6:return"[у] [суботу] [у] LT";case 1:case 2:case 4:case 5:return"[у] dddd [у] LT"}},lastDay:"[јуче у] LT",lastWeek:function(){var a=["[прошле] [недеље] [у] LT","[прошлог] [понедељка] [у] LT","[прошлог] [уторка] [у] LT","[прошле] [среде] [у] LT","[прошлог] [четвртка] [у] LT","[прошлог] [петка] [у] LT","[прошле] [суботе] [у] LT"];return a[this.day()]},sameElse:"L"},relativeTime:{future:"за %s",past:"пре %s",s:"неколико секунди",m:bh.translate,mm:bh.translate,h:bh.translate,hh:bh.translate,d:"дан",dd:bh.translate,M:"месец",MM:bh.translate,y:"годину",yy:bh.translate},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}}),{words:{m:["jedan minut","jedne minute"],mm:["minut","minute","minuta"],h:["jedan sat","jednog sata"],hh:["sat","sata","sati"],dd:["dan","dana","dana"],MM:["mesec","meseca","meseci"],yy:["godina","godine","godina"]},correctGrammaticalCase:function(a,b){return 1===a?b[0]:a>=2&&4>=a?b[1]:b[2]},translate:function(a,b,c){var d=ch.words[c];return 1===c.length?b?d[0]:d[1]:a+" "+ch.correctGrammaticalCase(a,d)}}),dh=(bg.defineLocale("sr",{months:"januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar".split("_"),monthsShort:"jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedelja_ponedeljak_utorak_sreda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sre._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD. MM. YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedelju] [u] LT";case 3:return"[u] [sredu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[juče u] LT",lastWeek:function(){var a=["[prošle] [nedelje] [u] LT","[prošlog] [ponedeljka] [u] LT","[prošlog] [utorka] [u] LT","[prošle] [srede] [u] LT","[prošlog] [četvrtka] [u] LT","[prošlog] [petka] [u] LT","[prošle] [subote] [u] LT"];return a[this.day()]},sameElse:"L"},relativeTime:{future:"za %s",past:"pre %s",s:"nekoliko sekundi",m:ch.translate,mm:ch.translate,h:ch.translate,hh:ch.translate,d:"dan",dd:ch.translate,M:"mesec",MM:ch.translate,y:"godinu",yy:ch.translate},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}}),bg.defineLocale("ss",{months:"Bhimbidvwane_Indlovana_Indlov'lenkhulu_Mabasa_Inkhwekhweti_Inhlaba_Kholwane_Ingci_Inyoni_Imphala_Lweti_Ingongoni".split("_"),monthsShort:"Bhi_Ina_Inu_Mab_Ink_Inh_Kho_Igc_Iny_Imp_Lwe_Igo".split("_"),weekdays:"Lisontfo_Umsombuluko_Lesibili_Lesitsatfu_Lesine_Lesihlanu_Umgcibelo".split("_"),weekdaysShort:"Lis_Umb_Lsb_Les_Lsi_Lsh_Umg".split("_"),weekdaysMin:"Li_Us_Lb_Lt_Ls_Lh_Ug".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Namuhla nga] LT",nextDay:"[Kusasa nga] LT",nextWeek:"dddd [nga] LT",lastDay:"[Itolo nga] LT",lastWeek:"dddd [leliphelile] [nga] LT",sameElse:"L"},relativeTime:{future:"nga %s",past:"wenteka nga %s",s:"emizuzwana lomcane",m:"umzuzu",mm:"%d emizuzu",h:"lihora",hh:"%d emahora",d:"lilanga",dd:"%d emalanga",M:"inyanga",MM:"%d tinyanga",y:"umnyaka",yy:"%d iminyaka"},meridiemParse:/ekuseni|emini|entsambama|ebusuku/,meridiem:function(a,b,c){return 11>a?"ekuseni":15>a?"emini":19>a?"entsambama":"ebusuku"},meridiemHour:function(a,b){return 12===a&&(a=0),"ekuseni"===b?a:"emini"===b?a>=11?a:a+12:"entsambama"===b||"ebusuku"===b?0===a?0:a+12:void 0},ordinalParse:/\d{1,2}/,ordinal:"%d",week:{dow:1,doy:4}}),bg.defineLocale("sv",{months:"januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec".split("_"),weekdays:"söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag".split("_"),weekdaysShort:"sön_mån_tis_ons_tor_fre_lör".split("_"),weekdaysMin:"sö_må_ti_on_to_fr_lö".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [kl.] HH:mm",LLLL:"dddd D MMMM YYYY [kl.] HH:mm",lll:"D MMM YYYY HH:mm",llll:"ddd D MMM YYYY HH:mm"},calendar:{sameDay:"[Idag] LT",nextDay:"[Imorgon] LT",lastDay:"[Igår] LT",nextWeek:"[På] dddd LT",lastWeek:"[I] dddd[s] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"för %s sedan",s:"några sekunder",m:"en minut",mm:"%d minuter",h:"en timme",hh:"%d timmar",d:"en dag",dd:"%d dagar",M:"en månad",MM:"%d månader",y:"ett år",yy:"%d år"},ordinalParse:/\d{1,2}(e|a)/,ordinal:function(a){var b=a%10,c=1===~~(a%100/10)?"e":1===b?"a":2===b?"a":"e";return a+c},week:{dow:1,doy:4}}),bg.defineLocale("sw",{months:"Januari_Februari_Machi_Aprili_Mei_Juni_Julai_Agosti_Septemba_Oktoba_Novemba_Desemba".split("_"),monthsShort:"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ago_Sep_Okt_Nov_Des".split("_"),weekdays:"Jumapili_Jumatatu_Jumanne_Jumatano_Alhamisi_Ijumaa_Jumamosi".split("_"),weekdaysShort:"Jpl_Jtat_Jnne_Jtan_Alh_Ijm_Jmos".split("_"),weekdaysMin:"J2_J3_J4_J5_Al_Ij_J1".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[leo saa] LT",nextDay:"[kesho saa] LT",nextWeek:"[wiki ijayo] dddd [saat] LT",lastDay:"[jana] LT",lastWeek:"[wiki iliyopita] dddd [saat] LT",sameElse:"L"},relativeTime:{future:"%s baadaye",past:"tokea %s",s:"hivi punde",m:"dakika moja",mm:"dakika %d",h:"saa limoja",hh:"masaa %d",d:"siku moja",dd:"masiku %d",M:"mwezi mmoja",MM:"miezi %d",y:"mwaka mmoja",yy:"miaka %d"},week:{dow:1,doy:7}}),{1:"௧",2:"௨",3:"௩",4:"௪",5:"௫",6:"௬",7:"௭",8:"௮",9:"௯",0:"௦"}),eh={"௧":"1","௨":"2","௩":"3","௪":"4","௫":"5","௬":"6","௭":"7","௮":"8","௯":"9","௦":"0"},fh=(bg.defineLocale("ta",{months:"ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்".split("_"),monthsShort:"ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்".split("_"),weekdays:"ஞாயிற்றுக்கிழமை_திங்கட்கிழமை_செவ்வாய்கிழமை_புதன்கிழமை_வியாழக்கிழமை_வெள்ளிக்கிழமை_சனிக்கிழமை".split("_"),weekdaysShort:"ஞாயிறு_திங்கள்_செவ்வாய்_புதன்_வியாழன்_வெள்ளி_சனி".split("_"),weekdaysMin:"ஞா_தி_செ_பு_வி_வெ_ச".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, HH:mm",LLLL:"dddd, D MMMM YYYY, HH:mm"},calendar:{sameDay:"[இன்று] LT",nextDay:"[நாளை] LT",nextWeek:"dddd, LT",lastDay:"[நேற்று] LT",lastWeek:"[கடந்த வாரம்] dddd, LT",sameElse:"L"},relativeTime:{future:"%s இல்",past:"%s முன்",s:"ஒரு சில விநாடிகள்",m:"ஒரு நிமிடம்",mm:"%d நிமிடங்கள்",h:"ஒரு மணி நேரம்",hh:"%d மணி நேரம்",d:"ஒரு நாள்",dd:"%d நாட்கள்",M:"ஒரு மாதம்",MM:"%d மாதங்கள்",y:"ஒரு வருடம்",yy:"%d ஆண்டுகள்"},ordinalParse:/\d{1,2}வது/,ordinal:function(a){return a+"வது"},preparse:function(a){return a.replace(/[௧௨௩௪௫௬௭௮௯௦]/g,function(a){return eh[a]})},postformat:function(a){return a.replace(/\d/g,function(a){return dh[a]})},meridiemParse:/யாமம்|வைகறை|காலை|நண்பகல்|எற்பாடு|மாலை/,meridiem:function(a,b,c){return 2>a?" யாமம்":6>a?" வைகறை":10>a?" காலை":14>a?" நண்பகல்":18>a?" எற்பாடு":22>a?" மாலை":" யாமம்"},meridiemHour:function(a,b){return 12===a&&(a=0),"யாமம்"===b?2>a?a:a+12:"வைகறை"===b||"காலை"===b?a:"நண்பகல்"===b&&a>=10?a:a+12},week:{dow:0,doy:6}}),bg.defineLocale("te",{months:"జనవరి_ఫిబ్రవరి_మార్చి_ఏప్రిల్_మే_జూన్_జూలై_ఆగస్టు_సెప్టెంబర్_అక్టోబర్_నవంబర్_డిసెంబర్".split("_"),monthsShort:"జన._ఫిబ్ర._మార్చి_ఏప్రి._మే_జూన్_జూలై_ఆగ._సెప్._అక్టో._నవ._డిసె.".split("_"),monthsParseExact:!0,weekdays:"ఆదివారం_సోమవారం_మంగళవారం_బుధవారం_గురువారం_శుక్రవారం_శనివారం".split("_"),weekdaysShort:"ఆది_సోమ_మంగళ_బుధ_గురు_శుక్ర_శని".split("_"),weekdaysMin:"ఆ_సో_మం_బు_గు_శు_శ".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm",LLLL:"dddd, D MMMM YYYY, A h:mm"},calendar:{sameDay:"[నేడు] LT",nextDay:"[రేపు] LT",nextWeek:"dddd, LT",lastDay:"[నిన్న] LT",lastWeek:"[గత] dddd, LT",sameElse:"L"},relativeTime:{future:"%s లో",past:"%s క్రితం",s:"కొన్ని క్షణాలు",m:"ఒక నిమిషం",mm:"%d నిమిషాలు",h:"ఒక గంట",hh:"%d గంటలు",d:"ఒక రోజు",dd:"%d రోజులు",M:"ఒక నెల",MM:"%d నెలలు",y:"ఒక సంవత్సరం",yy:"%d సంవత్సరాలు"},ordinalParse:/\d{1,2}వ/,ordinal:"%dవ",meridiemParse:/రాత్రి|ఉదయం|మధ్యాహ్నం|సాయంత్రం/,meridiemHour:function(a,b){return 12===a&&(a=0),"రాత్రి"===b?4>a?a:a+12:"ఉదయం"===b?a:"మధ్యాహ్నం"===b?a>=10?a:a+12:"సాయంత్రం"===b?a+12:void 0},meridiem:function(a,b,c){return 4>a?"రాత్రి":10>a?"ఉదయం":17>a?"మధ్యాహ్నం":20>a?"సాయంత్రం":"రాత్రి"},week:{dow:0,doy:6}}),bg.defineLocale("th",{months:"มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม".split("_"),monthsShort:"มกรา_กุมภา_มีนา_เมษา_พฤษภา_มิถุนา_กรกฎา_สิงหา_กันยา_ตุลา_พฤศจิกา_ธันวา".split("_"),monthsParseExact:!0,weekdays:"อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์".split("_"),weekdaysShort:"อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์".split("_"),weekdaysMin:"อา._จ._อ._พ._พฤ._ศ._ส.".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H นาฬิกา m นาที",LTS:"H นาฬิกา m นาที s วินาที",L:"YYYY/MM/DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY เวลา H นาฬิกา m นาที",LLLL:"วันddddที่ D MMMM YYYY เวลา H นาฬิกา m นาที"},meridiemParse:/ก่อนเที่ยง|หลังเที่ยง/,isPM:function(a){return"หลังเที่ยง"===a},meridiem:function(a,b,c){return 12>a?"ก่อนเที่ยง":"หลังเที่ยง"},calendar:{sameDay:"[วันนี้ เวลา] LT",nextDay:"[พรุ่งนี้ เวลา] LT",nextWeek:"dddd[หน้า เวลา] LT",lastDay:"[เมื่อวานนี้ เวลา] LT",lastWeek:"[วัน]dddd[ที่แล้ว เวลา] LT",sameElse:"L"},relativeTime:{future:"อีก %s",past:"%sที่แล้ว",s:"ไม่กี่วินาที",m:"1 นาที",mm:"%d นาที",h:"1 ชั่วโมง",hh:"%d ชั่วโมง",d:"1 วัน",dd:"%d วัน",M:"1 เดือน",MM:"%d เดือน",y:"1 ปี",yy:"%d ปี"}}),bg.defineLocale("tl-ph",{months:"Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre".split("_"),monthsShort:"Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis".split("_"),weekdays:"Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado".split("_"),weekdaysShort:"Lin_Lun_Mar_Miy_Huw_Biy_Sab".split("_"),weekdaysMin:"Li_Lu_Ma_Mi_Hu_Bi_Sab".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"MM/D/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY HH:mm",LLLL:"dddd, MMMM DD, YYYY HH:mm"},calendar:{sameDay:"[Ngayon sa] LT",nextDay:"[Bukas sa] LT",nextWeek:"dddd [sa] LT",lastDay:"[Kahapon sa] LT",lastWeek:"dddd [huling linggo] LT",sameElse:"L"},relativeTime:{future:"sa loob ng %s",past:"%s ang nakalipas",s:"ilang segundo",m:"isang minuto",mm:"%d minuto",h:"isang oras",hh:"%d oras",d:"isang araw",dd:"%d araw",M:"isang buwan",MM:"%d buwan",y:"isang taon",yy:"%d taon"},ordinalParse:/\d{1,2}/,ordinal:function(a){return a},week:{dow:1,doy:4}}),"pagh_wa’_cha’_wej_loS_vagh_jav_Soch_chorgh_Hut".split("_")),gh=(bg.defineLocale("tlh",{months:"tera’ jar wa’_tera’ jar cha’_tera’ jar wej_tera’ jar loS_tera’ jar vagh_tera’ jar jav_tera’ jar Soch_tera’ jar chorgh_tera’ jar Hut_tera’ jar wa’maH_tera’ jar wa’maH wa’_tera’ jar wa’maH cha’".split("_"),monthsShort:"jar wa’_jar cha’_jar wej_jar loS_jar vagh_jar jav_jar Soch_jar chorgh_jar Hut_jar wa’maH_jar wa’maH wa’_jar wa’maH cha’".split("_"),monthsParseExact:!0,weekdays:"lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj".split("_"),weekdaysShort:"lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj".split("_"),weekdaysMin:"lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[DaHjaj] LT",nextDay:"[wa’leS] LT",nextWeek:"LLL",lastDay:"[wa’Hu’] LT",lastWeek:"LLL",sameElse:"L"},relativeTime:{future:Vd,past:Wd,s:"puS lup",m:"wa’ tup",mm:Xd,h:"wa’ rep",hh:Xd,d:"wa’ jaj",dd:Xd,M:"wa’ jar",MM:Xd,y:"wa’ DIS",yy:Xd},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),{1:"'inci",5:"'inci",8:"'inci",70:"'inci",80:"'inci",2:"'nci",7:"'nci",20:"'nci",50:"'nci",3:"'üncü",4:"'üncü",100:"'üncü",6:"'ncı",9:"'uncu",10:"'uncu",30:"'uncu",60:"'ıncı",90:"'ıncı"}),hh=(bg.defineLocale("tr",{months:"Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık".split("_"),monthsShort:"Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara".split("_"),weekdays:"Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi".split("_"),weekdaysShort:"Paz_Pts_Sal_Çar_Per_Cum_Cts".split("_"),weekdaysMin:"Pz_Pt_Sa_Ça_Pe_Cu_Ct".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[bugün saat] LT",nextDay:"[yarın saat] LT",nextWeek:"[haftaya] dddd [saat] LT",lastDay:"[dün] LT",lastWeek:"[geçen hafta] dddd [saat] LT",sameElse:"L"},relativeTime:{future:"%s sonra",past:"%s önce",s:"birkaç saniye",m:"bir dakika",mm:"%d dakika",h:"bir saat",hh:"%d saat",d:"bir gün",dd:"%d gün",M:"bir ay",MM:"%d ay",y:"bir yıl",yy:"%d yıl"},ordinalParse:/\d{1,2}'(inci|nci|üncü|ncı|uncu|ıncı)/,ordinal:function(a){if(0===a)return a+"'ıncı";var b=a%10,c=a%100-b,d=a>=100?100:null;return a+(gh[b]||gh[c]||gh[d])},week:{dow:1,doy:7}}),bg.defineLocale("tzl",{months:"Januar_Fevraglh_Març_Avrïu_Mai_Gün_Julia_Guscht_Setemvar_Listopäts_Noemvar_Zecemvar".split("_"),monthsShort:"Jan_Fev_Mar_Avr_Mai_Gün_Jul_Gus_Set_Lis_Noe_Zec".split("_"),weekdays:"Súladi_Lúneçi_Maitzi_Márcuri_Xhúadi_Viénerçi_Sáturi".split("_"),weekdaysShort:"Súl_Lún_Mai_Már_Xhú_Vié_Sát".split("_"),weekdaysMin:"Sú_Lú_Ma_Má_Xh_Vi_Sá".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD.MM.YYYY",LL:"D. MMMM [dallas] YYYY",LLL:"D. MMMM [dallas] YYYY HH.mm",LLLL:"dddd, [li] D. MMMM [dallas] YYYY HH.mm"},meridiemParse:/d\'o|d\'a/i,isPM:function(a){return"d'o"===a.toLowerCase()},meridiem:function(a,b,c){return a>11?c?"d'o":"D'O":c?"d'a":"D'A"},calendar:{sameDay:"[oxhi à] LT",nextDay:"[demà à] LT",nextWeek:"dddd [à] LT",lastDay:"[ieiri à] LT",lastWeek:"[sür el] dddd [lasteu à] LT",sameElse:"L"},relativeTime:{future:"osprei %s",past:"ja%s",s:Zd,m:Zd,mm:Zd,h:Zd,hh:Zd,d:Zd,dd:Zd,M:Zd,MM:Zd,y:Zd,yy:Zd},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),bg.defineLocale("tzm-latn",{months:"innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir".split("_"),monthsShort:"innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir".split("_"),weekdays:"asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas".split("_"),weekdaysShort:"asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas".split("_"),weekdaysMin:"asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[asdkh g] LT",nextDay:"[aska g] LT",nextWeek:"dddd [g] LT",lastDay:"[assant g] LT",lastWeek:"dddd [g] LT",sameElse:"L"},relativeTime:{future:"dadkh s yan %s",past:"yan %s",s:"imik",m:"minuḍ",mm:"%d minuḍ",h:"saɛa",hh:"%d tassaɛin",d:"ass",dd:"%d ossan",M:"ayowr",MM:"%d iyyirn",y:"asgas",yy:"%d isgasn"},week:{dow:6,doy:12}}),bg.defineLocale("tzm",{months:"ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ".split("_"),monthsShort:"ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ".split("_"),weekdays:"ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ".split("_"),weekdaysShort:"ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ".split("_"),weekdaysMin:"ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[ⴰⵙⴷⵅ ⴴ] LT",nextDay:"[ⴰⵙⴽⴰ ⴴ] LT",nextWeek:"dddd [ⴴ] LT",lastDay:"[ⴰⵚⴰⵏⵜ ⴴ] LT",lastWeek:"dddd [ⴴ] LT",sameElse:"L"},relativeTime:{future:"ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ %s",past:"ⵢⴰⵏ %s",s:"ⵉⵎⵉⴽ",m:"ⵎⵉⵏⵓⴺ",mm:"%d ⵎⵉⵏⵓⴺ",h:"ⵙⴰⵄⴰ",hh:"%d ⵜⴰⵙⵙⴰⵄⵉⵏ",d:"ⴰⵙⵙ",dd:"%d oⵙⵙⴰⵏ",M:"ⴰⵢoⵓⵔ",MM:"%d ⵉⵢⵢⵉⵔⵏ",y:"ⴰⵙⴳⴰⵙ",yy:"%d ⵉⵙⴳⴰⵙⵏ"},week:{dow:6,doy:12}}),bg.defineLocale("uk",{months:{format:"січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня".split("_"),standalone:"січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень".split("_")},monthsShort:"січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд".split("_"),weekdays:ae,weekdaysShort:"нд_пн_вт_ср_чт_пт_сб".split("_"),weekdaysMin:"нд_пн_вт_ср_чт_пт_сб".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY р.",LLL:"D MMMM YYYY р., HH:mm",LLLL:"dddd, D MMMM YYYY р., HH:mm"},calendar:{sameDay:be("[Сьогодні "),nextDay:be("[Завтра "),lastDay:be("[Вчора "),nextWeek:be("[У] dddd ["),lastWeek:function(){switch(this.day()){case 0:case 3:case 5:case 6:return be("[Минулої] dddd [").call(this);case 1:case 2:case 4:return be("[Минулого] dddd [").call(this)}},sameElse:"L"},relativeTime:{future:"за %s",past:"%s тому",s:"декілька секунд",m:_d,mm:_d,h:"годину",hh:_d,d:"день",dd:_d,M:"місяць",MM:_d,y:"рік",yy:_d},meridiemParse:/ночі|ранку|дня|вечора/,isPM:function(a){return/^(дня|вечора)$/.test(a)},meridiem:function(a,b,c){return 4>a?"ночі":12>a?"ранку":17>a?"дня":"вечора"},ordinalParse:/\d{1,2}-(й|го)/,ordinal:function(a,b){switch(b){case"M":case"d":case"DDD":case"w":case"W":return a+"-й";case"D":return a+"-го";default:return a}},week:{dow:1,doy:7}}),bg.defineLocale("uz",{months:"январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр".split("_"),monthsShort:"янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек".split("_"),weekdays:"Якшанба_Душанба_Сешанба_Чоршанба_Пайшанба_Жума_Шанба".split("_"),weekdaysShort:"Якш_Душ_Сеш_Чор_Пай_Жум_Шан".split("_"),weekdaysMin:"Як_Ду_Се_Чо_Па_Жу_Ша".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"D MMMM YYYY, dddd HH:mm"},calendar:{sameDay:"[Бугун соат] LT [да]",nextDay:"[Эртага] LT [да]",nextWeek:"dddd [куни соат] LT [да]",lastDay:"[Кеча соат] LT [да]",lastWeek:"[Утган] dddd [куни соат] LT [да]",sameElse:"L"},relativeTime:{future:"Якин %s ичида",past:"Бир неча %s олдин",s:"фурсат",m:"бир дакика",mm:"%d дакика",h:"бир соат",hh:"%d соат",d:"бир кун",dd:"%d кун",M:"бир ой",MM:"%d ой",y:"бир йил",yy:"%d йил"},week:{dow:1,doy:7}}),bg.defineLocale("vi",{months:"tháng 1_tháng 2_tháng 3_tháng 4_tháng 5_tháng 6_tháng 7_tháng 8_tháng 9_tháng 10_tháng 11_tháng 12".split("_"),monthsShort:"Th01_Th02_Th03_Th04_Th05_Th06_Th07_Th08_Th09_Th10_Th11_Th12".split("_"),monthsParseExact:!0,weekdays:"chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy".split("_"),weekdaysShort:"CN_T2_T3_T4_T5_T6_T7".split("_"),weekdaysMin:"CN_T2_T3_T4_T5_T6_T7".split("_"),weekdaysParseExact:!0,meridiemParse:/sa|ch/i,isPM:function(a){return/^ch$/i.test(a)},meridiem:function(a,b,c){return 12>a?c?"sa":"SA":c?"ch":"CH"},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM [năm] YYYY",LLL:"D MMMM [năm] YYYY HH:mm",LLLL:"dddd, D MMMM [năm] YYYY HH:mm",l:"DD/M/YYYY",ll:"D MMM YYYY",lll:"D MMM YYYY HH:mm",llll:"ddd, D MMM YYYY HH:mm"},calendar:{sameDay:"[Hôm nay lúc] LT",nextDay:"[Ngày mai lúc] LT",nextWeek:"dddd [tuần tới lúc] LT",lastDay:"[Hôm qua lúc] LT",lastWeek:"dddd [tuần rồi lúc] LT",sameElse:"L"},relativeTime:{future:"%s tới",past:"%s trước",s:"vài giây",m:"một phút",mm:"%d phút",h:"một giờ",hh:"%d giờ",d:"một ngày",dd:"%d ngày",M:"một tháng",MM:"%d tháng",y:"một năm",yy:"%d năm"},ordinalParse:/\d{1,2}/,ordinal:function(a){return a},week:{dow:1,doy:4}}),bg.defineLocale("x-pseudo",{months:"J~áñúá~rý_F~ébrú~árý_~Márc~h_Áp~ríl_~Máý_~Júñé~_Júl~ý_Áú~gúst~_Sép~témb~ér_Ó~ctób~ér_Ñ~óvém~bér_~Décé~mbér".split("_"),monthsShort:"J~áñ_~Féb_~Már_~Ápr_~Máý_~Júñ_~Júl_~Áúg_~Sép_~Óct_~Ñóv_~Déc".split("_"),monthsParseExact:!0,weekdays:"S~úñdá~ý_Mó~ñdáý~_Túé~sdáý~_Wéd~ñésd~áý_T~húrs~dáý_~Fríd~áý_S~átúr~dáý".split("_"),weekdaysShort:"S~úñ_~Móñ_~Túé_~Wéd_~Thú_~Frí_~Sát".split("_"),weekdaysMin:"S~ú_Mó~_Tú_~Wé_T~h_Fr~_Sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[T~ódá~ý át] LT",nextDay:"[T~ómó~rró~w át] LT",nextWeek:"dddd [át] LT",lastDay:"[Ý~ést~érdá~ý át] LT",lastWeek:"[L~ást] dddd [át] LT",sameElse:"L"},relativeTime:{future:"í~ñ %s",past:"%s á~gó",s:"á ~féw ~sécó~ñds",m:"á ~míñ~úté",mm:"%d m~íñú~tés",h:"á~ñ hó~úr",hh:"%d h~óúrs",d:"á ~dáý",dd:"%d d~áýs",M:"á ~móñ~th",MM:"%d m~óñt~hs",y:"á ~ýéár",yy:"%d ý~éárs"},ordinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(a){var b=a%10,c=1===~~(a%100/10)?"th":1===b?"st":2===b?"nd":3===b?"rd":"th";return a+c},week:{dow:1,doy:4}}),bg.defineLocale("zh-cn",{months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"周日_周一_周二_周三_周四_周五_周六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),longDateFormat:{LT:"Ah点mm分",LTS:"Ah点m分s秒",L:"YYYY-MM-DD",LL:"YYYY年MMMD日",LLL:"YYYY年MMMD日Ah点mm分",LLLL:"YYYY年MMMD日ddddAh点mm分",l:"YYYY-MM-DD",ll:"YYYY年MMMD日",lll:"YYYY年MMMD日Ah点mm分",llll:"YYYY年MMMD日ddddAh点mm分"},meridiemParse:/凌晨|早上|上午|中午|下午|晚上/,meridiemHour:function(a,b){return 12===a&&(a=0),"凌晨"===b||"早上"===b||"上午"===b?a:"下午"===b||"晚上"===b?a+12:a>=11?a:a+12},meridiem:function(a,b,c){var d=100*a+b;return 600>d?"凌晨":900>d?"早上":1130>d?"上午":1230>d?"中午":1800>d?"下午":"晚上"},calendar:{sameDay:function(){return 0===this.minutes()?"[今天]Ah[点整]":"[今天]LT"},nextDay:function(){return 0===this.minutes()?"[明天]Ah[点整]":"[明天]LT"},lastDay:function(){return 0===this.minutes()?"[昨天]Ah[点整]":"[昨天]LT"},nextWeek:function(){var a,b;return a=bg().startOf("week"),b=this.diff(a,"days")>=7?"[下]":"[本]",0===this.minutes()?b+"dddAh点整":b+"dddAh点mm"},lastWeek:function(){var a,b;return a=bg().startOf("week"),b=this.unix()=11?a:a+12:"下午"===b||"晚上"===b?a+12:void 0},meridiem:function(a,b,c){var d=100*a+b;return 900>d?"早上":1130>d?"上午":1230>d?"中午":1800>d?"下午":"晚上"},calendar:{sameDay:"[今天]LT",nextDay:"[明天]LT",nextWeek:"[下]ddddLT",lastDay:"[昨天]LT",lastWeek:"[上]ddddLT",sameElse:"L"},ordinalParse:/\d{1,2}(日|月|週)/,ordinal:function(a,b){switch(b){case"d":case"D":case"DDD":return a+"日";case"M":return a+"月";case"w":case"W":return a+"週";default:return a}},relativeTime:{future:"%s內",past:"%s前",s:"幾秒",m:"1分鐘",mm:"%d分鐘",h:"1小時",hh:"%d小時",d:"1天",dd:"%d天",M:"1個月",MM:"%d個月",y:"1年",yy:"%d年"}}),bg);return hh.locale("en"),hh}); \ No newline at end of file diff --git a/lib/require.js b/lib/require.js new file mode 100644 index 0000000..5b26875 --- /dev/null +++ b/lib/require.js @@ -0,0 +1,2000 @@ +/** vim: et:ts=4:sw=4:sts=4 + * @license RequireJS 2.1.4 Copyright (c) 2010-2012, The Dojo Foundation All Rights Reserved. + * Available via the MIT or new BSD license. + * see: http://github.com/jrburke/requirejs for details + */ +//Not using strict: uneven strict support in browsers, #392, and causes +//problems with requirejs.exec()/transpiler plugins that may not be strict. +/*jslint regexp: true, nomen: true, sloppy: true */ +/*global window, navigator, document, importScripts, setTimeout, opera */ + +var requirejs, require, define; +(function (global) { + var req, s, head, baseElement, dataMain, src, + interactiveScript, currentlyAddingScript, mainScript, subPath, + version = '2.1.4', + commentRegExp = /(\/\*([\s\S]*?)\*\/|([^:]|^)\/\/(.*)$)/mg, + cjsRequireRegExp = /[^.]\s*require\s*\(\s*["']([^'"\s]+)["']\s*\)/g, + jsSuffixRegExp = /\.js$/, + currDirRegExp = /^\.\//, + op = Object.prototype, + ostring = op.toString, + hasOwn = op.hasOwnProperty, + ap = Array.prototype, + apsp = ap.splice, + isBrowser = !!(typeof window !== 'undefined' && navigator && document), + isWebWorker = !isBrowser && typeof importScripts !== 'undefined', + //PS3 indicates loaded and complete, but need to wait for complete + //specifically. Sequence is 'loading', 'loaded', execution, + // then 'complete'. The UA check is unfortunate, but not sure how + //to feature test w/o causing perf issues. + readyRegExp = isBrowser && navigator.platform === 'PLAYSTATION 3' ? + /^complete$/ : /^(complete|loaded)$/, + defContextName = '_', + //Oh the tragedy, detecting opera. See the usage of isOpera for reason. + isOpera = typeof opera !== 'undefined' && opera.toString() === '[object Opera]', + contexts = {}, + cfg = {}, + globalDefQueue = [], + useInteractive = false; + + function isFunction(it) { + return ostring.call(it) === '[object Function]'; + } + + function isArray(it) { + return ostring.call(it) === '[object Array]'; + } + + /** + * Helper function for iterating over an array. If the func returns + * a true value, it will break out of the loop. + */ + function each(ary, func) { + if (ary) { + var i; + for (i = 0; i < ary.length; i += 1) { + if (ary[i] && func(ary[i], i, ary)) { + break; + } + } + } + } + + /** + * Helper function for iterating over an array backwards. If the func + * returns a true value, it will break out of the loop. + */ + function eachReverse(ary, func) { + if (ary) { + var i; + for (i = ary.length - 1; i > -1; i -= 1) { + if (ary[i] && func(ary[i], i, ary)) { + break; + } + } + } + } + + function hasProp(obj, prop) { + return hasOwn.call(obj, prop); + } + + function getOwn(obj, prop) { + return hasProp(obj, prop) && obj[prop]; + } + + /** + * Cycles over properties in an object and calls a function for each + * property value. If the function returns a truthy value, then the + * iteration is stopped. + */ + function eachProp(obj, func) { + var prop; + for (prop in obj) { + if (hasProp(obj, prop)) { + if (func(obj[prop], prop)) { + break; + } + } + } + } + + /** + * Simple function to mix in properties from source into target, + * but only if target does not already have a property of the same name. + */ + function mixin(target, source, force, deepStringMixin) { + if (source) { + eachProp(source, function (value, prop) { + if (force || !hasProp(target, prop)) { + if (deepStringMixin && typeof value !== 'string') { + if (!target[prop]) { + target[prop] = {}; + } + mixin(target[prop], value, force, deepStringMixin); + } else { + target[prop] = value; + } + } + }); + } + return target; + } + + //Similar to Function.prototype.bind, but the 'this' object is specified + //first, since it is easier to read/figure out what 'this' will be. + function bind(obj, fn) { + return function () { + return fn.apply(obj, arguments); + }; + } + + function scripts() { + return document.getElementsByTagName('script'); + } + + //Allow getting a global that expressed in + //dot notation, like 'a.b.c'. + function getGlobal(value) { + if (!value) { + return value; + } + var g = global; + each(value.split('.'), function (part) { + g = g[part]; + }); + return g; + } + + /** + * Constructs an error with a pointer to an URL with more information. + * @param {String} id the error ID that maps to an ID on a web page. + * @param {String} message human readable error. + * @param {Error} [err] the original error, if there is one. + * + * @returns {Error} + */ + function makeError(id, msg, err, requireModules) { + var e = new Error(msg + '\nhttp://requirejs.org/docs/errors.html#' + id); + e.requireType = id; + e.requireModules = requireModules; + if (err) { + e.originalError = err; + } + return e; + } + + if (typeof define !== 'undefined') { + //If a define is already in play via another AMD loader, + //do not overwrite. + return; + } + + if (typeof requirejs !== 'undefined') { + if (isFunction(requirejs)) { + //Do not overwrite and existing requirejs instance. + return; + } + cfg = requirejs; + requirejs = undefined; + } + + //Allow for a require config object + if (typeof require !== 'undefined' && !isFunction(require)) { + //assume it is a config object. + cfg = require; + require = undefined; + } + + function newContext(contextName) { + var inCheckLoaded, Module, context, handlers, + checkLoadedTimeoutId, + config = { + waitSeconds: 7, + baseUrl: './', + paths: {}, + pkgs: {}, + shim: {}, + map: {}, + config: {} + }, + registry = {}, + undefEvents = {}, + defQueue = [], + defined = {}, + urlFetched = {}, + requireCounter = 1, + unnormalizedCounter = 1; + + /** + * Trims the . and .. from an array of path segments. + * It will keep a leading path segment if a .. will become + * the first path segment, to help with module name lookups, + * which act like paths, but can be remapped. But the end result, + * all paths that use this function should look normalized. + * NOTE: this method MODIFIES the input array. + * @param {Array} ary the array of path segments. + */ + function trimDots(ary) { + var i, part; + for (i = 0; ary[i]; i += 1) { + part = ary[i]; + if (part === '.') { + ary.splice(i, 1); + i -= 1; + } else if (part === '..') { + if (i === 1 && (ary[2] === '..' || ary[0] === '..')) { + //End of the line. Keep at least one non-dot + //path segment at the front so it can be mapped + //correctly to disk. Otherwise, there is likely + //no path mapping for a path starting with '..'. + //This can still fail, but catches the most reasonable + //uses of .. + break; + } else if (i > 0) { + ary.splice(i - 1, 2); + i -= 2; + } + } + } + } + + /** + * Given a relative module name, like ./something, normalize it to + * a real name that can be mapped to a path. + * @param {String} name the relative name + * @param {String} baseName a real name that the name arg is relative + * to. + * @param {Boolean} applyMap apply the map config to the value. Should + * only be done if this normalization is for a dependency ID. + * @returns {String} normalized name + */ + function normalize(name, baseName, applyMap) { + var pkgName, pkgConfig, mapValue, nameParts, i, j, nameSegment, + foundMap, foundI, foundStarMap, starI, + baseParts = baseName && baseName.split('/'), + normalizedBaseParts = baseParts, + map = config.map, + starMap = map && map['*']; + + //Adjust any relative paths. + if (name && name.charAt(0) === '.') { + //If have a base name, try to normalize against it, + //otherwise, assume it is a top-level require that will + //be relative to baseUrl in the end. + if (baseName) { + if (getOwn(config.pkgs, baseName)) { + //If the baseName is a package name, then just treat it as one + //name to concat the name with. + normalizedBaseParts = baseParts = [baseName]; + } else { + //Convert baseName to array, and lop off the last part, + //so that . matches that 'directory' and not name of the baseName's + //module. For instance, baseName of 'one/two/three', maps to + //'one/two/three.js', but we want the directory, 'one/two' for + //this normalization. + normalizedBaseParts = baseParts.slice(0, baseParts.length - 1); + } + + name = normalizedBaseParts.concat(name.split('/')); + trimDots(name); + + //Some use of packages may use a . path to reference the + //'main' module name, so normalize for that. + pkgConfig = getOwn(config.pkgs, (pkgName = name[0])); + name = name.join('/'); + if (pkgConfig && name === pkgName + '/' + pkgConfig.main) { + name = pkgName; + } + } else if (name.indexOf('./') === 0) { + // No baseName, so this is ID is resolved relative + // to baseUrl, pull off the leading dot. + name = name.substring(2); + } + } + + //Apply map config if available. + if (applyMap && (baseParts || starMap) && map) { + nameParts = name.split('/'); + + for (i = nameParts.length; i > 0; i -= 1) { + nameSegment = nameParts.slice(0, i).join('/'); + + if (baseParts) { + //Find the longest baseName segment match in the config. + //So, do joins on the biggest to smallest lengths of baseParts. + for (j = baseParts.length; j > 0; j -= 1) { + mapValue = getOwn(map, baseParts.slice(0, j).join('/')); + + //baseName segment has config, find if it has one for + //this name. + if (mapValue) { + mapValue = getOwn(mapValue, nameSegment); + if (mapValue) { + //Match, update name to the new value. + foundMap = mapValue; + foundI = i; + break; + } + } + } + } + + if (foundMap) { + break; + } + + //Check for a star map match, but just hold on to it, + //if there is a shorter segment match later in a matching + //config, then favor over this star map. + if (!foundStarMap && starMap && getOwn(starMap, nameSegment)) { + foundStarMap = getOwn(starMap, nameSegment); + starI = i; + } + } + + if (!foundMap && foundStarMap) { + foundMap = foundStarMap; + foundI = starI; + } + + if (foundMap) { + nameParts.splice(0, foundI, foundMap); + name = nameParts.join('/'); + } + } + + return name; + } + + function removeScript(name) { + if (isBrowser) { + each(scripts(), function (scriptNode) { + if (scriptNode.getAttribute('data-requiremodule') === name && + scriptNode.getAttribute('data-requirecontext') === context.contextName) { + scriptNode.parentNode.removeChild(scriptNode); + return true; + } + }); + } + } + + function hasPathFallback(id) { + var pathConfig = getOwn(config.paths, id); + if (pathConfig && isArray(pathConfig) && pathConfig.length > 1) { + removeScript(id); + //Pop off the first array value, since it failed, and + //retry + pathConfig.shift(); + context.require.undef(id); + context.require([id]); + return true; + } + } + + //Turns a plugin!resource to [plugin, resource] + //with the plugin being undefined if the name + //did not have a plugin prefix. + function splitPrefix(name) { + var prefix, + index = name ? name.indexOf('!') : -1; + if (index > -1) { + prefix = name.substring(0, index); + name = name.substring(index + 1, name.length); + } + return [prefix, name]; + } + + /** + * Creates a module mapping that includes plugin prefix, module + * name, and path. If parentModuleMap is provided it will + * also normalize the name via require.normalize() + * + * @param {String} name the module name + * @param {String} [parentModuleMap] parent module map + * for the module name, used to resolve relative names. + * @param {Boolean} isNormalized: is the ID already normalized. + * This is true if this call is done for a define() module ID. + * @param {Boolean} applyMap: apply the map config to the ID. + * Should only be true if this map is for a dependency. + * + * @returns {Object} + */ + function makeModuleMap(name, parentModuleMap, isNormalized, applyMap) { + var url, pluginModule, suffix, nameParts, + prefix = null, + parentName = parentModuleMap ? parentModuleMap.name : null, + originalName = name, + isDefine = true, + normalizedName = ''; + + //If no name, then it means it is a require call, generate an + //internal name. + if (!name) { + isDefine = false; + name = '_@r' + (requireCounter += 1); + } + + nameParts = splitPrefix(name); + prefix = nameParts[0]; + name = nameParts[1]; + + if (prefix) { + prefix = normalize(prefix, parentName, applyMap); + pluginModule = getOwn(defined, prefix); + } + + //Account for relative paths if there is a base name. + if (name) { + if (prefix) { + if (pluginModule && pluginModule.normalize) { + //Plugin is loaded, use its normalize method. + normalizedName = pluginModule.normalize(name, function (name) { + return normalize(name, parentName, applyMap); + }); + } else { + normalizedName = normalize(name, parentName, applyMap); + } + } else { + //A regular module. + normalizedName = normalize(name, parentName, applyMap); + + //Normalized name may be a plugin ID due to map config + //application in normalize. The map config values must + //already be normalized, so do not need to redo that part. + nameParts = splitPrefix(normalizedName); + prefix = nameParts[0]; + normalizedName = nameParts[1]; + isNormalized = true; + + url = context.nameToUrl(normalizedName); + } + } + + //If the id is a plugin id that cannot be determined if it needs + //normalization, stamp it with a unique ID so two matching relative + //ids that may conflict can be separate. + suffix = prefix && !pluginModule && !isNormalized ? + '_unnormalized' + (unnormalizedCounter += 1) : + ''; + + return { + prefix: prefix, + name: normalizedName, + parentMap: parentModuleMap, + unnormalized: !!suffix, + url: url, + originalName: originalName, + isDefine: isDefine, + id: (prefix ? + prefix + '!' + normalizedName : + normalizedName) + suffix + }; + } + + function getModule(depMap) { + var id = depMap.id, + mod = getOwn(registry, id); + + if (!mod) { + mod = registry[id] = new context.Module(depMap); + } + + return mod; + } + + function on(depMap, name, fn) { + var id = depMap.id, + mod = getOwn(registry, id); + + if (hasProp(defined, id) && + (!mod || mod.defineEmitComplete)) { + if (name === 'defined') { + fn(defined[id]); + } + } else { + getModule(depMap).on(name, fn); + } + } + + function onError(err, errback) { + var ids = err.requireModules, + notified = false; + + if (errback) { + errback(err); + } else { + each(ids, function (id) { + var mod = getOwn(registry, id); + if (mod) { + //Set error on module, so it skips timeout checks. + mod.error = err; + if (mod.events.error) { + notified = true; + mod.emit('error', err); + } + } + }); + + if (!notified) { + req.onError(err); + } + } + } + + /** + * Internal method to transfer globalQueue items to this context's + * defQueue. + */ + function takeGlobalQueue() { + //Push all the globalDefQueue items into the context's defQueue + if (globalDefQueue.length) { + //Array splice in the values since the context code has a + //local var ref to defQueue, so cannot just reassign the one + //on context. + apsp.apply(defQueue, + [defQueue.length - 1, 0].concat(globalDefQueue)); + globalDefQueue = []; + } + } + + handlers = { + 'require': function (mod) { + if (mod.require) { + return mod.require; + } else { + return (mod.require = context.makeRequire(mod.map)); + } + }, + 'exports': function (mod) { + mod.usingExports = true; + if (mod.map.isDefine) { + if (mod.exports) { + return mod.exports; + } else { + return (mod.exports = defined[mod.map.id] = {}); + } + } + }, + 'module': function (mod) { + if (mod.module) { + return mod.module; + } else { + return (mod.module = { + id: mod.map.id, + uri: mod.map.url, + config: function () { + return (config.config && getOwn(config.config, mod.map.id)) || {}; + }, + exports: defined[mod.map.id] + }); + } + } + }; + + function cleanRegistry(id) { + //Clean up machinery used for waiting modules. + delete registry[id]; + } + + function breakCycle(mod, traced, processed) { + var id = mod.map.id; + + if (mod.error) { + mod.emit('error', mod.error); + } else { + traced[id] = true; + each(mod.depMaps, function (depMap, i) { + var depId = depMap.id, + dep = getOwn(registry, depId); + + //Only force things that have not completed + //being defined, so still in the registry, + //and only if it has not been matched up + //in the module already. + if (dep && !mod.depMatched[i] && !processed[depId]) { + if (getOwn(traced, depId)) { + mod.defineDep(i, defined[depId]); + mod.check(); //pass false? + } else { + breakCycle(dep, traced, processed); + } + } + }); + processed[id] = true; + } + } + + function checkLoaded() { + var map, modId, err, usingPathFallback, + waitInterval = config.waitSeconds * 1000, + //It is possible to disable the wait interval by using waitSeconds of 0. + expired = waitInterval && (context.startTime + waitInterval) < new Date().getTime(), + noLoads = [], + reqCalls = [], + stillLoading = false, + needCycleCheck = true; + + //Do not bother if this call was a result of a cycle break. + if (inCheckLoaded) { + return; + } + + inCheckLoaded = true; + + //Figure out the state of all the modules. + eachProp(registry, function (mod) { + map = mod.map; + modId = map.id; + + //Skip things that are not enabled or in error state. + if (!mod.enabled) { + return; + } + + if (!map.isDefine) { + reqCalls.push(mod); + } + + if (!mod.error) { + //If the module should be executed, and it has not + //been inited and time is up, remember it. + if (!mod.inited && expired) { + if (hasPathFallback(modId)) { + usingPathFallback = true; + stillLoading = true; + } else { + noLoads.push(modId); + removeScript(modId); + } + } else if (!mod.inited && mod.fetched && map.isDefine) { + stillLoading = true; + if (!map.prefix) { + //No reason to keep looking for unfinished + //loading. If the only stillLoading is a + //plugin resource though, keep going, + //because it may be that a plugin resource + //is waiting on a non-plugin cycle. + return (needCycleCheck = false); + } + } + } + }); + + if (expired && noLoads.length) { + //If wait time expired, throw error of unloaded modules. + err = makeError('timeout', 'Load timeout for modules: ' + noLoads, null, noLoads); + err.contextName = context.contextName; + return onError(err); + } + + //Not expired, check for a cycle. + if (needCycleCheck) { + each(reqCalls, function (mod) { + breakCycle(mod, {}, {}); + }); + } + + //If still waiting on loads, and the waiting load is something + //other than a plugin resource, or there are still outstanding + //scripts, then just try back later. + if ((!expired || usingPathFallback) && stillLoading) { + //Something is still waiting to load. Wait for it, but only + //if a timeout is not already in effect. + if ((isBrowser || isWebWorker) && !checkLoadedTimeoutId) { + checkLoadedTimeoutId = setTimeout(function () { + checkLoadedTimeoutId = 0; + checkLoaded(); + }, 50); + } + } + + inCheckLoaded = false; + } + + Module = function (map) { + this.events = getOwn(undefEvents, map.id) || {}; + this.map = map; + this.shim = getOwn(config.shim, map.id); + this.depExports = []; + this.depMaps = []; + this.depMatched = []; + this.pluginMaps = {}; + this.depCount = 0; + + /* this.exports this.factory + this.depMaps = [], + this.enabled, this.fetched + */ + }; + + Module.prototype = { + init: function (depMaps, factory, errback, options) { + options = options || {}; + + //Do not do more inits if already done. Can happen if there + //are multiple define calls for the same module. That is not + //a normal, common case, but it is also not unexpected. + if (this.inited) { + return; + } + + this.factory = factory; + + if (errback) { + //Register for errors on this module. + this.on('error', errback); + } else if (this.events.error) { + //If no errback already, but there are error listeners + //on this module, set up an errback to pass to the deps. + errback = bind(this, function (err) { + this.emit('error', err); + }); + } + + //Do a copy of the dependency array, so that + //source inputs are not modified. For example + //"shim" deps are passed in here directly, and + //doing a direct modification of the depMaps array + //would affect that config. + this.depMaps = depMaps && depMaps.slice(0); + + this.errback = errback; + + //Indicate this module has be initialized + this.inited = true; + + this.ignore = options.ignore; + + //Could have option to init this module in enabled mode, + //or could have been previously marked as enabled. However, + //the dependencies are not known until init is called. So + //if enabled previously, now trigger dependencies as enabled. + if (options.enabled || this.enabled) { + //Enable this module and dependencies. + //Will call this.check() + this.enable(); + } else { + this.check(); + } + }, + + defineDep: function (i, depExports) { + //Because of cycles, defined callback for a given + //export can be called more than once. + if (!this.depMatched[i]) { + this.depMatched[i] = true; + this.depCount -= 1; + this.depExports[i] = depExports; + } + }, + + fetch: function () { + if (this.fetched) { + return; + } + this.fetched = true; + + context.startTime = (new Date()).getTime(); + + var map = this.map; + + //If the manager is for a plugin managed resource, + //ask the plugin to load it now. + if (this.shim) { + context.makeRequire(this.map, { + enableBuildCallback: true + })(this.shim.deps || [], bind(this, function () { + return map.prefix ? this.callPlugin() : this.load(); + })); + } else { + //Regular dependency. + return map.prefix ? this.callPlugin() : this.load(); + } + }, + + load: function () { + var url = this.map.url; + + //Regular dependency. + if (!urlFetched[url]) { + urlFetched[url] = true; + context.load(this.map.id, url); + } + }, + + /** + * Checks is the module is ready to define itself, and if so, + * define it. + */ + check: function () { + if (!this.enabled || this.enabling) { + return; + } + + var err, cjsModule, + id = this.map.id, + depExports = this.depExports, + exports = this.exports, + factory = this.factory; + + if (!this.inited) { + this.fetch(); + } else if (this.error) { + this.emit('error', this.error); + } else if (!this.defining) { + //The factory could trigger another require call + //that would result in checking this module to + //define itself again. If already in the process + //of doing that, skip this work. + this.defining = true; + + if (this.depCount < 1 && !this.defined) { + if (isFunction(factory)) { + //If there is an error listener, favor passing + //to that instead of throwing an error. + if (this.events.error) { + try { + exports = context.execCb(id, factory, depExports, exports); + } catch (e) { + err = e; + } + } else { + exports = context.execCb(id, factory, depExports, exports); + } + + if (this.map.isDefine) { + //If setting exports via 'module' is in play, + //favor that over return value and exports. After that, + //favor a non-undefined return value over exports use. + cjsModule = this.module; + if (cjsModule && + cjsModule.exports !== undefined && + //Make sure it is not already the exports value + cjsModule.exports !== this.exports) { + exports = cjsModule.exports; + } else if (exports === undefined && this.usingExports) { + //exports already set the defined value. + exports = this.exports; + } + } + + if (err) { + err.requireMap = this.map; + err.requireModules = [this.map.id]; + err.requireType = 'define'; + return onError((this.error = err)); + } + + } else { + //Just a literal value + exports = factory; + } + + this.exports = exports; + + if (this.map.isDefine && !this.ignore) { + defined[id] = exports; + + if (req.onResourceLoad) { + req.onResourceLoad(context, this.map, this.depMaps); + } + } + + //Clean up + delete registry[id]; + + this.defined = true; + } + + //Finished the define stage. Allow calling check again + //to allow define notifications below in the case of a + //cycle. + this.defining = false; + + if (this.defined && !this.defineEmitted) { + this.defineEmitted = true; + this.emit('defined', this.exports); + this.defineEmitComplete = true; + } + + } + }, + + callPlugin: function () { + var map = this.map, + id = map.id, + //Map already normalized the prefix. + pluginMap = makeModuleMap(map.prefix); + + //Mark this as a dependency for this plugin, so it + //can be traced for cycles. + this.depMaps.push(pluginMap); + + on(pluginMap, 'defined', bind(this, function (plugin) { + var load, normalizedMap, normalizedMod, + name = this.map.name, + parentName = this.map.parentMap ? this.map.parentMap.name : null, + localRequire = context.makeRequire(map.parentMap, { + enableBuildCallback: true + }); + + //If current map is not normalized, wait for that + //normalized name to load instead of continuing. + if (this.map.unnormalized) { + //Normalize the ID if the plugin allows it. + if (plugin.normalize) { + name = plugin.normalize(name, function (name) { + return normalize(name, parentName, true); + }) || ''; + } + + //prefix and name should already be normalized, no need + //for applying map config again either. + normalizedMap = makeModuleMap(map.prefix + '!' + name, + this.map.parentMap); + on(normalizedMap, + 'defined', bind(this, function (value) { + this.init([], function () { return value; }, null, { + enabled: true, + ignore: true + }); + })); + + normalizedMod = getOwn(registry, normalizedMap.id); + if (normalizedMod) { + //Mark this as a dependency for this plugin, so it + //can be traced for cycles. + this.depMaps.push(normalizedMap); + + if (this.events.error) { + normalizedMod.on('error', bind(this, function (err) { + this.emit('error', err); + })); + } + normalizedMod.enable(); + } + + return; + } + + load = bind(this, function (value) { + this.init([], function () { return value; }, null, { + enabled: true + }); + }); + + load.error = bind(this, function (err) { + this.inited = true; + this.error = err; + err.requireModules = [id]; + + //Remove temp unnormalized modules for this module, + //since they will never be resolved otherwise now. + eachProp(registry, function (mod) { + if (mod.map.id.indexOf(id + '_unnormalized') === 0) { + cleanRegistry(mod.map.id); + } + }); + + onError(err); + }); + + //Allow plugins to load other code without having to know the + //context or how to 'complete' the load. + load.fromText = bind(this, function (text, textAlt) { + /*jslint evil: true */ + var moduleName = map.name, + moduleMap = makeModuleMap(moduleName), + hasInteractive = useInteractive; + + //As of 2.1.0, support just passing the text, to reinforce + //fromText only being called once per resource. Still + //support old style of passing moduleName but discard + //that moduleName in favor of the internal ref. + if (textAlt) { + text = textAlt; + } + + //Turn off interactive script matching for IE for any define + //calls in the text, then turn it back on at the end. + if (hasInteractive) { + useInteractive = false; + } + + //Prime the system by creating a module instance for + //it. + getModule(moduleMap); + + //Transfer any config to this other module. + if (hasProp(config.config, id)) { + config.config[moduleName] = config.config[id]; + } + + try { + req.exec(text); + } catch (e) { + return onError(makeError('fromtexteval', + 'fromText eval for ' + id + + ' failed: ' + e, + e, + [id])); + } + + if (hasInteractive) { + useInteractive = true; + } + + //Mark this as a dependency for the plugin + //resource + this.depMaps.push(moduleMap); + + //Support anonymous modules. + context.completeLoad(moduleName); + + //Bind the value of that module to the value for this + //resource ID. + localRequire([moduleName], load); + }); + + //Use parentName here since the plugin's name is not reliable, + //could be some weird string with no path that actually wants to + //reference the parentName's path. + plugin.load(map.name, localRequire, load, config); + })); + + context.enable(pluginMap, this); + this.pluginMaps[pluginMap.id] = pluginMap; + }, + + enable: function () { + this.enabled = true; + + //Set flag mentioning that the module is enabling, + //so that immediate calls to the defined callbacks + //for dependencies do not trigger inadvertent load + //with the depCount still being zero. + this.enabling = true; + + //Enable each dependency + each(this.depMaps, bind(this, function (depMap, i) { + var id, mod, handler; + + if (typeof depMap === 'string') { + //Dependency needs to be converted to a depMap + //and wired up to this module. + depMap = makeModuleMap(depMap, + (this.map.isDefine ? this.map : this.map.parentMap), + false, + !this.skipMap); + this.depMaps[i] = depMap; + + handler = getOwn(handlers, depMap.id); + + if (handler) { + this.depExports[i] = handler(this); + return; + } + + this.depCount += 1; + + on(depMap, 'defined', bind(this, function (depExports) { + this.defineDep(i, depExports); + this.check(); + })); + + if (this.errback) { + on(depMap, 'error', this.errback); + } + } + + id = depMap.id; + mod = registry[id]; + + //Skip special modules like 'require', 'exports', 'module' + //Also, don't call enable if it is already enabled, + //important in circular dependency cases. + if (!hasProp(handlers, id) && mod && !mod.enabled) { + context.enable(depMap, this); + } + })); + + //Enable each plugin that is used in + //a dependency + eachProp(this.pluginMaps, bind(this, function (pluginMap) { + var mod = getOwn(registry, pluginMap.id); + if (mod && !mod.enabled) { + context.enable(pluginMap, this); + } + })); + + this.enabling = false; + + this.check(); + }, + + on: function (name, cb) { + var cbs = this.events[name]; + if (!cbs) { + cbs = this.events[name] = []; + } + cbs.push(cb); + }, + + emit: function (name, evt) { + each(this.events[name], function (cb) { + cb(evt); + }); + if (name === 'error') { + //Now that the error handler was triggered, remove + //the listeners, since this broken Module instance + //can stay around for a while in the registry. + delete this.events[name]; + } + } + }; + + function callGetModule(args) { + //Skip modules already defined. + if (!hasProp(defined, args[0])) { + getModule(makeModuleMap(args[0], null, true)).init(args[1], args[2]); + } + } + + function removeListener(node, func, name, ieName) { + //Favor detachEvent because of IE9 + //issue, see attachEvent/addEventListener comment elsewhere + //in this file. + if (node.detachEvent && !isOpera) { + //Probably IE. If not it will throw an error, which will be + //useful to know. + if (ieName) { + node.detachEvent(ieName, func); + } + } else { + node.removeEventListener(name, func, false); + } + } + + /** + * Given an event from a script node, get the requirejs info from it, + * and then removes the event listeners on the node. + * @param {Event} evt + * @returns {Object} + */ + function getScriptData(evt) { + //Using currentTarget instead of target for Firefox 2.0's sake. Not + //all old browsers will be supported, but this one was easy enough + //to support and still makes sense. + var node = evt.currentTarget || evt.srcElement; + + //Remove the listeners once here. + removeListener(node, context.onScriptLoad, 'load', 'onreadystatechange'); + removeListener(node, context.onScriptError, 'error'); + + return { + node: node, + id: node && node.getAttribute('data-requiremodule') + }; + } + + function intakeDefines() { + var args; + + //Any defined modules in the global queue, intake them now. + takeGlobalQueue(); + + //Make sure any remaining defQueue items get properly processed. + while (defQueue.length) { + args = defQueue.shift(); + if (args[0] === null) { + return onError(makeError('mismatch', 'Mismatched anonymous define() module: ' + args[args.length - 1])); + } else { + //args are id, deps, factory. Should be normalized by the + //define() function. + callGetModule(args); + } + } + } + + context = { + config: config, + contextName: contextName, + registry: registry, + defined: defined, + urlFetched: urlFetched, + defQueue: defQueue, + Module: Module, + makeModuleMap: makeModuleMap, + nextTick: req.nextTick, + + /** + * Set a configuration for the context. + * @param {Object} cfg config object to integrate. + */ + configure: function (cfg) { + //Make sure the baseUrl ends in a slash. + if (cfg.baseUrl) { + if (cfg.baseUrl.charAt(cfg.baseUrl.length - 1) !== '/') { + cfg.baseUrl += '/'; + } + } + + //Save off the paths and packages since they require special processing, + //they are additive. + var pkgs = config.pkgs, + shim = config.shim, + objs = { + paths: true, + config: true, + map: true + }; + + eachProp(cfg, function (value, prop) { + if (objs[prop]) { + if (prop === 'map') { + mixin(config[prop], value, true, true); + } else { + mixin(config[prop], value, true); + } + } else { + config[prop] = value; + } + }); + + //Merge shim + if (cfg.shim) { + eachProp(cfg.shim, function (value, id) { + //Normalize the structure + if (isArray(value)) { + value = { + deps: value + }; + } + if ((value.exports || value.init) && !value.exportsFn) { + value.exportsFn = context.makeShimExports(value); + } + shim[id] = value; + }); + config.shim = shim; + } + + //Adjust packages if necessary. + if (cfg.packages) { + each(cfg.packages, function (pkgObj) { + var location; + + pkgObj = typeof pkgObj === 'string' ? { name: pkgObj } : pkgObj; + location = pkgObj.location; + + //Create a brand new object on pkgs, since currentPackages can + //be passed in again, and config.pkgs is the internal transformed + //state for all package configs. + pkgs[pkgObj.name] = { + name: pkgObj.name, + location: location || pkgObj.name, + //Remove leading dot in main, so main paths are normalized, + //and remove any trailing .js, since different package + //envs have different conventions: some use a module name, + //some use a file name. + main: (pkgObj.main || 'main') + .replace(currDirRegExp, '') + .replace(jsSuffixRegExp, '') + }; + }); + + //Done with modifications, assing packages back to context config + config.pkgs = pkgs; + } + + //If there are any "waiting to execute" modules in the registry, + //update the maps for them, since their info, like URLs to load, + //may have changed. + eachProp(registry, function (mod, id) { + //If module already has init called, since it is too + //late to modify them, and ignore unnormalized ones + //since they are transient. + if (!mod.inited && !mod.map.unnormalized) { + mod.map = makeModuleMap(id); + } + }); + + //If a deps array or a config callback is specified, then call + //require with those args. This is useful when require is defined as a + //config object before require.js is loaded. + if (cfg.deps || cfg.callback) { + context.require(cfg.deps || [], cfg.callback); + } + }, + + makeShimExports: function (value) { + function fn() { + var ret; + if (value.init) { + ret = value.init.apply(global, arguments); + } + return ret || (value.exports && getGlobal(value.exports)); + } + return fn; + }, + + makeRequire: function (relMap, options) { + options = options || {}; + + function localRequire(deps, callback, errback) { + var id, map, requireMod; + + if (options.enableBuildCallback && callback && isFunction(callback)) { + callback.__requireJsBuild = true; + } + + if (typeof deps === 'string') { + if (isFunction(callback)) { + //Invalid call + return onError(makeError('requireargs', 'Invalid require call'), errback); + } + + //If require|exports|module are requested, get the + //value for them from the special handlers. Caveat: + //this only works while module is being defined. + if (relMap && hasProp(handlers, deps)) { + return handlers[deps](registry[relMap.id]); + } + + //Synchronous access to one module. If require.get is + //available (as in the Node adapter), prefer that. + if (req.get) { + return req.get(context, deps, relMap); + } + + //Normalize module name, if it contains . or .. + map = makeModuleMap(deps, relMap, false, true); + id = map.id; + + if (!hasProp(defined, id)) { + return onError(makeError('notloaded', 'Module name "' + + id + + '" has not been loaded yet for context: ' + + contextName + + (relMap ? '' : '. Use require([])'))); + } + return defined[id]; + } + + //Grab defines waiting in the global queue. + intakeDefines(); + + //Mark all the dependencies as needing to be loaded. + context.nextTick(function () { + //Some defines could have been added since the + //require call, collect them. + intakeDefines(); + + requireMod = getModule(makeModuleMap(null, relMap)); + + //Store if map config should be applied to this require + //call for dependencies. + requireMod.skipMap = options.skipMap; + + requireMod.init(deps, callback, errback, { + enabled: true + }); + + checkLoaded(); + }); + + return localRequire; + } + + mixin(localRequire, { + isBrowser: isBrowser, + + /** + * Converts a module name + .extension into an URL path. + * *Requires* the use of a module name. It does not support using + * plain URLs like nameToUrl. + */ + toUrl: function (moduleNamePlusExt) { + var ext, url, + index = moduleNamePlusExt.lastIndexOf('.'), + segment = moduleNamePlusExt.split('/')[0], + isRelative = segment === '.' || segment === '..'; + + //Have a file extension alias, and it is not the + //dots from a relative path. + if (index !== -1 && (!isRelative || index > 1)) { + ext = moduleNamePlusExt.substring(index, moduleNamePlusExt.length); + moduleNamePlusExt = moduleNamePlusExt.substring(0, index); + } + + url = context.nameToUrl(normalize(moduleNamePlusExt, + relMap && relMap.id, true), ext || '.fake'); + return ext ? url : url.substring(0, url.length - 5); + }, + + defined: function (id) { + return hasProp(defined, makeModuleMap(id, relMap, false, true).id); + }, + + specified: function (id) { + id = makeModuleMap(id, relMap, false, true).id; + return hasProp(defined, id) || hasProp(registry, id); + } + }); + + //Only allow undef on top level require calls + if (!relMap) { + localRequire.undef = function (id) { + //Bind any waiting define() calls to this context, + //fix for #408 + takeGlobalQueue(); + + var map = makeModuleMap(id, relMap, true), + mod = getOwn(registry, id); + + delete defined[id]; + delete urlFetched[map.url]; + delete undefEvents[id]; + + if (mod) { + //Hold on to listeners in case the + //module will be attempted to be reloaded + //using a different config. + if (mod.events.defined) { + undefEvents[id] = mod.events; + } + + cleanRegistry(id); + } + }; + } + + return localRequire; + }, + + /** + * Called to enable a module if it is still in the registry + * awaiting enablement. A second arg, parent, the parent module, + * is passed in for context, when this method is overriden by + * the optimizer. Not shown here to keep code compact. + */ + enable: function (depMap) { + var mod = getOwn(registry, depMap.id); + if (mod) { + getModule(depMap).enable(); + } + }, + + /** + * Internal method used by environment adapters to complete a load event. + * A load event could be a script load or just a load pass from a synchronous + * load call. + * @param {String} moduleName the name of the module to potentially complete. + */ + completeLoad: function (moduleName) { + var found, args, mod, + shim = getOwn(config.shim, moduleName) || {}, + shExports = shim.exports; + + takeGlobalQueue(); + + while (defQueue.length) { + args = defQueue.shift(); + if (args[0] === null) { + args[0] = moduleName; + //If already found an anonymous module and bound it + //to this name, then this is some other anon module + //waiting for its completeLoad to fire. + if (found) { + break; + } + found = true; + } else if (args[0] === moduleName) { + //Found matching define call for this script! + found = true; + } + + callGetModule(args); + } + + //Do this after the cycle of callGetModule in case the result + //of those calls/init calls changes the registry. + mod = getOwn(registry, moduleName); + + if (!found && !hasProp(defined, moduleName) && mod && !mod.inited) { + if (config.enforceDefine && (!shExports || !getGlobal(shExports))) { + if (hasPathFallback(moduleName)) { + return; + } else { + return onError(makeError('nodefine', + 'No define call for ' + moduleName, + null, + [moduleName])); + } + } else { + //A script that does not call define(), so just simulate + //the call for it. + callGetModule([moduleName, (shim.deps || []), shim.exportsFn]); + } + } + + checkLoaded(); + }, + + /** + * Converts a module name to a file path. Supports cases where + * moduleName may actually be just an URL. + * Note that it **does not** call normalize on the moduleName, + * it is assumed to have already been normalized. This is an + * internal API, not a public one. Use toUrl for the public API. + */ + nameToUrl: function (moduleName, ext) { + var paths, pkgs, pkg, pkgPath, syms, i, parentModule, url, + parentPath; + + //If a colon is in the URL, it indicates a protocol is used and it is just + //an URL to a file, or if it starts with a slash, contains a query arg (i.e. ?) + //or ends with .js, then assume the user meant to use an url and not a module id. + //The slash is important for protocol-less URLs as well as full paths. + if (req.jsExtRegExp.test(moduleName)) { + //Just a plain path, not module name lookup, so just return it. + //Add extension if it is included. This is a bit wonky, only non-.js things pass + //an extension, this method probably needs to be reworked. + url = moduleName + (ext || ''); + } else { + //A module that needs to be converted to a path. + paths = config.paths; + pkgs = config.pkgs; + + syms = moduleName.split('/'); + //For each module name segment, see if there is a path + //registered for it. Start with most specific name + //and work up from it. + for (i = syms.length; i > 0; i -= 1) { + parentModule = syms.slice(0, i).join('/'); + pkg = getOwn(pkgs, parentModule); + parentPath = getOwn(paths, parentModule); + if (parentPath) { + //If an array, it means there are a few choices, + //Choose the one that is desired + if (isArray(parentPath)) { + parentPath = parentPath[0]; + } + syms.splice(0, i, parentPath); + break; + } else if (pkg) { + //If module name is just the package name, then looking + //for the main module. + if (moduleName === pkg.name) { + pkgPath = pkg.location + '/' + pkg.main; + } else { + pkgPath = pkg.location; + } + syms.splice(0, i, pkgPath); + break; + } + } + + //Join the path parts together, then figure out if baseUrl is needed. + url = syms.join('/'); + url += (ext || (/\?/.test(url) ? '' : '.js')); + url = (url.charAt(0) === '/' || url.match(/^[\w\+\.\-]+:/) ? '' : config.baseUrl) + url; + } + + return config.urlArgs ? url + + ((url.indexOf('?') === -1 ? '?' : '&') + + config.urlArgs) : url; + }, + + //Delegates to req.load. Broken out as a separate function to + //allow overriding in the optimizer. + load: function (id, url) { + req.load(context, id, url); + }, + + /** + * Executes a module callack function. Broken out as a separate function + * solely to allow the build system to sequence the files in the built + * layer in the right sequence. + * + * @private + */ + execCb: function (name, callback, args, exports) { + return callback.apply(exports, args); + }, + + /** + * callback for script loads, used to check status of loading. + * + * @param {Event} evt the event from the browser for the script + * that was loaded. + */ + onScriptLoad: function (evt) { + //Using currentTarget instead of target for Firefox 2.0's sake. Not + //all old browsers will be supported, but this one was easy enough + //to support and still makes sense. + if (evt.type === 'load' || + (readyRegExp.test((evt.currentTarget || evt.srcElement).readyState))) { + //Reset interactive script so a script node is not held onto for + //to long. + interactiveScript = null; + + //Pull out the name of the module and the context. + var data = getScriptData(evt); + context.completeLoad(data.id); + } + }, + + /** + * Callback for script errors. + */ + onScriptError: function (evt) { + var data = getScriptData(evt); + if (!hasPathFallback(data.id)) { + return onError(makeError('scripterror', 'Script error', evt, [data.id])); + } + } + }; + + context.require = context.makeRequire(); + return context; + } + + /** + * Main entry point. + * + * If the only argument to require is a string, then the module that + * is represented by that string is fetched for the appropriate context. + * + * If the first argument is an array, then it will be treated as an array + * of dependency string names to fetch. An optional function callback can + * be specified to execute when all of those dependencies are available. + * + * Make a local req variable to help Caja compliance (it assumes things + * on a require that are not standardized), and to give a short + * name for minification/local scope use. + */ + req = requirejs = function (deps, callback, errback, optional) { + + //Find the right context, use default + var context, config, + contextName = defContextName; + + // Determine if have config object in the call. + if (!isArray(deps) && typeof deps !== 'string') { + // deps is a config object + config = deps; + if (isArray(callback)) { + // Adjust args if there are dependencies + deps = callback; + callback = errback; + errback = optional; + } else { + deps = []; + } + } + + if (config && config.context) { + contextName = config.context; + } + + context = getOwn(contexts, contextName); + if (!context) { + context = contexts[contextName] = req.s.newContext(contextName); + } + + if (config) { + context.configure(config); + } + + return context.require(deps, callback, errback); + }; + + /** + * Support require.config() to make it easier to cooperate with other + * AMD loaders on globally agreed names. + */ + req.config = function (config) { + return req(config); + }; + + /** + * Execute something after the current tick + * of the event loop. Override for other envs + * that have a better solution than setTimeout. + * @param {Function} fn function to execute later. + */ + req.nextTick = typeof setTimeout !== 'undefined' ? function (fn) { + setTimeout(fn, 4); + } : function (fn) { fn(); }; + + /** + * Export require as a global, but only if it does not already exist. + */ + if (!require) { + require = req; + } + + req.version = version; + + //Used to filter out dependencies that are already paths. + req.jsExtRegExp = /^\/|:|\?|\.js$/; + req.isBrowser = isBrowser; + s = req.s = { + contexts: contexts, + newContext: newContext + }; + + //Create default context. + req({}); + + //Exports some context-sensitive methods on global require. + each([ + 'toUrl', + 'undef', + 'defined', + 'specified' + ], function (prop) { + //Reference from contexts instead of early binding to default context, + //so that during builds, the latest instance of the default context + //with its config gets used. + req[prop] = function () { + var ctx = contexts[defContextName]; + return ctx.require[prop].apply(ctx, arguments); + }; + }); + + if (isBrowser) { + head = s.head = document.getElementsByTagName('head')[0]; + //If BASE tag is in play, using appendChild is a problem for IE6. + //When that browser dies, this can be removed. Details in this jQuery bug: + //http://dev.jquery.com/ticket/2709 + baseElement = document.getElementsByTagName('base')[0]; + if (baseElement) { + head = s.head = baseElement.parentNode; + } + } + + /** + * Any errors that require explicitly generates will be passed to this + * function. Intercept/override it if you want custom error handling. + * @param {Error} err the error object. + */ + req.onError = function (err) { + throw err; + }; + + /** + * Does the request to load a module for the browser case. + * Make this a separate function to allow other environments + * to override it. + * + * @param {Object} context the require context to find state. + * @param {String} moduleName the name of the module. + * @param {Object} url the URL to the module. + */ + req.load = function (context, moduleName, url) { + var config = (context && context.config) || {}, + node; + if (isBrowser) { + //In the browser so use a script tag + node = config.xhtml ? + document.createElementNS('http://www.w3.org/1999/xhtml', 'html:script') : + document.createElement('script'); + node.type = config.scriptType || 'text/javascript'; + node.charset = 'utf-8'; + node.async = true; + + node.setAttribute('data-requirecontext', context.contextName); + node.setAttribute('data-requiremodule', moduleName); + + //Set up load listener. Test attachEvent first because IE9 has + //a subtle issue in its addEventListener and script onload firings + //that do not match the behavior of all other browsers with + //addEventListener support, which fire the onload event for a + //script right after the script execution. See: + //https://connect.microsoft.com/IE/feedback/details/648057/script-onload-event-is-not-fired-immediately-after-script-execution + //UNFORTUNATELY Opera implements attachEvent but does not follow the script + //script execution mode. + if (node.attachEvent && + //Check if node.attachEvent is artificially added by custom script or + //natively supported by browser + //read https://github.com/jrburke/requirejs/issues/187 + //if we can NOT find [native code] then it must NOT natively supported. + //in IE8, node.attachEvent does not have toString() + //Note the test for "[native code" with no closing brace, see: + //https://github.com/jrburke/requirejs/issues/273 + !(node.attachEvent.toString && node.attachEvent.toString().indexOf('[native code') < 0) && + !isOpera) { + //Probably IE. IE (at least 6-8) do not fire + //script onload right after executing the script, so + //we cannot tie the anonymous define call to a name. + //However, IE reports the script as being in 'interactive' + //readyState at the time of the define call. + useInteractive = true; + + node.attachEvent('onreadystatechange', context.onScriptLoad); + //It would be great to add an error handler here to catch + //404s in IE9+. However, onreadystatechange will fire before + //the error handler, so that does not help. If addEvenListener + //is used, then IE will fire error before load, but we cannot + //use that pathway given the connect.microsoft.com issue + //mentioned above about not doing the 'script execute, + //then fire the script load event listener before execute + //next script' that other browsers do. + //Best hope: IE10 fixes the issues, + //and then destroys all installs of IE 6-9. + //node.attachEvent('onerror', context.onScriptError); + } else { + node.addEventListener('load', context.onScriptLoad, false); + node.addEventListener('error', context.onScriptError, false); + } + node.src = url; + + //For some cache cases in IE 6-8, the script executes before the end + //of the appendChild execution, so to tie an anonymous define + //call to the module name (which is stored on the node), hold on + //to a reference to this node, but clear after the DOM insertion. + currentlyAddingScript = node; + if (baseElement) { + head.insertBefore(node, baseElement); + } else { + head.appendChild(node); + } + currentlyAddingScript = null; + + return node; + } else if (isWebWorker) { + //In a web worker, use importScripts. This is not a very + //efficient use of importScripts, importScripts will block until + //its script is downloaded and evaluated. However, if web workers + //are in play, the expectation that a build has been done so that + //only one script needs to be loaded anyway. This may need to be + //reevaluated if other use cases become common. + importScripts(url); + + //Account for anonymous modules + context.completeLoad(moduleName); + } + }; + + function getInteractiveScript() { + if (interactiveScript && interactiveScript.readyState === 'interactive') { + return interactiveScript; + } + + eachReverse(scripts(), function (script) { + if (script.readyState === 'interactive') { + return (interactiveScript = script); + } + }); + return interactiveScript; + } + + //Look for a data-main script attribute, which could also adjust the baseUrl. + if (isBrowser) { + //Figure out baseUrl. Get it from the script tag with require.js in it. + eachReverse(scripts(), function (script) { + //Set the 'head' where we can append children by + //using the script's parent. + if (!head) { + head = script.parentNode; + } + + //Look for a data-main attribute to set main script for the page + //to load. If it is there, the path to data main becomes the + //baseUrl, if it is not already set. + dataMain = script.getAttribute('data-main'); + if (dataMain) { + //Set final baseUrl if there is not already an explicit one. + if (!cfg.baseUrl) { + //Pull off the directory of data-main for use as the + //baseUrl. + src = dataMain.split('/'); + mainScript = src.pop(); + subPath = src.length ? src.join('/') + '/' : './'; + + cfg.baseUrl = subPath; + dataMain = mainScript; + } + + //Strip off any trailing .js since dataMain is now + //like a module name. + dataMain = dataMain.replace(jsSuffixRegExp, ''); + + //Put the data-main script in the files to load. + cfg.deps = cfg.deps ? cfg.deps.concat(dataMain) : [dataMain]; + + return true; + } + }); + } + + /** + * The function that handles definitions of modules. Differs from + * require() in that a string for the module should be the first argument, + * and the function to execute after dependencies are loaded should + * return a value to define the module corresponding to the first argument's + * name. + */ + define = function (name, deps, callback) { + var node, context; + + //Allow for anonymous modules + if (typeof name !== 'string') { + //Adjust args appropriately + callback = deps; + deps = name; + name = null; + } + + //This module may not have dependencies + if (!isArray(deps)) { + callback = deps; + deps = []; + } + + //If no name, and callback is a function, then figure out if it a + //CommonJS thing with dependencies. + if (!deps.length && isFunction(callback)) { + //Remove comments from the callback string, + //look for require calls, and pull them into the dependencies, + //but only if there are function args. + if (callback.length) { + callback + .toString() + .replace(commentRegExp, '') + .replace(cjsRequireRegExp, function (match, dep) { + deps.push(dep); + }); + + //May be a CommonJS thing even without require calls, but still + //could use exports, and module. Avoid doing exports and module + //work though if it just needs require. + //REQUIRES the function to expect the CommonJS variables in the + //order listed below. + deps = (callback.length === 1 ? ['require'] : ['require', 'exports', 'module']).concat(deps); + } + } + + //If in IE 6-8 and hit an anonymous define() call, do the interactive + //work. + if (useInteractive) { + node = currentlyAddingScript || getInteractiveScript(); + if (node) { + if (!name) { + name = node.getAttribute('data-requiremodule'); + } + context = contexts[node.getAttribute('data-requirecontext')]; + } + } + + //Always save off evaluating the def call until the script onload handler. + //This allows multiple modules to be in a file without prematurely + //tracing dependencies, and allows for anonymous module support, + //where the module name is not known until the script onload event + //occurs. If no context, use the global queue, and get it processed + //in the onscript load callback. + (context ? context.defQueue : globalDefQueue).push([name, deps, callback]); + }; + + define.amd = { + jQuery: true + }; + + + /** + * Executes the text. Normally just uses eval, but can be modified + * to use a better, environment-specific call. Only used for transpiling + * loader plugins, not for plain JS modules. + * @param {String} text the text to execute/evaluate. + */ + req.exec = function (text) { + /*jslint evil: true */ + return eval(text); + }; + + //Set up with config info. + req(cfg); +}(this)); diff --git a/lib/sugar-web/LICENSE b/lib/sugar-web/LICENSE new file mode 100644 index 0000000..d645695 --- /dev/null +++ b/lib/sugar-web/LICENSE @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/lib/sugar-web/README.md b/lib/sugar-web/README.md new file mode 100644 index 0000000..de87a72 --- /dev/null +++ b/lib/sugar-web/README.md @@ -0,0 +1,7 @@ +Sugar Web +========= + +These are the tools that a developer can use to make a web +activity. + +For details see: http://developer.sugarlabs.org/ diff --git a/lib/sugar-web/activity/activity.js b/lib/sugar-web/activity/activity.js new file mode 100644 index 0000000..94369a3 --- /dev/null +++ b/lib/sugar-web/activity/activity.js @@ -0,0 +1,169 @@ +define(["webL10n", + "sugar-web/activity/shortcut", + "sugar-web/bus", + "sugar-web/env", + "sugar-web/datastore", + "sugar-web/presence", + "sugar-web/graphics/icon", + "sugar-web/graphics/activitypalette"], function ( + l10n, shortcut, bus, env, datastore, presence, icon, activitypalette) { + + 'use strict'; + + var datastoreObject = null; + + var presenceCallback = null; + var presenceResponse = null; + + var activity = {}; + + activity.setup = function () { + bus.listen(); + + l10n.start(); + + function sendPauseEvent() { + var pauseEvent = document.createEvent("CustomEvent"); + pauseEvent.initCustomEvent('activityPause', false, false, { + 'cancelable': true + }); + window.dispatchEvent(pauseEvent); + } + bus.onNotification("activity.pause", sendPauseEvent); + + // An activity that handles 'activityStop' can also call + // event.preventDefault() to prevent the close, and explicitly + // call activity.close() after storing. + + function sendStopEvent() { + var stopEvent = document.createEvent("CustomEvent"); + stopEvent.initCustomEvent('activityStop', false, false, { + 'cancelable': true + }); + var result = window.dispatchEvent(stopEvent); + if (result) { + datastoreObject.save(function() { + activity.close(); + }); + } + } + bus.onNotification("activity.stop", sendStopEvent); + + datastoreObject = new datastore.DatastoreObject(); + + var activityButton = document.getElementById("activity-button"); + + var activityPalette = new activitypalette.ActivityPalette( + activityButton, datastoreObject); + + // Colorize the activity icon. + activity.getXOColor(function (error, colors) { + icon.colorize(activityButton, colors); + var invokerElem = + document.querySelector("#activity-palette .palette-invoker"); + icon.colorize(invokerElem, colors); + }); + + // Make the activity stop with the stop button. + var stopButton = document.getElementById("stop-button"); + stopButton.addEventListener('click', function (e) { + sendStopEvent(); + }); + + shortcut.add("Ctrl", "Q", this.close); + + env.getEnvironment(function (error, environment) { + if (!environment.objectId) { + datastoreObject.setMetadata({ + "title": environment.activityName + " Activity", + "title_set_by_user": "0", + "activity": environment.bundleId, + "activity_id": environment.activityId + }); + } + if (env.isSugarizer()) { + presence.joinNetwork(function(error, presence) { + if (environment.sharedId) { + presence.joinSharedActivity(environment.sharedId, function() { + var group_color = presence.getSharedInfo().colorvalue; + icon.colorize(activityButton, group_color); + datastoreObject.setMetadata({"buddy_color":group_color}); + datastoreObject.save(function() {}); + }); + } + if (presenceCallback) { + presenceCallback(error, presence); + } else { + presenceResponse = {error: error, presence: presence}; + } + }); + } + datastoreObject.save(function () { + datastoreObject.getMetadata(function (error, metadata) { + activityPalette.setTitleDescription(metadata); + }); + }); + if (environment.standAlone) { + document.getElementById("stop-button").style.visibility = "hidden"; + }; + }); + }; + + activity.getDatastoreObject = function () { + return datastoreObject; + }; + + activity.getPresenceObject = function(connectionCallback) { + if (presenceResponse == null) { + presenceCallback = connectionCallback; + } else { + connectionCallback(presenceResponse.error, presenceResponse.presence); + presenceResponse = null; + } + return presence; + }; + + activity.getXOColor = function (callback) { + function onResponseReceived(error, result) { + if (error === null) { + callback(null, { + stroke: result[0][0], + fill: result[0][1] + }); + } else { + callback(null, { + stroke: "#00A0FF", + fill: "#8BFF7A" + }); + } + } + + bus.sendMessage("activity.get_xo_color", [], onResponseReceived); + }; + + activity.close = function (callback) { + function onResponseReceived(error, result) { + if (error === null) { + callback(null); + } else { + callback(error, null); + } + } + + bus.sendMessage("activity.close", [], onResponseReceived); + }; + + activity.showObjectChooser = function (callback) { + function onResponseReceived(error, result) { + if (error === null) { + callback(null, result[0]); + } else { + callback(error, null); + } + } + + bus.sendMessage("activity.show_object_chooser", [], onResponseReceived); + }; + + return activity; +}); diff --git a/lib/sugar-web/activity/shortcut.js b/lib/sugar-web/activity/shortcut.js new file mode 100644 index 0000000..508e92a --- /dev/null +++ b/lib/sugar-web/activity/shortcut.js @@ -0,0 +1,60 @@ +define(function () { + + 'use strict'; + + var shortcut = {}; + + shortcut._allShortcuts = []; + + shortcut.add = function (modifiersString, key, callback) { + // Parse the modifiers. For example "Ctrl+Alt" will become + // {'ctrlKey': true, 'altKey': true, 'shiftKey': false} + var modifiersList = modifiersString.toLowerCase().split("+"); + var modifiers = { + 'ctrlKey': modifiersList.indexOf('ctrl') >= 0, + 'altKey': modifiersList.indexOf('alt') >= 0, + 'shiftKey': modifiersList.indexOf('shift') >= 0 + }; + + this._allShortcuts.push({ + 'modifiers': modifiers, + 'key': key.toLowerCase(), + 'callback': callback + }); + }; + + document.onkeypress = function (e) { + e = e || window.event; + + var modifiers = { + 'ctrlKey': e.ctrlKey, + 'altKey': e.altKey, + 'shiftKey': e.shiftKey + }; + + // Obtain the key + var charCode; + if (typeof e.which == "number") { + charCode = e.which; + } else { + charCode = e.keyCode; + } + var key = String.fromCharCode(charCode).toLowerCase(); + + // Search for a matching shortcut + for (var i = 0; i < shortcut._allShortcuts.length; i += 1) { + var currentShortcut = shortcut._allShortcuts[i]; + + var match = currentShortcut.key == key && + currentShortcut.modifiers.ctrlKey == modifiers.ctrlKey && + currentShortcut.modifiers.altKey == modifiers.altKey && + currentShortcut.modifiers.shiftKey == modifiers.shiftKey; + if (match) { + currentShortcut.callback(); + return; + } + } + }; + + return shortcut; +}); diff --git a/lib/sugar-web/bus.js b/lib/sugar-web/bus.js new file mode 100644 index 0000000..2cdfa4a --- /dev/null +++ b/lib/sugar-web/bus.js @@ -0,0 +1,14 @@ +define(["sugar-web/env", "sugar-web/bus/sugarizer", "sugar-web/bus/sugaros"], function(env, sugarizer, sugaros) { + + 'use strict'; + + var bus; + + if (env.isSugarizer()) { + bus = sugarizer; + } else { + bus = sugaros; + } + + return bus; +}); diff --git a/lib/sugar-web/bus/sugarizer.js b/lib/sugar-web/bus/sugarizer.js new file mode 100644 index 0000000..b61e035 --- /dev/null +++ b/lib/sugar-web/bus/sugarizer.js @@ -0,0 +1,82 @@ +define(["sugar-web/env"], function (env) { + + 'use strict'; + + var bus = {}; + + function WebSocketClient(environment) { + } + + WebSocketClient.prototype.send = function (data) { + }; + + WebSocketClient.prototype.close = function () { + }; + + function InputStream() { + } + + InputStream.prototype.open = function (callback) { + }; + + InputStream.prototype.read = function (count, callback) { + }; + + InputStream.prototype.gotData = function (buffer) { + }; + + InputStream.prototype.close = function (callback) { + }; + + function OutputStream() { + } + + OutputStream.prototype.open = function (callback) { + }; + + OutputStream.prototype.write = function (data) { + }; + + OutputStream.prototype.close = function (callback) { + }; + + bus.createInputStream = function (callback) { + }; + + bus.createOutputStream = function (callback) { + }; + + bus.sendMessage = function (method, params, callback) { + if (method == "activity.close") { + window.location = "../../index.html"; + } else if (method == "activity.get_xo_color") { + var color = {stroke: "#FF2B34", fill: "#005FE4"}; + if (typeof chrome != 'undefined' && chrome.app && chrome.app.runtime) { + chrome.storage.local.get("sugar_settings", function(values) { + color = JSON.parse(values.sugar_settings).colorvalue; + callback(null, [[color.fill, color.stroke]]); + }); + } else if (typeof(Storage)!=="undefined" && typeof(window.localStorage)!=="undefined") { + try { + color = JSON.parse(window.localStorage.getItem("sugar_settings")).colorvalue; + } catch(err) {} + } + callback(null, [[color.fill, color.stroke]]); + } + return; + }; + + bus.onNotification = function (method, callback) { + }; + + bus.sendBinary = function (buffer, callback) { + }; + + bus.listen = function (customClient) { + }; + + bus.close = function () { + }; + + return bus; +}); diff --git a/lib/sugar-web/bus/sugaros.js b/lib/sugar-web/bus/sugaros.js new file mode 100644 index 0000000..f8279b7 --- /dev/null +++ b/lib/sugar-web/bus/sugaros.js @@ -0,0 +1,223 @@ +define(["sugar-web/env"], function (env) { + + 'use strict'; + + var lastId = 0; + var callbacks = {}; + var notificationCallbacks = {}; + var client = null; + var inputStreams = []; + + function WebSocketClient(environment) { + this.queue = []; + this.socket = null; + + var that = this; + + env.getEnvironment(function (error, environment) { + var port = environment.apiSocketPort; + var socket = new WebSocket("ws://127.0.0.1:" + port); + + socket.binaryType = "arraybuffer"; + + socket.onopen = function () { + var params = [environment.activityId, + environment.apiSocketKey]; + + socket.send(JSON.stringify({ + "method": "authenticate", + "id": "authenticate", + "params": params + })); + + while (that.queue.length > 0) { + socket.send(that.queue.shift()); + } + }; + + socket.onmessage = function (message) { + that.onMessage(message); + }; + + that.socket = socket; + }); + } + + WebSocketClient.prototype.send = function (data) { + if (this.socket && this.socket.readyState == WebSocket.OPEN) { + this.socket.send(data); + } else { + this.queue.push(data); + } + }; + + WebSocketClient.prototype.close = function () { + this.socket.close(); + }; + + var bus = {}; + + function InputStream() { + this.streamId = null; + this.readCallback = null; + } + + InputStream.prototype.open = function (callback) { + var that = this; + bus.sendMessage("open_stream", [], function (error, result) { + that.streamId = result[0]; + inputStreams[that.streamId] = that; + callback(error); + }); + }; + + InputStream.prototype.read = function (count, callback) { + if (this.readCallback) { + throw new Error("Read already in progress"); + } + + this.readCallback = callback; + + var buffer = new ArrayBuffer(8); + + var headerView = new Uint8Array(buffer, 0, 1); + headerView[0] = this.streamId; + + var bodyView = new Uint32Array(buffer, 4, 1); + bodyView[0] = count; + + bus.sendBinary(buffer); + }; + + InputStream.prototype.gotData = function (buffer) { + var callback = this.readCallback; + + this.readCallback = null; + + callback(null, buffer); + }; + + InputStream.prototype.close = function (callback) { + var that = this; + + function onStreamClosed(error, result) { + if (callback) { + callback(error); + } + delete inputStreams[that.streamId]; + } + + bus.sendMessage("close_stream", [this.streamId], onStreamClosed); + }; + + function OutputStream() { + this.streamId = null; + } + + OutputStream.prototype.open = function (callback) { + var that = this; + bus.sendMessage("open_stream", [], function (error, result) { + that.streamId = result[0]; + callback(error); + }); + }; + + OutputStream.prototype.write = function (data) { + var buffer = new ArrayBuffer(data.byteLength + 1); + + var bufferView = new Uint8Array(buffer); + bufferView[0] = this.streamId; + bufferView.set(new Uint8Array(data), 1); + + bus.sendBinary(buffer); + }; + + OutputStream.prototype.close = function (callback) { + bus.sendMessage("close_stream", [this.streamId], callback); + }; + + bus.createInputStream = function (callback) { + return new InputStream(); + }; + + bus.createOutputStream = function (callback) { + return new OutputStream(); + }; + + bus.sendMessage = function (method, params, callback) { + var message = { + "method": method, + "id": lastId, + "params": params, + "jsonrpc": "2.0" + }; + + if (callback) { + callbacks[lastId] = callback; + } + + client.send(JSON.stringify(message)); + + lastId++; + }; + + bus.onNotification = function (method, callback) { + notificationCallbacks[method] = callback; + }; + + bus.sendBinary = function (buffer, callback) { + client.send(buffer); + }; + + bus.listen = function (customClient) { + if (customClient) { + client = customClient; + } else { + client = new WebSocketClient(); + } + + client.onMessage = function (message) { + if (typeof message.data != "string") { + var dataView = new Uint8Array(message.data); + var streamId = dataView[0]; + + if (streamId in inputStreams) { + var inputStream = inputStreams[streamId]; + inputStream.gotData(message.data.slice(1)); + } + + return; + } + + var parsed = JSON.parse(message.data); + var responseId = parsed.id; + + if (parsed.method) { + var notificationCallback = notificationCallbacks[parsed.method]; + if (notificationCallback !== undefined) { + notificationCallback(parsed.params); + } + return; + } + + if (responseId in callbacks) { + var callback = callbacks[responseId]; + + if (parsed.error === null) { + callback(null, parsed.result); + } else { + callback(new Error(parsed.error), null); + } + + delete callbacks[responseId]; + } + }; + }; + + bus.close = function () { + client.close(); + client = null; + }; + + return bus; +}); diff --git a/lib/sugar-web/datastore.js b/lib/sugar-web/datastore.js new file mode 100644 index 0000000..c1a396f --- /dev/null +++ b/lib/sugar-web/datastore.js @@ -0,0 +1,14 @@ +define(["sugar-web/env", "sugar-web/datastore/sugarizer", "sugar-web/datastore/sugaros"], function(env, sugarizer, sugaros) { + + 'use strict'; + + var datastore ; + + if (env.isSugarizer()) { + datastore = sugarizer; + } else { + datastore = sugaros; + } + + return datastore; +}); diff --git a/lib/sugar-web/datastore/sugarizer.js b/lib/sugar-web/datastore/sugarizer.js new file mode 100644 index 0000000..58dca4d --- /dev/null +++ b/lib/sugar-web/datastore/sugarizer.js @@ -0,0 +1,331 @@ +define(["sugar-web/bus", "sugar-web/env"], function(bus, env) { + + 'use strict'; + + var datastore = {}; + + var html5storage = {}; + var datastorePrefix = 'sugar_datastore_'; + var datastoreTextPrefix = 'sugar_datastoretext_'; + var initialized = false; + + //- Utility function + + // Get parameter from query string + datastore.getUrlParameter = function(name) { + var match = RegExp('[?&]' + name + '=([^&]*)').exec(window.location.search); + return match && decodeURIComponent(match[1].replace(/\+/g, ' ')); + }; + + // Create a uuid + datastore.createUUID = function() { + var s = []; + var hexDigits = "0123456789abcdef"; + for (var i = 0; i < 36; i++) { + s[i] = hexDigits.substr(Math.floor(Math.random() * 0x10), 1); + } + s[14] = "4"; + s[19] = hexDigits.substr((s[19] & 0x3) | 0x8, 1); + s[8] = s[13] = s[18] = s[23] = "-"; + + var uuid = s.join(""); + return uuid; + }; + + // Callback checker + datastore.callbackChecker = function(callback) { + if (callback === undefined || callback === null) { + callback = function() {}; + } + return callback; + }; + + + //- Static Datastore methods + + // Create a new datastore entry + datastore.create = function(metadata, callback, text) { + var callback_c = datastore.callbackChecker(callback); + var objectId = datastore.createUUID(); + if (text !== undefined) { + if (!html5storage.setValue(datastoreTextPrefix + objectId, text)) { + callback_c(-1, null); + return; + } + metadata["textsize"] = text.length; + } + var sugar_settings = html5storage.getValue("sugar_settings"); + if (sugar_settings) { + metadata["buddy_name"] = sugar_settings.name; + metadata["buddy_color"] = sugar_settings.colorvalue; + } + if (html5storage.setValue(datastorePrefix + objectId, { + metadata: metadata, + text: (text === undefined) ? null : { link: datastoreTextPrefix + objectId } + })) { + callback_c(null, objectId); + } else { + callback_c(-1, null); + } + } + + // Find entries matching an activity type + datastore.find = function(id) { + var results = []; + if (!html5storage.test()) + return results; + for (var key in html5storage.getAll()) { + if (key.substr(0, datastorePrefix.length) == datastorePrefix) { + var entry = html5storage.getValue(key); + entry.objectId = key.substr(datastorePrefix.length); + if (id === undefined || entry.metadata.activity == id) { + results.push(entry); + } + } + } + + return results; + } + + // Remove an entry in the datastore + datastore.remove = function(objectId) { + html5storage.removeValue(datastorePrefix + objectId); + html5storage.removeValue(datastoreTextPrefix + objectId); + } + + //- Instance datastore methods + function DatastoreObject(objectId) { + this.objectId = objectId; + this.newMetadata = {}; + this.newDataAsText = null; + this.toload = false; + + // Init environment from query string values + if (!initialized) { + env.getEnvironment(function() { + initialized = true; + }); + } + + // Init or create objectId if need + var that = this; + if (this.objectId === undefined) { + var env_objectId = window.top.sugar.environment.objectId; + if (env_objectId != null) { + this.objectId = env_objectId; + this.toload = true; + } + } + } + + // Load metadata + DatastoreObject.prototype.getMetadata = function(callback) { + var callback_c = datastore.callbackChecker(callback); + var result = html5storage.getValue(datastorePrefix + this.objectId); + if (result != null) { + this.setMetadata(result.metadata); + this.toload = false; + callback_c(null, result.metadata); + } + }; + + // Load text + DatastoreObject.prototype.loadAsText = function(callback) { + var callback_c = datastore.callbackChecker(callback); + var that = this; + html5storage.waitEndOfLoad(function() { + var result = html5storage.getValue(datastorePrefix + that.objectId); + if (result != null) { + that.setMetadata(result.metadata); + var text = null; + if (result.text) { + text = html5storage.getValue(datastoreTextPrefix + that.objectId); + that.setDataAsText(text); + } + that.toload = false; + callback_c(null, result.metadata, text); + } + }); + }; + + // Set metadata + DatastoreObject.prototype.setMetadata = function(metadata) { + for (var key in metadata) { + this.newMetadata[key] = metadata[key]; + } + }; + + // Set text + DatastoreObject.prototype.setDataAsText = function(text) { + this.newDataAsText = text; + }; + + // Save data + DatastoreObject.prototype.save = function(callback, dontupdatemetadata) { + if (this.objectId === undefined) { + var that = this; + this.newMetadata["timestamp"] = this.newMetadata["creation_time"] = new Date().getTime(); + this.newMetadata["file_size"] = 0; + datastore.create(this.newMetadata, function(error, oid) { + if (error == null) { + that.objectId = oid; + } + }); + } else { + if (this.toload) { + this.getMetadata(null); + this.toload = false; + } + } + var callback_c = datastore.callbackChecker(callback); + if (!dontupdatemetadata) { + this.newMetadata["timestamp"] = new Date().getTime(); + } + var sugar_settings = html5storage.getValue("sugar_settings"); + if (sugar_settings && !dontupdatemetadata) { + this.newMetadata["buddy_name"] = sugar_settings.name; + this.newMetadata["buddy_color"] = sugar_settings.colorvalue; + } + if (this.newDataAsText != null) { + if (!html5storage.setValue(datastoreTextPrefix + this.objectId, this.newDataAsText)) { + callback_c(-1, null); + return; + }; + if (!dontupdatemetadata) { + this.newMetadata["textsize"] = this.newDataAsText.length; + }; + } + if (html5storage.setValue(datastorePrefix + this.objectId, { + metadata: this.newMetadata, + text: (this.newDataAsText === undefined) ? null : { link: datastoreTextPrefix + this.objectId } + })) { + callback_c(null, this.newMetadata, this.newDataAsText); + } else { + callback_c(-1, null); + } + }; + + datastore.DatastoreObject = DatastoreObject; + datastore.localStorage = html5storage; + + + // -- HTML5 local storage handling + + // Load storage - Need for Chrome App + var storageloadedcalls = []; + html5storage.load = function(then) { + if (typeof chrome != 'undefined' && chrome.app && chrome.app.runtime) { + var that = this; + // Currently load, will call then later + if (storageloadedcalls.length != 0) { + storageloadedcalls.push(then); + return; + } + storageloadedcalls.push(then); + chrome.storage.local.get(null, function(values) { + that.values = values; + // Call all waiting functions + for (var i = 0 ; i < storageloadedcalls.length ; i++) { + if (storageloadedcalls[i]) storageloadedcalls[i](); + } + storageloadedcalls = []; + }); + } else { + if (then) then(); + } + }; + html5storage.load(); + + // Wait for end of loading + html5storage.waitEndOfLoad = function(then) { + if (typeof chrome != 'undefined' && chrome.app && chrome.app.runtime) { + if (storageloadedcalls.length != 0) { // HACK: On Chrome OS, wait for the end of load of localStorage in memory + storageloadedcalls.push(then); + return; + }; + } + if (then) { + then(); + } + } + + // Test if HTML5 storage is available + html5storage.test = function() { + if (typeof chrome != 'undefined' && chrome.app && chrome.app.runtime) + return true; + else + return (typeof(Storage) !== "undefined" && typeof(window.localStorage) !== "undefined"); + }; + + // Set a value in the storage + html5storage.setValue = function(key, value) { + if (this.test()) { + try { + if (typeof chrome != 'undefined' && chrome.app && chrome.app.runtime) { + this.values[key] = JSON.stringify(value); + var item = {}; + item[key] = this.values[key]; + chrome.storage.local.set(item, function() { + if (chrome.runtime.lastError) { + console.log("ERROR: Unable to update local storage"); + } + }); + } else { + window.localStorage.setItem(key, JSON.stringify(value)); + } + return true; + } catch (err) { + console.log("ERROR: Unable to update local storage"); + return false; + } + } + }; + + // Get a value in the storage + html5storage.getValue = function(key) { + if (this.test()) { + try { + if (typeof chrome != 'undefined' && chrome.app && chrome.app.runtime) { + return JSON.parse(this.values[key]); + } else { + return JSON.parse(window.localStorage.getItem(key)); + } + } catch (err) { + return null; + } + } + return null; + }; + + // Remove a value in the storage + html5storage.removeValue = function(key) { + if (this.test()) { + try { + if (typeof chrome != 'undefined' && chrome.app && chrome.app.runtime) { + this.values[key] = null; + chrome.storage.local.remove(key); + } else { + window.localStorage.removeItem(key); + } + } catch (err) {} + } + }; + + // Get all values + html5storage.getAll = function() { + if (this.test()) { + try { + if (typeof chrome != 'undefined' && chrome.app && chrome.app.runtime) { + return this.values; + } else { + return window.localStorage; + } + } catch (err) { + return null; + } + } + return null; + }; + + return datastore; +}); diff --git a/lib/sugar-web/datastore/sugaros.js b/lib/sugar-web/datastore/sugaros.js new file mode 100644 index 0000000..ebb3f19 --- /dev/null +++ b/lib/sugar-web/datastore/sugaros.js @@ -0,0 +1,224 @@ +define(["sugar-web/bus", "sugar-web/env"], function (bus, env) { + + 'use strict'; + + var datastore = {}; + + function DatastoreObject(objectId) { + this.objectId = objectId; + this.newMetadata = {}; + + this.ensureObjectId = function (callback) { + var that = this; + + env.getObjectId(function (objectId) { + if (objectId !== null && that.objectId === undefined) { + that.objectId = objectId; + } + callback(); + }); + }; + + this.blobToText = function (blob, callback) { + var reader = new FileReader(); + reader.onload = function (e) { + callback(e.target.result); + }; + reader.readAsText(blob); + }; + + this.blobToArrayBuffer = function (blob, callback) { + var reader = new FileReader(); + reader.onload = function (e) { + callback(e.target.result); + }; + reader.readAsArrayBuffer(blob); + }; + + this.saveText = function (metadata, callback) { + var that = this; + + function onSaved(error, outputStream) { + var blob = new Blob([that.newDataAsText]); + + that.blobToArrayBuffer(blob, function (buffer) { + outputStream.write(buffer); + outputStream.close(callback); + }); + } + + datastore.save(this.objectId, metadata, onSaved); + }; + + this.applyChanges = function (metadata, callback) { + for (var key in this.newMetadata) { + metadata[key] = this.newMetadata[key]; + } + + if (this.newDataAsText !== undefined) { + this.saveText(metadata, callback); + } else { + datastore.setMetadata(this.objectId, metadata, callback); + } + }; + } + + DatastoreObject.prototype.getMetadata = function (callback) { + var that = this; + + this.ensureObjectId(function () { + datastore.getMetadata(that.objectId, callback); + }); + }; + + DatastoreObject.prototype.loadAsText = function (callback) { + var that = this; + var inputStream = null; + var arrayBuffers = []; + var metadata = null; + + function onRead(error, data) { + if (data.byteLength === 0) { + var blob = new Blob(arrayBuffers); + + that.blobToText(blob, function (text) { + callback(null, metadata, text); + }); + + inputStream.close(); + + return; + } + + arrayBuffers.push(data); + + inputStream.read(8192, onRead); + } + + function onLoad(error, loadedMetadata, loadedInputStream) { + metadata = loadedMetadata; + inputStream = loadedInputStream; + + inputStream.read(8192, onRead); + } + + this.ensureObjectId(function () { + datastore.load(that.objectId, onLoad); + }); + }; + + DatastoreObject.prototype.setMetadata = function (metadata) { + for (var key in metadata) { + this.newMetadata[key] = metadata[key]; + } + }; + + DatastoreObject.prototype.setDataAsText = function (text) { + this.newDataAsText = text; + }; + + DatastoreObject.prototype.save = function (callback) { + if (callback === undefined) { + callback = function () {}; + } + + var that = this; + + function onCreated(error, objectId) { + that.objectId = objectId; + that.applyChanges({}, callback); + } + + function onGotMetadata(error, metadata) { + that.applyChanges(metadata, callback); + } + + this.ensureObjectId(function () { + if (that.objectId === undefined) { + datastore.create(that.newMetadata, onCreated); + } else { + datastore.getMetadata(that.objectId, onGotMetadata); + } + }); + }; + + datastore.DatastoreObject = DatastoreObject; + + + datastore.setMetadata = function (objectId, metadata, callback) { + function onResponseReceived(error, result) { + if (callback) { + if (error === null) { + callback(null); + } else { + callback(error); + } + } + } + + var params = [objectId, metadata]; + bus.sendMessage("datastore.set_metadata", params, onResponseReceived); + }; + + datastore.getMetadata = function (objectId, callback) { + function onResponseReceived(error, result) { + if (error === null) { + callback(null, result[0]); + } else { + callback(error, null); + } + } + + var params = [objectId]; + bus.sendMessage("datastore.get_metadata", params, onResponseReceived); + }; + + datastore.load = function (objectId, callback) { + var inputStream = bus.createInputStream(); + + inputStream.open(function (error) { + function onResponseReceived(responseError, result) { + if (responseError === null) { + callback(null, result[0], inputStream); + } else { + callback(responseError, null, null); + } + } + + var params = [objectId, inputStream.streamId]; + bus.sendMessage("datastore.load", params, onResponseReceived); + }); + }; + + datastore.create = function (metadata, callback) { + function onResponseReceived(responseError, result) { + if (responseError === null) { + callback(null, result[0]); + } else { + callback(responseError, null); + } + } + + var params = [metadata]; + bus.sendMessage("datastore.create", params, onResponseReceived); + }; + + datastore.save = function (objectId, metadata, callback) { + var outputStream = bus.createOutputStream(); + + outputStream.open(function (error) { + function onResponseReceived(responseError, result) { + if (responseError === null) { + callback(null, outputStream); + } else { + callback(responseError, null); + } + } + + var params = [objectId, metadata, outputStream.streamId]; + bus.sendMessage("datastore.save", params, onResponseReceived); + }); + }; + + return datastore; +}); diff --git a/lib/sugar-web/dictstore.js b/lib/sugar-web/dictstore.js new file mode 100644 index 0000000..99bfc33 --- /dev/null +++ b/lib/sugar-web/dictstore.js @@ -0,0 +1,68 @@ +define(["sugar-web/activity/activity", "sugar-web/env"], function (activity, env) { + + 'use strict'; + + // This is a helper module that allows to persist key/value data + // using the standard localStorage object. + // + // Usage: + // ------ + // + // // 1. Setup: + // + // dictstore.init(onReadyCallback); + // + // // 2. Use localStorage directly, and then call save(): + // + // var value = localStorage['key']; + // localStorage['key'] = newValue; + // dictstore.save(onSavedCallback); + // + var dictstore = {}; + + dictstore.init = function (callback) { + + if (env.isStandalone()) { + // In standalone mode, use localStorage as is. + callback(); + + } else { + // In Sugar, set localStorage from the datastore. + localStorage.clear(); + + var onLoaded = function (error, metadata, jsonData) { + var data = JSON.parse(jsonData); + for (var i in data) { + localStorage[i] = data[i]; + } + + callback(); + + }; + activity.getDatastoreObject().loadAsText(onLoaded); + } + }; + + // Internally, the key/values are stored as text in the Sugar + // datastore, using the JSON format. + dictstore.save = function (callback) { + if (callback === undefined) { + callback = function () {}; + } + + if (env.isStandalone()) { + // In standalone mode, use localStorage as is. + callback(); + } else { + var datastoreObject = activity.getDatastoreObject(); + var jsonData = JSON.stringify(localStorage); + datastoreObject.setDataAsText(jsonData); + datastoreObject.save(function (error) { + callback(error); + }); + } + }; + + return dictstore; + +}); diff --git a/lib/sugar-web/env.js b/lib/sugar-web/env.js new file mode 100644 index 0000000..4f0ef6b --- /dev/null +++ b/lib/sugar-web/env.js @@ -0,0 +1,108 @@ +define(function () { + + 'use strict'; + + var env = {}; + + env.getEnvironment = function (callback) { + // FIXME: we assume this code runs on the same thread as the + // javascript executed from sugar-toolkit-gtk3 (python) + + if (env.isSugarizer()) { + var getUrlParameter = function(name) { + var match = RegExp('[?&]' + name + '=([^&]*)').exec(window.location.search); + return match && decodeURIComponent(match[1].replace(/\+/g, ' ')); + }; + window.top.sugar = {}; + window.top.sugar.environment = { + activityId: getUrlParameter("aid"), + activityName: getUrlParameter("n"), + bundleId: getUrlParameter("a"), + objectId: getUrlParameter("o"), + sharedId: getUrlParameter("s"), + help: getUrlParameter("h"), + standAlone: getUrlParameter("sa") + }; + if (typeof chrome != 'undefined' && chrome.app && chrome.app.runtime) { + chrome.storage.local.get('sugar_settings', function(values) { + window.top.sugar.environment.user = JSON.parse(values.sugar_settings); + callback(null, window.top.sugar.environment); + }); + } else { + window.top.sugar.environment.user = JSON.parse(localStorage.sugar_settings); + setTimeout(function () { + callback(null, window.top.sugar.environment); + }, 0); + } + } else if (env.isStandalone()) { + setTimeout(function () { + callback(null, {}); + }, 0); + } else { + var environmentCallback = function () { + callback(null, window.top.sugar.environment); + }; + + if (window.top.sugar) { + setTimeout(function () { + environmentCallback(); + }, 0); + } else { + window.top.sugar = {}; + window.top.sugar.onEnvironmentSet = function () { + environmentCallback(); + }; + } + } + }; + + env.getObjectId = function (callback) { + env.getEnvironment(function (error, environment) { + callback(environment.objectId); + }); + }; + + env.getURLScheme = function () { + return window.location.protocol; + }; + + env.getHost = function() { + return window.location.hostname; + }; + + env.isStandalone = function () { + var webActivityURLScheme = "activity:"; + var fileURLScheme = "file:"; + var currentURLScheme = env.getURLScheme(); + + // the control of hostname !== '0.0.0.0' is used + // for compatibility with F18 and webkit1 + return currentURLScheme !== webActivityURLScheme && + window.location.hostname !== '0.0.0.0'; + return currentURLScheme !== webActivityURLScheme && + currentURLScheme !== fileURLScheme && + window.location.hostname !== '0.0.0.0'; + }; + + env.isSugarizer = function() { + // HACK: If in Chrome App automatic deduction that in Sugarizer + if (typeof chrome != 'undefined' && chrome.app && chrome.app.runtime) { + return true; + } else if (typeof(Storage)!=="undefined" && typeof(window.localStorage)!=="undefined") { + try { + return (window.localStorage.getItem('sugar_settings') !== null); + } catch(err) { + return false; + } + } + return false; + }; + + env.isSugarizerOS = function() { + if (typeof window.sugarizerOS != 'undefined') + return true; + return false; + } + + return env; +}); diff --git a/lib/sugar-web/graphics/README.md b/lib/sugar-web/graphics/README.md new file mode 100644 index 0000000..3a82062 --- /dev/null +++ b/lib/sugar-web/graphics/README.md @@ -0,0 +1,40 @@ +Sugar Graphics +============== + +Sugar widgets and graphics, implementing the [Sugar Interface +Guidelines](http://wiki.sugarlabs.org/go/Human_Interface_Guidelines). + +Modifying the CSS +----------------- + +We use [LESS](http://lesscss.org) and then compile the CSS files. +This is to be able to use calculations and variables for colors and +measures. And to be able to output different CSS files for different +screen resolutions. + +To compile the CSS files do: + + lessc graphics/css/sugar-96dpi.less graphics/css/sugar-96dpi.css + lessc graphics/css/sugar-200dpi.less graphics/css/sugar-200dpi.css + +Be sure to compile them before commit. + +The grid helper +--------------- + +The grid is a visual debug tool that allows you to check if the +elements have the correct size. To activate the grid, open the +inspector console and paste the following. + +If RequireJS is not in the page head (ie. in the sugar-web-samples), +load it: + + var script = document.createElement('script'); + script.src = 'lib/require.js'; + document.head.appendChild(script); + + requirejs.config({ baseUrl: "lib" }); + +Then do: + + require(["sugar-web/graphics/grid"], function (grid) { grid.addGrid(11) }); diff --git a/lib/sugar-web/graphics/activitypalette.html b/lib/sugar-web/graphics/activitypalette.html new file mode 100644 index 0000000..9ef0da1 --- /dev/null +++ b/lib/sugar-web/graphics/activitypalette.html @@ -0,0 +1,9 @@ +
+ +
+
+ +
+
+ +
diff --git a/lib/sugar-web/graphics/activitypalette.js b/lib/sugar-web/graphics/activitypalette.js new file mode 100644 index 0000000..e41ccf0 --- /dev/null +++ b/lib/sugar-web/graphics/activitypalette.js @@ -0,0 +1,62 @@ +define(["sugar-web/graphics/palette", + "text!sugar-web/graphics/activitypalette.html"], function (palette, template) { + + 'use strict'; + + var activitypalette = {}; + + activitypalette.ActivityPalette = function (activityButton, + datastoreObject) { + + palette.Palette.call(this, activityButton); + + var activityTitle; + var descriptionLabel; + var descriptionBox; + + this.getPalette().id = "activity-palette"; + + var containerElem = document.createElement('div'); + containerElem.innerHTML = template; + this.setContent([containerElem]); + + this.titleElem = containerElem.querySelector('#title'); + this.descriptionElem = containerElem.querySelector('#description'); + + this.titleElem.onblur = function () { + datastoreObject.setMetadata({ + "title": this.value, + "title_set_by_user": "1" + }); + datastoreObject.save(); + }; + + this.descriptionElem.onblur = function () { + datastoreObject.setMetadata({ + "description": this.value + }); + datastoreObject.save(); + }; + }; + + // Fill the text inputs with the received metadata. + var setTitleDescription = function (metadata) { + this.titleElem.value = metadata.title; + + if (metadata.description !== undefined) { + this.descriptionElem.value = metadata.description; + } + }; + + activitypalette.ActivityPalette.prototype = + Object.create(palette.Palette.prototype, { + setTitleDescription: { + value: setTitleDescription, + enumerable: true, + configurable: true, + writable: true + } + }); + + return activitypalette; +}); diff --git a/lib/sugar-web/graphics/css/sugar-200dpi.css b/lib/sugar-web/graphics/css/sugar-200dpi.css new file mode 100644 index 0000000..f5d70f5 --- /dev/null +++ b/lib/sugar-web/graphics/css/sugar-200dpi.css @@ -0,0 +1,457 @@ +html { + height: 100%; + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); +} +body { + position: relative; + height: 100%; + margin: 0; + font-family: sans-serif; + font-size: 10pt; + background-color: #c0c0c0; +} +.unselectable { + -webkit-user-select: none; + -moz-user-select: none; +} +.pull-right { + float: right; +} +a { + color: #0076c3; + text-decoration: none; +} +/* Toolbar */ +.toolbar { + height: 75px; + padding: 0 77px; + color: white; + background-color: #282828; + -webkit-user-select: none; + -moz-user-select: none; +} +/* Toolbar separator */ +.toolbar hr { + display: inline-block; + height: 45px; + margin: 4.5px; + margin-bottom: -21px; + border: 1px solid #808080; +} +/* Toolbar toolbutton */ +.toolbar .toolbutton { + position: relative; + width: 67px; + height: 67px; + margin: 4px 2px; + color: white; + color: transparent; + background-color: transparent; + background-position: center; + background-repeat: no-repeat; + background-size: contain; + border: 0; + border-radius: 7.5px; +} +.toolbar .toolbutton:hover { + background-color: black; +} +.toolbar .toolbutton:active, +.toolbar .toolbutton.active { + background-color: #808080; +} +.toolbar .toolbutton img { + width: 100%; + height: 100%; +} +.toolbar .toolbutton:before { + position: absolute; + right: -4px; + bottom: -4px; + display: block; + width: 75px; + height: 15px; + background-color: transparent; + content: ""; +} +.toolbar .toolbutton.invoker:before { + background-image: url('../icons/emblems/arrow-down.svg'); +} +.toolbar #stop-button { + background-image: url('../icons/actions/activity-stop.svg'); +} +/* Canvas */ +#canvas { + position: absolute; + top: 75px; + bottom: 0; + width: 100%; + overflow-y: auto; + color: black; + background-color: #c0c0c0; +} +/* Button */ +button { + padding: 2px 4px; + line-height: 30px; + color: white; + background-color: #808080; + border: 2px solid transparent; + border-radius: 30px; + -webkit-user-select: none; + -moz-user-select: none; +} +button:hover { + background-color: #a2a2a2; + border-color: #a2a2a2; +} +button:active { + color: black; + background-color: white; + border-color: #808080; +} +button:focus { + border-color: white; +} +.toolbar button { + margin-top: 18.5px; +} +/* Button with icon */ +button.icon { + position: relative; + padding-left: 34px; +} +button.icon span.ok { + background-image: url(../icons/actions/dialog-ok.svg); +} +button.icon:active span.ok { + background-image: url(../icons/actions/dialog-ok-active.svg); +} +button.icon span.cancel { + background-image: url(../icons/actions/dialog-cancel.svg); +} +button.icon:active span.cancel { + background-image: url(../icons/actions/dialog-cancel-active.svg); +} +button.icon span { + position: absolute; + display: inline-block; + width: 30px; + height: 30px; + background-color: transparent; + background-position: center; + background-repeat: no-repeat; + background-size: 30px 30px; +} +button.icon span { + top: 2px; + left: 2px; +} +/* One line text input */ +input[type='text'] { + width: 225px; + padding: 4px; + line-height: 30px; + background-color: #e5e5e5; + border: 2px solid #e5e5e5; + border-radius: 30px; + outline: 0; +} +input[type='text']:focus { + background-color: white; +} +input[type='text']:disabled { + background-color: #808080; + border-color: #808080; +} +.toolbar input[type='text'], +.palette .row input[type='text'] { + margin-top: 16.5px; +} +.palette .row input[type='text']:nth-last-child(1) { + margin-top: 14.5px; +} +input[type='text'].expand { + width: calc(100% - 12px); +} +/* One line text input with buttons inside */ +.icon-input { + position: relative; + display: inline-block; +} +.icon-input input[type='text'] { + width: 187px; + padding-right: 42px; +} +.icon-input.expand { + width: 100%; +} +.icon-input.expand input[type='text'] { + width: calc(100% - 50px); +} +.icon-input button { + position: absolute; + width: 42px; + height: 42px; + padding: 0; + background-size: 30px 30px; +} +.icon-input button.right { + right: 0; + margin: 0 0 0 -42px; + border-radius: 0 30px 30px 0; +} +.icon-input button { + background-color: transparent; + background-position: center; + background-repeat: no-repeat; + border: 0; +} +.icon-input button { + top: 2px; +} +.toolbar .icon-input button:hover { + background-color: transparent; +} +.toolbar .icon-input button { + top: 16.5px; +} +button.cancel { + background-image: url(../icons/actions/entry-cancel.svg); +} +button.cancel:active { + background-image: url(../icons/actions/entry-cancel-active.svg); +} +button.cancel:disabled { + background-image: url(../icons/actions/entry-cancel-disabled.svg); +} +/* Slider */ +/* FIXME this is not fully Sugarized yet */ +input[type='range'] { + height: 15px; + cursor: pointer; + background-color: #808080; + border-radius: 30px; + -webkit-appearance: none !important; +} +input[type='range']::-webkit-slider-thumb { + width: 30px; + height: 30px; + background-color: #c0c0c0; + border: 4px solid #808080; + border-radius: 15px; + -webkit-appearance: none !important; +} +input[type='range']::-webkit-slider-thumb:hover { + background-color: #e2e2e2; + border-color: #a2a2a2; +} +.toolbar input[type='range'] { + margin-top: 30px; +} +/* Label */ +label { + -webkit-user-select: none; + -moz-user-select: none; +} +/* Palette */ +.palette { + position: absolute; + color: white; + pointer-events: none; + background-color: transparent; +} +.palette-invoker { + width: 71px; + height: 73px; + background-color: black; + background-position: 2px 2px; + background-repeat: no-repeat; + background-size: 67px; + border: 2px solid #808080; + border-bottom: 0; +} +.palette-invoker:after { + position: absolute; + top: 60px; + left: 0; + display: block; + width: 75px; + height: 15px; + background-color: transparent; + background-image: url('../icons/emblems/arrow-up.svg'); + content: ""; +} +.palette-invoker:before { + position: absolute; + top: 75px; + left: 2px; + display: block; + width: 71px; + height: 2px; + background-color: black; + content: ""; +} +.palette .wrapper { + max-width: 371px; + min-width: 221px; + min-height: 71px; + pointer-events: auto; + background-color: black; + border: 2px solid #808080; +} +.palette .header { + height: 71px; + margin: 0 7.5px; + font-weight: bold; + line-height: 71px; + -webkit-user-select: none; + -moz-user-select: none; +} +.palette hr { + border: 1px solid #808080; +} +.palette hr.header-separator { + margin-top: 0; +} +.palette .row { + height: 75px; + margin: 0 7.5px; +} +.palette .row:nth-last-child(1) { + height: 71px; +} +.palette .row.small { + height: 30px; +} +.palette .row.expand { + height: auto; +} +/* Palette menu */ +.palette .menu { + padding: 0; + margin-top: 15px; + margin-bottom: 15px; + list-style-type: none; +} +.palette .menu button { + width: 100%; + padding-top: 0; + padding-bottom: 0; + margin-top: 0; + margin-bottom: 0; + line-height: 45px; + text-align: left; + background-color: transparent; + border: 0; + border-radius: 0; +} +.palette .menu button:hover { + color: white; + background-color: #808080; +} +.palette .menu button.icon { + padding-left: 49px; +} +.palette .menu button.icon span { + top: 0; + left: 0; + width: 45px; + height: 45px; +} +/* Scrollbar */ +::-webkit-scrollbar { + width: 15px; + background-color: #808080; +} +::-webkit-scrollbar-thumb { + background-color: white; + border: 2px solid #dddddd; + border-radius: 15px; +} +/* Grid for visual debugging and layout */ +.grid { + position: absolute; + top: 0; + left: 0; + background-color: transparent; +} +/* Checkbox and radio */ +input[type='checkbox'], +input[type='radio'] { + width: 30px; + height: 30px; + margin: 2px 2px 4px 2px; + vertical-align: middle; + background-position: center; + background-size: contain; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; +} +.toolbar input[type='checkbox'], +.toolbar input[type='radio'] { + margin-top: 20.5px; + margin-bottom: 24.5px; +} +input[type='checkbox'] { + background-image: url(../icons/actions/checkbox-unchecked.svg); +} +input[type='checkbox']:active { + background-image: url(../icons/actions/checkbox-checked-selected.svg); +} +input[type='checkbox']:checked:active { + background-image: url(../icons/actions/checkbox-checked-selected.svg); +} +input[type='checkbox']:checked { + background-image: url(../icons/actions/checkbox-checked.svg); +} +input[type='radio'] { + background-image: url(../icons/actions/radio.svg); +} +input[type='radio']:active { + background-image: url(../icons/actions/radio-selected.svg); +} +input[type='radio']:checked:active { + background-image: url(../icons/actions/radio-active-selected.svg); +} +input[type='radio']:checked { + background-image: url(../icons/actions/radio-active.svg); +} +/* Textarea */ +textarea { + margin: 2px; + border: 2px solid #808080; +} +textarea.expand { + width: calc(100% - 12px); +} +/* Lists */ +ul.flat-list { + padding: 0; + margin: 0; + list-style-type: none; +} +ul.flat-list li { + height: 43px; + line-height: 43px; + background-color: white; + border-bottom: 2px dotted #c0c0c0; +} +ul.flat-list li:nth-last-child(1) { + border-bottom: none; +} +ul.flat-list.big li { + height: 58px; + line-height: 58px; +} +ul.flat-list.striped li:nth-child(odd) { + background-color: #e5e5e5; +} +/* ActivityPalette */ +#activity-palette .wrapper { + width: 371px; +} +*:focus { + outline: 0; + } \ No newline at end of file diff --git a/lib/sugar-web/graphics/css/sugar-200dpi.less b/lib/sugar-web/graphics/css/sugar-200dpi.less new file mode 100644 index 0000000..614c5ed --- /dev/null +++ b/lib/sugar-web/graphics/css/sugar-200dpi.less @@ -0,0 +1,2 @@ +@subcell-size: 15px; +@import "sugar.less"; diff --git a/lib/sugar-web/graphics/css/sugar-96dpi.css b/lib/sugar-web/graphics/css/sugar-96dpi.css new file mode 100644 index 0000000..8d6ae8d --- /dev/null +++ b/lib/sugar-web/graphics/css/sugar-96dpi.css @@ -0,0 +1,457 @@ +html { + height: 100%; + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); +} +body { + position: relative; + height: 100%; + margin: 0; + font-family: sans-serif; + font-size: 10pt; + background-color: #c0c0c0; +} +.unselectable { + -webkit-user-select: none; + -moz-user-select: none; +} +.pull-right { + float: right; +} +a { + color: #0076c3; + text-decoration: none; +} +/* Toolbar */ +.toolbar { + height: 55px; + padding: 0 57px; + color: white; + background-color: #282828; + -webkit-user-select: none; + -moz-user-select: none; +} +/* Toolbar separator */ +.toolbar hr { + display: inline-block; + height: 33px; + margin: 2.5px; + margin-bottom: -17px; + border: 1px solid #808080; +} +/* Toolbar toolbutton */ +.toolbar .toolbutton { + position: relative; + width: 47px; + height: 47px; + margin: 4px 2px; + color: white; + color: transparent; + background-color: transparent; + background-position: center; + background-repeat: no-repeat; + background-size: contain; + border: 0; + border-radius: 5.5px; +} +.toolbar .toolbutton:hover { + background-color: black; +} +.toolbar .toolbutton:active, +.toolbar .toolbutton.active { + background-color: #808080; +} +.toolbar .toolbutton img { + width: 100%; + height: 100%; +} +.toolbar .toolbutton:before { + position: absolute; + right: -4px; + bottom: -4px; + display: block; + width: 55px; + height: 11px; + background-color: transparent; + content: ""; +} +.toolbar .toolbutton.invoker:before { + background-image: url('../icons/emblems/arrow-down.svg'); +} +.toolbar #stop-button { + background-image: url('../icons/actions/activity-stop.svg'); +} +/* Canvas */ +#canvas { + position: absolute; + top: 55px; + bottom: 0; + width: 100%; + overflow-y: auto; + color: black; + background-color: #c0c0c0; +} +/* Button */ +button { + padding: 2px 4px; + line-height: 22px; + color: white; + background-color: #808080; + border: 2px solid transparent; + border-radius: 22px; + -webkit-user-select: none; + -moz-user-select: none; +} +button:hover { + background-color: #a2a2a2; + border-color: #a2a2a2; +} +button:active { + color: black; + background-color: white; + border-color: #808080; +} +button:focus { + border-color: white; +} +.toolbar button { + margin-top: 12.5px; +} +/* Button with icon */ +button.icon { + position: relative; + padding-left: 26px; +} +button.icon span.ok { + background-image: url(../icons/actions/dialog-ok.svg); +} +button.icon:active span.ok { + background-image: url(../icons/actions/dialog-ok-active.svg); +} +button.icon span.cancel { + background-image: url(../icons/actions/dialog-cancel.svg); +} +button.icon:active span.cancel { + background-image: url(../icons/actions/dialog-cancel-active.svg); +} +button.icon span { + position: absolute; + display: inline-block; + width: 22px; + height: 22px; + background-color: transparent; + background-position: center; + background-repeat: no-repeat; + background-size: 22px 22px; +} +button.icon span { + top: 2px; + left: 2px; +} +/* One line text input */ +input[type='text'] { + width: 165px; + padding: 4px; + line-height: 22px; + background-color: #e5e5e5; + border: 2px solid #e5e5e5; + border-radius: 22px; + outline: 0; +} +input[type='text']:focus { + background-color: white; +} +input[type='text']:disabled { + background-color: #808080; + border-color: #808080; +} +.toolbar input[type='text'], +.palette .row input[type='text'] { + margin-top: 10.5px; +} +.palette .row input[type='text']:nth-last-child(1) { + margin-top: 8.5px; +} +input[type='text'].expand { + width: calc(100% - 12px); +} +/* One line text input with buttons inside */ +.icon-input { + position: relative; + display: inline-block; +} +.icon-input input[type='text'] { + width: 135px; + padding-right: 34px; +} +.icon-input.expand { + width: 100%; +} +.icon-input.expand input[type='text'] { + width: calc(100% - 42px); +} +.icon-input button { + position: absolute; + width: 34px; + height: 34px; + padding: 0; + background-size: 22px 22px; +} +.icon-input button.right { + right: 0; + margin: 0 0 0 -34px; + border-radius: 0 22px 22px 0; +} +.icon-input button { + background-color: transparent; + background-position: center; + background-repeat: no-repeat; + border: 0; +} +.icon-input button { + top: 2px; +} +.toolbar .icon-input button:hover { + background-color: transparent; +} +.toolbar .icon-input button { + top: 10.5px; +} +button.cancel { + background-image: url(../icons/actions/entry-cancel.svg); +} +button.cancel:active { + background-image: url(../icons/actions/entry-cancel-active.svg); +} +button.cancel:disabled { + background-image: url(../icons/actions/entry-cancel-disabled.svg); +} +/* Slider */ +/* FIXME this is not fully Sugarized yet */ +input[type='range'] { + height: 11px; + cursor: pointer; + background-color: #808080; + border-radius: 22px; + -webkit-appearance: none !important; +} +input[type='range']::-webkit-slider-thumb { + width: 22px; + height: 22px; + background-color: #c0c0c0; + border: 4px solid #808080; + border-radius: 11px; + -webkit-appearance: none !important; +} +input[type='range']::-webkit-slider-thumb:hover { + background-color: #e2e2e2; + border-color: #a2a2a2; +} +.toolbar input[type='range'] { + margin-top: 22px; +} +/* Label */ +label { + -webkit-user-select: none; + -moz-user-select: none; +} +/* Palette */ +.palette { + position: absolute; + color: white; + pointer-events: none; + background-color: transparent; +} +.palette-invoker { + width: 51px; + height: 53px; + background-color: black; + background-position: 2px 2px; + background-repeat: no-repeat; + background-size: 47px; + border: 2px solid #808080; + border-bottom: 0; +} +.palette-invoker:after { + position: absolute; + top: 44px; + left: 0; + display: block; + width: 55px; + height: 11px; + background-color: transparent; + background-image: url('../icons/emblems/arrow-up.svg'); + content: ""; +} +.palette-invoker:before { + position: absolute; + top: 55px; + left: 2px; + display: block; + width: 51px; + height: 2px; + background-color: black; + content: ""; +} +.palette .wrapper { + max-width: 271px; + min-width: 161px; + min-height: 51px; + pointer-events: auto; + background-color: black; + border: 2px solid #808080; +} +.palette .header { + height: 51px; + margin: 0 5.5px; + font-weight: bold; + line-height: 51px; + -webkit-user-select: none; + -moz-user-select: none; +} +.palette hr { + border: 1px solid #808080; +} +.palette hr.header-separator { + margin-top: 0; +} +.palette .row { + height: 55px; + margin: 0 5.5px; +} +.palette .row:nth-last-child(1) { + height: 51px; +} +.palette .row.small { + height: 22px; +} +.palette .row.expand { + height: auto; +} +/* Palette menu */ +.palette .menu { + padding: 0; + margin-top: 11px; + margin-bottom: 11px; + list-style-type: none; +} +.palette .menu button { + width: 100%; + padding-top: 0; + padding-bottom: 0; + margin-top: 0; + margin-bottom: 0; + line-height: 33px; + text-align: left; + background-color: transparent; + border: 0; + border-radius: 0; +} +.palette .menu button:hover { + color: white; + background-color: #808080; +} +.palette .menu button.icon { + padding-left: 37px; +} +.palette .menu button.icon span { + top: 0; + left: 0; + width: 33px; + height: 33px; +} +/* Scrollbar */ +::-webkit-scrollbar { + width: 11px; + background-color: #808080; +} +::-webkit-scrollbar-thumb { + background-color: white; + border: 2px solid #dddddd; + border-radius: 11px; +} +/* Grid for visual debugging and layout */ +.grid { + position: absolute; + top: 0; + left: 0; + background-color: transparent; +} +/* Checkbox and radio */ +input[type='checkbox'], +input[type='radio'] { + width: 22px; + height: 22px; + margin: 2px 2px 4px 2px; + vertical-align: middle; + background-position: center; + background-size: contain; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; +} +.toolbar input[type='checkbox'], +.toolbar input[type='radio'] { + margin-top: 14.5px; + margin-bottom: 18.5px; +} +input[type='checkbox'] { + background-image: url(../icons/actions/checkbox-unchecked.svg); +} +input[type='checkbox']:active { + background-image: url(../icons/actions/checkbox-checked-selected.svg); +} +input[type='checkbox']:checked:active { + background-image: url(../icons/actions/checkbox-checked-selected.svg); +} +input[type='checkbox']:checked { + background-image: url(../icons/actions/checkbox-checked.svg); +} +input[type='radio'] { + background-image: url(../icons/actions/radio.svg); +} +input[type='radio']:active { + background-image: url(../icons/actions/radio-selected.svg); +} +input[type='radio']:checked:active { + background-image: url(../icons/actions/radio-active-selected.svg); +} +input[type='radio']:checked { + background-image: url(../icons/actions/radio-active.svg); +} +/* Textarea */ +textarea { + margin: 2px; + border: 2px solid #808080; +} +textarea.expand { + width: calc(100% - 12px); +} +/* Lists */ +ul.flat-list { + padding: 0; + margin: 0; + list-style-type: none; +} +ul.flat-list li { + height: 31px; + line-height: 31px; + background-color: white; + border-bottom: 2px dotted #c0c0c0; +} +ul.flat-list li:nth-last-child(1) { + border-bottom: none; +} +ul.flat-list.big li { + height: 42px; + line-height: 42px; +} +ul.flat-list.striped li:nth-child(odd) { + background-color: #e5e5e5; +} +/* ActivityPalette */ +#activity-palette .wrapper { + width: 271px; +} +*:focus { + outline: 0; + } diff --git a/lib/sugar-web/graphics/css/sugar-96dpi.less b/lib/sugar-web/graphics/css/sugar-96dpi.less new file mode 100644 index 0000000..ea91f49 --- /dev/null +++ b/lib/sugar-web/graphics/css/sugar-96dpi.less @@ -0,0 +1,2 @@ +@subcell-size: 11px; +@import "sugar.less"; diff --git a/lib/sugar-web/graphics/css/sugar.less b/lib/sugar-web/graphics/css/sugar.less new file mode 100644 index 0000000..8378b2c --- /dev/null +++ b/lib/sugar-web/graphics/css/sugar.less @@ -0,0 +1,587 @@ +// recess: ignore + +@toolbar-grey: #282828; +@button-grey: #808080; +@panel-grey: #C0C0C0; +@text-field-grey: #E5E5E5; +@link-blue: #0076C3; + +@line-width: 2px; +@cell-size: 5 * @subcell-size; +@font-size: 10pt; + +@toolbar-height: @cell-size; +@icon-small-size: 2 * @subcell-size; + +@toolbutton-size: @toolbar-height - (4 * @line-width); +@toolbar-button-margin-top: (@toolbar-height / 2) - (2 * @line-width) - + (@icon-small-size / 2); + +@input-text-padding: (2 * @line-width); +@input-text-line-height: 2 * @subcell-size; +@input-text-width: 3 * @cell-size; +@toolbar-input-height: (@toolbar-height / 2) - (@input-text-line-height / 2) - + (@input-text-padding + @line-width); + +@button-small-size: @input-text-line-height + (2 * @input-text-padding) + + (2 * @line-width); + +html { + height: 100%; + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); +} + +body { + position: relative; + height: 100%; + margin: 0; + font-family: sans-serif; + font-size: @font-size; + background-color: @panel-grey; +} + +.unselectable { + -webkit-user-select: none; + -moz-user-select: none; +} + +.pull-right { + float: right; +} + +a { + color: @link-blue; + text-decoration: none; +} + +/* Toolbar */ + +.toolbar { + height: @toolbar-height; + padding: 0 @toolbutton-size + (5 * @line-width); + color: white; + background-color: @toolbar-grey; + .unselectable; +} + +/* Toolbar separator */ + +.toolbar hr { + display: inline-block; + height: 3 * @subcell-size; + margin: (@subcell-size - (@line-width * 3)) / 2; + margin-bottom: -1 * (@subcell-size + (@line-width * 3)); + border: (@line-width / 2) solid @button-grey; +} + +/* Toolbar toolbutton */ + +.toolbar .toolbutton { + position: relative; + width: @toolbutton-size; + height: @toolbutton-size; + margin: (2 * @line-width) @line-width; + color: white; + color: transparent; + background-color: transparent; + background-position: center; + background-repeat: no-repeat; + background-size: contain; + border: 0; + border-radius: @subcell-size / 2; +} + +.toolbar .toolbutton:hover { + background-color: black; +} + +.toolbar .toolbutton:active, .toolbar .toolbutton.active { + background-color: @button-grey; +} + +.toolbar .toolbutton img { + width: 100%; + height: 100%; +} + +.toolbar .toolbutton:before { + position: absolute; + right: -2 * @line-width; + bottom: -2 * @line-width; + display: block; + width: @cell-size; + height: @subcell-size; + background-color: transparent; + content: ""; +} + +.toolbar .toolbutton.invoker:before { + background-image: url('../icons/emblems/arrow-down.svg'); +} + +.toolbar #stop-button { + background-image: url('../icons/actions/activity-stop.svg'); +} + +/* Canvas */ + +#canvas { + position: absolute; + top: @toolbar-height; + bottom: 0; + width: 100%; + overflow-y: auto; + color: black; + background-color: @panel-grey; +} + +/* Button */ + +button { + padding: @line-width (2 * @line-width); + line-height: @icon-small-size; + color: white; + background-color: @button-grey; + border: @line-width solid transparent; + border-radius: 2 * @subcell-size; + .unselectable; +} + +button:hover { + background-color: @button-grey + #222; + border-color: @button-grey + #222; +} + +button:active { + color: black; + background-color: white; + border-color: @button-grey; +} + +button:focus { + border-color: white; +} + +.toolbar button { + margin-top: @toolbar-button-margin-top; +} + +/* Button with icon */ + +button.icon { + position: relative; + padding-left: @icon-small-size + (2 * @line-width); +} + +button.icon span.ok { + background-image: url(../icons/actions/dialog-ok.svg); +} + +button.icon:active span.ok { + background-image: url(../icons/actions/dialog-ok-active.svg); +} + +button.icon span.cancel { + background-image: url(../icons/actions/dialog-cancel.svg); +} + +button.icon:active span.cancel { + background-image: url(../icons/actions/dialog-cancel-active.svg); +} + +button.icon span { + position: absolute; + display: inline-block; + width: @icon-small-size; + height: @icon-small-size; + background-color: transparent; + background-position: center; + background-repeat: no-repeat; + background-size: @icon-small-size @icon-small-size; +} + +button.icon span { + top: @line-width; + left: @line-width; +} + +/* One line text input */ + +input[type='text'] { + width: @input-text-width; + padding: @input-text-padding; + line-height: @input-text-line-height; + background-color: @text-field-grey; + border: @line-width solid @text-field-grey; + border-radius: 2 * @subcell-size; + outline: 0; +} + +input[type='text']:focus { + background-color: white; +} + +input[type='text']:disabled { + background-color: @button-grey; + border-color: @button-grey; +} + +.toolbar input[type='text'], .palette .row input[type='text'] { + margin-top: @toolbar-input-height; +} + +.palette .row input[type='text']:nth-last-child(1) { + margin-top: @toolbar-input-height - @line-width; +} + +input[type='text'].expand { + width: calc(~"100%" - (2 * @input-text-padding + 2 * @line-width)); +} + +/* One line text input with buttons inside */ + +.icon-input { + position: relative; + display: inline-block; +} + +.icon-input input[type='text'] { + width: @input-text-width + @input-text-padding - @button-small-size; + padding-right: @button-small-size; +} + +.icon-input.expand { + width: 100%; +} + +.icon-input.expand input[type='text'] { + width: calc(~"100%" - (@input-text-padding + 2 * @line-width + + @button-small-size)); +} + +.icon-input button { + position: absolute; + width: @button-small-size; + height: @button-small-size; + padding: 0; + background-size: @icon-small-size @icon-small-size; +} + +.icon-input button.right { + right: 0; + margin: 0 0 0 -@button-small-size; + border-radius: 0 (2 * @subcell-size) (2 * @subcell-size) 0; +} + +.icon-input button { + background-color: transparent; + background-position: center; + background-repeat: no-repeat; + border: 0; +} + +.icon-input button { + top: @line-width; +} + +.toolbar .icon-input button:hover { + background-color: transparent; +} + +.toolbar .icon-input button { + top: @toolbar-input-height; +} + +button.cancel { + background-image: url(../icons/actions/entry-cancel.svg); +} + +button.cancel:active { + background-image: url(../icons/actions/entry-cancel-active.svg); +} + +button.cancel:disabled { + background-image: url(../icons/actions/entry-cancel-disabled.svg); +} + +/* Slider */ +/* FIXME this is not fully Sugarized yet */ + +input[type='range'] { + height: @subcell-size; + cursor: pointer; + background-color: @button-grey; + border-radius: 2 * @subcell-size; + -webkit-appearance: none !important; +} + +input[type='range']::-webkit-slider-thumb { + width: @icon-small-size; + height: @icon-small-size; + background-color: @panel-grey; + border: (2 * @line-width) solid @button-grey; + border-radius: @subcell-size; + -webkit-appearance: none !important; +} + +input[type='range']::-webkit-slider-thumb:hover { + background-color: @panel-grey + #222; + border-color: @button-grey + #222; +} + +.toolbar input[type='range'] { + margin-top: (@toolbar-height / 2) - (@subcell-size / 2); +} + +/* Label */ + +label { + .unselectable; +} + +/* Palette */ + +.palette { + position: absolute; + color: white; + pointer-events: none; + background-color: transparent; +} + +.palette-invoker { + width: @cell-size - 2 * @line-width; + height: @cell-size - @line-width; + background-color: black; + background-position: @line-width @line-width; + background-repeat: no-repeat; + background-size: @toolbutton-size; + border: @line-width solid @button-grey; + border-bottom: 0; +} + +.palette-invoker:after { + position: absolute; + top: 4 * @subcell-size; + left: 0; + display: block; + width: @cell-size; + height: @subcell-size; + background-color: transparent; + background-image: url('../icons/emblems/arrow-up.svg'); + content: ""; +} + +.palette-invoker:before { + position: absolute; + top: @cell-size; + left: @line-width; + display: block; + width: @cell-size - 2 * @line-width; + height: @line-width; + background-color: black; + content: ""; +} + +.palette .wrapper { + max-width: 5 * @cell-size - 2 * @line-width; + min-width: 3 * @cell-size - 2 * @line-width; + min-height: @cell-size - 2 * @line-width; + pointer-events: auto; + background-color: black; + border: @line-width solid @button-grey; +} + +.palette .header { + height: @cell-size - 2 * @line-width; + margin: 0 (@subcell-size / 2); + font-weight: bold; + line-height: @cell-size - 2 * @line-width; + .unselectable; +} + +.palette hr { + border: (@line-width / 2) solid @button-grey; +} + +.palette hr.header-separator { + margin-top: 0; +} + +.palette .row { + height: @cell-size; + margin: 0 (@subcell-size / 2); +} + +.palette .row:nth-last-child(1) { + height: @cell-size - 2 * @line-width; +} + +.palette .row.small { + height: 2 * @subcell-size; +} + +.palette .row.expand { + height: auto; +} + +/* Palette menu */ + +.palette .menu { + padding: 0; + margin-top: @subcell-size; + margin-bottom: @subcell-size; + list-style-type: none; +} + +.palette .menu button { + width: 100%; + padding-top: 0; + padding-bottom: 0; + margin-top: 0; + margin-bottom: 0; + line-height: 3 * @subcell-size; + text-align: left; + background-color: transparent; + border: 0; + border-radius: 0; +} + +.palette .menu button:hover { + color: white; + background-color: @button-grey; +} + +.palette .menu button.icon { + padding-left: 3 * @subcell-size + 2 * @line-width; +} + +.palette .menu button.icon span { + top: 0; + left: 0; + width: 3 * @subcell-size; + height: 3 * @subcell-size; +} + +/* Scrollbar */ + +::-webkit-scrollbar { + width: @subcell-size; + background-color: @button-grey; +} + +::-webkit-scrollbar-thumb { + background-color: white; + border: @line-width solid #ddd; + border-radius: @subcell-size; +} + +/* Grid for visual debugging and layout */ + +.grid { + position: absolute; + top: 0; + left: 0; + background-color: transparent; +} + +.appearance(@value) { + -webkit-appearance: @value; + -moz-appearance: @value; + appearance: @value; +} + +/* Checkbox and radio */ + +input[type='checkbox'], +input[type='radio'] { + width: @icon-small-size; + height: @icon-small-size; + margin: @line-width @line-width (2 * @line-width) @line-width; + vertical-align: middle; + background-position: center; + background-size: contain; + .appearance(none); +} + +.toolbar input[type='checkbox'], +.toolbar input[type='radio'] { + margin-top: (@toolbar-height - @icon-small-size) / 2 - @line-width; + margin-bottom: (@toolbar-height - @icon-small-size) / 2 + @line-width; +} + +input[type='checkbox'] { + background-image: url(../icons/actions/checkbox-unchecked.svg); +} + +input[type='checkbox']:active { + background-image: url(../icons/actions/checkbox-checked-selected.svg); +} + +input[type='checkbox']:checked:active { + background-image: url(../icons/actions/checkbox-checked-selected.svg); +} + +input[type='checkbox']:checked { + background-image: url(../icons/actions/checkbox-checked.svg); +} + +input[type='radio'] { + background-image: url(../icons/actions/radio.svg); +} + +input[type='radio']:active { + background-image: url(../icons/actions/radio-selected.svg); +} + +input[type='radio']:checked:active { + background-image: url(../icons/actions/radio-active-selected.svg); +} + +input[type='radio']:checked { + background-image: url(../icons/actions/radio-active.svg); +} + +/* Textarea */ + +textarea { + margin: @line-width; + border: @line-width solid @button-grey; +} + +textarea.expand { + width: calc(~"100%" - (6 * (@line-width))); +} + +/* Lists */ + +ul.flat-list { + padding: 0; + margin: 0; + list-style-type: none; +} + +ul.flat-list li { + height: 3 * @subcell-size - @line-width; + line-height: 3 * @subcell-size - @line-width; + background-color: white; + border-bottom: @line-width dotted @panel-grey; +} + +ul.flat-list li:nth-last-child(1) { + border-bottom: none; +} + +ul.flat-list.big li { + height: 4 * @subcell-size - @line-width; + line-height: 4 * @subcell-size - @line-width; +} + +ul.flat-list.striped li:nth-child(odd) { + background-color: @text-field-grey; +} + +/* ActivityPalette */ + +#activity-palette .wrapper { + width: 5 * @cell-size - 2 * @line-width; +} diff --git a/lib/sugar-web/graphics/grid.js b/lib/sugar-web/graphics/grid.js new file mode 100644 index 0000000..3322bb8 --- /dev/null +++ b/lib/sugar-web/graphics/grid.js @@ -0,0 +1,57 @@ +define(function () { + + 'use strict'; + + var grid = {}; + + // Add a grid overlay with lines spaced by subcellSize, for visual + // debugging. This is useful while doing the activity layout or + // while developing widgets. + grid.addGrid = function (subcellSize) { + var canvas = document.createElement('canvas'); + canvas.className = "grid"; + document.body.appendChild(canvas); + + var updateGrid = function () { + canvas.width = window.innerWidth; + canvas.height = window.innerHeight; + + var ctx = canvas.getContext("2d"); + ctx.strokeStyle = "#00FFFF"; + + var subcellsVertical = window.innerHeight / subcellSize; + for (i = 0; i < subcellsVertical; i++) { + if ((i + 1) % 5 === 0) { + ctx.lineWidth = 1; + } else { + ctx.lineWidth = 0.5; + } + ctx.beginPath(); + ctx.moveTo(0, subcellSize * (i + 1)); + ctx.lineTo(canvas.width, subcellSize * (i + 1)); + ctx.stroke(); + } + + var subcellsHorizontal = window.innerWidth / subcellSize; + for (i = 0; i < subcellsHorizontal; i++) { + if ((i + 1) % 5 === 0) { + ctx.lineWidth = 1; + } else { + ctx.lineWidth = 0.5; + } + ctx.beginPath(); + ctx.moveTo(subcellSize * (i + 1), 0); + ctx.lineTo(subcellSize * (i + 1), canvas.height); + ctx.stroke(); + } + }; + + updateGrid(); + + window.onresize = function (event) { + updateGrid(); + }; + }; + + return grid; +}); diff --git a/lib/sugar-web/graphics/icon.js b/lib/sugar-web/graphics/icon.js new file mode 100644 index 0000000..18b87bd --- /dev/null +++ b/lib/sugar-web/graphics/icon.js @@ -0,0 +1,89 @@ +define(function () { + + 'use strict'; + + var icon = {}; + + function changeColors(iconData, fillColor, strokeColor) { + var re; + + if (fillColor) { + re = /()/; + iconData = iconData.replace(re, "$1" + fillColor + "$3"); + } + + if (strokeColor) { + re = /()/; + iconData = iconData.replace(re, "$1" + strokeColor + "$3"); + } + + return iconData; + } + + icon.load = function (iconInfo, callback) { + var source; + var dataHeader = "data:image/svg+xml,"; + + if ("uri" in iconInfo) { + source = iconInfo.uri; + } else if ("name" in iconInfo) { + source = "lib/graphics/icons/" + iconInfo.name + ".svg"; + } + + var fillColor = iconInfo.fillColor; + var strokeColor = iconInfo.strokeColor; + + // If source is already a data uri, read it instead of doing + // the XMLHttpRequest + if (source.substring(0, 4) == 'data') { + var iconData = unescape(source.slice(dataHeader.length)); + var newData = changeColors(iconData, fillColor, strokeColor); + callback(dataHeader + escape(newData)); + return; + } + + var client = new XMLHttpRequest(); + + client.onload = function () { + var iconData = this.responseText; + var newData = changeColors(iconData, fillColor, strokeColor); + callback(dataHeader + escape(newData)); + }; + + client.open("GET", source); + client.send(); + }; + + function getBackgroundURL(elem) { + var style = elem.currentStyle || window.getComputedStyle(elem, ''); + // Remove prefix 'url(' and suffix ')' before return + var res = style.backgroundImage.slice(4, -1); + var last = res.length-1; + if (res[0] == '"' && res[last] == '"') { + res = res.slice(1, last); + } + return res; + } + + function setBackgroundURL(elem, url) { + elem.style.backgroundImage = "url('" + url + "')"; + } + + icon.colorize = function (elem, colors, callback) { + var iconInfo = { + "uri": getBackgroundURL(elem), + "strokeColor": colors.stroke, + "fillColor": colors.fill + }; + + icon.load(iconInfo, function (url) { + setBackgroundURL(elem, url); + if (callback) { + callback(); + } + }); + + }; + + return icon; +}); diff --git a/lib/sugar-web/graphics/icons/actions/activity-stop.svg b/lib/sugar-web/graphics/icons/actions/activity-stop.svg new file mode 100644 index 0000000..11b82e8 --- /dev/null +++ b/lib/sugar-web/graphics/icons/actions/activity-stop.svg @@ -0,0 +1,6 @@ + + +]> + + \ No newline at end of file diff --git a/lib/sugar-web/graphics/icons/actions/checkbox-checked-selected.svg b/lib/sugar-web/graphics/icons/actions/checkbox-checked-selected.svg new file mode 100644 index 0000000..8ec1223 --- /dev/null +++ b/lib/sugar-web/graphics/icons/actions/checkbox-checked-selected.svg @@ -0,0 +1,27 @@ + + + +]> + + + + + + diff --git a/lib/sugar-web/graphics/icons/actions/checkbox-checked.svg b/lib/sugar-web/graphics/icons/actions/checkbox-checked.svg new file mode 100644 index 0000000..3cfce18 --- /dev/null +++ b/lib/sugar-web/graphics/icons/actions/checkbox-checked.svg @@ -0,0 +1,27 @@ + + + +]> + + + + + + diff --git a/lib/sugar-web/graphics/icons/actions/checkbox-unchecked-selected.svg b/lib/sugar-web/graphics/icons/actions/checkbox-unchecked-selected.svg new file mode 100644 index 0000000..2263279 --- /dev/null +++ b/lib/sugar-web/graphics/icons/actions/checkbox-unchecked-selected.svg @@ -0,0 +1,22 @@ + + +]> + + + + + diff --git a/lib/sugar-web/graphics/icons/actions/checkbox-unchecked.svg b/lib/sugar-web/graphics/icons/actions/checkbox-unchecked.svg new file mode 100644 index 0000000..e158782 --- /dev/null +++ b/lib/sugar-web/graphics/icons/actions/checkbox-unchecked.svg @@ -0,0 +1,22 @@ + + +]> + + + + + diff --git a/lib/sugar-web/graphics/icons/actions/dialog-cancel-active.svg b/lib/sugar-web/graphics/icons/actions/dialog-cancel-active.svg new file mode 100644 index 0000000..dc0d688 --- /dev/null +++ b/lib/sugar-web/graphics/icons/actions/dialog-cancel-active.svg @@ -0,0 +1,6 @@ + + +]> + + diff --git a/lib/sugar-web/graphics/icons/actions/dialog-cancel.svg b/lib/sugar-web/graphics/icons/actions/dialog-cancel.svg new file mode 100644 index 0000000..dab4ae2 --- /dev/null +++ b/lib/sugar-web/graphics/icons/actions/dialog-cancel.svg @@ -0,0 +1,6 @@ + + +]> + + \ No newline at end of file diff --git a/lib/sugar-web/graphics/icons/actions/dialog-ok-active.svg b/lib/sugar-web/graphics/icons/actions/dialog-ok-active.svg new file mode 100644 index 0000000..45de840 --- /dev/null +++ b/lib/sugar-web/graphics/icons/actions/dialog-ok-active.svg @@ -0,0 +1,6 @@ + + +]> + + diff --git a/lib/sugar-web/graphics/icons/actions/dialog-ok.svg b/lib/sugar-web/graphics/icons/actions/dialog-ok.svg new file mode 100644 index 0000000..69e5a2a --- /dev/null +++ b/lib/sugar-web/graphics/icons/actions/dialog-ok.svg @@ -0,0 +1,6 @@ + + +]> + + \ No newline at end of file diff --git a/lib/sugar-web/graphics/icons/actions/entry-cancel-active.svg b/lib/sugar-web/graphics/icons/actions/entry-cancel-active.svg new file mode 100644 index 0000000..467509e --- /dev/null +++ b/lib/sugar-web/graphics/icons/actions/entry-cancel-active.svg @@ -0,0 +1,23 @@ + + + +]> + diff --git a/lib/sugar-web/graphics/icons/actions/entry-cancel-disabled.svg b/lib/sugar-web/graphics/icons/actions/entry-cancel-disabled.svg new file mode 100644 index 0000000..55b4cdb --- /dev/null +++ b/lib/sugar-web/graphics/icons/actions/entry-cancel-disabled.svg @@ -0,0 +1,21 @@ + + + +]> + + + diff --git a/lib/sugar-web/graphics/icons/actions/entry-cancel.svg b/lib/sugar-web/graphics/icons/actions/entry-cancel.svg new file mode 100644 index 0000000..5339a7e --- /dev/null +++ b/lib/sugar-web/graphics/icons/actions/entry-cancel.svg @@ -0,0 +1,21 @@ + + + +]> + + + diff --git a/lib/sugar-web/graphics/icons/actions/radio-active-selected.svg b/lib/sugar-web/graphics/icons/actions/radio-active-selected.svg new file mode 100644 index 0000000..c1d1085 --- /dev/null +++ b/lib/sugar-web/graphics/icons/actions/radio-active-selected.svg @@ -0,0 +1,31 @@ + + + +]> + + + + + + + diff --git a/lib/sugar-web/graphics/icons/actions/radio-active.svg b/lib/sugar-web/graphics/icons/actions/radio-active.svg new file mode 100644 index 0000000..a5fe591 --- /dev/null +++ b/lib/sugar-web/graphics/icons/actions/radio-active.svg @@ -0,0 +1,31 @@ + + + +]> + + + + + + + diff --git a/lib/sugar-web/graphics/icons/actions/radio-selected.svg b/lib/sugar-web/graphics/icons/actions/radio-selected.svg new file mode 100644 index 0000000..a24b97e --- /dev/null +++ b/lib/sugar-web/graphics/icons/actions/radio-selected.svg @@ -0,0 +1,26 @@ + + + +]> + + + + + + diff --git a/lib/sugar-web/graphics/icons/actions/radio.svg b/lib/sugar-web/graphics/icons/actions/radio.svg new file mode 100644 index 0000000..d250286 --- /dev/null +++ b/lib/sugar-web/graphics/icons/actions/radio.svg @@ -0,0 +1,26 @@ + + + +]> + + + + + + diff --git a/lib/sugar-web/graphics/icons/actions/zoom-groups.svg b/lib/sugar-web/graphics/icons/actions/zoom-groups.svg new file mode 100644 index 0000000..b88462f --- /dev/null +++ b/lib/sugar-web/graphics/icons/actions/zoom-groups.svg @@ -0,0 +1,6 @@ + + +]> + + \ No newline at end of file diff --git a/lib/sugar-web/graphics/icons/actions/zoom-home.svg b/lib/sugar-web/graphics/icons/actions/zoom-home.svg new file mode 100644 index 0000000..5578fec --- /dev/null +++ b/lib/sugar-web/graphics/icons/actions/zoom-home.svg @@ -0,0 +1,6 @@ + + +]> + + \ No newline at end of file diff --git a/lib/sugar-web/graphics/icons/actions/zoom-neighborhood.svg b/lib/sugar-web/graphics/icons/actions/zoom-neighborhood.svg new file mode 100644 index 0000000..8d3f8d1 --- /dev/null +++ b/lib/sugar-web/graphics/icons/actions/zoom-neighborhood.svg @@ -0,0 +1,6 @@ + + +]> + + \ No newline at end of file diff --git a/lib/sugar-web/graphics/icons/emblems/arrow-down.svg b/lib/sugar-web/graphics/icons/emblems/arrow-down.svg new file mode 100644 index 0000000..2de1a9e --- /dev/null +++ b/lib/sugar-web/graphics/icons/emblems/arrow-down.svg @@ -0,0 +1,20 @@ + + + +]> + + + + + diff --git a/lib/sugar-web/graphics/icons/emblems/arrow-up.svg b/lib/sugar-web/graphics/icons/emblems/arrow-up.svg new file mode 100644 index 0000000..a977f4a --- /dev/null +++ b/lib/sugar-web/graphics/icons/emblems/arrow-up.svg @@ -0,0 +1,20 @@ + + + +]> + + + + + diff --git a/lib/sugar-web/graphics/menupalette.html b/lib/sugar-web/graphics/menupalette.html new file mode 100644 index 0000000..daf5fd5 --- /dev/null +++ b/lib/sugar-web/graphics/menupalette.html @@ -0,0 +1,8 @@ +{{#.}} +
  • + +
  • +{{/.}} diff --git a/lib/sugar-web/graphics/menupalette.js b/lib/sugar-web/graphics/menupalette.js new file mode 100644 index 0000000..27fe8ed --- /dev/null +++ b/lib/sugar-web/graphics/menupalette.js @@ -0,0 +1,53 @@ +define(["sugar-web/graphics/palette", + "text!sugar-web/graphics/menupalette.html", "mustache"], function (palette, template, mustache) { + + 'use strict'; + + var menupalette = {}; + + menupalette.MenuPalette = function (invoker, primaryText, menuData) { + palette.Palette.call(this, invoker, primaryText); + + this.selectItemEvent = document.createEvent("CustomEvent"); + this.selectItemEvent.initCustomEvent('selectItem', true, true, { + 'item': undefined + }); + + var menuElem = document.createElement('ul'); + menuElem.className = "menu"; + menuElem.innerHTML = mustache.render(template, menuData); + this.setContent([menuElem]); + + // Pop-down the palette when a item in the menu is clicked. + + this.buttons = menuElem.querySelectorAll('button'); + + var that = this; + + function popDownOnButtonClick(event) { + that.selectItemEvent.detail.target = event.target; + that.getPalette().dispatchEvent(that.selectItemEvent); + that.popDown(); + } + + for (var i = 0; i < this.buttons.length; i++) { + this.buttons[i].addEventListener('click', popDownOnButtonClick); + } + }; + + var addEventListener = function (type, listener, useCapture) { + return this.getPalette().addEventListener(type, listener, useCapture); + }; + + menupalette.MenuPalette.prototype = + Object.create(palette.Palette.prototype, { + addEventListener: { + value: addEventListener, + enumerable: true, + configurable: true, + writable: true + } + }); + + return menupalette; +}); diff --git a/lib/sugar-web/graphics/palette.js b/lib/sugar-web/graphics/palette.js new file mode 100644 index 0000000..be5cf4b --- /dev/null +++ b/lib/sugar-web/graphics/palette.js @@ -0,0 +1,182 @@ +define(function () { + + 'use strict'; + + var palettesGroup = []; + + function getOffset(elem) { + // Ugly hack to consider the palette margin. + var style = elem.currentStyle || window.getComputedStyle(elem, ''); + + // Remove 'px' from the strings. + var x = -2 * style.marginLeft.slice(0, -2); + var y = -1 * style.marginTop.slice(0, -2); + + var rect = elem.getBoundingClientRect(); + x += rect.left; + y += rect.top; + return { + top: y, + left: x, + width: rect.width, + height: rect.height + }; + } + + var palette = {}; + + palette.Palette = function (invoker, primaryText) { + this.invoker = invoker; + if (this.invoker.classList.contains("toolbutton")) { + this.invoker.classList.add("invoker"); + } + this.primaryText = primaryText; + var paletteElem; + var wrapperElem; + var headerElem; + var headerSeparatorElem; + var containerElem; + var that = this; + palettesGroup.push(this); + + invoker.addEventListener('click', function (event) { + if (!that.invoker.classList.contains("toolbutton")) { + updatePosition(event.x, event.y); + } + that.toggle(); + }); + + function updatePosition(clickX, clickY) { + var paletteX; + var paletteY; + + if (typeof (clickX) !== 'undefined' && + typeof (clickY) !== 'undefined') { + paletteX = clickX; + paletteY = clickY; + } else { + var invokerOffset = getOffset(that.invoker); + paletteX = invokerOffset.left; + paletteY = invokerOffset.top; + } + + paletteElem.style.left = paletteX + "px"; + paletteElem.style.top = paletteY + "px"; + } + + // A palette element can have a header, content, one or both. + + function createPaletteElement() { + if (paletteElem !== undefined) { + return; + } + paletteElem = document.createElement('div'); + paletteElem.className = "palette"; + paletteElem.style.visibility = "hidden"; + document.body.appendChild(paletteElem); + + if (that.invoker.classList.contains("toolbutton")) { + var invokerElem = document.createElement('div'); + invokerElem.className = "palette-invoker"; + var style = that.invoker.currentStyle || + window.getComputedStyle(that.invoker, ''); + invokerElem.style.backgroundImage = style.backgroundImage; + + invokerElem.addEventListener('click', function (e) { + that.toggle(); + }); + + paletteElem.appendChild(invokerElem); + + } + + wrapperElem = document.createElement('div'); + wrapperElem.className = "wrapper"; + paletteElem.appendChild(wrapperElem); + + if (that.primaryText !== undefined) { + headerElem = document.createElement('div'); + headerElem.className = "header"; + headerElem.innerText = that.primaryText; + wrapperElem.appendChild(headerElem); + } + + headerSeparatorElem = document.createElement('hr'); + headerSeparatorElem.className = "header-separator"; + headerSeparatorElem.style.display = "none"; + wrapperElem.appendChild(headerSeparatorElem); + + containerElem = document.createElement('div'); + containerElem.className = "container"; + wrapperElem.appendChild(containerElem); + + updatePosition(); + } + + this.getPalette = function () { + if (paletteElem === undefined) { + createPaletteElement(); + } + return paletteElem; + }; + + this.setContent = function (elementsList) { + if (paletteElem === undefined) { + createPaletteElement(); + } + + (function removePreviousContent() { + for (var i = 0; i < containerElem.children.length; i++) { + var child = containerElem.children[i]; + containerElem.removeChild(child); + } + }()); + + (function addNewContent() { + for (var i = 0; i < elementsList.length; i++) { + var child = elementsList[i]; + containerElem.appendChild(child); + } + }()); + + // The header separator will be visible only if there are + // both, header and content. + if (elementsList.length > 0 && this.primaryText !== undefined) { + headerSeparatorElem.style.display = "block"; + } else { + headerSeparatorElem.style.display = "none"; + } + }; + + this.isDown = function () { + return paletteElem === undefined || + paletteElem.style.visibility == "hidden"; + }; + + }; + + palette.Palette.prototype.popUp = function () { + for (var i = 0; i < palettesGroup.length; i++) { + var otherPalette = palettesGroup[i]; + if (otherPalette != this) { + otherPalette.popDown(); + } + } + this.getPalette().style.visibility = "visible"; + }; + + palette.Palette.prototype.popDown = function () { + this.getPalette().style.visibility = "hidden"; + }; + + palette.Palette.prototype.toggle = function () { + if (this.isDown()) { + this.popUp(); + } else { + this.popDown(); + } + }; + + return palette; + +}); diff --git a/lib/sugar-web/graphics/radiobuttonsgroup.js b/lib/sugar-web/graphics/radiobuttonsgroup.js new file mode 100644 index 0000000..782a176 --- /dev/null +++ b/lib/sugar-web/graphics/radiobuttonsgroup.js @@ -0,0 +1,62 @@ +define(function () { + + 'use strict'; + + var radioButtonsGroup = {}; + + // ## RadioButtonsGroup + // + // A group of elements where only one can be active at the same + // time. + // + // When an element is clicked, it becomes the active one. The + // active element gains the 'active' CSS class. + // + // Parameters: + // + // * **elems** Array of elements of the group. + radioButtonsGroup.RadioButtonsGroup = function (elems) { + this.elems = elems; + var active; + + for (var i = 0; i < elems.length; i++) { + var elem = elems[i]; + elem.addEventListener("click", clickHandler); + + // The first element that has 'active' CSS class is made + // the active of the group on startup. + if (active === undefined && elem.classList.contains('active')) { + active = elem; + } + } + + // If no element has 'active' CSS class, the first element of + // the array is made the active. + if (active === undefined) { + active = elems[0]; + updateClasses(); + } + + function clickHandler(evt) { + active = evt.target; + updateClasses(); + } + + function updateClasses() { + for (i = 0; i < elems.length; i++) { + var elem = elems[i]; + elem.classList.remove('active'); + } + active.classList.add('active'); + } + + // Get the active element. + this.getActive = function () { + return active; + }; + + }; + + return radioButtonsGroup; + +}); diff --git a/lib/sugar-web/graphics/xocolor.js b/lib/sugar-web/graphics/xocolor.js new file mode 100644 index 0000000..96d9a63 --- /dev/null +++ b/lib/sugar-web/graphics/xocolor.js @@ -0,0 +1,731 @@ +define(function () { + + 'use strict'; + + var xocolor = {}; + + xocolor.colors = [ + { + stroke: '#B20008', + fill: '#FF2B34' + }, + { + stroke: '#FF2B34', + fill: '#B20008' + }, + { + stroke: '#E6000A', + fill: '#FF2B34' + }, + { + stroke: '#FF2B34', + fill: '#E6000A' + }, + { + stroke: '#FFADCE', + fill: '#FF2B34' + }, + { + stroke: '#9A5200', + fill: '#FF2B34' + }, + { + stroke: '#FF2B34', + fill: '#9A5200' + }, + { + stroke: '#FF8F00', + fill: '#FF2B34' + }, + { + stroke: '#FF2B34', + fill: '#FF8F00' + }, + { + stroke: '#FFC169', + fill: '#FF2B34' + }, + { + stroke: '#807500', + fill: '#FF2B34' + }, + { + stroke: '#FF2B34', + fill: '#807500' + }, + { + stroke: '#BE9E00', + fill: '#FF2B34' + }, + { + stroke: '#FF2B34', + fill: '#BE9E00' + }, + { + stroke: '#F8E800', + fill: '#FF2B34' + }, + { + stroke: '#008009', + fill: '#FF2B34' + }, + { + stroke: '#FF2B34', + fill: '#008009' + }, + { + stroke: '#00B20D', + fill: '#FF2B34' + }, + { + stroke: '#FF2B34', + fill: '#00B20D' + }, + { + stroke: '#8BFF7A', + fill: '#FF2B34' + }, + { + stroke: '#00588C', + fill: '#FF2B34' + }, + { + stroke: '#FF2B34', + fill: '#00588C' + }, + { + stroke: '#005FE4', + fill: '#FF2B34' + }, + { + stroke: '#FF2B34', + fill: '#005FE4' + }, + { + stroke: '#BCCDFF', + fill: '#FF2B34' + }, + { + stroke: '#5E008C', + fill: '#FF2B34' + }, + { + stroke: '#FF2B34', + fill: '#5E008C' + }, + { + stroke: '#7F00BF', + fill: '#FF2B34' + }, + { + stroke: '#FF2B34', + fill: '#7F00BF' + }, + { + stroke: '#D1A3FF', + fill: '#FF2B34' + }, + { + stroke: '#9A5200', + fill: '#FF8F00' + }, + { + stroke: '#FF8F00', + fill: '#9A5200' + }, + { + stroke: '#C97E00', + fill: '#FF8F00' + }, + { + stroke: '#FF8F00', + fill: '#C97E00' + }, + { + stroke: '#FFC169', + fill: '#FF8F00' + }, + { + stroke: '#807500', + fill: '#FF8F00' + }, + { + stroke: '#FF8F00', + fill: '#807500' + }, + { + stroke: '#BE9E00', + fill: '#FF8F00' + }, + { + stroke: '#FF8F00', + fill: '#BE9E00' + }, + { + stroke: '#F8E800', + fill: '#FF8F00' + }, + { + stroke: '#008009', + fill: '#FF8F00' + }, + { + stroke: '#FF8F00', + fill: '#008009' + }, + { + stroke: '#00B20D', + fill: '#FF8F00' + }, + { + stroke: '#FF8F00', + fill: '#00B20D' + }, + { + stroke: '#8BFF7A', + fill: '#FF8F00' + }, + { + stroke: '#00588C', + fill: '#FF8F00' + }, + { + stroke: '#FF8F00', + fill: '#00588C' + }, + { + stroke: '#005FE4', + fill: '#FF8F00' + }, + { + stroke: '#FF8F00', + fill: '#005FE4' + }, + { + stroke: '#BCCDFF', + fill: '#FF8F00' + }, + { + stroke: '#5E008C', + fill: '#FF8F00' + }, + { + stroke: '#FF8F00', + fill: '#5E008C' + }, + { + stroke: '#A700FF', + fill: '#FF8F00' + }, + { + stroke: '#FF8F00', + fill: '#A700FF' + }, + { + stroke: '#D1A3FF', + fill: '#FF8F00' + }, + { + stroke: '#B20008', + fill: '#FF8F00' + }, + { + stroke: '#FF8F00', + fill: '#B20008' + }, + { + stroke: '#FF2B34', + fill: '#FF8F00' + }, + { + stroke: '#FF8F00', + fill: '#FF2B34' + }, + { + stroke: '#FFADCE', + fill: '#FF8F00' + }, + { + stroke: '#807500', + fill: '#F8E800' + }, + { + stroke: '#F8E800', + fill: '#807500' + }, + { + stroke: '#BE9E00', + fill: '#F8E800' + }, + { + stroke: '#F8E800', + fill: '#BE9E00' + }, + { + stroke: '#FFFA00', + fill: '#EDDE00' + }, + { + stroke: '#008009', + fill: '#F8E800' + }, + { + stroke: '#F8E800', + fill: '#008009' + }, + { + stroke: '#00EA11', + fill: '#F8E800' + }, + { + stroke: '#F8E800', + fill: '#00EA11' + }, + { + stroke: '#8BFF7A', + fill: '#F8E800' + }, + { + stroke: '#00588C', + fill: '#F8E800' + }, + { + stroke: '#F8E800', + fill: '#00588C' + }, + { + stroke: '#00A0FF', + fill: '#F8E800' + }, + { + stroke: '#F8E800', + fill: '#00A0FF' + }, + { + stroke: '#BCCEFF', + fill: '#F8E800' + }, + { + stroke: '#5E008C', + fill: '#F8E800' + }, + { + stroke: '#F8E800', + fill: '#5E008C' + }, + { + stroke: '#AC32FF', + fill: '#F8E800' + }, + { + stroke: '#F8E800', + fill: '#AC32FF' + }, + { + stroke: '#D1A3FF', + fill: '#F8E800' + }, + { + stroke: '#B20008', + fill: '#F8E800' + }, + { + stroke: '#F8E800', + fill: '#B20008' + }, + { + stroke: '#FF2B34', + fill: '#F8E800' + }, + { + stroke: '#F8E800', + fill: '#FF2B34' + }, + { + stroke: '#FFADCE', + fill: '#F8E800' + }, + { + stroke: '#9A5200', + fill: '#F8E800' + }, + { + stroke: '#F8E800', + fill: '#9A5200' + }, + { + stroke: '#FF8F00', + fill: '#F8E800' + }, + { + stroke: '#F8E800', + fill: '#FF8F00' + }, + { + stroke: '#FFC169', + fill: '#F8E800' + }, + { + stroke: '#008009', + fill: '#00EA11' + }, + { + stroke: '#00EA11', + fill: '#008009' + }, + { + stroke: '#00B20D', + fill: '#00EA11' + }, + { + stroke: '#00EA11', + fill: '#00B20D' + }, + { + stroke: '#8BFF7A', + fill: '#00EA11' + }, + { + stroke: '#00588C', + fill: '#00EA11' + }, + { + stroke: '#00EA11', + fill: '#00588C' + }, + { + stroke: '#005FE4', + fill: '#00EA11' + }, + { + stroke: '#00EA11', + fill: '#005FE4' + }, + { + stroke: '#BCCDFF', + fill: '#00EA11' + }, + { + stroke: '#5E008C', + fill: '#00EA11' + }, + { + stroke: '#00EA11', + fill: '#5E008C' + }, + { + stroke: '#7F00BF', + fill: '#00EA11' + }, + { + stroke: '#00EA11', + fill: '#7F00BF' + }, + { + stroke: '#D1A3FF', + fill: '#00EA11' + }, + { + stroke: '#B20008', + fill: '#00EA11' + }, + { + stroke: '#00EA11', + fill: '#B20008' + }, + { + stroke: '#FF2B34', + fill: '#00EA11' + }, + { + stroke: '#00EA11', + fill: '#FF2B34' + }, + { + stroke: '#FFADCE', + fill: '#00EA11' + }, + { + stroke: '#9A5200', + fill: '#00EA11' + }, + { + stroke: '#00EA11', + fill: '#9A5200' + }, + { + stroke: '#FF8F00', + fill: '#00EA11' + }, + { + stroke: '#00EA11', + fill: '#FF8F00' + }, + { + stroke: '#FFC169', + fill: '#00EA11' + }, + { + stroke: '#807500', + fill: '#00EA11' + }, + { + stroke: '#00EA11', + fill: '#807500' + }, + { + stroke: '#BE9E00', + fill: '#00EA11' + }, + { + stroke: '#00EA11', + fill: '#BE9E00' + }, + { + stroke: '#F8E800', + fill: '#00EA11' + }, + { + stroke: '#00588C', + fill: '#00A0FF' + }, + { + stroke: '#00A0FF', + fill: '#00588C' + }, + { + stroke: '#005FE4', + fill: '#00A0FF' + }, + { + stroke: '#00A0FF', + fill: '#005FE4' + }, + { + stroke: '#BCCDFF', + fill: '#00A0FF' + }, + { + stroke: '#5E008C', + fill: '#00A0FF' + }, + { + stroke: '#00A0FF', + fill: '#5E008C' + }, + { + stroke: '#9900E6', + fill: '#00A0FF' + }, + { + stroke: '#00A0FF', + fill: '#9900E6' + }, + { + stroke: '#D1A3FF', + fill: '#00A0FF' + }, + { + stroke: '#B20008', + fill: '#00A0FF' + }, + { + stroke: '#00A0FF', + fill: '#B20008' + }, + { + stroke: '#FF2B34', + fill: '#00A0FF' + }, + { + stroke: '#00A0FF', + fill: '#FF2B34' + }, + { + stroke: '#FFADCE', + fill: '#00A0FF' + }, + { + stroke: '#9A5200', + fill: '#00A0FF' + }, + { + stroke: '#00A0FF', + fill: '#9A5200' + }, + { + stroke: '#FF8F00', + fill: '#00A0FF' + }, + { + stroke: '#00A0FF', + fill: '#FF8F00' + }, + { + stroke: '#FFC169', + fill: '#00A0FF' + }, + { + stroke: '#807500', + fill: '#00A0FF' + }, + { + stroke: '#00A0FF', + fill: '#807500' + }, + { + stroke: '#BE9E00', + fill: '#00A0FF' + }, + { + stroke: '#00A0FF', + fill: '#BE9E00' + }, + { + stroke: '#F8E800', + fill: '#00A0FF' + }, + { + stroke: '#008009', + fill: '#00A0FF' + }, + { + stroke: '#00A0FF', + fill: '#008009' + }, + { + stroke: '#00B20D', + fill: '#00A0FF' + }, + { + stroke: '#00A0FF', + fill: '#00B20D' + }, + { + stroke: '#8BFF7A', + fill: '#00A0FF' + }, + { + stroke: '#5E008C', + fill: '#AC32FF' + }, + { + stroke: '#AC32FF', + fill: '#5E008C' + }, + { + stroke: '#7F00BF', + fill: '#AC32FF' + }, + { + stroke: '#AC32FF', + fill: '#7F00BF' + }, + { + stroke: '#D1A3FF', + fill: '#AC32FF' + }, + { + stroke: '#B20008', + fill: '#AC32FF' + }, + { + stroke: '#AC32FF', + fill: '#B20008' + }, + { + stroke: '#FF2B34', + fill: '#AC32FF' + }, + { + stroke: '#AC32FF', + fill: '#FF2B34' + }, + { + stroke: '#FFADCE', + fill: '#AC32FF' + }, + { + stroke: '#9A5200', + fill: '#AC32FF' + }, + { + stroke: '#AC32FF', + fill: '#9A5200' + }, + { + stroke: '#FF8F00', + fill: '#AC32FF' + }, + { + stroke: '#AC32FF', + fill: '#FF8F00' + }, + { + stroke: '#FFC169', + fill: '#AC32FF' + }, + { + stroke: '#807500', + fill: '#AC32FF' + }, + { + stroke: '#AC32FF', + fill: '#807500' + }, + { + stroke: '#BE9E00', + fill: '#AC32FF' + }, + { + stroke: '#AC32FF', + fill: '#BE9E00' + }, + { + stroke: '#F8E800', + fill: '#AC32FF' + }, + { + stroke: '#008009', + fill: '#AC32FF' + }, + { + stroke: '#AC32FF', + fill: '#008009' + }, + { + stroke: '#00B20D', + fill: '#AC32FF' + }, + { + stroke: '#AC32FF', + fill: '#00B20D' + }, + { + stroke: '#8BFF7A', + fill: '#AC32FF' + }, + { + stroke: '#00588C', + fill: '#AC32FF' + }, + { + stroke: '#AC32FF', + fill: '#00588C' + }, + { + stroke: '#005FE4', + fill: '#AC32FF' + }, + { + stroke: '#AC32FF', + fill: '#005FE4' + }, + { + stroke: '#BCCDFF', + fill: '#AC32FF' + } + ]; + + return xocolor; +}); diff --git a/lib/sugar-web/package.json b/lib/sugar-web/package.json new file mode 100644 index 0000000..f2e3555 --- /dev/null +++ b/lib/sugar-web/package.json @@ -0,0 +1,10 @@ +{ + "volo": { + "baseUrl": "lib", + "dependencies": { + "webL10n": "github:sugarlabs/webL10n", + "mustache": "github:janl/mustache.js/0.7.2", + "text": "github:requirejs/text" + } + } +} diff --git a/lib/sugar-web/presence.js b/lib/sugar-web/presence.js new file mode 100644 index 0000000..cba2d2b --- /dev/null +++ b/lib/sugar-web/presence.js @@ -0,0 +1,302 @@ +define(function (require) { + // Message type constants + var msgInit = 0; + var msgListUsers = 1; + var msgCreateSharedActivity = 2; + var msgListSharedActivities = 3; + var msgJoinSharedActivity = 4; + var msgLeaveSharedActivity = 5; + var msgOnConnectionClosed = 6; + var msgOnSharedActivityUserChanged = 7; + var msgSendMessage = 8; + var msgListSharedActivityUsers = 9; + + // Array for callbacks on each type + var callbackArray = []; + + // User and shared info storage + var userInfo = null; + var sharedInfo = null; + + // Connection object + function SugarPresence() { + // Init callbacks + var emptyCallback = function() {}; + var listUsersCallback = emptyCallback; + var createSharedActivityCallback = emptyCallback; + var listSharedActivityCallback = emptyCallback; + var joinSharedActivity = emptyCallback; + var leaveSharedActivity = emptyCallback; + var onConnectionClosed = emptyCallback; + var onSharedActivityUserChanged = emptyCallback; + var receivedDataCallback = emptyCallback; + var listSharedActivityUsersCallback = emptyCallback; + callbackArray = [emptyCallback, listUsersCallback, createSharedActivityCallback, + listSharedActivityCallback, joinSharedActivity, leaveSharedActivity, + onConnectionClosed, onSharedActivityUserChanged, receivedDataCallback, + listSharedActivityUsersCallback + ]; + this.socket = null; + + // Handle message received from server + this.registerMessageHandler = function() { + // Get message content + this.socket.onmessage = function(event) { + // Convert message to JSON + var edata = event.data; + try { + var json = JSON.parse(edata); + } catch (e) { + console.log('Presence API error, this doesn\'t look like a valid JSON: ', edata); + return; + } + + // Call the matching callback + if (json.type < callbackArray.length) + callbackArray[json.type](json.data); + else + console.log('Presence API error, unknown callback type:'+json.type); + }; + } + + // Register user to the server + this.registerUser = function() { + this.socket.send(JSON.stringify(this.userInfo)); + } + + } + + // Create presence object + var presence = new SugarPresence(); + + // Test if connected to network + SugarPresence.prototype.isConnected = function() { + return (this.socket != null); + } + + // Get user info + SugarPresence.prototype.getUserInfo = function() { + return this.userInfo; + } + + // Get shared activity info + SugarPresence.prototype.getSharedInfo = function() { + return this.sharedInfo; + } + + // Get settings + function getSugarSettings(callback) { + if (typeof chrome != 'undefined' && chrome.app && chrome.app.runtime) { + chrome.storage.local.get('sugar_settings', function(values) { + callback(values.sugar_settings); + }); + } else { + callback(localStorage.sugar_settings); + } + } + + // Join network function + SugarPresence.prototype.joinNetwork = function(callback) { + // Check WebSocket support + if (!window.WebSocket){ + that.socket = null; + console.log('WebSocket not supported'); + callback({code: -1}, presence); + } + + // Get server settings + var that = this; + getSugarSettings(function (sugar_settings) { + // Get server name + var server = location.hostname; + var port = 8039; + var secure = false; + if (sugar_settings) { + var sugarSettings = JSON.parse(sugar_settings); + if (sugarSettings.server) { + server = sugarSettings.server.url.substring(sugarSettings.server.url.indexOf("://")+3); + secure = (sugarSettings.server.url.indexOf("https://") == 0); + var endName = server.indexOf(':') + if (endName == -1) endName = server.indexOf('/'); + if (endName == -1) endName = server.length; + server = server.substring(0, endName); + port = sugarSettings.server.presence; + } + } + + // Connect to server + if (!server) { + that.socket = null; + console.log('No server available'); + callback({code: -2}, presence); + return; + } + that.socket = new WebSocket((secure ? 'wss://' : 'ws://')+server+':'+port); + that.socket.onerror = function(error) { + console.log('WebSocket Error: ' + error); + callback(error, presence); + that.socket = null; + }; + + // When connection open, send user info + that.socket.onopen = function(event) { + var sugarSettings = JSON.parse(sugar_settings); + that.userInfo = { + name: sugarSettings.name, + networkId: sugarSettings.networkId, + colorvalue: sugarSettings.colorvalue + }; + that.registerMessageHandler(); + that.registerUser(); + callback(null, presence); + }; + + // When connection closed, call closed callback + that.socket.onclose = function(event) { + callbackArray[msgOnConnectionClosed](event); + }; + }); + } + + // Leave network + SugarPresence.prototype.leaveNetwork = function() { + if (!this.isConnected()) + return; + this.socket.close(); + this.socket = null; + } + + // List all users. Will receive an array of users. + SugarPresence.prototype.listUsers = function(callback) { + if (!this.isConnected()) + return; + + // Register call back + callbackArray[msgListUsers] = callback; + + // Send list user message + var sjson = JSON.stringify({ + type: msgListUsers + }); + this.socket.send(sjson); + } + + // List users connected to a group. Will receive an array of users. + SugarPresence.prototype.listSharedActivityUsers = function(group, callback) { + if (!this.isConnected()) + return; + + // Register call back + var that = this; + callbackArray[msgListSharedActivityUsers] = function(data) { + callback(data); + } + + // Send list user message + var sjson = JSON.stringify({ + type: msgListSharedActivityUsers, + group: group + }); + this.socket.send(sjson); + } + + // Create a shared activity. Will receive a unique group id. + SugarPresence.prototype.createSharedActivity = function(activityId, callback) { + if (!this.isConnected()) + return; + + // Register call back + var that = this; + callbackArray[msgCreateSharedActivity] = function(data) { + that.sharedInfo = { id: data }; + callback(data); + } + + // Send create shared activity message + var sjson = JSON.stringify({ + type: msgCreateSharedActivity, + activityId: activityId + }); + this.socket.send(sjson); + } + + // List all shared activities. Will receive an array of each shared activities and users connected + SugarPresence.prototype.listSharedActivities = function(callback) { + if (!this.isConnected()) + return; + + // Register call back + callbackArray[msgListSharedActivities] = callback; + + // Send list shared activities message + var sjson = JSON.stringify({ + type: msgListSharedActivities + }); + this.socket.send(sjson); + } + + // Join a shared activity. Will receive group properties or null + SugarPresence.prototype.joinSharedActivity = function(group, callback) { + if (!this.isConnected()) + return; + + // Register call back + var that = this; + callbackArray[msgJoinSharedActivity] = function(data) { + that.sharedInfo = data; + callback(data); + } + + // Send join shared activity message + var sjson = JSON.stringify({ + type: msgJoinSharedActivity, + group: group + }); + this.socket.send(sjson); + } + + // Leave shared activities + SugarPresence.prototype.leaveSharedActivity = function(group, callback) { + if (!this.isConnected()) + return; + + // Register call back + callbackArray[msgLeaveSharedActivity] = callback; // BUG: This callback is never called + + // Send leave shared activity message + var sjson = JSON.stringify({ + type: msgLeaveSharedActivity, + group: group + }); + this.socket.send(sjson); + } + + // Register connection closed event + SugarPresence.prototype.onConnectionClosed = function(callback) { + callbackArray[msgOnConnectionClosed] = callback; + } + + // Register shared activity user changed event + SugarPresence.prototype.onSharedActivityUserChanged = function(callback) { + callbackArray[msgOnSharedActivityUserChanged] = callback; + } + + // Send message to a group + SugarPresence.prototype.sendMessage = function(group, data) {; + if (!this.isConnected()) + return; + var sjson = JSON.stringify({ + type: msgSendMessage, + group: group, + data: data + }); + this.socket.send(sjson); + } + + // Register data received message + SugarPresence.prototype.onDataReceived = function(callback) { + callbackArray[msgSendMessage] = callback; + } + + return presence; +}); diff --git a/lib/sugar-web/test/functional/datastoreSpec.js b/lib/sugar-web/test/functional/datastoreSpec.js new file mode 100644 index 0000000..530d3f0 --- /dev/null +++ b/lib/sugar-web/test/functional/datastoreSpec.js @@ -0,0 +1,253 @@ +define(["sugar-web/bus", "sugar-web/env", "sugar-web/datastore"], function (bus, env, datastore) { + + 'use strict'; + + var defaultTimeoutInterval = jasmine.getEnv().defaultTimeoutInterval; + + describe("datastore object", function () { + + beforeEach(function () { + // FIXME: due to db initialization, + // the very first save() call may take a while + jasmine.getEnv().defaultTimeoutInterval = 10000; + spyOn(env, 'isStandalone').andReturn(false); + bus.listen(); + }); + + afterEach(function () { + jasmine.getEnv().defaultTimeoutInterval = defaultTimeoutInterval; + bus.close(); + }); + + it("should be able to set and get metadata", function () { + var saved; + var gotMetadata; + var datastoreObject; + var objectId; + var testTitle = "hello"; + + runs(function () { + saved = false; + + datastoreObject = new datastore.DatastoreObject(); + datastoreObject.setMetadata({ + title: testTitle + }); + + datastoreObject.save(function () { + saved = true; + objectId = datastoreObject.objectId; + }); + }); + + waitsFor(function () { + return saved; + }, "should have saved the object"); + + runs(function () { + gotMetadata = false; + + datastoreObject = new datastore.DatastoreObject(objectId); + datastoreObject.getMetadata(function (error, metadata) { + expect(metadata.title).toEqual(testTitle); + gotMetadata = true; + }); + }); + + waitsFor(function () { + return gotMetadata; + }, "should have got the object metadata"); + }); + + it("should be able to save and load text", function () { + var saved; + var gotMetadata; + var datastoreObject; + var objectId; + var testText = "hello"; + + runs(function () { + saved = false; + + datastoreObject = new datastore.DatastoreObject(); + datastoreObject.setDataAsText(testText); + + datastoreObject.save(function () { + saved = true; + objectId = datastoreObject.objectId; + }); + }); + + waitsFor(function () { + return saved; + }, "should have saved the object"); + + runs(function () { + gotMetadata = false; + + function onLoaded(error, metadata, text) { + expect(text).toEqual(testText); + gotMetadata = true; + } + + datastoreObject = new datastore.DatastoreObject(objectId); + datastoreObject.loadAsText(onLoaded); + }); + + waitsFor(function () { + return gotMetadata; + }, "should have got the object metadata"); + }); + + }); + + describe("datastore", function () { + + beforeEach(function () { + // FIXME: due to db initialization, + // the very first save() call may take a while + jasmine.getEnv().defaultTimeoutInterval = 10000; + spyOn(env, 'isStandalone').andReturn(false); + bus.listen(); + }); + + afterEach(function () { + jasmine.getEnv().defaultTimeoutInterval = defaultTimeoutInterval; + bus.close(); + }); + + it("should be able to create an object", function () { + var wasCreated; + + runs(function () { + wasCreated = false; + + function onCreated(error, objectId) { + expect(objectId).toEqual(jasmine.any(String)); + wasCreated = true; + } + + datastore.create({}, onCreated); + }); + + waitsFor(function () { + return wasCreated; + }, "the object should be created"); + }); + + it("should be able to set object metadata", function () { + var metadataSet; + var gotMetadata; + var objectId; + var testTitle = "hello"; + + runs(function () { + function onMetadataSet(error) { + expect(error).toBeNull(); + metadataSet = true; + } + + function onCreated(error, createdObjectId) { + objectId = createdObjectId; + + var metadata = { + title: testTitle + }; + datastore.setMetadata(objectId, metadata, onMetadataSet); + } + + metadataSet = false; + + datastore.create({}, onCreated); + }); + + waitsFor(function () { + return metadataSet; + }, "metadata should be set"); + + runs(function () { + function onGotMetadata(error, metadata) { + expect(metadata.title).toEqual(testTitle); + gotMetadata = true; + } + + gotMetadata = false; + + datastore.getMetadata(objectId, onGotMetadata); + }); + + waitsFor(function () { + return gotMetadata; + }, "should have got object metadata"); + }); + + it("should be able to get object metadata", function () { + var gotMetadata = false; + var testTitle = "hello"; + + runs(function () { + function onGotMetadata(error, metadata) { + expect(metadata.title).toEqual(testTitle); + gotMetadata = true; + } + + function onCreated(error, objectId) { + datastore.getMetadata(objectId, onGotMetadata); + } + + datastore.create({ + title: testTitle + }, onCreated); + }); + + waitsFor(function () { + return gotMetadata; + }, "should have got object metadata"); + }); + + it("should be able to load an object", function () { + var wasLoaded = false; + var objectId = null; + var inputStream = null; + var objectData = null; + var testData = new Uint8Array([1, 2, 3, 4]); + + runs(function () { + function onStreamClose(error) { + expect(objectData).toEqual(testData.buffer); + wasLoaded = true; + } + + function onStreamRead(error, data) { + objectData = data; + } + + function onLoaded(error, metadata, loadedInputStream) { + inputStream = loadedInputStream; + inputStream.read(8192, onStreamRead); + inputStream.close(onStreamClose); + } + + function onClosed(error) { + datastore.load(objectId, onLoaded); + } + + function onSaved(error, outputStream) { + outputStream.write(testData); + outputStream.close(onClosed); + } + + function onCreated(error, createdObjectId) { + objectId = createdObjectId; + datastore.save(objectId, {}, onSaved); + } + + datastore.create({}, onCreated); + }); + + waitsFor(function () { + return wasLoaded; + }, "the object should be loaded"); + }); + }); +}); diff --git a/lib/sugar-web/test/functional/toolkitContractSpec.js b/lib/sugar-web/test/functional/toolkitContractSpec.js new file mode 100644 index 0000000..09b83b1 --- /dev/null +++ b/lib/sugar-web/test/functional/toolkitContractSpec.js @@ -0,0 +1,31 @@ +define(["sugar-web/env"], function (env) { + + 'use strict'; + + describe("Environment object", function () { + + it("should have valid properties", function () { + //FIXME: we shouldn't stub this here. + //current implementation of isStandalone fails with sugar-web-test + spyOn(env, 'isStandalone').andReturn(false); + + var expectedEnv; + + runs(function () { + env.getEnvironment(function (error, environment) { + expectedEnv = environment; + }); + }); + + waitsFor(function () { + return expectedEnv !== undefined; + }, "should get sugar environment"); + + runs(function () { + expect(expectedEnv.bundleId).not.toBeUndefined(); + expect(expectedEnv.activityId).not.toBeUndefined(); + expect(expectedEnv.activityName).not.toBeUndefined(); + }); + }); + }); +}); diff --git a/lib/sugar-web/test/graphics/iconSpec.js b/lib/sugar-web/test/graphics/iconSpec.js new file mode 100644 index 0000000..18fb353 --- /dev/null +++ b/lib/sugar-web/test/graphics/iconSpec.js @@ -0,0 +1,59 @@ +define(["sugar-web/graphics/icon"], function (icon) { + + 'use strict'; + + describe("icon", function () { + var wasLoaded; + var iconUrlResult; + + it("should be able to change icon more than once", function () { + var elem = document.createElement('div'); + var iconUrl; + + function callback(url) { + iconUrlResult = url; + wasLoaded = true; + } + + runs(function () { + wasLoaded = false; + iconUrl = "/base/graphics/icons/actions/dialog-ok-active.svg"; + var iconInfo = { + "uri": iconUrl, + "strokeColor": '#B20008', + "fillColor": '#FF2B34' + }; + icon.load(iconInfo, callback); + }); + + waitsFor(function () { + return wasLoaded; + }, "icon loaded"); + + runs(function () { + expect(iconUrlResult).not.toBe(iconUrl); + }); + + runs(function () { + wasLoaded = false; + iconUrl = iconUrlResult; + var iconInfo = { + "uri": iconUrl, + "strokeColor": '#FF2B34', + "fillColor": '#B20008' + }; + icon.load(iconInfo, callback); + }); + + waitsFor(function () { + return wasLoaded; + }, "icon loaded"); + + runs(function () { + expect(iconUrlResult).not.toBe(iconUrl); + }); + + }); + }); + +}); diff --git a/lib/sugar-web/test/graphics/menupaletteSpec.js b/lib/sugar-web/test/graphics/menupaletteSpec.js new file mode 100644 index 0000000..3f4758b --- /dev/null +++ b/lib/sugar-web/test/graphics/menupaletteSpec.js @@ -0,0 +1,78 @@ +define(["sugar-web/graphics/menupalette", "sugar-web/graphics/palette"], function (menupalette, palette) { + + 'use strict'; + + describe("menupalette", function () { + + var invoker; + var menuData; + var menuPalette; + + beforeEach(function () { + invoker = document.createElement('button'); + + menuData = [ + { + label: "One", + id: "one-button", + icon: true + }, + { + label: "Two", + id: "two-button", + icon: true + }, + { + label: "Three", + id: "three-button", + icon: true + } + ]; + + menuPalette = new menupalette.MenuPalette(invoker, undefined, + menuData); + }); + + it("should have a fixed number of clickable items", function () { + var buttons = menuPalette.getPalette(). + querySelectorAll('.container button'); + expect(buttons.length).toBe(menuData.length); + }); + + it("should emit a signal with the clicked item", function () { + var button; + var buttonSelected; + + function onItemSelected(event) { + button = event.detail.target; + buttonSelected = true; + } + + runs(function () { + buttonSelected = false; + menuPalette.addEventListener('selectItem', onItemSelected); + + var buttons = menuPalette.getPalette(). + querySelectorAll('.container button'); + buttons[1].click(); + }); + + waitsFor(function () { + return buttonSelected; + }, "should have selected a button"); + + runs(function () { + expect(button.id).toBe("two-button"); + }); + }); + + it("should be an instance of the child class", function () { + expect(menuPalette instanceof menupalette.MenuPalette).toBe(true); + }); + + it("should be an instance of the parent class", function () { + expect(menuPalette instanceof palette.Palette).toBe(true); + }); + + }); +}); diff --git a/lib/sugar-web/test/graphics/paletteSpec.js b/lib/sugar-web/test/graphics/paletteSpec.js new file mode 100644 index 0000000..a50fd32 --- /dev/null +++ b/lib/sugar-web/test/graphics/paletteSpec.js @@ -0,0 +1,36 @@ +define(["sugar-web/graphics/palette"], function (palette) { + + 'use strict'; + + describe("palette", function () { + it("should start down", function () { + var invoker = document.createElement('button'); + var myPalette = new palette.Palette(invoker); + expect(myPalette.isDown()).toBe(true); + }); + + it("should toggle", function () { + var invoker = document.createElement('button'); + var myPalette = new palette.Palette(invoker); + myPalette.toggle(); + expect(myPalette.isDown()).toBe(false); + myPalette.toggle(); + expect(myPalette.isDown()).toBe(true); + }); + + it("if one palette in a group popups, the others popdown", function () { + var invokerA = document.createElement('button'); + var invokerB = document.createElement('button'); + var myPaletteA = new palette.Palette(invokerA); + var myPaletteB = new palette.Palette(invokerB); + myPaletteA.toggle(); + expect(myPaletteA.isDown()).toBe(false); + expect(myPaletteB.isDown()).toBe(true); + myPaletteB.toggle(); + expect(myPaletteA.isDown()).toBe(true); + expect(myPaletteB.isDown()).toBe(false); + }); + + }); + +}); diff --git a/lib/sugar-web/test/graphics/radiobuttonsgroupSpec.js b/lib/sugar-web/test/graphics/radiobuttonsgroupSpec.js new file mode 100644 index 0000000..2c63775 --- /dev/null +++ b/lib/sugar-web/test/graphics/radiobuttonsgroupSpec.js @@ -0,0 +1,97 @@ +define(["sugar-web/graphics/radiobuttonsgroup"], function ( + radioButtonsGroup) { + + 'use strict'; + + var elem1; + var elem2; + var elem3; + + beforeEach(function () { + elem1 = document.createElement('button'); + elem2 = document.createElement('button'); + elem3 = document.createElement('button'); + }); + + describe("radioToolButton", function () { + var wasClicked; + + it("should construct", function () { + var radio = new radioButtonsGroup.RadioButtonsGroup( + [elem1, elem2, elem3]); + expect(radio.elems.length).toBe(3); + }); + + it("should start active the first by default", function () { + var radio = new radioButtonsGroup.RadioButtonsGroup( + [elem1, elem2, elem3]); + expect(radio.getActive()).toBe(elem1); + }); + + it("should start active the first with 'active' class", function () { + elem2.className = "active red"; + elem3.className = "active blue"; + var radio = new radioButtonsGroup.RadioButtonsGroup( + [elem1, elem2, elem3]); + expect(radio.getActive()).toBe(elem2); + }); + + it("should add 'active' class to the selected item", function () { + var radio = new radioButtonsGroup.RadioButtonsGroup( + [elem1, elem2, elem3]); + var elem = radio.getActive(); + expect(elem.classList.contains('active')).toBe(true); + }); + + it("should change the active one on click", function () { + var radio = new radioButtonsGroup.RadioButtonsGroup( + [elem1, elem2, elem3]); + + // let's click elem2 + + runs(function () { + wasClicked = false; + + elem2.onclick = function () { + wasClicked = true; + }; + + elem2.click(); + }); + + waitsFor(function () { + return wasClicked; + }, "the element should be clicked"); + + runs(function () { + var elem = radio.getActive(); + expect(elem).toBe(elem2); + expect(elem.classList.contains('active')).toBe(true); + }); + + // now let's click elem1 + + runs(function () { + wasClicked = false; + + elem1.onclick = function () { + wasClicked = true; + }; + + elem1.click(); + }); + + waitsFor(function () { + return wasClicked; + }, "the element should be clicked"); + + runs(function () { + var elem = radio.getActive(); + expect(elem).toBe(elem1); + expect(elem.classList.contains('active')).toBe(true); + }); + }); + + }); + +}); diff --git a/lib/sugar-web/test/karma-shared.conf.js b/lib/sugar-web/test/karma-shared.conf.js new file mode 100644 index 0000000..9ff061f --- /dev/null +++ b/lib/sugar-web/test/karma-shared.conf.js @@ -0,0 +1,75 @@ +// Karma configuration +// Generated on Mon May 13 2013 10:01:17 GMT-0300 (ART) + + +// list of files / patterns to load in the browser +module.exports = function (config) { + config.set({ + frameworks: ['jasmine', 'requirejs'], + + + // base path, that will be used to resolve files and exclude + basePath: '..', + + + files: [ + 'test/loader.js', + { + pattern: 'lib/**/*.js', + included: false + }, { + pattern: '*.js', + included: false + }, { + pattern: 'activity/**/*.js', + included: false + }, { + pattern: 'graphics/**/*', + included: false + } + ], + + + // list of files to exclude + exclude: [], + + + // test results reporter to use + // possible values: 'dots', 'progress', 'junit' + reporters: ['progress'], + + + // web server port + port: 9876, + + + // cli runner port + runnerPort: 9100, + + + // enable / disable colors in the output (reporters and logs) + colors: true, + + + // level of logging + // possible values: LOG_DISABLE || LOG_ERROR || LOG_WARN || LOG_INFO || + // LOG_DEBUG + logLevel: config.LOG_INFO, + + + // enable / disable watching file and executing tests whenever any file + // changes + autoWatch: true, + + + // If browser does not capture in given timeout [ms], kill it + captureTimeout: 60000, + + + // Continuous Integration mode + // if true, it capture browsers, run tests and exit + singleRun: false, + + preprocessors: {} + }); +}; diff --git a/lib/sugar-web/test/karma-unit.conf.js b/lib/sugar-web/test/karma-unit.conf.js new file mode 100644 index 0000000..889c206 --- /dev/null +++ b/lib/sugar-web/test/karma-unit.conf.js @@ -0,0 +1,19 @@ +// Karma configuration for unit tests + +sharedConfig = require("./karma-shared.conf.js"); + +module.exports = function (config) { + var testFiles = [ + { + pattern: 'test/unit/*Spec.js', + included: false + }, { + pattern: 'test/graphics/*Spec.js', + included: false + }, + ]; + + sharedConfig(config); + + config.files = config.files.concat(testFiles); +}; diff --git a/lib/sugar-web/test/karma.conf.js b/lib/sugar-web/test/karma.conf.js new file mode 100644 index 0000000..9c2d69e --- /dev/null +++ b/lib/sugar-web/test/karma.conf.js @@ -0,0 +1,16 @@ +// Karma configuration for all the tests + +sharedConfig = require("./karma-shared.conf.js"); + +module.exports = function (config) { + var testFiles = [ + { + pattern: 'test/**/*Spec.js', + included: false + } + ]; + + sharedConfig(config); + + config.files = config.files.concat(testFiles); +}; diff --git a/lib/sugar-web/test/loader.js b/lib/sugar-web/test/loader.js new file mode 100644 index 0000000..aec9837 --- /dev/null +++ b/lib/sugar-web/test/loader.js @@ -0,0 +1,21 @@ +var tests = Object.keys(window.__karma__.files).filter(function (file) { + return (/Spec\.js$/).test(file); +}); + +requirejs.config({ + // Karma serves files from '/base' + baseUrl: "/base", + + paths: { + "sugar-web": ".", + "mustache": "lib/mustache", + "text": "lib/text", + "webL10n": "lib/webL10n" + }, + + // ask Require.js to load these files (all our tests) + deps: tests, + + // start test run, once Require.js is done + callback: window.__karma__.start +}); diff --git a/lib/sugar-web/test/unit/busSpec.js b/lib/sugar-web/test/unit/busSpec.js new file mode 100644 index 0000000..2a0ecbe --- /dev/null +++ b/lib/sugar-web/test/unit/busSpec.js @@ -0,0 +1,156 @@ +define(["sugar-web/bus"], function (bus) { + + 'use strict'; + + describe("bus requests", function () { + var client; + + function MockClient() { + this.result = []; + this.error = null; + } + + MockClient.prototype.send = function (data) { + var that = this; + setTimeout(function () { + var parsed = JSON.parse(data); + + var message = { + data: JSON.stringify({ + result: that.result, + error: that.error, + id: parsed.id + }) + }; + + that.onMessage(message); + }, 0); + }; + + MockClient.prototype.close = function () {}; + + beforeEach(function () { + client = new MockClient(); + bus.listen(client); + }); + + afterEach(function () { + bus.close(); + client = null; + }); + + it("should receive a response", function () { + var responseReceived; + + runs(function () { + responseReceived = false; + + function onResponseReceived(error, result) { + expect(error).toBeNull(); + expect(result).toEqual(["hello"]); + responseReceived = true; + } + + client.result = ["hello"]; + + bus.sendMessage("hello", [], onResponseReceived); + }); + + waitsFor(function () { + return responseReceived; + }, "a response should be received"); + }); + + it("should receive an error", function () { + var errorReceived; + + runs(function () { + errorReceived = false; + + function onResponseReceived(error, result) { + expect(error).toEqual(jasmine.any(Error)); + expect(result).toBeNull(); + + errorReceived = true; + } + + client.result = null; + client.error = new Error("error"); + + bus.sendMessage("hello", [], onResponseReceived); + }); + + waitsFor(function () { + return errorReceived; + }, "an error should be received"); + }); + + }); + + describe("bus notifications", function () { + var client; + + function MockClient() { + this.params = null; + } + + MockClient.prototype.send_notification = function (method, params) { + var that = this; + + setTimeout(function () { + var message = { + data: JSON.stringify({ + method: method, + params: that.params + }) + }; + + that.onMessage(message); + }, 0); + }; + + MockClient.prototype.close = function () {}; + + beforeEach(function () { + client = new MockClient(); + bus.listen(client); + }); + + afterEach(function () { + bus.close(); + client = null; + }); + + it("should receive a notification", function () { + var notificationReceived; + var notificationParams; + var originalParams = { + param1: true, + param2: "foo" + }; + + runs(function () { + notificationReceived = false; + notificationParams = null; + + function onNotificationReceived(params) { + notificationReceived = true; + notificationParams = params; + } + + bus.onNotification("hey.there", onNotificationReceived); + + client.params = originalParams; + client.send_notification("hey.there"); + }); + + waitsFor(function () { + return notificationReceived; + }, "a notification should be received"); + + runs(function () { + expect(notificationParams).toEqual(originalParams); + }); + }); + }); +}); diff --git a/lib/sugar-web/test/unit/datastoreSpec.js b/lib/sugar-web/test/unit/datastoreSpec.js new file mode 100644 index 0000000..b166c82 --- /dev/null +++ b/lib/sugar-web/test/unit/datastoreSpec.js @@ -0,0 +1,32 @@ +define(["sugar-web/env", "sugar-web/datastore"], function (env, datastore) { + + 'use strict'; + + describe("Ensure the datastore object has an objectId", function () { + + // FIXME does not work in standalone mode + it("should have objectId", function () { + var objectId = "objectId"; + spyOn(env, "getObjectId").andCallFake(function (callback) { + setTimeout(function () { + callback(objectId); + }, 0); + }); + var callback = jasmine.createSpy(); + + var datastoreObject = new datastore.DatastoreObject(); + + runs(function () { + datastoreObject.ensureObjectId(callback); + }); + + waitsFor(function () { + return datastoreObject.objectId !== undefined; + }, "should have objectId received from the environment"); + + runs(function () { + expect(callback).toHaveBeenCalled(); + }); + }); + }); +}); diff --git a/lib/sugar-web/test/unit/dictstoreSpec.js b/lib/sugar-web/test/unit/dictstoreSpec.js new file mode 100644 index 0000000..38528df --- /dev/null +++ b/lib/sugar-web/test/unit/dictstoreSpec.js @@ -0,0 +1,54 @@ +define(["sugar-web/dictstore", "sugar-web/env"], function (dictstore, env) { + + 'use strict'; + + describe("dictstore on standalone mode", function () { + + beforeEach(function () { + spyOn(env, 'isStandalone').andReturn(true); + }); + + describe("init method", function () { + + it("should execute callback", function () { + var callback = jasmine.createSpy(); + + dictstore.init(callback); + expect(callback).toHaveBeenCalled(); + }); + + it("should maintain localStorage", function () { + localStorage.testKey = "test"; + + dictstore.init(function () {}); + expect(localStorage.testKey).toBe("test"); + }); + }); + + describe("save method", function () { + + it("should just execute the callback", function () { + var callbackExecuted; + + localStorage.test_key = "test"; + + runs(function () { + callbackExecuted = false; + + dictstore.save(function () { + callbackExecuted = true; + }); + }); + + waitsFor(function () { + return callbackExecuted === true; + }, "The callback should executed"); + + runs(function () { + expect(localStorage.test_key).toBe("test"); + }); + }); + }); + + }); +}); diff --git a/lib/sugar-web/test/unit/envSpec.js b/lib/sugar-web/test/unit/envSpec.js new file mode 100644 index 0000000..3ed8c59 --- /dev/null +++ b/lib/sugar-web/test/unit/envSpec.js @@ -0,0 +1,137 @@ +define(["sugar-web/env"], function (env) { + + 'use strict'; + + describe("getObjectId", function () { + + it("should return objectId from the sugar's environment", function () { + var environment = { + objectId: "objectId" + }; + spyOn(env, "getEnvironment").andCallFake(function (callback) { + setTimeout(function () { + callback(null, environment); + }, 0); + }); + var expected_objectId; + + runs(function () { + env.getObjectId(function (objectId) { + expected_objectId = objectId; + }); + }); + + waitsFor(function () { + return expected_objectId !== undefined; + }, "should return objectId"); + }); + }); + + describe("standalone mode", function () { + + it("should return true if in standalone mode", function () { + var noWebActivityURLScheme = "http:"; + spyOn(env, 'getURLScheme').andReturn(noWebActivityURLScheme); + + var isStandaloneMode = env.isStandalone(); + expect(isStandaloneMode).toBe(true); + }); + + it("should return false if not in standalone mode", function () { + var webActivityURLScheme = "activity:"; + spyOn(env, 'getURLScheme').andReturn(webActivityURLScheme); + + var isStandaloneMode = env.isStandalone(); + expect(isStandaloneMode).toBe(false); + }); + }); + + describe("getEnvironment", function () { + var sugarOrig; + + beforeEach(function () { + sugarOrig = JSON.parse(JSON.stringify(window.top.sugar)); + }); + + afterEach(function () { + window.top.sugar = sugarOrig; + }); + + describe("in sugar mode", function () { + + beforeEach(function () { + spyOn(env, 'isStandalone').andReturn(false); + }); + + describe("when env was already set", function () { + + it("should run callback with null error and env", function () { + var environment = {}; + window.top.sugar = { + environment: environment + }; + var callback = jasmine.createSpy(); + + runs(function () { + env.getEnvironment(callback); + }); + + waitsFor(function () { + return callback.wasCalled; + }, "callback should be executed"); + + runs(function () { + expect(callback).toHaveBeenCalledWith( + null, environment); + }); + }); + }); + + describe("when env was not set, yet", function () { + + beforeEach(function () { + window.top.sugar = undefined; + }); + + it("should set onEnvironmentSet handler", function () { + var sugar; + env.getEnvironment(function () {}); + sugar = window.top.sugar; + expect(sugar.onEnvironmentSet).not.toBeUndefined(); + }); + + it("should run callback on EnvironmentSet event", function () { + var callback = jasmine.createSpy(); + var expectedEnv = "env"; + + env.getEnvironment(callback); + window.top.sugar.environment = expectedEnv; + window.top.sugar.onEnvironmentSet(); + + expect(callback).toHaveBeenCalledWith(null, expectedEnv); + }); + }); + }); + + it("should return {} in standalone mode", function () { + window.top.sugar = undefined; + spyOn(env, 'isStandalone').andReturn(true); + var actualEnv; + + runs(function () { + env.getEnvironment(function (error, environment) { + actualEnv = environment; + }); + }); + + waitsFor(function () { + return actualEnv !== undefined; + }, "environment not to be undefined"); + + runs(function () { + expect(actualEnv).toEqual({}); + }); + + }); + }); +}); diff --git a/lib/text.js b/lib/text.js new file mode 100644 index 0000000..1e4fc96 --- /dev/null +++ b/lib/text.js @@ -0,0 +1,386 @@ +/** + * @license RequireJS text 2.0.10 Copyright (c) 2010-2012, The Dojo Foundation All Rights Reserved. + * Available via the MIT or new BSD license. + * see: http://github.com/requirejs/text for details + */ +/*jslint regexp: true */ +/*global require, XMLHttpRequest, ActiveXObject, + define, window, process, Packages, + java, location, Components, FileUtils */ + +define(['module'], function (module) { + 'use strict'; + + var text, fs, Cc, Ci, xpcIsWindows, + progIds = ['Msxml2.XMLHTTP', 'Microsoft.XMLHTTP', 'Msxml2.XMLHTTP.4.0'], + xmlRegExp = /^\s*<\?xml(\s)+version=[\'\"](\d)*.(\d)*[\'\"](\s)*\?>/im, + bodyRegExp = /]*>\s*([\s\S]+)\s*<\/body>/im, + hasLocation = typeof location !== 'undefined' && location.href, + defaultProtocol = hasLocation && location.protocol && location.protocol.replace(/\:/, ''), + defaultHostName = hasLocation && location.hostname, + defaultPort = hasLocation && (location.port || undefined), + buildMap = {}, + masterConfig = (module.config && module.config()) || {}; + + text = { + version: '2.0.10', + + strip: function (content) { + //Strips declarations so that external SVG and XML + //documents can be added to a document without worry. Also, if the string + //is an HTML document, only the part inside the body tag is returned. + if (content) { + content = content.replace(xmlRegExp, ""); + var matches = content.match(bodyRegExp); + if (matches) { + content = matches[1]; + } + } else { + content = ""; + } + return content; + }, + + jsEscape: function (content) { + return content.replace(/(['\\])/g, '\\$1') + .replace(/[\f]/g, "\\f") + .replace(/[\b]/g, "\\b") + .replace(/[\n]/g, "\\n") + .replace(/[\t]/g, "\\t") + .replace(/[\r]/g, "\\r") + .replace(/[\u2028]/g, "\\u2028") + .replace(/[\u2029]/g, "\\u2029"); + }, + + createXhr: masterConfig.createXhr || function () { + //Would love to dump the ActiveX crap in here. Need IE 6 to die first. + var xhr, i, progId; + if (typeof XMLHttpRequest !== "undefined") { + return new XMLHttpRequest(); + } else if (typeof ActiveXObject !== "undefined") { + for (i = 0; i < 3; i += 1) { + progId = progIds[i]; + try { + xhr = new ActiveXObject(progId); + } catch (e) {} + + if (xhr) { + progIds = [progId]; // so faster next time + break; + } + } + } + + return xhr; + }, + + /** + * Parses a resource name into its component parts. Resource names + * look like: module/name.ext!strip, where the !strip part is + * optional. + * @param {String} name the resource name + * @returns {Object} with properties "moduleName", "ext" and "strip" + * where strip is a boolean. + */ + parseName: function (name) { + var modName, ext, temp, + strip = false, + index = name.indexOf("."), + isRelative = name.indexOf('./') === 0 || + name.indexOf('../') === 0; + + if (index !== -1 && (!isRelative || index > 1)) { + modName = name.substring(0, index); + ext = name.substring(index + 1, name.length); + } else { + modName = name; + } + + temp = ext || modName; + index = temp.indexOf("!"); + if (index !== -1) { + //Pull off the strip arg. + strip = temp.substring(index + 1) === "strip"; + temp = temp.substring(0, index); + if (ext) { + ext = temp; + } else { + modName = temp; + } + } + + return { + moduleName: modName, + ext: ext, + strip: strip + }; + }, + + xdRegExp: /^((\w+)\:)?\/\/([^\/\\]+)/, + + /** + * Is an URL on another domain. Only works for browser use, returns + * false in non-browser environments. Only used to know if an + * optimized .js version of a text resource should be loaded + * instead. + * @param {String} url + * @returns Boolean + */ + useXhr: function (url, protocol, hostname, port) { + var uProtocol, uHostName, uPort, + match = text.xdRegExp.exec(url); + if (!match) { + return true; + } + uProtocol = match[2]; + uHostName = match[3]; + + uHostName = uHostName.split(':'); + uPort = uHostName[1]; + uHostName = uHostName[0]; + + return (!uProtocol || uProtocol === protocol) && + (!uHostName || uHostName.toLowerCase() === hostname.toLowerCase()) && + ((!uPort && !uHostName) || uPort === port); + }, + + finishLoad: function (name, strip, content, onLoad) { + content = strip ? text.strip(content) : content; + if (masterConfig.isBuild) { + buildMap[name] = content; + } + onLoad(content); + }, + + load: function (name, req, onLoad, config) { + //Name has format: some.module.filext!strip + //The strip part is optional. + //if strip is present, then that means only get the string contents + //inside a body tag in an HTML string. For XML/SVG content it means + //removing the declarations so the content can be inserted + //into the current doc without problems. + + // Do not bother with the work if a build and text will + // not be inlined. + if (config.isBuild && !config.inlineText) { + onLoad(); + return; + } + + masterConfig.isBuild = config.isBuild; + + var parsed = text.parseName(name), + nonStripName = parsed.moduleName + + (parsed.ext ? '.' + parsed.ext : ''), + url = req.toUrl(nonStripName), + useXhr = (masterConfig.useXhr) || + text.useXhr; + + // Do not load if it is an empty: url + if (url.indexOf('empty:') === 0) { + onLoad(); + return; + } + + //Load the text. Use XHR if possible and in a browser. + if (!hasLocation || useXhr(url, defaultProtocol, defaultHostName, defaultPort)) { + text.get(url, function (content) { + text.finishLoad(name, parsed.strip, content, onLoad); + }, function (err) { + if (onLoad.error) { + onLoad.error(err); + } + }); + } else { + //Need to fetch the resource across domains. Assume + //the resource has been optimized into a JS module. Fetch + //by the module name + extension, but do not include the + //!strip part to avoid file system issues. + req([nonStripName], function (content) { + text.finishLoad(parsed.moduleName + '.' + parsed.ext, + parsed.strip, content, onLoad); + }); + } + }, + + write: function (pluginName, moduleName, write, config) { + if (buildMap.hasOwnProperty(moduleName)) { + var content = text.jsEscape(buildMap[moduleName]); + write.asModule(pluginName + "!" + moduleName, + "define(function () { return '" + + content + + "';});\n"); + } + }, + + writeFile: function (pluginName, moduleName, req, write, config) { + var parsed = text.parseName(moduleName), + extPart = parsed.ext ? '.' + parsed.ext : '', + nonStripName = parsed.moduleName + extPart, + //Use a '.js' file name so that it indicates it is a + //script that can be loaded across domains. + fileName = req.toUrl(parsed.moduleName + extPart) + '.js'; + + //Leverage own load() method to load plugin value, but only + //write out values that do not have the strip argument, + //to avoid any potential issues with ! in file names. + text.load(nonStripName, req, function (value) { + //Use own write() method to construct full module value. + //But need to create shell that translates writeFile's + //write() to the right interface. + var textWrite = function (contents) { + return write(fileName, contents); + }; + textWrite.asModule = function (moduleName, contents) { + return write.asModule(moduleName, fileName, contents); + }; + + text.write(pluginName, nonStripName, textWrite, config); + }, config); + } + }; + + if (masterConfig.env === 'node' || (!masterConfig.env && + typeof process !== "undefined" && + process.versions && + !!process.versions.node && + !process.versions['node-webkit'])) { + //Using special require.nodeRequire, something added by r.js. + fs = require.nodeRequire('fs'); + + text.get = function (url, callback, errback) { + try { + var file = fs.readFileSync(url, 'utf8'); + //Remove BOM (Byte Mark Order) from utf8 files if it is there. + if (file.indexOf('\uFEFF') === 0) { + file = file.substring(1); + } + callback(file); + } catch (e) { + errback(e); + } + }; + } else if (masterConfig.env === 'xhr' || (!masterConfig.env && + text.createXhr())) { + text.get = function (url, callback, errback, headers) { + var xhr = text.createXhr(), header; + xhr.open('GET', url, true); + + //Allow plugins direct access to xhr headers + if (headers) { + for (header in headers) { + if (headers.hasOwnProperty(header)) { + xhr.setRequestHeader(header.toLowerCase(), headers[header]); + } + } + } + + //Allow overrides specified in config + if (masterConfig.onXhr) { + masterConfig.onXhr(xhr, url); + } + + xhr.onreadystatechange = function (evt) { + var status, err; + //Do not explicitly handle errors, those should be + //visible via console output in the browser. + if (xhr.readyState === 4) { + status = xhr.status; + if (status > 399 && status < 600) { + //An http 4xx or 5xx error. Signal an error. + err = new Error(url + ' HTTP status: ' + status); + err.xhr = xhr; + errback(err); + } else { + callback(xhr.responseText); + } + + if (masterConfig.onXhrComplete) { + masterConfig.onXhrComplete(xhr, url); + } + } + }; + xhr.send(null); + }; + } else if (masterConfig.env === 'rhino' || (!masterConfig.env && + typeof Packages !== 'undefined' && typeof java !== 'undefined')) { + //Why Java, why is this so awkward? + text.get = function (url, callback) { + var stringBuffer, line, + encoding = "utf-8", + file = new java.io.File(url), + lineSeparator = java.lang.System.getProperty("line.separator"), + input = new java.io.BufferedReader(new java.io.InputStreamReader(new java.io.FileInputStream(file), encoding)), + content = ''; + try { + stringBuffer = new java.lang.StringBuffer(); + line = input.readLine(); + + // Byte Order Mark (BOM) - The Unicode Standard, version 3.0, page 324 + // http://www.unicode.org/faq/utf_bom.html + + // Note that when we use utf-8, the BOM should appear as "EF BB BF", but it doesn't due to this bug in the JDK: + // http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4508058 + if (line && line.length() && line.charAt(0) === 0xfeff) { + // Eat the BOM, since we've already found the encoding on this file, + // and we plan to concatenating this buffer with others; the BOM should + // only appear at the top of a file. + line = line.substring(1); + } + + if (line !== null) { + stringBuffer.append(line); + } + + while ((line = input.readLine()) !== null) { + stringBuffer.append(lineSeparator); + stringBuffer.append(line); + } + //Make sure we return a JavaScript string and not a Java string. + content = String(stringBuffer.toString()); //String + } finally { + input.close(); + } + callback(content); + }; + } else if (masterConfig.env === 'xpconnect' || (!masterConfig.env && + typeof Components !== 'undefined' && Components.classes && + Components.interfaces)) { + //Avert your gaze! + Cc = Components.classes, + Ci = Components.interfaces; + Components.utils['import']('resource://gre/modules/FileUtils.jsm'); + xpcIsWindows = ('@mozilla.org/windows-registry-key;1' in Cc); + + text.get = function (url, callback) { + var inStream, convertStream, fileObj, + readData = {}; + + if (xpcIsWindows) { + url = url.replace(/\//g, '\\'); + } + + fileObj = new FileUtils.File(url); + + //XPCOM, you so crazy + try { + inStream = Cc['@mozilla.org/network/file-input-stream;1'] + .createInstance(Ci.nsIFileInputStream); + inStream.init(fileObj, 1, 0, false); + + convertStream = Cc['@mozilla.org/intl/converter-input-stream;1'] + .createInstance(Ci.nsIConverterInputStream); + convertStream.init(inStream, "utf-8", inStream.available(), + Ci.nsIConverterInputStream.DEFAULT_REPLACEMENT_CHARACTER); + + convertStream.readString(inStream.available(), readData); + convertStream.close(); + inStream.close(); + callback(readData.value); + } catch (e) { + throw new Error((fileObj && fileObj.path || '') + ': ' + e); + } + }; + } + return text; +}); diff --git a/lib/webL10n.js b/lib/webL10n.js new file mode 100644 index 0000000..f76d66a --- /dev/null +++ b/lib/webL10n.js @@ -0,0 +1,1029 @@ +/** + * Copyright (c) 2011-2013 Fabien Cazenave, Mozilla. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ + +/*jshint browser: true, devel: true, es5: true, globalstrict: true */ +'use strict'; + +define(function (require) { + var gL10nData = {}; + var gTextData = ''; + var gTextProp = 'textContent'; + var gLanguage = ''; + var gMacros = {}; + var gReadyState = 'loading'; + + /** + * Synchronously loading l10n resources significantly minimizes flickering + * from displaying the app with non-localized strings and then updating the + * strings. Although this will block all script execution on this page, we + * expect that the l10n resources are available locally on flash-storage. + * + * As synchronous XHR is generally considered as a bad idea, we're still + * loading l10n resources asynchronously -- but we keep this in a setting, + * just in case... and applications using this library should hide their + * content until the `localized' event happens. + */ + + var gAsyncResourceLoading = true; // read-only + + + /** + * Debug helpers + * + * gDEBUG == 0: don't display any console message + * gDEBUG == 1: display only warnings, not logs + * gDEBUG == 2: display all console messages + */ + + var gDEBUG = 1; + + function consoleLog(message) { + if (gDEBUG >= 2) { + console.log('[l10n] ' + message); + } + }; + + function consoleWarn(message) { + if (gDEBUG) { + console.warn('[l10n] ' + message); + } + }; + + + /** + * DOM helpers for the so-called "HTML API". + * + * These functions are written for modern browsers. For old versions of IE, + * they're overridden in the 'startup' section at the end of this file. + */ + + function getL10nResourceLinks() { + return document.querySelectorAll('link[type="application/l10n"]'); + } + + function getL10nDictionary() { + var script = document.querySelector('script[type="application/l10n"]'); + // TODO: support multiple and external JSON dictionaries + return script ? JSON.parse(script.innerHTML) : null; + } + + function getTranslatableChildren(element) { + return element ? element.querySelectorAll('*[data-l10n-id]') : []; + } + + function getL10nAttributes(element) { + if (!element) + return {}; + + var l10nId = element.getAttribute('data-l10n-id'); + var l10nArgs = element.getAttribute('data-l10n-args'); + var args = {}; + if (l10nArgs) { + try { + args = JSON.parse(l10nArgs); + } catch (e) { + consoleWarn('could not parse arguments for #' + l10nId); + } + } + return { id: l10nId, args: args }; + } + + function fireL10nReadyEvent(lang) { + var evtObject = document.createEvent('Event'); + evtObject.initEvent('localized', true, false); + evtObject.language = lang; + document.dispatchEvent(evtObject); + } + + function xhrLoadText(url, onSuccess, onFailure, asynchronous) { + onSuccess = onSuccess || function _onSuccess(data) {}; + onFailure = onFailure || function _onFailure() { + consoleWarn(url + ' not found.'); + }; + + var xhr = new XMLHttpRequest(); + xhr.open('GET', url, asynchronous); + if (xhr.overrideMimeType) { + xhr.overrideMimeType('text/plain; charset=utf-8'); + } + xhr.onreadystatechange = function() { + if (xhr.readyState == 4) { + if (xhr.status == 200 || xhr.status === 0) { + onSuccess(xhr.responseText); + } else { + onFailure(); + } + } + }; + xhr.onerror = onFailure; + xhr.ontimeout = onFailure; + + // in Firefox OS with the app:// protocol, trying to XHR a non-existing + // URL will raise an exception here -- hence this ugly try...catch. + try { + xhr.send(null); + } catch (e) { + onFailure(); + } + } + + + /** + * l10n resource parser: + * - reads (async XHR) the l10n resource matching `lang'; + * - imports linked resources (synchronously) when specified; + * - parses the text data (fills `gL10nData' and `gTextData'); + * - triggers success/failure callbacks when done. + * + * @param {string} href + * URL of the l10n resource to parse. + * + * @param {string} lang + * locale (language) to parse. + * + * @param {Function} successCallback + * triggered when the l10n resource has been successully parsed. + * + * @param {Function} failureCallback + * triggered when the an error has occured. + * + * @return {void} + * uses the following global variables: gL10nData, gTextData, gTextProp. + */ + + function parseResource(href, lang, successCallback, failureCallback) { + var baseURL = href.replace(/[^\/]*$/, '') || './'; + + // handle escaped characters (backslashes) in a string + function evalString(text) { + if (text.lastIndexOf('\\') < 0) + return text; + return text.replace(/\\\\/g, '\\') + .replace(/\\n/g, '\n') + .replace(/\\r/g, '\r') + .replace(/\\t/g, '\t') + .replace(/\\b/g, '\b') + .replace(/\\f/g, '\f') + .replace(/\\{/g, '{') + .replace(/\\}/g, '}') + .replace(/\\"/g, '"') + .replace(/\\'/g, "'"); + } + + // parse *.properties text data into an l10n dictionary + function parseProperties(text) { + var dictionary = []; + + // token expressions + var reBlank = /^\s*|\s*$/; + var reComment = /^\s*#|^\s*$/; + var reSection = /^\s*\[(.*)\]\s*$/; + var reImport = /^\s*@import\s+url\((.*)\)\s*$/i; + var reSplit = /^([^=\s]*)\s*=\s*(.+)$/; // TODO: escape EOLs with '\' + + // parse the *.properties file into an associative array + function parseRawLines(rawText, extendedSyntax) { + var entries = rawText.replace(reBlank, '').split(/[\r\n]+/); + var currentLang = '*'; + var genericLang = lang.replace(/-[a-z]+$/i, ''); + var skipLang = false; + var match = ''; + + for (var i = 0; i < entries.length; i++) { + var line = entries[i]; + + // comment or blank line? + if (reComment.test(line)) + continue; + + // the extended syntax supports [lang] sections and @import rules + if (extendedSyntax) { + if (reSection.test(line)) { // section start? + match = reSection.exec(line); + currentLang = match[1]; + skipLang = (currentLang !== '*') && + (currentLang !== lang) && (currentLang !== genericLang); + continue; + } else if (skipLang) { + continue; + } + if (reImport.test(line)) { // @import rule? + match = reImport.exec(line); + loadImport(baseURL + match[1]); // load the resource synchronously + } + } + + // key-value pair + var tmp = line.match(reSplit); + if (tmp && tmp.length == 3) { + dictionary[tmp[1]] = evalString(tmp[2]); + } + } + } + + // import another *.properties file + function loadImport(url) { + xhrLoadText(url, function(content) { + parseRawLines(content, false); // don't allow recursive imports + }, null, false); // load synchronously + } + + // fill the dictionary + parseRawLines(text, true); + return dictionary; + } + + // load and parse l10n data (warning: global variables are used here) + xhrLoadText(href, function(response) { + gTextData += response; // mostly for debug + + // parse *.properties text data into an l10n dictionary + var data = parseProperties(response); + + // find attribute descriptions, if any + for (var key in data) { + var id, prop, index = key.lastIndexOf('.'); + if (index > 0) { // an attribute has been specified + id = key.substring(0, index); + prop = key.substr(index + 1); + } else { // no attribute: assuming text content by default + id = key; + prop = gTextProp; + } + if (!gL10nData[id]) { + gL10nData[id] = {}; + } + gL10nData[id][prop] = data[key]; + } + + // trigger callback + if (successCallback) { + successCallback(); + } + }, failureCallback, gAsyncResourceLoading); + }; + + // load and parse all resources for the specified locale + function loadLocale(lang, callback) { + callback = callback || function _callback() {}; + + clear(); + gLanguage = lang; + + // check all nodes + // and load the resource files + var langLinks = getL10nResourceLinks(); + var langCount = langLinks.length; + if (langCount == 0) { + // we might have a pre-compiled dictionary instead + var dict = getL10nDictionary(); + if (dict && dict.locales && dict.default_locale) { + consoleLog('using the embedded JSON directory, early way out'); + gL10nData = dict.locales[lang] || dict.locales[dict.default_locale]; + callback(); + } else { + consoleLog('no resource to load, early way out'); + } + // early way out + fireL10nReadyEvent(lang); + gReadyState = 'complete'; + return; + } + + // start the callback when all resources are loaded + var onResourceLoaded = null; + var gResourceCount = 0; + onResourceLoaded = function() { + gResourceCount++; + if (gResourceCount >= langCount) { + callback(); + fireL10nReadyEvent(lang); + gReadyState = 'complete'; + } + }; + + // load all resource files + function l10nResourceLink(link) { + var href = link.href; + var type = link.type; + this.load = function(lang, callback) { + var applied = lang; + parseResource(href, lang, callback, function() { + consoleWarn(href + ' not found.'); + applied = ''; + }); + return applied; // return lang if found, an empty string if not found + }; + } + + for (var i = 0; i < langCount; i++) { + var resource = new l10nResourceLink(langLinks[i]); + var rv = resource.load(lang, onResourceLoaded); + if (rv != lang) { // lang not found, used default resource instead + consoleWarn('"' + lang + '" resource not found'); + gLanguage = ''; + } + } + } + + // clear all l10n data + function clear() { + gL10nData = {}; + gTextData = ''; + gLanguage = ''; + // TODO: clear all non predefined macros. + // There's no such macro /yet/ but we're planning to have some... + } + + + /** + * Get rules for plural forms (shared with JetPack), see: + * http://unicode.org/repos/cldr-tmp/trunk/diff/supplemental/language_plural_rules.html + * https://github.com/mozilla/addon-sdk/blob/master/python-lib/plural-rules-generator.p + * + * @param {string} lang + * locale (language) used. + * + * @return {Function} + * returns a function that gives the plural form name for a given integer: + * var fun = getPluralRules('en'); + * fun(1) -> 'one' + * fun(0) -> 'other' + * fun(1000) -> 'other'. + */ + + function getPluralRules(lang) { + var locales2rules = { + 'af': 3, + 'ak': 4, + 'am': 4, + 'ar': 1, + 'asa': 3, + 'az': 0, + 'be': 11, + 'bem': 3, + 'bez': 3, + 'bg': 3, + 'bh': 4, + 'bm': 0, + 'bn': 3, + 'bo': 0, + 'br': 20, + 'brx': 3, + 'bs': 11, + 'ca': 3, + 'cgg': 3, + 'chr': 3, + 'cs': 12, + 'cy': 17, + 'da': 3, + 'de': 3, + 'dv': 3, + 'dz': 0, + 'ee': 3, + 'el': 3, + 'en': 3, + 'eo': 3, + 'es': 3, + 'et': 3, + 'eu': 3, + 'fa': 0, + 'ff': 5, + 'fi': 3, + 'fil': 4, + 'fo': 3, + 'fr': 5, + 'fur': 3, + 'fy': 3, + 'ga': 8, + 'gd': 24, + 'gl': 3, + 'gsw': 3, + 'gu': 3, + 'guw': 4, + 'gv': 23, + 'ha': 3, + 'haw': 3, + 'he': 2, + 'hi': 4, + 'hr': 11, + 'hu': 0, + 'id': 0, + 'ig': 0, + 'ii': 0, + 'is': 3, + 'it': 3, + 'iu': 7, + 'ja': 0, + 'jmc': 3, + 'jv': 0, + 'ka': 0, + 'kab': 5, + 'kaj': 3, + 'kcg': 3, + 'kde': 0, + 'kea': 0, + 'kk': 3, + 'kl': 3, + 'km': 0, + 'kn': 0, + 'ko': 0, + 'ksb': 3, + 'ksh': 21, + 'ku': 3, + 'kw': 7, + 'lag': 18, + 'lb': 3, + 'lg': 3, + 'ln': 4, + 'lo': 0, + 'lt': 10, + 'lv': 6, + 'mas': 3, + 'mg': 4, + 'mk': 16, + 'ml': 3, + 'mn': 3, + 'mo': 9, + 'mr': 3, + 'ms': 0, + 'mt': 15, + 'my': 0, + 'nah': 3, + 'naq': 7, + 'nb': 3, + 'nd': 3, + 'ne': 3, + 'nl': 3, + 'nn': 3, + 'no': 3, + 'nr': 3, + 'nso': 4, + 'ny': 3, + 'nyn': 3, + 'om': 3, + 'or': 3, + 'pa': 3, + 'pap': 3, + 'pl': 13, + 'ps': 3, + 'pt': 3, + 'rm': 3, + 'ro': 9, + 'rof': 3, + 'ru': 11, + 'rwk': 3, + 'sah': 0, + 'saq': 3, + 'se': 7, + 'seh': 3, + 'ses': 0, + 'sg': 0, + 'sh': 11, + 'shi': 19, + 'sk': 12, + 'sl': 14, + 'sma': 7, + 'smi': 7, + 'smj': 7, + 'smn': 7, + 'sms': 7, + 'sn': 3, + 'so': 3, + 'sq': 3, + 'sr': 11, + 'ss': 3, + 'ssy': 3, + 'st': 3, + 'sv': 3, + 'sw': 3, + 'syr': 3, + 'ta': 3, + 'te': 3, + 'teo': 3, + 'th': 0, + 'ti': 4, + 'tig': 3, + 'tk': 3, + 'tl': 4, + 'tn': 3, + 'to': 0, + 'tr': 0, + 'ts': 3, + 'tzm': 22, + 'uk': 11, + 'ur': 3, + 've': 3, + 'vi': 0, + 'vun': 3, + 'wa': 4, + 'wae': 3, + 'wo': 0, + 'xh': 3, + 'xog': 3, + 'yo': 0, + 'zh': 0, + 'zu': 3 + }; + + // utility functions for plural rules methods + function isIn(n, list) { + return list.indexOf(n) !== -1; + } + function isBetween(n, start, end) { + return start <= n && n <= end; + } + + // list of all plural rules methods: + // map an integer to the plural form name to use + var pluralRules = { + '0': function(n) { + return 'other'; + }, + '1': function(n) { + if ((isBetween((n % 100), 3, 10))) + return 'few'; + if (n === 0) + return 'zero'; + if ((isBetween((n % 100), 11, 99))) + return 'many'; + if (n == 2) + return 'two'; + if (n == 1) + return 'one'; + return 'other'; + }, + '2': function(n) { + if (n !== 0 && (n % 10) === 0) + return 'many'; + if (n == 2) + return 'two'; + if (n == 1) + return 'one'; + return 'other'; + }, + '3': function(n) { + if (n == 1) + return 'one'; + return 'other'; + }, + '4': function(n) { + if ((isBetween(n, 0, 1))) + return 'one'; + return 'other'; + }, + '5': function(n) { + if ((isBetween(n, 0, 2)) && n != 2) + return 'one'; + return 'other'; + }, + '6': function(n) { + if (n === 0) + return 'zero'; + if ((n % 10) == 1 && (n % 100) != 11) + return 'one'; + return 'other'; + }, + '7': function(n) { + if (n == 2) + return 'two'; + if (n == 1) + return 'one'; + return 'other'; + }, + '8': function(n) { + if ((isBetween(n, 3, 6))) + return 'few'; + if ((isBetween(n, 7, 10))) + return 'many'; + if (n == 2) + return 'two'; + if (n == 1) + return 'one'; + return 'other'; + }, + '9': function(n) { + if (n === 0 || n != 1 && (isBetween((n % 100), 1, 19))) + return 'few'; + if (n == 1) + return 'one'; + return 'other'; + }, + '10': function(n) { + if ((isBetween((n % 10), 2, 9)) && !(isBetween((n % 100), 11, 19))) + return 'few'; + if ((n % 10) == 1 && !(isBetween((n % 100), 11, 19))) + return 'one'; + return 'other'; + }, + '11': function(n) { + if ((isBetween((n % 10), 2, 4)) && !(isBetween((n % 100), 12, 14))) + return 'few'; + if ((n % 10) === 0 || + (isBetween((n % 10), 5, 9)) || + (isBetween((n % 100), 11, 14))) + return 'many'; + if ((n % 10) == 1 && (n % 100) != 11) + return 'one'; + return 'other'; + }, + '12': function(n) { + if ((isBetween(n, 2, 4))) + return 'few'; + if (n == 1) + return 'one'; + return 'other'; + }, + '13': function(n) { + if ((isBetween((n % 10), 2, 4)) && !(isBetween((n % 100), 12, 14))) + return 'few'; + if (n != 1 && (isBetween((n % 10), 0, 1)) || + (isBetween((n % 10), 5, 9)) || + (isBetween((n % 100), 12, 14))) + return 'many'; + if (n == 1) + return 'one'; + return 'other'; + }, + '14': function(n) { + if ((isBetween((n % 100), 3, 4))) + return 'few'; + if ((n % 100) == 2) + return 'two'; + if ((n % 100) == 1) + return 'one'; + return 'other'; + }, + '15': function(n) { + if (n === 0 || (isBetween((n % 100), 2, 10))) + return 'few'; + if ((isBetween((n % 100), 11, 19))) + return 'many'; + if (n == 1) + return 'one'; + return 'other'; + }, + '16': function(n) { + if ((n % 10) == 1 && n != 11) + return 'one'; + return 'other'; + }, + '17': function(n) { + if (n == 3) + return 'few'; + if (n === 0) + return 'zero'; + if (n == 6) + return 'many'; + if (n == 2) + return 'two'; + if (n == 1) + return 'one'; + return 'other'; + }, + '18': function(n) { + if (n === 0) + return 'zero'; + if ((isBetween(n, 0, 2)) && n !== 0 && n != 2) + return 'one'; + return 'other'; + }, + '19': function(n) { + if ((isBetween(n, 2, 10))) + return 'few'; + if ((isBetween(n, 0, 1))) + return 'one'; + return 'other'; + }, + '20': function(n) { + if ((isBetween((n % 10), 3, 4) || ((n % 10) == 9)) && !( + isBetween((n % 100), 10, 19) || + isBetween((n % 100), 70, 79) || + isBetween((n % 100), 90, 99) + )) + return 'few'; + if ((n % 1000000) === 0 && n !== 0) + return 'many'; + if ((n % 10) == 2 && !isIn((n % 100), [12, 72, 92])) + return 'two'; + if ((n % 10) == 1 && !isIn((n % 100), [11, 71, 91])) + return 'one'; + return 'other'; + }, + '21': function(n) { + if (n === 0) + return 'zero'; + if (n == 1) + return 'one'; + return 'other'; + }, + '22': function(n) { + if ((isBetween(n, 0, 1)) || (isBetween(n, 11, 99))) + return 'one'; + return 'other'; + }, + '23': function(n) { + if ((isBetween((n % 10), 1, 2)) || (n % 20) === 0) + return 'one'; + return 'other'; + }, + '24': function(n) { + if ((isBetween(n, 3, 10) || isBetween(n, 13, 19))) + return 'few'; + if (isIn(n, [2, 12])) + return 'two'; + if (isIn(n, [1, 11])) + return 'one'; + return 'other'; + } + }; + + // return a function that gives the plural form name for a given integer + var index = locales2rules[lang.replace(/-.*$/, '')]; + if (!(index in pluralRules)) { + consoleWarn('plural form unknown for [' + lang + ']'); + return function() { return 'other'; }; + } + return pluralRules[index]; + } + + // pre-defined 'plural' macro + gMacros.plural = function(str, param, key, prop) { + var n = parseFloat(param); + if (isNaN(n)) + return str; + + // TODO: support other properties (l20n still doesn't...) + if (prop != gTextProp) + return str; + + // initialize _pluralRules + if (!gMacros._pluralRules) { + gMacros._pluralRules = getPluralRules(gLanguage); + } + var index = '[' + gMacros._pluralRules(n) + ']'; + + // try to find a [zero|one|two] key if it's defined + if (n === 0 && (key + '[zero]') in gL10nData) { + str = gL10nData[key + '[zero]'][prop]; + } else if (n == 1 && (key + '[one]') in gL10nData) { + str = gL10nData[key + '[one]'][prop]; + } else if (n == 2 && (key + '[two]') in gL10nData) { + str = gL10nData[key + '[two]'][prop]; + } else if ((key + index) in gL10nData) { + str = gL10nData[key + index][prop]; + } else if ((key + '[other]') in gL10nData) { + str = gL10nData[key + '[other]'][prop]; + } + + return str; + }; + + + /** + * l10n dictionary functions + */ + + // fetch an l10n object, warn if not found, apply `args' if possible + function getL10nData(key, args) { + var data = gL10nData[key]; + if (!data) { + consoleWarn('#' + key + ' missing for [' + gLanguage + ']'); + } + + /** This is where l10n expressions should be processed. + * The plan is to support C-style expressions from the l20n project; + * until then, only two kinds of simple expressions are supported: + * {[ index ]} and {{ arguments }}. + */ + var rv = {}; + for (var prop in data) { + var str = data[prop]; + str = substIndexes(str, args, key, prop); + str = substArguments(str, args); + rv[prop] = str; + } + return rv; + } + + // replace {[macros]} with their values + function substIndexes(str, args, key, prop) { + var reIndex = /\{\[\s*([a-zA-Z]+)\(([a-zA-Z]+)\)\s*\]\}/; + var reMatch = reIndex.exec(str); + if (!reMatch || !reMatch.length) + return str; + + // an index/macro has been found + // Note: at the moment, only one parameter is supported + var macroName = reMatch[1]; + var paramName = reMatch[2]; + var param; + if (args && paramName in args) { + param = args[paramName]; + } else if (paramName in gL10nData) { + param = gL10nData[paramName]; + } + + // there's no macro parser yet: it has to be defined in gMacros + if (macroName in gMacros) { + var macro = gMacros[macroName]; + str = macro(str, param, key, prop); + } + return str; + } + + // replace {{arguments}} with their values + function substArguments(str, args) { + var reArgs = /\{\{\s*([a-zA-Z\.]+)\s*\}\}/; + var match = reArgs.exec(str); + while (match) { + if (!match || match.length < 2) + return str; // argument key not found + + var arg = match[1]; + var sub = ''; + if (arg in args) { + sub = args[arg]; + } else if (arg in gL10nData) { + sub = gL10nData[arg][gTextProp]; + } else { + consoleWarn('could not find argument {{' + arg + '}}'); + return str; + } + + str = str.substring(0, match.index) + sub + + str.substr(match.index + match[0].length); + match = reArgs.exec(str); + } + return str; + } + + // translate an HTML element + function translateElement(element) { + var l10n = getL10nAttributes(element); + if (!l10n.id) + return; + + // get the related l10n object + var data = getL10nData(l10n.id, l10n.args); + if (!data) { + consoleWarn('#' + l10n.id + ' missing for [' + gLanguage + ']'); + return; + } + + // translate element (TODO: security checks?) + // for the node content, replace the content of the first child textNode + // and clear other child textNodes + if (data[gTextProp]) { // XXX + if (getChildElementCount(element) === 0) { + element[gTextProp] = data[gTextProp]; + } else { + var children = element.childNodes, + found = false; + for (var i = 0, l = children.length; i < l; i++) { + if (children[i].nodeType === 3 && + /\S/.test(children[i].textContent)) { // XXX + // using nodeValue seems cross-browser + if (found) { + children[i].nodeValue = ''; + } else { + children[i].nodeValue = data[gTextProp]; + found = true; + } + } + } + if (!found) { + consoleWarn('unexpected error, could not translate element content'); + } + } + delete data[gTextProp]; + } + + for (var k in data) { + element[k] = data[k]; + } + } + + // webkit browsers don't currently support 'children' on SVG elements... + function getChildElementCount(element) { + if (element.children) { + return element.children.length; + } + if (typeof element.childElementCount !== 'undefined') { + return element.childElementCount; + } + var count = 0; + for (var i = 0; i < element.childNodes.length; i++) { + count += element.nodeType === 1 ? 1 : 0; + } + return count; + } + + // translate an HTML subtree + function translateFragment(element) { + element = element || document.documentElement; + + // check all translatable children (= w/ a `data-l10n-id' attribute) + var children = getTranslatableChildren(element); + var elementCount = children.length; + for (var i = 0; i < elementCount; i++) { + translateElement(children[i]); + } + + // translate element itself if necessary + translateElement(element); + } + + // Startup & Public API + + function l10nStartup() { + gReadyState = 'interactive'; + consoleLog('loading [' + navigator.language + '] resources, ' + + (gAsyncResourceLoading ? 'asynchronously.' : 'synchronously.')); + + // load the default locale and translate the document if required + if (document.documentElement.lang === navigator.language) { + loadLocale(navigator.language); + } else { + loadLocale(navigator.language, translateFragment); + } + } + + // public API + var l10n = { + start: function() { + if (document.readyState === 'complete' || + document.readyState === 'interactive') { + window.setTimeout(l10nStartup); + } else { + document.addEventListener('DOMContentLoaded', l10nStartup); + } + }, + + // get a localized string + get: function l10n_get(key, args, fallback) { + var data = getL10nData(key, args) || fallback; + if (data) { + return 'textContent' in data ? data.textContent : ''; + } + return '{{' + key + '}}'; + }, + + // get|set the document language and direction + get language() { + return { + // get|set the document language (ISO-639-1) + get code() { return gLanguage; }, + set code(lang) { loadLocale(lang, translateFragment); }, + + // get the direction (ltr|rtl) of the current language + get direction() { + // http://www.w3.org/International/questions/qa-scripts + // Arabic, Hebrew, Farsi, Pashto, Urdu + var rtlList = ['ar', 'he', 'fa', 'ps', 'ur']; + return (rtlList.indexOf(gLanguage) >= 0) ? 'rtl' : 'ltr'; + } + }; + }, + + // translate an element or document fragment + translate: translateFragment, + + // get (a clone of) the dictionary for the current locale + get dictionary() { return JSON.parse(JSON.stringify(gL10nData)); }, + + // this can be used to prevent race conditions + get readyState() { return gReadyState; }, + ready: function l10n_ready(callback) { + if (!callback) + return; + + if (gReadyState == 'complete') { + window.setTimeout(callback); + } else { + window.addEventListener('localized', callback); + } + } + }; + + return l10n; +}); diff --git a/package.json b/package.json new file mode 100644 index 0000000..504a401 --- /dev/null +++ b/package.json @@ -0,0 +1,10 @@ +{ + "amd": {}, + "volo": { + "baseUrl": "lib", + "dependencies": { + "sugar-web": "github:sugarlabs/sugar-web/master", + "domReady": "github:requirejs/domReady/2.0.1" + } + } +} diff --git a/po/Moon.pot b/po/Moon.pot deleted file mode 100644 index ccdd30e..0000000 --- a/po/Moon.pot +++ /dev/null @@ -1,233 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-01-12 13:51+1100\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"Language: \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" - -#. TRANS: "name" option from activity.info file -#: activity/activity.info:2 moon.py:80 -msgid "Moon" -msgstr "" - -#. TRANS: "summary" option from activity.info file -#. TRANS: "description" option from activity.info file -msgid "" -"For all those interested in the moon! See the different phases of the moon, " -"latitudes and longitudes and impress all by \"predicting\" the next full " -"moon!" -#: moon.py:62 moon.py:66 -msgid "Total" -msgstr "" - -#: moon.py:63 -msgid "Annular" -msgstr "" - -#: moon.py:64 -msgid "Hybrid" -msgstr "" - -#: moon.py:65 moon.py:67 -msgid "Partial" -msgstr "" - -#: moon.py:68 -msgid "Penumbral" -msgstr "" - -#. TRANS: Date format for next full/new moon and next solar/lunar eclipse -#: moon.py:72 -#, python-format -msgid "%c" -msgstr "" - -#: moon.py:100 moon.py:134 -msgid "Toggle Grid View" -msgstr "" - -#: moon.py:106 moon.py:140 -msgid "Toggle Hemisphere View" -msgstr "" - -#: moon.py:113 moon.py:147 -msgid "Save As Image" -msgstr "" - -#: moon.py:153 -msgid "View" -msgstr "" - -#: moon.py:303 -msgid "" -"Today's Moon Information\n" -"\n" -msgstr "" - -#: moon.py:305 -#, python-format -msgid "" -"Phase:\n" -"%s\n" -"\n" -msgstr "" - -#: moon.py:306 -#, python-format -msgid "" -"Julian Date:\n" -"%.2f (astronomical)\n" -"\n" -msgstr "" - -#: moon.py:307 -#, python-format -msgid "" -"Age:\n" -"%(days).0f days, %(hours).0f hours, %(minutes).0f minutes\n" -"\n" -msgstr "" - -#: moon.py:308 -#, python-format -msgid "" -"Lunation:\n" -"%(phase).2f%% through lunation %(lunation)d\n" -"\n" -msgstr "" - -#: moon.py:309 -#, python-format -msgid "" -"Surface Visibility:\n" -"%.0f%% (estimated)\n" -"\n" -msgstr "" - -#: moon.py:312 -#, python-format -msgid "" -"Selenographic Terminator Longitude:\n" -"%(deg).1f°%(westOrEast)s (%(riseOrSet)s)\n" -"\n" -msgstr "" - -#: moon.py:313 -#, python-format -msgid "" -"Next Full Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:314 -#, python-format -msgid "" -"Next New Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:315 -#, python-format -msgid "" -"Next (%(eclipse_type)s) Lunar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:316 -#, python-format -msgid "" -"Next (%(eclipse_type)s) Solar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:409 -msgid "SNWE" -msgstr "" - -#: moon.py:412 -msgid "NSEW" -msgstr "" - -#: moon.py:464 -msgid "Latitude" -msgstr "" - -#: moon.py:466 -msgid "Longitude" -msgstr "" - -#: moon.py:512 -msgid "Image" -msgstr "" - -#: moon.py:529 -msgid "Image saved" -msgstr "" - -#: moon.py:530 -msgid "An image of the current phase of the moon has been saved to the Journal" -msgstr "" - -#: moon.py:619 -msgid "west" -msgstr "" - -#: moon.py:621 -msgid "east" -msgstr "" - -#: moon.py:624 -msgid "Sunset" -msgstr "" - -#: moon.py:626 -msgid "Sunrise" -msgstr "" - -#: moon.py:642 moon.py:658 -msgid "New Moon" -msgstr "" - -#: moon.py:644 -msgid "Waxing Crescent" -msgstr "" - -#: moon.py:646 -msgid "First Quarter" -msgstr "" - -#: moon.py:648 -msgid "Waxing Gibbous" -msgstr "" - -#: moon.py:650 -msgid "Full Moon" -msgstr "" - -#: moon.py:652 -msgid "Waning Gibbous" -msgstr "" - -#: moon.py:654 -msgid "Last Quarter" -msgstr "" - -#: moon.py:656 -msgid "Waning Crescent" -msgstr "" diff --git a/po/POTFILES.in b/po/POTFILES.in deleted file mode 100644 index 4f54e9b..0000000 --- a/po/POTFILES.in +++ /dev/null @@ -1,3 +0,0 @@ -encoding: UTF-8 -activity/activity.info -moon.py diff --git a/po/ach.po b/po/ach.po deleted file mode 100644 index e83be13..0000000 --- a/po/ach.po +++ /dev/null @@ -1,234 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-10-03 00:33-0400\n" -"PO-Revision-Date: 2017-03-28 02:56+0000\n" -"Last-Translator: Chris \n" -"Language-Team: LANGUAGE \n" -"Language: ach\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Pootle 2.5.1.1\n" -"X-POOTLE-MTIME: 1490669801.000000\n" - -#. TRANS: "name" option from activity.info file -#: moon.py:68 -msgid "Moon" -msgstr "Dwe" - -#. TRANS: "summary" option from activity.info file -#. TRANS: "description" option from activity.info file -msgid "" -"For all those interested in the moon! See the different phases of the moon, " -"latitudes and longitudes and impress all by \"predicting\" the next full " -"moon!" -msgstr "" -"Pi jo matye ki miti i dwe! Nen kit kwon dwe mapatpat, alokaloka me pinyci " -"cukuru gin weng kun ''ibyeko'' en malubo kore ki i dwe weng!" - -#. TRANS: Date format for next full/new moon and next solar/lunar eclipse -#: moon.py:60 -#, python-format -msgid "%c" -msgstr "%c" - -#: moon.py:92 moon.py:118 -msgid "Toggle Grid View" -msgstr "Roo kit ma Layin neno kwede" - -#: moon.py:98 moon.py:124 -msgid "Toggle Hemisphere View" -msgstr "Roo kit neno me Romrom me wilobo" - -#: moon.py:130 -msgid "View" -msgstr "Nen odoco" - -#: moon.py:250 -msgid "" -"Today's Moon Information\n" -"\n" -msgstr "" -"Ngec Ikom Dwe Matin\n" -"\n" - -#: moon.py:252 -#, python-format -msgid "" -"Phase:\n" -"%s\n" -"\n" -msgstr "" -"Kare mukene:\n" -"%s\n" -"\n" - -#: moon.py:253 -#, python-format -msgid "" -"Julian Date:\n" -"%.2f (astronomical)\n" -"\n" -msgstr "" -"Nino dwe pa Julian:\n" -"%.2f (wel ngec madwong)\n" -"\n" - -#: moon.py:254 -#, python-format -msgid "" -"Age:\n" -"%(days).0f days, %(hours).0f hours, %(minutes).0f minutes\n" -"\n" -msgstr "" -"Mwaka:\n" -"%(days).0f nino mapol, %(hours).0f caa mapol, %(minutes).0f dakika mapol\n" -"\n" - -#: moon.py:255 -#, python-format -msgid "" -"Lunation:\n" -"%(phase).2f%% through lunation %(lunation)d\n" -"\n" -msgstr "" -"Kare matero i dwe moni:\n" -"%(phase).2f%% kun beo ki kare mooni %(lunation)d\n" -"\n" - -#: moon.py:256 -#, python-format -msgid "" -"Surface Visibility:\n" -"%.0f%% (estimated)\n" -"\n" -msgstr "" -"Wange Manongo ne yot:\n" -"%.0f%% (kibyeko welle)\n" -"\n" - -#: moon.py:257 -#, python-format -msgid "" -"Selenographic Terminator Longitude:\n" -"%(deg).1f°%(westOrEast)s (%(riseOrSet)s)\n" -"\n" -msgstr "" -"Mako cal pi Labal Pimo bor piny:\n" -"%(deg).1f°%(westOrEast)s (%(riseOrSet)s)\n" -"\n" - -#: moon.py:258 -#, python-format -msgid "" -"Next Full Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"Wang dwe weng Malubo kore:\n" -"%(date)s i %(days).0f nino mapol\n" -"\n" - -#: moon.py:259 -#, python-format -msgid "" -"Next New Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"Dwe Manyen Malubo kore:\n" -"%(date)s i %(days).0f nino mapol\n" -"\n" - -#: moon.py:260 -#, python-format -msgid "" -"Next Lunar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"Wang dwe Malubo kore:\n" -"%(date)s i %(days).0f nino mapol\n" -"\n" - -#: moon.py:261 -#, python-format -msgid "" -"Next Solar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"Alokaloka pa sola me wang dwe Malubo kore:\n" -"%(date)s i %(days).0f nino mapol\n" -"\n" - -#: moon.py:354 -msgid "SNWE" -msgstr "SNWE" - -#: moon.py:357 -msgid "NSEW" -msgstr "NSEW" - -#: moon.py:409 -msgid "Latitude" -msgstr "Tung piny ki tung malo" - -#: moon.py:411 -msgid "Longitude" -msgstr "Tung wok ceng ki poto ceng" - -#: moon.py:522 -msgid "west" -msgstr "tung ku poto ceng" - -#: moon.py:524 -msgid "east" -msgstr "tung wok ceng" - -#: moon.py:527 -msgid "Sunset" -msgstr "Potoceng" - -#: moon.py:529 -msgid "Sunrise" -msgstr "Wokceng" - -#: moon.py:545 moon.py:561 -msgid "New Moon" -msgstr "Dwe Manyen" - -#: moon.py:547 -msgid "Waxing Crescent" -msgstr "Crescent Matye ki wara" - -#: moon.py:549 -msgid "First Quarter" -msgstr "Akwota Mukwongo" - -#: moon.py:551 -msgid "Waxing Gibbous" -msgstr "Wang Dwe Mumake calo wara" - -#: moon.py:553 -msgid "Full Moon" -msgstr "Dwe Weng mupong" - -#: moon.py:555 -msgid "Waning Gibbous" -msgstr "Gibbous matye kaciko" - -#: moon.py:557 -msgid "Last Quarter" -msgstr "Akwota ma Ogiko" - -#: moon.py:559 -msgid "Waning Crescent" -msgstr "Crescent matye Kaciko" diff --git a/po/af.po b/po/af.po deleted file mode 100644 index f17af92..0000000 --- a/po/af.po +++ /dev/null @@ -1,243 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-10-03 00:33-0400\n" -"PO-Revision-Date: 2009-09-02 01:11-0400\n" -"Last-Translator: Chris Leonard \n" -"Language-Team: LANGUAGE \n" -"Language: af\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 1.2.1\n" - -#. TRANS: "name" option from activity.info file -#: moon.py:68 -msgid "Moon" -msgstr "" - -#. TRANS: "summary" option from activity.info file -#. TRANS: "description" option from activity.info file -msgid "" -"For all those interested in the moon! See the different phases of the moon, " -"latitudes and longtiutdes and impress all by \"predicting\" the next full " -"moon!" -msgstr "" - -#. TRANS: Date format for next full/new moon and next solar/lunar eclipse -#: moon.py:60 -#, python-format -msgid "%c" -msgstr "" - -#: moon.py:92 moon.py:118 -msgid "Toggle Grid View" -msgstr "" - -#: moon.py:98 moon.py:124 -msgid "Toggle Hemisphere View" -msgstr "" - -#: moon.py:130 -msgid "View" -msgstr "Besigtig" - -#: moon.py:250 -msgid "" -"Today's Moon Information\n" -"\n" -msgstr "" - -#: moon.py:252 -#, python-format -msgid "" -"Phase:\n" -"%s\n" -"\n" -msgstr "" - -#: moon.py:253 -#, python-format -msgid "" -"Julian Date:\n" -"%.2f (astronomical)\n" -"\n" -msgstr "" - -#: moon.py:254 -#, python-format -msgid "" -"Age:\n" -"%(days).0f days, %(hours).0f hours, %(minutes).0f minutes\n" -"\n" -msgstr "" - -#: moon.py:255 -#, python-format -msgid "" -"Lunation:\n" -"%(phase).2f%% through lunation %(lunation)d\n" -"\n" -msgstr "" - -#: moon.py:256 -#, python-format -msgid "" -"Surface Visibility:\n" -"%.0f%% (estimated)\n" -"\n" -msgstr "" - -#: moon.py:257 -#, python-format -msgid "" -"Selenographic Terminator Longitude:\n" -"%(deg).1f°%(westOrEast)s (%(riseOrSet)s)\n" -"\n" -msgstr "" - -#: moon.py:258 -#, python-format -msgid "" -"Next Full Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:259 -#, python-format -msgid "" -"Next New Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:260 -#, python-format -msgid "" -"Next Lunar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:261 -#, python-format -msgid "" -"Next Solar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:354 -msgid "SNWE" -msgstr "" - -#: moon.py:357 -msgid "NSEW" -msgstr "" - -#: moon.py:409 -msgid "Latitude" -msgstr "" - -#: moon.py:411 -msgid "Longitude" -msgstr "" - -#: moon.py:522 -msgid "west" -msgstr "" - -#: moon.py:524 -msgid "east" -msgstr "" - -#: moon.py:527 -msgid "Sunset" -msgstr "" - -#: moon.py:529 -msgid "Sunrise" -msgstr "" - -#: moon.py:545 moon.py:561 -msgid "New Moon" -msgstr "" - -#: moon.py:547 -msgid "Waxing Crescent" -msgstr "" - -#: moon.py:549 -msgid "First Quarter" -msgstr "" - -#: moon.py:551 -msgid "Waxing Gibbous" -msgstr "" - -#: moon.py:553 -msgid "Full Moon" -msgstr "" - -#: moon.py:555 -msgid "Waning Gibbous" -msgstr "" - -#: moon.py:557 -msgid "Last Quarter" -msgstr "" - -#: moon.py:559 -msgid "Waning Crescent" -msgstr "" diff --git a/po/ak.po b/po/ak.po deleted file mode 100644 index f24b985..0000000 --- a/po/ak.po +++ /dev/null @@ -1,198 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-10-03 00:33-0400\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Translate Toolkit 1.7.0\n" - -#. TRANS: "name" option from activity.info file -#: moon.py:68 -msgid "Moon" -msgstr "" - -#. TRANS: "summary" option from activity.info file -#. TRANS: "description" option from activity.info file -msgid "" -"For all those interested in the moon! See the different phases of the moon, " -"latitudes and longtiutdes and impress all by \"predicting\" the next full " -"moon!" -msgstr "" - -#. TRANS: Date format for next full/new moon and next solar/lunar eclipse -#: moon.py:60 -#, python-format -msgid "%c" -msgstr "" - -#: moon.py:92 moon.py:118 -msgid "Toggle Grid View" -msgstr "" - -#: moon.py:98 moon.py:124 -msgid "Toggle Hemisphere View" -msgstr "" - -#: moon.py:130 -msgid "View" -msgstr "" - -#: moon.py:250 -msgid "" -"Today's Moon Information\n" -"\n" -msgstr "" - -#: moon.py:252 -#, python-format -msgid "" -"Phase:\n" -"%s\n" -"\n" -msgstr "" - -#: moon.py:253 -#, python-format -msgid "" -"Julian Date:\n" -"%.2f (astronomical)\n" -"\n" -msgstr "" - -#: moon.py:254 -#, python-format -msgid "" -"Age:\n" -"%(days).0f days, %(hours).0f hours, %(minutes).0f minutes\n" -"\n" -msgstr "" - -#: moon.py:255 -#, python-format -msgid "" -"Lunation:\n" -"%(phase).2f%% through lunation %(lunation)d\n" -"\n" -msgstr "" - -#: moon.py:256 -#, python-format -msgid "" -"Surface Visibility:\n" -"%.0f%% (estimated)\n" -"\n" -msgstr "" - -#: moon.py:257 -#, python-format -msgid "" -"Selenographic Terminator Longitude:\n" -"%(deg).1f°%(westOrEast)s (%(riseOrSet)s)\n" -"\n" -msgstr "" - -#: moon.py:258 -#, python-format -msgid "" -"Next Full Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:259 -#, python-format -msgid "" -"Next New Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:260 -#, python-format -msgid "" -"Next Lunar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:261 -#, python-format -msgid "" -"Next Solar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:354 -msgid "SNWE" -msgstr "" - -#: moon.py:357 -msgid "NSEW" -msgstr "" - -#: moon.py:409 -msgid "Latitude" -msgstr "" - -#: moon.py:411 -msgid "Longitude" -msgstr "" - -#: moon.py:522 -msgid "west" -msgstr "" - -#: moon.py:524 -msgid "east" -msgstr "" - -#: moon.py:527 -msgid "Sunset" -msgstr "" - -#: moon.py:529 -msgid "Sunrise" -msgstr "" - -#: moon.py:545 moon.py:561 -msgid "New Moon" -msgstr "" - -#: moon.py:547 -msgid "Waxing Crescent" -msgstr "" - -#: moon.py:549 -msgid "First Quarter" -msgstr "" - -#: moon.py:551 -msgid "Waxing Gibbous" -msgstr "" - -#: moon.py:553 -msgid "Full Moon" -msgstr "" - -#: moon.py:555 -msgid "Waning Gibbous" -msgstr "" - -#: moon.py:557 -msgid "Last Quarter" -msgstr "" - -#: moon.py:559 -msgid "Waning Crescent" -msgstr "" diff --git a/po/am.po b/po/am.po deleted file mode 100644 index 426d82f..0000000 --- a/po/am.po +++ /dev/null @@ -1,231 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-10-03 00:33-0400\n" -"PO-Revision-Date: 2011-04-09 08:33+0200\n" -"Last-Translator: Chris \n" -"Language-Team: LANGUAGE \n" -"Language: am\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=n > 1;\n" -"X-Generator: Pootle 2.0.1\n" - -#. TRANS: "name" option from activity.info file -#: moon.py:68 -msgid "Moon" -msgstr "" - -#. TRANS: "summary" option from activity.info file -#. TRANS: "description" option from activity.info file -msgid "" -"For all those interested in the moon! See the different phases of the moon, " -"latitudes and longtiutdes and impress all by \"predicting\" the next full " -"moon!" -msgstr "" - -#. TRANS: Date format for next full/new moon and next solar/lunar eclipse -#: moon.py:60 -#, python-format -msgid "%c" -msgstr "" - -#: moon.py:92 moon.py:118 -msgid "Toggle Grid View" -msgstr "" - -#: moon.py:98 moon.py:124 -msgid "Toggle Hemisphere View" -msgstr "" - -#: moon.py:130 -msgid "View" -msgstr "ዕይታ" - -#: moon.py:250 -msgid "" -"Today's Moon Information\n" -"\n" -msgstr "" - -#: moon.py:252 -#, python-format -msgid "" -"Phase:\n" -"%s\n" -"\n" -msgstr "" - -#: moon.py:253 -#, python-format -msgid "" -"Julian Date:\n" -"%.2f (astronomical)\n" -"\n" -msgstr "" - -#: moon.py:254 -#, python-format -msgid "" -"Age:\n" -"%(days).0f days, %(hours).0f hours, %(minutes).0f minutes\n" -"\n" -msgstr "" - -#: moon.py:255 -#, python-format -msgid "" -"Lunation:\n" -"%(phase).2f%% through lunation %(lunation)d\n" -"\n" -msgstr "" - -#: moon.py:256 -#, python-format -msgid "" -"Surface Visibility:\n" -"%.0f%% (estimated)\n" -"\n" -msgstr "" - -#: moon.py:257 -#, python-format -msgid "" -"Selenographic Terminator Longitude:\n" -"%(deg).1f°%(westOrEast)s (%(riseOrSet)s)\n" -"\n" -msgstr "" - -#: moon.py:258 -#, python-format -msgid "" -"Next Full Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:259 -#, python-format -msgid "" -"Next New Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:260 -#, python-format -msgid "" -"Next Lunar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:261 -#, python-format -msgid "" -"Next Solar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:354 -msgid "SNWE" -msgstr "" - -#: moon.py:357 -msgid "NSEW" -msgstr "" - -#: moon.py:409 -msgid "Latitude" -msgstr "" - -#: moon.py:411 -msgid "Longitude" -msgstr "" - -#: moon.py:522 -msgid "west" -msgstr "" - -#: moon.py:524 -msgid "east" -msgstr "" - -#: moon.py:527 -msgid "Sunset" -msgstr "" - -#: moon.py:529 -msgid "Sunrise" -msgstr "" - -#: moon.py:545 moon.py:561 -msgid "New Moon" -msgstr "" - -#: moon.py:547 -msgid "Waxing Crescent" -msgstr "" - -#: moon.py:549 -msgid "First Quarter" -msgstr "" - -#: moon.py:551 -msgid "Waxing Gibbous" -msgstr "" - -#: moon.py:553 -msgid "Full Moon" -msgstr "" - -#: moon.py:555 -msgid "Waning Gibbous" -msgstr "" - -#: moon.py:557 -msgid "Last Quarter" -msgstr "" - -#: moon.py:559 -msgid "Waning Crescent" -msgstr "" diff --git a/po/ar.po b/po/ar.po deleted file mode 100644 index bb91e42..0000000 --- a/po/ar.po +++ /dev/null @@ -1,199 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-10-03 00:33-0400\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"Language: ar\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Translate Toolkit 1.11.0\n" - -#. TRANS: "name" option from activity.info file -#: moon.py:68 -msgid "Moon" -msgstr "" - -#. TRANS: "summary" option from activity.info file -#. TRANS: "description" option from activity.info file -msgid "" -"For all those interested in the moon! See the different phases of the moon, " -"latitudes and longitudes and impress all by \"predicting\" the next full " -"moon!" -msgstr "" - -#. TRANS: Date format for next full/new moon and next solar/lunar eclipse -#: moon.py:60 -#, python-format -msgid "%c" -msgstr "" - -#: moon.py:92 moon.py:118 -msgid "Toggle Grid View" -msgstr "" - -#: moon.py:98 moon.py:124 -msgid "Toggle Hemisphere View" -msgstr "" - -#: moon.py:130 -msgid "View" -msgstr "" - -#: moon.py:250 -msgid "" -"Today's Moon Information\n" -"\n" -msgstr "" - -#: moon.py:252 -#, python-format -msgid "" -"Phase:\n" -"%s\n" -"\n" -msgstr "" - -#: moon.py:253 -#, python-format -msgid "" -"Julian Date:\n" -"%.2f (astronomical)\n" -"\n" -msgstr "" - -#: moon.py:254 -#, python-format -msgid "" -"Age:\n" -"%(days).0f days, %(hours).0f hours, %(minutes).0f minutes\n" -"\n" -msgstr "" - -#: moon.py:255 -#, python-format -msgid "" -"Lunation:\n" -"%(phase).2f%% through lunation %(lunation)d\n" -"\n" -msgstr "" - -#: moon.py:256 -#, python-format -msgid "" -"Surface Visibility:\n" -"%.0f%% (estimated)\n" -"\n" -msgstr "" - -#: moon.py:257 -#, python-format -msgid "" -"Selenographic Terminator Longitude:\n" -"%(deg).1f°%(westOrEast)s (%(riseOrSet)s)\n" -"\n" -msgstr "" - -#: moon.py:258 -#, python-format -msgid "" -"Next Full Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:259 -#, python-format -msgid "" -"Next New Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:260 -#, python-format -msgid "" -"Next Lunar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:261 -#, python-format -msgid "" -"Next Solar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:354 -msgid "SNWE" -msgstr "" - -#: moon.py:357 -msgid "NSEW" -msgstr "" - -#: moon.py:409 -msgid "Latitude" -msgstr "" - -#: moon.py:411 -msgid "Longitude" -msgstr "" - -#: moon.py:522 -msgid "west" -msgstr "" - -#: moon.py:524 -msgid "east" -msgstr "" - -#: moon.py:527 -msgid "Sunset" -msgstr "" - -#: moon.py:529 -msgid "Sunrise" -msgstr "" - -#: moon.py:545 moon.py:561 -msgid "New Moon" -msgstr "" - -#: moon.py:547 -msgid "Waxing Crescent" -msgstr "" - -#: moon.py:549 -msgid "First Quarter" -msgstr "" - -#: moon.py:551 -msgid "Waxing Gibbous" -msgstr "" - -#: moon.py:553 -msgid "Full Moon" -msgstr "" - -#: moon.py:555 -msgid "Waning Gibbous" -msgstr "" - -#: moon.py:557 -msgid "Last Quarter" -msgstr "" - -#: moon.py:559 -msgid "Waning Crescent" -msgstr "" diff --git a/po/ayc.po b/po/ayc.po deleted file mode 100644 index 77a9836..0000000 --- a/po/ayc.po +++ /dev/null @@ -1,236 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-10-03 00:33-0400\n" -"PO-Revision-Date: 2013-03-01 19:46+0200\n" -"Last-Translator: EdgarQuispeChambi \n" -"Language-Team: LANGUAGE \n" -"Language: ayc\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.5\n" - -#. TRANS: "name" option from activity.info file -#: moon.py:68 -msgid "Moon" -msgstr "Phaxsi" - -#. TRANS: "summary" option from activity.info file -#. TRANS: "description" option from activity.info file -msgid "" -"For all those interested in the moon! See the different phases of the moon, " -"latitudes and longtiutdes and impress all by \"predicting\" the next full " -"moon!" -msgstr "" -"¡Phaxsiru wayusiri taqi jaqinakataki! Phaxsina maya maya pachanakapa uñjma, " -"qawayanakapa ampstanaka ukhamata taqiru musphayma \"kunjanisa\" jutiri urt'a " -"uru." - -# "%c" -#. TRANS: Date format for next full/new moon and next solar/lunar eclipse -#: moon.py:60 -#, python-format -msgid "%c" -msgstr "%c chimpu" - -#: moon.py:92 moon.py:118 -msgid "Toggle Grid View" -msgstr "Grilla pacha chimpu uñjäwi jaqtaña" - -#: moon.py:98 moon.py:124 -msgid "Toggle Hemisphere View" -msgstr "Hemisferio uñjäwiru jaqtaña" - -# "Ver" -#: moon.py:130 -msgid "View" -msgstr "Unjaña" - -#: moon.py:250 -msgid "" -"Today's Moon Information\n" -"\n" -msgstr "" -"Phaxsi tuqita yatiyäwi jichhürutaki\n" -"\n" - -#: moon.py:252 -#, python-format -msgid "" -"Phase:\n" -"%s\n" -"\n" -msgstr "" -"Pacha:\n" -"%s\n" -"\n" - -#: moon.py:253 -#, python-format -msgid "" -"Julian Date:\n" -"%.2f (astronomical)\n" -"\n" -msgstr "" -"Pacha chimpu Juliana:\n" -"%.2f (astronómical)\n" -"\n" - -#: moon.py:254 -#, python-format -msgid "" -"Age:\n" -"%(days).0f days, %(hours).0f hours, %(minutes).0f minutes\n" -"\n" -msgstr "" -"Mara chimpu:\n" -"%(days).0f días, %(hours).0f horas, %(minutes).0f minutos\n" -"\n" - -#: moon.py:255 -#, python-format -msgid "" -"Lunation:\n" -"%(phase).2f%% through lunation %(lunation)d\n" -"\n" -msgstr "" -"Phaxsi pacha chimpu:\n" -"%(phase).2f%% phaxsi pacha chimpukama %(lunation)d\n" -"\n" - -#: moon.py:256 -#, python-format -msgid "" -"Surface Visibility:\n" -"%.0f%% (estimated)\n" -"\n" -msgstr "" -"Uraqi pacha uñjäwi:\n" -"%.0f%% (estimada)\n" -"\n" - -#: moon.py:257 -#, python-format -msgid "" -"Selenographic Terminator Longitude:\n" -"%(deg).1f°%(westOrEast)s (%(riseOrSet)s)\n" -"\n" -msgstr "" -"Terminador selenográfico phaxsi ampsta tañapa:\n" -"%(deg).1f°%(westOrEast)s (%(riseOrSet)s)\n" -"\n" - -#: moon.py:258 -#, python-format -msgid "" -"Next Full Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"Jutiri phaxsi urt'a:\n" -"%(date)s en %(days).0f días\n" -"\n" - -#: moon.py:259 -#, python-format -msgid "" -"Next New Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"Jutiri phaxsi jayri:\n" -"%(date)s en %(days).0f días\n" -"\n" - -#: moon.py:260 -#, python-format -msgid "" -"Next Lunar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"Jutiri phaxsi usuntäwi:\n" -"%(date)s en %(days).0f días\n" -"\n" - -#: moon.py:261 -#, python-format -msgid "" -"Next Solar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"Jutiri Inti usuntäwi:\n" -"%(date)s en %(days).0f días\n" -"\n" - -#: moon.py:354 -msgid "SNWE" -msgstr "SNWE chimpu" - -#: moon.py:357 -msgid "NSEW" -msgstr "NSEW chimpu" - -#: moon.py:409 -msgid "Latitude" -msgstr "Qawaya" - -#: moon.py:411 -msgid "Longitude" -msgstr "Ampsta" - -#: moon.py:522 -msgid "west" -msgstr "Inti Jalanta" - -#: moon.py:524 -msgid "east" -msgstr "Inti Jalsu" - -#: moon.py:527 -msgid "Sunset" -msgstr "Uchasiwa" - -#: moon.py:529 -msgid "Sunrise" -msgstr "Mistu" - -#: moon.py:545 moon.py:561 -msgid "New Moon" -msgstr "Jayri phaxsi" - -#: moon.py:547 -msgid "Waxing Crescent" -msgstr "Qhana Jayri Phaxsi" - -#: moon.py:549 -msgid "First Quarter" -msgstr "Urt'a Sunaqi Phaxsi" - -#: moon.py:551 -msgid "Waxing Gibbous" -msgstr "Urt'a Wawa Phaxsi" - -#: moon.py:553 -msgid "Full Moon" -msgstr "Urt'a Phaxsi" - -#: moon.py:555 -msgid "Waning Gibbous" -msgstr "Jayri Wawa Phaxsi" - -#: moon.py:557 -msgid "Last Quarter" -msgstr "Jayri Sunaqi Phaxsi" - -#: moon.py:559 -msgid "Waning Crescent" -msgstr "Jayri Sunaqi Phaxsi" diff --git a/po/aym.po b/po/aym.po deleted file mode 100644 index 8b90d5a..0000000 --- a/po/aym.po +++ /dev/null @@ -1,201 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-10-03 00:33-0400\n" -"PO-Revision-Date: 2011-11-24 04:48+0200\n" -"Last-Translator: Chris \n" -"Language-Team: LANGUAGE \n" -"Language: aym\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.5\n" - -#. TRANS: "name" option from activity.info file -#: moon.py:68 -msgid "Moon" -msgstr "" - -#. TRANS: "summary" option from activity.info file -#. TRANS: "description" option from activity.info file -msgid "" -"For all those interested in the moon! See the different phases of the moon, " -"latitudes and longtiutdes and impress all by \"predicting\" the next full " -"moon!" -msgstr "" - -# "%c" -#. TRANS: Date format for next full/new moon and next solar/lunar eclipse -#: moon.py:60 -#, python-format -msgid "%c" -msgstr "%c" - -#: moon.py:92 moon.py:118 -msgid "Toggle Grid View" -msgstr "" - -#: moon.py:98 moon.py:124 -msgid "Toggle Hemisphere View" -msgstr "" - -# "Ver" -#: moon.py:130 -msgid "View" -msgstr "Unjaña" - -#: moon.py:250 -msgid "" -"Today's Moon Information\n" -"\n" -msgstr "" - -#: moon.py:252 -#, python-format -msgid "" -"Phase:\n" -"%s\n" -"\n" -msgstr "" - -#: moon.py:253 -#, python-format -msgid "" -"Julian Date:\n" -"%.2f (astronomical)\n" -"\n" -msgstr "" - -#: moon.py:254 -#, python-format -msgid "" -"Age:\n" -"%(days).0f days, %(hours).0f hours, %(minutes).0f minutes\n" -"\n" -msgstr "" - -#: moon.py:255 -#, python-format -msgid "" -"Lunation:\n" -"%(phase).2f%% through lunation %(lunation)d\n" -"\n" -msgstr "" - -#: moon.py:256 -#, python-format -msgid "" -"Surface Visibility:\n" -"%.0f%% (estimated)\n" -"\n" -msgstr "" - -#: moon.py:257 -#, python-format -msgid "" -"Selenographic Terminator Longitude:\n" -"%(deg).1f°%(westOrEast)s (%(riseOrSet)s)\n" -"\n" -msgstr "" - -#: moon.py:258 -#, python-format -msgid "" -"Next Full Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:259 -#, python-format -msgid "" -"Next New Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:260 -#, python-format -msgid "" -"Next Lunar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:261 -#, python-format -msgid "" -"Next Solar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:354 -msgid "SNWE" -msgstr "" - -#: moon.py:357 -msgid "NSEW" -msgstr "" - -#: moon.py:409 -msgid "Latitude" -msgstr "" - -#: moon.py:411 -msgid "Longitude" -msgstr "" - -#: moon.py:522 -msgid "west" -msgstr "" - -#: moon.py:524 -msgid "east" -msgstr "" - -#: moon.py:527 -msgid "Sunset" -msgstr "" - -#: moon.py:529 -msgid "Sunrise" -msgstr "" - -#: moon.py:545 moon.py:561 -msgid "New Moon" -msgstr "" - -#: moon.py:547 -msgid "Waxing Crescent" -msgstr "" - -#: moon.py:549 -msgid "First Quarter" -msgstr "" - -#: moon.py:551 -msgid "Waxing Gibbous" -msgstr "" - -#: moon.py:553 -msgid "Full Moon" -msgstr "" - -#: moon.py:555 -msgid "Waning Gibbous" -msgstr "" - -#: moon.py:557 -msgid "Last Quarter" -msgstr "" - -#: moon.py:559 -msgid "Waning Crescent" -msgstr "" diff --git a/po/bg.po b/po/bg.po deleted file mode 100644 index 7b96fa5..0000000 --- a/po/bg.po +++ /dev/null @@ -1,248 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-10-03 00:33-0400\n" -"PO-Revision-Date: 2011-09-29 07:33+0200\n" -"Last-Translator: Chris \n" -"Language-Team: LANGUAGE \n" -"Language: bg\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.5\n" - -#. TRANS: "name" option from activity.info file -#: moon.py:68 -msgid "Moon" -msgstr "Луна" - -#. TRANS: "summary" option from activity.info file -#. TRANS: "description" option from activity.info file -msgid "" -"For all those interested in the moon! See the different phases of the moon, " -"latitudes and longtiutdes and impress all by \"predicting\" the next full " -"moon!" -msgstr "" - -#. TRANS: Date format for next full/new moon and next solar/lunar eclipse -#: moon.py:60 -#, python-format -msgid "%c" -msgstr "%c" - -#: moon.py:92 moon.py:118 -msgid "Toggle Grid View" -msgstr "Превключване на мрежата" - -#: moon.py:98 moon.py:124 -msgid "Toggle Hemisphere View" -msgstr "Превключване на полукълбото" - -#: moon.py:130 -msgid "View" -msgstr "Изглед" - -#: moon.py:250 -msgid "" -"Today's Moon Information\n" -"\n" -msgstr "" -"Текуща информация за Луната\n" -"\n" - -#: moon.py:252 -#, python-format -msgid "" -"Phase:\n" -"%s\n" -"\n" -msgstr "" -"Фаза:\n" -"%s\n" -"\n" - -#: moon.py:253 -#, python-format -msgid "" -"Julian Date:\n" -"%.2f (astronomical)\n" -"\n" -msgstr "" -"Юлианска дата:\n" -"%.2f (астрономическа)\n" -"\n" - -#: moon.py:254 -#, python-format -msgid "" -"Age:\n" -"%(days).0f days, %(hours).0f hours, %(minutes).0f minutes\n" -"\n" -msgstr "" -"Възраст:\n" -"%(days).0f дни, %(hours).0f часове, %(minutes).0f минути\n" -"\n" - -#: moon.py:255 -#, python-format -msgid "" -"Lunation:\n" -"%(phase).2f%% through lunation %(lunation)d\n" -"\n" -msgstr "" -"Лунен цикъл:\n" -"%(phase).2f%% от лунния цикъл %(lunation)d\n" -"\n" - -#: moon.py:256 -#, python-format -msgid "" -"Surface Visibility:\n" -"%.0f%% (estimated)\n" -"\n" -msgstr "" -"Осветеност:\n" -"%.0f%% (прогнозирано)\n" -"\n" - -#: moon.py:257 -#, python-format -msgid "" -"Selenographic Terminator Longitude:\n" -"%(deg).1f°%(westOrEast)s (%(riseOrSet)s)\n" -"\n" -msgstr "" - -#: moon.py:258 -#, python-format -msgid "" -"Next Full Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:259 -#, python-format -msgid "" -"Next New Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:260 -#, python-format -msgid "" -"Next Lunar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:261 -#, python-format -msgid "" -"Next Solar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:354 -msgid "SNWE" -msgstr "" - -#: moon.py:357 -msgid "NSEW" -msgstr "" - -#: moon.py:409 -msgid "Latitude" -msgstr "" - -#: moon.py:411 -msgid "Longitude" -msgstr "" - -#: moon.py:522 -msgid "west" -msgstr "" - -#: moon.py:524 -msgid "east" -msgstr "" - -#: moon.py:527 -msgid "Sunset" -msgstr "" - -#: moon.py:529 -msgid "Sunrise" -msgstr "" - -#: moon.py:545 moon.py:561 -msgid "New Moon" -msgstr "" - -#: moon.py:547 -msgid "Waxing Crescent" -msgstr "" - -#: moon.py:549 -msgid "First Quarter" -msgstr "" - -#: moon.py:551 -msgid "Waxing Gibbous" -msgstr "" - -#: moon.py:553 -msgid "Full Moon" -msgstr "" - -#: moon.py:555 -msgid "Waning Gibbous" -msgstr "" - -#: moon.py:557 -msgid "Last Quarter" -msgstr "" - -#: moon.py:559 -msgid "Waning Crescent" -msgstr "" diff --git a/po/bi.po b/po/bi.po deleted file mode 100644 index 467fd5c..0000000 --- a/po/bi.po +++ /dev/null @@ -1,221 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-07-06 00:30-0400\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Translate Toolkit 1.1.1rc4\n" - -#: activity/activity.info:2 moon.py:68 -msgid "Moon" -msgstr "" - -#. TRANS: Date format for next full/new moon and next solar/lunar eclipse -#: moon.py:60 -#, python-format -msgid "%c" -msgstr "" - -#: moon.py:92 moon.py:116 -msgid "Toggle Grid View" -msgstr "" - -#: moon.py:97 moon.py:121 -msgid "Toggle Hemisphere View" -msgstr "" - -#: moon.py:126 -msgid "View" -msgstr "" - -#: moon.py:260 -msgid "" -"Today's Moon Information\n" -"\n" -msgstr "" - -#: moon.py:261 -#, python-format -msgid "" -"Phase:\n" -"%s\n" -"\n" -msgstr "" - -#: moon.py:262 -#, python-format -msgid "" -"Julian Date:\n" -"%.2f (astronomical)\n" -"\n" -msgstr "" - -#: moon.py:263 -#, python-format -msgid "" -"Age:\n" -"%(days).0f days, %(hours).0f hours, %(minutes).0f minutes\n" -"\n" -msgstr "" - -#: moon.py:264 -#, python-format -msgid "" -"Lunation:\n" -"%(phase).2f%% through lunation %(lunation)d\n" -"\n" -msgstr "" - -#: moon.py:265 -#, python-format -msgid "" -"Surface Visibility:\n" -"%.0f%% (estimated)\n" -"\n" -msgstr "" - -#: moon.py:266 -#, python-format -msgid "" -"Selenographic Terminator Longitude:\n" -"%(deg).1f°%(westOrEast)s (%(riseOrSet)s)\n" -"\n" -msgstr "" - -#: moon.py:267 -#, python-format -msgid "" -"Next Full Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:268 -#, python-format -msgid "" -"Next New Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:269 -#, python-format -msgid "" -"Next Lunar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:270 -#, python-format -msgid "" -"Next Solar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:363 -msgid "SNWE" -msgstr "" - -#: moon.py:366 -msgid "NSEW" -msgstr "" - -#: moon.py:421 -msgid "Latitude" -msgstr "" - -#: moon.py:423 -msgid "Longitude" -msgstr "" - -#: moon.py:534 -msgid "west" -msgstr "" - -#: moon.py:536 -msgid "east" -msgstr "" - -#: moon.py:539 -msgid "Sunset" -msgstr "" - -#: moon.py:541 -msgid "Sunrise" -msgstr "" - -#: moon.py:557 moon.py:573 -msgid "New Moon" -msgstr "" - -#: moon.py:559 -msgid "Waxing Crescent" -msgstr "" - -#: moon.py:561 -msgid "First Quarter" -msgstr "" - -#: moon.py:563 -msgid "Waxing Gibbous" -msgstr "" - -#: moon.py:565 -msgid "Full Moon" -msgstr "" - -#: moon.py:567 -msgid "Waning Gibbous" -msgstr "" - -#: moon.py:569 -msgid "Last Quarter" -msgstr "" - -#: moon.py:571 -msgid "Waning Crescent" -msgstr "" diff --git a/po/bn.po b/po/bn.po deleted file mode 100644 index 6364311..0000000 --- a/po/bn.po +++ /dev/null @@ -1,266 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# Loba Yeasmeen , 2009. -msgid "" -msgstr "" -"Project-Id-Version: honey VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-10-03 00:33-0400\n" -"PO-Revision-Date: 2012-01-12 08:09+0200\n" -"Last-Translator: Chris \n" -"Language-Team: Bengali \n" -"Language: bn\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.5\n" - -#. TRANS: "name" option from activity.info file -#: moon.py:68 -msgid "Moon" -msgstr "চাঁদ" - -#. TRANS: "summary" option from activity.info file -#. TRANS: "description" option from activity.info file -msgid "" -"For all those interested in the moon! See the different phases of the moon, " -"latitudes and longitudes and impress all by \"predicting\" the next full " -"moon!" -msgstr "" - -#. TRANS: Date format for next full/new moon and next solar/lunar eclipse -#: moon.py:60 -#, python-format -msgid "%c" -msgstr "" - -#: moon.py:92 moon.py:118 -msgid "Toggle Grid View" -msgstr "গ্রিড ভিউ টগল করো" - -#: moon.py:98 moon.py:124 -msgid "Toggle Hemisphere View" -msgstr "গোলার্ধ ভিউ টগল করো" - -#: moon.py:130 -msgid "View" -msgstr "ভিউ" - -#: moon.py:250 -msgid "" -"Today's Moon Information\n" -"\n" -msgstr "" -"আজকের চাঁদের তথ্য\n" -"\n" - -#: moon.py:252 -#, python-format -msgid "" -"Phase:\n" -"%s\n" -"\n" -msgstr "" -"পর্যায়:\n" -"%s\n" -"\n" - -#: moon.py:253 -#, python-format -msgid "" -"Julian Date:\n" -"%.2f (astronomical)\n" -"\n" -msgstr "" -"জুলিয়ান তারিখ:\n" -"%.2f (astronomical)\n" -"\n" - -#: moon.py:254 -#, python-format -msgid "" -"Age:\n" -"%(days).0f days, %(hours).0f hours, %(minutes).0f minutes\n" -"\n" -msgstr "" -"বয়স:\n" -"%(days).0f দিন, %(hours).0f ঘন্টা, %(minutes).0f মিনিট\n" -"\n" - -#: moon.py:255 -#, python-format -msgid "" -"Lunation:\n" -"%(phase).2f%% through lunation %(lunation)d\n" -"\n" -msgstr "" -"লুনেশন:\n" -"%(phase).2f%% লুনেশনের মাধ্যমে %(lunation)d\n" -"\n" - -#: moon.py:256 -#, python-format -msgid "" -"Surface Visibility:\n" -"%.0f%% (estimated)\n" -"\n" -msgstr "" -"পৃষ্ঠভাগের দৃশ্যমানতা:\n" -"%.0f%% (estimated)\n" -"\n" - -#: moon.py:257 -#, python-format -msgid "" -"Selenographic Terminator Longitude:\n" -"%(deg).1f°%(westOrEast)s (%(riseOrSet)s)\n" -"\n" -msgstr "" - -#: moon.py:258 -#, python-format -msgid "" -"Next Full Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"পরবর্তী পূর্ণ চাঁদ:\n" -"%(date)s %(days).0f দিনে\n" -"\n" - -#: moon.py:259 -#, python-format -msgid "" -"Next New Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"পরবর্তী নতুন চাঁদ:\n" -"%(date)s %(days).0f দিনে\n" -"\n" - -#: moon.py:260 -#, python-format -msgid "" -"Next Lunar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"পরবর্তী চন্দ্র গ্রহন:\n" -"%(date)s %(days).0f দিনে\n" -"\n" - -#: moon.py:261 -#, python-format -msgid "" -"Next Solar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"পরবর্তী সূর্য গ্রহন:\n" -"%(date)s %(days).0f দিনে\n" -"\n" - -#: moon.py:354 -msgid "SNWE" -msgstr "SNWE" - -#: moon.py:357 -msgid "NSEW" -msgstr "NSEW" - -#: moon.py:409 -msgid "Latitude" -msgstr "অক্ষাংশ" - -#: moon.py:411 -msgid "Longitude" -msgstr "দ্রাঘিমাংশ" - -#: moon.py:522 -msgid "west" -msgstr "পশ্চিম" - -#: moon.py:524 -msgid "east" -msgstr "পূর্ব" - -#: moon.py:527 -msgid "Sunset" -msgstr "সূর্যাস্ত" - -#: moon.py:529 -msgid "Sunrise" -msgstr "সূর্যোদয়" - -#: moon.py:545 moon.py:561 -msgid "New Moon" -msgstr "নতুন চাঁদ" - -#: moon.py:547 -#, fuzzy -msgid "Waxing Crescent" -msgstr "আলোকিত অর্ধচন্দ্র" - -#: moon.py:549 -#, fuzzy -msgid "First Quarter" -msgstr "প্রথম ত্রৈমাসিক" - -# Gibbous -#: moon.py:551 -#, fuzzy -msgid "Waxing Gibbous" -msgstr "আলোকিত" - -#: moon.py:553 -msgid "Full Moon" -msgstr "পূর্ণ চাঁদ" - -# Gibbous -#: moon.py:555 -#, fuzzy -msgid "Waning Gibbous" -msgstr "অনুজ্জ্বল" - -#: moon.py:557 -msgid "Last Quarter" -msgstr "শেষ ত্রৈমাসিক" - -#: moon.py:559 -msgid "Waning Crescent" -msgstr "অনুজ্জ্বল অর্ধচন্দ্র" diff --git a/po/bn_IN.po b/po/bn_IN.po deleted file mode 100644 index 0a5b51a..0000000 --- a/po/bn_IN.po +++ /dev/null @@ -1,230 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-10-03 00:33-0400\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Translate Toolkit 1.1.1rc4\n" - -#. TRANS: "name" option from activity.info file -#: moon.py:68 -msgid "Moon" -msgstr "" - -#. TRANS: "summary" option from activity.info file -#. TRANS: "description" option from activity.info file -msgid "" -"For all those interested in the moon! See the different phases of the moon, " -"latitudes and longtiutdes and impress all by \"predicting\" the next full " -"moon!" -msgstr "" - -#. TRANS: Date format for next full/new moon and next solar/lunar eclipse -#: moon.py:60 -#, python-format -msgid "%c" -msgstr "" - -#: moon.py:92 moon.py:118 -msgid "Toggle Grid View" -msgstr "" - -#: moon.py:98 moon.py:124 -msgid "Toggle Hemisphere View" -msgstr "" - -#: moon.py:130 -msgid "View" -msgstr "" - -#: moon.py:250 -msgid "" -"Today's Moon Information\n" -"\n" -msgstr "" - -#: moon.py:252 -#, python-format -msgid "" -"Phase:\n" -"%s\n" -"\n" -msgstr "" - -#: moon.py:253 -#, python-format -msgid "" -"Julian Date:\n" -"%.2f (astronomical)\n" -"\n" -msgstr "" - -#: moon.py:254 -#, python-format -msgid "" -"Age:\n" -"%(days).0f days, %(hours).0f hours, %(minutes).0f minutes\n" -"\n" -msgstr "" - -#: moon.py:255 -#, python-format -msgid "" -"Lunation:\n" -"%(phase).2f%% through lunation %(lunation)d\n" -"\n" -msgstr "" - -#: moon.py:256 -#, python-format -msgid "" -"Surface Visibility:\n" -"%.0f%% (estimated)\n" -"\n" -msgstr "" - -#: moon.py:257 -#, python-format -msgid "" -"Selenographic Terminator Longitude:\n" -"%(deg).1f°%(westOrEast)s (%(riseOrSet)s)\n" -"\n" -msgstr "" - -#: moon.py:258 -#, python-format -msgid "" -"Next Full Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:259 -#, python-format -msgid "" -"Next New Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:260 -#, python-format -msgid "" -"Next Lunar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:261 -#, python-format -msgid "" -"Next Solar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:354 -msgid "SNWE" -msgstr "" - -#: moon.py:357 -msgid "NSEW" -msgstr "" - -#: moon.py:409 -msgid "Latitude" -msgstr "" - -#: moon.py:411 -msgid "Longitude" -msgstr "" - -#: moon.py:522 -msgid "west" -msgstr "" - -#: moon.py:524 -msgid "east" -msgstr "" - -#: moon.py:527 -msgid "Sunset" -msgstr "" - -#: moon.py:529 -msgid "Sunrise" -msgstr "" - -#: moon.py:545 moon.py:561 -msgid "New Moon" -msgstr "" - -#: moon.py:547 -msgid "Waxing Crescent" -msgstr "" - -#: moon.py:549 -msgid "First Quarter" -msgstr "" - -#: moon.py:551 -msgid "Waxing Gibbous" -msgstr "" - -#: moon.py:553 -msgid "Full Moon" -msgstr "" - -#: moon.py:555 -msgid "Waning Gibbous" -msgstr "" - -#: moon.py:557 -msgid "Last Quarter" -msgstr "" - -#: moon.py:559 -msgid "Waning Crescent" -msgstr "" diff --git a/po/bs.po b/po/bs.po deleted file mode 100644 index b3d104f..0000000 --- a/po/bs.po +++ /dev/null @@ -1,202 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-10-03 00:33-0400\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Translate Toolkit 1.6.0\n" - -#. TRANS: "name" option from activity.info file -#: moon.py:68 -msgid "Moon" -msgstr "" - -#. TRANS: "summary" option from activity.info file -#. TRANS: "description" option from activity.info file -msgid "" -"For all those interested in the moon! See the different phases of the moon, " -"latitudes and longtiutdes and impress all by \"predicting\" the next full " -"moon!" -msgstr "" - -#. TRANS: Date format for next full/new moon and next solar/lunar eclipse -#: moon.py:60 -#, python-format -msgid "%c" -msgstr "" - -#: moon.py:92 moon.py:118 -msgid "Toggle Grid View" -msgstr "" - -#: moon.py:98 moon.py:124 -msgid "Toggle Hemisphere View" -msgstr "" - -#: moon.py:130 -msgid "View" -msgstr "" - -#: moon.py:250 -msgid "" -"Today's Moon Information\n" -"\n" -msgstr "" - -#: moon.py:252 -#, python-format -msgid "" -"Phase:\n" -"%s\n" -"\n" -msgstr "" - -#: moon.py:253 -#, python-format -msgid "" -"Julian Date:\n" -"%.2f (astronomical)\n" -"\n" -msgstr "" - -#: moon.py:254 -#, python-format -msgid "" -"Age:\n" -"%(days).0f days, %(hours).0f hours, %(minutes).0f minutes\n" -"\n" -msgstr "" - -#: moon.py:255 -#, python-format -msgid "" -"Lunation:\n" -"%(phase).2f%% through lunation %(lunation)d\n" -"\n" -msgstr "" - -#: moon.py:256 -#, python-format -msgid "" -"Surface Visibility:\n" -"%.0f%% (estimated)\n" -"\n" -msgstr "" - -#: moon.py:257 -#, python-format -msgid "" -"Selenographic Terminator Longitude:\n" -"%(deg).1f°%(westOrEast)s (%(riseOrSet)s)\n" -"\n" -msgstr "" - -#: moon.py:258 -#, python-format -msgid "" -"Next Full Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:259 -#, python-format -msgid "" -"Next New Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:260 -#, python-format -msgid "" -"Next Lunar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:261 -#, python-format -msgid "" -"Next Solar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:354 -msgid "SNWE" -msgstr "" - -#: moon.py:357 -msgid "NSEW" -msgstr "" - -#: moon.py:409 -msgid "Latitude" -msgstr "" - -#: moon.py:411 -msgid "Longitude" -msgstr "" - -#: moon.py:522 -msgid "west" -msgstr "" - -#: moon.py:524 -msgid "east" -msgstr "" - -#: moon.py:527 -msgid "Sunset" -msgstr "" - -#: moon.py:529 -msgid "Sunrise" -msgstr "" - -#: moon.py:545 moon.py:561 -msgid "New Moon" -msgstr "" - -#: moon.py:547 -msgid "Waxing Crescent" -msgstr "" - -#: moon.py:549 -msgid "First Quarter" -msgstr "" - -#: moon.py:551 -msgid "Waxing Gibbous" -msgstr "" - -#: moon.py:553 -msgid "Full Moon" -msgstr "" - -#: moon.py:555 -msgid "Waning Gibbous" -msgstr "" - -#: moon.py:557 -msgid "Last Quarter" -msgstr "" - -#: moon.py:559 -msgid "Waning Crescent" -msgstr "" diff --git a/po/ca.po b/po/ca.po deleted file mode 100644 index 5737bdc..0000000 --- a/po/ca.po +++ /dev/null @@ -1,271 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-10-03 00:33-0400\n" -"PO-Revision-Date: 2016-04-25 09:12+0000\n" -"Last-Translator: Robert \n" -"Language-Team: LANGUAGE \n" -"Language: ca\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.5.1.1\n" -"X-POOTLE-MTIME: 1461575523.000000\n" - -#. TRANS: "name" option from activity.info file -#: moon.py:68 -msgid "Moon" -msgstr "Lluna" - -#. TRANS: "summary" option from activity.info file -#. TRANS: "description" option from activity.info file -msgid "" -"For all those interested in the moon! See the different phases of the moon, " -"latitudes and longtiutdes and impress all by \"predicting\" the next full " -"moon!" -msgstr "" -"Per a tots aquells que estiguin interessats amb la Lluna! Veure les " -"diferents fases de la Lluna, les latituds i les longituds i impressionar a " -"tothom amb la «predicció» de la propera Lluna plena!" - -#. TRANS: Date format for next full/new moon and next solar/lunar eclipse -#: moon.py:60 -#, python-format -msgid "%c" -msgstr "%c" - -#: moon.py:92 moon.py:118 -msgid "Toggle Grid View" -msgstr "Canvia a la visualització de la quadrícula" - -#: moon.py:98 moon.py:124 -msgid "Toggle Hemisphere View" -msgstr "Canvia a la visualització de l'hemisferi" - -#: moon.py:130 -msgid "View" -msgstr "Visualitza" - -#: moon.py:250 -msgid "" -"Today's Moon Information\n" -"\n" -msgstr "" -"Informació de la Lluna d'avui\n" -"\n" - -#: moon.py:252 -#, python-format -msgid "" -"Phase:\n" -"%s\n" -"\n" -msgstr "" -"Fase:\n" -"%s\n" -"\n" - -#: moon.py:253 -#, python-format -msgid "" -"Julian Date:\n" -"%.2f (astronomical)\n" -"\n" -msgstr "" -"Dia julià:\n" -"%.2f (astronòmic)\n" -"\n" - -#: moon.py:254 -#, python-format -msgid "" -"Age:\n" -"%(days).0f days, %(hours).0f hours, %(minutes).0f minutes\n" -"\n" -msgstr "" -"Envelliment:\n" -"%(days).0f dies, %(hours).0f hores, %(minutes).0f minuts\n" -"\n" - -#: moon.py:255 -#, python-format -msgid "" -"Lunation:\n" -"%(phase).2f%% through lunation %(lunation)d\n" -"\n" -msgstr "" -"Lluna nova:\n" -"%(phase).2f%% fins a la Lluna nova %(lunation)d\n" -"\n" - -#: moon.py:256 -#, python-format -msgid "" -"Surface Visibility:\n" -"%.0f%% (estimated)\n" -"\n" -msgstr "" -"Superfície visible:\n" -"%.0f%% (aproximació)\n" -"\n" - -#: moon.py:257 -#, python-format -msgid "" -"Selenographic Terminator Longitude:\n" -"%(deg).1f°%(westOrEast)s (%(riseOrSet)s)\n" -"\n" -msgstr "" -"Colongitud selenogràfica:\n" -"%(deg).1f°%(westOrEast)s (%(riseOrSet)s)\n" -"\n" - -#: moon.py:258 -#, python-format -msgid "" -"Next Full Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"Pròxima Lluna plena:\n" -"%(date)s en %(days).0f dies\n" -"\n" - -#: moon.py:259 -#, python-format -msgid "" -"Next New Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"Pròxima Lluna nova:\n" -"%(date)s en %(days).0f dies\n" -"\n" - -#: moon.py:260 -#, python-format -msgid "" -"Next Lunar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"Pròxim eclipse de Lluna:\n" -"%(date)s en %(days).0f dies\n" -"\n" - -#: moon.py:261 -#, python-format -msgid "" -"Next Solar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"Pròxim eclipse de Sol:\n" -"%(date)s en %(days).0f dies\n" -"\n" - -#: moon.py:354 -msgid "SNWE" -msgstr "SNOE" - -#: moon.py:357 -msgid "NSEW" -msgstr "NSEO" - -#: moon.py:409 -msgid "Latitude" -msgstr "Latitud" - -#: moon.py:411 -msgid "Longitude" -msgstr "Longitud" - -#: moon.py:522 -msgid "west" -msgstr "oest" - -#: moon.py:524 -msgid "east" -msgstr "est" - -#: moon.py:527 -msgid "Sunset" -msgstr "Posta de sol" - -#: moon.py:529 -msgid "Sunrise" -msgstr "Sortida del sol" - -#: moon.py:545 moon.py:561 -msgid "New Moon" -msgstr "Lluna Nova" - -#: moon.py:547 -msgid "Waxing Crescent" -msgstr "Lluna nova visible" - -#: moon.py:549 -msgid "First Quarter" -msgstr "Quart creixent" - -#: moon.py:551 -msgid "Waxing Gibbous" -msgstr "Lluna gibosa creixent" - -#: moon.py:553 -msgid "Full Moon" -msgstr "Lluna Plena" - -#: moon.py:555 -msgid "Waning Gibbous" -msgstr "Lluna gibosa minvant" - -#: moon.py:557 -msgid "Last Quarter" -msgstr "Quart minvant" - -#: moon.py:559 -msgid "Waning Crescent" -msgstr "Lluna minvant" diff --git a/po/cpp.po b/po/cpp.po deleted file mode 100644 index 0a5b51a..0000000 --- a/po/cpp.po +++ /dev/null @@ -1,230 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-10-03 00:33-0400\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Translate Toolkit 1.1.1rc4\n" - -#. TRANS: "name" option from activity.info file -#: moon.py:68 -msgid "Moon" -msgstr "" - -#. TRANS: "summary" option from activity.info file -#. TRANS: "description" option from activity.info file -msgid "" -"For all those interested in the moon! See the different phases of the moon, " -"latitudes and longtiutdes and impress all by \"predicting\" the next full " -"moon!" -msgstr "" - -#. TRANS: Date format for next full/new moon and next solar/lunar eclipse -#: moon.py:60 -#, python-format -msgid "%c" -msgstr "" - -#: moon.py:92 moon.py:118 -msgid "Toggle Grid View" -msgstr "" - -#: moon.py:98 moon.py:124 -msgid "Toggle Hemisphere View" -msgstr "" - -#: moon.py:130 -msgid "View" -msgstr "" - -#: moon.py:250 -msgid "" -"Today's Moon Information\n" -"\n" -msgstr "" - -#: moon.py:252 -#, python-format -msgid "" -"Phase:\n" -"%s\n" -"\n" -msgstr "" - -#: moon.py:253 -#, python-format -msgid "" -"Julian Date:\n" -"%.2f (astronomical)\n" -"\n" -msgstr "" - -#: moon.py:254 -#, python-format -msgid "" -"Age:\n" -"%(days).0f days, %(hours).0f hours, %(minutes).0f minutes\n" -"\n" -msgstr "" - -#: moon.py:255 -#, python-format -msgid "" -"Lunation:\n" -"%(phase).2f%% through lunation %(lunation)d\n" -"\n" -msgstr "" - -#: moon.py:256 -#, python-format -msgid "" -"Surface Visibility:\n" -"%.0f%% (estimated)\n" -"\n" -msgstr "" - -#: moon.py:257 -#, python-format -msgid "" -"Selenographic Terminator Longitude:\n" -"%(deg).1f°%(westOrEast)s (%(riseOrSet)s)\n" -"\n" -msgstr "" - -#: moon.py:258 -#, python-format -msgid "" -"Next Full Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:259 -#, python-format -msgid "" -"Next New Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:260 -#, python-format -msgid "" -"Next Lunar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:261 -#, python-format -msgid "" -"Next Solar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:354 -msgid "SNWE" -msgstr "" - -#: moon.py:357 -msgid "NSEW" -msgstr "" - -#: moon.py:409 -msgid "Latitude" -msgstr "" - -#: moon.py:411 -msgid "Longitude" -msgstr "" - -#: moon.py:522 -msgid "west" -msgstr "" - -#: moon.py:524 -msgid "east" -msgstr "" - -#: moon.py:527 -msgid "Sunset" -msgstr "" - -#: moon.py:529 -msgid "Sunrise" -msgstr "" - -#: moon.py:545 moon.py:561 -msgid "New Moon" -msgstr "" - -#: moon.py:547 -msgid "Waxing Crescent" -msgstr "" - -#: moon.py:549 -msgid "First Quarter" -msgstr "" - -#: moon.py:551 -msgid "Waxing Gibbous" -msgstr "" - -#: moon.py:553 -msgid "Full Moon" -msgstr "" - -#: moon.py:555 -msgid "Waning Gibbous" -msgstr "" - -#: moon.py:557 -msgid "Last Quarter" -msgstr "" - -#: moon.py:559 -msgid "Waning Crescent" -msgstr "" diff --git a/po/cs.po b/po/cs.po deleted file mode 100644 index f00a563..0000000 --- a/po/cs.po +++ /dev/null @@ -1,263 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-10-03 00:33-0400\n" -"PO-Revision-Date: 2012-07-08 08:44+0200\n" -"Last-Translator: Chris \n" -"Language-Team: LANGUAGE \n" -"Language: cs\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" -"X-Generator: Pootle 2.0.5\n" - -#. TRANS: "name" option from activity.info file -#: moon.py:68 -msgid "Moon" -msgstr "Měsíc" - -#. TRANS: "summary" option from activity.info file -#. TRANS: "description" option from activity.info file -msgid "" -"For all those interested in the moon! See the different phases of the moon, " -"latitudes and longtiutdes and impress all by \"predicting\" the next full " -"moon!" -msgstr "" - -#. TRANS: Date format for next full/new moon and next solar/lunar eclipse -#: moon.py:60 -#, python-format -msgid "%c" -msgstr "%c" - -#: moon.py:92 moon.py:118 -msgid "Toggle Grid View" -msgstr "Přepnout zobrazení mřížky" - -#: moon.py:98 moon.py:124 -msgid "Toggle Hemisphere View" -msgstr "Přepnout zobrazení polokoule" - -#: moon.py:130 -msgid "View" -msgstr "Zobrazit" - -#: moon.py:250 -msgid "" -"Today's Moon Information\n" -"\n" -msgstr "" -"Dnešní informace o měsíci\n" -"\n" - -#: moon.py:252 -#, python-format -msgid "" -"Phase:\n" -"%s\n" -"\n" -msgstr "" -"Fáze:\n" -"%s\n" -"\n" - -#: moon.py:253 -#, python-format -msgid "" -"Julian Date:\n" -"%.2f (astronomical)\n" -"\n" -msgstr "" -"Juliánské datum:\n" -"%.2f (astronomických)\n" -"\n" - -#: moon.py:254 -#, python-format -msgid "" -"Age:\n" -"%(days).0f days, %(hours).0f hours, %(minutes).0f minutes\n" -"\n" -msgstr "" -"Stáří:\n" -"%(days).0f dnů, %(hours).0f hodin, %(minutes).0f minut\n" -"\n" - -#: moon.py:255 -#, python-format -msgid "" -"Lunation:\n" -"%(phase).2f%% through lunation %(lunation)d\n" -"\n" -msgstr "" -"Doba oběhu:\n" -"%(phase).2f%% přes synodický měsíc %(lunation)d\n" -"\n" - -#: moon.py:256 -#, python-format -msgid "" -"Surface Visibility:\n" -"%.0f%% (estimated)\n" -"\n" -msgstr "" -"Viditelnost povrchu:\n" -"%.0f%% (odhadem)\n" -"\n" - -#: moon.py:257 -#, python-format -msgid "" -"Selenographic Terminator Longitude:\n" -"%(deg).1f°%(westOrEast)s (%(riseOrSet)s)\n" -"\n" -msgstr "" -"Selenografické souřadnice:\n" -"%(deg).1f°%(westOrEast)s (%(riseOrSet)s)\n" -"\n" - -#: moon.py:258 -#, python-format -msgid "" -"Next Full Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"Další úplněk:\n" -"%(date)s za %(days).0f dnů\n" -"\n" - -#: moon.py:259 -#, python-format -msgid "" -"Next New Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"Další nový měsíc:\n" -"%(date)s za %(days).0f dnů\n" -"\n" - -#: moon.py:260 -#, python-format -msgid "" -"Next Lunar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"Příští zatmění měsíce:\n" -"%(date)s za %(days).0f dnů\n" -"\n" - -#: moon.py:261 -#, python-format -msgid "" -"Next Solar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"Příští zatmění slunce:\n" -"%(date)s za %(days).0f days\n" -"\n" - -#: moon.py:354 -msgid "SNWE" -msgstr "JSZV" - -#: moon.py:357 -msgid "NSEW" -msgstr "SJVZ" - -#: moon.py:409 -msgid "Latitude" -msgstr "Zeměpisná šířka" - -#: moon.py:411 -msgid "Longitude" -msgstr "Zeměpisná délka" - -#: moon.py:522 -msgid "west" -msgstr "západ" - -#: moon.py:524 -msgid "east" -msgstr "východ" - -#: moon.py:527 -msgid "Sunset" -msgstr "Západ slunce" - -#: moon.py:529 -msgid "Sunrise" -msgstr "Východ slunce" - -#: moon.py:545 moon.py:561 -msgid "New Moon" -msgstr "Novoluní" - -#: moon.py:547 -msgid "Waxing Crescent" -msgstr "Dorůstající srpek" - -#: moon.py:549 -msgid "First Quarter" -msgstr "První čtvrťina" - -#: moon.py:551 -msgid "Waxing Gibbous" -msgstr "Dorůstající vypoklý" - -#: moon.py:553 -msgid "Full Moon" -msgstr "Úplněk" - -#: moon.py:555 -msgid "Waning Gibbous" -msgstr "Ubývající vypouklý" - -#: moon.py:557 -msgid "Last Quarter" -msgstr "Poslední čtvrtina" - -#: moon.py:559 -msgid "Waning Crescent" -msgstr "Ubývající srpek" diff --git a/po/da.po b/po/da.po deleted file mode 100644 index a939ecc..0000000 --- a/po/da.po +++ /dev/null @@ -1,233 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-10-03 00:33-0400\n" -"PO-Revision-Date: 2012-10-16 14:13+0200\n" -"Last-Translator: Aputsiaq Niels \n" -"Language-Team: LANGUAGE \n" -"Language: da\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.5\n" - -#. TRANS: "name" option from activity.info file -#: moon.py:68 -msgid "Moon" -msgstr "Måne" - -#. TRANS: "summary" option from activity.info file -#. TRANS: "description" option from activity.info file -msgid "" -"For all those interested in the moon! See the different phases of the moon, " -"latitudes and longtiutdes and impress all by \"predicting\" the next full " -"moon!" -msgstr "" -"For alle som er interesseret i månen! Se forskellige månefaser, bredde- og " -"længdegrader, og gør indtryk på alle ved at \"forudsige\" næste fuldmåne!" - -#. TRANS: Date format for next full/new moon and next solar/lunar eclipse -#: moon.py:60 -#, python-format -msgid "%c" -msgstr "%c" - -#: moon.py:92 moon.py:118 -msgid "Toggle Grid View" -msgstr "Skjul/vis gittervisning" - -#: moon.py:98 moon.py:124 -msgid "Toggle Hemisphere View" -msgstr "Skjul/vis visning af hemisfære" - -#: moon.py:130 -msgid "View" -msgstr "Vis" - -#: moon.py:250 -msgid "" -"Today's Moon Information\n" -"\n" -msgstr "" -"Dagens måne-information\n" -"\n" - -#: moon.py:252 -#, python-format -msgid "" -"Phase:\n" -"%s\n" -"\n" -msgstr "" -"Fase:\n" -"%s\n" -"\n" - -#: moon.py:253 -#, python-format -msgid "" -"Julian Date:\n" -"%.2f (astronomical)\n" -"\n" -msgstr "" -"Juliansk dato:\n" -"%.2f (astronomisk)\n" -"\n" - -#: moon.py:254 -#, python-format -msgid "" -"Age:\n" -"%(days).0f days, %(hours).0f hours, %(minutes).0f minutes\n" -"\n" -msgstr "" -"Alder:\n" -"%(days).0f dage, %(hours).0f timer, %(minutes).0f minutter\n" -"\n" - -#: moon.py:255 -#, python-format -msgid "" -"Lunation:\n" -"%(phase).2f%% through lunation %(lunation)d\n" -"\n" -msgstr "" -"Måneskifte:\n" -"%(phase).2f%% gennem måneskifte %(lunation)d\n" -"\n" - -#: moon.py:256 -#, python-format -msgid "" -"Surface Visibility:\n" -"%.0f%% (estimated)\n" -"\n" -msgstr "" -"Overfladens synlighed:\n" -"%.0f%% (estimeret)\n" -"\n" - -#: moon.py:257 -#, python-format -msgid "" -"Selenographic Terminator Longitude:\n" -"%(deg).1f°%(westOrEast)s (%(riseOrSet)s)\n" -"\n" -msgstr "" -"Selenografisk længdegrad for terminator:\n" -"%(deg).1f°%(westOrEast)s (%(riseOrSet)s)\n" -"\n" - -#: moon.py:258 -#, python-format -msgid "" -"Next Full Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"Næste fuldmåne:\n" -"%(date)s i %(days).0f dage\n" -"\n" - -#: moon.py:259 -#, python-format -msgid "" -"Next New Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"Næste nymåne:\n" -"%(date)s i %(days).0f dage\n" -"\n" - -#: moon.py:260 -#, python-format -msgid "" -"Next Lunar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"Næste måneformørkelse:\n" -"%(date)s i %(days).0f dage\n" -"\n" - -#: moon.py:261 -#, python-format -msgid "" -"Next Solar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"Næste solformørkelse:\n" -"%(date)s i %(days).0f dage\n" -"\n" - -#: moon.py:354 -msgid "SNWE" -msgstr "SNVØ" - -#: moon.py:357 -msgid "NSEW" -msgstr "NSØV" - -#: moon.py:409 -msgid "Latitude" -msgstr "Breddegrad" - -#: moon.py:411 -msgid "Longitude" -msgstr "Længdegrad" - -#: moon.py:522 -msgid "west" -msgstr "vest" - -#: moon.py:524 -msgid "east" -msgstr "øst" - -#: moon.py:527 -msgid "Sunset" -msgstr "Solnedgang" - -#: moon.py:529 -msgid "Sunrise" -msgstr "Solopgang" - -#: moon.py:545 moon.py:561 -msgid "New Moon" -msgstr "Nymåne" - -#: moon.py:547 -msgid "Waxing Crescent" -msgstr "Tiltagende halvmåne" - -#: moon.py:549 -msgid "First Quarter" -msgstr "Første kvartal" - -#: moon.py:551 -msgid "Waxing Gibbous" -msgstr "Tiltagende fuldmåne" - -#: moon.py:553 -msgid "Full Moon" -msgstr "Fuldmåne" - -#: moon.py:555 -msgid "Waning Gibbous" -msgstr "Aftagende fuldmåne" - -#: moon.py:557 -msgid "Last Quarter" -msgstr "Sidste kvartal" - -#: moon.py:559 -msgid "Waning Crescent" -msgstr "Aftagende halvmåne" diff --git a/po/de.po b/po/de.po deleted file mode 100644 index 8f2e47b..0000000 --- a/po/de.po +++ /dev/null @@ -1,324 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-10-03 00:33-0400\n" -"PO-Revision-Date: 2016-04-09 18:23+0000\n" -"Last-Translator: Markus \n" -"Language-Team: LANGUAGE \n" -"Language: de\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.5.1.1\n" -"X-POOTLE-MTIME: 1460226209.000000\n" - -# O.T. -#. TRANS: "name" option from activity.info file -#: moon.py:68 -msgid "Moon" -msgstr "Mond" - -#. TRANS: "summary" option from activity.info file -#. TRANS: "description" option from activity.info file -msgid "" -"For all those interested in the moon! See the different phases of the moon, " -"latitudes and longtiutdes and impress all by \"predicting\" the next full " -"moon!" -msgstr "" -"Für all jene, die sich für den Mond interessieren! Beobachte die " -"verschiedenen Mondphasen, Breiten- und Längengrade und beeindrucke alle " -"damit, dass du den nächsten Vollmond \"vorhersagen\" kannst!" - -#. TRANS: Date format for next full/new moon and next solar/lunar eclipse -#: moon.py:60 -#, python-format -msgid "%c" -msgstr "%c" - -# O.T. -#: moon.py:92 moon.py:118 -msgid "Toggle Grid View" -msgstr "Koordinatengitter ein- oder ausblenden" - -# O.T.: Es wird der Mond aus Sicht der Nordhalbkugel gezeigt. Umschalten bewirkt Ansicht von der Südhalbkugel und umgekehrt. -# (Markus S.) 'Wechsle Hemisphäre'? -# (Markus S.) war 'Umschalten auf Ansicht von anderer Hemisphäre' -#: moon.py:98 moon.py:124 -msgid "Toggle Hemisphere View" -msgstr "Hemisphäre wechseln" - -# O.T. -#: moon.py:130 -msgid "View" -msgstr "Ansicht" - -# O.T. -#: moon.py:250 -msgid "" -"Today's Moon Information\n" -"\n" -msgstr "" -"Informationen über den heutigen Mond\n" -"\n" - -# O.T. -#: moon.py:252 -#, python-format -msgid "" -"Phase:\n" -"%s\n" -"\n" -msgstr "" -"Mondphase:\n" -"%s\n" -"\n" - -# O.T. -#: moon.py:253 -#, python-format -msgid "" -"Julian Date:\n" -"%.2f (astronomical)\n" -"\n" -msgstr "" -"Julianisches Datum:\n" -"%.2f (astronomisch)\n" -"\n" - -# O.T. -#: moon.py:254 -#, python-format -msgid "" -"Age:\n" -"%(days).0f days, %(hours).0f hours, %(minutes).0f minutes\n" -"\n" -msgstr "" -"Mondalter:\n" -"%(days).0f Tage, %(hours).0f Stunden, %(minutes).0f Minuten\n" -"\n" - -# O.T.: Die Lunationen (Mondwechsel) werden in der Astronomie fortlaufend nummeriert. Die Lunation bezeichnet die Zeit von einem Neumond zum nächsten Neumond. 10% der Lunation x ist also ein zunehmender Sichelmond, 50% ist Vollmond, 90% ist ein abnehmender Sichelmond. -#: moon.py:255 -#, python-format -msgid "" -"Lunation:\n" -"%(phase).2f%% through lunation %(lunation)d\n" -"\n" -msgstr "" -"Lunation:\n" -"%(phase).2f%% der Lunation %(lunation)d\n" -"\n" - -# O.T. -#: moon.py:256 -#, python-format -msgid "" -"Surface Visibility:\n" -"%.0f%% (estimated)\n" -"\n" -msgstr "" -"Oberflächensichtbarkeit:\n" -"%.0f%% (geschätzt)\n" -"\n" - -# O.T.: Der Inhalt der Variablen (westOrEast) und (riseOrSet) müsste auch übersetzt werden. -#: moon.py:257 -#, python-format -msgid "" -"Selenographic Terminator Longitude:\n" -"%(deg).1f°%(westOrEast)s (%(riseOrSet)s)\n" -"\n" -msgstr "" -"Selenographische Länge der Schattengrenze:\n" -"%(deg).1f°%(westOrEast)s (%(riseOrSet)s)\n" -"\n" - -# O.T.: Das Datum müsste auch übersetzt werden. -#: moon.py:258 -#, python-format -msgid "" -"Next Full Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"Nächster Vollmond:\n" -"%(date)s in %(days).0f Tagen\n" -"\n" - -# O.T.: Das Datum müsste auch übersetzt werden. -#: moon.py:259 -#, python-format -msgid "" -"Next New Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"Nächster Neumond:\n" -"%(date)s in %(days).0f Tagen\n" -"\n" - -# O.T.: Das Datum müsste auch übersetzt werden. -#: moon.py:260 -#, python-format -msgid "" -"Next Lunar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"Nächste Mondfinsternis:\n" -"%(date)s in %(days).0f Tagen\n" -"\n" - -# O.T.: Das Datum müsste auch übersetzt werden. -#: moon.py:261 -#, python-format -msgid "" -"Next Solar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"Nächste Sonnenfinsternis:\n" -"%(date)s in %(days).0f Tagen\n" -"\n" - -# O.T.: Das sind die Buchstaben für die Himmelsrichtungen Süd, Nord, West und Ost. -#: moon.py:354 -msgid "SNWE" -msgstr "SNWO" - -# O.T.: Das sind die Buchstaben für die Himmelsrichtungen. -#: moon.py:357 -msgid "NSEW" -msgstr "NSOW" - -# O.T. -#: moon.py:409 -msgid "Latitude" -msgstr "Breite" - -# O.T. -#: moon.py:411 -msgid "Longitude" -msgstr "Länge" - -# O.T. -#: moon.py:522 -msgid "west" -msgstr "West" - -# O.T. -#: moon.py:524 -msgid "east" -msgstr "Ost" - -# O.T. -#: moon.py:527 -msgid "Sunset" -msgstr "Sonnenuntergang" - -# O.T. -#: moon.py:529 -msgid "Sunrise" -msgstr "Sonnenaufgang" - -# O.T. -#: moon.py:545 moon.py:561 -msgid "New Moon" -msgstr "Neumond" - -# O.T.: Der Mond vor dem ersten Viertel. -# (Markus S.) 'Zunehmende Mondsichel'? war 'Zunehmender Sichelmond'; ich orientiere mich bei den Mondphasen an 'Grundkurs Astronomie', bsv -#: moon.py:547 -msgid "Waxing Crescent" -msgstr "Zunehmende Sichel" - -# O.T. -#: moon.py:549 -msgid "First Quarter" -msgstr "Erstes Viertel" - -# O.T. Der Mond nach dem ersten Viertel, vor Vollmond. -# (Markus S.) war 'Zunehmender Halbmond', aber das wäre 'Erstes Viertel', vgl. 'GK Astronomie', bsv -#: moon.py:551 -msgid "Waxing Gibbous" -msgstr "Zunehmender Mond" - -# O.T. -#: moon.py:553 -msgid "Full Moon" -msgstr "Vollmond" - -# O.T.: Der Mond nach Vollmond, vor dem letzten Viertel. -# (Markus S.) war 'Abnehmender Halbmond' -#: moon.py:555 -msgid "Waning Gibbous" -msgstr "Abnehmender Mond" - -# O.T. -#: moon.py:557 -msgid "Last Quarter" -msgstr "Letztes Viertel" - -# O.T. -# (Markus S.) 'Abnehmende Mondsichel'? War 'Abnehmender Sichelmond' -#: moon.py:559 -msgid "Waning Crescent" -msgstr "Abnehmende Sichel" diff --git a/po/dz.po b/po/dz.po deleted file mode 100644 index afa7908..0000000 --- a/po/dz.po +++ /dev/null @@ -1,234 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-10-03 00:33-0400\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Translate Toolkit 1.1.1rc4\n" - -#. TRANS: "name" option from activity.info file -#: moon.py:68 -msgid "Moon" -msgstr "" - -#. TRANS: "summary" option from activity.info file -#. TRANS: "description" option from activity.info file -msgid "" -"For all those interested in the moon! See the different phases of the moon, " -"latitudes and longtiutdes and impress all by \"predicting\" the next full " -"moon!" -msgstr "" - -#. TRANS: Date format for next full/new moon and next solar/lunar eclipse -#: moon.py:60 -#, python-format -msgid "%c" -msgstr "" - -#: moon.py:92 moon.py:118 -msgid "Toggle Grid View" -msgstr "" - -#: moon.py:98 moon.py:124 -msgid "Toggle Hemisphere View" -msgstr "" - -#: moon.py:130 -msgid "View" -msgstr "" - -#: moon.py:250 -msgid "" -"Today's Moon Information\n" -"\n" -msgstr "" - -#: moon.py:252 -#, python-format -msgid "" -"Phase:\n" -"%s\n" -"\n" -msgstr "" - -#: moon.py:253 -#, python-format -msgid "" -"Julian Date:\n" -"%.2f (astronomical)\n" -"\n" -msgstr "" - -#: moon.py:254 -#, python-format -msgid "" -"Age:\n" -"%(days).0f days, %(hours).0f hours, %(minutes).0f minutes\n" -"\n" -msgstr "" - -#: moon.py:255 -#, python-format -msgid "" -"Lunation:\n" -"%(phase).2f%% through lunation %(lunation)d\n" -"\n" -msgstr "" - -#: moon.py:256 -#, python-format -msgid "" -"Surface Visibility:\n" -"%.0f%% (estimated)\n" -"\n" -msgstr "" - -#: moon.py:257 -#, python-format -msgid "" -"Selenographic Terminator Longitude:\n" -"%(deg).1f°%(westOrEast)s (%(riseOrSet)s)\n" -"\n" -msgstr "" - -#: moon.py:258 -#, python-format -msgid "" -"Next Full Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:259 -#, python-format -msgid "" -"Next New Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:260 -#, python-format -msgid "" -"Next Lunar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:261 -#, python-format -msgid "" -"Next Solar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:354 -msgid "SNWE" -msgstr "" - -#: moon.py:357 -msgid "NSEW" -msgstr "" - -#: moon.py:409 -msgid "Latitude" -msgstr "" - -#: moon.py:411 -msgid "Longitude" -msgstr "" - -#: moon.py:522 -msgid "west" -msgstr "" - -#: moon.py:524 -msgid "east" -msgstr "" - -#: moon.py:527 -msgid "Sunset" -msgstr "" - -#: moon.py:529 -msgid "Sunrise" -msgstr "" - -#: moon.py:545 moon.py:561 -msgid "New Moon" -msgstr "" - -#: moon.py:547 -msgid "Waxing Crescent" -msgstr "" - -#: moon.py:549 -msgid "First Quarter" -msgstr "" - -#: moon.py:551 -msgid "Waxing Gibbous" -msgstr "" - -#: moon.py:553 -msgid "Full Moon" -msgstr "" - -#: moon.py:555 -msgid "Waning Gibbous" -msgstr "" - -#: moon.py:557 -msgid "Last Quarter" -msgstr "" - -#: moon.py:559 -msgid "Waning Crescent" -msgstr "" diff --git a/po/el.po b/po/el.po deleted file mode 100644 index 7c24a81..0000000 --- a/po/el.po +++ /dev/null @@ -1,266 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-10-03 00:33-0400\n" -"PO-Revision-Date: 2013-08-20 08:55+0200\n" -"Last-Translator: Yannis \n" -"Language-Team: LANGUAGE \n" -"Language: el\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.5\n" - -#. TRANS: "name" option from activity.info file -#: moon.py:68 -msgid "Moon" -msgstr "Σελήνη" - -#. TRANS: "summary" option from activity.info file -#. TRANS: "description" option from activity.info file -msgid "" -"For all those interested in the moon! See the different phases of the moon, " -"latitudes and longtiutdes and impress all by \"predicting\" the next full " -"moon!" -msgstr "" -"Για όλους αυτούς που ενδιαφέρονται για το φεγγάρι! Δείτε τις διαφορετικές " -"φάσεις του φεγγαριού, γεωγραφικά μήκη και πλάτη και εντυπωσιάστε " -"\"προβλέποντας\" την επόμενη πανσέληνο!" - -#. TRANS: Date format for next full/new moon and next solar/lunar eclipse -#: moon.py:60 -#, python-format -msgid "%c" -msgstr "%c" - -#: moon.py:92 moon.py:118 -msgid "Toggle Grid View" -msgstr "Εναλλαγή Προβολής Πλέγματος" - -#: moon.py:98 moon.py:124 -msgid "Toggle Hemisphere View" -msgstr "Εναλλαγή Προβολής Ημισφαιρίου" - -#: moon.py:130 -msgid "View" -msgstr "Προβολή" - -#: moon.py:250 -msgid "" -"Today's Moon Information\n" -"\n" -msgstr "" -"Σημερινές Πληροφορίες για τη Σελήνη\n" -"\n" - -#: moon.py:252 -#, python-format -msgid "" -"Phase:\n" -"%s\n" -"\n" -msgstr "" -"Φάση:\n" -"%s\n" -"\n" - -#: moon.py:253 -#, python-format -msgid "" -"Julian Date:\n" -"%.2f (astronomical)\n" -"\n" -msgstr "" -"Ιουλιανό Ημερολόγιο:\n" -"%.2f (αστρονομικό)\n" -"\n" - -#: moon.py:254 -#, python-format -msgid "" -"Age:\n" -"%(days).0f days, %(hours).0f hours, %(minutes).0f minutes\n" -"\n" -msgstr "" -"Ηλικία:\n" -"%(days).0f μέρες, %(hours).0f ώρες, %(minutes).0f λεπτά\n" -"\n" - -#: moon.py:255 -#, python-format -msgid "" -"Lunation:\n" -"%(phase).2f%% through lunation %(lunation)d\n" -"\n" -msgstr "" -"Πανσέληνος:\n" -"%(phase).2f%% μέχρι την πανσέληνο %(lunation)d\n" -"\n" - -#: moon.py:256 -#, python-format -msgid "" -"Surface Visibility:\n" -"%.0f%% (estimated)\n" -"\n" -msgstr "" -"Ορατότητα Επιφάνειας:\n" -"%.0f%% (κατ' εκτίμηση)\n" -"\n" - -#: moon.py:257 -#, python-format -msgid "" -"Selenographic Terminator Longitude:\n" -"%(deg).1f°%(westOrEast)s (%(riseOrSet)s)\n" -"\n" -msgstr "" -"Σεληνογραφικό Γεωγραφικό Μήκος Συνόρου Φωτός:\n" -"%(deg).1f°%(westOrEast)s (%(riseOrSet)s)\n" -"\n" - -#: moon.py:258 -#, python-format -msgid "" -"Next Full Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"Επόμενη Πανσέληνος:\n" -"%(date)s σε %(days).0f μέρες\n" -"\n" - -#: moon.py:259 -#, python-format -msgid "" -"Next New Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"Επόμενη Νέα Σελήνη:\n" -"%(date)s σε %(days).0f μέρες\n" -"\n" - -#: moon.py:260 -#, python-format -msgid "" -"Next Lunar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"Επόμενη έκλειψη Σελήνης:\n" -"%(date)s in %(days).0f days\n" -"\n" - -#: moon.py:261 -#, python-format -msgid "" -"Next Solar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"Επόμενη έκλειψη Ηλίου:\n" -"%(date)s in %(days).0f days\n" -"\n" - -#: moon.py:354 -msgid "SNWE" -msgstr "ΝΒΔΑ" - -#: moon.py:357 -msgid "NSEW" -msgstr "ΒΝΑΔ" - -#: moon.py:409 -msgid "Latitude" -msgstr "Γεωγραφικό Πλάτος" - -#: moon.py:411 -msgid "Longitude" -msgstr "Γεωγραφικό Μήκος" - -#: moon.py:522 -msgid "west" -msgstr "δύση" - -#: moon.py:524 -msgid "east" -msgstr "ανατολή" - -#: moon.py:527 -msgid "Sunset" -msgstr "Ηλιοβασίλεμα" - -#: moon.py:529 -msgid "Sunrise" -msgstr "Ανατολή ηλίου" - -#: moon.py:545 moon.py:561 -msgid "New Moon" -msgstr "Νέο Φεγγάρι" - -#: moon.py:547 -msgid "Waxing Crescent" -msgstr "Αύξων Μηνίσκος" - -#: moon.py:549 -msgid "First Quarter" -msgstr "Πρώτο Τέταρτο" - -#: moon.py:551 -msgid "Waxing Gibbous" -msgstr "Αύξων Αμφίκυρτος" - -#: moon.py:553 -msgid "Full Moon" -msgstr "Πανσέληνος" - -#: moon.py:555 -msgid "Waning Gibbous" -msgstr "Φθίνων Αμφίκυρτος" - -#: moon.py:557 -msgid "Last Quarter" -msgstr "Τελευταίο Τέταρτο" - -#: moon.py:559 -msgid "Waning Crescent" -msgstr "Φθίνων Μηνίσκος" diff --git a/po/en.po b/po/en.po deleted file mode 100644 index 7bab91d..0000000 --- a/po/en.po +++ /dev/null @@ -1,270 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-10-03 00:33-0400\n" -"PO-Revision-Date: 2012-10-12 23:47+0200\n" -"Last-Translator: Chris \n" -"Language-Team: LANGUAGE \n" -"Language: en\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.5\n" - -#. TRANS: "name" option from activity.info file -#: moon.py:68 -msgid "Moon" -msgstr "Moon" - -#. TRANS: "summary" option from activity.info file -#. TRANS: "description" option from activity.info file -msgid "" -"For all those interested in the moon! See the different phases of the moon, " -"latitudes and longtiutdes and impress all by \"predicting\" the next full " -"moon!" -msgstr "" -"For all those interested in the moon! See the different phases of the moon, " -"latitudes and longtiutdes and impress all by \"predicting\" the next full " -"moon!" - -#. TRANS: Date format for next full/new moon and next solar/lunar eclipse -#: moon.py:60 -#, python-format -msgid "%c" -msgstr "%c" - -#: moon.py:92 moon.py:118 -msgid "Toggle Grid View" -msgstr "Toggle Grid View" - -#: moon.py:98 moon.py:124 -msgid "Toggle Hemisphere View" -msgstr "Toggle Hemisphere View" - -#: moon.py:130 -msgid "View" -msgstr "View" - -#: moon.py:250 -msgid "" -"Today's Moon Information\n" -"\n" -msgstr "" -"Today's Moon Information\n" -"\n" - -#: moon.py:252 -#, python-format -msgid "" -"Phase:\n" -"%s\n" -"\n" -msgstr "" -"Phase:\n" -"%s\n" -"\n" - -#: moon.py:253 -#, python-format -msgid "" -"Julian Date:\n" -"%.2f (astronomical)\n" -"\n" -msgstr "" -"Julian Date:\n" -"%.2f (astronomical)\n" -"\n" - -#: moon.py:254 -#, python-format -msgid "" -"Age:\n" -"%(days).0f days, %(hours).0f hours, %(minutes).0f minutes\n" -"\n" -msgstr "" -"Age:\n" -"%(days).0f days, %(hours).0f hours, %(minutes).0f minutes\n" -"\n" - -#: moon.py:255 -#, python-format -msgid "" -"Lunation:\n" -"%(phase).2f%% through lunation %(lunation)d\n" -"\n" -msgstr "" -"Lunation:\n" -"%(phase).2f%% through lunation %(lunation)d\n" -"\n" - -#: moon.py:256 -#, python-format -msgid "" -"Surface Visibility:\n" -"%.0f%% (estimated)\n" -"\n" -msgstr "" -"Surface Visibility:\n" -"%.0f%% (estimated)\n" -"\n" - -#: moon.py:257 -#, python-format -msgid "" -"Selenographic Terminator Longitude:\n" -"%(deg).1f°%(westOrEast)s (%(riseOrSet)s)\n" -"\n" -msgstr "" -"Selenographic Terminator Longitude:\n" -"%(deg).1f°%(westOrEast)s (%(riseOrSet)s)\n" -"\n" - -#: moon.py:258 -#, python-format -msgid "" -"Next Full Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"Next Full Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" - -#: moon.py:259 -#, python-format -msgid "" -"Next New Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"Next New Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" - -#: moon.py:260 -#, python-format -msgid "" -"Next Lunar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"Next Lunar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" - -#: moon.py:261 -#, python-format -msgid "" -"Next Solar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"Next Solar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" - -#: moon.py:354 -msgid "SNWE" -msgstr "SNWE" - -#: moon.py:357 -msgid "NSEW" -msgstr "NSEW" - -#: moon.py:409 -msgid "Latitude" -msgstr "Latitude" - -#: moon.py:411 -msgid "Longitude" -msgstr "Longitude" - -#: moon.py:522 -msgid "west" -msgstr "west" - -#: moon.py:524 -msgid "east" -msgstr "east" - -#: moon.py:527 -msgid "Sunset" -msgstr "Sunset" - -#: moon.py:529 -msgid "Sunrise" -msgstr "Sunrise" - -#: moon.py:545 moon.py:561 -msgid "New Moon" -msgstr "New Moon" - -#: moon.py:547 -msgid "Waxing Crescent" -msgstr "Waxing Crescent" - -#: moon.py:549 -msgid "First Quarter" -msgstr "First Quarter" - -#: moon.py:551 -msgid "Waxing Gibbous" -msgstr "Waxing Gibbous" - -#: moon.py:553 -msgid "Full Moon" -msgstr "Full Moon" - -#: moon.py:555 -msgid "Waning Gibbous" -msgstr "Waning Gibbous" - -#: moon.py:557 -msgid "Last Quarter" -msgstr "Last Quarter" - -#: moon.py:559 -msgid "Waning Crescent" -msgstr "Waning Crescent" diff --git a/po/en_GB.po b/po/en_GB.po deleted file mode 100644 index 87c6ff5..0000000 --- a/po/en_GB.po +++ /dev/null @@ -1,254 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-10-03 00:33-0400\n" -"PO-Revision-Date: 2012-10-12 23:47+0200\n" -"Last-Translator: Chris \n" -"Language-Team: LANGUAGE \n" -"Language: en_GB\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.5\n" - -#. TRANS: "name" option from activity.info file -#: moon.py:68 -msgid "Moon" -msgstr "Moon" - -#. TRANS: "summary" option from activity.info file -#. TRANS: "description" option from activity.info file -msgid "" -"For all those interested in the moon! See the different phases of the moon, " -"latitudes and longtiutdes and impress all by \"predicting\" the next full " -"moon!" -msgstr "" -"For all those interested in the moon! See the different phases of the moon, " -"latitudes and longtiutdes and impress all by \"predicting\" the next full " -"moon!" - -#. TRANS: Date format for next full/new moon and next solar/lunar eclipse -#: moon.py:60 -#, python-format -msgid "%c" -msgstr "%c" - -#: moon.py:92 moon.py:118 -msgid "Toggle Grid View" -msgstr "Toggle Grid View" - -#: moon.py:98 moon.py:124 -msgid "Toggle Hemisphere View" -msgstr "Toggle Hemisphere View" - -#: moon.py:130 -msgid "View" -msgstr "View" - -#: moon.py:250 -msgid "" -"Today's Moon Information\n" -"\n" -msgstr "" -"Today's Moon Information\n" -"\n" - -#: moon.py:252 -#, python-format -msgid "" -"Phase:\n" -"%s\n" -"\n" -msgstr "" -"Phase:\n" -"%s\n" -"\n" - -#: moon.py:253 -#, python-format -msgid "" -"Julian Date:\n" -"%.2f (astronomical)\n" -"\n" -msgstr "" -"Julian Date:\n" -"%.2f (astronomical)\n" -"\n" - -#: moon.py:254 -#, python-format -msgid "" -"Age:\n" -"%(days).0f days, %(hours).0f hours, %(minutes).0f minutes\n" -"\n" -msgstr "" -"Age:\n" -"%(days).0f days, %(hours).0f hours, %(minutes).0f minutes\n" -"\n" - -#: moon.py:255 -#, python-format -msgid "" -"Lunation:\n" -"%(phase).2f%% through lunation %(lunation)d\n" -"\n" -msgstr "" -"Lunation:\n" -"%(phase).2f%% through lunation %(lunation)d\n" -"\n" - -#: moon.py:256 -#, python-format -msgid "" -"Surface Visibility:\n" -"%.0f%% (estimated)\n" -"\n" -msgstr "" -"Surface Visibility:\n" -"%.0f%% (estimated)\n" -"\n" - -#: moon.py:257 -#, python-format -msgid "" -"Selenographic Terminator Longitude:\n" -"%(deg).1f°%(westOrEast)s (%(riseOrSet)s)\n" -"\n" -msgstr "" -"Selenographic Terminator Longitude:\n" -"%(deg).1f°%(westOrEast)s (%(riseOrSet)s)\n" -"\n" - -#: moon.py:258 -#, python-format -msgid "" -"Next Full Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"Next Full Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" - -#: moon.py:259 -#, python-format -msgid "" -"Next New Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"Next New Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" - -#: moon.py:260 -#, python-format -msgid "" -"Next Lunar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"Next Lunar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" - -#: moon.py:261 -#, python-format -msgid "" -"Next Solar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"Next Solar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" - -#: moon.py:354 -msgid "SNWE" -msgstr "SNWE" - -#: moon.py:357 -msgid "NSEW" -msgstr "NSEW" - -#: moon.py:409 -msgid "Latitude" -msgstr "Latitude" - -#: moon.py:411 -msgid "Longitude" -msgstr "Longitude" - -#: moon.py:522 -msgid "west" -msgstr "west" - -#: moon.py:524 -msgid "east" -msgstr "east" - -#: moon.py:527 -msgid "Sunset" -msgstr "Sunset" - -#: moon.py:529 -msgid "Sunrise" -msgstr "Sunrise" - -#: moon.py:545 moon.py:561 -msgid "New Moon" -msgstr "New Moon" - -#: moon.py:547 -msgid "Waxing Crescent" -msgstr "Waxing Crescent" - -#: moon.py:549 -msgid "First Quarter" -msgstr "First Quarter" - -#: moon.py:551 -msgid "Waxing Gibbous" -msgstr "Waxing Gibbous" - -#: moon.py:553 -msgid "Full Moon" -msgstr "Full Moon" - -#: moon.py:555 -msgid "Waning Gibbous" -msgstr "Waning Gibbous" - -#: moon.py:557 -msgid "Last Quarter" -msgstr "Last Quarter" - -#: moon.py:559 -msgid "Waning Crescent" -msgstr "Waning Crescent" diff --git a/po/en_US.po b/po/en_US.po deleted file mode 100644 index 08475f6..0000000 --- a/po/en_US.po +++ /dev/null @@ -1,258 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-10-03 00:33-0400\n" -"PO-Revision-Date: 2012-10-12 23:47+0200\n" -"Last-Translator: Chris \n" -"Language-Team: LANGUAGE \n" -"Language: en_US\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.5\n" - -#. TRANS: "name" option from activity.info file -#: moon.py:68 -msgid "Moon" -msgstr "Moon" - -#. TRANS: "summary" option from activity.info file -#. TRANS: "description" option from activity.info file -msgid "" -"For all those interested in the moon! See the different phases of the moon, " -"latitudes and longtiutdes and impress all by \"predicting\" the next full " -"moon!" -msgstr "" -"For all those interested in the moon! See the different phases of the moon, " -"latitudes and longtiutdes and impress all by \"predicting\" the next full " -"moon!" - -#. TRANS: Date format for next full/new moon and next solar/lunar eclipse -#: moon.py:60 -#, python-format -msgid "%c" -msgstr "%c" - -#: moon.py:92 moon.py:118 -msgid "Toggle Grid View" -msgstr "Toggle Grid View" - -#: moon.py:98 moon.py:124 -msgid "Toggle Hemisphere View" -msgstr "Toggle Hemisphere View" - -#: moon.py:130 -msgid "View" -msgstr "View" - -#: moon.py:250 -msgid "" -"Today's Moon Information\n" -"\n" -msgstr "" -"Today's Moon Information\n" -"\n" - -#: moon.py:252 -#, python-format -msgid "" -"Phase:\n" -"%s\n" -"\n" -msgstr "" -"Phase:\n" -"%s\n" -"\n" - -#: moon.py:253 -#, python-format -msgid "" -"Julian Date:\n" -"%.2f (astronomical)\n" -"\n" -msgstr "" -"Julian Date:\n" -"%.2f (astronomical)\n" -"\n" - -#: moon.py:254 -#, python-format -msgid "" -"Age:\n" -"%(days).0f days, %(hours).0f hours, %(minutes).0f minutes\n" -"\n" -msgstr "" -"Age:\n" -"%(days).0f days, %(hours).0f hours, %(minutes).0f minutes\n" -"\n" - -#: moon.py:255 -#, python-format -msgid "" -"Lunation:\n" -"%(phase).2f%% through lunation %(lunation)d\n" -"\n" -msgstr "" -"Lunation:\n" -"%(phase).2f%% through lunation %(lunation)d\n" -"\n" - -#: moon.py:256 -#, python-format -msgid "" -"Surface Visibility:\n" -"%.0f%% (estimated)\n" -"\n" -msgstr "" -"Surface Visibility:\n" -"%.0f%% (estimated)\n" -"\n" - -#: moon.py:257 -#, python-format -msgid "" -"Selenographic Terminator Longitude:\n" -"%(deg).1f°%(westOrEast)s (%(riseOrSet)s)\n" -"\n" -msgstr "" -"Selenographic Terminator Longitude:\n" -"%(deg).1f°%(westOrEast)s (%(riseOrSet)s)\n" -"\n" - -#: moon.py:258 -#, python-format -msgid "" -"Next Full Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"Next Full Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" - -#: moon.py:259 -#, python-format -msgid "" -"Next New Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"Next New Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" - -#: moon.py:260 -#, python-format -msgid "" -"Next Lunar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"Next Lunar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" - -#: moon.py:261 -#, python-format -msgid "" -"Next Solar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"Next Solar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" - -#: moon.py:354 -msgid "SNWE" -msgstr "SNWE" - -#: moon.py:357 -msgid "NSEW" -msgstr "NSEW" - -#: moon.py:409 -msgid "Latitude" -msgstr "Latitude" - -#: moon.py:411 -msgid "Longitude" -msgstr "Longitude" - -#: moon.py:522 -msgid "west" -msgstr "west" - -#: moon.py:524 -msgid "east" -msgstr "east" - -#: moon.py:527 -msgid "Sunset" -msgstr "Sunset" - -#: moon.py:529 -msgid "Sunrise" -msgstr "Sunrise" - -#: moon.py:545 moon.py:561 -msgid "New Moon" -msgstr "New Moon" - -#: moon.py:547 -msgid "Waxing Crescent" -msgstr "Waxing Crescent" - -#: moon.py:549 -msgid "First Quarter" -msgstr "First Quarter" - -#: moon.py:551 -msgid "Waxing Gibbous" -msgstr "Waxing Gibbous" - -#: moon.py:553 -msgid "Full Moon" -msgstr "Full Moon" - -#: moon.py:555 -msgid "Waning Gibbous" -msgstr "Waning Gibbous" - -#: moon.py:557 -msgid "Last Quarter" -msgstr "Last Quarter" - -#: moon.py:559 -msgid "Waning Crescent" -msgstr "Waning Crescent" diff --git a/po/es.po b/po/es.po index 870ebc7..39bf614 100644 --- a/po/es.po +++ b/po/es.po @@ -1,386 +1,200 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# Moon XO's Activity translation -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# Gabriel Menini , 2008. +#. extracted from ../data.ini +#, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-10-03 00:33-0400\n" -"PO-Revision-Date: 2012-10-13 05:13+0200\n" -"Last-Translator: AlanJAS \n" -"Language-Team: Spanish \n" -"Language: es\n" +"POT-Creation-Date: Tue Mar 06 2018 22:20:09 GMT+0100 (CET)\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.5\n" +"X-Generator: ini2po 0.0.1\n" -#. TRANS: "name" option from activity.info file -#: moon.py:68 -msgid "Moon" -msgstr "Luna" - -#. TRANS: "summary" option from activity.info file -#. TRANS: "description" option from activity.info file -msgid "" -"For all those interested in the moon! See the different phases of the moon, " -"latitudes and longtiutdes and impress all by \"predicting\" the next full " -"moon!" -msgstr "" -"¡Para todos aquellos interesados ​​en la luna! Ve las diferentes fases de la " -"luna, latitudes y longtiudes e impresiona a todos en \"predecir\" la próxima " -"luna llena." - -#. TRANS: Date format for next full/new moon and next solar/lunar eclipse -#: moon.py:60 -#, python-format -msgid "%c" -msgstr "%c" - -#: moon.py:92 moon.py:118 -msgid "Toggle Grid View" -msgstr "Cambiar a vista grilla" - -#: moon.py:98 moon.py:124 -msgid "Toggle Hemisphere View" -msgstr "Cambiar a vista hemisferio" - -#: moon.py:130 -msgid "View" -msgstr "Ver" - -#: moon.py:250 -msgid "" -"Today's Moon Information\n" -"\n" -msgstr "" -"Información de la Luna para hoy\n" -"\n" - -#: moon.py:252 -#, python-format -msgid "" -"Phase:\n" -"%s\n" -"\n" -msgstr "" -"Fase:\n" -"%s\n" -"\n" - -#: moon.py:253 -#, python-format -msgid "" -"Julian Date:\n" -"%.2f (astronomical)\n" -"\n" -msgstr "" -"Fecha Juliana:\n" -"%.2f (astronómical)\n" -"\n" - -#: moon.py:254 -#, python-format -msgid "" -"Age:\n" -"%(days).0f days, %(hours).0f hours, %(minutes).0f minutes\n" -"\n" -msgstr "" -"Edad:\n" -"%(days).0f días, %(hours).0f horas, %(minutes).0f minutos\n" -"\n" - -#: moon.py:255 -#, python-format -msgid "" -"Lunation:\n" -"%(phase).2f%% through lunation %(lunation)d\n" -"\n" -msgstr "" -"Lunación:\n" -"%(phase).2f%% hasta la lunación %(lunation)d\n" -"\n" - -#: moon.py:256 -#, python-format -msgid "" -"Surface Visibility:\n" -"%.0f%% (estimated)\n" -"\n" -msgstr "" -"Visibilidad de la superficie:\n" -"%.0f%% (estimada)\n" -"\n" - -#: moon.py:257 -#, python-format -msgid "" -"Selenographic Terminator Longitude:\n" -"%(deg).1f°%(westOrEast)s (%(riseOrSet)s)\n" -"\n" -msgstr "" -"Longitud del terminador selenográfico:\n" -"%(deg).1f°%(westOrEast)s (%(riseOrSet)s)\n" -"\n" - -#: moon.py:258 -#, python-format -msgid "" -"Next Full Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"Próxima Luna Llena:\n" -"%(date)s en %(days).0f días\n" -"\n" +#: phase-0 +msgctxt "phase-0" +msgid "New Moon" +msgstr "Luna Nueva" -#: moon.py:259 -#, python-format -msgid "" -"Next New Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"Próxima Luna Nueva:\n" -"%(date)s en %(days).0f días\n" -"\n" +#: phase-1 +msgctxt "phase-1" +msgid "Waxing Crescent" +msgstr "Luna Nueva Visible" -#: moon.py:260 -#, python-format -msgid "" -"Next Lunar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"Próximo eclipse lunar:\n" -"%(date)s en %(days).0f días\n" -"\n" +#: phase-2 +msgctxt "phase-2" +msgid "First Quarter" +msgstr "Cuarto Creciente" -#: moon.py:261 -#, python-format -msgid "" -"Next Solar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"Próximo eclipse solar:\n" -"%(date)s en %(days).0f días\n" -"\n" +#: phase-3 +msgctxt "phase-3" +msgid "Waxing Gibbous" +msgstr "Luna Gibada Creciente" -#: moon.py:354 -msgid "SNWE" -msgstr "SNWE" +#: phase-4 +msgctxt "phase-4" +msgid "Full Moon" +msgstr "Luna Llena" -#: moon.py:357 -msgid "NSEW" -msgstr "NSEW" +#: phase-5 +msgctxt "phase-5" +msgid "Waning Gibbous" +msgstr "Luna Gibada Menguante" -#: moon.py:409 -msgid "Latitude" -msgstr "Latitud" +#: phase-6 +msgctxt "phase-6" +msgid "Last Quarter" +msgstr "Cuarto Menguante" -#: moon.py:411 -msgid "Longitude" -msgstr "Longitud" +#: phase-7 +msgctxt "phase-7" +msgid "Waning Crescent" +msgstr "Luna Menguante" -#: moon.py:522 +#: moonInfo +msgctxt "moonInfo" +msgid "Today's Moon Information" +msgstr "Información de la Luna para hoy" + +#: phase +msgctxt "phase" +msgid "Phase" +msgstr "Fase" + +#: julian +msgctxt "julian" +msgid "Julian Date" +msgstr "Fecha Juliana" + +#: age +msgctxt "age" +msgid "Age" +msgstr "Edad" + +#: lunation +msgctxt "lunation" +msgid "Lunation" +msgstr "Lunation" + +#: visibility +msgctxt "visibility" +msgid "Surface Visibility" +msgstr "Visibilidad de la superficie" + +#: seleno +msgctxt "seleno" +msgid "Selenographic Terminator Longitude" +msgstr "Longitud del terminador selenográfico" + +#: full +msgctxt "full" +msgid "Next Full Moon" +msgstr "Próxima Luna Llena" + +#: new +msgctxt "new" +msgid "Next New Moon" +msgstr "Próxima Luna Nueva" + +#: lunar +msgctxt "lunar" +msgid "Next Lunar eclipse" +msgstr "Próximo eclipse lunar" + +#: solar +msgctxt "solar" +msgid "Next Solar eclipse" +msgstr "Próximo eclipse solar" + +#: minutes +msgctxt "minutes" +msgid "minutes" +msgstr "minutos" + +#: hours +msgctxt "hours" +msgid "hours" +msgstr "días" + +#: days +msgctxt "days" +msgid "days" +msgstr "días" + +#: astro +msgctxt "astro" +msgid "(astronomical)" +msgstr "(astronómical)" + +#: thru +msgctxt "thru" +msgid "through lunation" +msgstr "hasta la lunación" + +#: in +msgctxt "in" +msgid "in" +msgstr "en" + +#: estimated +msgctxt "estimated" +msgid "(estimated)" +msgstr "(estimada)" + +#: west +msgctxt "west" msgid "west" msgstr "oeste" -#: moon.py:524 +#: east +msgctxt "east" msgid "east" msgstr "este" -#: moon.py:527 +#: Sunset +msgctxt "Sunset" msgid "Sunset" msgstr "Se pone" -#: moon.py:529 +#: Sunrise +msgctxt "Sunrise" msgid "Sunrise" msgstr "Sale" -#: moon.py:545 moon.py:561 -msgid "New Moon" -msgstr "Luna Nueva" +#: SNWE +msgctxt "SNWE" +msgid "SNWE" +msgstr "SNOE" -#: moon.py:547 -msgid "Waxing Crescent" -msgstr "Luna Nueva Visible" +#: NSEW +msgctxt "NSEW" +msgid "NSEW" +msgstr "NSEO" -#: moon.py:549 -msgid "First Quarter" -msgstr "Cuarto Creciente" +#: Latitude +msgctxt "Latitude" +msgid "Latitude" +msgstr "Latitud" -#: moon.py:551 -msgid "Waxing Gibbous" -msgstr "Luna Gibada Creciente" +#: Longitude +msgctxt "Longitude" +msgid "Longitude" +msgstr "Longitud" -#: moon.py:553 -msgid "Full Moon" -msgstr "Luna Llena" +#: ToggleGrid +msgctxt "ToggleGrid" +msgid "Toggle Grid View" +msgstr "Cambiar a vista grilla" -#: moon.py:555 -msgid "Waning Gibbous" -msgstr "Luna Gibada Menguante" +#: ToggleHemisphere +msgctxt "ToggleHemisphere" +msgid "Toggle Hemisphere View" +msgstr "Cambiar a vista hemisferio" -#: moon.py:557 -msgid "Last Quarter" -msgstr "Cuarto Menguante" +#: SaveImage +msgctxt "SaveImage" +msgid "Save As Image" +msgstr "Guardarla como una imagen" -#: moon.py:559 -msgid "Waning Crescent" -msgstr "Luna Menguante" diff --git a/po/fa.po b/po/fa.po deleted file mode 100644 index 06bb97a..0000000 --- a/po/fa.po +++ /dev/null @@ -1,216 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-10-03 00:33-0400\n" -"PO-Revision-Date: 2017-03-18 22:01+0000\n" -"Last-Translator: Chris \n" -"Language-Team: LANGUAGE \n" -"Language: fa\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n > 1);\n" -"X-Generator: Pootle 2.5.1.1\n" -"X-POOTLE-MTIME: 1489874500.000000\n" - -#. TRANS: "name" option from activity.info file -#: moon.py:68 -msgid "Moon" -msgstr "ماه" - -#. TRANS: "summary" option from activity.info file -#. TRANS: "description" option from activity.info file -msgid "" -"For all those interested in the moon! See the different phases of the moon, " -"latitudes and longitudes and impress all by \"predicting\" the next full " -"moon!" -msgstr "" -"برای تمام کسانی که به ماه علاقه دارند! مراحل مختلف ماه، عرض و طول جغرافیایی " -"را مشاهده کنید و تحت تاثیر پیش بینی ماه کامل قرار بگیرید." - -#. TRANS: Date format for next full/new moon and next solar/lunar eclipse -#: moon.py:60 -#, python-format -msgid "%c" -msgstr "%c" - -#: moon.py:92 moon.py:118 -msgid "Toggle Grid View" -msgstr "نمای شبکه ضامن (لولا)" - -#: moon.py:98 moon.py:124 -msgid "Toggle Hemisphere View" -msgstr "نمای نیم کره ضامن (لولا)" - -#: moon.py:130 -msgid "View" -msgstr "چشم انداز" - -#: moon.py:250 -msgid "" -"Today's Moon Information\n" -"\n" -msgstr "" -"نما\n" -"\n" - -#: moon.py:252 -#, python-format -#, fuzzy, python-format -msgid "" -"Phase:\n" -"%s\n" -"\n" -msgstr "" -"فاز:\n" -"s%\n" - -#: moon.py:253 -#, python-format -#, fuzzy, python-format -msgid "" -"Julian Date:\n" -"%.2f (astronomical)\n" -"\n" -msgstr "تاریخ جولیان (علم نجوم)" - -#: moon.py:254 -#, python-format -#, fuzzy, python-format -msgid "" -"Age:\n" -"%(days).0f days, %(hours).0f hours, %(minutes).0f minutes\n" -"\n" -msgstr "دوره: روزها، ساعت ها، دقایق" - -#: moon.py:255 -#, python-format -#, fuzzy, python-format -msgid "" -"Lunation:\n" -"%(phase).2f%% through lunation %(lunation)d\n" -"\n" -msgstr "یک ماه قمری: فاز در طول یک ماه قمری" - -#: moon.py:256 -#, python-format -#, fuzzy, python-format -msgid "" -"Surface Visibility:\n" -"%.0f%% (estimated)\n" -"\n" -msgstr "درصد دید سطحی (تقریبی)" - -#: moon.py:257 -#, python-format -#, fuzzy, python-format -msgid "" -"Selenographic Terminator Longitude:\n" -"%(deg).1f°%(westOrEast)s (%(riseOrSet)s)\n" -"\n" -msgstr "طول جغرافیایی پایانی سلنوگرافیک (درجه). ۱٪ (غرب یا شرق)، (طلوع یا غروب)" - -#: moon.py:258 -#, python-format -#, fuzzy, python-format -msgid "" -"Next Full Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "ماه کامل بعدی: ٪(تاریخ) در ٪ (روز)" - -#: moon.py:259 -#, python-format -#, fuzzy, python-format -msgid "" -"Next New Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "ماه جدید بعدی: درصد (تاریخ) در درصد (روزها)" - -#: moon.py:260 -#, python-format -#, fuzzy, python-format -msgid "" -"Next Lunar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "ماه گرفتگی بعدی" - -#: moon.py:261 -#, python-format -#, fuzzy, python-format -msgid "" -"Next Solar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "خورشید گرفتگی بعدی (کسوف)" - -#: moon.py:354 -msgid "SNWE" -msgstr "جنوب شمال غرب شرق" - -#: moon.py:357 -msgid "NSEW" -msgstr "شمال جنوب شرق غرب" - -#: moon.py:409 -msgid "Latitude" -msgstr "عرض جغرافیایی" - -#: moon.py:411 -msgid "Longitude" -msgstr "طول جغرافیایی" - -#: moon.py:522 -msgid "west" -msgstr "غرب" - -#: moon.py:524 -msgid "east" -msgstr "شرق" - -#: moon.py:527 -msgid "Sunset" -msgstr "غروب" - -#: moon.py:529 -msgid "Sunrise" -msgstr "طلوع خورشید" - -#: moon.py:545 moon.py:561 -msgid "New Moon" -msgstr "ماه نو" - -#: moon.py:547 -msgid "Waxing Crescent" -msgstr "ضبط هلال ماه" - -#: moon.py:549 -msgid "First Quarter" -msgstr "سه ماهه اول" - -#: moon.py:551 -msgid "Waxing Gibbous" -msgstr "مرحله ای از ماه بین فاز یک چهارم و ماه کامل" - -#: moon.py:553 -msgid "Full Moon" -msgstr "ماه کامل" - -#: moon.py:555 -msgid "Waning Gibbous" -msgstr "مرحله ای از ماه بین ماه کامل و ماه سه چهارم " - -#: moon.py:557 -msgid "Last Quarter" -msgstr "سه ماهه آخر" - -#: moon.py:559 -msgid "Waning Crescent" -msgstr "هلال ماه آخر ماه" diff --git a/po/fa_AF.po b/po/fa_AF.po deleted file mode 100644 index 8d6e8b4..0000000 --- a/po/fa_AF.po +++ /dev/null @@ -1,264 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -msgid "" -msgstr "" -"Project-Id-Version: Honey\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-10-03 00:33-0400\n" -"PO-Revision-Date: 2012-10-19 09:21+0200\n" -"Last-Translator: Chris \n" -"Language-Team: Farsi AF \n" -"Language: fa_AF\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Pootle 2.0.5\n" - -#. TRANS: "name" option from activity.info file -#: moon.py:68 -msgid "Moon" -msgstr "مهتاب" - -#. TRANS: "summary" option from activity.info file -#. TRANS: "description" option from activity.info file -msgid "" -"For all those interested in the moon! See the different phases of the moon, " -"latitudes and longtiutdes and impress all by \"predicting\" the next full " -"moon!" -msgstr "" - -#. TRANS: Date format for next full/new moon and next solar/lunar eclipse -#: moon.py:60 -#, python-format -msgid "%c" -msgstr "" - -#: moon.py:92 moon.py:118 -msgid "Toggle Grid View" -msgstr "نمایش ضامنی نامنظم" - -#: moon.py:98 moon.py:124 -msgid "Toggle Hemisphere View" -msgstr "نمایش نیمکره ضامنی" - -#: moon.py:130 -msgid "View" -msgstr "نمایش" - -#: moon.py:250 -msgid "" -"Today's Moon Information\n" -"\n" -msgstr "" -"امروزمعلومات مهتاب\n" -"\n" - -#: moon.py:252 -#, python-format -msgid "" -"Phase:\n" -"%s\n" -"\n" -msgstr "" -"مرحله یا فاز\n" -"%s\n" -"\n" - -#: moon.py:253 -#, python-format -msgid "" -"Julian Date:\n" -"%.2f (astronomical)\n" -"\n" -msgstr "" -"تاریخ جولیوسی نجومی\n" -"%.2f (نجومی)\n" -"\n" - -#: moon.py:254 -#, python-format -#, python-format, fuzzy -msgid "" -"Age:\n" -"%(days).0f days, %(hours).0f hours, %(minutes).0f minutes\n" -"\n" -msgstr "" -"عمر:\n" -"%(days).از روزها, %(hours).از ساعت ها, %(minutes).از دقیقه ها\n" -"\n" - -#: moon.py:255 -#, python-format -msgid "" -"Lunation:\n" -"%(phase).2f%% through lunation %(lunation)d\n" -"\n" -msgstr "" -"یک ماه قمری:\n" -"%(phase).2f%% از طریق حرکت قمری %(lunation)d\n" -"\n" - -#: moon.py:256 -#, python-format -msgid "" -"Surface Visibility:\n" -"%.0f%% (estimated)\n" -"\n" -msgstr "" -"رویت سطح از تخمین\n" -"%.0f%% (تخمینی)\n" -"\n" - -#: moon.py:257 -#, python-format -msgid "" -"Selenographic Terminator Longitude:\n" -"%(deg).1f°%(westOrEast)s (%(riseOrSet)s)\n" -"\n" -msgstr "" -"فسخ کننده طول جغرافیایی سیلونوگرافیک:شرق یا غرب طلوع یا غروب\n" -"%(deg).1f°%(westOrEast)s (%(riseOrSet)s)\n" -"\n" - -#: moon.py:258 -#, python-format -#, python-format, fuzzy -msgid "" -"Next Full Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"مهتاب کامل بعدی:\n" -"%(date)s در %(days).از روزها\n" -"\n" - -#: moon.py:259 -#, python-format -#, python-format, fuzzy -msgid "" -"Next New Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"مهتاب جدید بعدی:\n" -"%(date)s در %(days).از روزها\n" -"\n" - -#: moon.py:260 -#, python-format -#, python-format, fuzzy -msgid "" -"Next Lunar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"مهتاب گرفتگی بعدی :\n" -"%(date)s در %(days).از روزها\n" -"\n" - -#: moon.py:261 -#, python-format -#, python-format, fuzzy -msgid "" -"Next Solar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"آفتاب گرفتگی بعدی:\n" -"%(date)s در %(days).از اروزها\n" -"\n" - -#: moon.py:354 -msgid "SNWE" -msgstr "SNWE" - -#: moon.py:357 -msgid "NSEW" -msgstr "NSEW" - -#: moon.py:409 -msgid "Latitude" -msgstr "عرض جغرافیایی" - -#: moon.py:411 -msgid "Longitude" -msgstr "طول جغرافیایی" - -#: moon.py:522 -msgid "west" -msgstr "غرب" - -#: moon.py:524 -msgid "east" -msgstr "شرق" - -#: moon.py:527 -msgid "Sunset" -msgstr "غروب آفتاب" - -#: moon.py:529 -msgid "Sunrise" -msgstr "طلوع آفتاب" - -#: moon.py:545 moon.py:561 -msgid "New Moon" -msgstr "مهتاب جدید" - -#: moon.py:547 -msgid "Waxing Crescent" -msgstr "هلالی شکل" - -#: moon.py:549 -msgid "First Quarter" -msgstr "مربع اول" - -#: moon.py:551 -msgid "Waxing Gibbous" -msgstr "محدب مومی" - -#: moon.py:553 -msgid "Full Moon" -msgstr "مهتاب کامل" - -#: moon.py:555 -msgid "Waning Gibbous" -msgstr "کم رنگ شدن محدب" - -#: moon.py:557 -msgid "Last Quarter" -msgstr "مربع آخری" - -#: moon.py:559 -msgid "Waning Crescent" -msgstr "کم رنگ شدن هلال ماه" diff --git a/po/ff.po b/po/ff.po deleted file mode 100644 index 0b4ee69..0000000 --- a/po/ff.po +++ /dev/null @@ -1,198 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-10-03 00:33-0400\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"Language: ff\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Translate Toolkit 1.11.0\n" - -#. TRANS: "name" option from activity.info file -#: moon.py:68 -msgid "Moon" -msgstr "" - -#. TRANS: "summary" option from activity.info file -#. TRANS: "description" option from activity.info file -msgid "" -"For all those interested in the moon! See the different phases of the moon, " -"latitudes and longitudes and impress all by \"predicting\" the next full " -"moon!" -msgstr "" - -#. TRANS: Date format for next full/new moon and next solar/lunar eclipse -#: moon.py:60 -#, python-format -msgid "%c" -msgstr "" - -#: moon.py:92 moon.py:118 -msgid "Toggle Grid View" -msgstr "" - -#: moon.py:98 moon.py:124 -msgid "Toggle Hemisphere View" -msgstr "" - -#: moon.py:130 -msgid "View" -msgstr "" - -#: moon.py:250 -msgid "" -"Today's Moon Information\n" -"\n" -msgstr "" - -#: moon.py:252 -#, python-format -msgid "" -"Phase:\n" -"%s\n" -"\n" -msgstr "" - -#: moon.py:253 -#, python-format -msgid "" -"Julian Date:\n" -"%.2f (astronomical)\n" -"\n" -msgstr "" - -#: moon.py:254 -#, python-format -msgid "" -"Age:\n" -"%(days).0f days, %(hours).0f hours, %(minutes).0f minutes\n" -"\n" -msgstr "" - -#: moon.py:255 -#, python-format -msgid "" -"Lunation:\n" -"%(phase).2f%% through lunation %(lunation)d\n" -"\n" -msgstr "" - -#: moon.py:256 -#, python-format -msgid "" -"Surface Visibility:\n" -"%.0f%% (estimated)\n" -"\n" -msgstr "" - -#: moon.py:257 -#, python-format -msgid "" -"Selenographic Terminator Longitude:\n" -"%(deg).1f°%(westOrEast)s (%(riseOrSet)s)\n" -"\n" -msgstr "" - -#: moon.py:258 -#, python-format -msgid "" -"Next Full Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:259 -#, python-format -msgid "" -"Next New Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:260 -#, python-format -msgid "" -"Next Lunar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:261 -#, python-format -msgid "" -"Next Solar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:354 -msgid "SNWE" -msgstr "" - -#: moon.py:357 -msgid "NSEW" -msgstr "" - -#: moon.py:409 -msgid "Latitude" -msgstr "" - -#: moon.py:411 -msgid "Longitude" -msgstr "" - -#: moon.py:522 -msgid "west" -msgstr "" - -#: moon.py:524 -msgid "east" -msgstr "" - -#: moon.py:527 -msgid "Sunset" -msgstr "" - -#: moon.py:529 -msgid "Sunrise" -msgstr "" - -#: moon.py:545 moon.py:561 -msgid "New Moon" -msgstr "" - -#: moon.py:547 -msgid "Waxing Crescent" -msgstr "" - -#: moon.py:549 -msgid "First Quarter" -msgstr "" - -#: moon.py:551 -msgid "Waxing Gibbous" -msgstr "" - -#: moon.py:553 -msgid "Full Moon" -msgstr "" - -#: moon.py:555 -msgid "Waning Gibbous" -msgstr "" - -#: moon.py:557 -msgid "Last Quarter" -msgstr "" - -#: moon.py:559 -msgid "Waning Crescent" -msgstr "" diff --git a/po/fi.po b/po/fi.po deleted file mode 100644 index b3d104f..0000000 --- a/po/fi.po +++ /dev/null @@ -1,202 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-10-03 00:33-0400\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Translate Toolkit 1.6.0\n" - -#. TRANS: "name" option from activity.info file -#: moon.py:68 -msgid "Moon" -msgstr "" - -#. TRANS: "summary" option from activity.info file -#. TRANS: "description" option from activity.info file -msgid "" -"For all those interested in the moon! See the different phases of the moon, " -"latitudes and longtiutdes and impress all by \"predicting\" the next full " -"moon!" -msgstr "" - -#. TRANS: Date format for next full/new moon and next solar/lunar eclipse -#: moon.py:60 -#, python-format -msgid "%c" -msgstr "" - -#: moon.py:92 moon.py:118 -msgid "Toggle Grid View" -msgstr "" - -#: moon.py:98 moon.py:124 -msgid "Toggle Hemisphere View" -msgstr "" - -#: moon.py:130 -msgid "View" -msgstr "" - -#: moon.py:250 -msgid "" -"Today's Moon Information\n" -"\n" -msgstr "" - -#: moon.py:252 -#, python-format -msgid "" -"Phase:\n" -"%s\n" -"\n" -msgstr "" - -#: moon.py:253 -#, python-format -msgid "" -"Julian Date:\n" -"%.2f (astronomical)\n" -"\n" -msgstr "" - -#: moon.py:254 -#, python-format -msgid "" -"Age:\n" -"%(days).0f days, %(hours).0f hours, %(minutes).0f minutes\n" -"\n" -msgstr "" - -#: moon.py:255 -#, python-format -msgid "" -"Lunation:\n" -"%(phase).2f%% through lunation %(lunation)d\n" -"\n" -msgstr "" - -#: moon.py:256 -#, python-format -msgid "" -"Surface Visibility:\n" -"%.0f%% (estimated)\n" -"\n" -msgstr "" - -#: moon.py:257 -#, python-format -msgid "" -"Selenographic Terminator Longitude:\n" -"%(deg).1f°%(westOrEast)s (%(riseOrSet)s)\n" -"\n" -msgstr "" - -#: moon.py:258 -#, python-format -msgid "" -"Next Full Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:259 -#, python-format -msgid "" -"Next New Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:260 -#, python-format -msgid "" -"Next Lunar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:261 -#, python-format -msgid "" -"Next Solar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:354 -msgid "SNWE" -msgstr "" - -#: moon.py:357 -msgid "NSEW" -msgstr "" - -#: moon.py:409 -msgid "Latitude" -msgstr "" - -#: moon.py:411 -msgid "Longitude" -msgstr "" - -#: moon.py:522 -msgid "west" -msgstr "" - -#: moon.py:524 -msgid "east" -msgstr "" - -#: moon.py:527 -msgid "Sunset" -msgstr "" - -#: moon.py:529 -msgid "Sunrise" -msgstr "" - -#: moon.py:545 moon.py:561 -msgid "New Moon" -msgstr "" - -#: moon.py:547 -msgid "Waxing Crescent" -msgstr "" - -#: moon.py:549 -msgid "First Quarter" -msgstr "" - -#: moon.py:551 -msgid "Waxing Gibbous" -msgstr "" - -#: moon.py:553 -msgid "Full Moon" -msgstr "" - -#: moon.py:555 -msgid "Waning Gibbous" -msgstr "" - -#: moon.py:557 -msgid "Last Quarter" -msgstr "" - -#: moon.py:559 -msgid "Waning Crescent" -msgstr "" diff --git a/po/fil.po b/po/fil.po deleted file mode 100644 index 94dcf9c..0000000 --- a/po/fil.po +++ /dev/null @@ -1,226 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-10-03 00:33-0400\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Translate Toolkit 1.3.0\n" - -#. TRANS: "name" option from activity.info file -#: moon.py:68 -msgid "Moon" -msgstr "" - -#. TRANS: "summary" option from activity.info file -#. TRANS: "description" option from activity.info file -msgid "" -"For all those interested in the moon! See the different phases of the moon, " -"latitudes and longtiutdes and impress all by \"predicting\" the next full " -"moon!" -msgstr "" - -#. TRANS: Date format for next full/new moon and next solar/lunar eclipse -#: moon.py:60 -#, python-format -msgid "%c" -msgstr "" - -#: moon.py:92 moon.py:118 -msgid "Toggle Grid View" -msgstr "" - -#: moon.py:98 moon.py:124 -msgid "Toggle Hemisphere View" -msgstr "" - -#: moon.py:130 -msgid "View" -msgstr "" - -#: moon.py:250 -msgid "" -"Today's Moon Information\n" -"\n" -msgstr "" - -#: moon.py:252 -#, python-format -msgid "" -"Phase:\n" -"%s\n" -"\n" -msgstr "" - -#: moon.py:253 -#, python-format -msgid "" -"Julian Date:\n" -"%.2f (astronomical)\n" -"\n" -msgstr "" - -#: moon.py:254 -#, python-format -msgid "" -"Age:\n" -"%(days).0f days, %(hours).0f hours, %(minutes).0f minutes\n" -"\n" -msgstr "" - -#: moon.py:255 -#, python-format -msgid "" -"Lunation:\n" -"%(phase).2f%% through lunation %(lunation)d\n" -"\n" -msgstr "" - -#: moon.py:256 -#, python-format -msgid "" -"Surface Visibility:\n" -"%.0f%% (estimated)\n" -"\n" -msgstr "" - -#: moon.py:257 -#, python-format -msgid "" -"Selenographic Terminator Longitude:\n" -"%(deg).1f°%(westOrEast)s (%(riseOrSet)s)\n" -"\n" -msgstr "" - -#: moon.py:258 -#, python-format -msgid "" -"Next Full Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:259 -#, python-format -msgid "" -"Next New Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:260 -#, python-format -msgid "" -"Next Lunar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:261 -#, python-format -msgid "" -"Next Solar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:354 -msgid "SNWE" -msgstr "" - -#: moon.py:357 -msgid "NSEW" -msgstr "" - -#: moon.py:409 -msgid "Latitude" -msgstr "" - -#: moon.py:411 -msgid "Longitude" -msgstr "" - -#: moon.py:522 -msgid "west" -msgstr "" - -#: moon.py:524 -msgid "east" -msgstr "" - -#: moon.py:527 -msgid "Sunset" -msgstr "" - -#: moon.py:529 -msgid "Sunrise" -msgstr "" - -#: moon.py:545 moon.py:561 -msgid "New Moon" -msgstr "" - -#: moon.py:547 -msgid "Waxing Crescent" -msgstr "" - -#: moon.py:549 -msgid "First Quarter" -msgstr "" - -#: moon.py:551 -msgid "Waxing Gibbous" -msgstr "" - -#: moon.py:553 -msgid "Full Moon" -msgstr "" - -#: moon.py:555 -msgid "Waning Gibbous" -msgstr "" - -#: moon.py:557 -msgid "Last Quarter" -msgstr "" - -#: moon.py:559 -msgid "Waning Crescent" -msgstr "" diff --git a/po/fr.po b/po/fr.po index 98016e2..d7c73dd 100644 --- a/po/fr.po +++ b/po/fr.po @@ -1,270 +1,200 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# Moon XO's Activity translation -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# Bastien Guerry , 2008. +#. extracted from ../data.ini +#, fuzzy msgid "" msgstr "" -"Project-Id-Version: 6\n" +"Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-10-03 00:33-0400\n" -"PO-Revision-Date: 2012-11-24 17:20+0200\n" -"Last-Translator: Lionel Laské \n" -"Language-Team: French\n" -"Language: fr\n" +"POT-Creation-Date: Tue Mar 06 2018 22:20:09 GMT+0100 (CET)\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n > 1);\n" -"X-Generator: Pootle 2.0.5\n" +"X-Generator: ini2po 0.0.1\n" -#. TRANS: "name" option from activity.info file -#: moon.py:68 -msgid "Moon" -msgstr "Lune" - -#. TRANS: "summary" option from activity.info file -#. TRANS: "description" option from activity.info file -msgid "" -"For all those interested in the moon! See the different phases of the moon, " -"latitudes and longtiutdes and impress all by \"predicting\" the next full " -"moon!" -msgstr "" -"Pour ceux qui sont intéressés par la lune ! Afficher les différentes phases " -"de la lune, les latitudes et les longitudes. Impressionnes tout le monde en " -"\"prédisant\" la date de la prochaine pleine lune !" - -#. TRANS: Date format for next full/new moon and next solar/lunar eclipse -#: moon.py:60 -#, python-format -msgid "%c" -msgstr "%c" - -#: moon.py:92 moon.py:118 -msgid "Toggle Grid View" -msgstr "Changer la vue Grille" - -#: moon.py:98 moon.py:124 -msgid "Toggle Hemisphere View" -msgstr "Changer la vue Hémisphère" - -#: moon.py:130 -msgid "View" -msgstr "Vue" - -#: moon.py:250 -msgid "" -"Today's Moon Information\n" -"\n" -msgstr "" -"Information sur la lune d'aujourd'hui\n" -"\n" - -#: moon.py:252 -#, python-format -msgid "" -"Phase:\n" -"%s\n" -"\n" -msgstr "" -"Phase:\n" -"%s\n" -"\n" - -#: moon.py:253 -#, python-format -msgid "" -"Julian Date:\n" -"%.2f (astronomical)\n" -"\n" -msgstr "" -"Date julienne:\n" -"%.2f (astronomique)\n" -"\n" - -#: moon.py:254 -#, python-format -msgid "" -"Age:\n" -"%(days).0f days, %(hours).0f hours, %(minutes).0f minutes\n" -"\n" -msgstr "" -"Âge:\n" -"%(days).0f jours, %(hours).0f heures, %(minutes).0f minutes\n" -"\n" - -#: moon.py:255 -#, python-format -msgid "" -"Lunation:\n" -"%(phase).2f%% through lunation %(lunation)d\n" -"\n" -msgstr "" -"Lunaison:\n" -"%(phase).2f%% de la lunaison %(lunation)d\n" -"\n" - -#: moon.py:256 -#, python-format -msgid "" -"Surface Visibility:\n" -"%.0f%% (estimated)\n" -"\n" -msgstr "" -"Visibilité de la surface:\n" -"%.0f%% (estimated)\n" -"\n" - -#: moon.py:257 -#, python-format -msgid "" -"Selenographic Terminator Longitude:\n" -"%(deg).1f°%(westOrEast)s (%(riseOrSet)s)\n" -"\n" -msgstr "" -"Longitude du terminateur sélénographique:\n" -"%(deg).1f°%(westOrEast)s (%(riseOrSet)s)\n" -"\n" - -#: moon.py:258 -#, python-format -msgid "" -"Next Full Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"Prochaine pleine lune:\n" -"%(date)s dans %(days).0f jours\n" -"\n" +#: phase-0 +msgctxt "phase-0" +msgid "New Moon" +msgstr "Nouvelle lune" -#: moon.py:259 -#, python-format -msgid "" -"Next New Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"Prochaine nouvelle lune:\n" -"%(date)s dans %(days).0f jours\n" -"\n" +#: phase-1 +msgctxt "phase-1" +msgid "Waxing Crescent" +msgstr "Premier croissant" -#: moon.py:260 -#, python-format -msgid "" -"Next Lunar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"Prochaine éclipse de lune:\n" -"%(date)s dans %(days).0f jours\n" -"\n" +#: phase-2 +msgctxt "phase-2" +msgid "First Quarter" +msgstr "Premier quartier" -#: moon.py:261 -#, python-format -msgid "" -"Next Solar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"Prochaine éclipse de soleil:\n" -"%(date)s dans %(days).0f jours\n" -"\n" +#: phase-3 +msgctxt "phase-3" +msgid "Waxing Gibbous" +msgstr "Lune gibbeuse croissante" -#: moon.py:354 -msgid "SNWE" -msgstr "SNOE" +#: phase-4 +msgctxt "phase-4" +msgid "Full Moon" +msgstr "Pleine lune" -#: moon.py:357 -msgid "NSEW" -msgstr "NSEO" +#: phase-5 +msgctxt "phase-5" +msgid "Waning Gibbous" +msgstr "Lune gibbeuse décroissante" -#: moon.py:409 -msgid "Latitude" -msgstr "Latitude" +#: phase-6 +msgctxt "phase-6" +msgid "Last Quarter" +msgstr "Dernier quartier" -#: moon.py:411 -msgid "Longitude" -msgstr "Longitude" +#: phase-7 +msgctxt "phase-7" +msgid "Waning Crescent" +msgstr "Dernier croissant" -#: moon.py:522 +#: moonInfo +msgctxt "moonInfo" +msgid "Today's Moon Information" +msgstr "Information sur la lune d'aujourd'hui" + +#: phase +msgctxt "phase" +msgid "Phase" +msgstr "Phase" + +#: julian +msgctxt "julian" +msgid "Julian Date" +msgstr "Date julienne" + +#: age +msgctxt "age" +msgid "Age" +msgstr "Âge" + +#: lunation +msgctxt "lunation" +msgid "Lunation" +msgstr "Lunaison" + +#: visibility +msgctxt "visibility" +msgid "Surface Visibility" +msgstr "Visibilité de la surface" + +#: seleno +msgctxt "seleno" +msgid "Selenographic Terminator Longitude" +msgstr "Sélénographique Terminator Longitude" + +#: full +msgctxt "full" +msgid "Next Full Moon" +msgstr "Prochaine pleine lune" + +#: new +msgctxt "new" +msgid "Next New Moon" +msgstr "Prochaine nouvelle lune" + +#: lunar +msgctxt "lunar" +msgid "Next Lunar eclipse" +msgstr "Prochaine éclipse de lune" + +#: solar +msgctxt "solar" +msgid "Next Solar eclipse" +msgstr "Prochaine éclipse de soleil" + +#: minutes +msgctxt "minutes" +msgid "minutes" +msgstr "minutes" + +#: hours +msgctxt "hours" +msgid "hours" +msgstr "heures" + +#: days +msgctxt "days" +msgid "days" +msgstr "jours" + +#: astro +msgctxt "astro" +msgid "(astronomical)" +msgstr "(astronomique)" + +#: thru +msgctxt "thru" +msgid "through lunation" +msgstr "de la lunaison" + +#: in +msgctxt "in" +msgid "in" +msgstr "dans" + +#: estimated +msgctxt "estimated" +msgid "(estimated)" +msgstr "(estimée)" + +#: west +msgctxt "west" msgid "west" msgstr "ouest" -#: moon.py:524 +#: east +msgctxt "east" msgid "east" msgstr "est" -#: moon.py:527 +#: Sunset +msgctxt "Sunset" msgid "Sunset" msgstr "Coucher du soleil" -#: moon.py:529 +#: Sunrise +msgctxt "Sunrise" msgid "Sunrise" msgstr "Lever du soleil" -#: moon.py:545 moon.py:561 -msgid "New Moon" -msgstr "Nouvelle lune" +#: SNWE +msgctxt "SNWE" +msgid "SNWE" +msgstr "SNOE" -#: moon.py:547 -msgid "Waxing Crescent" -msgstr "Premier croissant" +#: NSEW +msgctxt "NSEW" +msgid "NSEW" +msgstr "NSEO" -#: moon.py:549 -msgid "First Quarter" -msgstr "Premier quartier" +#: Latitude +msgctxt "Latitude" +msgid "Latitude" +msgstr "Latitude" -#: moon.py:551 -msgid "Waxing Gibbous" -msgstr "Lune gibbeuse (croissante)" +#: Longitude +msgctxt "Longitude" +msgid "Longitude" +msgstr "Longitude" -#: moon.py:553 -msgid "Full Moon" -msgstr "Pleine lune" +#: ToggleGrid +msgctxt "ToggleGrid" +msgid "Toggle Grid View" +msgstr "Afficher/Masquer la grille" -#: moon.py:555 -msgid "Waning Gibbous" -msgstr "Lune gibbeuse (décroissante)" +#: ToggleHemisphere +msgctxt "ToggleHemisphere" +msgid "Toggle Hemisphere View" +msgstr "Changer d'hémisphère" -#: moon.py:557 -msgid "Last Quarter" -msgstr "Dernier quartier" +#: SaveImage +msgctxt "SaveImage" +msgid "Save As Image" +msgstr "Enregistrer en tant qu'image" -#: moon.py:559 -msgid "Waning Crescent" -msgstr "Dernier croissant" diff --git a/po/gn.po b/po/gn.po deleted file mode 100644 index f24b985..0000000 --- a/po/gn.po +++ /dev/null @@ -1,198 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-10-03 00:33-0400\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Translate Toolkit 1.7.0\n" - -#. TRANS: "name" option from activity.info file -#: moon.py:68 -msgid "Moon" -msgstr "" - -#. TRANS: "summary" option from activity.info file -#. TRANS: "description" option from activity.info file -msgid "" -"For all those interested in the moon! See the different phases of the moon, " -"latitudes and longtiutdes and impress all by \"predicting\" the next full " -"moon!" -msgstr "" - -#. TRANS: Date format for next full/new moon and next solar/lunar eclipse -#: moon.py:60 -#, python-format -msgid "%c" -msgstr "" - -#: moon.py:92 moon.py:118 -msgid "Toggle Grid View" -msgstr "" - -#: moon.py:98 moon.py:124 -msgid "Toggle Hemisphere View" -msgstr "" - -#: moon.py:130 -msgid "View" -msgstr "" - -#: moon.py:250 -msgid "" -"Today's Moon Information\n" -"\n" -msgstr "" - -#: moon.py:252 -#, python-format -msgid "" -"Phase:\n" -"%s\n" -"\n" -msgstr "" - -#: moon.py:253 -#, python-format -msgid "" -"Julian Date:\n" -"%.2f (astronomical)\n" -"\n" -msgstr "" - -#: moon.py:254 -#, python-format -msgid "" -"Age:\n" -"%(days).0f days, %(hours).0f hours, %(minutes).0f minutes\n" -"\n" -msgstr "" - -#: moon.py:255 -#, python-format -msgid "" -"Lunation:\n" -"%(phase).2f%% through lunation %(lunation)d\n" -"\n" -msgstr "" - -#: moon.py:256 -#, python-format -msgid "" -"Surface Visibility:\n" -"%.0f%% (estimated)\n" -"\n" -msgstr "" - -#: moon.py:257 -#, python-format -msgid "" -"Selenographic Terminator Longitude:\n" -"%(deg).1f°%(westOrEast)s (%(riseOrSet)s)\n" -"\n" -msgstr "" - -#: moon.py:258 -#, python-format -msgid "" -"Next Full Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:259 -#, python-format -msgid "" -"Next New Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:260 -#, python-format -msgid "" -"Next Lunar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:261 -#, python-format -msgid "" -"Next Solar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:354 -msgid "SNWE" -msgstr "" - -#: moon.py:357 -msgid "NSEW" -msgstr "" - -#: moon.py:409 -msgid "Latitude" -msgstr "" - -#: moon.py:411 -msgid "Longitude" -msgstr "" - -#: moon.py:522 -msgid "west" -msgstr "" - -#: moon.py:524 -msgid "east" -msgstr "" - -#: moon.py:527 -msgid "Sunset" -msgstr "" - -#: moon.py:529 -msgid "Sunrise" -msgstr "" - -#: moon.py:545 moon.py:561 -msgid "New Moon" -msgstr "" - -#: moon.py:547 -msgid "Waxing Crescent" -msgstr "" - -#: moon.py:549 -msgid "First Quarter" -msgstr "" - -#: moon.py:551 -msgid "Waxing Gibbous" -msgstr "" - -#: moon.py:553 -msgid "Full Moon" -msgstr "" - -#: moon.py:555 -msgid "Waning Gibbous" -msgstr "" - -#: moon.py:557 -msgid "Last Quarter" -msgstr "" - -#: moon.py:559 -msgid "Waning Crescent" -msgstr "" diff --git a/po/gu.po b/po/gu.po deleted file mode 100644 index 907af62..0000000 --- a/po/gu.po +++ /dev/null @@ -1,226 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-10-03 00:33-0400\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Translate Toolkit 1.1.1rc4\n" - -#. TRANS: "name" option from activity.info file -#: moon.py:68 -msgid "Moon" -msgstr "" - -#. TRANS: "summary" option from activity.info file -#. TRANS: "description" option from activity.info file -msgid "" -"For all those interested in the moon! See the different phases of the moon, " -"latitudes and longtiutdes and impress all by \"predicting\" the next full " -"moon!" -msgstr "" - -#. TRANS: Date format for next full/new moon and next solar/lunar eclipse -#: moon.py:60 -#, python-format -msgid "%c" -msgstr "" - -#: moon.py:92 moon.py:118 -msgid "Toggle Grid View" -msgstr "" - -#: moon.py:98 moon.py:124 -msgid "Toggle Hemisphere View" -msgstr "" - -#: moon.py:130 -msgid "View" -msgstr "" - -#: moon.py:250 -msgid "" -"Today's Moon Information\n" -"\n" -msgstr "" - -#: moon.py:252 -#, python-format -msgid "" -"Phase:\n" -"%s\n" -"\n" -msgstr "" - -#: moon.py:253 -#, python-format -msgid "" -"Julian Date:\n" -"%.2f (astronomical)\n" -"\n" -msgstr "" - -#: moon.py:254 -#, python-format -msgid "" -"Age:\n" -"%(days).0f days, %(hours).0f hours, %(minutes).0f minutes\n" -"\n" -msgstr "" - -#: moon.py:255 -#, python-format -msgid "" -"Lunation:\n" -"%(phase).2f%% through lunation %(lunation)d\n" -"\n" -msgstr "" - -#: moon.py:256 -#, python-format -msgid "" -"Surface Visibility:\n" -"%.0f%% (estimated)\n" -"\n" -msgstr "" - -#: moon.py:257 -#, python-format -msgid "" -"Selenographic Terminator Longitude:\n" -"%(deg).1f°%(westOrEast)s (%(riseOrSet)s)\n" -"\n" -msgstr "" - -#: moon.py:258 -#, python-format -msgid "" -"Next Full Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:259 -#, python-format -msgid "" -"Next New Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:260 -#, python-format -msgid "" -"Next Lunar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:261 -#, python-format -msgid "" -"Next Solar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:354 -msgid "SNWE" -msgstr "" - -#: moon.py:357 -msgid "NSEW" -msgstr "" - -#: moon.py:409 -msgid "Latitude" -msgstr "" - -#: moon.py:411 -msgid "Longitude" -msgstr "" - -#: moon.py:522 -msgid "west" -msgstr "" - -#: moon.py:524 -msgid "east" -msgstr "" - -#: moon.py:527 -msgid "Sunset" -msgstr "" - -#: moon.py:529 -msgid "Sunrise" -msgstr "" - -#: moon.py:545 moon.py:561 -msgid "New Moon" -msgstr "" - -#: moon.py:547 -msgid "Waxing Crescent" -msgstr "" - -#: moon.py:549 -msgid "First Quarter" -msgstr "" - -#: moon.py:551 -msgid "Waxing Gibbous" -msgstr "" - -#: moon.py:553 -msgid "Full Moon" -msgstr "" - -#: moon.py:555 -msgid "Waning Gibbous" -msgstr "" - -#: moon.py:557 -msgid "Last Quarter" -msgstr "" - -#: moon.py:559 -msgid "Waning Crescent" -msgstr "" diff --git a/po/gug.po b/po/gug.po deleted file mode 100644 index 72cf576..0000000 --- a/po/gug.po +++ /dev/null @@ -1,236 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-10-03 00:33-0400\n" -"PO-Revision-Date: 2017-08-18 01:02+0000\n" -"Last-Translator: MartínOesterreich \n" -"Language-Team: LANGUAGE \n" -"Language: gug\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n > 1);\n" -"X-Generator: Pootle 2.5.1.1\n" -"X-POOTLE-MTIME: 1503018161.000000\n" - -#. TRANS: "name" option from activity.info file -#: moon.py:68 -msgid "Moon" -msgstr "jasy" - -#. TRANS: "summary" option from activity.info file -#. TRANS: "description" option from activity.info file -msgid "" -"For all those interested in the moon! See the different phases of the moon, " -"latitudes and longitudes and impress all by \"predicting\" the next full " -"moon!" -msgstr "" -"For all those interested in the moon! See the different phases of the moon, " -"latitudes and longitudes and impress all by \"predicting\" the next full " -"moon!" - -#. TRANS: Date format for next full/new moon and next solar/lunar eclipse -#: moon.py:60 -#, python-format -msgid "%c" -msgstr "%c" - -#: moon.py:92 moon.py:118 -msgid "Toggle Grid View" -msgstr "moambue vistape grilla " - -#: moon.py:98 moon.py:124 -msgid "Toggle Hemisphere View" -msgstr "moambue vistape yvyku'a " - -#: moon.py:130 -msgid "View" -msgstr "hecha" - -#: moon.py:250 -msgid "" -"Today's Moon Information\n" -"\n" -msgstr "" -"kuaa jasy opyta hoy\n" -"\n" - -#: moon.py:252 -#, python-format -msgid "" -"Phase:\n" -"%s\n" -"\n" -msgstr "" -"Fase:\n" -"%s\n" -"\n" - -#: moon.py:253 -#, python-format -msgid "" -"Julian Date:\n" -"%.2f (astronomical)\n" -"\n" -msgstr "" -"ára juliana:\n" -" %.2f (astronómical)\n" -"\n" - -#: moon.py:254 -#, python-format -msgid "" -"Age:\n" -"%(days).0f days, %(hours).0f hours, %(minutes).0f minutes\n" -"\n" -msgstr "" -"Edad:\n" -"%(days).0f días, %(hours).0f horas, %(minutes).0f minutos\n" -"\n" - -#: moon.py:255 -#, python-format -msgid "" -"Lunation:\n" -"%(phase).2f%% through lunation %(lunation)d\n" -"\n" -msgstr "" -"lunación:\n" -" %(phase) .2f%% peve pe lunación %(lunation)d\n" -"\n" - -#: moon.py:256 -#, python-format -msgid "" -"Surface Visibility:\n" -"%.0f%% (estimated)\n" -"\n" -msgstr "" -"tesakã superficie:\n" -" %.0f%% (estimada)\n" -"\n" - -#: moon.py:257 -#, python-format -msgid "" -"Selenographic Terminator Longitude:\n" -"%(deg).1f°%(westOrEast)s (%(riseOrSet)s)\n" -"\n" -msgstr "" -"longitud terminadorgua selenográfico:\n" -" %(deg) .1f°%(westoreast)s (%(riseorset)s)\n" -"\n" - -#: moon.py:258 -#, python-format -msgid "" -"Next Full Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"próxima jasy llena:\n" -" %(date)s %(day kuera) .0f días\n" -"\n" - -#: moon.py:259 -#, python-format -msgid "" -"Next New Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"próxima jasy nueva:\n" -" %(date)s %(day kuera) .0f días\n" -"\n" - -#: moon.py:260 -#, python-format -msgid "" -"Next Lunar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"próximo mbyjausukañy lunar:\n" -" %(date)s %(day kuera) .0f días\n" -"\n" - -#: moon.py:261 -#, python-format -msgid "" -"Next Solar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"próximo mbyjausukañy solar:\n" -" %(date)s %(day kuera) .0f días\n" -"\n" - -#: moon.py:354 -msgid "SNWE" -msgstr "SNWE" - -#: moon.py:357 -msgid "NSEW" -msgstr "NSEW" - -#: moon.py:409 -msgid "Latitude" -msgstr "latitud " - -#: moon.py:411 -msgid "Longitude" -msgstr "Longitud" - -#: moon.py:522 -msgid "west" -msgstr "kuarahy reike " - -#: moon.py:524 -msgid "east" -msgstr "kuarahy resẽ" - -#: moon.py:527 -msgid "Sunset" -msgstr "ojepone " - -#: moon.py:529 -msgid "Sunrise" -msgstr "osẽ" - -#: moon.py:545 moon.py:561 -msgid "New Moon" -msgstr "jasy pyahu" - -#: moon.py:547 -msgid "Waxing Crescent" -msgstr "jasy pyahu jehecha" - -#: moon.py:549 -msgid "First Quarter" -msgstr "koty jejupiha " - -#: moon.py:551 -msgid "Waxing Gibbous" -msgstr "jasy gibada jejupiha " - -#: moon.py:553 -msgid "Full Moon" -msgstr "jasy renyhe " - -#: moon.py:555 -msgid "Waning Gibbous" -msgstr "jasy gibada ñemomichĩva " - -#: moon.py:557 -msgid "Last Quarter" -msgstr "koty ñemomichĩva " - -#: moon.py:559 -msgid "Waning Crescent" -msgstr "jasy ñemomichĩva " diff --git a/po/ha.po b/po/ha.po deleted file mode 100644 index a598aeb..0000000 --- a/po/ha.po +++ /dev/null @@ -1,199 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-10-03 00:33-0400\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"Language: ha\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Translate Toolkit 1.11.0\n" - -#. TRANS: "name" option from activity.info file -#: moon.py:68 -msgid "Moon" -msgstr "" - -#. TRANS: "summary" option from activity.info file -#. TRANS: "description" option from activity.info file -msgid "" -"For all those interested in the moon! See the different phases of the moon, " -"latitudes and longtiutdes and impress all by \"predicting\" the next full " -"moon!" -msgstr "" - -#. TRANS: Date format for next full/new moon and next solar/lunar eclipse -#: moon.py:60 -#, python-format -msgid "%c" -msgstr "" - -#: moon.py:92 moon.py:118 -msgid "Toggle Grid View" -msgstr "" - -#: moon.py:98 moon.py:124 -msgid "Toggle Hemisphere View" -msgstr "" - -#: moon.py:130 -msgid "View" -msgstr "" - -#: moon.py:250 -msgid "" -"Today's Moon Information\n" -"\n" -msgstr "" - -#: moon.py:252 -#, python-format -msgid "" -"Phase:\n" -"%s\n" -"\n" -msgstr "" - -#: moon.py:253 -#, python-format -msgid "" -"Julian Date:\n" -"%.2f (astronomical)\n" -"\n" -msgstr "" - -#: moon.py:254 -#, python-format -msgid "" -"Age:\n" -"%(days).0f days, %(hours).0f hours, %(minutes).0f minutes\n" -"\n" -msgstr "" - -#: moon.py:255 -#, python-format -msgid "" -"Lunation:\n" -"%(phase).2f%% through lunation %(lunation)d\n" -"\n" -msgstr "" - -#: moon.py:256 -#, python-format -msgid "" -"Surface Visibility:\n" -"%.0f%% (estimated)\n" -"\n" -msgstr "" - -#: moon.py:257 -#, python-format -msgid "" -"Selenographic Terminator Longitude:\n" -"%(deg).1f°%(westOrEast)s (%(riseOrSet)s)\n" -"\n" -msgstr "" - -#: moon.py:258 -#, python-format -msgid "" -"Next Full Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:259 -#, python-format -msgid "" -"Next New Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:260 -#, python-format -msgid "" -"Next Lunar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:261 -#, python-format -msgid "" -"Next Solar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:354 -msgid "SNWE" -msgstr "" - -#: moon.py:357 -msgid "NSEW" -msgstr "" - -#: moon.py:409 -msgid "Latitude" -msgstr "" - -#: moon.py:411 -msgid "Longitude" -msgstr "" - -#: moon.py:522 -msgid "west" -msgstr "" - -#: moon.py:524 -msgid "east" -msgstr "" - -#: moon.py:527 -msgid "Sunset" -msgstr "" - -#: moon.py:529 -msgid "Sunrise" -msgstr "" - -#: moon.py:545 moon.py:561 -msgid "New Moon" -msgstr "" - -#: moon.py:547 -msgid "Waxing Crescent" -msgstr "" - -#: moon.py:549 -msgid "First Quarter" -msgstr "" - -#: moon.py:551 -msgid "Waxing Gibbous" -msgstr "" - -#: moon.py:553 -msgid "Full Moon" -msgstr "" - -#: moon.py:555 -msgid "Waning Gibbous" -msgstr "" - -#: moon.py:557 -msgid "Last Quarter" -msgstr "" - -#: moon.py:559 -msgid "Waning Crescent" -msgstr "" diff --git a/po/he.po b/po/he.po deleted file mode 100644 index 907af62..0000000 --- a/po/he.po +++ /dev/null @@ -1,226 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-10-03 00:33-0400\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Translate Toolkit 1.1.1rc4\n" - -#. TRANS: "name" option from activity.info file -#: moon.py:68 -msgid "Moon" -msgstr "" - -#. TRANS: "summary" option from activity.info file -#. TRANS: "description" option from activity.info file -msgid "" -"For all those interested in the moon! See the different phases of the moon, " -"latitudes and longtiutdes and impress all by \"predicting\" the next full " -"moon!" -msgstr "" - -#. TRANS: Date format for next full/new moon and next solar/lunar eclipse -#: moon.py:60 -#, python-format -msgid "%c" -msgstr "" - -#: moon.py:92 moon.py:118 -msgid "Toggle Grid View" -msgstr "" - -#: moon.py:98 moon.py:124 -msgid "Toggle Hemisphere View" -msgstr "" - -#: moon.py:130 -msgid "View" -msgstr "" - -#: moon.py:250 -msgid "" -"Today's Moon Information\n" -"\n" -msgstr "" - -#: moon.py:252 -#, python-format -msgid "" -"Phase:\n" -"%s\n" -"\n" -msgstr "" - -#: moon.py:253 -#, python-format -msgid "" -"Julian Date:\n" -"%.2f (astronomical)\n" -"\n" -msgstr "" - -#: moon.py:254 -#, python-format -msgid "" -"Age:\n" -"%(days).0f days, %(hours).0f hours, %(minutes).0f minutes\n" -"\n" -msgstr "" - -#: moon.py:255 -#, python-format -msgid "" -"Lunation:\n" -"%(phase).2f%% through lunation %(lunation)d\n" -"\n" -msgstr "" - -#: moon.py:256 -#, python-format -msgid "" -"Surface Visibility:\n" -"%.0f%% (estimated)\n" -"\n" -msgstr "" - -#: moon.py:257 -#, python-format -msgid "" -"Selenographic Terminator Longitude:\n" -"%(deg).1f°%(westOrEast)s (%(riseOrSet)s)\n" -"\n" -msgstr "" - -#: moon.py:258 -#, python-format -msgid "" -"Next Full Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:259 -#, python-format -msgid "" -"Next New Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:260 -#, python-format -msgid "" -"Next Lunar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:261 -#, python-format -msgid "" -"Next Solar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:354 -msgid "SNWE" -msgstr "" - -#: moon.py:357 -msgid "NSEW" -msgstr "" - -#: moon.py:409 -msgid "Latitude" -msgstr "" - -#: moon.py:411 -msgid "Longitude" -msgstr "" - -#: moon.py:522 -msgid "west" -msgstr "" - -#: moon.py:524 -msgid "east" -msgstr "" - -#: moon.py:527 -msgid "Sunset" -msgstr "" - -#: moon.py:529 -msgid "Sunrise" -msgstr "" - -#: moon.py:545 moon.py:561 -msgid "New Moon" -msgstr "" - -#: moon.py:547 -msgid "Waxing Crescent" -msgstr "" - -#: moon.py:549 -msgid "First Quarter" -msgstr "" - -#: moon.py:551 -msgid "Waxing Gibbous" -msgstr "" - -#: moon.py:553 -msgid "Full Moon" -msgstr "" - -#: moon.py:555 -msgid "Waning Gibbous" -msgstr "" - -#: moon.py:557 -msgid "Last Quarter" -msgstr "" - -#: moon.py:559 -msgid "Waning Crescent" -msgstr "" diff --git a/po/hi.po b/po/hi.po deleted file mode 100644 index 292dd73..0000000 --- a/po/hi.po +++ /dev/null @@ -1,262 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-10-03 00:33-0400\n" -"PO-Revision-Date: 2016-12-25 15:04+0000\n" -"Last-Translator: yatinmaan \n" -"Language-Team: LANGUAGE \n" -"Language: hi\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.5.1.1\n" -"X-POOTLE-MTIME: 1482678266.000000\n" - -#. TRANS: "name" option from activity.info file -#: moon.py:68 -msgid "Moon" -msgstr "चन्द्रमा" - -#. TRANS: "summary" option from activity.info file -#. TRANS: "description" option from activity.info file -msgid "" -"For all those interested in the moon! See the different phases of the moon, " -"latitudes and longtiutdes and impress all by \"predicting\" the next full " -"moon!" -msgstr "" -"सभी चाँद में रुचि रखने वालों के लिए! चांद के विभिन्न रूप, अक्षांश और देशांतर " -"देखिए, और \"भविष्यवाणी\" कर अगले पूर्णिमा से करे सभी को आश्चर्यचकित!" - -#. TRANS: Date format for next full/new moon and next solar/lunar eclipse -#: moon.py:60 -#, python-format -msgid "%c" -msgstr "%c" - -#: moon.py:92 moon.py:118 -msgid "Toggle Grid View" -msgstr "वर्ग दृश्य में परिवर्तित करें" - -#: moon.py:98 moon.py:124 -msgid "Toggle Hemisphere View" -msgstr "अर्धगोल दृश्य में परिवर्तित करें" - -#: moon.py:130 -msgid "View" -msgstr "दिखाए" - -#: moon.py:250 -msgid "" -"Today's Moon Information\n" -"\n" -msgstr "" -"आज के चन्द्रमा की जानकारी\n" -"\n" - -#: moon.py:252 -#, python-format -msgid "" -"Phase:\n" -"%s\n" -"\n" -msgstr "" -"चन्द्राकार:\n" -"%s\n" -"\n" - -#: moon.py:253 -#, python-format -msgid "" -"Julian Date:\n" -"%.2f (astronomical)\n" -"\n" -msgstr "" -"जूलियन तिथि:\n" -"%.2f (खगोलीय)\n" -"\n" - -#: moon.py:254 -#, python-format -msgid "" -"Age:\n" -"%(days).0f days, %(hours).0f hours, %(minutes).0f minutes\n" -"\n" -msgstr "" -"उम्र:\n" -"%(days).0f दिन, %(hours).0f घंटे, %(minutes).0f मिनट\n" -"\n" - -#: moon.py:255 -#, python-format -msgid "" -"Lunation:\n" -"%(phase).2f%% through lunation %(lunation)d\n" -"\n" -msgstr "" -"चांद्रमास:\n" -"%(phase).2f%% चांद्रमास द्वारा %(lunation)d\n" -"\n" - -#: moon.py:256 -#, python-format -msgid "" -"Surface Visibility:\n" -"%.0f%% (estimated)\n" -"\n" -msgstr "" -"सतह की दृश्यता:\n" -"%.0f%% (प्राक्कलित)\n" -"\n" - -#: moon.py:257 -#, python-format -msgid "" -"Selenographic Terminator Longitude:\n" -"%(deg).1f°%(westOrEast)s (%(riseOrSet)s)\n" -"\n" -msgstr "" -"चन्द्रालखिक समापक देशान्तर:\n" -"%(deg).1f°%(westOrEast)s (%(riseOrSet)s)\n" -"\n" - -#: moon.py:258 -#, python-format -msgid "" -"Next Full Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"अगली पूर्णमासी:\n" -"%(date)s in %(days).0f days\n" -"\n" - -#: moon.py:259 -#, python-format -msgid "" -"Next New Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"अगला चन्द्रोदय:\n" -"%(date)s में से %(days).0f दिन\n" -"\n" - -#: moon.py:260 -#, python-format -msgid "" -"Next Lunar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"अगला चन्द्रग्रहण:\n" -"%(date)s में %(days).0f दिन\n" -"\n" - -#: moon.py:261 -#, python-format -msgid "" -"Next Solar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"अगला सूर्यग्रहण:\n" -"%(date)s में %(days).0f दिन\n" -"\n" - -#: moon.py:354 -msgid "SNWE" -msgstr "दउपपू" - -#: moon.py:357 -msgid "NSEW" -msgstr "उदपूप" - -#: moon.py:409 -msgid "Latitude" -msgstr "अक्षांश" - -#: moon.py:411 -msgid "Longitude" -msgstr "देशान्तर" - -#: moon.py:522 -msgid "west" -msgstr "पश्चिम" - -#: moon.py:524 -msgid "east" -msgstr "पूर्व" - -#: moon.py:527 -msgid "Sunset" -msgstr "सूर्यास्त" - -#: moon.py:529 -msgid "Sunrise" -msgstr "सूर्योदय" - -#: moon.py:545 moon.py:561 -msgid "New Moon" -msgstr "चन्द्रोदय" - -#: moon.py:547 -msgid "Waxing Crescent" -msgstr "बढ़ता अर्धचन्द्र" - -#: moon.py:549 -msgid "First Quarter" -msgstr "प्रथम चौथाई" - -#: moon.py:551 -msgid "Waxing Gibbous" -msgstr "बढ़ता चन्द्र" - -#: moon.py:553 -msgid "Full Moon" -msgstr "पूर्णिमा" - -#: moon.py:555 -msgid "Waning Gibbous" -msgstr "घटता चन्द्र" - -#: moon.py:557 -msgid "Last Quarter" -msgstr "अंतिम चौथाई" - -#: moon.py:559 -msgid "Waning Crescent" -msgstr "घटता अर्धचन्द्र" diff --git a/po/ht.po b/po/ht.po deleted file mode 100644 index 430044e..0000000 --- a/po/ht.po +++ /dev/null @@ -1,264 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-10-03 00:33-0400\n" -"PO-Revision-Date: 2011-08-10 06:01+0200\n" -"Last-Translator: Chris \n" -"Language-Team: LANGUAGE \n" -"Language: ht\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n !=1);\n" -"X-Generator: Pootle 2.0.1\n" - -#. TRANS: "name" option from activity.info file -#: moon.py:68 -msgid "Moon" -msgstr "Lalin" - -#. TRANS: "summary" option from activity.info file -#. TRANS: "description" option from activity.info file -msgid "" -"For all those interested in the moon! See the different phases of the moon, " -"latitudes and longtiutdes and impress all by \"predicting\" the next full " -"moon!" -msgstr "" - -#. TRANS: Date format for next full/new moon and next solar/lunar eclipse -#: moon.py:60 -#, python-format -msgid "%c" -msgstr "" - -#: moon.py:92 moon.py:118 -msgid "Toggle Grid View" -msgstr "Gade griy bouton" - -#: moon.py:98 moon.py:124 -msgid "Toggle Hemisphere View" -msgstr "Gade bouton emisfè" - -#: moon.py:130 -#, fuzzy -msgid "View" -msgstr "Gade" - -#: moon.py:250 -msgid "" -"Today's Moon Information\n" -"\n" -msgstr "" -"Enfòmasyon sou lalin jodi a\n" -"\n" - -#: moon.py:252 -#, python-format -msgid "" -"Phase:\n" -"%s\n" -"\n" -msgstr "" -"Faz:\n" -"%s\n" -"\n" - -#: moon.py:253 -#, python-format -msgid "" -"Julian Date:\n" -"%.2f (astronomical)\n" -"\n" -msgstr "" -"Dat Jilyan:\n" -"%.2f (Astwonomik)\n" -"\n" - -#: moon.py:254 -#, python-format -msgid "" -"Age:\n" -"%(days).0f days, %(hours).0f hours, %(minutes).0f minutes\n" -"\n" -msgstr "" -"Aj:\n" -"%(days).0f jou yo, %(hours).0f è yo, %(minutes).0f minit yo\n" -"\n" - -#: moon.py:255 -#, python-format -msgid "" -"Lunation:\n" -"%(phase).2f%% through lunation %(lunation)d\n" -"\n" -msgstr "" -"Linezon:\n" -"%(phase).2f%% atravè linezon%(lunation)d\n" -"\n" - -#: moon.py:256 -#, python-format -msgid "" -"Surface Visibility:\n" -"%.0f%% (estimated)\n" -"\n" -msgstr "" -"Sifas Vizib:\n" -"%.0f%% (estime)\n" -"\n" - -#: moon.py:257 -#, python-format -msgid "" -"Selenographic Terminator Longitude:\n" -"%(deg).1f°%(westOrEast)s (%(riseOrSet)s)\n" -"\n" -msgstr "" -"Selenografik Lonjitid tèminal:\n" -"%(deg).1f°%(westOrEast)s (%(riseOrSet)s)\n" -"\n" - -#: moon.py:258 -#, python-format -msgid "" -"Next Full Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"Pwochèn plèn lin:\n" -"%(date)s dan %(days).0f jou yo\n" -"\n" - -#: moon.py:259 -#, python-format -msgid "" -"Next New Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"Pwochèn nouvèl lin:\n" -"%(date)s dan %(days).0f jou yo\n" -"\n" - -#: moon.py:260 -#, python-format -msgid "" -"Next Lunar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"pwochèn eklips lalin:\n" -"%(date)s dan %(days).0f jou yo\n" -"\n" - -#: moon.py:261 -#, python-format -msgid "" -"Next Solar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"Pwochèn eklips solèy:\n" -"%(date)s dan %(days).0f jou yo\n" -"\n" - -#: moon.py:354 -msgid "SNWE" -msgstr "SNWE" - -#: moon.py:357 -msgid "NSEW" -msgstr "NSEW" - -#: moon.py:409 -msgid "Latitude" -msgstr "Latitid" - -#: moon.py:411 -msgid "Longitude" -msgstr "Lonjitid" - -#: moon.py:522 -msgid "west" -msgstr "Lwès" - -#: moon.py:524 -msgid "east" -msgstr "Lès" - -#: moon.py:527 -msgid "Sunset" -msgstr "Solèy kouche" - -#: moon.py:529 -msgid "Sunrise" -msgstr "Douvanjou" - -#: moon.py:545 moon.py:561 -msgid "New Moon" -msgstr "Nouvèl lin" - -#: moon.py:547 -msgid "Waxing Crescent" -msgstr "Ap sire kwasan" - -#: moon.py:549 -msgid "First Quarter" -msgstr "Premye katye" - -#: moon.py:551 -msgid "Waxing Gibbous" -msgstr "Ap sire Gibbous" - -#: moon.py:553 -msgid "Full Moon" -msgstr "Plèn lin" - -#: moon.py:555 -msgid "Waning Gibbous" -msgstr "Ap diminye Gibbous" - -#: moon.py:557 -msgid "Last Quarter" -msgstr "Dènye katye" - -#: moon.py:559 -msgid "Waning Crescent" -msgstr "Ap diminye kwasan" diff --git a/po/hu.po b/po/hu.po deleted file mode 100644 index cc8a8f6..0000000 --- a/po/hu.po +++ /dev/null @@ -1,226 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-10-03 00:33-0400\n" -"PO-Revision-Date: 2009-12-21 23:03-0400\n" -"Last-Translator: Chris Leonard \n" -"Language-Team: LANGUAGE \n" -"Language: hu\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Pootle 1.2.1\n" - -#. TRANS: "name" option from activity.info file -#: moon.py:68 -msgid "Moon" -msgstr "" - -#. TRANS: "summary" option from activity.info file -#. TRANS: "description" option from activity.info file -msgid "" -"For all those interested in the moon! See the different phases of the moon, " -"latitudes and longtiutdes and impress all by \"predicting\" the next full " -"moon!" -msgstr "" - -#. TRANS: Date format for next full/new moon and next solar/lunar eclipse -#: moon.py:60 -#, python-format -msgid "%c" -msgstr "" - -#: moon.py:92 moon.py:118 -msgid "Toggle Grid View" -msgstr "" - -#: moon.py:98 moon.py:124 -msgid "Toggle Hemisphere View" -msgstr "" - -#: moon.py:130 -msgid "View" -msgstr "Nézet" - -#: moon.py:250 -msgid "" -"Today's Moon Information\n" -"\n" -msgstr "" - -#: moon.py:252 -#, python-format -msgid "" -"Phase:\n" -"%s\n" -"\n" -msgstr "" - -#: moon.py:253 -#, python-format -msgid "" -"Julian Date:\n" -"%.2f (astronomical)\n" -"\n" -msgstr "" - -#: moon.py:254 -#, python-format -msgid "" -"Age:\n" -"%(days).0f days, %(hours).0f hours, %(minutes).0f minutes\n" -"\n" -msgstr "" - -#: moon.py:255 -#, python-format -msgid "" -"Lunation:\n" -"%(phase).2f%% through lunation %(lunation)d\n" -"\n" -msgstr "" - -#: moon.py:256 -#, python-format -msgid "" -"Surface Visibility:\n" -"%.0f%% (estimated)\n" -"\n" -msgstr "" - -#: moon.py:257 -#, python-format -msgid "" -"Selenographic Terminator Longitude:\n" -"%(deg).1f°%(westOrEast)s (%(riseOrSet)s)\n" -"\n" -msgstr "" - -#: moon.py:258 -#, python-format -msgid "" -"Next Full Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:259 -#, python-format -msgid "" -"Next New Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:260 -#, python-format -msgid "" -"Next Lunar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:261 -#, python-format -msgid "" -"Next Solar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:354 -msgid "SNWE" -msgstr "" - -#: moon.py:357 -msgid "NSEW" -msgstr "" - -#: moon.py:409 -msgid "Latitude" -msgstr "" - -#: moon.py:411 -msgid "Longitude" -msgstr "" - -#: moon.py:522 -msgid "west" -msgstr "" - -#: moon.py:524 -msgid "east" -msgstr "" - -#: moon.py:527 -msgid "Sunset" -msgstr "" - -#: moon.py:529 -msgid "Sunrise" -msgstr "" - -#: moon.py:545 moon.py:561 -msgid "New Moon" -msgstr "" - -#: moon.py:547 -msgid "Waxing Crescent" -msgstr "" - -#: moon.py:549 -msgid "First Quarter" -msgstr "" - -#: moon.py:551 -msgid "Waxing Gibbous" -msgstr "" - -#: moon.py:553 -msgid "Full Moon" -msgstr "" - -#: moon.py:555 -msgid "Waning Gibbous" -msgstr "" - -#: moon.py:557 -msgid "Last Quarter" -msgstr "" - -#: moon.py:559 -msgid "Waning Crescent" -msgstr "" diff --git a/po/hus.po b/po/hus.po deleted file mode 100644 index 6a47a5c..0000000 --- a/po/hus.po +++ /dev/null @@ -1,232 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-10-03 00:33-0400\n" -"PO-Revision-Date: 2011-08-29 03:48+0200\n" -"Last-Translator: Chris \n" -"Language-Team: LANGUAGE \n" -"Language: hus\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.1\n" - -#. TRANS: "name" option from activity.info file -#: moon.py:68 -msgid "Moon" -msgstr "its'" - -#. TRANS: "summary" option from activity.info file -#. TRANS: "description" option from activity.info file -msgid "" -"For all those interested in the moon! See the different phases of the moon, " -"latitudes and longtiutdes and impress all by \"predicting\" the next full " -"moon!" -msgstr "" - -#. TRANS: Date format for next full/new moon and next solar/lunar eclipse -#: moon.py:60 -#, python-format -msgid "%c" -msgstr "%c" - -#: moon.py:92 moon.py:118 -msgid "Toggle Grid View" -msgstr "Ka jalk'onchij in wal" - -#: moon.py:98 moon.py:124 -msgid "Toggle Hemisphere View" -msgstr "Ka jalk'unchij in wal hemisferio" - -#: moon.py:130 -msgid "View" -msgstr "Tsu'uw" - -#: moon.py:250 -msgid "" -"Today's Moon Information\n" -"\n" -msgstr "" -"Olchixtaláb kal a its' kabal xowe'\n" -"\n" - -#: moon.py:252 -#, python-format -msgid "" -"Phase:\n" -"%s\n" -"\n" -msgstr "" -"Puweníb\n" -"%s\n" -"\n" - -#: moon.py:253 -#, python-format -msgid "" -"Julian Date:\n" -"%.2f (astronomical)\n" -"\n" -msgstr "" -"Ajum k'ijchaj Juliana:\n" -"%.2f(astronomical)\n" -"\n" - -#: moon.py:254 -#, python-format -msgid "" -"Age:\n" -"%(days).0f days, %(hours).0f hours, %(minutes).0f minutes\n" -"\n" -msgstr "" -"Tamúb:\n" -"%(days).0f k'ijchaj, %(hours).0f k'ij,%(minutes).0f tsakamkíj\n" -"\n" - -#: moon.py:255 -#, python-format -#, python-format, -msgid "" -"Lunation:\n" -"%(phase).2f%% through lunation %(lunation)d\n" -"\n" -msgstr "" -"its'lom:\n" -"%(phase).2f%% through its'lom %(lunation)d\n" -"\n" - -#: moon.py:256 -#, python-format -msgid "" -"Surface Visibility:\n" -"%.0f%% (estimated)\n" -"\n" -msgstr "" -"T'ejwa' ti ebal:\n" -"%.0f%%(estimada)\n" -"\n" - -#: moon.py:257 -#, python-format -msgid "" -"Selenographic Terminator Longitude:\n" -"%(deg).1f°%(westOrEast)s (%(riseOrSet)s)\n" -"\n" -msgstr "" -"In nakel an putundhom selenográfico:\n" -"%(deg).1f˚%(westOrEast)s (%(riseOrSet)s)\n" -"\n" - -#: moon.py:258 -#, python-format -msgid "" -"Next Full Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"Xi ta'tal an t'uchat its':\n" -"%(date)s en %(days).0f días\n" -"\n" - -#: moon.py:259 -#, python-format -msgid "" -"Next New Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"Xi ta'tal a it its':\n" -"%(date)s en %(days).0f días\n" -"\n" - -#: moon.py:260 -#, python-format -msgid "" -"Next Lunar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"Xi ta'tal a K'apap a Its':\n" -"%(date)s en %(days).0f días\n" -"\n" - -#: moon.py:261 -#, python-format -msgid "" -"Next Solar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"Xi ta'tal k'apab a k'ijchaj':\n" -"%(date)s en %(days).0f días\n" -"\n" - -#: moon.py:354 -msgid "SNWE" -msgstr "SNWE" - -#: moon.py:357 -msgid "NSEW" -msgstr "NSEW" - -#: moon.py:409 -msgid "Latitude" -msgstr "Latitud" - -#: moon.py:411 -msgid "Longitude" -msgstr "Nakel an tsabál" - -#: moon.py:522 -msgid "west" -msgstr "otsel kijchaj" - -#: moon.py:524 -msgid "east" -msgstr "kalel k'ijchaj" - -#: moon.py:527 -msgid "Sunset" -msgstr "U k'wabab" - -#: moon.py:529 -msgid "Sunrise" -msgstr "Kálel" - -#: moon.py:545 moon.py:561 -msgid "New Moon" -msgstr "It a its'" - -#: moon.py:547 -msgid "Waxing Crescent" -msgstr "Tejwa' a It its'" - -#: moon.py:549 -msgid "First Quarter" -msgstr "Ts'ejel chudhel a its'" - -#: moon.py:551 -msgid "Waxing Gibbous" -msgstr "Ts'ejel kidhab chudhel a its'" - -#: moon.py:553 -msgid "Full Moon" -msgstr "T'uchat its'" - -#: moon.py:555 -msgid "Waning Gibbous" -msgstr "Ts'ejel kidháb a chudhel a its'" - -#: moon.py:557 -msgid "Last Quarter" -msgstr "Ts'ejel chudhel a its'" - -#: moon.py:559 -msgid "Waning Crescent" -msgstr "Tsiptimel a its'" diff --git a/po/hy.po b/po/hy.po deleted file mode 100644 index e86fa34..0000000 --- a/po/hy.po +++ /dev/null @@ -1,257 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-10-03 00:33-0400\n" -"PO-Revision-Date: 2013-04-19 21:20+0200\n" -"Last-Translator: anushnur \n" -"Language-Team: LANGUAGE \n" -"Language: hy\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n > 1);\n" -"X-Generator: Pootle 2.0.5\n" - -#. TRANS: "name" option from activity.info file -#: moon.py:68 -msgid "Moon" -msgstr "Լուսին" - -#. TRANS: "summary" option from activity.info file -#. TRANS: "description" option from activity.info file -msgid "" -"For all those interested in the moon! See the different phases of the moon, " -"latitudes and longtiutdes and impress all by \"predicting\" the next full " -"moon!" -msgstr "" -"Բոլոր նրանց համար, ովքեր հետաքրքրված են լուսնով. Տես լուսնի տարբեր փուլերը, " -"լայնությունը և երկարությունը և զարմացրու բոլորին \"գուշակելով\" հաջորդ " -"լիալուսինը:" - -#. TRANS: Date format for next full/new moon and next solar/lunar eclipse -#: moon.py:60 -#, python-format -msgid "%c" -msgstr "%c" - -#: moon.py:92 moon.py:118 -msgid "Toggle Grid View" -msgstr "Միացնել վանդակավոր տեսքը" - -#: moon.py:98 moon.py:124 -msgid "Toggle Hemisphere View" -msgstr "Միացնել կիսագնդային տեսքը" - -#: moon.py:130 -msgid "View" -msgstr "Դիտել" - -#: moon.py:250 -msgid "" -"Today's Moon Information\n" -"\n" -msgstr "" -"Այսօրվա տեղեկատվությունը լուսնի մասին\n" -"\n" - -#: moon.py:252 -#, python-format -msgid "" -"Phase:\n" -"%s\n" -"\n" -msgstr "" -"Փուլը.\n" -"%s\n" -"\n" - -#: moon.py:253 -#, python-format -msgid "" -"Julian Date:\n" -"%.2f (astronomical)\n" -"\n" -msgstr "" -"Հուլիանոսյան ամսաթիվը.\n" -"%.2f (աստղագիտական)\n" -"\n" - -#: moon.py:254 -#, python-format -msgid "" -"Age:\n" -"%(days).0f days, %(hours).0f hours, %(minutes).0f minutes\n" -"\n" -msgstr "" -"Տարիքը.\n" -"%(days).0f օր, %(hours).0f ժամ, %(minutes).0f րոպե\n" -"\n" - -#: moon.py:255 -#, python-format -msgid "" -"Lunation:\n" -"%(phase).2f%% through lunation %(lunation)d\n" -"\n" -msgstr "" -"Լուսնային փուլ.\n" -"%(phase).2f%% լուսնային փուլով %(lunation)d\n" -"\n" - -#: moon.py:256 -#, python-format -msgid "" -"Surface Visibility:\n" -"%.0f%% (estimated)\n" -"\n" -msgstr "" -"Մակերեսային տեսանելիություն.\n" -"%.0f%% (ենթադրյալ)\n" -"\n" - -#: moon.py:257 -#, python-format -msgid "" -"Selenographic Terminator Longitude:\n" -"%(deg).1f°%(westOrEast)s (%(riseOrSet)s)\n" -"\n" -msgstr "" -"Լուսնագրական տերմինատորի երկայնությունը.\n" -"%(deg).1f°%(westOrEast)s (%(riseOrSet)s)\n" -"\n" - -#: moon.py:258 -#, python-format -msgid "" -"Next Full Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"Հաջորդ լիալուսինը.\n" -"%(date)s %(days).0f օր\n" -"\n" - -#: moon.py:259 -#, python-format -msgid "" -"Next New Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"Հաջորդ նորալուսինը.\n" -"%(date)s %(days).0f օր\n" -"\n" - -#: moon.py:260 -#, python-format -msgid "" -"Next Lunar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"Հաջորդ լուսնային խավարումը.\n" -"%(date)s %(days).0f օր\n" -"\n" - -#: moon.py:261 -#, python-format -msgid "" -"Next Solar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"Հաջորդ արևային խավարումը.\n" -"%(date)s %(days).0f օր\n" -"\n" - -# South / North / West / East ? -# -#: moon.py:354 -msgid "SNWE" -msgstr "SNWE" - -# North / South / East / West ? -#: moon.py:357 -msgid "NSEW" -msgstr "NSEW" - -#: moon.py:409 -msgid "Latitude" -msgstr "Լայնություն" - -#: moon.py:411 -msgid "Longitude" -msgstr "Երկայնություն" - -#: moon.py:522 -msgid "west" -msgstr "Արևմուտք" - -#: moon.py:524 -msgid "east" -msgstr "Արևելք" - -#: moon.py:527 -msgid "Sunset" -msgstr "Արևամուտ" - -#: moon.py:529 -msgid "Sunrise" -msgstr "Արևածագ" - -#: moon.py:545 moon.py:561 -msgid "New Moon" -msgstr "Նորալուսին" - -#: moon.py:547 -msgid "Waxing Crescent" -msgstr "Հասունացող կիսալուսին" - -#: moon.py:549 -msgid "First Quarter" -msgstr "Առաջին քառորդ" - -#: moon.py:551 -msgid "Waxing Gibbous" -msgstr "Հասունացող երեք քառորդ" - -#: moon.py:553 -msgid "Full Moon" -msgstr "Լիալուսին" - -#: moon.py:555 -msgid "Waning Gibbous" -msgstr "Խամրող երեք քառորդ" - -#: moon.py:557 -msgid "Last Quarter" -msgstr "Վերջին քառորդ" - -#: moon.py:559 -msgid "Waning Crescent" -msgstr "Խամրող կիսալուսին" diff --git a/po/id.po b/po/id.po deleted file mode 100644 index d10ae6e..0000000 --- a/po/id.po +++ /dev/null @@ -1,250 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-10-03 00:33-0400\n" -"PO-Revision-Date: 2013-06-29 12:35+0200\n" -"Last-Translator: andika \n" -"Language-Team: LANGUAGE \n" -"Language: id\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Pootle 2.0.5\n" - -#. TRANS: "name" option from activity.info file -#: moon.py:68 -msgid "Moon" -msgstr "Bulan" - -#. TRANS: "summary" option from activity.info file -#. TRANS: "description" option from activity.info file -msgid "" -"For all those interested in the moon! See the different phases of the moon, " -"latitudes and longtiutdes and impress all by \"predicting\" the next full " -"moon!" -msgstr "" - -#. TRANS: Date format for next full/new moon and next solar/lunar eclipse -#: moon.py:60 -#, python-format -msgid "%c" -msgstr "%c" - -#: moon.py:92 moon.py:118 -msgid "Toggle Grid View" -msgstr "Jungkitkan Tampilan Kisi" - -#: moon.py:98 moon.py:124 -msgid "Toggle Hemisphere View" -msgstr "Jungkitkan Tampilan Hemisfer" - -#: moon.py:130 -msgid "View" -msgstr "Tampilan" - -#: moon.py:250 -msgid "" -"Today's Moon Information\n" -"\n" -msgstr "" -"Informasi Bulan Hari Ini\n" -"\n" - -#: moon.py:252 -#, python-format -msgid "" -"Phase:\n" -"%s\n" -"\n" -msgstr "" -"Fase:\n" -"%s\n" -"\n" - -#: moon.py:253 -#, python-format -msgid "" -"Julian Date:\n" -"%.2f (astronomical)\n" -"\n" -msgstr "" - -#: moon.py:254 -#, python-format -msgid "" -"Age:\n" -"%(days).0f days, %(hours).0f hours, %(minutes).0f minutes\n" -"\n" -msgstr "" -"Umur\n" -"%(days).0f hari, %(hours).0f jam, %(minutes).0f menit\n" -"\n" - -#: moon.py:255 -#, python-format -msgid "" -"Lunation:\n" -"%(phase).2f%% through lunation %(lunation)d\n" -"\n" -msgstr "" - -#: moon.py:256 -#, python-format -msgid "" -"Surface Visibility:\n" -"%.0f%% (estimated)\n" -"\n" -msgstr "" -"Kenampakan Permukaan:\n" -"%.0f%% (diperkirakan)\n" -"\n" - -#: moon.py:257 -#, python-format -msgid "" -"Selenographic Terminator Longitude:\n" -"%(deg).1f°%(westOrEast)s (%(riseOrSet)s)\n" -"\n" -msgstr "" - -#: moon.py:258 -#, python-format -msgid "" -"Next Full Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"Bulan Purnama Selanjutnya:\n" -"%(date)s dalam %(days).0f hari\n" -"\n" - -#: moon.py:259 -#, python-format -msgid "" -"Next New Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"Bulan Baru Selanjutnya:\n" -"%(date)s dalam %(days).0f hari\n" -"\n" - -#: moon.py:260 -#, python-format -msgid "" -"Next Lunar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"Gerhana Bulan Selanjutnya:\n" -"%(date)s dalam %(days).0f hari\n" - -#: moon.py:261 -#, python-format -msgid "" -"Next Solar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"Gerhana Matahari Selanjutnya:\n" -"%(date)s dalam %(days).0f hari\n" -"\n" - -#: moon.py:354 -msgid "SNWE" -msgstr "" - -#: moon.py:357 -msgid "NSEW" -msgstr "" - -#: moon.py:409 -msgid "Latitude" -msgstr "Lintang" - -#: moon.py:411 -msgid "Longitude" -msgstr "Bujur" - -#: moon.py:522 -msgid "west" -msgstr "barat" - -#: moon.py:524 -msgid "east" -msgstr "timur" - -#: moon.py:527 -msgid "Sunset" -msgstr "Matahari terbenam" - -#: moon.py:529 -msgid "Sunrise" -msgstr "Matahari terbit" - -#: moon.py:545 moon.py:561 -msgid "New Moon" -msgstr "Bulan Baru" - -#: moon.py:547 -msgid "Waxing Crescent" -msgstr "Bulan Sabit" - -#: moon.py:549 -msgid "First Quarter" -msgstr "" - -#: moon.py:551 -msgid "Waxing Gibbous" -msgstr "" - -#: moon.py:553 -msgid "Full Moon" -msgstr "Bulan Purnama" - -#: moon.py:555 -msgid "Waning Gibbous" -msgstr "" - -#: moon.py:557 -msgid "Last Quarter" -msgstr "" - -#: moon.py:559 -#, fuzzy -msgid "Waning Crescent" -msgstr "Bulan Sabit" diff --git a/po/ig.po b/po/ig.po deleted file mode 100644 index 907af62..0000000 --- a/po/ig.po +++ /dev/null @@ -1,226 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-10-03 00:33-0400\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Translate Toolkit 1.1.1rc4\n" - -#. TRANS: "name" option from activity.info file -#: moon.py:68 -msgid "Moon" -msgstr "" - -#. TRANS: "summary" option from activity.info file -#. TRANS: "description" option from activity.info file -msgid "" -"For all those interested in the moon! See the different phases of the moon, " -"latitudes and longtiutdes and impress all by \"predicting\" the next full " -"moon!" -msgstr "" - -#. TRANS: Date format for next full/new moon and next solar/lunar eclipse -#: moon.py:60 -#, python-format -msgid "%c" -msgstr "" - -#: moon.py:92 moon.py:118 -msgid "Toggle Grid View" -msgstr "" - -#: moon.py:98 moon.py:124 -msgid "Toggle Hemisphere View" -msgstr "" - -#: moon.py:130 -msgid "View" -msgstr "" - -#: moon.py:250 -msgid "" -"Today's Moon Information\n" -"\n" -msgstr "" - -#: moon.py:252 -#, python-format -msgid "" -"Phase:\n" -"%s\n" -"\n" -msgstr "" - -#: moon.py:253 -#, python-format -msgid "" -"Julian Date:\n" -"%.2f (astronomical)\n" -"\n" -msgstr "" - -#: moon.py:254 -#, python-format -msgid "" -"Age:\n" -"%(days).0f days, %(hours).0f hours, %(minutes).0f minutes\n" -"\n" -msgstr "" - -#: moon.py:255 -#, python-format -msgid "" -"Lunation:\n" -"%(phase).2f%% through lunation %(lunation)d\n" -"\n" -msgstr "" - -#: moon.py:256 -#, python-format -msgid "" -"Surface Visibility:\n" -"%.0f%% (estimated)\n" -"\n" -msgstr "" - -#: moon.py:257 -#, python-format -msgid "" -"Selenographic Terminator Longitude:\n" -"%(deg).1f°%(westOrEast)s (%(riseOrSet)s)\n" -"\n" -msgstr "" - -#: moon.py:258 -#, python-format -msgid "" -"Next Full Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:259 -#, python-format -msgid "" -"Next New Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:260 -#, python-format -msgid "" -"Next Lunar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:261 -#, python-format -msgid "" -"Next Solar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:354 -msgid "SNWE" -msgstr "" - -#: moon.py:357 -msgid "NSEW" -msgstr "" - -#: moon.py:409 -msgid "Latitude" -msgstr "" - -#: moon.py:411 -msgid "Longitude" -msgstr "" - -#: moon.py:522 -msgid "west" -msgstr "" - -#: moon.py:524 -msgid "east" -msgstr "" - -#: moon.py:527 -msgid "Sunset" -msgstr "" - -#: moon.py:529 -msgid "Sunrise" -msgstr "" - -#: moon.py:545 moon.py:561 -msgid "New Moon" -msgstr "" - -#: moon.py:547 -msgid "Waxing Crescent" -msgstr "" - -#: moon.py:549 -msgid "First Quarter" -msgstr "" - -#: moon.py:551 -msgid "Waxing Gibbous" -msgstr "" - -#: moon.py:553 -msgid "Full Moon" -msgstr "" - -#: moon.py:555 -msgid "Waning Gibbous" -msgstr "" - -#: moon.py:557 -msgid "Last Quarter" -msgstr "" - -#: moon.py:559 -msgid "Waning Crescent" -msgstr "" diff --git a/po/is.po b/po/is.po deleted file mode 100644 index 907af62..0000000 --- a/po/is.po +++ /dev/null @@ -1,226 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-10-03 00:33-0400\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Translate Toolkit 1.1.1rc4\n" - -#. TRANS: "name" option from activity.info file -#: moon.py:68 -msgid "Moon" -msgstr "" - -#. TRANS: "summary" option from activity.info file -#. TRANS: "description" option from activity.info file -msgid "" -"For all those interested in the moon! See the different phases of the moon, " -"latitudes and longtiutdes and impress all by \"predicting\" the next full " -"moon!" -msgstr "" - -#. TRANS: Date format for next full/new moon and next solar/lunar eclipse -#: moon.py:60 -#, python-format -msgid "%c" -msgstr "" - -#: moon.py:92 moon.py:118 -msgid "Toggle Grid View" -msgstr "" - -#: moon.py:98 moon.py:124 -msgid "Toggle Hemisphere View" -msgstr "" - -#: moon.py:130 -msgid "View" -msgstr "" - -#: moon.py:250 -msgid "" -"Today's Moon Information\n" -"\n" -msgstr "" - -#: moon.py:252 -#, python-format -msgid "" -"Phase:\n" -"%s\n" -"\n" -msgstr "" - -#: moon.py:253 -#, python-format -msgid "" -"Julian Date:\n" -"%.2f (astronomical)\n" -"\n" -msgstr "" - -#: moon.py:254 -#, python-format -msgid "" -"Age:\n" -"%(days).0f days, %(hours).0f hours, %(minutes).0f minutes\n" -"\n" -msgstr "" - -#: moon.py:255 -#, python-format -msgid "" -"Lunation:\n" -"%(phase).2f%% through lunation %(lunation)d\n" -"\n" -msgstr "" - -#: moon.py:256 -#, python-format -msgid "" -"Surface Visibility:\n" -"%.0f%% (estimated)\n" -"\n" -msgstr "" - -#: moon.py:257 -#, python-format -msgid "" -"Selenographic Terminator Longitude:\n" -"%(deg).1f°%(westOrEast)s (%(riseOrSet)s)\n" -"\n" -msgstr "" - -#: moon.py:258 -#, python-format -msgid "" -"Next Full Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:259 -#, python-format -msgid "" -"Next New Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:260 -#, python-format -msgid "" -"Next Lunar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:261 -#, python-format -msgid "" -"Next Solar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:354 -msgid "SNWE" -msgstr "" - -#: moon.py:357 -msgid "NSEW" -msgstr "" - -#: moon.py:409 -msgid "Latitude" -msgstr "" - -#: moon.py:411 -msgid "Longitude" -msgstr "" - -#: moon.py:522 -msgid "west" -msgstr "" - -#: moon.py:524 -msgid "east" -msgstr "" - -#: moon.py:527 -msgid "Sunset" -msgstr "" - -#: moon.py:529 -msgid "Sunrise" -msgstr "" - -#: moon.py:545 moon.py:561 -msgid "New Moon" -msgstr "" - -#: moon.py:547 -msgid "Waxing Crescent" -msgstr "" - -#: moon.py:549 -msgid "First Quarter" -msgstr "" - -#: moon.py:551 -msgid "Waxing Gibbous" -msgstr "" - -#: moon.py:553 -msgid "Full Moon" -msgstr "" - -#: moon.py:555 -msgid "Waning Gibbous" -msgstr "" - -#: moon.py:557 -msgid "Last Quarter" -msgstr "" - -#: moon.py:559 -msgid "Waning Crescent" -msgstr "" diff --git a/po/it.po b/po/it.po deleted file mode 100644 index 3dea2cd..0000000 --- a/po/it.po +++ /dev/null @@ -1,272 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# Moon XO's Activity translation -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# Gabriel Menini , 2008. -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-10-03 00:33-0400\n" -"PO-Revision-Date: 2013-11-06 23:26+0200\n" -"Last-Translator: arosella \n" -"Language-Team: Spanish \n" -"Language: it\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.5\n" - -#. TRANS: "name" option from activity.info file -#: moon.py:68 -msgid "Moon" -msgstr "Luna" - -#. TRANS: "summary" option from activity.info file -#. TRANS: "description" option from activity.info file -msgid "" -"For all those interested in the moon! See the different phases of the moon, " -"latitudes and longtiutdes and impress all by \"predicting\" the next full " -"moon!" -msgstr "" -"Per tutti quelli a cui interessa la luna! Guarda le diverse fasi lunari, " -"latitudini e longitudini e stupisci tutti con le tue \"predizioni\" sulle " -"prossime fasi lunari!" - -#. TRANS: Date format for next full/new moon and next solar/lunar eclipse -#: moon.py:60 -#, python-format -msgid "%c" -msgstr "%c" - -#: moon.py:92 moon.py:118 -msgid "Toggle Grid View" -msgstr "Cambia visualizzazione griglia" - -#: moon.py:98 moon.py:124 -msgid "Toggle Hemisphere View" -msgstr "Cambia vista emisfero" - -#: moon.py:130 -msgid "View" -msgstr "Guarda" - -#: moon.py:250 -msgid "" -"Today's Moon Information\n" -"\n" -msgstr "" -"Informazioni sulla Luna per oggi\n" -"\n" - -#: moon.py:252 -#, python-format -msgid "" -"Phase:\n" -"%s\n" -"\n" -msgstr "" -"Fase:\n" -"%s\n" -"\n" - -#: moon.py:253 -#, python-format -msgid "" -"Julian Date:\n" -"%.2f (astronomical)\n" -"\n" -msgstr "" -"Data Cal.Giuliano:\n" -"%.2f (astronomical)\n" -"\n" - -#: moon.py:254 -#, python-format -msgid "" -"Age:\n" -"%(days).0f days, %(hours).0f hours, %(minutes).0f minutes\n" -"\n" -msgstr "" -"Età:\n" -"%(days).0f giorni, %(hours).0f ore, %(minutes).0f minuti\n" -"\n" - -#: moon.py:255 -#, python-format -msgid "" -"Lunation:\n" -"%(phase).2f%% through lunation %(lunation)d\n" -"\n" -msgstr "" -"Lunazione:\n" -"%(phase).2f%% della Lunazione %(lunation)d\n" -"\n" - -#: moon.py:256 -#, python-format -msgid "" -"Surface Visibility:\n" -"%.0f%% (estimated)\n" -"\n" -msgstr "" -"Visibilità della Superficie:\n" -"%.0f%% (estimated)\n" -"\n" - -#: moon.py:257 -#, python-format -msgid "" -"Selenographic Terminator Longitude:\n" -"%(deg).1f°%(westOrEast)s (%(riseOrSet)s)\n" -"\n" -msgstr "" -"Longitudine Terminatore Selenografico:\n" -"%(deg).1f°%(westOrEast)s (%(riseOrSet)s)\n" -"\n" - -#: moon.py:258 -#, python-format -msgid "" -"Next Full Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"Prossima Luna Piena:\n" -"%(date)s in %(days).0f giorni\n" -"\n" - -#: moon.py:259 -#, python-format -msgid "" -"Next New Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"Prossima Luna Nuova:\n" -"%(date)s in %(days).0f giorni\n" -"\n" - -#: moon.py:260 -#, python-format -msgid "" -"Next Lunar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"Prossima Eclisse di Luna:\n" -"%(date)s in %(days).0f giorni\n" -"\n" - -#: moon.py:261 -#, python-format -msgid "" -"Next Solar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"Prossima Eclisse di Sole:\n" -"%(date)s in %(days).0f giorni\n" -"\n" - -#: moon.py:354 -msgid "SNWE" -msgstr "SNOE" - -#: moon.py:357 -msgid "NSEW" -msgstr "NSEO" - -#: moon.py:409 -msgid "Latitude" -msgstr "Latitudine" - -#: moon.py:411 -msgid "Longitude" -msgstr "Longitudine" - -#: moon.py:522 -msgid "west" -msgstr "ovest" - -#: moon.py:524 -msgid "east" -msgstr "est" - -#: moon.py:527 -msgid "Sunset" -msgstr "Tramonto" - -#: moon.py:529 -msgid "Sunrise" -msgstr "Alba" - -#: moon.py:545 moon.py:561 -msgid "New Moon" -msgstr "Luna Nuova" - -#: moon.py:547 -msgid "Waxing Crescent" -msgstr "Falce di Luna Crescente" - -#: moon.py:549 -msgid "First Quarter" -msgstr "Primo Quarto" - -#: moon.py:551 -msgid "Waxing Gibbous" -msgstr "Gobba Crescente" - -#: moon.py:553 -msgid "Full Moon" -msgstr "Luna Piena" - -#: moon.py:555 -msgid "Waning Gibbous" -msgstr "Gobba Calante" - -#: moon.py:557 -msgid "Last Quarter" -msgstr "Quarto Calante" - -#: moon.py:559 -msgid "Waning Crescent" -msgstr "Falce di Luna Calante" - -#, python-format -#~ msgid "" -#~ "Selenographic Terminator Longitude:\n" -#~ "%(deg).1f˚%(westOrEast)s (%(riseOrSet)s)\n" -#~ "\n" -#~ msgstr "" -#~ "Longitudine del Terminatore Selenografico:\n" -#~ "%(deg).1f˚%(westOrEast)s (%(riseOrSet)s)\n" -#~ "\n" diff --git a/po/ja.po b/po/ja.po deleted file mode 100644 index 1e9b30a..0000000 --- a/po/ja.po +++ /dev/null @@ -1,259 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-10-03 00:33-0400\n" -"PO-Revision-Date: 2011-12-05 03:15+0200\n" -"Last-Translator: shirayuki \n" -"Language-Team: LANGUAGE \n" -"Language: ja\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Pootle 2.0.5\n" - -#. TRANS: "name" option from activity.info file -#: moon.py:68 -msgid "Moon" -msgstr "Moon/月" - -#. TRANS: "summary" option from activity.info file -#. TRANS: "description" option from activity.info file -msgid "" -"For all those interested in the moon! See the different phases of the moon, " -"latitudes and longtiutdes and impress all by \"predicting\" the next full " -"moon!" -msgstr "" - -#. TRANS: Date format for next full/new moon and next solar/lunar eclipse -#: moon.py:60 -#, python-format -msgid "%c" -msgstr "%c" - -#: moon.py:92 moon.py:118 -msgid "Toggle Grid View" -msgstr "グリッド表示の切り替え" - -#: moon.py:98 moon.py:124 -msgid "Toggle Hemisphere View" -msgstr "表示する半球の切り替え" - -#: moon.py:130 -msgid "View" -msgstr "表示" - -#: moon.py:250 -msgid "" -"Today's Moon Information\n" -"\n" -msgstr "" -"今日の月\n" -"\n" - -#: moon.py:252 -#, python-format -msgid "" -"Phase:\n" -"%s\n" -"\n" -msgstr "" -"月相:\n" -"%s\n" -"\n" - -#: moon.py:253 -#, python-format -msgid "" -"Julian Date:\n" -"%.2f (astronomical)\n" -"\n" -msgstr "" -"ユリウス通日:\n" -"%.2f\n" -"\n" - -#: moon.py:254 -#, python-format -msgid "" -"Age:\n" -"%(days).0f days, %(hours).0f hours, %(minutes).0f minutes\n" -"\n" -msgstr "" -"月齢:\n" -"%(days).0f 日、%(hours).0f 時間, %(minutes).0f 分\n" -"\n" - -#: moon.py:255 -#, python-format -msgid "" -"Lunation:\n" -"%(phase).2f%% through lunation %(lunation)d\n" -"\n" -msgstr "" -"朔望:\n" -"%(phase).2f%% (月期 %(lunation)d)\n" -"\n" - -#: moon.py:256 -#, python-format -msgid "" -"Surface Visibility:\n" -"%.0f%% (estimated)\n" -"\n" -msgstr "" -"輝面比:\n" -"%.0f%% (概算)\n" -"\n" - -#: moon.py:257 -#, python-format -msgid "" -"Selenographic Terminator Longitude:\n" -"%(deg).1f°%(westOrEast)s (%(riseOrSet)s)\n" -"\n" -msgstr "" -"明暗界線の月面経度:\n" -"%(deg).1f°%(westOrEast)s(%(riseOrSet)s)\n" -"\n" - -#: moon.py:258 -#, python-format -msgid "" -"Next Full Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"次の満月:\n" -"%(date)s (%(days).0f日後)\n" -"\n" - -#: moon.py:259 -#, python-format -msgid "" -"Next New Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"次の新月:\n" -"%(date)s (%(days).0f日後)\n" -"\n" - -#: moon.py:260 -#, python-format -msgid "" -"Next Lunar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"次の月食:\n" -"%(date)s (%(days).0f日後)\n" -"\n" - -#: moon.py:261 -#, python-format -msgid "" -"Next Solar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"次の日食:\n" -"%(date)s (%(days).0f日後)\n" -"\n" - -#: moon.py:354 -msgid "SNWE" -msgstr "南北西東" - -#: moon.py:357 -msgid "NSEW" -msgstr "北南東西" - -#: moon.py:409 -msgid "Latitude" -msgstr "緯度" - -#: moon.py:411 -msgid "Longitude" -msgstr "経度" - -#: moon.py:522 -msgid "west" -msgstr "西" - -#: moon.py:524 -msgid "east" -msgstr "東" - -#: moon.py:527 -msgid "Sunset" -msgstr "日没" - -#: moon.py:529 -msgid "Sunrise" -msgstr "日の出" - -#: moon.py:545 moon.py:561 -msgid "New Moon" -msgstr "新月" - -#: moon.py:547 -msgid "Waxing Crescent" -msgstr "満ちゆく三日月" - -#: moon.py:549 -msgid "First Quarter" -msgstr "上弦、半月" - -#: moon.py:551 -msgid "Waxing Gibbous" -msgstr "十三夜の月" - -#: moon.py:553 -msgid "Full Moon" -msgstr "満月" - -#: moon.py:555 -msgid "Waning Gibbous" -msgstr "十六夜の月" - -#: moon.py:557 -msgid "Last Quarter" -msgstr "下弦、半月" - -#: moon.py:559 -msgid "Waning Crescent" -msgstr "欠けゆく三日月" diff --git a/po/km.po b/po/km.po deleted file mode 100644 index e355d02..0000000 --- a/po/km.po +++ /dev/null @@ -1,219 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-10-03 00:33-0400\n" -"PO-Revision-Date: 2009-07-01 06:57-0400\n" -"Last-Translator: Philipp Kocher \n" -"Language-Team: LANGUAGE \n" -"Language: km\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Pootle 1.2.1\n" - -#. TRANS: "name" option from activity.info file -#: moon.py:68 -msgid "Moon" -msgstr "ព្រះចន្ទ" - -#. TRANS: "summary" option from activity.info file -#. TRANS: "description" option from activity.info file -msgid "" -"For all those interested in the moon! See the different phases of the moon, " -"latitudes and longtiutdes and impress all by \"predicting\" the next full " -"moon!" -msgstr "" - -#. TRANS: Date format for next full/new moon and next solar/lunar eclipse -#: moon.py:60 -#, python-format -msgid "%c" -msgstr "%c" - -#: moon.py:92 moon.py:118 -msgid "Toggle Grid View" -msgstr "" - -#: moon.py:98 moon.py:124 -msgid "Toggle Hemisphere View" -msgstr "" - -#: moon.py:130 -msgid "View" -msgstr "មើល" - -#: moon.py:250 -msgid "" -"Today's Moon Information\n" -"\n" -msgstr "" -"ថ្ងៃនេះមានពត៌មានអំពីព្រះចន្ទ\n" -"\n" - -#: moon.py:252 -#, python-format -msgid "" -"Phase:\n" -"%s\n" -"\n" -msgstr "" -"ជំហាន\n" -"%s\n" -"\n" - -#: moon.py:253 -#, python-format -msgid "" -"Julian Date:\n" -"%.2f (astronomical)\n" -"\n" -msgstr "" - -#: moon.py:254 -#, python-format -msgid "" -"Age:\n" -"%(days).0f days, %(hours).0f hours, %(minutes).0f minutes\n" -"\n" -msgstr "" -"អាយុ៖\n" -" %(days).0f នៃថ្ងៃ %(hours).0f នៃម៉ោង %(minutes).0f នៃនាទី \n" -"\n" - -#: moon.py:255 -#, python-format -msgid "" -"Lunation:\n" -"%(phase).2f%% through lunation %(lunation)d\n" -"\n" -msgstr "" - -#: moon.py:256 -#, python-format -msgid "" -"Surface Visibility:\n" -"%.0f%% (estimated)\n" -"\n" -msgstr "" - -#: moon.py:257 -#, python-format -msgid "" -"Selenographic Terminator Longitude:\n" -"%(deg).1f°%(westOrEast)s (%(riseOrSet)s)\n" -"\n" -msgstr "" - -#: moon.py:258 -#, python-format -msgid "" -"Next Full Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"ព្រះច៍ន្នពេញវង្សបន្ទាប់\n" -"%(date)s ក្នុង %(days).0f នៃថ្ងៃ\n" -"\n" - -#: moon.py:259 -#, python-format -msgid "" -"Next New Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"ព្រះច៍ន្នថ្មីបន្ទាប់\n" -"%(date)s ក្នុង %(days).0f នៃថ្ងៃ\n" -"\n" - -#: moon.py:260 -#, python-format -msgid "" -"Next Lunar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"ព្រះច៍ន្នពេញវង្សបន្ទាប់\n" -"%(date)s ក្នុង %(days).0f នៃថ្ងៃ\n" -"\n" - -#: moon.py:261 -#, python-format -msgid "" -"Next Solar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"ព្រះច៍ន្នពេញវង្សបន្ទាប់\n" -"%(date)s ក្នុង %(days).0f នៃថ្ងៃ\n" -"\n" - -#: moon.py:354 -msgid "SNWE" -msgstr "" - -#: moon.py:357 -msgid "NSEW" -msgstr "" - -#: moon.py:409 -msgid "Latitude" -msgstr "រយៈទទឹង" - -#: moon.py:411 -msgid "Longitude" -msgstr "រយៈបណ្ដោយ" - -#: moon.py:522 -msgid "west" -msgstr "ខាងលិច" - -#: moon.py:524 -msgid "east" -msgstr "ខាងកើត" - -#: moon.py:527 -msgid "Sunset" -msgstr "ថ្ងៃលិច" - -#: moon.py:529 -msgid "Sunrise" -msgstr "ថ្ងៃរះ" - -#: moon.py:545 moon.py:561 -msgid "New Moon" -msgstr "ព្រះច័ន្ទ" - -#: moon.py:547 -msgid "Waxing Crescent" -msgstr "" - -#: moon.py:549 -msgid "First Quarter" -msgstr "បីខែដំបូង" - -#: moon.py:551 -msgid "Waxing Gibbous" -msgstr "" - -#: moon.py:553 -msgid "Full Moon" -msgstr "ព្រះចន្ទវង្ស" - -#: moon.py:555 -msgid "Waning Gibbous" -msgstr "" - -#: moon.py:557 -msgid "Last Quarter" -msgstr "បីខែចុងក្រោយ" - -#: moon.py:559 -msgid "Waning Crescent" -msgstr "" diff --git a/po/kn.po b/po/kn.po deleted file mode 100644 index b3d104f..0000000 --- a/po/kn.po +++ /dev/null @@ -1,202 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-10-03 00:33-0400\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Translate Toolkit 1.6.0\n" - -#. TRANS: "name" option from activity.info file -#: moon.py:68 -msgid "Moon" -msgstr "" - -#. TRANS: "summary" option from activity.info file -#. TRANS: "description" option from activity.info file -msgid "" -"For all those interested in the moon! See the different phases of the moon, " -"latitudes and longtiutdes and impress all by \"predicting\" the next full " -"moon!" -msgstr "" - -#. TRANS: Date format for next full/new moon and next solar/lunar eclipse -#: moon.py:60 -#, python-format -msgid "%c" -msgstr "" - -#: moon.py:92 moon.py:118 -msgid "Toggle Grid View" -msgstr "" - -#: moon.py:98 moon.py:124 -msgid "Toggle Hemisphere View" -msgstr "" - -#: moon.py:130 -msgid "View" -msgstr "" - -#: moon.py:250 -msgid "" -"Today's Moon Information\n" -"\n" -msgstr "" - -#: moon.py:252 -#, python-format -msgid "" -"Phase:\n" -"%s\n" -"\n" -msgstr "" - -#: moon.py:253 -#, python-format -msgid "" -"Julian Date:\n" -"%.2f (astronomical)\n" -"\n" -msgstr "" - -#: moon.py:254 -#, python-format -msgid "" -"Age:\n" -"%(days).0f days, %(hours).0f hours, %(minutes).0f minutes\n" -"\n" -msgstr "" - -#: moon.py:255 -#, python-format -msgid "" -"Lunation:\n" -"%(phase).2f%% through lunation %(lunation)d\n" -"\n" -msgstr "" - -#: moon.py:256 -#, python-format -msgid "" -"Surface Visibility:\n" -"%.0f%% (estimated)\n" -"\n" -msgstr "" - -#: moon.py:257 -#, python-format -msgid "" -"Selenographic Terminator Longitude:\n" -"%(deg).1f°%(westOrEast)s (%(riseOrSet)s)\n" -"\n" -msgstr "" - -#: moon.py:258 -#, python-format -msgid "" -"Next Full Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:259 -#, python-format -msgid "" -"Next New Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:260 -#, python-format -msgid "" -"Next Lunar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:261 -#, python-format -msgid "" -"Next Solar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:354 -msgid "SNWE" -msgstr "" - -#: moon.py:357 -msgid "NSEW" -msgstr "" - -#: moon.py:409 -msgid "Latitude" -msgstr "" - -#: moon.py:411 -msgid "Longitude" -msgstr "" - -#: moon.py:522 -msgid "west" -msgstr "" - -#: moon.py:524 -msgid "east" -msgstr "" - -#: moon.py:527 -msgid "Sunset" -msgstr "" - -#: moon.py:529 -msgid "Sunrise" -msgstr "" - -#: moon.py:545 moon.py:561 -msgid "New Moon" -msgstr "" - -#: moon.py:547 -msgid "Waxing Crescent" -msgstr "" - -#: moon.py:549 -msgid "First Quarter" -msgstr "" - -#: moon.py:551 -msgid "Waxing Gibbous" -msgstr "" - -#: moon.py:553 -msgid "Full Moon" -msgstr "" - -#: moon.py:555 -msgid "Waning Gibbous" -msgstr "" - -#: moon.py:557 -msgid "Last Quarter" -msgstr "" - -#: moon.py:559 -msgid "Waning Crescent" -msgstr "" diff --git a/po/ko.po b/po/ko.po deleted file mode 100644 index 907af62..0000000 --- a/po/ko.po +++ /dev/null @@ -1,226 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-10-03 00:33-0400\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Translate Toolkit 1.1.1rc4\n" - -#. TRANS: "name" option from activity.info file -#: moon.py:68 -msgid "Moon" -msgstr "" - -#. TRANS: "summary" option from activity.info file -#. TRANS: "description" option from activity.info file -msgid "" -"For all those interested in the moon! See the different phases of the moon, " -"latitudes and longtiutdes and impress all by \"predicting\" the next full " -"moon!" -msgstr "" - -#. TRANS: Date format for next full/new moon and next solar/lunar eclipse -#: moon.py:60 -#, python-format -msgid "%c" -msgstr "" - -#: moon.py:92 moon.py:118 -msgid "Toggle Grid View" -msgstr "" - -#: moon.py:98 moon.py:124 -msgid "Toggle Hemisphere View" -msgstr "" - -#: moon.py:130 -msgid "View" -msgstr "" - -#: moon.py:250 -msgid "" -"Today's Moon Information\n" -"\n" -msgstr "" - -#: moon.py:252 -#, python-format -msgid "" -"Phase:\n" -"%s\n" -"\n" -msgstr "" - -#: moon.py:253 -#, python-format -msgid "" -"Julian Date:\n" -"%.2f (astronomical)\n" -"\n" -msgstr "" - -#: moon.py:254 -#, python-format -msgid "" -"Age:\n" -"%(days).0f days, %(hours).0f hours, %(minutes).0f minutes\n" -"\n" -msgstr "" - -#: moon.py:255 -#, python-format -msgid "" -"Lunation:\n" -"%(phase).2f%% through lunation %(lunation)d\n" -"\n" -msgstr "" - -#: moon.py:256 -#, python-format -msgid "" -"Surface Visibility:\n" -"%.0f%% (estimated)\n" -"\n" -msgstr "" - -#: moon.py:257 -#, python-format -msgid "" -"Selenographic Terminator Longitude:\n" -"%(deg).1f°%(westOrEast)s (%(riseOrSet)s)\n" -"\n" -msgstr "" - -#: moon.py:258 -#, python-format -msgid "" -"Next Full Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:259 -#, python-format -msgid "" -"Next New Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:260 -#, python-format -msgid "" -"Next Lunar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:261 -#, python-format -msgid "" -"Next Solar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:354 -msgid "SNWE" -msgstr "" - -#: moon.py:357 -msgid "NSEW" -msgstr "" - -#: moon.py:409 -msgid "Latitude" -msgstr "" - -#: moon.py:411 -msgid "Longitude" -msgstr "" - -#: moon.py:522 -msgid "west" -msgstr "" - -#: moon.py:524 -msgid "east" -msgstr "" - -#: moon.py:527 -msgid "Sunset" -msgstr "" - -#: moon.py:529 -msgid "Sunrise" -msgstr "" - -#: moon.py:545 moon.py:561 -msgid "New Moon" -msgstr "" - -#: moon.py:547 -msgid "Waxing Crescent" -msgstr "" - -#: moon.py:549 -msgid "First Quarter" -msgstr "" - -#: moon.py:551 -msgid "Waxing Gibbous" -msgstr "" - -#: moon.py:553 -msgid "Full Moon" -msgstr "" - -#: moon.py:555 -msgid "Waning Gibbous" -msgstr "" - -#: moon.py:557 -msgid "Last Quarter" -msgstr "" - -#: moon.py:559 -msgid "Waning Crescent" -msgstr "" diff --git a/po/kos.po b/po/kos.po deleted file mode 100644 index 94dcf9c..0000000 --- a/po/kos.po +++ /dev/null @@ -1,226 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-10-03 00:33-0400\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Translate Toolkit 1.3.0\n" - -#. TRANS: "name" option from activity.info file -#: moon.py:68 -msgid "Moon" -msgstr "" - -#. TRANS: "summary" option from activity.info file -#. TRANS: "description" option from activity.info file -msgid "" -"For all those interested in the moon! See the different phases of the moon, " -"latitudes and longtiutdes and impress all by \"predicting\" the next full " -"moon!" -msgstr "" - -#. TRANS: Date format for next full/new moon and next solar/lunar eclipse -#: moon.py:60 -#, python-format -msgid "%c" -msgstr "" - -#: moon.py:92 moon.py:118 -msgid "Toggle Grid View" -msgstr "" - -#: moon.py:98 moon.py:124 -msgid "Toggle Hemisphere View" -msgstr "" - -#: moon.py:130 -msgid "View" -msgstr "" - -#: moon.py:250 -msgid "" -"Today's Moon Information\n" -"\n" -msgstr "" - -#: moon.py:252 -#, python-format -msgid "" -"Phase:\n" -"%s\n" -"\n" -msgstr "" - -#: moon.py:253 -#, python-format -msgid "" -"Julian Date:\n" -"%.2f (astronomical)\n" -"\n" -msgstr "" - -#: moon.py:254 -#, python-format -msgid "" -"Age:\n" -"%(days).0f days, %(hours).0f hours, %(minutes).0f minutes\n" -"\n" -msgstr "" - -#: moon.py:255 -#, python-format -msgid "" -"Lunation:\n" -"%(phase).2f%% through lunation %(lunation)d\n" -"\n" -msgstr "" - -#: moon.py:256 -#, python-format -msgid "" -"Surface Visibility:\n" -"%.0f%% (estimated)\n" -"\n" -msgstr "" - -#: moon.py:257 -#, python-format -msgid "" -"Selenographic Terminator Longitude:\n" -"%(deg).1f°%(westOrEast)s (%(riseOrSet)s)\n" -"\n" -msgstr "" - -#: moon.py:258 -#, python-format -msgid "" -"Next Full Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:259 -#, python-format -msgid "" -"Next New Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:260 -#, python-format -msgid "" -"Next Lunar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:261 -#, python-format -msgid "" -"Next Solar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:354 -msgid "SNWE" -msgstr "" - -#: moon.py:357 -msgid "NSEW" -msgstr "" - -#: moon.py:409 -msgid "Latitude" -msgstr "" - -#: moon.py:411 -msgid "Longitude" -msgstr "" - -#: moon.py:522 -msgid "west" -msgstr "" - -#: moon.py:524 -msgid "east" -msgstr "" - -#: moon.py:527 -msgid "Sunset" -msgstr "" - -#: moon.py:529 -msgid "Sunrise" -msgstr "" - -#: moon.py:545 moon.py:561 -msgid "New Moon" -msgstr "" - -#: moon.py:547 -msgid "Waxing Crescent" -msgstr "" - -#: moon.py:549 -msgid "First Quarter" -msgstr "" - -#: moon.py:551 -msgid "Waxing Gibbous" -msgstr "" - -#: moon.py:553 -msgid "Full Moon" -msgstr "" - -#: moon.py:555 -msgid "Waning Gibbous" -msgstr "" - -#: moon.py:557 -msgid "Last Quarter" -msgstr "" - -#: moon.py:559 -msgid "Waning Crescent" -msgstr "" diff --git a/po/ku.po b/po/ku.po deleted file mode 100644 index f24b985..0000000 --- a/po/ku.po +++ /dev/null @@ -1,198 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-10-03 00:33-0400\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Translate Toolkit 1.7.0\n" - -#. TRANS: "name" option from activity.info file -#: moon.py:68 -msgid "Moon" -msgstr "" - -#. TRANS: "summary" option from activity.info file -#. TRANS: "description" option from activity.info file -msgid "" -"For all those interested in the moon! See the different phases of the moon, " -"latitudes and longtiutdes and impress all by \"predicting\" the next full " -"moon!" -msgstr "" - -#. TRANS: Date format for next full/new moon and next solar/lunar eclipse -#: moon.py:60 -#, python-format -msgid "%c" -msgstr "" - -#: moon.py:92 moon.py:118 -msgid "Toggle Grid View" -msgstr "" - -#: moon.py:98 moon.py:124 -msgid "Toggle Hemisphere View" -msgstr "" - -#: moon.py:130 -msgid "View" -msgstr "" - -#: moon.py:250 -msgid "" -"Today's Moon Information\n" -"\n" -msgstr "" - -#: moon.py:252 -#, python-format -msgid "" -"Phase:\n" -"%s\n" -"\n" -msgstr "" - -#: moon.py:253 -#, python-format -msgid "" -"Julian Date:\n" -"%.2f (astronomical)\n" -"\n" -msgstr "" - -#: moon.py:254 -#, python-format -msgid "" -"Age:\n" -"%(days).0f days, %(hours).0f hours, %(minutes).0f minutes\n" -"\n" -msgstr "" - -#: moon.py:255 -#, python-format -msgid "" -"Lunation:\n" -"%(phase).2f%% through lunation %(lunation)d\n" -"\n" -msgstr "" - -#: moon.py:256 -#, python-format -msgid "" -"Surface Visibility:\n" -"%.0f%% (estimated)\n" -"\n" -msgstr "" - -#: moon.py:257 -#, python-format -msgid "" -"Selenographic Terminator Longitude:\n" -"%(deg).1f°%(westOrEast)s (%(riseOrSet)s)\n" -"\n" -msgstr "" - -#: moon.py:258 -#, python-format -msgid "" -"Next Full Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:259 -#, python-format -msgid "" -"Next New Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:260 -#, python-format -msgid "" -"Next Lunar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:261 -#, python-format -msgid "" -"Next Solar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:354 -msgid "SNWE" -msgstr "" - -#: moon.py:357 -msgid "NSEW" -msgstr "" - -#: moon.py:409 -msgid "Latitude" -msgstr "" - -#: moon.py:411 -msgid "Longitude" -msgstr "" - -#: moon.py:522 -msgid "west" -msgstr "" - -#: moon.py:524 -msgid "east" -msgstr "" - -#: moon.py:527 -msgid "Sunset" -msgstr "" - -#: moon.py:529 -msgid "Sunrise" -msgstr "" - -#: moon.py:545 moon.py:561 -msgid "New Moon" -msgstr "" - -#: moon.py:547 -msgid "Waxing Crescent" -msgstr "" - -#: moon.py:549 -msgid "First Quarter" -msgstr "" - -#: moon.py:551 -msgid "Waxing Gibbous" -msgstr "" - -#: moon.py:553 -msgid "Full Moon" -msgstr "" - -#: moon.py:555 -msgid "Waning Gibbous" -msgstr "" - -#: moon.py:557 -msgid "Last Quarter" -msgstr "" - -#: moon.py:559 -msgid "Waning Crescent" -msgstr "" diff --git a/po/lt.po b/po/lt.po deleted file mode 100644 index 1b622f2..0000000 --- a/po/lt.po +++ /dev/null @@ -1,226 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-10-03 00:33-0400\n" -"PO-Revision-Date: 2017-11-12 20:16+0000\n" -"Last-Translator: Moo \n" -"Language-Team: LANGUAGE \n" -"Language: lt\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && " -"(n%100<10 || n%100>=20) ? 1 : 2);\n" -"X-Generator: Pootle 2.5.1.1\n" -"X-POOTLE-MTIME: 1510517814.000000\n" - -#. TRANS: "name" option from activity.info file -#: moon.py:68 -msgid "Moon" -msgstr "Mėnulis" - -#. TRANS: "summary" option from activity.info file -#. TRANS: "description" option from activity.info file -msgid "" -"For all those interested in the moon! See the different phases of the moon, " -"latitudes and longitudes and impress all by \"predicting\" the next full " -"moon!" -msgstr "" -"Besidomintiems mėnuliu! Matykite įvairias mėnulio fazes, platumas bei " -"ilgumas ir padarykite kitiems įspūdį, \"nuspėdami\" kitą pilnatį." - -#. TRANS: Date format for next full/new moon and next solar/lunar eclipse -#: moon.py:60 -#, python-format -msgid "%c" -msgstr "" - -#: moon.py:92 moon.py:118 -msgid "Toggle Grid View" -msgstr "Perjungti tinklelio rodinį" - -#: moon.py:98 moon.py:124 -msgid "Toggle Hemisphere View" -msgstr "Perjungti pusrutulių rodinį" - -#: moon.py:130 -msgid "View" -msgstr "" - -#: moon.py:250 -msgid "" -"Today's Moon Information\n" -"\n" -msgstr "" -"Šiandienos mėnulio informacija\n" -"\n" - -#: moon.py:252 -#, fuzzy, python-format -msgid "" -"Phase:\n" -"%s\n" -"\n" -msgstr "" -"Fazė:\n" -"%s\n" -"\n" - -#: moon.py:253 -#, python-format -msgid "" -"Julian Date:\n" -"%.2f (astronomical)\n" -"\n" -msgstr "" -"Julijaus data:\n" -"%.2f (astronominė)\n" -"\n" - -#: moon.py:254 -#, python-format -msgid "" -"Age:\n" -"%(days).0f days, %(hours).0f hours, %(minutes).0f minutes\n" -"\n" -msgstr "" -"Amžius:\n" -"%(days).0f dienų, %(hours).0f valandų, %(minutes).0f minučių\n" -"\n" - -#: moon.py:255 -#, python-format -msgid "" -"Lunation:\n" -"%(phase).2f%% through lunation %(lunation)d\n" -"\n" -msgstr "" - -#: moon.py:256 -#, python-format -msgid "" -"Surface Visibility:\n" -"%.0f%% (estimated)\n" -"\n" -msgstr "" - -#: moon.py:257 -#, python-format -msgid "" -"Selenographic Terminator Longitude:\n" -"%(deg).1f°%(westOrEast)s (%(riseOrSet)s)\n" -"\n" -msgstr "" - -#: moon.py:258 -#, python-format -msgid "" -"Next Full Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"Kita pilnatis:\n" -"%(date)s po %(days).0f dienų\n" -"\n" - -#: moon.py:259 -#, python-format -msgid "" -"Next New Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"Kita jaunatis:\n" -"%(date)s po %(days).0f dienų\n" -"\n" - -#: moon.py:260 -#, python-format -msgid "" -"Next Lunar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"Kitas mėnulio užtemimas:\n" -"%(date)s po %(days).0f dienų\n" -"\n" - -#: moon.py:261 -#, python-format -msgid "" -"Next Solar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"Kitas Saulės užtemimas:\n" -"%(date)s po %(days).0f dienų\n" -"\n" - -#: moon.py:354 -msgid "SNWE" -msgstr "ŠPVR" - -#: moon.py:357 -msgid "NSEW" -msgstr "" - -#: moon.py:409 -msgid "Latitude" -msgstr "Platuma" - -#: moon.py:411 -msgid "Longitude" -msgstr "Ilguma" - -#: moon.py:522 -msgid "west" -msgstr "vakarai" - -#: moon.py:524 -msgid "east" -msgstr "rytai" - -#: moon.py:527 -msgid "Sunset" -msgstr "Saulėlydis" - -#: moon.py:529 -msgid "Sunrise" -msgstr "Saulėtekis" - -#: moon.py:545 moon.py:561 -msgid "New Moon" -msgstr "Jaunatis (Naujas mėnulis)" - -#: moon.py:547 -msgid "Waxing Crescent" -msgstr "Jaunatis (Pilnėjantis mėnulis)" - -#: moon.py:549 -msgid "First Quarter" -msgstr "Priešpilnis (Pirmo ketvirčio mėnulis)" - -#: moon.py:551 -msgid "Waxing Gibbous" -msgstr "Priešpilnis (Pilnėjantis kuprotas mėnulis)" - -#: moon.py:553 -msgid "Full Moon" -msgstr "Pilnatis (Pilnas mėnulis)" - -#: moon.py:555 -msgid "Waning Gibbous" -msgstr "Pilnatis (Dylantis kuprotas mėnulis)" - -#: moon.py:557 -msgid "Last Quarter" -msgstr "Delčia (Paskutinio ketvirčio mėnulis)" - -#: moon.py:559 -msgid "Waning Crescent" -msgstr "Delčia (Dylantis mėnulis)" diff --git a/po/lv.po b/po/lv.po deleted file mode 100644 index b3d104f..0000000 --- a/po/lv.po +++ /dev/null @@ -1,202 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-10-03 00:33-0400\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Translate Toolkit 1.6.0\n" - -#. TRANS: "name" option from activity.info file -#: moon.py:68 -msgid "Moon" -msgstr "" - -#. TRANS: "summary" option from activity.info file -#. TRANS: "description" option from activity.info file -msgid "" -"For all those interested in the moon! See the different phases of the moon, " -"latitudes and longtiutdes and impress all by \"predicting\" the next full " -"moon!" -msgstr "" - -#. TRANS: Date format for next full/new moon and next solar/lunar eclipse -#: moon.py:60 -#, python-format -msgid "%c" -msgstr "" - -#: moon.py:92 moon.py:118 -msgid "Toggle Grid View" -msgstr "" - -#: moon.py:98 moon.py:124 -msgid "Toggle Hemisphere View" -msgstr "" - -#: moon.py:130 -msgid "View" -msgstr "" - -#: moon.py:250 -msgid "" -"Today's Moon Information\n" -"\n" -msgstr "" - -#: moon.py:252 -#, python-format -msgid "" -"Phase:\n" -"%s\n" -"\n" -msgstr "" - -#: moon.py:253 -#, python-format -msgid "" -"Julian Date:\n" -"%.2f (astronomical)\n" -"\n" -msgstr "" - -#: moon.py:254 -#, python-format -msgid "" -"Age:\n" -"%(days).0f days, %(hours).0f hours, %(minutes).0f minutes\n" -"\n" -msgstr "" - -#: moon.py:255 -#, python-format -msgid "" -"Lunation:\n" -"%(phase).2f%% through lunation %(lunation)d\n" -"\n" -msgstr "" - -#: moon.py:256 -#, python-format -msgid "" -"Surface Visibility:\n" -"%.0f%% (estimated)\n" -"\n" -msgstr "" - -#: moon.py:257 -#, python-format -msgid "" -"Selenographic Terminator Longitude:\n" -"%(deg).1f°%(westOrEast)s (%(riseOrSet)s)\n" -"\n" -msgstr "" - -#: moon.py:258 -#, python-format -msgid "" -"Next Full Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:259 -#, python-format -msgid "" -"Next New Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:260 -#, python-format -msgid "" -"Next Lunar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:261 -#, python-format -msgid "" -"Next Solar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:354 -msgid "SNWE" -msgstr "" - -#: moon.py:357 -msgid "NSEW" -msgstr "" - -#: moon.py:409 -msgid "Latitude" -msgstr "" - -#: moon.py:411 -msgid "Longitude" -msgstr "" - -#: moon.py:522 -msgid "west" -msgstr "" - -#: moon.py:524 -msgid "east" -msgstr "" - -#: moon.py:527 -msgid "Sunset" -msgstr "" - -#: moon.py:529 -msgid "Sunrise" -msgstr "" - -#: moon.py:545 moon.py:561 -msgid "New Moon" -msgstr "" - -#: moon.py:547 -msgid "Waxing Crescent" -msgstr "" - -#: moon.py:549 -msgid "First Quarter" -msgstr "" - -#: moon.py:551 -msgid "Waxing Gibbous" -msgstr "" - -#: moon.py:553 -msgid "Full Moon" -msgstr "" - -#: moon.py:555 -msgid "Waning Gibbous" -msgstr "" - -#: moon.py:557 -msgid "Last Quarter" -msgstr "" - -#: moon.py:559 -msgid "Waning Crescent" -msgstr "" diff --git a/po/mg.po b/po/mg.po deleted file mode 100644 index 7a1c874..0000000 --- a/po/mg.po +++ /dev/null @@ -1,247 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-10-03 00:33-0400\n" -"PO-Revision-Date: 2009-05-23 06:43-0400\n" -"Last-Translator: dina garnier oeliarisoa \n" -"Language-Team: LANGUAGE \n" -"Language: mg\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n > 1);\n" -"X-Generator: Pootle 1.2.1\n" - -#. TRANS: "name" option from activity.info file -#: moon.py:68 -msgid "Moon" -msgstr "Volana" - -#. TRANS: "summary" option from activity.info file -#. TRANS: "description" option from activity.info file -msgid "" -"For all those interested in the moon! See the different phases of the moon, " -"latitudes and longtiutdes and impress all by \"predicting\" the next full " -"moon!" -msgstr "" - -#. TRANS: Date format for next full/new moon and next solar/lunar eclipse -#: moon.py:60 -#, python-format -msgid "%c" -msgstr "" - -#: moon.py:92 moon.py:118 -msgid "Toggle Grid View" -msgstr "" - -#: moon.py:98 moon.py:124 -msgid "Toggle Hemisphere View" -msgstr "" - -#: moon.py:130 -msgid "View" -msgstr "" - -#: moon.py:250 -msgid "" -"Today's Moon Information\n" -"\n" -msgstr "" -"Vaovao avy amin'ny volana androany\n" -"\n" - -#: moon.py:252 -#, python-format -msgid "" -"Phase:\n" -"%s\n" -"\n" -msgstr "" - -#: moon.py:253 -#, python-format -msgid "" -"Julian Date:\n" -"%.2f (astronomical)\n" -"\n" -msgstr "" - -#: moon.py:254 -#, python-format -msgid "" -"Age:\n" -"%(days).0f days, %(hours).0f hours, %(minutes).0f minutes\n" -"\n" -msgstr "" -"Taona:\n" -"%(andro).amin'ny andro, %(ora).amin'ny ora, %(minitra).amin'ny minitra\n" -"\n" - -#: moon.py:255 -#, python-format -msgid "" -"Lunation:\n" -"%(phase).2f%% through lunation %(lunation)d\n" -"\n" -msgstr "" - -#: moon.py:256 -#, python-format -msgid "" -"Surface Visibility:\n" -"%.0f%% (estimated)\n" -"\n" -msgstr "" - -#: moon.py:257 -#, python-format -msgid "" -"Selenographic Terminator Longitude:\n" -"%(deg).1f°%(westOrEast)s (%(riseOrSet)s)\n" -"\n" -msgstr "" - -#: moon.py:258 -#, python-format -msgid "" -"Next Full Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"Diavolana manaraka:\n" -"%(daty)s in %(andro).amin'ny andro\n" -"\n" - -#: moon.py:259 -#, python-format -#, fuzzy -msgid "" -"Next New Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"Diavolana manaraka:\n" -"%(daty)s in %(andro).amin'ny andro\n" -"\n" - -#: moon.py:260 -#, python-format -#, fuzzy -msgid "" -"Next Lunar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"Diavolana manaraka:\n" -"%(daty)s in %(andro).amin'ny andro\n" -"\n" - -#: moon.py:261 -#, python-format -#, fuzzy -msgid "" -"Next Solar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"Diavolana manaraka:\n" -"%(daty)s in %(andro).amin'ny andro\n" -"\n" - -#: moon.py:354 -msgid "SNWE" -msgstr "" - -#: moon.py:357 -msgid "NSEW" -msgstr "" - -#: moon.py:409 -msgid "Latitude" -msgstr "" - -#: moon.py:411 -msgid "Longitude" -msgstr "" - -#: moon.py:522 -msgid "west" -msgstr "andrefana" - -#: moon.py:524 -msgid "east" -msgstr "atsinanana" - -#: moon.py:527 -msgid "Sunset" -msgstr "" - -#: moon.py:529 -msgid "Sunrise" -msgstr "" - -#: moon.py:545 moon.py:561 -msgid "New Moon" -msgstr "" - -#: moon.py:547 -msgid "Waxing Crescent" -msgstr "" - -#: moon.py:549 -msgid "First Quarter" -msgstr "" - -#: moon.py:551 -msgid "Waxing Gibbous" -msgstr "" - -#: moon.py:553 -msgid "Full Moon" -msgstr "Diavolana" - -#: moon.py:555 -msgid "Waning Gibbous" -msgstr "" - -#: moon.py:557 -msgid "Last Quarter" -msgstr "" - -#: moon.py:559 -msgid "Waning Crescent" -msgstr "" diff --git a/po/mi.po b/po/mi.po deleted file mode 100644 index cabd266..0000000 --- a/po/mi.po +++ /dev/null @@ -1,249 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-10-03 00:33-0400\n" -"PO-Revision-Date: 2013-07-06 18:05+0200\n" -"Last-Translator: Chris \n" -"Language-Team: LANGUAGE \n" -"Language: mi\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.5\n" - -#. TRANS: "name" option from activity.info file -#: moon.py:68 -msgid "Moon" -msgstr "Te Marama" - -#. TRANS: "summary" option from activity.info file -#. TRANS: "description" option from activity.info file -msgid "" -"For all those interested in the moon! See the different phases of the moon, " -"latitudes and longtiutdes and impress all by \"predicting\" the next full " -"moon!" -msgstr "" - -#. TRANS: Date format for next full/new moon and next solar/lunar eclipse -#: moon.py:60 -#, python-format -msgid "%c" -msgstr "%c" - -#: moon.py:92 moon.py:118 -msgid "Toggle Grid View" -msgstr "Takahuri Tiro Mātiti" - -#: moon.py:98 moon.py:124 -msgid "Toggle Hemisphere View" -msgstr "Takahuri Tiro Kōpae" - -#: moon.py:130 -msgid "View" -msgstr "Tiro" - -#: moon.py:250 -msgid "" -"Today's Moon Information\n" -"\n" -msgstr "" -"Mōhiohio Marama mō tēnei rā\n" -"\n" - -#: moon.py:252 -#, python-format -msgid "" -"Phase:\n" -"%s\n" -"\n" -msgstr "" -"Mata:\n" -"ngā %s\n" -"\n" - -#: moon.py:253 -#, python-format -msgid "" -"Julian Date:\n" -"%.2f (astronomical)\n" -"\n" -msgstr "" -"Rā Julian:\n" -"%.2f (tātai arorangi)\n" -"\n" - -#: moon.py:254 -#, python-format -#, python-format, -msgid "" -"Age:\n" -"%(days).0f days, %(hours).0f hours, %(minutes).0f minutes\n" -"\n" -msgstr "" -"Pakeke:\n" -"%(days).0f rā, %(hours).0f hāora, %(minutes).0f meneti\n" -"\n" - -#: moon.py:255 -#, python-format -#, python-format, -msgid "" -"Lunation:\n" -"%(phase).2f%% through lunation %(lunation)d\n" -"\n" -msgstr "" -"HuringaMarama:\n" -"%(phase).2f%% mā te kaupeka %(lunation)d\n" -"\n" - -#: moon.py:256 -#, python-format -msgid "" -"Surface Visibility:\n" -"%.0f%% (estimated)\n" -"\n" -msgstr "" -"Kitenga Mata:\n" -"%.0f%% (estimated)\n" -"\n" - -#: moon.py:257 -#, python-format -msgid "" -"Selenographic Terminator Longitude:\n" -"%(deg).1f°%(westOrEast)s (%(riseOrSet)s)\n" -"\n" -msgstr "" -"Hekenga Whāroa Wehengapō:\n" -"%(deg).1f°%(westOrEast)s (%(riseOrSet)s)\n" -"\n" - -#: moon.py:258 -#, python-format -msgid "" -"Next Full Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"Rākaunui E Heke Mai:\n" -"%(date)s i %(days).0f ngā rangi\n" -"\n" - -#: moon.py:259 -#, python-format -msgid "" -"Next New Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"Kōwhiti E Heke Mai:\n" -"%(date)s i %(days).0f ngā rangi\n" -"\n" - -#: moon.py:260 -#, python-format -msgid "" -"Next Lunar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"Āraitanga kōwhiti E Heke Mai:\n" -"%(date)s i %(days).0f ngā rangi\n" -"\n" - -#: moon.py:261 -#, python-format -msgid "" -"Next Solar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"Āraitanga o Tamanuiterā E Heke Mai:\n" -"%(date)s i %(days).0f ngā rangi\n" -"\n" - -#: moon.py:354 -msgid "SNWE" -msgstr "SNWE" - -#: moon.py:357 -msgid "NSEW" -msgstr "NSEW" - -#: moon.py:409 -msgid "Latitude" -msgstr "Ahopae" - -#: moon.py:411 -msgid "Longitude" -msgstr "Ahopou" - -#: moon.py:522 -msgid "west" -msgstr "hauāuru" - -#: moon.py:524 -msgid "east" -msgstr "rāwhiti" - -#: moon.py:527 -msgid "Sunset" -msgstr "Tōnga o te Rā" - -#: moon.py:529 -msgid "Sunrise" -msgstr "Whitinga o te Rā" - -#: moon.py:545 moon.py:561 -msgid "New Moon" -msgstr "Kōwhiti" - -#: moon.py:547 -#, fuzzy -msgid "Waxing Crescent" -msgstr "Waxing Crescent" - -#: moon.py:549 -msgid "First Quarter" -msgstr "Hauwhātanga Tuatahi" - -#: moon.py:551 -#, fuzzy -msgid "Waxing Gibbous" -msgstr "Waxing Gibbous" - -#: moon.py:553 -msgid "Full Moon" -msgstr "Rākaunui" - -# Will find these words out -#: moon.py:555 -#, fuzzy -msgid "Waning Gibbous" -msgstr "Waning Gibbous" - -#: moon.py:557 -msgid "Last Quarter" -msgstr "Hauwhātanga Whakamutunga" - -# Will find the word -#: moon.py:559 -#, fuzzy -msgid "Waning Crescent" -msgstr "Waning Crescent" - -#, python-format -#~ msgid "" -#~ "Kitenga Mata:\n" -#~ "%.0f%% (estimated)\n" -#~ "\n" -#~ msgstr "" -#~ "Surface Visibility:\n" -#~ "%.0f%% (estimated)\n" -#~ "\n" diff --git a/po/mk.po b/po/mk.po deleted file mode 100644 index 0a5b51a..0000000 --- a/po/mk.po +++ /dev/null @@ -1,230 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-10-03 00:33-0400\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Translate Toolkit 1.1.1rc4\n" - -#. TRANS: "name" option from activity.info file -#: moon.py:68 -msgid "Moon" -msgstr "" - -#. TRANS: "summary" option from activity.info file -#. TRANS: "description" option from activity.info file -msgid "" -"For all those interested in the moon! See the different phases of the moon, " -"latitudes and longtiutdes and impress all by \"predicting\" the next full " -"moon!" -msgstr "" - -#. TRANS: Date format for next full/new moon and next solar/lunar eclipse -#: moon.py:60 -#, python-format -msgid "%c" -msgstr "" - -#: moon.py:92 moon.py:118 -msgid "Toggle Grid View" -msgstr "" - -#: moon.py:98 moon.py:124 -msgid "Toggle Hemisphere View" -msgstr "" - -#: moon.py:130 -msgid "View" -msgstr "" - -#: moon.py:250 -msgid "" -"Today's Moon Information\n" -"\n" -msgstr "" - -#: moon.py:252 -#, python-format -msgid "" -"Phase:\n" -"%s\n" -"\n" -msgstr "" - -#: moon.py:253 -#, python-format -msgid "" -"Julian Date:\n" -"%.2f (astronomical)\n" -"\n" -msgstr "" - -#: moon.py:254 -#, python-format -msgid "" -"Age:\n" -"%(days).0f days, %(hours).0f hours, %(minutes).0f minutes\n" -"\n" -msgstr "" - -#: moon.py:255 -#, python-format -msgid "" -"Lunation:\n" -"%(phase).2f%% through lunation %(lunation)d\n" -"\n" -msgstr "" - -#: moon.py:256 -#, python-format -msgid "" -"Surface Visibility:\n" -"%.0f%% (estimated)\n" -"\n" -msgstr "" - -#: moon.py:257 -#, python-format -msgid "" -"Selenographic Terminator Longitude:\n" -"%(deg).1f°%(westOrEast)s (%(riseOrSet)s)\n" -"\n" -msgstr "" - -#: moon.py:258 -#, python-format -msgid "" -"Next Full Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:259 -#, python-format -msgid "" -"Next New Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:260 -#, python-format -msgid "" -"Next Lunar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:261 -#, python-format -msgid "" -"Next Solar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:354 -msgid "SNWE" -msgstr "" - -#: moon.py:357 -msgid "NSEW" -msgstr "" - -#: moon.py:409 -msgid "Latitude" -msgstr "" - -#: moon.py:411 -msgid "Longitude" -msgstr "" - -#: moon.py:522 -msgid "west" -msgstr "" - -#: moon.py:524 -msgid "east" -msgstr "" - -#: moon.py:527 -msgid "Sunset" -msgstr "" - -#: moon.py:529 -msgid "Sunrise" -msgstr "" - -#: moon.py:545 moon.py:561 -msgid "New Moon" -msgstr "" - -#: moon.py:547 -msgid "Waxing Crescent" -msgstr "" - -#: moon.py:549 -msgid "First Quarter" -msgstr "" - -#: moon.py:551 -msgid "Waxing Gibbous" -msgstr "" - -#: moon.py:553 -msgid "Full Moon" -msgstr "" - -#: moon.py:555 -msgid "Waning Gibbous" -msgstr "" - -#: moon.py:557 -msgid "Last Quarter" -msgstr "" - -#: moon.py:559 -msgid "Waning Crescent" -msgstr "" diff --git a/po/ml.po b/po/ml.po deleted file mode 100644 index 907af62..0000000 --- a/po/ml.po +++ /dev/null @@ -1,226 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-10-03 00:33-0400\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Translate Toolkit 1.1.1rc4\n" - -#. TRANS: "name" option from activity.info file -#: moon.py:68 -msgid "Moon" -msgstr "" - -#. TRANS: "summary" option from activity.info file -#. TRANS: "description" option from activity.info file -msgid "" -"For all those interested in the moon! See the different phases of the moon, " -"latitudes and longtiutdes and impress all by \"predicting\" the next full " -"moon!" -msgstr "" - -#. TRANS: Date format for next full/new moon and next solar/lunar eclipse -#: moon.py:60 -#, python-format -msgid "%c" -msgstr "" - -#: moon.py:92 moon.py:118 -msgid "Toggle Grid View" -msgstr "" - -#: moon.py:98 moon.py:124 -msgid "Toggle Hemisphere View" -msgstr "" - -#: moon.py:130 -msgid "View" -msgstr "" - -#: moon.py:250 -msgid "" -"Today's Moon Information\n" -"\n" -msgstr "" - -#: moon.py:252 -#, python-format -msgid "" -"Phase:\n" -"%s\n" -"\n" -msgstr "" - -#: moon.py:253 -#, python-format -msgid "" -"Julian Date:\n" -"%.2f (astronomical)\n" -"\n" -msgstr "" - -#: moon.py:254 -#, python-format -msgid "" -"Age:\n" -"%(days).0f days, %(hours).0f hours, %(minutes).0f minutes\n" -"\n" -msgstr "" - -#: moon.py:255 -#, python-format -msgid "" -"Lunation:\n" -"%(phase).2f%% through lunation %(lunation)d\n" -"\n" -msgstr "" - -#: moon.py:256 -#, python-format -msgid "" -"Surface Visibility:\n" -"%.0f%% (estimated)\n" -"\n" -msgstr "" - -#: moon.py:257 -#, python-format -msgid "" -"Selenographic Terminator Longitude:\n" -"%(deg).1f°%(westOrEast)s (%(riseOrSet)s)\n" -"\n" -msgstr "" - -#: moon.py:258 -#, python-format -msgid "" -"Next Full Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:259 -#, python-format -msgid "" -"Next New Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:260 -#, python-format -msgid "" -"Next Lunar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:261 -#, python-format -msgid "" -"Next Solar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:354 -msgid "SNWE" -msgstr "" - -#: moon.py:357 -msgid "NSEW" -msgstr "" - -#: moon.py:409 -msgid "Latitude" -msgstr "" - -#: moon.py:411 -msgid "Longitude" -msgstr "" - -#: moon.py:522 -msgid "west" -msgstr "" - -#: moon.py:524 -msgid "east" -msgstr "" - -#: moon.py:527 -msgid "Sunset" -msgstr "" - -#: moon.py:529 -msgid "Sunrise" -msgstr "" - -#: moon.py:545 moon.py:561 -msgid "New Moon" -msgstr "" - -#: moon.py:547 -msgid "Waxing Crescent" -msgstr "" - -#: moon.py:549 -msgid "First Quarter" -msgstr "" - -#: moon.py:551 -msgid "Waxing Gibbous" -msgstr "" - -#: moon.py:553 -msgid "Full Moon" -msgstr "" - -#: moon.py:555 -msgid "Waning Gibbous" -msgstr "" - -#: moon.py:557 -msgid "Last Quarter" -msgstr "" - -#: moon.py:559 -msgid "Waning Crescent" -msgstr "" diff --git a/po/mn.po b/po/mn.po deleted file mode 100644 index 6e72849..0000000 --- a/po/mn.po +++ /dev/null @@ -1,225 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-10-03 00:33-0400\n" -"PO-Revision-Date: 2008-10-01 15:18-0400\n" -"Last-Translator: Odontsetseg Bat-Erdene \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Pootle 1.1.0rc2\n" - -#. TRANS: "name" option from activity.info file -#: moon.py:68 -msgid "Moon" -msgstr "Сар" - -#. TRANS: "summary" option from activity.info file -#. TRANS: "description" option from activity.info file -msgid "" -"For all those interested in the moon! See the different phases of the moon, " -"latitudes and longtiutdes and impress all by \"predicting\" the next full " -"moon!" -msgstr "" - -#. TRANS: Date format for next full/new moon and next solar/lunar eclipse -#: moon.py:60 -#, python-format -msgid "%c" -msgstr "" - -#: moon.py:92 moon.py:118 -msgid "Toggle Grid View" -msgstr "" - -#: moon.py:98 moon.py:124 -msgid "Toggle Hemisphere View" -msgstr "" - -#: moon.py:130 -msgid "View" -msgstr "Харах" - -#: moon.py:250 -msgid "" -"Today's Moon Information\n" -"\n" -msgstr "" - -#: moon.py:252 -#, python-format -msgid "" -"Phase:\n" -"%s\n" -"\n" -msgstr "" - -#: moon.py:253 -#, python-format -msgid "" -"Julian Date:\n" -"%.2f (astronomical)\n" -"\n" -msgstr "" - -#: moon.py:254 -#, python-format -msgid "" -"Age:\n" -"%(days).0f days, %(hours).0f hours, %(minutes).0f minutes\n" -"\n" -msgstr "" - -#: moon.py:255 -#, python-format -msgid "" -"Lunation:\n" -"%(phase).2f%% through lunation %(lunation)d\n" -"\n" -msgstr "" - -#: moon.py:256 -#, python-format -msgid "" -"Surface Visibility:\n" -"%.0f%% (estimated)\n" -"\n" -msgstr "" - -#: moon.py:257 -#, python-format -msgid "" -"Selenographic Terminator Longitude:\n" -"%(deg).1f°%(westOrEast)s (%(riseOrSet)s)\n" -"\n" -msgstr "" - -#: moon.py:258 -#, python-format -msgid "" -"Next Full Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:259 -#, python-format -msgid "" -"Next New Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:260 -#, python-format -msgid "" -"Next Lunar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:261 -#, python-format -msgid "" -"Next Solar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:354 -msgid "SNWE" -msgstr "" - -#: moon.py:357 -msgid "NSEW" -msgstr "" - -#: moon.py:409 -msgid "Latitude" -msgstr "" - -#: moon.py:411 -msgid "Longitude" -msgstr "" - -#: moon.py:522 -msgid "west" -msgstr "" - -#: moon.py:524 -msgid "east" -msgstr "" - -#: moon.py:527 -msgid "Sunset" -msgstr "" - -#: moon.py:529 -msgid "Sunrise" -msgstr "" - -#: moon.py:545 moon.py:561 -msgid "New Moon" -msgstr "" - -#: moon.py:547 -msgid "Waxing Crescent" -msgstr "" - -#: moon.py:549 -msgid "First Quarter" -msgstr "" - -#: moon.py:551 -msgid "Waxing Gibbous" -msgstr "" - -#: moon.py:553 -msgid "Full Moon" -msgstr "" - -#: moon.py:555 -msgid "Waning Gibbous" -msgstr "" - -#: moon.py:557 -msgid "Last Quarter" -msgstr "" - -#: moon.py:559 -msgid "Waning Crescent" -msgstr "" diff --git a/po/mr.po b/po/mr.po deleted file mode 100644 index 15b1d65..0000000 --- a/po/mr.po +++ /dev/null @@ -1,233 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-10-03 00:33-0400\n" -"PO-Revision-Date: 2008-10-04 03:09-0400\n" -"Last-Translator: Rupali Sarode \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Pootle 1.1.0rc2\n" - -#. TRANS: "name" option from activity.info file -#: moon.py:68 -msgid "Moon" -msgstr "चंद्र" - -#. TRANS: "summary" option from activity.info file -#. TRANS: "description" option from activity.info file -msgid "" -"For all those interested in the moon! See the different phases of the moon, " -"latitudes and longtiutdes and impress all by \"predicting\" the next full " -"moon!" -msgstr "" - -#. TRANS: Date format for next full/new moon and next solar/lunar eclipse -#: moon.py:60 -#, python-format -msgid "%c" -msgstr "" - -#: moon.py:92 moon.py:118 -msgid "Toggle Grid View" -msgstr "" - -#: moon.py:98 moon.py:124 -msgid "Toggle Hemisphere View" -msgstr "" - -#: moon.py:130 -msgid "View" -msgstr "पाहा" - -#: moon.py:250 -msgid "" -"Today's Moon Information\n" -"\n" -msgstr "" - -#: moon.py:252 -#, python-format -msgid "" -"Phase:\n" -"%s\n" -"\n" -msgstr "" - -#: moon.py:253 -#, python-format -msgid "" -"Julian Date:\n" -"%.2f (astronomical)\n" -"\n" -msgstr "" - -#: moon.py:254 -#, python-format -msgid "" -"Age:\n" -"%(days).0f days, %(hours).0f hours, %(minutes).0f minutes\n" -"\n" -msgstr "" - -#: moon.py:255 -#, python-format -msgid "" -"Lunation:\n" -"%(phase).2f%% through lunation %(lunation)d\n" -"\n" -msgstr "" - -#: moon.py:256 -#, python-format -msgid "" -"Surface Visibility:\n" -"%.0f%% (estimated)\n" -"\n" -msgstr "" - -#: moon.py:257 -#, python-format -msgid "" -"Selenographic Terminator Longitude:\n" -"%(deg).1f°%(westOrEast)s (%(riseOrSet)s)\n" -"\n" -msgstr "" - -#: moon.py:258 -#, python-format -msgid "" -"Next Full Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:259 -#, python-format -msgid "" -"Next New Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:260 -#, python-format -msgid "" -"Next Lunar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:261 -#, python-format -msgid "" -"Next Solar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:354 -msgid "SNWE" -msgstr "" - -#: moon.py:357 -msgid "NSEW" -msgstr "" - -#: moon.py:409 -msgid "Latitude" -msgstr "" - -#: moon.py:411 -msgid "Longitude" -msgstr "" - -#: moon.py:522 -msgid "west" -msgstr "" - -#: moon.py:524 -msgid "east" -msgstr "" - -#: moon.py:527 -msgid "Sunset" -msgstr "" - -#: moon.py:529 -msgid "Sunrise" -msgstr "" - -#: moon.py:545 moon.py:561 -msgid "New Moon" -msgstr "" - -#: moon.py:547 -msgid "Waxing Crescent" -msgstr "" - -#: moon.py:549 -msgid "First Quarter" -msgstr "" - -#: moon.py:551 -msgid "Waxing Gibbous" -msgstr "" - -#: moon.py:553 -msgid "Full Moon" -msgstr "" - -#: moon.py:555 -msgid "Waning Gibbous" -msgstr "" - -#: moon.py:557 -msgid "Last Quarter" -msgstr "" - -#: moon.py:559 -msgid "Waning Crescent" -msgstr "" diff --git a/po/ms.po b/po/ms.po deleted file mode 100644 index 907af62..0000000 --- a/po/ms.po +++ /dev/null @@ -1,226 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-10-03 00:33-0400\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Translate Toolkit 1.1.1rc4\n" - -#. TRANS: "name" option from activity.info file -#: moon.py:68 -msgid "Moon" -msgstr "" - -#. TRANS: "summary" option from activity.info file -#. TRANS: "description" option from activity.info file -msgid "" -"For all those interested in the moon! See the different phases of the moon, " -"latitudes and longtiutdes and impress all by \"predicting\" the next full " -"moon!" -msgstr "" - -#. TRANS: Date format for next full/new moon and next solar/lunar eclipse -#: moon.py:60 -#, python-format -msgid "%c" -msgstr "" - -#: moon.py:92 moon.py:118 -msgid "Toggle Grid View" -msgstr "" - -#: moon.py:98 moon.py:124 -msgid "Toggle Hemisphere View" -msgstr "" - -#: moon.py:130 -msgid "View" -msgstr "" - -#: moon.py:250 -msgid "" -"Today's Moon Information\n" -"\n" -msgstr "" - -#: moon.py:252 -#, python-format -msgid "" -"Phase:\n" -"%s\n" -"\n" -msgstr "" - -#: moon.py:253 -#, python-format -msgid "" -"Julian Date:\n" -"%.2f (astronomical)\n" -"\n" -msgstr "" - -#: moon.py:254 -#, python-format -msgid "" -"Age:\n" -"%(days).0f days, %(hours).0f hours, %(minutes).0f minutes\n" -"\n" -msgstr "" - -#: moon.py:255 -#, python-format -msgid "" -"Lunation:\n" -"%(phase).2f%% through lunation %(lunation)d\n" -"\n" -msgstr "" - -#: moon.py:256 -#, python-format -msgid "" -"Surface Visibility:\n" -"%.0f%% (estimated)\n" -"\n" -msgstr "" - -#: moon.py:257 -#, python-format -msgid "" -"Selenographic Terminator Longitude:\n" -"%(deg).1f°%(westOrEast)s (%(riseOrSet)s)\n" -"\n" -msgstr "" - -#: moon.py:258 -#, python-format -msgid "" -"Next Full Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:259 -#, python-format -msgid "" -"Next New Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:260 -#, python-format -msgid "" -"Next Lunar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:261 -#, python-format -msgid "" -"Next Solar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:354 -msgid "SNWE" -msgstr "" - -#: moon.py:357 -msgid "NSEW" -msgstr "" - -#: moon.py:409 -msgid "Latitude" -msgstr "" - -#: moon.py:411 -msgid "Longitude" -msgstr "" - -#: moon.py:522 -msgid "west" -msgstr "" - -#: moon.py:524 -msgid "east" -msgstr "" - -#: moon.py:527 -msgid "Sunset" -msgstr "" - -#: moon.py:529 -msgid "Sunrise" -msgstr "" - -#: moon.py:545 moon.py:561 -msgid "New Moon" -msgstr "" - -#: moon.py:547 -msgid "Waxing Crescent" -msgstr "" - -#: moon.py:549 -msgid "First Quarter" -msgstr "" - -#: moon.py:551 -msgid "Waxing Gibbous" -msgstr "" - -#: moon.py:553 -msgid "Full Moon" -msgstr "" - -#: moon.py:555 -msgid "Waning Gibbous" -msgstr "" - -#: moon.py:557 -msgid "Last Quarter" -msgstr "" - -#: moon.py:559 -msgid "Waning Crescent" -msgstr "" diff --git a/po/mvo.po b/po/mvo.po deleted file mode 100644 index 907af62..0000000 --- a/po/mvo.po +++ /dev/null @@ -1,226 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-10-03 00:33-0400\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Translate Toolkit 1.1.1rc4\n" - -#. TRANS: "name" option from activity.info file -#: moon.py:68 -msgid "Moon" -msgstr "" - -#. TRANS: "summary" option from activity.info file -#. TRANS: "description" option from activity.info file -msgid "" -"For all those interested in the moon! See the different phases of the moon, " -"latitudes and longtiutdes and impress all by \"predicting\" the next full " -"moon!" -msgstr "" - -#. TRANS: Date format for next full/new moon and next solar/lunar eclipse -#: moon.py:60 -#, python-format -msgid "%c" -msgstr "" - -#: moon.py:92 moon.py:118 -msgid "Toggle Grid View" -msgstr "" - -#: moon.py:98 moon.py:124 -msgid "Toggle Hemisphere View" -msgstr "" - -#: moon.py:130 -msgid "View" -msgstr "" - -#: moon.py:250 -msgid "" -"Today's Moon Information\n" -"\n" -msgstr "" - -#: moon.py:252 -#, python-format -msgid "" -"Phase:\n" -"%s\n" -"\n" -msgstr "" - -#: moon.py:253 -#, python-format -msgid "" -"Julian Date:\n" -"%.2f (astronomical)\n" -"\n" -msgstr "" - -#: moon.py:254 -#, python-format -msgid "" -"Age:\n" -"%(days).0f days, %(hours).0f hours, %(minutes).0f minutes\n" -"\n" -msgstr "" - -#: moon.py:255 -#, python-format -msgid "" -"Lunation:\n" -"%(phase).2f%% through lunation %(lunation)d\n" -"\n" -msgstr "" - -#: moon.py:256 -#, python-format -msgid "" -"Surface Visibility:\n" -"%.0f%% (estimated)\n" -"\n" -msgstr "" - -#: moon.py:257 -#, python-format -msgid "" -"Selenographic Terminator Longitude:\n" -"%(deg).1f°%(westOrEast)s (%(riseOrSet)s)\n" -"\n" -msgstr "" - -#: moon.py:258 -#, python-format -msgid "" -"Next Full Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:259 -#, python-format -msgid "" -"Next New Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:260 -#, python-format -msgid "" -"Next Lunar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:261 -#, python-format -msgid "" -"Next Solar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:354 -msgid "SNWE" -msgstr "" - -#: moon.py:357 -msgid "NSEW" -msgstr "" - -#: moon.py:409 -msgid "Latitude" -msgstr "" - -#: moon.py:411 -msgid "Longitude" -msgstr "" - -#: moon.py:522 -msgid "west" -msgstr "" - -#: moon.py:524 -msgid "east" -msgstr "" - -#: moon.py:527 -msgid "Sunset" -msgstr "" - -#: moon.py:529 -msgid "Sunrise" -msgstr "" - -#: moon.py:545 moon.py:561 -msgid "New Moon" -msgstr "" - -#: moon.py:547 -msgid "Waxing Crescent" -msgstr "" - -#: moon.py:549 -msgid "First Quarter" -msgstr "" - -#: moon.py:551 -msgid "Waxing Gibbous" -msgstr "" - -#: moon.py:553 -msgid "Full Moon" -msgstr "" - -#: moon.py:555 -msgid "Waning Gibbous" -msgstr "" - -#: moon.py:557 -msgid "Last Quarter" -msgstr "" - -#: moon.py:559 -msgid "Waning Crescent" -msgstr "" diff --git a/po/na.po b/po/na.po deleted file mode 100644 index 907af62..0000000 --- a/po/na.po +++ /dev/null @@ -1,226 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-10-03 00:33-0400\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Translate Toolkit 1.1.1rc4\n" - -#. TRANS: "name" option from activity.info file -#: moon.py:68 -msgid "Moon" -msgstr "" - -#. TRANS: "summary" option from activity.info file -#. TRANS: "description" option from activity.info file -msgid "" -"For all those interested in the moon! See the different phases of the moon, " -"latitudes and longtiutdes and impress all by \"predicting\" the next full " -"moon!" -msgstr "" - -#. TRANS: Date format for next full/new moon and next solar/lunar eclipse -#: moon.py:60 -#, python-format -msgid "%c" -msgstr "" - -#: moon.py:92 moon.py:118 -msgid "Toggle Grid View" -msgstr "" - -#: moon.py:98 moon.py:124 -msgid "Toggle Hemisphere View" -msgstr "" - -#: moon.py:130 -msgid "View" -msgstr "" - -#: moon.py:250 -msgid "" -"Today's Moon Information\n" -"\n" -msgstr "" - -#: moon.py:252 -#, python-format -msgid "" -"Phase:\n" -"%s\n" -"\n" -msgstr "" - -#: moon.py:253 -#, python-format -msgid "" -"Julian Date:\n" -"%.2f (astronomical)\n" -"\n" -msgstr "" - -#: moon.py:254 -#, python-format -msgid "" -"Age:\n" -"%(days).0f days, %(hours).0f hours, %(minutes).0f minutes\n" -"\n" -msgstr "" - -#: moon.py:255 -#, python-format -msgid "" -"Lunation:\n" -"%(phase).2f%% through lunation %(lunation)d\n" -"\n" -msgstr "" - -#: moon.py:256 -#, python-format -msgid "" -"Surface Visibility:\n" -"%.0f%% (estimated)\n" -"\n" -msgstr "" - -#: moon.py:257 -#, python-format -msgid "" -"Selenographic Terminator Longitude:\n" -"%(deg).1f°%(westOrEast)s (%(riseOrSet)s)\n" -"\n" -msgstr "" - -#: moon.py:258 -#, python-format -msgid "" -"Next Full Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:259 -#, python-format -msgid "" -"Next New Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:260 -#, python-format -msgid "" -"Next Lunar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:261 -#, python-format -msgid "" -"Next Solar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:354 -msgid "SNWE" -msgstr "" - -#: moon.py:357 -msgid "NSEW" -msgstr "" - -#: moon.py:409 -msgid "Latitude" -msgstr "" - -#: moon.py:411 -msgid "Longitude" -msgstr "" - -#: moon.py:522 -msgid "west" -msgstr "" - -#: moon.py:524 -msgid "east" -msgstr "" - -#: moon.py:527 -msgid "Sunset" -msgstr "" - -#: moon.py:529 -msgid "Sunrise" -msgstr "" - -#: moon.py:545 moon.py:561 -msgid "New Moon" -msgstr "" - -#: moon.py:547 -msgid "Waxing Crescent" -msgstr "" - -#: moon.py:549 -msgid "First Quarter" -msgstr "" - -#: moon.py:551 -msgid "Waxing Gibbous" -msgstr "" - -#: moon.py:553 -msgid "Full Moon" -msgstr "" - -#: moon.py:555 -msgid "Waning Gibbous" -msgstr "" - -#: moon.py:557 -msgid "Last Quarter" -msgstr "" - -#: moon.py:559 -msgid "Waning Crescent" -msgstr "" diff --git a/po/nah.po b/po/nah.po deleted file mode 100644 index f24b985..0000000 --- a/po/nah.po +++ /dev/null @@ -1,198 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-10-03 00:33-0400\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Translate Toolkit 1.7.0\n" - -#. TRANS: "name" option from activity.info file -#: moon.py:68 -msgid "Moon" -msgstr "" - -#. TRANS: "summary" option from activity.info file -#. TRANS: "description" option from activity.info file -msgid "" -"For all those interested in the moon! See the different phases of the moon, " -"latitudes and longtiutdes and impress all by \"predicting\" the next full " -"moon!" -msgstr "" - -#. TRANS: Date format for next full/new moon and next solar/lunar eclipse -#: moon.py:60 -#, python-format -msgid "%c" -msgstr "" - -#: moon.py:92 moon.py:118 -msgid "Toggle Grid View" -msgstr "" - -#: moon.py:98 moon.py:124 -msgid "Toggle Hemisphere View" -msgstr "" - -#: moon.py:130 -msgid "View" -msgstr "" - -#: moon.py:250 -msgid "" -"Today's Moon Information\n" -"\n" -msgstr "" - -#: moon.py:252 -#, python-format -msgid "" -"Phase:\n" -"%s\n" -"\n" -msgstr "" - -#: moon.py:253 -#, python-format -msgid "" -"Julian Date:\n" -"%.2f (astronomical)\n" -"\n" -msgstr "" - -#: moon.py:254 -#, python-format -msgid "" -"Age:\n" -"%(days).0f days, %(hours).0f hours, %(minutes).0f minutes\n" -"\n" -msgstr "" - -#: moon.py:255 -#, python-format -msgid "" -"Lunation:\n" -"%(phase).2f%% through lunation %(lunation)d\n" -"\n" -msgstr "" - -#: moon.py:256 -#, python-format -msgid "" -"Surface Visibility:\n" -"%.0f%% (estimated)\n" -"\n" -msgstr "" - -#: moon.py:257 -#, python-format -msgid "" -"Selenographic Terminator Longitude:\n" -"%(deg).1f°%(westOrEast)s (%(riseOrSet)s)\n" -"\n" -msgstr "" - -#: moon.py:258 -#, python-format -msgid "" -"Next Full Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:259 -#, python-format -msgid "" -"Next New Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:260 -#, python-format -msgid "" -"Next Lunar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:261 -#, python-format -msgid "" -"Next Solar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:354 -msgid "SNWE" -msgstr "" - -#: moon.py:357 -msgid "NSEW" -msgstr "" - -#: moon.py:409 -msgid "Latitude" -msgstr "" - -#: moon.py:411 -msgid "Longitude" -msgstr "" - -#: moon.py:522 -msgid "west" -msgstr "" - -#: moon.py:524 -msgid "east" -msgstr "" - -#: moon.py:527 -msgid "Sunset" -msgstr "" - -#: moon.py:529 -msgid "Sunrise" -msgstr "" - -#: moon.py:545 moon.py:561 -msgid "New Moon" -msgstr "" - -#: moon.py:547 -msgid "Waxing Crescent" -msgstr "" - -#: moon.py:549 -msgid "First Quarter" -msgstr "" - -#: moon.py:551 -msgid "Waxing Gibbous" -msgstr "" - -#: moon.py:553 -msgid "Full Moon" -msgstr "" - -#: moon.py:555 -msgid "Waning Gibbous" -msgstr "" - -#: moon.py:557 -msgid "Last Quarter" -msgstr "" - -#: moon.py:559 -msgid "Waning Crescent" -msgstr "" diff --git a/po/nb.po b/po/nb.po deleted file mode 100644 index ebfe05e..0000000 --- a/po/nb.po +++ /dev/null @@ -1,226 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-10-03 00:33-0400\n" -"PO-Revision-Date: 2009-12-22 10:36-0400\n" -"Last-Translator: Chris Leonard \n" -"Language-Team: LANGUAGE \n" -"Language: nb\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Pootle 1.2.1\n" - -#. TRANS: "name" option from activity.info file -#: moon.py:68 -msgid "Moon" -msgstr "" - -#. TRANS: "summary" option from activity.info file -#. TRANS: "description" option from activity.info file -msgid "" -"For all those interested in the moon! See the different phases of the moon, " -"latitudes and longtiutdes and impress all by \"predicting\" the next full " -"moon!" -msgstr "" - -#. TRANS: Date format for next full/new moon and next solar/lunar eclipse -#: moon.py:60 -#, python-format -msgid "%c" -msgstr "" - -#: moon.py:92 moon.py:118 -msgid "Toggle Grid View" -msgstr "" - -#: moon.py:98 moon.py:124 -msgid "Toggle Hemisphere View" -msgstr "" - -#: moon.py:130 -msgid "View" -msgstr "Vis" - -#: moon.py:250 -msgid "" -"Today's Moon Information\n" -"\n" -msgstr "" - -#: moon.py:252 -#, python-format -msgid "" -"Phase:\n" -"%s\n" -"\n" -msgstr "" - -#: moon.py:253 -#, python-format -msgid "" -"Julian Date:\n" -"%.2f (astronomical)\n" -"\n" -msgstr "" - -#: moon.py:254 -#, python-format -msgid "" -"Age:\n" -"%(days).0f days, %(hours).0f hours, %(minutes).0f minutes\n" -"\n" -msgstr "" - -#: moon.py:255 -#, python-format -msgid "" -"Lunation:\n" -"%(phase).2f%% through lunation %(lunation)d\n" -"\n" -msgstr "" - -#: moon.py:256 -#, python-format -msgid "" -"Surface Visibility:\n" -"%.0f%% (estimated)\n" -"\n" -msgstr "" - -#: moon.py:257 -#, python-format -msgid "" -"Selenographic Terminator Longitude:\n" -"%(deg).1f°%(westOrEast)s (%(riseOrSet)s)\n" -"\n" -msgstr "" - -#: moon.py:258 -#, python-format -msgid "" -"Next Full Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:259 -#, python-format -msgid "" -"Next New Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:260 -#, python-format -msgid "" -"Next Lunar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:261 -#, python-format -msgid "" -"Next Solar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:354 -msgid "SNWE" -msgstr "" - -#: moon.py:357 -msgid "NSEW" -msgstr "" - -#: moon.py:409 -msgid "Latitude" -msgstr "" - -#: moon.py:411 -msgid "Longitude" -msgstr "" - -#: moon.py:522 -msgid "west" -msgstr "" - -#: moon.py:524 -msgid "east" -msgstr "" - -#: moon.py:527 -msgid "Sunset" -msgstr "" - -#: moon.py:529 -msgid "Sunrise" -msgstr "" - -#: moon.py:545 moon.py:561 -msgid "New Moon" -msgstr "" - -#: moon.py:547 -msgid "Waxing Crescent" -msgstr "" - -#: moon.py:549 -msgid "First Quarter" -msgstr "" - -#: moon.py:551 -msgid "Waxing Gibbous" -msgstr "" - -#: moon.py:553 -msgid "Full Moon" -msgstr "" - -#: moon.py:555 -msgid "Waning Gibbous" -msgstr "" - -#: moon.py:557 -msgid "Last Quarter" -msgstr "" - -#: moon.py:559 -msgid "Waning Crescent" -msgstr "" diff --git a/po/ne.po b/po/ne.po deleted file mode 100644 index 67f0d23..0000000 --- a/po/ne.po +++ /dev/null @@ -1,263 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-10-03 00:33-0400\n" -"PO-Revision-Date: 2013-11-27 07:42+0200\n" -"Last-Translator: Ganesh \n" -"Language-Team: LANGUAGE \n" -"Language: ne\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.5\n" - -#. TRANS: "name" option from activity.info file -#: moon.py:68 -msgid "Moon" -msgstr "चन्द्रमा" - -#. TRANS: "summary" option from activity.info file -#. TRANS: "description" option from activity.info file -msgid "" -"For all those interested in the moon! See the different phases of the moon, " -"latitudes and longtiutdes and impress all by \"predicting\" the next full " -"moon!" -msgstr "" -"चन्द्रमामा रूचि राख्नेहरू सबैका लागि ! चन्द्रमाको भिन्न भिन्न अवस्थाहरू हेर, " -"अक्षांश, देशान्तर र आउने पूर्णिमाको भविश्यवाणी गर्दै सबैलाई प्रभावित पार !" - -#. TRANS: Date format for next full/new moon and next solar/lunar eclipse -#: moon.py:60 -#, python-format -msgid "%c" -msgstr "%c" - -#: moon.py:92 moon.py:118 -msgid "Toggle Grid View" -msgstr "टगल ग्रिड दृश्य" - -#: moon.py:98 moon.py:124 -msgid "Toggle Hemisphere View" -msgstr "टगल हेमिस्फेर दृश्य" - -#: moon.py:130 -msgid "View" -msgstr "दृश्य" - -#: moon.py:250 -msgid "" -"Today's Moon Information\n" -"\n" -msgstr "" -"आजको चन्द्रमाको खबर\n" -"\n" - -#: moon.py:252 -#, python-format -msgid "" -"Phase:\n" -"%s\n" -"\n" -msgstr "" -"पक्ष : \n" -"%s\n" -"\n" - -#: moon.py:253 -#, python-format -msgid "" -"Julian Date:\n" -"%.2f (astronomical)\n" -"\n" -msgstr "" -"जुलियन मिति : \n" -"%.2f (नक्षत्रविद्या सम्बन्घि)\n" -"\n" - -# don't translate %(days).0f or %(hours).0f or %(minutes).0f the are variables -#: moon.py:254 -#, python-format -#, python-format, -msgid "" -"Age:\n" -"%(days).0f days, %(hours).0f hours, %(minutes).0f minutes\n" -"\n" -msgstr "" -"वर्ष:\n" -"%(days).0f days, %(hours).0f hours, %(minutes).0f minutes\n" -"\n" - -#: moon.py:255 -#, python-format -msgid "" -"Lunation:\n" -"%(phase).2f%% through lunation %(lunation)d\n" -"\n" -msgstr "" -"लुनेसन:\n" -"%(phase).2f%% देखि लुनेसन %(lunation)d\n" -"\n" - -#: moon.py:256 -#, python-format -msgid "" -"Surface Visibility:\n" -"%.0f%% (estimated)\n" -"\n" -msgstr "" -"सतह दृष्टि:\n" -"%.0f%%(अँकाई)\n" -"\n" - -#: moon.py:257 -#, python-format -msgid "" -"Selenographic Terminator Longitude:\n" -"%(deg).1f°%(westOrEast)s (%(riseOrSet)s)\n" -"\n" -msgstr "" -"सेलेनोग्राफिक टरमिनेटर लङगित्यूड:\n" -"%(deg).1f°%(westOrEast)s (%(riseOrSet)s))\n" -"\n" - -#: moon.py:258 -#, python-format -msgid "" -"Next Full Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"यसपछिको पूर्णिमा:\n" -"%(date)s को %(days).0f दिनहरु\n" -"\n" - -#: moon.py:259 -#, python-format -msgid "" -"Next New Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"यसपछिको औंसी:\n" -"%(date)s को %(days).0f दिनहरु\n" -"\n" - -#: moon.py:260 -#, python-format -msgid "" -"Next Lunar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"यसपछिको शुक्ल ग्रह :\n" -"%(date)s को %(days).0f दिनहरु\n" -"\n" - -#: moon.py:261 -#, python-format -msgid "" -"Next Solar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"यसपछिको सौय ग्रह :\n" -"%(date)s को %(days).0f दिनहरु\n" -"\n" - -#: moon.py:354 -msgid "SNWE" -msgstr "SNWE" - -#: moon.py:357 -msgid "NSEW" -msgstr "NSEW" - -#: moon.py:409 -msgid "Latitude" -msgstr "अक्षांश" - -#: moon.py:411 -msgid "Longitude" -msgstr "देशन्तर" - -#: moon.py:522 -msgid "west" -msgstr "पश्चिम" - -#: moon.py:524 -msgid "east" -msgstr "पूर्व" - -#: moon.py:527 -msgid "Sunset" -msgstr "सूर्यास्त" - -#: moon.py:529 -msgid "Sunrise" -msgstr "सूर्योदय" - -#: moon.py:545 moon.py:561 -msgid "New Moon" -msgstr "नयाँ चन्द्रमा" - -#: moon.py:547 -msgid "Waxing Crescent" -msgstr "Waxing Crescent" - -#: moon.py:549 -msgid "First Quarter" -msgstr "पहिलो चरण" - -#: moon.py:551 -msgid "Waxing Gibbous" -msgstr "Waxing Gibbous" - -#: moon.py:553 -msgid "Full Moon" -msgstr "पूर्णिमा" - -#: moon.py:555 -msgid "Waning Gibbous" -msgstr "Waning Gibbous" - -#: moon.py:557 -msgid "Last Quarter" -msgstr "अन्तिम चरण" - -#: moon.py:559 -msgid "Waning Crescent" -msgstr "Waning Crescent" diff --git a/po/nl.po b/po/nl.po deleted file mode 100644 index daf6a8e..0000000 --- a/po/nl.po +++ /dev/null @@ -1,266 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-10-03 00:33-0400\n" -"PO-Revision-Date: 2012-11-10 15:56+0200\n" -"Last-Translator: whe \n" -"Language-Team: LANGUAGE \n" -"Language: nl\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.5\n" - -#. TRANS: "name" option from activity.info file -#: moon.py:68 -msgid "Moon" -msgstr "Maan" - -#. TRANS: "summary" option from activity.info file -#. TRANS: "description" option from activity.info file -msgid "" -"For all those interested in the moon! See the different phases of the moon, " -"latitudes and longtiutdes and impress all by \"predicting\" the next full " -"moon!" -msgstr "" -"Voor iedereen die in de maan geïnteresseerd is! Bekijk de verscillende fasen " -"van de maan, kleincirkels en meridianen en maak indruk op iedereen door je " -"\"voorspelling\" van de volgende volle maan!" - -#. TRANS: Date format for next full/new moon and next solar/lunar eclipse -#: moon.py:60 -#, python-format -msgid "%c" -msgstr "%c" - -#: moon.py:92 moon.py:118 -msgid "Toggle Grid View" -msgstr "Rasterweergave wisselen" - -#: moon.py:98 moon.py:124 -msgid "Toggle Hemisphere View" -msgstr "Hemisfeerweergave wisselen" - -#: moon.py:130 -msgid "View" -msgstr "Weergave" - -#: moon.py:250 -msgid "" -"Today's Moon Information\n" -"\n" -msgstr "" -"Maaninformatie van vandaag\n" -"\n" - -#: moon.py:252 -#, python-format -msgid "" -"Phase:\n" -"%s\n" -"\n" -msgstr "" -"Fase:\n" -"%s\n" -"\n" - -#: moon.py:253 -#, python-format -msgid "" -"Julian Date:\n" -"%.2f (astronomical)\n" -"\n" -msgstr "" -"Juliaanse datum:\n" -"%.2f (astronomical)\n" -"\n" - -#: moon.py:254 -#, python-format -msgid "" -"Age:\n" -"%(days).0f days, %(hours).0f hours, %(minutes).0f minutes\n" -"\n" -msgstr "" -"Leeftijd:\n" -"%(days).0f dagen, %(hours).0f huren, %(minutes).0f minuten\n" -"\n" - -#: moon.py:255 -#, python-format -msgid "" -"Lunation:\n" -"%(phase).2f%% through lunation %(lunation)d\n" -"\n" -msgstr "" -"Lunatie:\n" -"%(phase).2f%% door lunatie %(lunation)d\n" -"\n" - -#: moon.py:256 -#, python-format -msgid "" -"Surface Visibility:\n" -"%.0f%% (estimated)\n" -"\n" -msgstr "" -"Oppervlaktezichtbaarheid:\n" -"%.0f%% (geschat)\n" -"\n" - -#: moon.py:257 -#, python-format -msgid "" -"Selenographic Terminator Longitude:\n" -"%(deg).1f°%(westOrEast)s (%(riseOrSet)s)\n" -"\n" -msgstr "" -"Selenografische Terminatie Lengtegraad:\n" -"%(deg).1f°%(westOrEast)s (%(riseOrSet)s)\n" -"\n" - -#: moon.py:258 -#, python-format -msgid "" -"Next Full Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"Volgende volle maan:\n" -"%(date)s in %(days).0f dagen\n" -"\n" - -#: moon.py:259 -#, python-format -msgid "" -"Next New Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"Volgende nieuwe maan:\n" -"%(date)s in %(days).0f dagen\n" -"\n" - -#: moon.py:260 -#, python-format -msgid "" -"Next Lunar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"Volgende maansverduistering:\n" -"%(date)s in %(days).0f dagen\n" -"\n" - -#: moon.py:261 -#, python-format -msgid "" -"Next Solar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"Volgende zonsverduistering:\n" -"%(date)s in %(days).0f dagen\n" -"\n" - -#: moon.py:354 -msgid "SNWE" -msgstr "ZNWO" - -#: moon.py:357 -msgid "NSEW" -msgstr "NZOW" - -#: moon.py:409 -msgid "Latitude" -msgstr "Breedtegraad" - -#: moon.py:411 -msgid "Longitude" -msgstr "Lengtegraad" - -#: moon.py:522 -msgid "west" -msgstr "westen" - -#: moon.py:524 -msgid "east" -msgstr "oosten" - -#: moon.py:527 -msgid "Sunset" -msgstr "Zonsondergang" - -#: moon.py:529 -msgid "Sunrise" -msgstr "Zonsopkomst" - -#: moon.py:545 moon.py:561 -msgid "New Moon" -msgstr "Nieuwe maan" - -#: moon.py:547 -msgid "Waxing Crescent" -msgstr "Jonge maansikkel" - -#: moon.py:549 -msgid "First Quarter" -msgstr "Eerste kwartier" - -#: moon.py:551 -msgid "Waxing Gibbous" -msgstr "Wassende maan" - -#: moon.py:553 -msgid "Full Moon" -msgstr "Volle maan" - -#: moon.py:555 -msgid "Waning Gibbous" -msgstr "Afnemende maan" - -#: moon.py:557 -msgid "Last Quarter" -msgstr "Laatste kwartier" - -#: moon.py:559 -msgid "Waning Crescent" -msgstr "Asgrauwe maan" diff --git a/po/nn.po b/po/nn.po deleted file mode 100644 index b3d104f..0000000 --- a/po/nn.po +++ /dev/null @@ -1,202 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-10-03 00:33-0400\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Translate Toolkit 1.6.0\n" - -#. TRANS: "name" option from activity.info file -#: moon.py:68 -msgid "Moon" -msgstr "" - -#. TRANS: "summary" option from activity.info file -#. TRANS: "description" option from activity.info file -msgid "" -"For all those interested in the moon! See the different phases of the moon, " -"latitudes and longtiutdes and impress all by \"predicting\" the next full " -"moon!" -msgstr "" - -#. TRANS: Date format for next full/new moon and next solar/lunar eclipse -#: moon.py:60 -#, python-format -msgid "%c" -msgstr "" - -#: moon.py:92 moon.py:118 -msgid "Toggle Grid View" -msgstr "" - -#: moon.py:98 moon.py:124 -msgid "Toggle Hemisphere View" -msgstr "" - -#: moon.py:130 -msgid "View" -msgstr "" - -#: moon.py:250 -msgid "" -"Today's Moon Information\n" -"\n" -msgstr "" - -#: moon.py:252 -#, python-format -msgid "" -"Phase:\n" -"%s\n" -"\n" -msgstr "" - -#: moon.py:253 -#, python-format -msgid "" -"Julian Date:\n" -"%.2f (astronomical)\n" -"\n" -msgstr "" - -#: moon.py:254 -#, python-format -msgid "" -"Age:\n" -"%(days).0f days, %(hours).0f hours, %(minutes).0f minutes\n" -"\n" -msgstr "" - -#: moon.py:255 -#, python-format -msgid "" -"Lunation:\n" -"%(phase).2f%% through lunation %(lunation)d\n" -"\n" -msgstr "" - -#: moon.py:256 -#, python-format -msgid "" -"Surface Visibility:\n" -"%.0f%% (estimated)\n" -"\n" -msgstr "" - -#: moon.py:257 -#, python-format -msgid "" -"Selenographic Terminator Longitude:\n" -"%(deg).1f°%(westOrEast)s (%(riseOrSet)s)\n" -"\n" -msgstr "" - -#: moon.py:258 -#, python-format -msgid "" -"Next Full Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:259 -#, python-format -msgid "" -"Next New Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:260 -#, python-format -msgid "" -"Next Lunar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:261 -#, python-format -msgid "" -"Next Solar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:354 -msgid "SNWE" -msgstr "" - -#: moon.py:357 -msgid "NSEW" -msgstr "" - -#: moon.py:409 -msgid "Latitude" -msgstr "" - -#: moon.py:411 -msgid "Longitude" -msgstr "" - -#: moon.py:522 -msgid "west" -msgstr "" - -#: moon.py:524 -msgid "east" -msgstr "" - -#: moon.py:527 -msgid "Sunset" -msgstr "" - -#: moon.py:529 -msgid "Sunrise" -msgstr "" - -#: moon.py:545 moon.py:561 -msgid "New Moon" -msgstr "" - -#: moon.py:547 -msgid "Waxing Crescent" -msgstr "" - -#: moon.py:549 -msgid "First Quarter" -msgstr "" - -#: moon.py:551 -msgid "Waxing Gibbous" -msgstr "" - -#: moon.py:553 -msgid "Full Moon" -msgstr "" - -#: moon.py:555 -msgid "Waning Gibbous" -msgstr "" - -#: moon.py:557 -msgid "Last Quarter" -msgstr "" - -#: moon.py:559 -msgid "Waning Crescent" -msgstr "" diff --git a/po/pa.po b/po/pa.po deleted file mode 100644 index 907af62..0000000 --- a/po/pa.po +++ /dev/null @@ -1,226 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-10-03 00:33-0400\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Translate Toolkit 1.1.1rc4\n" - -#. TRANS: "name" option from activity.info file -#: moon.py:68 -msgid "Moon" -msgstr "" - -#. TRANS: "summary" option from activity.info file -#. TRANS: "description" option from activity.info file -msgid "" -"For all those interested in the moon! See the different phases of the moon, " -"latitudes and longtiutdes and impress all by \"predicting\" the next full " -"moon!" -msgstr "" - -#. TRANS: Date format for next full/new moon and next solar/lunar eclipse -#: moon.py:60 -#, python-format -msgid "%c" -msgstr "" - -#: moon.py:92 moon.py:118 -msgid "Toggle Grid View" -msgstr "" - -#: moon.py:98 moon.py:124 -msgid "Toggle Hemisphere View" -msgstr "" - -#: moon.py:130 -msgid "View" -msgstr "" - -#: moon.py:250 -msgid "" -"Today's Moon Information\n" -"\n" -msgstr "" - -#: moon.py:252 -#, python-format -msgid "" -"Phase:\n" -"%s\n" -"\n" -msgstr "" - -#: moon.py:253 -#, python-format -msgid "" -"Julian Date:\n" -"%.2f (astronomical)\n" -"\n" -msgstr "" - -#: moon.py:254 -#, python-format -msgid "" -"Age:\n" -"%(days).0f days, %(hours).0f hours, %(minutes).0f minutes\n" -"\n" -msgstr "" - -#: moon.py:255 -#, python-format -msgid "" -"Lunation:\n" -"%(phase).2f%% through lunation %(lunation)d\n" -"\n" -msgstr "" - -#: moon.py:256 -#, python-format -msgid "" -"Surface Visibility:\n" -"%.0f%% (estimated)\n" -"\n" -msgstr "" - -#: moon.py:257 -#, python-format -msgid "" -"Selenographic Terminator Longitude:\n" -"%(deg).1f°%(westOrEast)s (%(riseOrSet)s)\n" -"\n" -msgstr "" - -#: moon.py:258 -#, python-format -msgid "" -"Next Full Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:259 -#, python-format -msgid "" -"Next New Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:260 -#, python-format -msgid "" -"Next Lunar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:261 -#, python-format -msgid "" -"Next Solar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:354 -msgid "SNWE" -msgstr "" - -#: moon.py:357 -msgid "NSEW" -msgstr "" - -#: moon.py:409 -msgid "Latitude" -msgstr "" - -#: moon.py:411 -msgid "Longitude" -msgstr "" - -#: moon.py:522 -msgid "west" -msgstr "" - -#: moon.py:524 -msgid "east" -msgstr "" - -#: moon.py:527 -msgid "Sunset" -msgstr "" - -#: moon.py:529 -msgid "Sunrise" -msgstr "" - -#: moon.py:545 moon.py:561 -msgid "New Moon" -msgstr "" - -#: moon.py:547 -msgid "Waxing Crescent" -msgstr "" - -#: moon.py:549 -msgid "First Quarter" -msgstr "" - -#: moon.py:551 -msgid "Waxing Gibbous" -msgstr "" - -#: moon.py:553 -msgid "Full Moon" -msgstr "" - -#: moon.py:555 -msgid "Waning Gibbous" -msgstr "" - -#: moon.py:557 -msgid "Last Quarter" -msgstr "" - -#: moon.py:559 -msgid "Waning Crescent" -msgstr "" diff --git a/po/pap.po b/po/pap.po deleted file mode 100644 index c07e76a..0000000 --- a/po/pap.po +++ /dev/null @@ -1,256 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-10-03 00:33-0400\n" -"PO-Revision-Date: 2010-02-25 20:42+0200\n" -"Last-Translator: Chris \n" -"Language-Team: LANGUAGE \n" -"Language: pap\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.1\n" - -#. TRANS: "name" option from activity.info file -#: moon.py:68 -msgid "Moon" -msgstr "Luna" - -#. TRANS: "summary" option from activity.info file -#. TRANS: "description" option from activity.info file -msgid "" -"For all those interested in the moon! See the different phases of the moon, " -"latitudes and longtiutdes and impress all by \"predicting\" the next full " -"moon!" -msgstr "" - -#. TRANS: Date format for next full/new moon and next solar/lunar eclipse -#: moon.py:60 -#, python-format -msgid "%c" -msgstr "" - -#: moon.py:92 moon.py:118 -msgid "Toggle Grid View" -msgstr "" - -#: moon.py:98 moon.py:124 -msgid "Toggle Hemisphere View" -msgstr "" - -#: moon.py:130 -msgid "View" -msgstr "Mira" - -#: moon.py:250 -msgid "" -"Today's Moon Information\n" -"\n" -msgstr "" -"Informashon awe di luna\n" -"\n" - -#: moon.py:252 -#, python-format -msgid "" -"Phase:\n" -"%s\n" -"\n" -msgstr "" -"Fase:\n" -"%s\n" -"\n" - -#: moon.py:253 -#, python-format -msgid "" -"Julian Date:\n" -"%.2f (astronomical)\n" -"\n" -msgstr "" -"Fecha Julian:\n" -"%.2f (astronomiko)\n" -"\n" - -#: moon.py:254 -#, python-format -msgid "" -"Age:\n" -"%(days).0f days, %(hours).0f hours, %(minutes).0f minutes\n" -"\n" -msgstr "" -"Edat:\n" -"%(days).0f dianan, %(hours).0f oranan, %(minutes).0f minütnan\n" -"\n" - -#: moon.py:255 -#, python-format -msgid "" -"Lunation:\n" -"%(phase).2f%% through lunation %(lunation)d\n" -"\n" -msgstr "" - -#: moon.py:256 -#, python-format -msgid "" -"Surface Visibility:\n" -"%.0f%% (estimated)\n" -"\n" -msgstr "" -"Visibilidat Supervisi:\n" -"%.0f%% (estimated)\n" -"\n" - -#: moon.py:257 -#, python-format -msgid "" -"Selenographic Terminator Longitude:\n" -"%(deg).1f°%(westOrEast)s (%(riseOrSet)s)\n" -"\n" -msgstr "" -"Grado Longitut di Terminator Selenográfiko:\n" -"%(deg).1f°%(westOrEast)s (%(riseOrSet)s)\n" -"\n" - -#: moon.py:258 -#, python-format -msgid "" -"Next Full Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"Proksimo Luna Jen:\n" -"%(date)s den %(days).0f dianan\n" -"\n" - -#: moon.py:259 -#, python-format -msgid "" -"Next New Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"Proksimo Luna Nobo:\n" -"%(date)s den %(days).0f dianan\n" -"\n" - -#: moon.py:260 -#, python-format -msgid "" -"Next Lunar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"Proksimo eklips Lunar:\n" -"%(date)s den %(days).0f dianan\n" -"\n" - -#: moon.py:261 -#, python-format -msgid "" -"Next Solar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"Proksimo eklips Solar:\n" -"%(date)s den %(days).0f dianan\n" -"\n" - -#: moon.py:354 -msgid "SNWE" -msgstr "SNWE" - -#: moon.py:357 -msgid "NSEW" -msgstr "NSEW" - -#: moon.py:409 -msgid "Latitude" -msgstr "Latitut" - -#: moon.py:411 -msgid "Longitude" -msgstr "Longitut" - -#: moon.py:522 -msgid "west" -msgstr "west" - -#: moon.py:524 -msgid "east" -msgstr "ost" - -#: moon.py:527 -msgid "Sunset" -msgstr "Bahada di solo" - -#: moon.py:529 -msgid "Sunrise" -msgstr "Subida di solo" - -#: moon.py:545 moon.py:561 -msgid "New Moon" -msgstr "Luna Nobo" - -#: moon.py:547 -msgid "Waxing Crescent" -msgstr "Luna kresiente" - -#: moon.py:549 -msgid "First Quarter" -msgstr "Kuartu Kresiente" - -#: moon.py:551 -msgid "Waxing Gibbous" -msgstr "Luna briante" - -#: moon.py:553 -msgid "Full Moon" -msgstr "Luna Jen" - -#: moon.py:555 -msgid "Waning Gibbous" -msgstr "Luna deklinando" - -#: moon.py:557 -msgid "Last Quarter" -msgstr "Kuartu menguante" - -#: moon.py:559 -msgid "Waning Crescent" -msgstr "Luna inkolorso" diff --git a/po/pbs.po b/po/pbs.po deleted file mode 100644 index 7ef1bc2..0000000 --- a/po/pbs.po +++ /dev/null @@ -1,234 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-10-03 00:33-0400\n" -"PO-Revision-Date: 2014-05-14 04:17+0200\n" -"Last-Translator: Chris \n" -"Language-Team: LANGUAGE \n" -"Language: pbs\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.5\n" - -#. TRANS: "name" option from activity.info file -#: moon.py:68 -msgid "Moon" -msgstr "Ngum'au'" - -#. TRANS: "summary" option from activity.info file -#. TRANS: "description" option from activity.info file -msgid "" -"For all those interested in the moon! See the different phases of the moon, " -"latitudes and longtiutdes and impress all by \"predicting\" the next full " -"moon!" -msgstr "" -"¡Mi'iat ravu se mjang ne ngum'au'! nju'u mi'ia re lu'uei vud-ua tuju' ne " -"ngum'au' peuk lu'uei nejeiñ maiñ n'iujun' rajuik latju'u \"latsjeik\" xi'iap " -"tsukuet matuju' ne ngun'au'." - -#. TRANS: Date format for next full/new moon and next solar/lunar eclipse -#: moon.py:60 -#, python-format -msgid "%c" -msgstr "%c" - -#: moon.py:92 moon.py:118 -msgid "Toggle Grid View" -msgstr "Mavauin namá latsja'aun grilla" - -#: moon.py:98 moon.py:124 -msgid "Toggle Hemisphere View" -msgstr "Mavaun' latsja'aun hemisferio" - -#: moon.py:130 -msgid "View" -msgstr "Manú" - -#: moon.py:250 -msgid "" -"Today's Moon Information\n" -"\n" -msgstr "" -"Peuk vakjá ne ngum'au' chu'\n" -"\n" - -#: moon.py:252 -#, python-format -msgid "" -"Phase:\n" -"%s\n" -"\n" -msgstr "" -"Namá tuju':\n" -"%s\n" -"\n" - -#: moon.py:253 -#, python-format -msgid "" -"Julian Date:\n" -"%.2f (astronomical)\n" -"\n" -msgstr "" -"kulejeiñ ngum'au' juliana:\n" -"%.2f (astronomica)\n" -"\n" - -#: moon.py:254 -#, python-format -msgid "" -"Age:\n" -"%(days).0f days, %(hours).0f hours, %(minutes).0f minutes\n" -"\n" -msgstr "" -"Riñkijí lumei:\n" -"%(days).0f kunju', %(hours).0f masajaiñ kunju, %(minutes).0f l'uik kusap\n" -"\n" - -#: moon.py:255 -#, python-format -msgid "" -"Lunation:\n" -"%(phase).2f%% through lunation %(lunation)d\n" -"\n" -msgstr "" -"kunjup lujeu' ne ngum'au' ma nangajam kimvia' kuvu':\n" -"%(phase).2f%% managueje' se vankajam kimvia' kuvu' %(lunation)d\n" -"\n" - -#: moon.py:256 -#, python-format -msgid "" -"Surface Visibility:\n" -"%.0f%% (estimated)\n" -"\n" -msgstr "" -"Vat'ei bajau kujuaí':\n" -"%.0f%% (tily'ajau)\n" -"\n" - -#: moon.py:257 -#, python-format -msgid "" -"Selenographic Terminator Longitude:\n" -"%(deg).1f°%(westOrEast)s (%(riseOrSet)s)\n" -"\n" -msgstr "" -"kuba'ap ne kamaiñ' selenográfico:\n" -"%(deg).1f°%(westOrEast)s (%(riseOrSet)s)\n" -"\n" - -#: moon.py:258 -#, python-format -msgid "" -"Next Full Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"Tsau ma lanel ngum'au':\n" -"%(date)s en %(days).0f kunju'\n" -"\n" - -#: moon.py:259 -#, python-format -msgid "" -"Next New Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"Tsaú viñkjiu ngum'au':\n" -"%(date)s en %(days).0f kunju'\n" -"\n" - -#: moon.py:260 -#, python-format -msgid "" -"Next Lunar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"Tsaú ma vupung ngum'au':\n" -"%(date)s en %(days).0f kunju'\n" -"\n" - -#: moon.py:261 -#, python-format -msgid "" -"Next Solar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"Tsaú ma vupung kunju':\n" -"%(date)s en %(days).0f kunju'\n" -"\n" - -#: moon.py:354 -msgid "SNWE" -msgstr "SNWE" - -#: moon.py:357 -msgid "NSEW" -msgstr "NSEW" - -#: moon.py:409 -msgid "Latitude" -msgstr "Latitud" - -#: moon.py:411 -msgid "Longitude" -msgstr "kuba'ap" - -#: moon.py:522 -msgid "west" -msgstr "n'iujun' kunju'" - -#: moon.py:524 -msgid "east" -msgstr "nía nja'au' kunju'" - -#: moon.py:527 -msgid "Sunset" -msgstr "Lupich' kunju'" - -#: moon.py:529 -msgid "Sunrise" -msgstr "nja'aú" - -#: moon.py:545 moon.py:561 -msgid "New Moon" -msgstr "Viñkjiu Ngum'au'" - -#: moon.py:547 -msgid "Waxing Crescent" -msgstr "Lichja'aun viñkjiu ngum'au'" - -#: moon.py:549 -msgid "First Quarter" -msgstr "manaj'a nel' ngum'au'" - -#: moon.py:551 -msgid "Waxing Gibbous" -msgstr "Ngum'au' limip chich'i ma nel'" - -#: moon.py:553 -msgid "Full Moon" -msgstr "kunuel' ngum'au'" - -#: moon.py:555 -msgid "Waning Gibbous" -msgstr "Ngum'au' limip chich'i ma nel'" - -#: moon.py:557 -msgid "Last Quarter" -msgstr "lupup tuju' ne ngum'au" - -#: moon.py:559 -msgid "Waning Crescent" -msgstr "ngum'au lupup tuju'" diff --git a/po/pl.po b/po/pl.po deleted file mode 100644 index 5728c1e..0000000 --- a/po/pl.po +++ /dev/null @@ -1,266 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-10-03 00:33-0400\n" -"PO-Revision-Date: 2011-12-08 21:24+0200\n" -"Last-Translator: FRKS \n" -"Language-Team: LANGUAGE \n" -"Language: pl\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " -"|| n%100>=20) ? 1 : 2);\n" -"X-Generator: Pootle 2.0.5\n" - -#. TRANS: "name" option from activity.info file -#: moon.py:68 -msgid "Moon" -msgstr "Księżyc" - -#. TRANS: "summary" option from activity.info file -#. TRANS: "description" option from activity.info file -msgid "" -"For all those interested in the moon! See the different phases of the moon, " -"latitudes and longtiutdes and impress all by \"predicting\" the next full " -"moon!" -msgstr "" - -#. TRANS: Date format for next full/new moon and next solar/lunar eclipse -#: moon.py:60 -#, python-format -msgid "%c" -msgstr "%c" - -#: moon.py:92 moon.py:118 -msgid "Toggle Grid View" -msgstr "Widok siatki" - -#: moon.py:98 moon.py:124 -msgid "Toggle Hemisphere View" -msgstr "Widok półkuli" - -#: moon.py:130 -msgid "View" -msgstr "Widok" - -#: moon.py:250 -msgid "" -"Today's Moon Information\n" -"\n" -msgstr "" -"Dzisiejsza informacja o księżycu\n" -"\n" - -#: moon.py:252 -#, python-format -msgid "" -"Phase:\n" -"%s\n" -"\n" -msgstr "" -"Faza:\n" -"%s\n" -"\n" - -#: moon.py:253 -#, python-format -#, python-format, -msgid "" -"Julian Date:\n" -"%.2f (astronomical)\n" -"\n" -msgstr "" -"Data juliańska: \n" -"%.2f (astronomiczna)\n" -"\n" - -#: moon.py:254 -#, python-format -#, python-format, -msgid "" -"Age:\n" -"%(days).0f days, %(hours).0f hours, %(minutes).0f minutes\n" -"\n" -msgstr "" -"Wiek:\n" -"%(days).0f dni, %(hours).0f godzin, %(minutes).0f minut\n" -"\n" - -# http://pl.wikipedia.org/wiki/Lunacja -#: moon.py:255 -#, python-format -#, python-format, -msgid "" -"Lunation:\n" -"%(phase).2f%% through lunation %(lunation)d\n" -"\n" -msgstr "" -"Lunacia:\n" -"%(phase).2f%% do lunacji %(lunation)d\n" -"\n" - -#: moon.py:256 -#, python-format -msgid "" -"Surface Visibility:\n" -"%.0f%% (estimated)\n" -"\n" -msgstr "" -"Widoczność powierzchni:\n" -"%.0f%% (estimated)\n" -"\n" - -# http://pl.wikipedia.org/wiki/Terminator_(astronomia) -#: moon.py:257 -#, python-format -#, python-format, -msgid "" -"Selenographic Terminator Longitude:\n" -"%(deg).1f°%(westOrEast)s (%(riseOrSet)s)\n" -"\n" -msgstr "" -"Współrzędne długości geograficznej terminatora księżycowego:\n" -"%(deg).1f°%(westOrEast)s (%(riseOrSet)s)\n" -"\n" - -#: moon.py:258 -#, python-format -msgid "" -"Next Full Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"Następna Pełnia Księżyca:\n" -"%(date)s za %(days).0f dni\n" -"\n" - -#: moon.py:259 -#, python-format -msgid "" -"Next New Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"Następny Nów Księżyca:\n" -"%(date)s za %(days).0f dni\n" -"\n" - -#: moon.py:260 -#, python-format -msgid "" -"Next Lunar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"Następne zaćmienie Księżyca\n" -"%(date)s za %(days).0f dni\n" -"\n" - -#: moon.py:261 -#, python-format -msgid "" -"Next Solar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"Następne zaćmienie Słońca:\n" -"%(date)s za %(days).0f dni\n" -"\n" - -#: moon.py:354 -msgid "SNWE" -msgstr "PdPnZW" - -#: moon.py:357 -msgid "NSEW" -msgstr "PnPdWZ" - -#: moon.py:409 -msgid "Latitude" -msgstr "Szerokość" - -#: moon.py:411 -msgid "Longitude" -msgstr "Długość" - -#: moon.py:522 -msgid "west" -msgstr "zachód" - -#: moon.py:524 -msgid "east" -msgstr "wschód" - -#: moon.py:527 -msgid "Sunset" -msgstr "Zachód Słońca" - -#: moon.py:529 -msgid "Sunrise" -msgstr "Wschód Słońca" - -#: moon.py:545 moon.py:561 -msgid "New Moon" -msgstr "Księżyc w Nowiu" - -#: moon.py:547 -msgid "Waxing Crescent" -msgstr "Wzrastający Sierp" - -#: moon.py:549 -msgid "First Quarter" -msgstr "Pierwsza Kwadra" - -#: moon.py:551 -msgid "Waxing Gibbous" -msgstr "Poszerzony Księżyc" - -#: moon.py:553 -msgid "Full Moon" -msgstr "Pełnia Księżyca" - -#: moon.py:555 -msgid "Waning Gibbous" -msgstr "Garbaty Księżyc" - -#: moon.py:557 -msgid "Last Quarter" -msgstr "Ostatnia Kwadra" - -#: moon.py:559 -msgid "Waning Crescent" -msgstr "Ubywający Sierp" diff --git a/po/ps.po b/po/ps.po deleted file mode 100644 index a8447b2..0000000 --- a/po/ps.po +++ /dev/null @@ -1,261 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-10-03 00:33-0400\n" -"PO-Revision-Date: 2012-04-05 22:55+0200\n" -"Last-Translator: Chris \n" -"Language-Team: LANGUAGE \n" -"Language: ps\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.5\n" - -#. TRANS: "name" option from activity.info file -#: moon.py:68 -msgid "Moon" -msgstr "سپوږمۍ" - -#. TRANS: "summary" option from activity.info file -#. TRANS: "description" option from activity.info file -msgid "" -"For all those interested in the moon! See the different phases of the moon, " -"latitudes and longtiutdes and impress all by \"predicting\" the next full " -"moon!" -msgstr "" - -#. TRANS: Date format for next full/new moon and next solar/lunar eclipse -#: moon.py:60 -#, python-format -msgid "%c" -msgstr "" - -#: moon.py:92 moon.py:118 -msgid "Toggle Grid View" -msgstr "د ټوګل جال کتنه" - -#: moon.py:98 moon.py:124 -msgid "Toggle Hemisphere View" -msgstr "د ټوګل نیمځمکغوندارې کتنه" - -#: moon.py:130 -msgid "View" -msgstr "کتنه" - -#: moon.py:250 -msgid "" -"Today's Moon Information\n" -"\n" -msgstr "" -"د نن د سپوږمۍ معلومات\n" -"\n" - -#: moon.py:252 -#, python-format -msgid "" -"Phase:\n" -"%s\n" -"\n" -msgstr "" -"پېر:\n" -"%s\n" -"\n" - -#: moon.py:253 -#, python-format -#, python-format, fuzzy -msgid "" -"Julian Date:\n" -"%.2f (astronomical)\n" -"\n" -msgstr "" -"جولین تاریخ: \n" -"%.2f (د ستورو)\n" -"\n" - -#: moon.py:254 -#, python-format -#, python-format, fuzzy -msgid "" -"Age:\n" -"%(days).0f days, %(hours).0f hours, %(minutes).0f minutes\n" -"\n" -msgstr "" -"عمر:(ورځې).‌له ورځو٬ (ساعتونه). له ساعتونو٬ (دقیقې). له دقیقې\n" -"\n" - -#: moon.py:255 -#, python-format -#, python-format, fuzzy -msgid "" -"Lunation:\n" -"%(phase).2f%% through lunation %(lunation)d\n" -"\n" -msgstr "" -"د سپوږمۍ وخت:(پېر). ۲ف د سپوږمۍ د وخت په واسطه (د سپوږمۍ وخت)\n" -"\n" - -#: moon.py:256 -#, python-format -#, python-format, fuzzy -msgid "" -"Surface Visibility:\n" -"%.0f%% (estimated)\n" -"\n" -msgstr "" -"د سطحې لیدنه: له (تخمین شوی)\n" -"\n" - -#: moon.py:257 -#, python-format -#, python-format, fuzzy -msgid "" -"Selenographic Terminator Longitude:\n" -"%(deg).1f°%(westOrEast)s (%(riseOrSet)s)\n" -"\n" -msgstr "" -"د سپوږمۍ د سطحې وړونکی اوږدوالی:(deg).1f°%(لویدیڅ یا ختیڅ)s (%(ختل یا " -"پرېوتل)s)\n" -"\n" - -#: moon.py:258 -#, python-format -#, python-format, fuzzy -msgid "" -"Next Full Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"راتلونکې پوره سپوږمۍ:ورځ(ې) په (ورځو). له ورځو\n" -"\n" - -#: moon.py:259 -#, python-format -#, python-format, fuzzy -msgid "" -"Next New Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"راتلونکې نوې سپوږمۍ:ورځ(ې) په (ورځو). له ورځو\n" -"\n" - -#: moon.py:260 -#, python-format -#, python-format, fuzzy -msgid "" -"Next Lunar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"د لمر راتلونکی کسوف:ورځ(ې) په (ورځو). له ورځو\n" -"\n" - -#: moon.py:261 -#, python-format -#, python-format, fuzzy -msgid "" -"Next Solar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"د سپوږمۍ راتلونکی کسوف:ورځ(ې) په (ورځو). له ورځو\n" -"\n" - -#: moon.py:354 -msgid "SNWE" -msgstr "SNWE" - -#: moon.py:357 -msgid "NSEW" -msgstr "NSEW" - -#: moon.py:409 -msgid "Latitude" -msgstr "د ځمکې سطحه" - -#: moon.py:411 -msgid "Longitude" -msgstr "د ځمکې اوږدوالی" - -#: moon.py:522 -msgid "west" -msgstr "لویدیځ" - -#: moon.py:524 -msgid "east" -msgstr "ختیځ" - -#: moon.py:527 -msgid "Sunset" -msgstr "لمرپرېواته" - -#: moon.py:529 -msgid "Sunrise" -msgstr "لمرخاته" - -#: moon.py:545 moon.py:561 -msgid "New Moon" -msgstr "نوې میاشت" - -#: moon.py:547 -msgid "Waxing Crescent" -msgstr "مومېدونې میاشت" - -#: moon.py:549 -msgid "First Quarter" -msgstr "لومړنۍ برخه" - -#: moon.py:551 -msgid "Waxing Gibbous" -msgstr "نیمه مومېدونې میاشت" - -#: moon.py:553 -msgid "Full Moon" -msgstr "پوره میاشت" - -#: moon.py:555 -msgid "Waning Gibbous" -msgstr "تلونکې نیمه میاشت" - -#: moon.py:557 -msgid "Last Quarter" -msgstr "اخري برخه" - -#: moon.py:559 -msgid "Waning Crescent" -msgstr "تلونکې میاشت" diff --git a/po/pt.po b/po/pt.po deleted file mode 100644 index 94dd49d..0000000 --- a/po/pt.po +++ /dev/null @@ -1,262 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-10-03 00:33-0400\n" -"PO-Revision-Date: 2013-12-14 17:37+0200\n" -"Last-Translator: Eduardo H. \n" -"Language-Team: LANGUAGE \n" -"Language: pt\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.5\n" - -#. TRANS: "name" option from activity.info file -#: moon.py:68 -msgid "Moon" -msgstr "Lua" - -#. TRANS: "summary" option from activity.info file -#. TRANS: "description" option from activity.info file -msgid "" -"For all those interested in the moon! See the different phases of the moon, " -"latitudes and longtiutdes and impress all by \"predicting\" the next full " -"moon!" -msgstr "" -"Para todos aqueles interessados na lua! Vê as diferentes fases da lua, " -"latitudes e longitudes e impressiona todos ao \"preveres\" a próxima lua " -"cheia!" - -#. TRANS: Date format for next full/new moon and next solar/lunar eclipse -#: moon.py:60 -#, python-format -msgid "%c" -msgstr "%c" - -#: moon.py:92 moon.py:118 -msgid "Toggle Grid View" -msgstr "Alternar vista de grelha" - -#: moon.py:98 moon.py:124 -msgid "Toggle Hemisphere View" -msgstr "Alternar vista de hemisfério" - -#: moon.py:130 -msgid "View" -msgstr "Ver" - -#: moon.py:250 -msgid "" -"Today's Moon Information\n" -"\n" -msgstr "" -"Informação de hoje sobre a Lua\n" -"\n" - -#: moon.py:252 -#, python-format -msgid "" -"Phase:\n" -"%s\n" -"\n" -msgstr "" -"Fase:\n" -"%s\n" -"\n" - -#: moon.py:253 -#, python-format -msgid "" -"Julian Date:\n" -"%.2f (astronomical)\n" -"\n" -msgstr "" -"Data Juliana:\n" -"%.2f (astronómico)\n" -"\n" - -#: moon.py:254 -#, python-format -msgid "" -"Age:\n" -"%(days).0f days, %(hours).0f hours, %(minutes).0f minutes\n" -"\n" -msgstr "" -"Idade:\n" -"%(days).0f dias, %(hours).0f horas, %(minutes).0f minutos\n" -"\n" - -#: moon.py:255 -#, python-format -msgid "" -"Lunation:\n" -"%(phase).2f%% through lunation %(lunation)d\n" -"\n" -msgstr "" -"Lunação:\n" -"%(phase).2f%% através da lunação %(lunation)d\n" -"\n" - -#: moon.py:256 -#, python-format -msgid "" -"Surface Visibility:\n" -"%.0f%% (estimated)\n" -"\n" -msgstr "" -"Visibilidade da superfície:\n" -"%.0f%% (estimado)\n" -"\n" - -#: moon.py:257 -#, python-format -msgid "" -"Selenographic Terminator Longitude:\n" -"%(deg).1f°%(westOrEast)s (%(riseOrSet)s)\n" -"\n" -msgstr "" -"Longitude Selenográfica do Terminador:\n" -"%(deg).1f°%(westOrEast)s (%(riseOrSet)s)\n" -"\n" - -#: moon.py:258 -#, python-format -msgid "" -"Next Full Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"Próxima Lua Cheia:\n" -"%(date)s em %(days).0f dias\n" -"\n" - -#: moon.py:259 -#, python-format -msgid "" -"Next New Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"Próxima Lua Nova::\n" -"%(date)s em %(days).0f dias\n" -"\n" - -#: moon.py:260 -#, python-format -msgid "" -"Next Lunar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"Próximo eclipse Lunar:\n" -"%(date)s em %(days).0f dias\n" -"\n" - -#: moon.py:261 -#, python-format -msgid "" -"Next Solar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"Próximo eclipse Solar:\n" -"%(date)s em %(days).0f dias\n" -"\n" - -#: moon.py:354 -msgid "SNWE" -msgstr "SNOE" - -#: moon.py:357 -msgid "NSEW" -msgstr "NSEO" - -#: moon.py:409 -msgid "Latitude" -msgstr "Latitude" - -#: moon.py:411 -msgid "Longitude" -msgstr "Longitude" - -#: moon.py:522 -msgid "west" -msgstr "oeste" - -#: moon.py:524 -msgid "east" -msgstr "este" - -#: moon.py:527 -msgid "Sunset" -msgstr "Nascer-do-sol" - -#: moon.py:529 -msgid "Sunrise" -msgstr "Pôr-do-sol" - -#: moon.py:545 moon.py:561 -msgid "New Moon" -msgstr "Lua Nova" - -#: moon.py:547 -msgid "Waxing Crescent" -msgstr "Lua Crescente" - -#: moon.py:549 -msgid "First Quarter" -msgstr "Quarto Crescente" - -#: moon.py:551 -msgid "Waxing Gibbous" -msgstr "Lua Gibosa" - -#: moon.py:553 -msgid "Full Moon" -msgstr "Lua Cheia" - -#: moon.py:555 -msgid "Waning Gibbous" -msgstr "Lua Balsâmica" - -#: moon.py:557 -msgid "Last Quarter" -msgstr "Quarto Minguante" - -#: moon.py:559 -msgid "Waning Crescent" -msgstr "Lua Minguante" diff --git a/po/pt_BR.po b/po/pt_BR.po deleted file mode 100644 index fb3797c..0000000 --- a/po/pt_BR.po +++ /dev/null @@ -1,258 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# Tradução da Atividade Lua -# Copyright (C) 2008 -# Este arquivop é distribuido sob a mesma licença que o pacote Atividade Lua -# Gabriel Menini , 2008. -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: 6\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-10-03 00:33-0400\n" -"PO-Revision-Date: 2008-09-26 12:53-0300\n" -"Last-Translator: Gabriel Menini \n" -"Language-Team: Brazilian Portuguese \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Translate Toolkit 1.1.1rc4\n" - -#. TRANS: "name" option from activity.info file -#: moon.py:68 -msgid "Moon" -msgstr "Lua" - -#. TRANS: "summary" option from activity.info file -#. TRANS: "description" option from activity.info file -msgid "" -"For all those interested in the moon! See the different phases of the moon, " -"latitudes and longtiutdes and impress all by \"predicting\" the next full " -"moon!" -msgstr "" - -#. TRANS: Date format for next full/new moon and next solar/lunar eclipse -#: moon.py:60 -#, python-format -msgid "%c" -msgstr "" - -#: moon.py:92 moon.py:118 -msgid "Toggle Grid View" -msgstr "Comutar para vista de grade" - -#: moon.py:98 moon.py:124 -msgid "Toggle Hemisphere View" -msgstr "Comutar para vista de hemisfério" - -#: moon.py:130 -msgid "View" -msgstr "Ver" - -#: moon.py:250 -msgid "" -"Today's Moon Information\n" -"\n" -msgstr "" -"Informação da Lua para hoje\n" -"\n" - -#: moon.py:252 -#, python-format -msgid "" -"Phase:\n" -"%s\n" -"\n" -msgstr "" -"Fase:\n" -"%s\n" -"\n" - -#: moon.py:253 -#, python-format -msgid "" -"Julian Date:\n" -"%.2f (astronomical)\n" -"\n" -msgstr "" -"Data Juliana:\n" -"%.2f (astronômica)\n" -"\n" - -#: moon.py:254 -#, python-format -msgid "" -"Age:\n" -"%(days).0f days, %(hours).0f hours, %(minutes).0f minutes\n" -"\n" -msgstr "" -"Idade:\n" -"%(days).0f dias, %(hours).0f horas, %(minutes).0f minutos\n" -"\n" - -#: moon.py:255 -#, python-format -msgid "" -"Lunation:\n" -"%(phase).2f%% through lunation %(lunation)d\n" -"\n" -msgstr "" -"Lunação:\n" -"%(phase).2f%% até lunação %(lunation)d\n" -"\n" - -#: moon.py:256 -#, python-format -msgid "" -"Surface Visibility:\n" -"%.0f%% (estimated)\n" -"\n" -msgstr "" -"Visibilidade da superfície:\n" -"%.0f%% (estimated)\n" -"\n" - -#: moon.py:257 -#, python-format -msgid "" -"Selenographic Terminator Longitude:\n" -"%(deg).1f°%(westOrEast)s (%(riseOrSet)s)\n" -"\n" -msgstr "" -"Longitude do terminador selenográfico:\n" -"%(deg).1f°%(westOrEast)s (%(riseOrSet)s)\n" -"\n" - -#: moon.py:258 -#, python-format -msgid "" -"Next Full Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"Próxima Lua Cheia:\n" -"%(date)s in %(days).0f dias\n" -"\n" - -#: moon.py:259 -#, python-format -msgid "" -"Next New Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"Próxima Lua Nova:\n" -"%(date)s in %(days).0f dias\n" -"\n" - -#: moon.py:260 -#, python-format -msgid "" -"Next Lunar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"Próximo eclipse lunar:\n" -"%(date)s in %(days).0f days\n" -"\n" - -#: moon.py:261 -#, python-format -msgid "" -"Next Solar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"Próximo eclipse solar:\n" -"%(date)s in %(days).0f days\n" -"\n" - -#: moon.py:354 -msgid "SNWE" -msgstr "SNWE" - -#: moon.py:357 -msgid "NSEW" -msgstr "NSEW" - -#: moon.py:409 -msgid "Latitude" -msgstr "Latitude" - -#: moon.py:411 -msgid "Longitude" -msgstr "Longitude" - -#: moon.py:522 -msgid "west" -msgstr "oeste" - -#: moon.py:524 -msgid "east" -msgstr "leste" - -#: moon.py:527 -msgid "Sunset" -msgstr "Pôr-do-sol" - -#: moon.py:529 -msgid "Sunrise" -msgstr "Nascente" - -#: moon.py:545 moon.py:561 -msgid "New Moon" -msgstr "Lua Nova" - -#: moon.py:547 -msgid "Waxing Crescent" -msgstr "Para Quarto Crescente" - -#: moon.py:549 -msgid "First Quarter" -msgstr "Quarto Crescente" - -#: moon.py:551 -msgid "Waxing Gibbous" -msgstr "Para Lua Cheia" - -#: moon.py:553 -msgid "Full Moon" -msgstr "Lua Cheia" - -#: moon.py:555 -msgid "Waning Gibbous" -msgstr "Para Quarto Minguante" - -#: moon.py:557 -msgid "Last Quarter" -msgstr "Quarto Minguante" - -#: moon.py:559 -msgid "Waning Crescent" -msgstr "Para Lua Nova" diff --git a/po/quy.po b/po/quy.po deleted file mode 100644 index e41f47e..0000000 --- a/po/quy.po +++ /dev/null @@ -1,197 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-10-03 00:33-0400\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Translate Toolkit 1.7.0\n" - -#. TRANS: "name" option from activity.info file -#: moon.py:68 -msgid "Moon" -msgstr "" - -#. TRANS: "summary" option from activity.info file -#. TRANS: "description" option from activity.info file -msgid "" -"For all those interested in the moon! See the different phases of the moon, " -"latitudes and longtiutdes and impress all by \"predicting\" the next full " -"moon!" -msgstr "" - -#. TRANS: Date format for next full/new moon and next solar/lunar eclipse -#: moon.py:60 -#, python-format -msgid "%c" -msgstr "" - -#: moon.py:92 moon.py:118 -msgid "Toggle Grid View" -msgstr "" - -#: moon.py:98 moon.py:124 -msgid "Toggle Hemisphere View" -msgstr "" - -#: moon.py:130 -msgid "View" -msgstr "" - -#: moon.py:250 -msgid "" -"Today's Moon Information\n" -"\n" -msgstr "" - -#: moon.py:252 -#, python-format -msgid "" -"Phase:\n" -"%s\n" -"\n" -msgstr "" - -#: moon.py:253 -#, python-format -msgid "" -"Julian Date:\n" -"%.2f (astronomical)\n" -"\n" -msgstr "" - -#: moon.py:254 -#, python-format -msgid "" -"Age:\n" -"%(days).0f days, %(hours).0f hours, %(minutes).0f minutes\n" -"\n" -msgstr "" - -#: moon.py:255 -#, python-format -msgid "" -"Lunation:\n" -"%(phase).2f%% through lunation %(lunation)d\n" -"\n" -msgstr "" - -#: moon.py:256 -#, python-format -msgid "" -"Surface Visibility:\n" -"%.0f%% (estimated)\n" -"\n" -msgstr "" - -#: moon.py:257 -#, python-format -msgid "" -"Selenographic Terminator Longitude:\n" -"%(deg).1f°%(westOrEast)s (%(riseOrSet)s)\n" -"\n" -msgstr "" - -#: moon.py:258 -#, python-format -msgid "" -"Next Full Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:259 -#, python-format -msgid "" -"Next New Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:260 -#, python-format -msgid "" -"Next Lunar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:261 -#, python-format -msgid "" -"Next Solar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:354 -msgid "SNWE" -msgstr "" - -#: moon.py:357 -msgid "NSEW" -msgstr "" - -#: moon.py:409 -msgid "Latitude" -msgstr "" - -#: moon.py:411 -msgid "Longitude" -msgstr "" - -#: moon.py:522 -msgid "west" -msgstr "" - -#: moon.py:524 -msgid "east" -msgstr "" - -#: moon.py:527 -msgid "Sunset" -msgstr "" - -#: moon.py:529 -msgid "Sunrise" -msgstr "" - -#: moon.py:545 moon.py:561 -msgid "New Moon" -msgstr "" - -#: moon.py:547 -msgid "Waxing Crescent" -msgstr "" - -#: moon.py:549 -msgid "First Quarter" -msgstr "" - -#: moon.py:551 -msgid "Waxing Gibbous" -msgstr "" - -#: moon.py:553 -msgid "Full Moon" -msgstr "" - -#: moon.py:555 -msgid "Waning Gibbous" -msgstr "" - -#: moon.py:557 -msgid "Last Quarter" -msgstr "" - -#: moon.py:559 -msgid "Waning Crescent" -msgstr "" diff --git a/po/quz.po b/po/quz.po deleted file mode 100644 index ffb68d5..0000000 --- a/po/quz.po +++ /dev/null @@ -1,201 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-10-03 00:33-0400\n" -"PO-Revision-Date: 2011-11-26 09:05+0200\n" -"Last-Translator: Chris \n" -"Language-Team: LANGUAGE \n" -"Language: quz\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;\n" -"X-Generator: Pootle 2.0.5\n" - -#. TRANS: "name" option from activity.info file -#: moon.py:68 -msgid "Moon" -msgstr "" - -#. TRANS: "summary" option from activity.info file -#. TRANS: "description" option from activity.info file -msgid "" -"For all those interested in the moon! See the different phases of the moon, " -"latitudes and longtiutdes and impress all by \"predicting\" the next full " -"moon!" -msgstr "" - -# "%c" -#. TRANS: Date format for next full/new moon and next solar/lunar eclipse -#: moon.py:60 -#, python-format -msgid "%c" -msgstr "%c" - -#: moon.py:92 moon.py:118 -msgid "Toggle Grid View" -msgstr "" - -#: moon.py:98 moon.py:124 -msgid "Toggle Hemisphere View" -msgstr "" - -# "Ver" -#: moon.py:130 -msgid "View" -msgstr "Qhaway" - -#: moon.py:250 -msgid "" -"Today's Moon Information\n" -"\n" -msgstr "" - -#: moon.py:252 -#, python-format -msgid "" -"Phase:\n" -"%s\n" -"\n" -msgstr "" - -#: moon.py:253 -#, python-format -msgid "" -"Julian Date:\n" -"%.2f (astronomical)\n" -"\n" -msgstr "" - -#: moon.py:254 -#, python-format -msgid "" -"Age:\n" -"%(days).0f days, %(hours).0f hours, %(minutes).0f minutes\n" -"\n" -msgstr "" - -#: moon.py:255 -#, python-format -msgid "" -"Lunation:\n" -"%(phase).2f%% through lunation %(lunation)d\n" -"\n" -msgstr "" - -#: moon.py:256 -#, python-format -msgid "" -"Surface Visibility:\n" -"%.0f%% (estimated)\n" -"\n" -msgstr "" - -#: moon.py:257 -#, python-format -msgid "" -"Selenographic Terminator Longitude:\n" -"%(deg).1f°%(westOrEast)s (%(riseOrSet)s)\n" -"\n" -msgstr "" - -#: moon.py:258 -#, python-format -msgid "" -"Next Full Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:259 -#, python-format -msgid "" -"Next New Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:260 -#, python-format -msgid "" -"Next Lunar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:261 -#, python-format -msgid "" -"Next Solar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:354 -msgid "SNWE" -msgstr "" - -#: moon.py:357 -msgid "NSEW" -msgstr "" - -#: moon.py:409 -msgid "Latitude" -msgstr "" - -#: moon.py:411 -msgid "Longitude" -msgstr "" - -#: moon.py:522 -msgid "west" -msgstr "" - -#: moon.py:524 -msgid "east" -msgstr "" - -#: moon.py:527 -msgid "Sunset" -msgstr "" - -#: moon.py:529 -msgid "Sunrise" -msgstr "" - -#: moon.py:545 moon.py:561 -msgid "New Moon" -msgstr "" - -#: moon.py:547 -msgid "Waxing Crescent" -msgstr "" - -#: moon.py:549 -msgid "First Quarter" -msgstr "" - -#: moon.py:551 -msgid "Waxing Gibbous" -msgstr "" - -#: moon.py:553 -msgid "Full Moon" -msgstr "" - -#: moon.py:555 -msgid "Waning Gibbous" -msgstr "" - -#: moon.py:557 -msgid "Last Quarter" -msgstr "" - -#: moon.py:559 -msgid "Waning Crescent" -msgstr "" diff --git a/po/ro.po b/po/ro.po deleted file mode 100644 index 907af62..0000000 --- a/po/ro.po +++ /dev/null @@ -1,226 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-10-03 00:33-0400\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Translate Toolkit 1.1.1rc4\n" - -#. TRANS: "name" option from activity.info file -#: moon.py:68 -msgid "Moon" -msgstr "" - -#. TRANS: "summary" option from activity.info file -#. TRANS: "description" option from activity.info file -msgid "" -"For all those interested in the moon! See the different phases of the moon, " -"latitudes and longtiutdes and impress all by \"predicting\" the next full " -"moon!" -msgstr "" - -#. TRANS: Date format for next full/new moon and next solar/lunar eclipse -#: moon.py:60 -#, python-format -msgid "%c" -msgstr "" - -#: moon.py:92 moon.py:118 -msgid "Toggle Grid View" -msgstr "" - -#: moon.py:98 moon.py:124 -msgid "Toggle Hemisphere View" -msgstr "" - -#: moon.py:130 -msgid "View" -msgstr "" - -#: moon.py:250 -msgid "" -"Today's Moon Information\n" -"\n" -msgstr "" - -#: moon.py:252 -#, python-format -msgid "" -"Phase:\n" -"%s\n" -"\n" -msgstr "" - -#: moon.py:253 -#, python-format -msgid "" -"Julian Date:\n" -"%.2f (astronomical)\n" -"\n" -msgstr "" - -#: moon.py:254 -#, python-format -msgid "" -"Age:\n" -"%(days).0f days, %(hours).0f hours, %(minutes).0f minutes\n" -"\n" -msgstr "" - -#: moon.py:255 -#, python-format -msgid "" -"Lunation:\n" -"%(phase).2f%% through lunation %(lunation)d\n" -"\n" -msgstr "" - -#: moon.py:256 -#, python-format -msgid "" -"Surface Visibility:\n" -"%.0f%% (estimated)\n" -"\n" -msgstr "" - -#: moon.py:257 -#, python-format -msgid "" -"Selenographic Terminator Longitude:\n" -"%(deg).1f°%(westOrEast)s (%(riseOrSet)s)\n" -"\n" -msgstr "" - -#: moon.py:258 -#, python-format -msgid "" -"Next Full Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:259 -#, python-format -msgid "" -"Next New Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:260 -#, python-format -msgid "" -"Next Lunar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:261 -#, python-format -msgid "" -"Next Solar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:354 -msgid "SNWE" -msgstr "" - -#: moon.py:357 -msgid "NSEW" -msgstr "" - -#: moon.py:409 -msgid "Latitude" -msgstr "" - -#: moon.py:411 -msgid "Longitude" -msgstr "" - -#: moon.py:522 -msgid "west" -msgstr "" - -#: moon.py:524 -msgid "east" -msgstr "" - -#: moon.py:527 -msgid "Sunset" -msgstr "" - -#: moon.py:529 -msgid "Sunrise" -msgstr "" - -#: moon.py:545 moon.py:561 -msgid "New Moon" -msgstr "" - -#: moon.py:547 -msgid "Waxing Crescent" -msgstr "" - -#: moon.py:549 -msgid "First Quarter" -msgstr "" - -#: moon.py:551 -msgid "Waxing Gibbous" -msgstr "" - -#: moon.py:553 -msgid "Full Moon" -msgstr "" - -#: moon.py:555 -msgid "Waning Gibbous" -msgstr "" - -#: moon.py:557 -msgid "Last Quarter" -msgstr "" - -#: moon.py:559 -msgid "Waning Crescent" -msgstr "" diff --git a/po/ru.po b/po/ru.po deleted file mode 100644 index c467c33..0000000 --- a/po/ru.po +++ /dev/null @@ -1,263 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# translation of moon.po to -# ganqqwerty , 2009. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -msgid "" -msgstr "" -"Project-Id-Version: moon\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-10-03 00:33-0400\n" -"PO-Revision-Date: 2016-04-20 20:07+0000\n" -"Last-Translator: Anna \n" -"Language-Team: \n" -"Language: ru\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && " -"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -"X-Generator: Pootle 2.5.1.1\n" -"X-POOTLE-MTIME: 1461182878.000000\n" - -#. TRANS: "name" option from activity.info file -#: moon.py:68 -msgid "Moon" -msgstr "Луна" - -#. TRANS: "summary" option from activity.info file -#. TRANS: "description" option from activity.info file -msgid "" -"For all those interested in the moon! See the different phases of the moon, " -"latitudes and longtiutdes and impress all by \"predicting\" the next full " -"moon!" -msgstr "" -"Для всех, кто интересуется Луной! Смотри разные фазы луны, широту, долготу и " -"порази всех предсказанием следующего полнолуния!" - -#. TRANS: Date format for next full/new moon and next solar/lunar eclipse -#: moon.py:60 -#, python-format -msgid "%c" -msgstr "%c" - -#: moon.py:92 moon.py:118 -msgid "Toggle Grid View" -msgstr "Вкл/Выкл сетку" - -#: moon.py:98 moon.py:124 -msgid "Toggle Hemisphere View" -msgstr "Вкл/Выкл полушария" - -#: moon.py:130 -msgid "View" -msgstr "Смотреть" - -#: moon.py:250 -msgid "" -"Today's Moon Information\n" -"\n" -msgstr "" -"Сегодняшняя информация о Луне\n" -"\n" - -#: moon.py:252 -#, python-format -msgid "" -"Phase:\n" -"%s\n" -"\n" -msgstr "" -"Фаза:\n" -"%s\n" -"\n" - -#: moon.py:253 -#, python-format -msgid "" -"Julian Date:\n" -"%.2f (astronomical)\n" -"\n" -msgstr "" -"Дата:\n" -"%.2f (astronomical)\n" -"\n" - -#: moon.py:254 -#, python-format -msgid "" -"Age:\n" -"%(days).0f days, %(hours).0f hours, %(minutes).0f minutes\n" -"\n" -msgstr "" -"Возраст:\n" -"%(days).0f days, %(hours).0f hours, %(minutes).0f minutes\n" -"\n" - -#: moon.py:255 -#, python-format -msgid "" -"Lunation:\n" -"%(phase).2f%% through lunation %(lunation)d\n" -"\n" -msgstr "" -"Лунный месяц:\n" -"%(phase).2f%% through lunation %(lunation)d\n" -"\n" - -#: moon.py:256 -#, python-format -msgid "" -"Surface Visibility:\n" -"%.0f%% (estimated)\n" -"\n" -msgstr "" -"Видимость поверхности:\n" -"%.0f%% (estimated)\n" -"\n" - -#: moon.py:257 -#, python-format -msgid "" -"Selenographic Terminator Longitude:\n" -"%(deg).1f°%(westOrEast)s (%(riseOrSet)s)\n" -"\n" -msgstr "" -"Селенографическая Долгота Терминатора:\n" -"%(deg).1f°%(westOrEast)s (%(riseOrSet)s)\n" -"\n" - -#: moon.py:258 -#, python-format -msgid "" -"Next Full Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"Следущее полнолуние:\n" -"%(date)s in %(days).0f days\n" -"\n" - -#: moon.py:259 -#, python-format -msgid "" -"Next New Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"Следущее Полнолуние:\n" -"%(date)s in %(days).0f days\n" -"\n" - -#: moon.py:260 -#, python-format -msgid "" -"Next Lunar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"Следующее лунное затмение:\n" -"%(date)s in %(days).0f days\n" -"\n" - -#: moon.py:261 -#, python-format -msgid "" -"Next Solar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"Следующее солнечное затмение:\n" -"%(date)s in %(days).0f days\n" -"\n" - -#: moon.py:354 -msgid "SNWE" -msgstr "ЮСЗВ" - -#: moon.py:357 -msgid "NSEW" -msgstr "СЮВЗ" - -#: moon.py:409 -msgid "Latitude" -msgstr "Широта" - -#: moon.py:411 -msgid "Longitude" -msgstr "Долгота" - -#: moon.py:522 -msgid "west" -msgstr "запад" - -#: moon.py:524 -msgid "east" -msgstr "восток" - -#: moon.py:527 -msgid "Sunset" -msgstr "Закат" - -#: moon.py:529 -msgid "Sunrise" -msgstr "Восход" - -#: moon.py:545 moon.py:561 -msgid "New Moon" -msgstr "Новая Луна" - -#: moon.py:547 -msgid "Waxing Crescent" -msgstr "Молодая Луна" - -#: moon.py:549 -msgid "First Quarter" -msgstr "Первая четверть" - -#: moon.py:551 -msgid "Waxing Gibbous" -msgstr "Прибывающая Луна" - -#: moon.py:553 -msgid "Full Moon" -msgstr "Полная Луна" - -#: moon.py:555 -msgid "Waning Gibbous" -msgstr "Убывающая Луна" - -#: moon.py:557 -msgid "Last Quarter" -msgstr "Последняя четверть" - -#: moon.py:559 -msgid "Waning Crescent" -msgstr "Старая Луна" diff --git a/po/rw.po b/po/rw.po deleted file mode 100644 index 0a8b15f..0000000 --- a/po/rw.po +++ /dev/null @@ -1,228 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-10-03 00:33-0400\n" -"PO-Revision-Date: 2013-08-21 06:58+0200\n" -"Last-Translator: Chris \n" -"Language-Team: LANGUAGE \n" -"Language: rw\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1) ;\n" -"X-Generator: Pootle 2.0.5\n" - -#. TRANS: "name" option from activity.info file -#: moon.py:68 -msgid "Moon" -msgstr "" - -#. TRANS: "summary" option from activity.info file -#. TRANS: "description" option from activity.info file -msgid "" -"For all those interested in the moon! See the different phases of the moon, " -"latitudes and longtiutdes and impress all by \"predicting\" the next full " -"moon!" -msgstr "" - -#. TRANS: Date format for next full/new moon and next solar/lunar eclipse -#: moon.py:60 -#, python-format -msgid "%c" -msgstr "" - -#: moon.py:92 moon.py:118 -msgid "Toggle Grid View" -msgstr "" - -#: moon.py:98 moon.py:124 -msgid "Toggle Hemisphere View" -msgstr "" - -#: moon.py:130 -#, fuzzy -msgid "View" -msgstr "Kureba" - -#: moon.py:250 -msgid "" -"Today's Moon Information\n" -"\n" -msgstr "" - -#: moon.py:252 -#, python-format -msgid "" -"Phase:\n" -"%s\n" -"\n" -msgstr "" - -#: moon.py:253 -#, python-format -msgid "" -"Julian Date:\n" -"%.2f (astronomical)\n" -"\n" -msgstr "" - -#: moon.py:254 -#, python-format -msgid "" -"Age:\n" -"%(days).0f days, %(hours).0f hours, %(minutes).0f minutes\n" -"\n" -msgstr "" - -#: moon.py:255 -#, python-format -msgid "" -"Lunation:\n" -"%(phase).2f%% through lunation %(lunation)d\n" -"\n" -msgstr "" - -#: moon.py:256 -#, python-format -msgid "" -"Surface Visibility:\n" -"%.0f%% (estimated)\n" -"\n" -msgstr "" - -#: moon.py:257 -#, python-format -msgid "" -"Selenographic Terminator Longitude:\n" -"%(deg).1f°%(westOrEast)s (%(riseOrSet)s)\n" -"\n" -msgstr "" - -#: moon.py:258 -#, python-format -msgid "" -"Next Full Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:259 -#, python-format -msgid "" -"Next New Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:260 -#, python-format -msgid "" -"Next Lunar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:261 -#, python-format -msgid "" -"Next Solar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:354 -msgid "SNWE" -msgstr "" - -#: moon.py:357 -msgid "NSEW" -msgstr "" - -#: moon.py:409 -msgid "Latitude" -msgstr "" - -#: moon.py:411 -msgid "Longitude" -msgstr "" - -#: moon.py:522 -msgid "west" -msgstr "" - -#: moon.py:524 -msgid "east" -msgstr "" - -#: moon.py:527 -msgid "Sunset" -msgstr "" - -#: moon.py:529 -msgid "Sunrise" -msgstr "" - -#: moon.py:545 moon.py:561 -msgid "New Moon" -msgstr "" - -#: moon.py:547 -msgid "Waxing Crescent" -msgstr "" - -#: moon.py:549 -msgid "First Quarter" -msgstr "" - -#: moon.py:551 -msgid "Waxing Gibbous" -msgstr "" - -#: moon.py:553 -msgid "Full Moon" -msgstr "" - -#: moon.py:555 -msgid "Waning Gibbous" -msgstr "" - -#: moon.py:557 -msgid "Last Quarter" -msgstr "" - -#: moon.py:559 -msgid "Waning Crescent" -msgstr "" diff --git a/po/sd.po b/po/sd.po deleted file mode 100644 index 0a5b51a..0000000 --- a/po/sd.po +++ /dev/null @@ -1,230 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-10-03 00:33-0400\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Translate Toolkit 1.1.1rc4\n" - -#. TRANS: "name" option from activity.info file -#: moon.py:68 -msgid "Moon" -msgstr "" - -#. TRANS: "summary" option from activity.info file -#. TRANS: "description" option from activity.info file -msgid "" -"For all those interested in the moon! See the different phases of the moon, " -"latitudes and longtiutdes and impress all by \"predicting\" the next full " -"moon!" -msgstr "" - -#. TRANS: Date format for next full/new moon and next solar/lunar eclipse -#: moon.py:60 -#, python-format -msgid "%c" -msgstr "" - -#: moon.py:92 moon.py:118 -msgid "Toggle Grid View" -msgstr "" - -#: moon.py:98 moon.py:124 -msgid "Toggle Hemisphere View" -msgstr "" - -#: moon.py:130 -msgid "View" -msgstr "" - -#: moon.py:250 -msgid "" -"Today's Moon Information\n" -"\n" -msgstr "" - -#: moon.py:252 -#, python-format -msgid "" -"Phase:\n" -"%s\n" -"\n" -msgstr "" - -#: moon.py:253 -#, python-format -msgid "" -"Julian Date:\n" -"%.2f (astronomical)\n" -"\n" -msgstr "" - -#: moon.py:254 -#, python-format -msgid "" -"Age:\n" -"%(days).0f days, %(hours).0f hours, %(minutes).0f minutes\n" -"\n" -msgstr "" - -#: moon.py:255 -#, python-format -msgid "" -"Lunation:\n" -"%(phase).2f%% through lunation %(lunation)d\n" -"\n" -msgstr "" - -#: moon.py:256 -#, python-format -msgid "" -"Surface Visibility:\n" -"%.0f%% (estimated)\n" -"\n" -msgstr "" - -#: moon.py:257 -#, python-format -msgid "" -"Selenographic Terminator Longitude:\n" -"%(deg).1f°%(westOrEast)s (%(riseOrSet)s)\n" -"\n" -msgstr "" - -#: moon.py:258 -#, python-format -msgid "" -"Next Full Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:259 -#, python-format -msgid "" -"Next New Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:260 -#, python-format -msgid "" -"Next Lunar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:261 -#, python-format -msgid "" -"Next Solar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:354 -msgid "SNWE" -msgstr "" - -#: moon.py:357 -msgid "NSEW" -msgstr "" - -#: moon.py:409 -msgid "Latitude" -msgstr "" - -#: moon.py:411 -msgid "Longitude" -msgstr "" - -#: moon.py:522 -msgid "west" -msgstr "" - -#: moon.py:524 -msgid "east" -msgstr "" - -#: moon.py:527 -msgid "Sunset" -msgstr "" - -#: moon.py:529 -msgid "Sunrise" -msgstr "" - -#: moon.py:545 moon.py:561 -msgid "New Moon" -msgstr "" - -#: moon.py:547 -msgid "Waxing Crescent" -msgstr "" - -#: moon.py:549 -msgid "First Quarter" -msgstr "" - -#: moon.py:551 -msgid "Waxing Gibbous" -msgstr "" - -#: moon.py:553 -msgid "Full Moon" -msgstr "" - -#: moon.py:555 -msgid "Waning Gibbous" -msgstr "" - -#: moon.py:557 -msgid "Last Quarter" -msgstr "" - -#: moon.py:559 -msgid "Waning Crescent" -msgstr "" diff --git a/po/si.po b/po/si.po deleted file mode 100644 index e44faf5..0000000 --- a/po/si.po +++ /dev/null @@ -1,257 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# Danishka Navin , 2009. -msgid "" -msgstr "" -"Project-Id-Version: olpc\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-10-03 00:33-0400\n" -"PO-Revision-Date: 2011-09-28 08:28+0200\n" -"Last-Translator: Chris \n" -"Language-Team: Sinhalese \n" -"Language: si\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.5\n" -"X-Poedit-Country: SRI LANKA\n" -"X-Poedit-Language: Sinhala\n" - -#. TRANS: "name" option from activity.info file -#: moon.py:68 -msgid "Moon" -msgstr "සඳ" - -#. TRANS: "summary" option from activity.info file -#. TRANS: "description" option from activity.info file -msgid "" -"For all those interested in the moon! See the different phases of the moon, " -"latitudes and longtiutdes and impress all by \"predicting\" the next full " -"moon!" -msgstr "" - -#. TRANS: Date format for next full/new moon and next solar/lunar eclipse -#: moon.py:60 -#, python-format -msgid "%c" -msgstr "" - -#: moon.py:92 moon.py:118 -msgid "Toggle Grid View" -msgstr "කොටු දසුන පෙන්වන්න" - -#: moon.py:98 moon.py:124 -msgid "Toggle Hemisphere View" -msgstr "අර්ධ ගෝල දසුන පෙන්වන්න" - -#: moon.py:130 -msgid "View" -msgstr "දසුන" - -#: moon.py:250 -msgid "" -"Today's Moon Information\n" -"\n" -msgstr "" -"අද දින හඳෙහි තොරතුරු\n" -"\n" - -#: moon.py:252 -#, python-format -msgid "" -"Phase:\n" -"%s\n" -"\n" -msgstr "" -"චන්ද්‍ර කලාව:\n" -"%s\n" -"\n" - -#: moon.py:253 -#, python-format -msgid "" -"Julian Date:\n" -"%.2f (astronomical)\n" -"\n" -msgstr "" -"ජූලියානු දිනය:\n" -"%.2f (astronomical)\n" -"\n" - -#: moon.py:254 -#, python-format -msgid "" -"Age:\n" -"%(days).0f days, %(hours).0f hours, %(minutes).0f minutes\n" -"\n" -msgstr "" -"වයස:\n" -"%(days).0fදවස්, %(hours).0f පැය, %(minutes).0f මිනිත්තු\n" -"\n" - -#: moon.py:255 -#, python-format -msgid "" -"Lunation:\n" -"%(phase).2f%% through lunation %(lunation)d\n" -"\n" -msgstr "" -"ගමනේදී චන්ද්‍රයාගේ ඇතිවන වෙනස්කම්:\n" -"%(phase).2f%% ගමනේදී චන්ද්‍රයාගේ ඇතිවන වෙනස්කම් තුලින් %(lunation)d\n" -"\n" - -#: moon.py:256 -#, python-format -msgid "" -"Surface Visibility:\n" -"%.0f%% (estimated)\n" -"\n" -msgstr "" -"මතුපිට පෙනීම:\n" -"%.0f%% (estimated)\n" -"\n" - -#: moon.py:257 -#, python-format -msgid "" -"Selenographic Terminator Longitude:\n" -"%(deg).1f°%(westOrEast)s (%(riseOrSet)s)\n" -"\n" -msgstr "" - -#: moon.py:258 -#, python-format -msgid "" -"Next Full Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"මීළඟ පුර සඳ:\n" -"%(days).0f දවස් කින් දින %(date)s තුළ\n" -"\n" - -#: moon.py:259 -#, python-format -msgid "" -"Next New Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"මීළඟ නව සඳ:\n" -"%(days).0f දවස් කින් දින %(date)s තුළ\n" -"\n" - -#: moon.py:260 -#, python-format -msgid "" -"Next Lunar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"මීළඟ චන්ද්‍රග්‍රහණය:\n" -"%(days).0f දවස් කින් දින %(date)s තුළ\n" -"\n" - -#: moon.py:261 -#, python-format -msgid "" -"Next Solar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"මීළඟ සූර්යග්‍රහණය:\n" -"%(days).0f දවස් කින් දින %(date)s තුළ\n" -"\n" - -#: moon.py:354 -msgid "SNWE" -msgstr "SNWE" - -#: moon.py:357 -msgid "NSEW" -msgstr "NSEW" - -#: moon.py:409 -msgid "Latitude" -msgstr "අක්ෂාංශ" - -#: moon.py:411 -msgid "Longitude" -msgstr "දේශාංෂ" - -#: moon.py:522 -msgid "west" -msgstr "බටහිර" - -#: moon.py:524 -msgid "east" -msgstr "නැගෙනහිර" - -#: moon.py:527 -msgid "Sunset" -msgstr "හිරු බැසීම" - -#: moon.py:529 -msgid "Sunrise" -msgstr "හිරු උදාව" - -#: moon.py:545 moon.py:561 -msgid "New Moon" -msgstr "නව සඳ" - -#: moon.py:547 -msgid "Waxing Crescent" -msgstr "පුර අඩ සඳ" - -#: moon.py:549 -msgid "First Quarter" -msgstr "පළමු කාර්තුව" - -#: moon.py:551 -msgid "Waxing Gibbous" -msgstr "පුර චන්ද්‍ර මණ්ඩලය" - -#: moon.py:553 -msgid "Full Moon" -msgstr "පුර සඳ" - -#: moon.py:555 -msgid "Waning Gibbous" -msgstr "අව චන්ද්‍ර මණ්ඩලය" - -#: moon.py:557 -msgid "Last Quarter" -msgstr "අවසාන කාර්තුව" - -#: moon.py:559 -msgid "Waning Crescent" -msgstr "අව අඩ සඳ" diff --git a/po/sk.po b/po/sk.po deleted file mode 100644 index 15e4da5..0000000 --- a/po/sk.po +++ /dev/null @@ -1,227 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-10-03 00:33-0400\n" -"PO-Revision-Date: 2011-04-01 17:33+0200\n" -"Last-Translator: Chris \n" -"Language-Team: LANGUAGE \n" -"Language: sk\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" -"X-Generator: Pootle 2.0.1\n" - -#. TRANS: "name" option from activity.info file -#: moon.py:68 -msgid "Moon" -msgstr "" - -#. TRANS: "summary" option from activity.info file -#. TRANS: "description" option from activity.info file -msgid "" -"For all those interested in the moon! See the different phases of the moon, " -"latitudes and longtiutdes and impress all by \"predicting\" the next full " -"moon!" -msgstr "" - -#. TRANS: Date format for next full/new moon and next solar/lunar eclipse -#: moon.py:60 -#, python-format -msgid "%c" -msgstr "" - -#: moon.py:92 moon.py:118 -msgid "Toggle Grid View" -msgstr "" - -#: moon.py:98 moon.py:124 -msgid "Toggle Hemisphere View" -msgstr "" - -#: moon.py:130 -msgid "View" -msgstr "Prezrieť" - -#: moon.py:250 -msgid "" -"Today's Moon Information\n" -"\n" -msgstr "" - -#: moon.py:252 -#, python-format -msgid "" -"Phase:\n" -"%s\n" -"\n" -msgstr "" - -#: moon.py:253 -#, python-format -msgid "" -"Julian Date:\n" -"%.2f (astronomical)\n" -"\n" -msgstr "" - -#: moon.py:254 -#, python-format -msgid "" -"Age:\n" -"%(days).0f days, %(hours).0f hours, %(minutes).0f minutes\n" -"\n" -msgstr "" - -#: moon.py:255 -#, python-format -msgid "" -"Lunation:\n" -"%(phase).2f%% through lunation %(lunation)d\n" -"\n" -msgstr "" - -#: moon.py:256 -#, python-format -msgid "" -"Surface Visibility:\n" -"%.0f%% (estimated)\n" -"\n" -msgstr "" - -#: moon.py:257 -#, python-format -msgid "" -"Selenographic Terminator Longitude:\n" -"%(deg).1f°%(westOrEast)s (%(riseOrSet)s)\n" -"\n" -msgstr "" - -#: moon.py:258 -#, python-format -msgid "" -"Next Full Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:259 -#, python-format -msgid "" -"Next New Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:260 -#, python-format -msgid "" -"Next Lunar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:261 -#, python-format -msgid "" -"Next Solar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:354 -msgid "SNWE" -msgstr "" - -#: moon.py:357 -msgid "NSEW" -msgstr "" - -#: moon.py:409 -msgid "Latitude" -msgstr "" - -#: moon.py:411 -msgid "Longitude" -msgstr "" - -#: moon.py:522 -msgid "west" -msgstr "" - -#: moon.py:524 -msgid "east" -msgstr "" - -#: moon.py:527 -msgid "Sunset" -msgstr "" - -#: moon.py:529 -msgid "Sunrise" -msgstr "" - -#: moon.py:545 moon.py:561 -msgid "New Moon" -msgstr "" - -#: moon.py:547 -msgid "Waxing Crescent" -msgstr "" - -#: moon.py:549 -msgid "First Quarter" -msgstr "" - -#: moon.py:551 -msgid "Waxing Gibbous" -msgstr "" - -#: moon.py:553 -msgid "Full Moon" -msgstr "" - -#: moon.py:555 -msgid "Waning Gibbous" -msgstr "" - -#: moon.py:557 -msgid "Last Quarter" -msgstr "" - -#: moon.py:559 -msgid "Waning Crescent" -msgstr "" diff --git a/po/sl.po b/po/sl.po deleted file mode 100644 index 68f39d9..0000000 --- a/po/sl.po +++ /dev/null @@ -1,258 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-10-03 00:33-0400\n" -"PO-Revision-Date: 2013-01-11 05:47+0200\n" -"Last-Translator: Chris \n" -"Language-Team: LANGUAGE \n" -"Language: sl\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || " -"n%100==4 ? 2 : 3);\n" -"X-Generator: Pootle 2.0.5\n" - -#. TRANS: "name" option from activity.info file -#: moon.py:68 -msgid "Moon" -msgstr "Luna" - -#. TRANS: "summary" option from activity.info file -#. TRANS: "description" option from activity.info file -msgid "" -"For all those interested in the moon! See the different phases of the moon, " -"latitudes and longtiutdes and impress all by \"predicting\" the next full " -"moon!" -msgstr "" - -#. TRANS: Date format for next full/new moon and next solar/lunar eclipse -#: moon.py:60 -#, python-format -msgid "%c" -msgstr "%c" - -#: moon.py:92 moon.py:118 -msgid "Toggle Grid View" -msgstr "Preklopi na mrežni pogled" - -#: moon.py:98 moon.py:124 -msgid "Toggle Hemisphere View" -msgstr "Preklopi na pogled poloble" - -#: moon.py:130 -msgid "View" -msgstr "Pogled" - -#: moon.py:250 -msgid "" -"Today's Moon Information\n" -"\n" -msgstr "" -"Današnji podatki o Luni\n" -"\n" - -#: moon.py:252 -#, python-format -msgid "" -"Phase:\n" -"%s\n" -"\n" -msgstr "" -"Lunina mena:\n" -"%s\n" -"\n" - -#: moon.py:253 -#, python-format -msgid "" -"Julian Date:\n" -"%.2f (astronomical)\n" -"\n" -msgstr "" -"Datum po julijanskem koledarju:\n" -"%.2f (astronomsko)\n" -"\n" - -#: moon.py:254 -#, python-format -msgid "" -"Age:\n" -"%(days).0f days, %(hours).0f hours, %(minutes).0f minutes\n" -"\n" -msgstr "" -"Starost:\n" -"%(days).0f dni, %(hours).0f ur, %(minutes).0f minut\n" -"\n" - -#: moon.py:255 -#, python-format -msgid "" -"Lunation:\n" -"%(phase).2f%% through lunation %(lunation)d\n" -"\n" -msgstr "" -"Lunina mena:\n" -"%(phase).2f%% so lunine mene %(lunation)d\n" -"\n" - -#: moon.py:256 -#, python-format -msgid "" -"Surface Visibility:\n" -"%.0f%% (estimated)\n" -"\n" -msgstr "" -"Vidnost površja:\n" -"%.0f%% (ocenjenih)\n" -"\n" - -#: moon.py:257 -#, python-format -msgid "" -"Selenographic Terminator Longitude:\n" -"%(deg).1f°%(westOrEast)s (%(riseOrSet)s)\n" -"\n" -msgstr "" - -#: moon.py:258 -#, python-format -msgid "" -"Next Full Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"naslednja polna luna:\n" -"%(date)s čez %(days).0f dni\n" -"\n" - -#: moon.py:259 -#, python-format -msgid "" -"Next New Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"Naslednji prvi krajec:\n" -"%(date)s čez %(days).0f dni\n" -"\n" - -#: moon.py:260 -#, python-format -msgid "" -"Next Lunar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"Naslednji lunin mrk:\n" -"%(date)s čez %(days).0f dni\n" -"\n" - -#: moon.py:261 -#, python-format -msgid "" -"Next Solar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"Naslednji sončni mrk:\n" -"%(date)s čez %(days).0f dni\n" -"\n" - -#: moon.py:354 -msgid "SNWE" -msgstr "JSZV" - -#: moon.py:357 -msgid "NSEW" -msgstr "SJVZ" - -#: moon.py:409 -msgid "Latitude" -msgstr "Zemljepisna širina" - -#: moon.py:411 -msgid "Longitude" -msgstr "Zemljepisna dolžina" - -#: moon.py:522 -msgid "west" -msgstr "zahod" - -#: moon.py:524 -msgid "east" -msgstr "vzhod" - -#: moon.py:527 -msgid "Sunset" -msgstr "Sončni zahod" - -#: moon.py:529 -msgid "Sunrise" -msgstr "Sončni vzhod" - -#: moon.py:545 moon.py:561 -msgid "New Moon" -msgstr "Prvi krajec" - -#: moon.py:547 -msgid "Waxing Crescent" -msgstr "Prvi srp" - -#: moon.py:549 -msgid "First Quarter" -msgstr "Prva četrtina" - -#: moon.py:551 -msgid "Waxing Gibbous" -msgstr "" - -#: moon.py:553 -msgid "Full Moon" -msgstr "Polna luna" - -#: moon.py:555 -msgid "Waning Gibbous" -msgstr "" - -#: moon.py:557 -msgid "Last Quarter" -msgstr "Zadnja četrtina" - -#: moon.py:559 -#, fuzzy -msgid "Waning Crescent" -msgstr "Prvi srp" diff --git a/po/sm.po b/po/sm.po deleted file mode 100644 index 4b57dd3..0000000 --- a/po/sm.po +++ /dev/null @@ -1,214 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-10-03 00:33-0400\n" -"PO-Revision-Date: 2010-07-23 11:10+0200\n" -"Last-Translator: Tabitha \n" -"Language-Team: LANGUAGE \n" -"Language: sm\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Pootle 2.0.3\n" - -#. TRANS: "name" option from activity.info file -#: moon.py:68 -msgid "Moon" -msgstr "masina" - -#. TRANS: "summary" option from activity.info file -#. TRANS: "description" option from activity.info file -msgid "" -"For all those interested in the moon! See the different phases of the moon, " -"latitudes and longtiutdes and impress all by \"predicting\" the next full " -"moon!" -msgstr "" - -#. TRANS: Date format for next full/new moon and next solar/lunar eclipse -#: moon.py:60 -#, python-format -msgid "%c" -msgstr "" - -#: moon.py:92 moon.py:118 -msgid "Toggle Grid View" -msgstr "" - -#: moon.py:98 moon.py:124 -msgid "Toggle Hemisphere View" -msgstr "" - -#: moon.py:130 -msgid "View" -msgstr "va'aiga" - -#: moon.py:250 -msgid "" -"Today's Moon Information\n" -"\n" -msgstr "" - -#: moon.py:252 -#, python-format -msgid "" -"Phase:\n" -"%s\n" -"\n" -msgstr "" - -#: moon.py:253 -#, python-format -msgid "" -"Julian Date:\n" -"%.2f (astronomical)\n" -"\n" -msgstr "" - -#: moon.py:254 -#, python-format -msgid "" -"Age:\n" -"%(days).0f days, %(hours).0f hours, %(minutes).0f minutes\n" -"\n" -msgstr "" - -#: moon.py:255 -#, python-format -msgid "" -"Lunation:\n" -"%(phase).2f%% through lunation %(lunation)d\n" -"\n" -msgstr "" - -#: moon.py:256 -#, python-format -msgid "" -"Surface Visibility:\n" -"%.0f%% (estimated)\n" -"\n" -msgstr "" - -#: moon.py:257 -#, python-format -msgid "" -"Selenographic Terminator Longitude:\n" -"%(deg).1f°%(westOrEast)s (%(riseOrSet)s)\n" -"\n" -msgstr "" - -#: moon.py:258 -#, python-format -msgid "" -"Next Full Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:259 -#, python-format -msgid "" -"Next New Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:260 -#, python-format -msgid "" -"Next Lunar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:261 -#, python-format -msgid "" -"Next Solar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:354 -msgid "SNWE" -msgstr "" - -#: moon.py:357 -msgid "NSEW" -msgstr "" - -#: moon.py:409 -msgid "Latitude" -msgstr "" - -#: moon.py:411 -msgid "Longitude" -msgstr "" - -#: moon.py:522 -msgid "west" -msgstr "" - -#: moon.py:524 -msgid "east" -msgstr "" - -#: moon.py:527 -msgid "Sunset" -msgstr "" - -#: moon.py:529 -msgid "Sunrise" -msgstr "" - -#: moon.py:545 moon.py:561 -msgid "New Moon" -msgstr "" - -#: moon.py:547 -msgid "Waxing Crescent" -msgstr "" - -#: moon.py:549 -msgid "First Quarter" -msgstr "" - -#: moon.py:551 -msgid "Waxing Gibbous" -msgstr "" - -#: moon.py:553 -msgid "Full Moon" -msgstr "" - -#: moon.py:555 -msgid "Waning Gibbous" -msgstr "" - -#: moon.py:557 -msgid "Last Quarter" -msgstr "" - -#: moon.py:559 -msgid "Waning Crescent" -msgstr "" diff --git a/po/son.po b/po/son.po deleted file mode 100644 index f24b985..0000000 --- a/po/son.po +++ /dev/null @@ -1,198 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-10-03 00:33-0400\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Translate Toolkit 1.7.0\n" - -#. TRANS: "name" option from activity.info file -#: moon.py:68 -msgid "Moon" -msgstr "" - -#. TRANS: "summary" option from activity.info file -#. TRANS: "description" option from activity.info file -msgid "" -"For all those interested in the moon! See the different phases of the moon, " -"latitudes and longtiutdes and impress all by \"predicting\" the next full " -"moon!" -msgstr "" - -#. TRANS: Date format for next full/new moon and next solar/lunar eclipse -#: moon.py:60 -#, python-format -msgid "%c" -msgstr "" - -#: moon.py:92 moon.py:118 -msgid "Toggle Grid View" -msgstr "" - -#: moon.py:98 moon.py:124 -msgid "Toggle Hemisphere View" -msgstr "" - -#: moon.py:130 -msgid "View" -msgstr "" - -#: moon.py:250 -msgid "" -"Today's Moon Information\n" -"\n" -msgstr "" - -#: moon.py:252 -#, python-format -msgid "" -"Phase:\n" -"%s\n" -"\n" -msgstr "" - -#: moon.py:253 -#, python-format -msgid "" -"Julian Date:\n" -"%.2f (astronomical)\n" -"\n" -msgstr "" - -#: moon.py:254 -#, python-format -msgid "" -"Age:\n" -"%(days).0f days, %(hours).0f hours, %(minutes).0f minutes\n" -"\n" -msgstr "" - -#: moon.py:255 -#, python-format -msgid "" -"Lunation:\n" -"%(phase).2f%% through lunation %(lunation)d\n" -"\n" -msgstr "" - -#: moon.py:256 -#, python-format -msgid "" -"Surface Visibility:\n" -"%.0f%% (estimated)\n" -"\n" -msgstr "" - -#: moon.py:257 -#, python-format -msgid "" -"Selenographic Terminator Longitude:\n" -"%(deg).1f°%(westOrEast)s (%(riseOrSet)s)\n" -"\n" -msgstr "" - -#: moon.py:258 -#, python-format -msgid "" -"Next Full Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:259 -#, python-format -msgid "" -"Next New Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:260 -#, python-format -msgid "" -"Next Lunar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:261 -#, python-format -msgid "" -"Next Solar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:354 -msgid "SNWE" -msgstr "" - -#: moon.py:357 -msgid "NSEW" -msgstr "" - -#: moon.py:409 -msgid "Latitude" -msgstr "" - -#: moon.py:411 -msgid "Longitude" -msgstr "" - -#: moon.py:522 -msgid "west" -msgstr "" - -#: moon.py:524 -msgid "east" -msgstr "" - -#: moon.py:527 -msgid "Sunset" -msgstr "" - -#: moon.py:529 -msgid "Sunrise" -msgstr "" - -#: moon.py:545 moon.py:561 -msgid "New Moon" -msgstr "" - -#: moon.py:547 -msgid "Waxing Crescent" -msgstr "" - -#: moon.py:549 -msgid "First Quarter" -msgstr "" - -#: moon.py:551 -msgid "Waxing Gibbous" -msgstr "" - -#: moon.py:553 -msgid "Full Moon" -msgstr "" - -#: moon.py:555 -msgid "Waning Gibbous" -msgstr "" - -#: moon.py:557 -msgid "Last Quarter" -msgstr "" - -#: moon.py:559 -msgid "Waning Crescent" -msgstr "" diff --git a/po/sq.po b/po/sq.po deleted file mode 100644 index eb4457d..0000000 --- a/po/sq.po +++ /dev/null @@ -1,229 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-10-03 00:33-0400\n" -"PO-Revision-Date: 2018-02-03 20:47+0000\n" -"Last-Translator: Besnik_b \n" -"Language-Team: LANGUAGE \n" -"Language: sq\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.5.1.1\n" -"X-POOTLE-MTIME: 1517690834.000000\n" - -#. TRANS: "name" option from activity.info file -#: moon.py:68 -msgid "Moon" -msgstr "Hënë" - -#. TRANS: "summary" option from activity.info file -#. TRANS: "description" option from activity.info file -msgid "" -"For all those interested in the moon! See the different phases of the moon, " -"latitudes and longitudes and impress all by \"predicting\" the next full " -"moon!" -msgstr "" -"Për tërë ata që u intereson hëna! Shihni fazat e ndryshme të hënës, " -"gjerësitë dhe gjatësitë gjeografike dhe bëjuni përshtypje të tjerëve duke \"" -"parashikuar\" hënë e plotë pasuese!" - -#. TRANS: Date format for next full/new moon and next solar/lunar eclipse -#: moon.py:60 -#, python-format -msgid "%c" -msgstr "%c" - -#: moon.py:92 moon.py:118 -msgid "Toggle Grid View" -msgstr "Kalo Në Pamjen Rrjetë" - -#: moon.py:98 moon.py:124 -msgid "Toggle Hemisphere View" -msgstr "Kalo Në Pamjen Hemisferë" - -#: moon.py:130 -msgid "View" -msgstr "Shihni" - -#: moon.py:250 -msgid "" -"Today's Moon Information\n" -"\n" -msgstr "" -"Të dhëna Mbi Hënën e Sotme\n" -"\n" - -#: moon.py:252 -#, python-format -msgid "" -"Phase:\n" -"%s\n" -"\n" -msgstr "" -"Fazë:\n" -"%s\n" -"\n" - -#: moon.py:253 -#, python-format -msgid "" -"Julian Date:\n" -"%.2f (astronomical)\n" -"\n" -msgstr "" -"Datë Sipas Kalendarit Julian:\n" -"%.2f (astronomike)\n" -"\n" - -#: moon.py:254 -#, python-format -msgid "" -"Age:\n" -"%(days).0f days, %(hours).0f hours, %(minutes).0f minutes\n" -"\n" -msgstr "" -"Mosha:\n" -"%(days).0f ditë, %(hours).0f orë, %(minutes).0f minuta\n" -"\n" - -#: moon.py:255 -#, python-format -msgid "" -"Lunation:\n" -"%(phase).2f%% through lunation %(lunation)d\n" -"\n" -msgstr "" - -#: moon.py:256 -#, python-format -msgid "" -"Surface Visibility:\n" -"%.0f%% (estimated)\n" -"\n" -msgstr "" -"Dukshmëri Sipërfaqeje:\n" -"%.0f%% (e pritshme)\n" -"\n" - -#: moon.py:257 -#, python-format -msgid "" -"Selenographic Terminator Longitude:\n" -"%(deg).1f°%(westOrEast)s (%(riseOrSet)s)\n" -"\n" -msgstr "" - -#: moon.py:258 -#, python-format -msgid "" -"Next Full Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"Hëna e Plotë Pasuese:\n" -"%(date)s për %(days).0f ditë\n" -"\n" - -#: moon.py:259 -#, python-format -msgid "" -"Next New Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"Hëna e Re Pasuese:\n" -"%(date)s për %(days).0f ditë\n" -"\n" - -#: moon.py:260 -#, python-format -msgid "" -"Next Lunar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"Eklipsi Hënor Pasues:\n" -"%(date)s për %(days).0f ditë\n" -"\n" - -#: moon.py:261 -#, python-format -msgid "" -"Next Solar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"Eklipsi Diellor Pasues:\n" -"%(date)s për %(days).0f ditë\n" -"\n" - -#: moon.py:354 -msgid "SNWE" -msgstr "JVPL" - -#: moon.py:357 -msgid "NSEW" -msgstr "VJLP" - -#: moon.py:409 -msgid "Latitude" -msgstr "Gjerësi gjeografike" - -#: moon.py:411 -msgid "Longitude" -msgstr "Gjatësi gjeografike" - -#: moon.py:522 -msgid "west" -msgstr "perëndim" - -#: moon.py:524 -msgid "east" -msgstr "lindje" - -#: moon.py:527 -msgid "Sunset" -msgstr "Perëndim Dielli" - -#: moon.py:529 -msgid "Sunrise" -msgstr "Ag" - -#: moon.py:545 moon.py:561 -msgid "New Moon" -msgstr "Hënë e Re" - -#: moon.py:547 -msgid "Waxing Crescent" -msgstr "" - -#: moon.py:549 -msgid "First Quarter" -msgstr "" - -#: moon.py:551 -msgid "Waxing Gibbous" -msgstr "" - -#: moon.py:553 -msgid "Full Moon" -msgstr "Hënë e Plotë" - -#: moon.py:555 -msgid "Waning Gibbous" -msgstr "" - -#: moon.py:557 -msgid "Last Quarter" -msgstr "" - -#: moon.py:559 -msgid "Waning Crescent" -msgstr "" diff --git a/po/sr.po b/po/sr.po deleted file mode 100644 index 250d70a..0000000 --- a/po/sr.po +++ /dev/null @@ -1,218 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-10-03 00:33-0400\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Translate Toolkit 1.6.0\n" - -#. TRANS: "name" option from activity.info file -#: moon.py:68 -msgid "Moon" -msgstr "" - -#. TRANS: "summary" option from activity.info file -#. TRANS: "description" option from activity.info file -msgid "" -"For all those interested in the moon! See the different phases of the moon, " -"latitudes and longtiutdes and impress all by \"predicting\" the next full " -"moon!" -msgstr "" - -#. TRANS: Date format for next full/new moon and next solar/lunar eclipse -#: moon.py:60 -#, python-format -msgid "%c" -msgstr "" - -#: moon.py:92 moon.py:118 -msgid "Toggle Grid View" -msgstr "" - -#: moon.py:98 moon.py:124 -msgid "Toggle Hemisphere View" -msgstr "" - -#: moon.py:130 -msgid "View" -msgstr "" - -#: moon.py:250 -msgid "" -"Today's Moon Information\n" -"\n" -msgstr "" - -#: moon.py:252 -#, python-format -msgid "" -"Phase:\n" -"%s\n" -"\n" -msgstr "" - -#: moon.py:253 -#, python-format -msgid "" -"Julian Date:\n" -"%.2f (astronomical)\n" -"\n" -msgstr "" - -#: moon.py:254 -#, python-format -msgid "" -"Age:\n" -"%(days).0f days, %(hours).0f hours, %(minutes).0f minutes\n" -"\n" -msgstr "" - -#: moon.py:255 -#, python-format -msgid "" -"Lunation:\n" -"%(phase).2f%% through lunation %(lunation)d\n" -"\n" -msgstr "" - -#: moon.py:256 -#, python-format -msgid "" -"Surface Visibility:\n" -"%.0f%% (estimated)\n" -"\n" -msgstr "" - -#: moon.py:257 -#, python-format -msgid "" -"Selenographic Terminator Longitude:\n" -"%(deg).1f°%(westOrEast)s (%(riseOrSet)s)\n" -"\n" -msgstr "" - -#: moon.py:258 -#, python-format -msgid "" -"Next Full Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:259 -#, python-format -msgid "" -"Next New Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:260 -#, python-format -msgid "" -"Next Lunar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:261 -#, python-format -msgid "" -"Next Solar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:354 -msgid "SNWE" -msgstr "" - -#: moon.py:357 -msgid "NSEW" -msgstr "" - -#: moon.py:409 -msgid "Latitude" -msgstr "" - -#: moon.py:411 -msgid "Longitude" -msgstr "" - -#: moon.py:522 -msgid "west" -msgstr "" - -#: moon.py:524 -msgid "east" -msgstr "" - -#: moon.py:527 -msgid "Sunset" -msgstr "" - -#: moon.py:529 -msgid "Sunrise" -msgstr "" - -#: moon.py:545 moon.py:561 -msgid "New Moon" -msgstr "" - -#: moon.py:547 -msgid "Waxing Crescent" -msgstr "" - -#: moon.py:549 -msgid "First Quarter" -msgstr "" - -#: moon.py:551 -msgid "Waxing Gibbous" -msgstr "" - -#: moon.py:553 -msgid "Full Moon" -msgstr "" - -#: moon.py:555 -msgid "Waning Gibbous" -msgstr "" - -#: moon.py:557 -msgid "Last Quarter" -msgstr "" - -#: moon.py:559 -msgid "Waning Crescent" -msgstr "" diff --git a/po/st.po b/po/st.po deleted file mode 100644 index b3d104f..0000000 --- a/po/st.po +++ /dev/null @@ -1,202 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-10-03 00:33-0400\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Translate Toolkit 1.6.0\n" - -#. TRANS: "name" option from activity.info file -#: moon.py:68 -msgid "Moon" -msgstr "" - -#. TRANS: "summary" option from activity.info file -#. TRANS: "description" option from activity.info file -msgid "" -"For all those interested in the moon! See the different phases of the moon, " -"latitudes and longtiutdes and impress all by \"predicting\" the next full " -"moon!" -msgstr "" - -#. TRANS: Date format for next full/new moon and next solar/lunar eclipse -#: moon.py:60 -#, python-format -msgid "%c" -msgstr "" - -#: moon.py:92 moon.py:118 -msgid "Toggle Grid View" -msgstr "" - -#: moon.py:98 moon.py:124 -msgid "Toggle Hemisphere View" -msgstr "" - -#: moon.py:130 -msgid "View" -msgstr "" - -#: moon.py:250 -msgid "" -"Today's Moon Information\n" -"\n" -msgstr "" - -#: moon.py:252 -#, python-format -msgid "" -"Phase:\n" -"%s\n" -"\n" -msgstr "" - -#: moon.py:253 -#, python-format -msgid "" -"Julian Date:\n" -"%.2f (astronomical)\n" -"\n" -msgstr "" - -#: moon.py:254 -#, python-format -msgid "" -"Age:\n" -"%(days).0f days, %(hours).0f hours, %(minutes).0f minutes\n" -"\n" -msgstr "" - -#: moon.py:255 -#, python-format -msgid "" -"Lunation:\n" -"%(phase).2f%% through lunation %(lunation)d\n" -"\n" -msgstr "" - -#: moon.py:256 -#, python-format -msgid "" -"Surface Visibility:\n" -"%.0f%% (estimated)\n" -"\n" -msgstr "" - -#: moon.py:257 -#, python-format -msgid "" -"Selenographic Terminator Longitude:\n" -"%(deg).1f°%(westOrEast)s (%(riseOrSet)s)\n" -"\n" -msgstr "" - -#: moon.py:258 -#, python-format -msgid "" -"Next Full Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:259 -#, python-format -msgid "" -"Next New Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:260 -#, python-format -msgid "" -"Next Lunar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:261 -#, python-format -msgid "" -"Next Solar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:354 -msgid "SNWE" -msgstr "" - -#: moon.py:357 -msgid "NSEW" -msgstr "" - -#: moon.py:409 -msgid "Latitude" -msgstr "" - -#: moon.py:411 -msgid "Longitude" -msgstr "" - -#: moon.py:522 -msgid "west" -msgstr "" - -#: moon.py:524 -msgid "east" -msgstr "" - -#: moon.py:527 -msgid "Sunset" -msgstr "" - -#: moon.py:529 -msgid "Sunrise" -msgstr "" - -#: moon.py:545 moon.py:561 -msgid "New Moon" -msgstr "" - -#: moon.py:547 -msgid "Waxing Crescent" -msgstr "" - -#: moon.py:549 -msgid "First Quarter" -msgstr "" - -#: moon.py:551 -msgid "Waxing Gibbous" -msgstr "" - -#: moon.py:553 -msgid "Full Moon" -msgstr "" - -#: moon.py:555 -msgid "Waning Gibbous" -msgstr "" - -#: moon.py:557 -msgid "Last Quarter" -msgstr "" - -#: moon.py:559 -msgid "Waning Crescent" -msgstr "" diff --git a/po/sv.po b/po/sv.po deleted file mode 100644 index c970c5e..0000000 --- a/po/sv.po +++ /dev/null @@ -1,262 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-10-03 00:33-0400\n" -"PO-Revision-Date: 2017-03-26 13:14+0000\n" -"Last-Translator: Anders \n" -"Language-Team: LANGUAGE \n" -"Language: sv\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.5.1.1\n" -"X-POOTLE-MTIME: 1490534091.000000\n" - -#. TRANS: "name" option from activity.info file -#: moon.py:68 -msgid "Moon" -msgstr "Måne" - -#. TRANS: "summary" option from activity.info file -#. TRANS: "description" option from activity.info file -msgid "" -"For all those interested in the moon! See the different phases of the moon, " -"latitudes and longtiutdes and impress all by \"predicting\" the next full " -"moon!" -msgstr "" -"För alla som är intresserade av månen! Se månens olika faser, latituder och " -"longituder och imponera på alla genom att \"förutse\" nästa fullmåne!" - -#. TRANS: Date format for next full/new moon and next solar/lunar eclipse -#: moon.py:60 -#, python-format -msgid "%c" -msgstr "%c" - -#: moon.py:92 moon.py:118 -msgid "Toggle Grid View" -msgstr "Växla rutnätsvisning" - -#: moon.py:98 moon.py:124 -msgid "Toggle Hemisphere View" -msgstr "Växla halvklotsvisning" - -#: moon.py:130 -msgid "View" -msgstr "Visa" - -#: moon.py:250 -msgid "" -"Today's Moon Information\n" -"\n" -msgstr "" -"Dagens måninformation\n" -"\n" - -#: moon.py:252 -#, python-format -msgid "" -"Phase:\n" -"%s\n" -"\n" -msgstr "" -"Fas:\n" -"%s\n" -"\n" - -#: moon.py:253 -#, python-format -msgid "" -"Julian Date:\n" -"%.2f (astronomical)\n" -"\n" -msgstr "" -"Julianskt datum:\n" -"%.2f (astronomiskt)\n" -"\n" - -#: moon.py:254 -#, python-format -msgid "" -"Age:\n" -"%(days).0f days, %(hours).0f hours, %(minutes).0f minutes\n" -"\n" -msgstr "" -"Ålder:\n" -"%(days).0f dagar, %(hours).0f timmar, %(minutes).0f minuter\n" -"\n" - -#: moon.py:255 -#, python-format -msgid "" -"Lunation:\n" -"%(phase).2f%% through lunation %(lunation)d\n" -"\n" -msgstr "" -"Lunation:\n" -"%(phase).2f%% genom lunation %(lunation)d\n" -"\n" - -#: moon.py:256 -#, python-format -msgid "" -"Surface Visibility:\n" -"%.0f%% (estimated)\n" -"\n" -msgstr "" -"Ytsynlighet:\n" -"%.0f%% (uppskattad)\n" -"\n" - -#: moon.py:257 -#, python-format -msgid "" -"Selenographic Terminator Longitude:\n" -"%(deg).1f°%(westOrEast)s (%(riseOrSet)s)\n" -"\n" -msgstr "" -"Selenografiska terminatorlongituden:\n" -"%(deg).1f°%(westOrEast)s (%(riseOrSet)s)\n" -"\n" - -#: moon.py:258 -#, python-format -msgid "" -"Next Full Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"Nästa fullmåne:\n" -"%(date)s om %(days).0f dagar\n" -"\n" - -#: moon.py:259 -#, python-format -msgid "" -"Next New Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"Nästa nymåne:\n" -"%(date)s om %(days).0f dagar\n" -"\n" - -#: moon.py:260 -#, python-format -msgid "" -"Next Lunar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"Nästa månförmörkelse:\n" -"%(date)s om %(days).0f dagar\n" -"\n" - -#: moon.py:261 -#, python-format -msgid "" -"Next Solar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"Nästa solförmörkelse:\n" -"%(date)s om %(days).0f dagar\n" -"\n" - -#: moon.py:354 -msgid "SNWE" -msgstr "SNVÖ" - -#: moon.py:357 -msgid "NSEW" -msgstr "NSÖV" - -#: moon.py:409 -msgid "Latitude" -msgstr "Latitud" - -#: moon.py:411 -msgid "Longitude" -msgstr "Longitud" - -#: moon.py:522 -msgid "west" -msgstr "väst" - -#: moon.py:524 -msgid "east" -msgstr "öst" - -#: moon.py:527 -msgid "Sunset" -msgstr "Solnedgång" - -#: moon.py:529 -msgid "Sunrise" -msgstr "Soluppgång" - -#: moon.py:545 moon.py:561 -msgid "New Moon" -msgstr "Nymåne" - -#: moon.py:547 -msgid "Waxing Crescent" -msgstr "Månskära" - -#: moon.py:549 -msgid "First Quarter" -msgstr "Första kvarteret" - -#: moon.py:551 -msgid "Waxing Gibbous" -msgstr "Andra kvarteret" - -#: moon.py:553 -msgid "Full Moon" -msgstr "Fullmåne" - -#: moon.py:555 -msgid "Waning Gibbous" -msgstr "Tredje kvarteret" - -#: moon.py:557 -msgid "Last Quarter" -msgstr "Fjärde kvarteret" - -#: moon.py:559 -msgid "Waning Crescent" -msgstr "Avtynande månskära" diff --git a/po/sw.po b/po/sw.po deleted file mode 100644 index d3eb237..0000000 --- a/po/sw.po +++ /dev/null @@ -1,269 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-10-03 00:33-0400\n" -"PO-Revision-Date: 2011-09-30 20:12+0200\n" -"Last-Translator: Chris \n" -"Language-Team: LANGUAGE \n" -"Language: sw\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.5\n" - -#. TRANS: "name" option from activity.info file -#: moon.py:68 -msgid "Moon" -msgstr "mwezi" - -#. TRANS: "summary" option from activity.info file -#. TRANS: "description" option from activity.info file -msgid "" -"For all those interested in the moon! See the different phases of the moon, " -"latitudes and longtiutdes and impress all by \"predicting\" the next full " -"moon!" -msgstr "" - -#. TRANS: Date format for next full/new moon and next solar/lunar eclipse -#: moon.py:60 -#, python-format -msgid "%c" -msgstr "%c" - -#: moon.py:92 moon.py:118 -msgid "Toggle Grid View" -msgstr "kugeuza mtazamo wa gridi" - -#: moon.py:98 moon.py:124 -msgid "Toggle Hemisphere View" -msgstr "kugeuza mtazamo wa ulimwengu" - -#: moon.py:130 -msgid "View" -msgstr "kuona" - -#: moon.py:250 -msgid "" -"Today's Moon Information\n" -"\n" -msgstr "" -"habari za mwezi leo\n" -"\n" - -#: moon.py:252 -#, python-format -msgid "" -"Phase:\n" -"%s\n" -"\n" -msgstr "" -"awamu:\n" -"%s\n" -"\n" - -#: moon.py:253 -#, python-format -msgid "" -"Julian Date:\n" -"%.2f (astronomical)\n" -"\n" -msgstr "" -"tarehe ya julian:\n" -"%.2f (angani)\n" -"\n" - -#: moon.py:254 -#, python-format -msgid "" -"Age:\n" -"%(days).0f days, %(hours).0f hours, %(minutes).0f minutes\n" -"\n" -msgstr "" -"umri:\n" -"%(days).0f Masiku, %(hours).0f Saa, %(minutes).0f dakika\n" -"\n" - -#: moon.py:255 -#, python-format -msgid "" -"Lunation:\n" -"%(phase).2f%% through lunation %(lunation)d\n" -"\n" -msgstr "" -"lunation:\n" -"%(phase).2f%%katika lunation%(lunation)d\n" -"\n" - -#: moon.py:256 -#, python-format -msgid "" -"Surface Visibility:\n" -"%.0f%% (estimated)\n" -"\n" -msgstr "" -"kujilikana wa uso:\n" -" or Kuonesha uso:\n" -"%.0f %%(inakadiriwa)\n" - -#: moon.py:257 -#, python-format -msgid "" -"Selenographic Terminator Longitude:\n" -"%(deg).1f°%(westOrEast)s (%(riseOrSet)s)\n" -"\n" -msgstr "" -"Selenographic Terminator Longitud:\n" -"%(deg).1f°%(westOrEast)s(%(riseOrSet)s)\n" -"\n" - -#: moon.py:258 -#, python-format -#, python-format, fuzzy -msgid "" -"Next Full Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"mwezi kamili ujao:\n" -"%(date)s skatika %(days).0f siku\n" -"\n" - -#: moon.py:259 -#, python-format -msgid "" -"Next New Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"mwezi kamili ujao:\n" -"%(date)s skatika %(days).0f siku\n" -"\n" - -#: moon.py:260 -#, python-format -msgid "" -"Next Lunar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"ecclipse mwandamo ujao:\n" -"%(date)s katika %(days).0f siku\n" -"\n" - -#: moon.py:261 -#, python-format -#, python-format, fuzzy -msgid "" -"Next Solar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"ecclipse mwandamo ujao:\n" -"%(date)s katika %(days).0f siku\n" -"\n" - -#: moon.py:354 -msgid "SNWE" -msgstr "SNWE" - -#: moon.py:357 -msgid "NSEW" -msgstr "NSEW" - -#: moon.py:409 -msgid "Latitude" -msgstr "latitude" - -#: moon.py:411 -msgid "Longitude" -msgstr "longitude" - -#: moon.py:522 -msgid "west" -msgstr "magarhibi" - -#: moon.py:524 -msgid "east" -msgstr "mashariki" - -#: moon.py:527 -msgid "Sunset" -msgstr "sunset" - -#: moon.py:529 -msgid "Sunrise" -msgstr "jua" - -#: moon.py:545 moon.py:561 -msgid "New Moon" -msgstr "mwezi mpya" - -#: moon.py:547 -msgid "Waxing Crescent" -msgstr "mng\"aro mpevu" - -#: moon.py:549 -msgid "First Quarter" -msgstr "robo ya kwanza" - -#: moon.py:551 -msgid "Waxing Gibbous" -msgstr "mng\"aro gibbous" - -#: moon.py:553 -msgid "Full Moon" -msgstr "mwezi kamili" - -#: moon.py:555 -msgid "Waning Gibbous" -msgstr "waning gibbous" - -#: moon.py:557 -msgid "Last Quarter" -msgstr "robo ya mwisho" - -#: moon.py:559 -msgid "Waning Crescent" -msgstr "mng\"aro mpevu" diff --git a/po/ta.po b/po/ta.po deleted file mode 100644 index f2da9f9..0000000 --- a/po/ta.po +++ /dev/null @@ -1,272 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-10-03 00:33-0400\n" -"PO-Revision-Date: 2012-03-28 17:08+0200\n" -"Last-Translator: Chris \n" -"Language-Team: LANGUAGE \n" -"Language: ta\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.5\n" - -#. TRANS: "name" option from activity.info file -#: moon.py:68 -msgid "Moon" -msgstr "நிலவு" - -#. TRANS: "summary" option from activity.info file -#. TRANS: "description" option from activity.info file -msgid "" -"For all those interested in the moon! See the different phases of the moon, " -"latitudes and longtiutdes and impress all by \"predicting\" the next full " -"moon!" -msgstr "" - -#. TRANS: Date format for next full/new moon and next solar/lunar eclipse -#: moon.py:60 -#, python-format -msgid "%c" -msgstr "%c" - -#: moon.py:92 moon.py:118 -msgid "Toggle Grid View" -msgstr "அடைப்புப்பார்வைக்கு மாற்று" - -#: moon.py:98 moon.py:124 -msgid "Toggle Hemisphere View" -msgstr "அரைப் பார்வைக்கு மாற்று" - -#: moon.py:130 -msgid "View" -msgstr "பார்வை" - -#: moon.py:250 -msgid "" -"Today's Moon Information\n" -"\n" -msgstr "" -"இன்றைய நிலவின் தகவல்\n" -"\n" - -#: moon.py:252 -#, python-format -msgid "" -"Phase:\n" -"%s\n" -"\n" -msgstr "" -"கட்டம்:\n" -"%s\n" -"\n" - -#: moon.py:253 -#, python-format -msgid "" -"Julian Date:\n" -"%.2f (astronomical)\n" -"\n" -msgstr "" -"Julian திகதி:\n" -"%.2f (வானியல்)\n" -"\n" - -#: moon.py:254 -#, python-format -#, python-format, fuzzy -#, python-format, -msgid "" -"Age:\n" -"%(days).0f days, %(hours).0f hours, %(minutes).0f minutes\n" -"\n" -msgstr "" -"வயது:\n" -"%(days).0f நாட்கள், %(hours).0f மணித்தியாலம், %(minutes).0f நிமிடங்கள்\n" -"\n" - -#: moon.py:255 -#, python-format -#, python-format, fuzzy -#, python-format, -msgid "" -"Lunation:\n" -"%(phase).2f%% through lunation %(lunation)d\n" -"\n" -msgstr "" -"Lunation:\n" -"%(phase).2f%% through lunation %(lunation)d\n" -"\n" - -#: moon.py:256 -#, python-format -msgid "" -"Surface Visibility:\n" -"%.0f%% (estimated)\n" -"\n" -msgstr "" -"மேல் பரப்பு பார்வை:\n" -"%.0f%% (மதிப்பிடப்பட்டது)\n" -"\n" - -#: moon.py:257 -#, python-format -#, python-format, -msgid "" -"Selenographic Terminator Longitude:\n" -"%(deg).1f°%(westOrEast)s (%(riseOrSet)s)\n" -"\n" -msgstr "" -"Selenographic Terminator Longitude:\n" -"%(deg).1f%(westOrEast)s (%(riseOrSet)s)\n" -"\n" - -#: moon.py:258 -#, python-format -#, python-format, fuzzy -#, python-format, -msgid "" -"Next Full Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"அடுத்த முழு நிலவு:\n" -"%(date)s கள் %(days).0f நாட்களின்\n" -"\n" - -#: moon.py:259 -#, python-format -#, python-format, fuzzy -#, python-format, -msgid "" -"Next New Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"அடுத்த புதிய நிலவு:\n" -"%(date)s %(days).0f நாட்களின்\n" -"\n" - -#: moon.py:260 -#, python-format -#, python-format, fuzzy -#, python-format, -msgid "" -"Next Lunar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"அடுத்த சந்திர கிரகணம்:\n" -"%(date)s %(days).0f நாட்களின்\n" -"\n" - -#: moon.py:261 -#, python-format -#, python-format, fuzzy -#, python-format, -msgid "" -"Next Solar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"அடுத்த சூரிய கிரகணம்:\n" -"%(date)s %(days).0f நாட்களின்\n" -"\n" - -#: moon.py:354 -msgid "SNWE" -msgstr "மேவதெகி" - -#: moon.py:357 -msgid "NSEW" -msgstr "வமேகிதெ" - -#: moon.py:409 -msgid "Latitude" -msgstr "அகலாங்கு" - -#: moon.py:411 -msgid "Longitude" -msgstr "நெட்டாங்கு" - -#: moon.py:522 -msgid "west" -msgstr "தெற்கு" - -#: moon.py:524 -msgid "east" -msgstr "கிழக்கு" - -#: moon.py:527 -msgid "Sunset" -msgstr "சூரியன் மறைவு" - -#: moon.py:529 -msgid "Sunrise" -msgstr "சூரிய உதயம்" - -#: moon.py:545 moon.py:561 -msgid "New Moon" -msgstr "புதிய நிலா" - -#: moon.py:547 -msgid "Waxing Crescent" -msgstr "வளர் பிறை" - -#: moon.py:549 -msgid "First Quarter" -msgstr "முதற் கால் பகுதி" - -#: moon.py:551 -msgid "Waxing Gibbous" -msgstr "தேய் பிறை" - -#: moon.py:553 -msgid "Full Moon" -msgstr "முழு நிலா" - -#: moon.py:555 -msgid "Waning Gibbous" -msgstr "தேய்பிறை" - -#: moon.py:557 -msgid "Last Quarter" -msgstr "இறுதி கால் பகுதி" - -#: moon.py:559 -msgid "Waning Crescent" -msgstr "அரை நிலவு" diff --git a/po/te.po b/po/te.po deleted file mode 100644 index 88920a7..0000000 --- a/po/te.po +++ /dev/null @@ -1,230 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-10-03 00:33-0400\n" -"PO-Revision-Date: 2011-09-29 08:26+0200\n" -"Last-Translator: Chris \n" -"Language-Team: LANGUAGE \n" -"Language: te\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.5\n" - -#. TRANS: "name" option from activity.info file -#: moon.py:68 -msgid "Moon" -msgstr "చందమామ" - -#. TRANS: "summary" option from activity.info file -#. TRANS: "description" option from activity.info file -msgid "" -"For all those interested in the moon! See the different phases of the moon, " -"latitudes and longtiutdes and impress all by \"predicting\" the next full " -"moon!" -msgstr "" - -#. TRANS: Date format for next full/new moon and next solar/lunar eclipse -#: moon.py:60 -#, python-format -msgid "%c" -msgstr "" - -#: moon.py:92 moon.py:118 -msgid "Toggle Grid View" -msgstr "" - -#: moon.py:98 moon.py:124 -msgid "Toggle Hemisphere View" -msgstr "" - -#: moon.py:130 -msgid "View" -msgstr "చూడు" - -#: moon.py:250 -msgid "" -"Today's Moon Information\n" -"\n" -msgstr "" - -#: moon.py:252 -#, python-format -msgid "" -"Phase:\n" -"%s\n" -"\n" -msgstr "" - -#: moon.py:253 -#, python-format -msgid "" -"Julian Date:\n" -"%.2f (astronomical)\n" -"\n" -msgstr "" - -#: moon.py:254 -#, python-format -msgid "" -"Age:\n" -"%(days).0f days, %(hours).0f hours, %(minutes).0f minutes\n" -"\n" -msgstr "" -"వయసు:\n" -"%(days).0f రోజుల, %(hours).0f గంటల, %(minutes).0f నిముషాలు\n" -"\n" - -#: moon.py:255 -#, python-format -msgid "" -"Lunation:\n" -"%(phase).2f%% through lunation %(lunation)d\n" -"\n" -msgstr "" - -#: moon.py:256 -#, python-format -msgid "" -"Surface Visibility:\n" -"%.0f%% (estimated)\n" -"\n" -msgstr "" - -#: moon.py:257 -#, python-format -msgid "" -"Selenographic Terminator Longitude:\n" -"%(deg).1f°%(westOrEast)s (%(riseOrSet)s)\n" -"\n" -msgstr "" - -#: moon.py:258 -#, python-format -msgid "" -"Next Full Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:259 -#, python-format -msgid "" -"Next New Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:260 -#, python-format -msgid "" -"Next Lunar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:261 -#, python-format -msgid "" -"Next Solar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:354 -msgid "SNWE" -msgstr "" - -#: moon.py:357 -msgid "NSEW" -msgstr "" - -#: moon.py:409 -msgid "Latitude" -msgstr "" - -#: moon.py:411 -msgid "Longitude" -msgstr "" - -#: moon.py:522 -msgid "west" -msgstr "" - -#: moon.py:524 -msgid "east" -msgstr "" - -#: moon.py:527 -msgid "Sunset" -msgstr "" - -#: moon.py:529 -msgid "Sunrise" -msgstr "" - -#: moon.py:545 moon.py:561 -msgid "New Moon" -msgstr "" - -#: moon.py:547 -msgid "Waxing Crescent" -msgstr "" - -#: moon.py:549 -msgid "First Quarter" -msgstr "" - -#: moon.py:551 -msgid "Waxing Gibbous" -msgstr "" - -#: moon.py:553 -msgid "Full Moon" -msgstr "" - -#: moon.py:555 -msgid "Waning Gibbous" -msgstr "" - -#: moon.py:557 -msgid "Last Quarter" -msgstr "" - -#: moon.py:559 -msgid "Waning Crescent" -msgstr "" diff --git a/po/template.pot b/po/template.pot new file mode 100644 index 0000000..fedd1cf --- /dev/null +++ b/po/template.pot @@ -0,0 +1,200 @@ +#. extracted from ../data.ini +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: Tue Mar 06 2018 22:20:09 GMT+0100 (CET)\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: ini2po 0.0.1\n" + +#: phase-0 +msgctxt "phase-0" +msgid "New Moon" +msgstr "" + +#: phase-1 +msgctxt "phase-1" +msgid "Waxing Crescent" +msgstr "" + +#: phase-2 +msgctxt "phase-2" +msgid "First Quarter" +msgstr "" + +#: phase-3 +msgctxt "phase-3" +msgid "Waxing Gibbous" +msgstr "" + +#: phase-4 +msgctxt "phase-4" +msgid "Full Moon" +msgstr "" + +#: phase-5 +msgctxt "phase-5" +msgid "Waning Gibbous" +msgstr "" + +#: phase-6 +msgctxt "phase-6" +msgid "Last Quarter" +msgstr "" + +#: phase-7 +msgctxt "phase-7" +msgid "Waning Crescent" +msgstr "" + +#: moonInfo +msgctxt "moonInfo" +msgid "Today\'s Moon Information" +msgstr "" + +#: phase +msgctxt "phase" +msgid "Phase" +msgstr "" + +#: julian +msgctxt "julian" +msgid "Julian Date" +msgstr "" + +#: age +msgctxt "age" +msgid "Age" +msgstr "" + +#: lunation +msgctxt "lunation" +msgid "Lunation" +msgstr "" + +#: visibility +msgctxt "visibility" +msgid "Surface Visibility" +msgstr "" + +#: seleno +msgctxt "seleno" +msgid "Selenographic Terminator Longitude" +msgstr "" + +#: full +msgctxt "full" +msgid "Next Full Moon" +msgstr "" + +#: new +msgctxt "new" +msgid "Next New Moon" +msgstr "" + +#: lunar +msgctxt "lunar" +msgid "Next Lunar eclipse" +msgstr "" + +#: solar +msgctxt "solar" +msgid "Next Solar eclipse" +msgstr "" + +#: minutes +msgctxt "minutes" +msgid "minutes" +msgstr "" + +#: hours +msgctxt "hours" +msgid "hours" +msgstr "" + +#: days +msgctxt "days" +msgid "days" +msgstr "" + +#: astro +msgctxt "astro" +msgid "(astronomical)" +msgstr "" + +#: thru +msgctxt "thru" +msgid "through lunation" +msgstr "" + +#: in +msgctxt "in" +msgid "in" +msgstr "" + +#: estimated +msgctxt "estimated" +msgid "(estimated)" +msgstr "" + +#: west +msgctxt "west" +msgid "west" +msgstr "" + +#: east +msgctxt "east" +msgid "east" +msgstr "" + +#: Sunset +msgctxt "Sunset" +msgid "Sunset" +msgstr "" + +#: Sunrise +msgctxt "Sunrise" +msgid "Sunrise" +msgstr "" + +#: SNWE +msgctxt "SNWE" +msgid "SNWE" +msgstr "" + +#: NSEW +msgctxt "NSEW" +msgid "NSEW" +msgstr "" + +#: Latitude +msgctxt "Latitude" +msgid "Latitude" +msgstr "" + +#: Longitude +msgctxt "Longitude" +msgid "Longitude" +msgstr "" + +#: ToggleGrid +msgctxt "ToggleGrid" +msgid "Toggle Grid View" +msgstr "" + +#: ToggleHemisphere +msgctxt "ToggleHemisphere" +msgid "Toggle Hemisphere View" +msgstr "" + +#: SaveImage +msgctxt "SaveImage" +msgid "Save As Image" +msgstr "" + diff --git a/po/th.po b/po/th.po deleted file mode 100644 index 066ec76..0000000 --- a/po/th.po +++ /dev/null @@ -1,261 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-10-03 00:33-0400\n" -"PO-Revision-Date: 2012-03-11 15:54+0200\n" -"Last-Translator: Chris \n" -"Language-Team: LANGUAGE \n" -"Language: th\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Pootle 2.0.5\n" - -#. TRANS: "name" option from activity.info file -#: moon.py:68 -msgid "Moon" -msgstr "พระจันทร์" - -#. TRANS: "summary" option from activity.info file -#. TRANS: "description" option from activity.info file -msgid "" -"For all those interested in the moon! See the different phases of the moon, " -"latitudes and longtiutdes and impress all by \"predicting\" the next full " -"moon!" -msgstr "" - -#. TRANS: Date format for next full/new moon and next solar/lunar eclipse -#: moon.py:60 -#, python-format -msgid "%c" -msgstr "%c" - -#: moon.py:92 moon.py:118 -msgid "Toggle Grid View" -msgstr "มุมมองกริด" - -#: moon.py:98 moon.py:124 -msgid "Toggle Hemisphere View" -msgstr "มุมมองครึ่งโลก" - -#: moon.py:130 -msgid "View" -msgstr "มุมมอง" - -#: moon.py:250 -msgid "" -"Today's Moon Information\n" -"\n" -msgstr "" -"ข้อมูลดวงจันทร์วันนี้\n" -"\n" - -#: moon.py:252 -#, python-format -msgid "" -"Phase:\n" -"%s\n" -"\n" -msgstr "" -"ลักษณะของดวงจันทร์:\n" -"%s\n" -"\n" - -#: moon.py:253 -#, python-format -#, python-format, -msgid "" -"Julian Date:\n" -"%.2f (astronomical)\n" -"\n" -msgstr "" -"วันที่แบบจูเลียส:\n" -"%.2f(เกี่ยวกับดาราศาสตร์)\n" -"\n" - -#: moon.py:254 -#, python-format -#, python-format, , -msgid "" -"Age:\n" -"%(days).0f days, %(hours).0f hours, %(minutes).0f minutes\n" -"\n" -msgstr "" -"อายุ:\n" -"%(days).0f วัน, %(hours).0f ชั่วโมง, %(minutes).0f นาที\n" -"\n" - -#: moon.py:255 -#, python-format -msgid "" -"Lunation:\n" -"%(phase).2f%% through lunation %(lunation)d\n" -"\n" -msgstr "" -"Lunation:\n" -"%(phase).2f%%through lunation %(lunation)d\n" -"\n" - -#: moon.py:256 -#, python-format -msgid "" -"Surface Visibility:\n" -"%.0f%% (estimated)\n" -"\n" -msgstr "" -"มุมมองพื้นผิว:\n" -"%.0f%% (โดยประมาณ)\n" -"\n" - -#: moon.py:257 -#, python-format -msgid "" -"Selenographic Terminator Longitude:\n" -"%(deg).1f°%(westOrEast)s (%(riseOrSet)s)\n" -"\n" -msgstr "" -"เส้นแวง Selenographic Terminator:\n" -"%(deg).1f°%(westOrEast)s (%(riseOrSet)s)\n" -"\n" - -#: moon.py:258 -#, python-format -msgid "" -"Next Full Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"พระจันทร์เต็มดวงครั้งต่อไป:\n" -"%(date)s ในอีก %(days).0f วัน\n" -"\n" - -#: moon.py:259 -#, python-format -msgid "" -"Next New Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"ดวงจันทร์มืดสนิทครั้งต่อไป:\n" -"%(date)s ในอีก %(days).0f วัน\n" -"\n" - -#: moon.py:260 -#, python-format -msgid "" -"Next Lunar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"จันทรุปราคาครั้งต่อไป:\n" -"%(date)s อีกใน %(days).0f วัน\n" -"\n" - -#: moon.py:261 -#, python-format -msgid "" -"Next Solar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"สุริยุปราคาครั้งต่อไป:\n" -"%(date)s ในอีก %(days).0f วัน\n" -"\n" - -#: moon.py:354 -msgid "SNWE" -msgstr "SNWE" - -#: moon.py:357 -msgid "NSEW" -msgstr "NSEW" - -#: moon.py:409 -msgid "Latitude" -msgstr "เส้นรุ้ง" - -#: moon.py:411 -msgid "Longitude" -msgstr "แส้นแวง" - -#: moon.py:522 -msgid "west" -msgstr "ตะวันตก" - -#: moon.py:524 -msgid "east" -msgstr "ตะวันออก" - -#: moon.py:527 -msgid "Sunset" -msgstr "พระอาทิตย์ตก" - -#: moon.py:529 -msgid "Sunrise" -msgstr "พระอาทิตย์ขึ้น" - -#: moon.py:545 moon.py:561 -msgid "New Moon" -msgstr "ดวงจันทร์มืดสนิท" - -#: moon.py:547 -msgid "Waxing Crescent" -msgstr "ปรากฏการณ์ข้างขึ้นช่วงแรก" - -#: moon.py:549 -msgid "First Quarter" -msgstr "ดวงจันทร์ครึ่งดวงแรก" - -#: moon.py:551 -msgid "Waxing Gibbous" -msgstr "ปรากฏการณ์ข้างขึ้นช่วงหลัง" - -#: moon.py:553 -msgid "Full Moon" -msgstr "ดวงจันทร์เต็มดวง" - -#: moon.py:555 -msgid "Waning Gibbous" -msgstr "ปรากฏการณ์ข้างแรมช่วงแรก" - -#: moon.py:557 -msgid "Last Quarter" -msgstr "ดวงจันทร์ครึ่งดวงหลัง" - -#: moon.py:559 -msgid "Waning Crescent" -msgstr "ปรากฏการณ์ข้างแรมช่วงหลัง" diff --git a/po/to.po b/po/to.po deleted file mode 100644 index f24b985..0000000 --- a/po/to.po +++ /dev/null @@ -1,198 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-10-03 00:33-0400\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Translate Toolkit 1.7.0\n" - -#. TRANS: "name" option from activity.info file -#: moon.py:68 -msgid "Moon" -msgstr "" - -#. TRANS: "summary" option from activity.info file -#. TRANS: "description" option from activity.info file -msgid "" -"For all those interested in the moon! See the different phases of the moon, " -"latitudes and longtiutdes and impress all by \"predicting\" the next full " -"moon!" -msgstr "" - -#. TRANS: Date format for next full/new moon and next solar/lunar eclipse -#: moon.py:60 -#, python-format -msgid "%c" -msgstr "" - -#: moon.py:92 moon.py:118 -msgid "Toggle Grid View" -msgstr "" - -#: moon.py:98 moon.py:124 -msgid "Toggle Hemisphere View" -msgstr "" - -#: moon.py:130 -msgid "View" -msgstr "" - -#: moon.py:250 -msgid "" -"Today's Moon Information\n" -"\n" -msgstr "" - -#: moon.py:252 -#, python-format -msgid "" -"Phase:\n" -"%s\n" -"\n" -msgstr "" - -#: moon.py:253 -#, python-format -msgid "" -"Julian Date:\n" -"%.2f (astronomical)\n" -"\n" -msgstr "" - -#: moon.py:254 -#, python-format -msgid "" -"Age:\n" -"%(days).0f days, %(hours).0f hours, %(minutes).0f minutes\n" -"\n" -msgstr "" - -#: moon.py:255 -#, python-format -msgid "" -"Lunation:\n" -"%(phase).2f%% through lunation %(lunation)d\n" -"\n" -msgstr "" - -#: moon.py:256 -#, python-format -msgid "" -"Surface Visibility:\n" -"%.0f%% (estimated)\n" -"\n" -msgstr "" - -#: moon.py:257 -#, python-format -msgid "" -"Selenographic Terminator Longitude:\n" -"%(deg).1f°%(westOrEast)s (%(riseOrSet)s)\n" -"\n" -msgstr "" - -#: moon.py:258 -#, python-format -msgid "" -"Next Full Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:259 -#, python-format -msgid "" -"Next New Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:260 -#, python-format -msgid "" -"Next Lunar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:261 -#, python-format -msgid "" -"Next Solar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:354 -msgid "SNWE" -msgstr "" - -#: moon.py:357 -msgid "NSEW" -msgstr "" - -#: moon.py:409 -msgid "Latitude" -msgstr "" - -#: moon.py:411 -msgid "Longitude" -msgstr "" - -#: moon.py:522 -msgid "west" -msgstr "" - -#: moon.py:524 -msgid "east" -msgstr "" - -#: moon.py:527 -msgid "Sunset" -msgstr "" - -#: moon.py:529 -msgid "Sunrise" -msgstr "" - -#: moon.py:545 moon.py:561 -msgid "New Moon" -msgstr "" - -#: moon.py:547 -msgid "Waxing Crescent" -msgstr "" - -#: moon.py:549 -msgid "First Quarter" -msgstr "" - -#: moon.py:551 -msgid "Waxing Gibbous" -msgstr "" - -#: moon.py:553 -msgid "Full Moon" -msgstr "" - -#: moon.py:555 -msgid "Waning Gibbous" -msgstr "" - -#: moon.py:557 -msgid "Last Quarter" -msgstr "" - -#: moon.py:559 -msgid "Waning Crescent" -msgstr "" diff --git a/po/tr.po b/po/tr.po deleted file mode 100644 index 6467de0..0000000 --- a/po/tr.po +++ /dev/null @@ -1,257 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-10-03 00:33-0400\n" -"PO-Revision-Date: 2008-10-07 07:58-0400\n" -"Last-Translator: abdullah kocabas \n" -"Language-Team: LANGUAGE \n" -"Language: tr\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Pootle 1.1.0rc2\n" - -#. TRANS: "name" option from activity.info file -#: moon.py:68 -msgid "Moon" -msgstr "Ay" - -#. TRANS: "summary" option from activity.info file -#. TRANS: "description" option from activity.info file -msgid "" -"For all those interested in the moon! See the different phases of the moon, " -"latitudes and longitudes and impress all by \"predicting\" the next full " -"moon!" -msgstr "" - -#. TRANS: Date format for next full/new moon and next solar/lunar eclipse -#: moon.py:60 -#, python-format -msgid "%c" -msgstr "" - -#: moon.py:92 moon.py:118 -msgid "Toggle Grid View" -msgstr "Grid Koordinatları Görünümüne Geçin" - -#: moon.py:98 moon.py:124 -msgid "Toggle Hemisphere View" -msgstr "Yarımküre Görünümüne Geçin" - -#: moon.py:130 -msgid "View" -msgstr "Görünüm" - -#: moon.py:250 -msgid "" -"Today's Moon Information\n" -"\n" -msgstr "" -"Günlük Ay Bilgisi\n" -"\n" - -#: moon.py:252 -#, python-format -msgid "" -"Phase:\n" -"%s\n" -"\n" -msgstr "" -"Evreler:\n" -"%s\n" -"\n" - -#: moon.py:253 -#, python-format -msgid "" -"Julian Date:\n" -"%.2f (astronomical)\n" -"\n" -msgstr "" -"Julian Takvime göre tarih:\n" -"%.2f (astronomik)\n" -"\n" - -#: moon.py:254 -#, python-format -msgid "" -"Age:\n" -"%(days).0f days, %(hours).0f hours, %(minutes).0f minutes\n" -"\n" -msgstr "" -"Yaş:\n" -"%(günler).0 günler, %(saatler).0 saatler, %(dakika).0f dakikalar\n" -"\n" - -#: moon.py:255 -#, python-format -msgid "" -"Lunation:\n" -"%(phase).2f%% through lunation %(lunation)d\n" -"\n" -msgstr "" -"29.5 günlük devre:\n" -"%(evre).2f%% 29.5 gün boyunca %(29.5 günlük devre)d\n" -"\n" - -#: moon.py:256 -#, python-format -msgid "" -"Surface Visibility:\n" -"%.0f%% (estimated)\n" -"\n" -msgstr "" -"Yüzey Görünürlüğü:\n" -"%.0f%% (tahmini)\n" -"\n" - -#: moon.py:257 -#, python-format -msgid "" -"Selenographic Terminator Longitude:\n" -"%(deg).1f°%(westOrEast)s (%(riseOrSet)s)\n" -"\n" -msgstr "" -"Ayın aydınlık ve karanlık kısımlarını ayıran sınırın Selenografik Boylamı:\n" -"%(derece).1f°%(batı ya da doğu)s (%(doğma ya da batma)s)\n" -"\n" - -#: moon.py:258 -#, python-format -msgid "" -"Next Full Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"Bir sonraki Dolunay Zamanı:\n" -"%(tarih)s %(günler).0f günler içinde\\\n" - -#: moon.py:259 -#, python-format -msgid "" -"Next New Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"Bir sonraki Yeniay Zamanı:\n" -"%(tarih)s %(günler).0f günler içinde\n" -"\n" - -#: moon.py:260 -#, python-format -msgid "" -"Next Lunar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"Bir sonraki Ay Tutulması:\n" -"%(tarih)s %(günler).0f günler içinde\n" -"\n" - -#: moon.py:261 -#, python-format -msgid "" -"Next Solar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"Bir sonraki Güneş Tutulması:\n" -"%(tarih)s %(günler).0f günler içinde\n" -"\n" - -#: moon.py:354 -msgid "SNWE" -msgstr "GKBD(Güney,Kuzey,Batı,Doğu)" - -#: moon.py:357 -msgid "NSEW" -msgstr "KGDB(Kuzey,Güney,Doğu,Batı)" - -#: moon.py:409 -msgid "Latitude" -msgstr "Enlem" - -#: moon.py:411 -msgid "Longitude" -msgstr "Boylam" - -#: moon.py:522 -msgid "west" -msgstr "Batı" - -#: moon.py:524 -msgid "east" -msgstr "Doğu" - -#: moon.py:527 -msgid "Sunset" -msgstr "Gün batımı" - -#: moon.py:529 -msgid "Sunrise" -msgstr "Gündoğumu" - -#: moon.py:545 moon.py:561 -msgid "New Moon" -msgstr "Yeniay" - -#: moon.py:547 -msgid "Waxing Crescent" -msgstr "Hilal" - -#: moon.py:549 -msgid "First Quarter" -msgstr "İlk Çeyrek" - -#: moon.py:551 -msgid "Waxing Gibbous" -msgstr "İlk Çeyrekle Dolunay Arasındaki Evre" - -#: moon.py:553 -msgid "Full Moon" -msgstr "Dolunay" - -#: moon.py:555 -msgid "Waning Gibbous" -msgstr "Dolunayla Son Çeyrek Arasındaki Evre" - -#: moon.py:557 -msgid "Last Quarter" -msgstr "Son Çeyrek" - -#: moon.py:559 -msgid "Waning Crescent" -msgstr "Gündoğumuna Yakın Görünen İnce Ay " diff --git a/po/tvl.po b/po/tvl.po deleted file mode 100644 index 94dcf9c..0000000 --- a/po/tvl.po +++ /dev/null @@ -1,226 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-10-03 00:33-0400\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Translate Toolkit 1.3.0\n" - -#. TRANS: "name" option from activity.info file -#: moon.py:68 -msgid "Moon" -msgstr "" - -#. TRANS: "summary" option from activity.info file -#. TRANS: "description" option from activity.info file -msgid "" -"For all those interested in the moon! See the different phases of the moon, " -"latitudes and longtiutdes and impress all by \"predicting\" the next full " -"moon!" -msgstr "" - -#. TRANS: Date format for next full/new moon and next solar/lunar eclipse -#: moon.py:60 -#, python-format -msgid "%c" -msgstr "" - -#: moon.py:92 moon.py:118 -msgid "Toggle Grid View" -msgstr "" - -#: moon.py:98 moon.py:124 -msgid "Toggle Hemisphere View" -msgstr "" - -#: moon.py:130 -msgid "View" -msgstr "" - -#: moon.py:250 -msgid "" -"Today's Moon Information\n" -"\n" -msgstr "" - -#: moon.py:252 -#, python-format -msgid "" -"Phase:\n" -"%s\n" -"\n" -msgstr "" - -#: moon.py:253 -#, python-format -msgid "" -"Julian Date:\n" -"%.2f (astronomical)\n" -"\n" -msgstr "" - -#: moon.py:254 -#, python-format -msgid "" -"Age:\n" -"%(days).0f days, %(hours).0f hours, %(minutes).0f minutes\n" -"\n" -msgstr "" - -#: moon.py:255 -#, python-format -msgid "" -"Lunation:\n" -"%(phase).2f%% through lunation %(lunation)d\n" -"\n" -msgstr "" - -#: moon.py:256 -#, python-format -msgid "" -"Surface Visibility:\n" -"%.0f%% (estimated)\n" -"\n" -msgstr "" - -#: moon.py:257 -#, python-format -msgid "" -"Selenographic Terminator Longitude:\n" -"%(deg).1f°%(westOrEast)s (%(riseOrSet)s)\n" -"\n" -msgstr "" - -#: moon.py:258 -#, python-format -msgid "" -"Next Full Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:259 -#, python-format -msgid "" -"Next New Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:260 -#, python-format -msgid "" -"Next Lunar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:261 -#, python-format -msgid "" -"Next Solar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:354 -msgid "SNWE" -msgstr "" - -#: moon.py:357 -msgid "NSEW" -msgstr "" - -#: moon.py:409 -msgid "Latitude" -msgstr "" - -#: moon.py:411 -msgid "Longitude" -msgstr "" - -#: moon.py:522 -msgid "west" -msgstr "" - -#: moon.py:524 -msgid "east" -msgstr "" - -#: moon.py:527 -msgid "Sunset" -msgstr "" - -#: moon.py:529 -msgid "Sunrise" -msgstr "" - -#: moon.py:545 moon.py:561 -msgid "New Moon" -msgstr "" - -#: moon.py:547 -msgid "Waxing Crescent" -msgstr "" - -#: moon.py:549 -msgid "First Quarter" -msgstr "" - -#: moon.py:551 -msgid "Waxing Gibbous" -msgstr "" - -#: moon.py:553 -msgid "Full Moon" -msgstr "" - -#: moon.py:555 -msgid "Waning Gibbous" -msgstr "" - -#: moon.py:557 -msgid "Last Quarter" -msgstr "" - -#: moon.py:559 -msgid "Waning Crescent" -msgstr "" diff --git a/po/tyv.po b/po/tyv.po deleted file mode 100644 index f24b985..0000000 --- a/po/tyv.po +++ /dev/null @@ -1,198 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-10-03 00:33-0400\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Translate Toolkit 1.7.0\n" - -#. TRANS: "name" option from activity.info file -#: moon.py:68 -msgid "Moon" -msgstr "" - -#. TRANS: "summary" option from activity.info file -#. TRANS: "description" option from activity.info file -msgid "" -"For all those interested in the moon! See the different phases of the moon, " -"latitudes and longtiutdes and impress all by \"predicting\" the next full " -"moon!" -msgstr "" - -#. TRANS: Date format for next full/new moon and next solar/lunar eclipse -#: moon.py:60 -#, python-format -msgid "%c" -msgstr "" - -#: moon.py:92 moon.py:118 -msgid "Toggle Grid View" -msgstr "" - -#: moon.py:98 moon.py:124 -msgid "Toggle Hemisphere View" -msgstr "" - -#: moon.py:130 -msgid "View" -msgstr "" - -#: moon.py:250 -msgid "" -"Today's Moon Information\n" -"\n" -msgstr "" - -#: moon.py:252 -#, python-format -msgid "" -"Phase:\n" -"%s\n" -"\n" -msgstr "" - -#: moon.py:253 -#, python-format -msgid "" -"Julian Date:\n" -"%.2f (astronomical)\n" -"\n" -msgstr "" - -#: moon.py:254 -#, python-format -msgid "" -"Age:\n" -"%(days).0f days, %(hours).0f hours, %(minutes).0f minutes\n" -"\n" -msgstr "" - -#: moon.py:255 -#, python-format -msgid "" -"Lunation:\n" -"%(phase).2f%% through lunation %(lunation)d\n" -"\n" -msgstr "" - -#: moon.py:256 -#, python-format -msgid "" -"Surface Visibility:\n" -"%.0f%% (estimated)\n" -"\n" -msgstr "" - -#: moon.py:257 -#, python-format -msgid "" -"Selenographic Terminator Longitude:\n" -"%(deg).1f°%(westOrEast)s (%(riseOrSet)s)\n" -"\n" -msgstr "" - -#: moon.py:258 -#, python-format -msgid "" -"Next Full Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:259 -#, python-format -msgid "" -"Next New Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:260 -#, python-format -msgid "" -"Next Lunar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:261 -#, python-format -msgid "" -"Next Solar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:354 -msgid "SNWE" -msgstr "" - -#: moon.py:357 -msgid "NSEW" -msgstr "" - -#: moon.py:409 -msgid "Latitude" -msgstr "" - -#: moon.py:411 -msgid "Longitude" -msgstr "" - -#: moon.py:522 -msgid "west" -msgstr "" - -#: moon.py:524 -msgid "east" -msgstr "" - -#: moon.py:527 -msgid "Sunset" -msgstr "" - -#: moon.py:529 -msgid "Sunrise" -msgstr "" - -#: moon.py:545 moon.py:561 -msgid "New Moon" -msgstr "" - -#: moon.py:547 -msgid "Waxing Crescent" -msgstr "" - -#: moon.py:549 -msgid "First Quarter" -msgstr "" - -#: moon.py:551 -msgid "Waxing Gibbous" -msgstr "" - -#: moon.py:553 -msgid "Full Moon" -msgstr "" - -#: moon.py:555 -msgid "Waning Gibbous" -msgstr "" - -#: moon.py:557 -msgid "Last Quarter" -msgstr "" - -#: moon.py:559 -msgid "Waning Crescent" -msgstr "" diff --git a/po/tzm.po b/po/tzm.po deleted file mode 100644 index 30c03ec..0000000 --- a/po/tzm.po +++ /dev/null @@ -1,199 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-10-03 00:33-0400\n" -"PO-Revision-Date: 2011-10-23 02:40+0200\n" -"Last-Translator: Chris \n" -"Language-Team: LANGUAGE \n" -"Language: tzm\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=n > 1;\n" -"X-Generator: Pootle 2.0.5\n" - -#. TRANS: "name" option from activity.info file -#: moon.py:68 -msgid "Moon" -msgstr "" - -#. TRANS: "summary" option from activity.info file -#. TRANS: "description" option from activity.info file -msgid "" -"For all those interested in the moon! See the different phases of the moon, " -"latitudes and longtiutdes and impress all by \"predicting\" the next full " -"moon!" -msgstr "" - -#. TRANS: Date format for next full/new moon and next solar/lunar eclipse -#: moon.py:60 -#, python-format -msgid "%c" -msgstr "%c" - -#: moon.py:92 moon.py:118 -msgid "Toggle Grid View" -msgstr "" - -#: moon.py:98 moon.py:124 -msgid "Toggle Hemisphere View" -msgstr "" - -#: moon.py:130 -msgid "View" -msgstr "ⵥⵕ" - -#: moon.py:250 -msgid "" -"Today's Moon Information\n" -"\n" -msgstr "" - -#: moon.py:252 -#, python-format -msgid "" -"Phase:\n" -"%s\n" -"\n" -msgstr "" - -#: moon.py:253 -#, python-format -msgid "" -"Julian Date:\n" -"%.2f (astronomical)\n" -"\n" -msgstr "" - -#: moon.py:254 -#, python-format -msgid "" -"Age:\n" -"%(days).0f days, %(hours).0f hours, %(minutes).0f minutes\n" -"\n" -msgstr "" - -#: moon.py:255 -#, python-format -msgid "" -"Lunation:\n" -"%(phase).2f%% through lunation %(lunation)d\n" -"\n" -msgstr "" - -#: moon.py:256 -#, python-format -msgid "" -"Surface Visibility:\n" -"%.0f%% (estimated)\n" -"\n" -msgstr "" - -#: moon.py:257 -#, python-format -msgid "" -"Selenographic Terminator Longitude:\n" -"%(deg).1f°%(westOrEast)s (%(riseOrSet)s)\n" -"\n" -msgstr "" - -#: moon.py:258 -#, python-format -msgid "" -"Next Full Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:259 -#, python-format -msgid "" -"Next New Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:260 -#, python-format -msgid "" -"Next Lunar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:261 -#, python-format -msgid "" -"Next Solar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:354 -msgid "SNWE" -msgstr "" - -#: moon.py:357 -msgid "NSEW" -msgstr "" - -#: moon.py:409 -msgid "Latitude" -msgstr "" - -#: moon.py:411 -msgid "Longitude" -msgstr "" - -#: moon.py:522 -msgid "west" -msgstr "" - -#: moon.py:524 -msgid "east" -msgstr "" - -#: moon.py:527 -msgid "Sunset" -msgstr "" - -#: moon.py:529 -msgid "Sunrise" -msgstr "" - -#: moon.py:545 moon.py:561 -msgid "New Moon" -msgstr "" - -#: moon.py:547 -msgid "Waxing Crescent" -msgstr "" - -#: moon.py:549 -msgid "First Quarter" -msgstr "" - -#: moon.py:551 -msgid "Waxing Gibbous" -msgstr "" - -#: moon.py:553 -msgid "Full Moon" -msgstr "" - -#: moon.py:555 -msgid "Waning Gibbous" -msgstr "" - -#: moon.py:557 -msgid "Last Quarter" -msgstr "" - -#: moon.py:559 -msgid "Waning Crescent" -msgstr "" diff --git a/po/tzo.po b/po/tzo.po deleted file mode 100644 index 8083b8d..0000000 --- a/po/tzo.po +++ /dev/null @@ -1,230 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-10-03 00:33-0400\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Translate Toolkit 1.3.0\n" - -#. TRANS: "name" option from activity.info file -#: moon.py:68 -msgid "Moon" -msgstr "" - -#. TRANS: "summary" option from activity.info file -#. TRANS: "description" option from activity.info file -msgid "" -"For all those interested in the moon! See the different phases of the moon, " -"latitudes and longtiutdes and impress all by \"predicting\" the next full " -"moon!" -msgstr "" - -#. TRANS: Date format for next full/new moon and next solar/lunar eclipse -#: moon.py:60 -#, python-format -msgid "%c" -msgstr "" - -#: moon.py:92 moon.py:118 -msgid "Toggle Grid View" -msgstr "" - -#: moon.py:98 moon.py:124 -msgid "Toggle Hemisphere View" -msgstr "" - -#: moon.py:130 -msgid "View" -msgstr "" - -#: moon.py:250 -msgid "" -"Today's Moon Information\n" -"\n" -msgstr "" - -#: moon.py:252 -#, python-format -msgid "" -"Phase:\n" -"%s\n" -"\n" -msgstr "" - -#: moon.py:253 -#, python-format -msgid "" -"Julian Date:\n" -"%.2f (astronomical)\n" -"\n" -msgstr "" - -#: moon.py:254 -#, python-format -msgid "" -"Age:\n" -"%(days).0f days, %(hours).0f hours, %(minutes).0f minutes\n" -"\n" -msgstr "" - -#: moon.py:255 -#, python-format -msgid "" -"Lunation:\n" -"%(phase).2f%% through lunation %(lunation)d\n" -"\n" -msgstr "" - -#: moon.py:256 -#, python-format -msgid "" -"Surface Visibility:\n" -"%.0f%% (estimated)\n" -"\n" -msgstr "" - -#: moon.py:257 -#, python-format -msgid "" -"Selenographic Terminator Longitude:\n" -"%(deg).1f°%(westOrEast)s (%(riseOrSet)s)\n" -"\n" -msgstr "" - -#: moon.py:258 -#, python-format -msgid "" -"Next Full Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:259 -#, python-format -msgid "" -"Next New Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:260 -#, python-format -msgid "" -"Next Lunar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:261 -#, python-format -msgid "" -"Next Solar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:354 -msgid "SNWE" -msgstr "" - -#: moon.py:357 -msgid "NSEW" -msgstr "" - -#: moon.py:409 -msgid "Latitude" -msgstr "" - -#: moon.py:411 -msgid "Longitude" -msgstr "" - -#: moon.py:522 -msgid "west" -msgstr "" - -#: moon.py:524 -msgid "east" -msgstr "" - -#: moon.py:527 -msgid "Sunset" -msgstr "" - -#: moon.py:529 -msgid "Sunrise" -msgstr "" - -#: moon.py:545 moon.py:561 -msgid "New Moon" -msgstr "" - -#: moon.py:547 -msgid "Waxing Crescent" -msgstr "" - -#: moon.py:549 -msgid "First Quarter" -msgstr "" - -#: moon.py:551 -msgid "Waxing Gibbous" -msgstr "" - -#: moon.py:553 -msgid "Full Moon" -msgstr "" - -#: moon.py:555 -msgid "Waning Gibbous" -msgstr "" - -#: moon.py:557 -msgid "Last Quarter" -msgstr "" - -#: moon.py:559 -msgid "Waning Crescent" -msgstr "" diff --git a/po/ug.po b/po/ug.po deleted file mode 100644 index 907af62..0000000 --- a/po/ug.po +++ /dev/null @@ -1,226 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-10-03 00:33-0400\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Translate Toolkit 1.1.1rc4\n" - -#. TRANS: "name" option from activity.info file -#: moon.py:68 -msgid "Moon" -msgstr "" - -#. TRANS: "summary" option from activity.info file -#. TRANS: "description" option from activity.info file -msgid "" -"For all those interested in the moon! See the different phases of the moon, " -"latitudes and longtiutdes and impress all by \"predicting\" the next full " -"moon!" -msgstr "" - -#. TRANS: Date format for next full/new moon and next solar/lunar eclipse -#: moon.py:60 -#, python-format -msgid "%c" -msgstr "" - -#: moon.py:92 moon.py:118 -msgid "Toggle Grid View" -msgstr "" - -#: moon.py:98 moon.py:124 -msgid "Toggle Hemisphere View" -msgstr "" - -#: moon.py:130 -msgid "View" -msgstr "" - -#: moon.py:250 -msgid "" -"Today's Moon Information\n" -"\n" -msgstr "" - -#: moon.py:252 -#, python-format -msgid "" -"Phase:\n" -"%s\n" -"\n" -msgstr "" - -#: moon.py:253 -#, python-format -msgid "" -"Julian Date:\n" -"%.2f (astronomical)\n" -"\n" -msgstr "" - -#: moon.py:254 -#, python-format -msgid "" -"Age:\n" -"%(days).0f days, %(hours).0f hours, %(minutes).0f minutes\n" -"\n" -msgstr "" - -#: moon.py:255 -#, python-format -msgid "" -"Lunation:\n" -"%(phase).2f%% through lunation %(lunation)d\n" -"\n" -msgstr "" - -#: moon.py:256 -#, python-format -msgid "" -"Surface Visibility:\n" -"%.0f%% (estimated)\n" -"\n" -msgstr "" - -#: moon.py:257 -#, python-format -msgid "" -"Selenographic Terminator Longitude:\n" -"%(deg).1f°%(westOrEast)s (%(riseOrSet)s)\n" -"\n" -msgstr "" - -#: moon.py:258 -#, python-format -msgid "" -"Next Full Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:259 -#, python-format -msgid "" -"Next New Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:260 -#, python-format -msgid "" -"Next Lunar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:261 -#, python-format -msgid "" -"Next Solar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:354 -msgid "SNWE" -msgstr "" - -#: moon.py:357 -msgid "NSEW" -msgstr "" - -#: moon.py:409 -msgid "Latitude" -msgstr "" - -#: moon.py:411 -msgid "Longitude" -msgstr "" - -#: moon.py:522 -msgid "west" -msgstr "" - -#: moon.py:524 -msgid "east" -msgstr "" - -#: moon.py:527 -msgid "Sunset" -msgstr "" - -#: moon.py:529 -msgid "Sunrise" -msgstr "" - -#: moon.py:545 moon.py:561 -msgid "New Moon" -msgstr "" - -#: moon.py:547 -msgid "Waxing Crescent" -msgstr "" - -#: moon.py:549 -msgid "First Quarter" -msgstr "" - -#: moon.py:551 -msgid "Waxing Gibbous" -msgstr "" - -#: moon.py:553 -msgid "Full Moon" -msgstr "" - -#: moon.py:555 -msgid "Waning Gibbous" -msgstr "" - -#: moon.py:557 -msgid "Last Quarter" -msgstr "" - -#: moon.py:559 -msgid "Waning Crescent" -msgstr "" diff --git a/po/uk.po b/po/uk.po deleted file mode 100644 index 7766a05..0000000 --- a/po/uk.po +++ /dev/null @@ -1,235 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-10-03 00:33-0400\n" -"PO-Revision-Date: 2017-04-26 18:24+0000\n" -"Last-Translator: yurchor \n" -"Language-Team: LANGUAGE \n" -"Language: uk\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && " -"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -"X-Generator: Pootle 2.5.1.1\n" -"X-POOTLE-MTIME: 1493231040.000000\n" - -#. TRANS: "name" option from activity.info file -#: moon.py:68 -msgid "Moon" -msgstr "Місяць" - -#. TRANS: "summary" option from activity.info file -#. TRANS: "description" option from activity.info file -msgid "" -"For all those interested in the moon! See the different phases of the moon, " -"latitudes and longitudes and impress all by \"predicting\" the next full " -"moon!" -msgstr "" -"Для усіх, хто цікавиться фазами Місяця! Спостерігайте за різними фазами " -"Місяця, широтами і довготами та вражайте усіх, «передбачаючи» повню!" - -#. TRANS: Date format for next full/new moon and next solar/lunar eclipse -#: moon.py:60 -#, python-format -msgid "%c" -msgstr "%c" - -#: moon.py:92 moon.py:118 -msgid "Toggle Grid View" -msgstr "Увімкнути/Вимкнути перегляд сітки" - -#: moon.py:98 moon.py:124 -msgid "Toggle Hemisphere View" -msgstr "Увімкнути/Вимкнути перегляд півсфери" - -#: moon.py:130 -msgid "View" -msgstr "Перегляд" - -#: moon.py:250 -msgid "" -"Today's Moon Information\n" -"\n" -msgstr "" -"Сьогоднішні дані щодо Місяця\n" -"\n" - -#: moon.py:252 -#, python-format -msgid "" -"Phase:\n" -"%s\n" -"\n" -msgstr "" -"Фаза:\n" -"%s\n" -"\n" - -#: moon.py:253 -#, python-format -msgid "" -"Julian Date:\n" -"%.2f (astronomical)\n" -"\n" -msgstr "" -"Юліанська дата:\n" -"%.2f (астрономічна)\n" -"\n" - -#: moon.py:254 -#, python-format -msgid "" -"Age:\n" -"%(days).0f days, %(hours).0f hours, %(minutes).0f minutes\n" -"\n" -msgstr "" -"Вік:\n" -"%(days).0f днів, %(hours).0f годин, %(minutes).0f хвилин\n" -"\n" - -#: moon.py:255 -#, python-format -msgid "" -"Lunation:\n" -"%(phase).2f%% through lunation %(lunation)d\n" -"\n" -msgstr "" -"Лунація:\n" -"%(phase).2f%% через лунацію %(lunation)d\n" -"\n" - -#: moon.py:256 -#, python-format -msgid "" -"Surface Visibility:\n" -"%.0f%% (estimated)\n" -"\n" -msgstr "" -"Видимість поверхні:\n" -"%.0f%% (оцінка)\n" -"\n" - -#: moon.py:257 -#, python-format -msgid "" -"Selenographic Terminator Longitude:\n" -"%(deg).1f°%(westOrEast)s (%(riseOrSet)s)\n" -"\n" -msgstr "" -"Довгота селенографічного термінатора:\n" -"%(deg).1f°%(westOrEast)s (%(riseOrSet)s)\n" -"\n" - -#: moon.py:258 -#, python-format -msgid "" -"Next Full Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"Наступний повний місяць:\n" -"%(date)s за %(days).0f днів\n" -"\n" - -#: moon.py:259 -#, python-format -msgid "" -"Next New Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"Наступний новий місяць:\n" -"%(date)s за %(days).0f днів\n" -"\n" - -#: moon.py:260 -#, python-format -msgid "" -"Next Lunar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"Наступне місячне затемнення:\n" -"%(date)s за %(days).0f днів\n" -"\n" - -#: moon.py:261 -#, python-format -msgid "" -"Next Solar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"Наступне сонячне затемнення:\n" -"%(date)s за %(days).0f днів\n" -"\n" - -#: moon.py:354 -msgid "SNWE" -msgstr "SNWE" - -#: moon.py:357 -msgid "NSEW" -msgstr "NSEW" - -#: moon.py:409 -msgid "Latitude" -msgstr "Широта" - -#: moon.py:411 -msgid "Longitude" -msgstr "Довгота" - -#: moon.py:522 -msgid "west" -msgstr "захід" - -#: moon.py:524 -msgid "east" -msgstr "схід" - -#: moon.py:527 -msgid "Sunset" -msgstr "Захід" - -#: moon.py:529 -msgid "Sunrise" -msgstr "Схід сонця" - -#: moon.py:545 moon.py:561 -msgid "New Moon" -msgstr "Новий місяць" - -#: moon.py:547 -msgid "Waxing Crescent" -msgstr "Молодий місяць" - -#: moon.py:549 -msgid "First Quarter" -msgstr "Перша чверть" - -#: moon.py:551 -msgid "Waxing Gibbous" -msgstr "Між першою чвертю та повним" - -#: moon.py:553 -msgid "Full Moon" -msgstr "Повний місяць" - -#: moon.py:555 -msgid "Waning Gibbous" -msgstr "Між повним місяцем та третьою чвертю" - -#: moon.py:557 -msgid "Last Quarter" -msgstr "Остання чверть" - -#: moon.py:559 -msgid "Waning Crescent" -msgstr "Між третьою чвертю та новим місяцем" diff --git a/po/ur.po b/po/ur.po deleted file mode 100644 index 8d424ff..0000000 --- a/po/ur.po +++ /dev/null @@ -1,228 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-10-03 00:33-0400\n" -"PO-Revision-Date: 2012-05-19 06:23+0200\n" -"Last-Translator: Chris \n" -"Language-Team: LANGUAGE \n" -"Language: ur\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.5\n" - -#. TRANS: "name" option from activity.info file -#: moon.py:68 -#, fuzzy -msgid "Moon" -msgstr "چاند" - -#. TRANS: "summary" option from activity.info file -#. TRANS: "description" option from activity.info file -msgid "" -"For all those interested in the moon! See the different phases of the moon, " -"latitudes and longtiutdes and impress all by \"predicting\" the next full " -"moon!" -msgstr "" - -#. TRANS: Date format for next full/new moon and next solar/lunar eclipse -#: moon.py:60 -#, python-format -msgid "%c" -msgstr "" - -#: moon.py:92 moon.py:118 -msgid "Toggle Grid View" -msgstr "" - -#: moon.py:98 moon.py:124 -msgid "Toggle Hemisphere View" -msgstr "" - -#: moon.py:130 -msgid "View" -msgstr "" - -#: moon.py:250 -msgid "" -"Today's Moon Information\n" -"\n" -msgstr "" - -#: moon.py:252 -#, python-format -msgid "" -"Phase:\n" -"%s\n" -"\n" -msgstr "" - -#: moon.py:253 -#, python-format -msgid "" -"Julian Date:\n" -"%.2f (astronomical)\n" -"\n" -msgstr "" - -#: moon.py:254 -#, python-format -msgid "" -"Age:\n" -"%(days).0f days, %(hours).0f hours, %(minutes).0f minutes\n" -"\n" -msgstr "" - -#: moon.py:255 -#, python-format -msgid "" -"Lunation:\n" -"%(phase).2f%% through lunation %(lunation)d\n" -"\n" -msgstr "" - -#: moon.py:256 -#, python-format -msgid "" -"Surface Visibility:\n" -"%.0f%% (estimated)\n" -"\n" -msgstr "" - -#: moon.py:257 -#, python-format -msgid "" -"Selenographic Terminator Longitude:\n" -"%(deg).1f°%(westOrEast)s (%(riseOrSet)s)\n" -"\n" -msgstr "" - -#: moon.py:258 -#, python-format -msgid "" -"Next Full Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:259 -#, python-format -msgid "" -"Next New Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:260 -#, python-format -msgid "" -"Next Lunar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:261 -#, python-format -msgid "" -"Next Solar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:354 -msgid "SNWE" -msgstr "" - -#: moon.py:357 -msgid "NSEW" -msgstr "" - -#: moon.py:409 -msgid "Latitude" -msgstr "" - -#: moon.py:411 -msgid "Longitude" -msgstr "" - -#: moon.py:522 -msgid "west" -msgstr "" - -#: moon.py:524 -msgid "east" -msgstr "" - -#: moon.py:527 -msgid "Sunset" -msgstr "" - -#: moon.py:529 -msgid "Sunrise" -msgstr "" - -#: moon.py:545 moon.py:561 -msgid "New Moon" -msgstr "" - -#: moon.py:547 -msgid "Waxing Crescent" -msgstr "" - -#: moon.py:549 -msgid "First Quarter" -msgstr "" - -#: moon.py:551 -msgid "Waxing Gibbous" -msgstr "" - -#: moon.py:553 -msgid "Full Moon" -msgstr "" - -#: moon.py:555 -msgid "Waning Gibbous" -msgstr "" - -#: moon.py:557 -msgid "Last Quarter" -msgstr "" - -#: moon.py:559 -msgid "Waning Crescent" -msgstr "" diff --git a/po/vi.po b/po/vi.po deleted file mode 100644 index 9c19683..0000000 --- a/po/vi.po +++ /dev/null @@ -1,257 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-10-03 00:33-0400\n" -"PO-Revision-Date: 2009-02-17 04:40-0500\n" -"Last-Translator: Clytie Siddall \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Pootle 1.1.0rc2\n" - -#. TRANS: "name" option from activity.info file -#: moon.py:68 -msgid "Moon" -msgstr "Mặt trăng" - -#. TRANS: "summary" option from activity.info file -#. TRANS: "description" option from activity.info file -msgid "" -"For all those interested in the moon! See the different phases of the moon, " -"latitudes and longtiutdes and impress all by \"predicting\" the next full " -"moon!" -msgstr "" - -#. TRANS: Date format for next full/new moon and next solar/lunar eclipse -#: moon.py:60 -#, python-format -msgid "%c" -msgstr "" - -#: moon.py:92 moon.py:118 -msgid "Toggle Grid View" -msgstr "Hiện/ẩn ô xem lưới" - -#: moon.py:98 moon.py:124 -msgid "Toggle Hemisphere View" -msgstr "Hiện/ẩn ô xem bán cầu" - -#: moon.py:130 -msgid "View" -msgstr "Xem" - -#: moon.py:250 -msgid "" -"Today's Moon Information\n" -"\n" -msgstr "" -"Thông tin về mặt trăng của hôm nay\n" -"\n" - -#: moon.py:252 -#, python-format -msgid "" -"Phase:\n" -"%s\n" -"\n" -msgstr "" -"Tuần:\n" -"%s\n" -"\n" - -#: moon.py:253 -#, python-format -msgid "" -"Julian Date:\n" -"%.2f (astronomical)\n" -"\n" -msgstr "" -"Lịch juliêng:\n" -"%.2f (thiên văn)\n" -"\n" - -#: moon.py:254 -#, python-format -msgid "" -"Age:\n" -"%(days).0f days, %(hours).0f hours, %(minutes).0f minutes\n" -"\n" -msgstr "" -"Thời gian hoạt động:\n" -"%(days).0f ngày, %(hours).0f giờ, %(minutes).0f phút\n" -"\n" - -#: moon.py:255 -#, python-format -msgid "" -"Lunation:\n" -"%(phase).2f%% through lunation %(lunation)d\n" -"\n" -msgstr "" -"Tháng âm lịch:\n" -"%(phase).2f%% trong tuần trăng %(lunation)d\n" -"\n" - -#: moon.py:256 -#, python-format -msgid "" -"Surface Visibility:\n" -"%.0f%% (estimated)\n" -"\n" -msgstr "" -"Khả kiến mặt:\n" -"%.0f%% (xấp xỉ)\n" -"\n" - -#: moon.py:257 -#, python-format -msgid "" -"Selenographic Terminator Longitude:\n" -"%(deg).1f°%(westOrEast)s (%(riseOrSet)s)\n" -"\n" -msgstr "" -"Độ kinh đường chấm dứt thuộc khoa nghiên cứu mặt trăng:\n" -"%(deg).1f°%(westOrEast)s (%(riseOrSet)s)\n" -"\n" - -#: moon.py:258 -#, python-format -msgid "" -"Next Full Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"Trăng tròn kế tiếp:\n" -"%(date)s trong vòng %(days).0f ngày\n" -"\n" - -#: moon.py:259 -#, python-format -msgid "" -"Next New Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"Trăng non kế tiếp:\n" -"%(date)s trong vòng %(days).0f ngày\n" -"\n" - -#: moon.py:260 -#, python-format -msgid "" -"Next Lunar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"Che khuất mặt trăng kế tiếp:\n" -"%(date)s trong vòng %(days).0f ngày\n" -"\n" - -#: moon.py:261 -#, python-format -msgid "" -"Next Solar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"Che khuất mặt trời kế tiếp:\n" -"%(date)s trong vòng %(days).0f ngày\n" -"\n" - -#: moon.py:354 -msgid "SNWE" -msgstr "SNWE" - -#: moon.py:357 -msgid "NSEW" -msgstr "NSEW" - -#: moon.py:409 -msgid "Latitude" -msgstr "Độ vĩ" - -#: moon.py:411 -msgid "Longitude" -msgstr "Độ kinh" - -#: moon.py:522 -msgid "west" -msgstr "Tây" - -#: moon.py:524 -msgid "east" -msgstr "Đông" - -#: moon.py:527 -msgid "Sunset" -msgstr "Hoàng hôn" - -#: moon.py:529 -msgid "Sunrise" -msgstr "Rạng đông" - -#: moon.py:545 moon.py:561 -msgid "New Moon" -msgstr "Trăng non" - -#: moon.py:547 -msgid "Waxing Crescent" -msgstr "Lưỡi liềm tròn dần" - -#: moon.py:549 -msgid "First Quarter" -msgstr "Phần tư thứ nhất" - -#: moon.py:551 -msgid "Waxing Gibbous" -msgstr "Tròn dần có bướu gù" - -#: moon.py:553 -msgid "Full Moon" -msgstr "Trăng tròn" - -#: moon.py:555 -msgid "Waning Gibbous" -msgstr "Khuyết có bướu gù" - -#: moon.py:557 -msgid "Last Quarter" -msgstr "Phần tư cuối cùng" - -#: moon.py:559 -msgid "Waning Crescent" -msgstr "Lưỡi liềm khuyết" diff --git a/po/wa.po b/po/wa.po deleted file mode 100644 index 907af62..0000000 --- a/po/wa.po +++ /dev/null @@ -1,226 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-10-03 00:33-0400\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Translate Toolkit 1.1.1rc4\n" - -#. TRANS: "name" option from activity.info file -#: moon.py:68 -msgid "Moon" -msgstr "" - -#. TRANS: "summary" option from activity.info file -#. TRANS: "description" option from activity.info file -msgid "" -"For all those interested in the moon! See the different phases of the moon, " -"latitudes and longtiutdes and impress all by \"predicting\" the next full " -"moon!" -msgstr "" - -#. TRANS: Date format for next full/new moon and next solar/lunar eclipse -#: moon.py:60 -#, python-format -msgid "%c" -msgstr "" - -#: moon.py:92 moon.py:118 -msgid "Toggle Grid View" -msgstr "" - -#: moon.py:98 moon.py:124 -msgid "Toggle Hemisphere View" -msgstr "" - -#: moon.py:130 -msgid "View" -msgstr "" - -#: moon.py:250 -msgid "" -"Today's Moon Information\n" -"\n" -msgstr "" - -#: moon.py:252 -#, python-format -msgid "" -"Phase:\n" -"%s\n" -"\n" -msgstr "" - -#: moon.py:253 -#, python-format -msgid "" -"Julian Date:\n" -"%.2f (astronomical)\n" -"\n" -msgstr "" - -#: moon.py:254 -#, python-format -msgid "" -"Age:\n" -"%(days).0f days, %(hours).0f hours, %(minutes).0f minutes\n" -"\n" -msgstr "" - -#: moon.py:255 -#, python-format -msgid "" -"Lunation:\n" -"%(phase).2f%% through lunation %(lunation)d\n" -"\n" -msgstr "" - -#: moon.py:256 -#, python-format -msgid "" -"Surface Visibility:\n" -"%.0f%% (estimated)\n" -"\n" -msgstr "" - -#: moon.py:257 -#, python-format -msgid "" -"Selenographic Terminator Longitude:\n" -"%(deg).1f°%(westOrEast)s (%(riseOrSet)s)\n" -"\n" -msgstr "" - -#: moon.py:258 -#, python-format -msgid "" -"Next Full Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:259 -#, python-format -msgid "" -"Next New Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:260 -#, python-format -msgid "" -"Next Lunar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:261 -#, python-format -msgid "" -"Next Solar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:354 -msgid "SNWE" -msgstr "" - -#: moon.py:357 -msgid "NSEW" -msgstr "" - -#: moon.py:409 -msgid "Latitude" -msgstr "" - -#: moon.py:411 -msgid "Longitude" -msgstr "" - -#: moon.py:522 -msgid "west" -msgstr "" - -#: moon.py:524 -msgid "east" -msgstr "" - -#: moon.py:527 -msgid "Sunset" -msgstr "" - -#: moon.py:529 -msgid "Sunrise" -msgstr "" - -#: moon.py:545 moon.py:561 -msgid "New Moon" -msgstr "" - -#: moon.py:547 -msgid "Waxing Crescent" -msgstr "" - -#: moon.py:549 -msgid "First Quarter" -msgstr "" - -#: moon.py:551 -msgid "Waxing Gibbous" -msgstr "" - -#: moon.py:553 -msgid "Full Moon" -msgstr "" - -#: moon.py:555 -msgid "Waning Gibbous" -msgstr "" - -#: moon.py:557 -msgid "Last Quarter" -msgstr "" - -#: moon.py:559 -msgid "Waning Crescent" -msgstr "" diff --git a/po/yo.po b/po/yo.po deleted file mode 100644 index 9be0583..0000000 --- a/po/yo.po +++ /dev/null @@ -1,198 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-10-03 00:33-0400\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"Language: yo\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Translate Toolkit 1.11.0\n" - -#. TRANS: "name" option from activity.info file -#: moon.py:68 -msgid "Moon" -msgstr "" - -#. TRANS: "summary" option from activity.info file -#. TRANS: "description" option from activity.info file -msgid "" -"For all those interested in the moon! See the different phases of the moon, " -"latitudes and longitudes and impress all by \"predicting\" the next full " -"moon!" -msgstr "" - -#. TRANS: Date format for next full/new moon and next solar/lunar eclipse -#: moon.py:60 -#, python-format -msgid "%c" -msgstr "" - -#: moon.py:92 moon.py:118 -msgid "Toggle Grid View" -msgstr "" - -#: moon.py:98 moon.py:124 -msgid "Toggle Hemisphere View" -msgstr "" - -#: moon.py:130 -msgid "View" -msgstr "" - -#: moon.py:250 -msgid "" -"Today's Moon Information\n" -"\n" -msgstr "" - -#: moon.py:252 -#, python-format -msgid "" -"Phase:\n" -"%s\n" -"\n" -msgstr "" - -#: moon.py:253 -#, python-format -msgid "" -"Julian Date:\n" -"%.2f (astronomical)\n" -"\n" -msgstr "" - -#: moon.py:254 -#, python-format -msgid "" -"Age:\n" -"%(days).0f days, %(hours).0f hours, %(minutes).0f minutes\n" -"\n" -msgstr "" - -#: moon.py:255 -#, python-format -msgid "" -"Lunation:\n" -"%(phase).2f%% through lunation %(lunation)d\n" -"\n" -msgstr "" - -#: moon.py:256 -#, python-format -msgid "" -"Surface Visibility:\n" -"%.0f%% (estimated)\n" -"\n" -msgstr "" - -#: moon.py:257 -#, python-format -msgid "" -"Selenographic Terminator Longitude:\n" -"%(deg).1f°%(westOrEast)s (%(riseOrSet)s)\n" -"\n" -msgstr "" - -#: moon.py:258 -#, python-format -msgid "" -"Next Full Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:259 -#, python-format -msgid "" -"Next New Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:260 -#, python-format -msgid "" -"Next Lunar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:261 -#, python-format -msgid "" -"Next Solar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:354 -msgid "SNWE" -msgstr "" - -#: moon.py:357 -msgid "NSEW" -msgstr "" - -#: moon.py:409 -msgid "Latitude" -msgstr "" - -#: moon.py:411 -msgid "Longitude" -msgstr "" - -#: moon.py:522 -msgid "west" -msgstr "" - -#: moon.py:524 -msgid "east" -msgstr "" - -#: moon.py:527 -msgid "Sunset" -msgstr "" - -#: moon.py:529 -msgid "Sunrise" -msgstr "" - -#: moon.py:545 moon.py:561 -msgid "New Moon" -msgstr "" - -#: moon.py:547 -msgid "Waxing Crescent" -msgstr "" - -#: moon.py:549 -msgid "First Quarter" -msgstr "" - -#: moon.py:551 -msgid "Waxing Gibbous" -msgstr "" - -#: moon.py:553 -msgid "Full Moon" -msgstr "" - -#: moon.py:555 -msgid "Waning Gibbous" -msgstr "" - -#: moon.py:557 -msgid "Last Quarter" -msgstr "" - -#: moon.py:559 -msgid "Waning Crescent" -msgstr "" diff --git a/po/zh_CN.po b/po/zh_CN.po deleted file mode 100644 index 04a3a49..0000000 --- a/po/zh_CN.po +++ /dev/null @@ -1,263 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-10-03 00:33-0400\n" -"PO-Revision-Date: 2012-10-13 12:05+0200\n" -"Last-Translator: lite \n" -"Language-Team: LANGUAGE \n" -"Language: zh_CN\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Pootle 2.0.5\n" - -#. TRANS: "name" option from activity.info file -#: moon.py:68 -msgid "Moon" -msgstr "月球" - -#. TRANS: "summary" option from activity.info file -#. TRANS: "description" option from activity.info file -msgid "" -"For all those interested in the moon! See the different phases of the moon, " -"latitudes and longtiutdes and impress all by \"predicting\" the next full " -"moon!" -msgstr "为所有对月亮有兴趣的孩子!可以看到月亮的不同阶段,纬度和经度,并通过“预测”下一个满月记住所有!" - -#. TRANS: Date format for next full/new moon and next solar/lunar eclipse -#: moon.py:60 -#, python-format -msgid "%c" -msgstr "%c" - -#: moon.py:92 moon.py:118 -msgid "Toggle Grid View" -msgstr "切换到网格视图" - -#: moon.py:98 moon.py:124 -msgid "Toggle Hemisphere View" -msgstr "切换到半球视图" - -#: moon.py:130 -msgid "View" -msgstr "查看" - -#: moon.py:250 -msgid "" -"Today's Moon Information\n" -"\n" -msgstr "" -"今天的月球信息\n" -"\n" - -#: moon.py:252 -#, python-format -msgid "" -"Phase:\n" -"%s\n" -"\n" -msgstr "" -"月相:\n" -"%s\n" -"\n" - -#: moon.py:253 -#, python-format -msgid "" -"Julian Date:\n" -"%.2f (astronomical)\n" -"\n" -msgstr "" -"朱利安日:\n" -"%.2f(天文学)\n" -"\n" - -#: moon.py:254 -#, python-format -msgid "" -"Age:\n" -"%(days).0f days, %(hours).0f hours, %(minutes).0f minutes\n" -"\n" -msgstr "" -"月龄:\n" -"%(days).0f 天.%(hours).0f 小时,%(minutes).0f 分钟\n" -"\n" - -#: moon.py:255 -#, python-format -msgid "" -"Lunation:\n" -"%(phase).2f%% through lunation %(lunation)d\n" -"\n" -msgstr "" -"阴历月:\n" -"%(phase).2f%% 阴历 %(lunation)d\n" -"\n" - -#: moon.py:256 -#, python-format -msgid "" -"Surface Visibility:\n" -"%.0f%% (estimated)\n" -"\n" -msgstr "" -"表面可见度:\n" -"%.0f%%(估计)\n" -"\n" - -#: moon.py:257 -#, python-format -msgid "" -"Selenographic Terminator Longitude:\n" -"%(deg).1f°%(westOrEast)s (%(riseOrSet)s)\n" -"\n" -msgstr "" -"月球表面的明暗分界经度:\n" -"%(deg).1f°%(westOrEast)s (%(riseOrSet)s)\n" -"\n" - -#: moon.py:258 -#, python-format -msgid "" -"Next Full Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"下一次满月:\n" -"%(date)s %(days).0f 天\n" -"\n" - -#: moon.py:259 -#, python-format -msgid "" -"Next New Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"下一次新月:\n" -"%(date)s %(days).0f 天\n" -"\n" - -#: moon.py:260 -#, python-format -msgid "" -"Next Lunar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"下一次月食:\n" -"%(date)s %(days).0f 天\n" -"\n" - -#: moon.py:261 -#, python-format -msgid "" -"Next Solar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"下一次日食:\n" -"%(date)s %(days).0f 天\n" -"\n" - -#: moon.py:354 -msgid "SNWE" -msgstr "南北西东" - -#: moon.py:357 -msgid "NSEW" -msgstr "北南东西" - -#: moon.py:409 -msgid "Latitude" -msgstr "维度" - -#: moon.py:411 -msgid "Longitude" -msgstr "经度" - -#: moon.py:522 -msgid "west" -msgstr "西部" - -#: moon.py:524 -msgid "east" -msgstr "东部" - -#: moon.py:527 -msgid "Sunset" -msgstr "日落" - -#: moon.py:529 -msgid "Sunrise" -msgstr "日出" - -#: moon.py:545 moon.py:561 -msgid "New Moon" -msgstr "新月" - -#: moon.py:547 -msgid "Waxing Crescent" -msgstr "娥眉月" - -#: moon.py:549 -msgid "First Quarter" -msgstr "上弦月" - -#: moon.py:551 -msgid "Waxing Gibbous" -msgstr "盈凸月" - -#: moon.py:553 -msgid "Full Moon" -msgstr "满月" - -#: moon.py:555 -msgid "Waning Gibbous" -msgstr "亏凸月" - -#: moon.py:557 -msgid "Last Quarter" -msgstr "下弦月" - -#: moon.py:559 -msgid "Waning Crescent" -msgstr "残月" diff --git a/po/zh_HK.po b/po/zh_HK.po deleted file mode 100644 index 5d46122..0000000 --- a/po/zh_HK.po +++ /dev/null @@ -1,206 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-10-03 00:33-0400\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Translate Toolkit 1.6.0\n" - -#. TRANS: "name" option from activity.info file -#: moon.py:68 -msgid "Moon" -msgstr "" - -#. TRANS: "summary" option from activity.info file -#. TRANS: "description" option from activity.info file -msgid "" -"For all those interested in the moon! See the different phases of the moon, " -"latitudes and longtiutdes and impress all by \"predicting\" the next full " -"moon!" -msgstr "" - -#. TRANS: Date format for next full/new moon and next solar/lunar eclipse -#: moon.py:60 -#, python-format -msgid "%c" -msgstr "" - -#: moon.py:92 moon.py:118 -msgid "Toggle Grid View" -msgstr "" - -#: moon.py:98 moon.py:124 -msgid "Toggle Hemisphere View" -msgstr "" - -#: moon.py:130 -msgid "View" -msgstr "" - -#: moon.py:250 -msgid "" -"Today's Moon Information\n" -"\n" -msgstr "" - -#: moon.py:252 -#, python-format -msgid "" -"Phase:\n" -"%s\n" -"\n" -msgstr "" - -#: moon.py:253 -#, python-format -msgid "" -"Julian Date:\n" -"%.2f (astronomical)\n" -"\n" -msgstr "" - -#: moon.py:254 -#, python-format -msgid "" -"Age:\n" -"%(days).0f days, %(hours).0f hours, %(minutes).0f minutes\n" -"\n" -msgstr "" - -#: moon.py:255 -#, python-format -msgid "" -"Lunation:\n" -"%(phase).2f%% through lunation %(lunation)d\n" -"\n" -msgstr "" - -#: moon.py:256 -#, python-format -msgid "" -"Surface Visibility:\n" -"%.0f%% (estimated)\n" -"\n" -msgstr "" - -#: moon.py:257 -#, python-format -msgid "" -"Selenographic Terminator Longitude:\n" -"%(deg).1f°%(westOrEast)s (%(riseOrSet)s)\n" -"\n" -msgstr "" - -#: moon.py:258 -#, python-format -msgid "" -"Next Full Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:259 -#, python-format -msgid "" -"Next New Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:260 -#, python-format -msgid "" -"Next Lunar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:261 -#, python-format -msgid "" -"Next Solar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" - -#: moon.py:354 -msgid "SNWE" -msgstr "" - -#: moon.py:357 -msgid "NSEW" -msgstr "" - -#: moon.py:409 -msgid "Latitude" -msgstr "" - -#: moon.py:411 -msgid "Longitude" -msgstr "" - -#: moon.py:522 -msgid "west" -msgstr "" - -#: moon.py:524 -msgid "east" -msgstr "" - -#: moon.py:527 -msgid "Sunset" -msgstr "" - -#: moon.py:529 -msgid "Sunrise" -msgstr "" - -#: moon.py:545 moon.py:561 -msgid "New Moon" -msgstr "" - -#: moon.py:547 -msgid "Waxing Crescent" -msgstr "" - -#: moon.py:549 -msgid "First Quarter" -msgstr "" - -#: moon.py:551 -msgid "Waxing Gibbous" -msgstr "" - -#: moon.py:553 -msgid "Full Moon" -msgstr "" - -#: moon.py:555 -msgid "Waning Gibbous" -msgstr "" - -#: moon.py:557 -msgid "Last Quarter" -msgstr "" - -#: moon.py:559 -msgid "Waning Crescent" -msgstr "" diff --git a/po/zh_TW.po b/po/zh_TW.po deleted file mode 100644 index 7bb9100..0000000 --- a/po/zh_TW.po +++ /dev/null @@ -1,260 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-10-03 00:33-0400\n" -"PO-Revision-Date: 2017-03-25 12:28+0000\n" -"Last-Translator: Yuan \n" -"Language-Team: LANGUAGE \n" -"Language: zh_TW\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Pootle 2.5.1.1\n" -"X-POOTLE-MTIME: 1490444897.000000\n" - -#. TRANS: "name" option from activity.info file -#: moon.py:68 -msgid "Moon" -msgstr "月亮" - -#. TRANS: "summary" option from activity.info file -#. TRANS: "description" option from activity.info file -msgid "" -"For all those interested in the moon! See the different phases of the moon, " -"latitudes and longtiutdes and impress all by \"predicting\" the next full " -"moon!" -msgstr "這是給所有月相愛好者的活動!觀察月亮的不同月相、經度、緯度,以及\"預測\"下一個滿月的時間。" - -#. TRANS: Date format for next full/new moon and next solar/lunar eclipse -#: moon.py:60 -#, python-format -msgid "%c" -msgstr "%c" - -#: moon.py:92 moon.py:118 -msgid "Toggle Grid View" -msgstr "切換方格顯示" - -#: moon.py:98 moon.py:124 -msgid "Toggle Hemisphere View" -msgstr "切換半球顯示" - -#: moon.py:130 -msgid "View" -msgstr "檢視" - -#: moon.py:250 -msgid "" -"Today's Moon Information\n" -"\n" -msgstr "" -"今日月相動態\n" -"\n" - -#: moon.py:252 -#, python-format -msgid "" -"Phase:\n" -"%s\n" -"\n" -msgstr "" -"月相:\n" -"%s\n" -"\n" - -#: moon.py:253 -#, python-format -msgid "" -"Julian Date:\n" -"%.2f (astronomical)\n" -"\n" -msgstr "" -"儒略曆:\n" -"%.2f (天文曆)\n" -"\n" - -#: moon.py:254 -#, python-format -msgid "" -"Age:\n" -"%(days).0f days, %(hours).0f hours, %(minutes).0f minutes\n" -"\n" -msgstr "" -"月齡:\n" -"%(days).0f 天, %(hours).0f 小時, %(minutes).0f 分\n" -"\n" - -#: moon.py:255 -#, python-format -msgid "" -"Lunation:\n" -"%(phase).2f%% through lunation %(lunation)d\n" -"\n" -msgstr "" -"陰曆月:\n" -"%(phase).2f%% 歷經 %(lunation)d 月\n" -"\n" - -#: moon.py:256 -#, python-format -msgid "" -"Surface Visibility:\n" -"%.0f%% (estimated)\n" -"\n" -msgstr "" -"月球表面可見度:\n" -"%.0f%% (推估)\n" -"\n" - -#: moon.py:257 -#, python-format -msgid "" -"Selenographic Terminator Longitude:\n" -"%(deg).1f°%(westOrEast)s (%(riseOrSet)s)\n" -"\n" -msgstr "" -"月球座標截止經度:\n" -"%(deg).1f°%(westOrEast)s (%(riseOrSet)s)\n" -"\n" - -#: moon.py:258 -#, python-format -msgid "" -"Next Full Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"次期滿月:\n" -"%(date)s 於 %(days).0f 天後\n" -"\n" - -#: moon.py:259 -#, python-format -msgid "" -"Next New Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"次期新月:\n" -"%(date)s 於 %(days).0f 天後\n" -"\n" - -#: moon.py:260 -#, python-format -msgid "" -"Next Lunar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"次期月蝕:\n" -"%(date)s 於 %(days).0f 天後\n" -"\n" - -#: moon.py:261 -#, python-format -msgid "" -"Next Solar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"次期日蝕:\n" -"%(date)s 於 %(days).0f 天後\n" -"\n" - -#: moon.py:354 -msgid "SNWE" -msgstr "南北西東" - -#: moon.py:357 -msgid "NSEW" -msgstr "北南東西" - -#: moon.py:409 -msgid "Latitude" -msgstr "緯度" - -#: moon.py:411 -msgid "Longitude" -msgstr "經度" - -#: moon.py:522 -msgid "west" -msgstr "西方" - -#: moon.py:524 -msgid "east" -msgstr "東方" - -#: moon.py:527 -msgid "Sunset" -msgstr "日落" - -#: moon.py:529 -msgid "Sunrise" -msgstr "日出" - -#: moon.py:545 moon.py:561 -msgid "New Moon" -msgstr "新月" - -#: moon.py:547 -msgid "Waxing Crescent" -msgstr "漸滿蛾蝞月" - -#: moon.py:549 -msgid "First Quarter" -msgstr "上弦月" - -#: moon.py:551 -msgid "Waxing Gibbous" -msgstr "凸月" - -#: moon.py:553 -msgid "Full Moon" -msgstr "滿月" - -#: moon.py:555 -msgid "Waning Gibbous" -msgstr "殘月" - -#: moon.py:557 -msgid "Last Quarter" -msgstr "下弦月" - -#: moon.py:559 -msgid "Waning Crescent" -msgstr "漸暗蛾蝞月" diff --git a/ru.po b/ru.po deleted file mode 100644 index c467c33..0000000 --- a/ru.po +++ /dev/null @@ -1,263 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# translation of moon.po to -# ganqqwerty , 2009. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -msgid "" -msgstr "" -"Project-Id-Version: moon\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-10-03 00:33-0400\n" -"PO-Revision-Date: 2016-04-20 20:07+0000\n" -"Last-Translator: Anna \n" -"Language-Team: \n" -"Language: ru\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && " -"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -"X-Generator: Pootle 2.5.1.1\n" -"X-POOTLE-MTIME: 1461182878.000000\n" - -#. TRANS: "name" option from activity.info file -#: moon.py:68 -msgid "Moon" -msgstr "Луна" - -#. TRANS: "summary" option from activity.info file -#. TRANS: "description" option from activity.info file -msgid "" -"For all those interested in the moon! See the different phases of the moon, " -"latitudes and longtiutdes and impress all by \"predicting\" the next full " -"moon!" -msgstr "" -"Для всех, кто интересуется Луной! Смотри разные фазы луны, широту, долготу и " -"порази всех предсказанием следующего полнолуния!" - -#. TRANS: Date format for next full/new moon and next solar/lunar eclipse -#: moon.py:60 -#, python-format -msgid "%c" -msgstr "%c" - -#: moon.py:92 moon.py:118 -msgid "Toggle Grid View" -msgstr "Вкл/Выкл сетку" - -#: moon.py:98 moon.py:124 -msgid "Toggle Hemisphere View" -msgstr "Вкл/Выкл полушария" - -#: moon.py:130 -msgid "View" -msgstr "Смотреть" - -#: moon.py:250 -msgid "" -"Today's Moon Information\n" -"\n" -msgstr "" -"Сегодняшняя информация о Луне\n" -"\n" - -#: moon.py:252 -#, python-format -msgid "" -"Phase:\n" -"%s\n" -"\n" -msgstr "" -"Фаза:\n" -"%s\n" -"\n" - -#: moon.py:253 -#, python-format -msgid "" -"Julian Date:\n" -"%.2f (astronomical)\n" -"\n" -msgstr "" -"Дата:\n" -"%.2f (astronomical)\n" -"\n" - -#: moon.py:254 -#, python-format -msgid "" -"Age:\n" -"%(days).0f days, %(hours).0f hours, %(minutes).0f minutes\n" -"\n" -msgstr "" -"Возраст:\n" -"%(days).0f days, %(hours).0f hours, %(minutes).0f minutes\n" -"\n" - -#: moon.py:255 -#, python-format -msgid "" -"Lunation:\n" -"%(phase).2f%% through lunation %(lunation)d\n" -"\n" -msgstr "" -"Лунный месяц:\n" -"%(phase).2f%% through lunation %(lunation)d\n" -"\n" - -#: moon.py:256 -#, python-format -msgid "" -"Surface Visibility:\n" -"%.0f%% (estimated)\n" -"\n" -msgstr "" -"Видимость поверхности:\n" -"%.0f%% (estimated)\n" -"\n" - -#: moon.py:257 -#, python-format -msgid "" -"Selenographic Terminator Longitude:\n" -"%(deg).1f°%(westOrEast)s (%(riseOrSet)s)\n" -"\n" -msgstr "" -"Селенографическая Долгота Терминатора:\n" -"%(deg).1f°%(westOrEast)s (%(riseOrSet)s)\n" -"\n" - -#: moon.py:258 -#, python-format -msgid "" -"Next Full Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"Следущее полнолуние:\n" -"%(date)s in %(days).0f days\n" -"\n" - -#: moon.py:259 -#, python-format -msgid "" -"Next New Moon:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"Следущее Полнолуние:\n" -"%(date)s in %(days).0f days\n" -"\n" - -#: moon.py:260 -#, python-format -msgid "" -"Next Lunar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"Следующее лунное затмение:\n" -"%(date)s in %(days).0f days\n" -"\n" - -#: moon.py:261 -#, python-format -msgid "" -"Next Solar eclipse:\n" -"%(date)s in %(days).0f days\n" -"\n" -msgstr "" -"Следующее солнечное затмение:\n" -"%(date)s in %(days).0f days\n" -"\n" - -#: moon.py:354 -msgid "SNWE" -msgstr "ЮСЗВ" - -#: moon.py:357 -msgid "NSEW" -msgstr "СЮВЗ" - -#: moon.py:409 -msgid "Latitude" -msgstr "Широта" - -#: moon.py:411 -msgid "Longitude" -msgstr "Долгота" - -#: moon.py:522 -msgid "west" -msgstr "запад" - -#: moon.py:524 -msgid "east" -msgstr "восток" - -#: moon.py:527 -msgid "Sunset" -msgstr "Закат" - -#: moon.py:529 -msgid "Sunrise" -msgstr "Восход" - -#: moon.py:545 moon.py:561 -msgid "New Moon" -msgstr "Новая Луна" - -#: moon.py:547 -msgid "Waxing Crescent" -msgstr "Молодая Луна" - -#: moon.py:549 -msgid "First Quarter" -msgstr "Первая четверть" - -#: moon.py:551 -msgid "Waxing Gibbous" -msgstr "Прибывающая Луна" - -#: moon.py:553 -msgid "Full Moon" -msgstr "Полная Луна" - -#: moon.py:555 -msgid "Waning Gibbous" -msgstr "Убывающая Луна" - -#: moon.py:557 -msgid "Last Quarter" -msgstr "Последняя четверть" - -#: moon.py:559 -msgid "Waning Crescent" -msgstr "Старая Луна" diff --git a/setup.py b/setup.py index ec0f64e..ad218b2 100755 --- a/setup.py +++ b/setup.py @@ -1,3 +1,5 @@ #!/usr/bin/env python -from sugar.activity import bundlebuilder + +from sugar3.activity import bundlebuilder + bundlebuilder.start() From 9ac99e6bc8ea1039b4d79be612fb1c0e86eabdd5 Mon Sep 17 00:00:00 2001 From: Gary Martin Date: Sat, 21 Jul 2018 17:12:19 +1000 Subject: [PATCH 2/5] Lunar ephemerides phase for 2018 to 2024 --- js/data-model.js | 40 ++++++++++++++++++++++------------------ 1 file changed, 22 insertions(+), 18 deletions(-) diff --git a/js/data-model.js b/js/data-model.js index 3908f28..7ace598 100644 --- a/js/data-model.js +++ b/js/data-model.js @@ -51,26 +51,30 @@ define(function() { var currOffset = (new Date()).getTimezoneOffset() * 60; /* - Init hard coded, arrays for New, First Quarter, Full Last Quarter Moon UTC data. - - 2008 to 2018 data from http://sunearth.gsfc.nasa.gov/eclipse/phase/phasecat.html - algorithms used in predicting the phases of the Moon and eclipses are based - on Jean Meeus' Astronomical Algorithms (Willmann-Bell, Inc., 1998). All - calculations are by Fred Espenak, and he assumes full responsibility for - their accuracy. Permission is freely granted to reproduce this data when - accompanied by an acknowledgment. - - Data is all UTC and in YYYY-MM-DD HH:MM format, with New and Full Moon - arrays with an extra end character for eclipse types T=Total (Solar), - A=Annular (Solar), H=Hybrid (Solar Annular/Total), P=Partial (Solar), - t=Total (Lunar Umbral), p=Partial (Lunar Umbral), n=Penumbral (Lunar), - _=none. + Init hard coded, tuples for New, First Quarter, Full Last + Quarter Moon UTC data. + + T2018 to T2028 data from + http://sunearth.gsfc.nasa.gov/eclipse/phase/phasecat.html (now + only found on web.archive.org) algorithms used in predicting + the phases of the Moon and eclipses are based on Jean Meeus' + Astronomical Algorithms (Willmann-Bell, Inc.,T1998). All + calculations are by Fred Espenak, and he assumes full + responsibility for their accuracy. Permission is freely + granted to reproduce this data when accompanied by an + acknowledgment. + + Data is all UTC and in YYYY-MM-DD HH:MM format, with New and + Full Moon arrays with an extra end character for eclipse types + T=Total (Solar), A=Annular (Solar), H=Hybrid (Solar + Annular/Total), P=Partial (Solar), t=Total (Lunar Umbral), + p=Partial (Lunar Umbral), n=Penumbral (Lunar), _=none. */ - new_moon_array = ["2008-01-08T11:37Z_", "2008-02-07T03:44ZA", "2008-03-07T17:14Z_", "2008-04-06T03:55Z_", "2008-05-05T12:18Z_", "2008-06-03T19:23Z_", "2008-07-03T02:19Z_", "2008-08-01T10:13ZT", "2008-08-30T19:58Z_", "2008-09-29T08:12Z_", "2008-10-28T23:14Z_", "2008-11-27T16:55Z_", "2008-12-27T12:23Z_", "2009-01-26T07:55ZA", "2009-02-25T01:35Z_", "2009-03-26T16:06Z_", "2009-04-25T03:23Z_", "2009-05-24T12:11Z_", "2009-06-22T19:35Z_", "2009-07-22T02:35ZT", "2009-08-20T10:01Z_", "2009-09-18T18:44Z_", "2009-10-18T05:33Z_", "2009-11-16T19:14Z_", "2009-12-16T12:02Z_", "2010-01-15T07:11ZA", "2010-02-14T02:51Z_", "2010-03-15T21:01Z_", "2010-04-14T12:29Z_", "2010-05-14T01:04Z_", "2010-06-12T11:15Z_", "2010-07-11T19:40ZT", "2010-08-10T03:08Z_", "2010-09-08T10:30Z_", "2010-10-07T18:44Z_", "2010-11-06T04:52Z_", "2010-12-05T17:36Z_", "2011-01-04T09:03ZP", "2011-02-03T02:31Z_", "2011-03-04T20:46Z_", "2011-04-03T14:32Z_", "2011-05-03T06:51Z_", "2011-06-01T21:03ZP", "2011-07-01T08:54ZP", "2011-07-30T18:40Z_", "2011-08-29T03:04Z_", "2011-09-27T11:09Z_", "2011-10-26T19:56Z_", "2011-11-25T06:10ZP", "2011-12-24T18:06Z_", "2012-01-23T07:39Z_", "2012-02-21T22:35Z_", "2012-03-22T14:37Z_", "2012-04-21T07:18Z_", "2012-05-20T23:47ZA", "2012-06-19T15:02Z_", "2012-07-19T04:24Z_", "2012-08-17T15:54Z_", "2012-09-16T02:11Z_", "2012-10-15T12:02Z_", "2012-11-13T22:08ZT", "2012-12-13T08:42Z_", "2013-01-11T19:44Z_", "2013-02-10T07:20Z_", "2013-03-11T19:51Z_", "2013-04-10T09:35Z_", "2013-05-10T00:29ZA", "2013-06-08T15:56Z_", "2013-07-08T07:14Z_", "2013-08-06T21:51Z_", "2013-09-05T11:36Z_", "2013-10-05T00:35Z_", "2013-11-03T12:50ZH", "2013-12-03T00:22Z_", "2014-01-01T11:14Z_", "2014-01-30T21:39Z_", "2014-03-01T08:00Z_", "2014-03-30T18:45Z_", "2014-04-29T06:14ZA", "2014-05-28T18:40Z_", "2014-06-27T08:09Z_", "2014-07-26T22:42Z_", "2014-08-25T14:13Z_", "2014-09-24T06:14Z_", "2014-10-23T21:57ZP", "2014-11-22T12:32Z_", "2014-12-22T01:36Z_", "2015-01-20T13:14Z_", "2015-02-18T23:47Z_", "2015-03-20T09:36ZT", "2015-04-18T18:57Z_", "2015-05-18T04:13Z_", "2015-06-16T14:05Z_", "2015-07-16T01:24Z_", "2015-08-14T14:54Z_", "2015-09-13T06:41ZP", "2015-10-13T00:06Z_", "2015-11-11T17:47Z_", "2015-12-11T10:29Z_", "2016-01-10T01:30Z_", "2016-02-08T14:39Z_", "2016-03-09T01:54ZT", "2016-04-07T11:24Z_", "2016-05-06T19:30Z_", "2016-06-05T03:00Z_", "2016-07-04T11:01Z_", "2016-08-02T20:45Z_", "2016-09-01T09:03ZA", "2016-10-01T00:12Z_", "2016-10-30T17:38Z_", "2016-11-29T12:18Z_", "2016-12-29T06:53Z_", "2017-01-28T00:07Z_", "2017-02-26T14:58ZA", "2017-03-28T02:57Z_", "2017-04-26T12:16Z_", "2017-05-25T19:44Z_", "2017-06-24T02:31Z_", "2017-07-23T09:46Z_", "2017-08-21T18:30ZT", "2017-09-20T05:30Z_", "2017-10-19T19:12Z_", "2017-11-18T11:42Z_", "2017-12-18T06:31Z_", "2018-01-17T02:17Z_", "2018-02-15T21:05ZP", "2018-03-17T13:12Z_", "2018-04-16T01:57Z_", "2018-05-15T11:48Z_", "2018-06-13T19:43Z_", "2018-07-13T02:48ZP", "2018-08-11T09:58ZP", "2018-09-09T18:01Z_", "2018-10-09T03:47Z_", "2018-11-07T16:02Z_", "2018-12-07T07:20Z_"]; - full_moon_array = ["2008-01-22T13:35Z_", "2008-02-21T03:31Zt", "2008-03-21T18:40Z_", "2008-04-20T10:25Z_", "2008-05-20T02:11Z_", "2008-06-18T17:30Z_", "2008-07-18T07:59Z_", "2008-08-16T21:16Zp", "2008-09-15T09:13Z_", "2008-10-14T20:03Z_", "2008-11-13T06:17Z_", "2008-12-12T16:37Z_", "2009-01-11T03:27Z_", "2009-02-09T14:49Zn", "2009-03-11T02:38Z_", "2009-04-09T14:56Z_", "2009-05-09T04:01Z_", "2009-06-07T18:12Z_", "2009-07-07T09:21Zn", "2009-08-06T00:55Zn", "2009-09-04T16:03Z_", "2009-10-04T06:10Z_", "2009-11-02T19:14Z_", "2009-12-02T07:30Z_", "2009-12-31T19:13Zp", "2010-01-30T06:18Z_", "2010-02-28T16:38Z_", "2010-03-30T02:25Z_", "2010-04-28T12:18Z_", "2010-05-27T23:07Z_", "2010-06-26T11:30Zp", "2010-07-26T01:37Z_", "2010-08-24T17:05Z_", "2010-09-23T09:17Z_", "2010-10-23T01:36Z_", "2010-11-21T17:27Z_", "2010-12-21T08:13Zt", "2011-01-19T21:21Z_", "2011-02-18T08:36Z_", "2011-03-19T18:10Z_", "2011-04-18T02:44Z_", "2011-05-17T11:09Z_", "2011-06-15T20:13Zt", "2011-07-15T06:40Z_", "2011-08-13T18:58Z_", "2011-09-12T09:27Z_", "2011-10-12T02:06Z_", "2011-11-10T20:16Z_", "2011-12-10T14:36Zt", "2012-01-09T07:30Z_", "2012-02-07T21:54Z_", "2012-03-08T09:40Z_", "2012-04-06T19:19Z_", "2012-05-06T03:35Z_", "2012-06-04T11:12Zp", "2012-07-03T18:52Z_", "2012-08-02T03:27Z_", "2012-08-31T13:58Z_", "2012-09-30T03:19Z_", "2012-10-29T19:50Z_", "2012-11-28T14:46Zn", "2012-12-28T10:21Z_", "2013-01-27T04:38Z_", "2013-02-25T20:26Z_", "2013-03-27T09:27Z_", "2013-04-25T19:57Zp", "2013-05-25T04:25Zn", "2013-06-23T11:32Z_", "2013-07-22T18:15Z_", "2013-08-21T01:45Z_", "2013-09-19T11:13Z_", "2013-10-18T23:38Zn", "2013-11-17T15:16Z_", "2013-12-17T09:28Z_", "2014-01-16T04:52Z_", "2014-02-14T23:53Z_", "2014-03-16T17:09Z_", "2014-04-15T07:42Zt", "2014-05-14T19:16Z_", "2014-06-13T04:11Z_", "2014-07-12T11:25Z_", "2014-08-10T18:09Z_", "2014-09-09T01:38Z_", "2014-10-08T10:51Zt", "2014-11-06T22:23Z_", "2014-12-06T12:27Z_", "2015-01-05T04:53Z_", "2015-02-03T23:09Z_", "2015-03-05T18:06Z_", "2015-04-04T12:06Zp", "2015-05-04T03:42Z_", "2015-06-02T16:19Z_", "2015-07-02T02:20Z_", "2015-07-31T10:43Z_", "2015-08-29T18:35Z_", "2015-09-28T02:50Zt", "2015-10-27T12:05Z_", "2015-11-25T22:44Z_", "2015-12-25T11:11Z_", "2016-01-24T01:46Z_", "2016-02-22T18:20Z_", "2016-03-23T12:01Zn", "2016-04-22T05:24Z_", "2016-05-21T21:15Z_", "2016-06-20T11:02Z_", "2016-07-19T22:57Z_", "2016-08-18T09:27Z_", "2016-09-16T19:05Zn", "2016-10-16T04:23Z_", "2016-11-14T13:52Z_", "2016-12-14T00:06Z_", "2017-01-12T11:34Z_", "2017-02-11T00:33Zn", "2017-03-12T14:54Z_", "2017-04-11T06:08Z_", "2017-05-10T21:43Z_", "2017-06-09T13:10Z_", "2017-07-09T04:07Z_", "2017-08-07T18:11Zp", "2017-09-06T07:03Z_", "2017-10-05T18:40Z_", "2017-11-04T05:23Z_", "2017-12-03T15:47Z_", "2018-01-02T02:24Z_", "2018-01-31T13:27Zt", "2018-03-02T00:51Z_", "2018-03-31T12:37Z_", "2018-04-30T00:58Z_", "2018-05-29T14:20Z_", "2018-06-28T04:53Z_", "2018-07-27T20:20Zt", "2018-08-26T11:56Z_", "2018-09-25T02:53Z_", "2018-10-24T16:45Z_", "2018-11-23T05:39Z_", "2018-12-22T17:49Z_"]; - first_quarter_array = ["2008-01-15T19:46Z", "2008-02-14T03:34Z", "2008-03-14T10:46Z", "2008-04-12T18:32Z", "2008-05-12T03:47Z", "2008-06-10T15:04Z", "2008-07-10T04:35Z", "2008-08-08T20:20Z", "2008-09-07T14:04Z", "2008-10-07T09:04Z", "2008-11-06T04:04Z", "2008-12-05T21:26Z", "2009-01-04T11:56Z", "2009-02-02T23:13Z", "2009-03-04T07:46Z", "2009-04-02T14:34Z", "2009-05-01T20:44Z", "2009-05-31T03:22Z", "2009-06-29T11:28Z", "2009-07-28T22:00Z", "2009-08-27T11:42Z", "2009-09-26T04:50Z", "2009-10-26T00:42Z", "2009-11-24T21:39Z", "2009-12-24T17:36Z", "2010-01-23T10:53Z", "2010-02-22T00:42Z", "2010-03-23T11:00Z", "2010-04-21T18:20Z", "2010-05-20T23:43Z", "2010-06-19T04:30Z", "2010-07-18T10:11Z", "2010-08-16T18:14Z", "2010-09-15T05:50Z", "2010-10-14T21:27Z", "2010-11-13T16:39Z", "2010-12-13T13:59Z", "2011-01-12T11:31Z", "2011-02-11T07:18Z", "2011-03-12T23:45Z", "2011-04-11T12:05Z", "2011-05-10T20:33Z", "2011-06-09T02:11Z", "2011-07-08T06:29Z", "2011-08-06T11:08Z", "2011-09-04T17:39Z", "2011-10-04T03:15Z", "2011-11-02T16:38Z", "2011-12-02T09:52Z", "2012-01-01T06:15Z", "2012-01-31T04:10Z", "2012-03-01T01:22Z", "2012-03-30T19:41Z", "2012-04-29T09:58Z", "2012-05-28T20:16Z", "2012-06-27T03:30Z", "2012-07-26T08:56Z", "2012-08-24T13:54Z", "2012-09-22T19:41Z", "2012-10-22T03:32Z", "2012-11-20T14:31Z", "2012-12-20T05:19Z", "2013-01-18T23:45Z", "2013-02-17T20:31Z", "2013-03-19T17:27Z", "2013-04-18T12:31Z", "2013-05-18T04:35Z", "2013-06-16T17:24Z", "2013-07-16T03:18Z", "2013-08-14T10:56Z", "2013-09-12T17:08Z", "2013-10-11T23:02Z", "2013-11-10T05:57Z", "2013-12-09T15:12Z", "2014-01-08T03:39Z", "2014-02-06T19:22Z", "2014-03-08T13:27Z", "2014-04-07T08:31Z", "2014-05-07T03:15Z", "2014-06-05T20:39Z", "2014-07-05T11:59Z", "2014-08-04T00:50Z", "2014-09-02T11:11Z", "2014-10-01T19:33Z", "2014-10-31T02:48Z", "2014-11-29T10:06Z", "2014-12-28T18:31Z", "2015-01-27T04:48Z", "2015-02-25T17:14Z", "2015-03-27T07:43Z", "2015-04-25T23:55Z", "2015-05-25T17:19Z", "2015-06-24T11:03Z", "2015-07-24T04:04Z", "2015-08-22T19:31Z", "2015-09-21T08:59Z", "2015-10-20T20:31Z", "2015-11-19T06:27Z", "2015-12-18T15:14Z", "2016-01-16T23:26Z", "2016-02-15T07:46Z", "2016-03-15T17:03Z", "2016-04-14T03:59Z", "2016-05-13T17:02Z", "2016-06-12T08:10Z", "2016-07-12T00:52Z", "2016-08-10T18:21Z", "2016-09-09T11:49Z", "2016-10-09T04:33Z", "2016-11-07T19:51Z", "2016-12-07T09:03Z", "2017-01-05T19:47Z", "2017-02-04T04:19Z", "2017-03-05T11:32Z", "2017-04-03T18:39Z", "2017-05-03T02:47Z", "2017-06-01T12:42Z", "2017-07-01T00:51Z", "2017-07-30T15:23Z", "2017-08-29T08:13Z", "2017-09-28T02:54Z", "2017-10-27T22:22Z", "2017-11-26T17:03Z", "2017-12-26T09:20Z", "2018-01-24T22:20Z", "2018-02-23T08:09Z", "2018-03-24T15:35Z", "2018-04-22T21:46Z", "2018-05-22T03:49Z", "2018-06-20T10:51Z", "2018-07-19T19:52Z", "2018-08-18T07:49Z", "2018-09-16T23:15Z", "2018-10-16T18:02Z", "2018-11-15T14:54Z", "2018-12-15T11:49Z"]; - last_quarter_array = ["2008-01-30T05:03Z", "2008-02-29T02:18Z", "2008-03-29T21:47Z", "2008-04-28T14:12Z", "2008-05-28T02:57Z", "2008-06-26T12:10Z", "2008-07-25T18:42Z", "2008-08-23T23:50Z", "2008-09-22T05:04Z", "2008-10-21T11:55Z", "2008-11-19T21:31Z", "2008-12-19T10:29Z", "2009-01-18T02:46Z", "2009-02-16T21:37Z", "2009-03-18T17:47Z", "2009-04-17T13:36Z", "2009-05-17T07:26Z", "2009-06-15T22:15Z", "2009-07-15T09:53Z", "2009-08-13T18:55Z", "2009-09-12T02:16Z", "2009-10-11T08:56Z", "2009-11-09T15:56Z", "2009-12-09T00:13Z", "2010-01-07T10:40Z", "2010-02-05T23:49Z", "2010-03-07T15:42Z", "2010-04-06T09:37Z", "2010-05-06T04:15Z", "2010-06-04T22:13Z", "2010-07-04T14:35Z", "2010-08-03T04:59Z", "2010-09-01T17:22Z", "2010-10-01T03:52Z", "2010-10-30T12:46Z", "2010-11-28T20:36Z", "2010-12-28T04:18Z", "2011-01-26T12:57Z", "2011-02-24T23:26Z", "2011-03-26T12:07Z", "2011-04-25T02:47Z", "2011-05-24T18:52Z", "2011-06-23T11:48Z", "2011-07-23T05:02Z", "2011-08-21T21:55Z", "2011-09-20T13:39Z", "2011-10-20T03:30Z", "2011-11-18T15:09Z", "2011-12-18T00:48Z", "2012-01-16T09:08Z", "2012-02-14T17:04Z", "2012-03-15T01:25Z", "2012-04-13T10:50Z", "2012-05-12T21:47Z", "2012-06-11T10:41Z", "2012-07-11T01:48Z", "2012-08-09T18:55Z", "2012-09-08T13:15Z", "2012-10-08T07:33Z", "2012-11-07T00:36Z", "2012-12-06T15:32Z", "2013-01-05T03:58Z", "2013-02-03T13:56Z", "2013-03-04T21:53Z", "2013-04-03T04:37Z", "2013-05-02T11:14Z", "2013-05-31T18:58Z", "2013-06-30T04:54Z", "2013-07-29T17:43Z", "2013-08-28T09:35Z", "2013-09-27T03:56Z", "2013-10-26T23:41Z", "2013-11-25T19:28Z", "2013-12-25T13:48Z", "2014-01-24T05:19Z", "2014-02-22T17:15Z", "2014-03-24T01:46Z", "2014-04-22T07:52Z", "2014-05-21T12:59Z", "2014-06-19T18:39Z", "2014-07-19T02:08Z", "2014-08-17T12:26Z", "2014-09-16T02:05Z", "2014-10-15T19:12Z", "2014-11-14T15:16Z", "2014-12-14T12:51Z", "2015-01-13T09:47Z", "2015-02-12T03:50Z", "2015-03-13T17:48Z", "2015-04-12T03:44Z", "2015-05-11T10:36Z", "2015-06-09T15:42Z", "2015-07-08T20:24Z", "2015-08-07T02:03Z", "2015-09-05T09:54Z", "2015-10-04T21:06Z", "2015-11-03T12:24Z", "2015-12-03T07:40Z", "2016-01-02T05:30Z", "2016-02-01T03:28Z", "2016-03-01T23:11Z", "2016-03-31T15:17Z", "2016-04-30T03:29Z", "2016-05-29T12:12Z", "2016-06-27T18:19Z", "2016-07-26T23:00Z", "2016-08-25T03:41Z", "2016-09-23T09:56Z", "2016-10-22T19:14Z", "2016-11-21T08:33Z", "2016-12-21T01:56Z", "2017-01-19T22:14Z", "2017-02-18T19:33Z", "2017-03-20T15:58Z", "2017-04-19T09:57Z", "2017-05-19T00:33Z", "2017-06-17T11:33Z", "2017-07-16T19:26Z", "2017-08-15T01:15Z", "2017-09-13T06:25Z", "2017-10-12T12:25Z", "2017-11-10T20:37Z", "2017-12-10T07:51Z", "2018-01-08T22:25Z", "2018-02-07T15:54Z", "2018-03-09T11:20Z", "2018-04-08T07:18Z", "2018-05-08T02:09Z", "2018-06-06T18:32Z", "2018-07-06T07:51Z", "2018-08-04T18:18Z", "2018-09-03T02:37Z", "2018-10-02T09:45Z", "2018-10-31T16:40Z", "2018-11-30T00:19Z", "2018-12-29T09:34Z"]; + new_moon_array = ["2018-01-17T02:17Z_", "2018-02-15T21:05ZP", "2018-03-17T13:12Z_", "2018-04-16T01:57Z_", "2018-05-15T11:48Z_", "2018-06-13T19:43Z_", "2018-07-13T02:48ZP", "2018-08-11T09:58ZP", "2018-09-09T18:01Z_", "2018-10-09T03:47Z_", "2018-11-07T16:02Z_", "2018-12-07T07:20Z_", "2019-01-06T01:28ZP", "2019-02-04T21:04Z_", "2019-03-06T16:04Z_", "2019-04-05T08:50Z_", "2019-05-04T22:45Z_", "2019-06-03T10:02Z_", "2019-07-02T19:16ZT", "2019-08-01T03:12Z_", "2019-08-30T10:37Z_", "2019-09-28T18:26Z_", "2019-10-28T03:38Z_", "2019-11-26T15:06Z_", "2019-12-26T05:13ZA", "2020-01-24T21:42Z_", "2020-02-23T15:32Z_", "2020-03-24T09:28Z_", "2020-04-23T02:26Z_", "2020-05-22T17:39Z_", "2020-06-21T06:41ZA", "2020-07-20T17:33Z_", "2020-08-19T02:41Z_", "2020-09-17T11:00Z_", "2020-10-16T19:31Z_", "2020-11-15T05:07Z_", "2020-12-14T16:17ZT", "2021-01-13T05:00Z_", "2021-02-11T19:06Z_", "2021-03-13T10:21Z_", "2021-04-12T02:31Z_", "2021-05-11T19:00Z_", "2021-06-10T10:53ZA", "2021-07-10T01:17Z_", "2021-08-08T13:50Z_", "2021-09-07T00:52Z_", "2021-10-06T11:05Z_", "2021-11-04T21:15Z_", "2021-12-04T07:43ZT", "2022-01-02T18:33Z_", "2022-02-01T05:46Z_", "2022-03-02T17:35Z_", "2022-04-01T06:24Z_", "2022-04-30T20:28ZP", "2022-05-30T11:30Z_", "2022-06-29T02:52Z_", "2022-07-28T17:55Z_", "2022-08-27T08:17Z_", "2022-09-25T21:54Z_", "2022-10-25T10:49ZP", "2022-11-23T22:57Z_", "2022-12-23T10:17Z_", "2023-01-21T20:53Z_", "2023-02-20T07:06Z_", "2023-03-21T17:23Z_", "2023-04-20T04:12ZH", "2023-05-19T15:53Z_", "2023-06-18T04:37Z_", "2023-07-17T18:32Z_", "2023-08-16T09:38Z_", "2023-09-15T01:40Z_", "2023-10-14T17:55ZA", "2023-11-13T09:27Z_", "2023-12-12T23:32Z_", "2024-01-11T11:57Z_", "2024-02-09T22:59Z_", "2024-03-10T09:00Z_", "2024-04-08T18:21ZT", "2024-05-08T03:22Z_", "2024-06-06T12:38Z_", "2024-07-05T22:57Z_", "2024-08-04T11:13Z_", "2024-09-03T01:55Z_", "2024-10-02T18:49ZA", "2024-11-01T12:47Z_", "2024-12-01T06:21Z_", "2024-12-30T22:27Z_"]; + full_moon_array = ["2018-01-02T02:24Z_", "2018-01-31T13:27Zt", "2018-03-02T00:51Z_", "2018-03-31T12:37Z_", "2018-04-30T00:58Z_", "2018-05-29T14:20Z_", "2018-06-28T04:53Z_", "2018-07-27T20:20Zt", "2018-08-26T11:56Z_", "2018-09-25T02:53Z_", "2018-10-24T16:45Z_", "2018-11-23T05:39Z_", "2018-12-22T17:49Z_", "2019-01-21T05:16Zt", "2019-02-19T15:53Z_", "2019-03-21T01:43Z_", "2019-04-19T11:12Z_", "2019-05-18T21:11Z_", "2019-06-17T08:31Z_", "2019-07-16T21:38Zp", "2019-08-15T12:29Z_", "2019-09-14T04:33Z_", "2019-10-13T21:08Z_", "2019-11-12T13:34Z_", "2019-12-12T05:12Z_", "2020-01-10T19:21Zn", "2020-02-09T07:33Z_", "2020-03-09T17:48Z_", "2020-04-08T02:35Z_", "2020-05-07T10:45Z_", "2020-06-05T19:12Zn", "2020-07-05T04:44Zn", "2020-08-03T15:59Z_", "2020-09-02T05:22Z_", "2020-10-01T21:05Z_", "2020-10-31T14:49Z_", "2020-11-30T09:30Zn", "2020-12-30T03:28Z_", "2021-01-28T19:16Z_", "2021-02-27T08:17Z_", "2021-03-28T18:48Z_", "2021-04-27T03:31Z_", "2021-05-26T11:14Zt", "2021-06-24T18:40Z_", "2021-07-24T02:37Z_", "2021-08-22T12:02Z_", "2021-09-20T23:55Z_", "2021-10-20T14:57Z_", "2021-11-19T08:58Zp", "2021-12-19T04:36Z_", "2022-01-17T23:49Z_", "2022-02-16T16:57Z_", "2022-03-18T07:17Z_", "2022-04-16T18:55Z_", "2022-05-16T04:14Zt", "2022-06-14T11:52Z_", "2022-07-13T18:37Z_", "2022-08-12T01:36Z_", "2022-09-10T09:59Z_", "2022-10-09T20:55Z_", "2022-11-08T11:02Zt", "2022-12-08T04:08Z_", "2023-01-06T23:08Z_", "2023-02-05T18:29Z_", "2023-03-07T12:40Z_", "2023-04-06T04:35Z_", "2023-05-05T17:34Zn", "2023-06-04T03:42Z_", "2023-07-03T11:39Z_", "2023-08-01T18:31Z_", "2023-08-31T01:35Z_", "2023-09-29T09:57Z_", "2023-10-28T20:24Zp", "2023-11-27T09:16Z_", "2023-12-27T00:33Z_", "2024-01-25T17:54Z_", "2024-02-24T12:30Z_", "2024-03-25T07:00Zn", "2024-04-23T23:49Z_", "2024-05-23T13:53Z_", "2024-06-22T01:08Z_", "2024-07-21T10:17Z_", "2024-08-19T18:26Z_", "2024-09-18T02:34Zp", "2024-10-17T11:26Z_", "2024-11-15T21:29Z_", "2024-12-15T09:02Z_"]; + first_quarter_array = ["2018-01-24T22:20Z", "2018-02-23T08:09Z", "2018-03-24T15:35Z", "2018-04-22T21:46Z", "2018-05-22T03:49Z", "2018-06-20T10:51Z", "2018-07-19T19:52Z", "2018-08-18T07:49Z", "2018-09-16T23:15Z", "2018-10-16T18:02Z", "2018-11-15T14:54Z", "2018-12-15T11:49Z", "2019-01-14T06:45Z", "2019-02-12T22:26Z", "2019-03-14T10:27Z", "2019-04-12T19:06Z", "2019-05-12T01:12Z", "2019-06-10T05:59Z", "2019-07-09T10:55Z", "2019-08-07T17:31Z", "2019-09-06T03:10Z", "2019-10-05T16:47Z", "2019-11-04T10:23Z", "2019-12-04T06:58Z", "2020-01-03T04:45Z", "2020-02-02T01:42Z", "2020-03-02T19:57Z", "2020-04-01T10:21Z", "2020-04-30T20:38Z", "2020-05-30T03:30Z", "2020-06-28T08:16Z", "2020-07-27T12:32Z", "2020-08-25T17:58Z", "2020-09-24T01:55Z", "2020-10-23T13:23Z", "2020-11-22T04:45Z", "2020-12-21T23:41Z", "2021-01-20T21:02Z", "2021-02-19T18:47Z", "2021-03-21T14:40Z", "2021-04-20T06:59Z", "2021-05-19T19:13Z", "2021-06-18T03:54Z", "2021-07-17T10:11Z", "2021-08-15T15:20Z", "2021-09-13T20:39Z", "2021-10-13T03:25Z", "2021-11-11T12:46Z", "2021-12-11T01:36Z", "2022-01-09T18:11Z", "2022-02-08T13:50Z", "2022-03-10T10:45Z", "2022-04-09T06:47Z", "2022-05-09T00:21Z", "2022-06-07T14:48Z", "2022-07-07T02:14Z", "2022-08-05T11:06Z", "2022-09-03T18:08Z", "2022-10-03T00:14Z", "2022-11-01T06:37Z", "2022-11-30T14:36Z", "2022-12-30T01:21Z", "2023-01-28T15:19Z", "2023-02-27T08:06Z", "2023-03-29T02:32Z", "2023-04-27T21:20Z", "2023-05-27T15:22Z", "2023-06-26T07:50Z", "2023-07-25T22:07Z", "2023-08-24T09:57Z", "2023-09-22T19:32Z", "2023-10-22T03:29Z", "2023-11-20T10:50Z", "2023-12-19T18:39Z", "2024-01-18T03:53Z", "2024-02-16T15:01Z", "2024-03-17T04:11Z", "2024-04-15T19:13Z", "2024-05-15T11:48Z", "2024-06-14T05:18Z", "2024-07-13T22:49Z", "2024-08-12T15:19Z", "2024-09-11T06:06Z", "2024-10-10T18:55Z", "2024-11-09T05:56Z", "2024-12-08T15:27Z"]; + last_quarter_array = ["2018-01-08T22:25Z", "2018-02-07T15:54Z", "2018-03-09T11:20Z", "2018-04-08T07:18Z", "2018-05-08T02:09Z", "2018-06-06T18:32Z", "2018-07-06T07:51Z", "2018-08-04T18:18Z", "2018-09-03T02:37Z", "2018-10-02T09:45Z", "2018-10-31T16:40Z", "2018-11-30T00:19Z", "2018-12-29T09:34Z", "2019-01-27T21:10Z", "2019-02-26T11:28Z", "2019-03-28T04:10Z", "2019-04-26T22:18Z", "2019-05-26T16:33Z", "2019-06-25T09:46Z", "2019-07-25T01:18Z", "2019-08-23T14:56Z", "2019-09-22T02:41Z", "2019-10-21T12:39Z", "2019-11-19T21:11Z", "2019-12-19T04:57Z", "2020-01-17T12:58Z", "2020-02-15T22:17Z", "2020-03-16T09:34Z", "2020-04-14T22:56Z", "2020-05-14T14:03Z", "2020-06-13T06:24Z", "2020-07-12T23:29Z", "2020-08-11T16:45Z", "2020-09-10T09:26Z", "2020-10-10T00:39Z", "2020-11-08T13:46Z", "2020-12-08T00:37Z", "2021-01-06T09:37Z", "2021-02-04T17:37Z", "2021-03-06T01:30Z", "2021-04-04T10:02Z", "2021-05-03T19:50Z", "2021-06-02T07:24Z", "2021-07-01T21:11Z", "2021-07-31T13:16Z", "2021-08-30T07:13Z", "2021-09-29T01:57Z", "2021-10-28T20:05Z", "2021-11-27T12:28Z", "2021-12-27T02:24Z", "2022-01-25T13:41Z", "2022-02-23T22:32Z", "2022-03-25T05:37Z", "2022-04-23T11:56Z", "2022-05-22T18:43Z", "2022-06-21T03:11Z", "2022-07-20T14:18Z", "2022-08-19T04:36Z", "2022-09-17T21:52Z", "2022-10-17T17:15Z", "2022-11-16T13:27Z", "2022-12-16T08:56Z", "2023-01-15T02:10Z", "2023-02-13T16:01Z", "2023-03-15T02:08Z", "2023-04-13T09:11Z", "2023-05-12T14:28Z", "2023-06-10T19:31Z", "2023-07-10T01:48Z", "2023-08-08T10:28Z", "2023-09-06T22:21Z", "2023-10-06T13:48Z", "2023-11-05T08:37Z", "2023-12-05T05:49Z", "2024-01-04T03:30Z", "2024-02-02T23:18Z", "2024-03-03T15:24Z", "2024-04-02T03:15Z", "2024-05-01T11:27Z", "2024-05-30T17:13Z", "2024-06-28T21:53Z", "2024-07-28T02:51Z", "2024-08-26T09:26Z", "2024-09-24T18:50Z", "2024-10-24T08:03Z", "2024-11-23T01:28Z", "2024-12-22T22:18Z"]; From c35742dfde08bf89fce70adbf15d949b50d984a8 Mon Sep 17 00:00:00 2001 From: James Cameron Date: Wed, 8 Aug 2018 12:42:06 +1000 Subject: [PATCH 3/5] Remove left-over file --- moon.py | 893 -------------------------------------------------------- 1 file changed, 893 deletions(-) delete mode 100755 moon.py diff --git a/moon.py b/moon.py deleted file mode 100755 index 33584b2..0000000 --- a/moon.py +++ /dev/null @@ -1,893 +0,0 @@ -#!/usr/bin/python -# coding=UTF-8 - -# Copyright 2008 Gary C. Martin -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -# -# Activity web site: http://wiki.laptop.org/go/Moon -# Created: Febuary 2008 -# Author: gary@garycmartin.com -# Home page: http://www.garycmartin.com/ - -"""Moon phase information XO activity. - -Basic activity displaying Luna phase and related information. Calculations are -based on an internal look-up table generated from a public NASA source. No -network connection is needed. -""" - -import gtk -import gobject -from sugar.activity import activity -from sugar.graphics.toggletoolbutton import ToggleToolButton -from sugar.graphics.toolbutton import ToolButton -from sugar import profile -from sugar.datastore import datastore -from gettext import gettext as _ -import math -import time -import os - -try: - import json - json.dumps -except (ImportError, AttributeError): - import simplejson as json - -try: - # >= 0.86 toolbars - from sugar.graphics.toolbarbox import ToolbarButton, ToolbarBox - from sugar.activity.widgets import ActivityToolbarButton - from sugar.activity.widgets import StopButton -except ImportError: - # <= 0.84 toolbars - pass - -IMAGE_SIZE = 726 -HALF_SIZE = IMAGE_SIZE / 2 -ECLIPSE_TYPES = { - 'T' : _('Total'), - 'A' : _('Annular'), - 'H' : _('Hybrid'), - 'P' : _('Partial'), - 't' : _('Total'), - 'p' : _('Partial'), - 'n' : _('Penumbral') -} - -# TRANS: Date format for next full/new moon and next solar/lunar eclipse -LOCALE_DATE_FORMAT = _("%c") - -class MoonActivity(activity.Activity): - """Moon phase activity. - """ - def __init__(self, handle): - activity.Activity.__init__(self, handle) - self._name = handle - self.set_title(_("Moon")) - - # Defaults (Resume priority, persistent file secondary, fall-back hardcoded) - self.hemisphere_view = 'north' - self.show_grid = False - self.activity_state = {} - self.activity_state['hemisphereView'] = self.hemisphere_view - self.activity_state['showGrid'] = self.show_grid - self.read_and_parse_prefs(os.environ['SUGAR_ACTIVITY_ROOT'] + '/data/defaults') - - # Toolbox - try: - # Use new >= 0.86 toolbar design - self.max_participants = 1 - toolbar_box = ToolbarBox() - activity_button = ActivityToolbarButton(self) - toolbar_box.toolbar.insert(activity_button, 0) - separator = gtk.SeparatorToolItem() - toolbar_box.toolbar.insert(separator, -1) - self.toggle_grid_button = ToggleToolButton('grid-icon') - self.toggle_grid_button.set_tooltip(_("Toggle Grid View")) - self.toggle_grid_button.set_active(self.show_grid) - self.toggle_grid_handler_id = self.toggle_grid_button.connect('clicked', self.toggle_grid_clicked) - toolbar_box.toolbar.insert(self.toggle_grid_button, -1) - self.toggle_grid_button.show() - self.toggle_hemisphere_button = ToggleToolButton('hemi-icon') - self.toggle_hemisphere_button.set_tooltip(_("Toggle Hemisphere View")) - self.toggle_hemisphere_button.set_active(self.hemisphere_view == 'south') - self.toggle_hemisphere_handler_id = self.toggle_hemisphere_button.connect('clicked', self.toggle_hemisphere_clicked) - toolbar_box.toolbar.insert(self.toggle_hemisphere_button, -1) - self.toggle_hemisphere_button.show() - - self.image_button = ToolButton('save-image') - self.image_button.set_tooltip(_("Save As Image")) - self.image_button.connect('clicked', self.save_image) - toolbar_box.toolbar.insert(self.image_button, -1) - self.image_button.show() - - separator = gtk.SeparatorToolItem() - separator.props.draw = False - separator.set_expand(True) - separator.show() - toolbar_box.toolbar.insert(separator, -1) - - tool = StopButton(self) - toolbar_box.toolbar.insert(tool, -1) - self.set_toolbox(toolbar_box) - toolbar_box.show() - - except NameError: - # Use old <= 0.84 toolbar design - toolbox = activity.ActivityToolbox(self) - view_tool_bar = gtk.Toolbar() - self.toggle_grid_button = ToggleToolButton('grid-icon') - self.toggle_grid_button.set_tooltip(_("Toggle Grid View")) - self.toggle_grid_button.set_active(self.show_grid) - self.toggle_grid_handler_id = self.toggle_grid_button.connect('clicked', self.toggle_grid_clicked) - view_tool_bar.insert(self.toggle_grid_button, -1) - self.toggle_grid_button.show() - self.toggle_hemisphere_button = ToggleToolButton('hemi-icon') - self.toggle_hemisphere_button.set_tooltip(_("Toggle Hemisphere View")) - self.toggle_hemisphere_button.set_active(self.hemisphere_view == 'south') - self.toggle_hemisphere_handler_id = self.toggle_hemisphere_button.connect('clicked', self.toggle_hemisphere_clicked) - view_tool_bar.insert(self.toggle_hemisphere_button, -1) - self.toggle_hemisphere_button.show() - - self.image_button = ToolButton('save-image') - self.image_button.set_tooltip(_("Save As Image")) - self.image_button.connect('clicked', self.save_image) - toolbar_box.toolbar.insert(self.image_button, -1) - self.image_button.show() - - view_tool_bar.show() - toolbox.add_toolbar(_('View'), view_tool_bar) - self.set_toolbox(toolbox) - toolbox.show() - activity_toolbar = toolbox.get_activity_toolbar() - activity_toolbar.share.props.visible = False - - # Items we don't have to do every redraw - colormap = gtk.gdk.colormap_get_system() - self.black_alloc_color = colormap.alloc_color('black') - self.white_alloc_color = colormap.alloc_color('white') - self.blue_green_mask_alloc_color = colormap.alloc_color('#F00') - self.red_alloc_color = colormap.alloc_color('#F20') - self.blue_alloc_color = colormap.alloc_color('#04F') - self.moon_stamp = gtk.gdk.pixbuf_new_from_file("moon.jpg") - self.image_size_cache = -1 - - # Build main layout manually for the first pass - self.build_main_layout_cb() - - # Watch for signal that the screen changed size (landscape vs. portrait) - gtk.gdk.screen_get_default().connect('size-changed', self.build_main_layout_cb) - - def build_main_layout_cb(self, widget=None, data=None): - """Create main layout respecting landscape or portrait orientation. - """ - - # Create event box to hold Moon image (so I can set background color) - info_scroll = gtk.ScrolledWindow() - self.event_box = gtk.EventBox() - - # Create the main activity layout - if self.is_landscape_orientation(): - self.main_view = gtk.HBox() - self.info_panel = gtk.VBox() - self.event_box.set_size_request(int(gtk.gdk.screen_width() / 1.70), -1) - self.main_view.pack_end(self.event_box, False) - self.main_view.pack_start(info_scroll, True) - else: - self.main_view = gtk.VBox() - self.info_panel = gtk.HBox() - self.event_box.set_size_request(-1, int(gtk.gdk.screen_height() / 1.60)) - self.main_view.pack_start(self.event_box, False) - self.main_view.pack_start(info_scroll, True) - - # Create the Moon image widget - self.image = gtk.Image() - self.event_box.add(self.image) - self.event_box.modify_bg(gtk.STATE_NORMAL, self.black_alloc_color) - self.event_box.connect('size-allocate', self._moon_size_allocate_cb) - - # Create scrolling Moon information panel - info_scroll.set_policy(gtk.POLICY_NEVER, gtk.POLICY_AUTOMATIC) - info_scroll.set_size_request(-1, -1) - - self.info_panel.set_border_width(10) - self.info = gtk.Label() - self.info.set_justify(gtk.JUSTIFY_LEFT) - self.info.set_alignment(0.0, 0.0) - self.info_panel.pack_start(self.info, False) - self.info2 = gtk.Label() - self.info2.set_justify(gtk.JUSTIFY_LEFT) - self.info2.set_alignment(0.0, 0.0) - self.info_panel.pack_start(self.info2, True, True, 10) - info_scroll.add_with_viewport(self.info_panel) - - # Create Moon data model - self.data_model = DataModel() - - # Generate first view for text and kick off image update timer - self.update_text_information_view() - self.update_moon_image_view() - - # Display everything - self.info.show() - self.info_panel.show() - self.image.show() - self.event_box.show() - self.main_view.show() - self.set_canvas(self.main_view) - self.show_all() - - def is_landscape_orientation(self): - """Return True of in landscape, False for portrait orientation. - """ - if gtk.gdk.screen_width() > gtk.gdk.screen_height(): - return True - return False - - def read_and_parse_prefs(self, file_path): - """Parse and set preference data from a given file. - """ - try: - read_file = open(file_path, 'r') - self.activity_state = json.loads(read_file.read()) - if self.activity_state.has_key('hemisphereView'): - self.hemisphere_view = self.activity_state['hemisphereView'] - if self.activity_state.has_key('showGrid'): - self.show_grid = self.activity_state['showGrid'] - read_file.close() - except: - pass - - def read_file(self, file_path): - """Read state from datastore. - """ - self.read_and_parse_prefs(file_path) - - def write_file(self, file_path): - """Write state to journal datastore and to persistent file system. - """ - self.activity_state['hemisphereView'] = self.hemisphere_view - self.activity_state['showGrid'] = self.show_grid - serialised_data = json.dumps(self.activity_state) - - to_journal = file(file_path, 'w') - try: - to_journal.write(serialised_data) - finally: - to_journal.close() - - to_persistent_fs = file(os.environ['SUGAR_ACTIVITY_ROOT'] + '/data/defaults', 'w') - try: - to_persistent_fs.write(serialised_data) - finally: - to_persistent_fs.close() - - def toggle_grid_clicked(self, widget): - """Respond to toolbar button to hide/show grid lines. - """ - if self.show_grid == True: - self.show_grid = False - else: - self.show_grid = True - gobject.source_remove(self.update_moon_image_timeout) - self.update_moon_image_view() - - def toggle_hemisphere_clicked(self, widget): - """Respond to toolbar button to change viewing hemisphere. - """ - if self.hemisphere_view == 'north': - self.hemisphere_view = 'south' - else: - self.hemisphere_view = 'north' - gobject.source_remove(self.update_moon_image_timeout) - self.update_moon_image_view() - - def update_text_information_view(self): - """Generate Moon data and update text based information view. - """ - self.data_model.update_moon_calculations(time.time()) - information_string = _("Today's Moon Information\n\n")[:-2] - information_string += ":\n%s\n\n" % (time.strftime(LOCALE_DATE_FORMAT)) - information_string += (_("Phase:\n%s\n\n") % (self.data_model.moon_phase_name(self.data_model.phase_of_moon))).replace("\n", " ", 1) - information_string += _("Julian Date:\n%.2f (astronomical)\n\n") % (self.data_model.julian_date) - information_string += (_("Age:\n%(days).0f days, %(hours).0f hours, %(minutes).0f minutes\n\n") % {'days':self.data_model.days_old, 'hours':self.data_model.hours_old, 'minutes':self.data_model.minutes_old}).replace("\n", " ", 1) - information_string += _("Lunation:\n%(phase).2f%% through lunation %(lunation)d\n\n") % {'phase':self.data_model.phase_of_moon * 100, 'lunation':self.data_model.lunation} - information_string += (_("Surface Visibility:\n%.0f%% (estimated)\n\n")[:-2] % (self.data_model.percent_of_full_moon * 100)).replace("\n", " ", 1) - self.info.set_markup(information_string) - - information_string = _(u"Selenographic Terminator Longitude:\n%(deg).1f\u00b0%(westOrEast)s (%(riseOrSet)s)\n\n") % {'deg':self.data_model.selenographic_deg, 'westOrEast':self.data_model.west_or_east, 'riseOrSet':self.data_model.rise_or_set} - information_string += _("Next Full Moon:\n%(date)s in %(days).0f days\n\n") % {'date':time.strftime(LOCALE_DATE_FORMAT, time.localtime(self.data_model.next_full_moon_date)), 'days':self.data_model.days_until_full_moon} - information_string += _("Next New Moon:\n%(date)s in %(days).0f days\n\n") % {'date':time.strftime(LOCALE_DATE_FORMAT, time.localtime(self.data_model.next_new_moon_date)), 'days':self.data_model.days_until_new_moon} - information_string += _("Next (%(eclipse_type)s) Lunar eclipse:\n%(date)s in %(days).0f days\n\n") % {'date':time.strftime(LOCALE_DATE_FORMAT, time.localtime(self.data_model.next_lunar_eclipse_date)), 'days':self.data_model.days_until_lunar_eclipse, 'eclipse_type':ECLIPSE_TYPES[self.data_model.next_lunar_eclipse_type]} - information_string += _("Next (%(eclipse_type)s) Solar eclipse:\n%(date)s in %(days).0f days\n\n")[:-2] % {'date':time.strftime(LOCALE_DATE_FORMAT, time.localtime(self.data_model.next_solar_eclipse_date)), 'days':self.data_model.days_until_solar_eclipse, 'eclipse_type':ECLIPSE_TYPES[self.data_model.next_solar_eclipse_type]} - self.info2.set_markup(information_string) - - # Calculate time to next minute cusp and set a new timer - ms_to_next_min_cusp = (60 - time.gmtime()[5]) * 1000 - gobject.timeout_add(ms_to_next_min_cusp, self.update_text_information_view) - - # Stop this timer running - return False - - def update_moon_image_view(self): - """Update Moon image view using last cached Moon data. - """ - self.image_pixmap = gtk.gdk.Pixmap(self.window, IMAGE_SIZE, IMAGE_SIZE) - self.gc = self.image_pixmap.new_gc(foreground=self.black_alloc_color) - self.image.set_from_pixmap(self.image_pixmap, None) - - # Erase last Moon rendering - self.image_pixmap.draw_rectangle(self.gc, True, 0, 0, IMAGE_SIZE, IMAGE_SIZE) - - # Create a 1bit shadow mask - mask_pixmap = gtk.gdk.Pixmap(None, IMAGE_SIZE, IMAGE_SIZE, depth=1) - kgc = mask_pixmap.new_gc(foreground=self.black_alloc_color) - wgc = mask_pixmap.new_gc(foreground=self.white_alloc_color) - mask_pixmap.draw_rectangle(kgc, True, 0, 0, IMAGE_SIZE, IMAGE_SIZE) - if self.data_model.phase_of_moon <= .25: - # New Moon to First Quarter - phase_shadow_adjust = self.data_model.phase_of_moon - abs(math.sin(self.data_model.phase_of_moon * math.pi * 4) / 18.0) - arc_scale = int(IMAGE_SIZE * (1 - (phase_shadow_adjust * 4))) - mask_pixmap.draw_rectangle(wgc, True, HALF_SIZE + 1, 0, HALF_SIZE, IMAGE_SIZE - 1) - mask_pixmap.draw_arc(kgc, True, HALF_SIZE - int(arc_scale / 2), 0, arc_scale, IMAGE_SIZE, 17280, 11520) - elif self.data_model.phase_of_moon <= .5: - # First Quarter to Full Moon - phase_shadow_adjust = self.data_model.phase_of_moon + abs(math.sin(self.data_model.phase_of_moon * math.pi * 4) / 18.0) - arc_scale = int(IMAGE_SIZE * ((phase_shadow_adjust - .25) * 4)) - mask_pixmap.draw_rectangle(wgc, True, HALF_SIZE, 0, HALF_SIZE, IMAGE_SIZE) - mask_pixmap.draw_arc(wgc, True, HALF_SIZE - int(arc_scale / 2), 0, arc_scale, IMAGE_SIZE, 5760, 11520) - elif self.data_model.phase_of_moon <= .75: - # Full Moon to Last Quarter - phase_shadow_adjust = self.data_model.phase_of_moon - abs(math.sin(self.data_model.phase_of_moon * math.pi * 4) / 18.0) - arc_scale = int(IMAGE_SIZE * (1 - ((phase_shadow_adjust - .5) * 4))) - mask_pixmap.draw_rectangle(wgc, True, 0, 0, HALF_SIZE + 1, IMAGE_SIZE) - mask_pixmap.draw_arc(wgc, True, HALF_SIZE - int(arc_scale / 2), 0, arc_scale, IMAGE_SIZE, 17280, 11520) - else: - # Last Quarter to New Moon - phase_shadow_adjust = self.data_model.phase_of_moon + abs(math.sin(self.data_model.phase_of_moon * math.pi * 4) / 18.0) - arc_scale = int(IMAGE_SIZE * ((phase_shadow_adjust - .75) * 4)) - mask_pixmap.draw_rectangle(wgc, True, 0, 0, HALF_SIZE, IMAGE_SIZE) - mask_pixmap.draw_arc(kgc, True, HALF_SIZE - int(arc_scale / 2), 0, arc_scale, IMAGE_SIZE, 5760, 11520) - maskgc = self.image_pixmap.new_gc(clip_mask=mask_pixmap) - - # Modified image based on public domain photo by John MacCooey - moon_pixbuf = self.moon_stamp.scale_simple(IMAGE_SIZE, IMAGE_SIZE, - gtk.gdk.INTERP_BILINEAR) - - # Composite bright Moon image and semi-transparant Moon for shadow detail - dark_pixbuf = gtk.gdk.Pixbuf(gtk.gdk.COLORSPACE_RGB, True, 8, IMAGE_SIZE, IMAGE_SIZE) - dark_pixbuf.fill(0x00000000) - if (self.data_model.next_lunar_eclipse_sec == -1 and self.data_model.last_lunar_eclipse_sec > 7200) or (self.data_model.next_lunar_eclipse_sec > 7200 and self.data_model.last_lunar_eclipse_sec == -1) or min(self.data_model.next_lunar_eclipse_sec, self.data_model.last_lunar_eclipse_sec) > 7200: - # Normal Moon phase render - moon_pixbuf.composite(dark_pixbuf, 0, 0, IMAGE_SIZE, IMAGE_SIZE, 0, 0, 1, 1, gtk.gdk.INTERP_BILINEAR, 127) - self.image_pixmap.draw_pixbuf(self.gc, dark_pixbuf, 0, 0, 0, 0) - self.image_pixmap.draw_pixbuf(maskgc, moon_pixbuf, 0, 0, 0, 0) - - else: - # Reddening eclipse effect, 2hrs (7200sec) before and after (by masking out green & blue) - if self.data_model.next_lunar_eclipse_sec == -1: - eclipse_alpha = self.data_model.last_lunar_eclipse_sec / 7200.0 * 256 - elif self.data_model.last_lunar_eclipse_sec == -1: - eclipse_alpha = self.data_model.next_lunar_eclipse_sec / 7200.0 * 256 - else: - eclipse_alpha = min(self.data_model.next_lunar_eclipse_sec, self.data_model.last_lunar_eclipse_sec) / 7200.0 * 256 - moon_pixbuf.composite(dark_pixbuf, 0, 0, IMAGE_SIZE, IMAGE_SIZE, - 0, 0, 1, 1, gtk.gdk.INTERP_BILINEAR, - int(196 - eclipse_alpha / 2)) - self.image_pixmap.draw_pixbuf(self.gc, dark_pixbuf, 0, 0, 0, 0) - del dark_pixbuf - dark_pixbuf = gtk.gdk.Pixbuf(gtk.gdk.COLORSPACE_RGB, True, 8, IMAGE_SIZE, IMAGE_SIZE) - moon_pixbuf.composite(dark_pixbuf, 0, 0, IMAGE_SIZE, IMAGE_SIZE, - 0, 0, 1, 1, gtk.gdk.INTERP_BILINEAR, - int(eclipse_alpha)) - rgc = self.image_pixmap.new_gc(foreground=self.blue_green_mask_alloc_color, function=gtk.gdk.AND) - self.image_pixmap.draw_rectangle(rgc, True, 0, 0, IMAGE_SIZE, IMAGE_SIZE) - self.image_pixmap.draw_pixbuf(self.gc, dark_pixbuf, 0, 0, 0, 0) - - if self.hemisphere_view == 'south': - # Rotate final image for a view from north or south hemisphere - rot_pixbuf = gtk.gdk.Pixbuf(gtk.gdk.COLORSPACE_RGB, False, 8, IMAGE_SIZE, IMAGE_SIZE) - rot_pixbuf.get_from_drawable(self.image_pixmap, self.image_pixmap.get_colormap(), 0, 0, 0, 0, -1, -1) - rot_pixbuf = rot_pixbuf.rotate_simple(gtk.gdk.PIXBUF_ROTATE_UPSIDEDOWN) - self.image_pixmap.draw_pixbuf(self.gc, rot_pixbuf, 0, 0, 0, 0) - if self.show_grid: - # Draw grid rotated for south hemi - self.draw_grid(_("SNWE")) - elif self.show_grid: - # Draw grid for north hemi - self.draw_grid(_("NSEW")) - - self.image.queue_draw() - - # Update the Moon image in another 5min - self.update_moon_image_timeout = gobject.timeout_add(300000, self.update_moon_image_view) - - # Stop this timer running - return False - - def draw_grid(self, compass_text): - """Draw Selenographic grid line data. - """ - rgc = self.image_pixmap.new_gc(foreground=self.red_alloc_color) - bgc = self.image_pixmap.new_gc(foreground=self.blue_alloc_color) - wgc = self.image_pixmap.new_gc(foreground=self.white_alloc_color) - pango_layout = self.image.create_pango_layout("") - pango_layout.set_text("0°") - self.image_pixmap.draw_rectangle(bgc, True, HALF_SIZE + 2, HALF_SIZE, 24, 22) - self.image_pixmap.draw_layout(wgc, HALF_SIZE + 2, HALF_SIZE, pango_layout) - pango_layout.set_text("30°") - self.image_pixmap.draw_rectangle(bgc, True, HALF_SIZE + 2, int(HALF_SIZE * 0.5), 36, 22) - self.image_pixmap.draw_rectangle(bgc, True, HALF_SIZE + 2, int(HALF_SIZE * 1.5), 36, 22) - self.image_pixmap.draw_layout(wgc, HALF_SIZE + 2, int(HALF_SIZE * 0.5), pango_layout) - self.image_pixmap.draw_layout(wgc, HALF_SIZE + 2, int(HALF_SIZE * 1.5), pango_layout) - pango_layout.set_text("60°") - self.image_pixmap.draw_rectangle(bgc, True, HALF_SIZE + 2, int(HALF_SIZE * 0.15), 36, 22) - self.image_pixmap.draw_rectangle(bgc, True, HALF_SIZE + 2, int(HALF_SIZE * 1.85), 36, 22) - self.image_pixmap.draw_layout(wgc, HALF_SIZE + 2, int(HALF_SIZE * 0.15), pango_layout) - self.image_pixmap.draw_layout(wgc, HALF_SIZE + 2, int(HALF_SIZE * 1.85), pango_layout) - pango_layout.set_text("30°") - self.image_pixmap.draw_rectangle(rgc, True, int(HALF_SIZE * 0.48) + 2, HALF_SIZE, 36, 22) - self.image_pixmap.draw_rectangle(rgc, True, int(HALF_SIZE * 1.52) + 2, HALF_SIZE, 36, 22) - self.image_pixmap.draw_layout(wgc, int(HALF_SIZE * 0.48) + 2, HALF_SIZE, pango_layout) - self.image_pixmap.draw_layout(wgc, int(HALF_SIZE * 1.52) + 2, HALF_SIZE, pango_layout) - pango_layout.set_text("60°") - self.image_pixmap.draw_rectangle(rgc, True, int(HALF_SIZE * 0.15) + 2, HALF_SIZE, 36, 22) - self.image_pixmap.draw_rectangle(rgc, True, int(HALF_SIZE * 1.85) + 2, HALF_SIZE, 36, 22) - self.image_pixmap.draw_layout(wgc, int(HALF_SIZE * 0.15) + 2, HALF_SIZE, pango_layout) - self.image_pixmap.draw_layout(wgc, int(HALF_SIZE * 1.85) + 2, HALF_SIZE, pango_layout) - for i in (-1, 0, 1): - self.image_pixmap.draw_line(rgc, HALF_SIZE + i, 0, HALF_SIZE + i, IMAGE_SIZE) - self.image_pixmap.draw_arc(rgc, False, int(HALF_SIZE * 0.15) + i, 0, IMAGE_SIZE - int(IMAGE_SIZE * 0.15), IMAGE_SIZE, 0, 360*64) - self.image_pixmap.draw_arc(rgc, False, int(HALF_SIZE * 0.48) + i, 0, IMAGE_SIZE - int(IMAGE_SIZE * 0.48) , IMAGE_SIZE, 0, 360*64) - for i in (-1, 0, 1): - self.image_pixmap.draw_line(bgc, 0, HALF_SIZE + i, IMAGE_SIZE, HALF_SIZE + i) - self.image_pixmap.draw_line(bgc, int(HALF_SIZE * 0.15), int(HALF_SIZE * 0.5) + i, IMAGE_SIZE - int(HALF_SIZE * 0.15), int(HALF_SIZE * 0.5) + i) - self.image_pixmap.draw_line(bgc, int(HALF_SIZE * 0.15), int(HALF_SIZE * 1.5) + i, IMAGE_SIZE - int(HALF_SIZE * 0.15), int(HALF_SIZE * 1.5) + i) - self.image_pixmap.draw_line(bgc, int(HALF_SIZE * 0.5), int(HALF_SIZE * 0.15) + i, IMAGE_SIZE - int(HALF_SIZE * 0.5), int(HALF_SIZE * 0.15) + i) - self.image_pixmap.draw_line(bgc, int(HALF_SIZE * 0.5), int(HALF_SIZE * 1.85) + i, IMAGE_SIZE - int(HALF_SIZE * 0.5), int(HALF_SIZE * 1.85) + i) - - # Key text - pango_layout.set_text(_("Latitude")) - self.image_pixmap.draw_layout(bgc, 15, IMAGE_SIZE - 48 - 15, pango_layout) - pango_layout.set_text(_("Longitude")) - self.image_pixmap.draw_layout(rgc, 15, IMAGE_SIZE - 24 - 15, pango_layout) - - # Compass - # TODO: fix string index to support multi-byte texts - for i in (-1, 0, 1): - self.image_pixmap.draw_line(rgc, 22 + 15, 48 + 15 + i, 68 + 15, 48 + 15 + i) - for i in (-1, 0, 1): - self.image_pixmap.draw_line(bgc, 45 + 15 + i, 24 + 15, 45 + 15 + i, 68 + 15) - pango_layout.set_text(compass_text[0]) - self.image_pixmap.draw_layout(bgc, 38 + 15, 15, pango_layout) - pango_layout.set_text(compass_text[1]) - self.image_pixmap.draw_layout(bgc, 38 + 15, 72 + 15, pango_layout) - pango_layout.set_text(compass_text[2]) - self.image_pixmap.draw_layout(rgc, 72 + 15, 36 + 15, pango_layout) - pango_layout.set_text(compass_text[3]) - self.image_pixmap.draw_layout(rgc, 15, 36 + 15, pango_layout) - - def _moon_size_allocate_cb(self, widget, allocation): - global IMAGE_SIZE, HALF_SIZE - size = min(allocation.width, allocation.height) - 30 - - if size != IMAGE_SIZE and size != self.image_size_cache: - self.image_size_cache = size - IMAGE_SIZE = size - HALF_SIZE = IMAGE_SIZE / 2 - self.update_moon_image_view() - - def save_image(self, widget): - """ - Save the curren phase to image and show alert - """ - - w, h = self.get_size() - pixbuf = gtk.gdk.Pixbuf(gtk.gdk.COLORSPACE_RGB, False, 8, - int(w / 1.70), h - 55) - - shot = pixbuf.get_from_drawable(self.window, self.get_colormap(), - w - int(w / 1.70), 55, 0, 0, int(w / 1.70), h - 55) - - path = os.path.join(activity.get_activity_root(), "instance", - "shot.png") - - shot.save(path, "png") - journal_entry = datastore.create() - journal_entry.metadata['title'] = "%s %s" % \ - (self.metadata['title'], _("Image")) - journal_entry.metadata['icon-color'] = profile.get_color().to_string() - journal_entry.metadata['mime_type'] = "image/png" - journal_entry.set_file_path(path) - datastore.write(journal_entry) - journal_entry.destroy() - - # Alert - HAS_ALERT = False - try: - from sugar.graphics.alert import NotifyAlert - HAS_ALERT = True - except: - pass - - if HAS_ALERT: - alert = NotifyAlert(5) - alert.props.title =_('Image saved') - alert.props.msg = _('An image of the current phase of the moon has been saved to the Journal') - alert.connect('response', lambda x, y: self.remove_alert(x)) - self.add_alert(alert) - - -class DataModel(): - """Moon phase data model and various utility methods. - """ - - def __init__(self): - """Init hard coded, tupules for New, First Quarter, Full Last - Quarter Moon UTC data. - - 2018 to 2028 data from - http://sunearth.gsfc.nasa.gov/eclipse/phase/phasecat.html (now - only found on web.archive.org) algorithms used in predicting - the phases of the Moon and eclipses are based on Jean Meeus' - Astronomical Algorithms (Willmann-Bell, Inc., 1998). All - calculations are by Fred Espenak, and he assumes full - responsibility for their accuracy. Permission is freely - granted to reproduce this data when accompanied by an - acknowledgment. - - Data is all UTC and in YYYY-MM-DD HH:MM format, with New and - Full Moon arrays with an extra end character for eclipse types - T=Total (Solar), A=Annular (Solar), H=Hybrid (Solar - Annular/Total), P=Partial (Solar), t=Total (Lunar Umbral), - p=Partial (Lunar Umbral), n=Penumbral (Lunar), _=none. - """ - - self.date_format = "%Y-%m-%d %H:%M" - self.new_moon_array = ( - "2018-01-17 02:17_", "2018-02-15 21:05P", "2018-03-17 13:12_", - "2018-04-16 01:57_", "2018-05-15 11:48_", "2018-06-13 19:43_", - "2018-07-13 02:48P", "2018-08-11 09:58P", "2018-09-09 18:01_", - "2018-10-09 03:47_", "2018-11-07 16:02_", "2018-12-07 07:20_", - "2019-01-06 01:28P", "2019-02-04 21:04_", "2019-03-06 16:04_", - "2019-04-05 08:50_", "2019-05-04 22:45_", "2019-06-03 10:02_", - "2019-07-02 19:16T", "2019-08-01 03:12_", "2019-08-30 10:37_", - "2019-09-28 18:26_", "2019-10-28 03:38_", "2019-11-26 15:06_", - "2019-12-26 05:13A", "2020-01-24 21:42_", "2020-02-23 15:32_", - "2020-03-24 09:28_", "2020-04-23 02:26_", "2020-05-22 17:39_", - "2020-06-21 06:41A", "2020-07-20 17:33_", "2020-08-19 02:41_", - "2020-09-17 11:00_", "2020-10-16 19:31_", "2020-11-15 05:07_", - "2020-12-14 16:17T", "2021-01-13 05:00_", "2021-02-11 19:06_", - "2021-03-13 10:21_", "2021-04-12 02:31_", "2021-05-11 19:00_", - "2021-06-10 10:53A", "2021-07-10 01:17_", "2021-08-08 13:50_", - "2021-09-07 00:52_", "2021-10-06 11:05_", "2021-11-04 21:15_", - "2021-12-04 07:43T", "2022-01-02 18:33_", "2022-02-01 05:46_", - "2022-03-02 17:35_", "2022-04-01 06:24_", "2022-04-30 20:28P", - "2022-05-30 11:30_", "2022-06-29 02:52_", "2022-07-28 17:55_", - "2022-08-27 08:17_", "2022-09-25 21:54_", "2022-10-25 10:49P", - "2022-11-23 22:57_", "2022-12-23 10:17_", "2023-01-21 20:53_", - "2023-02-20 07:06_", "2023-03-21 17:23_", "2023-04-20 04:12H", - "2023-05-19 15:53_", "2023-06-18 04:37_", "2023-07-17 18:32_", - "2023-08-16 09:38_", "2023-09-15 01:40_", "2023-10-14 17:55A", - "2023-11-13 09:27_", "2023-12-12 23:32_", "2024-01-11 11:57_", - "2024-02-09 22:59_", "2024-03-10 09:00_", "2024-04-08 18:21T", - "2024-05-08 03:22_", "2024-06-06 12:38_", "2024-07-05 22:57_", - "2024-08-04 11:13_", "2024-09-03 01:55_", "2024-10-02 18:49A", - "2024-11-01 12:47_", "2024-12-01 06:21_", "2024-12-30 22:27_") - self.full_moon_array = ( - "2018-01-02 02:24_", "2018-01-31 13:27t", "2018-03-02 00:51_", - "2018-03-31 12:37_", "2018-04-30 00:58_", "2018-05-29 14:20_", - "2018-06-28 04:53_", "2018-07-27 20:20t", "2018-08-26 11:56_", - "2018-09-25 02:53_", "2018-10-24 16:45_", "2018-11-23 05:39_", - "2018-12-22 17:49_", "2019-01-21 05:16t", "2019-02-19 15:53_", - "2019-03-21 01:43_", "2019-04-19 11:12_", "2019-05-18 21:11_", - "2019-06-17 08:31_", "2019-07-16 21:38p", "2019-08-15 12:29_", - "2019-09-14 04:33_", "2019-10-13 21:08_", "2019-11-12 13:34_", - "2019-12-12 05:12_", "2020-01-10 19:21n", "2020-02-09 07:33_", - "2020-03-09 17:48_", "2020-04-08 02:35_", "2020-05-07 10:45_", - "2020-06-05 19:12n", "2020-07-05 04:44n", "2020-08-03 15:59_", - "2020-09-02 05:22_", "2020-10-01 21:05_", "2020-10-31 14:49_", - "2020-11-30 09:30n", "2020-12-30 03:28_", "2021-01-28 19:16_", - "2021-02-27 08:17_", "2021-03-28 18:48_", "2021-04-27 03:31_", - "2021-05-26 11:14t", "2021-06-24 18:40_", "2021-07-24 02:37_", - "2021-08-22 12:02_", "2021-09-20 23:55_", "2021-10-20 14:57_", - "2021-11-19 08:58p", "2021-12-19 04:36_", "2022-01-17 23:49_", - "2022-02-16 16:57_", "2022-03-18 07:17_", "2022-04-16 18:55_", - "2022-05-16 04:14t", "2022-06-14 11:52_", "2022-07-13 18:37_", - "2022-08-12 01:36_", "2022-09-10 09:59_", "2022-10-09 20:55_", - "2022-11-08 11:02t", "2022-12-08 04:08_", "2023-01-06 23:08_", - "2023-02-05 18:29_", "2023-03-07 12:40_", "2023-04-06 04:35_", - "2023-05-05 17:34n", "2023-06-04 03:42_", "2023-07-03 11:39_", - "2023-08-01 18:31_", "2023-08-31 01:35_", "2023-09-29 09:57_", - "2023-10-28 20:24p", "2023-11-27 09:16_", "2023-12-27 00:33_", - "2024-01-25 17:54_", "2024-02-24 12:30_", "2024-03-25 07:00n", - "2024-04-23 23:49_", "2024-05-23 13:53_", "2024-06-22 01:08_", - "2024-07-21 10:17_", "2024-08-19 18:26_", "2024-09-18 02:34p", - "2024-10-17 11:26_", "2024-11-15 21:29_", "2024-12-15 09:02_") - self.first_quarter_array = ( - "2018-01-24 22:20_", "2018-02-23 08:09_", "2018-03-24 15:35_", - "2018-04-22 21:46_", "2018-05-22 03:49_", "2018-06-20 10:51_", - "2018-07-19 19:52_", "2018-08-18 07:49_", "2018-09-16 23:15_", - "2018-10-16 18:02_", "2018-11-15 14:54_", "2018-12-15 11:49_", - "2019-01-14 06:45_", "2019-02-12 22:26_", "2019-03-14 10:27_", - "2019-04-12 19:06_", "2019-05-12 01:12_", "2019-06-10 05:59_", - "2019-07-09 10:55_", "2019-08-07 17:31_", "2019-09-06 03:10_", - "2019-10-05 16:47_", "2019-11-04 10:23_", "2019-12-04 06:58_", - "2020-01-03 04:45_", "2020-02-02 01:42_", "2020-03-02 19:57_", - "2020-04-01 10:21_", "2020-04-30 20:38_", "2020-05-30 03:30_", - "2020-06-28 08:16_", "2020-07-27 12:32_", "2020-08-25 17:58_", - "2020-09-24 01:55_", "2020-10-23 13:23_", "2020-11-22 04:45_", - "2020-12-21 23:41_", "2021-01-20 21:02_", "2021-02-19 18:47_", - "2021-03-21 14:40_", "2021-04-20 06:59_", "2021-05-19 19:13_", - "2021-06-18 03:54_", "2021-07-17 10:11_", "2021-08-15 15:20_", - "2021-09-13 20:39_", "2021-10-13 03:25_", "2021-11-11 12:46_", - "2021-12-11 01:36_", "2022-01-09 18:11_", "2022-02-08 13:50_", - "2022-03-10 10:45_", "2022-04-09 06:47_", "2022-05-09 00:21_", - "2022-06-07 14:48_", "2022-07-07 02:14_", "2022-08-05 11:06_", - "2022-09-03 18:08_", "2022-10-03 00:14_", "2022-11-01 06:37_", - "2022-11-30 14:36_", "2022-12-30 01:21_", "2023-01-28 15:19_", - "2023-02-27 08:06_", "2023-03-29 02:32_", "2023-04-27 21:20_", - "2023-05-27 15:22_", "2023-06-26 07:50_", "2023-07-25 22:07_", - "2023-08-24 09:57_", "2023-09-22 19:32_", "2023-10-22 03:29_", - "2023-11-20 10:50_", "2023-12-19 18:39_", "2024-01-18 03:53_", - "2024-02-16 15:01_", "2024-03-17 04:11_", "2024-04-15 19:13_", - "2024-05-15 11:48_", "2024-06-14 05:18_", "2024-07-13 22:49_", - "2024-08-12 15:19_", "2024-09-11 06:06_", "2024-10-10 18:55_", - "2024-11-09 05:56_", "2024-12-08 15:27_") - self.last_quarter_array = ( - "2018-01-08 22:25_", "2018-02-07 15:54_", "2018-03-09 11:20_", - "2018-04-08 07:18_", "2018-05-08 02:09_", "2018-06-06 18:32_", - "2018-07-06 07:51_", "2018-08-04 18:18_", "2018-09-03 02:37_", - "2018-10-02 09:45_", "2018-10-31 16:40_", "2018-11-30 00:19_", - "2018-12-29 09:34_", "2019-01-27 21:10_", "2019-02-26 11:28_", - "2019-03-28 04:10_", "2019-04-26 22:18_", "2019-05-26 16:33_", - "2019-06-25 09:46_", "2019-07-25 01:18_", "2019-08-23 14:56_", - "2019-09-22 02:41_", "2019-10-21 12:39_", "2019-11-19 21:11_", - "2019-12-19 04:57_", "2020-01-17 12:58_", "2020-02-15 22:17_", - "2020-03-16 09:34_", "2020-04-14 22:56_", "2020-05-14 14:03_", - "2020-06-13 06:24_", "2020-07-12 23:29_", "2020-08-11 16:45_", - "2020-09-10 09:26_", "2020-10-10 00:39_", "2020-11-08 13:46_", - "2020-12-08 00:37_", "2021-01-06 09:37_", "2021-02-04 17:37_", - "2021-03-06 01:30_", "2021-04-04 10:02_", "2021-05-03 19:50_", - "2021-06-02 07:24_", "2021-07-01 21:11_", "2021-07-31 13:16_", - "2021-08-30 07:13_", "2021-09-29 01:57_", "2021-10-28 20:05_", - "2021-11-27 12:28_", "2021-12-27 02:24_", "2022-01-25 13:41_", - "2022-02-23 22:32_", "2022-03-25 05:37_", "2022-04-23 11:56_", - "2022-05-22 18:43_", "2022-06-21 03:11_", "2022-07-20 14:18_", - "2022-08-19 04:36_", "2022-09-17 21:52_", "2022-10-17 17:15_", - "2022-11-16 13:27_", "2022-12-16 08:56_", "2023-01-15 02:10_", - "2023-02-13 16:01_", "2023-03-15 02:08_", "2023-04-13 09:11_", - "2023-05-12 14:28_", "2023-06-10 19:31_", "2023-07-10 01:48_", - "2023-08-08 10:28_", "2023-09-06 22:21_", "2023-10-06 13:48_", - "2023-11-05 08:37_", "2023-12-05 05:49_", "2024-01-04 03:30_", - "2024-02-02 23:18_", "2024-03-03 15:24_", "2024-04-02 03:15_", - "2024-05-01 11:27_", "2024-05-30 17:13_", "2024-06-28 21:53_", - "2024-07-28 02:51_", "2024-08-26 09:26_", "2024-09-24 18:50_", - "2024-10-24 08:03_", "2024-11-23 01:28_", "2024-12-22 22:18_") - - def update_moon_calculations(self, the_date): - """Generate all Moon data ready for display. - """ - SECONDS_PER_DAY = 86400.0 - last_new_moon_sec = self.last_new_moon_sec_at_time(the_date) - next_new_moon_sec = self.next_new_moon_sec_at_time(the_date) - last_full_moon_sec = self.last_full_moon_sec_at_time(the_date) - next_full_moon_sec = self.next_full_moon_sec_at_time(the_date) - last_quarter_moon_sec = self.last_quarter_moon_sec_at_time(the_date) - next_quarter_moon_sec = self.next_quarter_moon_sec_at_time(the_date) - - # Calculate phase percent of Moon based on nearest two data values - if next_full_moon_sec <= next_new_moon_sec: - if next_quarter_moon_sec <= next_full_moon_sec: - self.phase_of_moon = (last_new_moon_sec / (last_new_moon_sec + next_quarter_moon_sec)) * 0.25 - else: - self.phase_of_moon = (last_quarter_moon_sec / (last_quarter_moon_sec + next_full_moon_sec)) * 0.25 + 0.25 - else: - if next_quarter_moon_sec <= next_new_moon_sec: - self.phase_of_moon = (last_full_moon_sec / (last_full_moon_sec + next_quarter_moon_sec)) * 0.25 + 0.5 - else: - self.phase_of_moon = (last_quarter_moon_sec / (last_quarter_moon_sec + next_new_moon_sec)) * 0.25 + 0.75 - - # Generate interesting human readable values - self.percent_of_full_moon = (math.cos(((self.phase_of_moon + .5) / .5 * math.pi)) + 1) * .5 - self.julian_date = 2452135 + ((the_date - 997700400.0) / SECONDS_PER_DAY) - self.lunation = self.lunation_at_time(the_date) - day_with_fraction = last_new_moon_sec / SECONDS_PER_DAY - self.days_old = math.floor(day_with_fraction) - self.hours_old = math.floor((day_with_fraction - self.days_old) * 24) - self.minutes_old = math.floor((((day_with_fraction - self.days_old) * 24) - self.hours_old) * 60) - self.days_until_new_moon = next_new_moon_sec / SECONDS_PER_DAY - self.next_new_moon_date = the_date + next_new_moon_sec - self.correct_for_tz_and_dst(the_date + next_new_moon_sec) - self.days_until_full_moon = next_full_moon_sec / SECONDS_PER_DAY - self.next_full_moon_date = the_date + next_full_moon_sec - self.correct_for_tz_and_dst(the_date + next_full_moon_sec) - - # Eclipse information - self.next_lunar_eclipse_sec, self.next_lunar_eclipse_type = self.next_lunar_eclipse_sec_at_time(the_date) - self.next_solar_eclipse_sec, self.next_solar_eclipse_type = self.next_solar_eclipse_sec_at_time(the_date) - self.last_lunar_eclipse_sec, self.last_lunar_eclipse_type = self.last_lunar_eclipse_sec_at_time(the_date) - self.days_until_lunar_eclipse = self.next_lunar_eclipse_sec / SECONDS_PER_DAY - self.next_lunar_eclipse_date = the_date + self.next_lunar_eclipse_sec - self.correct_for_tz_and_dst(the_date + self.next_lunar_eclipse_sec) - self.days_until_solar_eclipse = self.next_solar_eclipse_sec / SECONDS_PER_DAY - self.next_solar_eclipse_date = the_date + self.next_solar_eclipse_sec - self.correct_for_tz_and_dst(the_date + self.next_solar_eclipse_sec) - - # Selenographic terminator longitude - selenographic_tmp = 270 + (self.phase_of_moon * 360) - if selenographic_tmp >= 360: - selenographic_tmp -= 360 - if selenographic_tmp >= 270: - selenographic_tmp -= 360 - elif selenographic_tmp >= 180: - selenographic_tmp -= 180 - elif selenographic_tmp >= 90: - selenographic_tmp -= 180 - selenographic_tmp = -selenographic_tmp - if selenographic_tmp < 0: - self.west_or_east = _("west") - else: - self.west_or_east = _("east") - self.selenographic_deg = abs(selenographic_tmp) - if self.phase_of_moon >= .5: - self.rise_or_set = _("Sunset") - else: - self.rise_or_set = _("Sunrise") - - def correct_for_tz_and_dst(self, date_sec_of_event): - """Time-zone and/or daylight-saving correction (internal data is UTC). - """ - if time.daylight == 0 or time.localtime(date_sec_of_event)[8] == 0: - # Time-zone correction - return time.timezone - else: - # Time-zone & daylight saving correction - return time.altzone - - def moon_phase_name(self, phase_of_moon): - """Return the moon image name for a given phase value. - """ - if phase_of_moon >= 0 and phase_of_moon < 0.025: - return _("New Moon") - elif phase_of_moon >= 0.025 and phase_of_moon < 0.225: - return _("Waxing Crescent") - elif phase_of_moon >= 0.225 and phase_of_moon < 0.275: - return _("First Quarter") - elif phase_of_moon >= 0.275 and phase_of_moon < 0.475: - return _("Waxing Gibbous") - elif phase_of_moon >= 0.475 and phase_of_moon < 0.525: - return _("Full Moon") - elif phase_of_moon >= 0.525 and phase_of_moon < 0.735: - return _("Waning Gibbous") - elif phase_of_moon >= 0.735 and phase_of_moon < 0.775: - return _("Last Quarter") - elif phase_of_moon >= 0.775 and phase_of_moon < 0.975: - return _("Waning Crescent") - else: - return _("New Moon") - - def next_full_moon_sec_at_time(self, now): - """Return seconds to the next Full Moon. - """ - for date_string in self.full_moon_array: - next = time.mktime(time.strptime(date_string[:-1], self.date_format)) - if next >= now: - break - return next - now - - def next_new_moon_sec_at_time(self, now): - """Return seconds to the next New Moon. - """ - for date_string in self.new_moon_array: - next = time.mktime(time.strptime(date_string[:-1], self.date_format)) - if next >= now: - break - return next - now - - def next_quarter_moon_sec_at_time(self, now): - """Return seconds to the next Quater Moon phase (could be First or Last). - """ - for date_string in self.first_quarter_array: - next1 = time.mktime(time.strptime(date_string, self.date_format)) - if next1 >= now: - break - for date_string in self.last_quarter_array: - next2 = time.mktime(time.strptime(date_string, self.date_format)) - if next2 >= now: - break - next = min(next1, next2) - return next - now - - def last_full_moon_sec_at_time(self, now): - """Return (positive) seconds since the last Full Moon. - """ - for date_string in self.full_moon_array: - then = time.mktime(time.strptime(date_string[:-1], self.date_format)) - if then >= now: - break - last = then - return now - last - - def last_new_moon_sec_at_time(self, now): - """Return (positive) seconds since the last New Moon. - """ - for date_string in self.new_moon_array: - then = time.mktime(time.strptime(date_string[:-1], self.date_format)) - if then >= now: - break - last = then - return now - last - - def last_quarter_moon_sec_at_time(self, now): - """Return (positive) seconds to the last Quater Moon phase (could be First or Last). - """ - for date_string in self.first_quarter_array: - then = time.mktime(time.strptime(date_string, self.date_format)) - if then >= now: - break - last1 = then - for date_string in self.last_quarter_array: - then = time.mktime(time.strptime(date_string, self.date_format)) - if then >= now: - break - last2 = then - last = max(last1, last2) - return now - last - - def lunation_at_time(self, now): - """Return lunation number, 0 started on Dec 18, 1922, current data set starts as 2008 - """ - lunation = 1051 - for date_string in self.new_moon_array: - next = time.mktime(time.strptime(date_string[:-1], self.date_format)) - if next >= now: - break - lunation += 1 - return lunation - - def next_lunar_eclipse_sec_at_time(self, now): - """Return (positive) seconds to the next Lunar eclipe or -1. - """ - for date_string in self.full_moon_array: - if date_string[-1:] != "_": - next = time.mktime(time.strptime(date_string[:-1], self.date_format)) - if next >= now: - return next - now, date_string[-1:] - return -1 - - def last_lunar_eclipse_sec_at_time(self, now): - """Return (positive) seconds to the last Lunar eclipe or -1. - """ - last = -1 - for date_string in self.full_moon_array: - if date_string[-1:] != "_": - eclipse_type = date_string[-1:] - then = time.mktime(time.strptime(date_string[:-1], self.date_format)) - if then >= now: - break - last = then - if last == -1: - return -1 - else: - return now - last, type - - def next_solar_eclipse_sec_at_time(self, now): - """Return (positive) seconds to the next Solar eclipe or -1. - """ - for date_string in self.new_moon_array: - if date_string[-1:] != "_": - next = time.mktime(time.strptime(date_string[:-1], self.date_format)) - if next >= now: - return next - now, date_string[-1:] - return -1 From 9bb993ef8247c34652213b12f59b106fbda2e1b4 Mon Sep 17 00:00:00 2001 From: James Cameron Date: Wed, 8 Aug 2018 12:47:49 +1000 Subject: [PATCH 4/5] Remove save-as-image button - the button does not work now, cause unknown, - duplicates the function of screenshot key. --- css/navbar.css | 4 -- data.ini | 3 -- icons/save-image.svg | 95 -------------------------------------------- index.html | 3 -- js/moon-activity.js | 24 ----------- po/es.po | 6 --- po/fr.po | 6 --- po/template.pot | 6 --- 8 files changed, 147 deletions(-) delete mode 100644 icons/save-image.svg diff --git a/css/navbar.css b/css/navbar.css index 90e8a1c..41e4f43 100644 --- a/css/navbar.css +++ b/css/navbar.css @@ -14,7 +14,3 @@ #toggle-hemisphere-button { background-image: url(../icons/toggle-hemisphere.svg); } - -#save-image-button { - background-image: url(../icons/save-image.svg); -} diff --git a/data.ini b/data.ini index 8cdb72e..3816422 100644 --- a/data.ini +++ b/data.ini @@ -39,7 +39,6 @@ Longitude=Longitude ToggleGrid=Toggle Grid View ToggleHemisphere=Toggle Hemisphere View -SaveImage=Save As Image [fr] @@ -83,7 +82,6 @@ Longitude=Longitude ToggleGrid=Afficher/Masquer la grille ToggleHemisphere=Changer d'hémisphère -SaveImage=Enregistrer en tant qu'image [es] @@ -127,4 +125,3 @@ Longitude=Longitud ToggleGrid=Cambiar a vista grilla ToggleHemisphere=Cambiar a vista hemisferio -SaveImage=Guardarla como una imagen \ No newline at end of file diff --git a/icons/save-image.svg b/icons/save-image.svg deleted file mode 100644 index 50731e4..0000000 --- a/icons/save-image.svg +++ /dev/null @@ -1,95 +0,0 @@ - - - -image/svg+xml - - - - - - - - - diff --git a/index.html b/index.html index cd5a4d7..044d173 100644 --- a/index.html +++ b/index.html @@ -21,9 +21,6 @@ - diff --git a/js/moon-activity.js b/js/moon-activity.js index b98f9ae..59035cd 100644 --- a/js/moon-activity.js +++ b/js/moon-activity.js @@ -230,7 +230,6 @@ define(['activity/data-model', 'activity/draw', 'webL10n', 'sugar-web/env', 'sug document.getElementById("toggle-grid-button").title = _('ToggleGrid'); document.getElementById("toggle-hemisphere-button").title = _('ToggleHemisphere'); - document.getElementById("save-image-button").title = _('SaveImage'); } @@ -246,7 +245,6 @@ define(['activity/data-model', 'activity/draw', 'webL10n', 'sugar-web/env', 'sug toggleGridBtn.addEventListener('click', toggleGrid); toggleHemisphereBtn.addEventListener('click', toggleHemisphere); - document.querySelector('#save-image-button').addEventListener('click', saveImage); } @@ -282,28 +280,6 @@ define(['activity/data-model', 'activity/draw', 'webL10n', 'sugar-web/env', 'sug } - function saveImage() { - /* - Read canvas data as base64 string and - store image in datastore - */ - - var mimetype = 'image/jpeg'; - var inputData = canvas.toDataURL(mimetype, 1); - var metadata = { - mimetype: mimetype, - title: "Image Moon", - activity: "org.olpcfrance.MediaViewerActivity", - timestamp: new Date().getTime(), - creation_time: new Date().getTime(), - file_size: 0 - }; - datastore.create(metadata, function() { - console.log("export done.") - }, inputData); - } - - function formatDate(date) { /* Modify rendered dates to match Sugar Moon format diff --git a/po/es.po b/po/es.po index 39bf614..82fbc7d 100644 --- a/po/es.po +++ b/po/es.po @@ -192,9 +192,3 @@ msgstr "Cambiar a vista grilla" msgctxt "ToggleHemisphere" msgid "Toggle Hemisphere View" msgstr "Cambiar a vista hemisferio" - -#: SaveImage -msgctxt "SaveImage" -msgid "Save As Image" -msgstr "Guardarla como una imagen" - diff --git a/po/fr.po b/po/fr.po index d7c73dd..204b904 100644 --- a/po/fr.po +++ b/po/fr.po @@ -192,9 +192,3 @@ msgstr "Afficher/Masquer la grille" msgctxt "ToggleHemisphere" msgid "Toggle Hemisphere View" msgstr "Changer d'hémisphère" - -#: SaveImage -msgctxt "SaveImage" -msgid "Save As Image" -msgstr "Enregistrer en tant qu'image" - diff --git a/po/template.pot b/po/template.pot index fedd1cf..fa58af1 100644 --- a/po/template.pot +++ b/po/template.pot @@ -192,9 +192,3 @@ msgstr "" msgctxt "ToggleHemisphere" msgid "Toggle Hemisphere View" msgstr "" - -#: SaveImage -msgctxt "SaveImage" -msgid "Save As Image" -msgstr "" - From 651940b9e26c40512e1bbfb58b70752a98e69349 Mon Sep 17 00:00:00 2001 From: James Cameron Date: Wed, 8 Aug 2018 12:52:22 +1000 Subject: [PATCH 5/5] Adjust data end year --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index d4a65dc..f8c1120 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ Moon phase viewer, includes Lunar phase information and eclipse data. The Moon Activity provides a graphical representation of the current Lunar phase, and a range of common astronomical information including, phase, Julian date, Moon age, Lunation, surface visibility, selenographic terminator longitude (position of shadow on Moon's surface), next Full Moon, next New Moon, next Lunar eclipse, next Solar eclipse. The graphical image can be generated for Northern or Southern hemisphere viewing locations, and a latitude/longitude grid can be added for surface feature reference. -This activity does not require internet access to work, and will show reasonably accurate information (within an error of about 60 seconds), up until the end of 2018. +This activity does not require internet access to work, and will show reasonably accurate information (within an error of about 60 seconds), up until the end of 2024. How to use? ===========