[Pkg-mozext-commits] [mozilla-password-editor] 01/01: Imported Upstream version 2.7.2

Ximin Luo infinity0-guest at moszumanska.debian.org
Wed Feb 26 01:56:49 UTC 2014


This is an automated email from the git hooks/post-receive script.

infinity0-guest pushed a commit to branch upstream
in repository mozilla-password-editor.

commit 4fea1d1c58c70a34e13abeccbbf106ad6cd9d355
Author: Ximin Luo <infinity0 at pwned.gg>
Date:   Wed Feb 26 01:44:55 2014 +0000

    Imported Upstream version 2.7.2
---
 LICENSE.txt                           | 676 ++++++++++++++++++++++++++++++++++
 chrome.manifest                       |  76 ++++
 content/SavedPasswordEditor.jsm       | 266 +++++++++++++
 content/contextmenuOverlay.js         |  50 +++
 content/contextmenuOverlay.xul        |  53 +++
 content/firstrun.jsm                  | 129 +++++++
 content/firstrunOverlay.xul           |  32 ++
 content/menubarOverlay.js             |  84 +++++
 content/menubarOverlay.xul            |  62 ++++
 content/prefwindow.js                 |  52 +++
 content/prefwindow.xul                |  84 +++++
 content/pwdedit.js                    | 395 ++++++++++++++++++++
 content/pwdedit.xul                   | 128 +++++++
 content/pwdmgrOverlay-sm.js           | 236 ++++++++++++
 content/pwdmgrOverlay-sm.xul          |  81 ++++
 content/pwdmgrOverlay.js              | 260 +++++++++++++
 content/pwdmgrOverlay.xul             |  87 +++++
 content/qtextbox.xml                  |  51 +++
 content/toolbarOverlay.js             |  80 ++++
 content/toolbarOverlay.xul            |  55 +++
 content/welcome.js                    |  65 ++++
 content/welcome.xhtml                 |  39 ++
 content/welcome_sm.xhtml              |  39 ++
 defaults/preferences/prefs.js         |   6 +
 install.rdf                           | 246 +++++++++++++
 locale/bg/browserOverlay.dtd          |  14 +
 locale/bg/prefwindow.dtd              |  18 +
 locale/bg/pwdedit.dtd                 |  36 ++
 locale/bg/pwdedit.properties          |   9 +
 locale/bg/pwdmgrOverlay.dtd           |  11 +
 locale/bg/pwdmgrOverlay.properties    |   4 +
 locale/bg/spe.properties              |  10 +
 locale/bg/welcome.dtd                 |  50 +++
 locale/de/browserOverlay.dtd          |  14 +
 locale/de/prefwindow.dtd              |  18 +
 locale/de/pwdedit.dtd                 |  36 ++
 locale/de/pwdedit.properties          |   9 +
 locale/de/pwdmgrOverlay.dtd           |  11 +
 locale/de/pwdmgrOverlay.properties    |   4 +
 locale/de/spe.properties              |  10 +
 locale/de/welcome.dtd                 |  50 +++
 locale/dsb/browserOverlay.dtd         |  14 +
 locale/dsb/prefwindow.dtd             |  18 +
 locale/dsb/pwdedit.dtd                |  36 ++
 locale/dsb/pwdedit.properties         |   9 +
 locale/dsb/pwdmgrOverlay.dtd          |  11 +
 locale/dsb/pwdmgrOverlay.properties   |   4 +
 locale/dsb/spe.properties             |  10 +
 locale/dsb/welcome.dtd                |  50 +++
 locale/el/browserOverlay.dtd          |  14 +
 locale/el/prefwindow.dtd              |  18 +
 locale/el/pwdedit.dtd                 |  36 ++
 locale/el/pwdedit.properties          |   9 +
 locale/el/pwdmgrOverlay.dtd           |  11 +
 locale/el/pwdmgrOverlay.properties    |   4 +
 locale/el/spe.properties              |  10 +
 locale/el/welcome.dtd                 |  50 +++
 locale/en-US/browserOverlay.dtd       |  15 +
 locale/en-US/prefwindow.dtd           |  18 +
 locale/en-US/pwdedit.dtd              |  36 ++
 locale/en-US/pwdedit.properties       |  10 +
 locale/en-US/pwdmgrOverlay.dtd        |  10 +
 locale/en-US/pwdmgrOverlay.properties |   5 +
 locale/en-US/spe.properties           |  11 +
 locale/en-US/welcome.dtd              |  46 +++
 locale/eo/browserOverlay.dtd          |  14 +
 locale/eo/prefwindow.dtd              |  18 +
 locale/eo/pwdedit.dtd                 |  36 ++
 locale/eo/pwdedit.properties          |   9 +
 locale/eo/pwdmgrOverlay.dtd           |  11 +
 locale/eo/pwdmgrOverlay.properties    |   4 +
 locale/eo/spe.properties              |  10 +
 locale/eo/welcome.dtd                 |  50 +++
 locale/es-ES/browserOverlay.dtd       |  14 +
 locale/es-ES/prefwindow.dtd           |  18 +
 locale/es-ES/pwdedit.dtd              |  36 ++
 locale/es-ES/pwdedit.properties       |   9 +
 locale/es-ES/pwdmgrOverlay.dtd        |  11 +
 locale/es-ES/pwdmgrOverlay.properties |   4 +
 locale/es-ES/spe.properties           |  10 +
 locale/es-ES/welcome.dtd              |  50 +++
 locale/fi/browserOverlay.dtd          |  14 +
 locale/fi/prefwindow.dtd              |  18 +
 locale/fi/pwdedit.dtd                 |  36 ++
 locale/fi/pwdedit.properties          |   9 +
 locale/fi/pwdmgrOverlay.dtd           |  11 +
 locale/fi/pwdmgrOverlay.properties    |   4 +
 locale/fi/spe.properties              |  10 +
 locale/fi/welcome.dtd                 |  50 +++
 locale/fr/browserOverlay.dtd          |  14 +
 locale/fr/prefwindow.dtd              |  18 +
 locale/fr/pwdedit.dtd                 |  36 ++
 locale/fr/pwdedit.properties          |   9 +
 locale/fr/pwdmgrOverlay.dtd           |  11 +
 locale/fr/pwdmgrOverlay.properties    |   4 +
 locale/fr/spe.properties              |  10 +
 locale/fr/welcome.dtd                 |  50 +++
 locale/hsb/browserOverlay.dtd         |  14 +
 locale/hsb/prefwindow.dtd             |  18 +
 locale/hsb/pwdedit.dtd                |  36 ++
 locale/hsb/pwdedit.properties         |   9 +
 locale/hsb/pwdmgrOverlay.dtd          |  11 +
 locale/hsb/pwdmgrOverlay.properties   |   4 +
 locale/hsb/spe.properties             |  10 +
 locale/hsb/welcome.dtd                |  50 +++
 locale/hu/browserOverlay.dtd          |  14 +
 locale/hu/prefwindow.dtd              |  18 +
 locale/hu/pwdedit.dtd                 |  36 ++
 locale/hu/pwdedit.properties          |   9 +
 locale/hu/pwdmgrOverlay.dtd           |  11 +
 locale/hu/pwdmgrOverlay.properties    |   4 +
 locale/hu/spe.properties              |  10 +
 locale/hu/welcome.dtd                 |  50 +++
 locale/id-ID/browserOverlay.dtd       |  14 +
 locale/id-ID/prefwindow.dtd           |  18 +
 locale/id-ID/pwdedit.dtd              |  36 ++
 locale/id-ID/pwdedit.properties       |   9 +
 locale/id-ID/pwdmgrOverlay.dtd        |  11 +
 locale/id-ID/pwdmgrOverlay.properties |   4 +
 locale/id-ID/spe.properties           |  10 +
 locale/id-ID/welcome.dtd              |  50 +++
 locale/ja/browserOverlay.dtd          |  14 +
 locale/ja/prefwindow.dtd              |  18 +
 locale/ja/pwdedit.dtd                 |  36 ++
 locale/ja/pwdedit.properties          |   9 +
 locale/ja/pwdmgrOverlay.dtd           |  11 +
 locale/ja/pwdmgrOverlay.properties    |   4 +
 locale/ja/spe.properties              |  10 +
 locale/ja/welcome.dtd                 |  50 +++
 locale/nl/browserOverlay.dtd          |  14 +
 locale/nl/prefwindow.dtd              |  18 +
 locale/nl/pwdedit.dtd                 |  36 ++
 locale/nl/pwdedit.properties          |   9 +
 locale/nl/pwdmgrOverlay.dtd           |  11 +
 locale/nl/pwdmgrOverlay.properties    |   4 +
 locale/nl/spe.properties              |  10 +
 locale/nl/welcome.dtd                 |  50 +++
 locale/pl/browserOverlay.dtd          |  14 +
 locale/pl/prefwindow.dtd              |  18 +
 locale/pl/pwdedit.dtd                 |  36 ++
 locale/pl/pwdedit.properties          |   9 +
 locale/pl/pwdmgrOverlay.dtd           |  11 +
 locale/pl/pwdmgrOverlay.properties    |   4 +
 locale/pl/spe.properties              |  10 +
 locale/pl/welcome.dtd                 |  50 +++
 locale/pt-BR/browserOverlay.dtd       |  14 +
 locale/pt-BR/prefwindow.dtd           |  18 +
 locale/pt-BR/pwdedit.dtd              |  36 ++
 locale/pt-BR/pwdedit.properties       |   9 +
 locale/pt-BR/pwdmgrOverlay.dtd        |  11 +
 locale/pt-BR/pwdmgrOverlay.properties |   4 +
 locale/pt-BR/spe.properties           |  10 +
 locale/pt-BR/welcome.dtd              |  50 +++
 locale/pt-PT/browserOverlay.dtd       |  14 +
 locale/pt-PT/prefwindow.dtd           |  18 +
 locale/pt-PT/pwdedit.dtd              |  36 ++
 locale/pt-PT/pwdedit.properties       |   9 +
 locale/pt-PT/pwdmgrOverlay.dtd        |  11 +
 locale/pt-PT/pwdmgrOverlay.properties |   4 +
 locale/pt-PT/spe.properties           |  10 +
 locale/pt-PT/welcome.dtd              |  50 +++
 locale/ru/browserOverlay.dtd          |  14 +
 locale/ru/prefwindow.dtd              |  18 +
 locale/ru/pwdedit.dtd                 |  36 ++
 locale/ru/pwdedit.properties          |   9 +
 locale/ru/pwdmgrOverlay.dtd           |  11 +
 locale/ru/pwdmgrOverlay.properties    |   4 +
 locale/ru/spe.properties              |  10 +
 locale/ru/welcome.dtd                 |  50 +++
 locale/sr/browserOverlay.dtd          |  14 +
 locale/sr/prefwindow.dtd              |  18 +
 locale/sr/pwdedit.dtd                 |  36 ++
 locale/sr/pwdedit.properties          |   9 +
 locale/sr/pwdmgrOverlay.dtd           |  11 +
 locale/sr/pwdmgrOverlay.properties    |   4 +
 locale/sr/spe.properties              |  10 +
 locale/sr/welcome.dtd                 |  50 +++
 locale/sv-SE/browserOverlay.dtd       |  14 +
 locale/sv-SE/prefwindow.dtd           |  18 +
 locale/sv-SE/pwdedit.dtd              |  36 ++
 locale/sv-SE/pwdedit.properties       |   9 +
 locale/sv-SE/pwdmgrOverlay.dtd        |  11 +
 locale/sv-SE/pwdmgrOverlay.properties |   4 +
 locale/sv-SE/spe.properties           |  10 +
 locale/sv-SE/welcome.dtd              |  50 +++
 locale/tr/browserOverlay.dtd          |  14 +
 locale/tr/prefwindow.dtd              |  18 +
 locale/tr/pwdedit.dtd                 |  36 ++
 locale/tr/pwdedit.properties          |   9 +
 locale/tr/pwdmgrOverlay.dtd           |  11 +
 locale/tr/pwdmgrOverlay.properties    |   4 +
 locale/tr/spe.properties              |  10 +
 locale/tr/welcome.dtd                 |  50 +++
 locale/vi/browserOverlay.dtd          |  14 +
 locale/vi/prefwindow.dtd              |  18 +
 locale/vi/pwdedit.dtd                 |  36 ++
 locale/vi/pwdedit.properties          |   9 +
 locale/vi/pwdmgrOverlay.dtd           |  11 +
 locale/vi/pwdmgrOverlay.properties    |   4 +
 locale/vi/spe.properties              |  10 +
 locale/vi/welcome.dtd                 |  50 +++
 locale/zh-CN/browserOverlay.dtd       |  14 +
 locale/zh-CN/prefwindow.dtd           |  18 +
 locale/zh-CN/pwdedit.dtd              |  36 ++
 locale/zh-CN/pwdedit.properties       |   9 +
 locale/zh-CN/pwdmgrOverlay.dtd        |  14 +
 locale/zh-CN/pwdmgrOverlay.properties |   4 +
 locale/zh-CN/spe.properties           |  10 +
 locale/zh-CN/welcome.dtd              |  62 ++++
 locale/zh-TW/browserOverlay.dtd       |  14 +
 locale/zh-TW/prefwindow.dtd           |  18 +
 locale/zh-TW/pwdedit.dtd              |  36 ++
 locale/zh-TW/pwdedit.properties       |   9 +
 locale/zh-TW/pwdmgrOverlay.dtd        |  11 +
 locale/zh-TW/pwdmgrOverlay.properties |   4 +
 locale/zh-TW/spe.properties           |  10 +
 locale/zh-TW/welcome.dtd              |  50 +++
 skin/indef.png                        | Bin 0 -> 99 bytes
 skin/key16.png                        | Bin 0 -> 563 bytes
 skin/key19.png                        | Bin 0 -> 626 bytes
 skin/key24.png                        | Bin 0 -> 882 bytes
 skin/key29.png                        | Bin 0 -> 1201 bytes
 skin/key32.png                        | Bin 0 -> 1487 bytes
 skin/key64.png                        | Bin 0 -> 2966 bytes
 skin/overlay-sm.css                   |  30 ++
 skin/overlay.css                      |  34 ++
 skin/pwdmgrOverlay.css                |  30 ++
 skin/qtextbox.css                     |  32 ++
 skin/welcome.css                      |  58 +++
 229 files changed, 7178 insertions(+)

diff --git a/LICENSE.txt b/LICENSE.txt
new file mode 100644
index 0000000..4432540
--- /dev/null
+++ b/LICENSE.txt
@@ -0,0 +1,676 @@
+
+		    GNU GENERAL PUBLIC LICENSE
+		       Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+			    Preamble
+
+  The GNU General Public License is a free, copyleft license for
+software and other kinds of works.
+
+  The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works.  By contrast,
+the GNU General Public License is intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains free
+software for all its users.  We, the Free Software Foundation, use the
+GNU General Public License for most of our software; it applies also to
+any other work released this way by its authors.  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
+them 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 prevent others from denying you
+these rights or asking you to surrender the rights.  Therefore, you have
+certain responsibilities if you distribute copies of the software, or if
+you modify it: responsibilities to respect the freedom of others.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must pass on to the recipients the same
+freedoms that you received.  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.
+
+  Developers that use the GNU GPL protect your rights with two steps:
+(1) assert copyright on the software, and (2) offer you this License
+giving you legal permission to copy, distribute and/or modify it.
+
+  For the developers' and authors' protection, the GPL clearly explains
+that there is no warranty for this free software.  For both users' and
+authors' sake, the GPL requires that modified versions be marked as
+changed, so that their problems will not be attributed erroneously to
+authors of previous versions.
+
+  Some devices are designed to deny users access to install or run
+modified versions of the software inside them, although the manufacturer
+can do so.  This is fundamentally incompatible with the aim of
+protecting users' freedom to change the software.  The systematic
+pattern of such abuse occurs in the area of products for individuals to
+use, which is precisely where it is most unacceptable.  Therefore, we
+have designed this version of the GPL to prohibit the practice for those
+products.  If such problems arise substantially in other domains, we
+stand ready to extend this provision to those domains in future versions
+of the GPL, as needed to protect the freedom of users.
+
+  Finally, every program is threatened constantly by software patents.
+States should not allow patents to restrict development and use of
+software on general-purpose computers, but in those that do, we wish to
+avoid the special danger that patents applied to a free program could
+make it effectively proprietary.  To prevent this, the GPL assures that
+patents cannot be used to render the program non-free.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+		       TERMS AND CONDITIONS
+
+  0. Definitions.
+
+  "This License" refers to version 3 of the GNU General Public License.
+
+  "Copyright" also means copyright-like laws that apply to other kinds of
+works, such as semiconductor masks.
+ 
+  "The Program" refers to any copyrightable work licensed under this
+License.  Each licensee is addressed as "you".  "Licensees" and
+"recipients" may be individuals or organizations.
+
+  To "modify" a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of an
+exact copy.  The resulting work is called a "modified version" of the
+earlier work or a work "based on" the earlier work.
+
+  A "covered work" means either the unmodified Program or a work based
+on the Program.
+
+  To "propagate" a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy.  Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+
+  To "convey" a work means any kind of propagation that enables other
+parties to make or receive copies.  Mere interaction with a user through
+a computer network, with no transfer of a copy, is not conveying.
+
+  An interactive user interface displays "Appropriate Legal Notices"
+to the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License.  If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+
+  1. Source Code.
+
+  The "source code" for a work means the preferred form of the work
+for making modifications to it.  "Object code" means any non-source
+form of a work.
+
+  A "Standard Interface" means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
+
+  The "System Libraries" of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form.  A
+"Major Component", in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
+
+  The "Corresponding Source" for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities.  However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work.  For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
+
+  The Corresponding Source need not include anything that users
+can regenerate automatically from other parts of the Corresponding
+Source.
+
+  The Corresponding Source for a work in source code form is that
+same work.
+
+  2. Basic Permissions.
+
+  All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met.  This License explicitly affirms your unlimited
+permission to run the unmodified Program.  The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work.  This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+
+  You may make, run and propagate covered works that you do not
+convey, without conditions so long as your license otherwise remains
+in force.  You may convey covered works to others for the sole purpose
+of having them make modifications exclusively for you, or provide you
+with facilities for running those works, provided that you comply with
+the terms of this License in conveying all material for which you do
+not control copyright.  Those thus making or running the covered works
+for you must do so exclusively on your behalf, under your direction
+and control, on terms that prohibit them from making any copies of
+your copyrighted material outside their relationship with you.
+
+  Conveying under any other circumstances is permitted solely under
+the conditions stated below.  Sublicensing is not allowed; section 10
+makes it unnecessary.
+
+  3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+  No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+
+  When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such circumvention
+is effected by exercising rights under this License with respect to
+the covered work, and you disclaim any intention to limit operation or
+modification of the work as a means of enforcing, against the work's
+users, your or third parties' legal rights to forbid circumvention of
+technological measures.
+
+  4. Conveying Verbatim Copies.
+
+  You may convey 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;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+  You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+
+  5. Conveying Modified Source Versions.
+
+  You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these conditions:
+
+    a) The work must carry prominent notices stating that you modified
+    it, and giving a relevant date.
+
+    b) The work must carry prominent notices stating that it is
+    released under this License and any conditions added under section
+    7.  This requirement modifies the requirement in section 4 to
+    "keep intact all notices".
+
+    c) You must license the entire work, as a whole, under this
+    License to anyone who comes into possession of a copy.  This
+    License will therefore apply, along with any applicable section 7
+    additional terms, to the whole of the work, and all its parts,
+    regardless of how they are packaged.  This License gives no
+    permission to license the work in any other way, but it does not
+    invalidate such permission if you have separately received it.
+
+    d) If the work has interactive user interfaces, each must display
+    Appropriate Legal Notices; however, if the Program has interactive
+    interfaces that do not display Appropriate Legal Notices, your
+    work need not make them do so.
+
+  A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+"aggregate" if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit.  Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+
+  6. Conveying Non-Source Forms.
+
+  You may convey a covered work in object code form under the terms
+of sections 4 and 5, provided that you also convey the
+machine-readable Corresponding Source under the terms of this License,
+in one of these ways:
+
+    a) Convey the object code in, or embodied in, a physical product
+    (including a physical distribution medium), accompanied by the
+    Corresponding Source fixed on a durable physical medium
+    customarily used for software interchange.
+
+    b) Convey the object code in, or embodied in, a physical product
+    (including a physical distribution medium), accompanied by a
+    written offer, valid for at least three years and valid for as
+    long as you offer spare parts or customer support for that product
+    model, to give anyone who possesses the object code either (1) a
+    copy of the Corresponding Source for all the software in the
+    product that is covered by this License, on a durable physical
+    medium customarily used for software interchange, for a price no
+    more than your reasonable cost of physically performing this
+    conveying of source, or (2) access to copy the
+    Corresponding Source from a network server at no charge.
+
+    c) Convey individual copies of the object code with a copy of the
+    written offer to provide the Corresponding Source.  This
+    alternative is allowed only occasionally and noncommercially, and
+    only if you received the object code with such an offer, in accord
+    with subsection 6b.
+
+    d) Convey the object code by offering access from a designated
+    place (gratis or for a charge), and offer equivalent access to the
+    Corresponding Source in the same way through the same place at no
+    further charge.  You need not require recipients to copy the
+    Corresponding Source along with the object code.  If the place to
+    copy the object code is a network server, the Corresponding Source
+    may be on a different server (operated by you or a third party)
+    that supports equivalent copying facilities, provided you maintain
+    clear directions next to the object code saying where to find the
+    Corresponding Source.  Regardless of what server hosts the
+    Corresponding Source, you remain obligated to ensure that it is
+    available for as long as needed to satisfy these requirements.
+
+    e) Convey the object code using peer-to-peer transmission, provided
+    you inform other peers where the object code and Corresponding
+    Source of the work are being offered to the general public at no
+    charge under subsection 6d.
+
+  A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+
+  A "User Product" is either (1) a "consumer product", which means any
+tangible personal property which is normally used for personal, family,
+or household purposes, or (2) anything designed or sold for incorporation
+into a dwelling.  In determining whether a product is a consumer product,
+doubtful cases shall be resolved in favor of coverage.  For a particular
+product received by a particular user, "normally used" refers to a
+typical or common use of that class of product, regardless of the status
+of the particular user or of the way in which the particular user
+actually uses, or expects or is expected to use, the product.  A product
+is a consumer product regardless of whether the product has substantial
+commercial, industrial or non-consumer uses, unless such uses represent
+the only significant mode of use of the product.
+
+  "Installation Information" for a User Product means any methods,
+procedures, authorization keys, or other information required to install
+and execute modified versions of a covered work in that User Product from
+a modified version of its Corresponding Source.  The information must
+suffice to ensure that the continued functioning of the modified object
+code is in no case prevented or interfered with solely because
+modification has been made.
+
+  If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information.  But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+
+  The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or updates
+for a work that has been modified or installed by the recipient, or for
+the User Product in which it has been modified or installed.  Access to a
+network may be denied when the modification itself materially and
+adversely affects the operation of the network or violates the rules and
+protocols for communication across the network.
+
+  Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+
+  7. Additional Terms.
+
+  "Additional permissions" are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law.  If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+
+  When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it.  (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.)  You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+
+  Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders of
+that material) supplement the terms of this License with terms:
+
+    a) Disclaiming warranty or limiting liability differently from the
+    terms of sections 15 and 16 of this License; or
+
+    b) Requiring preservation of specified reasonable legal notices or
+    author attributions in that material or in the Appropriate Legal
+    Notices displayed by works containing it; or
+
+    c) Prohibiting misrepresentation of the origin of that material, or
+    requiring that modified versions of such material be marked in
+    reasonable ways as different from the original version; or
+
+    d) Limiting the use for publicity purposes of names of licensors or
+    authors of the material; or
+
+    e) Declining to grant rights under trademark law for use of some
+    trade names, trademarks, or service marks; or
+
+    f) Requiring indemnification of licensors and authors of that
+    material by anyone who conveys the material (or modified versions of
+    it) with contractual assumptions of liability to the recipient, for
+    any liability that these contractual assumptions directly impose on
+    those licensors and authors.
+
+  All other non-permissive additional terms are considered "further
+restrictions" within the meaning of section 10.  If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term.  If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+
+  If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+
+  Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions;
+the above requirements apply either way.
+
+  8. Termination.
+
+  You may not propagate or modify a covered work except as expressly
+provided under this License.  Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+
+  However, if you cease all violation of this License, then your
+license from a particular copyright holder is reinstated (a)
+provisionally, unless and until the copyright holder explicitly and
+finally terminates your license, and (b) permanently, if the copyright
+holder fails to notify you of the violation by some reasonable means
+prior to 60 days after the cessation.
+
+  Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+  Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License.  If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+
+  9. Acceptance Not Required for Having Copies.
+
+  You are not required to accept this License in order to receive or
+run a copy of the Program.  Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance.  However,
+nothing other than this License grants you permission to propagate or
+modify any covered work.  These actions infringe copyright if you do
+not accept this License.  Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+
+  10. Automatic Licensing of Downstream Recipients.
+
+  Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License.  You are not responsible
+for enforcing compliance by third parties with this License.
+
+  An "entity transaction" is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations.  If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+
+  You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License.  For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+
+  11. Patents.
+
+  A "contributor" is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based.  The
+work thus licensed is called the contributor's "contributor version".
+
+  A contributor's "essential patent claims" are all patent claims
+owned or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version.  For
+purposes of this definition, "control" includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
+this License.
+
+  Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+
+  In the following three paragraphs, a "patent license" is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement).  To "grant" such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+
+  If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients.  "Knowingly relying" means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+  
+  If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+
+  A patent license is "discriminatory" if it does not include within
+the scope of its coverage, prohibits the exercise of, or is
+conditioned on the non-exercise of one or more of the rights that are
+specifically granted under this License.  You may not convey a covered
+work if you are a party to an arrangement with a third party that is
+in the business of distributing software, under which you make payment
+to the third party based on the extent of your activity of conveying
+the work, and under which the third party grants, to any of the
+parties who would receive the covered work from you, a discriminatory
+patent license (a) in connection with copies of the covered work
+conveyed by you (or copies made from those copies), or (b) primarily
+for and in connection with specific products or compilations that
+contain the covered work, unless you entered into that arrangement,
+or that patent license was granted, prior to 28 March 2007.
+
+  Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+
+  12. No Surrender of Others' Freedom.
+
+  If 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 convey a
+covered work so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you may
+not convey it at all.  For example, if you agree to terms that obligate you
+to collect a royalty for further conveying from those to whom you convey
+the Program, the only way you could satisfy both those terms and this
+License would be to refrain entirely from conveying the Program.
+
+  13. Use with the GNU Affero General Public License.
+
+  Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU Affero General Public License into a single
+combined work, and to convey the resulting work.  The terms of this
+License will continue to apply to the part which is the covered work,
+but the special requirements of the GNU Affero General Public License,
+section 13, concerning interaction through a network will apply to the
+combination as such.
+
+  14. Revised Versions of this License.
+
+  The Free Software Foundation may publish revised and/or new versions of
+the GNU 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 that a certain numbered version of the GNU General
+Public License "or any later version" applies to it, you have the
+option of following the terms and conditions either of that numbered
+version or of any later version published by the Free Software
+Foundation.  If the Program does not specify a version number of the
+GNU General Public License, you may choose any version ever published
+by the Free Software Foundation.
+
+  If the Program specifies that a proxy can decide which future
+versions of the GNU General Public License can be used, that proxy's
+public statement of acceptance of a version permanently authorizes you
+to choose that version for the Program.
+
+  Later license versions may give you additional or different
+permissions.  However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
+
+  15. Disclaimer of Warranty.
+
+  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.
+
+  16. Limitation of Liability.
+
+  IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+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.
+
+  17. Interpretation of Sections 15 and 16.
+
+  If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
+
+		     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
+state the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    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 3 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, see <http://www.gnu.org/licenses/>.
+
+Also add information on how to contact you by electronic and paper mail.
+
+  If the program does terminal interaction, make it output a short
+notice like this when it starts in an interactive mode:
+
+    <program>  Copyright (C) <year>  <name of author>
+    This program 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, your program's commands
+might be different; for a GUI interface, you would use an "about box".
+
+  You should also get your employer (if you work as a programmer) or school,
+if any, to sign a "copyright disclaimer" for the program, if necessary.
+For more information on this, and how to apply and follow the GNU GPL, see
+<http://www.gnu.org/licenses/>.
+
+  The GNU 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.  But first, please read
+<http://www.gnu.org/philosophy/why-not-lgpl.html>.
+
diff --git a/chrome.manifest b/chrome.manifest
new file mode 100644
index 0000000..167d943
--- /dev/null
+++ b/chrome.manifest
@@ -0,0 +1,76 @@
+# Functional content
+## Modules
+resource	savedpasswordeditor	content/
+
+## Chrome
+content	savedpasswordeditor		content/
+
+# Language-specific content
+locale	savedpasswordeditor	bg	locale/bg/
+locale	savedpasswordeditor	de	locale/de/
+locale	savedpasswordeditor	dsb	locale/dsb/
+locale	savedpasswordeditor	el	locale/el/
+locale	savedpasswordeditor	en-US	locale/en-US/
+locale	savedpasswordeditor	eo	locale/eo/
+locale	savedpasswordeditor	es-ES	locale/es-ES/
+locale	savedpasswordeditor	fi	locale/fi/
+locale	savedpasswordeditor	fr	locale/fr/
+locale	savedpasswordeditor	hsb	locale/hsb/
+locale	savedpasswordeditor	hu	locale/hu/
+locale	savedpasswordeditor	id-ID	locale/id-ID/
+locale	savedpasswordeditor	ja	locale/ja/
+locale	savedpasswordeditor	nl	locale/nl/
+locale	savedpasswordeditor	pl	locale/pl/
+locale	savedpasswordeditor	pt-BR	locale/pt-BR/
+locale	savedpasswordeditor	pt-PT	locale/pt-PT/
+locale	savedpasswordeditor	ru	locale/ru/
+locale	savedpasswordeditor	sr	locale/sr/
+locale	savedpasswordeditor	sv-SE	locale/sv-SE/
+locale	savedpasswordeditor	tr	locale/tr/
+locale	savedpasswordeditor	vi	locale/vi/
+locale	savedpasswordeditor	zh-CN	locale/zh-CN/
+locale	savedpasswordeditor	zh-TW	locale/zh-TW/
+
+# Appearance
+skin	savedpasswordeditor	default	skin/
+
+# What goes where
+## Firefox browser windows
+overlay chrome://browser/content/browser.xul chrome://savedpasswordeditor/content/menubarOverlay.xul
+overlay chrome://browser/content/browser.xul chrome://savedpasswordeditor/content/toolbarOverlay.xul
+overlay chrome://browser/content/browser.xul chrome://savedpasswordeditor/content/contextmenuOverlay.xul
+overlay chrome://browser/content/browser.xul chrome://savedpasswordeditor/content/firstrunOverlay.xul
+
+## SeaMonkey browser windows
+overlay chrome://navigator/content/navigatorOverlay.xul chrome://savedpasswordeditor/content/menubarOverlay.xul
+overlay chrome://navigator/content/navigator.xul chrome://savedpasswordeditor/content/toolbarOverlay.xul
+overlay chrome://navigator/content/navigator.xul chrome://savedpasswordeditor/content/contextmenuOverlay.xul
+overlay chrome://navigator/content/navigator.xul chrome://savedpasswordeditor/content/firstrunOverlay.xul
+
+## Mail windows
+overlay chrome://messenger/content/mailWindowOverlay.xul chrome://savedpasswordeditor/content/menubarOverlay.xul
+overlay chrome://messenger/content/mailWindowOverlay.xul chrome://savedpasswordeditor/content/toolbarOverlay.xul
+overlay chrome://messenger/content/mailWindowOverlay.xul chrome://savedpasswordeditor/content/firstrunOverlay.xul
+overlay chrome://messenger/content/messengercompose/messengercompose.xul chrome://savedpasswordeditor/content/menubarOverlay.xul
+overlay chrome://messenger/content/messengercompose/messengercompose.xul chrome://savedpasswordeditor/content/toolbarOverlay.xul
+overlay chrome://messenger/content/messengercompose/messengercompose.xul chrome://savedpasswordeditor/content/firstrunOverlay.xul
+
+## Password Manager
+overlay chrome://passwordmgr/content/passwordManager.xul chrome://savedpasswordeditor/content/pwdmgrOverlay.xul
+overlay chrome://communicator/content/passwordManager.xul chrome://savedpasswordeditor/content/pwdmgrOverlay.xul
+overlay chrome://communicator/content/dataman/dataman.xul chrome://savedpasswordeditor/content/pwdmgrOverlay-sm.xul
+overlay about:data chrome://savedpasswordeditor/content/pwdmgrOverlay-sm.xul
+
+# Additional styles
+## Toolbar button
+style chrome://browser/content/browser.xul chrome://savedpasswordeditor/skin/overlay.css
+style chrome://navigator/content/navigator.xul chrome://savedpasswordeditor/skin/overlay-sm.css
+style chrome://navigator/content/navigatorOverlay.xul chrome://savedpasswordeditor/skin/overlay-sm.css
+style chrome://global/content/customizeToolbar.xul chrome://savedpasswordeditor/skin/overlay.css
+style chrome://global/content/customizeToolbar.xul chrome://savedpasswordeditor/skin/overlay-sm.css application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a}
+style chrome://messenger/content/messenger.xul chrome://savedpasswordeditor/skin/overlay.css
+style chrome://messenger/content/messenger.xul chrome://savedpasswordeditor/skin/overlay-sm.css application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a}
+style chrome://messenger/content/messageWindow.xul chrome://savedpasswordeditor/skin/overlay.css
+style chrome://messenger/content/messageWindow.xul chrome://savedpasswordeditor/skin/overlay-sm.css application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a}
+style chrome://messenger/content/messengercompose/messengercompose.xul chrome://savedpasswordeditor/skin/overlay.css
+style chrome://messenger/content/messengercompose/messengercompose.xul chrome://savedpasswordeditor/skin/overlay-sm.css application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a}
diff --git a/content/SavedPasswordEditor.jsm b/content/SavedPasswordEditor.jsm
new file mode 100644
index 0000000..ee65b1a
--- /dev/null
+++ b/content/SavedPasswordEditor.jsm
@@ -0,0 +1,266 @@
+/*
+    Saved Password Editor, extension for Gecko applications
+    Copyright (C) 2012  Daniel Dawson <danielcdawson at gmail.com>
+
+    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 3 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, see <http://www.gnu.org/licenses/>.
+*/
+
+const Cc = Components.classes,
+      Ci = Components.interfaces,
+      Cu = Components.utils;
+Cu.import("resource://gre/modules/XPCOMUtils.jsm");
+
+var EXPORTED_SYMBOLS = ["SavedPasswordEditor"];
+
+XPCOMUtils.defineLazyGetter(
+  this, "prefs", function ()
+    Cc["@mozilla.org/preferences-service;1"].
+      getService(Ci.nsIPrefService).
+      getBranch("extensions.savedpasswordeditor."));
+XPCOMUtils.defineLazyServiceGetter(
+  this, "pwdSvc",
+  "@mozilla.org/login-manager;1", "nsILoginManager");
+XPCOMUtils.defineLazyServiceGetter(
+  this, "stringSvc",
+  "@mozilla.org/intl/stringbundle;1", "nsIStringBundleService");
+XPCOMUtils.defineLazyServiceGetter(
+  this, "alertsSvc",
+  "@mozilla.org/alerts-service;1", "nsIAlertsService");
+XPCOMUtils.defineLazyServiceGetter(
+  this, "promptSvc",
+  "@mozilla.org/embedcomp/prompt-service;1", "nsIPromptService");
+XPCOMUtils.defineLazyGetter(
+  this, "genStrBundle", function ()
+    stringSvc.createBundle(
+      "chrome://savedpasswordeditor/locale/spe.properties"));
+XPCOMUtils.defineLazyGetter(
+  this, "pmoStrBundle", function ()
+    stringSvc.createBundle(
+      "chrome://savedpasswordeditor/locale/pwdmgrOverlay.properties"));
+
+function el (aWindow, aId) aWindow.document.getElementById(aId)
+
+function showAlert (aMsg) {
+  alertsSvc.showAlertNotification(
+    "chrome://savedpasswordeditor/skin/key32.png",
+    genStrBundle.GetStringFromName("savedpasswordeditor"), aMsg);
+}
+
+var SavedPasswordEditor = {
+  _deleting: false,
+  _signonMap: {},
+
+  openSavedPasswords: function () {
+    var spWin = Cc["@mozilla.org/appshell/window-mediator;1"].
+                  getService(Ci.nsIWindowMediator).
+                  getMostRecentWindow("Toolkit:PasswordManager");
+    if (spWin)
+      spWin.focus();
+    else
+      Cc["@mozilla.org/embedcomp/window-watcher;1"].
+        getService(Ci.nsIWindowWatcher).
+        openWindow(
+          null, "chrome://passwordmgr/content/passwordManager.xul", "",
+          "chrome,titlebar,toolbar,centerscreen,resizable", null);
+  },
+
+  contextMenuShowing: function (aElement) {
+    if (aElement instanceof Ci.nsIDOMHTMLInputElement && aElement.form) {
+      var form = aElement.form;
+    } else
+      return false;
+
+    var curDoc = aElement.ownerDocument;
+    var curLocation = curDoc.defaultView.location;
+    var hostname = curLocation.protocol + "//" + curLocation.host;
+    var passwordField = null;
+    for (var i = 0; i < form.elements.length; i++) {
+      let element = form.elements[i];
+      if (element instanceof Ci.nsIDOMHTMLInputElement
+          && element.type.toLowerCase() == "password") {
+        passwordField = element;
+        break;
+      }
+    }
+    if (!passwordField) return false;
+
+    var usernameField = null;
+    for (i = i - 1; i >= 0; i--) {
+      let element = form.elements[i];
+      if (!element instanceof Ci.nsIDOMHTMLInputElement) continue;
+      let elType = (element.getAttribute("type") || "").toLowerCase();
+      if (!elType || elType == "text" || elType == "email" || elType == "url"
+          || elType == "tel" || elType == "number") {
+        usernameField = element;
+        break;
+      }
+    }
+    if (!usernameField) return false;
+
+    var formAction = form.action;
+    var res = formAction ? /^([0-9-_A-Za-z]+:\/\/[^/]+)\//.exec(formAction)[1]
+                         : hostname;
+
+    this.curInfo = {
+      hostname: hostname,
+      formSubmitURL: res,
+      username: usernameField.value,
+      password: passwordField.value,
+      usernameField: usernameField.name,
+      passwordField: passwordField.name,
+    };
+    return true;
+  },
+
+  saveLoginInfo: function (aWindow, aEvt) {
+    function _finish (aNewSignon) {
+      if (!aNewSignon) return;
+      try {
+        let newSignon = Cc["@mozilla.org/login-manager/loginInfo;1"].
+                        createInstance(Ci.nsILoginInfo);
+        newSignon.init(aNewSignon.hostname, aNewSignon.formSubmitURL,
+                       aNewSignon.httpRealm, aNewSignon.username,
+                       aNewSignon.password, aNewSignon.usernameField,
+                       aNewSignon.passwordField);
+        pwdSvc.addLogin(newSignon);
+        showAlert(genStrBundle.GetStringFromName("logininfosaved"));
+      } catch (e) {
+        promptSvc.alert(
+          aWindow,
+          genStrBundle.GetStringFromName("error"),
+          pmoStrBundle.formatStringFromName("badnewentry", [e.message], 1));
+      }
+    }
+
+    var ret = { newSignon: null, callback: _finish };
+    aWindow.openDialog(
+      "chrome://savedpasswordeditor/content/pwdedit.xul", "",
+      "centerscreen,dependent,dialog,chrome",
+      [this.curInfo], 0, false, ret);
+    this.curInfo = null;
+  },
+
+  _finishEdit: function (aNewSignon) {
+    if (!aNewSignon) return;
+
+    var newSignon = Cc["@mozilla.org/login-manager/loginInfo;1"].
+                    createInstance(Ci.nsILoginInfo);
+    newSignon.init(aNewSignon.hostname, aNewSignon.formSubmitURL,
+                   aNewSignon.httpRealm, aNewSignon.username,
+                   aNewSignon.password, aNewSignon.usernameField,
+                   aNewSignon.passwordField);
+    pwdSvc.modifyLogin(SavedPasswordEditor.oldSignon, newSignon);
+    showAlert(genStrBundle.GetStringFromName("logininfochanged"));
+  },
+
+  _handleDisambigSelection: function (aEvt) {
+    var spe = SavedPasswordEditor, target = aEvt.target,
+        window = target.ownerDocument.defaultView,
+        dp = el(window, "savedpasswordeditor-disambig-popup");
+
+    if (spe._deleting) {
+      try {
+        pwdSvc.removeLogin(spe._signonMap[target.label]);
+        showAlert(genStrBundle.GetStringFromName("logininfodeleted"));
+      } catch (e) {
+        promptSvc.alert(
+          window,
+          genStrBundle.GetStringFromName("error"),
+          genStrBundle.formatStringFromName("failed", [e.message], 1));
+      }
+    } else
+      window.openDialog(
+        "chrome://savedpasswordeditor/content/pwdedit.xul", "",
+        "centerscreen,dependent,dialog,chrome",
+        [spe._signonMap[target.label]], 1, false,
+        { newSignon: null, callback: spe._finishEdit });
+
+    spe._deleting = false;
+  },
+
+  _showDisambig: function (aWindow, aSignons) {
+    var dp = el(aWindow, "savedpasswordeditor-disambig-popup");
+    while (dp.hasChildNodes()) dp.removeChild(dp.firstChild);
+
+    this._signonMap = {};
+    for each (let signon in aSignons) {
+      this._signonMap[signon.username] = signon;
+      let mi = aWindow.document.createElement("menuitem");
+      mi.setAttribute("label", signon.username);
+      dp.appendChild(mi);
+    }
+
+    dp.addEventListener("command", this._handleDisambigSelection, false);
+    var spe = this;
+    dp.addEventListener(
+      "popuphidden",
+      function _phHandler () {
+        dp.removeEventListener("command", spe._handleDisambigSelection, false);
+        dp.removeEventListener("popuphidden", _phHandler, false);
+      },
+      false);
+
+    var bo = el(aWindow, "contentAreaContextMenu").boxObject,
+        x = bo.x, y = bo.y;
+    aWindow.setTimeout(
+      function () { dp.openPopup(null, null, x, y, true, false, null); }, 1);
+  },
+
+  editLoginInfo: function (aWindow) {
+    var signons = pwdSvc.findLogins({}, this.curInfo.hostname,
+                                    this.curInfo.formSubmitURL, null);
+    this.curInfo = null;
+    this._deleting = false;
+
+    if (signons.length == 0) {
+      promptSvc.alert(
+        aWindow,
+        genStrBundle.GetStringFromName("error"),
+        genStrBundle.GetStringFromName("nologinstoedit"));
+    } else if (signons.length == 1) {
+      this.oldSignon = signons[0];
+      aWindow.openDialog(
+        "chrome://savedpasswordeditor/content/pwdedit.xul", "",
+        "centerscreen,dependent,dialog,chrome",
+        [signons[0]], 1, false,
+        { newSignon: null, callback: this._finishEdit });
+    } else
+      this._showDisambig(aWindow, signons);
+  },
+
+  deleteLoginInfo: function (aWindow) {
+    var signons = pwdSvc.findLogins({}, this.curInfo.hostname,
+                                    this.curInfo.formSubmitURL, null);
+    this.curInfo = null;
+    this._deleting = true;
+
+    if (signons.length == 0) {
+      promptSvc.alert(
+        aWindow,
+        genStrBundle.GetStringFromName("error"),
+        genStrBundle.GetStringFromName("nologinstodelete"));
+    } else if (signons.length == 1) {
+      try {
+        pwdSvc.removeLogin(signons[0]);
+        showAlert(genStrBundle.GetStringFromName("logininfodeleted"));
+      } catch (e) {
+        promptSvc.alert(
+          aWindow,
+          genStrBundle.GetStringFromName("error"),
+          genStrBundle.formatStringFromName("failed", [e.message], 1));
+      }
+    } else
+      this._showDisambig(aWindow, signons);
+  },
+};
diff --git a/content/contextmenuOverlay.js b/content/contextmenuOverlay.js
new file mode 100644
index 0000000..aa60e42
--- /dev/null
+++ b/content/contextmenuOverlay.js
@@ -0,0 +1,50 @@
+/*
+    Saved Password Editor, extension for Gecko applications
+    Copyright (C) 2012  Daniel Dawson <danielcdawson at gmail.com>
+
+    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 3 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, see <http://www.gnu.org/licenses/>.
+*/
+
+Components.utils.import(
+  "resource://savedpasswordeditor/SavedPasswordEditor.jsm");
+
+addEventListener(
+  "load",
+  function () {
+    var prefix = "savedpasswordeditor-";
+
+    function showItem (aId) {
+      document.getElementById(prefix + aId).hidden = false;
+    }
+
+    function hideItem (aId) {
+      document.getElementById(prefix + aId).hidden = true;
+    }
+
+    function popupshowingHandler () {
+      let idList = ["ctxmenuseparator",
+                    "savelogininfo", "editlogininfo", "deletelogininfo"];
+      let target = gContextMenu.target;
+      idList.forEach(
+        SavedPasswordEditor.contextMenuShowing(target) ? showItem : hideItem);
+    }
+
+    function popuphiddenHandler () {
+      SavedPasswordEditor.contextMenuHidden();
+    }
+
+    var ctxMenu = document.getElementById("contentAreaContextMenu");
+    ctxMenu.addEventListener("popupshowing", popupshowingHandler, false);
+  },
+  false);
diff --git a/content/contextmenuOverlay.xul b/content/contextmenuOverlay.xul
new file mode 100644
index 0000000..29bb742
--- /dev/null
+++ b/content/contextmenuOverlay.xul
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+    Saved Password Editor, extension for Gecko applications
+    Copyright (C) 2012  Daniel Dawson <danielcdawson at gmail.com>
+
+    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 3 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, see <http://www.gnu.org/licenses/>.
+-->
+
+<!DOCTYPE overlay SYSTEM
+          "chrome://savedpasswordeditor/locale/browserOverlay.dtd">
+
+<overlay xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
+  <script type="application/javascript"
+          src="chrome://savedpasswordeditor/content/contextmenuOverlay.js"/>
+
+  <menupopup id="contentAreaContextMenu">
+    <menuseparator id="savedpasswordeditor-ctxmenuseparator"
+                   insertbefore="context-sep-selectall"/>
+    <menuitem id="savedpasswordeditor-savelogininfo"
+              insertbefore="context-sep-selectall"
+              label="&ctx_savelogininfo.label;"
+              accesskey="&ctx_savelogininfo.accesskey;"
+              tooltiptext="&ctx_savelogininfo.tooltip;"
+              oncommand="SavedPasswordEditor.saveLoginInfo(window);"/>
+    <menuitem id="savedpasswordeditor-editlogininfo"
+              insertbefore="context-sep-selectall"
+              label="&ctx_editlogininfo.label;"
+              accesskey="&ctx_editlogininfo.accesskey;"
+              tooltiptext="&ctx_editlogininfo.tooltip;"
+              oncommand="SavedPasswordEditor.editLoginInfo(window);"/>
+    <menuitem id="savedpasswordeditor-deletelogininfo"
+              insertbefore="context-sep-selectall"
+              label="&ctx_deletelogininfo.label;"
+              accesskey="&ctx_deletelogininfo.accesskey;"
+              tooltiptext="&ctx_deletelogininfo.tooltip;"
+              oncommand="SavedPasswordEditor.deleteLoginInfo(window);"/>
+  </menupopup>
+
+  <popupset id="mainPopupSet">
+    <menupopup id="savedpasswordeditor-disambig-popup"/>
+  </popupset>
+</overlay>
diff --git a/content/firstrun.jsm b/content/firstrun.jsm
new file mode 100644
index 0000000..c1a4e62
--- /dev/null
+++ b/content/firstrun.jsm
@@ -0,0 +1,129 @@
+/*
+    Saved Password Editor, extension for Gecko applications
+    Copyright (C) 2014  Daniel Dawson <danielcdawson at gmail.com>
+
+    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 3 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, see <http://www.gnu.org/licenses/>.
+*/
+
+var EXPORTED_SYMBOLS = [];
+
+{
+  const Cc = Components.classes,
+        Ci = Components.interfaces,
+        Cu = Components.utils,
+        WINDOWID = "chrome://savedpasswordeditor/content/pwdedit.xul#pwdedit",
+        FIREFOX = "{ec8030f7-c20a-464f-9b0e-13a3a9e97384}",
+        SEAMONKEY = "{92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a}",
+        THUNDERBIRD = "{3550f703-e582-4d05-9a08-453d09bdfdc6}",
+        PREFNAME = "currentVersion",
+        THISVERSION = "2.7.2",
+        UNPERSISTVERSION = "2.6pre1",
+        WELCOMEVERSION = "2.5pre1",
+        CONTENT = "chrome://savedpasswordeditor/content/",
+        WELCOMEURL = CONTENT + "welcome.xhtml",
+        WELCOMEURL_SM = CONTENT + "welcome_sm.xhtml";
+
+  function unpersist_dimensions () {
+    // Remove previously persisted width and height for password editor window,
+    // so it can be dynamically sized when opened.
+    var rdfSvc = Cc["@mozilla.org/rdf/rdf-service;1"].
+                 getService(Ci.nsIRDFService),
+        localStore = rdfSvc.GetDataSource("rdf:local-store"),
+        src = rdfSvc.GetResource(WINDOWID);
+
+    var arc = rdfSvc.GetResource("width");
+    var valNode = localStore.GetTarget(src, arc, true);
+    if (valNode) localStore.Unassert(src, arc, valNode);
+
+    arc = rdfSvc.GetResource("height");
+    valNode = localStore.GetTarget(src, arc, true);
+    if (valNode) localStore.Unassert(src, arc, valNode);
+  }
+
+  let timer;
+
+  function welcome () {
+    delete timer;
+    var wm = Cc["@mozilla.org/appshell/window-mediator;1"].
+             getService(Ci.nsIWindowMediator),
+        appId = Cc["@mozilla.org/xre/app-info;1"].
+                getService(Ci.nsIXULAppInfo).ID;
+
+    switch (appId) {
+    case FIREFOX:
+      var curWin = wm.getMostRecentWindow("navigator:browser");
+      curWin.gBrowser.selectedTab = curWin.gBrowser.addTab(WELCOMEURL);
+      break;
+
+    case SEAMONKEY:
+      var curWin = wm.getMostRecentWindow("navigator:browser");
+
+      if (!curWin) {
+        var cmdLine = {
+          handleFlagWithParam: function (flag, caseSensitive)
+            flag == "browser" ? WELCOMEURL_SM : null,
+          handleFlag: function (flag, caseSensitive) false,
+          preventDefault: true
+        };
+
+        const clh_prefix = 
+          "@mozilla.org/commandlinehandler/general-startup;1";
+        Cc[clh_prefix + "?type=browser"].
+          getService(Ci.nsICommandLineHandler).handle(cmdLine);
+      } else
+        curWin.gBrowser.selectedTab = curWin.gBrowser.addTab(WELCOMEURL_SM);
+      break;
+
+    case THUNDERBIRD:
+      var curWin = wm.getMostRecentWindow("mail:3pane");
+      curWin.focus();
+      curWin.document.getElementById("tabmail").openTab(
+        "contentTab", { contentPage: WELCOMEURL });
+      break;
+    }
+  }
+
+  function set_welcome () {
+    try {
+      Cu.import("resource:///modules/CustomizableUI.jsm", {});
+      return;  /* Don't do it on Australis */
+    } catch (e) {}
+
+    timer = Cc["@mozilla.org/timer;1"].createInstance(Ci.nsITimer);
+    timer.initWithCallback({ notify: function () { welcome(); } },
+                           500, Ci.nsITimer.TYPE_ONE_SHOT);
+  }
+
+  {
+    let prefs = Cc["@mozilla.org/preferences-service;1"].
+                getService(Ci.nsIPrefService).
+                getBranch("extensions.savedpasswordeditor.");
+
+    if (prefs.prefHasUserValue(PREFNAME)) {
+      let vc = Cc["@mozilla.org/xpcom/version-comparator;1"].
+               getService(Ci.nsIVersionComparator),
+          lastVersion = prefs.getCharPref(PREFNAME);
+      if (vc.compare(lastVersion, UNPERSISTVERSION) < 0)
+        unpersist_dimensions();
+      if (vc.compare(lastVersion, WELCOMEVERSION) < 0)
+        set_welcome();
+      if (vc.compare(lastVersion, THISVERSION) < 0)
+        prefs.setCharPref(PREFNAME, THISVERSION);
+    } else {
+      unpersist_dimensions();
+      set_welcome();
+      prefs.setCharPref(PREFNAME, THISVERSION);
+    }
+  }
+}
diff --git a/content/firstrunOverlay.xul b/content/firstrunOverlay.xul
new file mode 100644
index 0000000..97d7cdb
--- /dev/null
+++ b/content/firstrunOverlay.xul
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+    Saved Password Editor, extension for Gecko applications
+    Copyright (C) 2012  Daniel Dawson <danielcdawson at gmail.com>
+
+    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 3 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, see <http://www.gnu.org/licenses/>.
+-->
+
+<overlay
+    xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
+  <script type="application/javascript"><![CDATA[
+    window.addEventListener(
+      "load",
+      function _loadHandler () {
+        Components.utils.import(
+          "resource://savedpasswordeditor/firstrun.jsm");
+        window.removeEventListener("load", _loadHandler, false);
+      },
+      false);
+  ]]></script>
+</overlay>
diff --git a/content/menubarOverlay.js b/content/menubarOverlay.js
new file mode 100644
index 0000000..8719834
--- /dev/null
+++ b/content/menubarOverlay.js
@@ -0,0 +1,84 @@
+/*
+    Saved Password Editor, extension for Gecko applications
+    Copyright (C) 2012  Daniel Dawson <danielcdawson at gmail.com>
+
+    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 3 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, see <http://www.gnu.org/licenses/>.
+*/
+
+window.addEventListener(
+  "load",
+  function init_menuitemDynamic (evt) {
+    const prefBranch =
+      Components.classes["@mozilla.org/preferences-service;1"].
+      getService(Components.interfaces.nsIPrefService).
+      getBranch("extensions.savedpasswordeditor.");
+
+    function menuitemDynamic (evt) {
+      var mi = document.getElementById("savedpasswordeditor-toolsmenuitem");
+      var renameTo =
+        prefBranch.getComplexValue(
+          "rename_menuitem_to", Components.interfaces.nsISupportsString).data;
+      if (renameTo) {
+        mi.setAttribute("label", renameTo);
+        mi.removeAttribute("tooltiptext");
+        mi.removeAttribute("accesskey");
+        mi.setAttribute("style", "list-style-image:none;");
+      } else {
+        mi.setAttribute("label", mi.getAttribute("standardlabel"));
+        mi.setAttribute("tooltiptext", mi.getAttribute("standardtooltiptext"));
+        mi.setAttribute("accesskey", mi.getAttribute("standardaccesskey"));
+        mi.removeAttribute("style");
+      }
+      var hidden = !prefBranch.getBoolPref("display_menuitem");
+      mi.hidden = hidden;
+      return true;
+    }
+
+    function register_menuitemDynamic (popup) {
+      if (popup)
+        popup.addEventListener("popupshowing", menuitemDynamic, false);
+    }
+
+    function appmenuitemDynamic (evt) {
+      var mi = document.getElementById("savedpasswordeditor-appmenuitem");
+      var renameTo =
+        prefBranch.getComplexValue(
+          "rename_menuitem_to", Components.interfaces.nsISupportsString).data;
+      if (renameTo) {
+        mi.setAttribute("label", renameTo);
+        mi.removeAttribute("tooltiptext");
+        mi.removeAttribute("accesskey");
+        mi.setAttribute("style", "list-style-image:none;");
+      } else {
+        mi.setAttribute("label", mi.getAttribute("standardlabel"));
+        mi.setAttribute("tooltiptext", mi.getAttribute("standardtooltiptext"));
+        mi.setAttribute("accesskey", mi.getAttribute("standardaccesskey"));
+        mi.removeAttribute("style");
+      }
+      var hidden = !prefBranch.getBoolPref("display_menuitem");
+      mi.hidden = hidden;
+      return true;
+    }
+
+    function register_appmenuitemDynamic (popup) {
+      if (popup)
+        popup.addEventListener("popupshowing", appmenuitemDynamic, false);
+    }
+
+    register_menuitemDynamic(document.getElementById("menu_ToolsPopup"));
+    register_menuitemDynamic(document.getElementById("taskPopup"));
+    register_appmenuitemDynamic(document.getElementById("appmenu-popup"));
+    window.removeEventListener("load", init_menuitemDynamic, false);
+  },
+  false);
diff --git a/content/menubarOverlay.xul b/content/menubarOverlay.xul
new file mode 100644
index 0000000..5813806
--- /dev/null
+++ b/content/menubarOverlay.xul
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+    Saved Password Editor, extension for Gecko applications
+    Copyright (C) 2012  Daniel Dawson <danielcdawson at gmail.com>
+
+    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 3 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, see <http://www.gnu.org/licenses/>.
+-->
+
+<!DOCTYPE overlay SYSTEM
+          "chrome://savedpasswordeditor/locale/browserOverlay.dtd">
+
+<overlay xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
+  <script type="application/javascript"><![CDATA[
+    Components.utils.import(
+      "resource://savedpasswordeditor/SavedPasswordEditor.jsm");
+  ]]></script>
+  <menupopup id="menu_ToolsPopup">
+    <menuitem id="savedpasswordeditor-toolsmenuitem"
+              class="menuitem-iconic"
+              standardlabel="&savedpasswords.label;"
+              standardtooltiptext="&savedpasswords.tooltip;"
+              standardaccesskey="&savedpasswords.accesskey;"
+              oncommand="SavedPasswordEditor.openSavedPasswords();"/>
+  </menupopup>
+  <menupopup id="taskPopup">
+    <menuitem id="savedpasswordeditor-toolsmenuitem"
+              class="menuitem-iconic"
+              standardlabel="&savedpasswords.label;"
+              standardtooltiptext="&savedpasswords.tooltip;"
+              standardaccesskey="&savedpasswords.accesskey;"
+              oncommand="SavedPasswordEditor.openSavedPasswords();"/>
+  </menupopup>
+  <menupopup id="tools-menupopup">
+    <menuitem id="savedpasswordeditor-toolsmenuitem"
+              class="menuitem-iconic"
+              standardlabel="&savedpasswords.label;"
+              standardtooltiptext="&savedpasswords.tooltip;"
+              standardaccesskey="&savedpasswords.accesskey;"
+              oncommand="SavedPasswordEditor.openSavedPasswords();"/>
+  </menupopup>
+  <vbox id="appmenuSecondaryPane">
+    <menuitem id="savedpasswordeditor-appmenuitem"
+              class="menuitem-iconic"
+              standardlabel="&savedpasswords.label;"
+              standardtooltiptext="&savedpasswords.tooltip;"
+              insertafter="appmenu_addons"
+              oncommand="SavedPasswordEditor.openSavedPasswords();"/>
+  </vbox>
+  <script type="text/javascript"
+          src="chrome://savedpasswordeditor/content/menubarOverlay.js"/>
+</overlay>
diff --git a/content/prefwindow.js b/content/prefwindow.js
new file mode 100644
index 0000000..af7a25a
--- /dev/null
+++ b/content/prefwindow.js
@@ -0,0 +1,52 @@
+/*
+    Saved Password Editor, extension for Gecko applications
+    Copyright (C) 2012  Daniel Dawson <danielcdawson at gmail.com>
+
+    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 3 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, see <http://www.gnu.org/licenses/>.
+*/
+
+const Cc = Components.classes, Ci = Components.interfaces;
+
+function el (aEl) document.getElementById(aEl);
+
+function toggle_displayMenuitem () {
+  var rmi_lbl = el("renameMenuitem_lbl"), rmi_text = el("renameMenuitem_text");
+  if (el("displayMenuitem_ck").checked)
+    rmi_lbl.disabled = rmi_text.disabled = false;
+  else
+    rmi_lbl.disabled = rmi_text.disabled = true;
+}
+
+function toggle_alwaysShowPasswords () {
+  var fp_ck = el("forcepromptformasterpassword_ck"),
+      sp_rg = el("showPassword_rg");
+
+  if (el("alwaysshowpasswords_ck").checked) {
+    fp_ck.disabled = false;
+    sp_rg.disabled = true;
+  } else {
+    fp_ck.disabled = true;
+    sp_rg.disabled = false;
+  }
+}
+
+if (Cc["@mozilla.org/xre/app-info;1"].getService(Ci.nsIXULAppInfo).ID ==
+    "{a79fe89b-6662-4ff4-8e88-09950ad4dfde}") {
+  el("displayMenuitem_ck").hidden =
+    el("renameMenuitem_lbl").hidden =
+    el("renameMenuitem_text").hidden = true;
+} else
+  toggle_displayMenuitem();
+
+toggle_alwaysShowPasswords();
diff --git a/content/prefwindow.xul b/content/prefwindow.xul
new file mode 100644
index 0000000..3d00c9f
--- /dev/null
+++ b/content/prefwindow.xul
@@ -0,0 +1,84 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+    Saved Password Editor, extension for Gecko applications
+    Copyright (C) 2013  Daniel Dawson <danielcdawson at gmail.com>
+
+    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 3 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, see <http://www.gnu.org/licenses/>.
+-->
+
+<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
+
+<!DOCTYPE prefwindow SYSTEM
+          "chrome://savedpasswordeditor/locale/prefwindow.dtd">
+
+<prefwindow
+    xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
+    id="savedpasswordeditor-prefwindow" title="&prefwindow.title;">
+  <prefpane>
+    <preferences>
+      <preference id="pref-display-menuitem"
+                  name="extensions.savedpasswordeditor.display_menuitem"
+                  type="bool"/>
+      <preference id="pref-rename-menuitem-to"
+                  name="extensions.savedpasswordeditor.rename_menuitem_to"
+                  type="string"/>
+      <preference id="pref-preselect-current-site"
+                  name="extensions.savedpasswordeditor.preselect_current_site"
+                  type="bool"/>
+      <preference id="pref-alwaysshowpasswords"
+                  name="extensions.savedpasswordeditor.always_show_passwords"
+                  type="bool"/>
+      <preference id="pref-forcepromptformasterpassword"
+          name="extensions.savedpasswordeditor.force_prompt_for_masterPassword"
+                  type="bool"/>
+      <preference id="pref-showpassword"
+                  name="extensions.savedpasswordeditor.showpassword"
+                  type="int"/>
+    </preferences>
+    <checkbox id="displayMenuitem_ck" label="&displayMenuitem.label;"
+              tooltiptext="&displayMenuitem.tooltip;"
+              preference="pref-display-menuitem"
+              oncommand="toggle_displayMenuitem();"/>
+    <hbox id="renameMenuitem_row" align="center" class="indent">
+      <label id="renameMenuitem_lbl" value="&renameMenuitemTo.label;"
+             tooltiptext="&renameMenuitemTo.tooltip;"/>
+      <textbox id="renameMenuitem_text"
+               tooltiptext="&renameMenuitemTo.tooltip;"
+               preference="pref-rename-menuitem-to"/>
+    </hbox>
+    <checkbox id="preselectcurrentsite_ck" label="&preselectCurrentSite.label;"
+              tooltiptext="&preselectCurrentSite.tooltip;"
+              preference="pref-preselect-current-site"/>
+    <checkbox id="alwaysshowpasswords_ck" label="&alwaysShowPasswords.label;"
+              tooltiptext="&alwaysShowPasswords.tooltip;"
+              preference="pref-alwaysshowpasswords"
+              oncommand="toggle_alwaysShowPasswords();"/>
+    <checkbox id="forcepromptformasterpassword_ck" class="indent"
+              label="&alwaysPromptForMasterPassword.label;"
+              tooltiptext="&alwaysPromptForMasterPassword.tooltip;"
+              preference="pref-forcepromptformasterpassword"/>
+    <groupbox>
+      <caption label="&passwordfield_caption.label;"/>
+      <radiogroup id="showPassword_rg" preference="pref-showpassword">
+        <radio label="&passwordfield_alwayshide.label;" value="0"/>
+        <radio label="&passwordfield_alwaysshow.label;" value="1"/>
+        <radio label="&passwordfield_rememberlast.label;" value="2"
+               tooltiptext="&passwordfield_rememberlast.tooltip;"/>
+        <radio label="&passwordfield_followspwin.label;" value="3"
+               tooltiptext="&passwordfield_followspwin.tooltip;"/>
+      </radiogroup>
+    </groupbox>
+  </prefpane>
+  <script type="text/javascript" src="prefwindow.js"/>
+</prefwindow>
diff --git a/content/pwdedit.js b/content/pwdedit.js
new file mode 100644
index 0000000..eebe56d
--- /dev/null
+++ b/content/pwdedit.js
@@ -0,0 +1,395 @@
+/*
+    Saved Password Editor, extension for Gecko applications
+    Copyright (C) 2013  Daniel Dawson <danielcdawson at gmail.com>
+
+    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 3 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, see <http://www.gnu.org/licenses/>.
+*/
+
+function el (name) document.getElementById(name);
+
+const Cc = Components.classes,
+      Ci = Components.interfaces,
+      prefs = Cc["@mozilla.org/preferences-service;1"].
+              getService(Ci.nsIPrefService).
+              getBranch("extensions.savedpasswordeditor."),
+      THUNDERBIRD = "{3550f703-e582-4d05-9a08-453d09bdfdc6}",
+      CONKEROR = "{a79fe89b-6662-4ff4-8e88-09950ad4dfde}";
+
+var pwdCurHidden, genStrBundle, peStrBundle, haveOldSignon,
+    oldSignons, editorMode, loginForms, curLoginIdx, oldUsername, oldPassword;
+
+window.addEventListener(
+  "DOMContentLoaded",
+  function dclHandler (ev) {
+    var pwdField = el("password_text");
+    pwdCurHidden = (pwdField.type == "password");
+    pwdField.setAttribute("type", "password");
+    window.removeEventListener("DOMContentLoaded", dclHandler, false);
+  },
+  false);
+
+window.addEventListener(
+  "load",
+  function loadHandler (ev) {
+    genStrBundle = el("general-string-bundle");
+    peStrBundle = el("pwdedit-string-bundle");
+
+    oldSignons = window.arguments[0];
+    editorMode = window.arguments[1];
+
+    haveOldSignon = oldSignons.length > 0;
+    if (!haveOldSignon)
+      oldSignons[0] = { hostname: "", formSubmitURL: "", httpRealm: "",
+                        username: "", password: "", usernameField: "",
+                        passwordField: "" };
+
+    if (editorMode == 0)
+      el("header").setAttribute("title", peStrBundle.getString("newlogin"));
+    else if (editorMode == 2)
+      el("header").setAttribute("title", peStrBundle.getString("clonelogin"));
+    else
+      el("header").setAttribute(
+        "title", peStrBundle.getString(oldSignons.length > 1 ? "editmultlogin"
+                                                           : "editlogin"));
+
+    var compositeSignon = intersectSignonProps(oldSignons);
+
+    var props = [ "hostname", "formSubmitURL", "httpRealm",
+                  "username", "password", "usernameField", "passwordField" ];
+    for (let i in props) {
+      let propName = props[i], tbox = el(propName + "_text");
+      if (compositeSignon[propName] !== undefined) {
+        tbox.indefinite = false;
+        tbox.autoreindef = false;
+        tbox.value = compositeSignon[propName];
+      } else {
+        tbox.indefinite = true;
+        tbox.autoreindef = true;
+      }
+    }
+
+    if (oldSignons.length > 1) {
+      el("type_group").style.display = "none";
+      el("type_caption").style.display = "none";
+    } else {
+      let type;
+      if (!oldSignons[0].httpRealm)
+        type = 0;
+      else
+        type = 1;
+      el("type_group").selectedIndex = type;
+
+      handle_typeSelect();
+
+      if (editorMode == 1)
+        el("type_group").disabled = true;
+    }
+
+    window.setTimeout(afterLoadHandler, 1);
+    window.removeEventListener("load", loadHandler, false);
+  },
+  false);
+
+function afterLoadHandler () {
+  var pwdShownInSPWin = window.arguments[2];
+  var alwaysShowPwds = prefs.getBoolPref("always_show_passwords");
+  var showpwd = prefs.getIntPref("showpassword");
+  var pwdField = el("password_text");
+  var showpwdButton = el("showPassword_btn");
+  var hidepwdButton = el("hidePassword_btn");
+
+  if (alwaysShowPwds && (pwdShownInSPWin || (haveOldSignon ? login() : true)))
+    pwdCurHidden = false;
+  else switch (showpwd) {
+  case 0:
+    pwdCurHidden = true;
+    break;
+  case 1:
+    if (pwdShownInSPWin || (haveOldSignon ? login() : true))
+      pwdCurHidden = false;
+    break;
+  case 2:
+    if (!pwdCurHidden && !pwdShownInSPWin
+        && (haveOldSignon ? !login() : false))
+      pwdCurHidden = true;
+    break;
+  case 3:
+    pwdCurHidden = !pwdShownInSPWin;
+    break;
+  }
+  if (!pwdCurHidden) pwdField.removeAttribute("type");
+
+  if (pwdField.hasAttribute("type") && pwdField.type == "password") {
+    showpwdButton.hidden = false;
+    hidepwdButton.hidden = true;
+  } else {
+    showpwdButton.hidden = true;
+    hidepwdButton.hidden = false;
+  }
+}
+
+function intersectSignonProps (signons) {
+  var intersection = new Object();
+  var propList = [ "hostname", "formSubmitURL", "httpRealm", "username",
+                   "password", "usernameField", "passwordField" ];
+  for (var i = 0; i < signons.length; i++) {
+    let signon = signons[i];
+    for (var j = 0; j < propList.length; j++) {
+      let prop = propList[j];
+      if (!intersection.hasOwnProperty(prop))
+        intersection[prop] = signon[prop] !== undefined ? signon[prop] : null;
+      else if (signon[prop] != intersection[prop])
+        intersection[prop] = undefined;
+    }
+  }
+
+  return intersection;
+}
+
+function login () {
+  var token = Components.classes["@mozilla.org/security/pk11tokendb;1"].
+                createInstance(Components.interfaces.nsIPK11TokenDB).
+                getInternalKeyToken();
+  if (!token.checkPassword("")) {
+    try {
+      token.login(true);
+    } catch (e) { }
+    return token.isLoggedIn();
+  }
+  return true;
+}
+
+function handle_typeSelect () {
+  var idx = el("type_group").selectedIndex;
+  if (idx == 0) {
+    el("formSubmitURL_lbl").disabled = el("formSubmitURL_text").disabled =
+      el("usernameField_lbl").disabled = el("usernameField_text").disabled =
+      el("passwordField_lbl").disabled = el("passwordField_text").disabled =
+      el("guessFromPage_btn").disabled = false;
+    el("httpRealm_lbl").disabled = el("httpRealm_text").disabled = true;
+  } else {
+    el("formSubmitURL_lbl").disabled = el("formSubmitURL_text").disabled =
+      el("usernameField_lbl").disabled = el("usernameField_text").disabled =
+      el("passwordField_lbl").disabled = el("passwordField_text").disabled =
+      el("guessFromPage_btn").disabled = true;
+    el("httpRealm_lbl").disabled = el("httpRealm_text").disabled = false;
+  }
+}
+
+function togglePasswordView () {
+  var focusTarget;
+  var pwdField = el("password_text");
+  var showpwdButton = el("showPassword_btn");
+  var hidepwdButton = el("hidePassword_btn");
+  if (pwdField.type == "password") {
+    if (pwdField.value != "" && !login()) return;
+    pwdField.removeAttribute("type");
+    showpwdButton.hidden = true;
+    hidepwdButton.hidden = false;
+    focusTarget = hidepwdButton;
+  } else {
+    pwdField.setAttribute("type", "password");
+    showpwdButton.hidden = false;
+    hidepwdButton.hidden = true;
+    focusTarget = showpwdButton;
+  }
+
+  window.setTimeout(function () { focusTarget.focus(); }, 1);
+}
+
+function guessParameters () {
+  function walkTree (win) {
+    var curDoc = win.document;
+    if (!(curDoc instanceof HTMLDocument)) return;
+
+    // Get the host prefix;
+    var curLocation = win.location;
+    var hostname = curLocation.protocol + "//" + curLocation.host;
+
+    // Locate likely login forms and their fields
+    var forms = curDoc.evaluate("//xhtml:form", curDoc, _htmlNamespaceResolver,
+                                XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
+    for (var i = 0; i < forms.snapshotLength; i++) {
+      let form = forms.snapshotItem(i), pwdField = null, j;
+      for (j = 0; j < form.elements.length; j++) {
+        let element = form.elements[j];
+        if (element instanceof Ci.nsIDOMHTMLInputElement
+            && element.type == "password") {
+          pwdField = element;
+          break;
+        }
+      }
+      if (!pwdField) continue;
+
+      let unameField = null;
+      for (j = j - 1; j >= 0; j--) {
+        let element = form.elements[j];
+        if (!element instanceof Ci.nsIDOMHTMLInputElement) continue;
+        let elType = (element.getAttribute("type") || "").toLowerCase();
+        if (!elType || elType == "text" || elType == "email" || elType == "url"
+            || elType == "tel" || elType == "number") {
+          unameField = element;
+          break;
+        }
+      }
+      if (!unameField) continue;
+
+      // Construct the submit prefix
+      let formAction = form.getAttribute("action");
+      let res = /^([0-9-_A-Za-z]+:\/\/[^/]+)\//.exec(formAction);
+      loginForms.push({
+        hostname: hostname, formSubmitURL: res ? res[1] : hostname,
+        username: unameField.value, password: pwdField.value,
+        usernameField: unameField.getAttribute("name"),
+        passwordField: pwdField.getAttribute("name") });
+    }
+
+    // See if any frame or iframe contains a login form
+    var frames = win.frames;
+    for (var i = 0; i < frames.length; i++) {
+      walkTree(frames[i]);
+    }
+  }
+
+  // Locate the browser object for the last seen tab
+  var curWin =
+      Cc["@mozilla.org/appshell/window-mediator;1"].
+      getService(Ci.nsIWindowMediator).
+      getMostRecentWindow("navigator:browser").getBrowser().contentWindow;
+
+  // Attempt to find login form(s)
+  loginForms = [];
+  oldUsername = el("username_text").value;
+  oldPassword = el("password_text").value;
+
+  walkTree(curWin);
+  if (loginForms.length == 0) {
+    Cc["@mozilla.org/embedcomp/prompt-service;1"].
+      getService(Ci.nsIPromptService).
+      alert(window, genStrBundle.getString("error"),
+            peStrBundle.getString("nologinform"));
+    return;
+  }
+
+  if (loginForms.length > 1) {
+    el("prevForm_btn").hidden = false;
+    el("nextForm_btn").hidden = false;
+  } else {
+    el("prevForm_btn").hidden = true;
+    el("nextForm_btn").hidden = true;
+  }
+
+  _fillFromForm(0);
+}
+
+function _htmlNamespaceResolver (aPrefix)
+  aPrefix == "xhtml" ? "http://www.w3.org/1999/xhtml" : null
+
+function _fillFromForm (aIdx) {
+  curLoginIdx = aIdx;
+  var loginForm = loginForms[aIdx];
+  el("hostname_text").value = loginForm.hostname;
+  el("formSubmitURL_text").value = loginForm.formSubmitURL;
+  el("usernameField_text").value = loginForm.usernameField;
+  el("passwordField_text").value = loginForm.passwordField;
+  if (loginForm.password == "") {
+    el("username_text").value = oldUsername;
+    el("password_text").value = oldPassword;
+  } else {
+    el("username_text").value = loginForm.username;
+    el("password_text").value = loginForm.password;
+  }
+
+  for each (let prfx in ["hostname", "formSubmitURL", "username", "password",
+                         "usernameField", "passwordField"]) {
+    let chgEvt = document.createEvent("Event");
+    chgEvt.initEvent("change", true, true);
+    el(prfx + "_text").dispatchEvent(chgEvt);
+  }
+
+  if (curLoginIdx == 0)
+    el("prevForm_btn").disabled = true;
+  else
+    el("prevForm_btn").disabled = false;
+
+  if (curLoginIdx == loginForms.length - 1)
+    el("nextForm_btn").disabled = true;
+  else
+    el("nextForm_btn").disabled = false;
+}
+
+function prevForm () {
+  if (curLoginIdx > 0) _fillFromForm(curLoginIdx - 1);
+}
+
+function nextForm () {
+  if (curLoginIdx < loginForms.length - 1) _fillFromForm(curLoginIdx + 1);
+}
+
+function setNewSignon () {
+  var hostname = el("hostname_text"),
+      formSubmitURL = el("formSubmitURL_text"),
+      httpRealm = el("httpRealm_text"),
+      username = el("username_text"),
+      password = el("password_text"),
+      usernameField = el("usernameField_text"),
+      passwordField = el("passwordField_text");
+  var newProps = {
+    hostname: hostname.qvalue,
+    username: username.qvalue,
+    password: password.qvalue,
+  };
+
+  if (oldSignons.length > 1)
+    var type = -1;
+  else
+    var type = el("type_group").selectedIndex;
+
+  if (type == -1) {
+    newProps.formSubmitURL =
+      formSubmitURL.indefinite ? undefined : formSubmitURL.qvalue;
+    newProps.httpRealm =
+      httpRealm.indefinite ? undefined : httpRealm.qvalue;
+    newProps.usernameField =
+      usernameField.indefinite ? undefined : usernameField.qvalue;
+    newProps.passwordField =
+      passwordField.indefinite ? undefined : passwordField.qvalue;
+  } else if (type == 0) {
+    newProps.formSubmitURL = formSubmitURL.qvalue;
+    newProps.httpRealm = null;
+    newProps.usernameField = usernameField.qvalue;
+    newProps.passwordField = passwordField.qvalue;
+  } else {
+    newProps.formSubmitURL = null;
+    newProps.httpRealm = httpRealm.qvalue;
+    newProps.usernameField = newProps.passwordField = "";
+  }
+
+  if (oldSignons.length > 1 && newProps.hostname !== undefined
+      && newProps.username !== undefined
+      && (newProps.formSubmitURL !== undefined || newProps.httpRealm !== undefined)) {
+    Cc["@mozilla.org/embedcomp/prompt-service;1"].
+      getService(Ci.nsIPromptService).
+      alert(window, genStrBundle.getString("error"),
+            peStrBundle.getString("multduplogins"));
+    return false;
+  }
+
+  if (window.arguments[3].callback)
+    window.arguments[3].callback(newProps);
+  else
+    window.arguments[3].newSignon = newProps;
+
+  return true;
+}
diff --git a/content/pwdedit.xul b/content/pwdedit.xul
new file mode 100644
index 0000000..8590bbc
--- /dev/null
+++ b/content/pwdedit.xul
@@ -0,0 +1,128 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+    Saved Password Editor, extension for Gecko applications
+    Copyright (C) 2013  Daniel Dawson <danielcdawson at gmail.com>
+
+    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 3 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, see <http://www.gnu.org/licenses/>.
+-->
+
+<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
+<?xml-stylesheet href="chrome://savedpasswordeditor/skin/qtextbox.css"
+                 type="text/css"?>
+
+<!DOCTYPE dialog SYSTEM "chrome://savedpasswordeditor/locale/pwdedit.dtd">
+
+<dialog id="pwdedit"
+        xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
+        title="&savedpasswordeditor.title;"
+        buttons="accept,cancel"
+        ondialogaccept="return setNewSignon();">
+  <stringbundleset id="stringbundleset">
+    <stringbundle id="general-string-bundle"
+                  src="chrome://savedpasswordeditor/locale/spe.properties"/>
+    <stringbundle id="pwdedit-string-bundle"
+                 src="chrome://savedpasswordeditor/locale/pwdedit.properties"/>
+  </stringbundleset>
+  <script type="text/javascript"
+          src="chrome://savedpasswordeditor/content/pwdedit.js"/>
+  <dialogheader id="header"/>
+  <groupbox id="type_groupbox">
+    <caption id="type_caption" label="&signontype.label;"/>
+    <radiogroup id="type_group" oncommand="handle_typeSelect();">
+      <radio id="type_form" label="&type_form.label;"
+             accesskey="&type_form.accesskey;"
+             tooltiptext="&type_form.tooltip;"/>
+      <radio id="type_annotated" label="&type_annotated.label;"
+             accesskey="&type_annotated.accesskey;"
+             tooltiptext="&type_annotated.tooltip;"/>
+    </radiogroup>
+  </groupbox>
+  <grid>
+    <columns>
+      <column/>
+      <column flex="1"/>
+      <column/>
+    </columns>
+    <rows>
+      <row align="center">
+        <label control="hostname_text" value="&hostname.label;"
+               tooltiptext="&hostname.tooltip;"/>
+        <textbox id="hostname_text" class="qtextbox"
+                 tooltiptext="&hostname.tooltip;"/>
+      </row>
+      <row align="center">
+        <label id="formSubmitURL_lbl" control="formSubmitURL_text"
+               value="&formSubmitURL.label;"
+               tooltiptext="&formSubmitURL.tooltip;"/>
+        <textbox id="formSubmitURL_text" class="qtextbox"
+                 tooltiptext="&formSubmitURL.tooltip;"/>
+      </row>
+      <row align="center">
+        <label id="httpRealm_lbl" control="httpRealm_text"
+               value="&annotation.label;"
+               tooltiptext="&annotation.tooltip;"/>
+        <textbox id="httpRealm_text" class="qtextbox"
+                 tooltiptext="&annotation.tooltip;"/>
+      </row>
+      <row align="center">
+        <label control="username_text" value="&username.label;"
+               tooltiptext="&username.tooltip;"/>
+        <textbox id="username_text" class="qtextbox"
+                 tooltiptext="&username.tooltip;"/>
+      </row>
+      <row align="center">
+        <label control="password_text" value="&password.label;"
+               tooltiptext="&password.tooltip;"/>
+        <textbox persist="type" id="password_text" class="qtextbox"
+                 tooltiptext="&password.tooltip;"/>
+        <button id="showPassword_btn" label="&showPassword.label;"
+                accesskey="&showPassword.accesskey;"
+                tooltiptext="&showPassword.tooltip;"
+                oncommand="togglePasswordView();"/>
+        <button id="hidePassword_btn" label="&hidePassword.label;"
+                accesskey="&hidePassword.accesskey;"
+                tooltiptext="&showPassword.tooltip;"
+                oncommand="togglePasswordView();" hidden="true"/>
+      </row>
+      <row align="center">
+        <label id="usernameField_lbl" control="usernameField_text"
+               value="&usernameField.label;"
+               tooltiptext="&usernameField.tooltip;"/>
+        <textbox id="usernameField_text" class="qtextbox"
+                 tooltiptext="&usernameField.tooltip;"/>
+      </row>
+      <row align="center">
+        <label id="passwordField_lbl" control="passwordField_text"
+               align="center" value="&passwordField.label;"
+               tooltiptext="&passwordField.tooltip;"/>
+        <textbox id="passwordField_text" class="qtextbox"
+                 tooltiptext="&passwordField.tooltip;"/>
+      </row>
+    </rows>
+  </grid>
+  <hbox id="guessFromPage_box">
+    <button id="guessFromPage_btn" label="&guessfrompage.label;"
+            accesskey="&guessfrompage.accesskey;"
+            tooltiptext="&guessfrompage.tooltip;"
+            oncommand="guessParameters();" flex="1"/>
+    <button id="prevForm_btn" label="&prevform.label;"
+            accesskey="&prevform.accesskey;"
+            tooltiptext="&prevform.tooltip;" oncommand="prevForm();"
+            hidden="true" flex="1"/>
+    <button id="nextForm_btn" label="&nextform.label;"
+            accesskey="&nextform.accesskey;"
+            tooltiptext="&nextform.tooltip;" oncommand="nextForm();"
+            hidden="true" flex="1"/>
+  </hbox>
+</dialog>
diff --git a/content/pwdmgrOverlay-sm.js b/content/pwdmgrOverlay-sm.js
new file mode 100644
index 0000000..b39cc1d
--- /dev/null
+++ b/content/pwdmgrOverlay-sm.js
@@ -0,0 +1,236 @@
+/*
+    Saved Password Editor, extension for Gecko applications
+    Copyright (C) 2013  Daniel Dawson <danielcdawson at gmail.com>
+
+    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 3 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, see <http://www.gnu.org/licenses/>.
+*/
+
+document.addEventListener(
+  "DOMContentLoaded",
+  function dclHandler (ev) {
+    spEditor.strBundle = document.getElementById("savedpwdedit-stringbundle");
+    document.removeEventListener("DOMContentLoaded", dclHandler, false);
+  },
+  false);
+
+window.addEventListener(
+  "load",
+  function _loadHandler () {
+    var menuBtnAnon =
+      document.getAnonymousNodes(document.getElementById("speMenuBtn"));
+    var innerBtn = menuBtnAnon[1], dropMarker = menuBtnAnon[2];
+    innerBtn.removeAttribute("class");
+    dropMarker.removeAttribute("class");
+    var innerBtnCS = getComputedStyle(innerBtn),
+        dropMarkerStl = dropMarker.style;
+    dropMarkerStl.marginTop = innerBtnCS.marginTop;
+    dropMarkerStl.marginBottom = innerBtnCS.marginBottom;
+  },
+  false);
+
+document.getElementById("passwordsTree").addEventListener(
+  "select",
+  function (ev) {
+    var selections = gDataman.getTreeSelections(gPasswords.tree);
+    if (selections.length > 0) {
+      document.getElementById("key_editSignon").removeAttribute("disabled");
+      document.getElementById("edit_signon").removeAttribute("disabled");
+      document.getElementById("speMenuBtn_editSignon").
+        removeAttribute("disabled");
+      if (!spEditor.userChangedMenuBtn) {
+        document.getElementById("speMenuBtn").command = "edit_signon";
+        document.getElementById("speMenuBtn").
+          setAttribute("icon", "properties");
+      }
+    } else if (!spEditor.refreshing) {
+      document.getElementById("speMenuBtn").command = "new_signon";
+      document.getElementById("speMenuBtn").
+        setAttribute("icon", "add");
+      document.getElementById("key_editSignon").
+        setAttribute("disabled", "true");
+      document.getElementById("edit_signon").
+        setAttribute("disabled", "true");
+      document.getElementById("speMenuBtn_editSignon").
+        setAttribute("disabled", "true");
+      spEditor.userChangedMenuBtn = false;
+    }
+
+    if (selections.length == 1) {
+      document.getElementById("key_cloneSignon").removeAttribute("disabled");
+      document.getElementById("clone_signon").removeAttribute("disabled");
+      document.getElementById("speMenuBtn_cloneSignon").
+        removeAttribute("disabled");
+    } else if (!spEditor.refreshing) {
+      document.getElementById("key_cloneSignon").
+        setAttribute("disabled", "true");
+      document.getElementById("clone_signon").
+        setAttribute("disabled", "true");
+      document.getElementById("speMenuBtn_cloneSignon").
+        setAttribute("disabled", "true");
+    }
+  },
+  false);
+
+const spEditor = {
+  strBundle: null,
+  prefs: Components.classes["@mozilla.org/preferences-service;1"].
+         getService(Components.interfaces.nsIPrefService).
+         getBranch("extensions.savedpasswordeditor."),
+
+  userChangedMenuBtn: false,
+  refreshing: false,
+
+  menuBtnSel: function (ev, elem) {
+    var mb = document.getElementById("speMenuBtn");
+    switch(elem.id) {
+    case "speMenuBtn_editSignon":
+      mb.command = "edit_signon";
+      mb.setAttribute("icon", "properties");
+      this.editSignon();
+      break;
+
+    case "speMenuBtn_cloneSignon":
+      mb.command = "clone_signon";
+      mb.removeAttribute("icon");
+      this.cloneSignon();
+      break;
+
+    case "speMenuBtn_newSignon":
+      mb.command = "new_signon";
+      mb.setAttribute("icon", "add");
+      this.newSignon();
+      break;
+    }
+
+    this.userChangedMenuBtn = true;
+    ev.stopPropagation();
+  },
+
+  mcbWrapper: function (method) {
+    var myThis = this;
+    return function () method.apply(myThis, arguments);
+  },
+
+  showErrorAlert: function (e) {
+    let prompt = Components.classes["@mozilla.org/prompter;1"].
+        getService(Components.interfaces.nsIPromptFactory).
+        getPrompt(window.top, Components.interfaces.nsIPrompt),
+      bag = prompt.QueryInterface(
+        Components.interfaces.nsIWritablePropertyBag2);
+    bag.setPropertyAsBool("allowTabModal", true);
+    prompt.alert(this.strBundle.getString("error"),
+                 this.strBundle.getFormattedString("badnewentry",
+                                                   [e.message]));
+  },
+
+  SPE_WINDOW_NAME: "danieldawson:savedpasswordeditor",
+
+  openSPEDialog: function (signon, mode, showingPasswords, ret) {
+    var ww = Components.classes["@mozilla.org/embedcomp/window-watcher;1"].
+      getService(Components.interfaces.nsIWindowWatcher);
+    var oldWin = ww.getWindowByName(this.SPE_WINDOW_NAME, null);
+    if (!oldWin)
+      return window.openDialog(
+        "chrome://savedpasswordeditor/content/pwdedit.xul",
+        this.SPE_WINDOW_NAME, "centerscreen,dependent,dialog,chrome",
+        signon, mode, showingPasswords, ret);
+    else {
+      oldWin.focus();
+      return oldWin;
+    }
+  },
+
+  _makeLoginInfo: function (props) {
+    var li =
+      Components.classes["@mozilla.org/login-manager/loginInfo;1"].
+      createInstance(Components.interfaces.nsILoginInfo);
+    li.init(props.hostname, props.formSubmitURL, props.httpRealm,
+            props.username, props.password, props.usernameField,
+            props.passwordField);
+    return li;
+  },
+
+  _mergeSignonProps: function (oldSignon, newProps) {
+    var merged = {};
+    for (prop in newProps)
+      if (newProps[prop] === undefined)
+        merged[prop] = oldSignon[prop];
+      else
+        merged[prop] = newProps[prop];
+
+    return this._makeLoginInfo(merged);
+  },
+
+  editSignon: function () {
+    var selections = gDataman.getTreeSelections(gPasswords.tree);
+    if (selections.length == 0) return;
+    var selSignons =
+      selections.map(function (el) gPasswords.displayedSignons[el]);
+
+    function __finish (newSignon) {
+      try {
+        for (let i = 0; i < selSignons.length; i++)
+          this.loginSvc.modifyLogin(
+            selSignons[i], this._mergeSignonProps(selSignons[i], newSignon));
+        this.refreshing = true;
+        gPasswords.initialize();
+        for (let i = 0; i < selections.length; i++)
+          gPasswords.tree.view.selection.toggleSelect(selections[i]);
+        this.refreshing = false;
+      } catch (e) {
+        window.setTimeout(this.mcbWrapper(this.showErrorAlert), 0, e)
+      }
+    }
+      
+    var ret = { newSignon: null, callback: this.mcbWrapper(__finish) };
+    var dlg =
+      this.openSPEDialog(selSignons, 1, gPasswords.showPasswords, ret);
+  },
+
+  cloneSignon: function () {
+    var selections = gDataman.getTreeSelections(gPasswords.tree);
+    if (selections.length != 1) return;
+    var signon = gPasswords.displayedSignons[selections[0]];
+
+    function __finish (newSignon) {
+      try {
+        var newLI = this._makeLoginInfo(newSignon);
+        this.loginSvc.addLogin(newLI);
+      } catch (e) {
+        window.setTimeout(this.mcbWrapper(this.showErrorAlert), 0, e);
+      }
+    }
+
+    var ret = { newSignon: null, callback: this.mcbWrapper(__finish) };
+    this.openSPEDialog([signon], 2, gPasswords.showPasswords, ret);
+  },
+
+  newSignon: function () {
+    function __finish (newSignon) {
+      try {
+        var newLI = this._makeLoginInfo(newSignon);
+        this.loginSvc.addLogin(newLI);
+      } catch (e) {
+        window.setTimeout(this.mcbWrapper(this.showErrorAlert), 0, e);
+      }
+    }
+
+    var ret = { newSignon: null, callback: this.mcbWrapper(__finish) };
+    this.openSPEDialog([], 0, gPasswords.showPasswords, ret);
+  },
+}
+
+XPCOMUtils.defineLazyServiceGetter(spEditor, "loginSvc",
+                                   "@mozilla.org/login-manager;1",
+                                   "nsILoginManager");
diff --git a/content/pwdmgrOverlay-sm.xul b/content/pwdmgrOverlay-sm.xul
new file mode 100644
index 0000000..e93e99c
--- /dev/null
+++ b/content/pwdmgrOverlay-sm.xul
@@ -0,0 +1,81 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+    Saved Password Editor, extension for Gecko applications
+    Copyright (C) 2011  Daniel Dawson <danielcdawson at gmail.com>
+
+    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 3 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, see <http://www.gnu.org/licenses/>.
+-->
+
+<!DOCTYPE overlay SYSTEM
+          "chrome://savedpasswordeditor/locale/pwdmgrOverlay.dtd">
+<?xml-stylesheet href="chrome://savedpasswordeditor/skin/pwdmgrOverlay.css"
+                 type="text/css"?>
+
+<overlay id="savedpasswordeditorOverlay"
+         xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
+  <stringbundleset>
+    <stringbundle id="general-stringbundle"
+                  src="chrome://savedpasswordeditor/locale/spe.properties"/>
+    <stringbundle id="pwdmgrOverlay-stringbundle"
+      src="chrome://savedpasswordeditor/locale/pwdmgrOverlay.properties"/>
+  </stringbundleset>
+
+  <script type="text/javascript"
+          src="chrome://savedpasswordeditor/content/pwdmgrOverlay-sm.js"/>
+
+  <commandset>
+    <command id="edit_signon"
+             label="&editentry.label;" accesskey="&editentry.accesskey;"
+             oncommand="spEditor.editSignon();" disabled="true"/>
+    <command id="clone_signon"
+             label="&cloneentry.label;" accesskey="&cloneentry.accesskey;"
+             oncommand="spEditor.cloneSignon();" disabled="true"/>
+    <command id="new_signon"
+             label="&newentry.label;" accesskey="&newentry.accesskey;"
+             oncommand="spEditor.newSignon();"/>
+  </commandset>
+
+  <keyset>
+    <key id="key_editSignon" key="&editentry.accesskey;"
+         modifiers="access" oncommand="spEditor.editSignon();"
+         disabled="true"/>
+    <key id="key_cloneSignon" key="&cloneentry.accesskey;"
+         modifiers="access" oncommand="spEditor.cloneSignon();"
+         disabled="true"/>
+    <key id="key_newSignon" key="&newentry.accesskey;"
+         modifiers="access" oncommand="spEditor.newSignon();"/>
+  </keyset>
+
+  <menupopup id="passwordsTreeContextMenu">
+    <menuitem id="menu_editSignon" command="edit_signon"/>
+    <menuitem id="menu_cloneSignon" command="clone_signon"/>
+  </menupopup>
+
+  <hbox id="passwordButtons">
+    <button id="speMenuBtn" type="menu-button" command="new_signon" icon="add"
+            insertafter="pwdRemove">
+      <menupopup id="speMenuBtnPopup">
+        <menuitem id="speMenuBtn_editSignon" label="&editentry.label;"
+                  accesskey="&editentry.accesskey;" disabled="true"
+                  oncommand="spEditor.menuBtnSel(event, this);"/>
+        <menuitem id="speMenuBtn_cloneSignon" label="&cloneentry.label;"
+                  accesskey="&cloneentry.accesskey;" disabled="true"
+                  oncommand="spEditor.menuBtnSel(event, this);"/>
+        <menuitem id="speMenuBtn_newSignon" label="&newentry.label;"
+                  accesskey="&newentry.accesskey;"
+                  oncommand="spEditor.menuBtnSel(event, this);"/>
+      </menupopup>
+    </button>
+  </hbox>
+</overlay>
diff --git a/content/pwdmgrOverlay.js b/content/pwdmgrOverlay.js
new file mode 100644
index 0000000..2c36a4c
--- /dev/null
+++ b/content/pwdmgrOverlay.js
@@ -0,0 +1,260 @@
+/*
+    Saved Password Editor, extension for Gecko applications
+    Copyright (C) 2013  Daniel Dawson <danielcdawson at gmail.com>
+
+    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 3 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, see <http://www.gnu.org/licenses/>.
+*/
+
+document.addEventListener(
+  "DOMContentLoaded",
+  function dclHandler (ev) {
+    spEditor.genStrBundle =
+      document.getElementById("savedpwdedit-gen-stringbundle");
+    spEditor.pmoStrBundle =
+      document.getElementById("savedpwdedit-overlay-stringbundle");
+    document.removeEventListener("DOMContentLoaded", dclHandler, false);
+  },
+  false);
+
+window.addEventListener(
+  "load",
+  function (ev) {
+    if (spEditor.prefs.getBoolPref("always_show_passwords")) {
+      if (!spEditor.prefs.getBoolPref("force_prompt_for_masterPassword")
+          || masterPasswordLogin(function () true)) {
+        showingPasswords = true;
+        document.getElementById("togglePasswords").label
+          = kSignonBundle.getString("hidePasswords");
+        document.getElementById("togglePasswords").accessKey
+          = kSignonBundle.getString("hidePasswordsAccessKey");
+        document.getElementById("passwordCol").hidden = false;
+        _filterPasswords();
+      }
+    }
+
+    if (spEditor.prefs.getBoolPref("preselect_current_site")) {
+      let wm = Components.classes["@mozilla.org/appshell/window-mediator;1"].
+               getService(Components.interfaces.nsIWindowMediator);
+      let brWin = wm.getMostRecentWindow("navigator:browser");
+
+      if (brWin) {
+        let loc = brWin.getBrowser().contentWindow.location;
+        let hostname = loc.protocol + "//" + loc.host;
+        let col = getColumnByName("hostname");
+        for (let i = 0; i < signonsTreeView.rowCount; i++)
+          if (signonsTreeView.getCellText(i, col) == hostname) {
+            signonsTreeView.selection.select(i);
+            setTimeout(function () {
+                         signonsTree.treeBoxObject.ensureRowIsVisible(i);
+                       }, 0);
+            break;
+          }
+      }
+    }
+
+    var menuBtnAnon =
+      document.getAnonymousNodes(document.getElementById("speMenuBtn"));
+    var innerBtn = menuBtnAnon[1], dropMarker = menuBtnAnon[2];
+    innerBtn.removeAttribute("class");
+    dropMarker.removeAttribute("class");
+    var innerBtnCS = getComputedStyle(innerBtn),
+        dropMarkerStl = dropMarker.style;
+    dropMarkerStl.marginTop = innerBtnCS.marginTop;
+    dropMarkerStl.marginBottom = innerBtnCS.marginBottom;
+  },
+  false);
+
+document.getElementById("signonsTree").addEventListener(
+  "select",
+  function (ev) {
+    if (!spEditor.selectionsEnabled) return;
+    var selections = GetTreeSelections(signonsTree);
+    if (selections.length > 0
+        && (!window.hasOwnProperty("gSelectUserInUse") || !gSelectUserInUse)) {
+      document.getElementById("key_editSignon").removeAttribute("disabled");
+      document.getElementById("edit_signon").removeAttribute("disabled");
+      document.getElementById("speMenuBtn_editSignon").
+        removeAttribute("disabled");
+      if (!spEditor.userChangedMenuBtn) {
+        document.getElementById("speMenuBtn").command = "edit_signon";
+        document.getElementById("speMenuBtn").
+          setAttribute("icon", "properties");
+      }
+    } else {
+      document.getElementById("speMenuBtn").command = "new_signon";
+      document.getElementById("speMenuBtn").
+        setAttribute("icon", "add");
+      document.getElementById("key_editSignon").
+        setAttribute("disabled", "true");
+      document.getElementById("edit_signon").
+        setAttribute("disabled", "true");
+      document.getElementById("speMenuBtn_editSignon").
+        setAttribute("disabled", "true");
+      spEditor.userChangedMenuBtn = false;
+    }
+
+    if (selections.length == 1
+        && (!window.hasOwnProperty("gSelectUserInUse") || !gSelectUserInUse)) {
+      document.getElementById("key_cloneSignon").removeAttribute("disabled");
+      document.getElementById("clone_signon").removeAttribute("disabled");
+      document.getElementById("speMenuBtn_cloneSignon").
+        removeAttribute("disabled");
+    } else {
+      document.getElementById("key_cloneSignon").
+        setAttribute("disabled", "true");
+      document.getElementById("clone_signon").
+        setAttribute("disabled", "true");
+      document.getElementById("speMenuBtn_cloneSignon").
+        setAttribute("disabled", "true");
+    }
+  },
+  false);
+
+const spEditor = {
+  genStrBundle: null,
+  pmoStrBundle: null,
+  prefs: Components.classes["@mozilla.org/preferences-service;1"].
+         getService(Components.interfaces.nsIPrefService).
+         getBranch("extensions.savedpasswordeditor."),
+
+  selectionsEnabled: true,
+  userChangedMenuBtn: false,
+
+  menuBtnSel: function (ev, elem) {
+    this.userChangedMenuBtn = true;
+    var mb = document.getElementById("speMenuBtn");
+    switch(elem.id) {
+    case "speMenuBtn_editSignon":
+      mb.command = "edit_signon";
+      mb.setAttribute("icon", "properties");
+      this.editSignon();
+      break;
+
+    case "speMenuBtn_cloneSignon":
+      mb.command = "clone_signon";
+      mb.removeAttribute("icon");
+      this.cloneSignon();
+      break;
+
+    case "speMenuBtn_newSignon":
+      mb.command = "new_signon";
+      mb.setAttribute("icon", "add");
+      this.newSignon();
+      break;
+    }
+
+    ev.stopPropagation();
+  },
+
+  _mergeSignonProps: function (oldSignon, newProps) {
+    var merged = {};
+    for (let prop in newProps)
+      if (newProps[prop] === undefined)
+        merged[prop] = oldSignon[prop];
+      else
+        merged[prop] = newProps[prop];
+
+    var newSignon =
+      Components.classes["@mozilla.org/login-manager/loginInfo;1"].
+      createInstance(Components.interfaces.nsILoginInfo);
+    newSignon.init(merged.hostname, merged.formSubmitURL,
+                   merged.httpRealm, merged.username, merged.password,
+                   merged.usernameField, merged.passwordField);
+    return newSignon;
+  },
+
+  editSignon: function () {
+    this.selectionsEnabled = false;
+    var selections = GetTreeSelections(signonsTree);
+    if (selections.length < 1) return;
+    var table =
+      signonsTreeView._filterSet.length ? signonsTreeView._filterSet : signons;
+    var selSignons = selections.map(function (el) table[el]);
+    var ret = { newSignon: null, callback: null };
+    window.openDialog(
+      "chrome://savedpasswordeditor/content/pwdedit.xul", "",
+      "centerscreen,dependent,dialog,chrome,modal",
+      selSignons, 1, showingPasswords, ret);
+
+    this.selectionsEnabled = true;
+    if (!ret.newSignon) return;
+    for (let i = 0; i < selSignons.length; i++)
+      passwordmanager.modifyLogin(
+        selSignons[i], this._mergeSignonProps(selSignons[i], ret.newSignon));
+    var fv = document.getElementById("filter").value;
+    setFilter("");
+    setFilter(fv);
+    signonsTreeView.selection.clearSelection();
+  },
+
+  cloneSignon: function () {
+    this.selectionsEnabled = false;
+    var selections = GetTreeSelections(signonsTree);
+    if (selections.length != 1) return;
+    var table =
+      signonsTreeView._filterSet.length ? signonsTreeView._filterSet : signons;
+    var signon = table[selections[0]];
+    var ret = { newSignon: null, callback: null };
+    window.openDialog(
+      "chrome://savedpasswordeditor/content/pwdedit.xul", "",
+      "centerscreen,dependent,dialog,chrome,modal",
+      [signon], 2, showingPasswords, ret);
+    this.selectionsEnabled = true;
+    if (!ret.newSignon) return;
+    try {
+      passwordmanager.addLogin(this._mergeSignonProps(signon, ret.newSignon));
+      var fv = document.getElementById("filter").value;
+      setFilter("");
+      setFilter(fv);
+      signonsTreeView.selection.clearSelection();
+    } catch (e) {
+      Components.classes["@mozilla.org/embedcomp/prompt-service;1"].
+        getService(Components.interfaces.nsIPromptService).
+        alert(window, this.genStrBundle.getString("error"),
+              this.pmoStrBundle.getFormattedString("badnewentry",
+                                                   [e.message]));
+    }
+  },
+
+  newSignon: function () {
+    this.selectionsEnabled = false;
+    var ret = { newSignon: null, callback: null };
+    window.openDialog(
+      "chrome://savedpasswordeditor/content/pwdedit.xul", "",
+      "centerscreen,dependent,dialog,chrome,modal",
+      [], 0, showingPasswords, ret);
+    this.selectionsEnabled = true;
+    if (!ret.newSignon) return;
+    try {
+      let newSignon =
+        Components.classes["@mozilla.org/login-manager/loginInfo;1"].
+        createInstance(Components.interfaces.nsILoginInfo);
+      newSignon.init(ret.newSignon.hostname, ret.newSignon.formSubmitURL,
+                     ret.newSignon.httpRealm, ret.newSignon.username,
+                     ret.newSignon.password, ret.newSignon.usernameField,
+                     ret.newSignon.passwordField);
+      passwordmanager.addLogin(newSignon);
+      var fv = document.getElementById("filter").value;
+      setFilter("");
+      setFilter(fv);
+      signonsTreeView.selection.clearSelection();
+    } catch (e) {
+      Components.classes["@mozilla.org/embedcomp/prompt-service;1"].
+        getService(Components.interfaces.nsIPromptService).
+        alert(window, this.genStrBundle.getString("error"),
+              this.pmoStrBundle.getFormattedString("badnewentry",
+                                                   [e.message]));
+    }
+  },
+}
diff --git a/content/pwdmgrOverlay.xul b/content/pwdmgrOverlay.xul
new file mode 100644
index 0000000..5964a99
--- /dev/null
+++ b/content/pwdmgrOverlay.xul
@@ -0,0 +1,87 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+    Saved Password Editor, extension for Gecko applications
+    Copyright (C) 2011  Daniel Dawson <danielcdawson at gmail.com>
+
+    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 3 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, see <http://www.gnu.org/licenses/>.
+-->
+
+<!DOCTYPE overlay SYSTEM
+          "chrome://savedpasswordeditor/locale/pwdmgrOverlay.dtd">
+<?xml-stylesheet href="chrome://savedpasswordeditor/skin/pwdmgrOverlay.css"
+                 type="text/css"?>
+
+<overlay id="savedpasswordeditorOverlay"
+         xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
+  <stringbundleset>
+    <stringbundle id="savedpwdedit-gen-stringbundle"
+                  src="chrome://savedpasswordeditor/locale/spe.properties"/>
+    <stringbundle id="savedpwdedit-overlay-stringbundle"
+      src="chrome://savedpasswordeditor/locale/pwdmgrOverlay.properties"/>
+  </stringbundleset>
+
+  <script type="text/javascript"
+          src="chrome://savedpasswordeditor/content/pwdmgrOverlay.js"/>
+
+  <commandset>
+    <command id="edit_signon"
+             label="&editentry.label;" accesskey="&editentry.accesskey;"
+             oncommand="spEditor.editSignon();" disabled="true"/>
+    <command id="clone_signon"
+             label="&cloneentry.label;" accesskey="&cloneentry.accesskey;"
+             oncommand="spEditor.cloneSignon();" disabled="true"/>
+    <command id="new_signon"
+             label="&newentry.label;" accesskey="&newentry.accesskey;"
+             oncommand="spEditor.newSignon();"/>
+  </commandset>
+
+  <keyset>
+    <key id="key_editSignon" key="&editentry.accesskey;"
+         modifiers="access" oncommand="spEditor.editSignon();"
+         disabled="true"/>
+    <key id="key_cloneSignon" key="&cloneentry.accesskey;"
+         modifiers="access" oncommand="spEditor.cloneSignon();"
+         disabled="true"/>
+    <key id="key_newSignon" key="&newentry.accesskey;"
+         modifiers="access" oncommand="spEditor.newSignon();"/>
+  </keyset>
+
+  <window id="SignonViewerDialog">
+    <popupset id="signonsTreeContextSet">
+      <menupopup id="signonsTreeContextMenu">
+        <menuitem id="menu_editSignon" command="edit_signon"/>
+        <menuitem id="menu_cloneSignon" command="clone_signon"/>
+      </menupopup>
+    </popupset>
+  </window>
+
+  <tree id="signonsTree" context="signonsTreeContextMenu"/>
+
+  <hbox id="SignonViewerButtons">
+    <button id="speMenuBtn" type="menu-button" command="new_signon" icon="add"
+            insertafter="removeAllSignons">
+      <menupopup id="speMenuBtnPopup">
+        <menuitem id="speMenuBtn_editSignon" label="&editentry.label;"
+                  accesskey="&editentry.accesskey;" disabled="true"
+                  oncommand="spEditor.menuBtnSel(event, this);"/>
+        <menuitem id="speMenuBtn_cloneSignon" label="&cloneentry.label;"
+                  accesskey="&cloneentry.accesskey;" disabled="true"
+                  oncommand="spEditor.menuBtnSel(event, this);"/>
+        <menuitem id="speMenuBtn_newSignon" label="&newentry.label;"
+                  accesskey="&newentry.accesskey;"
+                  oncommand="spEditor.menuBtnSel(event, this);"/>
+      </menupopup>
+    </button>
+  </hbox>
+</overlay>
diff --git a/content/qtextbox.xml b/content/qtextbox.xml
new file mode 100644
index 0000000..762548e
--- /dev/null
+++ b/content/qtextbox.xml
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+    Saved Password Editor, extension for Gecko applications
+    Copyright (C) 2011  Daniel Dawson <danielcdawson at gmail.com>
+
+    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 3 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, see <http://www.gnu.org/licenses/>.
+-->
+
+<bindings xmlns="http://www.mozilla.org/xbl">
+  <binding id="qtextbox"
+           extends="chrome://global/content/bindings/textbox.xml#textbox">
+    <implementation>
+      <property name="indefinite"
+                onget="return this.getAttribute('indefinite') == 'true';">
+        <setter><![CDATA[
+          return this.setAttribute("indefinite", val ? "true" : "false");
+        ]]></setter>
+      </property>
+
+      <property name="autoreindef"
+                onget="return this.getAttribute('autoreindef') == 'true';">
+        <setter><![CDATA[
+          return this.setAttribute("autoreindef", val ? "true" : "false");
+        ]]></setter>
+      </property>
+
+      <property name="qvalue"
+                onget="return this.indefinite ? undefined : this.value;"/>
+    </implementation>
+
+    <handlers>
+      <handler event="change"><![CDATA[
+        if (this.inputField.value == "" && this.autoreindef)
+          this.indefinite = true;
+        else if (this.inputField.value != "")
+          this.indefinite = false;
+      ]]></handler>
+    </handlers>
+  </binding>
+</bindings>
diff --git a/content/toolbarOverlay.js b/content/toolbarOverlay.js
new file mode 100644
index 0000000..2a02b4c
--- /dev/null
+++ b/content/toolbarOverlay.js
@@ -0,0 +1,80 @@
+/*
+    Saved Password Editor, extension for Gecko applications
+    Copyright (C) 2014  Daniel Dawson <danielcdawson at gmail.com>
+
+    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 3 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, see <http://www.gnu.org/licenses/>.
+*/
+
+Components.utils.import(
+  "resource://savedpasswordeditor/SavedPasswordEditor.jsm");
+
+window.addEventListener(
+  "load",
+  function _loadHandler () {
+    window.removeEventListener("load", _loadHandler, false);
+
+    const btnId = "savedpasswordeditor-button";
+    const btnPos = {
+      "navigator:browser": [["nav-bar", null],],
+      "mail:3pane": [["mail-bar3", "button-appmenu"],
+                     ["msgToolbar", "throbber-box"],],
+      "msgcompose": [["composeToolbar2", null],
+                     ["composeToolbar", "throbber-box"],],
+    };
+    var wtype = document.documentElement.getAttribute("windowtype");
+
+    if (!(wtype in btnPos)) return;
+
+    const prefName = "extensions.savedpasswordeditor.addedButtonTo";
+    var prefs = Components.classes["@mozilla.org/preferences-service;1"].
+               getService(Components.interfaces.nsIPrefService).getBranch("");
+    if (prefs.prefHasUserValue(prefName))
+      var addedButtonTo = prefs.getCharPref(prefName).split(",");
+    else
+      var addedButtonTo = [];
+
+    if (addedButtonTo.indexOf(wtype) == -1) {
+      if (document.getElementById("PanelUI-menu-button")) {
+        /* Australis */
+
+        var btn = document.getElementById(btnId);
+        if (!btn || btn.parentNode.place == "palette")
+          CustomizableUI.addWidgetToArea("savedpasswordeditor-button",
+                                         "nav-bar");
+      } else {
+        /* Old-style toolbar */
+
+        let toolbar, before;
+        for each ([tbId, beforeId] in btnPos[wtype]) {
+          toolbar = document.getElementById(tbId);
+          if (!toolbar) continue;
+          before = beforeId ? document.getElementById(beforeId) : null;
+          break;
+        }
+
+        if (!toolbar) return;
+
+        var btn = document.getElementById(btnId);
+        if (!btn || btn.parentNode.tagName == "toolbarpalette") {
+          toolbar.insertItem(btnId, before);
+          toolbar.setAttribute("currentset", toolbar.currentSet);
+          document.persist(toolbar.id, "currentset");
+        }
+      }
+
+      addedButtonTo.push(wtype);
+      prefs.setCharPref(prefName, addedButtonTo.join(","));
+    }
+  },
+  false);
diff --git a/content/toolbarOverlay.xul b/content/toolbarOverlay.xul
new file mode 100644
index 0000000..5aca064
--- /dev/null
+++ b/content/toolbarOverlay.xul
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+    Saved Password Editor, extension for Gecko applications
+    Copyright (C) 2014  Daniel Dawson <danielcdawson at gmail.com>
+
+    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 3 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, see <http://www.gnu.org/licenses/>.
+-->
+
+<!DOCTYPE overlay SYSTEM
+          "chrome://savedpasswordeditor/locale/browserOverlay.dtd">
+
+<overlay xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
+  <script type="application/javascript" src="toolbarOverlay.js"/>
+
+  <toolbarpalette id="BrowserToolbarPalette">
+    <toolbarbutton id="savedpasswordeditor-button"
+                   class="toolbarbutton-1 chromeclass-toolbar-additional"
+                   persist="class" removable="true"
+                   label="&savedpasswords.label;"
+                   tooltiptext="&savedpasswords.tooltip;"
+                   oncommand="SavedPasswordEditor.openSavedPasswords();"/>
+  </toolbarpalette>
+  <toolbarpalette id="MailToolbarPalette">
+    <toolbarbutton id="savedpasswordeditor-button"
+                   class="toolbarbutton-1 chromeclass-toolbar-additional"
+                   label="&savedpasswords.label;"
+                   tooltiptext="&savedpasswords.tooltip;"
+                   oncommand="SavedPasswordEditor.openSavedPasswords();"/>
+  </toolbarpalette>
+  <toolbarpalette id="MsgComposeToolbarPalette">
+    <toolbarbutton id="savedpasswordeditor-button"
+                   class="toolbarbutton-1 chromeclass-toolbar-additional"
+                   label="&savedpasswords.label;"
+                   tooltiptext="&savedpasswords.tooltip;"
+                   oncommand="SavedPasswordEditor.openSavedPasswords();"/>
+  </toolbarpalette>
+  <toolbarpalette id="calendarToolbarPalette">
+    <toolbarbutton id="savedpasswordeditor-button"
+                   class="cal-toolbarbutton-1 chromeclass-toolbar-additional"
+                   label="&savedpasswords.label;"
+                   tooltiptext="&savedpasswords.tooltip;"
+                   oncommand="SavedPasswordEditor.openSavedPasswords();"/>
+  </toolbarpalette>
+</overlay>
diff --git a/content/welcome.js b/content/welcome.js
new file mode 100644
index 0000000..3406695
--- /dev/null
+++ b/content/welcome.js
@@ -0,0 +1,65 @@
+/*
+    Saved Password Editor, extension for Gecko applications
+    Copyright (C) 2012  Daniel Dawson <danielcdawson at gmail.com>
+
+    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 3 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, see <http://www.gnu.org/licenses/>.
+*/
+
+const Cc = Components.classes,
+      Ci = Components.interfaces,
+      SEAMONKEY = "{92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a}",
+      THUNDERBIRD = "{3550f703-e582-4d05-9a08-453d09bdfdc6}";
+
+window.addEventListener(
+  "load",
+  function loadHandler (ev) {
+    var appId;
+
+    function openSecPane () {
+      var wm = Cc["@mozilla.org/appshell/window-mediator;1"].
+                 getService(Ci.nsIWindowMediator);
+      if (appId == THUNDERBIRD)
+          wm.getMostRecentWindow("mail:3pane").
+            openOptionsDialog("paneSecurity");
+      else
+          wm.getMostRecentWindow("navigator:browser").
+            openPreferences("paneSecurity");
+    }
+
+    function openPwdPane () {
+      var chromeWin = Cc["@mozilla.org/appshell/window-mediator;1"].
+                        getService(Ci.nsIWindowMediator).
+                        getMostRecentWindow("navigator:browser");
+      chromeWin.goPreferences("passwords_pane");
+    }
+
+    function el (name) document.getElementById(name);
+
+    appId = Cc["@mozilla.org/xre/app-info;1"].getService(Ci.nsIXULAppInfo).ID;
+    var appName = "firefox";
+    switch (appId) {
+    case THUNDERBIRD:
+      appName = "thunderbird";
+      break;
+    case SEAMONKEY:
+      appName = "seamonkey";
+      break;
+    }
+    el("addonlink").setAttribute(
+      "href", "https://addons.mozilla.org/" + appName
+              + "/addon/saved-password-editor/");
+    el("appname").textContent = Application.name;
+    window.removeEventListener("load", loadHandler, false);
+  },
+  false);
diff --git a/content/welcome.xhtml b/content/welcome.xhtml
new file mode 100644
index 0000000..6db090d
--- /dev/null
+++ b/content/welcome.xhtml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+    Saved Password Editor, extension for Gecko applications
+    Copyright (C) 2012  Daniel Dawson <danielcdawson at gmail.com>
+
+    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 3 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, see <http://www.gnu.org/licenses/>.
+-->
+
+<!DOCTYPE html SYSTEM "chrome://savedpasswordeditor/locale/welcome.dtd">
+
+<?xml-stylesheet type="text/css"
+  href="chrome://savedpasswordeditor/skin/welcome.css"?>
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="&locale;" lang="&locale;"
+      dir="&layoutdirection;">
+  <head>
+    <script type="text/javascript"
+            src="chrome://savedpasswordeditor/content/welcome.js"/>
+    <link rel="icon" href="chrome://savedpasswordeditor/skin/key16.png"/>
+    <title>&welcometospe;</title>
+  </head>
+  <body>
+    <h1>&welcometospe;</h1>
+    <p>&welcomepara1_fx;</p>
+    <p>&welcomepara2;</p>
+    <p>&welcomepara3;</p>
+  </body>
+</html>
diff --git a/content/welcome_sm.xhtml b/content/welcome_sm.xhtml
new file mode 100644
index 0000000..24bb8f9
--- /dev/null
+++ b/content/welcome_sm.xhtml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+    Saved Password Editor, extension for Gecko applications
+    Copyright (C) 2012  Daniel Dawson <danielcdawson at gmail.com>
+
+    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 3 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, see <http://www.gnu.org/licenses/>.
+-->
+
+<!DOCTYPE html SYSTEM "chrome://savedpasswordeditor/locale/welcome.dtd">
+
+<?xml-stylesheet type="text/css"
+  href="chrome://savedpasswordeditor/skin/welcome.css"?>
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="&locale;" lang="&locale;"
+      dir="&layoutdirection;">
+  <head>
+    <script type="text/javascript"
+            src="chrome://savedpasswordeditor/content/welcome.js"/>
+    <link rel="icon" href="chrome://savedpasswordeditor/skin/key16.png"/>
+    <title>&welcometospe;</title>
+  </head>
+  <body>
+    <h1>&welcometospe;</h1>
+    <p>&welcomepara1_sm;</p>
+    <p>&welcomepara2;</p>
+    <p>&welcomepara3;</p>
+  </body>
+</html>
diff --git a/defaults/preferences/prefs.js b/defaults/preferences/prefs.js
new file mode 100644
index 0000000..a9553aa
--- /dev/null
+++ b/defaults/preferences/prefs.js
@@ -0,0 +1,6 @@
+pref("extensions.savedpasswordeditor.display_menuitem", true);
+pref("extensions.savedpasswordeditor.rename_menuitem_to", "");
+pref("extensions.savedpasswordeditor.preselect_current_site", false);
+pref("extensions.savedpasswordeditor.always_show_passwords", false);
+pref("extensions.savedpasswordeditor.force_prompt_for_masterPassword", true);
+pref("extensions.savedpasswordeditor.showpassword", 0);
diff --git a/install.rdf b/install.rdf
new file mode 100644
index 0000000..1e803a0
--- /dev/null
+++ b/install.rdf
@@ -0,0 +1,246 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<RDF:RDF xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+         xmlns="http://www.mozilla.org/2004/em-rdf#">
+  <RDF:Description about="urn:mozilla:install-manifest">
+    <id>savedpasswordeditor at daniel.dawson</id>
+    <type>2</type>
+    <name>Saved Password Editor</name>
+    <version>2.7.2</version>
+    <description>Adds the ability to create and edit entries in the password manager.</description>
+    <creator>Daniel Dawson <danielcdawson at gmail.com></creator>
+    <contributor>PlastikManiac (key icon) - http://plastikmaniac.deviantart.com/</contributor>
+
+    <iconURL>chrome://savedpasswordeditor/skin/key32.png</iconURL>
+    <icon64URL>chrome://savedpasswordeditor/skin/key64.png</icon64URL>
+    <optionsURL>chrome://savedpasswordeditor/content/prefwindow.xul</optionsURL>
+    <homepageURL>https://addons.mozilla.org/addon/saved-password-editor/</homepageURL>
+
+    <targetApplication>
+      <RDF:Description>
+        <id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</id> <!-- Firefox -->
+        <minVersion>17.0</minVersion>
+        <maxVersion>29.0</maxVersion>
+      </RDF:Description>
+    </targetApplication>
+
+    <targetApplication>
+      <RDF:Description>
+        <id>{92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a}</id> <!-- SeaMonkey -->
+        <minVersion>2.14</minVersion>
+        <maxVersion>2.26</maxVersion>
+      </RDF:Description>
+    </targetApplication>
+
+    <targetApplication>
+      <RDF:Description>
+        <id>{3550f703-e582-4d05-9a08-453d09bdfdc6}</id> <!-- Thunderbird -->
+        <minVersion>17.0</minVersion>
+        <maxVersion>29.0</maxVersion>
+      </RDF:Description>
+    </targetApplication>
+
+    <targetApplication>
+      <RDF:Description>
+        <id>{a79fe89b-6662-4ff4-8e88-09950ad4dfde}</id> <!-- Conkeror -->
+        <minVersion>0.9</minVersion>
+        <maxVersion>1.0.*</maxVersion>
+      </RDF:Description>
+    </targetApplication>
+
+    <localized>
+      <RDF:Description>
+        <locale>bg</locale>
+        <name>Saved Password Editor</name>
+        <creator>Daniel Dawson <danielcdawson at gmail.com></creator>
+        <contributor>PlastikManiac (key icon)</contributor>
+        <translator>ExaFlop</translator>
+        <translator>arris</translator>
+        <translator>pl99</translator>
+        <description>Добавя възможност за създаване и редактиране на пароли в менажерът за пароли на браузъра.</description>
+      </RDF:Description>
+      <RDF:Description>
+        <locale>de</locale>
+        <name>Saved Password Editor</name>
+        <creator>Daniel Dawson <danielcdawson at gmail.com></creator>
+        <contributor>PlastikManiac (key icon)</contributor>
+        <translator>/usr/bin/tux</translator>
+        <description>Stellt eine Möglichkeit zur Verfügung, gespeicherte Passwörter im Passwortmanager zu ändern und neue hinzuzufügen.</description>
+      </RDF:Description>
+      <RDF:Description>
+        <locale>dsb</locale>
+        <name>Saved Password Editor</name>
+        <creator>Daniel Dawson <danielcdawson at gmail.com></creator>
+        <contributor>PlastikManiac (key icon)</contributor>
+        <translator>milupo</translator>
+        <description>Staja móžnosć k dispoziciji, zapiski w zastojniku gronidłow napóraś a wobźěłaś.</description>
+      </RDF:Description>
+      <RDF:Description>
+        <locale>el</locale>
+        <name>Επεξεργαστής αποθηκευμένων κωδικών πρόσβασης</name>
+        <creator>Daniel Dawson <danielcdawson at gmail.com></creator>
+        <contributor>PlastikManiac (εικονίδιο κλειδιού)</contributor>
+        <translator>Γιώργος Μαλαμάς "Grg68"</translator>
+        <description>Προσθέτει τη δυνατότητα να δημιουργήσετε και να επεξεργαστείτε καταχωρίσεις κωδικών πρόσβασης στο διαχειριστή κωδικών πρόσβασης.</description>
+      </RDF:Description>
+      <RDF:Description>
+        <locale>eo</locale>
+        <name>Saved Password Editor</name>
+        <creator>Daniel Dawson <danielcdawson at gmail.com></creator>
+        <contributor>PlastikManiac (key icon)</contributor>
+        <translator>milupo</translator>
+        <description>Disponigas eblecon krei kaj redakti enskribojn en la pasvorta administrilo.</description>
+      </RDF:Description>
+      <RDF:Description>
+        <locale>es-ES</locale>
+        <name>Saved password editor (Editor de contraseñas)</name>
+        <creator>Daniel Dawson <danielcdawson at gmail.com></creator>
+        <contributor>PlastikManiac (key icon)</contributor>
+        <translator>Ricardo A. Rivas <rivica at gmail.com></translator>
+        <description>Agrega la capacidad de crear y editar el contenido del administrador de contraseñas.</description>
+      </RDF:Description>
+      <RDF:Description>
+        <locale>fi</locale>
+        <name>Saved Password Editor</name>
+        <creator>Daniel Dawson <danielcdawson at gmail.com></creator>
+        <contributor>PlastikManiac (key icon)</contributor>
+        <translator>Jiipee</translator>
+        <description>Lisää mahdollisuuden luoda ja muokata kirjautumistietoja salasanojen hallinnassa.</description>
+      </RDF:Description>
+      <RDF:Description>
+        <locale>fr</locale>
+        <name>Saved Password Editor</name>
+        <creator>Daniel Dawson <danielcdawson at gmail.com></creator>
+        <contributor>PlastikManiac (key icon)</contributor>
+        <translator>Goofy</translator>
+        <description>Vous permet de créer et modifier vos identifiants dans le gestionnaire de mots de passe.</description>
+      </RDF:Description>
+      <RDF:Description>
+        <locale>hsb</locale>
+        <name>Saved Password Editor</name>
+        <creator>Daniel Dawson <danielcdawson at gmail.com></creator>
+        <contributor>PlastikManiac (key icon)</contributor>
+        <translator>milupo</translator>
+        <description>Staja móžnosć k dispoziciji, zapiski w zrjadowaku hesłow wutworić a wobdźěłać.</description>
+      </RDF:Description>
+      <RDF:Description>
+        <locale>hu</locale>
+        <name>Saved Password Editor</name>
+        <creator>Daniel Dawson <danielcdawson at gmail.com></creator>
+        <contributor>PlastikManiac (key icon)</contributor>
+        <translator>MIKES KASZMÁN István "Cashman"</translator>
+        <description>Jelszavak szerkesztése a jelszókezelőben.</description>
+      </RDF:Description>
+      <RDF:Description>
+        <locale>id-ID</locale>
+        <name>Saved Password Editor</name>
+        <creator>Daniel Dawson <danielcdawson at gmail.com></creator>
+        <contributor>PlastikManiac (key icon)</contributor>
+        <translator>XCen</translator>
+        <description>Menambahkan kemampuan untuk membuat dan menyunting entri kata sandi di pengatur kata sandi.</description>
+      </RDF:Description>
+      <RDF:Description>
+        <locale>ja</locale>
+        <name>Saved Password Editor</name>
+        <creator>Daniel Dawson <danielcdawson at gmail.com></creator>
+        <contributor>PlastikManiac (key icon)</contributor>
+        <translator>Masahiko Imanaka "mar"</translator>
+        <description>パスワードマネージャにパスワードエントリを作成、編集する機能を追加します。</description>
+      </RDF:Description>
+      <RDF:Description>
+        <locale>nl</locale>
+        <name>Saved Password Editor</name>
+        <creator>Daniel Dawson <danielcdawson at gmail.com></creator>
+        <contributor>PlastikManiac (key icon)</contributor>
+        <translator>markh</translator>
+        <description>Voegt de mogelijkheid om wachtwoorden te maken en te bewerken toe aan de wachtwoordbeheerder.</description>
+      </RDF:Description>
+      <RDF:Description>
+        <locale>pl</locale>
+        <name>Saved Password Editor</name>
+        <creator>Daniel Dawson <danielcdawson at gmail.com></creator>
+        <contributor>PlastikManiac (key icon)</contributor>
+        <translator>Marcin Borowczyk "MarcinB"</translator>
+        <description>Dodaje możliwość tworzenia i edytowania wpisów haseł w menadżerze haseł.</description>
+      </RDF:Description>
+      <RDF:Description>
+        <locale>pt-BR</locale>
+        <name>Saved Password Editor</name>
+        <creator>Daniel Dawson <danielcdawson at gmail.com></creator>
+        <contributor>PlastikManiac (key icon)</contributor>
+        <translator>Edgard Dias Magalhaes "edgard.magalhaes"</translator>
+        <description>Acrescenta a capacidade de criar e editar entradas de senhas no gerenciador de senhas.</description>
+      </RDF:Description>
+      <RDF:Description>
+        <locale>pt-PT</locale>
+        <name>Saved Password Editor</name>
+        <creator>Daniel Dawson <danielcdawson at gmail.com></creator>
+        <contributor>PlastikManiac (key icon)</contributor>
+        <translator>Carlos Simão "lloco"</translator>
+        <description>Adiciona a habilidade de criar ou editar as senhas no gestor de senhas.</description>
+      </RDF:Description>
+      <RDF:Description>
+        <locale>ru</locale>
+        <name>Saved Password Editor</name>
+        <creator>Daniel Dawson <danielcdawson at gmail.com></creator>
+        <contributor>PlastikManiac (key icon)</contributor>
+        <translator>Пирятинский Виталий "PiVV"</translator>
+        <description>Добавляет возможность создания и редактирования паролей в менеджере паролей.</description>
+      </RDF:Description>
+      <RDF:Description>
+        <locale>sr</locale>
+        <name>Saved Password Editor</name>
+        <creator>Daniel Dawson <danielcdawson at gmail.com></creator>
+        <contributor>PlastikManiac (key icon)</contributor>
+        <translator>Charmed94</translator>
+        <translator>ДакСРБИЈА</translator>
+        <translator>Rancher</translator>
+        <description>Додаје могућност прављења и мењања лозинки у управљачу лозинкама.</description>
+      </RDF:Description>
+      <RDF:Description>
+        <locale>sv-SE</locale>
+        <name>Saved Password Editor</name>
+        <creator>Daniel Dawson <danielcdawson at gmail.com></creator>
+        <contributor>PlastikManiac (key icon)</contributor>
+        <translator>Mikael Hiort af Ornäs "Lakrits"</translator>
+        <description>Lägger till funktioner för att skapa och redigera lösenordsposter i lösenordshanteraren.</description>
+      </RDF:Description>
+      <RDF:Description>
+        <locale>tr</locale>
+        <name>Saved Password Editor</name>
+        <creator>Daniel Dawson <danielcdawson at gmail.com></creator>
+        <contributor>PlastikManiac (key icon)</contributor>
+        <translator>Anil Kilic - www.guncem.net "ua_anil"</translator>
+        <translator>nikneyim</translator>
+        <translator>omrakin</translator>
+        <description>Şifre yöneticisindeki şifrelere yaratma ve değiştirme yetenekleri ekler.</description>
+      </RDF:Description>
+      <RDF:Description>
+        <locale>vi</locale>
+        <name>Saved Password Editor</name>
+        <creator>Daniel Dawson <danielcdawson at gmail.com></creator>
+        <contributor>PlastikManiac (key icon)</contributor>
+        <translator>Nguyễn Hoàng Long at timelinelive.blogspot.com "longnh"</translator>
+        <description>Thêm tính năng tạo và thay đổi các mật khẩu trong cửa sổ quản lý mật khẩu.</description>
+      </RDF:Description>
+      <RDF:Description>
+        <locale>zh-CN</locale>
+        <name>Saved Password Editor</name>
+        <creator>Daniel Dawson <danielcdawson at gmail.com></creator>
+        <contributor>PlastikManiac (key icon)</contributor>
+        <translator>Loviny</translator>
+        <translator>yfdyh000 <yfdyh000 at gmail.com></translator>
+        <translator>arris</translator>
+        <translator>Wang.H.K "whknnn"</translator>
+        <description>在「已保存密码」管理中增加新建与编辑密码的功能。</description>
+      </RDF:Description>
+      <RDF:Description>
+        <locale>zh-TW</locale>
+        <name>Saved Password Editor</name>
+        <creator>Daniel Dawson <danielcdawson at gmail.com></creator>
+        <contributor>PlastikManiac (key icon)</contributor>
+        <translator>Velociraptor</translator>
+        <description>在密碼管理員中加入新增與編輯密碼的功能。</description>
+      </RDF:Description>
+    </localized>
+  </RDF:Description>
+</RDF:RDF>
diff --git a/locale/bg/browserOverlay.dtd b/locale/bg/browserOverlay.dtd
new file mode 100644
index 0000000..7c685e7
--- /dev/null
+++ b/locale/bg/browserOverlay.dtd
@@ -0,0 +1,14 @@
+<!-- Open Saved Passwords -->
+<!ENTITY savedpasswords.label "Записани пароли">
+<!ENTITY savedpasswords.accesskey "п">
+<!ENTITY savedpasswords.tooltip "Отваря диалог със записаните пароли">
+<!-- Context menu -->
+<!ENTITY ctx_savelogininfo.label "Запази входната информация">
+<!ENTITY ctx_savelogininfo.accesskey "З">
+<!ENTITY ctx_savelogininfo.tooltip "Добави запазена парола към тази форма">
+<!ENTITY ctx_editlogininfo.label "Редактиране на данните за вход">
+<!ENTITY ctx_editlogininfo.accesskey "Р">
+<!ENTITY ctx_editlogininfo.tooltip "Редактиране на запазена парола към тази форма">
+<!ENTITY ctx_deletelogininfo.label "Изтриване на данните за вход">
+<!ENTITY ctx_deletelogininfo.accesskey "И">
+<!ENTITY ctx_deletelogininfo.tooltip "Изтриване на запазена парола към тази форма">
diff --git a/locale/bg/prefwindow.dtd b/locale/bg/prefwindow.dtd
new file mode 100644
index 0000000..e4e4424
--- /dev/null
+++ b/locale/bg/prefwindow.dtd
@@ -0,0 +1,18 @@
+<!ENTITY prefwindow.title "Настройки на редактора">
+<!ENTITY displayMenuitem.label "Включи Редактора в меню Инструменти">
+<!ENTITY displayMenuitem.tooltip "Добавя "Запазени пароли" към менюто Инструменти за бързо стартиране на редактора">
+<!ENTITY renameMenuitemTo.label "Преименуване на отметката:">
+<!ENTITY renameMenuitemTo.tooltip "Enter something here to call the shortcut something other than "Saved Passwords", if you want to make it less obvious to meddlers. Erase the value to return to using "Saved Passwords". Warning: this is not a substitute for proper security; you should use a master password when possible if you need to protect your passwords.">
+<!ENTITY preselectCurrentSite.label "Preselect current site in Saved Passwords">
+<!ENTITY preselectCurrentSite.tooltip "Когато се отваря прозореца на приставката, да се избере и покажат данните за текущо отвореният сайт.">
+<!ENTITY alwaysShowPasswords.label "Винаги показвай паролите">
+<!ENTITY alwaysShowPasswords.tooltip "Ако е отметнато, ще се показва колоната с паролите при отваряне на диалоговия прозорец">
+<!ENTITY alwaysPromptForMasterPassword.label "Винаги питай за главната парола">
+<!ENTITY alwaysPromptForMasterPassword.tooltip "Prompts for master password when showing passwords in Saved Passwords. If enabled, this unavoidably causes a double prompt at least once per session. If disabled, in most cases you will not be prompted for the master password.">
+<!ENTITY passwordfield_caption.label "Поле за парола в редактиращия прозорец">
+<!ENTITY passwordfield_alwayshide.label "Винаги скривай паролата, когато се отваря полето за редактиране">
+<!ENTITY passwordfield_alwaysshow.label "Винаги показвай паролата, когато отваряш полето за редактиране">
+<!ENTITY passwordfield_rememberlast.label "Запомни последното положение">
+<!ENTITY passwordfield_rememberlast.tooltip "Покажи или скрий същото, както когато беше беше отворен предишния път прозорецът">
+<!ENTITY passwordfield_followspwin.label "Следвай запаметения списък с паролите">
+<!ENTITY passwordfield_followspwin.tooltip "Покажи, ако и само ако, паролите са показани в "Запазени пароли"">
diff --git a/locale/bg/pwdedit.dtd b/locale/bg/pwdedit.dtd
new file mode 100644
index 0000000..0a09548
--- /dev/null
+++ b/locale/bg/pwdedit.dtd
@@ -0,0 +1,36 @@
+<!ENTITY savedpasswordeditor.title "Редактор на пароли">
+<!ENTITY signontype.label "Тип">
+<!ENTITY type_form.label "Уеб форма">
+<!ENTITY type_form.accesskey "У">
+<!ENTITY type_form.tooltip "Форма съдържаща се в уеб страница.">
+<!ENTITY type_annotated.label "Анотация">
+<!ENTITY type_annotated.accesskey "А">
+<!ENTITY type_annotated.tooltip "Входна форма изискваща идентификация на услугата (напр. HTTP удостоверяване)">
+<!ENTITY hostname.label "Хост">
+<!ENTITY hostname.tooltip "Протокол/Име на хост за който е приложена паролата (напр. http://www.example.com)">
+<!ENTITY formSubmitURL.label "Подаване на префикс">
+<!ENTITY formSubmitURL.tooltip "Префикс на адреса на формата за подаване">
+<!ENTITY annotation.label "Анотация">
+<!ENTITY annotation.tooltip "Допълнителен низ определящ услугата (напр. HTTP realm)">
+<!ENTITY username.label "Потребителско име">
+<!ENTITY username.tooltip "Потр. име за запомняне">
+<!ENTITY password.label "Парола">
+<!ENTITY password.tooltip "Парола за запомяне">
+<!ENTITY usernameField.label "Име на поле за потр. име">
+<!ENTITY usernameField.tooltip "Атрибутът за името за съответната област за потребителско име във формата">
+<!ENTITY passwordField.label "Име на поле за парола">
+<!ENTITY passwordField.tooltip "Атрибут на името за съответното поле за парола във формата">
+<!ENTITY showPassword.label "Покажи">
+<!ENTITY showPassword.accesskey "П">
+<!ENTITY showPassword.tooltip "Превкл. видимостта на паролите">
+<!ENTITY hidePassword.label "Скрий">
+<!ENTITY hidePassword.accesskey "С">
+<!ENTITY guessfrompage.label "Познай от текущата страница">
+<!ENTITY guessfrompage.accesskey "П">
+<!ENTITY guessfrompage.tooltip "Попълнете тази форма на базата на вероятната форма вход на текущата страница">
+<!ENTITY prevform.label "Предишно поле">
+<!ENTITY prevform.accesskey "П">
+<!ENTITY prevform.tooltip "Опитай предишно поле от страницата">
+<!ENTITY nextform.label "Следващо поле">
+<!ENTITY nextform.accesskey "С">
+<!ENTITY nextform.tooltip "Опитай следващото поле от страницата">
diff --git a/locale/bg/pwdedit.properties b/locale/bg/pwdedit.properties
new file mode 100644
index 0000000..f3c8fbe
--- /dev/null
+++ b/locale/bg/pwdedit.properties
@@ -0,0 +1,9 @@
+# TRANSLATORS: \n stands for a line break, and %S is a placeholder
+# for a string to be inserted.
+# SAVED PASSWORD EDITOR DIALOG
+newlogin=Създаване на нов вход
+clonelogin=Клониране на вписването
+editlogin=Редактиране на вход
+editmultlogin=Редактиране на многократни логванета
+nologinform=Няма намерена подходяща форма за вход на текущата страница!
+multduplogins=Това ще доведе до дублирани записи. За да завършите редактирането, трябва да оставите поне едно поле (хост, префикс, HTTP realm или потребителско име) празно, като изтриете въведените стойности.
diff --git a/locale/bg/pwdmgrOverlay.dtd b/locale/bg/pwdmgrOverlay.dtd
new file mode 100644
index 0000000..1970eb8
--- /dev/null
+++ b/locale/bg/pwdmgrOverlay.dtd
@@ -0,0 +1,11 @@
+<!-- TRANSLATORS - be aware that these access keys are used in several places:
+     the context menu introduced in Fx 4.0, my menu-button, and as shortcut
+     keys for the whole window. Make sure your choices don't conflict in any of
+     those contexts. 
+-->
+<!ENTITY newentry.label "Нов запис">
+<!ENTITY newentry.accesskey "Н">
+<!ENTITY editentry.label "Редактиране">
+<!ENTITY editentry.accesskey "Р">
+<!ENTITY cloneentry.label "Клониране">
+<!ENTITY cloneentry.accesskey "К">
diff --git a/locale/bg/pwdmgrOverlay.properties b/locale/bg/pwdmgrOverlay.properties
new file mode 100644
index 0000000..7fdcabe
--- /dev/null
+++ b/locale/bg/pwdmgrOverlay.properties
@@ -0,0 +1,4 @@
+# TRANSLATORS: \n stands for a line break, and %S is a placeholder
+# for a string to be inserted.
+# POPUP MESSAGE WHEN ADDING/MODIFYING AN ENTRY FAILS
+badnewentry=Появи се грешка:\n %S\nВероятно се дублира съществуващ запис.
diff --git a/locale/bg/spe.properties b/locale/bg/spe.properties
new file mode 100644
index 0000000..56e6f7b
--- /dev/null
+++ b/locale/bg/spe.properties
@@ -0,0 +1,10 @@
+# TRANSLATORS: \n stands for a line break, and %S is a placeholder
+# for a string to be inserted.
+savedpasswordeditor=Редактор на пароли
+error=Грешка
+nologinstoedit=Няма входни данни за редактиране!
+nologinstodelete=Няма входни данни за изтриване!
+logininfosaved=Входните данни са запазени
+logininfochanged=Входните данни са променени
+logininfodeleted=Входните данни са изтрити
+failed=Получи се грешка:\n %S
diff --git a/locale/bg/welcome.dtd b/locale/bg/welcome.dtd
new file mode 100644
index 0000000..b539869
--- /dev/null
+++ b/locale/bg/welcome.dtd
@@ -0,0 +1,50 @@
+<!-- LOCALE
+
+     Format: language-COUNTRY according to RFC 1766
+     ( http://www.ietf.org/rfc/rfc1766.txt ). COUNTRY is for dialectal
+     variation and is not necessary for locales without such variation. You can
+     probably copy the locale tag of your localized Mozilla application
+     (Firefox, etc.). Examples:
+
+     en-US  - English in US
+     en-GB  - English in Great Britain
+     de-DE  - German in Germany
+     ru     - Russian (no specific country)
+
+-->
+<!ENTITY locale "bg">
+<!-- LAYOUT DIRECTION: "LTR" for left-to-right; "RTL" for right-to-left.
+     Generally, this should follow the direction of your writing system. 
+-->
+<!ENTITY layoutdirection "LTR">
+<!-- WELCOME PAGE
+
+     This needs a little care. There is some embedded markup (sorry about
+     that). Of course, don't translate any text inside tags. The & lt; and
+     & gt; codes produce < and > respectively, but don't reverse them; that
+     will be done automatically for right-to-left text. & quot; produces a
+     double quote character. Please substitute whatever is appropriate in your
+     locale, but if you are editing this file directly, as opposed to using
+     BabelZilla's interface, anything other than <, >, ", ', and & must be in
+     UTF-8 or use numerical entities (e.g. & #x89ab;); named entities other
+     than the ones for those five characters (& lt; & gt; & quot; & apos;
+     & amp;) are NOT defined in this context. Double quote characters must be
+     encoded as & quot; (again, if you are editing directly), since the
+     strings are already double-quote delimited.
+
+-->
+<!ENTITY welcometospe "Добре дошли в Редактора за пароли!">
+<!-- Paragraph 1, Firefox version -->
+<!ENTITY welcomepara1_fx "Благодарим Ви, че използвате <a id='addonlink'>Редактора на запазени пароли</a>. За да влезете в екрана за редактиране, отидете на Инструменти/Настройки или на Редактиране/Преференции (в зависимост от вашата операционна система), изберете панела "Сигурност", след това щракнете на бутона "Показване на паролите...". В диалоговия прозорец вече има нов бутон, който има няколко възможности - "Нова", "Редактиране" и "Клонир [...]
+<!-- Paragraph 1, SeaMonkey version -->
+<!-- XXXXX TRANSLATORS: Please pay attention! XXXXX
+     XXXXX SeaMonkey DOES NOT HAVE View > Toolbars > Customize…
+           among other things XXXXX
+     XXXXX Be careful if you copy and paste. XXXXX 
+-->
+<!ENTITY welcomepara1_sm "Благодарим Ви, че използвате <a id='addonlink'>Редактора на пароли</a>. За да влезете в екрана за редактиране, отидете на Tools/Options или на Edit/Preferences (в зависимост от вашата операционна система), панела "Privacy & Security", а след това щракнете върху бутона "Manage Stored Passwords". В диалоговия прозорец вече има нов бутон, който има няколко възможности - "Нова", "Редактиране" и "Клониране". За Ва [...]
+<!-- Paragraph 2 -->
+<!-- The "span" element here is replaced by "Firefox", "Thunderbird", etc. -->
+<!ENTITY welcomepara2 "Имайте предвид, че диалоговият прозорец "Запазени пароли" е съставна част от <span id='appname'></span> и не е в това разширение, с изключение на два допълнителни бутона. Бутонът в лентата с инструменти е предоставен само за удобство, с надеждата, че някои потребители на това разширение ще искат да имат  по-чест достъп до диалоговия прозорец, отколкото по друг начин.">
+<!-- Paragraph 3 -->
+<!ENTITY welcomepara3 "Можете да редактирате данните за вход и чрез контекстното меню на някое от полетата на входната форма.">
diff --git a/locale/de/browserOverlay.dtd b/locale/de/browserOverlay.dtd
new file mode 100644
index 0000000..c0e57bb
--- /dev/null
+++ b/locale/de/browserOverlay.dtd
@@ -0,0 +1,14 @@
+<!-- Open Saved Passwords -->
+<!ENTITY savedpasswords.label "Gespeicherte Passwörter">
+<!ENTITY savedpasswords.accesskey "p">
+<!ENTITY savedpasswords.tooltip "Öffne den Gespeicherte-Passwörter-Dialog">
+<!-- Context menu -->
+<!ENTITY ctx_savelogininfo.label "Anmeldedaten speichern">
+<!ENTITY ctx_savelogininfo.accesskey "S">
+<!ENTITY ctx_savelogininfo.tooltip "Füge ein gespeichertes Passwort für dieses Formular hinzu">
+<!ENTITY ctx_editlogininfo.label "Anmeldedaten ändern">
+<!ENTITY ctx_editlogininfo.accesskey "E">
+<!ENTITY ctx_editlogininfo.tooltip "Ändere ein gespeichertes Passwort für dieses Formular">
+<!ENTITY ctx_deletelogininfo.label "Anmeldedaten löschen">
+<!ENTITY ctx_deletelogininfo.accesskey "D">
+<!ENTITY ctx_deletelogininfo.tooltip "Lösche ein gespeichertes Passwort für dieses Formular">
diff --git a/locale/de/prefwindow.dtd b/locale/de/prefwindow.dtd
new file mode 100644
index 0000000..7988c00
--- /dev/null
+++ b/locale/de/prefwindow.dtd
@@ -0,0 +1,18 @@
+<!ENTITY prefwindow.title "Einstellungen für den Passworteditor">
+<!ENTITY displayMenuitem.label "Schnellzugriff in Menüs einfügen">
+<!ENTITY displayMenuitem.tooltip "Fügt "Gespeicherte Passwörter" zum Aufruf der Passwortverwaltung dem Extras-Menü und dem Firefox-Button unter Windows und Linux hinzu">
+<!ENTITY renameMenuitemTo.label "Kürzel umbenennen in:">
+<!ENTITY renameMenuitemTo.tooltip "Geben Sie hier etwas ein, um dem Kürzel einen anderen Namen als "Gespeicherte Passwörter" zu geben, wenn Sie es Dritten gegenüber nicht so offensichtlich machen möchten. Löschen Sie den Wert, um wieder "Gespeicherte Passwörter" zu nutzen. Warnung: Dies ist kein Ersatz für akzeptable Sicherheit; Sie sollten ein Hauptpasswort verwenden, wenn möglich, wenn Sie Ihre Passwörter schützen möchten.">
+<!ENTITY preselectCurrentSite.label "Derzeitige Seite in "Gespeicherte Passwörter" vorauswählen">
+<!ENTITY preselectCurrentSite.tooltip "Beim Öffnen der gespeicherten Passwörter wird dies umgehend zu der momentan angezeigten Website scrollen.">
+<!ENTITY alwaysShowPasswords.label "Passwörter immer zeigen">
+<!ENTITY alwaysShowPasswords.tooltip "Wenn aktiviert, wird der Passworteditor die Passwortspalte anzeigen, wenn der Dialog für gespeicherte Passwörter geöffnet wird, und das Passwort anzeigen, wenn der Änderungsdialog geöffnet wird.">
+<!ENTITY alwaysPromptForMasterPassword.label "Immer nach dem Hauptpasswort fragen">
+<!ENTITY alwaysPromptForMasterPassword.tooltip "Fragt beim Anzeigen der Passwörter nach dem Hauptpasswort. Wenn aktiviert, erzeugt dies unvermeidlich mindestens einmal pro Sitzung eine doppelte Abfrage. Wenn deaktiviert, werden Sie in den meisten Fällen nicht nach dem Hauptpasswort gefragt.">
+<!ENTITY passwordfield_caption.label "Passwortfeld im Editorfenster">
+<!ENTITY passwordfield_alwayshide.label "Passwort beim Öffnen des Editorfensters immer verstecken">
+<!ENTITY passwordfield_alwaysshow.label "Passwort beim Öffnen des Editorfensters immer zeigen">
+<!ENTITY passwordfield_rememberlast.label "Letzten Zustand merken">
+<!ENTITY passwordfield_rememberlast.tooltip "Zeigen oder verstecken wie beim letzten Öffnen des Fensters">
+<!ENTITY passwordfield_followspwin.label "Liste der gespeicherten Passwörter folgen">
+<!ENTITY passwordfield_followspwin.tooltip "Nur dann zeigen, wenn Passwörter derzeit im Gespeicherte-Passwörter-Fenster angezeigt werden">
diff --git a/locale/de/pwdedit.dtd b/locale/de/pwdedit.dtd
new file mode 100644
index 0000000..e40fb41
--- /dev/null
+++ b/locale/de/pwdedit.dtd
@@ -0,0 +1,36 @@
+<!ENTITY savedpasswordeditor.title "Passworteditor">
+<!ENTITY signontype.label "Typ">
+<!ENTITY type_form.label "Webformular">
+<!ENTITY type_form.accesskey "W">
+<!ENTITY type_form.tooltip "Ein Formular auf einer Webseite">
+<!ENTITY type_annotated.label "Anmerkung">
+<!ENTITY type_annotated.accesskey "A">
+<!ENTITY type_annotated.tooltip "Anmeldedaten, die zusätlich zum Hostnamen eine Zeichenkette zur Identifizierung benötigen (z.B. HTTP-Authentifizierung)">
+<!ENTITY hostname.label "Host">
+<!ENTITY hostname.tooltip "Protokoll/Hostname, für das/den das Passwort gilt (z.B. http://www.beispiel.de)">
+<!ENTITY formSubmitURL.label "Übermittlungspräfix">
+<!ENTITY formSubmitURL.tooltip "Präfix der Formularzieladresse">
+<!ENTITY annotation.label "Anmerkung">
+<!ENTITY annotation.tooltip "Zusätzliche Zeichenkette, die den Dienst zur Authentifizierung kennzeichnet (z.B. HTTP-Bereich)">
+<!ENTITY username.label "Benutzername">
+<!ENTITY username.tooltip "Der zu speichernde Benutzername">
+<!ENTITY password.label "Passwort">
+<!ENTITY password.tooltip "Das zu speichernde Passwort">
+<!ENTITY usernameField.label "Feldname Benutzername">
+<!ENTITY usernameField.tooltip "Das name-Attribut für das passende Benutzernamensfeld im Formular">
+<!ENTITY passwordField.label "Feldname Passwort">
+<!ENTITY passwordField.tooltip "Das name-Attribut für das passende Passwortfeld im Formular">
+<!ENTITY showPassword.label "Zeigen">
+<!ENTITY showPassword.accesskey "Z">
+<!ENTITY showPassword.tooltip "Passwortsichtbarkeit umschalten">
+<!ENTITY hidePassword.label "Verstecken">
+<!ENTITY hidePassword.accesskey "V">
+<!ENTITY guessfrompage.label "Von aktueller Seite holen">
+<!ENTITY guessfrompage.accesskey "h">
+<!ENTITY guessfrompage.tooltip "Füllt dieses Formular anhand eines vermuteten Anmeldeformulars auf der aktuellen Seite aus">
+<!ENTITY prevform.label "Vorheriges Formular">
+<!ENTITY prevform.accesskey "V">
+<!ENTITY prevform.tooltip "Das vorherige Formular auf der Webseite ausprobieren">
+<!ENTITY nextform.label "Nächstes Formular">
+<!ENTITY nextform.accesskey "N">
+<!ENTITY nextform.tooltip "Das nächste Formular auf der Webseite ausprobieren">
diff --git a/locale/de/pwdedit.properties b/locale/de/pwdedit.properties
new file mode 100644
index 0000000..c91c0ff
--- /dev/null
+++ b/locale/de/pwdedit.properties
@@ -0,0 +1,9 @@
+# TRANSLATORS: \n stands for a line break, and %S is a placeholder
+# for a string to be inserted.
+# SAVED PASSWORD EDITOR DIALOG
+newlogin=Neues Login erstellen
+clonelogin=Klone Anmeldedaten
+editlogin=Login ändern
+editmultlogin=Mehrere Logins ändern
+nologinform=Kein passendes Loginformular auf der aktuellen Seite gefunden!
+multduplogins=Dies würde in doppelten Logins resultieren. Um die Änderung vorzunehmen, müssen Sie mindestens eines der Felder in undefiniertem Zustand belassen, indem Sie die eingegebenen Werte löschen.
diff --git a/locale/de/pwdmgrOverlay.dtd b/locale/de/pwdmgrOverlay.dtd
new file mode 100644
index 0000000..865ab2a
--- /dev/null
+++ b/locale/de/pwdmgrOverlay.dtd
@@ -0,0 +1,11 @@
+<!-- TRANSLATORS - be aware that these access keys are used in several places:
+     the context menu introduced in Fx 4.0, my menu-button, and as shortcut
+     keys for the whole window. Make sure your choices don't conflict in any of
+     those contexts. 
+-->
+<!ENTITY newentry.label "Neu">
+<!ENTITY newentry.accesskey "N">
+<!ENTITY editentry.label "Ändern">
+<!ENTITY editentry.accesskey "e">
+<!ENTITY cloneentry.label "Klonen">
+<!ENTITY cloneentry.accesskey "l">
diff --git a/locale/de/pwdmgrOverlay.properties b/locale/de/pwdmgrOverlay.properties
new file mode 100644
index 0000000..0d98220
--- /dev/null
+++ b/locale/de/pwdmgrOverlay.properties
@@ -0,0 +1,4 @@
+# TRANSLATORS: \n stands for a line break, and %S is a placeholder
+# for a string to be inserted.
+# POPUP MESSAGE WHEN ADDING/MODIFYING AN ENTRY FAILS
+badnewentry=Es ist ein Fehler aufgetreten:\n %S\nHaben Sie versucht, einen doppelten Eintrag zu erstellen?
diff --git a/locale/de/spe.properties b/locale/de/spe.properties
new file mode 100644
index 0000000..f414567
--- /dev/null
+++ b/locale/de/spe.properties
@@ -0,0 +1,10 @@
+# TRANSLATORS: \n stands for a line break, and %S is a placeholder
+# for a string to be inserted.
+savedpasswordeditor=Gespeicherte Passwörter ändern
+error=Fehler
+nologinstoedit=Keine Anmeldedaten zum Ändern!
+nologinstodelete=Keine Anmeldedaten zum Löschen!
+logininfosaved=Anmeldedaten gespeichert
+logininfochanged=Anmeldedaten geändert
+logininfodeleted=Anmeldedaten gelöscht
+failed=Der Vorgang ist fehlgeschlagen:\n %S
diff --git a/locale/de/welcome.dtd b/locale/de/welcome.dtd
new file mode 100644
index 0000000..6c4a3f2
--- /dev/null
+++ b/locale/de/welcome.dtd
@@ -0,0 +1,50 @@
+<!-- LOCALE
+
+     Format: language-COUNTRY according to RFC 1766
+     ( http://www.ietf.org/rfc/rfc1766.txt ). COUNTRY is for dialectal
+     variation and is not necessary for locales without such variation. You can
+     probably copy the locale tag of your localized Mozilla application
+     (Firefox, etc.). Examples:
+
+     en-US  - English in US
+     en-GB  - English in Great Britain
+     de-DE  - German in Germany
+     ru     - Russian (no specific country)
+
+-->
+<!ENTITY locale "de">
+<!-- LAYOUT DIRECTION: "LTR" for left-to-right; "RTL" for right-to-left.
+     Generally, this should follow the direction of your writing system. 
+-->
+<!ENTITY layoutdirection "LTR">
+<!-- WELCOME PAGE
+
+     This needs a little care. There is some embedded markup (sorry about
+     that). Of course, don't translate any text inside tags. The & lt; and
+     & gt; codes produce < and > respectively, but don't reverse them; that
+     will be done automatically for right-to-left text. & quot; produces a
+     double quote character. Please substitute whatever is appropriate in your
+     locale, but if you are editing this file directly, as opposed to using
+     BabelZilla's interface, anything other than <, >, ", ', and & must be in
+     UTF-8 or use numerical entities (e.g. & #x89ab;); named entities other
+     than the ones for those five characters (& lt; & gt; & quot; & apos;
+     & amp;) are NOT defined in this context. Double quote characters must be
+     encoded as & quot; (again, if you are editing directly), since the
+     strings are already double-quote delimited.
+
+-->
+<!ENTITY welcometospe "Willkommen im Passworteditor">
+<!-- Paragraph 1, Firefox version -->
+<!ENTITY welcomepara1_fx "Danke, dass Sie den <a id='addonlink'>Passworteditor</a> verwenden. Sie können die Editorfunktionen via Extras > Einstellungen oder Bearbeiten > Einstellungen (abhängig von Ihrem Betriebssystem) aufrufen, indem Sie anschließend den Tab "Sicherheit" öffnen und dort den Button "Gespeicherte Passwörter…" betätigen. Sie können dem Editor auch einfach aus dem Menü "Extras" oder (in Firefox 4 oder höher unter Windows) dem Firefox-Me [...]
+<!-- Paragraph 1, SeaMonkey version -->
+<!-- XXXXX TRANSLATORS: Please pay attention! XXXXX
+     XXXXX SeaMonkey DOES NOT HAVE View > Toolbars > Customize…
+           among other things XXXXX
+     XXXXX Be careful if you copy and paste. XXXXX 
+-->
+<!ENTITY welcomepara1_sm "Danke, dass Sie den <a id='addonlink'>Passworteditor</a> verwenden. Sie können die Editorfunktionen via Extras > Einstellungen… oder Bearbeiten > Einstellungen (abhängig von Ihrem Betriebssystem) aufrufen, indem Sie anschließend den "Passwörter"-Dialog unter "Datenschutz & Sicherheit" aufrufen und dort die Schaltfläche "Gespeicherte Passwörter verwalten" betätigen. Sie können dem Editor auch einfach aus dem Menü "Extr [...]
+<!-- Paragraph 2 -->
+<!-- The "span" element here is replaced by "Firefox", "Thunderbird", etc. -->
+<!ENTITY welcomepara2 "Beachten Sie, dass der Gespeicherte-Passwörter-Dialog eine Kernkomponente von <span id='appname'></span> ist und abgesehen von den zwei hinzugefügten Schaltflächen nicht von dieser Erweiterung bereitgestellt wird. Die Symbolleistenschaltfläche wird nur der Bequemlichkeit wegen in der Erwartung angeboten, dass einige Benutzer dieser Erweiterung den Dialog nun weit häufiger nutzen werden, als es sonst der Fall wäre.">
+<!-- Paragraph 3 -->
+<!ENTITY welcomepara3 "Sie können auch Anmeldedaten, die mit einem bestimmten Webformular verknüpft sind, ändern, indem Sie mit der rechten Maustaste auf eines seiner Felder klicken und eine Aktion auswählen.">
diff --git a/locale/dsb/browserOverlay.dtd b/locale/dsb/browserOverlay.dtd
new file mode 100644
index 0000000..af8b3f1
--- /dev/null
+++ b/locale/dsb/browserOverlay.dtd
@@ -0,0 +1,14 @@
+<!-- Open Saved Passwords -->
+<!ENTITY savedpasswords.label "Składowane gronidła">
+<!ENTITY savedpasswords.accesskey "S">
+<!ENTITY savedpasswords.tooltip "Dialog składowanych gronidłow wócyniś">
+<!-- Context menu -->
+<!ENTITY ctx_savelogininfo.label "Pśizjawjeńske informacije składowaś">
+<!ENTITY ctx_savelogininfo.accesskey "P">
+<!ENTITY ctx_savelogininfo.tooltip "Składowane gronidło za toś ten formular pśidaś">
+<!ENTITY ctx_editlogininfo.label "Pśizjawjeńske informacije wobźěłaś">
+<!ENTITY ctx_editlogininfo.accesskey "z">
+<!ENTITY ctx_editlogininfo.tooltip "Składowane gronidło za toś ten formular wobźěłaś">
+<!ENTITY ctx_deletelogininfo.label "Pśizjawjeńske informacije wulašowaś">
+<!ENTITY ctx_deletelogininfo.accesskey "l">
+<!ENTITY ctx_deletelogininfo.tooltip "Składowane gronidło za toś ten formular wulašowaś">
diff --git a/locale/dsb/prefwindow.dtd b/locale/dsb/prefwindow.dtd
new file mode 100644
index 0000000..e7061b4
--- /dev/null
+++ b/locale/dsb/prefwindow.dtd
@@ -0,0 +1,18 @@
+<!ENTITY prefwindow.title "Nastajenja Saved Password Editor">
+<!ENTITY displayMenuitem.label "Skrotconku do menijow zapśimjeś">
+<!ENTITY displayMenuitem.tooltip "Pśidawa zapisk "Składowane gronidła" menijoju Rědy a menijoju pód tłocaškom Firefox ako spěšny wótkaz  k zastojnikoju gronidłow">
+<!ENTITY renameMenuitemTo.label "Skrotconku pśemjeniś do:">
+<!ENTITY renameMenuitemTo.tooltip "Zapódajśo něco how, aby wy druge skrotconku nježli za "Skłaźone gronidła" wubrał, jolic cośo to za njewopšawnjonych mjenjej widobnje cynił. Wulašujśo gódnotu, aby wy zasej "Skłaźone gronidła" wužywał. Glědajśo: to njejo narownanje za napšawdnu wěstotu; wy by měł głowne gronidło wužywaś, jolic to jo móžno, jolic musyśo swóje gronidła šćitaś.">
+<!ENTITY preselectCurrentSite.label "Aktualne sedło w "Skaźone gronidła" do togo wubraś">
+<!ENTITY preselectCurrentSite.tooltip "Gaž Skłaźone gronidła se wócynjaju, to wubjerjo ned woglědane sedło a buźo k sedłoju w aktualnem rejtarku wobglědowaka kulaś.">
+<!ENTITY alwaysShowPasswords.label "Gronidła pśecej pokazaś">
+<!ENTITY alwaysShowPasswords.tooltip "Jolic to jo zmóžnjone, Saved passwords Editor pokažo słup gronidłow, gaž dialog skłaźonych gronidłow se wócynja a pokažo gronidło, gaž dialog editora se wócynja.">
+<!ENTITY alwaysPromptForMasterPassword.label "Pśecej głowne gronidło se pominaś">
+<!ENTITY alwaysPromptForMasterPassword.tooltip "Pomina se głowne gronidło, gaž gronidła pokazuju se w skłaźonych gronidłach. Jolic to jo zmóžnjone, pokažo se dwojne napominanje nanejmjenjej raz na pósejźenje. Jolic to jo znjemóžnjone, w nejwěcej padow was njenapominaju, głowne gronidło zapódaś.">
+<!ENTITY passwordfield_caption.label "Gronidłowe pólo we woknje editora">
+<!ENTITY passwordfield_alwayshide.label "Pśecej gronidło schowaś, gaž wokno editora se wócynja">
+<!ENTITY passwordfield_alwaysshow.label "Pśecej gronidło pokazaś, gaž wokno editora se wócynja">
+<!ENTITY passwordfield_rememberlast.label "Slědny staw se spomnjeś">
+<!ENTITY passwordfield_rememberlast.tooltip "Ten samy staw pokazaś abo schowaś, ako slědny raz, gaž wokno jo wócinjone było">
+<!ENTITY passwordfield_followspwin.label "Lisćinje składowanych gronidło slědowaś">
+<!ENTITY passwordfield_followspwin.tooltip "Pokazaś, jolic a jano jolic gronidła se tuchylu we woknje składowanych gronidłow pokazuju">
diff --git a/locale/dsb/pwdedit.dtd b/locale/dsb/pwdedit.dtd
new file mode 100644
index 0000000..31b7611
--- /dev/null
+++ b/locale/dsb/pwdedit.dtd
@@ -0,0 +1,36 @@
+<!ENTITY savedpasswordeditor.title "Saved Password Editor">
+<!ENTITY signontype.label "Typ">
+<!ENTITY type_form.label "Webformular">
+<!ENTITY type_form.accesskey "W">
+<!ENTITY type_form.tooltip "Formular we webboku">
+<!ENTITY type_annotated.label "Komentar">
+<!ENTITY type_annotated.accesskey "K">
+<!ENTITY type_annotated.tooltip "Pśizjawjenje, kótarež pomina se znamuškowy rjeśazk pśidatnje k hostoju, aby identficěrowało słužbu (na pś. HTTP-awtentifikacija)">
+<!ENTITY hostname.label "Host">
+<!ENTITY hostname.tooltip "Protokol/hostowe mě, na kótarež se gronidło nałožujo (na pś. http://www.pśikład.de)">
+<!ENTITY formSubmitURL.label "Słański prefiks">
+<!ENTITY formSubmitURL.tooltip "Prefiks adrese wótpósłanja formulara">
+<!ENTITY annotation.label "Komentar">
+<!ENTITY annotation.tooltip "Pśidatny znamuškowy rjeśazk, kótaryž identificěrujo awtentifikacisku słužbu (na pś. HTTP-wobcerk)">
+<!ENTITY username.label "Wužywarske mě">
+<!ENTITY username.tooltip "Wužywarske mě, kótarež ma se spomnjeś">
+<!ENTITY password.label "Gronidło">
+<!ENTITY password.tooltip "Gronidło, kótarež ma se spomnjeś">
+<!ENTITY usernameField.label "Mě wužywarskego póla">
+<!ENTITY usernameField.tooltip "Atribut name za pśigódne pólo wužywarskego mjenja w formularje">
+<!ENTITY passwordField.label "Mě gronidłowego póla">
+<!ENTITY passwordField.tooltip "Atribut name za pśigódne gronidłowe pólo w formularje">
+<!ENTITY showPassword.label "Pokazaś">
+<!ENTITY showPassword.accesskey "P">
+<!ENTITY showPassword.tooltip "Widobnosć gronidła pśešaltowaś">
+<!ENTITY hidePassword.label "Schowaś">
+<!ENTITY hidePassword.accesskey "S">
+<!ENTITY guessfrompage.label "Z aktualnego boka wugódaś">
+<!ENTITY guessfrompage.accesskey "b">
+<!ENTITY guessfrompage.tooltip "Toś ten formular na zakłaźe přigódnego formulara na aktualnem boku wupołniś">
+<!ENTITY prevform.label "Pjerwješny formular">
+<!ENTITY prevform.accesskey "w">
+<!ENTITY prevform.tooltip "Pjerwjejšny formular wót boka wopytaś">
+<!ENTITY nextform.label "Pśiducy formular">
+<!ENTITY nextform.accesskey "u">
+<!ENTITY nextform.tooltip "Pśiducy formular wót boka wopytaś">
diff --git a/locale/dsb/pwdedit.properties b/locale/dsb/pwdedit.properties
new file mode 100644
index 0000000..d462cd0
--- /dev/null
+++ b/locale/dsb/pwdedit.properties
@@ -0,0 +1,9 @@
+# TRANSLATORS: \n stands for a line break, and %S is a placeholder
+# for a string to be inserted.
+# SAVED PASSWORD EDITOR DIALOG
+newlogin=Nowe pśizjawjenje napóraś
+clonelogin=Pśizjawjenje klonowaś
+editlogin=Pśizjawjenje wobźěłaś
+editmultlogin=Někotare pśizjawjenja wobźěłaś
+nologinform=Žeden pśigódny pśizjawjeński formular na aktualnem boku namakany!
+multduplogins=To by mógło k dwójnym pśizjawjenjam wjasć. Aby wy wobźěłanje dokóńcył, musyśo nanejmjenjej jadne z pólow (host, słański prefiks, komentar abo wužywarske mě, jolic nałožujobne)  w njewěstem stawje wóstajiś, z tym až lašujośo gódnoty, kótarež sćo zapódał.
diff --git a/locale/dsb/pwdmgrOverlay.dtd b/locale/dsb/pwdmgrOverlay.dtd
new file mode 100644
index 0000000..0c1ad89
--- /dev/null
+++ b/locale/dsb/pwdmgrOverlay.dtd
@@ -0,0 +1,11 @@
+<!-- TRANSLATORS - be aware that these access keys are used in several places:
+     the context menu introduced in Fx 4.0, my menu-button, and as shortcut
+     keys for the whole window. Make sure your choices don't conflict in any of
+     those contexts. 
+-->
+<!ENTITY newentry.label "Nowy">
+<!ENTITY newentry.accesskey "N">
+<!ENTITY editentry.label "Wobźěłaś">
+<!ENTITY editentry.accesskey "W">
+<!ENTITY cloneentry.label "Klonowaś">
+<!ENTITY cloneentry.accesskey "l">
diff --git a/locale/dsb/pwdmgrOverlay.properties b/locale/dsb/pwdmgrOverlay.properties
new file mode 100644
index 0000000..1fd4858
--- /dev/null
+++ b/locale/dsb/pwdmgrOverlay.properties
@@ -0,0 +1,4 @@
+# TRANSLATORS: \n stands for a line break, and %S is a placeholder
+# for a string to be inserted.
+# POPUP MESSAGE WHEN ADDING/MODIFYING AN ENTRY FAILS
+badnewentry=Zmólka jo nastała:\n %S\nSćo wopytał drugi pśizjawjeński zapisk napóraś?
diff --git a/locale/dsb/spe.properties b/locale/dsb/spe.properties
new file mode 100644
index 0000000..adf3f23
--- /dev/null
+++ b/locale/dsb/spe.properties
@@ -0,0 +1,10 @@
+# TRANSLATORS: \n stands for a line break, and %S is a placeholder
+# for a string to be inserted.
+savedpasswordeditor=Saved Password Editor
+error=Zmólka
+nologinstoedit=Njejsu žedne pśizjawjenja za wobźěłanje!
+nologinstodelete=Njejsu žedne pśizjawjenja za lašowanje!
+logininfosaved=Pśizjawjeńske informacije składowane
+logininfochanged=Pśizjawjeńske informacije změnjone
+logininfodeleted=Pśizjawjeńske informacije wulašowane
+failed=Operacija jo se njeraźiła:\n %S
diff --git a/locale/dsb/welcome.dtd b/locale/dsb/welcome.dtd
new file mode 100644
index 0000000..0ddf580
--- /dev/null
+++ b/locale/dsb/welcome.dtd
@@ -0,0 +1,50 @@
+<!-- LOCALE
+
+     Format: language-COUNTRY according to RFC 1766
+     ( http://www.ietf.org/rfc/rfc1766.txt ). COUNTRY is for dialectal
+     variation and is not necessary for locales without such variation. You can
+     probably copy the locale tag of your localized Mozilla application
+     (Firefox, etc.). Examples:
+
+     en-US  - English in US
+     en-GB  - English in Great Britain
+     de-DE  - German in Germany
+     ru     - Russian (no specific country)
+
+-->
+<!ENTITY locale "dsb">
+<!-- LAYOUT DIRECTION: "LTR" for left-to-right; "RTL" for right-to-left.
+     Generally, this should follow the direction of your writing system. 
+-->
+<!ENTITY layoutdirection "LTR">
+<!-- WELCOME PAGE
+
+     This needs a little care. There is some embedded markup (sorry about
+     that). Of course, don't translate any text inside tags. The & lt; and
+     & gt; codes produce < and > respectively, but don't reverse them; that
+     will be done automatically for right-to-left text. & quot; produces a
+     double quote character. Please substitute whatever is appropriate in your
+     locale, but if you are editing this file directly, as opposed to using
+     BabelZilla's interface, anything other than <, >, ", ', and & must be in
+     UTF-8 or use numerical entities (e.g. & #x89ab;); named entities other
+     than the ones for those five characters (& lt; & gt; & quot; & apos;
+     & amp;) are NOT defined in this context. Double quote characters must be
+     encoded as & quot; (again, if you are editing directly), since the
+     strings are already double-quote delimited.
+
+-->
+<!ENTITY welcometospe "Witajśo k Saved Password Editor">
+<!-- Paragraph 1, Firefox version -->
+<!ENTITY welcomepara1_fx "Źěkujomy se wam, až wužywaśo <a id='addonlink'>Saved Password Editor</a>. Móžośo wobźěłowańsku funkcionalnosć wužywaś, gaž źośo k Rědy > Opcije abo Wobźěłaś > Nastajenja (we wótwisnosći wót wašogo źěłowego systema), z tym až wuběraśo rejtark "Wěstota". Klikniśo pótom na tłocašk "Składowane gronidła...". Móžośo teke jadnorje z menija Rědy abo (we Firefox wót wersije 4 pód Windowsom) z tłocaška Firefox pśistup na składowane gronidła měś.  [...]
+<!-- Paragraph 1, SeaMonkey version -->
+<!-- XXXXX TRANSLATORS: Please pay attention! XXXXX
+     XXXXX SeaMonkey DOES NOT HAVE View > Toolbars > Customize…
+           among other things XXXXX
+     XXXXX Be careful if you copy and paste. XXXXX 
+-->
+<!ENTITY welcomepara1_sm "Źěkujomy se wam, až wužywaśo <a id='addonlink'>Saved Password Editor</a>. Móžośo wobźěłowańsku funkcionalnosć wužywaś, gaž źośo k Rědy > Opcije abo Wobźěłaś > Nastajenja (we wótwisnosći wót wašogo źěłowego systema), z tym až wuběraśo "Gronidła" na rejtarku "Priwatnosć a Wěstota". Klikniśo pótom na tłocašk "Składowane gronidła zastojiś". Móžośo teke jadnorje z menija Rědy pśistup na składowane gronidła měś. Tłocašk rěddoweje kš [...]
+<!-- Paragraph 2 -->
+<!-- The "span" element here is replaced by "Firefox", "Thunderbird", etc. -->
+<!ENTITY welcomepara2 "Źiwajśo na to, až dialog składowanych gronidłow jo zakładna komponenta z <span id='appname'></span>, a njesłuša k toś tomu rozšyrjenjeju, mimo górjejce naspomnjonych pśidatych funkcijow. Tłočašk rědoweje kšomy stoj jano komfortabelnosći dla  k dispoziciji, we wócakowanju, až někotare wužywarje kśě cesćej na ten dialog pśistup měś, ako wone by měli to howac.">
+<!-- Paragraph 3 -->
+<!ENTITY welcomepara3 "Móžośo teke pśizjawjenja manipulěrowaś, kótarež su z wósebnym webformularom zwězane, z tym až kliknjośo z pšaweju tastu na jogo póla a wuběraśo akciju.">
diff --git a/locale/el/browserOverlay.dtd b/locale/el/browserOverlay.dtd
new file mode 100644
index 0000000..ed8816f
--- /dev/null
+++ b/locale/el/browserOverlay.dtd
@@ -0,0 +1,14 @@
+<!-- Open Saved Passwords -->
+<!ENTITY savedpasswords.label "Αποθηκευμένοι κωδικοί πρόσβασης">
+<!ENTITY savedpasswords.accesskey "π">
+<!ENTITY savedpasswords.tooltip "Άνοιγμα του πλαισίου διαλόγου "Αποθηκευμένοι κωδικοί"">
+<!-- Context menu -->
+<!ENTITY ctx_savelogininfo.label "Αποθήκευση πληροφοριών σύνδεσης">
+<!ENTITY ctx_savelogininfo.accesskey "ο">
+<!ENTITY ctx_savelogininfo.tooltip "Προσθέστε έναν αποθηκευμένο κωδικό πρόσβασης για αυτήν τη φόρμα">
+<!ENTITY ctx_editlogininfo.label "Επεξεργασία πληροφοριών σύνδεσης">
+<!ENTITY ctx_editlogininfo.accesskey "Ε">
+<!ENTITY ctx_editlogininfo.tooltip "Επεξεργαστείτε έναν αποθηκευμένο κωδικό πρόσβασης για αυτήν τη φόρμα">
+<!ENTITY ctx_deletelogininfo.label "Διαγραφή πληροφοριών σύνδεσης">
+<!ENTITY ctx_deletelogininfo.accesskey "ι">
+<!ENTITY ctx_deletelogininfo.tooltip "Διαγράψτε έναν αποθηκευμένο κωδικό πρόσβασης για αυτήν τη φόρμα">
diff --git a/locale/el/prefwindow.dtd b/locale/el/prefwindow.dtd
new file mode 100644
index 0000000..bf90e60
--- /dev/null
+++ b/locale/el/prefwindow.dtd
@@ -0,0 +1,18 @@
+<!ENTITY prefwindow.title "Προτιμήσεις για τον Επεξεργαστή αποθηκευμένων κωδικών πρόσβασης">
+<!ENTITY displayMenuitem.label "Συμπερίληψη συντόμευσης στα μενού">
+<!ENTITY displayMenuitem.tooltip "Προσθήκη του στοιχείου μενού "Αποθηκευμένοι κωδικοί πρόσβασης" στο μενού "Εργαλεία" και στο μενού του Firefox σε Windows/Linux, ως συντόμευση προς το διαχειριστή κωδικών πρόσβασης.">
+<!ENTITY renameMenuitemTo.label "Μετονομασία συντόμευσης σε:">
+<!ENTITY renameMenuitemTo.tooltip "Εισάγετε κάτι εδώ για να ονομάσετε τη συντόμευση κάπως αλλιώς από "Αποθηκευμένοι κωδικοί πρόσβασης", αν θέλετε να την κάνετε λιγότερο προφανή σε παρεισδύοντες. Διαγράψτε την καταχώριση για επαναφορά χρήσης του ονόματος "Αποθηκευμένοι κωδικοί πρόσβασης". Προειδοποίηση: αυτό δεν υποκαθιστά τα ενδεδειγμένα μέτρα ασφαλείας· θα πρέπει να χρησιμοποιείτε έναν κύριο κωδικό πρόσβασης όταν είναι δυνατόν, εάν χρειάζεται να προστατεύσετε τους κω [...]
+<!ENTITY preselectCurrentSite.label "Προεπιλογή τρέχουσας τοποθεσίας στο παράθυρο "Αποθηκευμένοι κωδικοί"">
+<!ENTITY preselectCurrentSite.tooltip "Κατά το άνοιγμα του πλαισίου διαλόγου "Αποθηκευμένοι κωδικοί", θα γίνεται αμέσως κύλιση και επιλογή της τοποθεσίας που έχετε επισκεφτεί στην τρέχουσα καρτέλα του περιηγητή.">
+<!ENTITY alwaysShowPasswords.label "Πάντα εμφάνιση των κωδικών πρόσβασης">
+<!ENTITY alwaysShowPasswords.tooltip "Αν επιλεγεί, ο Επεξεργαστής αποθηκευμένων κωδικών πρόσβασης θα προκαλέσει την εμφάνιση της στήλης κωδικών κατά το άνοιγμα του πλαισίου διαλόγου "Αποθηκευμένοι κωδικοί", όπως επίσης και την εμφάνιση του κωδικού πρόσβασης όταν ανοίγεται ο επεξεργαστής κωδικών πρόσβασης.">
+<!ENTITY alwaysPromptForMasterPassword.label "Πάντα προτροπή για εισαγωγή του κύριου κωδικού πρόσβασης">
+<!ENTITY alwaysPromptForMasterPassword.tooltip "Σας ζητείται η εισαγωγή του κύριου κωδικού πρόσβασης όταν επιχειρείτε να εμφανίσετε τους κωδικούς στο πλαίσιο διαλόγου "Αποθηκευμένοι κωδικοί". Αν ενεργοποιηθεί, αναπόφευκτα προκαλείται μια διπλή προτροπή, τουλάχιστον μία φορά ανά συνεδρία. Αν απενεργοποιηθεί, στις περισσότερες περιπτώσεις δε θα σας ζητηθεί ο κύριος κωδικός πρόσβασης.">
+<!ENTITY passwordfield_caption.label "Πεδίο κωδικού πρόσβασης στο παράθυρο του επεξεργαστή">
+<!ENTITY passwordfield_alwayshide.label "Πάντα απόκρυψη του κωδικού πρόσβασης όταν ανοίγεται το παράθυρο του επεξεργαστή">
+<!ENTITY passwordfield_alwaysshow.label "Πάντα εμφάνιση του κωδικού πρόσβασης όταν ανοίγεται το παράθυρο του επεξεργαστή">
+<!ENTITY passwordfield_rememberlast.label "Απομνημόνευση της τελευταίας κατάστασης">
+<!ENTITY passwordfield_rememberlast.tooltip "Εμφάνιση ή απόκρυψη, όπως κατά την τελευταία φορά που ανοίχτηκε το παράθυρο.">
+<!ENTITY passwordfield_followspwin.label "Ως έχει στη λίστα αποθηκευμένων κωδικών πρόσβασης">
+<!ENTITY passwordfield_followspwin.tooltip "Εμφάνιση του κωδικού εάν και μόνο εάν οι κωδικοί πρόσβασης είναι σε εμφάνιση, επίσης και στο παράθυρο "Αποθηκευμένοι κωδικοί".">
diff --git a/locale/el/pwdedit.dtd b/locale/el/pwdedit.dtd
new file mode 100644
index 0000000..67de8f4
--- /dev/null
+++ b/locale/el/pwdedit.dtd
@@ -0,0 +1,36 @@
+<!ENTITY savedpasswordeditor.title "Επεξεργαστής αποθηκευμένων κωδικών">
+<!ENTITY signontype.label "Τύπος">
+<!ENTITY type_form.label "Φόρμα ιστού">
+<!ENTITY type_form.accesskey "Φ">
+<!ENTITY type_form.tooltip "Μια φόρμα που περιέχεται σε μια ιστοσελίδα">
+<!ENTITY type_annotated.label "Σύνδεση με σχόλιο">
+<!ENTITY type_annotated.accesskey "ν">
+<!ENTITY type_annotated.tooltip "Μια σύνδεση που απαιτεί και μια συμβολοσειρά εκτός από τον κεντρικό υπολογιστή για τον προσδιορισμό της υπηρεσίας (π.χ. επαλήθευση ταυτότητας HTTP)">
+<!ENTITY hostname.label "Κεντρικός υπολογιστής">
+<!ENTITY hostname.tooltip "Πρωτόκολλο/όνομα κεντρικού υπολογιστή για το οποίο ισχύει ο κωδικός πρόσβασης (π.χ. http://www.example.com)">
+<!ENTITY formSubmitURL.label "Πρόθεμα υποβολής">
+<!ENTITY formSubmitURL.tooltip "Πρόθεμα διεύθυνσης υποβολής της φόρμας">
+<!ENTITY annotation.label "Σχόλιο">
+<!ENTITY annotation.tooltip "Επιπρόσθετη συμβολοσειρά προσδιορισμού της υπηρεσίας επαλήθευσης ταυτότητας (π.χ. Τομέας HTTP)">
+<!ENTITY username.label "Όνομα χρήστη">
+<!ENTITY username.tooltip "Το όνομα χρήστη προς απομνημόνευση">
+<!ENTITY password.label "Κωδικός πρόσβασης">
+<!ENTITY password.tooltip "Ο κωδικός πρόσβασης προς απομνημόνευση">
+<!ENTITY usernameField.label "Όνομα πεδίου ονόματος χρήστη">
+<!ENTITY usernameField.tooltip "Το χαρακτηριστικό όνομα για το κατάλληλο πεδίο ονόματος χρήστη στη φόρμα">
+<!ENTITY passwordField.label "Όνομα πεδίου κωδικού πρόσβασης">
+<!ENTITY passwordField.tooltip "Το χαρακτηριστικό όνομα για το κατάλληλο πεδίο κωδικού πρόσβασης στη φόρμα">
+<!ENTITY showPassword.label "Εμφάνιση">
+<!ENTITY showPassword.accesskey "Ε">
+<!ENTITY showPassword.tooltip "Εναλλαγή ορατότητας κωδικού πρόσβασης">
+<!ENTITY hidePassword.label "Απόκρυψη">
+<!ENTITY hidePassword.accesskey "Α">
+<!ENTITY guessfrompage.label "Εκτίμηση από την τρέχουσα σελίδα">
+<!ENTITY guessfrompage.accesskey "τ">
+<!ENTITY guessfrompage.tooltip "Συμπλήρωση αυτής της φόρμας, βάση πιθανής φόρμας σύνδεσης στην τρέχουσα σελίδα">
+<!ENTITY prevform.label "Προηγούμενη φόρμα">
+<!ENTITY prevform.accesskey "Π">
+<!ENTITY prevform.tooltip "Δοκιμάστε την προηγούμενη φόρμα από την σελίδα">
+<!ENTITY nextform.label "Επόμενη φόρμα">
+<!ENTITY nextform.accesskey "Ε">
+<!ENTITY nextform.tooltip "Δοκιμάστε την επόμενη φόρμα από την σελίδα">
diff --git a/locale/el/pwdedit.properties b/locale/el/pwdedit.properties
new file mode 100644
index 0000000..8d70561
--- /dev/null
+++ b/locale/el/pwdedit.properties
@@ -0,0 +1,9 @@
+# TRANSLATORS: \n stands for a line break, and %S is a placeholder
+# for a string to be inserted.
+# SAVED PASSWORD EDITOR DIALOG
+newlogin=Δημιουργία νέας σύνδεσης
+clonelogin=Κλωνοποίηση σύνδεσης
+editlogin=Επεξεργασία σύνδεσης
+editmultlogin=Επεξεργασία πολλαπλών συνδέσεων
+nologinform=Δεν βρέθηκε κάποια κατάλληλη φόρμα σύνδεσης στην τρέχουσα σελίδα!
+multduplogins=Αυτό θα είχε ως αποτέλεσμα διπλότυπες συνδέσεις. Για να ολοκληρωθεί η επεξεργασία, θα πρέπει να αφήσετε τουλάχιστον ένα από τα πεδία κεντρικός υπολογιστής, πρόθεμα υποβολής, σχόλιο ή όνομα χρήστη (κατά περίπτωση) σε μια ακαθόριστη κατάσταση, διαγράφοντας την/τις τιμή/ές που εισαγάγατε.
diff --git a/locale/el/pwdmgrOverlay.dtd b/locale/el/pwdmgrOverlay.dtd
new file mode 100644
index 0000000..5ad4bb6
--- /dev/null
+++ b/locale/el/pwdmgrOverlay.dtd
@@ -0,0 +1,11 @@
+<!-- TRANSLATORS - be aware that these access keys are used in several places:
+     the context menu introduced in Fx 4.0, my menu-button, and as shortcut
+     keys for the whole window. Make sure your choices don't conflict in any of
+     those contexts. 
+-->
+<!ENTITY newentry.label "Νέος">
+<!ENTITY newentry.accesskey "Ν">
+<!ENTITY editentry.label "Επεξεργασία">
+<!ENTITY editentry.accesskey "Ε">
+<!ENTITY cloneentry.label "Κλωνοποίηση">
+<!ENTITY cloneentry.accesskey "ω">
diff --git a/locale/el/pwdmgrOverlay.properties b/locale/el/pwdmgrOverlay.properties
new file mode 100644
index 0000000..1031888
--- /dev/null
+++ b/locale/el/pwdmgrOverlay.properties
@@ -0,0 +1,4 @@
+# TRANSLATORS: \n stands for a line break, and %S is a placeholder
+# for a string to be inserted.
+# POPUP MESSAGE WHEN ADDING/MODIFYING AN ENTRY FAILS
+badnewentry=Προέκυψε κάποιο σφάλμα:\n  %S\nΜήπως προσπαθήσατε να δημιουργήσετε μια διπλότυπη καταχώρηση σύνδεσης;
diff --git a/locale/el/spe.properties b/locale/el/spe.properties
new file mode 100644
index 0000000..c3effb6
--- /dev/null
+++ b/locale/el/spe.properties
@@ -0,0 +1,10 @@
+# TRANSLATORS: \n stands for a line break, and %S is a placeholder
+# for a string to be inserted.
+savedpasswordeditor=Επεξεργαστής αποθηκευμένων κωδικών
+error=Σφάλμα
+nologinstoedit=Δεν υπάρχουν συνδέσεις για επεξεργασία!
+nologinstodelete=Δεν υπάρχουν συνδέσεις για διαγραφή!
+logininfosaved=Οι πληροφορίες σύνδεσης αποθηκεύτηκαν
+logininfochanged=Οι πληροφορίες σύνδεσης άλλαξαν
+logininfodeleted=Οι πληροφορίες σύνδεσης διαγράφηκαν
+failed=Η λειτουργία απέτυχε:\n %S
diff --git a/locale/el/welcome.dtd b/locale/el/welcome.dtd
new file mode 100644
index 0000000..913591f
--- /dev/null
+++ b/locale/el/welcome.dtd
@@ -0,0 +1,50 @@
+<!-- LOCALE
+
+     Format: language-COUNTRY according to RFC 1766
+     ( http://www.ietf.org/rfc/rfc1766.txt ). COUNTRY is for dialectal
+     variation and is not necessary for locales without such variation. You can
+     probably copy the locale tag of your localized Mozilla application
+     (Firefox, etc.). Examples:
+
+     en-US  - English in US
+     en-GB  - English in Great Britain
+     de-DE  - German in Germany
+     ru     - Russian (no specific country)
+
+-->
+<!ENTITY locale "el">
+<!-- LAYOUT DIRECTION: "LTR" for left-to-right; "RTL" for right-to-left.
+     Generally, this should follow the direction of your writing system. 
+-->
+<!ENTITY layoutdirection "LTR">
+<!-- WELCOME PAGE
+
+     This needs a little care. There is some embedded markup (sorry about
+     that). Of course, don't translate any text inside tags. The & lt; and
+     & gt; codes produce < and > respectively, but don't reverse them; that
+     will be done automatically for right-to-left text. & quot; produces a
+     double quote character. Please substitute whatever is appropriate in your
+     locale, but if you are editing this file directly, as opposed to using
+     BabelZilla's interface, anything other than <, >, ", ', and & must be in
+     UTF-8 or use numerical entities (e.g. & #x89ab;); named entities other
+     than the ones for those five characters (& lt; & gt; & quot; & apos;
+     & amp;) are NOT defined in this context. Double quote characters must be
+     encoded as & quot; (again, if you are editing directly), since the
+     strings are already double-quote delimited.
+
+-->
+<!ENTITY welcometospe "Καλώς ήλθατε στον Επεξεργαστή αποθηκευμένων κωδικών πρόσβασης (Saved Password Editor)">
+<!-- Paragraph 1, Firefox version -->
+<!ENTITY welcomepara1_fx "Σας ευχαριστούμε για τη χρήση της επέκτασης <a id='addonlink'>"Επεξεργαστής αποθηκευμένων κωδικών πρόσβασης"</a>. Μπορείτε να έχετε πρόσβαση στη λειτουργία επεξεργασίας μεταβαίνοντας στο μενού "Εργαλεία > Επιλογές", ή στο μενού "Επεξεργασία > Προτιμήσεις" (ανάλογα με το λειτουργικό σας σύστημα), επιλέγοντας το τμήμα παραθύρου "Ασφάλεια" και στη συνέχεια, κάνοντας κλικ στο κουμπί "Αποθηκευμένοι κωδικοί...".  [...]
+<!-- Paragraph 1, SeaMonkey version -->
+<!-- XXXXX TRANSLATORS: Please pay attention! XXXXX
+     XXXXX SeaMonkey DOES NOT HAVE View > Toolbars > Customize…
+           among other things XXXXX
+     XXXXX Be careful if you copy and paste. XXXXX 
+-->
+<!ENTITY welcomepara1_sm "Σας ευχαριστούμε για τη χρήση της επέκτασης <a id='addonlink'>"Επεξεργαστής αποθηκευμένων κωδικών πρόσβασης"</a>. Μπορείτε να έχετε πρόσβαση στη λειτουργία επεξεργασίας μεταβαίνοντας στο μενού "Εργαλεία > Επιλογές", ή στο μενού "Επεξεργασία > Προτιμήσεις" (ανάλογα με το λειτουργικό σας σύστημα), περιηγούμενοι στο τμήμα παραθύρου "Κωδικοί" σε "Ιδιωτικό απόρρητο & Ασφάλεια" και στη συνέχεια, κάνοντας κλικ [...]
+<!-- Paragraph 2 -->
+<!-- The "span" element here is replaced by "Firefox", "Thunderbird", etc. -->
+<!ENTITY welcomepara2 "Έχετε υπόψιν σας ότι το πλαίσιο διαλόγου "Αποθηκευμένοι κωδικοί" είναι ένα βασικό στοιχείο του <span id='appname'></span> και δεν παρέχεται από αυτήν την επέκταση, εκτός από τις προστεθείσες λειτουργίες που αναφέρονται παραπάνω. Το κουμπί εργαλειοθήκης παρέχεται μόνο για λόγους ευκολίας, υπό την προοπτική ότι ορισμένοι χρήστες αυτής της επέκτασης θα θέλουν να έχουν πρόσβαση στο πλαίσιο διαλόγου πολύ πιο συχνά απ' ό,τι ενδέχεται διαφορετικά.">
+<!-- Paragraph 3 -->
+<!ENTITY welcomepara3 "Μπορείτε επίσης να χειριστείτε συνδέσεις, συσχετισμένες με μια συγκεκριμένη φόρμα ιστού, κάνοντας δεξί κλικ σε οποιοδήποτε από τα πεδία της και επιλέγοντας μια ενέργεια.">
diff --git a/locale/en-US/browserOverlay.dtd b/locale/en-US/browserOverlay.dtd
new file mode 100644
index 0000000..5c93c63
--- /dev/null
+++ b/locale/en-US/browserOverlay.dtd
@@ -0,0 +1,15 @@
+<!-- Open Saved Passwords -->
+<!ENTITY savedpasswords.label "Saved Passwords">
+<!ENTITY savedpasswords.accesskey "v">
+<!ENTITY savedpasswords.tooltip "Open the Saved Passwords dialog">
+
+<!-- Context menu -->
+<!ENTITY ctx_savelogininfo.label "Save login info">
+<!ENTITY ctx_savelogininfo.accesskey "S">
+<!ENTITY ctx_savelogininfo.tooltip "Add a saved password for this form">
+<!ENTITY ctx_editlogininfo.label "Edit login info">
+<!ENTITY ctx_editlogininfo.accesskey "E">
+<!ENTITY ctx_editlogininfo.tooltip "Edit a saved password for this form">
+<!ENTITY ctx_deletelogininfo.label "Delete login info">
+<!ENTITY ctx_deletelogininfo.accesskey "D">
+<!ENTITY ctx_deletelogininfo.tooltip "Delete a saved password for this form">
diff --git a/locale/en-US/prefwindow.dtd b/locale/en-US/prefwindow.dtd
new file mode 100644
index 0000000..348f237
--- /dev/null
+++ b/locale/en-US/prefwindow.dtd
@@ -0,0 +1,18 @@
+<!ENTITY prefwindow.title "Saved Password Editor preferences">
+<!ENTITY displayMenuitem.label "Include shortcut in menus">
+<!ENTITY displayMenuitem.tooltip "Adds "Saved Passwords" to Tools menu and Windows/Linux Firefox menu as a shortcut to the password manager">
+<!ENTITY renameMenuitemTo.label "Rename shortcut to:">
+<!ENTITY renameMenuitemTo.tooltip "Enter something here to call the shortcut something other than "Saved Passwords", if you want to make it less obvious to meddlers. Erase the value to return to using "Saved Passwords". Warning: this is not a substitute for proper security; you should use a master password when possible if you need to protect your passwords.">
+<!ENTITY preselectCurrentSite.label "Preselect current site in Saved Passwords">
+<!ENTITY preselectCurrentSite.tooltip "When opening Saved Passwords, this will immediately select and scroll to the site visited in the current browser tab.">
+<!ENTITY alwaysShowPasswords.label "Always show passwords">
+<!ENTITY alwaysShowPasswords.tooltip "If checked, Saved Password Editor will cause the Password column to be shown when the Saved Passwords dialog opens and show the password when the editor dialog opens.">
+<!ENTITY alwaysPromptForMasterPassword.label "Always prompt for master password">
+<!ENTITY alwaysPromptForMasterPassword.tooltip "Prompts for master password when showing passwords in Saved Passwords. If enabled, this unavoidably causes a double prompt at least once per session. If disabled, in most cases you will not be prompted for the master password.">
+<!ENTITY passwordfield_caption.label "Password field in editor window">
+<!ENTITY passwordfield_alwayshide.label "Always hide password when opening editor window">
+<!ENTITY passwordfield_alwaysshow.label "Always show password when opening editor window">
+<!ENTITY passwordfield_rememberlast.label "Remember last state">
+<!ENTITY passwordfield_rememberlast.tooltip "Show or hide the same as the last time the window was open">
+<!ENTITY passwordfield_followspwin.label "Follow Saved Passwords list">
+<!ENTITY passwordfield_followspwin.tooltip "Show if and only if passwords are currently shown in Saved Passwords window">
diff --git a/locale/en-US/pwdedit.dtd b/locale/en-US/pwdedit.dtd
new file mode 100644
index 0000000..17756b8
--- /dev/null
+++ b/locale/en-US/pwdedit.dtd
@@ -0,0 +1,36 @@
+<!ENTITY savedpasswordeditor.title "Saved Password Editor">
+<!ENTITY signontype.label "Type">
+<!ENTITY type_form.label "Web form">
+<!ENTITY type_form.accesskey "W">
+<!ENTITY type_form.tooltip "A form contained in a web page">
+<!ENTITY type_annotated.label "Annotated">
+<!ENTITY type_annotated.accesskey "A">
+<!ENTITY type_annotated.tooltip "A login that requires a string in addition to the host to identify the service (e.g. HTTP authentication)">
+<!ENTITY hostname.label "Host">
+<!ENTITY hostname.tooltip "Protocol/hostname to which password applies (e.g. http://www.example.com)">
+<!ENTITY formSubmitURL.label "Submit prefix">
+<!ENTITY formSubmitURL.tooltip "Prefix of form submission address">
+<!ENTITY annotation.label "Annotation">
+<!ENTITY annotation.tooltip "Additional string identifying the service to authenticate to (e.g. HTTP realm)">
+<!ENTITY username.label "Username">
+<!ENTITY username.tooltip "The username to remember">
+<!ENTITY password.label "Password">
+<!ENTITY password.tooltip "The password to remember">
+<!ENTITY usernameField.label "Username field name">
+<!ENTITY usernameField.tooltip "The name attribute for the appropriate username field in the form">
+<!ENTITY passwordField.label "Password field name">
+<!ENTITY passwordField.tooltip "The name attribute for the appropriate password field in the form">
+<!ENTITY showPassword.label "Show">
+<!ENTITY showPassword.accesskey "S">
+<!ENTITY showPassword.tooltip "Toggle password visibility">
+<!ENTITY hidePassword.label "Hide">
+<!ENTITY hidePassword.accesskey "H">
+<!ENTITY guessfrompage.label "Guess from current page">
+<!ENTITY guessfrompage.accesskey "G">
+<!ENTITY guessfrompage.tooltip "Fill in this form based on a likely login form on the current page">
+<!ENTITY prevform.label "Previous form">
+<!ENTITY prevform.accesskey "P">
+<!ENTITY prevform.tooltip "Try the previous form from the page">
+<!ENTITY nextform.label "Next form">
+<!ENTITY nextform.accesskey "N">
+<!ENTITY nextform.tooltip "Try the next form from the page">
diff --git a/locale/en-US/pwdedit.properties b/locale/en-US/pwdedit.properties
new file mode 100644
index 0000000..5840c99
--- /dev/null
+++ b/locale/en-US/pwdedit.properties
@@ -0,0 +1,10 @@
+# TRANSLATORS: \n stands for a line break, and %S is a placeholder
+# for a string to be inserted.
+
+# SAVED PASSWORD EDITOR DIALOG
+newlogin=Creating new login
+clonelogin=Cloning login
+editlogin=Editing login
+editmultlogin=Editing multiple logins
+nologinform=No suitable login form found on current page!
+multduplogins=This would result in duplicate logins. In order to complete the edit, you must leave at least one of the host, submit prefix, annotation, or username fields (as applicable) in an indeterminate state, by erasing the value(s) you entered.
diff --git a/locale/en-US/pwdmgrOverlay.dtd b/locale/en-US/pwdmgrOverlay.dtd
new file mode 100644
index 0000000..ae456d2
--- /dev/null
+++ b/locale/en-US/pwdmgrOverlay.dtd
@@ -0,0 +1,10 @@
+<!-- TRANSLATORS - be aware that these access keys are used in several places:
+     the context menu introduced in Fx 4.0, my menu-button, and as shortcut
+     keys for the whole window. Make sure your choices don't conflict in any of
+     those contexts. -->
+<!ENTITY newentry.label "New">
+<!ENTITY newentry.accesskey "N">
+<!ENTITY editentry.label "Edit">
+<!ENTITY editentry.accesskey "E">
+<!ENTITY cloneentry.label "Clone">
+<!ENTITY cloneentry.accesskey "l">
diff --git a/locale/en-US/pwdmgrOverlay.properties b/locale/en-US/pwdmgrOverlay.properties
new file mode 100644
index 0000000..b604566
--- /dev/null
+++ b/locale/en-US/pwdmgrOverlay.properties
@@ -0,0 +1,5 @@
+# TRANSLATORS: \n stands for a line break, and %S is a placeholder
+# for a string to be inserted.
+
+# POPUP MESSAGE WHEN ADDING/MODIFYING AN ENTRY FAILS
+badnewentry=Got an error:\n  %S\nDid you try to create a duplicate login entry?
diff --git a/locale/en-US/spe.properties b/locale/en-US/spe.properties
new file mode 100644
index 0000000..42ec119
--- /dev/null
+++ b/locale/en-US/spe.properties
@@ -0,0 +1,11 @@
+# TRANSLATORS: \n stands for a line break, and %S is a placeholder
+# for a string to be inserted.
+
+savedpasswordeditor=Saved Password Editor
+error=Error
+nologinstoedit=No logins to edit!
+nologinstodelete=No logins to delete!
+logininfosaved=Login info saved
+logininfochanged=Login info changed
+logininfodeleted=Login info deleted
+failed=The operation failed:\n  %S
diff --git a/locale/en-US/welcome.dtd b/locale/en-US/welcome.dtd
new file mode 100644
index 0000000..9352958
--- /dev/null
+++ b/locale/en-US/welcome.dtd
@@ -0,0 +1,46 @@
+<!-- LOCALE
+
+     Format: language-COUNTRY according to RFC 1766
+     ( http://www.ietf.org/rfc/rfc1766.txt ). COUNTRY is for dialectal
+     variation and is not necessary for locales without such variation. You can
+     probably copy the locale tag of your localized Mozilla application
+     (Firefox, etc.). Examples:
+
+     en-US  - English in US
+     en-GB  - English in Great Britain
+     de-DE  - German in Germany
+     ru     - Russian (no specific country)
+-->
+<!ENTITY locale "en-US">
+<!-- LAYOUT DIRECTION: "LTR" for left-to-right; "RTL" for right-to-left.
+     Generally, this should follow the direction of your writing system. -->
+<!ENTITY layoutdirection "LTR">
+<!-- WELCOME PAGE
+
+     This needs a little care. There is some embedded markup (sorry about
+     that). Of course, don't translate any text inside tags. The & lt; and
+     & gt; codes produce < and > respectively, but don't reverse them; that
+     will be done automatically for right-to-left text. & quot; produces a
+     double quote character. Please substitute whatever is appropriate in your
+     locale, but if you are editing this file directly, as opposed to using
+     BabelZilla's interface, anything other than <, >, ", ', and & must be in
+     UTF-8 or use numerical entities (e.g. & #x89ab;); named entities other
+     than the ones for those five characters (& lt; & gt; & quot; & apos;
+     & amp;) are NOT defined in this context. Double quote characters must be
+     encoded as & quot; (again, if you are editing directly), since the
+     strings are already double-quote delimited.
+-->
+<!ENTITY welcometospe "Welcome to Saved Password Editor">
+<!-- Paragraph 1, Firefox version -->
+<!ENTITY welcomepara1_fx "Thank you for using <a id='addonlink'>Saved Password Editor</a>. You may access the editing functionality by going to Tools > Options, or Edit > Preferences (depending on your operating system), selecting the "Security" pane, then clicking on the "Saved Passwords…" button. You may also simply access Saved Passwords from the Tools menu or (on Firefox 4 and later under Windows and Linux) the Firefox menu. A toolbar button is also availabl [...]
+<!-- Paragraph 1, SeaMonkey version -->
+<!-- XXXXX TRANSLATORS: Please pay attention! XXXXX
+     XXXXX SeaMonkey DOES NOT HAVE View > Toolbars > Customize…
+           among other things XXXXX
+     XXXXX Be careful if you copy and paste. XXXXX -->
+<!ENTITY welcomepara1_sm "Thank you for using <a id='addonlink'>Saved Password Editor</a>. You may access the editing functionality by going to Tools > Options, or Edit > Preferences (depending on your operating system), navigating to the "Passwords" pane under "Privacy & Security", then clicking on the "Manage Stored Passwords" button. You may also simply access Saved Passwords from the Tools menu. A toolbar button is also available for your conve [...]
+<!-- Paragraph 2 -->
+<!-- The "span" element here is replaced by "Firefox", "Thunderbird", etc. -->
+<!ENTITY welcomepara2 "Note that the Saved Passwords dialog is a base component of <span id='appname'/>, and is not being provided by this extension, except for the added functions mentioned above. The toolbar button is provided only for convenience, in the expectation that some users of this extension will want to access the dialog much more frequently than they might otherwise.">
+<!-- Paragraph 3 -->
+<!ENTITY welcomepara3 "You may also manipulate logins associated with a particular web form by right-clicking on any of its fields and selecting an action.">
diff --git a/locale/eo/browserOverlay.dtd b/locale/eo/browserOverlay.dtd
new file mode 100644
index 0000000..7de3d38
--- /dev/null
+++ b/locale/eo/browserOverlay.dtd
@@ -0,0 +1,14 @@
+<!-- Open Saved Passwords -->
+<!ENTITY savedpasswords.label "Konservitaj pasvortoj">
+<!ENTITY savedpasswords.accesskey "K">
+<!ENTITY savedpasswords.tooltip "Malfermi la dialogon de konservitaj pasvortoj">
+<!-- Context menu -->
+<!ENTITY ctx_savelogininfo.label "Konservi ensalutajn informojn">
+<!ENTITY ctx_savelogininfo.accesskey "K">
+<!ENTITY ctx_savelogininfo.tooltip "Aldoni konservitan pasvorton por ĉi tiu formularo">
+<!ENTITY ctx_editlogininfo.label "Redakti ensalutajn informojn">
+<!ENTITY ctx_editlogininfo.accesskey "R">
+<!ENTITY ctx_editlogininfo.tooltip "Redakti konservitan pasvorton por ĉi tiu formularo">
+<!ENTITY ctx_deletelogininfo.label "Forviŝi ensalutajn informojn">
+<!ENTITY ctx_deletelogininfo.accesskey "F">
+<!ENTITY ctx_deletelogininfo.tooltip "Forviŝi konservitan pasvorton por ĉi tiu formularo">
diff --git a/locale/eo/prefwindow.dtd b/locale/eo/prefwindow.dtd
new file mode 100644
index 0000000..30562bd
--- /dev/null
+++ b/locale/eo/prefwindow.dtd
@@ -0,0 +1,18 @@
+<!ENTITY prefwindow.title "Agordoj de Saved Password Editor">
+<!ENTITY displayMenuitem.label "Inkluzivi fulmklavojn en menuoj">
+<!ENTITY displayMenuitem.tooltip "Aldonas enskribon "Konservitaj pasvortoj" al la menuo "Ilaro" kaj la menuo sub la butono Firefox kiel fulmoligilo al la pasvorta administrilo">
+<!ENTITY renameMenuitemTo.label "Renomi fulmoklavon al:">
+<!ENTITY renameMenuitemTo.tooltip "Enigu ion ĉi tie por elekti alian fulmoklavon ol por "Konservitaj pasvortoj", se vi volas iomete malevidentigi ĝin por entrudantoj. Forigu la valoron por denove uzi "Konservitaj pasvortoj". Atentu: tio ne estas anstataŭo por fakta sekureco; vi uzu ĉefpasvorton, se tio estas ebla, se vi devas protekti viajn pasvortojn.">
+<!ENTITY preselectCurrentSite.label "Antaŭelekti aktualan retejon en Saved Passwords">
+<!ENTITY preselectCurrentSite.tooltip "Kiam konservitaj pasvortoj malfermiĝas, tio tuj elektos la vizititan retejon kaj rulumos al la aktuala foliumila langeto.">
+<!ENTITY alwaysShowPasswords.label "Ĉiam montri pasvortojn">
+<!ENTITY alwaysShowPasswords.tooltip "Se tio estas ebligita, Saved Password Editor montros la pasvortan kolonon, kiam la dialogo de konservitaj pasvortoj malfermiĝas kaj la pasvorton, kiam la redaktila dialogo malfermiĝas.">
+<!ENTITY alwaysPromptForMasterPassword.label "Ĉiam postuli ĉefpasvorton">
+<!ENTITY alwaysPromptForMasterPassword.tooltip "Postulas ĉefpasvorton, kiam pasvortoj montriĝas en la dialogo de konservitaj pasvortoj. Se tio estas ebligita, tio neeviteble kaŭzos, ke duoabla invito aperas almenaŭ unufoje po sesio. Se tio estas malebligita, vi plej ofte ne estas petata enigi la ĉefpasvorton.">
+<!ENTITY passwordfield_caption.label "Pasvortkampo en la redaktila fenestro">
+<!ENTITY passwordfield_alwayshide.label "Ĉiam kaŝi pasvorton dum la redaktila fenestro estas malfermata">
+<!ENTITY passwordfield_alwaysshow.label "Ĉiam montri pasvorton, dum redaktila fenestro estas malfermata">
+<!ENTITY passwordfield_rememberlast.label "Memorteni lastan staton">
+<!ENTITY passwordfield_rememberlast.tooltip "Montri aŭ kaŝi la saman, kiam la fenestro estis malfermita la lastan fojon">
+<!ENTITY passwordfield_followspwin.label "Sekvi la liston de konservitaj pasvortoj">
+<!ENTITY passwordfield_followspwin.tooltip "Montri, se kaj nur se pasvortoj estas aktuale montrataj en la fenestro de konservitaj pasvortoj">
diff --git a/locale/eo/pwdedit.dtd b/locale/eo/pwdedit.dtd
new file mode 100644
index 0000000..266c038
--- /dev/null
+++ b/locale/eo/pwdedit.dtd
@@ -0,0 +1,36 @@
+<!ENTITY savedpasswordeditor.title "Konservitaj pasvortoj">
+<!ENTITY signontype.label "Tipo">
+<!ENTITY type_form.label "Retformularo">
+<!ENTITY type_form.accesskey "f">
+<!ENTITY type_form.tooltip "Formularo en retpaĝo">
+<!ENTITY type_annotated.label "Komentita">
+<!ENTITY type_annotated.accesskey "K">
+<!ENTITY type_annotated.tooltip "Ensaluto, kiu bezonas signoĉenon aldone al la gastiga komputilo por identigi la servon (ekz. HTTP-aŭtentikigon)">
+<!ENTITY hostname.label "Gastiga servilo">
+<!ENTITY hostname.tooltip "Protokolo/nomo de la gastiga servilo, al kiu la pasvorto estas aplikata (ekz. http://www.ekzemplo.com)">
+<!ENTITY formSubmitURL.label "Senda prefikso">
+<!ENTITY formSubmitURL.tooltip "Prefikso de la formulara celadreso">
+<!ENTITY annotation.label "Komento">
+<!ENTITY annotation.tooltip "Aldona signoĉeno, kiu identigas la aŭtentikigan servon (ekz. HTTP-regiono)">
+<!ENTITY username.label "Uzantnomo">
+<!ENTITY username.tooltip "Memortenota uzantnomo">
+<!ENTITY password.label "Pasvorto">
+<!ENTITY password.tooltip "La memortenota pasvorto">
+<!ENTITY usernameField.label "Nomo de la uzantnoma kampo">
+<!ENTITY usernameField.tooltip "La noma atributo por la respektiva uzantnoma kampo en la formularo">
+<!ENTITY passwordField.label "Nomo de la pasvorta kampo">
+<!ENTITY passwordField.tooltip "La noma atributo por la respektiva pasvorta kampo en la formularo">
+<!ENTITY showPassword.label "Montri">
+<!ENTITY showPassword.accesskey "M">
+<!ENTITY showPassword.tooltip "Ŝalti pasvortvideblecon">
+<!ENTITY hidePassword.label "Kaŝi">
+<!ENTITY hidePassword.accesskey "K">
+<!ENTITY guessfrompage.label "Diveni el aktuala paĝo">
+<!ENTITY guessfrompage.accesskey "D">
+<!ENTITY guessfrompage.tooltip "Plenigi ĉi tiun formularon surbaze de supozata ensaluta formularo sur la aktuala paĝo">
+<!ENTITY prevform.label "Antaŭa formularo">
+<!ENTITY prevform.accesskey "A">
+<!ENTITY prevform.tooltip "Provi la antaŭan formularon el la paĝo">
+<!ENTITY nextform.label "Sekvonta formularo">
+<!ENTITY nextform.accesskey "S">
+<!ENTITY nextform.tooltip "Provi la sekvontan formularon el la paĝo">
diff --git a/locale/eo/pwdedit.properties b/locale/eo/pwdedit.properties
new file mode 100644
index 0000000..a2a3954
--- /dev/null
+++ b/locale/eo/pwdedit.properties
@@ -0,0 +1,9 @@
+# TRANSLATORS: \n stands for a line break, and %S is a placeholder
+# for a string to be inserted.
+# SAVED PASSWORD EDITOR DIALOG
+newlogin=Krei novan ensaluton
+clonelogin=Kloni ensaluton
+editlogin=Redakti ensaluton
+editmultlogin=Redakti plurajn ensalutojn
+nologinform=Neniu taŭga ensaluta formularo trovita sur aktuala paĝo!
+multduplogins=Tio kondukas al duoblaj ensalutoj. Por fini la redakton, vi devas lasi almenaŭ unu el la kampoj (gastiga servilo, senda prefikso, komento aŭ uzantnomo, laŭ bezono) en necerta stato forviŝante la valorojn, kiujn vi enigis.
diff --git a/locale/eo/pwdmgrOverlay.dtd b/locale/eo/pwdmgrOverlay.dtd
new file mode 100644
index 0000000..68a465f
--- /dev/null
+++ b/locale/eo/pwdmgrOverlay.dtd
@@ -0,0 +1,11 @@
+<!-- TRANSLATORS - be aware that these access keys are used in several places:
+     the context menu introduced in Fx 4.0, my menu-button, and as shortcut
+     keys for the whole window. Make sure your choices don't conflict in any of
+     those contexts. 
+-->
+<!ENTITY newentry.label "Nova">
+<!ENTITY newentry.accesskey "N">
+<!ENTITY editentry.label "Redakti">
+<!ENTITY editentry.accesskey "R">
+<!ENTITY cloneentry.label "Kloni">
+<!ENTITY cloneentry.accesskey "l">
diff --git a/locale/eo/pwdmgrOverlay.properties b/locale/eo/pwdmgrOverlay.properties
new file mode 100644
index 0000000..2c6a08d
--- /dev/null
+++ b/locale/eo/pwdmgrOverlay.properties
@@ -0,0 +1,4 @@
+# TRANSLATORS: \n stands for a line break, and %S is a placeholder
+# for a string to be inserted.
+# POPUP MESSAGE WHEN ADDING/MODIFYING AN ENTRY FAILS
+badnewentry=Okazis eraro:\n %S\nĈu vi provis krei duoblan uzantnomon?
diff --git a/locale/eo/spe.properties b/locale/eo/spe.properties
new file mode 100644
index 0000000..5f40454
--- /dev/null
+++ b/locale/eo/spe.properties
@@ -0,0 +1,10 @@
+# TRANSLATORS: \n stands for a line break, and %S is a placeholder
+# for a string to be inserted.
+savedpasswordeditor=Saved Password Editor
+error=Eraro
+nologinstoedit=Ne estas ensalutoj por redakti!
+nologinstodelete=Ne estas ensalutoj por forviŝi!
+logininfosaved=Ensalutaj informoj konservitaj
+logininfochanged=Ensalutaj informoj ŝanĝitaj
+logininfodeleted=Ensalutaj informoj forviŝitaj
+failed=La operacio malsukcesis:\n %S
diff --git a/locale/eo/welcome.dtd b/locale/eo/welcome.dtd
new file mode 100644
index 0000000..5cc4925
--- /dev/null
+++ b/locale/eo/welcome.dtd
@@ -0,0 +1,50 @@
+<!-- LOCALE
+
+     Format: language-COUNTRY according to RFC 1766
+     ( http://www.ietf.org/rfc/rfc1766.txt ). COUNTRY is for dialectal
+     variation and is not necessary for locales without such variation. You can
+     probably copy the locale tag of your localized Mozilla application
+     (Firefox, etc.). Examples:
+
+     en-US  - English in US
+     en-GB  - English in Great Britain
+     de-DE  - German in Germany
+     ru     - Russian (no specific country)
+
+-->
+<!ENTITY locale "eo">
+<!-- LAYOUT DIRECTION: "LTR" for left-to-right; "RTL" for right-to-left.
+     Generally, this should follow the direction of your writing system. 
+-->
+<!ENTITY layoutdirection "LTR">
+<!-- WELCOME PAGE
+
+     This needs a little care. There is some embedded markup (sorry about
+     that). Of course, don't translate any text inside tags. The & lt; and
+     & gt; codes produce < and > respectively, but don't reverse them; that
+     will be done automatically for right-to-left text. & quot; produces a
+     double quote character. Please substitute whatever is appropriate in your
+     locale, but if you are editing this file directly, as opposed to using
+     BabelZilla's interface, anything other than <, >, ", ', and & must be in
+     UTF-8 or use numerical entities (e.g. & #x89ab;); named entities other
+     than the ones for those five characters (& lt; & gt; & quot; & apos;
+     & amp;) are NOT defined in this context. Double quote characters must be
+     encoded as & quot; (again, if you are editing directly), since the
+     strings are already double-quote delimited.
+
+-->
+<!ENTITY welcometospe "Bonvenon al Saved Password Editor">
+<!-- Paragraph 1, Firefox version -->
+<!ENTITY welcomepara1_fx "Dankon por uzi <a id='addonlink'>Saved Password Editor</a>. Vi povas atingi la redaktofunkcion tra Iloj > Opcioj aŭ Modifi > Preferoj (depende de via operaciumo), elektante la langeton "Sekureco", alklakante la butonon "Konservitaj pasvortoj…". Vi ankaŭ povas simple atingi Konservitaj pasvortoj el la menuo Iloj aŭ (ekde Firefox 4 sub Vindozo) el la menuo "Firefox". Ankaŭ ilobreta butono estas je via dispono; por atingi ĝin, el [...]
+<!-- Paragraph 1, SeaMonkey version -->
+<!-- XXXXX TRANSLATORS: Please pay attention! XXXXX
+     XXXXX SeaMonkey DOES NOT HAVE View > Toolbars > Customize…
+           among other things XXXXX
+     XXXXX Be careful if you copy and paste. XXXXX 
+-->
+<!ENTITY welcomepara1_sm "Dankon por uzi <a id='addonlink'>Saved Password Editor</a>. Vi povas atingi la redaktofunkcion tra Iloj > Agordoj... aŭ Redakti > Agordoj... (depende de via operaciumo), navigante al la langeto "Pasvortoj", sub "Privateco & sekureco", alklakante la butonon "Administri konservitajn pasvortojn". Vi ankaŭ povas simple atingi Konservitaj pasvortoj el la menuo Iloj. Ankaŭ ilobreta butono estas je via dispono; por atingi ĝin, al [...]
+<!-- Paragraph 2 -->
+<!-- The "span" element here is replaced by "Firefox", "Thunderbird", etc. -->
+<!ENTITY welcomepara2 "Konsideru, ke la dialogo "Konservitaj pasvortoj" estas baza komponanto de <span id='appname'></span> kaj ne estas provizata per ĉi tiu ĉetendaĵo, escepte por la supre menciitaj aldonitaj funkcioj. La ilobreta butono estas provizata je via dispono, ekspektante, ke kelkaj uzantoj de ĉi tiu etendaĵo volas atingi la dialogon multe pli ofte ol ili povus fari tion alikaze.">
+<!-- Paragraph 3 -->
+<!ENTITY welcomepara3 "Vi ankaŭ povas manipuli ensalutojn ligitajn kun aparta retformularo klikante dekstre al iu de ĝiaj kampoj kaj elektante agon.">
diff --git a/locale/es-ES/browserOverlay.dtd b/locale/es-ES/browserOverlay.dtd
new file mode 100644
index 0000000..5de9d7c
--- /dev/null
+++ b/locale/es-ES/browserOverlay.dtd
@@ -0,0 +1,14 @@
+<!-- Open Saved Passwords -->
+<!ENTITY savedpasswords.label "Contraseñas guardadas">
+<!ENTITY savedpasswords.accesskey "g">
+<!ENTITY savedpasswords.tooltip "Abrir el administrador de contraseñas guardadas">
+<!-- Context menu -->
+<!ENTITY ctx_savelogininfo.label "Guardar datos de acceso">
+<!ENTITY ctx_savelogininfo.accesskey "G">
+<!ENTITY ctx_savelogininfo.tooltip "Agregar una contraseña guardada para esta forma">
+<!ENTITY ctx_editlogininfo.label "Editar datos de acceso">
+<!ENTITY ctx_editlogininfo.accesskey "E">
+<!ENTITY ctx_editlogininfo.tooltip "Editar una contraseña guardada para esta forma">
+<!ENTITY ctx_deletelogininfo.label "Eliminar datos de acceso">
+<!ENTITY ctx_deletelogininfo.accesskey "B">
+<!ENTITY ctx_deletelogininfo.tooltip "Borrar una contraseña guardada para esta forma">
diff --git a/locale/es-ES/prefwindow.dtd b/locale/es-ES/prefwindow.dtd
new file mode 100644
index 0000000..e5d6344
--- /dev/null
+++ b/locale/es-ES/prefwindow.dtd
@@ -0,0 +1,18 @@
+<!ENTITY prefwindow.title "Preferencias de Saved Password Editor">
+<!ENTITY displayMenuitem.label "Incluir acceso directo en menúes">
+<!ENTITY displayMenuitem.tooltip "Agrega "Contraseñas guardadas" al menú Herramientas y al menú de Firefox en Windows/Linux como acceso directo al administrador de contraseñas guardadas">
+<!ENTITY renameMenuitemTo.label "Nuevo nombre de acceso directo:">
+<!ENTITY renameMenuitemTo.tooltip "Escribir algo para nombrar acceso directo de modo que no sea "Contraseñas guardadas", en caso de desear hacerlo menos obvio. Eliminar valor para restaurar uso de "Contraseñas guardadas". Advertencia: no es un sustituto apropiado de seguridad; de ser posible, se sugiere utilizar una contraseña maestra para proteger las contraseñas.">
+<!ENTITY preselectCurrentSite.label "Pre-elegir sitio actual en Contraseñas Guardadas">
+<!ENTITY preselectCurrentSite.tooltip "Al abrir Contraseñas Guardadas, elegir y llegar al sitio visitado en la ventana actual del navegador.">
+<!ENTITY alwaysShowPasswords.label "Mostrar siempre contraseñas">
+<!ENTITY alwaysShowPasswords.tooltip "De habilitarse, Saved Password Editor muestra la columna de contraseñas al abrir el administrador de contraseñas guardadas, al igual que la contraseña al abrir editor.">
+<!ENTITY alwaysPromptForMasterPassword.label "Mostrar siempre contraseña maestra">
+<!ENTITY alwaysPromptForMasterPassword.tooltip "Solicita contraseña maestra al mostrar contraseñas en Contraseñas guardadas. De habilitarse, se realiza inexorablemente una doble solicitud al menos una vez. De inhabilitarse, en muy pocos casos se solicita contraseña maestra.">
+<!ENTITY passwordfield_caption.label "Campo de contraseña en ventana del editor">
+<!ENTITY passwordfield_alwayshide.label "Ocultar contraseña al abrir ventana del editor">
+<!ENTITY passwordfield_alwaysshow.label "Mostrar contraseña al abrir ventana del editor">
+<!ENTITY passwordfield_rememberlast.label "Recordar estado más reciente">
+<!ENTITY passwordfield_rememberlast.tooltip "Mostrar u ocultar elementos recientes en esta ventana">
+<!ENTITY passwordfield_followspwin.label "Seguir Lista de contraseñas guardadas">
+<!ENTITY passwordfield_followspwin.tooltip "Mostrar SOLAMENTE si aparecen las contraseñas en la ventana de contraseñas guardadas">
diff --git a/locale/es-ES/pwdedit.dtd b/locale/es-ES/pwdedit.dtd
new file mode 100644
index 0000000..b1bb11c
--- /dev/null
+++ b/locale/es-ES/pwdedit.dtd
@@ -0,0 +1,36 @@
+<!ENTITY savedpasswordeditor.title "Saved Password Editor">
+<!ENTITY signontype.label "Tipo">
+<!ENTITY type_form.label "Login">
+<!ENTITY type_form.accesskey "L">
+<!ENTITY type_form.tooltip "A form contained in a web page">
+<!ENTITY type_annotated.label "Agregado">
+<!ENTITY type_annotated.accesskey "A">
+<!ENTITY type_annotated.tooltip "Un login que requiere de cierto texto en conjunto con el dominio para identificar el servicio (p.ej. HTTP verificado)">
+<!ENTITY hostname.label "Dominio">
+<!ENTITY hostname.tooltip "Dominio al cual se aplica la contraseña (ej. http://www.example.com)">
+<!ENTITY formSubmitURL.label "Prefijo">
+<!ENTITY formSubmitURL.tooltip "Prefijo de ruta de login">
+<!ENTITY annotation.label "Agregado">
+<!ENTITY annotation.tooltip "Texto adicional para  identificar el servicio a verificar (p. ej. dominio HTTP)">
+<!ENTITY username.label "Usuario">
+<!ENTITY username.tooltip "Usuario a recordar">
+<!ENTITY password.label "Contraseña">
+<!ENTITY password.tooltip "Contraseña a recordar">
+<!ENTITY usernameField.label "Nombre de campo de usuario">
+<!ENTITY usernameField.tooltip "Nombre de campo de usuario apropiado para login">
+<!ENTITY passwordField.label "Nombre de campo de contraseña">
+<!ENTITY passwordField.tooltip "Nombre de campo de contraseña apropiado para login">
+<!ENTITY showPassword.label "Mostrar">
+<!ENTITY showPassword.accesskey "M">
+<!ENTITY showPassword.tooltip "Mostrar/Ocultar contraseña">
+<!ENTITY hidePassword.label "Ocultar">
+<!ENTITY hidePassword.accesskey "c">
+<!ENTITY guessfrompage.label "Captar datos de sitio actual">
+<!ENTITY guessfrompage.accesskey "d">
+<!ENTITY guessfrompage.tooltip "Llenar esta forma de acuerdo a probable campo de login en sitio actual">
+<!ENTITY prevform.label "Forma anterior">
+<!ENTITY prevform.accesskey "A">
+<!ENTITY prevform.tooltip "Probar con la forma anterior del sitio">
+<!ENTITY nextform.label "Forma siguiente">
+<!ENTITY nextform.accesskey "S">
+<!ENTITY nextform.tooltip "Probar con la forma siguiente del sitio">
diff --git a/locale/es-ES/pwdedit.properties b/locale/es-ES/pwdedit.properties
new file mode 100644
index 0000000..72f5bc6
--- /dev/null
+++ b/locale/es-ES/pwdedit.properties
@@ -0,0 +1,9 @@
+# TRANSLATORS: \n stands for a line break, and %S is a placeholder
+# for a string to be inserted.
+# SAVED PASSWORD EDITOR DIALOG
+newlogin=Creando login
+clonelogin=Clonando login
+editlogin=Editando login
+editmultlogin=Editando varios logins
+nologinform=¡No hay formas al efecto en este sitio!
+multduplogins=Tal vez se presenten logins duplicados. Para terminar de editar, se debe salir de al menos un dominio, prefijo, agregado o campo de nombre de usuario (lo que sea aplicable) en estado indeterminado, borrando el (los) valor(es) ingresado(s).
diff --git a/locale/es-ES/pwdmgrOverlay.dtd b/locale/es-ES/pwdmgrOverlay.dtd
new file mode 100644
index 0000000..c85e832
--- /dev/null
+++ b/locale/es-ES/pwdmgrOverlay.dtd
@@ -0,0 +1,11 @@
+<!-- TRANSLATORS - be aware that these access keys are used in several places:
+     the context menu introduced in Fx 4.0, my menu-button, and as shortcut
+     keys for the whole window. Make sure your choices don't conflict in any of
+     those contexts. 
+-->
+<!ENTITY newentry.label "Agregar">
+<!ENTITY newentry.accesskey "A">
+<!ENTITY editentry.label "Editar">
+<!ENTITY editentry.accesskey "E">
+<!ENTITY cloneentry.label "Clonar">
+<!ENTITY cloneentry.accesskey "l">
diff --git a/locale/es-ES/pwdmgrOverlay.properties b/locale/es-ES/pwdmgrOverlay.properties
new file mode 100644
index 0000000..6684bcc
--- /dev/null
+++ b/locale/es-ES/pwdmgrOverlay.properties
@@ -0,0 +1,4 @@
+# TRANSLATORS: \n stands for a line break, and %S is a placeholder
+# for a string to be inserted.
+# POPUP MESSAGE WHEN ADDING/MODIFYING AN ENTRY FAILS
+badnewentry=Error:n  %Sn¿Trata de crear un login duplicado?
diff --git a/locale/es-ES/spe.properties b/locale/es-ES/spe.properties
new file mode 100644
index 0000000..a325089
--- /dev/null
+++ b/locale/es-ES/spe.properties
@@ -0,0 +1,10 @@
+# TRANSLATORS: \n stands for a line break, and %S is a placeholder
+# for a string to be inserted.
+savedpasswordeditor=Saved Password Editor
+error=Error
+nologinstoedit=No hay logins por editar!
+nologinstodelete=No hay logins por eliminar!
+logininfosaved=Se han guardado datos de acceso
+logininfochanged=Se han cambiado datos de acceso
+logininfodeleted=Se han eliminado datos de acceso
+failed=Error:\n  %S
diff --git a/locale/es-ES/welcome.dtd b/locale/es-ES/welcome.dtd
new file mode 100644
index 0000000..81f340c
--- /dev/null
+++ b/locale/es-ES/welcome.dtd
@@ -0,0 +1,50 @@
+<!-- LOCALE
+
+     Format: language-COUNTRY according to RFC 1766
+     ( http://www.ietf.org/rfc/rfc1766.txt ). COUNTRY is for dialectal
+     variation and is not necessary for locales without such variation. You can
+     probably copy the locale tag of your localized Mozilla application
+     (Firefox, etc.). Examples:
+
+     en-US  - English in US
+     en-GB  - English in Great Britain
+     de-DE  - German in Germany
+     ru     - Russian (no specific country)
+
+-->
+<!ENTITY locale "es-ES">
+<!-- LAYOUT DIRECTION: "LTR" for left-to-right; "RTL" for right-to-left.
+     Generally, this should follow the direction of your writing system. 
+-->
+<!ENTITY layoutdirection "LTR">
+<!-- WELCOME PAGE
+
+     This needs a little care. There is some embedded markup (sorry about
+     that). Of course, don't translate any text inside tags. The & lt; and
+     & gt; codes produce < and > respectively, but don't reverse them; that
+     will be done automatically for right-to-left text. & quot; produces a
+     double quote character. Please substitute whatever is appropriate in your
+     locale, but if you are editing this file directly, as opposed to using
+     BabelZilla's interface, anything other than <, >, ", ', and & must be in
+     UTF-8 or use numerical entities (e.g. & #x89ab;); named entities other
+     than the ones for those five characters (& lt; & gt; & quot; & apos;
+     & amp;) are NOT defined in this context. Double quote characters must be
+     encoded as & quot; (again, if you are editing directly), since the
+     strings are already double-quote delimited.
+
+-->
+<!ENTITY welcometospe "Bienvenido(a) a Saved password editor">
+<!-- Paragraph 1, Firefox version -->
+<!ENTITY welcomepara1_fx "Gracias por utilizar <a id='addonlink'>Saved Password Editor</a>. Se puede usar la función de edición mediante el menú Herramientas > Opciones, o Editar > Preferencias (según el sistema operativo). Se selecciona el panel "Seguridad" y luego el comando "Administrar contraseñas guardadas". También es posible llegar a las contraseñas mediante el menú Herramientas o (en Firefox 4 y posteriores en Windows y Linux) el menú de Firefox. Se pued [...]
+<!-- Paragraph 1, SeaMonkey version -->
+<!-- XXXXX TRANSLATORS: Please pay attention! XXXXX
+     XXXXX SeaMonkey DOES NOT HAVE View > Toolbars > Customize…
+           among other things XXXXX
+     XXXXX Be careful if you copy and paste. XXXXX 
+-->
+<!ENTITY welcomepara1_sm "Gracias por utilizar <a id='addonlink'>Saved Password Editor</a>. Se puede usar la función de edición mediante el menú Herramientas > Opciones, o Editar > Preferencias (según el sistema operativo). Se elige el panel "Contraseñas" bajo "Privacidad & Seguridad" y luego se pulsa el comando "Administrar contraseñas guardadas". También es posible llegar a las contraseñas mediante el menú Herramientas. Asimismo se puede utilizar [...]
+<!-- Paragraph 2 -->
+<!-- The "span" element here is replaced by "Firefox", "Thunderbird", etc. -->
+<!ENTITY welcomepara2 "Se debe destacar que el administrador de contraseñas es un elemento esencial de  <span id='appname'/> y que no forma parte de este complemento, excepto por las funciones agregadas y mencionadas. Se presenta el comando de barra de herramientas por mera conveniencia, ya que es probable que algunos usuarios de este complemento deseen utilizar el administrador con mucha mayor frecuencia que otros.">
+<!-- Paragraph 3 -->
+<!ENTITY welcomepara3 "Es posible manipular logins associados con una forma de Internet en particular, haciendo clic derecho en cualquiera de sus campos y  seleccionando un comando.">
diff --git a/locale/fi/browserOverlay.dtd b/locale/fi/browserOverlay.dtd
new file mode 100644
index 0000000..ad006de
--- /dev/null
+++ b/locale/fi/browserOverlay.dtd
@@ -0,0 +1,14 @@
+<!-- Open Saved Passwords -->
+<!ENTITY savedpasswords.label "Tallennetut salasanat">
+<!ENTITY savedpasswords.accesskey "e">
+<!ENTITY savedpasswords.tooltip "Avaa tallennettujen salasanojen valintaikkuna">
+<!-- Context menu -->
+<!ENTITY ctx_savelogininfo.label "Tallenna kirjautumistiedot">
+<!ENTITY ctx_savelogininfo.accesskey "T">
+<!ENTITY ctx_savelogininfo.tooltip "Lisää salasana tälle lomakkeelle">
+<!ENTITY ctx_editlogininfo.label "Muokkaa kirjautumistietoja">
+<!ENTITY ctx_editlogininfo.accesskey "M">
+<!ENTITY ctx_editlogininfo.tooltip "Muokkaa tämän lomakkeen kirjautumistietoja">
+<!ENTITY ctx_deletelogininfo.label "Poista kirjautumistiedot">
+<!ENTITY ctx_deletelogininfo.accesskey "P">
+<!ENTITY ctx_deletelogininfo.tooltip "Poista tämän lomakkeen kirjautumistiedot">
diff --git a/locale/fi/prefwindow.dtd b/locale/fi/prefwindow.dtd
new file mode 100644
index 0000000..a84953b
--- /dev/null
+++ b/locale/fi/prefwindow.dtd
@@ -0,0 +1,18 @@
+<!ENTITY prefwindow.title "Tallennettujen salasanojen muokkausohjelman asetukset">
+<!ENTITY displayMenuitem.label "Lisää pikavalinta valikoihin">
+<!ENTITY displayMenuitem.tooltip "Lisää ”Tallennetut salasanat”-pikavalinnan Työkalut-valikkoon sekä Windowsin/Linuxin Firefox-valikkoon">
+<!ENTITY renameMenuitemTo.label "Vaihda pikavalinnan nimeksi:">
+<!ENTITY renameMenuitemTo.tooltip "Voit syöttää tähän vaihtoehtoisen nimen ”Tallennetut salasanat”-pikavalinnalle, jos haluat hämätä muita käyttäjiä. Poista arvo palauttaaksesi oletusnimen. Varoitus: tämä toiminto ei korvaa kunnon tietoturvatoimenpiteitä; käytä pääsalasanaa aina, kun se on mahdollista.">
+<!ENTITY preselectCurrentSite.label "Valitse nykyinen sivusto tallennetuista salasanoista">
+<!ENTITY preselectCurrentSite.tooltip "Valitse ja vieritä näkyville selaimen nykyisessä välilehdessä avoinna oleva sivusto, kun tallennettujen salasanojen valintaikkuna avataan.">
+<!ENTITY alwaysShowPasswords.label "Näytä aina salasanat">
+<!ENTITY alwaysShowPasswords.tooltip "Jos tämä kohta on valittuna, salasanojen muokkausohjelma pakottaa salasanasarakkeen näkyviin tallennettujen salasanojen valintaikkunnassa tai muokkausikkunnassa.">
+<!ENTITY alwaysPromptForMasterPassword.label "Kysy aina pääsalasana">
+<!ENTITY alwaysPromptForMasterPassword.tooltip "Kysyy aina pääsalasanaa, kun salasanat halutaan näkyviin muokkausohjelmassa. Jos toiminto on käysössä, pääsalanaa kysytään väistämättä kahdesti ainakin kerran istunnon aikana. Jos toiminto ei ole käytössä, pääsalasanaa ei useimmissa tapauksissa kysytä lainkaan.">
+<!ENTITY passwordfield_caption.label "Salasanakenttä muokkausikkunassa">
+<!ENTITY passwordfield_alwayshide.label "Piilota salasana aina muokkausikkunaa avattaessa">
+<!ENTITY passwordfield_alwaysshow.label "Näytä salasana aina muokkausikkunaa avattaessa">
+<!ENTITY passwordfield_rememberlast.label "Muista edellinen tila">
+<!ENTITY passwordfield_rememberlast.tooltip "Näytä tai piilota riippuen siitä, mikä asetus oli käytössä, kun ikkuna oli viimeksi auki">
+<!ENTITY passwordfield_followspwin.label "Tallennettujen salasanojen luettelon mukaisesti">
+<!ENTITY passwordfield_followspwin.tooltip "Näytä jos ja vain jos salasanat ovat näkyvillä tallennettujen salasanojen valintaikkunassa">
diff --git a/locale/fi/pwdedit.dtd b/locale/fi/pwdedit.dtd
new file mode 100644
index 0000000..f9ef5f9
--- /dev/null
+++ b/locale/fi/pwdedit.dtd
@@ -0,0 +1,36 @@
+<!ENTITY savedpasswordeditor.title "Tallennetun salasanan muokkaus">
+<!ENTITY signontype.label "Tyyppi">
+<!ENTITY type_form.label "Verkkolomake">
+<!ENTITY type_form.accesskey "V">
+<!ENTITY type_form.tooltip "Verkkosivulta löytyvä lomake">
+<!ENTITY type_annotated.label "Kirjautuminen selittein">
+<!ENTITY type_annotated.accesskey "s">
+<!ENTITY type_annotated.tooltip "Kirjautuminen, jossa isännän lisäksi vaaditaan merkkijono palvelun tunnistamiseksi (esim. HTTP-varmennus)">
+<!ENTITY hostname.label "Isäntä">
+<!ENTITY hostname.tooltip "Protokolla/isäntäkoneen nimi, johon salasana liitetään (esim. http://www.example.com)">
+<!ENTITY formSubmitURL.label "Lähetyksen etuliite">
+<!ENTITY formSubmitURL.tooltip "Lomakkeen lähetysosoitteen etuliite">
+<!ENTITY annotation.label "Selite">
+<!ENTITY annotation.tooltip "Ylimääräinen merkkijono, jolla tunnistetaan varmennettava palvelu (esim. HTTP-alue)">
+<!ENTITY username.label "Käyttäjätunnus">
+<!ENTITY username.tooltip "Tallennettava käyttäjänimi">
+<!ENTITY password.label "Salasana">
+<!ENTITY password.tooltip "Tallennettava salasana">
+<!ENTITY usernameField.label "Käyttäjätunnuskentän nimi">
+<!ENTITY usernameField.tooltip "Oikean käyttäjätunnuskentän nimiattribuutti">
+<!ENTITY passwordField.label "Salasanakentän nimi">
+<!ENTITY passwordField.tooltip "Oikean salasanakentän nimiattibuutti">
+<!ENTITY showPassword.label "Näytä">
+<!ENTITY showPassword.accesskey "N">
+<!ENTITY showPassword.tooltip "Muuta salasanan näkyvyyttä">
+<!ENTITY hidePassword.label "Piilota">
+<!ENTITY hidePassword.accesskey "P">
+<!ENTITY guessfrompage.label "Arvaa nykyiseltä sivulta">
+<!ENTITY guessfrompage.accesskey "A">
+<!ENTITY guessfrompage.tooltip "Täytä tämä lomake nykyiseltä sivulta löytyvän todennäköisen kirjautumislomakkeen tietojen perusteella">
+<!ENTITY prevform.label "Edellinen lomake">
+<!ENTITY prevform.accesskey "E">
+<!ENTITY prevform.tooltip "Kokeile edellistä sivulla löytyvää lomaketta">
+<!ENTITY nextform.label "Seuraava lomake">
+<!ENTITY nextform.accesskey "S">
+<!ENTITY nextform.tooltip "Kokeile seuraavaa sivulla löytyvää lomaketta">
diff --git a/locale/fi/pwdedit.properties b/locale/fi/pwdedit.properties
new file mode 100644
index 0000000..9552a6d
--- /dev/null
+++ b/locale/fi/pwdedit.properties
@@ -0,0 +1,9 @@
+# TRANSLATORS: \n stands for a line break, and %S is a placeholder
+# for a string to be inserted.
+# SAVED PASSWORD EDITOR DIALOG
+newlogin=Luo uusi kirjautumistieto
+clonelogin=Kloonaa kirjautumistieto
+editlogin=Muokkaa kirjautumistietoa
+editmultlogin=Muokkaa useampia kirjautumistietoja
+nologinform=Nykyiseltä sivulta ei löytynyt sopivaa kirjautumislomaketta!
+multduplogins=Tämä johtaisi kirjautumistiedon kahdentumiseen. Muokkauksen viimeistelemiseksi sinun pitää jättää jokin kentistä isäntä, lähetyksen etuliite, HTTP-alue tai käyttäjätunnus epämääräiseen tilaan poistamalla syöttämäsi arvo(t).
diff --git a/locale/fi/pwdmgrOverlay.dtd b/locale/fi/pwdmgrOverlay.dtd
new file mode 100644
index 0000000..beaf1ae
--- /dev/null
+++ b/locale/fi/pwdmgrOverlay.dtd
@@ -0,0 +1,11 @@
+<!-- TRANSLATORS - be aware that these access keys are used in several places:
+     the context menu introduced in Fx 4.0, my menu-button, and as shortcut
+     keys for the whole window. Make sure your choices don't conflict in any of
+     those contexts. 
+-->
+<!ENTITY newentry.label "Uusi">
+<!ENTITY newentry.accesskey "U">
+<!ENTITY editentry.label "Muokkaa">
+<!ENTITY editentry.accesskey "M">
+<!ENTITY cloneentry.label "Kloonaa">
+<!ENTITY cloneentry.accesskey "l">
diff --git a/locale/fi/pwdmgrOverlay.properties b/locale/fi/pwdmgrOverlay.properties
new file mode 100644
index 0000000..fde0717
--- /dev/null
+++ b/locale/fi/pwdmgrOverlay.properties
@@ -0,0 +1,4 @@
+# TRANSLATORS: \n stands for a line break, and %S is a placeholder
+# for a string to be inserted.
+# POPUP MESSAGE WHEN ADDING/MODIFYING AN ENTRY FAILS
+badnewentry=Kohdattiin virhe:\n %S\nYrititkö luoda kirjautumistietojen kaksoiskappaleen?
diff --git a/locale/fi/spe.properties b/locale/fi/spe.properties
new file mode 100644
index 0000000..3b170ad
--- /dev/null
+++ b/locale/fi/spe.properties
@@ -0,0 +1,10 @@
+# TRANSLATORS: \n stands for a line break, and %S is a placeholder
+# for a string to be inserted.
+savedpasswordeditor=Tallennettujen salasanojen muokkausohjelma
+error=Virhe
+nologinstoedit=Ei muokattavia kirjautumistietoja!
+nologinstodelete=Ei poistettavia kirjautumistietoja!
+logininfosaved=Kirjautumistiedot tallennettu
+logininfochanged=Kirjautumistiedot muutettu
+logininfodeleted=Kirjautumistiedot poistettu
+failed=Toiminto epäonnistui:\n %S
diff --git a/locale/fi/welcome.dtd b/locale/fi/welcome.dtd
new file mode 100644
index 0000000..62ae95e
--- /dev/null
+++ b/locale/fi/welcome.dtd
@@ -0,0 +1,50 @@
+<!-- LOCALE
+
+     Format: language-COUNTRY according to RFC 1766
+     ( http://www.ietf.org/rfc/rfc1766.txt ). COUNTRY is for dialectal
+     variation and is not necessary for locales without such variation. You can
+     probably copy the locale tag of your localized Mozilla application
+     (Firefox, etc.). Examples:
+
+     en-US  - English in US
+     en-GB  - English in Great Britain
+     de-DE  - German in Germany
+     ru     - Russian (no specific country)
+
+-->
+<!ENTITY locale "fi">
+<!-- LAYOUT DIRECTION: "LTR" for left-to-right; "RTL" for right-to-left.
+     Generally, this should follow the direction of your writing system. 
+-->
+<!ENTITY layoutdirection "LTR">
+<!-- WELCOME PAGE
+
+     This needs a little care. There is some embedded markup (sorry about
+     that). Of course, don't translate any text inside tags. The & lt; and
+     & gt; codes produce < and > respectively, but don't reverse them; that
+     will be done automatically for right-to-left text. & quot; produces a
+     double quote character. Please substitute whatever is appropriate in your
+     locale, but if you are editing this file directly, as opposed to using
+     BabelZilla's interface, anything other than <, >, ", ', and & must be in
+     UTF-8 or use numerical entities (e.g. & #x89ab;); named entities other
+     than the ones for those five characters (& lt; & gt; & quot; & apos;
+     & amp;) are NOT defined in this context. Double quote characters must be
+     encoded as & quot; (again, if you are editing directly), since the
+     strings are already double-quote delimited.
+
+-->
+<!ENTITY welcometospe "Tervetuloa tallennettujen salasanojen muokkausohjelmaan">
+<!-- Paragraph 1, Firefox version -->
+<!ENTITY welcomepara1_fx "Kiitos, että käytät <a id='addonlink'>Tallennettujen salasanojen muokkausohjelmaa</a>. Pääset käyttämään muokkaustoimintoja valitsemalla ensin Työkalut > Asetukset tai Muokkaa > Asetukset (käyttöjärjestelmästä riippuen), menemällä ”Turvallisuus”-ruutuun ja napsauttamalla ”Tallennetut salasanat...” -painiketta. Voit myös siirtyä tallennettuihin salasanoihin suoraan Työkalut-valikon kautta tai (Firefox 4:ssä ja myöhemmissä versioissa Windowsissa ja Linuxissa [...]
+<!-- Paragraph 1, SeaMonkey version -->
+<!-- XXXXX TRANSLATORS: Please pay attention! XXXXX
+     XXXXX SeaMonkey DOES NOT HAVE View > Toolbars > Customize…
+           among other things XXXXX
+     XXXXX Be careful if you copy and paste. XXXXX 
+-->
+<!ENTITY welcomepara1_sm "Kiitos, että käytät <a id='addonlink'>Tallennettujen salasanojen muokkausohjelmaa</a>. Pääset käyttämään muokkaustoimintoja valitsemalla ensin Työkalut > Asetukset tai Muokkaa > Asetukset (käyttöjärjestelmästä riippuen), menemällä ”Turvallisuus”-ruudun ”Salasanat”-välilehdelle ja napsauttamalla ”Tallennetut salasanat...” -painiketta. Voit myös siirtyä tallennettuihin salasanoihin suoraan Työkalut-valikon kautta. Työkalupalkkipainike on myös käytettävissäsi [...]
+<!-- Paragraph 2 -->
+<!-- The "span" element here is replaced by "Firefox", "Thunderbird", etc. -->
+<!ENTITY welcomepara2 "Huomaa, että tallennettujen salasanojen valintaikkuna on <span id='appname'></span>-sovelluksen peruskomponentti, eikä sen toteutus tule tämän laajennuksen kautta, lukuun ottamatta edellä mainittuja toimintoja. Työkalupalkkipainike on lisätty käyttömukavuuden parantamiseksi sillä oletuksella, että jotkut laajennuksen käyttäjät saattavat haluta käyttää valintaikkunaa paljon useammin kuin aiemmin.">
+<!-- Paragraph 3 -->
+<!ENTITY welcomepara3 "Voit myös muokata tiettyyn lomakkeeseen liittyviä kirjautumistietoja napsauttamalla jotakin sen kentistä oikealla painikkeella ja valitsemalla toiminnon.">
diff --git a/locale/fr/browserOverlay.dtd b/locale/fr/browserOverlay.dtd
new file mode 100644
index 0000000..098f907
--- /dev/null
+++ b/locale/fr/browserOverlay.dtd
@@ -0,0 +1,14 @@
+<!-- Open Saved Passwords -->
+<!ENTITY savedpasswords.label "Mots de passe enregistrés">
+<!ENTITY savedpasswords.accesskey "p">
+<!ENTITY savedpasswords.tooltip "Ouvre la fenêtre de dialogue des mots de passe enregistrés">
+<!-- Context menu -->
+<!ENTITY ctx_savelogininfo.label "Enregistrer les informations de connexion">
+<!ENTITY ctx_savelogininfo.accesskey "E">
+<!ENTITY ctx_savelogininfo.tooltip "Ajoute un mot de passe enregistré à ce formulaire">
+<!ENTITY ctx_editlogininfo.label "Modifier les informations de connexion">
+<!ENTITY ctx_editlogininfo.accesskey "M">
+<!ENTITY ctx_editlogininfo.tooltip "Modifie un mot de passe enregistré pour ce formulaire">
+<!ENTITY ctx_deletelogininfo.label "Supprimer les informations de connexion">
+<!ENTITY ctx_deletelogininfo.accesskey "S">
+<!ENTITY ctx_deletelogininfo.tooltip "Supprimer un mot de passe pour ce formulaire">
diff --git a/locale/fr/prefwindow.dtd b/locale/fr/prefwindow.dtd
new file mode 100644
index 0000000..aa6375e
--- /dev/null
+++ b/locale/fr/prefwindow.dtd
@@ -0,0 +1,18 @@
+<!ENTITY prefwindow.title "Préférences de l'extension Save Password Editor">
+<!ENTITY displayMenuitem.label "Inclure le raccourci dans les menus">
+<!ENTITY displayMenuitem.tooltip "Ajoute « Mots de passe enregistrés » au menu Outils et au menu des applications Windows comme raccourci pour accéder au gestionnaire de mots de passe">
+<!ENTITY renameMenuitemTo.label "Renommer le raccourci en :">
+<!ENTITY renameMenuitemTo.tooltip "Saisissez ici un autre nom de raccourci que ;Saved Passwords" si vous voulez le rendre moins évident pour les intrus. Effacer cette valeur si vous voulez revenir à ;Saved Passwords". Attention : ceci n'assure nullement une sécurité particulière. vous devriez utiliser un mot de passe principal autant que possible si vous avez besoin de protéger vos mots de passe.">
+<!ENTITY preselectCurrentSite.label "Preselect current site in Saved Passwords">
+<!ENTITY preselectCurrentSite.tooltip "When opening Saved Passwords, this will immediately select and scroll to the site visited in the current browser tab.">
+<!ENTITY alwaysShowPasswords.label "Toujours afficher les mots de passe">
+<!ENTITY alwaysShowPasswords.tooltip "Si la case est cochée, Saved Password Editor affichera la colonne des mots de passe à l'ouverture de la fenêtre de l'extension, et le mot de passe sera affiché quand la fenêtre d'édition sera ouverte.">
+<!ENTITY alwaysPromptForMasterPassword.label "Toujours demander le mot de passe principal">
+<!ENTITY alwaysPromptForMasterPassword.tooltip "Demande le mot de passe principal quand les mots de passe enregistrés sont affichés. Si cette fonction est activée, vous serez sollicité au moins deux fois par session par cette demande. Si elle est désactivée, dans la plupart des cas on ne vous demandera pas le mot de passe principal.">
+<!ENTITY passwordfield_caption.label "Champ de mot de passe dans la fenêtre de l'éditeur">
+<!ENTITY passwordfield_alwayshide.label "Toujours masquer le mot de passe à l'ouverture de la fenêtre de l'éditeur">
+<!ENTITY passwordfield_alwaysshow.label "Toujours afficher le mot de passe à l'ouverture de la fenêtre de l'éditeur">
+<!ENTITY passwordfield_rememberlast.label "Se souvenir du dernier état choisi">
+<!ENTITY passwordfield_rememberlast.tooltip "Masquer/afficher exactement comme lors de la précédente fenêtre ouverte">
+<!ENTITY passwordfield_followspwin.label "Suivre la liste de mots de passe enregistrés">
+<!ENTITY passwordfield_followspwin.tooltip "Afficher seulement si les mots de passe sont affichés en ce moment dans la fenêtre des mots de passe enregistrés.">
diff --git a/locale/fr/pwdedit.dtd b/locale/fr/pwdedit.dtd
new file mode 100644
index 0000000..40e8ede
--- /dev/null
+++ b/locale/fr/pwdedit.dtd
@@ -0,0 +1,36 @@
+<!ENTITY savedpasswordeditor.title "Saved Password Editor">
+<!ENTITY signontype.label "Type">
+<!ENTITY type_form.label "Formulaire Web">
+<!ENTITY type_form.accesskey "W">
+<!ENTITY type_form.tooltip "Un formulaire inclus dans une page web">
+<!ENTITY type_annotated.label "Annoté">
+<!ENTITY type_annotated.accesskey "A">
+<!ENTITY type_annotated.tooltip "Un identifiant qui nécessite une chaîne ajoutée au nom d'hôte pour s'identifier (ex. authentification HTTP)">
+<!ENTITY hostname.label "Hôte">
+<!ENTITY hostname.tooltip "Protocole/nom d'hôte auquel correspond le mot de passe (e.g. http://www.exemple.com)">
+<!ENTITY formSubmitURL.label "Soumettre un préfixe">
+<!ENTITY formSubmitURL.tooltip "Préfixe de l'adresse pour soumettre un formulaire">
+<!ENTITY annotation.label "Annotation">
+<!ENTITY annotation.tooltip "Une chaîne supplémentaire pour identifier le service d'authentification de (ex. HTTP)">
+<!ENTITY username.label "Nom d'utilisateur">
+<!ENTITY username.tooltip "Nom d'utilisateur à retenir">
+<!ENTITY password.label "Mot de passe">
+<!ENTITY password.tooltip "Mot de passe à retenir">
+<!ENTITY usernameField.label "Champ du nom d'utilisateur">
+<!ENTITY usernameField.tooltip "L'attribut du nom pour le champ de saisie du nom d'utilisateur">
+<!ENTITY passwordField.label "Nom du champ de mot de passe">
+<!ENTITY passwordField.tooltip "L'attribut du nom pour le champ de saisie du mot de passe">
+<!ENTITY showPassword.label "Afficher">
+<!ENTITY showPassword.accesskey "A">
+<!ENTITY showPassword.tooltip "Afficher/masquer le mot de passe">
+<!ENTITY hidePassword.label "Masquer">
+<!ENTITY hidePassword.accesskey "M">
+<!ENTITY guessfrompage.label "Essai pour la page courante">
+<!ENTITY guessfrompage.accesskey "E">
+<!ENTITY guessfrompage.tooltip "Remplit ce champ en essayant l'identifiant probable de la page courante">
+<!ENTITY prevform.label "Formulaire précédent">
+<!ENTITY prevform.accesskey "p">
+<!ENTITY prevform.tooltip "Essayer le formulaire précédent de la page">
+<!ENTITY nextform.label "Formulaire suivant">
+<!ENTITY nextform.accesskey "S">
+<!ENTITY nextform.tooltip "Essayer le formulaire suivant de la page">
diff --git a/locale/fr/pwdedit.properties b/locale/fr/pwdedit.properties
new file mode 100644
index 0000000..aa67719
--- /dev/null
+++ b/locale/fr/pwdedit.properties
@@ -0,0 +1,9 @@
+# TRANSLATORS: \n stands for a line break, and %S is a placeholder
+# for a string to be inserted.
+# SAVED PASSWORD EDITOR DIALOG
+newlogin=Création d'un identifiant
+clonelogin=Reproduction d'un identifiant
+editlogin=Modification d'un identifiant
+editmultlogin=Modification de plusieurs identifiants
+nologinform=Aucun identifiant d'accès valide au formulaire trouvé dans cette page !
+multduplogins=Cela pourrait provoquer des doublons d'identifiants. Pour achever vos modifications, vous devez laisser au moins un nom d'hôte, fournir un préfixe, un domaine HTTP, une annotation ou des champs utilisateurs (si possible) dans un état indéterminé, en effaçant les valeurs que vous avez entrées.
diff --git a/locale/fr/pwdmgrOverlay.dtd b/locale/fr/pwdmgrOverlay.dtd
new file mode 100644
index 0000000..bf287ad
--- /dev/null
+++ b/locale/fr/pwdmgrOverlay.dtd
@@ -0,0 +1,11 @@
+<!-- TRANSLATORS - be aware that these access keys are used in several places:
+     the context menu introduced in Fx 4.0, my menu-button, and as shortcut
+     keys for the whole window. Make sure your choices don't conflict in any of
+     those contexts. 
+-->
+<!ENTITY newentry.label "Nouveau">
+<!ENTITY newentry.accesskey "N">
+<!ENTITY editentry.label "Modifier">
+<!ENTITY editentry.accesskey "M">
+<!ENTITY cloneentry.label "Cloner">
+<!ENTITY cloneentry.accesskey "o">
diff --git a/locale/fr/pwdmgrOverlay.properties b/locale/fr/pwdmgrOverlay.properties
new file mode 100644
index 0000000..a60db41
--- /dev/null
+++ b/locale/fr/pwdmgrOverlay.properties
@@ -0,0 +1,4 @@
+# TRANSLATORS: \n stands for a line break, and %S is a placeholder
+# for a string to be inserted.
+# POPUP MESSAGE WHEN ADDING/MODIFYING AN ENTRY FAILS
+badnewentry=Une erreur s'est produite :\n  %S\nAvez-vous essayé de créer un identifiant en doublon ?
diff --git a/locale/fr/spe.properties b/locale/fr/spe.properties
new file mode 100644
index 0000000..0391e0e
--- /dev/null
+++ b/locale/fr/spe.properties
@@ -0,0 +1,10 @@
+# TRANSLATORS: \n stands for a line break, and %S is a placeholder
+# for a string to be inserted.
+savedpasswordeditor=Saved Password Editor
+error=Erreur
+nologinstoedit=Pas d'identifiants à modifier !
+nologinstodelete=Pas d'identifiants à supprimer !
+logininfosaved=Informations de connexion enregistrées
+logininfochanged=Informations de connexion modifiées
+logininfodeleted=Informations de connexion supprimées
+failed=Échec de l'opération :\n %S
diff --git a/locale/fr/welcome.dtd b/locale/fr/welcome.dtd
new file mode 100644
index 0000000..fa4f317
--- /dev/null
+++ b/locale/fr/welcome.dtd
@@ -0,0 +1,50 @@
+<!-- LOCALE
+
+     Format: language-COUNTRY according to RFC 1766
+     ( http://www.ietf.org/rfc/rfc1766.txt ). COUNTRY is for dialectal
+     variation and is not necessary for locales without such variation. You can
+     probably copy the locale tag of your localized Mozilla application
+     (Firefox, etc.). Examples:
+
+     en-US  - English in US
+     en-GB  - English in Great Britain
+     de-DE  - German in Germany
+     ru     - Russian (no specific country)
+
+-->
+<!ENTITY locale "fr">
+<!-- LAYOUT DIRECTION: "LTR" for left-to-right; "RTL" for right-to-left.
+     Generally, this should follow the direction of your writing system. 
+-->
+<!ENTITY layoutdirection "LTR">
+<!-- WELCOME PAGE
+
+     This needs a little care. There is some embedded markup (sorry about
+     that). Of course, don't translate any text inside tags. The & lt; and
+     & gt; codes produce < and > respectively, but don't reverse them; that
+     will be done automatically for right-to-left text. & quot; produces a
+     double quote character. Please substitute whatever is appropriate in your
+     locale, but if you are editing this file directly, as opposed to using
+     BabelZilla's interface, anything other than <, >, ", ', and & must be in
+     UTF-8 or use numerical entities (e.g. & #x89ab;); named entities other
+     than the ones for those five characters (& lt; & gt; & quot; & apos;
+     & amp;) are NOT defined in this context. Double quote characters must be
+     encoded as & quot; (again, if you are editing directly), since the
+     strings are already double-quote delimited.
+
+-->
+<!ENTITY welcometospe "Bienvenue dans l'extension Saved Password Editor">
+<!-- Paragraph 1, Firefox version -->
+<!ENTITY welcomepara1_fx "Merci d'utiliser <a id='addonlink'>Saved Password Editor</a>. Vous pouvez accéder à ses fonctionnalités en allant à Outils > Options, ou Édition > Préférences (selon votre système d'exploitation), puis le panneau "Sécurité", puis en cliquant sur le bouton "Mots de passe enregistrés…". Vous pouvez aussi simplement accéder à l'extension Save Passwords depuis le menu Outils ou encore (avec Firefox 4 sous Windows) par le menu des applicatio [...]
+<!-- Paragraph 1, SeaMonkey version -->
+<!-- XXXXX TRANSLATORS: Please pay attention! XXXXX
+     XXXXX SeaMonkey DOES NOT HAVE View > Toolbars > Customize…
+           among other things XXXXX
+     XXXXX Be careful if you copy and paste. XXXXX 
+-->
+<!ENTITY welcomepara1_sm "Merci d'utiliser l'extension <a id='addonlink'>Saved Password Editor</a>. Vous pouvez accéder à ses fonctionnalités en allant à Outils > Options, ou Édition > Préférences (selon votre système d'exploitation), puis naviguez jusqu'au panneau "Mots de passe" dans la catégorie "Confidentialité et sécurité", puis cliquez sur le bouton "Mots de passe enregistrés…". Vous pouvez aussi simplement accéder à l'extension Save Passwords de [...]
+<!-- Paragraph 2 -->
+<!-- The "span" element here is replaced by "Firefox", "Thunderbird", etc. -->
+<!ENTITY welcomepara2 "Notez que le dialogue des mots de passe enregistrés est un composant de base de <span id='appname'></span>, et qu'il n'est pas fourni avec l'extension, sauf les deux boutons ajoutés. Le bouton de la barre d'outils n'est fourni que pour votre confort, dans l'espoir que certains utilisateurs de cette extension voudront accéder au dialogue beaucoup plus souvent qu'avec une autre solution.">
+<!-- Paragraph 3 -->
+<!ENTITY welcomepara3 "Vous pouvez également gérer les informations de connexion associées à un formulaire particulier en cliquant droit sur un champ quelconque et en choisissant une action.">
diff --git a/locale/hsb/browserOverlay.dtd b/locale/hsb/browserOverlay.dtd
new file mode 100644
index 0000000..0ab0122
--- /dev/null
+++ b/locale/hsb/browserOverlay.dtd
@@ -0,0 +1,14 @@
+<!-- Open Saved Passwords -->
+<!ENTITY savedpasswords.label "Składowane hesła">
+<!ENTITY savedpasswords.accesskey "S">
+<!ENTITY savedpasswords.tooltip "Dialog składowanych hesłow wočinić">
+<!-- Context menu -->
+<!ENTITY ctx_savelogininfo.label "Přizjewjenske informacije składować">
+<!ENTITY ctx_savelogininfo.accesskey "P">
+<!ENTITY ctx_savelogininfo.tooltip "Składowane hesło za tutón formular přidać">
+<!ENTITY ctx_editlogininfo.label "Přizjewjenske informacije wobdźěłać">
+<!ENTITY ctx_editlogininfo.accesskey "z">
+<!ENTITY ctx_editlogininfo.tooltip "Składowane hesło za tutón formular wobdźěłać">
+<!ENTITY ctx_deletelogininfo.label "Přizjewjenske informacije zhašeć">
+<!ENTITY ctx_deletelogininfo.accesskey "w">
+<!ENTITY ctx_deletelogininfo.tooltip "Składowane hesło za tutón formular zhašeć">
diff --git a/locale/hsb/prefwindow.dtd b/locale/hsb/prefwindow.dtd
new file mode 100644
index 0000000..ba77f65
--- /dev/null
+++ b/locale/hsb/prefwindow.dtd
@@ -0,0 +1,18 @@
+<!ENTITY prefwindow.title "Nastajenja Saved Password Editor">
+<!ENTITY displayMenuitem.label "Skrótšenku do menijow zapřijeć">
+<!ENTITY displayMenuitem.tooltip "Přidawa zapisk "Składowane hesła" menijej Nastroje a menijej pod tłóčatkom Firefox jako spěšny wotkaz  k zrjadowakej hesłow">
+<!ENTITY renameMenuitemTo.label "Skrótšenki přemjenować do:">
+<!ENTITY renameMenuitemTo.tooltip "Zapodajće něšto tu, zo byšće druhe skrótšenku wubrał, hač za "Składowane hesła", jeli chceće ju za njewoprawnjenych mjenje wočiwidnje činił. Zhašaj hódnotu, zo byšće zaso "Składowane hesła" wužiwał. Kedźbu: to njeje narunanje za woprawdźitu wěstotu; wy měł hłowne hesło wužiwać, jeli to je móžno, jeli dyrbiće swoje hesła škitać.">
+<!ENTITY preselectCurrentSite.label "Aktualne sydło w Saved password do toho wubrać">
+<!ENTITY preselectCurrentSite.tooltip "Hdyž so składowane hesła wočinjeja, to wubjerje hnydom wopytane sydło a budźe k aktualnemu rajtarkej wobhladowaka kuleć.">
+<!ENTITY alwaysShowPasswords.label "Hesła přeco pokazać">
+<!ENTITY alwaysShowPasswords.tooltip "Jeli to je zmóžnjeny, Saved Passwords Editor pokaza hesłowu špaltu, hdyž dialog składowanych hesłow so wočinja a pokaza hesło, hdyž dialog editora so wočinja.">
+<!ENTITY alwaysPromptForMasterPassword.label "Přeco hłowne hesło žadać">
+<!ENTITY alwaysPromptForMasterPassword.tooltip "Žada hłowne hesło, hdyž so hesła w składowanych hesłach pokazuja. Jeli to je zmóžnjene, so na kóždy pad dwójna namołwa znajmjeńša jónu na posedźenje stawa. Jeli to je znjemóžnjene, wam zwjetša njekazaja, hłowne hesło zapodać.">
+<!ENTITY passwordfield_caption.label "Hesłowe polo we woknje editora">
+<!ENTITY passwordfield_alwayshide.label "Hesło přeco schować, hdyž so wokno editora wočinja">
+<!ENTITY passwordfield_alwaysshow.label "Hesło přeco pokazać, hdyž so wokno editora wočinja">
+<!ENTITY passwordfield_rememberlast.label "Posledni staw sej spomjatkować">
+<!ENTITY passwordfield_rememberlast.tooltip "Samsne pokazać abo schować kaž posledni raz hdyž wokno je wočinjene było">
+<!ENTITY passwordfield_followspwin.label "Lisćinje składowanych hesłow slědować">
+<!ENTITY passwordfield_followspwin.tooltip "Pokazać, jeli a jenož jeli hesła so tuchwilu we woknje składowanych hesłow pokazuja">
diff --git a/locale/hsb/pwdedit.dtd b/locale/hsb/pwdedit.dtd
new file mode 100644
index 0000000..d371336
--- /dev/null
+++ b/locale/hsb/pwdedit.dtd
@@ -0,0 +1,36 @@
+<!ENTITY savedpasswordeditor.title "Editor składowanych hesłow">
+<!ENTITY signontype.label "Typ">
+<!ENTITY type_form.label "Webformular">
+<!ENTITY type_form.accesskey "f">
+<!ENTITY type_form.tooltip "Formular we webstronje">
+<!ENTITY type_annotated.label "Komentowany">
+<!ENTITY type_annotated.accesskey "K">
+<!ENTITY type_annotated.tooltip "Přizjewjenje, kotrež sej rjećazk znamješkow přidatnje k hostej wužaduje, zo by słužbu (na př. HTTP-awtentifikaciju) identifikowało">
+<!ENTITY hostname.label "Host">
+<!ENTITY hostname.tooltip "Protokol/hostowe mjeno, na kotrež so hesło wužiwa (na př. http://www.přikład.com)">
+<!ENTITY formSubmitURL.label "Słanski prefiks">
+<!ENTITY formSubmitURL.tooltip "Prefiks wotesyłanskeje adresy formulara">
+<!ENTITY annotation.label "Komentar">
+<!ENTITY annotation.tooltip "Přidatny rjećazk znamješkow, kotryž awtentifikacisku słužbu (na př. HTTP-wobłuk) identifikuje">
+<!ENTITY username.label "Wužiwarske mjeno">
+<!ENTITY username.tooltip "Wužiwarske mjeno, kotrež ma so składować">
+<!ENTITY password.label "Hesło">
+<!ENTITY password.tooltip "Hesło, kotrež ma so składować">
+<!ENTITY usernameField.label "Pólne mjeno wužiwarskeho mjena">
+<!ENTITY usernameField.tooltip "Atribut "name" za wotpowědne polo wužiwarskeho mjena we formularje">
+<!ENTITY passwordField.label "Mjeno hesłoweho pola">
+<!ENTITY passwordField.tooltip "Atribut "name" za wotpowědne hesłowe polo we formularje">
+<!ENTITY showPassword.label "Pokazać">
+<!ENTITY showPassword.accesskey "P">
+<!ENTITY showPassword.tooltip "Widźomnosć hesłow přepinać">
+<!ENTITY hidePassword.label "Schować">
+<!ENTITY hidePassword.accesskey "h">
+<!ENTITY guessfrompage.label "Z aktualneje strony wuhódać">
+<!ENTITY guessfrompage.accesskey "Z">
+<!ENTITY guessfrompage.tooltip "Tutón formular na zakładźe přihódneho formulara na aktualnej stronje wupjelnić">
+<!ENTITY prevform.label "Předchadny formular">
+<!ENTITY prevform.accesskey "c">
+<!ENTITY prevform.tooltip "Wopytajće předchadny formular ze strony">
+<!ENTITY nextform.label "Přichodny formular">
+<!ENTITY nextform.accesskey "i">
+<!ENTITY nextform.tooltip "Wopytajće přichodny formular ze strony">
diff --git a/locale/hsb/pwdedit.properties b/locale/hsb/pwdedit.properties
new file mode 100644
index 0000000..e25b8e2
--- /dev/null
+++ b/locale/hsb/pwdedit.properties
@@ -0,0 +1,9 @@
+# TRANSLATORS: \n stands for a line break, and %S is a placeholder
+# for a string to be inserted.
+# SAVED PASSWORD EDITOR DIALOG
+newlogin=Nowe přizjewjenje wutworić
+clonelogin=Přizjewjenje klonować
+editlogin=Přizjewjenje wobdźěłać
+editmultlogin=Wjacore přizjewjenja wobdźěłać
+nologinform=Žadyn přihódny přiwjezenski formular na aktualnej stronje namakany!
+multduplogins=To móhło k dwójnym přizjewjenjam wjesć. Zo byšće wobdźěłanje dokónčił, dyrbiće znajmjeńša jedne z polow (host, słanski prefiks, komentar abo wužiwarske mjeno, jeli nałožujomne)  w njewěstym stawje wostajić, z tym zo hašeće hódnoty, kotrež sće zapodał.
diff --git a/locale/hsb/pwdmgrOverlay.dtd b/locale/hsb/pwdmgrOverlay.dtd
new file mode 100644
index 0000000..0daf4fa
--- /dev/null
+++ b/locale/hsb/pwdmgrOverlay.dtd
@@ -0,0 +1,11 @@
+<!-- TRANSLATORS - be aware that these access keys are used in several places:
+     the context menu introduced in Fx 4.0, my menu-button, and as shortcut
+     keys for the whole window. Make sure your choices don't conflict in any of
+     those contexts. 
+-->
+<!ENTITY newentry.label "Nowy">
+<!ENTITY newentry.accesskey "N">
+<!ENTITY editentry.label "Wobdźěłać">
+<!ENTITY editentry.accesskey "b">
+<!ENTITY cloneentry.label "Klonować">
+<!ENTITY cloneentry.accesskey "l">
diff --git a/locale/hsb/pwdmgrOverlay.properties b/locale/hsb/pwdmgrOverlay.properties
new file mode 100644
index 0000000..934164e
--- /dev/null
+++ b/locale/hsb/pwdmgrOverlay.properties
@@ -0,0 +1,4 @@
+# TRANSLATORS: \n stands for a line break, and %S is a placeholder
+# for a string to be inserted.
+# POPUP MESSAGE WHEN ADDING/MODIFYING AN ENTRY FAILS
+badnewentry=Nasta zmylk:\n%S\nSće spytał druhi přizjewjenski zapisk wutworić?
diff --git a/locale/hsb/spe.properties b/locale/hsb/spe.properties
new file mode 100644
index 0000000..3cb0e50
--- /dev/null
+++ b/locale/hsb/spe.properties
@@ -0,0 +1,10 @@
+# TRANSLATORS: \n stands for a line break, and %S is a placeholder
+# for a string to be inserted.
+savedpasswordeditor=Saved Password Editor
+error=Zmylk
+nologinstoedit=Njejsu žane přizjewjenja za wobdźěłanje!
+nologinstodelete=Njejsu žane přizjewjenja za hašenje!
+logininfosaved=Přizjewjenske informacije składowane
+logininfochanged=Přizjewjenske informacije změnjene
+logininfodeleted=Přizjewjenske informacije zhašane
+failed=Operacija je so njeporadźiła:\n %S
diff --git a/locale/hsb/welcome.dtd b/locale/hsb/welcome.dtd
new file mode 100644
index 0000000..6fd8172
--- /dev/null
+++ b/locale/hsb/welcome.dtd
@@ -0,0 +1,50 @@
+<!-- LOCALE
+
+     Format: language-COUNTRY according to RFC 1766
+     ( http://www.ietf.org/rfc/rfc1766.txt ). COUNTRY is for dialectal
+     variation and is not necessary for locales without such variation. You can
+     probably copy the locale tag of your localized Mozilla application
+     (Firefox, etc.). Examples:
+
+     en-US  - English in US
+     en-GB  - English in Great Britain
+     de-DE  - German in Germany
+     ru     - Russian (no specific country)
+
+-->
+<!ENTITY locale "hsb">
+<!-- LAYOUT DIRECTION: "LTR" for left-to-right; "RTL" for right-to-left.
+     Generally, this should follow the direction of your writing system. 
+-->
+<!ENTITY layoutdirection "LTR">
+<!-- WELCOME PAGE
+
+     This needs a little care. There is some embedded markup (sorry about
+     that). Of course, don't translate any text inside tags. The & lt; and
+     & gt; codes produce < and > respectively, but don't reverse them; that
+     will be done automatically for right-to-left text. & quot; produces a
+     double quote character. Please substitute whatever is appropriate in your
+     locale, but if you are editing this file directly, as opposed to using
+     BabelZilla's interface, anything other than <, >, ", ', and & must be in
+     UTF-8 or use numerical entities (e.g. & #x89ab;); named entities other
+     than the ones for those five characters (& lt; & gt; & quot; & apos;
+     & amp;) are NOT defined in this context. Double quote characters must be
+     encoded as & quot; (again, if you are editing directly), since the
+     strings are already double-quote delimited.
+
+-->
+<!ENTITY welcometospe "Witajće do editora składowanych hesłow">
+<!-- Paragraph 1, Firefox version -->
+<!ENTITY welcomepara1_fx "Dźakujemy so wam, zo wužiwaće <a id='addonlink'>Saved Password Editor</a>. Móžeće wobdźěłowansku funkcionalnosć wužiwać, hdyž dźeće k Nastroje > Opcije abo Wobdźěłać > Nastajenja (we wotwisnosći wot wašeho dźěłoweho systema), wuběrajo rejtark "Wěstota". Klikńće potom na tłóčatko "Składowane hesła...". Móžeće tež prosće z menija Nastroje abo (we Firefox wot wersije 4 pod Windowsom) z tłóčatka Firefox přistup na składowane hesła měć. Tłóč [...]
+<!-- Paragraph 1, SeaMonkey version -->
+<!-- XXXXX TRANSLATORS: Please pay attention! XXXXX
+     XXXXX SeaMonkey DOES NOT HAVE View > Toolbars > Customize…
+           among other things XXXXX
+     XXXXX Be careful if you copy and paste. XXXXX 
+-->
+<!ENTITY welcomepara1_sm "Dźakujemy so wam, zo wužiwaće <a id='addonlink'>Saved Password Editor</a>. Móžeće wobdźěłowansku funkcionalnosć wužiwać, hdyž dźeće k Nastroje > Opcije abo Wobdźěłać > Nastajenja (we wotwisnosći wot wašeho dźěłoweho systema), wuběrajo "Hesła" na rejtarku "Priwatnosć a Wěstota". Klikńće potom na tłóčatko "Składowane hesła zrjadować". Móžeće tež prosće z menija Nastroje přistup na składowane hesła měć. Tłóčatko gratoweje lajsty  [...]
+<!-- Paragraph 2 -->
+<!-- The "span" element here is replaced by "Firefox", "Thunderbird", etc. -->
+<!ENTITY welcomepara2 "Wobkedźbujće, zo dialog składowanych hesłow je zakładna komponenta z <span id='appname'></span>, a njesłuša k tutomu rozšěrjenju, nimo horjeka naspomnjenych přidatych funkcijow. Tłóčatko gratoweje lajsty steji jenož komfortabelnosće dla  k dispoziciji, wočakujo, zo někotři wužiwarjo chcedźa husćišo na tón dialog přistup měć, hač woni měli to hewak.">
+<!-- Paragraph 3 -->
+<!ENTITY welcomepara3 "Móžeće tež přizjewjenja manipulować, kotrež su z wosebitym webformularom zwjazane, kliknjo z prawej tastu na jeho pola a wuběrajo akciju.">
diff --git a/locale/hu/browserOverlay.dtd b/locale/hu/browserOverlay.dtd
new file mode 100644
index 0000000..2800a87
--- /dev/null
+++ b/locale/hu/browserOverlay.dtd
@@ -0,0 +1,14 @@
+<!-- Open Saved Passwords -->
+<!ENTITY savedpasswords.label "Mentett jelszavak">
+<!ENTITY savedpasswords.accesskey "j">
+<!ENTITY savedpasswords.tooltip "Mentett jelszavak megjelenítése">
+<!-- Context menu -->
+<!ENTITY ctx_savelogininfo.label "Bejelentkezési adat mentése">
+<!ENTITY ctx_savelogininfo.accesskey "m">
+<!ENTITY ctx_savelogininfo.tooltip "Mentett jelszó hozzáadása az űrlaphoz">
+<!ENTITY ctx_editlogininfo.label "Bejelentkezési adat szerkesztése">
+<!ENTITY ctx_editlogininfo.accesskey "z">
+<!ENTITY ctx_editlogininfo.tooltip "Ehhez az űrlaphoz tartozó mentett jelszó szerkesztése">
+<!ENTITY ctx_deletelogininfo.label "Bejelentkezési infó törlése">
+<!ENTITY ctx_deletelogininfo.accesskey "t">
+<!ENTITY ctx_deletelogininfo.tooltip "Az űrlaphoz tartozó mentett jelszó törlése">
diff --git a/locale/hu/prefwindow.dtd b/locale/hu/prefwindow.dtd
new file mode 100644
index 0000000..e1fb4be
--- /dev/null
+++ b/locale/hu/prefwindow.dtd
@@ -0,0 +1,18 @@
+<!ENTITY prefwindow.title "Mentett jelszavak - szerkesztő">
+<!ENTITY displayMenuitem.label "Gyorsbillentyű megjelenítése a menükben">
+<!ENTITY displayMenuitem.tooltip ""Mentett jelszavak" menüpont hozzáadása az eszközök menühöz és a Windows/Linux menühöz mint gyorsbillentyű a jelszókezelőhöz">
+<!ENTITY renameMenuitemTo.label "Rövidítés átnevezése erre:">
+<!ENTITY renameMenuitemTo.tooltip "Írjon be ide valamit a rövidítés előhívásához a "Saved Passwords" kivételével, ha egyszerűsíteni kívánja azt. Törölje az értéket a "Saved Passwords" visszaállításához. Figyelem: ez nem helyettesíti a biztonságosságot; használja a mesterjelszót (ha lehetséges) a jelszavainak megóvása érdekében.">
+<!ENTITY preselectCurrentSite.label "Jelenlegi webcím auto-kijelölése">
+<!ENTITY preselectCurrentSite.tooltip "Automatikus váltás a mentett jelszavakban a jelenlegi megnyitott lap webcímére.">
+<!ENTITY alwaysShowPasswords.label "Jelszavak megjelenítése mindig">
+<!ENTITY alwaysShowPasswords.tooltip "Ha megjelölve, a Saved Password Editor megkísérli megjeleníteni a Jelszókezelő ablak megnyitásakor a jelszavak oszlopot.">
+<!ENTITY alwaysPromptForMasterPassword.label "Mindig kérje a mesterjelszót">
+<!ENTITY alwaysPromptForMasterPassword.tooltip "Rákérdez a mesterjelszóra, ha a Jelszókezelő ablakban megkísérli megjeleníteni a jelszavakat.">
+<!ENTITY passwordfield_caption.label "Jelszó-mező a szerkesztés ablakban">
+<!ENTITY passwordfield_alwayshide.label "Jelszavak elrejtése mindig a szerkesztő megnyitásakor">
+<!ENTITY passwordfield_alwaysshow.label "Jelszavak megjelenítése mindig a szerkesztő megnyitásakor">
+<!ENTITY passwordfield_rememberlast.label "Utolsó állapot megjegyzése">
+<!ENTITY passwordfield_rememberlast.tooltip "Azonosak megjelenítése vagy elrejtése a legutolsó ablaknyitásnak megfelelően">
+<!ENTITY passwordfield_followspwin.label "Mentett jelszavak listájának követése">
+<!ENTITY passwordfield_followspwin.tooltip "Megjelenítés akkor és csak akkor, ha a jelszavak jelenleg láthatóak a mentett jelszavak ablakban">
diff --git a/locale/hu/pwdedit.dtd b/locale/hu/pwdedit.dtd
new file mode 100644
index 0000000..2794453
--- /dev/null
+++ b/locale/hu/pwdedit.dtd
@@ -0,0 +1,36 @@
+<!ENTITY savedpasswordeditor.title "Mentett jelszavak - szerkesztő">
+<!ENTITY signontype.label "Típus">
+<!ENTITY type_form.label "Űrlap">
+<!ENTITY type_form.accesskey "p">
+<!ENTITY type_form.tooltip "Űrlap a weboldalon">
+<!ENTITY type_annotated.label "Jegyzetelt">
+<!ENTITY type_annotated.accesskey "J">
+<!ENTITY type_annotated.tooltip "A kiszolgáló a bejelentkezéshez további szöveget igényel az azonosítás érdekében (pl. HTTP azonosítás)">
+<!ENTITY hostname.label "Kiszolgáló">
+<!ENTITY hostname.tooltip "Protokol/kiszolgáló amelyen a jelszó lesz használva (pl. http://www.pelda.com)">
+<!ENTITY formSubmitURL.label "Előtag elküldése">
+<!ENTITY formSubmitURL.tooltip "Az elküldött űrlap címének előtagja">
+<!ENTITY annotation.label "Jegyzetelt">
+<!ENTITY annotation.tooltip "További szöveget is igényel az azonosítás (pl. HTTP realm)">
+<!ENTITY username.label "Felhasználónév">
+<!ENTITY username.tooltip "Megjegyezendő felhasználónév">
+<!ENTITY password.label "Jelszó">
+<!ENTITY password.tooltip "Megjegyezendő jelszó">
+<!ENTITY usernameField.label "Felhasználónév-mező neve">
+<!ENTITY usernameField.tooltip "A felhasználónév-mező név attribútuma">
+<!ENTITY passwordField.label "Jelszó-mező neve">
+<!ENTITY passwordField.tooltip "A jelszó-mező név attribútuma">
+<!ENTITY showPassword.label "Megjelenítés">
+<!ENTITY showPassword.accesskey "M">
+<!ENTITY showPassword.tooltip "Jelszó megjelenítése/elrejtése">
+<!ENTITY hidePassword.label "Elrejtés">
+<!ENTITY hidePassword.accesskey "E">
+<!ENTITY guessfrompage.label "Betöltés a jelenlegi weboldalról">
+<!ENTITY guessfrompage.accesskey "w">
+<!ENTITY guessfrompage.tooltip "Az adat betöltésének megkísérlése a jelenlegi weboldalról">
+<!ENTITY prevform.label "Előző forma">
+<!ENTITY prevform.accesskey "E">
+<!ENTITY prevform.tooltip "Az oldal korábbi formájának kipróbálása">
+<!ENTITY nextform.label "Következő forma">
+<!ENTITY nextform.accesskey "K">
+<!ENTITY nextform.tooltip "Az oldal következő formájának kipróbálása">
diff --git a/locale/hu/pwdedit.properties b/locale/hu/pwdedit.properties
new file mode 100644
index 0000000..77d4cf9
--- /dev/null
+++ b/locale/hu/pwdedit.properties
@@ -0,0 +1,9 @@
+# TRANSLATORS: \n stands for a line break, and %S is a placeholder
+# for a string to be inserted.
+# SAVED PASSWORD EDITOR DIALOG
+newlogin=Új bejelentkezési adat
+clonelogin=Bejelentkezési adat klónozása
+editlogin=Szerkesztés
+editmultlogin=Többszörös bejelentkezések szerkesztése
+nologinform=Nincs bejelentkezési űrlap az oldalon!
+multduplogins=Ez eredményül kettőzött bejelentkezéseknél lehet. Annak érdekében, hogy a szerkesztés befejeződjön, meg kell hagynia legalább egy kiszolgálót, elküldeni az előtagot, HTTP kiszolgálót, vagy a felhasználónév mezőt (adott esetben) a meghatározhatatlan állapotban a megadott érték(ek) törlésével.
diff --git a/locale/hu/pwdmgrOverlay.dtd b/locale/hu/pwdmgrOverlay.dtd
new file mode 100644
index 0000000..6fcf9a4
--- /dev/null
+++ b/locale/hu/pwdmgrOverlay.dtd
@@ -0,0 +1,11 @@
+<!-- TRANSLATORS - be aware that these access keys are used in several places:
+     the context menu introduced in Fx 4.0, my menu-button, and as shortcut
+     keys for the whole window. Make sure your choices don't conflict in any of
+     those contexts. 
+-->
+<!ENTITY newentry.label "Új adat">
+<!ENTITY newentry.accesskey "a">
+<!ENTITY editentry.label "Szerkesztés">
+<!ENTITY editentry.accesskey "z">
+<!ENTITY cloneentry.label "Klónozás">
+<!ENTITY cloneentry.accesskey "K">
diff --git a/locale/hu/pwdmgrOverlay.properties b/locale/hu/pwdmgrOverlay.properties
new file mode 100644
index 0000000..2ce81ce
--- /dev/null
+++ b/locale/hu/pwdmgrOverlay.properties
@@ -0,0 +1,4 @@
+# TRANSLATORS: \n stands for a line break, and %S is a placeholder
+# for a string to be inserted.
+# POPUP MESSAGE WHEN ADDING/MODIFYING AN ENTRY FAILS
+badnewentry=Hiba:\n  %S\nMegkísérli megkettőzni a bejelentkezési adat bejegyzését?
diff --git a/locale/hu/spe.properties b/locale/hu/spe.properties
new file mode 100644
index 0000000..b1bd8f1
--- /dev/null
+++ b/locale/hu/spe.properties
@@ -0,0 +1,10 @@
+# TRANSLATORS: \n stands for a line break, and %S is a placeholder
+# for a string to be inserted.
+savedpasswordeditor=Saved Password Editor
+error=Hiba
+nologinstoedit=Nincs szerkeszthető bejelentkezési adat!
+nologinstodelete=Nincs törölhető bejelentkezési adat!
+logininfosaved=Bejelentkezési adat elmentve
+logininfochanged=Bejelentkezési adat módosítva
+logininfodeleted=Bejelentkezési adat törölve
+failed=A művelet nem sikerült:\n  %S
diff --git a/locale/hu/welcome.dtd b/locale/hu/welcome.dtd
new file mode 100644
index 0000000..9c47372
--- /dev/null
+++ b/locale/hu/welcome.dtd
@@ -0,0 +1,50 @@
+<!-- LOCALE
+
+     Format: language-COUNTRY according to RFC 1766
+     ( http://www.ietf.org/rfc/rfc1766.txt ). COUNTRY is for dialectal
+     variation and is not necessary for locales without such variation. You can
+     probably copy the locale tag of your localized Mozilla application
+     (Firefox, etc.). Examples:
+
+     en-US  - English in US
+     en-GB  - English in Great Britain
+     de-DE  - German in Germany
+     ru     - Russian (no specific country)
+
+-->
+<!ENTITY locale "hu">
+<!-- LAYOUT DIRECTION: "LTR" for left-to-right; "RTL" for right-to-left.
+     Generally, this should follow the direction of your writing system. 
+-->
+<!ENTITY layoutdirection "LTR">
+<!-- WELCOME PAGE
+
+     This needs a little care. There is some embedded markup (sorry about
+     that). Of course, don't translate any text inside tags. The & lt; and
+     & gt; codes produce < and > respectively, but don't reverse them; that
+     will be done automatically for right-to-left text. & quot; produces a
+     double quote character. Please substitute whatever is appropriate in your
+     locale, but if you are editing this file directly, as opposed to using
+     BabelZilla's interface, anything other than <, >, ", ', and & must be in
+     UTF-8 or use numerical entities (e.g. & #x89ab;); named entities other
+     than the ones for those five characters (& lt; & gt; & quot; & apos;
+     & amp;) are NOT defined in this context. Double quote characters must be
+     encoded as & quot; (again, if you are editing directly), since the
+     strings are already double-quote delimited.
+
+-->
+<!ENTITY welcometospe "Üdvözöljük a Saved Password Editor kiterjesztében">
+<!-- Paragraph 1, Firefox version -->
+<!ENTITY welcomepara1_fx "Köszönjük, hogy a <a id='addonlink'>Saved Password Editor</a> kiterjesztést használja. A szerkesztés funkció elérhető az Eszközök > Beállítások, vagy Szerkesztés > Beállítások (az operációs rendszertől függően) menüből a "Biztonság" panel kiválasztásával. A mentett jeszavak hozzáférhetőek az eszköztár menüből, vagy (Windows alatt Firefox 4-ben) az alkalmazások menüből. Az eszköztár gomb is elérhető a Nézet > Eszköztár > Testreszabás…, vagy  [...]
+<!-- Paragraph 1, SeaMonkey version -->
+<!-- XXXXX TRANSLATORS: Please pay attention! XXXXX
+     XXXXX SeaMonkey DOES NOT HAVE View > Toolbars > Customize…
+           among other things XXXXX
+     XXXXX Be careful if you copy and paste. XXXXX 
+-->
+<!ENTITY welcomepara1_sm "Köszönjük, hogy a <a id='addonlink'>Saved Password Editor</a> kiterjesztést választotta. A szerkesztés funkció elérhető az Eszközök > Beállítások, vagy Szerkesztés > Beállítások (az operációs rendszertől függően) menüből a "Jelszavak" panel kiválasztásával az "Adatvédelem & Biztonság"-ra, majd a "Mentett jelszavak kezelése" gombra kattintva. A mentett jelszavak az eszközök menüből is elérhetőek. Egy eszköztár gomb is rende [...]
+<!-- Paragraph 2 -->
+<!-- The "span" element here is replaced by "Firefox", "Thunderbird", etc. -->
+<!ENTITY welcomepara2 "Jegyezze meg, hogy a Mentett jelszavak párbeszédablak <span id='appname'></span> komponensen alapszik, és nem kizárólag e kiterjesztés által érhető el. Kivételt képez a két hozzáadott gomb. Az eszköztár gomb csak a gyorsabb elérhetőség érdekében lett beépítve, mert több felhasználó gyakrabban kíván hozzáférni a párbeszédablakhoz.">
+<!-- Paragraph 3 -->
+<!ENTITY welcomepara3 "Bejelentkezési adat módosítása az űrlap bármely mezejére kattintva az egér jobb gombjával és a megfelelő műveletet kiválasztva.">
diff --git a/locale/id-ID/browserOverlay.dtd b/locale/id-ID/browserOverlay.dtd
new file mode 100644
index 0000000..02457ab
--- /dev/null
+++ b/locale/id-ID/browserOverlay.dtd
@@ -0,0 +1,14 @@
+<!-- Open Saved Passwords -->
+<!ENTITY savedpasswords.label "Simpanan Kata Sandi">
+<!ENTITY savedpasswords.accesskey "s">
+<!ENTITY savedpasswords.tooltip "Buka dialog Simpanan Kata Sandi">
+<!-- Context menu -->
+<!ENTITY ctx_savelogininfo.label "Save login info">
+<!ENTITY ctx_savelogininfo.accesskey "S">
+<!ENTITY ctx_savelogininfo.tooltip "Add a saved password for this form">
+<!ENTITY ctx_editlogininfo.label "Edit login info">
+<!ENTITY ctx_editlogininfo.accesskey "E">
+<!ENTITY ctx_editlogininfo.tooltip "Edit a saved password for this form">
+<!ENTITY ctx_deletelogininfo.label "Delete login info">
+<!ENTITY ctx_deletelogininfo.accesskey "D">
+<!ENTITY ctx_deletelogininfo.tooltip "Delete a saved password for this form">
diff --git a/locale/id-ID/prefwindow.dtd b/locale/id-ID/prefwindow.dtd
new file mode 100644
index 0000000..5762afd
--- /dev/null
+++ b/locale/id-ID/prefwindow.dtd
@@ -0,0 +1,18 @@
+<!ENTITY prefwindow.title "Preferensi Editor Simpanan Kata Sandi">
+<!ENTITY displayMenuitem.label "Masukkan jalan pintas di menu">
+<!ENTITY displayMenuitem.tooltip "Tambahkan "Simpanan Kata Sandi" ke menu Peralatan dan menu aplikasi Windows sebagai jalan pintas ke pengatur kata sandi">
+<!ENTITY renameMenuitemTo.label "Rename shortcut to:">
+<!ENTITY renameMenuitemTo.tooltip "Enter something here to call the shortcut something other than "Saved Passwords", if you want to make it less obvious to meddlers. Erase the value to return to using "Saved Passwords". Warning: this is not a substitute for proper security; you should use a master password when possible if you need to protect your passwords.">
+<!ENTITY preselectCurrentSite.label "Pilih situs ini di Simpanan Kata Sandi">
+<!ENTITY preselectCurrentSite.tooltip "Ketika membuka Simpanan Kata Sandi, situs yang dikunjungi akan langsung dipilih di tab browser.">
+<!ENTITY alwaysShowPasswords.label "Always show passwords">
+<!ENTITY alwaysShowPasswords.tooltip "If checked, Saved Password Editor will cause the Password column to be shown when the Saved Passwords dialog opens and show the password when the editor dialog opens.">
+<!ENTITY alwaysPromptForMasterPassword.label "Always prompt for master password">
+<!ENTITY alwaysPromptForMasterPassword.tooltip "Prompts for master password when showing passwords in Saved Passwords. If enabled, this unavoidably causes a double prompt at least once per session. If disabled, in most cases you will not be prompted for the master password.">
+<!ENTITY passwordfield_caption.label "Kolom kata sandi di jendela editor">
+<!ENTITY passwordfield_alwayshide.label "Selalu sembunyikan kata sandi ketika membuka jendela editor">
+<!ENTITY passwordfield_alwaysshow.label "Selalu tampilkan kata sandi ketika membuka jendela editor">
+<!ENTITY passwordfield_rememberlast.label "Ingat keadaan terakhir">
+<!ENTITY passwordfield_rememberlast.tooltip "Tampilkan atau sembunyikan jendela terakhir dibuka">
+<!ENTITY passwordfield_followspwin.label "Menurut daftar Simpanan Kata Sandi">
+<!ENTITY passwordfield_followspwin.tooltip "Tampilkan jika dan hanya jika kata sandi saat ini ditampilkan di jendela Simpanan Kata Sandi">
diff --git a/locale/id-ID/pwdedit.dtd b/locale/id-ID/pwdedit.dtd
new file mode 100644
index 0000000..32bd175
--- /dev/null
+++ b/locale/id-ID/pwdedit.dtd
@@ -0,0 +1,36 @@
+<!ENTITY savedpasswordeditor.title "Editor Simpanan Kata Sandi">
+<!ENTITY signontype.label "Tipe">
+<!ENTITY type_form.label "Formulir web">
+<!ENTITY type_form.accesskey "w">
+<!ENTITY type_form.tooltip "A form contained in a web page">
+<!ENTITY type_annotated.label "Annotated">
+<!ENTITY type_annotated.accesskey "A">
+<!ENTITY type_annotated.tooltip "A login that requires a string in addition to the host to identify the service (e.g. HTTP authentication)">
+<!ENTITY hostname.label "Host">
+<!ENTITY hostname.tooltip "Protokol/nama host yang mana kata sandi diterapkan (http://www.contoh.com)">
+<!ENTITY formSubmitURL.label "Masukkan kata depan">
+<!ENTITY formSubmitURL.tooltip "Kata depan alamat formulir">
+<!ENTITY annotation.label "Annotation">
+<!ENTITY annotation.tooltip "Additional string identifying the service to authenticate to (e.g. HTTP realm)">
+<!ENTITY username.label "Nama pengguna">
+<!ENTITY username.tooltip "Nama pengguna untuk diingat">
+<!ENTITY password.label "Kata sandi">
+<!ENTITY password.tooltip "Kata sandi untuk diingat">
+<!ENTITY usernameField.label "Nama kolom nama pengguna">
+<!ENTITY usernameField.tooltip "Atribut nama untuk kolom nama pengguna yang sesuai di formulir">
+<!ENTITY passwordField.label "Nama kolom kata sandi">
+<!ENTITY passwordField.tooltip "Atribut nama untuk kolom kata sandi yang sesuai di formulir">
+<!ENTITY showPassword.label "Tampilkan">
+<!ENTITY showPassword.accesskey "t">
+<!ENTITY showPassword.tooltip "Toggle visibilitas kata sandi">
+<!ENTITY hidePassword.label "Sembunyikan">
+<!ENTITY hidePassword.accesskey "y">
+<!ENTITY guessfrompage.label "Tebak dari halaman sekarang">
+<!ENTITY guessfrompage.accesskey "g">
+<!ENTITY guessfrompage.tooltip "Isi di formulir ini berdasarkan formulir login pada halaman sekarang">
+<!ENTITY prevform.label "Formulir sebelumnya">
+<!ENTITY prevform.accesskey "m">
+<!ENTITY prevform.tooltip "Coba formulir sebelumnya dari halaman">
+<!ENTITY nextform.label "Formulir selanjutnya">
+<!ENTITY nextform.accesskey "n">
+<!ENTITY nextform.tooltip "Coba formulir selanjutnya dari halaman">
diff --git a/locale/id-ID/pwdedit.properties b/locale/id-ID/pwdedit.properties
new file mode 100644
index 0000000..48dc7a2
--- /dev/null
+++ b/locale/id-ID/pwdedit.properties
@@ -0,0 +1,9 @@
+# TRANSLATORS: \n stands for a line break, and %S is a placeholder
+# for a string to be inserted.
+# SAVED PASSWORD EDITOR DIALOG
+newlogin=Membuat login baru
+clonelogin=Mengkloning login
+editlogin=Menyunting login
+editmultlogin=Menyunting beberapa login
+nologinform=Tidak ada formulir login yang cocok ditemukan di halaman ini!
+multduplogins=Ini bisa menghasilkan login rangkap. Agar bisa menyelesaikan suntingan, Anda harus membiarkan sedikitknya satu dari host, awalan penyerahan, HTTP realm, atau kolom nama pengguna (yang berlaku)dalam keadaan tak tentu, dengan menghapus nilai yang Anda telah masukkan.
diff --git a/locale/id-ID/pwdmgrOverlay.dtd b/locale/id-ID/pwdmgrOverlay.dtd
new file mode 100644
index 0000000..72e7c4f
--- /dev/null
+++ b/locale/id-ID/pwdmgrOverlay.dtd
@@ -0,0 +1,11 @@
+<!-- TRANSLATORS - be aware that these access keys are used in several places:
+     the context menu introduced in Fx 4.0, my menu-button, and as shortcut
+     keys for the whole window. Make sure your choices don't conflict in any of
+     those contexts. 
+-->
+<!ENTITY newentry.label "Baru">
+<!ENTITY newentry.accesskey "B">
+<!ENTITY editentry.label "Edit">
+<!ENTITY editentry.accesskey "E">
+<!ENTITY cloneentry.label "Klon">
+<!ENTITY cloneentry.accesskey "K">
diff --git a/locale/id-ID/pwdmgrOverlay.properties b/locale/id-ID/pwdmgrOverlay.properties
new file mode 100644
index 0000000..35901f0
--- /dev/null
+++ b/locale/id-ID/pwdmgrOverlay.properties
@@ -0,0 +1,4 @@
+# TRANSLATORS: \n stands for a line break, and %S is a placeholder
+# for a string to be inserted.
+# POPUP MESSAGE WHEN ADDING/MODIFYING AN ENTRY FAILS
+badnewentry=Mendapat kesalahan:\n  %S\nApakah Anda mencoba untuk membuat duplikat entri login?
diff --git a/locale/id-ID/spe.properties b/locale/id-ID/spe.properties
new file mode 100644
index 0000000..5b50177
--- /dev/null
+++ b/locale/id-ID/spe.properties
@@ -0,0 +1,10 @@
+# TRANSLATORS: \n stands for a line break, and %S is a placeholder
+# for a string to be inserted.
+savedpasswordeditor=Saved Password Editor
+error=Kesalahan
+nologinstoedit=No logins to edit!
+nologinstodelete=No logins to delete!
+logininfosaved=Login info saved
+logininfochanged=Login info changed
+logininfodeleted=Login info deleted
+failed=The operation failed:\n  %S
diff --git a/locale/id-ID/welcome.dtd b/locale/id-ID/welcome.dtd
new file mode 100644
index 0000000..ed08a4f
--- /dev/null
+++ b/locale/id-ID/welcome.dtd
@@ -0,0 +1,50 @@
+<!-- LOCALE
+
+     Format: language-COUNTRY according to RFC 1766
+     ( http://www.ietf.org/rfc/rfc1766.txt ). COUNTRY is for dialectal
+     variation and is not necessary for locales without such variation. You can
+     probably copy the locale tag of your localized Mozilla application
+     (Firefox, etc.). Examples:
+
+     en-US  - English in US
+     en-GB  - English in Great Britain
+     de-DE  - German in Germany
+     ru     - Russian (no specific country)
+
+-->
+<!ENTITY locale "id-ID">
+<!-- LAYOUT DIRECTION: "LTR" for left-to-right; "RTL" for right-to-left.
+     Generally, this should follow the direction of your writing system. 
+-->
+<!ENTITY layoutdirection "LTR">
+<!-- WELCOME PAGE
+
+     This needs a little care. There is some embedded markup (sorry about
+     that). Of course, don't translate any text inside tags. The & lt; and
+     & gt; codes produce < and > respectively, but don't reverse them; that
+     will be done automatically for right-to-left text. & quot; produces a
+     double quote character. Please substitute whatever is appropriate in your
+     locale, but if you are editing this file directly, as opposed to using
+     BabelZilla's interface, anything other than <, >, ", ', and & must be in
+     UTF-8 or use numerical entities (e.g. & #x89ab;); named entities other
+     than the ones for those five characters (& lt; & gt; & quot; & apos;
+     & amp;) are NOT defined in this context. Double quote characters must be
+     encoded as & quot; (again, if you are editing directly), since the
+     strings are already double-quote delimited.
+
+-->
+<!ENTITY welcometospe "Selamat datang di Editor Simpanan Kata Sandi">
+<!-- Paragraph 1, Firefox version -->
+<!ENTITY welcomepara1_fx "Terima kasih telah menggunakan <a id='addonlink'>Editor Simpanan Kata Sandi</a>. Anda bisa mengakses fungsionalitas suntingan dengan pergi ke Peralatan > Opsi, atau Edit > Preferensi (tergantung sistem operasi Anda), pilih tab "Keamanan", lalu klik pada tombol "Simpanan Kata Sandi…". Anda bisa juga mengakses dengan mudah Simpanan Kata Sandi dari menu peralatan atau menu aplikasi (pada Firefox 4 di Windows). Tombol toolbar juga tersedia  [...]
+<!-- Paragraph 1, SeaMonkey version -->
+<!-- XXXXX TRANSLATORS: Please pay attention! XXXXX
+     XXXXX SeaMonkey DOES NOT HAVE View > Toolbars > Customize…
+           among other things XXXXX
+     XXXXX Be careful if you copy and paste. XXXXX 
+-->
+<!ENTITY welcomepara1_sm "Terima kasih telah menggunakan <a id='addonlink'>Editor Simpanan Kata Sandi</a>. Anda bisa mengakses fungsionalitas suntingan dengan pergi ke Peralatan > Opsi, atau Edit > Preferensi (tergantung sistem operasi Anda), navigasikan ke tab "Kata Sandi" di bawah "Privacy & Security", lalu klik pada tombol "Atur Simpanan Kata Sandi". Anda bisa dengan mudah mengakses Simpanan Kata Sandi dari menu Peralatan. Tombol toolbar juga te [...]
+<!-- Paragraph 2 -->
+<!-- The "span" element here is replaced by "Firefox", "Thunderbird", etc. -->
+<!ENTITY welcomepara2 "Perhatikan bahwa dialog Simpanan Kata Sandi merupakan komponen dasar dari <span id='appname'></span>, dan tidak disediakan oleh ekstensi ini, kecuali untuk fungsi-fungsi yang ditambahkan yang disebutkan di atas. Tombol toolbar disediakan hanya untuk kemudahan, dengan perkiraan bahwa beberapa pengguna ekstensi ini akan mengakses dialog lebih sering daripada mereka yang tidak.">
+<!-- Paragraph 3 -->
+<!ENTITY welcomepara3 "You may also manipulate logins associated with a particular web form by right-clicking on any of its fields and selecting an action.">
diff --git a/locale/ja/browserOverlay.dtd b/locale/ja/browserOverlay.dtd
new file mode 100644
index 0000000..2d2898d
--- /dev/null
+++ b/locale/ja/browserOverlay.dtd
@@ -0,0 +1,14 @@
+<!-- Open Saved Passwords -->
+<!ENTITY savedpasswords.label "保存されているパスワード">
+<!ENTITY savedpasswords.accesskey "v">
+<!ENTITY savedpasswords.tooltip "保存されているパスワードのダイアログを開きます">
+<!-- Context menu -->
+<!ENTITY ctx_savelogininfo.label "ログイン情報を保存">
+<!ENTITY ctx_savelogininfo.accesskey "S">
+<!ENTITY ctx_savelogininfo.tooltip "このフォームの保存されたパスワードを追加します">
+<!ENTITY ctx_editlogininfo.label "ログイン情報を編集">
+<!ENTITY ctx_editlogininfo.accesskey "E">
+<!ENTITY ctx_editlogininfo.tooltip "このフォームの保存されたパスワードを編集します">
+<!ENTITY ctx_deletelogininfo.label "ログイン情報を削除">
+<!ENTITY ctx_deletelogininfo.accesskey "D">
+<!ENTITY ctx_deletelogininfo.tooltip "このフォームの保存されたパスワードを削除します">
diff --git a/locale/ja/prefwindow.dtd b/locale/ja/prefwindow.dtd
new file mode 100644
index 0000000..6d5b377
--- /dev/null
+++ b/locale/ja/prefwindow.dtd
@@ -0,0 +1,18 @@
+<!ENTITY prefwindow.title "Saved Password Editor 設定">
+<!ENTITY displayMenuitem.label "メニューにショートカットメニューを追加する">
+<!ENTITY displayMenuitem.tooltip "[ツール] メニューと Windows アプリメニューに、パスワードマネージャを開く [保存されているパスワード] メニューを追加します">
+<!ENTITY renameMenuitemTo.label "ショートカットを名前変更:">
+<!ENTITY renameMenuitemTo.tooltip "ショートカット名を "Saved Passwords" から変更します。この文字列を削除して空欄にすると初期値の "Saved Passwords" に戻ります。警告: この設定は適切なセキュリティのための代替にはなりません。パスワードを保護する必要がある時はマスターパスワードを使用してください。">
+<!ENTITY preselectCurrentSite.label "保存されたパスワードから現在のサイトを選択する">
+<!ENTITY preselectCurrentSite.tooltip "保存されたパスワードを開いた時、現在のブラウザタブ表示しているサイトの項目へスクロールして選択します。">
+<!ENTITY alwaysShowPasswords.label "パスワードを常に表示する">
+<!ENTITY alwaysShowPasswords.tooltip "チェックを入れると、保存されたパスワードダイアログを開いた時に常にパスワードの列が表示されるようになります。">
+<!ENTITY alwaysPromptForMasterPassword.label "常にマスターパスワードの入力を求める">
+<!ENTITY alwaysPromptForMasterPassword.tooltip "保存されたパスワードダイアログでパスワードを表示する時にマスターパスワードの入力が求めらます。この設定を有効にすると、一度のセッションごとに二回求められ、避けることはできません。無効にすると、マスターパスワードの入力は求められません。">
+<!ENTITY passwordfield_caption.label "編集ウィンドウのパスワードフィールド">
+<!ENTITY passwordfield_alwayshide.label "編集ウィンドウを開いた時、常にパスワードを隠す">
+<!ENTITY passwordfield_alwaysshow.label "編集ウィンドウを開いた時、常にパスワードを表示する">
+<!ENTITY passwordfield_rememberlast.label "最後の表示状態を記憶する">
+<!ENTITY passwordfield_rememberlast.tooltip "前回開いた時と同じ状態で表示します">
+<!ENTITY passwordfield_followspwin.label "保存されたパスワードのリスト表示に従う">
+<!ENTITY passwordfield_followspwin.tooltip "保存されたパスワードのウィンドウでパスワードが表示されている場合に表示します">
diff --git a/locale/ja/pwdedit.dtd b/locale/ja/pwdedit.dtd
new file mode 100644
index 0000000..fbd783d
--- /dev/null
+++ b/locale/ja/pwdedit.dtd
@@ -0,0 +1,36 @@
+<!ENTITY savedpasswordeditor.title "Saved Password Editor">
+<!ENTITY signontype.label "サインオン形式">
+<!ENTITY type_form.label "Web フォーム">
+<!ENTITY type_form.accesskey "W">
+<!ENTITY type_form.tooltip "Web ページに含まれるフォーム">
+<!ENTITY type_annotated.label "アノテーション">
+<!ENTITY type_annotated.accesskey "A">
+<!ENTITY type_annotated.tooltip "サービスを特定するためホストに文字列を追加する必要があるログイン (HTTP 認証など)">
+<!ENTITY hostname.label "ホスト">
+<!ENTITY hostname.tooltip "パスワードを適用するプロトコル/ホスト名 (例、http://www.example.com)">
+<!ENTITY formSubmitURL.label "送信 URL のプレフィクス">
+<!ENTITY formSubmitURL.tooltip "フォームを送信するアドレスのプレフィクス">
+<!ENTITY annotation.label "アノテーション">
+<!ENTITY annotation.tooltip "追加の文字列は、認証するサービスを特定します (HTTP レルムなど)">
+<!ENTITY username.label "ユーザ名">
+<!ENTITY username.tooltip "記憶させるユーザ名">
+<!ENTITY password.label "パスワード">
+<!ENTITY password.tooltip "記憶させるパスワード">
+<!ENTITY usernameField.label "ユーザ名欄の name 属性">
+<!ENTITY usernameField.tooltip "フォーム内のユーザ名欄に対応する name 属性の値">
+<!ENTITY passwordField.label "パスワード欄の name 属性">
+<!ENTITY passwordField.tooltip "フォーム内のパスワード欄に対応する name 属性の値">
+<!ENTITY showPassword.label "表示">
+<!ENTITY showPassword.accesskey "S">
+<!ENTITY showPassword.tooltip "パスワードの表示と非表示を切り替えます">
+<!ENTITY hidePassword.label "隠す">
+<!ENTITY hidePassword.accesskey "H">
+<!ENTITY guessfrompage.label "現在のページから取得">
+<!ENTITY guessfrompage.accesskey "G">
+<!ENTITY guessfrompage.tooltip "現在のページ上のログインフォームを読み取り、上記のフォームに入力します">
+<!ENTITY prevform.label "前のフォーム">
+<!ENTITY prevform.accesskey "P">
+<!ENTITY prevform.tooltip "ページ内の前のフォームを試します">
+<!ENTITY nextform.label "次のフォーム">
+<!ENTITY nextform.accesskey "N">
+<!ENTITY nextform.tooltip "ページ内の次のフォームを試します">
diff --git a/locale/ja/pwdedit.properties b/locale/ja/pwdedit.properties
new file mode 100644
index 0000000..21006a2
--- /dev/null
+++ b/locale/ja/pwdedit.properties
@@ -0,0 +1,9 @@
+# TRANSLATORS: \n stands for a line break, and %S is a placeholder
+# for a string to be inserted.
+# SAVED PASSWORD EDITOR DIALOG
+newlogin=ログインエントリの新規作成
+clonelogin=ログインエントリを複製
+editlogin=ログインエントリを編集
+editmultlogin=複数のログインエントリを編集
+nologinform=現在のページにログインフォームが見つかりません!
+multduplogins=ログインエントリが重複する可能性があります。編集を完了するには、入力したホスト、送信プレフィクス、アノテーション、ユーザ名のフィールド (適用可能なもの) の情報のうち、少なくとも一つの値を消去して情報が未確定なものを残さなければなりません。
diff --git a/locale/ja/pwdmgrOverlay.dtd b/locale/ja/pwdmgrOverlay.dtd
new file mode 100644
index 0000000..83973b6
--- /dev/null
+++ b/locale/ja/pwdmgrOverlay.dtd
@@ -0,0 +1,11 @@
+<!-- TRANSLATORS - be aware that these access keys are used in several places:
+     the context menu introduced in Fx 4.0, my menu-button, and as shortcut
+     keys for the whole window. Make sure your choices don't conflict in any of
+     those contexts. 
+-->
+<!ENTITY newentry.label "新規作成">
+<!ENTITY newentry.accesskey "N">
+<!ENTITY editentry.label "編集">
+<!ENTITY editentry.accesskey "E">
+<!ENTITY cloneentry.label "複製">
+<!ENTITY cloneentry.accesskey "l">
diff --git a/locale/ja/pwdmgrOverlay.properties b/locale/ja/pwdmgrOverlay.properties
new file mode 100644
index 0000000..344d48d
--- /dev/null
+++ b/locale/ja/pwdmgrOverlay.properties
@@ -0,0 +1,4 @@
+# TRANSLATORS: \n stands for a line break, and %S is a placeholder
+# for a string to be inserted.
+# POPUP MESSAGE WHEN ADDING/MODIFYING AN ENTRY FAILS
+badnewentry=エラーが発生しました:\n %S\n既存のログインエントリと同じものを作成しようとしていませんか?
diff --git a/locale/ja/spe.properties b/locale/ja/spe.properties
new file mode 100644
index 0000000..87e3c89
--- /dev/null
+++ b/locale/ja/spe.properties
@@ -0,0 +1,10 @@
+# TRANSLATORS: \n stands for a line break, and %S is a placeholder
+# for a string to be inserted.
+savedpasswordeditor=Saved Password Editor
+error=エラー
+nologinstoedit=編集可能なログイン情報がありません!
+nologinstodelete=削除するログイン情報がありません!
+logininfosaved=ログイン情報を保存しました
+logininfochanged=ログイン情報を変更しました
+logininfodeleted=ログイン情報を削除しました
+failed=操作に失敗しました:\n  %S
diff --git a/locale/ja/welcome.dtd b/locale/ja/welcome.dtd
new file mode 100644
index 0000000..14ac0cf
--- /dev/null
+++ b/locale/ja/welcome.dtd
@@ -0,0 +1,50 @@
+<!-- LOCALE
+
+     Format: language-COUNTRY according to RFC 1766
+     ( http://www.ietf.org/rfc/rfc1766.txt ). COUNTRY is for dialectal
+     variation and is not necessary for locales without such variation. You can
+     probably copy the locale tag of your localized Mozilla application
+     (Firefox, etc.). Examples:
+
+     en-US  - English in US
+     en-GB  - English in Great Britain
+     de-DE  - German in Germany
+     ru     - Russian (no specific country)
+
+-->
+<!ENTITY locale "ja">
+<!-- LAYOUT DIRECTION: "LTR" for left-to-right; "RTL" for right-to-left.
+     Generally, this should follow the direction of your writing system. 
+-->
+<!ENTITY layoutdirection "LTR">
+<!-- WELCOME PAGE
+
+     This needs a little care. There is some embedded markup (sorry about
+     that). Of course, don't translate any text inside tags. The & lt; and
+     & gt; codes produce < and > respectively, but don't reverse them; that
+     will be done automatically for right-to-left text. & quot; produces a
+     double quote character. Please substitute whatever is appropriate in your
+     locale, but if you are editing this file directly, as opposed to using
+     BabelZilla's interface, anything other than <, >, ", ', and & must be in
+     UTF-8 or use numerical entities (e.g. & #x89ab;); named entities other
+     than the ones for those five characters (& lt; & gt; & quot; & apos;
+     & amp;) are NOT defined in this context. Double quote characters must be
+     encoded as & quot; (again, if you are editing directly), since the
+     strings are already double-quote delimited.
+
+-->
+<!ENTITY welcometospe "Saved Password Editor">
+<!-- Paragraph 1, Firefox version -->
+<!ENTITY welcomepara1_fx "<a id='addonlink'>Saved Password Editor</a> のご利用ありがとうございます。 パスワードの編集機能は、[ツール] メニュー > [オプション...] または、[編集] メニュー > [設定...] (OS によって異なります) を選択し、[セキュリティ] ペインを選択、[保存されているパスワード...] ボタンをクリックしてアクセスします。または、[ツール] メニューや Firefox 4 のアプリメニューから簡単にアクセスすることもできます。ツールバーボタンからアクセスすることもできます。ツールバーにボタンを追加するには、[表示] メニュー > [ツールバー] > [カスタマイズ...] を選択するか、ツールバーを右クリックして [カスタマイズ...] を選択します。保存されているパスワードのダイアログには、[編集] ボタンと [新規作成] ボタンが追加されています。また、Firefox 4.0 ではコンテキストメニューに [編集] と [複製] が追 [...]
+<!-- Paragraph 1, SeaMonkey version -->
+<!-- XXXXX TRANSLATORS: Please pay attention! XXXXX
+     XXXXX SeaMonkey DOES NOT HAVE View > Toolbars > Customize…
+           among other things XXXXX
+     XXXXX Be careful if you copy and paste. XXXXX 
+-->
+<!ENTITY welcomepara1_sm "<a id='addonlink'>Saved Password Editor</a> のご利用ありがとうございます。 パスワードの編集機能は、[編集] メニュー > [設定...] (OS によって異なります) を選択し、[プライバシーとセキュリティ] 下の [パスワード] ペインを選択、[保存したパスワードの管理] ボタンをクリックします。[ツール] メニューから簡単にアクセスすることもできます。ツールバーボタンからアクセスすることもできます。ツールバーにボタンを追加するには、ツールバーを右クリックして [カスタマイズ...] を選択します。保存されているパスワードのダイアログには、[編集] ボタンと [新規作成] ボタンが追加されています。">
+<!-- Paragraph 2 -->
+<!-- The "span" element here is replaced by "Firefox", "Thunderbird", etc. -->
+<!ENTITY welcomepara2 "注意: 保存されているパスワードのダイアログは、<span id='appname'></span> の基本コンポーネントであり、この拡張機能が提供している機能ではありません (上記の機能を除く)。ツールバーボタンは、ダイアログをよく開くユーザの利便性のために、この拡張機能が提供しています。">
+<!-- Paragraph 3 -->
+<!ENTITY welcomepara3 "また、特定の Web フォームのフィールドを右クリックして動作を選択することにより、それに関連付けられたログインも操作できます。">
diff --git a/locale/nl/browserOverlay.dtd b/locale/nl/browserOverlay.dtd
new file mode 100644
index 0000000..eec47be
--- /dev/null
+++ b/locale/nl/browserOverlay.dtd
@@ -0,0 +1,14 @@
+<!-- Open Saved Passwords -->
+<!ENTITY savedpasswords.label "Opgeslagen wachtwoorden">
+<!ENTITY savedpasswords.accesskey "s">
+<!ENTITY savedpasswords.tooltip "Het dialoogvenster Opgeslagen wachtwoorden openen">
+<!-- Context menu -->
+<!ENTITY ctx_savelogininfo.label "Aanmeldinformatie opslaan">
+<!ENTITY ctx_savelogininfo.accesskey "p">
+<!ENTITY ctx_savelogininfo.tooltip "Opgeslagen wachtwoord voor dit formulier toevoegen">
+<!ENTITY ctx_editlogininfo.label "Aanmeldinformatie bewerken">
+<!ENTITY ctx_editlogininfo.accesskey "B">
+<!ENTITY ctx_editlogininfo.tooltip "Een opgeslagen wachtwoord voor dit formulier bewerken">
+<!ENTITY ctx_deletelogininfo.label "Aanmeldinformatie verwijderen">
+<!ENTITY ctx_deletelogininfo.accesskey "w">
+<!ENTITY ctx_deletelogininfo.tooltip "Een opgeslagen wachtwoord voor dit formulier verwijderen">
diff --git a/locale/nl/prefwindow.dtd b/locale/nl/prefwindow.dtd
new file mode 100644
index 0000000..72adcd1
--- /dev/null
+++ b/locale/nl/prefwindow.dtd
@@ -0,0 +1,18 @@
+<!ENTITY prefwindow.title "Saved Password Editor-voorkeuren">
+<!ENTITY displayMenuitem.label "Snelkoppeling in menu’s opnemen">
+<!ENTITY displayMenuitem.tooltip "Voegt “Opgeslagen wachtwoorden” als een snelkoppeling naar de wachtwoordbeheerder toe aan de menu’s Extra en het Firefoxmenu in Windows en Linux.">
+<!ENTITY renameMenuitemTo.label "Snelkoppeling hernoemen naar:">
+<!ENTITY renameMenuitemTo.tooltip "Voer hier iets in om de snelkoppeling anders te noemen dan “Opgeslagen wachtwoorden”, als u het wat onopvallender wilt maken. Wis de waarde om “Opgeslagen wachtwoorden” weer te gebruiken. Waarschuwing: dit is geen vervanging voor een goede beveiliging; u dient indien mogelijk een hoofdwachtwoord in te stellen om uw wachtwoorden te beschermen.">
+<!ENTITY preselectCurrentSite.label "Huidige website preselecteren in Opgeslagen wachtwoorden">
+<!ENTITY preselectCurrentSite.tooltip "Bij openen van Opgeslagen wachtwoorden selecteert dit inmiddellijk de in het huidige browsertabblad bezochte website en scrollt ernaartoe.">
+<!ENTITY alwaysShowPasswords.label "Wachtwoorden altijd weergeven">
+<!ENTITY alwaysShowPasswords.tooltip "Indien aangevinkt zal Saved Password Editor de kolom Wachtwoord laten zien als het dialoogvenster Opgeslagen wachtwoorden wordt geopend, en het wachtwoord weergeven als het bewerkingsvenster wordt geopend.">
+<!ENTITY alwaysPromptForMasterPassword.label "Altijd vragen om hoofdwachtwoord">
+<!ENTITY alwaysPromptForMasterPassword.tooltip "Vraagt om het hoofdwachtwoord wanneer wachtwoorden worden weergegeven in Opgeslagen wachtwoorden. Indien aangevinkt veroorzaakt dit onvermijdelijk ten minste twee keer per sessie deze vraag . Indien uitgevinkt wordt in de meeste gevallen niet gevraagd om het hoofdwachtwoord.">
+<!ENTITY passwordfield_caption.label "Wachtwoordveld in bewerkingsvenster">
+<!ENTITY passwordfield_alwayshide.label "Wachtwoord altijd verbergen wanneer bewerkingsvenster wordt geopend">
+<!ENTITY passwordfield_alwaysshow.label "Wachtwoord altijd weergeven wanneer bewerkingsvenster wordt geopend">
+<!ENTITY passwordfield_rememberlast.label "Laatste instelling onthouden">
+<!ENTITY passwordfield_rememberlast.tooltip "De instelling van de laatste keer dat het venster open was onthouden">
+<!ENTITY passwordfield_followspwin.label "Lijst Opgeslagen wachtwoorden volgen">
+<!ENTITY passwordfield_followspwin.tooltip "Alleen dan weergeven wanneer wachtwoorden worden weergegeven in het venster Opgeslagen wachtwoorden">
diff --git a/locale/nl/pwdedit.dtd b/locale/nl/pwdedit.dtd
new file mode 100644
index 0000000..0b440d3
--- /dev/null
+++ b/locale/nl/pwdedit.dtd
@@ -0,0 +1,36 @@
+<!ENTITY savedpasswordeditor.title "Saved Password Editor">
+<!ENTITY signontype.label "Type">
+<!ENTITY type_form.label "Webformulier">
+<!ENTITY type_form.accesskey "W">
+<!ENTITY type_form.tooltip "Een formulier op een webpagina">
+<!ENTITY type_annotated.label "Geannoteerd">
+<!ENTITY type_annotated.accesskey "a">
+<!ENTITY type_annotated.tooltip "Een aanmelding waarbij een tekstdeel bij de host moet staan om de dienst te identificeren (b.v. HTTP-aanmelding)">
+<!ENTITY hostname.label "Host">
+<!ENTITY hostname.tooltip "Protocol/hostnaam waar het wachtwoord op van toepassing is (b.v. http://www.example.com)">
+<!ENTITY formSubmitURL.label "Indieningsprefix">
+<!ENTITY formSubmitURL.tooltip "Prefix van het formulierindieningsadres">
+<!ENTITY annotation.label "Annotatie">
+<!ENTITY annotation.tooltip "Aanvullend tekstdeel waarmee de te authenticeren dienst wordt geïdentificeerd (b.v. het HTTP-gebied)">
+<!ENTITY username.label "Gebruikersnaam">
+<!ENTITY username.tooltip "De te onthouden gebruikersnaam">
+<!ENTITY password.label "Wachtwoord">
+<!ENTITY password.tooltip "Het te onthouden wachtwoord">
+<!ENTITY usernameField.label "Gebruikersnaamveldnaam">
+<!ENTITY usernameField.tooltip "Het naamattribuut voor het van toepassing zijnde gebruikersnaamveld in het formulier">
+<!ENTITY passwordField.label "Wachtwoordveldnaam">
+<!ENTITY passwordField.tooltip "Het naamattribuut voor het van toepassing zijnde wachtwoordveld in het formulier">
+<!ENTITY showPassword.label "Weergeven">
+<!ENTITY showPassword.accesskey "g">
+<!ENTITY showPassword.tooltip "Zichtbaarheid wachtwoord wisselen">
+<!ENTITY hidePassword.label "Verbergen">
+<!ENTITY hidePassword.accesskey "b">
+<!ENTITY guessfrompage.label "Raden van huidige pagina">
+<!ENTITY guessfrompage.accesskey "R">
+<!ENTITY guessfrompage.tooltip "Vul dit formulier in op basis van een waarschijnlijk aanmeldingsformulier op de huidige pagina">
+<!ENTITY prevform.label "Vorig formulier">
+<!ENTITY prevform.accesskey "V">
+<!ENTITY prevform.tooltip "Het vorige formulier op de pagina proberen">
+<!ENTITY nextform.label "Volgend formulier">
+<!ENTITY nextform.accesskey "l">
+<!ENTITY nextform.tooltip "Het volgende formulier op de pagina proberen">
diff --git a/locale/nl/pwdedit.properties b/locale/nl/pwdedit.properties
new file mode 100644
index 0000000..7a28886
--- /dev/null
+++ b/locale/nl/pwdedit.properties
@@ -0,0 +1,9 @@
+# TRANSLATORS: \n stands for a line break, and %S is a placeholder
+# for a string to be inserted.
+# SAVED PASSWORD EDITOR DIALOG
+newlogin=Nieuwe aanmelding maken
+clonelogin=Aanmelding kopiëren
+editlogin=Aanmelding bewerken
+editmultlogin=Meerdere aanmeldingen bewerken
+nologinform=Geen geschikt aanmeldingsformulier gevonden op huidige pagina!
+multduplogins=Dit resulteert in dubbele aanmeldingen. Om uw bewerking af te ronden dient u één van de velden host, indieningsprefix, HTTP-omgeving of gebruikersnaam (indien van toepassing) in een ongedefinieerde staat te laten door de ingevoerde waarde(n) te wissen.
diff --git a/locale/nl/pwdmgrOverlay.dtd b/locale/nl/pwdmgrOverlay.dtd
new file mode 100644
index 0000000..af47a68
--- /dev/null
+++ b/locale/nl/pwdmgrOverlay.dtd
@@ -0,0 +1,11 @@
+<!-- TRANSLATORS - be aware that these access keys are used in several places:
+     the context menu introduced in Fx 4.0, my menu-button, and as shortcut
+     keys for the whole window. Make sure your choices don't conflict in any of
+     those contexts. 
+-->
+<!ENTITY newentry.label "Nieuw">
+<!ENTITY newentry.accesskey "N">
+<!ENTITY editentry.label "Bewerken">
+<!ENTITY editentry.accesskey "k">
+<!ENTITY cloneentry.label "Kopiëren">
+<!ENTITY cloneentry.accesskey "p">
diff --git a/locale/nl/pwdmgrOverlay.properties b/locale/nl/pwdmgrOverlay.properties
new file mode 100644
index 0000000..73e1f89
--- /dev/null
+++ b/locale/nl/pwdmgrOverlay.properties
@@ -0,0 +1,4 @@
+# TRANSLATORS: \n stands for a line break, and %S is a placeholder
+# for a string to be inserted.
+# POPUP MESSAGE WHEN ADDING/MODIFYING AN ENTRY FAILS
+badnewentry=Fout:\n%S\nHebt u geprobeerd dubbele aanmeldgegevens aan te maken?
diff --git a/locale/nl/spe.properties b/locale/nl/spe.properties
new file mode 100644
index 0000000..6e98625
--- /dev/null
+++ b/locale/nl/spe.properties
@@ -0,0 +1,10 @@
+# TRANSLATORS: \n stands for a line break, and %S is a placeholder
+# for a string to be inserted.
+savedpasswordeditor=Saved Password Editor
+error=Fout
+nologinstoedit=Geen te bewerken aanmeldingen!
+nologinstodelete=Geen te verwijderen aanmeldingen!
+logininfosaved=Aanmeldinformatie opgeslagen
+logininfochanged=Aanmeldinformatie gewijzigd
+logininfodeleted=Aanmeldinformatie verwijderd
+failed=Uitvoering mislukt:\n%S
diff --git a/locale/nl/welcome.dtd b/locale/nl/welcome.dtd
new file mode 100644
index 0000000..9f6b16a
--- /dev/null
+++ b/locale/nl/welcome.dtd
@@ -0,0 +1,50 @@
+<!-- LOCALE
+
+     Format: language-COUNTRY according to RFC 1766
+     ( http://www.ietf.org/rfc/rfc1766.txt ). COUNTRY is for dialectal
+     variation and is not necessary for locales without such variation. You can
+     probably copy the locale tag of your localized Mozilla application
+     (Firefox, etc.). Examples:
+
+     en-US  - English in US
+     en-GB  - English in Great Britain
+     de-DE  - German in Germany
+     ru     - Russian (no specific country)
+
+-->
+<!ENTITY locale "nl">
+<!-- LAYOUT DIRECTION: "LTR" for left-to-right; "RTL" for right-to-left.
+     Generally, this should follow the direction of your writing system. 
+-->
+<!ENTITY layoutdirection "LTR">
+<!-- WELCOME PAGE
+
+     This needs a little care. There is some embedded markup (sorry about
+     that). Of course, don't translate any text inside tags. The & lt; and
+     & gt; codes produce < and > respectively, but don't reverse them; that
+     will be done automatically for right-to-left text. & quot; produces a
+     double quote character. Please substitute whatever is appropriate in your
+     locale, but if you are editing this file directly, as opposed to using
+     BabelZilla's interface, anything other than <, >, ", ', and & must be in
+     UTF-8 or use numerical entities (e.g. & #x89ab;); named entities other
+     than the ones for those five characters (& lt; & gt; & quot; & apos;
+     & amp;) are NOT defined in this context. Double quote characters must be
+     encoded as & quot; (again, if you are editing directly), since the
+     strings are already double-quote delimited.
+
+-->
+<!ENTITY welcometospe "Welkom bij Saved Password Editor">
+<!-- Paragraph 1, Firefox version -->
+<!ENTITY welcomepara1_fx "Bedankt voor het gebruik van <a id='addonlink'>Saved Password Editor</a>. U kunt de bewerkingsfuncties benaderen door naar Extra > Opties te gaan, of naar Bewerken > Voorkeuren (afhankelijk van uw besturingssysteem), het paneel Beveiliging te selecteren en vervolgens op de knop ‘Opgeslagen wachtwoorden…’ te klikken. U kunt ook eenvoudigweg de Opgeslagen wachtwoorden oproepen via het menu Extra of (in Firefox 4 en hoger voor Windows en Linux) het menu Toepa [...]
+<!-- Paragraph 1, SeaMonkey version -->
+<!-- XXXXX TRANSLATORS: Please pay attention! XXXXX
+     XXXXX SeaMonkey DOES NOT HAVE View > Toolbars > Customize…
+           among other things XXXXX
+     XXXXX Be careful if you copy and paste. XXXXX 
+-->
+<!ENTITY welcomepara1_sm "Bedankt voor het gebruik van <a id='addonlink'>Saved Password Editor</a>. U kunt de bewerkingsfuncties benaderen door naar Extra > Opties te gaan, of naar Bewerken > Voorkeuren (afhankelijk van uw besturingssysteem), naar het paneel Wachtwoorden navigeren en vervolgens op de knop ‘Opgeslagen wachtwoorden beheren’ klikken. U kunt ook eenvoudigweg de Opgeslagen wachtwoorden oproepen via het menu Extra. Voor uw gemak is er ook een werkbalkknop beschikbaar. Om [...]
+<!-- Paragraph 2 -->
+<!-- The "span" element here is replaced by "Firefox", "Thunderbird", etc. -->
+<!ENTITY welcomepara2 "Merk op dat het dialoogvenster Opgeslagen wachtwoorden een basiscomponent is van <span id='appname'/> en niet wordt geleverd door deze extensie, met uitzondering van de hierboven genoemde toegevoegde functies. De werkbalkknop wordt alleen voor uw gemak geboden, in de verwachting dat sommige gebruikers van deze extensie het dialoogvenster veel vaker zullen willen openen dan anders.">
+<!-- Paragraph 3 -->
+<!ENTITY welcomepara3 "U kunt ook aanmeldgegevens die horen bij een specifiek webformulier bewerken door met de rechtermuisknop op één van de velden te klikken en een actie te selecteren.">
diff --git a/locale/pl/browserOverlay.dtd b/locale/pl/browserOverlay.dtd
new file mode 100644
index 0000000..55498a2
--- /dev/null
+++ b/locale/pl/browserOverlay.dtd
@@ -0,0 +1,14 @@
+<!-- Open Saved Passwords -->
+<!ENTITY savedpasswords.label "Zapamiętane hasła">
+<!ENTITY savedpasswords.accesskey "h">
+<!ENTITY savedpasswords.tooltip "Otwórz okno zapamiętanych haseł">
+<!-- Context menu -->
+<!ENTITY ctx_savelogininfo.label "Zapisz informację o loginie">
+<!ENTITY ctx_savelogininfo.accesskey "Z">
+<!ENTITY ctx_savelogininfo.tooltip "Dodaj zapamiętane hasło dla tego formularza">
+<!ENTITY ctx_editlogininfo.label "Edytuj informację o loginie">
+<!ENTITY ctx_editlogininfo.accesskey "E">
+<!ENTITY ctx_editlogininfo.tooltip "Edytuj zapamiętane hasło dla tego formularza">
+<!ENTITY ctx_deletelogininfo.label "Usuń informację o loginie">
+<!ENTITY ctx_deletelogininfo.accesskey "U">
+<!ENTITY ctx_deletelogininfo.tooltip "Usuń zapamiętane hasło dla tego formularza">
diff --git a/locale/pl/prefwindow.dtd b/locale/pl/prefwindow.dtd
new file mode 100644
index 0000000..f05b176
--- /dev/null
+++ b/locale/pl/prefwindow.dtd
@@ -0,0 +1,18 @@
+<!ENTITY prefwindow.title "Preferencje edytora zapamiętanych haseł">
+<!ENTITY displayMenuitem.label "Umieść skrót w menu">
+<!ENTITY displayMenuitem.tooltip "Dodaje pozycję "Zapamiętane hasła" do menu Narzędzia i okna aplikacji jako skrót do menadżera haseł">
+<!ENTITY renameMenuitemTo.label "Zmień nazwę skrótu:">
+<!ENTITY renameMenuitemTo.tooltip "Wpisz tu cokolwiek by nazwać skrót inaczej niż "Zapamiętane hasła". Wymazując zawartość powrócisz do "Zapamiętane hasła".">
+<!ENTITY preselectCurrentSite.label "Zaznacz z wyprzedzeniem bieżącą stronę w oknie zapamiętanych haseł">
+<!ENTITY preselectCurrentSite.tooltip "Podczas otwierania okna zapamiętanych haseł, nastąpi niezwłoczne zaznaczenie i przejście do witryny odwiedzanej w bieżącej karcie przeglądarki.">
+<!ENTITY alwaysShowPasswords.label "Zawsze pokazuj hasła">
+<!ENTITY alwaysShowPasswords.tooltip "Jeśli zaznaczono, kolumna z hasłami będzie widoczna w oknie dialogowym i widoczne będzie też hasło w oknie edytora.">
+<!ENTITY alwaysPromptForMasterPassword.label "Zawsze pytaj o hasło główne">
+<!ENTITY alwaysPromptForMasterPassword.tooltip "Pyta o hasło główne podczas pokazywania zapamiętanych haseł. Jeśli opcja załączona, wyskakiwać będzie podwójny monit co najmniej raz na sesję. Jeśli opcja wyłączona, raczej nie będziesz pytany o hasło główne.">
+<!ENTITY passwordfield_caption.label "Pole hasła w edytorze">
+<!ENTITY passwordfield_alwayshide.label "Zawsze ukrywaj hasło podczas otwierania okna edytora">
+<!ENTITY passwordfield_alwaysshow.label "Zawsze pokazuj hasło podczas otwierania okna edytora">
+<!ENTITY passwordfield_rememberlast.label "Pamiętaj ostatni stan">
+<!ENTITY passwordfield_rememberlast.tooltip "Pokazuje lub ukrywa, tak jak podczas ostatniego otwarcia okna edytora">
+<!ENTITY passwordfield_followspwin.label "Śledzenie listy zapamiętanych haseł">
+<!ENTITY passwordfield_followspwin.tooltip "Ta opcja działa wtedy i tylko wtedy, gdy hasła są aktualnie pokazywane w oknie zapamiętanych haseł">
diff --git a/locale/pl/pwdedit.dtd b/locale/pl/pwdedit.dtd
new file mode 100644
index 0000000..a0825e5
--- /dev/null
+++ b/locale/pl/pwdedit.dtd
@@ -0,0 +1,36 @@
+<!ENTITY savedpasswordeditor.title "Edytor zapisanych haseł">
+<!ENTITY signontype.label "Rodzaj">
+<!ENTITY type_form.label "Formularz sieciowy">
+<!ENTITY type_form.accesskey "s">
+<!ENTITY type_form.tooltip "Formularz zawarty na stronie">
+<!ENTITY type_annotated.label "Skomentowany">
+<!ENTITY type_annotated.accesskey "a">
+<!ENTITY type_annotated.tooltip "Login, który wymaga dodatkowego ciągu do hosta w celu identyfikacji usługi (np. uwierzytelnianie HTTP)">
+<!ENTITY hostname.label "Host">
+<!ENTITY hostname.tooltip "Protokół/nazwa hosta, z którym działa hasło (np. http://www.example.com)">
+<!ENTITY formSubmitURL.label "Przekaż prefiks">
+<!ENTITY formSubmitURL.tooltip "Prefiks zgłaszanego adresu formularza">
+<!ENTITY annotation.label "Komentarz">
+<!ENTITY annotation.tooltip "Dodatkowy ciąg identyfikujący usługę do uwierzytelnienia (np. HTTP realm)">
+<!ENTITY username.label "Użytkownik">
+<!ENTITY username.tooltip "Użytkownik do zapamiętania">
+<!ENTITY password.label "Hasło">
+<!ENTITY password.tooltip "Hasło do zapamiętania">
+<!ENTITY usernameField.label "Nazwa pola użytkownika">
+<!ENTITY usernameField.tooltip "Atrybut nazwy dla właściwego pola użytkownika w formularzu">
+<!ENTITY passwordField.label "Nazwa pola hasła">
+<!ENTITY passwordField.tooltip "Atrybut nazwy dla właściwego pola hasła w formularzu">
+<!ENTITY showPassword.label "Pokaż">
+<!ENTITY showPassword.accesskey "P">
+<!ENTITY showPassword.tooltip "Przełącz widoczność hasła">
+<!ENTITY hidePassword.label "Ukryj">
+<!ENTITY hidePassword.accesskey "U">
+<!ENTITY guessfrompage.label "Wypełnij pola na podstawie zawartości bieżącej strony">
+<!ENTITY guessfrompage.accesskey "g">
+<!ENTITY guessfrompage.tooltip "Wypełnij ten formularzu w oparciu o prawdopodobny formularz logowania na bieżącej stronie">
+<!ENTITY prevform.label "Previous form">
+<!ENTITY prevform.accesskey "P">
+<!ENTITY prevform.tooltip "Try the previous form from the page">
+<!ENTITY nextform.label "Next form">
+<!ENTITY nextform.accesskey "N">
+<!ENTITY nextform.tooltip "Try the next form from the page">
diff --git a/locale/pl/pwdedit.properties b/locale/pl/pwdedit.properties
new file mode 100644
index 0000000..6e71ec4
--- /dev/null
+++ b/locale/pl/pwdedit.properties
@@ -0,0 +1,9 @@
+# TRANSLATORS: \n stands for a line break, and %S is a placeholder
+# for a string to be inserted.
+# SAVED PASSWORD EDITOR DIALOG
+newlogin=Tworzenie nowego logowania
+clonelogin=Klonowanie logowania
+editlogin=Edycja logowania
+editmultlogin=Edycja wielu logowań
+nologinform=Brak odpowiedniego formularza logowania na bieżącej stronie!
+multduplogins=Rezultatem będzie zduplikowanie logowań. Aby zakończyć edycję należy pozostawić jedynie host, prefiks, domenę HTTP lub pole użytkownika, usuwając pozostałe wpisane wartości.
diff --git a/locale/pl/pwdmgrOverlay.dtd b/locale/pl/pwdmgrOverlay.dtd
new file mode 100644
index 0000000..95dd4e6
--- /dev/null
+++ b/locale/pl/pwdmgrOverlay.dtd
@@ -0,0 +1,11 @@
+<!-- TRANSLATORS - be aware that these access keys are used in several places:
+     the context menu introduced in Fx 4.0, my menu-button, and as shortcut
+     keys for the whole window. Make sure your choices don't conflict in any of
+     those contexts. 
+-->
+<!ENTITY newentry.label "Nowe">
+<!ENTITY newentry.accesskey "N">
+<!ENTITY editentry.label "Edytuj">
+<!ENTITY editentry.accesskey "E">
+<!ENTITY cloneentry.label "Sklonuj">
+<!ENTITY cloneentry.accesskey "l">
diff --git a/locale/pl/pwdmgrOverlay.properties b/locale/pl/pwdmgrOverlay.properties
new file mode 100644
index 0000000..28b1cf3
--- /dev/null
+++ b/locale/pl/pwdmgrOverlay.properties
@@ -0,0 +1,4 @@
+# TRANSLATORS: \n stands for a line break, and %S is a placeholder
+# for a string to be inserted.
+# POPUP MESSAGE WHEN ADDING/MODIFYING AN ENTRY FAILS
+badnewentry=Wystąpił błąd:\n  %S\nCzy próbujesz utworzyć duplikat wpisu logowania?
diff --git a/locale/pl/spe.properties b/locale/pl/spe.properties
new file mode 100644
index 0000000..7b86237
--- /dev/null
+++ b/locale/pl/spe.properties
@@ -0,0 +1,10 @@
+# TRANSLATORS: \n stands for a line break, and %S is a placeholder
+# for a string to be inserted.
+savedpasswordeditor=Saved Password Editor
+error=Błąd
+nologinstoedit=Brak loginów do edycji!
+nologinstodelete=Brak loginów do usunięcia!
+logininfosaved=Informacja o loginie została zapisana
+logininfochanged=Informacja o loginie została zmieniona
+logininfodeleted=Informacja o loginie została usunięta
+failed=Operacja nie powiodła się:\n %S
diff --git a/locale/pl/welcome.dtd b/locale/pl/welcome.dtd
new file mode 100644
index 0000000..635ad92
--- /dev/null
+++ b/locale/pl/welcome.dtd
@@ -0,0 +1,50 @@
+<!-- LOCALE
+
+     Format: language-COUNTRY according to RFC 1766
+     ( http://www.ietf.org/rfc/rfc1766.txt ). COUNTRY is for dialectal
+     variation and is not necessary for locales without such variation. You can
+     probably copy the locale tag of your localized Mozilla application
+     (Firefox, etc.). Examples:
+
+     en-US  - English in US
+     en-GB  - English in Great Britain
+     de-DE  - German in Germany
+     ru     - Russian (no specific country)
+
+-->
+<!ENTITY locale "pl">
+<!-- LAYOUT DIRECTION: "LTR" for left-to-right; "RTL" for right-to-left.
+     Generally, this should follow the direction of your writing system. 
+-->
+<!ENTITY layoutdirection "LTR">
+<!-- WELCOME PAGE
+
+     This needs a little care. There is some embedded markup (sorry about
+     that). Of course, don't translate any text inside tags. The & lt; and
+     & gt; codes produce < and > respectively, but don't reverse them; that
+     will be done automatically for right-to-left text. & quot; produces a
+     double quote character. Please substitute whatever is appropriate in your
+     locale, but if you are editing this file directly, as opposed to using
+     BabelZilla's interface, anything other than <, >, ", ', and & must be in
+     UTF-8 or use numerical entities (e.g. & #x89ab;); named entities other
+     than the ones for those five characters (& lt; & gt; & quot; & apos;
+     & amp;) are NOT defined in this context. Double quote characters must be
+     encoded as & quot; (again, if you are editing directly), since the
+     strings are already double-quote delimited.
+
+-->
+<!ENTITY welcometospe "Witaj w Edytorze zapamiętanych haseł">
+<!-- Paragraph 1, Firefox version -->
+<!ENTITY welcomepara1_fx "Dziękujemy za używanie <a id='addonlink'>Edytora zapamiętanych haseł</a>. Masz dostęp do funkcjonalnej edycji poprzez menu Narzędzia > Opcje, lub Edycja > Preferencje (w zależności od posiadanego systemu operacyjnego), wybierając zakładkę "Bezpieczeństwo", następnie klikając na przycisk "Zapamiętane hasła…". Prościej możesz wejsć poprzez Zapamiętane hasła w menu Narzędzia lub (w przypadku Firefox 4 pod Windowsem) menu aplikacji. Przycis [...]
+<!-- Paragraph 1, SeaMonkey version -->
+<!-- XXXXX TRANSLATORS: Please pay attention! XXXXX
+     XXXXX SeaMonkey DOES NOT HAVE View > Toolbars > Customize…
+           among other things XXXXX
+     XXXXX Be careful if you copy and paste. XXXXX 
+-->
+<!ENTITY welcomepara1_sm "Dziękujemy za używanie <a id='addonlink'>Edytora zapamiętanych haseł</a>. Masz dostęp do funkcjonalnej edycji poprzez menu Narzędzia > Opcje, lub Edycja > Preferencje (w zależności od posiadanego systemu operacyjnego), wybierając zakładkę "Bezpieczeństwo", następnie klikając na przycisk "Zapamiętane hasła…". Prościej możesz wejść poprzez Zapamiętane hasła w menu Narzędzia lub (w przypadku Firefox 4 pod Windowsem) menu aplikacji. Przycis [...]
+<!-- Paragraph 2 -->
+<!-- The "span" element here is replaced by "Firefox", "Thunderbird", etc. -->
+<!ENTITY welcomepara2 "Zauważ, że okno zapamiętanych haseł jest podstawą komponentu <span id='appname'></span> i nie jest dostarczane przez ten dodatek, z wyjątkiem wspomnianych powyżej dodanych funkcji. Przycisk paska narzędzi dostarczany jest tylko dla ułatwienia dostępu dla niektórych użytkowników tego dodatku, którzy będą chcieli zaglądać do okna haseł częściej niż zazwyczaj.">
+<!-- Paragraph 3 -->
+<!ENTITY welcomepara3 "Możesz także manipulować loginami powiązanymi z danym formularzem internetowym poprzez kliknięcie prawym przyciskiem myszy na którymkolwiek z jego pól i wybranie akcji.">
diff --git a/locale/pt-BR/browserOverlay.dtd b/locale/pt-BR/browserOverlay.dtd
new file mode 100644
index 0000000..e9bdc90
--- /dev/null
+++ b/locale/pt-BR/browserOverlay.dtd
@@ -0,0 +1,14 @@
+<!-- Open Saved Passwords -->
+<!ENTITY savedpasswords.label "Senhas Salvas">
+<!ENTITY savedpasswords.accesskey "S">
+<!ENTITY savedpasswords.tooltip "Abre a janela de Senhas Salvas">
+<!-- Context menu -->
+<!ENTITY ctx_savelogininfo.label "Salvar informações de login">
+<!ENTITY ctx_savelogininfo.accesskey "S">
+<!ENTITY ctx_savelogininfo.tooltip "Acrescentar uma senha salva a este formulário">
+<!ENTITY ctx_editlogininfo.label "Editar informações de login">
+<!ENTITY ctx_editlogininfo.accesskey "E">
+<!ENTITY ctx_editlogininfo.tooltip "Editar uma senha salva deste formulário">
+<!ENTITY ctx_deletelogininfo.label "Apagar informações de login">
+<!ENTITY ctx_deletelogininfo.accesskey "A">
+<!ENTITY ctx_deletelogininfo.tooltip "Apagar uma senha salva para este formulário">
diff --git a/locale/pt-BR/prefwindow.dtd b/locale/pt-BR/prefwindow.dtd
new file mode 100644
index 0000000..c95b1eb
--- /dev/null
+++ b/locale/pt-BR/prefwindow.dtd
@@ -0,0 +1,18 @@
+<!ENTITY prefwindow.title "Preferências do Editor de Senhas Salvas">
+<!ENTITY displayMenuitem.label "Incluir atalhos nos menus">
+<!ENTITY displayMenuitem.tooltip "Acrescenta "Senhas Salvas" ao menu Ferramentas e janela do complemento como um atalho para o gerenciados de senhas">
+<!ENTITY renameMenuitemTo.label "Renomear o atalho para:">
+<!ENTITY renameMenuitemTo.tooltip "Entre um nome para o atalho (diferente de "Senhas Salvas", para não ser tão óbvio). Deixe em branco para usar o nome "Senhas Salvas". Aviso: isto não substitui uma segurança adequada; você deve usar uma senha mestre quando possível para proteger suas senhas.">
+<!ENTITY preselectCurrentSite.label "Pre-selecionar a página atual">
+<!ENTITY preselectCurrentSite.tooltip "Ao abrir o Saved Passwords a página visitada nesta aba será selecionada e mostrada.">
+<!ENTITY alwaysShowPasswords.label "Sempre exibir senhas">
+<!ENTITY alwaysShowPasswords.tooltip "Se ativada, O Editor de Senhas Salvas fará com que a coluna Senha seja exibida ao abrir a janela Senhas Salvas e exibirá a senha ao abrir o editor.">
+<!ENTITY alwaysPromptForMasterPassword.label "Sempre pedir senha mestre">
+<!ENTITY alwaysPromptForMasterPassword.tooltip "Solicita a senha mestre quando for exibir senhas em Senhas Salvas. Se ativado, isto causará um duplo pedido de senha pelo uma vez em cada seção. Se desativado, na maior parte das vezes não será solicitada a senha mestre.">
+<!ENTITY passwordfield_caption.label "Campo senha na janela do editor">
+<!ENTITY passwordfield_alwayshide.label "Sempre ocultar senhas ao abrir a janela do editor">
+<!ENTITY passwordfield_alwaysshow.label "Sempre exibir senhas ao abrir a janela do editor">
+<!ENTITY passwordfield_rememberlast.label "Lembrar última escolha">
+<!ENTITY passwordfield_rememberlast.tooltip "Mostrar ou ocultar o mesmo que na última vez em que a janela esteve aberta">
+<!ENTITY passwordfield_followspwin.label "Seguir lista de Senhas Salvas">
+<!ENTITY passwordfield_followspwin.tooltip "Mostrar se e somente se as senhas estiverem sendo exibidas na janela Senhas Salvas">
diff --git a/locale/pt-BR/pwdedit.dtd b/locale/pt-BR/pwdedit.dtd
new file mode 100644
index 0000000..0096354
--- /dev/null
+++ b/locale/pt-BR/pwdedit.dtd
@@ -0,0 +1,36 @@
+<!ENTITY savedpasswordeditor.title "Saved Password Editor">
+<!ENTITY signontype.label "Tipo">
+<!ENTITY type_form.label "Formulário Web">
+<!ENTITY type_form.accesskey "W">
+<!ENTITY type_form.tooltip "Um formulário existente em uma página web">
+<!ENTITY type_annotated.label "Anotado">
+<!ENTITY type_annotated.accesskey "A">
+<!ENTITY type_annotated.tooltip "Um login que requer uma linha adicional no host para identificar o serviço(por exemplo, autenticação HTTP)">
+<!ENTITY hostname.label "Domínio">
+<!ENTITY hostname.tooltip "Domínio ao qual se aplica a senha (e.g. http://www.example.com)">
+<!ENTITY formSubmitURL.label "Pré-definição da Entrada">
+<!ENTITY formSubmitURL.tooltip "Define valor em campo de formulário">
+<!ENTITY annotation.label "Anotação">
+<!ENTITY annotation.tooltip "Linha adicional identificando o serviço em que será autenticado (por exemplo, ambiente HTTP)">
+<!ENTITY username.label "Nome de Usuário">
+<!ENTITY username.tooltip "Nome de Usuário a lembrar">
+<!ENTITY password.label "Senha">
+<!ENTITY password.tooltip "Senha a lembrar">
+<!ENTITY usernameField.label "Nome do campo de usuário">
+<!ENTITY usernameField.tooltip "O nome para o campo de usuário do formulário">
+<!ENTITY passwordField.label "Nome do campo de senha">
+<!ENTITY passwordField.tooltip "O nome para o campo de senha do formulário">
+<!ENTITY showPassword.label "Mostrar">
+<!ENTITY showPassword.accesskey "M">
+<!ENTITY showPassword.tooltip "Alternar visibilidade da senha">
+<!ENTITY hidePassword.label "Esconder">
+<!ENTITY hidePassword.accesskey "E">
+<!ENTITY guessfrompage.label "Obter dados da página atual">
+<!ENTITY guessfrompage.accesskey "g">
+<!ENTITY guessfrompage.tooltip "Preencha o formulário com base em um formulário de login provável na página atual">
+<!ENTITY prevform.label "Formulário anterior">
+<!ENTITY prevform.accesskey "a">
+<!ENTITY prevform.tooltip "Tente o formulário anterior a partir da página">
+<!ENTITY nextform.label "Próximo formulário">
+<!ENTITY nextform.accesskey "P">
+<!ENTITY nextform.tooltip "Tente o formulário seguinte na página">
diff --git a/locale/pt-BR/pwdedit.properties b/locale/pt-BR/pwdedit.properties
new file mode 100644
index 0000000..e132d27
--- /dev/null
+++ b/locale/pt-BR/pwdedit.properties
@@ -0,0 +1,9 @@
+# TRANSLATORS: \n stands for a line break, and %S is a placeholder
+# for a string to be inserted.
+# SAVED PASSWORD EDITOR DIALOG
+newlogin=Criando novo login
+clonelogin=Clonando o login
+editlogin=Editando login
+editmultlogin=Edição de múltiplos logins
+nologinform=Não foi encontrado um formulário de login adequado nesta página!
+multduplogins=Isso resultaria em logins duplicados. Para completar a edição você deve deixar pelo menos um dos host, o prefixo, o HTTP, ou campos de nome de usuário (conforme o caso) em branco, apagando o(s) valor(es) que você digitou.
diff --git a/locale/pt-BR/pwdmgrOverlay.dtd b/locale/pt-BR/pwdmgrOverlay.dtd
new file mode 100644
index 0000000..e37afac
--- /dev/null
+++ b/locale/pt-BR/pwdmgrOverlay.dtd
@@ -0,0 +1,11 @@
+<!-- TRANSLATORS - be aware that these access keys are used in several places:
+     the context menu introduced in Fx 4.0, my menu-button, and as shortcut
+     keys for the whole window. Make sure your choices don't conflict in any of
+     those contexts. 
+-->
+<!ENTITY newentry.label "Nova">
+<!ENTITY newentry.accesskey "N">
+<!ENTITY editentry.label "Editar">
+<!ENTITY editentry.accesskey "E">
+<!ENTITY cloneentry.label "Clone">
+<!ENTITY cloneentry.accesskey "l">
diff --git a/locale/pt-BR/pwdmgrOverlay.properties b/locale/pt-BR/pwdmgrOverlay.properties
new file mode 100644
index 0000000..012ad7c
--- /dev/null
+++ b/locale/pt-BR/pwdmgrOverlay.properties
@@ -0,0 +1,4 @@
+# TRANSLATORS: \n stands for a line break, and %S is a placeholder
+# for a string to be inserted.
+# POPUP MESSAGE WHEN ADDING/MODIFYING AN ENTRY FAILS
+badnewentry=Erro encontrado:n %SnVocê tentou criar um login duplicado?
diff --git a/locale/pt-BR/spe.properties b/locale/pt-BR/spe.properties
new file mode 100644
index 0000000..de86844
--- /dev/null
+++ b/locale/pt-BR/spe.properties
@@ -0,0 +1,10 @@
+# TRANSLATORS: \n stands for a line break, and %S is a placeholder
+# for a string to be inserted.
+savedpasswordeditor=Saved Password Editor
+error=Erro
+nologinstoedit=Nenhum login a editar!
+nologinstodelete=Nenhum login a apagar!
+logininfosaved=Informação de login salva
+logininfochanged=Informação de login alterada
+logininfodeleted=Informação de login apagada
+failed=A operação falhou:\n %S
diff --git a/locale/pt-BR/welcome.dtd b/locale/pt-BR/welcome.dtd
new file mode 100644
index 0000000..bff682b
--- /dev/null
+++ b/locale/pt-BR/welcome.dtd
@@ -0,0 +1,50 @@
+<!-- LOCALE
+
+     Format: language-COUNTRY according to RFC 1766
+     ( http://www.ietf.org/rfc/rfc1766.txt ). COUNTRY is for dialectal
+     variation and is not necessary for locales without such variation. You can
+     probably copy the locale tag of your localized Mozilla application
+     (Firefox, etc.). Examples:
+
+     en-US  - English in US
+     en-GB  - English in Great Britain
+     de-DE  - German in Germany
+     ru     - Russian (no specific country)
+
+-->
+<!ENTITY locale "pt-BR">
+<!-- LAYOUT DIRECTION: "LTR" for left-to-right; "RTL" for right-to-left.
+     Generally, this should follow the direction of your writing system. 
+-->
+<!ENTITY layoutdirection "LTR">
+<!-- WELCOME PAGE
+
+     This needs a little care. There is some embedded markup (sorry about
+     that). Of course, don't translate any text inside tags. The & lt; and
+     & gt; codes produce < and > respectively, but don't reverse them; that
+     will be done automatically for right-to-left text. & quot; produces a
+     double quote character. Please substitute whatever is appropriate in your
+     locale, but if you are editing this file directly, as opposed to using
+     BabelZilla's interface, anything other than <, >, ", ', and & must be in
+     UTF-8 or use numerical entities (e.g. & #x89ab;); named entities other
+     than the ones for those five characters (& lt; & gt; & quot; & apos;
+     & amp;) are NOT defined in this context. Double quote characters must be
+     encoded as & quot; (again, if you are editing directly), since the
+     strings are already double-quote delimited.
+
+-->
+<!ENTITY welcometospe "Bem-Vindo ao Editor de Senhas Salvas">
+<!-- Paragraph 1, Firefox version -->
+<!ENTITY welcomepara1_fx "Obrigado por utilizar <a id='addonlink'>Editor de Senhas Salvas</a>. É possível acessar a função de edição indo a Ferramentas > Opções, ou a Editar > Preferências (dependendo do sistema operacional), escolhendo "Segurança" e depois teclando no botão "senhas salvas…". Você pode também simplesmente acessar Senhas Salvas no menu de Ferramentas ou (no Firefox 4 no Windows)no menu do aplicativo. Um botão de Ferramentas também está disponível [...]
+<!-- Paragraph 1, SeaMonkey version -->
+<!-- XXXXX TRANSLATORS: Please pay attention! XXXXX
+     XXXXX SeaMonkey DOES NOT HAVE View > Toolbars > Customize…
+           among other things XXXXX
+     XXXXX Be careful if you copy and paste. XXXXX 
+-->
+<!ENTITY welcomepara1_sm "Obrigado por utilizar <a id='addonlink'>Editor de Senhas Salvas</a>. É possível acessar a função de edição indo a Ferramentas > Opções, ou a Editar > Preferências (dependendo do sistema operacional), indo até "Senhas" em "Privacidade & Segurança", depois clicando no botão "Gerenciar Senhas Armazenadas". Você pode também simplesmente acessar Senhas Salvas no menu de Ferramentas. Um botão da barra de ferramentas também está  [...]
+<!-- Paragraph 2 -->
+<!-- The "span" element here is replaced by "Firefox", "Thunderbird", etc. -->
+<!ENTITY welcomepara2 "Repare que o aviso Senhas Salvas é um componente nativo do <span id='appname'></span> e não é fornecido por nossa extensão, exceto no caso das funções mencionadas acima. O botão da barra de ferramentas é fornecido apenas para sua conveniência, na expectativa de que alguns usuários desta extensão gostariam de acessar a ferramenta com maior freqüência.">
+<!-- Paragraph 3 -->
+<!ENTITY welcomepara3 "Você pode também alterar logins associados a um determinado formulário web clicando com o botão direito em qualquer um dos seus campos e selecionando uma ação.">
diff --git a/locale/pt-PT/browserOverlay.dtd b/locale/pt-PT/browserOverlay.dtd
new file mode 100644
index 0000000..1dd213f
--- /dev/null
+++ b/locale/pt-PT/browserOverlay.dtd
@@ -0,0 +1,14 @@
+<!-- Open Saved Passwords -->
+<!ENTITY savedpasswords.label "Senhas guardadas">
+<!ENTITY savedpasswords.accesskey "g">
+<!ENTITY savedpasswords.tooltip "Abrir o diálogo das senhas guardadas">
+<!-- Context menu -->
+<!ENTITY ctx_savelogininfo.label "Save login info">
+<!ENTITY ctx_savelogininfo.accesskey "S">
+<!ENTITY ctx_savelogininfo.tooltip "Add a saved password for this form">
+<!ENTITY ctx_editlogininfo.label "Edit login info">
+<!ENTITY ctx_editlogininfo.accesskey "E">
+<!ENTITY ctx_editlogininfo.tooltip "Edit a saved password for this form">
+<!ENTITY ctx_deletelogininfo.label "Delete login info">
+<!ENTITY ctx_deletelogininfo.accesskey "D">
+<!ENTITY ctx_deletelogininfo.tooltip "Delete a saved password for this form">
diff --git a/locale/pt-PT/prefwindow.dtd b/locale/pt-PT/prefwindow.dtd
new file mode 100644
index 0000000..3544eb5
--- /dev/null
+++ b/locale/pt-PT/prefwindow.dtd
@@ -0,0 +1,18 @@
+<!ENTITY prefwindow.title "Preferências do Editor de senhas guardadas">
+<!ENTITY displayMenuitem.label "Incluir atalho no menu ferramentas">
+<!ENTITY displayMenuitem.tooltip "Adiciona o "Saved Passwords" ao menu ferramentas como um atalho para o gestor de senhas">
+<!ENTITY renameMenuitemTo.label "Rename shortcut to:">
+<!ENTITY renameMenuitemTo.tooltip "Enter something here to call the shortcut something other than "Saved Passwords", if you want to make it less obvious to meddlers. Erase the value to return to using "Saved Passwords". Warning: this is not a substitute for proper security; you should use a master password when possible if you need to protect your passwords.">
+<!ENTITY preselectCurrentSite.label "Pré-selecionar o sítio atual nas Senhas guardadas">
+<!ENTITY preselectCurrentSite.tooltip "Ao abrir senhas guardadas, isto vai selecionar e deslocar para o sítio visitado no separador atual.">
+<!ENTITY alwaysShowPasswords.label "Always show passwords">
+<!ENTITY alwaysShowPasswords.tooltip "If checked, Saved Password Editor will cause the Password column to be shown when the Saved Passwords dialog opens and show the password when the editor dialog opens.">
+<!ENTITY alwaysPromptForMasterPassword.label "Always prompt for master password">
+<!ENTITY alwaysPromptForMasterPassword.tooltip "Prompts for master password when showing passwords in Saved Passwords. If enabled, this unavoidably causes a double prompt at least once per session. If disabled, in most cases you will not be prompted for the master password.">
+<!ENTITY passwordfield_caption.label "Campo da senha na janela de edição">
+<!ENTITY passwordfield_alwayshide.label "Ocultar sempre senha ao abrir a janela de edição">
+<!ENTITY passwordfield_alwaysshow.label "Mostrar sempre senha ao abrir a janela de edição">
+<!ENTITY passwordfield_rememberlast.label "Lembrar o último estado">
+<!ENTITY passwordfield_rememberlast.tooltip "Mostrar ou ocultar o mesmo que a última vez em que a janela estava aberta">
+<!ENTITY passwordfield_followspwin.label "Lista de senhas guardadas">
+<!ENTITY passwordfield_followspwin.tooltip "Mostrar se e apenas se as senhas são atualmente apresentadas na janela Senhas guardadas">
diff --git a/locale/pt-PT/pwdedit.dtd b/locale/pt-PT/pwdedit.dtd
new file mode 100644
index 0000000..3c43b1a
--- /dev/null
+++ b/locale/pt-PT/pwdedit.dtd
@@ -0,0 +1,36 @@
+<!ENTITY savedpasswordeditor.title "Editor de senhas guardadas">
+<!ENTITY signontype.label "Tipo">
+<!ENTITY type_form.label "Formulário web">
+<!ENTITY type_form.accesskey "w">
+<!ENTITY type_form.tooltip "A form contained in a web page">
+<!ENTITY type_annotated.label "Annotated">
+<!ENTITY type_annotated.accesskey "A">
+<!ENTITY type_annotated.tooltip "A login that requires a string in addition to the host to identify the service (e.g. HTTP authentication)">
+<!ENTITY hostname.label "Servidor">
+<!ENTITY hostname.tooltip "Protocolo/servidor ao qual a senha se adequa (ex: http://www.exemplo.com)">
+<!ENTITY formSubmitURL.label "Submeter prefixo">
+<!ENTITY formSubmitURL.tooltip "Prefixo do formulário de submissão de endereço">
+<!ENTITY annotation.label "Annotation">
+<!ENTITY annotation.tooltip "Additional string identifying the service to authenticate to (e.g. HTTP realm)">
+<!ENTITY username.label "Nome de utilizador">
+<!ENTITY username.tooltip "O nome de utilizador a lembrar">
+<!ENTITY password.label "Senha">
+<!ENTITY password.tooltip "A senha a lembrar">
+<!ENTITY usernameField.label "Campo do nome de utilizador">
+<!ENTITY usernameField.tooltip "O nome do atributo para campo do nome de utilizador apropriado no formulário">
+<!ENTITY passwordField.label "Campo da senha">
+<!ENTITY passwordField.tooltip "O nome do atributo para o campo da senha no formulário">
+<!ENTITY showPassword.label "Mostrar">
+<!ENTITY showPassword.accesskey "s">
+<!ENTITY showPassword.tooltip "Trocar a visibilidade da senha">
+<!ENTITY hidePassword.label "Ocultar">
+<!ENTITY hidePassword.accesskey "c">
+<!ENTITY guessfrompage.label "Adivinhar a partir da página actual">
+<!ENTITY guessfrompage.accesskey "g">
+<!ENTITY guessfrompage.tooltip "Preencha este formulário baseado num nome de início de sessão para a página actual">
+<!ENTITY prevform.label "Formulário anterior">
+<!ENTITY prevform.accesskey "P">
+<!ENTITY prevform.tooltip "Tente o formulário anterior a partir da página">
+<!ENTITY nextform.label "Formulário seguinte">
+<!ENTITY nextform.accesskey "N">
+<!ENTITY nextform.tooltip "Tente o seguinte formulário na página">
diff --git a/locale/pt-PT/pwdedit.properties b/locale/pt-PT/pwdedit.properties
new file mode 100644
index 0000000..05b5bfc
--- /dev/null
+++ b/locale/pt-PT/pwdedit.properties
@@ -0,0 +1,9 @@
+# TRANSLATORS: \n stands for a line break, and %S is a placeholder
+# for a string to be inserted.
+# SAVED PASSWORD EDITOR DIALOG
+newlogin=A criar novo início de sessão
+clonelogin=A clonar início de sessão
+editlogin=A editar início de sessão
+editmultlogin=Editar múltiplos inícios de sessão
+nologinform=Não foi encontrado um formulário de início de sessão na página actual!
+multduplogins=Isto vai resultar em inícios de sessão duplicados. Para poder completar a edição, tem de deixar pelo menos um anfitrião, submeter o prefixo, real HTTP ou os campos do nome de utilizador (se aplicáveis) num estado indeterminado, eliminando os valores que escreveu.
diff --git a/locale/pt-PT/pwdmgrOverlay.dtd b/locale/pt-PT/pwdmgrOverlay.dtd
new file mode 100644
index 0000000..7a047e6
--- /dev/null
+++ b/locale/pt-PT/pwdmgrOverlay.dtd
@@ -0,0 +1,11 @@
+<!-- TRANSLATORS - be aware that these access keys are used in several places:
+     the context menu introduced in Fx 4.0, my menu-button, and as shortcut
+     keys for the whole window. Make sure your choices don't conflict in any of
+     those contexts. 
+-->
+<!ENTITY newentry.label "Novo">
+<!ENTITY newentry.accesskey "N">
+<!ENTITY editentry.label "Editar">
+<!ENTITY editentry.accesskey "E">
+<!ENTITY cloneentry.label "Clonar">
+<!ENTITY cloneentry.accesskey "l">
diff --git a/locale/pt-PT/pwdmgrOverlay.properties b/locale/pt-PT/pwdmgrOverlay.properties
new file mode 100644
index 0000000..d1cd683
--- /dev/null
+++ b/locale/pt-PT/pwdmgrOverlay.properties
@@ -0,0 +1,4 @@
+# TRANSLATORS: \n stands for a line break, and %S is a placeholder
+# for a string to be inserted.
+# POPUP MESSAGE WHEN ADDING/MODIFYING AN ENTRY FAILS
+badnewentry=Houve um erro:\n %S\nTentou duplicar um início de sessão?
diff --git a/locale/pt-PT/spe.properties b/locale/pt-PT/spe.properties
new file mode 100644
index 0000000..89bd14c
--- /dev/null
+++ b/locale/pt-PT/spe.properties
@@ -0,0 +1,10 @@
+# TRANSLATORS: \n stands for a line break, and %S is a placeholder
+# for a string to be inserted.
+savedpasswordeditor=Saved Password Editor
+error=Erro
+nologinstoedit=No logins to edit!
+nologinstodelete=No logins to delete!
+logininfosaved=Login info saved
+logininfochanged=Login info changed
+logininfodeleted=Login info deleted
+failed=The operation failed:\n  %S
diff --git a/locale/pt-PT/welcome.dtd b/locale/pt-PT/welcome.dtd
new file mode 100644
index 0000000..d6dc081
--- /dev/null
+++ b/locale/pt-PT/welcome.dtd
@@ -0,0 +1,50 @@
+<!-- LOCALE
+
+     Format: language-COUNTRY according to RFC 1766
+     ( http://www.ietf.org/rfc/rfc1766.txt ). COUNTRY is for dialectal
+     variation and is not necessary for locales without such variation. You can
+     probably copy the locale tag of your localized Mozilla application
+     (Firefox, etc.). Examples:
+
+     en-US  - English in US
+     en-GB  - English in Great Britain
+     de-DE  - German in Germany
+     ru     - Russian (no specific country)
+
+-->
+<!ENTITY locale "pt-PT">
+<!-- LAYOUT DIRECTION: "LTR" for left-to-right; "RTL" for right-to-left.
+     Generally, this should follow the direction of your writing system. 
+-->
+<!ENTITY layoutdirection "LTR">
+<!-- WELCOME PAGE
+
+     This needs a little care. There is some embedded markup (sorry about
+     that). Of course, don't translate any text inside tags. The & lt; and
+     & gt; codes produce < and > respectively, but don't reverse them; that
+     will be done automatically for right-to-left text. & quot; produces a
+     double quote character. Please substitute whatever is appropriate in your
+     locale, but if you are editing this file directly, as opposed to using
+     BabelZilla's interface, anything other than <, >, ", ', and & must be in
+     UTF-8 or use numerical entities (e.g. & #x89ab;); named entities other
+     than the ones for those five characters (& lt; & gt; & quot; & apos;
+     & amp;) are NOT defined in this context. Double quote characters must be
+     encoded as & quot; (again, if you are editing directly), since the
+     strings are already double-quote delimited.
+
+-->
+<!ENTITY welcometospe "Bem vindo ao Editor de Senhas guardadas">
+<!-- Paragraph 1, Firefox version -->
+<!ENTITY welcomepara1_fx "Obrigado por usar o <a id='addonlink'>Editor de Senhas guardadas</a>. Pode usar a funcionalidade de edição indo a Ferramentas > Opções ou Editar > Preferências (dependendo do seu sistema operativo), seleccionando o painel "segurança" e clicar no botão "Senhas guardadas…". O diálogo contém os botões "Editar" e "Novo". Está também disponível um botão na barra de ferramentas. Para aceder, seleccione Ver > Barra de fe [...]
+<!-- Paragraph 1, SeaMonkey version -->
+<!-- XXXXX TRANSLATORS: Please pay attention! XXXXX
+     XXXXX SeaMonkey DOES NOT HAVE View > Toolbars > Customize…
+           among other things XXXXX
+     XXXXX Be careful if you copy and paste. XXXXX 
+-->
+<!ENTITY welcomepara1_sm "Obrigado por usar o <a id='addonlink'>Editor de Senhas guardadas</a>. Pode ir para a funcionalidade de edição indo a Ferramentas > Opções ou Editar > Preferências (dependendo do seu sistema operativo), indo ao painel "Senhas" em "Privacidade e segurança", depois clicar no botão "Gerir senhas guardadas". O diálogo contém os botões "Editar" e "Novo". Está também disponível um botão na barra de ferramentas. Pa [...]
+<!-- Paragraph 2 -->
+<!-- The "span" element here is replaced by "Firefox", "Thunderbird", etc. -->
+<!ENTITY welcomepara2 "Tenha em atenção que o diálogo Senhas guardadas é um componente base do <span id='appname'></span>, e não é fornecido por esta extensão, excepto pelos dois botões fornecidos. A barra de ferramentas é fornecida por conveniência, na expectativa que alguns utilizadores desta extensão desejam aceder ao diálogo com muita mais frequência que a normal.">
+<!-- Paragraph 3 -->
+<!ENTITY welcomepara3 "You may also manipulate logins associated with a particular web form by right-clicking on any of its fields and selecting an action.">
diff --git a/locale/ru/browserOverlay.dtd b/locale/ru/browserOverlay.dtd
new file mode 100644
index 0000000..8b0470d
--- /dev/null
+++ b/locale/ru/browserOverlay.dtd
@@ -0,0 +1,14 @@
+<!-- Open Saved Passwords -->
+<!ENTITY savedpasswords.label "Сохранённые пароли">
+<!ENTITY savedpasswords.accesskey "х">
+<!ENTITY savedpasswords.tooltip "Открыть диалоговое окно «Сохранённые пароли»">
+<!-- Context menu -->
+<!ENTITY ctx_savelogininfo.label "Save login info">
+<!ENTITY ctx_savelogininfo.accesskey "S">
+<!ENTITY ctx_savelogininfo.tooltip "Add a saved password for this form">
+<!ENTITY ctx_editlogininfo.label "Edit login info">
+<!ENTITY ctx_editlogininfo.accesskey "E">
+<!ENTITY ctx_editlogininfo.tooltip "Edit a saved password for this form">
+<!ENTITY ctx_deletelogininfo.label "Delete login info">
+<!ENTITY ctx_deletelogininfo.accesskey "D">
+<!ENTITY ctx_deletelogininfo.tooltip "Delete a saved password for this form">
diff --git a/locale/ru/prefwindow.dtd b/locale/ru/prefwindow.dtd
new file mode 100644
index 0000000..7d7ed97
--- /dev/null
+++ b/locale/ru/prefwindow.dtd
@@ -0,0 +1,18 @@
+<!ENTITY prefwindow.title "Редактор сохранённых паролей — Настройки">
+<!ENTITY displayMenuitem.label "Добавить пункт в меню">
+<!ENTITY displayMenuitem.tooltip "Добавляет в меню Инструменты и окно Настройки пункт «Сохранённые пароли» для быстрого вызова менеджера паролей">
+<!ENTITY renameMenuitemTo.label "Rename shortcut to:">
+<!ENTITY renameMenuitemTo.tooltip "Enter something here to call the shortcut something other than "Saved Passwords", if you want to make it less obvious to meddlers. Erase the value to return to using "Saved Passwords". Warning: this is not a substitute for proper security; you should use a master password when possible if you need to protect your passwords.">
+<!ENTITY preselectCurrentSite.label "Preselect current site in Saved Passwords">
+<!ENTITY preselectCurrentSite.tooltip "When opening Saved Passwords, this will immediately select and scroll to the site visited in the current browser tab.">
+<!ENTITY alwaysShowPasswords.label "Always show passwords">
+<!ENTITY alwaysShowPasswords.tooltip "If checked, Saved Password Editor will cause the Password column to be shown when the Saved Passwords dialog opens and show the password when the editor dialog opens.">
+<!ENTITY alwaysPromptForMasterPassword.label "Always prompt for master password">
+<!ENTITY alwaysPromptForMasterPassword.tooltip "Prompts for master password when showing passwords in Saved Passwords. If enabled, this unavoidably causes a double prompt at least once per session. If disabled, in most cases you will not be prompted for the master password.">
+<!ENTITY passwordfield_caption.label "При открытии окна редактора паролей">
+<!ENTITY passwordfield_alwayshide.label "всегда скрывать пароли">
+<!ENTITY passwordfield_alwaysshow.label "всегда отображать пароли">
+<!ENTITY passwordfield_rememberlast.label "запоминать последнее состояние">
+<!ENTITY passwordfield_rememberlast.tooltip "Показывает или скрывает пароли в зависимости от того, что было выбрано в прошлый раз">
+<!ENTITY passwordfield_followspwin.label "следить за списком">
+<!ENTITY passwordfield_followspwin.tooltip "Показывает пароли тогда и только тогда, если они сейчас отображаются в окне «Сохранённые пароли»">
diff --git a/locale/ru/pwdedit.dtd b/locale/ru/pwdedit.dtd
new file mode 100644
index 0000000..2e825b3
--- /dev/null
+++ b/locale/ru/pwdedit.dtd
@@ -0,0 +1,36 @@
+<!ENTITY savedpasswordeditor.title "Редактор сохранённых паролей">
+<!ENTITY signontype.label "Тип">
+<!ENTITY type_form.label "Веб-форма">
+<!ENTITY type_form.accesskey "В">
+<!ENTITY type_form.tooltip "A form contained in a web page">
+<!ENTITY type_annotated.label "Annotated">
+<!ENTITY type_annotated.accesskey "A">
+<!ENTITY type_annotated.tooltip "A login that requires a string in addition to the host to identify the service (e.g. HTTP authentication)">
+<!ENTITY hostname.label "Сервер">
+<!ENTITY hostname.tooltip "Протокол/имя сервера, к которому применяется пароль (например, http://www.example.com)">
+<!ENTITY formSubmitURL.label "Префикс адресата">
+<!ENTITY formSubmitURL.tooltip "Префикс формы передачи адреса">
+<!ENTITY annotation.label "Annotation">
+<!ENTITY annotation.tooltip "Additional string identifying the service to authenticate to (e.g. HTTP realm)">
+<!ENTITY username.label "Имя пользователя">
+<!ENTITY username.tooltip "Запоминать имя пользователя">
+<!ENTITY password.label "Пароль">
+<!ENTITY password.tooltip "Запоминать пароль">
+<!ENTITY usernameField.label "Имя поля «Имя пользователя»">
+<!ENTITY usernameField.tooltip "Имя атрибута, соответствующего полю имени пользователя в форме">
+<!ENTITY passwordField.label "Имя поля «Пароль»">
+<!ENTITY passwordField.tooltip "Имя атрибута, соответствующего полю пароля в форме">
+<!ENTITY showPassword.label "Показать">
+<!ENTITY showPassword.accesskey "П">
+<!ENTITY showPassword.tooltip "Переключает видимость паролей">
+<!ENTITY hidePassword.label "Спрятать">
+<!ENTITY hidePassword.accesskey "С">
+<!ENTITY guessfrompage.label "Взять с текущей страницы">
+<!ENTITY guessfrompage.accesskey "В">
+<!ENTITY guessfrompage.tooltip "Заполнить эту форму опираясь на подходящую идентификационную форму на текущей странице">
+<!ENTITY prevform.label "Предыдущая форма">
+<!ENTITY prevform.accesskey "П">
+<!ENTITY prevform.tooltip "Попробовать предыдущую форму на странице">
+<!ENTITY nextform.label "Следующая форма">
+<!ENTITY nextform.accesskey "С">
+<!ENTITY nextform.tooltip "Попробовать следующую форму на странице">
diff --git a/locale/ru/pwdedit.properties b/locale/ru/pwdedit.properties
new file mode 100644
index 0000000..c058305
--- /dev/null
+++ b/locale/ru/pwdedit.properties
@@ -0,0 +1,9 @@
+# TRANSLATORS: \n stands for a line break, and %S is a placeholder
+# for a string to be inserted.
+# SAVED PASSWORD EDITOR DIALOG
+newlogin=Создать новую идентификационную запись
+clonelogin=Дублировать идентификационную запись
+editlogin=Изменить идентификационную запись
+editmultlogin=Изменить несколько идентификационных записей
+nologinform=На текущей странице не найдено ни одной подходящей формы идентификации!
+multduplogins=Результатом будет являться дублирование идентификационных записей. Чтобы завершить редактирование, вы должны оставить по крайней мере одно из полей — сервер, префикс адресата, HTTP область или имя пользователя (по обстоятельствам) — в неопределённом состоянии, стерев значение(я), которое вы ввели.
diff --git a/locale/ru/pwdmgrOverlay.dtd b/locale/ru/pwdmgrOverlay.dtd
new file mode 100644
index 0000000..9f70fe8
--- /dev/null
+++ b/locale/ru/pwdmgrOverlay.dtd
@@ -0,0 +1,11 @@
+<!-- TRANSLATORS - be aware that these access keys are used in several places:
+     the context menu introduced in Fx 4.0, my menu-button, and as shortcut
+     keys for the whole window. Make sure your choices don't conflict in any of
+     those contexts. 
+-->
+<!ENTITY newentry.label "Новая">
+<!ENTITY newentry.accesskey "Н">
+<!ENTITY editentry.label "Править">
+<!ENTITY editentry.accesskey "П">
+<!ENTITY cloneentry.label "Дублировать">
+<!ENTITY cloneentry.accesskey "Д">
diff --git a/locale/ru/pwdmgrOverlay.properties b/locale/ru/pwdmgrOverlay.properties
new file mode 100644
index 0000000..fac9e52
--- /dev/null
+++ b/locale/ru/pwdmgrOverlay.properties
@@ -0,0 +1,4 @@
+# TRANSLATORS: \n stands for a line break, and %S is a placeholder
+# for a string to be inserted.
+# POPUP MESSAGE WHEN ADDING/MODIFYING AN ENTRY FAILS
+badnewentry=Ошибка:\n %S\nВы пытаетесь создать дубликат записи идентификационных данных?
diff --git a/locale/ru/spe.properties b/locale/ru/spe.properties
new file mode 100644
index 0000000..a179cf9
--- /dev/null
+++ b/locale/ru/spe.properties
@@ -0,0 +1,10 @@
+# TRANSLATORS: \n stands for a line break, and %S is a placeholder
+# for a string to be inserted.
+savedpasswordeditor=Saved Password Editor
+error=Ошибка
+nologinstoedit=No logins to edit!
+nologinstodelete=No logins to delete!
+logininfosaved=Login info saved
+logininfochanged=Login info changed
+logininfodeleted=Login info deleted
+failed=The operation failed:\n  %S
diff --git a/locale/ru/welcome.dtd b/locale/ru/welcome.dtd
new file mode 100644
index 0000000..7259fa3
--- /dev/null
+++ b/locale/ru/welcome.dtd
@@ -0,0 +1,50 @@
+<!-- LOCALE
+
+     Format: language-COUNTRY according to RFC 1766
+     ( http://www.ietf.org/rfc/rfc1766.txt ). COUNTRY is for dialectal
+     variation and is not necessary for locales without such variation. You can
+     probably copy the locale tag of your localized Mozilla application
+     (Firefox, etc.). Examples:
+
+     en-US  - English in US
+     en-GB  - English in Great Britain
+     de-DE  - German in Germany
+     ru     - Russian (no specific country)
+
+-->
+<!ENTITY locale "ru">
+<!-- LAYOUT DIRECTION: "LTR" for left-to-right; "RTL" for right-to-left.
+     Generally, this should follow the direction of your writing system. 
+-->
+<!ENTITY layoutdirection "LTR">
+<!-- WELCOME PAGE
+
+     This needs a little care. There is some embedded markup (sorry about
+     that). Of course, don't translate any text inside tags. The & lt; and
+     & gt; codes produce < and > respectively, but don't reverse them; that
+     will be done automatically for right-to-left text. & quot; produces a
+     double quote character. Please substitute whatever is appropriate in your
+     locale, but if you are editing this file directly, as opposed to using
+     BabelZilla's interface, anything other than <, >, ", ', and & must be in
+     UTF-8 or use numerical entities (e.g. & #x89ab;); named entities other
+     than the ones for those five characters (& lt; & gt; & quot; & apos;
+     & amp;) are NOT defined in this context. Double quote characters must be
+     encoded as & quot; (again, if you are editing directly), since the
+     strings are already double-quote delimited.
+
+-->
+<!ENTITY welcometospe "Добро пожаловать в редактор сохранённых паролей">
+<!-- Paragraph 1, Firefox version -->
+<!ENTITY welcomepara1_fx "Спасибо за использование <a id='addonlink'>Редактора сохранённых паролей</a>. Получить доступ к функциям редактирования вы сможете через меню «Инструменты|Настройки…» или «Правка|Настройки…» (в зависимости от вашей операционной системы), выбрав панель «Защита» и нажав кнопку «Сохранённые пароли…». Кроме того, вы можете получить доступ к сохранённым  паролям прямо из меню Инструменты или (только Firefox 4 для Windows) меню приложения. Также, для вашего удобства,  [...]
+<!-- Paragraph 1, SeaMonkey version -->
+<!-- XXXXX TRANSLATORS: Please pay attention! XXXXX
+     XXXXX SeaMonkey DOES NOT HAVE View > Toolbars > Customize…
+           among other things XXXXX
+     XXXXX Be careful if you copy and paste. XXXXX 
+-->
+<!ENTITY welcomepara1_sm "Спасибо за использование <a id='addonlink'>Редактора сохранённых паролей</a>. Получить доступ к функциям редактирования вы сможете через меню «Инструменты|Настройки…» или «Правка|Настройки…» (в зависимости от вашей операционной системы), переместившись на панель «Пароли» в раскрывающемся списке «Приватность и защита» и нажав кнопку «Управление сохранёнными паролями». Кроме того, вы можете получить доступ к сохранённым  паролям прямо из меню Инструменты. Также, д [...]
+<!-- Paragraph 2 -->
+<!-- The "span" element here is replaced by "Firefox", "Thunderbird", etc. -->
+<!ENTITY welcomepara2 "Заметьте, что диалоговое окно «Сохранённые пароли» является частью <span id='appname'></span> и не предоставляется этим расширением, за исключением дополнительных функций упомянутых выше. Кнопка панели инструментов предоставляется только с целью более удобного вызова диалогового окна, в расчёте на то, что некоторые из пользователей этого расширения будут обращаться к нему более часто, чем они делали бы это традиционным способом.">
+<!-- Paragraph 3 -->
+<!ENTITY welcomepara3 "You may also manipulate logins associated with a particular web form by right-clicking on any of its fields and selecting an action.">
diff --git a/locale/sr/browserOverlay.dtd b/locale/sr/browserOverlay.dtd
new file mode 100644
index 0000000..90f0f38
--- /dev/null
+++ b/locale/sr/browserOverlay.dtd
@@ -0,0 +1,14 @@
+<!-- Open Saved Passwords -->
+<!ENTITY savedpasswords.label "Сачуване лозинке">
+<!ENTITY savedpasswords.accesskey "С">
+<!ENTITY savedpasswords.tooltip "Отворите сачуване лозинке">
+<!-- Context menu -->
+<!ENTITY ctx_savelogininfo.label "Сачувај податке за пријаву">
+<!ENTITY ctx_savelogininfo.accesskey "ч">
+<!ENTITY ctx_savelogininfo.tooltip "Додајте сачувану лозинку за овај образац">
+<!ENTITY ctx_editlogininfo.label "Уреди податке за пријаву">
+<!ENTITY ctx_editlogininfo.accesskey "У">
+<!ENTITY ctx_editlogininfo.tooltip "Уредите сачувану лозинку за овај образац">
+<!ENTITY ctx_deletelogininfo.label "Обриши податке за пријаву">
+<!ENTITY ctx_deletelogininfo.accesskey "О">
+<!ENTITY ctx_deletelogininfo.tooltip "Обришите сачувану лозинку за овај образац">
diff --git a/locale/sr/prefwindow.dtd b/locale/sr/prefwindow.dtd
new file mode 100644
index 0000000..a0f50e1
--- /dev/null
+++ b/locale/sr/prefwindow.dtd
@@ -0,0 +1,18 @@
+<!ENTITY prefwindow.title "Поставке">
+<!ENTITY displayMenuitem.label "Додај пречицу у мениje">
+<!ENTITY displayMenuitem.tooltip "Додаје „Сачуване лозинке“ у алатке и мени за програме виндоуза као пречицу до управљача лозинкама">
+<!ENTITY renameMenuitemTo.label "Преименуј пречицу у:">
+<!ENTITY renameMenuitemTo.tooltip "Овде можете унети неки други натпис уместо „Сачуване лозинке”, ако желите спречити да вам другу њушкају по лозинкама. Избришите целу вредност да бисте вратили натпис „Сачуване лозинке”. УПОЗОРЕЊЕ: ово није довољно да бисте заштитили своје лозинке. Користите главну лозинку, ако желите сигурну заштиту.">
+<!ENTITY preselectCurrentSite.label "Унапред изабери тренутну страницу у сачуваним лозинкама">
+<!ENTITY preselectCurrentSite.tooltip "Када отварате сачуване лозинке, ово ће аутоматски изабрати и спустити на страницу која је отворена у тренутном језичку,">
+<!ENTITY alwaysShowPasswords.label "Увек прикажи лозинку">
+<!ENTITY alwaysShowPasswords.tooltip "Ако је означено, Saved Password Editor ће приказати колони „Лозинка” у Уређивачу лозинки, када се прозор отвори.">
+<!ENTITY alwaysPromptForMasterPassword.label "Увек тражи главну лозинку">
+<!ENTITY alwaysPromptForMasterPassword.tooltip "Тражи главну лозинку пре приказивања сачуваних у Уређивачу лозинки. Ако је омогућено, ово спречава дупло тражење лозинке бар једном по сесији. Ако је онемогућено, у већини случајева главна лозинка неће бити тражена.">
+<!ENTITY passwordfield_caption.label "Поље лозинке у прозору за уређивање">
+<!ENTITY passwordfield_alwayshide.label "Увек сакриј лозинку када се отвара прозор за уређивање">
+<!ENTITY passwordfield_alwaysshow.label "Увек прикажи лозинку када се отвара прозор за уређивање">
+<!ENTITY passwordfield_rememberlast.label "Запамти последње стање">
+<!ENTITY passwordfield_rememberlast.tooltip "Прикажи или сакриј исто као и прошли пут када је прозор био отворен">
+<!ENTITY passwordfield_followspwin.label "Прати списак сачуваних лозинки">
+<!ENTITY passwordfield_followspwin.tooltip "Прикажи само ако су лозинке приказане у сачуваним лозинкама">
diff --git a/locale/sr/pwdedit.dtd b/locale/sr/pwdedit.dtd
new file mode 100644
index 0000000..47bebc3
--- /dev/null
+++ b/locale/sr/pwdedit.dtd
@@ -0,0 +1,36 @@
+<!ENTITY savedpasswordeditor.title "Уређивач сачуваних лозинки">
+<!ENTITY signontype.label "Врста">
+<!ENTITY type_form.label "Веб образац">
+<!ENTITY type_form.accesskey "В">
+<!ENTITY type_form.tooltip "Образац који се садржи у веб страници">
+<!ENTITY type_annotated.label "Прибележно">
+<!ENTITY type_annotated.accesskey "П">
+<!ENTITY type_annotated.tooltip "Пријава која захтева ниску заједно са сервером за проверу идентитета домаћина (нпр. HTTP идентификација)">
+<!ENTITY hostname.label "Домаћин">
+<!ENTITY hostname.tooltip "Протокол/домаћин на којем се лозинка примењује (нпр. http://www.primer.com)">
+<!ENTITY formSubmitURL.label "Префикс слања">
+<!ENTITY formSubmitURL.tooltip "Префикс адресе за подношење обрасца">
+<!ENTITY annotation.label "Прибелешка">
+<!ENTITY annotation.tooltip "Додатна ниска која препознаје сервис за проверу идентитета (нпр. HTTP домен)">
+<!ENTITY username.label "Корисничко име">
+<!ENTITY username.tooltip "Корисничко име за памћење">
+<!ENTITY password.label "Лозинка">
+<!ENTITY password.tooltip "Лозинка за памћење">
+<!ENTITY usernameField.label "Поље корисничког имена">
+<!ENTITY usernameField.tooltip "Особина имена за одговарајуће поље корисничког имена у обрасцу">
+<!ENTITY passwordField.label "Поље лозинке">
+<!ENTITY passwordField.tooltip "Особина имена за одговарајуће поље лозинке у обрасцу">
+<!ENTITY showPassword.label "Прикажи">
+<!ENTITY showPassword.accesskey "П">
+<!ENTITY showPassword.tooltip "Промени видљивост лозинке">
+<!ENTITY hidePassword.label "Сакриј">
+<!ENTITY hidePassword.accesskey "С">
+<!ENTITY guessfrompage.label "Погоди с текуће странице">
+<!ENTITY guessfrompage.accesskey "о">
+<!ENTITY guessfrompage.tooltip "Попуните овај образац који је сличан обрасцу за пријаву на текућој страници">
+<!ENTITY prevform.label "Претходни образац">
+<!ENTITY prevform.accesskey "П">
+<!ENTITY prevform.tooltip "Пробајте претходни образац странице">
+<!ENTITY nextform.label "Следећи образац">
+<!ENTITY nextform.accesskey "С">
+<!ENTITY nextform.tooltip "Пробајте претходни образац странице">
diff --git a/locale/sr/pwdedit.properties b/locale/sr/pwdedit.properties
new file mode 100644
index 0000000..e3dc753
--- /dev/null
+++ b/locale/sr/pwdedit.properties
@@ -0,0 +1,9 @@
+# TRANSLATORS: \n stands for a line break, and %S is a placeholder
+# for a string to be inserted.
+# SAVED PASSWORD EDITOR DIALOG
+newlogin=Прављење нове пријаве
+clonelogin=Клонирање пријаве
+editlogin=Мењање пријаве
+editmultlogin=Уређивање вишеструких пријава
+nologinform=На текућој страници није пронађен одговарајући образац за пријављивање!
+multduplogins=Ово ће проузроковати удвостручене пријаве. Да бисте завршили уређивање, морате оставити бар једног домаћина, префикс за слање, HTTP домен или поље за корисничко име и одредити стање тако што ћете обрисати вредности које сте унели.
diff --git a/locale/sr/pwdmgrOverlay.dtd b/locale/sr/pwdmgrOverlay.dtd
new file mode 100644
index 0000000..95c5c0d
--- /dev/null
+++ b/locale/sr/pwdmgrOverlay.dtd
@@ -0,0 +1,11 @@
+<!-- TRANSLATORS - be aware that these access keys are used in several places:
+     the context menu introduced in Fx 4.0, my menu-button, and as shortcut
+     keys for the whole window. Make sure your choices don't conflict in any of
+     those contexts. 
+-->
+<!ENTITY newentry.label "Ново">
+<!ENTITY newentry.accesskey "Н">
+<!ENTITY editentry.label "Уреди">
+<!ENTITY editentry.accesskey "У">
+<!ENTITY cloneentry.label "Клонирај">
+<!ENTITY cloneentry.accesskey "К">
diff --git a/locale/sr/pwdmgrOverlay.properties b/locale/sr/pwdmgrOverlay.properties
new file mode 100644
index 0000000..35e0b8e
--- /dev/null
+++ b/locale/sr/pwdmgrOverlay.properties
@@ -0,0 +1,4 @@
+# TRANSLATORS: \n stands for a line break, and %S is a placeholder
+# for a string to be inserted.
+# POPUP MESSAGE WHEN ADDING/MODIFYING AN ENTRY FAILS
+badnewentry=Дошло је до грешке:\n %S\nЈесте ли покушали да направите дупликат уноса за пријављивање?
diff --git a/locale/sr/spe.properties b/locale/sr/spe.properties
new file mode 100644
index 0000000..56eff0a
--- /dev/null
+++ b/locale/sr/spe.properties
@@ -0,0 +1,10 @@
+# TRANSLATORS: \n stands for a line break, and %S is a placeholder
+# for a string to be inserted.
+savedpasswordeditor=Уређивач сачуваних лозинки
+error=Грешка
+nologinstoedit=Нема лозинки за уређивање.
+nologinstodelete=Нема лозинки за брисање.
+logininfosaved=Лозинка је сачувана
+logininfochanged=Лозинка је промењена
+logininfodeleted=Лозинка је обрисана
+failed=Не могу да извршим радњу:\n  %S
diff --git a/locale/sr/welcome.dtd b/locale/sr/welcome.dtd
new file mode 100644
index 0000000..b28d8b4
--- /dev/null
+++ b/locale/sr/welcome.dtd
@@ -0,0 +1,50 @@
+<!-- LOCALE
+
+     Format: language-COUNTRY according to RFC 1766
+     ( http://www.ietf.org/rfc/rfc1766.txt ). COUNTRY is for dialectal
+     variation and is not necessary for locales without such variation. You can
+     probably copy the locale tag of your localized Mozilla application
+     (Firefox, etc.). Examples:
+
+     en-US  - English in US
+     en-GB  - English in Great Britain
+     de-DE  - German in Germany
+     ru     - Russian (no specific country)
+
+-->
+<!ENTITY locale "sr">
+<!-- LAYOUT DIRECTION: "LTR" for left-to-right; "RTL" for right-to-left.
+     Generally, this should follow the direction of your writing system. 
+-->
+<!ENTITY layoutdirection "LTR">
+<!-- WELCOME PAGE
+
+     This needs a little care. There is some embedded markup (sorry about
+     that). Of course, don't translate any text inside tags. The & lt; and
+     & gt; codes produce < and > respectively, but don't reverse them; that
+     will be done automatically for right-to-left text. & quot; produces a
+     double quote character. Please substitute whatever is appropriate in your
+     locale, but if you are editing this file directly, as opposed to using
+     BabelZilla's interface, anything other than <, >, ", ', and & must be in
+     UTF-8 or use numerical entities (e.g. & #x89ab;); named entities other
+     than the ones for those five characters (& lt; & gt; & quot; & apos;
+     & amp;) are NOT defined in this context. Double quote characters must be
+     encoded as & quot; (again, if you are editing directly), since the
+     strings are already double-quote delimited.
+
+-->
+<!ENTITY welcometospe "Добро дошли у Уређивач сачуваних лозинки">
+<!-- Paragraph 1, Firefox version -->
+<!ENTITY welcomepara1_fx "Хвала вам што користите <a id='addonlink'>Уређивач сачуваних лозинки</a>. Почните с коришћењем додатка кликом на Алатке > Опције или Уређивање > Подешавања (зависно од вашег оперативног система). Изаберите језичак „Безбедност“ и кликните на дугме „Сачуване лозинке…“. Иста ставка доступна је и у менију „Алатке“ (фајерфокс 4 за виндоуз). Доступно вам је и дугме за траку с алаткама које можете да убаците на следећи начин: изаберите Приказ > Панели алата &g [...]
+<!-- Paragraph 1, SeaMonkey version -->
+<!-- XXXXX TRANSLATORS: Please pay attention! XXXXX
+     XXXXX SeaMonkey DOES NOT HAVE View > Toolbars > Customize…
+           among other things XXXXX
+     XXXXX Be careful if you copy and paste. XXXXX 
+-->
+<!ENTITY welcomepara1_sm "Хвала вам што користите <a id='addonlink'>Уређивач сачуваних лозинки</a>. Почните с коришћењем додатка кликом на Алатке > Опције или Уређивање > Подешавања (зависно од вашег оперативног система). Изаберите језичак „Безбедност“ и кликните на дугме „Сачуване лозинке…“. Иста ставка доступна је и у менију „Алатке“. Доступно вам је и дугме за траку с алаткама које можете да убаците десним кликом на траку и на дугме „Прилагоди…“. Прозорче сачуваних лозинки сада  [...]
+<!-- Paragraph 2 -->
+<!-- The "span" element here is replaced by "Firefox", "Thunderbird", etc. -->
+<!ENTITY welcomepara2 "Упамтите да је прозор „Сачуване лозинке“ основна компонента <span id='appname'></span>-а и не долази уз овај додатак. Трака с алаткама намењена је корисницима који често отварају прозор.">
+<!-- Paragraph 3 -->
+<!ENTITY welcomepara3 "Можете и да управљате лозинкама које су повезане с одређеним веб обрасцем тако што ћете притиснути десни клик на било које поље и изабрати радњу.">
diff --git a/locale/sv-SE/browserOverlay.dtd b/locale/sv-SE/browserOverlay.dtd
new file mode 100644
index 0000000..31af440
--- /dev/null
+++ b/locale/sv-SE/browserOverlay.dtd
@@ -0,0 +1,14 @@
+<!-- Open Saved Passwords -->
+<!ENTITY savedpasswords.label "Sparade lösenord">
+<!ENTITY savedpasswords.accesskey "l">
+<!ENTITY savedpasswords.tooltip "Öppna dialogen "Sparade lösenord"">
+<!-- Context menu -->
+<!ENTITY ctx_savelogininfo.label "Spara inloggningsuppgifter">
+<!ENTITY ctx_savelogininfo.accesskey "p">
+<!ENTITY ctx_savelogininfo.tooltip "Lägg till ett sparat lösenord för detta formulär">
+<!ENTITY ctx_editlogininfo.label "Redigera inloggningsuppgifter">
+<!ENTITY ctx_editlogininfo.accesskey "d">
+<!ENTITY ctx_editlogininfo.tooltip "Redigera ett sparat lösenord för detta formulär">
+<!ENTITY ctx_deletelogininfo.label "Ta bort inloggningsuppgifter">
+<!ENTITY ctx_deletelogininfo.accesskey "b">
+<!ENTITY ctx_deletelogininfo.tooltip "Ta bort ett sparat lösenord för detta formulär">
diff --git a/locale/sv-SE/prefwindow.dtd b/locale/sv-SE/prefwindow.dtd
new file mode 100644
index 0000000..f257228
--- /dev/null
+++ b/locale/sv-SE/prefwindow.dtd
@@ -0,0 +1,18 @@
+<!ENTITY prefwindow.title "Inställningar för Saved Password Editor">
+<!ENTITY displayMenuitem.label "Inkludera genväg i menyer">
+<!ENTITY displayMenuitem.tooltip "Lägger till "Sparade lösenord" i Verktyg-menyn och Windows/Linux Firefoxmeny som en genväg till lösenordshanteraren">
+<!ENTITY renameMenuitemTo.label "Byt namn på genväg till:">
+<!ENTITY renameMenuitemTo.tooltip "Här kan du ge menygenvägen "Sparade lösenord" ett annat namn, för att göra det mindre tydligt för andra som använder din dator. Ta bort värdet och lämna tomt för att gå tillbaka till "Sparade lösenord". Varning: Det här ersätter inte riktiga säkerhetslösningar! Du bör använda ett huvudlösenord om du vill skydda dina lösenord.">
+<!ENTITY preselectCurrentSite.label "Förhandsvälj aktuell webbplats i "Sparade lösenord"">
+<!ENTITY preselectCurrentSite.tooltip "När "Sparade lösenord" öppnas kommer Saved Password Editor omedelbart att välja och rulla till den webbplats som besöks i den aktuella webbläsarfliken.">
+<!ENTITY alwaysShowPasswords.label "Visa alltid lösenord">
+<!ENTITY alwaysShowPasswords.tooltip "Om detta alternativ markeras kommer Saved Password Editor att visa kolumnen Lösenord när fönstret "Sparade lösenord" öppnas och visa lösenordet när redigeringsrutan öppnas.">
+<!ENTITY alwaysPromptForMasterPassword.label "Fråga alltid efter huvudlösenord">
+<!ENTITY alwaysPromptForMasterPassword.tooltip "Ber dig att ange huvudlösenord när lösenord visas öppet i "Sparade lösenord". Om alternativet markeras orsakar detta minst en dubbelt ställd fråga per session. Om det avmarkeras kommer du alltsom oftast inte att tillfrågas om huvudlösenord.">
+<!ENTITY passwordfield_caption.label "Lösenordsfält i redigeringsfönstret">
+<!ENTITY passwordfield_alwayshide.label "Dölj alltid lösenord när redigeringsfönstret öppnas">
+<!ENTITY passwordfield_alwaysshow.label "Visa alltid lösenord när redigeringsfönstret öppnas">
+<!ENTITY passwordfield_rememberlast.label "Kom ihåg senaste status">
+<!ENTITY passwordfield_rememberlast.tooltip "Kom ihåg visningsläget tills nästa gång fönstret öppnas">
+<!ENTITY passwordfield_followspwin.label "Följ listan över sparade lösenord">
+<!ENTITY passwordfield_followspwin.tooltip "Visa endast om lösenord för närvarande visas i Sparade lösenord-fönstret">
diff --git a/locale/sv-SE/pwdedit.dtd b/locale/sv-SE/pwdedit.dtd
new file mode 100644
index 0000000..509f393
--- /dev/null
+++ b/locale/sv-SE/pwdedit.dtd
@@ -0,0 +1,36 @@
+<!ENTITY savedpasswordeditor.title "Saved Password Editor: Redigera sparade lösenord">
+<!ENTITY signontype.label "Typ">
+<!ENTITY type_form.label "Webbformulär">
+<!ENTITY type_form.accesskey "W">
+<!ENTITY type_form.tooltip "Ett formulär på en webbsida">
+<!ENTITY type_annotated.label "Kommenterad">
+<!ENTITY type_annotated.accesskey "K">
+<!ENTITY type_annotated.tooltip "En inloggning som kräver en sträng i anslutning till värden för att identifiera tjänsten (t.ex. HTTP-autentisering)">
+<!ENTITY hostname.label "Värd">
+<!ENTITY hostname.tooltip "Protokoll/värdnamn för vilket lösenordet gäller (t.ex. http://www.example.com)">
+<!ENTITY formSubmitURL.label "Adressprefix">
+<!ENTITY formSubmitURL.tooltip "Prefix för formulärets inlämningsadress">
+<!ENTITY annotation.label "Kommentar">
+<!ENTITY annotation.tooltip "Tilläggssträng som identifierar tjänsten som skall verifieras (t.ex. HTTP-sfär)">
+<!ENTITY username.label "Användarnamn">
+<!ENTITY username.tooltip "Användarnamnet som skall kommas ihåg">
+<!ENTITY password.label "Lösenord">
+<!ENTITY password.tooltip "Lösenordet som skall kommas ihåg">
+<!ENTITY usernameField.label "Användarnamnfältets namn">
+<!ENTITY usernameField.tooltip "Namnattributet för lämpligt användarnamnfält i formuläret">
+<!ENTITY passwordField.label "Lösenordsfältets namn">
+<!ENTITY passwordField.tooltip "Namnattributet för lämpligt lösenordsfält i formuläret">
+<!ENTITY showPassword.label "Visa">
+<!ENTITY showPassword.accesskey "V">
+<!ENTITY showPassword.tooltip "Växla lösenordens synlighet">
+<!ENTITY hidePassword.label "Dölj">
+<!ENTITY hidePassword.accesskey "D">
+<!ENTITY guessfrompage.label "Gissa utifrån aktuell sida">
+<!ENTITY guessfrompage.accesskey "i">
+<!ENTITY guessfrompage.tooltip "Fyll i det här formuläret baserat på ett lämpligt inloggningsformulär på den aktuella sidan">
+<!ENTITY prevform.label "Föregående formulär">
+<!ENTITY prevform.accesskey "F">
+<!ENTITY prevform.tooltip "Testa föregående formulär från sidan">
+<!ENTITY nextform.label "Nästa formulär">
+<!ENTITY nextform.accesskey "N">
+<!ENTITY nextform.tooltip "Testa nästa formulär från sidan">
diff --git a/locale/sv-SE/pwdedit.properties b/locale/sv-SE/pwdedit.properties
new file mode 100644
index 0000000..4fc91e4
--- /dev/null
+++ b/locale/sv-SE/pwdedit.properties
@@ -0,0 +1,9 @@
+# TRANSLATORS: \n stands for a line break, and %S is a placeholder
+# for a string to be inserted.
+# SAVED PASSWORD EDITOR DIALOG
+newlogin=Skapa ny inloggning
+clonelogin=Klona inloggning
+editlogin=Redigera inloggning
+editmultlogin=Redigera flera inloggningar
+nologinform=Inget passande inloggningsformulär hittades på den aktuella sidan!
+multduplogins=Det här skulle resultera i dubbla inloggningar. För att slutföra redigeringen måste du lämna åtminstone ett av fälten Värd, Adressprefix, Kommentar eller Användarnamn (beroende på vad som passar) tomt genom att radera de värden du angav.
diff --git a/locale/sv-SE/pwdmgrOverlay.dtd b/locale/sv-SE/pwdmgrOverlay.dtd
new file mode 100644
index 0000000..856348b
--- /dev/null
+++ b/locale/sv-SE/pwdmgrOverlay.dtd
@@ -0,0 +1,11 @@
+<!-- TRANSLATORS - be aware that these access keys are used in several places:
+     the context menu introduced in Fx 4.0, my menu-button, and as shortcut
+     keys for the whole window. Make sure your choices don't conflict in any of
+     those contexts. 
+-->
+<!ENTITY newentry.label "Nytt">
+<!ENTITY newentry.accesskey "N">
+<!ENTITY editentry.label "Redigera">
+<!ENTITY editentry.accesskey "R">
+<!ENTITY cloneentry.label "Klona">
+<!ENTITY cloneentry.accesskey "l">
diff --git a/locale/sv-SE/pwdmgrOverlay.properties b/locale/sv-SE/pwdmgrOverlay.properties
new file mode 100644
index 0000000..3586d22
--- /dev/null
+++ b/locale/sv-SE/pwdmgrOverlay.properties
@@ -0,0 +1,4 @@
+# TRANSLATORS: \n stands for a line break, and %S is a placeholder
+# for a string to be inserted.
+# POPUP MESSAGE WHEN ADDING/MODIFYING AN ENTRY FAILS
+badnewentry=Ett fel inträffade:\n  %S\nFörsökte du skapa en kopia av en befintlig inloggningspost?
diff --git a/locale/sv-SE/spe.properties b/locale/sv-SE/spe.properties
new file mode 100644
index 0000000..2f462c8
--- /dev/null
+++ b/locale/sv-SE/spe.properties
@@ -0,0 +1,10 @@
+# TRANSLATORS: \n stands for a line break, and %S is a placeholder
+# for a string to be inserted.
+savedpasswordeditor=Saved Password Editor
+error=Fel
+nologinstoedit=Det finns inga inloggningar att redigera!
+nologinstodelete=Det finns inga inloggningar att ta bort!
+logininfosaved=Inloggningsuppgifterna har sparats
+logininfochanged=Inloggningsuppgifterna har ändrats
+logininfodeleted=Inloggningsuppgifterna har tagits bort
+failed=Det gick inte att utföra åtgärden:\n %S
diff --git a/locale/sv-SE/welcome.dtd b/locale/sv-SE/welcome.dtd
new file mode 100644
index 0000000..68c5126
--- /dev/null
+++ b/locale/sv-SE/welcome.dtd
@@ -0,0 +1,50 @@
+<!-- LOCALE
+
+     Format: language-COUNTRY according to RFC 1766
+     ( http://www.ietf.org/rfc/rfc1766.txt ). COUNTRY is for dialectal
+     variation and is not necessary for locales without such variation. You can
+     probably copy the locale tag of your localized Mozilla application
+     (Firefox, etc.). Examples:
+
+     en-US  - English in US
+     en-GB  - English in Great Britain
+     de-DE  - German in Germany
+     ru     - Russian (no specific country)
+
+-->
+<!ENTITY locale "sv-SE">
+<!-- LAYOUT DIRECTION: "LTR" for left-to-right; "RTL" for right-to-left.
+     Generally, this should follow the direction of your writing system. 
+-->
+<!ENTITY layoutdirection "LTR">
+<!-- WELCOME PAGE
+
+     This needs a little care. There is some embedded markup (sorry about
+     that). Of course, don't translate any text inside tags. The & lt; and
+     & gt; codes produce < and > respectively, but don't reverse them; that
+     will be done automatically for right-to-left text. & quot; produces a
+     double quote character. Please substitute whatever is appropriate in your
+     locale, but if you are editing this file directly, as opposed to using
+     BabelZilla's interface, anything other than <, >, ", ', and & must be in
+     UTF-8 or use numerical entities (e.g. & #x89ab;); named entities other
+     than the ones for those five characters (& lt; & gt; & quot; & apos;
+     & amp;) are NOT defined in this context. Double quote characters must be
+     encoded as & quot; (again, if you are editing directly), since the
+     strings are already double-quote delimited.
+
+-->
+<!ENTITY welcometospe "Välkommen till Saved Password Editor">
+<!-- Paragraph 1, Firefox version -->
+<!ENTITY welcomepara1_fx "Tack för att du använder <a id='addonlink'>Saved Password Editor</a>. Du kan komma åt redigeringsfunktionen genom att gå till Verktyg > Inställningar eller Redigera > Inställningar (beroende på ditt operativsystem), välja panelen "Säkerhet" och slutligen klicka på knappen "Sparade lösenord…". Du kommer också enkelt åt "Sparade lösenord" via Verktyg-menyn eller (i Firefox 4 eller senare på Windows- och Linux-datorer) Firefoxmen [...]
+<!-- Paragraph 1, SeaMonkey version -->
+<!-- XXXXX TRANSLATORS: Please pay attention! XXXXX
+     XXXXX SeaMonkey DOES NOT HAVE View > Toolbars > Customize…
+           among other things XXXXX
+     XXXXX Be careful if you copy and paste. XXXXX 
+-->
+<!ENTITY welcomepara1_sm "Tack för att du använder <a id='addonlink'>Saved Password Editor</a>. Du kan komma åt redigeringsfunktionen genom att gå till Verktyg > Inställningar eller Redigera > Inställningar (beroende på ditt operativsystem), navigera sedan till "Lösenord"-panelen under "Sekretess & Säkerhet" och klicka slutligen på knappen "Hantera sparade lösenord". Du kommer också enkelt åt "Sparade lösenord" via Verktyg-menyn. En verkt [...]
+<!-- Paragraph 2 -->
+<!-- The "span" element here is replaced by "Firefox", "Thunderbird", etc. -->
+<!ENTITY welcomepara2 "Observera att dialogen "Sparade lösenord" är en baskomponent av <span id='appname'></span> och inte tillhandahålls av det här tillägget, med undantag för de tillagda funktionerna som nämns härovan. Verktygsfältsknappen tillhandahålls enkom av bekvämlighetsskäl, med förhoppningen att några av användarna av det här tillägget kommer att vilja öppna dialogen mycket oftare än de annars kanske skulle göra.">
+<!-- Paragraph 3 -->
+<!ENTITY welcomepara3 "Du kan även påverka inloggningar som är associerade med ett visst webbformulär genom att högerklicka i ett av dess fält och välja en åtgärd.">
diff --git a/locale/tr/browserOverlay.dtd b/locale/tr/browserOverlay.dtd
new file mode 100644
index 0000000..83b931f
--- /dev/null
+++ b/locale/tr/browserOverlay.dtd
@@ -0,0 +1,14 @@
+<!-- Open Saved Passwords -->
+<!ENTITY savedpasswords.label "Kayıtlı Şifreler">
+<!ENTITY savedpasswords.accesskey "k">
+<!ENTITY savedpasswords.tooltip "Kayıtlı Şifreleri aç">
+<!-- Context menu -->
+<!ENTITY ctx_savelogininfo.label "Giriş bilgisini kaydet">
+<!ENTITY ctx_savelogininfo.accesskey "K">
+<!ENTITY ctx_savelogininfo.tooltip "Bu form için kayıtlı şifre ekle">
+<!ENTITY ctx_editlogininfo.label "Giriş bilgisini düzenle">
+<!ENTITY ctx_editlogininfo.accesskey "D">
+<!ENTITY ctx_editlogininfo.tooltip "Bu form için kaydedilen şifreyi düzenle">
+<!ENTITY ctx_deletelogininfo.label "Giriş bilgisini sil">
+<!ENTITY ctx_deletelogininfo.accesskey "S">
+<!ENTITY ctx_deletelogininfo.tooltip "Bu form için kaydedilen şifreyi sil">
diff --git a/locale/tr/prefwindow.dtd b/locale/tr/prefwindow.dtd
new file mode 100644
index 0000000..3357532
--- /dev/null
+++ b/locale/tr/prefwindow.dtd
@@ -0,0 +1,18 @@
+<!ENTITY prefwindow.title "Kayıtlı Şifre Editör seçenekleri">
+<!ENTITY displayMenuitem.label "Kısayolu menülerde bulundur">
+<!ENTITY displayMenuitem.tooltip ""Kayıtlı Şifreleri" şifre yöneticisine ulaşmak için Araçlara ve Windows/Linux program menüsüne kısayol olarak ekler">
+<!ENTITY renameMenuitemTo.label "Kısayolu yeniden adlandır:">
+<!ENTITY renameMenuitemTo.tooltip "Buraya "Kayıtlı Şifreler", haricinde birşeyi kısayoldan çağırmak için birşeyler girin.İstemiyorsan "Kayıtlı Şifrelere". dönmek için kutudaki değeri silin. Uyarı: Bu güvenlik için değil; şifreni koruman gerekiyorsa master şifresi kullanmalısın.">
+<!ENTITY preselectCurrentSite.label "Açılı siteyi Kayıtlı Şifrelerde önceden seç">
+<!ENTITY preselectCurrentSite.tooltip "Kayıtlı Şifreleri açarken,otomatik olarak siteyi seçip şuanki sekme konumunda siteye girecek.">
+<!ENTITY alwaysShowPasswords.label "Şifreleri her zaman göster">
+<!ENTITY alwaysShowPasswords.tooltip "Seçilirse, Şifre kısmı tüm Kayıtlı Şifre Editörü penceresi açılışında gösterilir.">
+<!ENTITY alwaysPromptForMasterPassword.label "Her zaman ana şifreyi sor">
+<!ENTITY alwaysPromptForMasterPassword.tooltip "Kayıtlı Şifreler görüntülenmek istediğinde ana şifreyi zorunlu kılar. Etkinleşince, her oturumda şifrenin girilmesi gerekir. Kapatıldığında, birçok işlemde şifre sorulmayacaktır.">
+<!ENTITY passwordfield_caption.label "Editör alanıdaki şifre alanı">
+<!ENTITY passwordfield_alwayshide.label "Editörü açarken şifreyi her zaman gizle">
+<!ENTITY passwordfield_alwaysshow.label "Editörü açarken şifreyi her zaman göster">
+<!ENTITY passwordfield_rememberlast.label "Son hali hatırla">
+<!ENTITY passwordfield_rememberlast.tooltip "Pencerenin en son hali nasılsa aynısını gizle veya göster">
+<!ENTITY passwordfield_followspwin.label "Kayıtlı şifreler listesini izle">
+<!ENTITY passwordfield_followspwin.tooltip "Kayıtlı şifreler listesinde sadece şimdiki pencerede görülen şifreleri göster">
diff --git a/locale/tr/pwdedit.dtd b/locale/tr/pwdedit.dtd
new file mode 100644
index 0000000..afc80c7
--- /dev/null
+++ b/locale/tr/pwdedit.dtd
@@ -0,0 +1,36 @@
+<!ENTITY savedpasswordeditor.title "Kayıtlı Şifre Yöneticisi">
+<!ENTITY signontype.label "Tip">
+<!ENTITY type_form.label "Web form">
+<!ENTITY type_form.accesskey "W">
+<!ENTITY type_form.tooltip "Web sayfasındaki ilgili form">
+<!ENTITY type_annotated.label "Ekleme">
+<!ENTITY type_annotated.accesskey "H">
+<!ENTITY type_annotated.tooltip "Giriş kimlik doğrulama bilgileri barındırmak için ek girdiler istiyor (ö.r. HTTP doğrulama)">
+<!ENTITY hostname.label "Host">
+<!ENTITY hostname.tooltip "Şifre içeren Protokol/hostadı (ö.r. http://www.ornek.com)">
+<!ENTITY formSubmitURL.label "Sayfa öneki">
+<!ENTITY formSubmitURL.tooltip "Form gönderme adresinin ekleri">
+<!ENTITY annotation.label "Ek servis">
+<!ENTITY annotation.tooltip "Ek servis giriş için servis kimlik doğruluyor (ö.r. HTTP bölgesi)">
+<!ENTITY username.label "Kullanıcı adı">
+<!ENTITY username.tooltip "Hatırlanacak kullanıcı adı">
+<!ENTITY password.label "Şifre">
+<!ENTITY password.tooltip "Hatırlanacak şifre">
+<!ENTITY usernameField.label "Kullanıcı alan yeri">
+<!ENTITY usernameField.tooltip "Kullanıcı adını uygun forma aktarıcak özellik">
+<!ENTITY passwordField.label "Şifre alan yeri">
+<!ENTITY passwordField.tooltip "Şifreyi uygun forma aktarıcak özellik">
+<!ENTITY showPassword.label "Göster">
+<!ENTITY showPassword.accesskey "S">
+<!ENTITY showPassword.tooltip "Şifre görünürlüğünü değiştir">
+<!ENTITY hidePassword.label "Gizle">
+<!ENTITY hidePassword.accesskey "g">
+<!ENTITY guessfrompage.label "Şimdiki sayfadan tahmin et">
+<!ENTITY guessfrompage.accesskey "T">
+<!ENTITY guessfrompage.tooltip "Sayfadaki giriş formu gibi bu formu doldur">
+<!ENTITY prevform.label "Önceki form">
+<!ENTITY prevform.accesskey "O">
+<!ENTITY prevform.tooltip "Sayfadan geçmiş formu dene">
+<!ENTITY nextform.label "İlerki form">
+<!ENTITY nextform.accesskey "I">
+<!ENTITY nextform.tooltip "Sayfadan ilerki formu dene">
diff --git a/locale/tr/pwdedit.properties b/locale/tr/pwdedit.properties
new file mode 100644
index 0000000..1d4c96a
--- /dev/null
+++ b/locale/tr/pwdedit.properties
@@ -0,0 +1,9 @@
+# TRANSLATORS: \n stands for a line break, and %S is a placeholder
+# for a string to be inserted.
+# SAVED PASSWORD EDITOR DIALOG
+newlogin=Yeni giriş oluşturuluyor
+clonelogin=Giriş kopyalanıyor
+editlogin=Giriş düzenleniyor
+editmultlogin=Çoklu girişler düzenleniyor
+nologinform=Bu sayfada uygun bir giriş bulunamadı!
+multduplogins=Bu çoklu girişlerde gözükecek.Tamamlamak için, en azından bir hostu,önek,http eki yada kullancı adı alanlarını boş bırakıp (olanağına göre) girdiğin satır(lar)ı belirsiz durumda silinmelidir.
diff --git a/locale/tr/pwdmgrOverlay.dtd b/locale/tr/pwdmgrOverlay.dtd
new file mode 100644
index 0000000..106610f
--- /dev/null
+++ b/locale/tr/pwdmgrOverlay.dtd
@@ -0,0 +1,11 @@
+<!-- TRANSLATORS - be aware that these access keys are used in several places:
+     the context menu introduced in Fx 4.0, my menu-button, and as shortcut
+     keys for the whole window. Make sure your choices don't conflict in any of
+     those contexts. 
+-->
+<!ENTITY newentry.label "Yeni">
+<!ENTITY newentry.accesskey "Y">
+<!ENTITY editentry.label "Düzenle">
+<!ENTITY editentry.accesskey "D">
+<!ENTITY cloneentry.label "Çoğalt">
+<!ENTITY cloneentry.accesskey "K">
diff --git a/locale/tr/pwdmgrOverlay.properties b/locale/tr/pwdmgrOverlay.properties
new file mode 100644
index 0000000..aaec5a0
--- /dev/null
+++ b/locale/tr/pwdmgrOverlay.properties
@@ -0,0 +1,4 @@
+# TRANSLATORS: \n stands for a line break, and %S is a placeholder
+# for a string to be inserted.
+# POPUP MESSAGE WHEN ADDING/MODIFYING AN ENTRY FAILS
+badnewentry=Bir hata oluştu:\n  %S\nKopya giriş bilgisi oluşturmayı denedinizmi?
diff --git a/locale/tr/spe.properties b/locale/tr/spe.properties
new file mode 100644
index 0000000..0396154
--- /dev/null
+++ b/locale/tr/spe.properties
@@ -0,0 +1,10 @@
+# TRANSLATORS: \n stands for a line break, and %S is a placeholder
+# for a string to be inserted.
+savedpasswordeditor=Saved Password Editor
+error=Hata
+nologinstoedit=Düzenlenecek oturum yok!
+nologinstodelete=Silinecek oturum yok!
+logininfosaved=Giriş bilgisi kaydedildi
+logininfochanged=Giriş bilgisi değişti
+logininfodeleted=Giriş bilgisi silindi
+failed=İşlem başarısız oldu:\n %S
diff --git a/locale/tr/welcome.dtd b/locale/tr/welcome.dtd
new file mode 100644
index 0000000..e88482d
--- /dev/null
+++ b/locale/tr/welcome.dtd
@@ -0,0 +1,50 @@
+<!-- LOCALE
+
+     Format: language-COUNTRY according to RFC 1766
+     ( http://www.ietf.org/rfc/rfc1766.txt ). COUNTRY is for dialectal
+     variation and is not necessary for locales without such variation. You can
+     probably copy the locale tag of your localized Mozilla application
+     (Firefox, etc.). Examples:
+
+     en-US  - English in US
+     en-GB  - English in Great Britain
+     de-DE  - German in Germany
+     ru     - Russian (no specific country)
+
+-->
+<!ENTITY locale "tr">
+<!-- LAYOUT DIRECTION: "LTR" for left-to-right; "RTL" for right-to-left.
+     Generally, this should follow the direction of your writing system. 
+-->
+<!ENTITY layoutdirection "LTR">
+<!-- WELCOME PAGE
+
+     This needs a little care. There is some embedded markup (sorry about
+     that). Of course, don't translate any text inside tags. The & lt; and
+     & gt; codes produce < and > respectively, but don't reverse them; that
+     will be done automatically for right-to-left text. & quot; produces a
+     double quote character. Please substitute whatever is appropriate in your
+     locale, but if you are editing this file directly, as opposed to using
+     BabelZilla's interface, anything other than <, >, ", ', and & must be in
+     UTF-8 or use numerical entities (e.g. & #x89ab;); named entities other
+     than the ones for those five characters (& lt; & gt; & quot; & apos;
+     & amp;) are NOT defined in this context. Double quote characters must be
+     encoded as & quot; (again, if you are editing directly), since the
+     strings are already double-quote delimited.
+
+-->
+<!ENTITY welcometospe "Kayıtlı Şifre Editörüne Hoşgeldiniz">
+<!-- Paragraph 1, Firefox version -->
+<!ENTITY welcomepara1_fx "Saved Password Editor <a id='addonlink'>kullandığınız için teşekkürler</a>.Düzenleme fonksiyonuna şu şekilde ulaşılıyor, Araçlar>Ayarlar, veya Düzenle>Seçenekler (işletim sisteminize bağlı) Güvenlik paneline tıklayın,sonra Kayıtlı parolalara tıklayın.Kayıtlı Şifrelere kolayca  Araçlar menüsünden  yada (Firefox 4 ve sonrası Win/Linux) program menüsünden ulaşabilirsin. Ayrıca araç çubuğu tuşu kullanılabilir ;  ulaşmak için, Görünüm>Araç çubukları>Özell [...]
+<!-- Paragraph 1, SeaMonkey version -->
+<!-- XXXXX TRANSLATORS: Please pay attention! XXXXX
+     XXXXX SeaMonkey DOES NOT HAVE View > Toolbars > Customize…
+           among other things XXXXX
+     XXXXX Be careful if you copy and paste. XXXXX 
+-->
+<!ENTITY welcomepara1_sm "Saved Password Editor <a id='addonlink'>kullandığınız için teşekkürler</a>.Düzenleme foknsiyonuna şu şekilde ulaşılıyor. Araçlar > Seçenekler, veya Düzenle > Seçenekler (işletim sisteminize bağlı), Gizlilik&Güvenlik menüsünden  Kayıtlı Şifrelere tıklayın. Kayıtlı Şifrelere kolayca Araçlar menüsünden  ulaşabilirsin.Ayrıca araç çubuğu tuşu kullanılabilir; ulaşmak için, Araç çubuğuna sağ tık sonra "Özelleştir…" seçin.Kayıtlı Şifreler şifre eklem [...]
+<!-- Paragraph 2 -->
+<!-- The "span" element here is replaced by "Firefox", "Thunderbird", etc. -->
+<!ENTITY welcomepara2 "Not Kayıtlı Şifrelerin diyalog tabanı <span id='appname'></span> parçasıdır,yukarıda bahsi geçen eklenen fonksiyonlar hariç eklenti tarafından sağlanmıyor.Araç çubuğu sadece rahatlığınız için sağlanmıştır,tahminen eklentinin bazı kullanıcıları bu araca diğerinden daha sık ulaşmak isteyebilir.">
+<!-- Paragraph 3 -->
+<!ENTITY welcomepara3 "Girişler ilgili değişikliği bir web form sayfasınında herhangi bir yere sağ tıklayıp alanları doldurup değiştirebilirsin.">
diff --git a/locale/vi/browserOverlay.dtd b/locale/vi/browserOverlay.dtd
new file mode 100644
index 0000000..91d384c
--- /dev/null
+++ b/locale/vi/browserOverlay.dtd
@@ -0,0 +1,14 @@
+<!-- Open Saved Passwords -->
+<!ENTITY savedpasswords.label "Saved Passwords">
+<!ENTITY savedpasswords.accesskey "v">
+<!ENTITY savedpasswords.tooltip "Mở hộp thoại Saved Passwords">
+<!-- Context menu -->
+<!ENTITY ctx_savelogininfo.label "Lưu trữ thông tin đăng nhập">
+<!ENTITY ctx_savelogininfo.accesskey "L">
+<!ENTITY ctx_savelogininfo.tooltip "Thêm một mật khẩu đã lưu cho mẫu điền này">
+<!ENTITY ctx_editlogininfo.label "Chỉnh sửa thông tin đăng nhập">
+<!ENTITY ctx_editlogininfo.accesskey "C">
+<!ENTITY ctx_editlogininfo.tooltip "Chỉnh sửa mật khẩu cho mẫu này">
+<!ENTITY ctx_deletelogininfo.label "Xóa thông tin đăng nhập">
+<!ENTITY ctx_deletelogininfo.accesskey "X">
+<!ENTITY ctx_deletelogininfo.tooltip "Xóa mật khẩu đã lưu của mẫu này">
diff --git a/locale/vi/prefwindow.dtd b/locale/vi/prefwindow.dtd
new file mode 100644
index 0000000..fbf7b52
--- /dev/null
+++ b/locale/vi/prefwindow.dtd
@@ -0,0 +1,18 @@
+<!ENTITY prefwindow.title "Các thiết đặt Saved Password Editor">
+<!ENTITY displayMenuitem.label "Đặt lệnh tắt trên thanh Công Cụ">
+<!ENTITY displayMenuitem.tooltip "Thêm "Saved Passwords" vào trình đơn Tools và trình đơn Firefox của Windows/Linux để làm lệnh tắt gọi trình quản lý mật khẩu">
+<!ENTITY renameMenuitemTo.label "Đổi tên đường dẫn tắt thành:">
+<!ENTITY renameMenuitemTo.tooltip "Điền gì đó vào đây để gọi đường dẫn tắt khác với "Saved Passwords", nếu bạn muốn những người khác không tò mò xem trộm. Xóa giá trị để trở lại dùng "Saved Passwords". Lưu ý: đây không phải là cách giúp thay thế cho việc tăng cường bảo mật; bạn nên dùng mật khẩu chủ nếu bạn muốn bảo vệ các mật khẩu của mình.">
+<!ENTITY preselectCurrentSite.label "Chọn trước trang hiện tại trong Saved Passwords">
+<!ENTITY preselectCurrentSite.tooltip "Khi mở Saved Passwords, cái này sẽ lập tức chọn và cuộn tới trang đã xem trong chính thẻ hiện tại.">
+<!ENTITY alwaysShowPasswords.label "Luôn hiển thị các mật khẩu">
+<!ENTITY alwaysShowPasswords.tooltip "Nếu được tích, Saved Password Editor sẽ làm cho cột Mật Khẩu hiển thị khi hộp thoại Saved Password mở ra, và hiển thị mật khẩu khi hộp thoại chỉnh sửa mật khẩu được mở.">
+<!ENTITY alwaysPromptForMasterPassword.label "Luôn hỏi mật khẩu chủ">
+<!ENTITY alwaysPromptForMasterPassword.tooltip "Hỏi mật khẩu chủ khi hiển thị các mật khẩu trong Saved Passwords. Nếu bật, sẽ không tránh khỏi việc bị hỏi 2 lần trong mỗi phiên. Nếu tắt, trong phần lớn trường hợp, bạn sẽ không bị hỏi mật khẩu chủ.">
+<!ENTITY passwordfield_caption.label "Hộp mật khẩu trong cửa sổ đổi mật khẩu">
+<!ENTITY passwordfield_alwayshide.label "Luôn ẩn mật khẩu khi mở cửa sổ đổi mật khẩu">
+<!ENTITY passwordfield_alwaysshow.label "Luôn hiện mật khẩu khi mở cửa sổ đổi mật khẩu">
+<!ENTITY passwordfield_rememberlast.label "Nhớ trạng thái lần trước">
+<!ENTITY passwordfield_rememberlast.tooltip "Ẩn hoặc hiện y như cửa sổ được mở lần gần đây nhất">
+<!ENTITY passwordfield_followspwin.label "Danh sách theo đuôi Saved Passwords">
+<!ENTITY passwordfield_followspwin.tooltip "Chỉ hiển thị nếu các mật khẩu hiện đang được hiển thị trong cửa sổ Saved Passwords">
diff --git a/locale/vi/pwdedit.dtd b/locale/vi/pwdedit.dtd
new file mode 100644
index 0000000..f070961
--- /dev/null
+++ b/locale/vi/pwdedit.dtd
@@ -0,0 +1,36 @@
+<!ENTITY savedpasswordeditor.title "Saved Password Editor">
+<!ENTITY signontype.label "Kiểu">
+<!ENTITY type_form.label "Điền mẫu Web">
+<!ENTITY type_form.accesskey "W">
+<!ENTITY type_form.tooltip "Mẫu điền nằm trong một trang web">
+<!ENTITY type_annotated.label "Chú thích">
+<!ENTITY type_annotated.accesskey "C">
+<!ENTITY type_annotated.tooltip "Việc đăng nhập cần một chuỗi, đi kèm với máy chủ để nhận diện dịch vụ (ví dụ: xác thực HTTP)">
+<!ENTITY hostname.label "Máy chủ">
+<!ENTITY hostname.tooltip "Giao thức/tên máy chủ mà mật khẩu được áp dụng (ví dụ: http://www.example.com)">
+<!ENTITY formSubmitURL.label "Nhập tiền tố">
+<!ENTITY formSubmitURL.tooltip "Tiền tố của mẫu địa chỉ đệ trình">
+<!ENTITY annotation.label "Chú thích">
+<!ENTITY annotation.tooltip "Chuỗi phụ trợ nhận diện dịch vụ để xác thực (ví dụ: lĩnh vực HTTP)">
+<!ENTITY username.label "Tên sử dụng">
+<!ENTITY username.tooltip "Tên sử dụng để ghi nhớ">
+<!ENTITY password.label "Mật khẩu">
+<!ENTITY password.tooltip "Mẩu khẩu để ghi nhớ">
+<!ENTITY usernameField.label "Tên của vùng điền Tên sử dụng">
+<!ENTITY usernameField.tooltip "Tên dùng cho vùng điền tên sử dụng thích hợp trong mẫu điền">
+<!ENTITY passwordField.label "Tên của vùng điền Mật Khẩu">
+<!ENTITY passwordField.tooltip "Tên dùng cho vùng điền mật khẩu thích hợp trong mẫu điền">
+<!ENTITY showPassword.label "Hiển thị">
+<!ENTITY showPassword.accesskey "S">
+<!ENTITY showPassword.tooltip "Ẩn/hiện mật khẩu">
+<!ENTITY hidePassword.label "Ẩn">
+<!ENTITY hidePassword.accesskey "n">
+<!ENTITY guessfrompage.label "Đoán từ trang hiện tại">
+<!ENTITY guessfrompage.accesskey "G">
+<!ENTITY guessfrompage.tooltip "Điền mẫu này dựa trên mẫu điền đăng nhập phù hợp trên trang hiện tại">
+<!ENTITY prevform.label "Mẫu điền trước">
+<!ENTITY prevform.accesskey "P">
+<!ENTITY prevform.tooltip "Thử mẫu điền trước từ trang">
+<!ENTITY nextform.label "Mẫu điền sau">
+<!ENTITY nextform.accesskey "N">
+<!ENTITY nextform.tooltip "Thử mẫu điền sau từ trang">
diff --git a/locale/vi/pwdedit.properties b/locale/vi/pwdedit.properties
new file mode 100644
index 0000000..bdf8acb
--- /dev/null
+++ b/locale/vi/pwdedit.properties
@@ -0,0 +1,9 @@
+# TRANSLATORS: \n stands for a line break, and %S is a placeholder
+# for a string to be inserted.
+# SAVED PASSWORD EDITOR DIALOG
+newlogin=Tạo đăng nhập mới
+clonelogin=Đang tạo bản sao đăng nhập
+editlogin=Sửa đăng nhập
+editmultlogin=Sửa nhiều đăng nhập
+nologinform=Không có mẫu điền thích hợp trên trang hiện tại!
+multduplogins=Sẽ gây ra trùng lặp trong các lần đăng nhập. Để hoàn tất việc chỉnh sửa, bạn phải để ít nhất một máy chủ, tiền tố, HTTP hoặc tên người dùng (khi áp dụng) trong trạng thái không xác định, bằng cách xóa bỏ các giá trị mà bạn vừa gõ vào.
diff --git a/locale/vi/pwdmgrOverlay.dtd b/locale/vi/pwdmgrOverlay.dtd
new file mode 100644
index 0000000..038de41
--- /dev/null
+++ b/locale/vi/pwdmgrOverlay.dtd
@@ -0,0 +1,11 @@
+<!-- TRANSLATORS - be aware that these access keys are used in several places:
+     the context menu introduced in Fx 4.0, my menu-button, and as shortcut
+     keys for the whole window. Make sure your choices don't conflict in any of
+     those contexts. 
+-->
+<!ENTITY newentry.label "Tạo mới">
+<!ENTITY newentry.accesskey "N">
+<!ENTITY editentry.label "Sửa">
+<!ENTITY editentry.accesskey "E">
+<!ENTITY cloneentry.label "Nhân Bản">
+<!ENTITY cloneentry.accesskey "l">
diff --git a/locale/vi/pwdmgrOverlay.properties b/locale/vi/pwdmgrOverlay.properties
new file mode 100644
index 0000000..bfe095e
--- /dev/null
+++ b/locale/vi/pwdmgrOverlay.properties
@@ -0,0 +1,4 @@
+# TRANSLATORS: \n stands for a line break, and %S is a placeholder
+# for a string to be inserted.
+# POPUP MESSAGE WHEN ADDING/MODIFYING AN ENTRY FAILS
+badnewentry=Bị lỗi :n %SnBạn đã thử tạo một mục đăng nhập trùng lặp à?
diff --git a/locale/vi/spe.properties b/locale/vi/spe.properties
new file mode 100644
index 0000000..fa7a93e
--- /dev/null
+++ b/locale/vi/spe.properties
@@ -0,0 +1,10 @@
+# TRANSLATORS: \n stands for a line break, and %S is a placeholder
+# for a string to be inserted.
+savedpasswordeditor=Saved Password Editor
+error=Lỗi
+nologinstoedit=Không có đăng nhập nào để chỉnh sửa cả!
+nologinstodelete=Không có đăng nhập nào để xóa cả!
+logininfosaved=Đã lưu thông tin đăng nhập
+logininfochanged=Đã thay đổi thông tin đăng nhập
+logininfodeleted=Đã xóa thông tin đăng nhập
+failed=Lỗi thi hành lệnh:\n %S
diff --git a/locale/vi/welcome.dtd b/locale/vi/welcome.dtd
new file mode 100644
index 0000000..f243f4d
--- /dev/null
+++ b/locale/vi/welcome.dtd
@@ -0,0 +1,50 @@
+<!-- LOCALE
+
+     Format: language-COUNTRY according to RFC 1766
+     ( http://www.ietf.org/rfc/rfc1766.txt ). COUNTRY is for dialectal
+     variation and is not necessary for locales without such variation. You can
+     probably copy the locale tag of your localized Mozilla application
+     (Firefox, etc.). Examples:
+
+     en-US  - English in US
+     en-GB  - English in Great Britain
+     de-DE  - German in Germany
+     ru     - Russian (no specific country)
+
+-->
+<!ENTITY locale "vi">
+<!-- LAYOUT DIRECTION: "LTR" for left-to-right; "RTL" for right-to-left.
+     Generally, this should follow the direction of your writing system. 
+-->
+<!ENTITY layoutdirection "LTR">
+<!-- WELCOME PAGE
+
+     This needs a little care. There is some embedded markup (sorry about
+     that). Of course, don't translate any text inside tags. The & lt; and
+     & gt; codes produce < and > respectively, but don't reverse them; that
+     will be done automatically for right-to-left text. & quot; produces a
+     double quote character. Please substitute whatever is appropriate in your
+     locale, but if you are editing this file directly, as opposed to using
+     BabelZilla's interface, anything other than <, >, ", ', and & must be in
+     UTF-8 or use numerical entities (e.g. & #x89ab;); named entities other
+     than the ones for those five characters (& lt; & gt; & quot; & apos;
+     & amp;) are NOT defined in this context. Double quote characters must be
+     encoded as & quot; (again, if you are editing directly), since the
+     strings are already double-quote delimited.
+
+-->
+<!ENTITY welcometospe "Chào mừng bạn đến với Saved Password Editor">
+<!-- Paragraph 1, Firefox version -->
+<!ENTITY welcomepara1_fx "Cảm ơn bạn đã sử dụng <a id='addonlink'>Saved Password Editor</a>. Bạn có thể sử dụng chức năng chỉnh sửa mật khẩu bằng cách vào Tools > Options, hoặc Edit > Preferences (tùy thuộc vào hệ điều hành bạn đang dùng), chọn thẻ "Security" sau đó ấn nút "Saved Passwords…". Đơn giản hơn, bạn còn có thể truy cập vào Saved Passwords từ trình đơn Tools hoặc từ trình đơn Firefox (từ phiên bản Firefox 4 trở đi trên Windows và Linux). Có sẵn một tha [...]
+<!-- Paragraph 1, SeaMonkey version -->
+<!-- XXXXX TRANSLATORS: Please pay attention! XXXXX
+     XXXXX SeaMonkey DOES NOT HAVE View > Toolbars > Customize…
+           among other things XXXXX
+     XXXXX Be careful if you copy and paste. XXXXX 
+-->
+<!ENTITY welcomepara1_sm "Cảm ơn bạn đã sử dụng <a id='addonlink'>Saved Password Editor</a>. Bạn có thể sử dụng chức năng chỉnh sửa bằng cách vào Tools > Options, hoặc Edit > Preferences (tùy thuộc vào hệ điều hành bạn đang dùng), tới thẻ "Passwords" nằm ở thẻ "Privacy & Security", và ấn nút "Manage Stored Passwords". Đơn giản hơn, bạn còn có thể truy cập vào Saved Passwords từ trình đơn Tools. Có sẵn một thanh chứa các nút công cụ để giúp bạn làm  [...]
+<!-- Paragraph 2 -->
+<!-- The "span" element here is replaced by "Firefox", "Thunderbird", etc. -->
+<!ENTITY welcomepara2 "Lưu ý rằng hộp thoại Saved Passwords là một thành phần cơ bản của <span id='appname'></span>, và hiện không được cung cấp bởi tiện ích này, ngoại trừ các chức năng phụ được nêu ở trên. Nút Công Cụ được cung cấp nhằm giúp những ai cần truy cập nhiều vào hộp thoại quản lý mật khẩu làm việc thuận lợi hơn.">
+<!-- Paragraph 3 -->
+<!ENTITY welcomepara3 "Bạn còn có thể thực hiện việc đăng nhập kết hợp với một mẫu điền web bằng cách nhấp chuột phải lên bất cứ vùng trống nào của nó và chọn lệnh.">
diff --git a/locale/zh-CN/browserOverlay.dtd b/locale/zh-CN/browserOverlay.dtd
new file mode 100644
index 0000000..9a7fe85
--- /dev/null
+++ b/locale/zh-CN/browserOverlay.dtd
@@ -0,0 +1,14 @@
+<!-- Open Saved Passwords -->
+<!ENTITY savedpasswords.label "已保存密码">
+<!ENTITY savedpasswords.accesskey "v">
+<!ENTITY savedpasswords.tooltip "打开已保存密码对话">
+<!-- Context menu -->
+<!ENTITY ctx_savelogininfo.label "保存登录信息">
+<!ENTITY ctx_savelogininfo.accesskey "S">
+<!ENTITY ctx_savelogininfo.tooltip "为此表单添加已保存密码">
+<!ENTITY ctx_editlogininfo.label "编辑登录信息">
+<!ENTITY ctx_editlogininfo.accesskey "E">
+<!ENTITY ctx_editlogininfo.tooltip "为此表单编辑已保存密码">
+<!ENTITY ctx_deletelogininfo.label "删除登录信息">
+<!ENTITY ctx_deletelogininfo.accesskey "D">
+<!ENTITY ctx_deletelogininfo.tooltip "为此表单删除已保存密码">
diff --git a/locale/zh-CN/prefwindow.dtd b/locale/zh-CN/prefwindow.dtd
new file mode 100644
index 0000000..66c67aa
--- /dev/null
+++ b/locale/zh-CN/prefwindow.dtd
@@ -0,0 +1,18 @@
+<!ENTITY prefwindow.title "已保存密码编辑器首选项">
+<!ENTITY displayMenuitem.label "在工具菜单中添加快捷方式">
+<!ENTITY displayMenuitem.tooltip "在工具菜单和 Windows/Linux 下的 Firefox 菜单中添加“已保存密码”项,作为密码管理器的快捷方式。">
+<!ENTITY renameMenuitemTo.label "更改快捷方式名称为:">
+<!ENTITY renameMenuitemTo.tooltip "在此输入文字更改快捷方式名为“已保存密码”之外的其它名字,以防无关者轻易发现。清空此处文本继续使用“已保存密码”为名称。警告:这并不能替代适当的安全措施,如果你需要保护你的密码,需要使用主密码。">
+<!ENTITY preselectCurrentSite.label "在已保存密码中预先选中当前站点">
+<!ENTITY preselectCurrentSite.tooltip "打开已保存密码时,立即选中并滚动到当前浏览器标签中浏览的站点。">
+<!ENTITY alwaysShowPasswords.label "总是显示密码">
+<!ENTITY alwaysShowPasswords.tooltip "选中此项后,当已保存密码对话打开时,已保存密码编辑器会显示密码列,当编辑器对话打开时,会显示密码。">
+<!ENTITY alwaysPromptForMasterPassword.label "总是提示输入主密码">
+<!ENTITY alwaysPromptForMasterPassword.tooltip "在已保存密码中显示密码时提示输入主密码。启用后,每次会话至少会触发一次双重提示。禁用后,大部分情况下你都不会被提示输入主密码。">
+<!ENTITY passwordfield_caption.label "编辑器窗口中的密码域">
+<!ENTITY passwordfield_alwayshide.label "打开编辑器窗口时总是隐藏密码">
+<!ENTITY passwordfield_alwaysshow.label "打开编辑器窗口时总是显示密码">
+<!ENTITY passwordfield_rememberlast.label "记住上次的状态">
+<!ENTITY passwordfield_rememberlast.tooltip "与上次打开的窗口时一致">
+<!ENTITY passwordfield_followspwin.label "与已保存密码列表一致">
+<!ENTITY passwordfield_followspwin.tooltip "显示密码当且仅当密码在已保存密码窗口中显示时">
diff --git a/locale/zh-CN/pwdedit.dtd b/locale/zh-CN/pwdedit.dtd
new file mode 100644
index 0000000..5ea0c89
--- /dev/null
+++ b/locale/zh-CN/pwdedit.dtd
@@ -0,0 +1,36 @@
+<!ENTITY savedpasswordeditor.title "已保存密码编辑器">
+<!ENTITY signontype.label "类型">
+<!ENTITY type_form.label "网页表单">
+<!ENTITY type_form.accesskey "W">
+<!ENTITY type_form.tooltip "网页中包含的表单">
+<!ENTITY type_annotated.label "注释">
+<!ENTITY type_annotated.accesskey "A">
+<!ENTITY type_annotated.tooltip "要求向主机发送附加字符串以识别服务的登录(例如 HTTP 身份验证)">
+<!ENTITY hostname.label "主机">
+<!ENTITY hostname.tooltip "密码应用到的协议/主机(例如 http://www.example.com)">
+<!ENTITY formSubmitURL.label "提交前缀">
+<!ENTITY formSubmitURL.tooltip "表单提交地址的前缀">
+<!ENTITY annotation.label "注释">
+<!ENTITY annotation.tooltip "用于识别身份验证的服务的附加字符串(例如 HTTP realm)">
+<!ENTITY username.label "用户名">
+<!ENTITY username.tooltip "要记住的用户名">
+<!ENTITY password.label "密码">
+<!ENTITY password.tooltip "要记住的密码">
+<!ENTITY usernameField.label "用户名域名称">
+<!ENTITY usernameField.tooltip "表单中用户域的 name 属性">
+<!ENTITY passwordField.label "密码字段名称">
+<!ENTITY passwordField.tooltip "表单中密码域的 name 属性">
+<!ENTITY showPassword.label "显示">
+<!ENTITY showPassword.accesskey "S">
+<!ENTITY showPassword.tooltip "切换密码的可见性">
+<!ENTITY hidePassword.label "隐藏">
+<!ENTITY hidePassword.accesskey "H">
+<!ENTITY guessfrompage.label "从当前页猜测">
+<!ENTITY guessfrompage.accesskey "G">
+<!ENTITY guessfrompage.tooltip "使用当前页面中最可能的登录表单填写此表">
+<!ENTITY prevform.label "上一个表单">
+<!ENTITY prevform.accesskey "P">
+<!ENTITY prevform.tooltip "尝试页面的上一个表单">
+<!ENTITY nextform.label "下一个表单">
+<!ENTITY nextform.accesskey "N">
+<!ENTITY nextform.tooltip "尝试页面的下一个表单">
diff --git a/locale/zh-CN/pwdedit.properties b/locale/zh-CN/pwdedit.properties
new file mode 100644
index 0000000..9bd3ecf
--- /dev/null
+++ b/locale/zh-CN/pwdedit.properties
@@ -0,0 +1,9 @@
+# TRANSLATORS: \n stands for a line break, and %S is a placeholder
+# for a string to be inserted.
+# SAVED PASSWORD EDITOR DIALOG
+newlogin=创建新的登录
+clonelogin=克隆登录
+editlogin=编辑登录
+editmultlogin=编辑多个登陆项
+nologinform=当前页面中没有找到适合保存的登录表单!
+multduplogins=这将导致重复登录。要完成编辑,你必须通过删除你输入的值,保证至少一个主机、提交前缀、注释或者用户名域(适合的)为不确定状态。
diff --git a/locale/zh-CN/pwdmgrOverlay.dtd b/locale/zh-CN/pwdmgrOverlay.dtd
new file mode 100644
index 0000000..4741d85
--- /dev/null
+++ b/locale/zh-CN/pwdmgrOverlay.dtd
@@ -0,0 +1,14 @@
+<!-- TRANSLATORS - be aware that these access keys are used in several places:
+     the context menu introduced in Fx 4.0, my menu-button, and as shortcut
+     keys for the whole window. Make sure your choices don't conflict in any of
+     those contexts. 
+
+
+
+-->
+<!ENTITY newentry.label "新建">
+<!ENTITY newentry.accesskey "N">
+<!ENTITY editentry.label "编辑">
+<!ENTITY editentry.accesskey "E">
+<!ENTITY cloneentry.label "克隆">
+<!ENTITY cloneentry.accesskey "L">
diff --git a/locale/zh-CN/pwdmgrOverlay.properties b/locale/zh-CN/pwdmgrOverlay.properties
new file mode 100644
index 0000000..3b329cb
--- /dev/null
+++ b/locale/zh-CN/pwdmgrOverlay.properties
@@ -0,0 +1,4 @@
+# TRANSLATORS: \n stands for a line break, and %S is a placeholder
+# for a string to be inserted.
+# POPUP MESSAGE WHEN ADDING/MODIFYING AN ENTRY FAILS
+badnewentry=出现错误:\n  %S\n  你是否正在尝试创建重复的登录?
diff --git a/locale/zh-CN/spe.properties b/locale/zh-CN/spe.properties
new file mode 100644
index 0000000..fd5e5f1
--- /dev/null
+++ b/locale/zh-CN/spe.properties
@@ -0,0 +1,10 @@
+# TRANSLATORS: \n stands for a line break, and %S is a placeholder
+# for a string to be inserted.
+savedpasswordeditor=已保存密码编辑器
+error=错误
+nologinstoedit=没有可编辑的登录!
+nologinstodelete=没有可删除的登录!
+logininfosaved=登录信息已保存
+logininfochanged=登录信息已更改
+logininfodeleted=登录信息已删除
+failed=操作失败:\n  %S
diff --git a/locale/zh-CN/welcome.dtd b/locale/zh-CN/welcome.dtd
new file mode 100644
index 0000000..45c69ef
--- /dev/null
+++ b/locale/zh-CN/welcome.dtd
@@ -0,0 +1,62 @@
+<!-- LOCALE
+
+     Format: language-COUNTRY according to RFC 1766
+     ( http://www.ietf.org/rfc/rfc1766.txt ). COUNTRY is for dialectal
+     variation and is not necessary for locales without such variation. You can
+     probably copy the locale tag of your localized Mozilla application
+     (Firefox, etc.). Examples:
+
+     en-US  - English in US
+     en-GB  - English in Great Britain
+     de-DE  - German in Germany
+     ru     - Russian (no specific country)
+
+
+
+
+-->
+<!ENTITY locale "zh-CN">
+<!-- LAYOUT DIRECTION: "LTR" for left-to-right; "RTL" for right-to-left.
+     Generally, this should follow the direction of your writing system. 
+
+
+
+-->
+<!ENTITY layoutdirection "LTR">
+<!-- WELCOME PAGE
+
+     This needs a little care. There is some embedded markup (sorry about
+     that). Of course, don't translate any text inside tags. The & lt; and
+     & gt; codes produce < and > respectively, but don't reverse them; that
+     will be done automatically for right-to-left text. & quot; produces a
+     double quote character. Please substitute whatever is appropriate in your
+     locale, but if you are editing this file directly, as opposed to using
+     BabelZilla's interface, anything other than <, >, ", ', and & must be in
+     UTF-8 or use numerical entities (e.g. & #x89ab;); named entities other
+     than the ones for those five characters (& lt; & gt; & quot; & apos;
+     & amp;) are NOT defined in this context. Double quote characters must be
+     encoded as & quot; (again, if you are editing directly), since the
+     strings are already double-quote delimited.
+
+
+
+
+-->
+<!ENTITY welcometospe "欢迎使用已保存密码编辑器">
+<!-- Paragraph 1, Firefox version -->
+<!ENTITY welcomepara1_fx "感谢您使用<a id='addonlink'>已保存密码编辑器</a>!要使用编辑功能,请打开工具 > 选项 或者 编辑 > 首选项(依操作系统而定),选择“安全”面板,点击“已保存密码…”按钮。也可以从工具菜单或 Firefox 菜单(Windows 或 Linux 下的 Firefox 4 及以后版本)快速打开已保存密码编辑器。为了方便使用,您可以添加一个工具栏按钮;选择 查看 > 工具栏 > 定制...,或者右键点击工具栏并选择“定制...”即可找到。已保存密码对话框现已在菜单按钮和上下文菜单中包含了添加和编辑密码的命令。">
+<!-- Paragraph 1, SeaMonkey version -->
+<!-- XXXXX TRANSLATORS: Please pay attention! XXXXX
+     XXXXX SeaMonkey DOES NOT HAVE View > Toolbars > Customize…
+           among other things XXXXX
+     XXXXX Be careful if you copy and paste. XXXXX 
+
+
+
+-->
+<!ENTITY welcomepara1_sm "感谢您使用<a id='addonlink'>已保存密码编辑器</a>!要使用编辑功能,请打开工具 > 选项 或者 编辑 > 首选项(依操作系统而定),导航至“隐私 & 安全”下的“密码”面板,点击“管理保存的密码”按钮。也可以从工具菜单中快速打开已保存密码。为了方便使用,您可以添加一个工具栏按钮;右键点击工具栏并选择“定制...”即可。弹出的对话框中现在新包含了“编辑”和“新建”按钮。已保存密码对话框现已在菜单按钮和上下文菜单中包含了添加和编辑密码的命令。">
+<!-- Paragraph 2 -->
+<!-- The "span" element here is replaced by "Firefox", "Thunderbird", etc. -->
+<!ENTITY welcomepara2 "请注意“已保存密码”对话框是 <span id='appname'/> 的一个基本组件,除了上面提到的功能之外,其它功能并非本扩展提供。工具栏快捷按钮也只是为方便用户而添加的,因为本扩展的某些用户可能会更频繁地使用已保存密码对话。">
+<!-- Paragraph 3 -->
+<!ENTITY welcomepara3 "您也可以操纵某个特定的网页表单的登录信息,直接在表单的任意域上点击右键并选择动作即可。">
diff --git a/locale/zh-TW/browserOverlay.dtd b/locale/zh-TW/browserOverlay.dtd
new file mode 100644
index 0000000..f861783
--- /dev/null
+++ b/locale/zh-TW/browserOverlay.dtd
@@ -0,0 +1,14 @@
+<!-- Open Saved Passwords -->
+<!ENTITY savedpasswords.label "已存密碼">
+<!ENTITY savedpasswords.accesskey "v">
+<!ENTITY savedpasswords.tooltip "開啟密碼管理員">
+<!-- Context menu -->
+<!ENTITY ctx_savelogininfo.label "儲存登入資訊">
+<!ENTITY ctx_savelogininfo.accesskey "S">
+<!ENTITY ctx_savelogininfo.tooltip "新增一組對應此表單的已存密碼">
+<!ENTITY ctx_editlogininfo.label "編輯登入資訊">
+<!ENTITY ctx_editlogininfo.accesskey "E">
+<!ENTITY ctx_editlogininfo.tooltip "編輯一組對應此表單的已存密碼">
+<!ENTITY ctx_deletelogininfo.label "刪除登入資訊">
+<!ENTITY ctx_deletelogininfo.accesskey "D">
+<!ENTITY ctx_deletelogininfo.tooltip "刪除一組對應此表單的已存密碼">
diff --git a/locale/zh-TW/prefwindow.dtd b/locale/zh-TW/prefwindow.dtd
new file mode 100644
index 0000000..f49ebfd
--- /dev/null
+++ b/locale/zh-TW/prefwindow.dtd
@@ -0,0 +1,18 @@
+<!ENTITY prefwindow.title "Saved Password Editor 偏好設定">
+<!ENTITY displayMenuitem.label "在選單內加入捷徑">
+<!ENTITY displayMenuitem.tooltip "將「已存密碼」加入工具選單及 Windows/Linux 程式功能表作為密碼管理員的捷徑">
+<!ENTITY renameMenuitemTo.label "重新命名捷徑:">
+<!ENTITY renameMenuitemTo.tooltip "若您想讓預設的「已存密碼」看起來低調一點,請在此輸入自訂的名稱。清空本欄位會使捷徑名還原為「已存密碼」。請注意:本功能無法確保安全性,若您感到有必要保護好自己的密碼,請使用主控密碼。">
+<!ENTITY preselectCurrentSite.label "在已存密碼視窗中預選目前網頁">
+<!ENTITY preselectCurrentSite.tooltip "開啟已存密碼視窗時,登入資料清單會直接選定並捲動到瀏覽器分頁當前的網站。">
+<!ENTITY alwaysShowPasswords.label "總是顯示密碼">
+<!ENTITY alwaysShowPasswords.tooltip "勾選後,Saved Password Editor 會強制顯示密碼管理員中的密碼欄,編輯密碼視窗中的密碼也會顯示為明碼。">
+<!ENTITY alwaysPromptForMasterPassword.label "總是要求主控密碼">
+<!ENTITY alwaysPromptForMasterPassword.tooltip "在密碼管理員中顯示密碼之前,先提示輸入主控密碼。啟用這個選項後,必然會導致每個瀏覽階段最少出現一次重複提示。若停用此選項,大部分情況都不會提示您輸入主控密碼。">
+<!ENTITY passwordfield_caption.label "編輯視窗中的密碼欄位">
+<!ENTITY passwordfield_alwayshide.label "開啟編輯視窗時總是隱藏密碼">
+<!ENTITY passwordfield_alwaysshow.label "開啟編輯視窗時總是顯示密碼">
+<!ENTITY passwordfield_rememberlast.label "記住上次的狀態">
+<!ENTITY passwordfield_rememberlast.tooltip "顯示或隱藏沿用上次視窗開始時的狀態">
+<!ENTITY passwordfield_followspwin.label "沿用已存密碼清單狀態">
+<!ENTITY passwordfield_followspwin.tooltip "只在密碼管理員已設定為顯示密碼時才會顯示">
diff --git a/locale/zh-TW/pwdedit.dtd b/locale/zh-TW/pwdedit.dtd
new file mode 100644
index 0000000..4900eac
--- /dev/null
+++ b/locale/zh-TW/pwdedit.dtd
@@ -0,0 +1,36 @@
+<!ENTITY savedpasswordeditor.title "Saved Password Editor">
+<!ENTITY signontype.label "類型">
+<!ENTITY type_form.label "網頁表單">
+<!ENTITY type_form.accesskey "W">
+<!ENTITY type_form.tooltip "網頁中的表單">
+<!ENTITY type_annotated.label "註釋">
+<!ENTITY type_annotated.accesskey "A">
+<!ENTITY type_annotated.tooltip "此登入類型需要一組字串使主機能夠辨識伺服器(例:HTTP authentication)">
+<!ENTITY hostname.label "主機(Host)">
+<!ENTITY hostname.tooltip "密碼要套用的協定/主機名稱(例:http://www.example.com)">
+<!ENTITY formSubmitURL.label "提交前置詞(Prefix)">
+<!ENTITY formSubmitURL.tooltip "表單送出目標位址的前置詞">
+<!ENTITY annotation.label "註釋">
+<!ENTITY annotation.tooltip "以附加的字串辨識要認證的伺服器(例:HTTP realm)">
+<!ENTITY username.label "使用者名稱">
+<!ENTITY username.tooltip "要記憶的使用者名稱">
+<!ENTITY password.label "密碼">
+<!ENTITY password.tooltip "要記憶的密碼">
+<!ENTITY usernameField.label "帳號欄位名稱">
+<!ENTITY usernameField.tooltip "表單中對應使用者名稱欄位的NAME屬性">
+<!ENTITY passwordField.label "密碼欄位名稱">
+<!ENTITY passwordField.tooltip "表單中對應密碼欄位的NAME屬性">
+<!ENTITY showPassword.label "顯示">
+<!ENTITY showPassword.accesskey "S">
+<!ENTITY showPassword.tooltip "切換密碼可見性">
+<!ENTITY hidePassword.label "隱藏">
+<!ENTITY hidePassword.accesskey "H">
+<!ENTITY guessfrompage.label "由目前頁面推測">
+<!ENTITY guessfrompage.accesskey "G">
+<!ENTITY guessfrompage.tooltip "以目前頁面上相似的登入表單為基準填寫此表單">
+<!ENTITY prevform.label "前一欄位">
+<!ENTITY prevform.accesskey "P">
+<!ENTITY prevform.tooltip "嘗試頁面中的前一個欄位">
+<!ENTITY nextform.label "下一欄位">
+<!ENTITY nextform.accesskey "N">
+<!ENTITY nextform.tooltip "嘗試頁面中的下一個欄位">
diff --git a/locale/zh-TW/pwdedit.properties b/locale/zh-TW/pwdedit.properties
new file mode 100644
index 0000000..2bb292d
--- /dev/null
+++ b/locale/zh-TW/pwdedit.properties
@@ -0,0 +1,9 @@
+# TRANSLATORS: \n stands for a line break, and %S is a placeholder
+# for a string to be inserted.
+# SAVED PASSWORD EDITOR DIALOG
+newlogin=建立新登入資訊
+clonelogin=複製登入資訊
+editlogin=編輯登入資訊
+editmultlogin=編輯多重登入
+nologinform=目前頁面上找不到適用的登入表單!
+multduplogins=這麼做會產生重複的登入資料。為了完成編輯,您需將主機、提交前置詞、HTTP驗證或使用者名稱(可適用)等欄位中至少一項的已輸入內容清除,使欄位保留在未確定的狀態。
diff --git a/locale/zh-TW/pwdmgrOverlay.dtd b/locale/zh-TW/pwdmgrOverlay.dtd
new file mode 100644
index 0000000..55ea103
--- /dev/null
+++ b/locale/zh-TW/pwdmgrOverlay.dtd
@@ -0,0 +1,11 @@
+<!-- TRANSLATORS - be aware that these access keys are used in several places:
+     the context menu introduced in Fx 4.0, my menu-button, and as shortcut
+     keys for the whole window. Make sure your choices don't conflict in any of
+     those contexts. 
+-->
+<!ENTITY newentry.label "新增">
+<!ENTITY newentry.accesskey "N">
+<!ENTITY editentry.label "編輯">
+<!ENTITY editentry.accesskey "E">
+<!ENTITY cloneentry.label "複製">
+<!ENTITY cloneentry.accesskey "l">
diff --git a/locale/zh-TW/pwdmgrOverlay.properties b/locale/zh-TW/pwdmgrOverlay.properties
new file mode 100644
index 0000000..47f301d
--- /dev/null
+++ b/locale/zh-TW/pwdmgrOverlay.properties
@@ -0,0 +1,4 @@
+# TRANSLATORS: \n stands for a line break, and %S is a placeholder
+# for a string to be inserted.
+# POPUP MESSAGE WHEN ADDING/MODIFYING AN ENTRY FAILS
+badnewentry=發生錯誤:n  %Sn您是否試圖建立重複的登入項目?
diff --git a/locale/zh-TW/spe.properties b/locale/zh-TW/spe.properties
new file mode 100644
index 0000000..09eaf94
--- /dev/null
+++ b/locale/zh-TW/spe.properties
@@ -0,0 +1,10 @@
+# TRANSLATORS: \n stands for a line break, and %S is a placeholder
+# for a string to be inserted.
+savedpasswordeditor=Saved Password Editor
+error=錯誤
+nologinstoedit=沒有登入資料可供編輯!
+nologinstodelete=沒有登入資料可供刪除!
+logininfosaved=登入資料已儲存
+logininfochanged=登入資料已變更
+logininfodeleted=登入資料已刪除
+failed=操作失敗:\n  %S
diff --git a/locale/zh-TW/welcome.dtd b/locale/zh-TW/welcome.dtd
new file mode 100644
index 0000000..9d82c2b
--- /dev/null
+++ b/locale/zh-TW/welcome.dtd
@@ -0,0 +1,50 @@
+<!-- LOCALE
+
+     Format: language-COUNTRY according to RFC 1766
+     ( http://www.ietf.org/rfc/rfc1766.txt ). COUNTRY is for dialectal
+     variation and is not necessary for locales without such variation. You can
+     probably copy the locale tag of your localized Mozilla application
+     (Firefox, etc.). Examples:
+
+     en-US  - English in US
+     en-GB  - English in Great Britain
+     de-DE  - German in Germany
+     ru     - Russian (no specific country)
+
+-->
+<!ENTITY locale "zh-TW">
+<!-- LAYOUT DIRECTION: "LTR" for left-to-right; "RTL" for right-to-left.
+     Generally, this should follow the direction of your writing system. 
+-->
+<!ENTITY layoutdirection "LTR">
+<!-- WELCOME PAGE
+
+     This needs a little care. There is some embedded markup (sorry about
+     that). Of course, don't translate any text inside tags. The & lt; and
+     & gt; codes produce < and > respectively, but don't reverse them; that
+     will be done automatically for right-to-left text. & quot; produces a
+     double quote character. Please substitute whatever is appropriate in your
+     locale, but if you are editing this file directly, as opposed to using
+     BabelZilla's interface, anything other than <, >, ", ', and & must be in
+     UTF-8 or use numerical entities (e.g. & #x89ab;); named entities other
+     than the ones for those five characters (& lt; & gt; & quot; & apos;
+     & amp;) are NOT defined in this context. Double quote characters must be
+     encoded as & quot; (again, if you are editing directly), since the
+     strings are already double-quote delimited.
+
+-->
+<!ENTITY welcometospe "歡迎使用 Saved Password Editor">
+<!-- Paragraph 1, Firefox version -->
+<!ENTITY welcomepara1_fx "感謝您使用 <a id='addonlink'>Saved Password Editor</a>。您可以從工具 > 選項、或者編輯 > 偏好設定(依作業系統而定),選擇「安全」面板後點選「已存密碼…」按鈕來使用編輯功能。您也能從工具選單或(在 Windows與 Linux 系統的 Firefox 4)應用程式選單輕鬆叫出已存密碼。為了方便起見,從檢視 > 工具列 > 自訂…,或者在工具列上按右鍵選擇「自訂…」,還能找到工具列按鈕。密碼管理員視窗已經加入了能夠新增或編輯密碼的選單按鈕,而在 Firefox 4.0 版本,編輯視窗的右鍵功能表中也有「編輯」和「複製」的指令。">
+<!-- Paragraph 1, SeaMonkey version -->
+<!-- XXXXX TRANSLATORS: Please pay attention! XXXXX
+     XXXXX SeaMonkey DOES NOT HAVE View > Toolbars > Customize…
+           among other things XXXXX
+     XXXXX Be careful if you copy and paste. XXXXX 
+-->
+<!ENTITY welcomepara1_sm "感謝您使用 <a id='addonlink'>Saved Password Editor</a>。您可以從 Tools > Options、或者 Edit > Preferences(依作業系統而定),移至 "Privacy & Security" 分類下的「Passwords」面板後點選「Manage Stored Passwords」按鈕來使用編輯功能;從工具選單也能輕鬆叫出已存密碼。為方便起見,在工具列上按右鍵選擇「Customize…」還能找到工具列按鈕。密碼管理員視窗已經加上能夠新增或編輯密碼的選單按鈕了。">
+<!-- Paragraph 2 -->
+<!-- The "span" element here is replaced by "Firefox", "Thunderbird", etc. -->
+<!ENTITY welcomepara2 "請注意,已存密碼的對話視窗是 <span id='appname'></span> 的基本元件,由本擴充套件提供的僅有前述的選單按鈕。工具列按鈕則是預期本套件的部份使用者需要開啟密碼管理員的次數可能比想像還頻繁,為便於使用而提供。">
+<!-- Paragraph 3 -->
+<!ENTITY welcomepara3 "您也可以將登入資料與任一特定的網頁表單設為關聯,只要以右鍵點選表單的任意欄位並選擇動作即可。">
diff --git a/skin/indef.png b/skin/indef.png
new file mode 100644
index 0000000..063821a
Binary files /dev/null and b/skin/indef.png differ
diff --git a/skin/key16.png b/skin/key16.png
new file mode 100644
index 0000000..8f4a056
Binary files /dev/null and b/skin/key16.png differ
diff --git a/skin/key19.png b/skin/key19.png
new file mode 100644
index 0000000..893a10f
Binary files /dev/null and b/skin/key19.png differ
diff --git a/skin/key24.png b/skin/key24.png
new file mode 100644
index 0000000..c82443b
Binary files /dev/null and b/skin/key24.png differ
diff --git a/skin/key29.png b/skin/key29.png
new file mode 100644
index 0000000..4e4546e
Binary files /dev/null and b/skin/key29.png differ
diff --git a/skin/key32.png b/skin/key32.png
new file mode 100644
index 0000000..c45a988
Binary files /dev/null and b/skin/key32.png differ
diff --git a/skin/key64.png b/skin/key64.png
new file mode 100644
index 0000000..d142e06
Binary files /dev/null and b/skin/key64.png differ
diff --git a/skin/overlay-sm.css b/skin/overlay-sm.css
new file mode 100644
index 0000000..bf31a3b
--- /dev/null
+++ b/skin/overlay-sm.css
@@ -0,0 +1,30 @@
+/*
+    Saved Password Editor, extension for Gecko applications
+    Copyright (C) 2012  Daniel Dawson <danielcdawson at gmail.com>
+
+    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 3 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, see <http://www.gnu.org/licenses/>.
+*/
+
+ at namespace "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul";
+
+/* Toolbar icons for SeaMonkey - why does it use such odd sizes? */
+
+#savedpasswordeditor-button {
+  list-style-image: url("chrome://savedpasswordeditor/skin/key29.png");
+}
+
+#savedpasswordeditor-toolsmenuitem,
+toolbar[iconsize="small"] #savedpasswordeditor-button {
+  list-style-image: url("chrome://savedpasswordeditor/skin/key19.png");
+}
diff --git a/skin/overlay.css b/skin/overlay.css
new file mode 100644
index 0000000..26f6ae0
--- /dev/null
+++ b/skin/overlay.css
@@ -0,0 +1,34 @@
+/*
+    Saved Password Editor, extension for Gecko applications
+    Copyright (C) 2014  Daniel Dawson <danielcdawson at gmail.com>
+
+    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 3 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, see <http://www.gnu.org/licenses/>.
+*/
+
+ at namespace "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul";
+
+#savedpasswordeditor-button {
+  list-style-image: url('chrome://savedpasswordeditor/skin/key24.png');
+}
+
+#savedpasswordeditor-toolsmenuitem, #savedpasswordeditor-appmenuitem,
+toolbar[iconsize="small"] #savedpasswordeditor-button {
+  list-style-image: url('chrome://savedpasswordeditor/skin/key16.png');
+}
+
+/* Australis */
+#savedpasswordeditor-button[cui-areatype="menu-panel"],
+toolbarpaletteitem[place="palette"] > #savedpasswordeditor-button {
+  list-style-image: url('chrome://savedpasswordeditor/skin/key32.png');
+}
diff --git a/skin/pwdmgrOverlay.css b/skin/pwdmgrOverlay.css
new file mode 100644
index 0000000..65cabe0
--- /dev/null
+++ b/skin/pwdmgrOverlay.css
@@ -0,0 +1,30 @@
+/*
+    Saved Password Editor, extension for Gecko applications
+    Copyright (C) 2011  Daniel Dawson <danielcdawson at gmail.com>
+
+    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 3 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, see <http://www.gnu.org/licenses/>.
+*/
+
+ at namespace "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul";
+
+#speMenuBtn {
+  -moz-appearance: none;
+  margin: 0px;
+  border-width: 0px;
+  padding: 0px;
+}
+
+#speMenuBtn > button {
+  margin-right: 0px;
+}
diff --git a/skin/qtextbox.css b/skin/qtextbox.css
new file mode 100644
index 0000000..89c638b
--- /dev/null
+++ b/skin/qtextbox.css
@@ -0,0 +1,32 @@
+/*
+    Saved Password Editor, extension for Gecko applications
+    Copyright (C) 2011  Daniel Dawson <danielcdawson at gmail.com>
+
+    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 3 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, see <http://www.gnu.org/licenses/>.
+*/
+
+ at namespace "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul";
+ at namespace html "http://www.w3.org/1999/xhtml";
+
+.qtextbox {
+  -moz-binding:
+    url("chrome://savedpasswordeditor/content/qtextbox.xml#qtextbox");
+  -moz-user-select: text;
+  text-shadow: none;
+}
+
+.qtextbox[indefinite="true"] html|input.textbox-input {
+  background-image: url("chrome://savedpasswordeditor/skin/indef.png");
+  background-repeat: repeat;
+}
diff --git a/skin/welcome.css b/skin/welcome.css
new file mode 100644
index 0000000..60590dd
--- /dev/null
+++ b/skin/welcome.css
@@ -0,0 +1,58 @@
+/*
+    Saved Password Editor, extension for Gecko applications
+    Copyright (C) 2011  Daniel Dawson <danielcdawson at gmail.com>
+
+    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 3 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, see <http://www.gnu.org/licenses/>.
+*/
+
+ at namespace "http://www.w3.org/1999/xhtml";
+
+html {
+  direction: ltr;
+}
+
+html[dir="RTL"] {
+  direction: rtl;
+}
+
+body {
+  margin-left: 0px;
+  margin-right: 0px;
+  padding-left: 96px;
+  padding-right: 16px;
+  background-color: #DDE;
+  color: black;
+}
+
+html[dir="RTL"] > body {
+  padding-left: 16px;
+  padding-right: 96px;
+}
+
+h1:before {
+  margin-left: -80px;
+  margin-right: 16px;
+  float: left;
+  content: url("chrome://savedpasswordeditor/skin/key64.png");
+}
+
+html[dir="RTL"] h1:before {
+  margin-left: 16px;
+  margin-right: -80px;
+  float: right;
+}
+
+p {
+  text-align: justify;
+}

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-mozext/mozilla-password-editor.git



More information about the Pkg-mozext-commits mailing list