├── .gitignore ├── lib ├── react-material-ui.browserify.options.json ├── window.react.js ├── react-material-ui.browserify.js ├── helpers.js ├── login_session.js └── index.js ├── server └── user-services.js ├── .editorconfig ├── components ├── login_formset.jsx ├── display_name.jsx ├── login_services.jsx ├── login_dialogs.jsx ├── login_service.jsx ├── service_config.jsx └── login_form.jsx ├── style └── style.css ├── .versions ├── LICENSE ├── package.js ├── t9n ├── zh_cn.js ├── zh_tw.js ├── zh_hk.js ├── ko.js ├── ca.js ├── es.js ├── ja.js ├── es_ES.js ├── he.js ├── fa.js ├── sl.js ├── da.js ├── no_NB.js ├── tr.js ├── ar.js ├── cs.js ├── vi.js ├── ro.js ├── uk.js ├── nl.js ├── hr.js ├── sk.js ├── pl.js ├── kh.js ├── id.js ├── sv.js ├── pt.js ├── el.js ├── it.js ├── hu.js ├── en.js ├── pt_PT.js ├── fr.js ├── ru.js └── de.js └── README.md /.gitignore: -------------------------------------------------------------------------------- 1 | npm-debug.log* 2 | *.log 3 | .npm 4 | node_modules 5 | .idea* 6 | report.xml 7 | config/local* 8 | android/ 9 | *.tar.gz 10 | packageMocksSpec.js 11 | package-stubs.js 12 | .DS_Store 13 | -------------------------------------------------------------------------------- /lib/react-material-ui.browserify.options.json: -------------------------------------------------------------------------------- 1 | { 2 | "transforms": { 3 | "externalify": { 4 | "global": true, 5 | "external": { 6 | "react": "React.require" 7 | } 8 | } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /server/user-services.js: -------------------------------------------------------------------------------- 1 | Meteor.methods({ 2 | userServices(){ 3 | let user = Meteor.users.findOne(this.userId); 4 | 5 | if (user && user.services){ 6 | return(Object.keys(user.services)); 7 | }else{ 8 | return([]); 9 | } 10 | } 11 | }); 12 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | # http://EditorConfig.org 2 | 3 | # top-most EditorConfig file 4 | 5 | root = true 6 | 7 | [*] 8 | indent_size = 4 9 | end_of_line = lf 10 | charset = "utf-8" 11 | indent_style = space 12 | insert_final_newline = true 13 | trim_trailing_whitespace = true 14 | 15 | [*.{css,js,ts,jsx,coffee,less}] 16 | indent_size = 2 17 | -------------------------------------------------------------------------------- /lib/window.react.js: -------------------------------------------------------------------------------- 1 | if(window) { 2 | if (!!window.hasOwnProperty("React")){ 3 | window.React = React; 4 | } 5 | 6 | if(!!window.hasOwnProperty("ReactDom")) { 7 | window.ReactDom = ReactDom; 8 | } 9 | 10 | if(!!window.hasOwnProperty("injectTapEventPlugin")){ 11 | window.injectTapEventPlugin = injectTapEventPlugin; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /lib/react-material-ui.browserify.js: -------------------------------------------------------------------------------- 1 | global.React = React; 2 | // see https://github.com/meteor/react-packages/issues/83 3 | 4 | global.injectTapEventPlugin = require("react-tap-event-plugin"); 5 | MUI = require('material-ui'); 6 | MUI.Libs = {}; 7 | MUI.Libs.Menu = require('material-ui/lib/menus/menu'); 8 | MUI.Libs.MenuItem = require('material-ui/lib/menus/menu-item'); 9 | MUI.Libs.MenuDivider = require('material-ui/lib/menus/menu-divider'); 10 | -------------------------------------------------------------------------------- /components/login_formset.jsx: -------------------------------------------------------------------------------- 1 | Accounts.ui.LoginFormSet = React.createClass({ 2 | render(){ 3 | const options = {}; 4 | 5 | if (this.props.redirect){ 6 | options.redirect = this.props.redirect; 7 | } 8 | 9 | const services = getLoginServices().length && !Meteor.user() ? : null; 10 | const form = Package['accounts-password'] ? : null; 11 | 12 | return(
14 | {services} 15 | {form && services ?
: null} 16 | {form} 17 |
); 18 | } 19 | }); 20 | -------------------------------------------------------------------------------- /style/style.css: -------------------------------------------------------------------------------- 1 | .accounts-ui__formset{ 2 | max-width: 500px; 3 | margin: 0 auto; 4 | } 5 | .accounts-ui__button{ 6 | margin-bottom: 16px; 7 | } 8 | .accounts-ui__field, 9 | .accounts-ui__radio{ 10 | margin-bottom: 16px; 11 | } 12 | .accounts-ui__separator{ 13 | margin: 0 0 16px 0; 14 | border: 0; 15 | border-bottom: 1px solid gray; 16 | } 17 | .accounts-ui__form-buttons{ 18 | text-align: right; 19 | } 20 | .accounts-ui__button_variant_form{ 21 | display: inline-block; 22 | margin-right: 16px; 23 | width: auto; 24 | } 25 | .accounts-ui__button_variant_form:last-of-type{ 26 | margin-right: 0; 27 | } 28 | .accounts-ui__button_variant_dialog{ 29 | margin-bottom: 0; 30 | } 31 | -------------------------------------------------------------------------------- /components/display_name.jsx: -------------------------------------------------------------------------------- 1 | Accounts.ui.DisplayName = React.createClass({ 2 | mixins: [ReactMeteorData], 3 | 4 | getMeteorData(){ 5 | const user = Meteor.user(); 6 | let username = ''; 7 | 8 | if (user){ 9 | if (user.profile && user.profile.name){ 10 | username = user.profile.name; 11 | } 12 | 13 | if (user.username){ 14 | username = user.username; 15 | } 16 | 17 | if (user.emails && user.emails[0] && user.emails[0].address){ 18 | username = user.emails[0].address; 19 | } 20 | } 21 | 22 | return { 23 | name: username 24 | }; 25 | }, 26 | 27 | render(){ 28 | return(
30 | {this.data.name} 31 |
); 32 | } 33 | }); 34 | -------------------------------------------------------------------------------- /components/login_services.jsx: -------------------------------------------------------------------------------- 1 | Accounts.ui.LoginServices = React.createClass({ 2 | mixins: [ReactMeteorData], 3 | 4 | getMeteorData(){ 5 | return { 6 | services: getLoginServices(), 7 | configurationLoaded: Meteor.isClient ? Accounts.loginServicesConfigured() : false 8 | }; 9 | }, 10 | 11 | render(){ 12 | let form = null; 13 | const options = {}; 14 | 15 | if (this.props.redirect){ 16 | options.redirect = this.props.redirect; 17 | } 18 | 19 | if (this.data.services && this.data.configurationLoaded){ 20 | form = this.data.services.map((service, index)=>{ 21 | const serviceOptions = {}; 22 | 23 | return(); 27 | }); 28 | } 29 | 30 | if (!form || !form.length){ 31 | return(null); 32 | } 33 | 34 | return(
36 | {form} 37 |
); 38 | } 39 | }); 40 | -------------------------------------------------------------------------------- /.versions: -------------------------------------------------------------------------------- 1 | accounts-base@1.2.2 2 | babel-compiler@5.8.24_1 3 | babel-runtime@0.1.4 4 | base64@1.0.4 5 | binary-heap@1.0.4 6 | blaze@2.1.3 7 | blaze-tools@1.0.4 8 | boilerplate-generator@1.0.4 9 | caching-compiler@1.0.0 10 | caching-html-compiler@1.0.2 11 | callback-hook@1.0.4 12 | check@1.1.0 13 | coffeescript@1.0.11 14 | cosmos:browserify@0.9.2 15 | ddp@1.2.2 16 | ddp-client@1.2.1 17 | ddp-common@1.2.2 18 | ddp-rate-limiter@1.0.0 19 | ddp-server@1.2.2 20 | deps@1.0.9 21 | diff-sequence@1.0.1 22 | ecmascript@0.1.6 23 | ecmascript-runtime@0.2.6 24 | ejson@1.0.7 25 | geojson-utils@1.0.4 26 | html-tools@1.0.5 27 | htmljs@1.0.5 28 | id-map@1.0.4 29 | jquery@1.11.4 30 | jsx@0.2.3 31 | localstorage@1.0.5 32 | logging@1.0.8 33 | meteor@1.1.10 34 | minifiers@1.1.7 35 | minimongo@1.0.10 36 | mongo@1.1.3 37 | mongo-id@1.0.1 38 | npm-mongo@1.4.39_1 39 | observe-sequence@1.0.7 40 | ordered-dict@1.0.4 41 | promise@0.5.1 42 | qnub:accounts-react-material-ui@0.13.4_1 43 | qnub:t9n@0.0.2 44 | random@1.0.5 45 | rate-limit@1.0.0 46 | react@0.14.1_1 47 | react-meteor-data@0.2.3 48 | react-runtime@0.14.1_1 49 | react-runtime-dev@0.14.1 50 | react-runtime-prod@0.14.1 51 | reactive-var@1.0.6 52 | retry@1.0.4 53 | routepolicy@1.0.6 54 | service-configuration@1.0.5 55 | spacebars@1.0.7 56 | spacebars-compiler@1.0.7 57 | templating@1.1.5 58 | templating-tools@1.0.0 59 | tracker@1.0.9 60 | ui@1.0.8 61 | underscore@1.0.4 62 | webapp@1.2.3 63 | webapp-hashing@1.0.5 64 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | ======================================== 2 | Licensed under the MIT License 3 | ======================================== 4 | 5 | Copyright (C) 2015 qnub 6 | 7 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: 8 | 9 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 10 | 11 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 12 | 13 | 14 | ==================================================================== 15 | This license applies to all code in Meteor that is not an externally 16 | maintained library. Externally maintained libraries have their own 17 | licenses, included in the LICENSES directory. 18 | ==================================================================== 19 | -------------------------------------------------------------------------------- /lib/helpers.js: -------------------------------------------------------------------------------- 1 | getLoginServices = function(){ 2 | // First look for OAuth services. 3 | const services = Package['accounts-oauth'] ? Accounts.oauth.serviceNames() : []; 4 | 5 | // Be equally kind to all login services. This also preserves 6 | // backwards-compatibility. (But maybe order should be 7 | // configurable?) 8 | services.sort(); 9 | 10 | // Add password, if it's there; it must come last. 11 | // if (hasPasswordService()) 12 | // services.push('password'); 13 | 14 | return _.map(services, function(name){ 15 | return {name: name}; 16 | }); 17 | }; 18 | 19 | loginResultCallback = function (redirect) { 20 | if (Meteor.isClient){ 21 | if (typeof redirect === 'string'){ 22 | window.location.href = redirect; 23 | } 24 | 25 | if (typeof redirect === 'function'){ 26 | redirect(); 27 | } 28 | } 29 | }; 30 | 31 | capitalize = function(str){ 32 | str = str == null ? '' : String(str); 33 | 34 | return str.charAt(0).toUpperCase() + str.slice(1); 35 | }; 36 | 37 | passwordSignupFields = function () { 38 | return Accounts.ui._options.passwordSignupFields || "EMAIL_ONLY"; 39 | }; 40 | 41 | validatePassword = function(password){ 42 | if (password.length >= 6) { 43 | return true; 44 | } else { 45 | return false; 46 | } 47 | }; 48 | 49 | let defaultStyles = { 50 | container: { 51 | textAlign: 'center', 52 | marginBottom: '16px', 53 | }, 54 | headline: { 55 | fontSize: '24px', 56 | lineHeight: '32px', 57 | paddingTop: '16px', 58 | marginBottom: '12px', 59 | letterSpacing: '0', 60 | fontWeight: MUI.Styles.Typography.fontWeightNormal, 61 | color: MUI.Styles.Typography.textDarkBlack, 62 | }, 63 | }; 64 | 65 | try { 66 | styles = _.extend(defaultStyles, Meteor.settings.public.accounts.styles); 67 | } catch(e){ 68 | styles = defaultStyles 69 | } 70 | -------------------------------------------------------------------------------- /package.js: -------------------------------------------------------------------------------- 1 | Package.describe({ 2 | summary: 'React Material UI components for accounts.', 3 | version: '0.13.4_1', 4 | name: 'qnub:accounts-react-material-ui', 5 | git: 'https://github.com/qnub/meteor-accounts-react-material-ui.git', 6 | }); 7 | 8 | Npm.depends({ 9 | 'externalify': '0.1.0', 10 | 'react-tap-event-plugin': '0.2.1', 11 | 'material-ui': '0.13.4' 12 | }); 13 | 14 | DEFAULT_LANGUAGES = ['ar', 'zh_cn', 'ca', 'cs', 'da', 'de', 'el', 'en', 'es', 15 | 'es_ES', 'fa', 'fr', 'he', 'hr', 'hu', 'id', 'it', 'ja', 'kh', 'ko', 'pl', 'pt', 'pt_PT', 'ro', 16 | 'ru', 'sk', 'sl', 'sv', 'tr', 'uk', 'vi', 'no_NB', 'nl', 'zh_tw', 'zh_hk']; 17 | 18 | LANGUAGES = DEFAULT_LANGUAGES; 19 | if(process.env.T9N_LANGUAGES) { 20 | LANGUAGES = process.env.T9N_LANGUAGES.split(','); 21 | } 22 | FILES = []; 23 | for (var i = 0; i < LANGUAGES.length; i++) { 24 | FILES.push('t9n/' + LANGUAGES[i] + '.js'); 25 | } 26 | 27 | Package.onUse(function(api, where) { 28 | api.versionsFrom('METEOR@1.2'); 29 | 30 | api.use([ 31 | 'ejson@1.0.7', 32 | 'underscore', 33 | 'accounts-base', 34 | 'ecmascript', 35 | 'templating', // required to auto inslude oauth services forms 36 | 'react@0.14.1_1', 37 | 'cosmos:browserify@0.9.2', 38 | 'qnub:t9n@0.0.2' 39 | ]); 40 | 41 | api.imply('accounts-base'); 42 | 43 | api.use('accounts-oauth', {weak: true}); 44 | api.use('accounts-password', {weak: true}); 45 | 46 | api.addFiles([ 47 | 'style/style.css', 48 | 'lib/window.react.js' 49 | ], 'client'); 50 | 51 | api.addFiles(FILES); 52 | 53 | // api.addAssets([ 54 | // 'lib/react-material-ui.browserify.options.json' 55 | // ], [ 56 | // 'client', 57 | // 'server' 58 | // ]); 59 | 60 | api.addFiles([ 61 | 'server/user-services.js' 62 | ], ['server']); 63 | 64 | api.addFiles([ 65 | 'lib/react-material-ui.browserify.options.json', 66 | 'lib/react-material-ui.browserify.js', 67 | 68 | 'lib/helpers.js', 69 | 'lib/index.js', 70 | 'lib/login_session.js', 71 | 72 | 'components/display_name.jsx', 73 | 'components/service_config.jsx', 74 | 'components/login_service.jsx', 75 | 'components/login_services.jsx', 76 | 'components/login_form.jsx', 77 | 'components/login_formset.jsx', 78 | 'components/login_dialogs.jsx' 79 | ]); 80 | }); 81 | -------------------------------------------------------------------------------- /lib/login_session.js: -------------------------------------------------------------------------------- 1 | const VALID_KEYS = [ 2 | 'dropdownVisible', 3 | 4 | // XXX consider replacing these with one key that has an enum for values. 5 | 'inSignupFlow', 6 | 'inForgotPasswordFlow', 7 | 'inChangePasswordFlow', 8 | 'inMessageOnlyFlow', 9 | 10 | 'errorMessage', 11 | 'infoMessage', 12 | 13 | // dialogs with messages (info and error) 14 | 'resetPasswordToken', 15 | 'enrollAccountToken', 16 | 'justVerifiedEmail', 17 | 'justResetPassword', 18 | 19 | 'configureLoginServiceDialogVisible', 20 | 'configureLoginServiceDialogServiceName', 21 | 'configureLoginServiceDialogSaveDisabled', 22 | 'configureOnDesktopVisible' 23 | ]; 24 | 25 | const validateKey = function (key) { 26 | if (!_.contains(VALID_KEYS, key)) 27 | throw new Error("Invalid key in loginButtonsSession: " + key); 28 | }; 29 | 30 | const KEY_PREFIX = "Meteor.loginButtons."; 31 | 32 | // XXX This should probably be package scope rather than exported 33 | // (there was even a comment to that effect here from before we had 34 | // namespacing) but accounts-ui-viewer uses it, so leave it as is for 35 | // now 36 | Accounts._loginButtonsSession = { 37 | set: function(key, value) { 38 | validateKey(key); 39 | if (_.contains(['errorMessage', 'infoMessage'], key)) 40 | throw new Error("Don't set errorMessage or infoMessage directly. Instead, use errorMessage() or infoMessage()."); 41 | 42 | this._set(key, value); 43 | }, 44 | 45 | _set: function(key, value) { 46 | Session.set(KEY_PREFIX + key, value); 47 | }, 48 | 49 | get: function(key) { 50 | validateKey(key); 51 | return Session.get(KEY_PREFIX + key); 52 | } 53 | }; 54 | 55 | if (Meteor.isClient){ 56 | // In the login redirect flow, we'll have the result of the login 57 | // attempt at page load time when we're redirected back to the 58 | // application. Register a callback to update the UI (i.e. to close 59 | // the dialog on a successful login or display the error on a failed 60 | // login). 61 | // 62 | Accounts.onPageLoadLogin(function (attemptInfo) { 63 | // Ignore if we have a left over login attempt for a service that is no longer registered. 64 | if (_.contains(_.pluck(getLoginServices(), "name"), attemptInfo.type)) 65 | loginResultCallback(attemptInfo.type, attemptInfo.error); 66 | }); 67 | 68 | let doneCallback; 69 | 70 | Accounts.onResetPasswordLink(function (token, done) { 71 | Accounts._loginButtonsSession.set("resetPasswordToken", token); 72 | doneCallback = done; 73 | }); 74 | 75 | Accounts.onEnrollmentLink(function (token, done) { 76 | Accounts._loginButtonsSession.set("enrollAccountToken", token); 77 | doneCallback = done; 78 | }); 79 | 80 | Accounts.onEmailVerificationLink(function (token, done) { 81 | Accounts.verifyEmail(token, function (error) { 82 | if (! error) { 83 | Accounts._loginButtonsSession.set('justVerifiedEmail', true); 84 | } 85 | 86 | done(); 87 | // XXX show something if there was an error. 88 | }); 89 | }); 90 | } 91 | -------------------------------------------------------------------------------- /t9n/zh_cn.js: -------------------------------------------------------------------------------- 1 | //Language: Simplified Chinese 2 | //Translators: laosb 3 | 4 | var zh_cn = { 5 | add: "添加", 6 | and: "和", 7 | back: "返回", 8 | changePassword: "修改密码", 9 | choosePassword: "新密码", 10 | clickAgree: "点击注册表示您同意", 11 | configure: "配置", 12 | createAccount: "创建账户", 13 | currentPassword: "当前密码", 14 | dontHaveAnAccount: "没有账户?", 15 | email: "电子邮箱", 16 | emailAddress: "电邮地址", 17 | emailResetLink: "邮件重置链接", 18 | forgotPassword: "忘记密码?", 19 | ifYouAlreadyHaveAnAccount: "如果您已有账户", 20 | newPassword: "新密码", 21 | newPasswordAgain: "再输一遍新密码", 22 | optional: "可选的", 23 | OR: "或", 24 | password: "密码", 25 | passwordAgain: "再输一遍密码", 26 | privacyPolicy: "隐私条例", 27 | remove: "移除", 28 | resetYourPassword: "重置您的密码", 29 | setPassword: "设置密码", 30 | sign: "登", 31 | signIn: "登录", 32 | signin: "登录", 33 | signOut: "登出", 34 | signUp: "注册", 35 | signupCode: "注册码", 36 | signUpWithYourEmailAddress: "用您的电子邮件地址注册", 37 | terms: "使用条例", 38 | updateYourPassword: "更新您的密码", 39 | username: "用户名", 40 | usernameOrEmail: "用户名或电子邮箱", 41 | "with": "与", 42 | info: { 43 | emailSent: "邮件已发出", 44 | emailVerified: "邮件验证成功", 45 | passwordChanged: "密码修改成功", 46 | passwordReset: "密码重置成功" 47 | }, 48 | error: { 49 | emailRequired: "必须填写电子邮件", 50 | minChar: "密码至少7个字符长", 51 | pwdsDontMatch: "两次密码不一致", 52 | pwOneDigit: "密码中至少有一位数字", 53 | pwOneLetter: "密码中至少有一位字母", 54 | signInRequired: "您必须登录后才能查看", 55 | signupCodeIncorrect: "注册码错误", 56 | signupCodeRequired: "必须有注册码", 57 | usernameIsEmail: "是用户名而不是电子邮件地址", 58 | usernameRequired: "必须填写用户名。", 59 | accounts: { 60 | "Email already exists.": "该电子邮件地址已被使用。", 61 | "Email doesn't match the criteria.": "错误的的电子邮件地址。", 62 | "Invalid login token": "登录密匙错误", 63 | "Login forbidden": "登录被阻止", 64 | "Service unknown": "未知服务", 65 | "Unrecognized options for login request": "登录请求存在无法识别的选项", 66 | "User validation failed": "用户验证失败", 67 | "Username already exists.": "用户名已被占用。", 68 | "You are not logged in.": "您还没有登录。", 69 | "You've been logged out by the server. Please log in again.": "您被服务器登出了。请重新登录。", 70 | "Your session has expired. Please log in again.": "会话过期,请重新登录。", 71 | "No matching login attempt found": "未发现对应登录请求", 72 | "Password is old. Please reset your password.": "密码过于老了,请重置您的密码。", 73 | "Incorrect password": "错误的密码", 74 | "Invalid email": "不合法的电子邮件地址", 75 | "Must be logged in": "必须先登录", 76 | "Need to set a username or email": "必须设置用户名或电子邮件地址", 77 | "old password format": "较老的密码格式", 78 | "Password may not be empty": "密码不应该为空", 79 | "Signups forbidden": "注册被禁止", 80 | "Token expired": "密匙过期", 81 | "Token has invalid email address": "密匙对应的电子邮箱地址不合法", 82 | "User has no password set": "用户没有密码", 83 | "User not found": "未找到该用户", 84 | "Verify email link expired": "激活验证邮件的链接已过期", 85 | "Verify email link is for unknown address": "验证邮件的链接去向未知地址", 86 | "Match failed": "匹配失败", 87 | "Unknown error": "未知错误" 88 | } 89 | } 90 | }; 91 | 92 | T9n.map("zh_cn", zh_cn); 93 | -------------------------------------------------------------------------------- /t9n/zh_tw.js: -------------------------------------------------------------------------------- 1 | //Language: Traditional Chinese 2 | //Translators: victorleungtw 3 | 4 | var zh_tw = { 5 | add: "添加", 6 | and: "和", 7 | back: "返回", 8 | changePassword: "修改密碼", 9 | choosePassword: "選擇密碼", 10 | clickAgree: "點擊註冊, 您同意我們的", 11 | configure: "配置", 12 | createAccount: "建立帳號", 13 | currentPassword: "當前密碼", 14 | dontHaveAnAccount: "還沒有賬戶?", 15 | email: "電子郵箱", 16 | emailAddress: "電郵地址", 17 | emailResetLink: "電子郵件重設連結", 18 | forgotPassword: "忘記密碼?", 19 | ifYouAlreadyHaveAnAccount: "如果您已有賬戶", 20 | newPassword: "新密碼", 21 | newPasswordAgain: "新密碼 (重新輸入)", 22 | optional: "可選的", 23 | OR: "或", 24 | password: "密碼", 25 | passwordAgain: "密碼 (重新輸入)", 26 | privacyPolicy: "隱私政策", 27 | remove: "刪除", 28 | resetYourPassword: "重置您的密碼", 29 | setPassword: "設置密碼", 30 | sign: "登", 31 | signIn: "登入", 32 | signin: "登入", 33 | signOut: "登出", 34 | signUp: "註冊", 35 | signupCode: "註冊碼", 36 | signUpWithYourEmailAddress: "使用您的電郵地址註冊", 37 | terms: "使用條款", 38 | updateYourPassword: "更新您的密碼", 39 | username: "用戶名", 40 | usernameOrEmail: "用戶名或電子郵箱", 41 | "with": "與", 42 | info: { 43 | emailSent: "郵件已發送", 44 | emailVerified: "郵件已驗證", 45 | passwordChanged: "密碼已修改", 46 | passwordReset: "密碼重置" 47 | }, 48 | error: { 49 | emailRequired: "必須填寫電子郵件。", 50 | minChar: "密碼至少需要7個字符。", 51 | pwdsDontMatch: "密碼不一致。", 52 | pwOneDigit: "密碼必須至少有一位數字。", 53 | pwOneLetter: "密碼必須至少有一位字母。", 54 | signInRequired: "您必須先登錄才能繼續。", 55 | signupCodeIncorrect: "註冊碼錯誤。", 56 | signupCodeRequired: "必須有註冊碼。", 57 | usernameIsEmail: "用戶名不能為電郵地址。", 58 | usernameRequired: "必須有用戶名。", 59 | accounts: { 60 | "Email already exists.": "電郵地址已被使用。", 61 | "Email doesn't match the criteria.": "電郵地址不符合條件。", 62 | "Invalid login token": "無效的登錄令牌", 63 | "Login forbidden": "禁止登錄", 64 | "Service unknown": "未知服務", 65 | "Unrecognized options for login request": "無法識別的登錄請求選項", 66 | "User validation failed": "用戶驗證失敗", 67 | "Username already exists.": "用戶名已經存在。", 68 | "You are not logged in.": "您尚未登入。", 69 | "You've been logged out by the server. Please log in again.": "你已被伺服器登出,請重新登入。", 70 | "Your session has expired. Please log in again.": "您的協定已過期,請重新登入。", 71 | "No matching login attempt found": "沒有找到匹配的登入請求", 72 | "Password is old. Please reset your password.": "密碼是舊的。請重置您的密碼。", 73 | "Incorrect password": "密碼不正確", 74 | "Invalid email": "無效的電子郵件", 75 | "Must be logged in": "必須先登入", 76 | "Need to set a username or email": "必須設置用戶名或電郵地址", 77 | "old password format": "舊密碼格式", 78 | "Password may not be empty": "密碼不能為空的", 79 | "Signups forbidden": "註冊被禁止", 80 | "Token expired": "密匙過期", 81 | "Token has invalid email address": "密匙具有無效的電郵地址", 82 | "User has no password set": "用戶沒有設置密碼", 83 | "User not found": "找不到用戶", 84 | "Verify email link expired": "驗證電郵連結已過期", 85 | "Verify email link is for unknown address": "驗證電郵連結是未知的地址", 86 | "Match failed": "匹配失敗", 87 | "Unknown error": "未知錯誤" 88 | } 89 | } 90 | }; 91 | 92 | T9n.map("zh_tw", zh_tw); 93 | -------------------------------------------------------------------------------- /t9n/zh_hk.js: -------------------------------------------------------------------------------- 1 | //Language: Traditional Chinese (Hong Kong) 2 | //Translators: daveeel 3 | 4 | var zh_hk = { 5 | add: "新增", 6 | and: "和", 7 | back: "返回", 8 | changePassword: "修改密碼", 9 | choosePassword: "選擇密碼", 10 | clickAgree: "點擊註冊, 您同意我們的", 11 | configure: "設定", 12 | createAccount: "建立帳號", 13 | currentPassword: "現有密碼", 14 | dontHaveAnAccount: "還沒有賬號?", 15 | email: "電郵", 16 | emailAddress: "電郵地址", 17 | emailResetLink: "重設電郵連結", 18 | forgotPassword: "忘記密碼?", 19 | ifYouAlreadyHaveAnAccount: "如果已有賬號", 20 | newPassword: "新密碼", 21 | newPasswordAgain: "新密碼 (重新輸入)", 22 | optional: "可選填", 23 | OR: "或", 24 | password: "密碼", 25 | passwordAgain: "密碼(重新輸入)", 26 | privacyPolicy: "私隱條款", 27 | remove: "刪除", 28 | resetYourPassword: "重置密碼", 29 | setPassword: "設定密碼", 30 | sign: "登", 31 | signIn: "登入", 32 | signin: "登入", 33 | signOut: "登出", 34 | signUp: "註冊", 35 | signupCode: "註冊碼", 36 | signUpWithYourEmailAddress: "使用您的電郵地址註冊", 37 | terms: "使用條款", 38 | updateYourPassword: "更新您的密碼", 39 | username: "用戶名", 40 | usernameOrEmail: "用戶名或電子郵箱", 41 | "with": "與", 42 | info: { 43 | emailSent: "已發送郵件", 44 | emailVerified: "已驗證郵件", 45 | passwordChanged: "已修改密碼", 46 | passwordReset: "密碼重置" 47 | }, 48 | error: { 49 | emailRequired: "必須填寫電子郵件。", 50 | minChar: "密碼至少需要 7 個字符。", 51 | pwdsDontMatch: "密碼不一致。", 52 | pwOneDigit: "密碼必須至少包括一個數字。", 53 | pwOneLetter: "密碼必須至少有包括一個字符。", 54 | signInRequired: "您必須先登錄才能繼續。", 55 | signupCodeIncorrect: "註冊碼不符。", 56 | signupCodeRequired: "必須有註冊碼。", 57 | usernameIsEmail: "用戶名不能設為電郵地址。", 58 | usernameRequired: "必須有用戶名。", 59 | accounts: { 60 | "Email already exists.": "電郵地址已在本服務登記使用。", 61 | "Email doesn't match the criteria.": "電郵地址不符合條件。", 62 | "Invalid login token": "無效的登錄編碼", 63 | "Login forbidden": "禁止登錄", 64 | "Service unknown": "未知服務", 65 | "Unrecognized options for login request": "無法識別的登錄請求", 66 | "User validation failed": "用戶驗證失敗", 67 | "Username already exists.": "用戶名已存在。", 68 | "You are not logged in.": "您尚未登入。", 69 | "You've been logged out by the server. Please log in again.": "您已被強制登出,請重新登入。", 70 | "Your session has expired. Please log in again.": "閒置時間過長,請重新登入。", 71 | "No matching login attempt found": "沒有找到匹配的登入請求", 72 | "Password is old. Please reset your password.": "密碼已失效,請重置。", 73 | "Incorrect password": "密碼不正確", 74 | "Invalid email": "無效的電子郵件", 75 | "Must be logged in": "必須先登入", 76 | "Need to set a username or email": "必須設置用戶名或電郵地址", 77 | "old password format": "舊密碼格式", 78 | "Password may not be empty": "密碼不能為空", 79 | "Signups forbidden": "註冊被禁止", 80 | "Token expired": "編碼已經過期", 81 | "Token has invalid email address": "編碼中的電郵地址無效", 82 | "User has no password set": "用戶尚未設置密碼", 83 | "User not found": "找不到用戶", 84 | "Verify email link expired": "驗證電郵連結已過期", 85 | "Verify email link is for unknown address": "驗證電郵連結是未知的地址", 86 | "Match failed": "無法配對", 87 | "Unknown error": "無法確認的系統問題" 88 | } 89 | } 90 | }; 91 | 92 | T9n.map("zh_hk", zh_hk); 93 | -------------------------------------------------------------------------------- /t9n/ko.js: -------------------------------------------------------------------------------- 1 | var ko = { 2 | add: "추가", 3 | and: "그리고", 4 | back: "뒤로", 5 | changePassword: "비밀번호 변경", 6 | choosePassword: "비밀번호 선택", 7 | clickAgree: "클릭함으로써 위 약관에 동의합니다", 8 | configure: "설정", 9 | createAccount: "계정 생성", 10 | currentPassword: "현재 비밀번호", 11 | dontHaveAnAccount: "계정이 없으세요?", 12 | email: "이메일", 13 | emailAddress: "이메일 주소", 14 | emailResetLink: "이메일 리셋 링크", 15 | forgotPassword: "비밀번호를 잊으셨나요?", 16 | ifYouAlreadyHaveAnAccount: "이미 계정이 있으시면", 17 | newPassword: "새 비밀번호", 18 | newPasswordAgain: "새 비밀번호(확인)", 19 | optional: "선택", 20 | OR: "혹은", 21 | password: "비밀번호", 22 | passwordAgain: "비밀번호 (확인)", 23 | privacyPolicy: "개인정보보호정책", 24 | remove: "삭제", 25 | resetYourPassword: "비밀번호 초기화", 26 | setPassword: "비밀번호 선택", 27 | sign: "로그인", 28 | signIn: "로그인", 29 | signin: "로그인", 30 | signOut: "로그아웃", 31 | signUp: "회원가입", 32 | signupCode: "회원가입 코드", 33 | signUpWithYourEmailAddress: "이메일로 가입하기", 34 | terms: "약관", 35 | updateYourPassword: "비밀번호 업데이트", 36 | username: "아이디", 37 | usernameOrEmail: "아이디 혹은 이메일", 38 | "with": "와", 39 | info: { 40 | emailSent: "이메일 발송", 41 | emailVerified: "이메일 인증성공", 42 | passwordChanged: "비밀번호 변경됨", 43 | passwordReset: "비밀번호 초기화", 44 | error: { 45 | emailRequired: "이메일이 필요합니다.", 46 | minChar: "비밀번호는 최소 7자 이상입니다.", 47 | pwdsDontMatch: "비밀번호가 일치하지 않습니다", 48 | pwOneDigit: "비밀번호에 숫자 하나 이상이 필요합니다.", 49 | pwOneLetter: "비밀번호에 문자 하나 이상이 필요합니다.", 50 | signInRequired: "로그인이 필요한 서비스입니다.", 51 | signupCodeIncorrect: "가입 코드가 맞지 않습니다.", 52 | signupCodeRequired: "가입 코드가 필요합니다.", 53 | usernameIsEmail: "아이디와 이메일은 달라야 합니다.", 54 | usernameRequired: "아이디가 필요합니다.", 55 | accounts: { 56 | "Email already exists.": "중복된 이메일입니다.", 57 | "Email doesn't match the criteria.": "이메일이 요구 조건에 맞지 않습니다.", 58 | "Invalid login token": "잘못된 로그인 토큰", 59 | "Login forbidden": "허용되지 않은 로그인", 60 | "Service unknown": "알 수 없는 서비스", 61 | "Unrecognized options for login request": "알 수 없는 로그인 요청 정보입니다", 62 | "User validation failed": "인증 실패", 63 | "Username already exists.": "중복된 아이디입니다.", 64 | "You are not logged in.": "로그인 상태가 아닙니다.", 65 | "You've been logged out by the server. Please log in again.": "서버에 의해 로그아웃되었습니다. 다시 로그인해주세요.", 66 | "Your session has expired. Please log in again.": "세션이 만료되었습니다. 다시 로그인해주세요.", 67 | "No matching login attempt found": "해당 로그인 시도를 찾지 못했습니다", 68 | "Password is old. Please reset your password.": "오래된 비밀번호입니다. 변경해주세요.", 69 | "Incorrect password": "잘못된 비밀번호입니다", 70 | "Invalid email": "잘못된 이메일 주소입니다", 71 | "Must be logged in": "로그인이 필요합니다", 72 | "Need to set a username or email": "아이디나 이메일을 입력해주세요", 73 | "old password format": "오래된 비밀번호 형식입니다", 74 | "Password may not be empty": "비밀번호를 입력해주세요", 75 | "Signups forbidden": "가입이 거부되었습니다", 76 | "Token expired": "토큰이 만료되었습니다", 77 | "Token has invalid email address": "토큰에 포함된 이메일 주소가 유효하지 않습니다", 78 | "User has no password set": "설정된 암호가 없습니다", 79 | "User not found": "사용자를 찾을 수 없습니다", 80 | "Verify email link expired": "확인 코드가 만료되었습니다", 81 | "Verify email link is for unknown address": "알 수 없는 인증 메일 주소입니다", 82 | "Match failed": "매치되지 않습니다", 83 | "Unknown error": "알 수 없는 오류" 84 | } 85 | } 86 | } 87 | }; 88 | 89 | T9n.map("ko", ko); 90 | -------------------------------------------------------------------------------- /components/login_dialogs.jsx: -------------------------------------------------------------------------------- 1 | Accounts.ui.Dialogs = React.createClass({ 2 | mixins: [ReactMeteorData], 3 | 4 | getMeteorData(){ 5 | const resetPasswordToken = Meteor.isClient ? Accounts._loginButtonsSession.get('resetPasswordToken') : undefined; 6 | 7 | return {resetPasswordToken}; 8 | }, 9 | 10 | getInitialState(){ 11 | return({ 12 | message: '', 13 | updateDisabled: true, 14 | dialogOpen: false 15 | }); 16 | }, 17 | 18 | componentWillUpdate(){ 19 | this.show(this.data.resetPasswordToken); 20 | }, 21 | 22 | show(resetPasswordToken){ 23 | if (this.isMounted() && !this.state.dialogOpen && resetPasswordToken){ 24 | this.setState({ 25 | dialogOpen: true 26 | }); 27 | } 28 | }, 29 | 30 | componentDidMount(){ 31 | this.show(this.data.resetPasswordToken); 32 | }, 33 | 34 | validatePassword(password){ 35 | return validatePassword(password); 36 | }, 37 | 38 | resetPassword() { 39 | const newPassword = this.refs.newPassword.getValue(); 40 | 41 | if (!this.validatePassword(newPassword)){ 42 | this.showMessage(t9n("error.pwTooShort")); 43 | 44 | return; 45 | } 46 | 47 | Accounts.resetPassword( 48 | this.data.resetPasswordToken, 49 | newPassword, 50 | (error)=>{ 51 | if (error) { 52 | this.showMessage(t9n(`error.accounts.${error.reason}`) || t9n("Unknown error")); 53 | } else { 54 | this.showMessage(t9n('info.passwordChanged')); 55 | this.cancel(); 56 | } 57 | } 58 | ); 59 | }, 60 | 61 | showMessage(message){ 62 | message = message.trim(); 63 | 64 | if (message){ 65 | this.setState({message}); 66 | this.refs.snackbar.show(); 67 | } 68 | }, 69 | 70 | cancel(){ 71 | Accounts._loginButtonsSession.set('resetPasswordToken', null); 72 | 73 | this.setState({ 74 | dialogOpen: false 75 | }); 76 | }, 77 | 78 | updateDisabled() { 79 | if (this.refs.dialog.isOpen()){ 80 | this.setState({updateDisabled: this.refs.newPassword.getValue() === ''}); 81 | } 82 | }, 83 | 84 | render(){ 85 | 86 | const actions = [ 87 | { 88 | text: t9n('cancel'), 89 | onTouchTap: this.cancel 90 | }, 91 | { 92 | text: t9n('changePassword'), 93 | onTouchTap: this.resetPassword, 94 | disabled: this.state.updateDisabled 95 | } 96 | ]; 97 | 98 | return(
99 | 106 |
107 | 114 |
115 |
116 | 117 | 122 |
); 123 | } 124 | }); 125 | -------------------------------------------------------------------------------- /t9n/ca.js: -------------------------------------------------------------------------------- 1 | //Language: Catalan 2 | //Translators: ixdi 3 | 4 | var ca = { 5 | add: "afegir", 6 | and: "i", 7 | back: "enrere", 8 | changePassword: "Canviar contrasenya", 9 | choosePassword: "Escollir contrasenya", 10 | clickAgree: "Al fer clic a Subscriure aproves la", 11 | configure: "Disposició", 12 | createAccount: "Crear compte", 13 | currentPassword: "Contrasenya actual", 14 | dontHaveAnAccount: "No tens un compte?", 15 | email: "Correu", 16 | emailAddress: "Adreça de correu", 17 | emailResetLink: "Reiniciar correu", 18 | forgotPassword: "Has oblidat la contrasenya?", 19 | ifYouAlreadyHaveAnAccount: "Si ja tens un compte", 20 | newPassword: "Nova contrasenya", 21 | newPasswordAgain: "Nova contrasenya (repetir)", 22 | optional: "Opcional", 23 | OR: "O", 24 | password: "Contrasenya", 25 | passwordAgain: "Contrasenya (repetir)", 26 | privacyPolicy: "Política de Privacitat", 27 | remove: "eliminar", 28 | resetYourPassword: "Resetejar la teva contrasenya", 29 | setPassword: "Definir contrasenya", 30 | sign: "Signar", 31 | signIn: "Entrar", 32 | signin: "entrar", 33 | signOut: "Sortir", 34 | signUp: "Subscriure", 35 | signupCode: "Còdi de subscripció", 36 | signUpWithYourEmailAddress: "Subscriure amb el teu correu", 37 | terms: "Termes d'ús", 38 | updateYourPassword: "Actualitzar la teva contrasenya", 39 | username: "Usuari", 40 | usernameOrEmail: "Usuari o correu", 41 | "with": "amb", 42 | info: { 43 | emailSent: "Correu enviat", 44 | emailVerified: "Correu verificat", 45 | passwordChanged: "Contrasenya canviada", 46 | passwordReset: "Reiniciar contrasenya" 47 | }, 48 | error: { 49 | emailRequired: "Es requereix el correu.", 50 | minChar: "7 caràcters mínim.", 51 | pwdsDontMatch: "Les contrasenyes no coincideixen", 52 | pwOneDigit: "mínim un dígit.", 53 | pwOneLetter: "mínim una lletra.", 54 | signInRequired: "Has d'iniciar sessió per a fer això.", 55 | signupCodeIncorrect: "El còdi de subscripció no coincideix.", 56 | signupCodeRequired: "Es requereix el còdi de subscripció.", 57 | usernameIsEmail: "L'usuari no pot ser el correu.", 58 | usernameRequired: "Es requereix un usuari.", 59 | accounts: { 60 | "Email already exists.": "El correu ja existeix.", 61 | "Email doesn't match the criteria.": "El correu no coincideix amb els criteris.", 62 | "User validation failed": "No s'ha pogut validar l'usuari", 63 | "Username already exists.": "L'usuari ja existeix.", 64 | "You've been logged out by the server. Please log in again.": "Has estat desconnectat pel servidor. Si us plau, entra de nou.", 65 | "Your session has expired. Please log in again.": "La teva sessió ha expirat. Si us plau, entra de nou.", 66 | "Incorrect password": "Contrasenya invàlida", 67 | "Must be logged in": "Has d'entrar", 68 | "Need to set a username or email": "Has d'especificar un usuari o un correu", 69 | "Signups forbidden": "Registre prohibit", 70 | "Token expired": "Token expirat", 71 | "Token has invalid email address": "Token conté un correu invàlid", 72 | "User has no password set": "Usuari no té contrasenya", 73 | "User not found": "Usuari no trobat", 74 | "Verify email link expired": "L'enllaç per a verificar el correu ha expirat", 75 | "Verify email link is for unknown address": "L'enllaç per a verificar el correu conté una adreça desconeguda" 76 | } 77 | } 78 | }; 79 | 80 | T9n.map("ca", ca); 81 | -------------------------------------------------------------------------------- /t9n/es.js: -------------------------------------------------------------------------------- 1 | //Language: Spanish 2 | //Translators: softwarerero 3 | 4 | var es = { 5 | add: "agregar", 6 | and: "y", 7 | back: "atrás", 8 | changePassword: "Cambiar contraseña", 9 | choosePassword: "Eligir contraseña", 10 | clickAgree: "Al hacer clic en Sucribir apruebas la", 11 | configure: "Disposición", 12 | createAccount: "Crear cuenta", 13 | currentPassword: "Contraseña actual", 14 | dontHaveAnAccount: "No tienes una cuenta?", 15 | email: "Email", 16 | emailAddress: "Dirección de email", 17 | emailResetLink: "Reiniciar email", 18 | forgotPassword: "Olvidó su contraseña?", 19 | ifYouAlreadyHaveAnAccount: "Si ya tiene una cuenta", 20 | newPassword: "Nueva contraseña", 21 | newPasswordAgain: "Nueva contraseña (repetir)", 22 | optional: "Opcional", 23 | OR: "O", 24 | password: "Contraseña", 25 | passwordAgain: "Contraseña (repetir)", 26 | privacyPolicy: "Póliza de Privacidad", 27 | remove: "remover", 28 | resetYourPassword: "Resetear tu contraseña", 29 | setPassword: "Definir contraseña", 30 | sign: "Ingresar", 31 | signIn: "Entrar", 32 | signin: "entrar", 33 | signOut: "Salir", 34 | signUp: "Registrarse", 35 | signupCode: "Código de registro", 36 | signUpWithYourEmailAddress: "Registrarse con tu email", 37 | terms: "Términos de uso", 38 | updateYourPassword: "Actualizar tu contraseña", 39 | username: "Usuario", 40 | usernameOrEmail: "Usuario o email", 41 | "with": "con", 42 | info: { 43 | emailSent: "Email enviado", 44 | emailVerified: "Email verificado", 45 | passwordChanged: "Contraseña cambiada", 46 | passwordReset: "Resetear contraseña" 47 | }, 48 | error: { 49 | emailRequired: "El email es requerido.", 50 | minChar: "7 caracteres mínimo.", 51 | pwdsDontMatch: "Las contraseñas no coinciden", 52 | pwOneDigit: "mínimo un dígito.", 53 | pwOneLetter: "mínimo una letra.", 54 | signInRequired: "Debes iniciar sesión para hacer eso.", 55 | signupCodeIncorrect: "El código de suscripción no coincide.", 56 | signupCodeRequired: "Se requiere el código de suscripción.", 57 | usernameIsEmail: "El usuario no puede ser el email.", 58 | usernameRequired: "Se requiere un usuario.", 59 | accounts: { 60 | "Email already exists.": "El email ya existe.", 61 | "Email doesn't match the criteria.": "El email no coincide con los criterios.", 62 | "User validation failed": "No se ha podido validar el usuario", 63 | "Username already exists.": "El usuario ya existe.", 64 | "You've been logged out by the server. Please log in again.": "Has sido desconectado por el servidor. Por favor ingresa de nuevo.", 65 | "Your session has expired. Please log in again.": "Tu sesión ha expirado. Por favor ingresa de nuevo.", 66 | "Incorrect password": "Contraseña inválida", 67 | "Must be logged in": "Debes ingresar", 68 | "Need to set a username or email": "Tienes que especificar un usuario o un email", 69 | "Signups forbidden": "Registro prohibido", 70 | "Token expired": "Token expirado", 71 | "Token has invalid email address": "Token contiene un email inválido", 72 | "User has no password set": "Usuario no tiene contraseña", 73 | "User not found": "Usuario no encontrado", 74 | "Verify email link expired": "El enlace para verificar el email ha expirado", 75 | "Verify email link is for unknown address": "El enlace para verificar el email contiene una dirección desconocida" 76 | } 77 | } 78 | }; 79 | 80 | T9n.map("es", es); 81 | -------------------------------------------------------------------------------- /components/login_service.jsx: -------------------------------------------------------------------------------- 1 | Accounts.ui.LoginService = React.createClass({ 2 | mixins: [ReactMeteorData], 3 | 4 | propTypes: { 5 | service: React.PropTypes.object.isRequired 6 | }, 7 | 8 | getMeteorData(){ 9 | return { 10 | service: ServiceConfiguration.configurations.findOne({service: this.props.service.name}) 11 | }; 12 | }, 13 | 14 | configured() { 15 | return !!this.data.service; 16 | }, 17 | 18 | capitalizedName() { 19 | if (this.props.service.name === 'github'){ 20 | return 'GitHub'; 21 | }else if (this.props.service.name === 'meteor-developer'){ 22 | return 'Meteor'; 23 | }else{ 24 | return capitalize(this.props.service.name); 25 | } 26 | }, 27 | 28 | styles(){ 29 | try { 30 | return styles.services[this.props.service.name]; 31 | } catch (e){ 32 | return {}; 33 | } 34 | }, 35 | 36 | handleLogin(event){ 37 | const serviceName = this.props.service.name; 38 | 39 | // XXX Service providers should be able to specify their 40 | // `Meteor.loginWithX` method name. 41 | const loginWithService = Meteor["loginWith" + 42 | (serviceName === 'meteor-developer' ? 43 | 'MeteorDeveloperAccount' : 44 | capitalize(serviceName))]; 45 | 46 | const options = {}; // use default scope unless specified 47 | 48 | if (Accounts.ui._options.requestPermissions[serviceName]){ 49 | options.requestPermissions = Accounts.ui._options.requestPermissions[serviceName]; 50 | } 51 | 52 | if (Accounts.ui._options.requestOfflineToken[serviceName]){ 53 | options.requestOfflineToken = Accounts.ui._options.requestOfflineToken[serviceName]; 54 | } 55 | 56 | if (Accounts.ui._options.forceApprovalPrompt[serviceName]){ 57 | options.forceApprovalPrompt = Accounts.ui._options.forceApprovalPrompt[serviceName]; 58 | } 59 | 60 | loginWithService(options, (err)=>{ 61 | if (err){ 62 | if (err.reason){ 63 | this.showMessage(t9n(`error.accounts.${err.reason}`)) 64 | } else { 65 | this.showMessage(t9n("Unknown error")) 66 | console.log(err); 67 | } 68 | } else { 69 | loginResultCallback(this.props.redirect); 70 | } 71 | }); 72 | }, 73 | 74 | handleConfig(){ 75 | this.refs.config.show(); 76 | }, 77 | 78 | render(){ 79 | let form = 'service'; 80 | const serviceName = this.props.service.name; 81 | 82 | if (this.configured()){ 83 | form = 89 | }else{ 90 | form = 96 | } 97 | 98 | return(
100 | {form} 101 | 104 |
); 105 | } 106 | }); 107 | -------------------------------------------------------------------------------- /t9n/ja.js: -------------------------------------------------------------------------------- 1 | //Language: Japanese 2 | //Translators: y-ich 3 | 4 | var ja = { 5 | add: "足す", 6 | and: "と", 7 | back: "戻る", 8 | changePassword: "パスワードを変更する", 9 | choosePassword: "パスワードを選ぶ", 10 | clickAgree: "「登録」をクリックすると同意したことになります", 11 | configure: "設定する", 12 | createAccount: "アカウントを作る", 13 | currentPassword: "現在のパスワード", 14 | dontHaveAnAccount: "アカウントをお持ちでは無いですか?", 15 | email: "Eメール", 16 | emailAddress: "Eメールアドレス", 17 | emailResetLink: "Eメールリセットリンク", 18 | forgotPassword: "パスワードをお忘れですか?", 19 | ifYouAlreadyHaveAnAccount: "もしも既にアカウントをお持ちなら", 20 | newPassword: "新パスワード", 21 | newPasswordAgain: "新パスワード(確認)", 22 | optional: "オプション", 23 | OR: "または", 24 | password: "パスワード", 25 | passwordAgain: "パスワード(確認)", 26 | privacyPolicy: "プライバシーポリシー", 27 | remove: "削除する", 28 | resetYourPassword: "パスワードをリセットする", 29 | setPassword: "パスワードを設定する", 30 | sign: "サイン", 31 | signIn: "サインインする", 32 | signin: "サインイン", 33 | signOut: "サインアウトする", 34 | signUp: "登録する", 35 | signupCode: "レジストレーションコード", 36 | signUpWithYourEmailAddress: "Eメールアドレスで登録する", 37 | terms: "利用条件", 38 | updateYourPassword: "パスワードを更新する", 39 | username: "ユーザー名", 40 | usernameOrEmail: "ユーザー名またはEメール", 41 | "with": "with", 42 | info: { 43 | emailSent: "Eメールを送りました", 44 | emailVerified: "Eメールが確認されました", 45 | passwordChanged: "パスワードが変更されました", 46 | passwordReset: "パスワードがリセットされました" 47 | }, 48 | error: { 49 | emailRequired: "Eメールが必要です", 50 | minChar: "パスワードには最低7文字必要です", 51 | pwdsDontMatch: "パスワードが違います", 52 | pwOneDigit: "パスワードは少なくとも1つ数字を含む必要があります", 53 | pwOneLetter: "パスワードは少なく遠m1つアルファベットを含む必要があります", 54 | signInRequired: "その操作にはサインインが必要です", 55 | signupCodeIncorrect: "レジストレーションコードが間違っています", 56 | signupCodeRequired: "レジストレーションコードが必要です", 57 | usernameIsEmail: "ユーザー名にEメールアドレスは使えません", 58 | usernameRequired: "ユーザー名が必要です", 59 | accounts: { 60 | "Email already exists.": "そのEメールは既に登録されています", 61 | "Email doesn't match the criteria.": "Eメールが基準を満たしていません", 62 | "Invalid login token": "無効なログイントークンです", 63 | "Login forbidden": "ログインが許可されません", 64 | "Service unknown": "サービスが不明です", 65 | "Unrecognized options for login request": "ログインリクエストのオプションが認識できません", 66 | "User validation failed": "ユーザー確認できません", 67 | "Username already exists.": "そのユーザー名は既に使われています", 68 | "You are not logged in.": "ログインしていません", 69 | "You've been logged out by the server. Please log in again.": "ログアウトされました。再度ログインしてください", 70 | "Your session has expired. Please log in again.": "セッションが切れました。再度ログインしてください", 71 | "No matching login attempt found": "対応のログイン試行が見つかりません", 72 | "Password is old. Please reset your password.": "パスワードが古くなりました。パスワードをリセットしてください", 73 | "Incorrect password": "パスワードが正しくありません", 74 | "Invalid email": "Eメールが無効です", 75 | "Must be logged in": "ログインが必要です", 76 | "Need to set a username or email": "ユーザー名かEメールを設定する必要があります", 77 | "old password format": "パスワード形式が古いものです", 78 | "Password may not be empty": "パスワードが入力されていないようです", 79 | "Signups forbidden": "サインアップが禁止されています", 80 | "Token expired": "トークンが切れました", 81 | "Token has invalid email address": "トークンが無効なEメールアドレスを含んでいます", 82 | "User has no password set": "パスワードが設定されていません", 83 | "User not found": "ユーザーが見つかりません", 84 | "Verify email link expired": "Eメールリンクが切れたか確認する", 85 | "Verify email link is for unknown address": "Eメールリンクが不明なアドレス用か確認する", 86 | "Match failed": "一致しませんでした", 87 | "Unknown error": "不明なエラー" 88 | } 89 | } 90 | }; 91 | 92 | T9n.map("ja", ja); 93 | -------------------------------------------------------------------------------- /t9n/es_ES.js: -------------------------------------------------------------------------------- 1 | //Language: Spanish 2 | //Translators: softwarerero, maomorales 3 | 4 | var es_ES = { 5 | add: "agregar", 6 | and: "y", 7 | back: "atrás", 8 | changePassword: "Cambiar Contraseña", 9 | choosePassword: "Eligir Contraseña", 10 | clickAgree: "Si haces clic en Crear Cuenta estás de acuerdo con la", 11 | configure: "Configurar", 12 | createAccount: "Crear cuenta", 13 | currentPassword: "Contraseña actual", 14 | dontHaveAnAccount: "¿No estás registrado?", 15 | email: "Email", 16 | emailAddress: "Dirección de email", 17 | emailResetLink: "Restaurar email", 18 | forgotPassword: "¿Has olvidado tu contraseña?", 19 | ifYouAlreadyHaveAnAccount: "Ya tienes una cuenta, ", 20 | newPassword: "Nueva Contraseña", 21 | newPasswordAgain: "Nueva Contraseña (repetición)", 22 | optional: "Opcional", 23 | OR: "O", 24 | password: "Contraseña", 25 | passwordAgain: "Contraseña (repetición)", 26 | privacyPolicy: "Póliza de Privacidad", 27 | remove: "remover", 28 | resetYourPassword: "Recuperar tu contraseña", 29 | setPassword: "Definir Contraseña", 30 | sign: "Entrar", 31 | signIn: "Entrar", 32 | signin: "entra", 33 | signOut: "Salir", 34 | signUp: "Regístrate", 35 | signupCode: "Código para registrarte", 36 | signUpWithYourEmailAddress: "Regístrate con tu email", 37 | terms: "Términos de Uso", 38 | updateYourPassword: "Actualizar tu contraseña", 39 | username: "Usuario", 40 | usernameOrEmail: "Usuario o email", 41 | "with": "con", 42 | info: { 43 | emailSent: "Email enviado", 44 | emailVerified: "Email verificado", 45 | passwordChanged: "Contraseña cambiado", 46 | passwordReset: "Resetar Contraseña" 47 | }, 48 | error: { 49 | emailRequired: "El email es necesario.", 50 | minChar: "7 carácteres mínimo.", 51 | pwdsDontMatch: "Contraseñas no coninciden", 52 | pwOneDigit: "mínimo un dígito.", 53 | pwOneLetter: "mínimo una letra.", 54 | signInRequired: "Debes iniciar sesión para esta opción.", 55 | signupCodeIncorrect: "Código de registro inválido.", 56 | signupCodeRequired: "Se requiere un código de registro.", 57 | usernameIsEmail: "El usuario no puede ser una dirección de correo.", 58 | usernameRequired: "Se quiere nombre de usuario.", 59 | accounts: { 60 | "Email already exists.": "El correo ya existe.", 61 | "Email doesn't match the criteria.": "El correo no coincide.", 62 | "User validation failed": "No hemos podido verificar el usuario", 63 | "Username already exists.": "Este usuario ya existe.", 64 | "You've been logged out by the server. Please log in again.": "Has sido desconectado por el servidor. Por favor inicia sesión de nuevo.", 65 | "Your session has expired. Please log in again.": "Tu session ha expirado. Por favor inicia sesión de nuevo.", 66 | "Incorrect password": "Contraseña inválida", 67 | "Must be logged in": "Debes iniciar sesión", 68 | "Need to set a username or email": "Debes especificar un usuario o email", 69 | "Signups forbidden": "Los registros no están permitidos en este momento", 70 | "Token expired": "El token ha expirado", 71 | "Token has invalid email address": "EL token contiene un email inválido", 72 | "User has no password set": "El usuario no tiene contraseña", 73 | "User not found": "Usuario no encontrado", 74 | "Verify email link expired": "El enlace para verificar el email ha expierado", 75 | "Verify email link is for unknown address": "El enlace para verificar el email está asociado a una dirección desconocida" 76 | } 77 | } 78 | }; 79 | 80 | T9n.map("es_ES", es_ES); 81 | -------------------------------------------------------------------------------- /t9n/he.js: -------------------------------------------------------------------------------- 1 | //Language: Hebrew 2 | //Translators: noamyoungerm 3 | 4 | 5 | var he = { 6 | add: "הוסף", 7 | and: "ו", 8 | back: "חזרה", 9 | changePassword: "שינוי סיסמא", 10 | choosePassword: "בחירת סיסמא", 11 | clickAgree: "על ידי לחיצה על הירשם, הינך מסכים", 12 | configure: "הגדרות", 13 | createAccount: "הוספת חשבון", 14 | currentPassword: "סיסמא נוכחית", 15 | dontHaveAnAccount: "אין לך חשבון?", 16 | email: "דוא\"ל", 17 | emailAddress: "דוא\"ל", 18 | emailResetLink: "שלח קישור לאיפוס סיסמא", 19 | forgotPassword: "שכחת סיסמא?", 20 | ifYouAlreadyHaveAnAccount: "אם יש לך חשבון", 21 | newPassword: "סיסמא חדשה", 22 | newPasswordAgain: "סיסמא חדשה (שוב)", 23 | optional: "רשות", 24 | OR: "או", 25 | password: "סיסמא", 26 | passwordAgain: "סיסמא (שוב)", 27 | privacyPolicy: "למדיניות הפרטיות", 28 | remove: "הסרה", 29 | resetYourPassword: "איפוס סיסמא", 30 | setPassword: "עדכון סיסמא", 31 | signIn: "כניסה", 32 | signin: "כניסה", 33 | signOut: "יציאה", 34 | signUp: "הרשמה לחשבון", 35 | signupCode: "קוד הרשמה", 36 | signUpWithYourEmailAddress: "הירשם באמצעות הדוא\"ל", 37 | terms: "לתנאי השימוש", 38 | updateYourPassword: "עדכון סיסמא", 39 | username: "שם משתמש", 40 | usernameOrEmail: "שם משמש או דוא\"ל", 41 | "with": "עם", 42 | info: { 43 | emailSent: "נשלחה הודעה לדוא\"ל", 44 | emailVerified: "כתובת הדוא\"ל וודאה בהצלחה", 45 | passwordChanged: "סיסמתך שונתה בהצלחה", 46 | passwordReset: "סיסמתך אופסה בהצלחה" 47 | }, 48 | error: { 49 | emailRequired: "חובה להזין כתובת דוא\"ל", 50 | minChar: "חובה להזין סיסמא בעלת 7 תווים לפחות.", 51 | pwdsDontMatch: "הסיסמאות אינן זהות.", 52 | pwOneDigit: "הסיסמא חייבת לכלול ספרה אחת לפחות.", 53 | pwOneLetter: "הסיסמא חייבת לכלול אות אחת לפחות.", 54 | signInRequired: "חובה להיכנס למערכת כדי לבצע פעולה זו.", 55 | signupCodeIncorrect: "קוד ההרשמה שגוי.", 56 | signupCodeRequired: "חובה להזין את קוד ההרשמה.", 57 | usernameIsEmail: "של המשתמש לא יכול להיות כתובת דוא\"ל.", 58 | usernameRequired: "חובה להזין שם משתמש.", 59 | accounts: { 60 | "Email already exists.": "הדוא\"ל כבר רשום לחשבון.", 61 | "Email doesn't match the criteria.": "הדוא\"ל לא מקיים את הקריטריונים.", 62 | "Invalid login token": "Token כניסה שגוי", 63 | "Login forbidden": "הכניסה נאסרה", 64 | "Service unknown": "Service לא ידוע", 65 | "Unrecognized options for login request": "נסיון הכניסה כלל אופציות לא מזוהות", 66 | "User validation failed": "אימות המשתמש נכשל", 67 | "Username already exists.": "שם המשתמש כבר קיים.", 68 | "You are not logged in.": "לא נכנסת לחשבון.", 69 | "You've been logged out by the server. Please log in again.": "השרת הוציא אותך מהמערכת. נא להיכנס לחשבונך שוב.", 70 | "Your session has expired. Please log in again.": "ה-session שלך פג תוקף. נא להיכנס לחשבונך שוב.", 71 | "No matching login attempt found": "לא נמצא נסיון כניסה מתאים", 72 | "Password is old. Please reset your password.": "סיסמתך ישנה. נא להחליך אותה.", 73 | "Incorrect password": "סיסמא שגויה", 74 | "Invalid email": "דוא\"ל שגוי", 75 | "Must be logged in": "חובה להיכנס למערכת כדי לבצע פעולה זו.", 76 | "Need to set a username or email": "חובה להגדיר שם משתמש או דוא\"ל", 77 | "old password format": "פורמט סיסמא ישן", 78 | "Password may not be empty": "הסיסמא לא יכולה להיות ריקה", 79 | "Signups forbidden": "אסור להירשם", 80 | "Token expired": "ה-token פג תוקף", 81 | "Token has invalid email address": "ה-token מכיל כתובת דוא\"ל שגוייה", 82 | "User has no password set": "למשתמש אין סיסמא", 83 | "User not found": "המשתמש לא נמצא", 84 | "Verify email link expired": "קישור וידוי הדוא\"ל פג תוקף", 85 | "Verify email link is for unknown address": "קישור וידוי הדוא\"ל הוא לכתובת לא ידועה", 86 | "Match failed": "ההתאמה נכשלה", 87 | "Unknown error": "שגיאה לא ידועה" 88 | } 89 | } 90 | }; 91 | 92 | T9n.map("he", he); 93 | -------------------------------------------------------------------------------- /t9n/fa.js: -------------------------------------------------------------------------------- 1 | //Language: Farsi 2 | //Translators: pajooh 3 | 4 | var fa = { 5 | add: "افزودن", 6 | and: "و", 7 | back: "برگشت", 8 | changePassword: "تعویض گذرواژه", 9 | choosePassword: "انتخاب یک گذرواژه", 10 | clickAgree: "با انتخاب ثبت‌نام، شما موافق هستید با", 11 | configure: "پیکربندی", 12 | createAccount: "ایجاد یک حساب", 13 | currentPassword: "گذرواژه کنونی", 14 | dontHaveAnAccount: "یک حساب ندارید؟", 15 | email: "رایانامه", 16 | emailAddress: "آدرس رایانامه", 17 | emailResetLink: "پیوند بازنشانی رایانامه", 18 | forgotPassword: "گذرواژه‌تان را فراموش کرده‌اید؟", 19 | ifYouAlreadyHaveAnAccount: "اگر هم‌اکنون یک حساب دارید", 20 | newPassword: "گذرواژه جدید", 21 | newPasswordAgain: "گذرواژه جدید (تکرار)", 22 | optional: "اختيارى", 23 | OR: "یا", 24 | password: "گذرواژه", 25 | passwordAgain: "گذرواژه (دوباره)", 26 | privacyPolicy: "حریم خصوصی", 27 | remove: "حذف", 28 | resetYourPassword: "بازنشانی گذرواژه شما", 29 | setPassword: "تنظیم گذرواژه", 30 | sign: "نشان", 31 | signIn: "ورود", 32 | signin: "ورود", 33 | signOut: "خروج", 34 | signUp: "ثبت‌نام", 35 | signupCode: "کد ثبت‌نام", 36 | signUpWithYourEmailAddress: "با آدرس رایانامه‌تان ثبت‌نام کنید", 37 | terms: "قوانین استفاده", 38 | updateYourPassword: "گذرواژه‌تان را به روز کنید", 39 | username: "نام کاربری", 40 | usernameOrEmail: "نام کاربری یا رایانامه", 41 | "with": "با", 42 | info: { 43 | emailSent: "رایانامه ارسال شد", 44 | emailVerified: "رایانامه تایید شد", 45 | passwordChanged: "گذرواژه تغییر کرد", 46 | passwordReset: "گذرواژه بازنشانی شد" 47 | }, 48 | error: { 49 | emailRequired: "رایانامه ضروری است.", 50 | minChar: "گذرواژه حداقل ۷ کاراکتر.", 51 | pwdsDontMatch: "گذرواژه‌ها تطابق ندارند", 52 | pwOneDigit: "گذرواژه باید لااقل یک رقم داشته باشد.", 53 | pwOneLetter: "گذرواژه یک حرف نیاز دارد.", 54 | signInRequired: "برای انجام آن باید وارد شوید.", 55 | signupCodeIncorrect: "کد ثبت‌نام نادرست است.", 56 | signupCodeRequired: "کد ثبت‌نام ضروری است.", 57 | usernameIsEmail: "نام کاربری نمی‌توان آدرس رایانامه باشد.", 58 | usernameRequired: "نام کاربری ضروری است.", 59 | accounts: { 60 | "Email already exists.": "رایانامه هم‌اکنون وجود دارد.", 61 | "Email doesn't match the criteria.": "رایانامه با ضوابط تطابق ندارد.", 62 | "Invalid login token": "علامت ورود نامعتبر است", 63 | "Login forbidden": "ورود ممنوع است", 64 | "Service unknown": "سرویس ناشناس", 65 | "Unrecognized options for login request": "گزینه‌های نامشخص برای درخواست ورود", 66 | "User validation failed": "اعتبارسنجی کاربر ناموفق", 67 | "Username already exists.": "نام کاربری هم‌اکنون وجود دارد.", 68 | "You are not logged in.": "شما وارد نشده‌اید.", 69 | "You've been logged out by the server. Please log in again.": "شما توسط سرور خارج شده‌اید. لطفأ دوباره وارد شوید.", 70 | "Your session has expired. Please log in again.": "جلسه شما منقضی شده است. لطفا دوباره وارد شوید.", 71 | "No matching login attempt found": "تلاش ورود مطابق یافت نشد", 72 | "Password is old. Please reset your password.": "گذرواژه قدیمی است. لطفأ گذرواژه‌تان را بازتنظیم کنید.", 73 | "Incorrect password": "گذرواژه نادرست", 74 | "Invalid email": "رایانامه نامعتبر", 75 | "Must be logged in": "باید وارد شوید", 76 | "Need to set a username or email": "یک نام کاربری یا ایمیل باید تنظیم شود", 77 | "old password format": "قالب گذرواژه قدیمی", 78 | "Password may not be empty": "گذرواژه نمی‌تواند خالی باشد", 79 | "Signups forbidden": "ثبت‌نام ممنوع", 80 | "Token expired": "علامت رمز منقظی شده است", 81 | "Token has invalid email address": "علامت رمز دارای آدرس رایانامه نامعتبر است", 82 | "User has no password set": "کاربر گذرواژه‌ای تنظیم نکرده است", 83 | "User not found": "کاربر یافت نشد", 84 | "Verify email link expired": "پیوند تایید رایانامه منقضی شده است", 85 | "Verify email link is for unknown address": "پیوند تایید رایانامه برای آدرس ناشناخته است", 86 | "Match failed": "تطابق ناموفق", 87 | "Unknown error": "خطای ناشناخته" 88 | } 89 | } 90 | }; 91 | 92 | T9n.map("fa", fa); 93 | -------------------------------------------------------------------------------- /t9n/sl.js: -------------------------------------------------------------------------------- 1 | //Language: Slovenian 2 | //Translators: alesvaupotic 3 | 4 | var sl = { 5 | add: "dodaj", 6 | and: "in", 7 | back: "nazaj", 8 | changePassword: "Spremeni geslo", 9 | choosePassword: "Izberi geslo", 10 | clickAgree: "S klikom na Registracija se strinjaš", 11 | configure: "Nastavi", 12 | createAccount: "Nova registracija", 13 | currentPassword: "Trenutno geslo", 14 | dontHaveAnAccount: "Nisi registriran(a)?", 15 | email: "Email", 16 | emailAddress: "Email naslov", 17 | emailResetLink: "Pošlji ponastavitveno povezavo", 18 | forgotPassword: "Pozabljeno geslo?", 19 | ifYouAlreadyHaveAnAccount: "Če si že registriran(a),", 20 | newPassword: "Novo geslo", 21 | newPasswordAgain: "Novo geslo (ponovno)", 22 | optional: "Po želji", 23 | OR: "ALI", 24 | password: "Geslo", 25 | passwordAgain: "Geslo (ponovno)", 26 | privacyPolicy: "z našimi pogoji uporabe", 27 | remove: "briši", 28 | resetYourPassword: "Ponastavi geslo", 29 | setPassword: "Nastavi geslo", 30 | sign: "Prijava", 31 | signIn: "Prijava", 32 | signin: "se prijavi", 33 | signOut: "Odjava", 34 | signUp: "Registracija", 35 | signupCode: "Prijavna koda", 36 | signUpWithYourEmailAddress: "Prijava z email naslovom", 37 | terms: "Pogoji uporabe", 38 | updateYourPassword: "Spremeni geslo", 39 | username: "Uporabniško ime", 40 | usernameOrEmail: "Uporabniško ime ali email", 41 | "with": "z", 42 | info: { 43 | emailSent: "E-pošta poslana", 44 | emailVerified: "Email naslov preverjen", 45 | passwordChanged: "Geslo spremenjeno", 46 | passwordReset: "Geslo ponastavljeno" 47 | }, 48 | error: { 49 | emailRequired: "Email je obvezen vnos.", 50 | minChar: "Geslo mora imeti vsaj sedem znakov.", 51 | pwdsDontMatch: "Gesli se ne ujemata", 52 | pwOneDigit: "V geslu mora biti vsaj ena številka.", 53 | pwOneLetter: "V geslu mora biti vsaj ena črka.", 54 | signInRequired: "Za to moraš biti prijavljen(a).", 55 | signupCodeIncorrect: "Prijavna koda je napačna.", 56 | signupCodeRequired: "Prijavna koda je obvezen vnos.", 57 | usernameIsEmail: "Uporabniško ime ne more biti email naslov.", 58 | usernameRequired: "Uporabniško ime je obvezen vnos.", 59 | accounts: { 60 | "Email already exists.": "Email že obstaja.", 61 | "Email doesn't match the criteria.": "Email ne odgovarja kriterijem.", 62 | "Invalid login token": "Napačen prijavni žeton", 63 | "Login forbidden": "Prijava ni dovoljena", 64 | "Service unknown": "Neznana storitev", 65 | "Unrecognized options for login request": "Neznane možnosti v prijavnem zahtevku", 66 | "User validation failed": "Preverjanje uporabnika neuspešno", 67 | "Username already exists.": "Uporabniško ime že obstaja", 68 | "You are not logged in.": "Nisi prijavljen(a).", 69 | "You've been logged out by the server. Please log in again.": "Odjavljen(a) si s strežnika. Ponovi prijavo.", 70 | "Your session has expired. Please log in again.": "Seja je potekla. Ponovi prijavo.", 71 | "No matching login attempt found": "Prijava ne obstaja", 72 | "Password is old. Please reset your password.": "Geslo je staro. Zamenjaj ga.", 73 | "Incorrect password": "Napačno geslo", 74 | "Invalid email": "Napačen email", 75 | "Must be logged in": "Moraš biti prijavljane(a)", 76 | "Need to set a username or email": "Prijava ali email sta obvezna", 77 | "old password format": "stara oblika gesla", 78 | "Password may not be empty": "Geslo ne sme biti prazno", 79 | "Signups forbidden": "Prijave onemogočene", 80 | "Token expired": "Žeton je potekel", 81 | "Token has invalid email address": "Žeton vsebuje napačen email", 82 | "User has no password set": "Uporabnik nima gesla", 83 | "User not found": "Uporabnik ne obstaja", 84 | "Verify email link expired": "Povezava za potrditev je potekla", 85 | "Verify email link is for unknown address": "Povezava za potrditev vsebuje neznan naslov", 86 | "Match failed": "Prijava neuspešna", 87 | "Unknown error": "Neznana napaka" 88 | } 89 | } 90 | }; 91 | 92 | T9n.map("sl", sl); 93 | -------------------------------------------------------------------------------- /t9n/da.js: -------------------------------------------------------------------------------- 1 | //Language: Danish 2 | //Translators: LarsBuur 3 | 4 | var da = { 5 | add: "tilføj", 6 | and: "og", 7 | back: "tilbage", 8 | changePassword: "Skift kodeord", 9 | choosePassword: "Vælg kodeord", 10 | clickAgree: "Ved at klikke på tilmeld accepterer du vores", 11 | configure: "Konfigurer", 12 | createAccount: "Opret konto", 13 | currentPassword: "Nuværende kodeord", 14 | dontHaveAnAccount: "Har du ikke en konto?", 15 | email: "E-mail", 16 | emailAddress: "E-mail adresse", 17 | emailResetLink: "Nulstil E-mail Link", 18 | forgotPassword: "Glemt kodeord?", 19 | ifYouAlreadyHaveAnAccount: "Hvis jeg allerede har en konto", 20 | newPassword: "Nyt kodeord", 21 | newPasswordAgain: "Nyt kodeord (igen)", 22 | optional: "Frivilligt", 23 | OR: "eller", 24 | password: "Kodeord", 25 | passwordAgain: "Kodeord (igen)", 26 | privacyPolicy: "Privatlivspolitik", 27 | remove: "fjern", 28 | resetYourPassword: "Nulstil dit kodeord", 29 | setPassword: "Sæt kodeord", 30 | sign: "Log", 31 | signIn: "Log ind", 32 | signin: "Log ind", 33 | signOut: "Log ud", 34 | signUp: "Tilmeld", 35 | signupCode: "Tilmeldingskode", 36 | signUpWithYourEmailAddress: "Tilmeld med din e-mail adresse", 37 | terms: "Betingelser for brug", 38 | updateYourPassword: "Skift dit kodeord", 39 | username: "Brugernavn", 40 | usernameOrEmail: "Brugernavn eller e-mail", 41 | "with": "med", 42 | info: { 43 | emailSent: "E-mail sendt", 44 | emailVerified: "Email verificeret", 45 | passwordChanged: "Password ændret", 46 | passwordReset: "Password reset" 47 | }, 48 | error: { 49 | emailRequired: "E-mail er påkrævet.", 50 | minChar: "Kodeordet skal være mindst 7 tegn.", 51 | pwdsDontMatch: "De to kodeord er ikke ens.", 52 | pwOneDigit: "Kodeord kræver mindste et tal.", 53 | pwOneLetter: "Kodeord kræver mindst et bogstav.", 54 | signInRequired: "Du skal være logget ind for at kunne gøre det.", 55 | signupCodeIncorrect: "Tilmeldingskode er forkert.", 56 | signupCodeRequired: "Tilmeldingskode er påkrævet.", 57 | usernameIsEmail: "Brugernavn kan ikke være en e-mail adresse.", 58 | usernameRequired: "Brugernavn skal udfyldes.", 59 | accounts: { 60 | "Email already exists.": "E-mail findes allerede.", 61 | "Email doesn't match the criteria.": "E-mail modsvarer ikke kriteriet.", 62 | "Invalid login token": "Invalid log ind token", 63 | "Login forbidden": "Log ind forbudt", 64 | "Service unknown": "Service ukendt", 65 | "Unrecognized options for login request": "Ukendte options for login forsøg", 66 | "User validation failed": "Bruger validering fejlede", 67 | "Username already exists.": "Brugernavn findes allerede.", 68 | "You are not logged in.": "Du er ikke logget ind.", 69 | "You've been logged out by the server. Please log in again.": "Du er blevet logget af serveren. Log ind igen.", 70 | "Your session has expired. Please log in again.": "Din session er udløbet. Log ind igen.", 71 | "No matching login attempt found": "Der fandtes ingen login forsøg", 72 | "Password is old. Please reset your password.": "Kodeordet er for gammelt. Du skal resette det.", 73 | "Incorrect password": "Forkert kodeord", 74 | "Invalid email": "Invalid e-mail", 75 | "Must be logged in": "Du skal være logget ind", 76 | "Need to set a username or email": "Du skal angive enten brugernavn eller e-mail", 77 | "old password format": "gammelt kodeord format", 78 | "Password may not be empty": "Kodeord skal være udfyldt", 79 | "Signups forbidden": "Tilmeldinger forbudt", 80 | "Token expired": "Token udløbet", 81 | "Token has invalid email address": "Token har en invalid e-mail adresse", 82 | "User has no password set": "Bruger har ikke angivet noget kodeord", 83 | "User not found": "Bruger ej fundet", 84 | "Verify email link expired": "Verify email link expired", 85 | "Verify email link is for unknown address": "Verificer e-mail link for ukendt adresse", 86 | "Match failed": "Match fejlede", 87 | "Unknown error": "Ukendt fejl" 88 | } 89 | } 90 | }; 91 | 92 | T9n.map("da", da); 93 | -------------------------------------------------------------------------------- /lib/index.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @summary Accounts UI 3 | * @namespace 4 | * @memberOf Accounts 5 | */ 6 | Accounts.ui = {}; 7 | 8 | Accounts.ui._options = { 9 | requestPermissions: {}, 10 | requestOfflineToken: {}, 11 | forceApprovalPrompt: {} 12 | }; 13 | 14 | // XXX refactor duplicated code in this function 15 | 16 | /** 17 | * @summary Configure the behavior of [`{{> loginButtons}}`](#accountsui). 18 | * @locus Client 19 | * @param {Object} options 20 | * @param {Object} options.requestPermissions Which [permissions](#requestpermissions) to request from the user for each external service. 21 | * @param {Object} options.requestOfflineToken To ask the user for permission to act on their behalf when offline, map the relevant external service to `true`. Currently only supported with Google. See [Meteor.loginWithExternalService](#meteor_loginwithexternalservice) for more details. 22 | * @param {Object} options.forceApprovalPrompt If true, forces the user to approve the app's permissions, even if previously approved. Currently only supported with Google. 23 | * @param {String} options.passwordSignupFields Which fields to display in the user creation form. One of '`USERNAME_AND_EMAIL`', '`USERNAME_AND_OPTIONAL_EMAIL`', '`USERNAME_ONLY`', or '`EMAIL_ONLY`' (default). 24 | */ 25 | Accounts.ui.config = function(options) { 26 | // validate options keys 27 | const VALID_KEYS = ['passwordSignupFields', 'requestPermissions', 'requestOfflineToken', 'forceApprovalPrompt']; 28 | _.each(_.keys(options), function (key) { 29 | if (!_.contains(VALID_KEYS, key)) 30 | throw new Error("Accounts.ui.config: Invalid key: " + key); 31 | }); 32 | 33 | // deal with `passwordSignupFields` 34 | if (options.passwordSignupFields) { 35 | if (_.contains([ 36 | "USERNAME_AND_EMAIL", 37 | "USERNAME_AND_OPTIONAL_EMAIL", 38 | "USERNAME_ONLY", 39 | "EMAIL_ONLY" 40 | ], options.passwordSignupFields)) { 41 | if (Accounts.ui._options.passwordSignupFields) 42 | throw new Error("Accounts.ui.config: Can't set `passwordSignupFields` more than once"); 43 | else 44 | Accounts.ui._options.passwordSignupFields = options.passwordSignupFields; 45 | } else { 46 | throw new Error("Accounts.ui.config: Invalid option for `passwordSignupFields`: " + options.passwordSignupFields); 47 | } 48 | } 49 | 50 | // deal with `requestPermissions` 51 | if (options.requestPermissions) { 52 | _.each(options.requestPermissions, function (scope, service) { 53 | if (Accounts.ui._options.requestPermissions[service]) { 54 | throw new Error("Accounts.ui.config: Can't set `requestPermissions` more than once for " + service); 55 | } else if (!(scope instanceof Array)) { 56 | throw new Error("Accounts.ui.config: Value for `requestPermissions` must be an array"); 57 | } else { 58 | Accounts.ui._options.requestPermissions[service] = scope; 59 | } 60 | }); 61 | } 62 | 63 | // deal with `requestOfflineToken` 64 | if (options.requestOfflineToken) { 65 | _.each(options.requestOfflineToken, function (value, service) { 66 | if (service !== 'google') 67 | throw new Error("Accounts.ui.config: `requestOfflineToken` only supported for Google login at the moment."); 68 | 69 | if (Accounts.ui._options.requestOfflineToken[service]) { 70 | throw new Error("Accounts.ui.config: Can't set `requestOfflineToken` more than once for " + service); 71 | } else { 72 | Accounts.ui._options.requestOfflineToken[service] = value; 73 | } 74 | }); 75 | } 76 | 77 | // deal with `forceApprovalPrompt` 78 | if (options.forceApprovalPrompt) { 79 | _.each(options.forceApprovalPrompt, function (value, service) { 80 | if (service !== 'google') 81 | throw new Error("Accounts.ui.config: `forceApprovalPrompt` only supported for Google login at the moment."); 82 | 83 | if (Accounts.ui._options.forceApprovalPrompt[service]) { 84 | throw new Error("Accounts.ui.config: Can't set `forceApprovalPrompt` more than once for " + service); 85 | } else { 86 | Accounts.ui._options.forceApprovalPrompt[service] = value; 87 | } 88 | }); 89 | } 90 | }; 91 | -------------------------------------------------------------------------------- /t9n/no_NB.js: -------------------------------------------------------------------------------- 1 | //Language: Norwegian bokmål 2 | //Translators: Kjetilge 3 | 4 | var no_NB = { 5 | add: "legg til", 6 | and: "og", 7 | back: "tilbake", 8 | changePassword: "Bytt passord", 9 | choosePassword: "Velg passord", 10 | clickAgree: "Ved å klikke meld på godtar du vår", 11 | configure: "Konfigurer", 12 | createAccount: "Oprett konto", 13 | currentPassword: "Nåværende passord", 14 | dontHaveAnAccount: "Har du ikke en konto?", 15 | email: "E-post", 16 | emailAddress: "E-postadresse", 17 | emailResetLink: "Epost nullstillingslenke", 18 | forgotPassword: "Glemt passord?", 19 | ifYouAlreadyHaveAnAccount: "Hvis du allerede har en konto", 20 | newPassword: "Nytt passord", 21 | newPasswordAgain: "Gjengi nytt passord", 22 | optional: "Frivillig", 23 | OR: "eller", 24 | password: "Passord", 25 | passwordAgain: "Gjengi passord", 26 | privacyPolicy: "Personvern", 27 | remove: "fjern", 28 | resetYourPassword: "Nullstill passord", 29 | setPassword: "Sett passord", 30 | sign: "Logg", 31 | signIn: "Logg inn", 32 | signin: "Logg inn", 33 | signOut: "Logg ut", 34 | signUp: "Meld på", 35 | signupCode: "Påmeldingskode", 36 | signUpWithYourEmailAddress: "Meld på med din e-postadresse", 37 | terms: "Betingelser for bruk", 38 | updateYourPassword: "Oppdater passord", 39 | username: "Brukernavn", 40 | usernameOrEmail: "Brukernavn eller e-epost", 41 | "with": "med", 42 | info: { 43 | emailSent: "E-post sendt", 44 | emailVerified: "E-post bekreftet", 45 | passwordChanged: "Passord endret", 46 | passwordReset: "Passord nullstillt" 47 | }, 48 | error: { 49 | emailRequired: "E-post obligatorisk.", 50 | minChar: "Passordet må ha minst 7 tegn.", 51 | pwdsDontMatch: "Passordene er ikke like.", 52 | pwOneDigit: "Passordet må ha minst ett tall.", 53 | pwOneLetter: "Passordet må ha minst en bokstav.", 54 | signInRequired: "Du må være logget inn for å gjøre dette.", 55 | signupCodeIncorrect: "Påmelding gikk galt.", 56 | signupCodeRequired: "Påmeldingskode kreves.", 57 | usernameIsEmail: "Brukernavn kan ikke være en e-postadresse.", 58 | usernameRequired: "Brukernavn må utfylles.", 59 | accounts: { 60 | "Email already exists.": "E-postadressen finnes allerede.", 61 | "Email doesn't match the criteria.": "E-postadressen møter ikke kriteriet.", 62 | "Invalid login token": "Ugyldig innloggingstegn", 63 | "Login forbidden": "Innlogging forbudt", 64 | "Service unknown": "Ukjent tjeneste", 65 | "Unrecognized options for login request": "Ukjendte valg ved innloggingsforsøk", 66 | "User validation failed": "Brukergodkjenning gikk galt", 67 | "Username already exists.": "Brukernavnet finnes allerede.", 68 | "You are not logged in.": "Du er ikke logget inn.", 69 | "You've been logged out by the server. Please log in again.": "Tjeneren loggt deg ut. Logg inn på ny.", 70 | "Your session has expired. Please log in again.": "Din økt er utløpt. Logg inn på ny.", 71 | "No matching login attempt found": "Fant ingen samsvarende innloggingsførsøk", 72 | "Password is old. Please reset your password.": "Passordet er for gammelt. Nullstill passordet ditt.", 73 | "Incorrect password": "Feil passord", 74 | "Invalid email": "Ugyldig e-postadresse", 75 | "Must be logged in": "Du må være innlogget", 76 | "Need to set a username or email": "Oppgi brukernavn eller e-postadresse", 77 | "old password format": "gammelt passordformat", 78 | "Password may not be empty": "Passord må være utfyllt", 79 | "Signups forbidden": "Påmeldinger ikke tillatt", 80 | "Token expired": "Økten er utløpt", 81 | "Token has invalid email address": "Innloggingstegnet har ugyldig e-postadresse", 82 | "User has no password set": "Brukeren har ikke angitt passord", 83 | "User not found": "Bruker ikke funnet", 84 | "Verify email link expired": "Lenke for e-postbekreftelse er utløpt", 85 | "Verify email link is for unknown address": "Lenke for e-postbekreftelse er for en ukjent adresse", 86 | "Match failed": "Ikke samsvar", 87 | "Unknown error": "Ukjent feil" 88 | } 89 | } 90 | }; 91 | 92 | T9n.map("no_NB", no_NB); 93 | -------------------------------------------------------------------------------- /t9n/tr.js: -------------------------------------------------------------------------------- 1 | //Language: Turkish 2 | //Translators: serkandurusoy 3 | 4 | var tr = { 5 | add: "ekle", 6 | and: "ve", 7 | back: "geri", 8 | changePassword: "Şifre Değiştir", 9 | choosePassword: "Şifre Belirle", 10 | clickAgree: "Kayıta tıklayarak kabul etmiş olacağınız", 11 | configure: "Yapılandır", 12 | createAccount: "Hesap Oluştur", 13 | currentPassword: "Mevcut Şifre", 14 | dontHaveAnAccount: "Hesabın yok mu?", 15 | email: "Eposta", 16 | emailAddress: "Eposta Adresi", 17 | emailResetLink: "Email Reset Link", 18 | forgotPassword: "Şifreni mi unuttun?", 19 | ifYouAlreadyHaveAnAccount: "Zaten bir hesabın varsa", 20 | newPassword: "Yeni Şifre", 21 | newPasswordAgain: "Yeni Şifre (tekrar)", 22 | optional: "İsteğe Bağlı", 23 | OR: "VEYA", 24 | password: "Şifre", 25 | passwordAgain: "Şifre (tekrar)", 26 | privacyPolicy: "Gizlilik Politikası", 27 | remove: "kaldır", 28 | resetYourPassword: "Şifreni sıfırla", 29 | setPassword: "Şifre Belirle", 30 | sign: "Giriş", 31 | signIn: "Giriş", 32 | signin: "Giriş", 33 | signOut: "Çıkış", 34 | signUp: "Kayıt", 35 | signupCode: "Kayıt Kodu", 36 | signUpWithYourEmailAddress: "Eposta adresin ile kaydol", 37 | terms: "Kullanım Şartları", 38 | updateYourPassword: "Şifreni güncelle", 39 | username: "Kullanıcı adı", 40 | usernameOrEmail: "Kullanıcı adı veya şifre", 41 | "with": "için", 42 | info: { 43 | emailSent: "Eposta iletildi", 44 | emailVerified: "Eposta doğrulandı", 45 | passwordChanged: "Şifre değişti", 46 | passwordReset: "Şifre sıfırlandı" 47 | }, 48 | error: { 49 | emailRequired: "Eposta gerekli.", 50 | minChar: "En az 7 karakterli şifre.", 51 | pwdsDontMatch: "Şifreler uyuşmuyor", 52 | pwOneDigit: "Şifre en az bir rakam içermeli.", 53 | pwOneLetter: "Şifre bir harf gerektiriyor.", 54 | signInRequired: "Bunun için önce giriş yapmış olmalısın.", 55 | signupCodeIncorrect: "Kayıt kodu hatalı.", 56 | signupCodeRequired: "Kayıt kodu gerekli.", 57 | usernameIsEmail: "Kullanıcı adı bir eposta adresi olamaz.", 58 | usernameRequired: "Kullanıcı adı gerekli.", 59 | accounts: { 60 | "Email already exists.": "Eposta zaten kayıtlı.", 61 | "Email doesn't match the criteria.": "Eposta kriterleri karşılamıyor.", 62 | "Invalid login token": "Geçersiz giriş işaretçisi", 63 | "Login forbidden": "Girişe izin verilmiyor", 64 | "Service unknown": "Servis tanınmıyor", 65 | "Unrecognized options for login request": "Giriş isteği için tanınmayan seçenekler", 66 | "User validation failed": "Kullanıcı doğrulama başarısız", 67 | "Username already exists.": "Kullanıcı adı zaten kayıtlı.", 68 | "You are not logged in.": "Kullanıcı girişi yapmadın.", 69 | "You've been logged out by the server. Please log in again.": "Sunucu tarafından çıkarıldın. Lütfen tekrar kullanıcı girişi yap.", 70 | "Your session has expired. Please log in again.": "Oturumun zaman aşımına uğradı. Lütfen tekrar kullanıcı girişi yap.", 71 | "No matching login attempt found": "Eşleşen bir giriş teşebbüsü bulunamadı", 72 | "Password is old. Please reset your password.": "Şifre eski. Lütfen şifreni sıfırla.", 73 | "Incorrect password": "Hatalı şifre", 74 | "Invalid email": "Hatalı eposta", 75 | "Must be logged in": "Giriş yapmış olmalısın", 76 | "Need to set a username or email": "Kullanıcı adı veya eposta tanımlamalısın", 77 | "old password format": "eski şifre biçimi", 78 | "Password may not be empty": "Şifre boş bırakılamaz", 79 | "Signups forbidden": "Kayıt yapmaya izin verilmiyor", 80 | "Token expired": "İşaretçinin süresi geçti", 81 | "Token has invalid email address": "İşaretçide geçersiz eposta adresi var", 82 | "User has no password set": "Kullanıcının şifresi tanımlanmamış", 83 | "User not found": "Kullanıcı bulunamadı", 84 | "Verify email link expired": "Eposta doğrulama bağlantısı zaman aşımına uğradı", 85 | "Verify email link is for unknown address": "Eposta doğrulama bağlantısı bilinmeyen bir adres içeriyor", 86 | "Match failed": "Eşleşme başarısız", 87 | "Unknown error": "Bilinmeyen hata" 88 | } 89 | } 90 | }; 91 | 92 | T9n.map("tr", tr); 93 | -------------------------------------------------------------------------------- /t9n/ar.js: -------------------------------------------------------------------------------- 1 | //Language: Arabic 2 | //Translators: eahefnawy 3 | 4 | var ar = { 5 | add: "اضف", 6 | and: "و", 7 | back: "رجوع", 8 | changePassword: "غير كلمة السر", 9 | choosePassword: "اختر كلمة السر", 10 | clickAgree: "بفتح حسابك انت توافق على", 11 | configure: "تعديل", 12 | createAccount: "افتح حساب جديد", 13 | currentPassword: "كلمة السر الحالية", 14 | dontHaveAnAccount: "ليس عندك حساب؟", 15 | email: "البريد الالكترونى", 16 | emailAddress: "البريد الالكترونى", 17 | emailResetLink: "اعادة تعيين البريد الالكترونى", 18 | forgotPassword: "نسيت كلمة السر؟", 19 | ifYouAlreadyHaveAnAccount: "اذا كان عندك حساب", 20 | newPassword: "كلمة السر الجديدة", 21 | newPasswordAgain: "كلمة السر الجديدة مرة اخرى", 22 | optional: "اختيارى", 23 | OR: "او", 24 | password: "كلمة السر", 25 | passwordAgain: "كلمة السر مرة اخرى", 26 | privacyPolicy: "سياسة الخصوصية", 27 | remove: "ازالة", 28 | resetYourPassword: "اعادة تعيين كلمة السر", 29 | setPassword: "تعيين كلمة السر", 30 | sign: "تسجيل", 31 | signIn: "تسجيل الدخول", 32 | signin: "تسجيل الدخول", 33 | signOut: "تسجيل الخروج", 34 | signUp: "افتح حساب جديد", 35 | signupCode: "رمز التسجيل", 36 | signUpWithYourEmailAddress: "سجل ببريدك الالكترونى", 37 | terms: "شروط الاستخدام", 38 | updateYourPassword: "جدد كلمة السر", 39 | username: "اسم المستخدم", 40 | usernameOrEmail: "اسم المستخدم او البريد الالكترونى", 41 | "with": "مع", 42 | info: { 43 | emailSent: "تم ارسال البريد الالكترونى", 44 | emailVerified: "تم تأكيد البريد الالكترونى", 45 | passwordChanged: "تم تغيير كلمة السر", 46 | passwordReset: "تم اعادة تعيين كلمة السر" 47 | }, 48 | error: { 49 | emailRequired: "البريد الالكترونى مطلوب", 50 | minChar: "سبعة حروف هو الحد الادنى لكلمة السر", 51 | pwdsDontMatch: "كلمتين السر لا يتطابقان", 52 | pwOneDigit: "كلمة السر يجب ان تحتوى على رقم واحد على الاقل", 53 | pwOneLetter: "كلمة السر تحتاج الى حرف اخر", 54 | signInRequired: "عليك بتسجبل الدخول لفعل ذلك", 55 | signupCodeIncorrect: "رمز التسجيل غير صحيح", 56 | signupCodeRequired: "رمز التسجيل مطلوب", 57 | usernameIsEmail: "اسم المستخدم لا يمكن ان يكون بريد الكترونى", 58 | usernameRequired: "اسم المستخدم مطلوب", 59 | accounts: { 60 | "Email already exists.": "البريد الالكترونى مسجل", 61 | "Email doesn't match the criteria.": "البريد الالكترونى لا يتوافق مع الشروط", 62 | "Invalid login token": "رمز الدخول غير صالح", 63 | "Login forbidden": "تسجيل الدخول غير مسموح", 64 | "Service unknown": "خدمة غير معروفة", 65 | "Unrecognized options for login request": "اختيارات غير معلومة عند تسجيل الدخول", 66 | "User validation failed": "تأكيد المستخدم فشل", 67 | "Username already exists.": "اسم المستخدم مسجل", 68 | "You are not logged in.": "لم تسجل دخولك", 69 | "You've been logged out by the server. Please log in again.": "لقد تم تسجيل خروجك من قبل الخادم. قم بتسجيل الدخول مجددا.", 70 | "Your session has expired. Please log in again.": "لقد انتهت جلستك. قم بتسجيل الدخول مجددا.", 71 | "No matching login attempt found": "لم نجد محاولة دخول مطابقة", 72 | "Password is old. Please reset your password.": "كلمة السر قديمة. قم باعادة تعيين كلمة السر.", 73 | "Incorrect password": "كلمة السر غير صحيحة.", 74 | "Invalid email": "البريد الالكترونى غير صالح", 75 | "Must be logged in": "يجب ان تسجل دخولك", 76 | "Need to set a username or email": "يجب تعيين اسم مستخدم او بريد الكترونى", 77 | "old password format": "صيغة كلمة السر القديمة", 78 | "Password may not be empty": "كلمة السر لا يمكن ان تترك فارغة", 79 | "Signups forbidden": "فتح الحسابات غير مسموح", 80 | "Token expired": "انتهى زمن الرمز", 81 | "Token has invalid email address": "الرمز يحتوى على بريد الكترونى غير صالح", 82 | "User has no password set": "المستخدم لم يقم بتعيين كلمة سر", 83 | "User not found": "اسم المستخدم غير موجود", 84 | "Verify email link expired": "انتهى زمن رابط تأكيد البريد الالكترونى", 85 | "Verify email link is for unknown address": "رابط تأكيد البريد الالكترونى ينتمى الى بريد الكترونى غير معروف", 86 | "Match failed": "المطابقة فشلت", 87 | "Unknown error": "خطأ غير معروف" 88 | } 89 | } 90 | }; 91 | 92 | T9n.map("ar", ar); 93 | -------------------------------------------------------------------------------- /t9n/cs.js: -------------------------------------------------------------------------------- 1 | //Language: Czech 2 | //Translators: mdede 3 | 4 | var cs = { 5 | add: "přidat", 6 | and: "a", 7 | back: "zpět", 8 | changePassword: "Změnte heslo", 9 | choosePassword: "Zvolte heslo", 10 | clickAgree: "Stiskem tlačítka Registrovat souhlasíte s", 11 | configure: "Nastavit", 12 | createAccount: "Vytvořit účet", 13 | currentPassword: "Současné heslo", 14 | dontHaveAnAccount: "Nemáte účet?", 15 | email: "Email", 16 | emailAddress: "Emailová adresa", 17 | emailResetLink: "Odkaz na reset emailu", 18 | forgotPassword: "Zapomenuté heslo?", 19 | ifYouAlreadyHaveAnAccount: "Pokud již máte účet", 20 | newPassword: "Nové heslo", 21 | newPasswordAgain: "Nové heslo (zopakovat)", 22 | optional: "Volitelný", 23 | OR: "nebo", 24 | password: "Heslo", 25 | passwordAgain: "Heslo (zopakovat)", 26 | privacyPolicy: "Nastavení soukromí", 27 | remove: "odstranit", 28 | resetYourPassword: "Resetovat heslo", 29 | setPassword: "Nastavit heslo", 30 | sign: "Přihlášení", 31 | signIn: "Přihlásit se", 32 | signin: "přihlásit se", 33 | signOut: "Odhlásit se", 34 | signUp: "Registrovat", 35 | signupCode: "Registrační kód", 36 | signUpWithYourEmailAddress: "Registrovat se emailovou adresou", 37 | terms: "Podmínky použití", 38 | updateYourPassword: "Aktualizujte si své heslo", 39 | username: "Uživatelské jméno", 40 | usernameOrEmail: "Uživatelské jméno nebo email", 41 | "with": "s", 42 | info: { 43 | emailSent: "Email odeslán", 44 | emailVerified: "Email ověřen", 45 | passwordChanged: "Heslo změněno", 46 | passwordReset: "Heslo resetováno" 47 | }, 48 | error: { 49 | emailRequired: "Email je povinný.", 50 | minChar: "minimální délka hesla je 7 znaků.", 51 | pwdsDontMatch: "Hesla nesouhlasí", 52 | pwOneDigit: "Heslo musí obsahovat alespoň jednu číslici.", 53 | pwOneLetter: "Heslo musí obsahovat alespoň 1 slovo.", 54 | signInRequired: "Musíte být příhlášeni.", 55 | signupCodeIncorrect: "Registrační kód je chybný.", 56 | signupCodeRequired: "Registrační kód je povinný.", 57 | usernameIsEmail: "Uživatelské jméno nemůže být emailová adresa.", 58 | usernameRequired: "Uživatelské jméno je povinné." 59 | }, 60 | accounts: { 61 | "A login handler should return a result or undefined": "Přihlašovací rutina musí vracet výsledek nebo undefined", 62 | "Email already exists.": "Email již existuje.", 63 | "Email doesn't match the criteria.": "Email nesplňuje požadavky.", 64 | "Invalid login token": "Neplatný přihlašovací token", 65 | "Login forbidden": "Přihlášení je zakázáno", 66 | "Service unknown": "Neznámá služba", 67 | "Unrecognized options for login request": "Nerozpoznaná volba přihlašovacího požadavku", 68 | "User validation failed": "Validace uživatele selhala", 69 | "Username already exists.": "Uživatelské jméno již existuje.", 70 | "You are not logged in.": "Nejste přihlášený.", 71 | "You've been logged out by the server. Please log in again.": "Byl jste odhlášen. Prosím přihlašte se znovu.", 72 | "Your session has expired. Please log in again.": "Vaše připojení vypršelo. Prosím přihlašte se znovu.", 73 | "No matching login attempt found": "Nenalezen odpovídající způsob přihlášení", 74 | "Password is old. Please reset your password.": "Heslo je staré. Prosíme nastavte si ho znovu.", 75 | "Incorrect password": "Chybné heslo", 76 | "Invalid email": "Neplatný email", 77 | "Must be logged in": "Uživatel musí být přihlášen", 78 | "Need to set a username or email": "Je třeba zadat uživatelské jméno nebo email", 79 | "old password format": "starý formát hesla", 80 | "Password may not be empty": "Heslo nemůže být prázdné", 81 | "Signups forbidden": "Registrace je zakázaná", 82 | "Token expired": "Token vypršel", 83 | "Token has invalid email address": "Token má neplatnou emailovou adresu", 84 | "User has no password set": "Uživatel nemá nastavené heslo", 85 | "User not found": "Uživatel nenalezen", 86 | "Verify email link expired": "Odkaz pro ověření emailu vypršel", 87 | "Verify email link is for unknown address": "Odkaz pro ověření emailu má neznámou adresu", 88 | "Match failed": "Nesouhlasí", 89 | "Unknown error": "Neznámá chyba" 90 | } 91 | }; 92 | 93 | T9n.map("cs", cs); 94 | -------------------------------------------------------------------------------- /t9n/vi.js: -------------------------------------------------------------------------------- 1 | //Language: Vietnamese 2 | //Translators: olragon 3 | 4 | var vi = { 5 | add: "thêm", 6 | and: "và", 7 | back: "trở lại", 8 | changePassword: "Đổi mật khẩu", 9 | choosePassword: "Chọn một mật khẩu", 10 | clickAgree: "Bằng cách nhấn vào Đăng ký, bạn đã đồng ý với", 11 | configure: "Cấu hình", 12 | createAccount: "Tạo Tài khoản", 13 | currentPassword: "Mật khẩu hiện tại", 14 | dontHaveAnAccount: "Chưa có tài khoản?", 15 | email: "Email", 16 | emailAddress: "Địa chỉ Email", 17 | emailResetLink: "Gửi", 18 | forgotPassword: "Quên mật khẩu?", 19 | ifYouAlreadyHaveAnAccount: "Nếu bạn đã có tài khoản", 20 | newPassword: "Mật khẩu mới", 21 | newPasswordAgain: "Mật khẩu mới (nhập lại)", 22 | optional: "Tùy chọn", 23 | OR: "Hoặc", 24 | password: "Mật khẩu", 25 | passwordAgain: "Mật khẩu (nhập lại)", 26 | privacyPolicy: "Chính sách bảo mật", 27 | remove: "xóa", 28 | resetYourPassword: "Lấy lại mật khẩu", 29 | setPassword: "Thiết lập mật khẩu", 30 | sign: "Ký", 31 | signIn: "Đăng nhập", 32 | signin: "đăng nhập", 33 | signOut: "Đăng xuất", 34 | signUp: "Đăng ký", 35 | signupCode: "Mã đăng ký", 36 | signUpWithYourEmailAddress: "Đăng ký với email của bạn", 37 | terms: "Điều khoản sử dụng", 38 | updateYourPassword: "Cập nhật mật khẩu", 39 | username: "Tên đăng nhập", 40 | usernameOrEmail: "Tên đăng nhập hoặc email", 41 | "with": "với", 42 | info: { 43 | emailSent: "Email đã được gửi đi!", 44 | emailVerified: "Email đã được xác minh", 45 | passwordChanged: "Đã đổi mật khẩu", 46 | passwordReset: "Lất lại mật khẩu" 47 | }, 48 | error: { 49 | emailRequired: "Email phải có.", 50 | minChar: "Mật khẩu phải có ít nhất 7 ký tự.", 51 | pwdsDontMatch: "Mật khẩu không giống nhau", 52 | pwOneDigit: "Mật khẩu phải có ít nhất 1 chữ số.", 53 | pwOneLetter: "Mật khẩu phải có 1 ký tự chữ.", 54 | signInRequired: "Phải đăng nhập.", 55 | signupCodeIncorrect: "Mã số đăng ký sai.", 56 | signupCodeRequired: "Phải có mã số đăng ký.", 57 | usernameIsEmail: "Tên đăng nhập không thể là địa chỉ email.", 58 | usernameRequired: "Phải có tên đăng nhập.", 59 | accounts: { 60 | "A login handler should return a result or undefined": "Bộ xử lý đăng nhập phải trả về một kết quả hoặc undefined", 61 | "Email already exists.": "Email đã tồn tại.", 62 | "Email doesn't match the criteria.": "Email không phù hợp.", 63 | "Invalid login token": "Mã đăng nhập không đúng", 64 | "Login forbidden": "Đăng nhập bị cấm", 65 | "Service unknown": "Chưa biết Dịch vụ", 66 | "Unrecognized options for login request": "Tùy chọn không được công nhận đối với yêu cầu đăng nhập", 67 | "User validation failed": "Xác nhận người dùng thất bại", 68 | "Username already exists.": "Tên đăng nhập đã tồn tại.", 69 | "You are not logged in.": "Bạn chưa đăng nhập.", 70 | "You've been logged out by the server. Please log in again.": "Bạn đã bị đăng xuất bởi máy chủ. Vui lòng đăng nhập lại.", 71 | "Your session has expired. Please log in again.": "Thời gian đăng nhập đã hết. Vui lòng đăng nhập lại.", 72 | "No matching login attempt found": "Không tìm thấy đăng nhập phù hợp", 73 | "Password is old. Please reset your password.": "Mật khẩu đã cũ. Vui lòng lấy lại mật khẩu.", 74 | "Incorrect password": "Mật khẩu sai", 75 | "Invalid email": "Email sai", 76 | "Must be logged in": "Phải đăng nhập", 77 | "Need to set a username or email": "Phải điền tên đăng nhập hoặc email", 78 | "old password format": "định dạng mật khẩu cũ", 79 | "Password may not be empty": "mật khẩu không được để trống", 80 | "Signups forbidden": "Đăng ký đã bị cấm", 81 | "Token expired": "Hết phiên đăng nhập", 82 | "Token has invalid email address": "Phiên đăng nhập chứa địa chỉ email sai", 83 | "User has no password set": "Người dùng chưa có mật khẩu", 84 | "User not found": "Không tìm thấy người dùng", 85 | "Verify email link expired": "Đường dẫn xác nhận email đã hết hạn", 86 | "Verify email link is for unknown address": "Đường dẫn xác nhận email là cho địa chỉ chưa xác định", 87 | "Match failed": "Không đúng", 88 | "Unknown error": "Lỗi chưa được biết" 89 | } 90 | } 91 | }; 92 | 93 | T9n.map("vi", vi); 94 | -------------------------------------------------------------------------------- /t9n/ro.js: -------------------------------------------------------------------------------- 1 | //Language: Romanian 2 | //Translators: alexhuszar 3 | 4 | var ro = { 5 | add: "adaugă", 6 | and: "și", 7 | back: "înapoi", 8 | changePassword: "Schimbare parolă", 9 | choosePassword: "Alege o parolă", 10 | clickAgree: "Click pe Register, sunteți de acord", 11 | configure: "Configurare", 12 | createAccount: "Creați un cont", 13 | currentPassword: "Parola curentă", 14 | dontHaveAnAccount: "Nu ai un cont?", 15 | email: "E-mail", 16 | emailAddress: "Adresa de e-mail", 17 | emailResetLink: "Link de resetare parolă", 18 | forgotPassword: "Ți-ai uitat parola?", 19 | ifYouAlreadyHaveAnAccount: "Dacă ai deja un cont", 20 | newPassword: "Parolă nouă", 21 | newPasswordAgain: "Parolă nouă (din nou)", 22 | optional: "Opțional", 23 | OR: "SAU", 24 | password: "Parolă", 25 | passwordAgain: "Parolă (din nou)", 26 | privacyPolicy: "Politica de confidentialitate", 27 | remove: "Elimină", 28 | resetYourPassword: "Schimbati parola", 29 | setPassword: "Setati parola", 30 | sign: "Înregistrează", 31 | signIn: "Autentificare", 32 | signin: "Autentificare", 33 | signOut: "Deconectare", 34 | signUp: "Înregistrare", 35 | signupCode: "Codul de înregistrare", 36 | signUpWithYourEmailAddress: "Înregistrați-vă adresa de e-mail", 37 | terms: "Condiții de utilizare", 38 | updateYourPassword: "Actualizați parola dvs.", 39 | username: "Nume utilizator", 40 | usernameOrEmail: "Nume utilizator sau e-mail", 41 | "with": "cu", 42 | info: { 43 | emailSent: "Email trimis", 44 | emailVerified: "Email verificat", 45 | passwordChanged: "Parola a fost schimbata", 46 | passwordReset: "Resetare parola" 47 | }, 48 | error: { 49 | emailRequired: "Introduceti Email-ul.", 50 | minChar: "Parolă minima de 7 caractere ", 51 | pwdsDontMatch: "Parolele nu se potrivesc", 52 | pwOneDigit: "Parola trebuie să contină cel puțin o cifră.", 53 | pwOneLetter: "Parola necesită o scrisoare.", 54 | signInRequired: "Autentificare.", 55 | signupCodeIncorrect: "Codul de înregistrare este incorectă.", 56 | signupCodeRequired: "Aveti nevoie de cod de înregistrare.", 57 | usernameIsEmail: "Numele de utilizator nu poate fi o adresă de e-mail.", 58 | usernameRequired: "Introduceti numele de utilizator.", 59 | accounts: { 60 | "Email already exists.": "E-mail există deja.", 61 | "Email doesn't match the criteria.": "E-mail nu se potrivește cu criteriile.", 62 | "Invalid login token": "Token invalid", 63 | "Login forbidden": "Autentificare interzisă", 64 | "Service unknown": "Service necunoscut", 65 | "Unrecognized options for login request": "Opțiuni nerecunoscute de cerere de conectare", 66 | "User validation failed": "Validare utilizator nereușit", 67 | "Username already exists.": "Numele de utilizator existent.", 68 | "You are not logged in.": "Nu sunteti autentificat.", 69 | "You've been logged out by the server. Please log in again.": "Ați fost deconectat de către server rugam sa va logati din nou.", 70 | "Your session has expired. Please log in again.": "Sesiunea a expirat rugam sa va logati din nou.", 71 | "No matching login attempt found": "Autentificare nereusită", 72 | "Password is old. Please reset your password.": "Parola expirata, Vă rugăm să resetati parola.", 73 | "Incorrect password": "Parola incorectă", 74 | "Invalid email": "E-mail invalid", 75 | "Must be logged in": "Trebuie sa fii logat", 76 | "Need to set a username or email": "Adaugati un nume utilizator sau un e-mail", 77 | "old password format": "Parola cu format vechi", 78 | "Password may not be empty": "Parola nu poate fi gol", 79 | "Signups forbidden": "Înscrieri interzisă", 80 | "Token expired": "Token expirat", 81 | "Token has invalid email address": "Token are adresă de email invalidă", 82 | "User has no password set": "Utilizator nu are parola setată", 83 | "User not found": "Utilizator nu a fost găsit", 84 | "Verify email link expired": "Link-ul de e-mail a expirat", 85 | "Verify email link is for unknown address": "Link-ul de e-mail nu corespunde", 86 | "Match failed": "Potrivire nereușită", 87 | "Unknown error": "Eroare necunoscută" 88 | } 89 | } 90 | }; 91 | 92 | T9n.map("ro", ro); 93 | -------------------------------------------------------------------------------- /t9n/uk.js: -------------------------------------------------------------------------------- 1 | //Language: Ukrainian 2 | //Translators: SkeLLLa 3 | 4 | var uk = { 5 | add: "додати", 6 | and: "та", 7 | back: "назад", 8 | changePassword: "Змінити пароль", 9 | choosePassword: "Придумайте пароль", 10 | clickAgree: "Натиснувши на Реєстрація ви погоджуєтеся з умовами", 11 | configure: "Налаштувати", 12 | createAccount: "Створити аккаунт", 13 | currentPassword: "Діючий пароль", 14 | dontHaveAnAccount: "Немає аккаунта?", 15 | email: "Email", 16 | emailAddress: "Email", 17 | emailResetLink: "Отримати посилання для оновлення паролю", 18 | forgotPassword: "Забули пароль?", 19 | ifYouAlreadyHaveAnAccount: "Якщо у вас вже є аккаунт:", 20 | newPassword: "Новий пароль", 21 | newPasswordAgain: "Новий пароль (ще раз)", 22 | optional: "Необов’язково", 23 | OR: "АБО", 24 | password: "Пароль", 25 | passwordAgain: "Пароль (ще раз)", 26 | privacyPolicy: "Політики безпеки", 27 | remove: "Видалити", 28 | resetYourPassword: "Відновити пароль", 29 | setPassword: "Встановити пароль", 30 | sign: "Підпис", 31 | signIn: "Увійти", 32 | signin: "увійти", 33 | signOut: "Вийти", 34 | signUp: "Зареєструватися", 35 | signupCode: "Реєстраційний код", 36 | signUpWithYourEmailAddress: "Зареєструйтесь з вашою email адресою", 37 | terms: "Умовами користування", 38 | updateYourPassword: "Оновити пароль", 39 | username: "Ім’я користувача", 40 | usernameOrEmail: "Ім’я користувача або email", 41 | "with": "з", 42 | info: { 43 | emailSent: "Email відправлено", 44 | emailVerified: "Email пройшов перевірку", 45 | passwordChanged: "Пароль змінено", 46 | passwordReset: "Пароль скинуто" 47 | }, 48 | error: { 49 | emailRequired: "Email є обов’язковим.", 50 | minChar: "Мінімальна кіл-ть символів для паролю 7.", 51 | pwdsDontMatch: "Паролі не співпадають", 52 | pwOneDigit: "Пароль повинен містити хоча б одну цифру.", 53 | pwOneLetter: "Пароль повинен містити хоча б одну букву.", 54 | signInRequired: "Для продовження необхідно увійти.", 55 | signupCodeIncorrect: "Невірний реєстраційний код.", 56 | signupCodeRequired: "Необхідний реєстраційний код.", 57 | usernameIsEmail: "Ім’я користувача не може бути email адресою.", 58 | usernameRequired: "Ім’я користувача є обов’язковим.", 59 | accounts: { 60 | "Email already exists.": "Email вже існує", 61 | "Email doesn't match the criteria.": "Email відповідає критеріям.", 62 | "Invalid login token": "Невірний токен для входу", 63 | "Login forbidden": "Вхід заборонено", 64 | "Service unknown": "Невідомий сервіс", 65 | "Unrecognized options for login request": "Невідомі параметри для запиту входу", 66 | "User validation failed": "Перевірка користувача не вдалася", 67 | "Username already exists.": "Користувач існує.", 68 | "You are not logged in.": "Ви не ввійшли.", 69 | "You've been logged out by the server. Please log in again.": "Сервер ініціював вихід. Будь ласка увійдіть ще раз.", 70 | "Your session has expired. Please log in again.": "Ваша сесія застаріла. Будь ласка увійдіть ще раз.", 71 | "No matching login attempt found": "Не було знайдено відповідної спроби увійти", 72 | "Password is old. Please reset your password.": "Пароль застарів. Будь ласка, скиньте Ваш пароль.", 73 | "Incorrect password": "Невірний пароль", 74 | "Invalid email": "Неіснуючий Email", 75 | "Must be logged in": "Необхідно увійти", 76 | "Need to set a username or email": "Необхідно ім’я користувача або email", 77 | "old password format": "старий формат паролю", 78 | "Password may not be empty": "Пароль не може бути пустим", 79 | "Signups forbidden": "Реєстрацію відключено", 80 | "Token expired": "Час дії токена вичерпано", 81 | "Token has invalid email address": "Невірна email адреса для токена", 82 | "User has no password set": "У користувача не встановлено пароль", 83 | "User not found": "Користувач не знайдений", 84 | "Verify email link expired": "Посилання підтвердження email застаріло", 85 | "Verify email link is for unknown address": "Посилання підтвердження email для невідомої адреси", 86 | "Match failed": "Не співпадають", 87 | "Unknown error": "Невідома помилка" 88 | } 89 | } 90 | }; 91 | 92 | T9n.map("uk", uk); 93 | -------------------------------------------------------------------------------- /t9n/nl.js: -------------------------------------------------------------------------------- 1 | //Language: Dutch 2 | //Translators: willemx 3 | 4 | var nl = { 5 | add: "toevoegen", 6 | and: "en", 7 | back: "terug", 8 | changePassword: "Wachtwoord wijzigen", 9 | choosePassword: "Wachtwoord kiezen", 10 | clickAgree: "Door te registreren accepteer je onze", 11 | configure: "Configureer", 12 | createAccount: "Account aanmaken", 13 | currentPassword: "Huidige wachtwoord", 14 | dontHaveAnAccount: "Nog geen account?", 15 | email: "E-mail", 16 | emailAddress: "E-mailadres", 17 | emailResetLink: "Verzenden", 18 | forgotPassword: "Wachtwoord vergeten?", 19 | ifYouAlreadyHaveAnAccount: "Heb je al een account?", 20 | newPassword: "Nieuwe wachtwoord", 21 | newPasswordAgain: "Nieuwe wachtwoord (herhalen)", 22 | optional: "Optioneel", 23 | OR: "OF", 24 | password: "Wachtwoord", 25 | passwordAgain: "Wachtwoord (herhalen)", 26 | privacyPolicy: "privacyverklaring", 27 | remove: "verwijderen", 28 | resetYourPassword: "Wachtwoord resetten", 29 | setPassword: "Wachtwoord instellen", 30 | sign: "Aanmelden", 31 | signIn: "Aanmelden", 32 | signin: "aanmelden", 33 | signOut: "Afmelden", 34 | signUp: "Registreren", 35 | signupCode: "Registratiecode", 36 | signUpWithYourEmailAddress: "Met e-mailadres registreren", 37 | terms: "gebruiksvoorwaarden", 38 | updateYourPassword: "Wachtwoord veranderen", 39 | username: "Gebruikersnaam", 40 | usernameOrEmail: "Gebruikersnaam of e-mailadres", 41 | "with": "met", 42 | info: { 43 | emailSent: "E-mail verzonden", 44 | emailVerified: "E-mail geverifieerd", 45 | PasswordChanged: "Wachtwoord gewijzigd", 46 | PasswordReset: "Wachtwoord gereset" 47 | }, 48 | error: { 49 | emailRequired: "E-mailadres is verplicht", 50 | minChar: "Wachtwoord moet tenminste 7 tekens lang zijn.", 51 | pwdsDontMatch: "Wachtwoorden zijn niet gelijk.", 52 | pwOneDigit: "Wachtwoord moet tenminste 1 cijfer bevatten.", 53 | pwOneLetter: "Wachtwoord moet tenminste 1 letter bevatten.", 54 | signInRequired: "Je moet aangemeld zijn.", 55 | signupCodeIncorrect: "Registratiecode is ongeldig.", 56 | signupCodeRequired: "Registratiecode is verplicht.", 57 | usernameIsEmail: "Gebruikersnaam is gelijk aan e-mail.", 58 | usernameRequired: "Gebruikersnaam is verplicht.", 59 | accounts: { 60 | "Email already exists.": "Dit e-mailadres is al in gebruik.", 61 | "Email doesn't match the criteria.": "e-mail voldoet niet aan de voorwaarden.", 62 | "Invalid login token": "Ongeldig inlogtoken", 63 | "Login forbidden": "Aanmelding geweigerd", 64 | "Service unknown": "Sevice onbekend", 65 | "Unrecognized options for login request": "Onbekende optie voor inlogverzoek", 66 | "User validation failed": "Gebruikersvalidatie mislukt", 67 | "Username already exists.": "Gebruikersnaam bestaat al.", 68 | "You are not logged in.": "Je bent niet ingelogd.", 69 | "You've been logged out by the server. Please log in again.": "Je bent door de server afgemeld. Meld a.u.b. opnieuw aan.", 70 | "Your session has expired. Please log in again.": "Je sessie is verlopen. Meld a.u.b. opnieuw aan.", 71 | "No matching login attempt found": "Geen overeenkomstig inlogverzoek gevonden.", 72 | "Password is old. Please reset your Password.": "Wachtwoord is verlopen. Reset a.u.b. uw wachtwoord.", 73 | "Incorrect Password": "Onjuist wachtwoord", 74 | "Invalid email": "Ongeldig e-mailadres", 75 | "Must be logged in": "Je moet aangemeld zijn", 76 | "Need to set a username or email": "Gebruikersnaam of e-mailadres moet ingesteld zijn", 77 | "Password may not be empty": "Wachtwoord mag niet leeg zijn", 78 | "Signups forbidden": "Registratie verboden", 79 | "Token expired": "Token is verlopen", 80 | "Token has invalid email address": "Token heeft ongeldig e-mailadres", 81 | "User has no Password set": "Geen wachtwoord ingesteld voor gebruiker", 82 | "User not found": "Gebruiker niet gevonden", 83 | "Verify email link expired": "Verificatielink is verlopen", 84 | "Verify email link is for unknown address": "Verificatielink is voor onbekend e-mailadres", 85 | "Match failed": "Geen match", 86 | "Unknown error": "Onbekende fout" 87 | } 88 | } 89 | }; 90 | 91 | T9n.map("nl", nl); 92 | -------------------------------------------------------------------------------- /t9n/hr.js: -------------------------------------------------------------------------------- 1 | //Language: Croatian 2 | //Translators: tnedich 3 | 4 | var hr = { 5 | add: "dodaj", 6 | and: "i", 7 | back: "nazad", 8 | changePassword: "Promjeni zaporku", 9 | choosePassword: "Izaberi zaporku", 10 | clickAgree: "Klikom na Registracija, prihvatate naše", 11 | configure: "Podesi", 12 | createAccount: "Napravite račun", 13 | currentPassword: "Trenutna zaporka", 14 | dontHaveAnAccount: "Vi nemate račun?", 15 | email: "Email", 16 | emailAddress: "Email adresa", 17 | emailResetLink: "Email reset link", 18 | forgotPassword: "Zaboravili ste zaporku?", 19 | ifYouAlreadyHaveAnAccount: "Ako već imate račun", 20 | newPassword: "Nova zaporka", 21 | newPasswordAgain: "Nova zaporka (ponovno)", 22 | optional: "neobavezno", 23 | OR: "ili", 24 | password: "Zaporka", 25 | passwordAgain: "Zaporka (ponovno)", 26 | privacyPolicy: "Izjava o privatnosti", 27 | remove: "ukloni", 28 | resetYourPassword: "Resetirajte", 29 | setPassword: "Postavite zaporku", 30 | sign: "Prijava", 31 | signIn: "Prijavi se", 32 | signin: "prijavi se", 33 | signOut: "Odjavi se", 34 | signUp: "Registracija", 35 | signupCode: "Registracijski kod", 36 | signUpWithYourEmailAddress: "Registrirajte se sa vašom email adresom", 37 | terms: "Uslovi korištenja", 38 | updateYourPassword: "Ažurirajte lozinku", 39 | username: "Korisničko ime", 40 | usernameOrEmail: "Korisničko ime ili lozinka", 41 | "with": "sa", 42 | info: { 43 | emailSent: "Email je poslan", 44 | emailVerified: "Email je verificiran", 45 | passwordChanged: "Zaproka promjenjena", 46 | passwordReset: "Zaporka resetirana" 47 | }, 48 | error: { 49 | emailRequired: "Email je potreban.", 50 | minChar: "Zaporka mora sadržavati više od 7 znakova.", 51 | pwdsDontMatch: "Zaporke se ne poklapaju.", 52 | pwOneDigit: "Zaporka mora sadržavati barem jednu brojku.", 53 | pwOneLetter: "Zaporka mora sadržavati barem jedno slovo.", 54 | signInRequired: "Morate biti prijavljeni za to.", 55 | signupCodeIncorrect: "Registracijski kod je netočan.", 56 | signupCodeRequired: "Registracijski kod je potreban.", 57 | usernameIsEmail: "Korisničko ime ne može biti email.", 58 | usernameRequired: "Korisničko ime je potrebno.", 59 | accounts: { 60 | "Email already exists.": "Email već postoji.", 61 | "Email doesn't match the criteria.": "Email ne zadovoljava kriterij.", 62 | "Invalid login token": "Nevažeći token za prijavu", 63 | "Login forbidden": "Prijava zabranjena", 64 | "Service unknown": "Servis nepoznat", 65 | "Unrecognized options for login request": "Neprepoznate opcije zahtjeva za prijavu", 66 | "User validation failed": "Provjera valjanosti za korisnika neuspješna.", 67 | "Username already exists.": "Korisnik već postoji.", 68 | "You are not logged in.": "Niste prijavljeni.", 69 | "You've been logged out by the server. Please log in again.": "Odjavljeni ste sa servera. Molimo Vas ponovno se prijavite.", 70 | "Your session has expired. Please log in again.": "Vaša sesija je istekla. Molimo prijavite se ponovno.", 71 | "No matching login attempt found": "Pokušaj prijave se ne podudara sa podatcima u bazi.", 72 | "Password is old. Please reset your password.": "Zaporka je stara. Molimo resetujte zaporku.", 73 | "Incorrect password": "Netočna zaporka", 74 | "Invalid email": "Nevažeći email", 75 | "Must be logged in": "Morate biti prijavljeni", 76 | "Need to set a username or email": "Morate postaviti korisničko ime ili email", 77 | "old password format": "stari format zaporke", 78 | "Password may not be empty": "Zaporka ne može biti prazna", 79 | "Signups forbidden": "Prijave zabranjenje", 80 | "Token expired": "Token je istekao", 81 | "Token has invalid email address": "Token ima nevažeću email adresu", 82 | "User has no password set": "Korisnik nema postavljenu zaporku", 83 | "User not found": "Korisnik nije pronađen", 84 | "Verify email link expired": "Link za verifikaciju emaila je istekao", 85 | "Verify email link is for unknown address": "Link za verifikaciju emaila je za nepoznatu adresu", 86 | "Match failed": "Usporedba neuspjela", 87 | "Unknown error": "Nepoznata pogreška" 88 | } 89 | } 90 | }; 91 | 92 | T9n.map("hr", hr); 93 | -------------------------------------------------------------------------------- /t9n/sk.js: -------------------------------------------------------------------------------- 1 | // Slovak translation - sk 2 | // Translators: Martin Bucko (MartinBucko) and Rober Kamenicky (aladinko) (treecom.sk) 3 | 4 | var sk = { 5 | add: "pridať", 6 | and: "a", 7 | back: "späť", 8 | changePassword: "Zmena hesla", 9 | choosePassword: "Zvoľte si heslo", 10 | clickAgree: "Stlačením tlačidla \"Registrovať\" akceptujete", 11 | configure: "Nastaviť", 12 | createAccount: "Vytvoriť konto", 13 | currentPassword: "Súčasné heslo", 14 | dontHaveAnAccount: "Nemáte účet?", 15 | email: "Email", 16 | emailAddress: "Emailová adresa", 17 | emailResetLink: "Odoslať na email overovací odkaz", 18 | forgotPassword: "Zabudli ste heslo?", 19 | ifYouAlreadyHaveAnAccount: "Ak už máte vytvorený účet prejdite na", 20 | newPassword: "Nové heslo", 21 | newPasswordAgain: "Nové heslo (opakujte)", 22 | optional: "Voliteľné", 23 | OR: "alebo", 24 | password: "Heslo", 25 | passwordAgain: "Heslo (opakujte)", 26 | privacyPolicy: "pravidlá ochrany súkromia", 27 | remove: "odstrániť", 28 | resetYourPassword: "Obnovenie hesla", 29 | setPassword: "Nastaviť heslo", 30 | sign: "Prihlásiť", 31 | signIn: "Prihlásenie", 32 | signin: "prihlásenie", 33 | signOut: "Odhlásiť", 34 | signUp: "Registrovať", 35 | signupCode: "Registračný kód", 36 | signUpWithYourEmailAddress: "Registrácia pomocou emailovej adresy", 37 | terms: "pravidlá požívania", 38 | updateYourPassword: "Aktualizovať heslo", 39 | username: "Užívateľské meno", 40 | usernameOrEmail: "Užívateľské meno alebo email", 41 | "with": "s", 42 | info: { 43 | emailSent: "Email odoslaný", 44 | emailVerified: "Email bol overený", 45 | passwordChanged: "Heslo bolo zmenené", 46 | passwordReset: "Obnova hesla" 47 | }, 48 | error: { 49 | emailRequired: "Email je vyžadovaný.", 50 | minChar: "minimálne 7 znakov heslo.", 51 | pwdsDontMatch: "Heslá sa nezhodujú", 52 | pwOneDigit: "Heslo musí mať aspoň jeden znak.", 53 | pwOneLetter: "Heslo musí mať aspoň 1 znak..", 54 | signInRequired: "Je vyžadované prihlásenie na túto akciu.", 55 | signupCodeIncorrect: "Registračný kód je nesprávny.", 56 | signupCodeRequired: "Je vyžadovaný registračný kód.", 57 | usernameIsEmail: "Užvateľské meno nemôže byť email.", 58 | usernameRequired: "Je vyžadované užívateľské meno.", 59 | accounts: { 60 | "Email already exists.": "Email už bol registrovaný.", 61 | "Email doesn't match the criteria.": "Email nevyhovuje kritériam.", 62 | "Invalid login token": "Neplatný token prihlásenia", 63 | "Login forbidden": "Prihlásenie neuspešné", 64 | "Service unknown": "Neznáma služba", 65 | "Unrecognized options for login request": "Neroznali sa podmienky pre požiadavku prihlásenia", 66 | "User validation failed": "Overenie užívateľa zlyhalo", 67 | "Username already exists.": "Užívateľ už existuje.", 68 | "You are not logged in.": "Vyžaduje sa prihlásenie.", 69 | "You've been logged out by the server. Please log in again.": "Boli ste odhlásený/á zo servera. Prosím prihláste sa znova.", 70 | "Your session has expired. Please log in again.": "Vaše príhlásenie expirovalo. Prosím prihláste sa znova.", 71 | "No matching login attempt found": "Prihlásenie nesúhlasí", 72 | "Password is old. Please reset your password.": "Heslo je zastaralé. Prosím obnovte si ho.", 73 | "Incorrect password": "Nesprávne heslo", 74 | "Invalid email": "Nesprávaný email", 75 | "Must be logged in": "Je vyžadované prihlásenie", 76 | "Need to set a username or email": "Je potrebné nastaviť užívateľské meno a email", 77 | "old password format": "formát starého hesla", 78 | "Password may not be empty": "Heslo nesmie byť prázdne", 79 | "Signups forbidden": "Prihlásenie je zakázané", 80 | "Token expired": "Token expiroval", 81 | "Token has invalid email address": "Token obsahuje nesprávnu emailovú adresu", 82 | "User has no password set": "Užívateľ nemá nastavené heslo", 83 | "User not found": "Užívateľ sa nenašiel", 84 | "Verify email link expired": "Odkazu pre overenie emailu vypršala platnosť.", 85 | "Verify email link is for unknown address": "Overovací odkaz je z nenámej adresy", 86 | "Match failed": "Nezhodné", 87 | "Unknown error": "Neznáma chyba" 88 | } 89 | } 90 | }; 91 | 92 | T9n.map("sk", sk); 93 | -------------------------------------------------------------------------------- /t9n/pl.js: -------------------------------------------------------------------------------- 1 | //Language: Polish, translators: pwldp 2 | 3 | 4 | var pl = { 5 | add: "dodaj", 6 | and: "i", 7 | back: "powrót", 8 | changePassword: "Zmień hasło", 9 | choosePassword: "Wybierz hasło", 10 | clickAgree: "Klikając na Zarejestruj się zgadzasz się z naszą", 11 | configure: "Konfiguruj", 12 | createAccount: "Utwórz konto", 13 | currentPassword: "Aktualne hasło", 14 | dontHaveAnAccount: "Nie masz konta?", 15 | email: "E-mail", 16 | emailAddress: "Adres e-mail", 17 | emailResetLink: "Wyślij e-mail z linkiem do zmiany hasła", 18 | forgotPassword: "Zapomniałeś hasła?", 19 | ifYouAlreadyHaveAnAccount: "Jeżeli już masz konto", 20 | newPassword: "Nowe hasło", 21 | newPasswordAgain: "Nowe hasło (powtórz)", 22 | optional: "Nieobowiązkowe", 23 | OR: "LUB", 24 | password: "Hasło", 25 | passwordAgain: "Hasło (powtórz)", 26 | privacyPolicy: "polityką prywatności", 27 | remove: "usuń", 28 | resetYourPassword: "Ustaw nowe hasło", 29 | setPassword: "Ustaw hasło", 30 | sign: "Podpisz", 31 | signIn: "Zaloguj się", 32 | signin: "zaloguj się", 33 | signOut: "Wyloguj się", 34 | signUp: "Zarejestruj się", 35 | signupCode: "Kod rejestracji", 36 | signUpWithYourEmailAddress: "Zarejestruj się używając adresu e-mail", 37 | terms: "warunkami korzystania z serwisu", 38 | updateYourPassword: "Zaktualizuj swoje hasło", 39 | username: "Nazwa użytkownika", 40 | usernameOrEmail: "Nazwa użytkownika lub adres e-mail", 41 | "with": "z", 42 | info: { 43 | emailSent: "Adres e-mail wysłany", 44 | emailVerified: "Adres e-mail zweryfikowany", 45 | passwordChanged: "Hasło zmienione", 46 | passwordReset: "Hasło wyzerowane" 47 | }, 48 | error: { 49 | emailRequired: "Wymagany jest adres e-mail.", 50 | minChar: "7 znaków to minimalna długość hasła.", 51 | pwdsDontMatch: "Hasła są różne", 52 | pwOneDigit: "Hasło musi zawierać przynajmniej jedną cyfrę.", 53 | pwOneLetter: "Hasło musi zawierać 1 literę.", 54 | signInRequired: "Musisz być zalogowany, aby to zrobić.", 55 | signupCodeIncorrect: "Kod rejestracji jest nieprawidłowy.", 56 | signupCodeRequired: "Wymagany jest kod rejestracji.", 57 | usernameIsEmail: "Adres e-mail nie może być nazwą użytkownika.", 58 | usernameRequired: "Wymagana jest nazwa użytkownika.", 59 | accounts: { 60 | "Email already exists.": "Adres e-mail już istnieje.", 61 | "Email doesn't match the criteria.": "Adres e-mail nie spełnia kryteriów.", 62 | "Invalid login token": "Błędny token logowania", 63 | "Login forbidden": "Logowanie zabronione", 64 | "Service unknown": "Nieznana usługa", 65 | "Unrecognized options for login request": "Nieznane parametry w żądaniu logowania", 66 | "User validation failed": "Niepoprawna nazwa użytkownika", 67 | "Username already exists.": "Nazwa użytkownika już istnieje.", 68 | "You are not logged in.": "Nie jesteś zalogowany.", 69 | "You've been logged out by the server. Please log in again.": "Zostałeś wylogowane przez serwer. Zaloguj się ponownie.", 70 | "Your session has expired. Please log in again.": "Twoja sesja wygasła. Zaloguj się ponownie.", 71 | "No matching login attempt found": "Nie dopasowano danych logowania", 72 | "Password is old. Please reset your password.": "Hasło jest stare. Proszę wyzerować hasło.", 73 | "Incorrect password": "Niepoprawne hasło", 74 | "Invalid email": "Błędny adres e-mail", 75 | "Must be logged in": "Musisz być zalogowany", 76 | "Need to set a username or email": "Wymagane ustawienie nazwy użytkownika lub adresu e-mail", 77 | "old password format": "stary format hasła", 78 | "Password may not be empty": "Hasło nie może być puste", 79 | "Signups forbidden": "Rejestracja zabroniona", 80 | "Token expired": "Token wygasł", 81 | "Token has invalid email address": "Token ma niewłaściwy adres e-mail", 82 | "User has no password set": "Użytkownik nie ma ustawionego hasła", 83 | "User not found": "Nie znaleziono użytkownika", 84 | "Verify email link expired": "Link weryfikacyjny wygasł", 85 | "Verify email link is for unknown address": "Link weryfikacyjny jest dla nieznanego adresu", 86 | "Match failed": "Błędne dopasowanie", 87 | "Unknown error": "Nieznany błąd" 88 | } 89 | } 90 | }; 91 | 92 | T9n.map("pl", pl); 93 | -------------------------------------------------------------------------------- /t9n/kh.js: -------------------------------------------------------------------------------- 1 | //Language: Khmer 2 | //Translators: Theara (Rabbit Training Center) 3 | 4 | var kh = { 5 | add: "បន្ថែម", 6 | and: "និង", 7 | back: "ត្រឡប់ក្រោយ", 8 | changePassword: "ផ្លាស់ប្តូរពាក្យសម្ងាត់", 9 | choosePassword: "ជ្រើសពាក្យសម្ងាត់", 10 | clickAgree: "សូមចុះឈ្មោះ បើអ្នកយល់ព្រម", 11 | configure: "កំណត់រចនាសម្ព័ន្ធ", 12 | createAccount: "បង្កើតគណនី", 13 | currentPassword: "ពាក្យសម្ងាត់បច្ចុប្បន្ន", 14 | dontHaveAnAccount: "មិនមានគណនីទេឬ?", 15 | email: "អ៊ីម៉ែល", 16 | emailAddress: "អាសយដ្ឋានអ៊ីម៉ែល", 17 | emailResetLink: "អ៊ីម៉ែលតំណភ្ជាប់ សម្រាប់កំណត់ឡើងវិញ", 18 | forgotPassword: "ភ្លេចពាក្យសម្ងាត់?", 19 | ifYouAlreadyHaveAnAccount: "បើអ្នកមានគណនីមួយរួចទៅហើយ", 20 | newPassword: "ពាក្យសម្ងាត់ថ្មី", 21 | newPasswordAgain: "ពាក្យសម្ងាត់ថ្មី (ម្ដងទៀត)", 22 | optional: "ជម្រើស", 23 | OR: "ឬ", 24 | password: "ពាក្យសម្ងាត់", 25 | passwordAgain: "ពាក្យសម្ងាត់ (ម្ដងទៀត)", 26 | privacyPolicy: "គោលការណ៍ភាពឯកជន", 27 | remove: "លុប", 28 | resetYourPassword: "កំណត់ពាក្យសម្ងាត់ឡើងវិញ", 29 | setPassword: "កំណត់ពាក្យសម្ងាត់", 30 | sign: "ចូលគណនី", 31 | signIn: "ពិនិត្យចូល", 32 | signin: "ចូល", 33 | signOut: "ចាកចេញ", 34 | signUp: "ចុះឈ្មោះ", 35 | signupCode: "លេខ​កូដចុះឈ្មោះ", 36 | signUpWithYourEmailAddress: "ចុះឈ្មោះជាមួយអាសយដ្ឋានអ៊ីមែល", 37 | terms: "លក្ខខណ្ឌនៃការប្រើប្រាស់", 38 | updateYourPassword: "ធ្វើបច្ចុប្បន្នភាពពាក្យសម្ងាត់", 39 | username: "ឈ្មោះអ្នកប្រើ", 40 | usernameOrEmail: "ឈ្មោះអ្នកប្រើ ឬអ៊ីម៉ែល", 41 | "with": "ជាមួយនឹង", 42 | info: { 43 | emailSent: "អ៊ីម៉ែលដែលបានផ្ញើរ", 44 | emailVerified: "អ៊ីម៉ែលបានផ្ទៀងផ្ទាត់", 45 | passwordChanged: "ពាក្យសម្ងាត់បាន​ផ្លាស់ប្តូរ", 46 | passwordReset: "កំណត់ពាក្យសម្ងាត់ឡើងវិញ" 47 | }, 48 | error: { 49 | emailRequired: "អ៊ីម៉ែលត្រូវបានទាមទារ", 50 | minChar: "ពាក្យសម្ងាត់អប្បបរមា ៧ តួអក្សរលេខ", 51 | pwdsDontMatch: "ពាក្យសម្ងាត់មិនត្រូវគ្នា", 52 | pwOneDigit: "ពាក្យសម្ងាត់ត្រូវតែមានយ៉ាងហោចណាស់ ១ តួលេខ", 53 | pwOneLetter: "ពាក្យសម្ងាត់ត្រូវតែមានយ៉ាងហោចណាស់ ១ តួអក្សរ​", 54 | signInRequired: "អ្នកត្រូវតែបានចូលគណនី ដើម្បីធ្វើការងារផ្សេងៗ", 55 | signupCodeIncorrect: "លេខកូដការចុះឈ្មោះមិនត្រឹមត្រូវ", 56 | signupCodeRequired: "លេខកូដការចុះឈ្មោះត្រូវបានទាមទារ", 57 | usernameIsEmail: "ឈ្មោះអ្នកប្រើមិនអាចជាអាសយដ្ឋានអ៊ីមែល", 58 | usernameRequired: "ឈ្មោះអ្នកប្រើត្រូវបានទាមទារ", 59 | accounts: { 60 | "Email already exists.": "អ៊ីម៉ែលមានរួចហើយ", 61 | "Email doesn't match the criteria.": "អ៊ីម៉ែលមិនផ្គូផ្គងនឹងលក្ខណៈវិនិច្ឆ័យ", 62 | "Invalid login token": "សញ្ញាសម្ងាត់ចូលមិនត្រឹមត្រូវ", 63 | "Login forbidden": "បានហាមឃាត់ការចូល", 64 | "Service unknown": "សេវាមិនស្គាល់", 65 | "Unrecognized options for login request": "មិនស្គាល់ជម្រើសសម្រាប់សំណើកត់ត្រាចូល", 66 | "User validation failed": "សុពលភាពរបស់អ្នកប្រើបានបរាជ័យ", 67 | "Username already exists.": "ឈ្មោះអ្នកប្រើមាន​រួចហើយ", 68 | "You are not logged in.": "អ្នកមិនបានចូលគណនីទេ", 69 | "You've been logged out by the server. Please log in again.": "អ្នកបានចាកចេញ ពីគណនី, សូមចូលម្តងទៀត", 70 | "Your session has expired. Please log in again.": "សុពលភាពរបស់អ្នកបានផុតកំណត់, សូមចូលម្តងទៀត", 71 | "No matching login attempt found": "គ្មានការផ្គូផ្គងចូលត្រូវបានរកឃើញ", 72 | "Password is old. Please reset your password.": "ពាក្យសម្ងាត់គឺចាស់,​ សូមកំណត់ពាក្យសម្ងាត់ឡើងវិញ", 73 | "Incorrect password": "ពាក្យសម្ងាត់មិនត្រឹមត្រូវ", 74 | "Invalid email": "អ៊ីម៉ែលមិនត្រឹមត្រូវ", 75 | "Must be logged in": "ត្រូវតែចូលគណនី", 76 | "Need to set a username or email": "ត្រូវកំណត់ឈ្មោះអ្នកប្រើ​ ឬអ៊ីម៉ែល", 77 | "old password format": "ទ្រង់ទ្រាយពាក្យសម្ងាត់ចាស់", 78 | "Password may not be empty": "ពាក្យសម្ងាត់ប្រហែលជាមិនអាចទទេ", 79 | "Signups forbidden": "ការចូលត្រូវបានហាមឃាត់", 80 | "Token expired": "សញ្ញាសម្ងាត់ផុតកំណត់", 81 | "Token has invalid email address": "សញ្ញាសម្ងាត់ដែលមានអាសយដ្ឋានអ៊ីមែលមិនត្រឹមត្រូវ", 82 | "User has no password set": "អ្នកប្រើមិនមានសំណុំពាក្យសម្ងាត់", 83 | "User not found": "រកមិនឃើញអ្នកប្រើ", 84 | "Verify email link expired": "ផ្ទៀងផ្ទាត់តំណភ្ជាប់អ៊ីម៉ែលផុតកំណត់", 85 | "Verify email link is for unknown address": "ផ្ទៀងផ្ទាត់តំណភ្ជាប់អ៊ីម៉ែល គឺសម្រាប់អាសយដ្ឋានមិនស្គាល់", 86 | "Match failed": "ការផ្ទៀងផ្ទាត់បានបរាជ័យ", 87 | "Unknown error": "មិនស្គាល់កំហុស" 88 | } 89 | } 90 | }; 91 | 92 | T9n.map("kh", kh); 93 | -------------------------------------------------------------------------------- /t9n/id.js: -------------------------------------------------------------------------------- 1 | // Language: Indonesian (Bahasa Indonesia) 2 | // Translators: Hellstad 3 | 4 | var id = { 5 | add: "tambah", 6 | and: "dan", 7 | back: "kembali", 8 | changePassword: "Ganti Password", 9 | choosePassword: "Masukkan Password", 10 | clickAgree: "Dengan anda mendaftar, anda setuju dengan", 11 | configure: "Mengaturkan", 12 | createAccount: "Buat Account", 13 | currentPassword: "Password Anda Saat Ini", 14 | dontHaveAnAccount: "Tidak punya account?", 15 | email: "Email", 16 | emailAddress: "Alamat Email", 17 | emailResetLink: "Link untuk Email Reset", 18 | forgotPassword: "Lupa password?", 19 | ifYouAlreadyHaveAnAccount: "Jika anda belum punya account", 20 | newPassword: "Password Baru", 21 | newPasswordAgain: "Password Baru (ulang)", 22 | optional: "Opsional", 23 | OR: "ATAU", 24 | password: "Password", 25 | passwordAgain: "Password (ulang)", 26 | privacyPolicy: "Kebijakan Privasi", 27 | remove: "hapus", 28 | resetYourPassword: "Reset password anda", 29 | setPassword: "Masukkan Password", 30 | sign: "Sign", 31 | signIn: "Sign In", 32 | signin: "sign in", 33 | signOut: "Sign Out", 34 | signUp: "Mendaftar", 35 | signupCode: "Kode Registrasi", 36 | signUpWithYourEmailAddress: "Mendaftar dengan alamat email anda", 37 | terms: "Persyaratan Layanan", 38 | updateYourPassword: "Perbarui password anda", 39 | username: "Username", 40 | usernameOrEmail: "Username atau email", 41 | "with": "dengan", 42 | info: { 43 | emailSent: "Email terkirim", 44 | emailVerified: "Email diverifikasi", 45 | passwordChanged: "Password terganti", 46 | passwordReset: "Password direset" 47 | }, 48 | error: { 49 | emailRequired: "Alamat email dibutuhkan.", 50 | minChar: "Minimum password 7 karakter.", 51 | pwdsDontMatch: "Password yang diulang tidak sama.", 52 | pwOneDigit: "Password harus ada minimum 1 angka.", 53 | pwOneLetter: "Password harus ada minimum 1 huruf.", 54 | signInRequired: "Anda harus sign in untuk melakukan itu.", 55 | signupCodeIncorrect: "Kode registrasi salah.", 56 | signupCodeRequired: "Kode registrasi dibutuhkan.", 57 | usernameIsEmail: "Username anda tidak bisa sama dengan email address.", 58 | usernameRequired: "Username dibutuhkan.", 59 | accounts: { 60 | "Email already exists.": "Alamat email sudah dipakai.", 61 | "Email doesn't match the criteria.": "Alamat email tidak sesuai dengan kriteria.", 62 | "Invalid login token": "Login token tidak valid", 63 | "Login forbidden": "Login dilarang", 64 | "Service unknown": "Layanan unknown", 65 | "Unrecognized options for login request": "Options tidak tersedia untuk permintaan login", 66 | "User validation failed": "Validasi user gagal", 67 | "Username already exists.": "Username sudah dipakai.", 68 | "You are not logged in.": "Anda belum login.", 69 | "You've been logged out by the server. Please log in again.": "Anda belum dilogout oleh server. Silahkan coba login lagi.", 70 | "Your session has expired. Please log in again.": "Session anda telah kedaluarsa. Silahkan coba login lagi.", 71 | "No matching login attempt found": "Usaha login tidak ditemukan.", 72 | "Password is old. Please reset your password.": "Password anda terlalu tua. Silahkan ganti password anda.", 73 | "Incorrect password": "Password salah", 74 | "Invalid email": "Alamat email tidak valid", 75 | "Must be logged in": "Anda harus login", 76 | "Need to set a username or email": "Anda harus masukkan username atau email", 77 | "old password format": "format password lama", 78 | "Password may not be empty": "Password tidak boleh kosong", 79 | "Signups forbidden": "Signup dilarang", 80 | "Token expired": "Token telah kedaluarsa", 81 | "Token has invalid email address": "Token memberikan alamat email yang tidak valid", 82 | "User has no password set": "User belum memasukkan password", 83 | "User not found": "User tidak ditemukan", 84 | "Verify email link expired": "Link untuk verifikasi alamat email telah kedaluarsa", 85 | "Verify email link is for unknown address": "Link untuk verifikasi alamat email memberikan alamat email yang tidak dikenalkan", 86 | "Match failed": "Mencocokan gagal", 87 | "Unknown error": "Error tidak dikenalkan" 88 | } 89 | } 90 | }; 91 | 92 | T9n.map("id", id); 93 | -------------------------------------------------------------------------------- /t9n/sv.js: -------------------------------------------------------------------------------- 1 | //Language: Swedish 2 | //Translators: timbrandin 3 | 4 | var sv = { 5 | add: "lägg till", 6 | and: "och", 7 | back: "tillbaka", 8 | changePassword: "Ändra lösenord", 9 | choosePassword: "Välj lösenord", 10 | clickAgree: "När du väljer att skapa ett konto så godkänner du också vår", 11 | configure: "Konfigurera", 12 | createAccount: "Skapa ett konto", 13 | currentPassword: "Nuvarande lösenord", 14 | dontHaveAnAccount: "Har du inget konto?", 15 | email: "E-postadress", 16 | emailAddress: "E-postadress", 17 | emailResetLink: "Återställningslänk för e-post", 18 | forgotPassword: "Glömt ditt lösenord?", 19 | ifYouAlreadyHaveAnAccount: "Om du redan har ett konto", 20 | newPassword: "Nytt lösenord", 21 | newPasswordAgain: "Nytt lösenord (upprepa)", 22 | optional: "Valfri", 23 | OR: "ELLER", 24 | password: "Lösenord", 25 | passwordAgain: "Lösenord (upprepa)", 26 | privacyPolicy: "integritetspolicy", 27 | remove: "ta bort", 28 | resetYourPassword: "Återställ ditt lösenord", 29 | setPassword: "Välj lösenord", 30 | sign: "Logga", 31 | signIn: "Logga in", 32 | signin: "logga in", 33 | signOut: "Logga ut", 34 | signUp: "Skapa konto", 35 | signupCode: "Registreringskod", 36 | signUpWithYourEmailAddress: "Skapa ett konto med din e-postadress", 37 | terms: "användarvillkor", 38 | updateYourPassword: "Uppdatera ditt lösenord", 39 | username: "Användarnamn", 40 | usernameOrEmail: "Användarnamn eller e-postadress", 41 | "with": "med", 42 | info: { 43 | emailSent: "E-post skickades", 44 | emailVerified: "E-post verifierades", 45 | passwordChanged: "Lösenordet har ändrats", 46 | passwordReset: "Återställ lösenordet" 47 | }, 48 | error: { 49 | emailRequired: "Det krävs en e-postaddress.", 50 | minChar: "Det krävs minst 7 tecken i ditt lösenord.", 51 | pwdsDontMatch: "Lösenorden matchar inte.", 52 | pwOneDigit: "Lösenordet måste ha minst 1 siffra.", 53 | pwOneLetter: "Lösenordet måste ha minst 1 bokstav.", 54 | signInRequired: "Inloggning krävs här.", 55 | signupCodeIncorrect: "Registreringskoden är felaktig.", 56 | signupCodeRequired: "Det krävs en registreringskod.", 57 | usernameIsEmail: "Användarnamnet kan inte vara en e-postadress.", 58 | usernameRequired: "Det krävs ett användarnamn.", 59 | accounts: { 60 | "Email already exists.": "E-postadressen finns redan.", 61 | "Email doesn't match the criteria.": "E-postadressen uppfyller inte kriterierna.", 62 | "Invalid login token": "Felaktig login-token", 63 | "Login forbidden": "Inloggning tillåts ej", 64 | "Service unknown": "Okänd service", 65 | "Unrecognized options for login request": "Okända val för inloggningsförsöket", 66 | "User validation failed": "Validering av användare misslyckades", 67 | "Username already exists.": "Användarnamn finns redan.", 68 | "You are not logged in.": "Du är inte inloggad.", 69 | "You've been logged out by the server. Please log in again.": "Du har loggats ut av servern. Vänligen logga in igen.", 70 | "Your session has expired. Please log in again.": "Din session har gått ut. Vänligen ligga in igen.", 71 | "No matching login attempt found": "Inget matchande loginförsök kunde hittas", 72 | "Password is old. Please reset your password.": "Ditt lösenord är gammalt. Vänligen återställ ditt lösenord.", 73 | "Incorrect password": "Felaktigt lösenord", 74 | "Invalid email": "Ogiltig e-postadress", 75 | "Must be logged in": "Måste vara inloggad", 76 | "Need to set a username or email": "Ett användarnamn eller en e-postadress krävs.", 77 | "old password format": "gammalt lösenordsformat", 78 | "Password may not be empty": "Lösenordet får inte vara tomt", 79 | "Signups forbidden": "Registrering förbjuden", 80 | "Token expired": "Token har gått ut", 81 | "Token has invalid email address": "Token har ogiltig e-postadress", 82 | "User has no password set": "Användaren har inget lösenord", 83 | "User not found": "Användaren hittades inte", 84 | "Verify email link expired": "Länken för att verifera e-postadress har gått ut", 85 | "Verify email link is for unknown address": "Länken för att verifiera e-postadress är för en okänd adress.", 86 | "Match failed": "Matchning misslyckades", 87 | "Unknown error": "Okänt fel" 88 | } 89 | } 90 | }; 91 | 92 | T9n.map("sv", sv); 93 | -------------------------------------------------------------------------------- /t9n/pt.js: -------------------------------------------------------------------------------- 1 | //Language: Portuguese 2 | //Translators: alanmeira, Tadeu Caldararo 3 | 4 | var pt = { 5 | add: "Adicionar", 6 | and: "e", 7 | back: "Voltar", 8 | changePassword: "Alterar senha", 9 | choosePassword: "Escolha uma senha", 10 | clickAgree: "Ao clicar em Criar Conta, você estará reconhecendo que aceita nossos Termos de Uso", 11 | configure: "Configurar", 12 | createAccount: "Criar Conta", 13 | currentPassword: "Senha Atual", 14 | dontHaveAnAccount: "Não tem conta?", 15 | email: "E-mail", 16 | emailAddress: "Endereço de e-mail", 17 | emailResetLink: "E-mail com link para gerar Nova Senha", 18 | forgotPassword: "Esqueceu sua senha?", 19 | ifYouAlreadyHaveAnAccount: "Se você já tem uma conta", 20 | newPassword: "Nova Senha", 21 | newPasswordAgain: "Nova Senha (novamente)", 22 | optional: "Opcional", 23 | OR: "OU", 24 | password: "Senha", 25 | passwordAgain: "Senha (novamente)", 26 | privacyPolicy: "Política de Privacidade", 27 | remove: "remover", 28 | resetYourPassword: "Gerar nova senha", 29 | setPassword: "Cadastrar Senha", 30 | sign: "Entrar", 31 | signIn: "Entrar", 32 | signin: "entrar", 33 | signOut: "Sair", 34 | signUp: "Criar conta", 35 | signupCode: "Código de Registro", 36 | signUpWithYourEmailAddress: "Criar conta utilizando seu endereço de e-mail", 37 | terms: "Termos de Uso", 38 | updateYourPassword: "Atualizar senha", 39 | username: "Nome de usuário", 40 | usernameOrEmail: "Usuário ou e-mail", 41 | "with": "com", 42 | info: { 43 | emailSent: "E-mail enviado", 44 | emailVerified: "E-mail verificado", 45 | passwordChanged: "Senha atualizada", 46 | passwordReset: "Senha alterada" 47 | }, 48 | error: { 49 | emailRequired: "E-mail é obrigatório.", 50 | minChar: "Senha requer um mínimo de 7 caracteres.", 51 | pwdsDontMatch: "Senhas não coincidem", 52 | pwOneDigit: "A Senha deve conter pelo menos um dígito.", 53 | pwOneLetter: "A Senha deve conter pelo menos uma letra.", 54 | signInRequired: "Você precisa estar logado para fazer isso.", 55 | signupCodeIncorrect: "Código de acesso incorreto.", 56 | signupCodeRequired: "É necessário um código de acesso.", 57 | usernameIsEmail: "Nome de usuário não pode ser um endereço de e-mail.", 58 | usernameRequired: "Nome de usuário é obrigatório.", 59 | accounts: { 60 | "Email already exists.": "E-mail já existe.", 61 | "Email doesn't match the criteria.": "E-mail inválido.", 62 | "Invalid login token": "Token de login inválido", 63 | "Login forbidden": "Login não permitido", 64 | "Service unknown": "Serviço desconhecido", 65 | "Unrecognized options for login request": "Opções desconhecidas para solicitação de login", 66 | "User validation failed": "Validação de usuário falhou", 67 | "Username already exists.": "Nome de usuário já existe.", 68 | "You are not logged in.": "Você não está logado.", 69 | "You've been logged out by the server. Please log in again.": "Você foi desconectado pelo servidor. Por favor, efetue login novamente.", 70 | "Your session has expired. Please log in again.": "Sua sessão expirou. Por favor, efetue login novamente.", 71 | "No matching login attempt found": "Não foi encontrada nenhuma tentativa de login que coincida.", 72 | "Password is old. Please reset your password.": "Senha expirou. Por favor, cadastre uma nova senha.", 73 | "Incorrect password": "Senha incorreta", 74 | "Invalid email": "E-mail inválido", 75 | "Must be logged in": "É necessário efetuar login", 76 | "Need to set a username or email": "É necessário configurar um Nome de Usuário ou E-mail", 77 | "old password format": "Formato de senha antigo", 78 | "Password may not be empty": "Senha não pode estar em branco", 79 | "Signups forbidden": "Não permitido Criar Conta", 80 | "Token expired": "Token expirou", 81 | "Token has invalid email address": "Token tem endereço de e-mail inválido", 82 | "User has no password set": "Usuário não possui senha cadastrada", 83 | "User not found": "Usuário não encontrado", 84 | "Verify email link expired": "O link de verificação de e-mail expirou", 85 | "Verify email link is for unknown address": "O link de verificação de e-mail está configurado para um endereço desconhecido", 86 | "Match failed": "Senhas não coincidem", 87 | "Unknown error": "Erro desconhecido" 88 | } 89 | } 90 | }; 91 | 92 | T9n.map("pt", pt); 93 | -------------------------------------------------------------------------------- /t9n/el.js: -------------------------------------------------------------------------------- 1 | //Language: Greek 2 | //Translators: mutil 3 | 4 | 5 | var el = { 6 | add: "προσθέστε", 7 | and: "και", 8 | back: "πίσω", 9 | changePassword: "Αλλαγή Κωδικού", 10 | choosePassword: "Επιλογή Κωδικού", 11 | clickAgree: "Πατώντας Εγγραφή, συμφωνείτε σε", 12 | configure: "Διαμόρφωση", 13 | createAccount: "Δημιουργία Λογαριασμού", 14 | currentPassword: "Τρέχων Κωδικός", 15 | dontHaveAnAccount: "Δεν έχετε λογαριασμό;", 16 | email: "Email", 17 | emailAddress: "Ηλεκτρονική Διεύθυνση", 18 | emailResetLink: "Αποστολή Συνδέσμου Επαναφοράς", 19 | forgotPassword: "Ξεχάσατε τον κωδικό;", 20 | ifYouAlreadyHaveAnAccount: "Αν έχετε ήδη λογαριασμό", 21 | newPassword: "Νέος Κωδικός", 22 | newPasswordAgain: "Νέος Κωδικός (ξανά)", 23 | optional: "Προαιρετικά", 24 | OR: "Ή", 25 | password: "Κωδικός", 26 | passwordAgain: "Κωδικός (ξανά)", 27 | privacyPolicy: "Πολιτική Απορρήτου", 28 | remove: "αφαιρέστε", 29 | resetYourPassword: "Επαναφορά κωδικού", 30 | setPassword: "Ορίστε Κωδικό", 31 | sign: "Σύνδεση", 32 | signIn: "Είσοδος", 33 | signin: "συνδεθείτε", 34 | signOut: "Αποσύνδεση", 35 | signUp: "Εγγραφή", 36 | signupCode: "Κώδικας Εγγραφής", 37 | signUpWithYourEmailAddress: "Εγγραφή με την ηλεκτρονική σας διεύθυνση", 38 | terms: "Όροι Χρήσης", 39 | updateYourPassword: "Ανανεώστε τον κωδικό σας", 40 | username: "Όνομα χρήστη", 41 | usernameOrEmail: "Όνομα χρήστη ή email", 42 | "with": "με", 43 | info: { 44 | emailSent: "Το Email στάλθηκε", 45 | emailVerified: "Το Email επιβεβαιώθηκε", 46 | passwordChanged: "Ο Κωδικός άλλαξε", 47 | passwordReset: "Ο Κωδικός επαναφέρθηκε" 48 | }, 49 | error: { 50 | emailRequired: "Το Email απαιτείται.", 51 | minChar: "7 χαρακτήρες τουλάχιστον.", 52 | pwdsDontMatch: "Οι κωδικοί δεν ταιριάζουν", 53 | pwOneDigit: "Ο κωδικός πρέπει να έχει τουλάχιστον ένα ψηφίο.", 54 | pwOneLetter: "Ο κωδικός πρέπει να έχει τουλάχιστον ένα γράμμα.", 55 | signInRequired: "Πρέπει να είστε συνδεδεμένος για να πραγματοποιήσετε αυτή την ενέργεια.", 56 | signupCodeIncorrect: "Ο κώδικας εγγραφής δεν είναι σωστός.", 57 | signupCodeRequired: "Ο κώδικας εγγραφής απαιτείται.", 58 | usernameIsEmail: "Το όνομα χρήστη δεν μπορεί να είναι μια διεύθυνση email.", 59 | usernameRequired: "Το όνομα χρήστη απαιτείται.", 60 | accounts: { 61 | "Email already exists.": "Αυτό το email υπάρχει ήδη.", 62 | "Email doesn't match the criteria.": "Το email δεν ταιριάζει με τα κριτήρια.", 63 | "Invalid login token": "Άκυρο διακριτικό σύνδεσης", 64 | "Login forbidden": "Η είσοδος απαγορεύεται", 65 | "Service unknown": "Άγνωστη υπηρεσία", 66 | "Unrecognized options for login request": "Μη αναγνωρίσιμες επιλογές για αίτημα εισόδου", 67 | "User validation failed": "Η επικύρωση του χρήστη απέτυχε", 68 | "Username already exists.": "Αυτό το όνομα χρήστη υπάρχει ήδη.", 69 | "You are not logged in.": "Δεν είστε συνδεδεμένος.", 70 | "You've been logged out by the server. Please log in again.": "Αποσυνδεθήκατε από τον διακομιστή. Παρακαλούμε συνδεθείτε ξανά.", 71 | "Your session has expired. Please log in again.": "Η συνεδρία έληξε. Παρακαλούμε συνδεθείτε ξανά.", 72 | "No matching login attempt found": "Δεν βρέθηκε καμία απόπειρα σύνδεσης που να ταιριάζει", 73 | "Password is old. Please reset your password.": "Ο κωδικός είναι παλιός. Παρακαλούμε επαναφέρετε τον κωδικό σας.", 74 | "Incorrect password": "Εσφαλμένος κωδικός", 75 | "Invalid email": "Εσφαλμένο email", 76 | "Must be logged in": "Πρέπει να είστε συνδεδεμένος", 77 | "Need to set a username or email": "Χρειάζεται να ορίσετε όνομα χρήστη ή email", 78 | "old password format": "κωδικός παλιάς μορφής", 79 | "Password may not be empty": "Ο κωδικός δεν μπορεί να είναι άδειος", 80 | "Signups forbidden": "Οι εγγραφές απαγορεύονται", 81 | "Token expired": "Το διακριτικό σύνδεσης έληξε", 82 | "Token has invalid email address": "Το διακριτικό σύνδεσης έχει άκυρη διεύθυνση email", 83 | "User has no password set": "Ο χρήστης δεν έχει ορίσει κωδικό", 84 | "User not found": "Ο χρήστης δεν βρέθηκε", 85 | "Verify email link expired": "Ο σύνδεσμος επαλήθευσης του email έληξε", 86 | "Verify email link is for unknown address": "Ο σύνδεσμος επαλήθευσης του email είναι για άγνωστη διεύθυνση", 87 | "Match failed": "Η αντιστοίχηση απέτυχε", 88 | "Unknown error": "Άγνωστο σφάλμα" 89 | } 90 | } 91 | }; 92 | 93 | T9n.map("el", el); 94 | -------------------------------------------------------------------------------- /t9n/it.js: -------------------------------------------------------------------------------- 1 | //Language: Italian 2 | //Translators: splendido 3 | 4 | var it = { 5 | add: "aggiungi", 6 | and: "e", 7 | back: "indietro", 8 | changePassword: "Cambia Password", 9 | choosePassword: "Scegli una Password", 10 | clickAgree: "Cliccando Registrati, accetti la nostra", 11 | configure: "Configura", 12 | createAccount: "Crea un Account", 13 | currentPassword: "Password Corrente", 14 | dontHaveAnAccount: "Non hai un account?", 15 | email: "Email", 16 | emailAddress: "Indirizzo Email", 17 | emailResetLink: "Invia Link di Reset", 18 | forgotPassword: "Hai dimenticato la password?", 19 | ifYouAlreadyHaveAnAccount: "Se hai già un account", 20 | newPassword: "Nuova Password", 21 | newPasswordAgain: "Nuova Password (di nuovo)", 22 | optional: "Opzionale", 23 | OR: "OPPURE", 24 | password: "Password", 25 | passwordAgain: "Password (di nuovo)", 26 | privacyPolicy: "Privacy Policy", 27 | remove: "rimuovi", 28 | resetYourPassword: "Reimposta la password", 29 | setPassword: "Imposta Password", 30 | sign: "Accedi", 31 | signIn: "Accedi", 32 | signin: "accedi", 33 | signOut: "Esci", 34 | signUp: "Registrati", 35 | signupCode: "Codice di Registrazione", 36 | signUpWithYourEmailAddress: "Registrati con il tuo indirizzo email", 37 | terms: "Termini di Servizio", 38 | updateYourPassword: "Aggiorna la password", 39 | username: "Username", 40 | usernameOrEmail: "Nome utente o email", 41 | "with": "con", 42 | info: { 43 | emailSent: "Email inviata", 44 | emailVerified: "Email verificata", 45 | passwordChanged: "Password cambiata", 46 | passwordReset: "Password reimpostata" 47 | }, 48 | error: { 49 | emailRequired: "L'Email è obbligatoria.", 50 | minChar: "La Password deve essere di almeno 7 caratteri.", 51 | pwdsDontMatch: "Le Password non corrispondono", 52 | pwOneDigit: "La Password deve contenere almeno un numero.", 53 | pwOneLetter: "La Password deve contenere 1 lettera.", 54 | signInRequired: "Per fare questo devi accedere.", 55 | signupCodeIncorrect: "Codice di Registrazione errato.", 56 | signupCodeRequired: "Il Codice di Registrazione è obbligatorio.", 57 | usernameIsEmail: "Il Nome Utente non può essere un indirizzo email.", 58 | usernameRequired: "Il Nome utente è obbligatorio.", 59 | accounts: { 60 | "Email already exists.": "Indirizzo email già esistente.", 61 | "Email doesn't match the criteria.": "L'indirizzo email non soddisfa i requisiti.", 62 | "Invalid login token": "Codice di accesso non valido", 63 | "Login forbidden": "Accesso non consentito", 64 | "Service unknown": "Servizio sconosciuto", 65 | "Unrecognized options for login request": "Opzioni per la richiesta di accesso non ricunosciute", 66 | "User validation failed": "Validazione utente fallita", 67 | "Username already exists.": "Nome utente già esistente.", 68 | "You are not logged in.": "Non hai effettuato l'accesso.", 69 | "You've been logged out by the server. Please log in again.": "Sei stato disconnesso dal server. Per favore accedi di nuovo.", 70 | "Your session has expired. Please log in again.": "La tua sessione è scaduta. Per favore accedi di nuovo.", 71 | "No matching login attempt found": "Tentativo di accesso corrispondente non trovato", 72 | "Password is old. Please reset your password.": "La password è vecchia. Per favore reimposta la tua password.", 73 | "Incorrect password": "Password non corretta", 74 | "Invalid email": "Email non valida", 75 | "Must be logged in": "Devi aver eseguito l'accesso", 76 | "Need to set a username or email": "È necessario specificare un nome utente o un indirizzo email", 77 | "old password format": "vecchio formato password", 78 | "Password may not be empty": "La password non può essere vuota", 79 | "Signups forbidden": "Registrazioni non consentite", 80 | "Token expired": "Codice scaduto", 81 | "Token has invalid email address": "Il codice ha un indirizzo email non valido", 82 | "User has no password set": "L'utente non ha una password impostata", 83 | "User not found": "Utente non trovato", 84 | "Verify email link expired": "Link per la verifica dell'email scaduto", 85 | "Verify email link is for unknown address": "Il link per la verifica dell'email fa riferimento ad un indirizzo sconosciuto", 86 | "Match failed": "Riscontro fallito", 87 | "Unknown error": "Errore Sconosciuto" 88 | } 89 | } 90 | }; 91 | 92 | T9n.map("it", it); 93 | -------------------------------------------------------------------------------- /t9n/hu.js: -------------------------------------------------------------------------------- 1 | // We need a dummy translation so that a text is found. 2 | 3 | 4 | var hu = { 5 | add: "hozzáadás", 6 | and: "és", 7 | back: "vissza", 8 | changePassword: "Jelszó megváltoztatása", 9 | choosePassword: "Válassz egy jelszót", 10 | clickAgree: "A regisztráció gombra kattintva egyetértesz a mi", 11 | configure: "Beállítás", 12 | createAccount: "Felhasználó létrehozása", 13 | currentPassword: "Jelenlegi jelszó", 14 | dontHaveAnAccount: "Nincs még felhasználód?", 15 | email: "Email", 16 | emailAddress: "Email cím", 17 | emailResetLink: "Visszaállító link küldése", 18 | forgotPassword: "Elfelejtetted a jelszavadat?", 19 | ifYouAlreadyHaveAnAccount: "Ha már van felhasználód, ", 20 | newPassword: "Új jelszó", 21 | newPasswordAgain: "Új jelszó (ismét)", 22 | optional: "Opcionális", 23 | OR: "VAGY", 24 | password: "Jelszó", 25 | passwordAgain: "Jelszó (ismét)", 26 | privacyPolicy: "Adatvédelmi irányelvek", 27 | remove: "eltávolítás", 28 | resetYourPassword: "Jelszó visszaállítása", 29 | setPassword: "Jelszó beállítása", 30 | sign: "Bejelentkezés", 31 | signIn: "Bejelentkezés", 32 | signin: "jelentkezz be", 33 | signOut: "Kijelentkezés", 34 | signUp: "Regisztráció", 35 | signupCode: "Regisztrációs kód", 36 | signUpWithYourEmailAddress: "Regisztráció email címmel", 37 | terms: "Használati feltételek", 38 | updateYourPassword: "Jelszó módosítása", 39 | username: "Felhasználónév", 40 | usernameOrEmail: "Felhasználónév vagy email", 41 | "with": "-", 42 | info: { 43 | emailSent: "Email elküldve", 44 | emailVerified: "Email cím igazolva", 45 | passwordChanged: "Jelszó megváltoztatva", 46 | passwordReset: "Jelszó visszaállítva" 47 | }, 48 | error: { 49 | emailRequired: "Email cím megadása kötelező.", 50 | minChar: "A jelszónak legalább 7 karakter hoszúnak kell lennie.", 51 | pwdsDontMatch: "A jelszavak nem egyeznek", 52 | pwOneDigit: "A jelszónak legalább egy számjegyet tartalmaznia kell.", 53 | pwOneLetter: "A jelszónak legalább egy betűt tartalmaznia kell.", 54 | signInRequired: "A művelet végrehajtásához be kell jelentkezned.", 55 | signupCodeIncorrect: "A regisztrációs kód hibás.", 56 | signupCodeRequired: "A regisztrációs kód megadása kötelező.", 57 | usernameIsEmail: "A felhasználónév nem lehet egy email cím.", 58 | usernameRequired: "Felhasználónév megadása kötelező.", 59 | accounts: { 60 | "Email already exists.": "A megadott email cím már létezik.", 61 | "Email doesn't match the criteria.": "Email cím nem felel meg a feltételeknek.", 62 | "Invalid login token": "Érvénytelen belépési token", 63 | "Login forbidden": "Belépés megtagadva", 64 | "Service unknown": "Ismeretlen szolgáltatás", 65 | "Unrecognized options for login request": "Ismeretlen beállítások a belépési kérelemhez", 66 | "User validation failed": "Felhasználó azonosítás sikertelen", 67 | "Username already exists.": "A felhasználónév már létezik.", 68 | "You are not logged in.": "Nem vagy bejelentkezve.", 69 | "You've been logged out by the server. Please log in again.": "A szerver kijelentkeztetett. Kérjük, jelentkezz be újra.", 70 | "Your session has expired. Please log in again.": "A munkamenet lejárt. Kérjük, jelentkezz be újra.", 71 | "No matching login attempt found": "Nem található megegyező belépési próbálkozás", 72 | "Password is old. Please reset your password.": "A jelszó túl régi. Kérjük, változtasd meg a jelszavad.", 73 | "Incorrect password": "Helytelen jelszó", 74 | "Invalid email": "Érvénytelen email cím", 75 | "Must be logged in": "A művelet végrehajtásához bejelentkezés szükséges", 76 | "Need to set a username or email": "Felhasználónév vagy email cím beállítása kötelező", 77 | "old password format": "régi jelszó formátum", 78 | "Password may not be empty": "A jelszó nem lehet üres", 79 | "Signups forbidden": "Regisztráció megtagadva", 80 | "Token expired": "Token lejárt", 81 | "Token has invalid email address": "A token érvénytelen email címet tartalmaz", 82 | "User has no password set": "A felhasználóhoz nincs jelszó beállítva", 83 | "User not found": "Felhasználó nem található", 84 | "Verify email link expired": "Igazoló email link lejárt", 85 | "Verify email link is for unknown address": "Az igazoló email link ismeretlen címhez tartozik", 86 | "Match failed": "Megegyeztetés sikertelen", 87 | "Unknown error": "Ismeretlen hiba" 88 | } 89 | } 90 | }; 91 | 92 | T9n.map("hu", hu); 93 | -------------------------------------------------------------------------------- /t9n/en.js: -------------------------------------------------------------------------------- 1 | // We need a dummy translation so that a text is found. 2 | 3 | 4 | var en = { 5 | add: "add", 6 | and: "and", 7 | back: "back", 8 | changePassword: "Change Password", 9 | choosePassword: "Choose a Password", 10 | clickAgree: "By clicking Register, you agree to our", 11 | configure: "Configure", 12 | createAccount: "Create an Account", 13 | currentPassword: "Current Password", 14 | dontHaveAnAccount: "Don't have an account?", 15 | email: "Email", 16 | emailAddress: "Email Address", 17 | emailResetLink: "Email Reset Link", 18 | "Enter email": "Enter email", 19 | "Enter password": "Enter password", 20 | "Enter password again": "Enter password again", 21 | "Enter username": "Enter username", 22 | "Enter username or email": "Enter username or email", 23 | forgotPassword: "Forgot your password?", 24 | ifYouAlreadyHaveAnAccount: "If you already have an account", 25 | newPassword: "New Password", 26 | newPasswordAgain: "New Password (again)", 27 | optional: "Optional", 28 | OR: "OR", 29 | password: "Password", 30 | passwordAgain: "Password (again)", 31 | privacyPolicy: "Privacy Policy", 32 | remove: "remove", 33 | resetYourPassword: "Reset your password", 34 | setPassword: "Set Password", 35 | sign: "Sign", 36 | signIn: "Sign In", 37 | signin: "sign in", 38 | signOut: "Sign Out", 39 | signUp: "Register", 40 | signupCode: "Registration Code", 41 | signUpWithYourEmailAddress: "Register with your email address", 42 | terms: "Terms of Use", 43 | updateYourPassword: "Update your password", 44 | username: "Username", 45 | usernameOrEmail: "Username or email", 46 | "with": "with", 47 | info: { 48 | emailSent: "Email sent", 49 | emailVerified: "Email verified", 50 | passwordChanged: "Password changed", 51 | passwordReset: "Password reset" 52 | }, 53 | error: { 54 | emailRequired: "Email is required.", 55 | emailInvalid: "Invalid email.", 56 | minChar: "7 character minimum password.", 57 | pwdsDontMatch: "Passwords don't match", 58 | pwOneDigit: "Password must have at least one digit.", 59 | pwOneLetter: "Password requires 1 letter.", 60 | pwTooShort: "Password must be at least 6 characters long", 61 | signInRequired: "You must be signed in to do that.", 62 | signupCodeIncorrect: "Registration code is incorrect.", 63 | signupCodeRequired: "Registration code is required.", 64 | usernameIsEmail: "Username cannot be an email address.", 65 | usernameRequired: "Username is required.", 66 | usernameTooShort: "Username must be at least 3 characters long", 67 | accounts: { 68 | "Email already exists.": "Email already exists.", 69 | "Email doesn't match the criteria.": "Email doesn't match the criteria.", 70 | "Invalid login token": "Invalid login token", 71 | "Login forbidden": "Login forbidden", 72 | "Service unknown": "Service unknown", 73 | "Unrecognized options for login request": "Unrecognized options for login request", 74 | "User validation failed": "User validation failed", 75 | "Username already exists.": "Username already exists.", 76 | "You are not logged in.": "You are not logged in.", 77 | "You've been logged out by the server. Please log in again.": "You've been logged out by the server. Please log in again.", 78 | "Your session has expired. Please log in again.": "Your session has expired. Please log in again.", 79 | "No matching login attempt found": "No matching login attempt found", 80 | "Password is old. Please reset your password.": "Password is old. Please reset your password.", 81 | "Incorrect password": "Incorrect password", 82 | "Invalid email": "Invalid email", 83 | "Must be logged in": "Must be logged in", 84 | "Need to set a username or email": "Need to set a username or email", 85 | "old password format": "old password format", 86 | "Password may not be empty": "Password may not be empty", 87 | "Signups forbidden": "Signups forbidden", 88 | "Token expired": "Token expired", 89 | "Token has invalid email address": "Token has invalid email address", 90 | "User has no password set": "User has no password set", 91 | "User not found": "User not found", 92 | "Verify email link expired": "Verify email link expired", 93 | "Verify email link is for unknown address": "Verify email link is for unknown address", 94 | "Match failed": "Match failed", 95 | "Unknown error": "Unknown error" 96 | } 97 | } 98 | }; 99 | 100 | T9n.map("en", en); 101 | -------------------------------------------------------------------------------- /t9n/pt_PT.js: -------------------------------------------------------------------------------- 1 | //Language: European Portuguese 2 | //Translators: Tiago Silva 3 | 4 | var pt_PT = { 5 | add: "adicionar", 6 | and: "e", 7 | back: "voltar", 8 | changePassword: "Alterar palavra-passe", 9 | choosePassword: "Escolha uma palavra-passe", 10 | clickAgree: "Ao clicar em Registar, está a aceitar os nossos", 11 | configure: "Configurar", 12 | createAccount: "Criar uma Conta", 13 | currentPassword: "Palavra-passe Atual", 14 | dontHaveAnAccount: "Não tem conta?", 15 | email: "E-mail", 16 | emailAddress: "Endereço de e-mail", 17 | emailResetLink: "Enviar e-mail para redefinir a palavra-passe", 18 | forgotPassword: "Esqueci-me da palavra-passe", 19 | ifYouAlreadyHaveAnAccount: "Se já tem uma conta", 20 | newPassword: "Nova Palavra-passe", 21 | newPasswordAgain: "Nova Palavra-passe (novamente)", 22 | optional: "Opcional", 23 | OR: "OU", 24 | password: "Palavra-passe", 25 | passwordAgain: "Palavra-passe (novamente)", 26 | privacyPolicy: "Política de Privacidade", 27 | remove: "remover", 28 | resetYourPassword: "Redefinir a palavra-passe", 29 | setPassword: "Definir Palavra-passe", 30 | sign: "Iniciar", 31 | signIn: "Iniciar Sessão", 32 | signin: "iniciar sessão", 33 | signOut: "Sair", 34 | signUp: "Criar conta", 35 | signupCode: "Código de Registo", 36 | signUpWithYourEmailAddress: "Registar com o endereço de e-mail", 37 | terms: "Termos de Uso", 38 | updateYourPassword: "Alterar a palavra-passe", 39 | username: "Nome do ulilizador", 40 | usernameOrEmail: "Ulilizador ou e-mail", 41 | "with": "com", 42 | info: { 43 | emailSent: "E-mail enviado", 44 | emailVerified: "E-mail verificado", 45 | passwordChanged: "Palavra-passe alterada", 46 | passwordReset: "Palavra-passe redefinida" 47 | }, 48 | error: { 49 | emailRequired: "O e-mail é obrigatório.", 50 | minChar: "A palavra-passe tem de ter no mínimo 7 caracteres.", 51 | pwdsDontMatch: "As palavra-passes não coincidem", 52 | pwOneDigit: "A palavra-passe tem de conter pelo menos um dígito.", 53 | pwOneLetter: "A palavra-passe tem de conter pelo menos uma letra.", 54 | signInRequired: "É necessário iniciar sessão para fazer isso.", 55 | signupCodeIncorrect: "Código de registo incorreto.", 56 | signupCodeRequired: "É necessário um código de registo.", 57 | usernameIsEmail: "O nome do utilizador não pode ser um endereço de e-mail.", 58 | usernameRequired: "O nome de usuário é obrigatório.", 59 | accounts: { 60 | "Email already exists.": "O e-mail já existe.", 61 | "Email doesn't match the criteria.": "E-mail inválido.", 62 | "Invalid login token": "Token de início de sessão inválido", 63 | "Login forbidden": "Início de sessão impedido", 64 | "Service unknown": "Serviço desconhecido", 65 | "Unrecognized options for login request": "Pedido de início de sessão com opções não reconhecidas", 66 | "User validation failed": "A validação do utilizador falhou", 67 | "Username already exists.": "O nome do utilizador já existe.", 68 | "You are not logged in.": "Não tem sessão iniciada.", 69 | "You've been logged out by the server. Please log in again.": "Sessão terminada pelo servidor. Por favor, inicie sessão novamente.", 70 | "Your session has expired. Please log in again.": "A sua sessão expirou. Por favor, inicie sessão novamente.", 71 | "No matching login attempt found": "Não foi encontrada nenhuma tentativa de início de sessão que coincida.", 72 | "Password is old. Please reset your password.": "A palavra-passe é antiga. Por favor, redefina a sua palavra-passe.", 73 | "Incorrect password": "Palavra-passe incorreta", 74 | "Invalid email": "E-mail inválido", 75 | "Must be logged in": "É necessário iniciar sessão", 76 | "Need to set a username or email": "É necessário definir um nome de utilizador ou e-mail", 77 | "old password format": "Formato de palavra-passe antigo", 78 | "Password may not be empty": "A palavra-passe não pode estar em branco", 79 | "Signups forbidden": "Criação de contas proibida", 80 | "Token expired": "O token expirou", 81 | "Token has invalid email address": "O token tem um endereço de e-mail inválido", 82 | "User has no password set": "O utilizador não defeniu a palavra-passe", 83 | "User not found": "Utilizador não encontrado", 84 | "Verify email link expired": "O link de verificação de e-mail expirou", 85 | "Verify email link is for unknown address": "O link de verificação de e-mail está definido para um endereço desconhecido", 86 | "Match failed": "Comparação falhou", 87 | "Unknown error": "Erro desconhecido" 88 | } 89 | } 90 | }; 91 | 92 | T9n.map("pt_PT", pt_PT); 93 | -------------------------------------------------------------------------------- /t9n/fr.js: -------------------------------------------------------------------------------- 1 | //Language: French 2 | //Translators: djhi 3 | 4 | var fr = { 5 | add: "Ajouter", 6 | and: "et", 7 | back: "retour", 8 | changePassword: "Modifier le mot de passe", 9 | choosePassword: "Choisir le mot de passe", 10 | clickAgree: "En cliquant sur S'enregistrer, vous acceptez notre", 11 | configure: "Configurer", 12 | createAccount: "Créer un compte", 13 | currentPassword: "Mot de passe actuel", 14 | dontHaveAnAccount: "Vous n'avez pas de compte ?", 15 | email: "Email", 16 | emailAddress: "Adresse Email", 17 | emailResetLink: "Envoyer le mail de réinitialisation", 18 | forgotPassword: "Vous avez oublié votre mot de passe ?", 19 | ifYouAlreadyHaveAnAccount: "Si vous avez déjà un compte", 20 | newPassword: "Nouveau mot de passe", 21 | newPasswordAgain: "Confirmer le nouveau mot de passe", 22 | optional: "Optionnel", 23 | OR: "OU", 24 | password: "Mot de passe", 25 | passwordAgain: "Confirmer le mot de passe", 26 | privacyPolicy: "Politique de confidentialité", 27 | remove: "Supprimer", 28 | resetYourPassword: "Reinitialiser votre mot de passe", 29 | setPassword: "Spécifier le mot de passe", 30 | sign: "S'enregistrer", 31 | signIn: "Se Connecter", 32 | signin: "se connecter", 33 | signOut: "Se Deconnecter", 34 | signUp: "S'enregistrer", 35 | signupCode: "Code d'inscription", 36 | signUpWithYourEmailAddress: "S'enregistrer avec votre adresse email", 37 | terms: "Conditions d'utilisation", 38 | updateYourPassword: "Mettre à jour le mot de passe", 39 | username: "Nom d'utilisateur", 40 | usernameOrEmail: "Nom d'utilisateur ou email", 41 | "with": "avec", 42 | info: { 43 | emailSent: "Email envoyé", 44 | emailVerified: "Email verifié", 45 | passwordChanged: "Mot de passe modifié", 46 | passwordReset: "Mot de passe réinitialisé" 47 | }, 48 | error: { 49 | emailRequired: "Un email est requis.", 50 | minChar: "Votre mot de passe doit contenir au minimum 7 caractères.", 51 | pwdsDontMatch: "Les mots de passe ne correspondent pas", 52 | pwOneDigit: "Votre mot de passe doit contenir au moins un chiffre.", 53 | pwOneLetter: "Votre mot de passe doit contenir au moins une lettre.", 54 | signInRequired: "Vous devez être connecté pour continuer.", 55 | signupCodeIncorrect: "Le code d'enregistrement est incorrect.", 56 | signupCodeRequired: "Un code d'inscription est requis.", 57 | usernameIsEmail: "Le nom d'utilisateur ne peut être le même que l'adresse email.", 58 | usernameRequired: "Un nom d'utilisateur est requis.", 59 | accounts: { 60 | "Email already exists.": "Adresse email déjà utilisée.", 61 | "Email doesn't match the criteria.": "Adresse email ne correspond pas aux critères.", 62 | "Invalid login token": "Jeton d'authentification invalide", 63 | "Login forbidden": "Authentification interdite", 64 | "Service unknown": "Service inconnu", 65 | "Unrecognized options for login request": "Options inconnues pour la requête d'authentification", 66 | "User validation failed": "Echec de la validation de l'utilisateur", 67 | "Username already exists.": "Nom d'utilisateur déjà utilisé.", 68 | "You are not logged in.": "Vous n'êtes pas authentifié.", 69 | "You've been logged out by the server. Please log in again.": "Vous avez été déconnecté par le serveur. Veuillez vous reconnecter.", 70 | "Your session has expired. Please log in again.": "Votre session a expiré. Veuillez vous reconnecter.", 71 | "No matching login attempt found": "Aucune tentative d'authentification ne correspond", 72 | "Password is old. Please reset your password.": "Votre mot de passe est trop ancien. Veuillez le modifier.", 73 | "Incorrect password": "Mot de passe incorrect", 74 | "Invalid email": "Email invalide", 75 | "Must be logged in": "Vous devez être connecté", 76 | "Need to set a username or email": "Vous devez renseigner un nom d'utilisateur ou une adresse email", 77 | "old password format": "Ancien format de mot de passe", 78 | "Password may not be empty": "Le mot de passe ne peut être vide", 79 | "Signups forbidden": "La création de compte est interdite", 80 | "Token expired": "Jeton expiré", 81 | "Token has invalid email address": "Le jeton contient une adresse email invalide", 82 | "User has no password set": "L'utilisateur n'a pas de mot de passe", 83 | "User not found": "Utilisateur inconnu", 84 | "Verify email link expired": "Lien de vérification d'email expiré", 85 | "Verify email link is for unknown address": "Le lien de vérification d'email réfère à une adresse inconnue", 86 | "Match failed": "La correspondance a échoué", 87 | "Unknown error": "Erreur inconnue" 88 | } 89 | } 90 | }; 91 | 92 | T9n.map("fr", fr); 93 | -------------------------------------------------------------------------------- /t9n/ru.js: -------------------------------------------------------------------------------- 1 | //Language: Russian 2 | //Translators: timtch 3 | 4 | var ru = { 5 | add: "добавить", 6 | and: "и", 7 | back: "назад", 8 | changePassword: "Сменить пароль", 9 | choosePassword: "Придумайте пароль", 10 | clickAgree: "Нажав на Регистрация, вы соглашаетесь с условиями", 11 | configure: "Конфигурировать", 12 | createAccount: "Создать аккаунт", 13 | currentPassword: "Текущий пароль", 14 | dontHaveAnAccount: "Нет аккаунта?", 15 | email: "Email", 16 | emailAddress: "Email", 17 | emailResetLink: "Отправить ссылку для сброса", 18 | "Enter email": "Введите email", 19 | "Enter password": "Введите пароль", 20 | "Enter password again": "Введите пароль (еще раз)", 21 | "Enter username": "Введите имя пользователя", 22 | "Enter username or email": "Введите имя пользователя или email", 23 | forgotPassword: "Забыли пароль?", 24 | ifYouAlreadyHaveAnAccount: "Если у вас уже есть аккаунт", 25 | newPassword: "Новый пароль", 26 | newPasswordAgain: "Новый пароль (еще раз)", 27 | optional: "Необязательно", 28 | OR: "ИЛИ", 29 | password: "Пароль", 30 | passwordAgain: "Пароль (еще раз)", 31 | privacyPolicy: "Политики безопасности", 32 | remove: "Удалить", 33 | resetYourPassword: "Сбросить пароль", 34 | setPassword: "Установить пароль", 35 | sign: "Подпись", 36 | signIn: "Войти", 37 | signin: "войти", 38 | signOut: "Выйти", 39 | signUp: "Регистрация", 40 | signupCode: "Регистрационный код", 41 | signUpWithYourEmailAddress: "Зарегистрируйтесь с вашим email адресом", 42 | terms: "Условиями пользования", 43 | updateYourPassword: "Обновить пароль", 44 | username: "Имя пользователя", 45 | usernameOrEmail: "Имя пользователя или email", 46 | "with": "через", 47 | info: { 48 | emailSent: "Email отправлен", 49 | emailVerified: "Email прошел проверку", 50 | passwordChanged: "Пароль изменен", 51 | passwordReset: "Пароль сброшен" 52 | }, 53 | error: { 54 | emailRequired: "Email обязательно.", 55 | emailInvalid: "Неправильный Email.", 56 | minChar: "Минимальное кол-во символов для пароля 7.", 57 | pwdsDontMatch: "Пароли не совпадают", 58 | pwOneDigit: "В пароле должна быть хотя бы одна цифра.", 59 | pwOneLetter: "В пароле должна быть хотя бы одна буква.", 60 | pwTooShort: "Пароль должен быть длиннее 5 символов", 61 | signInRequired: "Необходимо войти для чтобы продолжить.", 62 | signupCodeIncorrect: "Неправильный регистрационный код.", 63 | signupCodeRequired: "Необходим регистрационый код.", 64 | usernameIsEmail: "Имя пользователя не может быть адресом email.", 65 | usernameRequired: "Имя пользователя обязательно.", 66 | usernameTooShort: "Имя пользователя должно быть длиннее 2 символов", 67 | accounts: { 68 | "Email already exists.": "Email уже существует", 69 | "Email doesn't match the criteria.": "Email не соответствует критериям.", 70 | "Invalid login token": "Неверный токен для входа", 71 | "Login forbidden": "Вход запрещен", 72 | "Service unknown": "Cервис неизвестен", 73 | "Unrecognized options for login request": "Неизвестные параметры для запроса входа", 74 | "User validation failed": "Проверка пользователя неудалась", 75 | "Username already exists.": "Пользователь существует.", 76 | "You are not logged in.": "Вы не вошли.", 77 | "You've been logged out by the server. Please log in again.": "Сервер инициировал выход. Пожалуйста войдите еще раз.", 78 | "Your session has expired. Please log in again.": "Ваша сессия устарела. Пожалуйста войдите еще раз.", 79 | "No matching login attempt found": "Не было найдено соответствующей попытки войти", 80 | "Password is old. Please reset your password.": "Пароль устарел. Пожалуйста, сбросьте Ваш пароль.", 81 | "Incorrect password": "Неправильный пароль", 82 | "Invalid email": "Несуществующий Email", 83 | "Must be logged in": "Необходимо войти", 84 | "Need to set a username or email": "Необходимо имя пользователя или email", 85 | "old password format": "старый формат пароля", 86 | "Password may not be empty": "Пароль не может быть пустым", 87 | "Signups forbidden": "Регистрация отключена", 88 | "Token expired": "Время действия токена истекло", 89 | "Token has invalid email address": "У токена неправильный email адрес", 90 | "User has no password set": "У пользователя не установлен пароль", 91 | "User not found": "Пользователь не найден", 92 | "Verify email link expired": "Ссылка подтверждения email устарела", 93 | "Verify email link is for unknown address": "Ссылка подтверждения email для неизвестного адреса", 94 | "Match failed": "Не совпадают", 95 | "Unknown error": "Неизвестная ошибка" 96 | } 97 | } 98 | }; 99 | 100 | T9n.map("ru", ru); 101 | -------------------------------------------------------------------------------- /t9n/de.js: -------------------------------------------------------------------------------- 1 | //Language: German 2 | //Translators: softwarerero, robhunt3r, sclausen, sarasate 3 | 4 | var de = { 5 | add: "hinzufügen", 6 | and: "und", 7 | back: "zurück", 8 | changePassword: "Passwort ändern", 9 | choosePassword: "Passwort auswählen", 10 | clickAgree: "Durch die Registrierung akzeptieren Sie unsere", 11 | configure: "Konfigurieren", 12 | createAccount: "Konto erstellen", 13 | currentPassword: "Aktuelles Passwort", 14 | dontHaveAnAccount: "Noch kein Konto?", 15 | email: "E-Mail", 16 | emailAddress: "E-Mail Adresse", 17 | emailResetLink: "Senden", 18 | forgotPassword: "Passwort vergessen?", 19 | ifYouAlreadyHaveAnAccount: "Falls Sie ein Konto haben, bitte hier", 20 | newPassword: "Neues Passwort", 21 | newPasswordAgain: "Neues Passwort (wiederholen)", 22 | optional: "Optional", 23 | OR: "ODER", 24 | password: "Passwort", 25 | passwordAgain: "Passwort (wiederholen)", 26 | privacyPolicy: "Datenschutzerklärung", 27 | remove: "entfernen", 28 | resetYourPassword: "Passwort zurücksetzen", 29 | setPassword: "Passwort festlegen", 30 | sign: "Anmelden", 31 | signIn: "Anmelden", 32 | signin: "anmelden", 33 | signOut: "Abmelden", 34 | signUp: "Registrieren", 35 | signupCode: "Registrierungscode", 36 | signUpWithYourEmailAddress: "Mit E-Mail registrieren", 37 | terms: "Geschäftsbedingungen", 38 | updateYourPassword: "Passwort aktualisieren", 39 | username: "Benutzername", 40 | usernameOrEmail: "Benutzername oder E-Mail", 41 | "with": "mit", 42 | info: { 43 | emailSent: "E-Mail gesendet", 44 | emailVerified: "E-Mail verifiziert", 45 | PasswordChanged: "Passwort geändert", 46 | PasswordReset: "Passwort zurückgesetzt" 47 | }, 48 | error: { 49 | emailRequired: "E-Mail benötigt.", 50 | minChar: "Passwort muss mindestens 7 Zeichen lang sein.", 51 | pwdsDontMatch: "Passwörter stimmen nicht überein.", 52 | pwOneDigit: "Passwort muss mindestens eine Ziffer enthalten.", 53 | pwOneLetter: "Passwort muss mindestens einen Buchstaben enthalten.", 54 | signInRequired: "Sie müssen sich anmelden.", 55 | signupCodeIncorrect: "Registrierungscode ungültig.", 56 | signupCodeRequired: "Registrierungscode benötigt.", 57 | usernameIsEmail: "Benutzername darf keine E-Mail Adresse sein.", 58 | usernameRequired: "Benutzername benötigt.", 59 | accounts: { 60 | "Email already exists.": "Die E-Mail Adresse wird bereits verwendet.", 61 | "Email doesn't match the criteria.": "E-Mail Adresse erfüllt die Anforderungen nicht.", 62 | "Invalid login token": "Ungültiger Login-Token", 63 | "Login forbidden": "Anmeldedaten ungültig", 64 | "Service unknown": "Dienst unbekannt", 65 | "Unrecognized options for login request": "Unbekannte Optionen für Login Request", 66 | "User validation failed": "Die Benutzerdaten sind nicht korrekt", 67 | "Username already exists.": "Der Benutzer existiert bereits.", 68 | "You are not logged in.": "Sie sind nicht eingeloggt.", 69 | "You've been logged out by the server. Please log in again.": "Der Server hat Dich ausgeloggt. Bitte melde Dich erneut an.", 70 | "Your session has expired. Please log in again.": "Ihre Sitzung ist abgelaufen. Bitte melden Sie sich erneut an.", 71 | "No matching login attempt found": "Kein passender Loginversuch gefunden.", 72 | "Password is old. Please reset your password.": "Passwort ist abgelaufen. Bitte setzen Sie es zurück.", 73 | "Incorrect password": "Falsches Passwort", 74 | "Invalid email": "Ungültige E-Mail Adresse", 75 | "Must be logged in": "Sie müssen sich anmelden", 76 | "Need to set a username or email": "Benutzername oder E-Mail Adresse müssen angegeben werden", 77 | "Password may not be empty": "Das Passwort darf nicht leer sein", 78 | "Signups forbidden": "Anmeldungen sind nicht erlaubt", 79 | "Token expired": "Token ist abgelaufen", 80 | "Token has invalid email address": "E-Mail Adresse passt nicht zum Token", 81 | "User has no password set": "Kein Passwort für den Benutzer angegeben", 82 | "User not found": "Benutzer nicht gefunden", 83 | "Verify email link expired": "Link zur E-Mail Verifizierung ist abgelaufen", 84 | "Verify email link is for unknown address": "Link zur Verifizierung ist für eine unbekannte E-Mail Adresse", 85 | "Verification email lost?": "Verifizierungsemail verloren?", 86 | "Send again": "Erneut senden", 87 | "Send the verification email again": "Verifizierungsemail erneut senden", 88 | "Send email again": "Email erneut senden", 89 | "A new email has been sent to you. If the email doesn't show up in your inbox, be sure to check your spam folder.": "Eine neue Email wurde an Sie verschickt. Sollte sich die Email nicht in Ihrem Posteingang befinden, prüfen Sie bitten Ihren Spamordner.", 90 | "Match failed": "Abgleich fehlgeschlagen", 91 | "Unknown error": "Unbekannter Fehler" 92 | } 93 | } 94 | }; 95 | 96 | T9n.map("de", de); 97 | -------------------------------------------------------------------------------- /components/service_config.jsx: -------------------------------------------------------------------------------- 1 | Accounts.ui.ServiceConfig = React.createClass({ 2 | propTypes: { 3 | service: React.PropTypes.object.isRequired, 4 | template: React.PropTypes.element, 5 | }, 6 | 7 | getDefaultProps(){ 8 | return { 9 | template: undefined 10 | }; 11 | }, 12 | 13 | getInitialState(){ 14 | return { 15 | updateDisabled: true, 16 | dialogOpen: false 17 | } 18 | }, 19 | 20 | updateDisabled() { 21 | if (this.refs.dialog.isOpen()){ 22 | this.setState({updateDisabled: _.any(this.configurationFields(), (field)=>{ 23 | return this.refs[field.property].getValue().trim() === ''; 24 | })}); 25 | } 26 | }, 27 | 28 | blazeTemplate() { 29 | let serviceName = this.props.service.name; 30 | 31 | return Template['configureLoginServiceDialogFor' + 32 | (serviceName === 'meteor-developer' ? 33 | 'MeteorDeveloper' : 34 | capitalize(serviceName))]; 35 | }, 36 | 37 | configurationFields() { 38 | return this.blazeTemplate().fields(); 39 | }, 40 | 41 | save(){ 42 | if(!this.state.updateDisabled){ 43 | // Prepare the configuration document for this login service 44 | let serviceName = this.props.service.name; 45 | let configuration = { 46 | service: serviceName 47 | }; 48 | 49 | // Fetch the value of each input field 50 | _.each(this.configurationFields(), (field)=>{ 51 | configuration[field.property] = this.refs[field.property].getValue() 52 | .trim(); // trim() doesnt work on IE8; 53 | }); 54 | 55 | configuration.loginStyle = this.refs.loginStyle.getSelectedValue(); 56 | 57 | // Configure this login service 58 | Accounts.connection.call( 59 | "configureLoginService", configuration, (error, result)=>{ 60 | if (error){ 61 | Meteor._debug("Error configuring login service " + serviceName, 62 | error); 63 | } else { 64 | this.cancel(); 65 | } 66 | }); 67 | } 68 | }, 69 | 70 | show(){ 71 | this.setState({ 72 | dialogOpen: true 73 | }); 74 | }, 75 | 76 | cancel(){ 77 | this.setState({ 78 | dialogOpen: false 79 | }); 80 | }, 81 | 82 | render(){ 83 | let blazeForm = ''; 84 | 85 | if (!this.props.template){ 86 | const template = this.blazeTemplate(); 87 | 88 | if (template && Blaze){ 89 | blazeForm =
; 92 | } 93 | } 94 | 95 | const fields = this.configurationFields().map((field, index)=>{ 96 | return(
99 | 104 |
); 105 | }); 106 | 107 | const template =
109 | {this.props.template} 110 |
; 111 | 112 | const actions = [ 113 | { 114 | text: t9n('I\'ll do this later'), 115 | onTouchTap: this.cancel 116 | }, 117 | { 118 | text: t9n('Save Configuration'), 119 | onTouchTap: this.save, 120 | disabled: this.state.updateDisabled 121 | } 122 | ]; 123 | 124 | return(
126 | 133 | {blazeForm} 134 | {template} 135 |

136 | {t9n('Now, copy over some details')}. 137 |

138 | {fields} 139 |

140 | {t9n('Choose the login style')}: 141 |

142 | 143 | 147 | 151 | 152 |

153 | {t9n('Read more about')} 154 |   155 | 158 | {t9n('redirect-based login')} 159 | 160 |

161 |
162 |
); 163 | } 164 | }); 165 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # qnub:accounts-react-material-ui 2 | 3 | Meteor sign up and sign in [react](http://facebook.github.io/react/index.html) components (and much more!) with [material ui](http://material-ui.com/#/home). 4 | 5 | This package based on [accounts-ui-unstyled](https://github.com/meteor/meteor/tree/devel/packages/accounts-ui-unstyled). 6 | 7 | ## Install 8 | 9 | Install at least one accounts login service like `accounts-password`, `accounts-facebook` or any other: 10 | 11 | meteor add accounts-password 12 | 13 | Install package: 14 | 15 | meteor add qnub:accounts-react-material-ui 16 | 17 | Run on client side: 18 | 19 | injectTapEventPlugin(); 20 | 21 | To enable `onTouchTap` event, if you already don't. 22 | 23 | Also you should have installed and configured [material ui](http://material-ui.com/#/home) in your project. If you don't — try some of [existed packages](https://atmospherejs.com/?q=material%20ui). 24 | 25 | ## Config 26 | 27 | Supports standard [Accounts.ui.config](http://docs.meteor.com/#/full/accounts_ui_config). 28 | 29 | Define preferred button colors for services in `public.accounts.styles.` part of [meteor settings](http://docs.meteor.com/#/full/meteor_settings): 30 | 31 | { 32 | "public": { 33 | "accounts": { 34 | "styles": { 35 | "services": { 36 | "facebook": { 37 | "backgroundColor": "#46629e", 38 | "labelColor": "#ffffff", 39 | "disabledBackgroundColor": "#545966", 40 | "disabledLabelColor": "#aca4a4", 41 | "rippleColor": "#ffffff", 42 | "fullWidth": true, 43 | "style": { 44 | "width": "300px" 45 | } 46 | } 47 | } 48 | } 49 | } 50 | } 51 | } 52 | 53 | Color settings have same meanings as for [RaisedButton Material UI](http://material-ui.com/#/components/buttons) properties. 54 | 55 | ## Usage 56 | 57 | Because dropdown isn't very good solution i prefer you to use separate views and routes for different login states and direct user depending on it. Example: 58 | 59 | {Meteor.userId() ? : } 60 | 61 | Then on `/login` page use `` component to display login form. This form displays different components depending of configuration and current state. For example for authenticated user it shows password change form. 62 | 63 | Where optional `redirect` property can be string target URL or function like this (for [kadira:flow-router](https://atmospherejs.com/kadira/flow-router)): 64 | 65 | handleLogin = function(){ 66 | FlowRouter.go('/'); 67 | }; 68 | 69 | **NOTE:** Meteor's core `accounts-base` (which used here) package already use this paths (on server) for own purposes: 70 | 71 | /verify-email 72 | /reset-password 73 | /enroll-account 74 | 75 | Also you need to place `` (it's invisible component with popup dialogs) in your root (with `/` URL) page or even in main layout to allow user do restore password, verify email and other two-step things. 76 | 77 | ## WiKi 78 | 79 | Additional info can be obtained from [WiKi on GitHub](https://github.com/qnub/meteor-accounts-react-material-ui/wiki). 80 | 81 | ## Components 82 | 83 | Package contains different components which can be used separately: 84 | 85 | * `Accounts.ui.LoginFormSet` — main and most complete login form. 86 | * `Accounts.ui.Dialogs` — invisible component with popup dialogs to interact with two-step things. 87 | * `Accounts.ui.LoginForm` — `accounts-password` part of `Accounts.ui.LoginFormSet`. 88 | * `Accounts.ui.LoginServices` — OAuth login buttons. 89 | 90 | ## SSR 91 | 92 | Generally it work with server side rendering, but accounts package haven't some features on server side, so pages have differences on client and server (and you'll see warnings in console). 93 | 94 | ### Language codes and contributions (copyed from [softwarerero:accounts-t9n](https://github.com/softwarerero/meteor-accounts-t9n.git) package and updated) 95 | 96 | Code | Language | Contributor(s) 97 | ------ | ----------------------- | ------------- 98 | ar | Arabic | eahefnawy 99 | ca | Catalan | ixdi 100 | cs | Czech | mdede 101 | da | Danish | LarsBuur 102 | de | German | softwarerero, robhunt3r, sclausen, sarasate 103 | el | Greek | mutil 104 | es | Spanish | softwarerero, robhunt3r 105 | es_ES | Spanish for Spain | maomorales 106 | fa | Farsi | pajooh 107 | fr | French | djhi 108 | he | Hebrew | noamyoungerm 109 | hr | Croatian | tnedich 110 | hu | Hungarian | balazskiss 111 | id | Indonesian | hellstad 112 | it | Italian | splendido 113 | ja | Japanese | y-ich 114 | kh | Khmer | yuomtheara 115 | ko | Korean | candicom, buo 116 | nl | Dutch | willemx, louwers 117 | no_NB | Norwegian bokmål | kjetilge 118 | pl | Polish | pwldp, wareczek 119 | pt | Portuguese (Brasil) | alanmeira, Tadeu Caldararo 120 | pt_PT | Portuguese (Portugal) | tdbs 121 | ro | Romanian | alexhuszar 122 | ru | Russian | timtch 123 | sk | Slovak | MartinBucko, aladinko 124 | sl | Slovenian | alesvaupotic 125 | sv | Swedish | timbrandin 126 | tr | Turkish | serkandurusoy 127 | uk | Ukrainian | SkeLLLa 128 | vi | Vietnamese | olragon 129 | zh_cn | Simplified Chinese | laosb 130 | zh_hk | Hong Kong Chinese | daveeel 131 | zh_tw | Taiwan Chinese | victorleungtw 132 | -------------------------------------------------------------------------------- /components/login_form.jsx: -------------------------------------------------------------------------------- 1 | const LOGIN_FORM_STATES = { 2 | SIGN_IN: Symbol('SIGN_IN'), 3 | SIGN_UP: Symbol('SIGN_UP'), 4 | PASSWORD_CHANGE: Symbol('PASSWORD_CHANGE'), 5 | PASSWORD_RESET: Symbol('PASSWORD_RESET') 6 | }; 7 | 8 | Accounts.ui.LoginForm = React.createClass({ 9 | mixins: [ReactMeteorData], 10 | 11 | getMeteorData(){ 12 | return { 13 | user: Meteor.user() 14 | }; 15 | }, 16 | 17 | render(){ 18 | if (!Package['accounts-password']){ 19 | return false; 20 | } 21 | 22 | return(
24 | 25 |
); 26 | } 27 | }); 28 | 29 | Accounts.ui._loginForm = React.createClass({ 30 | propTypes: { 31 | user: React.PropTypes.object 32 | }, 33 | 34 | getInitialState(){ 35 | return { 36 | message: '', 37 | waiting: false, 38 | formVariant: this.props.user ? LOGIN_FORM_STATES.PASSWORD_CHANGE : LOGIN_FORM_STATES.SIGN_IN, 39 | services: [] 40 | }; 41 | }, 42 | 43 | componentDidMount(){ 44 | this.updatedServices(); 45 | }, 46 | 47 | updatedServices(){ 48 | Meteor.call('userServices', (err, res)=>{ 49 | if (!err && this.isMounted()){ 50 | this.setState({ 51 | services: res 52 | }); 53 | } 54 | }); 55 | }, 56 | 57 | componentWillReceiveProps(nextProps){ 58 | if (!nextProps.user && this.state.formVariant != LOGIN_FORM_STATES.SIGN_IN){ 59 | this.setState({ 60 | formVariant: LOGIN_FORM_STATES.SIGN_IN 61 | }); 62 | } 63 | 64 | if (this.props.user != nextProps.user){ 65 | this.updatedServices(); 66 | } 67 | }, 68 | 69 | validateUsername(username){ 70 | if (username.length >= 3) { 71 | return true; 72 | } else { 73 | this.showMessage(t9n("error.usernameTooShort")); 74 | this.refs.snackbar.show(); 75 | 76 | return false; 77 | } 78 | }, 79 | 80 | validateEmail(email){ 81 | if (passwordSignupFields() === "USERNAME_AND_OPTIONAL_EMAIL" && email === '') 82 | return true; 83 | 84 | if (email.indexOf('@') !== -1) { 85 | return true; 86 | } else { 87 | this.showMessage(t9n("error.emailInvalid")); 88 | 89 | return false; 90 | } 91 | }, 92 | 93 | validatePassword(password){ 94 | return validatePassword(password); 95 | }, 96 | 97 | getField(key, ref, hint, label, type='text'){ 98 | return(
101 | 106 |
); 107 | }, 108 | 109 | getUsernameOrEmailField(){ 110 | return(this.getField( 111 | 'usernameOrEmail', 112 | 'usernameOrEmail', 113 | t9n('Enter username or email'), 114 | t9n('usernameOrEmail') 115 | )); 116 | }, 117 | 118 | getUsernameField(){ 119 | return(this.getField( 120 | 'username', 121 | 'username', 122 | t9n('Enter username'), 123 | t9n('username') 124 | )); 125 | }, 126 | 127 | getEmailField(){ 128 | return(this.getField( 129 | 'email', 130 | 'email', 131 | t9n('Enter email'), 132 | t9n('email') 133 | )); 134 | }, 135 | 136 | getPasswordField(){ 137 | return(this.getField( 138 | 'password', 139 | 'password', 140 | t9n('Enter password'), 141 | t9n('password'), 142 | 'password' 143 | )); 144 | }, 145 | 146 | getNewPasswordField(){ 147 | return(this.getField( 148 | 'newPassword', 149 | 'newPassword', 150 | t9n('Enter password'), 151 | t9n('newPassword'), 152 | 'password' 153 | )); 154 | }, 155 | 156 | fields() { 157 | const loginFields = []; 158 | 159 | if (this.state.formVariant == LOGIN_FORM_STATES.SIGN_IN){ 160 | if(_.contains(["USERNAME_AND_EMAIL", "USERNAME_AND_OPTIONAL_EMAIL"], 161 | passwordSignupFields())){ 162 | loginFields.push(this.getUsernameOrEmailField()); 163 | } 164 | 165 | if(passwordSignupFields() === "USERNAME_ONLY"){ 166 | loginFields.push(this.getUsernameField()); 167 | } 168 | 169 | if(passwordSignupFields() === "EMAIL_ONLY"){ 170 | loginFields.push(this.getEmailField()); 171 | } 172 | 173 | loginFields.push(this.getPasswordField()); 174 | } 175 | 176 | if (this.state.formVariant == LOGIN_FORM_STATES.SIGN_UP){ 177 | if(_.contains(["USERNAME_AND_EMAIL", "USERNAME_AND_OPTIONAL_EMAIL", "USERNAME_ONLY"], 178 | passwordSignupFields())){ 179 | loginFields.push(this.getUsernameField()); 180 | } 181 | 182 | if(_.contains(["USERNAME_AND_EMAIL", "EMAIL_ONLY"], 183 | passwordSignupFields())){ 184 | loginFields.push(this.getEmailField()); 185 | } 186 | 187 | loginFields.push(this.getPasswordField()); 188 | } 189 | 190 | if (this.state.formVariant == LOGIN_FORM_STATES.PASSWORD_RESET){ 191 | loginFields.push(this.getEmailField()); 192 | } 193 | 194 | if (this.showPasswordChangeForm()){ 195 | loginFields.push(this.getPasswordField()); 196 | loginFields.push(this.getNewPasswordField()); 197 | } 198 | 199 | return loginFields; 200 | }, 201 | 202 | showPasswordChangeForm(){ 203 | return(this.state.services.indexOf('password') != -1 204 | && this.state.formVariant == LOGIN_FORM_STATES.PASSWORD_CHANGE); 205 | }, 206 | 207 | showCreateAccountLink() { 208 | return this.state.formVariant == LOGIN_FORM_STATES.SIGN_IN && !Accounts._options.forbidClientAccountCreation; 209 | }, 210 | 211 | showForgotPasswordLink() { 212 | return !this.props.user 213 | && this.state.formVariant != LOGIN_FORM_STATES.PASSWORD_RESET 214 | && _.contains( 215 | ["USERNAME_AND_EMAIL", "USERNAME_AND_OPTIONAL_EMAIL", "EMAIL_ONLY"], 216 | passwordSignupFields()); 217 | }, 218 | 219 | switchToSignUp(){ 220 | this.setState({formVariant: LOGIN_FORM_STATES.SIGN_UP}); 221 | }, 222 | 223 | switchToSignIn(){ 224 | this.setState({formVariant: LOGIN_FORM_STATES.SIGN_IN}); 225 | }, 226 | 227 | switchToPasswordReset(){ 228 | this.setState({formVariant: LOGIN_FORM_STATES.PASSWORD_RESET}); 229 | }, 230 | 231 | signOut(){ 232 | Meteor.logout(); 233 | }, 234 | 235 | signIn(){ 236 | const username = this.refs.username ? this.refs.username.getValue().trim() : null; 237 | const email = this.refs.email ? this.refs.email.getValue().trim() : null; 238 | const usernameOrEmail = this.refs.usernameOrEmail ? this.refs.usernameOrEmail.getValue().trim() : null; 239 | // notably not trimmed. a password could (?) start or end with a space 240 | const password = this.refs.password.getValue(); 241 | 242 | let loginSelector; 243 | 244 | if (username !== null) { 245 | if (!this.validateUsername(username)){ 246 | return; 247 | } else { 248 | loginSelector = {username: username}; 249 | } 250 | } else if (email !== null) { 251 | if (!this.validateEmail(email)){ 252 | return; 253 | } else { 254 | loginSelector = {email}; 255 | } 256 | } else if (usernameOrEmail !== null) { 257 | // XXX not sure how we should validate this. but this seems good enough (for now), 258 | // since an email must have at least 3 characters anyways 259 | if (!this.validateUsername(usernameOrEmail)){ 260 | return; 261 | } else { 262 | loginSelector = usernameOrEmail; 263 | } 264 | } else { 265 | throw new Error("Unexpected -- no element to use as a login user selector"); 266 | } 267 | 268 | Meteor.loginWithPassword(loginSelector, password, (error, result)=>{ 269 | if (error) { 270 | this.showMessage(t9n(`error.accounts.${error.reason}`) || t9n("Unknown error")); 271 | } else { 272 | this.setState({formVariant: LOGIN_FORM_STATES.PASSWORD_CHANGE}); 273 | loginResultCallback(this.props.redirect); 274 | } 275 | }); 276 | }, 277 | 278 | signUp(){ 279 | const options = {}; // to be passed to Accounts.createUser 280 | 281 | const username = this.refs.username ? this.refs.username.getValue().trim() : null; 282 | const email = this.refs.email ? this.refs.email.getValue().trim() : null; 283 | // notably not trimmed. a password could (?) start or end with a space 284 | const password = this.refs.password.getValue(); 285 | 286 | if (username !== null) { 287 | if (!this.validateUsername(username)){ 288 | return; 289 | } else { 290 | options.username = username; 291 | } 292 | } 293 | 294 | if (email !== null) { 295 | if (!this.validateEmail(email)){ 296 | return; 297 | } else { 298 | options.email = email; 299 | } 300 | } 301 | 302 | if (!this.validatePassword(password)){ 303 | this.showMessage(t9n("error.pwTooShort")); 304 | 305 | return; 306 | } else { 307 | options.password = password; 308 | } 309 | 310 | this.setState({waiting: true}); 311 | 312 | Accounts.createUser(options, (error)=>{ 313 | if (error) { 314 | this.showMessage(t9n(`error.accounts.${error.reason}`) || t9n("Unknown error")); 315 | } else { 316 | this.setState({formVariant: LOGIN_FORM_STATES.PASSWORD_CHANGE}); 317 | loginResultCallback(this.props.redirect); 318 | } 319 | 320 | this.setState({waiting: false}); 321 | }); 322 | }, 323 | 324 | passwordReset(){ 325 | if (this.state.waiting) { 326 | return; 327 | } 328 | 329 | const email = this.refs.email ? this.refs.email.getValue().trim() : ''; 330 | 331 | if (email.indexOf('@') !== -1) { 332 | this.setState({waiting: true}); 333 | 334 | Accounts.forgotPassword({email: email}, (error)=>{ 335 | if (error){ 336 | this.showMessage(t9n(`error.accounts.${error.reason}`) || t9n("Unknown error")); 337 | } else { 338 | this.showMessage(t9n("info.emailSent")); 339 | } 340 | 341 | this.setState({waiting: false}); 342 | }); 343 | } else { 344 | this.showMessage(t9n("error.emailInvalid")); 345 | } 346 | }, 347 | 348 | passwordChange(){ 349 | const oldPassword = this.refs.password.getValue(); 350 | 351 | // notably not trimmed. a password could (?) start or end with a space 352 | const password = this.refs.newPassword.getValue(); 353 | 354 | if (!this.validatePassword(password)){ 355 | this.showMessage(t9n("error.pwTooShort")); 356 | 357 | return; 358 | } 359 | 360 | Accounts.changePassword(oldPassword, password, (error)=>{ 361 | if (error) { 362 | this.showMessage(t9n(`error.accounts.${error.reason}`) || t9n("Unknown error")); 363 | } else { 364 | this.showMessage(t9n('info.passwordChanged')); 365 | } 366 | }); 367 | }, 368 | 369 | showMessage(message){ 370 | message = message.trim(); 371 | 372 | if (message){ 373 | this.setState({message}); 374 | this.refs.snackbar.show(); 375 | } 376 | }, 377 | 378 | loaderPosition(){ 379 | let position = 120; 380 | 381 | if (Meteor.isClient){ 382 | position = window.innerWidth / 2 - 20; 383 | } 384 | 385 | return position; 386 | }, 387 | 388 | render(){ 389 | // console.log(this.props.user); 390 | 391 | const signUpSwitch = this.showCreateAccountLink() ? 392 |
395 | 399 |
400 | : ''; 401 | 402 | const signInSwitch = (this.state.formVariant == LOGIN_FORM_STATES.SIGN_UP 403 | || this.state.formVariant == LOGIN_FORM_STATES.PASSWORD_RESET) ? 404 |
407 | 411 |
412 | : ''; 413 | 414 | const passwordResetSwitch = this.showForgotPasswordLink() ? 415 |
418 | 422 |
423 | : ''; 424 | 425 | const signInButton = this.state.formVariant == LOGIN_FORM_STATES.SIGN_IN ? 426 |
429 | 435 |
436 | : ''; 437 | 438 | const signUpButton = this.state.formVariant == LOGIN_FORM_STATES.SIGN_UP ? 439 |
442 | 448 |
449 | : ''; 450 | 451 | const passwordResetButton = this.state.formVariant == LOGIN_FORM_STATES.PASSWORD_RESET ? 452 |
455 | 461 |
462 | : ''; 463 | 464 | const passwordChangeButton = this.showPasswordChangeForm() ? 465 |
468 | 474 |
475 | : ''; 476 | 477 | const signOutButton = this.props.user ? 478 |
481 | 486 |
487 | : ''; 488 | 489 | return(
491 | {this.fields()} 492 |
493 | {signOutButton} 494 | {signUpSwitch} 495 | {signInSwitch} 496 | {passwordResetSwitch} 497 | {signUpButton} 498 | {signInButton} 499 | {passwordResetButton} 500 | {passwordChangeButton} 501 |
502 | 503 | 508 | 512 |
); 513 | } 514 | }); 515 | --------------------------------------------------------------------------------