POMjs - ZoufallspasswuertgeneratorPOMjs - Générateur de mot de passe au hazardPOMjs - Salasanageneraattori
- POMjs - Generator Naključnih Gesel
+ POMjs - Generator Naključnih Gesel
+ POMjs - 随机密码生成器
diff --git a/js/password-om.js b/js/password-om.js
index 2bf8b6d..642a90f 100644
--- a/js/password-om.js
+++ b/js/password-om.js
@@ -368,6 +368,11 @@ function POM_initialSetup() {
POM_cfgSlogan = 'Brez piškotkov, nič sledilnikov. Samo geslo.';
POM_cfgGenPasswordHint = 'Generiraj geslo';
break;
+ case 'zh':
+ POM_cfgTitle = '随机密码生成器';
+ POM_cfgSlogan = 'No cookies, no trackers. Just passwords.';
+ POM_cfgGenPasswordHint = '生成密码';
+ break;
default:
POM_cfgTitle = 'Random Password Generator';
POM_cfgSlogan = 'No cookies, no trackers. Just passwords.';
diff --git a/js/password-om.min.js b/js/password-om.min.js
index 56b5a3f..a630e9c 100644
--- a/js/password-om.min.js
+++ b/js/password-om.min.js
@@ -1 +1 @@
-var POM_cfgLanguage="noLang?",POM_cfgTitle="noTitle?",POM_cfgSlogan="noSlogan?",POM_cfgGenPasswordHint="noHint?";const POM_strUppercase=POM_genAlphabet(!0),POM_strLowercase=POM_genAlphabet(!1),POM_strDigits=POM_genDigits(),POM_strSpecialOne="-._#$@%!",POM_strSpecialTwo='"+(){}[]?&,*<>|:;^',POM_strUppercase_Default=!0,POM_strLowercase_Default=!0,POM_strDigits_Default=!0,POM_strSpecialOne_Default=!0,POM_strSpecialTwo_Default=!1,POM_mkPasswordOnLoad=!0,POM_changeIsClick=!0,POM_minLength=16,POM_maxLength=256,POM_sliderStep=8,POM_debug=!1;function POM_genAlphabet(e=!1){return[...Array(26)].map((t,n)=>String.fromCharCode(n+(e?65:97))).join("")}function POM_genDigits(){return[...Array(10)].map((e,t)=>String.fromCharCode(t+48)).join("")}function POM_distillString(e){return e=e.split(""),e=[...e=new Set(e)].join("+")}function POM_escapeRegExp(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function POM_validateNumInput(){let e=document.getElementById("mk-password-len-slider");e&&(""===this.value&&(this.value=16),e.value=this.value,e.value<16?e.value=16:e.value>256&&(e.value=256),this.value=e.value),document.getElementById("mk-password-btn").click()}function POM_generatePassword(){let e=document.getElementById("mk-password-strength");e.style.background="inherit",e.style.width="0",e.style.transition="none";let t=document.getElementById("mk-password-field");t.value="",t.classList.remove("mk-password-field-focus");let n=document.getElementById("mk-length-field");if(n&&n.value>=16&&n.value<=256){let s="";if(document.getElementById("mk-uppercase-select").checked&&(s+=POM_strUppercase),document.getElementById("mk-special-one-select").checked&&(s+=POM_strSpecialOne+POM_strSpecialOne),document.getElementById("mk-digits-select").checked&&(s+=POM_strDigits),document.getElementById("mk-lowercase-select").checked&&(s+=POM_strLowercase),document.getElementById("mk-digits-select").checked&&(s+=POM_strDigits),document.getElementById("mk-special-two-select").checked&&(s+=POM_strSpecialTwo+POM_strSpecialTwo),s.length>0){let a="",l="";for(let i=0;i7&&c++,a.length>15&&c++,a.length>31&&(c+=2),a.length>63&&(c+=4),c>8&&(c=8),c>6?e.style.background="#27ce60":c>5?e.style.background="#27ae60":c>3?e.style.background="#FFC300":e.style.background="#C0392B",e.style.width=12.5*c+"%",e.style.transition="width 0.3s ease-in"}}}function POM_copyPassword(){let e=document.getElementById("mk-password-field");if(e&&e.value.length>0){if(navigator&&navigator.clipboard&&navigator.clipboard.writeText)navigator.clipboard.writeText(e.value).then(function(){e.classList.add("mk-password-field-focus")},function(e){alert("Could not copy text: "+e)});else{var t=document.createElement("textarea");t.value=e.value,t.setAttribute("readonly",""),t.style.position="absolute",t.style.top="-6969px",t.style.left="-6969px",document.body.appendChild(t),t.focus(),t.select();try{document.execCommand("copy")?e.classList.add("mk-password-field-focus"):alert("That did not work")}catch(n){alert("Could not copy text: "+n.message)}document.body.removeChild(t)}}}function POM_initialSetup(){if(navigator.language){let e=(POM_cfgLanguage=navigator.language).indexOf("-");e&&e>0&&(POM_cfgLanguage=POM_cfgLanguage.substring(0,e)),POM_cfgLanguage=POM_cfgLanguage.toLowerCase()}else POM_cfgLanguage="???";switch(POM_cfgLanguage){case"sv":case"se":POM_cfgTitle="Slumpm\xe4ssigt L\xf6senord",POM_cfgSlogan='Inga kakor, ingen sp\xe5rning. Bara l\xf6senord.',POM_cfgGenPasswordHint="Generera l\xf6senord";break;case"de":POM_cfgTitle="Zufallsgenerator f\xfcr Passw\xf6rter",POM_cfgSlogan='Keine Cookies, keine Tracker. Nur Passw\xf6rter.',POM_cfgGenPasswordHint="Passwort generieren";break;case"hu":POM_cfgTitle="V\xe9letlenszerű jelsz\xf3gener\xe1tor",POM_cfgSlogan='Cookie-k n\xe9lk\xfcl, nyomk\xf6vetők n\xe9lk\xfcl. Csak jelszavak.',POM_cfgGenPasswordHint="Jelsz\xf3 gener\xe1l\xe1sa";break;case"nl":POM_cfgTitle="Willekeurig Wachtwoord Generator",POM_cfgSlogan='Geen cookies, geen trackers. Uitsluitend wachtwoorden.',POM_cfgGenPasswordHint="Genereer wachtwoord";break;case"lb":POM_cfgTitle="Zoufallspasswuertgenerator",POM_cfgSlogan='Keng Cookien, keng Trackeren. Nemme Passwierder.',POM_cfgGenPasswordHint="Passwuert genereieren";break;case"fr":POM_cfgTitle="G\xe9n\xe9rateur de mot de passe au hazard",POM_cfgSlogan='Pas de cookies, pas de traceurs. Juste des mots de passe.',POM_cfgGenPasswordHint="G\xe9n\xe9rer mot de passe";break;case"fi":POM_cfgTitle="Salasanageneraattori",POM_cfgSlogan='Ei ev\xe4steit\xe4, ei seurantaa. Vain salasanoja.',POM_cfgGenPasswordHint="Generoi salasana";break;case"sl":POM_cfgTitle="Generator Naključnih Gesel",POM_cfgSlogan='Brez piškotkov, nič sledilnikov. Samo geslo.',POM_cfgGenPasswordHint="Generiraj geslo";break;default:POM_cfgTitle="Random Password Generator",POM_cfgSlogan='No cookies, no trackers. Just passwords.',POM_cfgGenPasswordHint="Generate password"}document.getElementById("cfg-page-title").innerHTML=POM_cfgTitle,document.getElementById("cfg-page-slogan").innerHTML=POM_cfgSlogan,document.getElementById("cfg-page-lang").innerHTML="["+POM_cfgLanguage+"]",document.getElementById("mk-password-btn").title=POM_cfgGenPasswordHint,document.getElementById("mk-uppercase-select").checked=!0,document.getElementById("mk-lowercase-select").checked=!0,document.getElementById("mk-digits-select").checked=!0,document.getElementById("mk-special-one-select").checked=!0,document.getElementById("mk-special-two-select").checked=!1,document.getElementById("mk-password-field").value="";let t=document.getElementById("mk-password-len-slider");t&&(t.value=16,t.setAttribute("min",16),t.setAttribute("max",256),t.step=8),document.getElementById("mk-length-field").value=16,document.getElementById("gen-uppercase").innerText=POM_strUppercase,document.getElementById("gen-lowercase").innerText=POM_strLowercase,document.getElementById("gen-digits").innerText=POM_strDigits,document.getElementById("gen-special-one").innerText=POM_strSpecialOne,document.getElementById("gen-special-two").innerText=POM_strSpecialTwo,document.getElementById("gen-timestamp").innerText=Date.now(),document.getElementById("mk-password-len-slider").addEventListener("input",function(){let e=document.getElementById("mk-length-field");e&&(e.value=this.value,e.value<16?e.value=16:e.value>256&&(e.value=256),this.value=e.value)}),document.getElementById("mk-length-field").addEventListener("click",function(){this.select()}),document.getElementById("mk-length-field").addEventListener("blur",POM_validateNumInput),document.getElementById("mk-length-field").addEventListener("change",POM_validateNumInput),document.getElementById("mk-password-btn").addEventListener("click",POM_generatePassword),document.getElementById("mk-password-field").addEventListener("click",POM_copyPassword),document.getElementById("mk-password-btn").click(),document.getElementById("mk-uppercase-select").addEventListener("click",POM_generatePassword),document.getElementById("mk-special-one-select").addEventListener("click",POM_generatePassword),document.getElementById("mk-digits-select").addEventListener("click",POM_generatePassword),document.getElementById("mk-lowercase-select").addEventListener("click",POM_generatePassword),document.getElementById("mk-digits-select").addEventListener("click",POM_generatePassword),document.getElementById("mk-special-two-select").addEventListener("click",POM_generatePassword),document.getElementById("mk-password-len-slider").addEventListener("change",POM_generatePassword)}"complete"!==document.readyState&&("loading"===document.readyState||document.documentElement.doScroll)?document.addEventListener("DOMContentLoaded",POM_initialSetup):POM_initialSetup();
\ No newline at end of file
+var POM_cfgLanguage="noLang?";var POM_cfgTitle="noTitle?";var POM_cfgSlogan="noSlogan?";var POM_cfgGenPasswordHint="noHint?";const POM_strUppercase=POM_genAlphabet(true);const POM_strLowercase=POM_genAlphabet(false);const POM_strDigits=POM_genDigits();const POM_strSpecialOne="-._#$@%!";const POM_strSpecialTwo='"+(){}[]?&,*<>|:;^';const POM_strUppercase_Default=true;const POM_strLowercase_Default=true;const POM_strDigits_Default=true;const POM_strSpecialOne_Default=true;const POM_strSpecialTwo_Default=false;const POM_mkPasswordOnLoad=true;const POM_changeIsClick=true;const POM_minLength=16;const POM_maxLength=256;const POM_sliderStep=8;const POM_debug=false;function POM_genAlphabet(isUpper=false){return[...Array(26)].map((_,i)=>String.fromCharCode(i+(isUpper?65:97))).join("")}function POM_genDigits(){return[...Array(10)].map((_,i)=>String.fromCharCode(i+48)).join("")}function POM_distillString(s){s=s.split("");s=new Set(s);s=[...s].join("+");return s}function POM_escapeRegExp(s){return s.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function POM_validateNumInput(){let mkLengthSlider=document.getElementById("mk-password-len-slider");if(mkLengthSlider){if(this.value===""){this.value=POM_minLength}mkLengthSlider.value=this.value;if(mkLengthSlider.valuePOM_maxLength){mkLengthSlider.value=POM_maxLength}this.value=mkLengthSlider.value}if(POM_changeIsClick){document.getElementById("mk-password-btn").click()}}function POM_generatePassword(){let strengthP=document.getElementById("mk-password-strength");strengthP.style.background="inherit";strengthP.style.width="0";strengthP.style.transition="none";let passwordField=document.getElementById("mk-password-field");passwordField.value="";passwordField.classList.remove("mk-password-field-focus");let mkLengthField=document.getElementById("mk-length-field");if(POM_debug){console.clear()}if(mkLengthField){if(mkLengthField.value>=POM_minLength&&mkLengthField.value<=POM_maxLength){let passwordSource="";if(document.getElementById("mk-uppercase-select").checked){passwordSource+=POM_strUppercase}if(document.getElementById("mk-special-one-select").checked){passwordSource+=POM_strSpecialOne+POM_strSpecialOne}if(document.getElementById("mk-digits-select").checked){passwordSource+=POM_strDigits}if(document.getElementById("mk-lowercase-select").checked){passwordSource+=POM_strLowercase}if(document.getElementById("mk-digits-select").checked){passwordSource+=POM_strDigits}if(document.getElementById("mk-special-two-select").checked){passwordSource+=POM_strSpecialTwo+POM_strSpecialTwo}if(passwordSource.length>0){let passwordGen="";let theChar="";for(let i=0;i7){scoreP++;if(POM_debug){console.log("Password >7 characters, buping score")}}if(passwordGen.length>15){scoreP++;if(POM_debug){console.log("Password >15 characters, buping score")}}if(passwordGen.length>31){scoreP+=2;if(POM_debug){console.log("Password >31 characters, buping score")}}if(passwordGen.length>63){scoreP+=4;if(POM_debug){console.log("Password >63 characters, buping score")}}if(scoreP>8){scoreP=8}if(scoreP>6){strengthP.style.background="#27ce60"}else if(scoreP>5){strengthP.style.background="#27ae60"}else if(scoreP>3){strengthP.style.background="#FFC300"}else{strengthP.style.background="#C0392B"}strengthP.style.width=scoreP*12.5+"%";strengthP.style.transition="width 0.3s ease-in"}}}}function POM_copyPassword(){let passwordField=document.getElementById("mk-password-field");if(passwordField&&passwordField.value.length>0){if(navigator&&navigator.clipboard&&navigator.clipboard.writeText){navigator.clipboard.writeText(passwordField.value).then(function(){passwordField.classList.add("mk-password-field-focus")},function(e){alert("Could not copy text: "+e)})}else{var theText=document.createElement("textarea");theText.value=passwordField.value;theText.setAttribute("readonly","");theText.style.position="absolute";theText.style.top="-6969px";theText.style.left="-6969px";document.body.appendChild(theText);theText.focus();theText.select();try{var goodCopy=document.execCommand("copy");if(goodCopy){passwordField.classList.add("mk-password-field-focus")}else{alert("That did not work")}}catch(e){alert("Could not copy text: "+e.message)}document.body.removeChild(theText)}}}function POM_initialSetup(){if(navigator.language){POM_cfgLanguage=navigator.language;if(POM_debug){console.log("Language: "+POM_cfgLanguage)}let dashPos=POM_cfgLanguage.indexOf("-");if(dashPos&&dashPos>0){POM_cfgLanguage=POM_cfgLanguage.substring(0,dashPos)}POM_cfgLanguage=POM_cfgLanguage.toLowerCase()}else{POM_cfgLanguage="???"}switch(POM_cfgLanguage){case"sv":case"se":POM_cfgTitle="Slumpmässigt Lösenord";POM_cfgSlogan='Inga kakor, ingen spårning. Bara lösenord.';POM_cfgGenPasswordHint="Generera lösenord";break;case"de":POM_cfgTitle="Zufallsgenerator für Passwörter";POM_cfgSlogan='Keine Cookies, keine Tracker. Nur Passwörter.';POM_cfgGenPasswordHint="Passwort generieren";break;case"hu":POM_cfgTitle="Véletlenszerű jelszógenerátor";POM_cfgSlogan='Cookie-k nélkül, nyomkövetők nélkül. Csak jelszavak.';POM_cfgGenPasswordHint="Jelszó generálása";break;case"nl":POM_cfgTitle="Willekeurig Wachtwoord Generator";POM_cfgSlogan='Geen cookies, geen trackers. Uitsluitend wachtwoorden.';POM_cfgGenPasswordHint="Genereer wachtwoord";break;case"lb":POM_cfgTitle="Zoufallspasswuertgenerator";POM_cfgSlogan='Keng Cookien, keng Trackeren. Nemme Passwierder.';POM_cfgGenPasswordHint="Passwuert genereieren";break;case"fr":POM_cfgTitle="Générateur de mot de passe au hazard";POM_cfgSlogan='Pas de cookies, pas de traceurs. Juste des mots de passe.';POM_cfgGenPasswordHint="Générer mot de passe";break;case"fi":POM_cfgTitle="Salasanageneraattori";POM_cfgSlogan='Ei evästeitä, ei seurantaa. Vain salasanoja.';POM_cfgGenPasswordHint="Generoi salasana";break;case"sl":POM_cfgTitle="Generator Naključnih Gesel";POM_cfgSlogan='Brez piškotkov, nič sledilnikov. Samo geslo.';POM_cfgGenPasswordHint="Generiraj geslo";break;case"zh":POM_cfgTitle="随机密码生成器";POM_cfgSlogan='No cookies, no trackers. Just passwords.';POM_cfgGenPasswordHint="生成密码";break;default:POM_cfgTitle="Random Password Generator";POM_cfgSlogan='No cookies, no trackers. Just passwords.';POM_cfgGenPasswordHint="Generate password";break}document.getElementById("cfg-page-title").innerHTML=POM_cfgTitle;document.getElementById("cfg-page-slogan").innerHTML=POM_cfgSlogan;document.getElementById("cfg-page-lang").innerHTML="["+POM_cfgLanguage+"]";document.getElementById("mk-password-btn").title=POM_cfgGenPasswordHint;document.getElementById("mk-uppercase-select").checked=POM_strUppercase_Default;document.getElementById("mk-lowercase-select").checked=POM_strLowercase_Default;document.getElementById("mk-digits-select").checked=POM_strDigits_Default;document.getElementById("mk-special-one-select").checked=POM_strSpecialOne_Default;document.getElementById("mk-special-two-select").checked=POM_strSpecialTwo_Default;document.getElementById("mk-password-field").value="";let mkPasswordSlider=document.getElementById("mk-password-len-slider");if(mkPasswordSlider){mkPasswordSlider.value=POM_minLength;mkPasswordSlider.setAttribute("min",POM_minLength);mkPasswordSlider.setAttribute("max",POM_maxLength);mkPasswordSlider.step=POM_sliderStep}document.getElementById("mk-length-field").value=POM_minLength;document.getElementById("gen-uppercase").innerText=POM_strUppercase;document.getElementById("gen-lowercase").innerText=POM_strLowercase;document.getElementById("gen-digits").innerText=POM_strDigits;document.getElementById("gen-special-one").innerText=POM_strSpecialOne;document.getElementById("gen-special-two").innerText=POM_strSpecialTwo;document.getElementById("gen-timestamp").innerText=Date.now();document.getElementById("mk-password-len-slider").addEventListener("input",function(){let mkLengthField=document.getElementById("mk-length-field");if(mkLengthField){mkLengthField.value=this.value;if(mkLengthField.valuePOM_maxLength){mkLengthField.value=POM_maxLength}this.value=mkLengthField.value}});document.getElementById("mk-length-field").addEventListener("click",function(){this.select()});document.getElementById("mk-length-field").addEventListener("blur",POM_validateNumInput);document.getElementById("mk-length-field").addEventListener("change",POM_validateNumInput);document.getElementById("mk-password-btn").addEventListener("click",POM_generatePassword);document.getElementById("mk-password-field").addEventListener("click",POM_copyPassword);if(POM_mkPasswordOnLoad){document.getElementById("mk-password-btn").click()}if(POM_changeIsClick){document.getElementById("mk-uppercase-select").addEventListener("click",POM_generatePassword);document.getElementById("mk-special-one-select").addEventListener("click",POM_generatePassword);document.getElementById("mk-digits-select").addEventListener("click",POM_generatePassword);document.getElementById("mk-lowercase-select").addEventListener("click",POM_generatePassword);document.getElementById("mk-digits-select").addEventListener("click",POM_generatePassword);document.getElementById("mk-special-two-select").addEventListener("click",POM_generatePassword);document.getElementById("mk-password-len-slider").addEventListener("change",POM_generatePassword)}}if(document.readyState==="complete"||document.readyState!=="loading"&&!document.documentElement.doScroll){POM_initialSetup()}else{document.addEventListener("DOMContentLoaded",POM_initialSetup)}
\ No newline at end of file