Merge branch 'master' of github.com:jcbrand/converse.js

This commit is contained in:
JC Brand 2015-01-07 10:19:06 +00:00
commit fee1f83cf5
34 changed files with 7174 additions and 5291 deletions

6
.gitignore vendored
View File

@ -10,6 +10,12 @@
.pydevproject .pydevproject
analytics.js analytics.js
# Ruby/Sass/Bundler
.bundle
.sass-cache
ruby
bourbon
Backbone.Overview Backbone.Overview
tags tags
stamp-npm stamp-npm

3
Gemfile Normal file
View File

@ -0,0 +1,3 @@
source 'https://rubygems.org'
gem 'sass', '~> 3.3'
gem 'bourbon'

View File

@ -1,11 +1,12 @@
# You can set these variables from the command line. # You can set these variables from the command line.
BOWER ?= node_modules/.bin/bower BOWER ?= node_modules/.bin/bower
BUILDDIR = ./docs BUILDDIR = ./docs
PAPER = PAPER =
PHANTOMJS ?= node_modules/.bin/phantomjs PHANTOMJS ?= node_modules/.bin/phantomjs
SPHINXBUILD = ./bin/sphinx-build SPHINXBUILD ?= ./bin/sphinx-build
SPHINXOPTS = SPHINXOPTS =
POTOJSON ?= node_modules/.bin/po2json PO2JSON ?= node_modules/.bin/po2json
SASS ?= sass
# Internal variables. # Internal variables.
ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) ./docs/source ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) ./docs/source
@ -42,7 +43,7 @@ po:
merge: po merge: po
po2json: po2json:
find ./locale -maxdepth 1 -mindepth 1 -type d -exec $(POTOJSON) -p -f jed -d converse {}/LC_MESSAGES/converse.po {}/LC_MESSAGES/converse.json \; find ./locale -maxdepth 1 -mindepth 1 -type d -exec $(PO2JSON) -p -f jed -d converse {}/LC_MESSAGES/converse.po {}/LC_MESSAGES/converse.json \;
######################################################################## ########################################################################
## Release management ## Release management
@ -54,6 +55,7 @@ cssmin:
grunt cssmin grunt cssmin
release: release:
sed -i s/Project-Id-Version:\ Converse\.js\ [0-9]\.[0-9]\.[0-9]/Project-Id-Version:\ Converse.js\ $(VERSION)/ locale/converse.pot
sed -i s/\"version\":\ \"[0-9]\.[0-9]\.[0-9]\"/\"version\":\ \"$(VERSION)\"/ bower.json sed -i s/\"version\":\ \"[0-9]\.[0-9]\.[0-9]\"/\"version\":\ \"$(VERSION)\"/ bower.json
sed -i s/\"version\":\ \"[0-9]\.[0-9]\.[0-9]\"/\"version\":\ \"$(VERSION)\"/ package.json sed -i s/\"version\":\ \"[0-9]\.[0-9]\.[0-9]\"/\"version\":\ \"$(VERSION)\"/ package.json
sed -i s/v[0-9]\.[0-9]\.[0-9]\.zip/v$(VERSION)\.zip/ index.html sed -i s/v[0-9]\.[0-9]\.[0-9]\.zip/v$(VERSION)\.zip/ index.html
@ -63,6 +65,7 @@ release:
sed -i "s/(Unreleased)/(`date +%Y-%m-%d`)/" docs/CHANGES.rst sed -i "s/(Unreleased)/(`date +%Y-%m-%d`)/" docs/CHANGES.rst
make pot make pot
make po make po
make po2json
make build make build
######################################################################## ########################################################################
@ -83,13 +86,13 @@ clean::
dev: clean dev: clean
npm install npm install
${BOWER} update; ${BOWER} update;
bundler install --path=.
######################################################################## ########################################################################
## Builds ## Builds
css:: css::
./node_modules/.bin/lessc less/styles.less > css/theme.css ${SASS} sass/converse.scss > css/converse.css
./node_modules/.bin/lessc less/converse.less > css/converse.css
build:: build::
./node_modules/.bin/grunt jst ./node_modules/.bin/grunt jst

View File

@ -33,7 +33,7 @@ It has the following features:
* Messages appear in all connnected chat clients `XEP 280 <http://xmpp.org/extensions/xep-0280.html>`_ * Messages appear in all connnected chat clients `XEP 280 <http://xmpp.org/extensions/xep-0280.html>`_
* Typing and chat state notifications `XEP 85 <http://xmpp.org/extensions/xep-0085.html>`_ * Typing and chat state notifications `XEP 85 <http://xmpp.org/extensions/xep-0085.html>`_
* Third person messages (/me ) * Third person messages (/me )
* Translated into 14 languages * Translated into 15 languages
* Off-the-record encryption * Off-the-record encryption
----------- -----------

View File

@ -29,7 +29,8 @@
"bootstrapJS": "https://raw.githubusercontent.com/jcbrand/bootstrap/7d96a5f60d26c67b5348b270a775518b96a702c8/dist/js/bootstrap.js", "bootstrapJS": "https://raw.githubusercontent.com/jcbrand/bootstrap/7d96a5f60d26c67b5348b270a775518b96a702c8/dist/js/bootstrap.js",
"fontawesome": "~4.1.0", "fontawesome": "~4.1.0",
"typeahead.js": "https://raw.githubusercontent.com/jcbrand/typeahead.js/eedfb10505dd3a20123d1fafc07c1352d83f0ab3/dist/typeahead.jquery.js", "typeahead.js": "https://raw.githubusercontent.com/jcbrand/typeahead.js/eedfb10505dd3a20123d1fafc07c1352d83f0ab3/dist/typeahead.jquery.js",
"strophejs-plugins": "https://github.com/strophe/strophejs-plugins.git#conversejs" "strophejs-plugins": "https://github.com/strophe/strophejs-plugins.git#conversejs",
"skeleton-sass": "~2.0.3"
}, },
"exportsOverride": {} "exportsOverride": {}
} }

View File

@ -164,9 +164,7 @@
// Logging // Logging
Strophe.log = function (level, msg) { console.log(level+' '+msg); }; Strophe.log = function (level, msg) { console.log(level+' '+msg); };
Strophe.error = function (msg) { Strophe.error = function (msg) { console.log('ERROR: '+msg); };
console.log('ERROR: '+msg);
};
// Add Strophe Namespaces // Add Strophe Namespaces
Strophe.addNamespace('REGISTER', 'jabber:iq:register'); Strophe.addNamespace('REGISTER', 'jabber:iq:register');
@ -216,6 +214,11 @@
var OPENED = 'opened'; var OPENED = 'opened';
var CLOSED = 'closed'; var CLOSED = 'closed';
// Translation machinery
// ---------------------
var __ = $.proxy(utils.__, this);
var ___ = utils.___;
// Default configuration values // Default configuration values
// ---------------------------- // ----------------------------
var default_settings = { var default_settings = {
@ -232,7 +235,7 @@
bosh_service_url: undefined, // The BOSH connection manager URL. bosh_service_url: undefined, // The BOSH connection manager URL.
cache_otr_key: false, cache_otr_key: false,
debug: false, debug: false,
domain_placeholder: " e.g. conversejs.org", // Placeholder text shown in the domain input on the registration form domain_placeholder: __(" e.g. conversejs.org"), // Placeholder text shown in the domain input on the registration form
default_box_height: 400, // The default height, in pixels, for the control box, chat boxes and chatrooms. default_box_height: 400, // The default height, in pixels, for the control box, chat boxes and chatrooms.
expose_rid_and_sid: false, expose_rid_and_sid: false,
forward_messages: false, forward_messages: false,
@ -286,10 +289,6 @@
// Only use OTR by default if allow OTR is enabled to begin with // Only use OTR by default if allow OTR is enabled to begin with
this.use_otr_by_default = this.use_otr_by_default && this.allow_otr; this.use_otr_by_default = this.use_otr_by_default && this.allow_otr;
// Translation machinery
// ---------------------
var __ = $.proxy(utils.__, this);
var ___ = utils.___;
// Translation aware constants // Translation aware constants
// --------------------------- // ---------------------------
var OTR_CLASS_MAPPING = {}; var OTR_CLASS_MAPPING = {};
@ -599,7 +598,7 @@
this.registerPresenceHandler(); this.registerPresenceHandler();
this.chatboxes.registerMessageHandler(); this.chatboxes.registerMessageHandler();
converse.xmppstatus.sendPresence(); converse.xmppstatus.sendPresence();
this.giveFeedback(__('Online Contacts')); this.giveFeedback(__('Contacts'));
}, this)); }, this));
}; };
@ -641,7 +640,7 @@
this.initStatus($.proxy(function () { this.initStatus($.proxy(function () {
this.chatboxes.onConnected(); this.chatboxes.onConnected();
this.giveFeedback(__('Online Contacts')); this.giveFeedback(__('Contacts'));
if (this.callback) { if (this.callback) {
if (this.connection.service === 'jasmine tests') { if (this.connection.service === 'jasmine tests') {
// XXX: Call back with the internal converse object. This // XXX: Call back with the internal converse object. This
@ -1512,7 +1511,7 @@
return; return;
} }
var img_src = 'data:'+this.model.get('image_type')+';base64,'+this.model.get('image'), var img_src = 'data:'+this.model.get('image_type')+';base64,'+this.model.get('image'),
canvas = $('<canvas height="31px" width="31px" class="avatar"></canvas>').get(0); canvas = $('<canvas height="32px" width="32px" class="avatar"></canvas>').get(0);
if (!(canvas.getContext && canvas.getContext('2d'))) { if (!(canvas.getContext && canvas.getContext('2d'))) {
return this; return this;
@ -1703,7 +1702,7 @@
'label_room_name': __('Room name'), 'label_room_name': __('Room name'),
'label_nickname': __('Nickname'), 'label_nickname': __('Nickname'),
'label_server': __('Server'), 'label_server': __('Server'),
'label_join': __('Join'), 'label_join': __('Join Room'),
'label_show_rooms': __('Show rooms') 'label_show_rooms': __('Show rooms')
}) })
).hide()); ).hide());
@ -2975,7 +2974,7 @@
if ((minimized_width + boxes_width + controlbox_width) > this.$el.outerWidth(true)) { if ((minimized_width + boxes_width + controlbox_width) > this.$el.outerWidth(true)) {
oldest_chat = this.getOldestMaximizedChat(); oldest_chat = this.getOldestMaximizedChat();
if (oldest_chat) { if (oldest_chat && oldest_chat.get('id') !== new_id) {
oldest_chat.minimize(); oldest_chat.minimize();
} }
} }
@ -3221,6 +3220,8 @@
'user_id': Strophe.getNodeFromJid(jid), 'user_id': Strophe.getNodeFromJid(jid),
'resources': [], 'resources': [],
'groups': [], 'groups': [],
'image_type': 'image/png',
'image': "iVBORw0KGgoAAAANSUhEUgAAAGAAAABgCAIAAABt+uBvAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH3gwHCy455JBsggAABkJJREFUeNrtnM1PE1sUwHvvTD8otWLHST/Gimi1CEgr6M6FEWuIBo2pujDVsNDEP8GN/4MbN7oxrlipG2OCgZgYlxAbkRYw1KqkIDRCSkM7nXvvW8x7vjyNeQ9m7p1p3z1LQk/v/Dhz7vkEXL161cHl9wI5Ag6IA+KAOCAOiAPigDggLhwQB2S+iNZ+PcYY/SWEEP2HAAAIoSAIoihCCP+ngDDGtVotGAz29/cfOXJEUZSOjg6n06lp2sbGRqlUWlhYyGazS0tLbrdbEASrzgksyeYJId3d3el0uqenRxRFAAAA4KdfIIRgjD9+/Pj8+fOpqSndslofEIQwHA6Pjo4mEon//qmFhYXHjx8vLi4ihBgDEnp7e9l8E0Jo165dQ0NDd+/eDYVC2/qsJElDQ0OEkKWlpa2tLZamxAhQo9EIBoOjo6MXL17csZLe3l5FUT59+lQul5l5JRaAVFWNRqN37tw5ceKEQVWRSOTw4cOFQuHbt2+iKLYCIISQLMu3b99OJpOmKAwEAgcPHszn8+vr6wzsiG6UQQhxuVyXLl0aGBgwUW0sFstkMl6v90fo1KyAMMYDAwPnzp0zXfPg4GAqlWo0Gk0MiBAiy/L58+edTqf5Aa4onj59OhaLYYybFRCEMBaL0fNxBw4cSCQStN0QRUBut3t4eJjq6U+dOiVJElVPRBFQIBDo6+ujCqirqyscDlONGykC2lYyYSR6pBoQQapHZwAoHo/TuARYAOrs7GQASFEUqn6aIiBJkhgA6ujooFpUo6iaTa7koFwnaoWadLNe81tbWwzoaJrWrICWl5cZAFpbW6OabVAEtLi4yABQsVjUNK0pAWWzWQaAcrlcswKanZ1VVZUqHYRQEwOq1Wpv3ryhCmh6erpcLjdrNl+v1ycnJ+l5UELI27dvv3//3qxxEADgy5cvExMT9Mznw4cPtFtAdAPFarU6Pj5eKpVM17yxsfHy5cvV1VXazXu62gVBKBQKT58+rdVqJqrFGL948eLdu3dU8/g/H4FBUaJYLAqC0NPTY9brMD4+PjY25mDSracOCABACJmZmXE6nUePHjWu8NWrV48ePSKEsGlAs7Agfd5nenq6Wq0mk0kjDzY2NvbkyRMIIbP2PLvhBUEQ8vl8NpuNx+M+n29bzhVjvLKycv/+/YmJCcazQuwA6YzW1tYmJyf1SY+2trZ/rRk1Go1SqfT69esHDx4UCgVmNaa/zZ/9ABUhRFXVYDB48uTJeDweiUQkSfL7/T9MA2NcqVTK5fLy8vL8/PzU1FSxWHS5XJaM4wGr9sUwxqqqer3eUCgkSZJuUBBCfTRvc3OzXC6vrKxUKhWn02nhCJ5lM4oQQo/HgxD6+vXr58+fHf8sDOp+HQDg8XgclorFU676dKLlo6yWRdItIBwQB8QBcUCtfosRQjRNQwhhjPUC4w46WXryBSHU1zgEQWBz99EFhDGu1+t+v//48ePxeFxRlD179ng8nh0Efgiher2+vr6ur3HMzMysrq7uTJVdACGEurq6Ll++nEgkPB7Pj9jPoDHqOxyqqubz+WfPnuVyuV9XPeyeagAAAoHArVu3BgcHab8CuVzu4cOHpVKJUnfA5GweY+xyuc6cOXPv3r1IJMLAR8iyPDw8XK/Xi8Wiqqqmm5KZgBBC7e3tN27cuHbtGuPVpf7+/lAoNDs7W61WzfVKpgHSSzw3b95MpVKW3MfRaDQSiczNzVUqFRMZmQOIEOL1eq9fv3727FlL1t50URRFluX5+flqtWpWEGAOIFEUU6nUlStXLKSjy759+xwOx9zcnKZpphzGHMzhcDiTydgk9r1w4YIp7RPTAAmCkMlk2FeLf/tIEKbTab/fbwtAhJBoNGrutpNx6e7uPnTokC1eMU3T0um0DZPMkZER6wERQnw+n/FFSxpy7Nix3bt3WwwIIcRgIWnHkkwmjecfRgGx7DtuV/r6+iwGhDHev3+/bQF1dnYaH6E2CkiWZdsC2rt3r8WAHA5HW1ubbQGZcjajgOwTH/4qNko1Wlg4IA6IA+KAOKBWBUQIsfNojyliKIoRRfH9+/dut9umf3wzpoUNNQ4BAJubmwz+ic+OxefzWWlBhJD29nbug7iT5sIBcUAcEAfEAXFAHBAHxOVn+QMrmWpuPZx12gAAAABJRU5ErkJggg==",
'status': '' 'status': ''
}, attributes); }, attributes);
this.set(attrs); this.set(attrs);
@ -3228,12 +3229,9 @@
showInRoster: function () { showInRoster: function () {
var chatStatus = this.get('chat_status'); var chatStatus = this.get('chat_status');
if ((converse.show_only_online_users && chatStatus !== 'online') if ((converse.show_only_online_users && chatStatus !== 'online') || (converse.hide_offline_users && chatStatus === 'offline')) {
|| (converse.hide_offline_users && chatStatus === 'offline')) {
// If pending or requesting, show // If pending or requesting, show
if ((this.get('ask') === 'subscribe') if ((this.get('ask') === 'subscribe') || (this.get('subscription') === 'from') || (this.get('requesting') === true)) {
|| (this.get('subscription') === 'from')
|| (this.get('requesting') === true)) {
return true; return true;
} }
return false; return false;

File diff suppressed because it is too large Load Diff

7
css/converse.css.map Normal file

File diff suppressed because one or more lines are too long

BIN
css/images/user.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

View File

@ -3,7 +3,7 @@ body {
height: 100%; height: 100%;
font-family: "Lora", "Helvetica Neue", Helvetica, Arial, sans-serif; font-family: "Lora", "Helvetica Neue", Helvetica, Arial, sans-serif;
color: #ffffff; color: #ffffff;
background-color: #000000; background-color: #211018;
} }
html { html {
width: 100%; width: 100%;
@ -34,7 +34,7 @@ p {
} }
} }
a { a {
color: #66ccff; color: #82B397;
-webkit-transition: all 0.2s ease-in-out; -webkit-transition: all 0.2s ease-in-out;
-moz-transition: all 0.2s ease-in-out; -moz-transition: all 0.2s ease-in-out;
transition: all 0.2s ease-in-out; transition: all 0.2s ease-in-out;
@ -52,7 +52,7 @@ a:focus {
border-bottom: 1px solid rgba(255, 255, 255, 0.3); border-bottom: 1px solid rgba(255, 255, 255, 0.3);
text-transform: uppercase; text-transform: uppercase;
font-family: "Montserrat", "Helvetica Neue", Helvetica, Arial, sans-serif; font-family: "Montserrat", "Helvetica Neue", Helvetica, Arial, sans-serif;
background-color: #000000; background-color: #211018;
} }
.navbar-brand { .navbar-brand {
font-weight: 700; font-weight: 700;
@ -95,7 +95,7 @@ a:focus {
} }
.top-nav-collapse { .top-nav-collapse {
padding: 0; padding: 0;
background-color: #000000; background-color: #211018;
} }
.navbar-custom.top-nav-collapse { .navbar-custom.top-nav-collapse {
border-bottom: 1px solid rgba(255, 255, 255, 0.3); border-bottom: 1px solid rgba(255, 255, 255, 0.3);
@ -113,17 +113,17 @@ a:focus {
} }
.intro { .intro {
background: url(images/header.jpg) no-repeat bottom center scroll; background: url(images/header.jpg) no-repeat bottom center scroll;
background-color: #000; background-color: #211018;
-webkit-background-size: cover; -webkit-background-size: cover;
-moz-background-size: cover; -moz-background-size: cover;
background-size: cover; background-size: cover;
-o-background-size: cover; -o-background-size: cover;
} }
.features-section { .features-section {
background: url('images/bgtr.svg') top right no-repeat, url('images/bgbl.svg') bottom left no-repeat, url('images/bgbl.svg') bottom left no-repeat, url('images/overlay.png'), linear-gradient(45deg, #b39c68, #a56365, #412e4c); background: url('images/bgtr.svg') top right no-repeat, url('images/bgbl.svg') bottom left no-repeat, url('images/bgbl.svg') bottom left no-repeat, url('images/overlay.png'), linear-gradient(45deg, #85505f, #384955, #655361);
} }
.features-section a { .features-section a {
color: #66ccff; color: #82B397;
} }
.outro { .outro {
background: url('images/bgtr.svg') top right no-repeat, url('images/bgbl.svg') bottom left no-repeat, url('images/overlay.png'), linear-gradient(45deg, #384955, #655361, #85505f); background: url('images/bgtr.svg') top right no-repeat, url('images/bgbl.svg') bottom left no-repeat, url('images/overlay.png'), linear-gradient(45deg, #384955, #655361, #85505f);
@ -170,9 +170,6 @@ a:focus {
color: #ffffff; color: #ffffff;
background: rgba(255, 255, 255, 0.1); background: rgba(255, 255, 255, 0.1);
} }
.btn-text {
font-family: "Lora", "Helvetica Neue", Helvetica, Arial, sans-serif;
}
.page-scroll .btn-circle i.animated { .page-scroll .btn-circle i.animated {
-webkit-transition-property: -webkit-transform; -webkit-transition-property: -webkit-transform;
-webkit-transition-duration: 1s; -webkit-transition-duration: 1s;
@ -189,6 +186,7 @@ a:focus {
-webkit-animation-timing-function: linear; -webkit-animation-timing-function: linear;
-moz-animation-timing-function: linear; -moz-animation-timing-function: linear;
} }
/*
@-webkit-keyframes pulse { @-webkit-keyframes pulse {
0 { 0 {
-webkit-transform: scale(1); -webkit-transform: scale(1);
@ -217,6 +215,7 @@ a:focus {
transform: scale(1); transform: scale(1);
} }
} }
*/
.content-section { .content-section {
padding-top: 100px; padding-top: 100px;
} }
@ -224,7 +223,7 @@ a:focus {
width: 100%; width: 100%;
padding: 50px 0; padding: 50px 0;
color: #ffffff; color: #ffffff;
background-color: #000000; background-color: #211018;
} }
.donate-section p.bitcoin-header { .donate-section p.bitcoin-header {
margin: 0 0 5px; margin: 0 0 5px;
@ -247,16 +246,16 @@ a:focus {
transition: all 0.3s ease-in-out; transition: all 0.3s ease-in-out;
} }
.btn-default { .btn-default {
border: 1px solid #66ccff; border: 1px solid #82B397;
color: #66ccff; color: #82B397;
background-color: transparent; background-color: transparent;
} }
.btn-default:hover, .btn-default:hover,
.btn-default:focus { .btn-default:focus {
border: 1px solid #66ccff; border: 1px solid #82B397;
outline: none; outline: none;
color: #000000; color: #211018;
background-color: #66ccff; background-color: #82B397;
} }
.btn-huge { .btn-huge {
padding: 25px; padding: 25px;

257
dev.html Normal file
View File

@ -0,0 +1,257 @@
<!DOCTYPE html>
<html lang="en">
<head>
<title>Converse.js</title>
<meta charset="utf-8">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="description" content="Converse.js: A free chat client for your website" />
<meta name="author" content="JC Brand" />
<meta name="keywords" content="xmpp chat webchat converse.js" />
<link rel="shortcut icon" type="image/ico" href="css/images/favicon.ico"/>
<link type="text/css" rel="stylesheet" media="screen" href="components/bootstrap/dist/css/bootstrap.min.css" />
<link type="text/css" rel="stylesheet" media="screen" href="components/fontawesome/css/font-awesome.min.css" />
<link type="text/css" rel="stylesheet" media="screen" href="css/theme.css" />
<link type="text/css" rel="stylesheet" media="screen" href="css/converse.css" />
<script type="text/javascript" src="analytics.js"></script>
<script data-main="main" src="components/requirejs/require.js"></script>
</head>
<body id="page-top" data-spy="scroll" data-target=".navbar-custom">
<nav class="navbar navbar-custom navbar-fixed-top" role="navigation">
<div class="container">
<div class="navbar-header page-scroll">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-main-collapse">
<i class="fa fa-bars"></i>
</button>
<a class="navbar-brand" href="#page-top">
<i class="fa fa-play-circle"></i> <span class="light">Home</span>
</a>
</div>
<!-- Collect the nav links, forms, and other content for toggling -->
<div class="collapse navbar-collapse navbar-right navbar-main-collapse">
<ul class="nav navbar-nav">
<!-- Hidden li included to remove active class from about link when scrolled up past about section -->
<li class="hidden">
<a href="#page-top"></a>
</li>
<li class="page-scroll">
<a href="#about">About</a>
</li>
<li class="page-scroll">
<a href="#features">Features</a>
</li>
<!--
<li class="page-scroll">
<a href="#donate">Donate</a>
</li>
-->
<li class="page-scroll">
<a href="#contact">Contact</a>
</li>
<li>
<a href="/docs/html/index.html">Documentation</a>
</li>
<li>
<a href="https://github.com/jcbrand/converse.js/releases" class="button" target="_blank">Download</a>
</li>
</ul>
</div>
<!-- /.navbar-collapse -->
</div>
<!-- /.container -->
</nav>
<section class="intro">
<div class="intro-body">
<div class="container">
<div class="row">
<div class="col-md-8 col-md-offset-2">
<h1 class="brand-heading"><i class="icon-conversejs"></i>Converse.js</h1>
<p class="intro-text">A free and open-source XMPP chat client for your website</p>
<div class="page-scroll">
<a href="#about" class="btn btn-default btn-lg"><span class="btn-text">Learn More</span></a>
</div>
</div>
</div>
<div class="row">
<div class="col-md-8 col-md-offset-2 banner-social-buttons">
<ul class="list-inline">
<li><a href="https://twitter.com/jcopkode" class="btn btn-circle btn-lg" title="Twitter" target="_blank"><i class="fa fa-twitter"></i></a>
</li>
<li><a href="https://github.com/jcbrand/converse.js" class="btn btn-circle btn-lg" title="GitHub" target="_blank"><i class="fa fa-github"></i></a>
</li>
</ul>
</div>
</div>
</div>
</div>
</section>
<section id="about" class="container content-section text-center">
<div class="row">
<div class="col-lg-8 col-lg-offset-2">
<h2><strong>Converse.js</strong> is a free and open source chat client that runs in your browser. It can be integrated into any website.</h3>
<p>Similar to <a href="https://www.facebook.com/sitetour/chat.php" target="_blank">Facebook chat</a> but it also supports multi-user chatrooms.</p>
<p>
<strong>Converse.js</strong> can connect to any accessible <a href="http://xmpp.org" target="_blank">XMPP/Jabber</a> server,
either from a public provider such as <a href="http://jabber.org">jabber.org</a>, or one you have set up yourself.
</p>
<p>
It's possible to enable single-site-login, whereby users already authenticated in your website will also automatically be logged in on the chat server.
Please refer to the <strong><a href="/docs/html/index.html">documentation</a></strong> for more info.
</p>
</div>
</div>
</section>
<section class="features-section content-section" id="features">
<div class="container">
<div class="row">
<div class="col-lg-4">
<section>
<span class="feature-icon page-scroll"><a class="fa fa-globe" href="#features" title="Integration"></a></span>
<header>
<h2>Integration</h2>
</header>
<ul class="integration">
<li><a href="http://github.com/collective/collective.xmpp.chat" target="_blank">Plone</a></li>
<li><a href="https://pypi.python.org/pypi/django-conversejs" target="_blank">Django</a></li>
<li><a href="https://github.com/priyadi/roundcube-converse.js-xmpp-plugin" target="_blank">Roundcube</a></li>
<li><a href="http://wordpress.org/plugins/conversejs" target="_blank">Wordpress</a></li>
<li><a href="https://github.com/jcbrand/patterns.converse" target="_blank">Patternslib</a></li>
<li><a href="https://github.com/keensoft/alfresco-js-chat-share" target="_blank">Alfresco</a></li>
</ul>
</section>
</div>
<div class="col-lg-4">
<section>
<span class="feature-icon page-scroll"><a class="fa fa-check-square-o" href="#features" title="Features"></a></span>
</section>
<header>
<h2>Features</h2>
</header>
<ul class="features">
<li>Single-user chat</li>
<li>Multi-user chatrooms (<a href="http://xmpp.org/extensions/xep-0045.html" target="_blank">XEP 45</a>)</li>
<li>vCard support (<a href="http://xmpp.org/extensions/xep-0054.html" target="_blank">XEP 54</a>)</li>
<li>Service discovery (<a href="http://xmpp.org/extensions/xep-0030.html" target="_blank">XEP 30</a>)</li>
<li>Contact rosters and groups</li>
<li>Contact subscriptions</li>
<li>Accept or decline contact requests</li>
<li>Roster item exchange (<a href="http://xmpp.org/extensions/tmp/xep-0144-1.1.html" target="_blank">XEP 144</a>)</li>
<li>Chat statuses (online, busy, away, offline)</li>
<li>Custom status messages</li>
<li>Typing notifications</li>
<li>Third person messages (/me )</li>
<li>Translated into 15 languages</li>
<li>Off-the-record encryption
</ul>
</div>
<div class="col-lg-4">
<section>
<span class="feature-icon page-scroll"><a class="fa fa-video-camera" href="#features" title="Screencasts"></a></span>
<header>
<h2>Screencasts</h2>
</header>
<ul class="screencasts">
<li>
<a href="http://opkode.com/media/blog/instant-messaging-for-plone-with-javascript-and-xmpp" target="_blank">
In a Plone site
</a>
</li>
<li>
<a href="http://opkode.com/media/blog/2013/04/02/converse.js-xmpp-instant-messaging-with-javascript" target="_blank">
Chatting with buddies from Jabber.org and Gmail
</a>
</li>
<li>
<a href="https://opkode.com/media/blog/2013/11/11/conversejs-otr-support" target="_blank">
Off-the-record encryption
</a>
</li>
</ul>
</section>
</div>
</div>
</div>
</section>
<!--
<section id="donate" class="donate-section content-section text-center">
<div class="container">
<div class="row">
<div class="col-lg-8 col-lg-offset-2">
<h3>Donate</h3>
<p class="bitcoin-header">Most of the work done on <strong>converse.js</strong> is unpaid and a labor of love.</p>
<p>Thanks to those have donated already.</p>
<p class="bitcoin-header"><strong>Bitcoin</strong></p>
<img src="css/images/bitcoin_qr_code.png"/>
<p>16FsPqE9DhFTryxrUenpsGX4LJ1TPu8GqS</p>
</div>
</div>
</div>
</section>
-->
<section class="outro content-section" id="contact">
<div class="intro-body">
<div class="container">
<div class="row">
<div class="col-lg-8 col-lg-offset-2">
<h2>Contact</h2>
<ul class="contact">
<li>Follow me on <a href="http://twitter.com/jcopkode" target="_blank">Twitter</a>.</li>
<li>Chat with me via XMPP: <a href="xmpp:jc@opkode.com" class="xmpp JSnocheck" title="XMPP/Jabber">jc@opkode.com</a>.</li>
<li>For technical support, please write to the mailing list: <a href="mailto:conversejs@librelist.com">conversejs@librelist.com</a>.</li>
<li>Or ask in the Converse.js chat room: <a href="xmpp:discuss@conference.conversejs.org" class="xmpp JSnocheck" title="Converse.js chat room">discuss@conference.conversejs.org</a>.</li>
<li>Also check out the <a href="http://librelist.com/browser/conversejs" target="_blank">mailing list archives</a>.</li>
<li>Please file <a target="_blank" href="https://github.com/jcbrand/converse.js/issues">bugs on Github</a>.</li>
<li>I'm available for features and <a href="http://opkode.com/contact" target="_blank">consulting</a>.</li>
</ul>
</div>
</div>
</div>
</div>
</section>
</body>
<script>
require(['converse'], function (converse) {
(function () {
/* XXX: This function initializes jquery.easing for the https://conversejs.org
* website. This code is only useful in the context of the converse.js
* website and converse.js itself is NOT dependent on it.
*/
var $ = converse.env.jQuery;
$(window).scroll(function() {
if ($(".navbar").offset().top > 50) {
$(".navbar-fixed-top").addClass("top-nav-collapse");
} else {
$(".navbar-fixed-top").removeClass("top-nav-collapse");
}
});
//jQuery for page scrolling feature - requires jQuery Easing plugin
$('.page-scroll a').bind('click', function(event) {
var $anchor = $(this);
$('html, body').stop().animate({
scrollTop: $($anchor.attr('href')).offset().top
}, 700, 'easeInOutExpo');
event.preventDefault();
});
})();
converse.initialize({
bosh_service_url: 'https://conversejs.org/http-bind/', // Please use this connection manager only for testing purposes
i18n: locales['en'], // Refer to ./locale/locales.js to see which locales are supported
keepalive: true,
message_carbons: true,
play_sounds: true,
roster_groups: true,
show_controlbox_by_default: true,
xhr_user_search: false
});
});
</script>
</html>

View File

@ -1,6 +1,13 @@
Changelog Changelog
========= =========
0.8.8 (Unreleased)
------------------
* Norwegian Bokmål translations. [Andreas Lorentsen]
* Updated Afrikaans translations. [jcbrand]
* Add responsiveness to CSS. We now use Sass preprocessor for generating CSS. [jcbrand]
0.8.6 (2014-12-07) 0.8.6 (2014-12-07)
------------------ ------------------

View File

@ -14,26 +14,36 @@ Translations
./locale/locales.js those which you don't need. Remember to rebuild the ./locale/locales.js those which you don't need. Remember to rebuild the
minified file afterwards. minified file afterwards.
The gettext POT file located in ./locale/converse.pot is the template ----------------------------------------------
containing all translations and from which for each language an individual PO Updating the translations template (.pot file)
----------------------------------------------
The gettext `.pot` file located in
`./locale/converse.pot <https://github.com/jcbrand/converse.js/blob/master/locale/converse.pot>`_
is the template containing all translations and from which for each language an individual PO
file is generated. file is generated.
The POT file contains all translateable strings extracted from converse.js. The `.pot` file contains all translateable strings extracted from converse.js.
To make a user facing string translateable, wrap it in the double underscore helper To make a user-facing string translateable, wrap it in the double underscore helper
function like so: function like so:
.. code-block:: javascript .. code-block:: javascript
__('This string will be translated at runtime'); __('This string will be translated at runtime');
After adding the string, you'll need to regenerate the POT file, like so: After adding the string, you'll need to regenerate the POT file:
:: ::
make pot make pot
To create a new PO file for a language in which converse.js is not yet
-------------------------------------------
Making translations file for a new language
-------------------------------------------
To create a new translations file for a language in which converse.js is not yet
translated into, do the following translated into, do the following
.. note:: In this example we use Polish (pl), you need to substitute 'pl' to your own language's code. .. note:: In this example we use Polish (pl), you need to substitute 'pl' to your own language's code.
@ -43,7 +53,22 @@ translated into, do the following
mkdir -p ./locale/pl/LC_MESSAGES mkdir -p ./locale/pl/LC_MESSAGES
msginit -i ./locale/converse.pot -o ./locale/pl/LC_MESSAGES/converse.po -l pl msginit -i ./locale/converse.pot -o ./locale/pl/LC_MESSAGES/converse.po -l pl
You can then create or update the PO file for a specific language by doing the following: Please make sure to add the following attributes at the top of the file (under
*Content-Transfer-Encoding*). They are required as configuration settings for Jed,
the Javascript translations library that we're using.
.. code-block:: po
"domain: converse\n"
"lang: pl\n"
"plural_forms: nplurals=2; plural=(n != 1);\n"
--------------------------------------
Updating an existing translations file
--------------------------------------
You can update the `.po` file for a specific language by doing the following:
.. note:: In this example we use German (de), you need to substitute 'de' to your own language's code. .. note:: In this example we use German (de), you need to substitute 'de' to your own language's code.
@ -57,23 +82,17 @@ To do this for ALL languages, run:
make po make po
The resulting PO file is then what gets translated. The resulting `.po` file is then what gets translated.
If you've created a new PO file, please make sure to add the following
attributes at the top of the file (under *Content-Transfer-Encoding*). They are
required as configuration settings for Jed, the Javascript translations library
that we're using.
.. code-block:: po
"domain: converse\n"
"lang: de\n"
"plural_forms: nplurals=2; plural=(n != 1);\n"
Unfortunately `Jed <http://slexaxton.github.io/Jed>`_ cannot use the PO files directly. We have to generate from it -----------------------------------------------------
a file in JSON format and then put that in a .js file for the specific Generating a Javascript file from a translations file
language. -----------------------------------------------------
Unfortunately `Jed <http://slexaxton.github.io/Jed>`_, which we use for
translations in converse.js cannot use the `.po` files directly. We have
to generate from it a file in JSON format and then put that in a `.js` file
for the specific language.
To generate JSON from a PO file, you'll need po2json for node.js. Run the To generate JSON from a PO file, you'll need po2json for node.js. Run the
following command to install it (npm being the node.js package manager): following command to install it (npm being the node.js package manager):
@ -86,7 +105,7 @@ You can then convert the translations into JSON format:
:: ::
po2json locale/de/LC_MESSAGES/converse.po locale/de/LC_MESSAGES/converse.json po2json -p -f jed -d converse locale/de/LC_MESSAGES/converse.po locale/de/LC_MESSAGES/converse.json
Now from converse.json paste the data as a value for the "locale_data" key in the Now from converse.json paste the data as a value for the "locale_data" key in the
object in the language's .js file. object in the language's .js file.

View File

@ -6,8 +6,9 @@
<meta name="description" content="An Icon Font Generated By IcoMoon.io"> <meta name="description" content="An Icon Font Generated By IcoMoon.io">
<meta name="viewport" content="width=device-width"> <meta name="viewport" content="width=device-width">
<link rel="stylesheet" href="demo-files/demo.css"> <link rel="stylesheet" href="demo-files/demo.css">
<link rel="stylesheet" href="style.css"></head> <link rel="stylesheet" href="style.css">
<body> </head>
<body id="conversejs">
<div class="bgc1 clearfix"> <div class="bgc1 clearfix">
<h1 class="mhmm mvm"><span class="fgc1">Font Name:</span> icomoon <small class="fgc1">(Glyphs:&nbsp;91)</small></h1> <h1 class="mhmm mvm"><span class="fgc1">Font Name:</span> icomoon <small class="fgc1">(Glyphs:&nbsp;91)</small></h1>
</div> </div>

View File

@ -104,7 +104,7 @@
<p>Similar to <a href="https://www.facebook.com/sitetour/chat.php" target="_blank">Facebook chat</a> but it also supports multi-user chatrooms.</p> <p>Similar to <a href="https://www.facebook.com/sitetour/chat.php" target="_blank">Facebook chat</a> but it also supports multi-user chatrooms.</p>
<p> <p>
<strong>Converse.js</strong> can connect to any accessible <a href="http://xmpp.org" target="_blank">XMPP/Jabber</a> server, <strong>Converse.js</strong> can connect to any accessible <a href="http://xmpp.org" target="_blank">XMPP/Jabber</a> server,
either from a public provider such as <a href="http://jabber.org">jabber.org</a>, or one you have set up yourself. either from a <a href="https://xmpp.net/directory.php">public provider</a>, or one you have set up yourself.
</p> </p>
<p> <p>
It's possible to enable single-site-login, whereby users already authenticated in your website will also automatically be logged in on the chat server. It's possible to enable single-site-login, whereby users already authenticated in your website will also automatically be logged in on the chat server.
@ -153,7 +153,7 @@
<li>Custom status messages</li> <li>Custom status messages</li>
<li>Typing notifications</li> <li>Typing notifications</li>
<li>Third person messages (/me )</li> <li>Third person messages (/me )</li>
<li>Translated into 14 languages</li> <li>Translated into 15 languages</li>
<li>Off-the-record encryption <li>Off-the-record encryption
</ul> </ul>
</div> </div>

File diff suppressed because it is too large Load Diff

View File

@ -1,2 +0,0 @@
@import "variables.less";
@import "theme.less";

View File

@ -1,427 +0,0 @@
// LESS
body {
width: 100%;
height: 100%;
font-family: "Lora","Helvetica Neue",Helvetica,Arial,sans-serif;
color: @light;
background-color: @dark;
}
html {
width: 100%;
height: 100%;
}
// Typhography
h1,
h2,
h3,
h4,
h5,
h6 {
margin: 0 0 35px;
text-transform: uppercase;
font-family: "Montserrat","Helvetica Neue",Helvetica,Arial,sans-serif;
font-weight: 700;
letter-spacing: 1px;
}
p {
margin: 0 0 25px;
font-size: 18px;
line-height: 1.5;
}
@media(min-width:767px) {
p {
margin: 0 0 35px;
font-size: 20px;
line-height: 1.6;
}
}
a {
color: @primary;
-webkit-transition: all .2s ease-in-out;
-moz-transition: all .2s ease-in-out;
transition: all .2s ease-in-out;
}
a:hover,
a:focus {
text-decoration: none;
color: darken(@primary, 20%);
}
.light {
font-weight: 400;
}
// Navigation
.navbar {
margin-bottom: 0;
border-bottom: 1px solid rgba(255,255,255,0.3);
text-transform: uppercase;
font-family: "Montserrat","Helvetica Neue",Helvetica,Arial,sans-serif;
background-color: @dark;
}
.navbar-brand {
font-weight: 700;
}
.navbar-brand:focus {
outline: none;
}
.navbar-custom a {
color: @light;
}
.navbar-custom .nav li a {
-webkit-transition: background .3s ease-in-out;
-moz-transition: background .3s ease-in-out;
transition: background .3s ease-in-out;
}
.navbar-custom .nav li a:hover,
.navbar-custom .nav li a:focus,
.navbar-custom .nav li.active {
outline: none;
background-color: rgba(255,255,255,0.2);
}
.navbar-toggle {
padding: 4px 6px;
font-size: 16px;
color: @light;
}
.navbar-toggle:focus,
.navbar-toggle:active {
outline: none;
}
@media(min-width:767px) {
.navbar {
padding: 20px 0;
border-bottom: none;
letter-spacing: 1px;
background: transparent;
-webkit-transition: background .5s ease-in-out,padding .5s ease-in-out;
-moz-transition: background .5s ease-in-out,padding .5s ease-in-out;
transition: background .5s ease-in-out,padding .5s ease-in-out;
}
.top-nav-collapse {
padding: 0;
background-color: @dark;
}
.navbar-custom.top-nav-collapse {
border-bottom: 1px solid rgba(255,255,255,0.3);
}
}
// Full Page Image Intro Section
.features-section, .outro, .intro {
display: table;
width: 100%;
height: 100%;
padding: 100px 0;
text-align: center;
color: #fff;
}
.intro {
background: url(images/header.jpg) no-repeat bottom center scroll;
background-color: #000;
-webkit-background-size: cover;
-moz-background-size: cover;
background-size: cover;
-o-background-size: cover;
}
.features-section {
background: url('images/bgtr.svg') top right no-repeat,
url('images/bgbl.svg') bottom left no-repeat,
url('images/bgbl.svg') bottom left no-repeat,
url('images/overlay.png'),
linear-gradient(45deg, #b39c68, #a56365, #412e4c);
}
.features-section a{
color: @primaryLight;
}
.outro {
background: url('images/bgtr.svg') top right no-repeat,
url('images/bgbl.svg') bottom left no-repeat,
url('images/overlay.png'),
linear-gradient(45deg, #384955, #655361, #85505f);
}
.intro-body {
display: table-cell;
vertical-align: middle;
}
.brand-heading {
font-size: 40px;
}
.intro-text {
font-size: 18px;
}
@media(min-width:767px) {
.intro {
height: 100%;
padding: 0;
}
.brand-heading {
font-size: 100px;
}
.intro-text {
font-size: 25px;
}
}
.btn-circle {
width: 70px;
height: 70px;
margin-top: 15px;
padding: 7px 16px;
border: 2px solid @light;
border-radius: 35px;
font-size: 40px;
color: @light;
background: transparent;
-webkit-transition: background .3s ease-in-out;
-moz-transition: background .3s ease-in-out;
transition: background .3s ease-in-out;
}
.btn-circle:hover,
.btn-circle:focus {
outline: none;
color: @light;
background: rgba(255,255,255,0.1);
}
.page-scroll .btn-circle i.animated {
-webkit-transition-property: -webkit-transform;
-webkit-transition-duration: 1s;
-moz-transition-property: -moz-transform;
-moz-transition-duration: 1s;
}
.page-scroll .btn-circle:hover i.animated {
-webkit-animation-name: pulse;
-moz-animation-name: pulse;
-webkit-animation-duration: 1.5s;
-moz-animation-duration: 1.5s;
-webkit-animation-iteration-count: infinite;
-moz-animation-iteration-count: infinite;
-webkit-animation-timing-function: linear;
-moz-animation-timing-function: linear;
}
@-webkit-keyframes pulse {
0 {
-webkit-transform: scale(1);
transform: scale(1);
}
50% {
-webkit-transform: scale(1.2);
transform: scale(1.2);
}
100% {
-webkit-transform: scale(1);
transform: scale(1);
}
}
@-moz-keyframes pulse {
0 {
-moz-transform: scale(1);
transform: scale(1);
}
50% {
-moz-transform: scale(1.2);
transform: scale(1.2);
}
100% {
-moz-transform: scale(1);
transform: scale(1);
}
}
// Content Sections
.content-section {
padding-top: 100px;
}
.donate-section {
width: 100%;
padding: 50px 0;
color: @light;
background-color: @dark;
}
.donate-section p.bitcoin-header {
margin: 0 0 5px;
}
@media(min-width:767px) {
.content-section {
padding-top: 150px;
padding-bottom: 50px;
}
.donate-section {
padding: 100px 0;
}
}
// Buttons
.btn {
text-transform: uppercase;
font-family: FontAwesome;
font-weight: 400;
-webkit-transition: all .3s ease-in-out;
-moz-transition: all .3s ease-in-out;
transition: all .3s ease-in-out;
}
.btn-default {
border: 1px solid @primary;
color: @primary;
background-color: transparent;
}
.btn-default:hover,
.btn-default:focus {
border: 1px solid @primary;
outline: none;
color: @dark;
background-color: @primary;
}
.btn-huge {
padding: 25px;
font-size: 26px;
}
.banner-social-buttons {
position: absolute;
bottom: 4em;
left: 0;
}
@media(max-width:1199px) {
ul.banner-social-buttons {
margin-top: 15px;
}
}
@media(max-width:767px) {
ul.banner-social-buttons > li {
display: block;
margin-bottom: 20px;
padding: 0;
}
ul.banner-social-buttons > li:last-child {
margin-bottom: 0;
}
}
// Highlight Color Customization
::-moz-selection {
text-shadow: none;
background: #fcfcfc;
background: rgba(255,255,255,0.2);
}
::selection {
text-shadow: none;
background: #fcfcfc;
background: rgba(255,255,255,0.2);
}
img::selection {
background: transparent;
}
img::-moz-selection {
background: transparent;
}
body {
webkit-tap-highlight-color: rgba(255,255,255,0.2);
}
ul.contact,
ul.integration,
ul.screencasts,
ul.features {
text-align: left;
font-size: 19px;
}
.feature-icon {
display: inline-block;
position: relative;
padding-bottom: 5em;
margin-bottom: 2.75em;
cursor: default;
color: #fff;
}
.feature-icon .fa {
display: inline-block;
width: 2em;
height: 2em;
font-size: 4em;
border-radius: 100%;
box-shadow: inset 0 0 0 1px white;
color: white;
line-height: 2.1em;
}
.feature-icon:before {
content: '';
background: white;
position: absolute;
bottom: 0;
left: 50%;
margin-left: -0.325em;
width: 0.65em;
height: 0.65em;
display: block;
border-radius: 100%;
}
.feature-icon:after {
content: '';
position: absolute;
left: 50%;
bottom: 0.65em;
width: 1px;
height: 4.35em;
background: white;
margin-left: -0.5px;
}

View File

@ -1,22 +0,0 @@
// Variables
@primary: #66ccff;
@dark: #000;
@light: #fff;
// Primary Variants -
@primaryLight: hsl(hue(@primary), 100%, 70%);
@primaryDark: hsl(hue(@primary), 60%, 40%);
@primaryFaded: hsl(hue(@primary), 60%, 65%);
// 180degree Variants
@variant: spin((@primary), 180);
@variantLight: hsl(hue(@variant), 100%, 70%);
@variantDark: hsl(hue(@variant), 60%, 40%);
@variantFaded: hsl(hue(@variant), 60%, 65%);
// 90degree Variants
@corner: spin((@primary), 70);
@cornerLight: hsl(hue(@corner), 100%, 70%);
@cornerDark: hsl(hue(@corner), 60%, 40%);
@cornerFaded: hsl(hue(@corner), 60%, 65%);

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -8,7 +8,7 @@ msgstr ""
"Project-Id-Version: Converse.js 0.4\n" "Project-Id-Version: Converse.js 0.4\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2014-12-07 13:45+0100\n" "POT-Creation-Date: 2014-12-07 13:45+0100\n"
"PO-Revision-Date: 2013-09-15 21:56+0200\n" "PO-Revision-Date: 2014-12-20 11:48+0100\n"
"Last-Translator: JC Brand <jc@opkode.com>\n" "Last-Translator: JC Brand <jc@opkode.com>\n"
"Language-Team: Afrikaans\n" "Language-Team: Afrikaans\n"
"Language: af\n" "Language: af\n"
@ -78,7 +78,7 @@ msgstr "Kontak versoeke"
#: converse.js:320 #: converse.js:320
msgid "Ungrouped" msgid "Ungrouped"
msgstr "" msgstr "Ongegroepeer"
#: converse.js:322 #: converse.js:322
msgid "Contacts" msgid "Contacts"
@ -86,12 +86,11 @@ msgstr "Kontakte"
#: converse.js:323 #: converse.js:323
msgid "Groups" msgid "Groups"
msgstr "" msgstr "Groepe"
#: converse.js:410 #: converse.js:410
#, fuzzy
msgid "Reconnecting" msgid "Reconnecting"
msgstr "Verbind tans" msgstr "Herkonnekteer"
#: converse.js:450 #: converse.js:450
msgid "Error" msgid "Error"
@ -119,14 +118,13 @@ msgstr "Herstel versleutelde sessie"
#: converse.js:774 #: converse.js:774
msgid "Generating private key." msgid "Generating private key."
msgstr "" msgstr "Genereer private sleutel."
#: converse.js:775 #: converse.js:775
msgid "Your browser might become unresponsive." msgid "Your browser might become unresponsive."
msgstr "" msgstr "U webblaaier mag tydelik onreageerbaar word."
#: converse.js:810 #: converse.js:810
#, fuzzy
msgid "" msgid ""
"Authentication request from %1$s\n" "Authentication request from %1$s\n"
"\n" "\n"
@ -135,7 +133,7 @@ msgid ""
"\n" "\n"
"%2$s" "%2$s"
msgstr "" msgstr ""
"Verifikasie versoek van %1$s\n" "Verifieeringsversoek van %1$s\n"
"\n" "\n"
"U gespreksmaat probeer om u identiteit te verifieer, deur die volgende vraag " "U gespreksmaat probeer om u identiteit te verifieer, deur die volgende vraag "
"te vra \n" "te vra \n"
@ -148,16 +146,15 @@ msgstr "Kon nie hierdie gebruiker se identitied verifieer nie."
#: converse.js:858 #: converse.js:858
msgid "Exchanging private key with contact." msgid "Exchanging private key with contact."
msgstr "" msgstr "Sleutels word met gespreksmaat uitgeruil."
#: converse.js:1011 #: converse.js:1011
msgid "Personal message" msgid "Personal message"
msgstr "Persoonlike boodskap" msgstr "Persoonlike boodskap"
#: converse.js:1043 #: converse.js:1043
#, fuzzy
msgid "Are you sure you want to clear the messages from this room?" msgid "Are you sure you want to clear the messages from this room?"
msgstr "Jy is nie op die ledelys van hierdie kamer nie" msgstr "Is u seker dat u die boodskappe in hierdie kamer wil verwyder?"
#: converse.js:1065 #: converse.js:1065
msgid "me" msgid "me"
@ -165,11 +162,11 @@ msgstr "ek"
#: converse.js:1119 #: converse.js:1119
msgid "is typing" msgid "is typing"
msgstr "" msgstr "tik tans"
#: converse.js:1122 #: converse.js:1122
msgid "has stopped typing" msgid "has stopped typing"
msgstr "" msgstr "het opgehou tik"
# The last three values are needed by Jed (a Javascript translations library) # The last three values are needed by Jed (a Javascript translations library)
#: converse.js:1164 converse.js:2351 #: converse.js:1164 converse.js:2351
@ -186,7 +183,7 @@ msgstr "Verwyder boodskappe"
#: converse.js:1250 #: converse.js:1250
msgid "Are you sure you want to clear the messages from this chat box?" msgid "Are you sure you want to clear the messages from this chat box?"
msgstr "" msgstr "Is u seker u wil die boodskappe van hierdie klets uitvee?"
#: converse.js:1285 #: converse.js:1285
msgid "Your message could not be sent" msgid "Your message could not be sent"
@ -226,7 +223,6 @@ msgstr ""
"Indien u die vingerafdrukke bevestig het, klik OK, andersinds klik Kanselleer" "Indien u die vingerafdrukke bevestig het, klik OK, andersinds klik Kanselleer"
#: converse.js:1335 #: converse.js:1335
#, fuzzy
msgid "" msgid ""
"You will be prompted to provide a security question and then an answer to " "You will be prompted to provide a security question and then an answer to "
"that question.\n" "that question.\n"
@ -238,7 +234,7 @@ msgstr ""
"antwoord tot daardie vraag te verskaf.\n" "antwoord tot daardie vraag te verskaf.\n"
"\n" "\n"
"U gespreksmaat sal dan daardie vraag gestel word, en indien hulle presies " "U gespreksmaat sal dan daardie vraag gestel word, en indien hulle presies "
"dieselfde antwoord (hoofletters tel) verskaf, sal hul identiteit geverifieer " "dieselfde antwoord (lw. hoofletters tel) verskaf, sal hul identiteit geverifieer "
"wees." "wees."
#: converse.js:1336 #: converse.js:1336
@ -258,7 +254,6 @@ msgid "Your messages are not encrypted anymore"
msgstr "U boodskappe is nie meer versleutel nie" msgstr "U boodskappe is nie meer versleutel nie"
#: converse.js:1459 #: converse.js:1459
#, fuzzy
msgid "" msgid ""
"Your messages are now encrypted but your contact's identity has not been " "Your messages are now encrypted but your contact's identity has not been "
"verified." "verified."
@ -267,15 +262,12 @@ msgstr ""
"onseker." "onseker."
#: converse.js:1461 #: converse.js:1461
#, fuzzy
msgid "Your contact's identify has been verified." msgid "Your contact's identify has been verified."
msgstr "U gespreksmaat se identiteit is geverifieer." msgstr "U gespreksmaat se identiteit is geverifieer."
#: converse.js:1463 #: converse.js:1463
#, fuzzy
msgid "Your contact has ended encryption on their end, you should do the same." msgid "Your contact has ended encryption on their end, you should do the same."
msgstr "" msgstr "U gespreksmaat het versleuteling gestaak, u behoort nou dieselfde te doen."
"U gespreksmaat het versleuteling gestaak, u behoort nou dieselfde te doen."
#: converse.js:1472 #: converse.js:1472
msgid "Your messages are not encrypted. Click here to enable OTR encryption." msgid "Your messages are not encrypted. Click here to enable OTR encryption."
@ -284,29 +276,22 @@ msgstr ""
"aktiveer." "aktiveer."
#: converse.js:1474 #: converse.js:1474
#, fuzzy
msgid "Your messages are encrypted, but your contact has not been verified." msgid "Your messages are encrypted, but your contact has not been verified."
msgstr "" msgstr "U boodskappe is versleutel, maar u gespreksmaat se identiteit is not onseker."
"U boodskappe is versleutel, maar u gespreksmaat se identiteit is not onseker."
#: converse.js:1476 #: converse.js:1476
#, fuzzy
msgid "Your messages are encrypted and your contact verified." msgid "Your messages are encrypted and your contact verified."
msgstr "" msgstr "U boodskappe is versleutel en u gespreksmaat se identiteit geverifieer."
"U boodskappe is versleutel en u gespreksmaat se identiteit geverifieer."
#: converse.js:1478 #: converse.js:1478
#, fuzzy
msgid "" msgid ""
"Your contact has closed their end of the private session, you should do the " "Your contact has closed their end of the private session, you should do the "
"same" "same"
msgstr "" msgstr "U gespreksmaat het die private sessie gestaak. U behoort dieselfde te doen"
"U gespreksmaat het die private sessie gestaak. U behoort dieselfde te doen"
#: converse.js:1488 #: converse.js:1488
#, fuzzy
msgid "Clear all messages" msgid "Clear all messages"
msgstr "Persoonlike boodskap" msgstr "Vee alle boodskappe uit"
#: converse.js:1489 #: converse.js:1489
msgid "End encrypted conversation" msgid "End encrypted conversation"
@ -314,7 +299,7 @@ msgstr "Beëindig versleutelde gesprek"
#: converse.js:1490 #: converse.js:1490
msgid "Hide the list of participants" msgid "Hide the list of participants"
msgstr "" msgstr "Verskuil die lys van deelnemers"
#: converse.js:1491 #: converse.js:1491
msgid "Refresh encrypted conversation" msgid "Refresh encrypted conversation"
@ -322,7 +307,7 @@ msgstr "Verfris versleutelde gesprek"
#: converse.js:1492 #: converse.js:1492
msgid "Start a call" msgid "Start a call"
msgstr "" msgstr "Begin 'n oproep"
#: converse.js:1493 #: converse.js:1493
msgid "Start encrypted conversation" msgid "Start encrypted conversation"
@ -506,22 +491,21 @@ msgstr "Hierdie gebruiker kan NIE boodskappe na die kamer stuur nie"
#: converse.js:2133 #: converse.js:2133
msgid "Invite..." msgid "Invite..."
msgstr "" msgstr "Nooi uit..."
#: converse.js:2134 #: converse.js:2134
#, fuzzy
msgid "Occupants" msgid "Occupants"
msgstr "Deelnemers:" msgstr "Deelnemers"
#: converse.js:2199 #: converse.js:2199
msgid "You are about to invite %1$s to the chat room \"%2$s\". " msgid "You are about to invite %1$s to the chat room \"%2$s\". "
msgstr "" msgstr "U is op die punt om %1$s na die kletskamer \"%2$s\" uit te nooi."
#: converse.js:2200 #: converse.js:2200
msgid "" msgid ""
"You may optionally include a message, explaining the reason for the " "You may optionally include a message, explaining the reason for the "
"invitation." "invitation."
msgstr "" msgstr "U mag na keuse 'n boodskap insluit, om bv. die rede vir die uitnodiging te staaf."
#: converse.js:2283 #: converse.js:2283
msgid "Message" msgid "Message"
@ -529,39 +513,35 @@ msgstr "Boodskap"
#: converse.js:2319 #: converse.js:2319
msgid "Error: could not execute the command" msgid "Error: could not execute the command"
msgstr "" msgstr "Fout: kon nie die opdrag uitvoer nie"
#: converse.js:2349 #: converse.js:2349
#, fuzzy
msgid "Ban user from room" msgid "Ban user from room"
msgstr "Verban gebruiker vanuit die kletskamer" msgstr "Verban gebruiker uit hierdie kletskamer"
#: converse.js:2352 #: converse.js:2352
#, fuzzy
msgid "Kick user from room" msgid "Kick user from room"
msgstr "Skop gebruiker uit die kletskamer" msgstr "Skop gebruiker uit hierdie kletskamer"
#: converse.js:2353 #: converse.js:2353
#, fuzzy
msgid "Write in 3rd person" msgid "Write in 3rd person"
msgstr "Skryf in die derde persoon" msgstr "Skryf in die derde persoon"
#: converse.js:2354 #: converse.js:2354
msgid "Remove user's ability to post messages" msgid "Remove user's ability to post messages"
msgstr "" msgstr "Verwyder gebruiker se vermoë om boodskappe te plaas"
#: converse.js:2355 #: converse.js:2355
msgid "Change your nickname" msgid "Change your nickname"
msgstr "" msgstr "Verander u bynaam"
#: converse.js:2356 #: converse.js:2356
#, fuzzy
msgid "Set room topic" msgid "Set room topic"
msgstr "Stel kletskamer onderwerp" msgstr "Stel onderwerp vir kletskamer"
#: converse.js:2357 #: converse.js:2357
msgid "Allow muted user to post messages" msgid "Allow muted user to post messages"
msgstr "" msgstr "Laat stilgemaakte gebruiker toe om weer boodskappe te plaas"
#: converse.js:2423 converse.js:4334 #: converse.js:2423 converse.js:4334
msgid "Save" msgid "Save"
@ -677,18 +657,16 @@ msgid "<strong>%1$s</strong> has been removed for not being a member"
msgstr "<strong>%1$s</strong> is nie 'n lid nie, en dus verwyder" msgstr "<strong>%1$s</strong> is nie 'n lid nie, en dus verwyder"
#: converse.js:2579 #: converse.js:2579
#, fuzzy
msgid "Your nickname has been automatically changed to: <strong>%1$s</strong>" msgid "Your nickname has been automatically changed to: <strong>%1$s</strong>"
msgstr "Jou bynaam is verander" msgstr "U bynaam is outomaties verander na: <strong>%1$s</strong>"
#: converse.js:2580 #: converse.js:2580
#, fuzzy
msgid "Your nickname has been changed to: <strong>%1$s</strong>" msgid "Your nickname has been changed to: <strong>%1$s</strong>"
msgstr "Jou bynaam is verander" msgstr "U bynaam is verander na: <strong>%1$s</strong>"
#: converse.js:2628 converse.js:2638 #: converse.js:2628 converse.js:2638
msgid "The reason given is: \"" msgid "The reason given is: \""
msgstr "" msgstr "Die gegewe rede is: \""
#: converse.js:2651 #: converse.js:2651
msgid "You are not on the member list of this room" msgid "You are not on the member list of this room"
@ -724,22 +702,22 @@ msgstr "Onderwerp deur %1$s bygewerk na: %2$s"
#: converse.js:2795 #: converse.js:2795
msgid "%1$s has invited you to join a chat room: %2$s" msgid "%1$s has invited you to join a chat room: %2$s"
msgstr "" msgstr "%1$s het u uitgenooi om die kletskamer %2$s te besoek"
#: converse.js:2799 #: converse.js:2799
msgid "" msgid ""
"%1$s has invited you to join a chat room: %2$s, and left the following " "%1$s has invited you to join a chat room: %2$s, and left the following "
"reason: \"%3$s\"" "reason: \"%3$s\""
msgstr "" msgstr "%1$s het u uitgenooi om die kletskamer %2$s te besoek, en het "
"die volgende rede verskaf: \"%3$s\""
#: converse.js:3057 #: converse.js:3057
#, fuzzy
msgid "Click to restore this chat" msgid "Click to restore this chat"
msgstr "Kliek om hierdie kontak te verwyder" msgstr "Kliek om hierdie klets te herstel"
#: converse.js:3202 #: converse.js:3202
msgid "Minimized" msgid "Minimized"
msgstr "" msgstr "Geminimaliseer"
#: converse.js:3298 converse.js:3316 #: converse.js:3298 converse.js:3316
msgid "Click to remove this contact" msgid "Click to remove this contact"
@ -760,18 +738,16 @@ msgid "Click to chat with this contact"
msgstr "Kliek om met hierdie kontak te klets" msgstr "Kliek om met hierdie kontak te klets"
#: converse.js:3340 #: converse.js:3340
#, fuzzy
msgid "Are you sure you want to remove this contact?" msgid "Are you sure you want to remove this contact?"
msgstr "Kliek om hierdie kontak te verwyder" msgstr "Is u seker u wil hierdie gespreksmaat verwyder?"
#: converse.js:3363 #: converse.js:3363
#, fuzzy
msgid "Are you sure you want to decline this contact request?" msgid "Are you sure you want to decline this contact request?"
msgstr "Kliek om hierdie kontak te verwyder" msgstr "Is u seker dat u hierdie persoon se versoek wil afkeur?"
#: converse.js:3889 #: converse.js:3889
msgid "Type to filter" msgid "Type to filter"
msgstr "" msgstr "Tik om te filtreer"
#. For translators: the %1$s part gets replaced with the status #. For translators: the %1$s part gets replaced with the status
#. Example, I am online #. Example, I am online
@ -809,60 +785,61 @@ msgstr "afwesig"
#: converse.js:4488 #: converse.js:4488
msgid "Your XMPP provider's domain name:" msgid "Your XMPP provider's domain name:"
msgstr "" msgstr "U XMPP-verskaffer se domein naam:"
#: converse.js:4489 #: converse.js:4489
msgid "Fetch registration form" msgid "Fetch registration form"
msgstr "" msgstr "Haal die registrasie form"
#: converse.js:4490 #: converse.js:4490
msgid "Tip: A list of public XMPP providers is available" msgid "Tip: A list of public XMPP providers is available"
msgstr "" msgstr "Wenk: A lys van publieke XMPP-verskaffers is beskikbaar"
#: converse.js:4491 #: converse.js:4491
msgid "here" msgid "here"
msgstr "" msgstr "hier"
#: converse.js:4496 converse.js:4705 #: converse.js:4496 converse.js:4705
msgid "Register" msgid "Register"
msgstr "" msgstr "Registreer"
#: converse.js:4543 #: converse.js:4543
msgid "" msgid ""
"Sorry, the given provider does not support in band account registration. " "Sorry, the given provider does not support in band account registration. "
"Please try with a different provider." "Please try with a different provider."
msgstr "" msgstr "Jammer, die gekose verskaffer ondersteun nie in-band registrasie nie."
"Probeer weer met 'n ander verskaffer."
#: converse.js:4604 #: converse.js:4604
msgid "Requesting a registration form from the XMPP server" msgid "Requesting a registration form from the XMPP server"
msgstr "" msgstr "Vra tans die XMPP-bediener vir 'n registrasie vorm"
#: converse.js:4639 #: converse.js:4639
msgid "" msgid ""
"Something went wrong while establishing a connection with \"%1$s\". Are you " "Something went wrong while establishing a connection with \"%1$s\". Are you "
"sure it exists?" "sure it exists?"
msgstr "" msgstr "Iets het fout geloop tydens koppeling met \"%1$s\". Is u seker dat dit "
"bestaan?"
#: converse.js:4658 #: converse.js:4658
msgid "Now logging you in" msgid "Now logging you in"
msgstr "" msgstr "U word nou aangemeld"
#: converse.js:4662 #: converse.js:4662
msgid "Registered successfully" msgid "Registered successfully"
msgstr "" msgstr "Suksesvol geregistreer"
#: converse.js:4710 #: converse.js:4710
msgid "Return" msgid "Return"
msgstr "" msgstr "Terug"
#: converse.js:4742 #: converse.js:4742
msgid "The provider rejected your registration attempt. " msgid "The provider rejected your registration attempt. "
msgstr "" msgstr "Die verskaffer het u registrasieversoek verwerp."
#: converse.js:4887 #: converse.js:4887
#, fuzzy
msgid "XMPP Username:" msgid "XMPP Username:"
msgstr "XMPP/Jabber Gebruikersnaam:" msgstr "XMPP Gebruikersnaam:"
#: converse.js:4888 #: converse.js:4888
msgid "Password:" msgid "Password:"
@ -878,38 +855,4 @@ msgstr "Teken in"
#: converse.js:4970 #: converse.js:4970
msgid "Toggle chat" msgid "Toggle chat"
msgstr "" msgstr "Klets"
#~ msgid "Disconnected"
#~ msgstr "Verbindung onderbreek"
#~ msgid "Connection Failed"
#~ msgstr "Verbinding het gefaal"
#~ msgid "Disconnecting"
#~ msgstr "Onderbreek verbinding"
#, fuzzy
#~ msgid "Decline"
#~ msgstr "Aangemeld"
#~ msgid ""
#~ "Your browser needs to generate a private key, which will be used in your "
#~ "encrypted chat session. This can take up to 30 seconds during which your "
#~ "browser might freeze and become unresponsive."
#~ msgstr ""
#~ "Die webblaaier moet 'n private sleutel vir die versleutelde klets-sessie "
#~ "genereer. Dit kan tot 30 sekondes duur, waartydenѕ die webblaaier mag "
#~ "vries en nie reageer nie."
#~ msgid "Private key generated."
#~ msgstr "Private sleutel"
#~ msgid "BOSH Service URL:"
#~ msgstr "BOSH bediener URL"
#~ msgid "Connected"
#~ msgstr "Verbind"
#~ msgid "Attached"
#~ msgstr "Geheg"

View File

@ -18,11 +18,12 @@
'id', 'id',
'it', 'it',
'ja', 'ja',
'nb',
'nl', 'nl',
'pt_BR', 'pt_BR',
'ru', 'ru',
'zh' 'zh'
], function (jed, af, de, en, es, fr, he, hu, id, it, ja, nl, pt_BR, ru, zh) { ], function (jed, af, de, en, es, fr, he, hu, id, it, ja, nb, nl, pt_BR, ru, zh) {
root.locales = { root.locales = {
'af': af, 'af': af,
'de': de, 'de': de,
@ -34,6 +35,7 @@
'id': id, 'id': id,
'it': it, 'it': it,
'ja': ja, 'ja': ja,
'nb': nb,
'nl': nl, 'nl': nl,
'pt-br': pt_BR, 'pt-br': pt_BR,
'ru': ru, 'ru': ru,

View File

@ -0,0 +1,772 @@
{
"domain": "converse",
"locale_data": {
"converse": {
"": {
"domain": "converse",
"plural_forms": "nplurals=2; plural=(n != 1);",
"lang": "nb"
},
"unencrypted": [
null,
"ukryptertß"
],
"unverified": [
null,
"uverifisert"
],
"verified": [
null,
"verifisert"
],
"finished": [
null,
"ferdig"
],
"This contact is busy": [
null,
"Denne kontakten er opptatt"
],
"This contact is online": [
null,
"Kontakten er pålogget"
],
"This contact is offline": [
null,
"Kontakten er avlogget"
],
"This contact is unavailable": [
null,
"Kontakten er utilgjengelig"
],
"This contact is away for an extended period": [
null,
"Kontakten er borte for en lengre periode"
],
"This contact is away": [
null,
"Kontakten er borte"
],
"Click to hide these contacts": [
null,
"Klikk for å skjule disse kontaktene"
],
"My contacts": [
null,
"Mine Kontakter"
],
"Pending contacts": [
null,
"Kontakter som venter på godkjenning"
],
"Contact requests": [
null,
"Kontaktforespørsler"
],
"Ungrouped": [
null,
"Ugrupperte"
],
"Contacts": [
null,
"Kontakter"
],
"Groups": [
null,
"Grupper"
],
"Reconnecting": [
null,
"Kobler til igjen"
],
"Error": [
null,
"Feil"
],
"Connecting": [
null,
"Kobler til"
],
"Authenticating": [
null,
"Godkjenner"
],
"Authentication Failed": [
null,
"Godkjenning mislyktes"
],
"Online Contacts": [
null,
"Påloggede Kontakter"
],
"Re-establishing encrypted session": [
null,
"Gjenopptar kryptert økt"
],
"Generating private key.": [
null,
"Genererer privat nøkkel"
],
"Your browser might become unresponsive.": [
null,
"Din nettleser kan bli uresponsiv"
],
"Authentication request from %1$s\n\nYour chat contact is attempting to verify your identity, by asking you the question below.\n\n%2$s": [
null,
"Godkjenningsforespørsel fra %1$s\n\nDin nettpratkontakt forsøker å bekrefte din identitet, ved å spørre deg spørsmålet under.\n\n%2$s"
],
"Could not verify this user's identify.": [
null,
"Kunne ikke bekrefte denne brukerens identitet"
],
"Exchanging private key with contact.": [
null,
"Bytter private nøkler med kontakt"
],
"Personal message": [
null,
"Personlig melding"
],
"Are you sure you want to clear the messages from this room?": [
null,
"Er du sikker på at du vil fjerne meldingene fra dette rommet?"
],
"me": [
null,
"meg"
],
"is typing": [
null,
"skriver"
],
"has stopped typing": [
null,
"har stoppet å skrive"
],
"Show this menu": [
null,
"Viser denne menyen"
],
"Write in the third person": [
null,
"Skriv i tredjeperson"
],
"Remove messages": [
null,
"Fjern meldinger"
],
"Are you sure you want to clear the messages from this chat box?": [
null,
"Er du sikker på at du vil fjerne meldingene fra denne meldingsboksen?"
],
"Your message could not be sent": [
null,
"Beskjeden din kunne ikke sendes"
],
"We received an unencrypted message": [
null,
"Vi mottok en ukryptert beskjed"
],
"We received an unreadable encrypted message": [
null,
"Vi mottok en uleselig melding"
],
"This user has requested an encrypted session.": [
null,
"Denne brukeren har ønsket en kryptert økt"
],
"Here are the fingerprints, please confirm them with %1$s, outside of this chat.\n\nFingerprint for you, %2$s: %3$s\n\nFingerprint for %1$s: %4$s\n\nIf you have confirmed that the fingerprints match, click OK, otherwise click Cancel.": [
null,
"Here are the fingerprints, please confirm them with %1$s, outside of this chat.\n\nFingerprint for you, %2$s: %3$s\n\nFingerprint for %1$s: %4$s\n\nOm du har bekreftet at avtrykkene matcher, klikk OK. I motsatt fall, trykk Avbryt."
],
"You will be prompted to provide a security question and then an answer to that question.\n\nYour contact will then be prompted the same question and if they type the exact same answer (case sensitive), their identity will be verified.": [
null,
"Du vil bli spurt etter å tilby et sikkerhetsspørsmål og siden svare på dette.\n\nDin kontakt vil så bli spurt om det samme spørsmålet, og om de svarer det nøyaktig samme svaret (det er forskjell på små og store bokstaver), vil identiteten verifiseres."
],
"What is your security question?": [
null,
"Hva er ditt Sikkerhetsspørsmål?"
],
"What is the answer to the security question?": [
null,
"Hva er svaret på ditt Sikkerhetsspørsmål?"
],
"Invalid authentication scheme provided": [
null,
"Du har vedlagt en ugyldig godkjenningsplan."
],
"Your messages are not encrypted anymore": [
null,
"Dine meldinger er ikke kryptert lenger."
],
"Your messages are now encrypted but your contact's identity has not been verified.": [
null,
"Dine meldinger er nå krypterte, men identiteten til din kontakt har ikke blitt verifisert."
],
"Your contact's identify has been verified.": [
null,
"Din kontakts identitet har blitt verifisert."
],
"Your contact has ended encryption on their end, you should do the same.": [
null,
"Din kontakt har avsluttet kryptering i sin ende, dette burde du også gjøre."
],
"Your messages are not encrypted. Click here to enable OTR encryption.": [
null,
"Dine meldinger er ikke krypterte. Klikk her for å aktivere OTR-kryptering."
],
"Your messages are encrypted, but your contact has not been verified.": [
null,
"Dine meldinger er krypterte, men din kontakt har ikke blitt verifisert."
],
"Your messages are encrypted and your contact verified.": [
null,
"Dine meldinger er krypterte og din kontakt er verifisert."
],
"Your contact has closed their end of the private session, you should do the same": [
null,
"Din kontakt har avsluttet økten i sin ende, dette burde du også gjøre."
],
"Clear all messages": [
null,
"Fjern alle meldinger"
],
"End encrypted conversation": [
null,
"Avslutt kryptert økt"
],
"Hide the list of participants": [
null,
"Skjul deltakerlisten"
],
"Refresh encrypted conversation": [
null,
"Last inn kryptert samtale på nytt"
],
"Start a call": [
null,
"Start en samtale"
],
"Start encrypted conversation": [
null,
"Start en kryptert samtale"
],
"Verify with fingerprints": [
null,
"Verifiser med Avtrykk"
],
"Verify with SMP": [
null,
"Verifiser med SMP"
],
"What's this?": [
null,
"Hva er dette?"
],
"Online": [
null,
"Pålogget"
],
"Busy": [
null,
"Opptatt"
],
"Away": [
null,
"Borte"
],
"Offline": [
null,
"Avlogget"
],
"Log out": [
null,
"Logg Av"
],
"Contact name": [
null,
"Kontaktnavn"
],
"Search": [
null,
"Søk"
],
"Contact username": [
null,
"Brukernavnet til Kontakt"
],
"Add": [
null,
"Legg Til"
],
"Click to add new chat contacts": [
null,
"Klikk for å legge til nye meldingskontakter"
],
"Add a contact": [
null,
"Legg til en Kontakt"
],
"No users found": [
null,
"Ingen brukere funnet"
],
"Click to add as a chat contact": [
null,
"Klikk for å legge til som meldingskontakt"
],
"Room name": [
null,
"Romnavn"
],
"Nickname": [
null,
"Kallenavn"
],
"Server": [
null,
"Server"
],
"Join": [
null,
"Koble til"
],
"Show rooms": [
null,
"Vis Rom"
],
"Rooms": [
null,
"Rom"
],
"No rooms on %1$s": [
null,
"Ingen rom på %1$s"
],
"Rooms on %1$s": [
null,
"Rom på %1$s"
],
"Click to open this room": [
null,
"Klikk for å åpne dette rommet"
],
"Show more information on this room": [
null,
"Vis mer informasjon om dette rommet"
],
"Description:": [
null,
"Beskrivelse:"
],
"Occupants:": [
null,
"Brukere her:"
],
"Features:": [
null,
"Egenskaper:"
],
"Requires authentication": [
null,
"Krever Godkjenning"
],
"Hidden": [
null,
"Skjult"
],
"Requires an invitation": [
null,
"Krever en invitasjon"
],
"Moderated": [
null,
"Moderert"
],
"Non-anonymous": [
null,
"Ikke-Anonym"
],
"Open room": [
null,
"Åpent Rom"
],
"Permanent room": [
null,
"Permanent Rom"
],
"Public": [
null,
"Alle"
],
"Semi-anonymous": [
null,
"Semi-anonymt"
],
"Temporary room": [
null,
"Midlertidig Rom"
],
"Unmoderated": [
null,
"Umoderert"
],
"This user is a moderator": [
null,
"Denne brukeren er moderator"
],
"This user can send messages in this room": [
null,
"Denne brukeren kan skrive meldinger i dette rommet"
],
"This user can NOT send messages in this room": [
null,
"Denne brukeren kan IKKE sende meldinger i dette rommet"
],
"Invite...": [
null,
"Invitér..."
],
"Occupants": [
null,
"Brukere her:"
],
"You are about to invite %1$s to the chat room \"%2$s\". ": [
null,
"Du er i ferd med å invitere %1$s til samtalerommet \"%2$s\". "
],
"You may optionally include a message, explaining the reason for the invitation.": [
null,
"Du kan eventuelt inkludere en melding og forklare årsaken til invitasjonen."
],
"Message": [
null,
"Melding"
],
"Error: could not execute the command": [
null,
"Feil: kunne ikke utføre kommandoen"
],
"Ban user from room": [
null,
"Utesteng bruker fra rommet"
],
"Kick user from room": [
null,
"Kast ut bruker fra rommet"
],
"Write in 3rd person": [
null,
"Skriv i tredjeperson"
],
"Remove user's ability to post messages": [
null,
"Fjern brukerens muligheter til å skrive meldinger"
],
"Change your nickname": [
null,
"Endre ditt kallenavn"
],
"Set room topic": [
null,
"Endre rommets emne"
],
"Allow muted user to post messages": [
null,
"Tillat stumme brukere å skrive meldinger"
],
"Save": [
null,
"Lagre"
],
"Cancel": [
null,
"Avbryt"
],
"An error occurred while trying to save the form.": [
null,
"En feil skjedde under lagring av skjemaet."
],
"This chatroom requires a password": [
null,
"Dette rommet krever et passord"
],
"Password: ": [
null,
"Passord:"
],
"Submit": [
null,
"Send"
],
"This room is not anonymous": [
null,
"Dette rommet er ikke anonymt"
],
"This room now shows unavailable members": [
null,
"Dette rommet viser nå utilgjengelige medlemmer"
],
"This room does not show unavailable members": [
null,
"Dette rommet viser ikke utilgjengelige medlemmer"
],
"Non-privacy-related room configuration has changed": [
null,
"Ikke-personvernsrelatert romkonfigurasjon har blitt endret"
],
"Room logging is now enabled": [
null,
"Romlogging er nå aktivert"
],
"Room logging is now disabled": [
null,
"Romlogging er nå deaktivert"
],
"This room is now non-anonymous": [
null,
"Dette rommet er nå ikke-anonymt"
],
"This room is now semi-anonymous": [
null,
"Dette rommet er nå semi-anonymt"
],
"This room is now fully-anonymous": [
null,
"Dette rommet er nå totalt anonymt"
],
"A new room has been created": [
null,
"Et nytt rom har blitt opprettet"
],
"You have been banned from this room": [
null,
"Du har blitt utestengt fra dette rommet"
],
"You have been kicked from this room": [
null,
"Du ble kastet ut av dette rommet"
],
"You have been removed from this room because of an affiliation change": [
null,
"Du har blitt fjernet fra dette rommet på grunn av en holdningsendring"
],
"You have been removed from this room because the room has changed to members-only and you're not a member": [
null,
"Du har blitt fjernet fra dette rommet fordi rommet nå kun tillater medlemmer, noe du ikke er."
],
"You have been removed from this room because the MUC (Multi-user chat) service is being shut down.": [
null,
"Du har blitt fjernet fra dette rommet fordi MBC (Multi-Bruker-Chat)-tjenesten er stengt ned."
],
"<strong>%1$s</strong> has been banned": [
null,
"<strong>%1$s</strong> har blitt utestengt"
],
"<strong>%1$s</strong>'s nickname has changed": [
null,
"<strong>%1$s</strong> sitt kallenavn er endret"
],
"<strong>%1$s</strong> has been kicked out": [
null,
"<strong>%1$s</strong> ble kastet ut"
],
"<strong>%1$s</strong> has been removed because of an affiliation change": [
null,
"<strong>%1$s</strong> har blitt fjernet på grunn av en holdningsendring"
],
"<strong>%1$s</strong> has been removed for not being a member": [
null,
"<strong>%1$s</strong> har blitt fjernet på grunn av at han/hun ikke er medlem"
],
"Your nickname has been automatically changed to: <strong>%1$s</strong>": [
null,
"Ditt kallenavn har blitt automatisk endret til <strong>%1$s</strong> "
],
"Your nickname has been changed to: <strong>%1$s</strong>": [
null,
"Ditt kallenavn har blitt endret til <strong>%1$s</strong> "
],
"The reason given is: \"": [
null,
"Årsaken som er oppgitt er: \""
],
"You are not on the member list of this room": [
null,
"Du er ikke på medlemslisten til dette rommet"
],
"No nickname was specified": [
null,
"Ingen kallenavn var spesifisert"
],
"You are not allowed to create new rooms": [
null,
"Du har ikke tillatelse til å opprette nye rom"
],
"Your nickname doesn't conform to this room's policies": [
null,
"Ditt kallenavn er ikke i samsvar med rommets regler"
],
"Your nickname is already taken": [
null,
"Kallenavnet er allerede tatt"
],
"This room does not (yet) exist": [
null,
"Dette rommet eksisterer ikke (enda)"
],
"This room has reached it's maximum number of occupants": [
null,
"Dette rommet har nådd maksimalt antall brukere"
],
"Topic set by %1$s to: %2$s": [
null,
"Emnet ble endret den %1$s til: %2$s"
],
"%1$s has invited you to join a chat room: %2$s": [
null,
"%1$s har invitert deg til å bli med i chatterommet: %2$s"
],
"%1$s has invited you to join a chat room: %2$s, and left the following reason: \"%3$s\"": [
null,
"%1$s har invitert deg til å bli med i chatterommet: %2$s, og forlot selv av følgende grunn: \"%3$s\""
],
"Click to restore this chat": [
null,
"Klikk for å gjenopprette denne samtalen"
],
"Minimized": [
null,
"Minimert"
],
"Click to remove this contact": [
null,
"Klikk for å fjerne denne kontakten"
],
"Click to accept this contact request": [
null,
"Klikk for å Godta denne kontaktforespørselen"
],
"Click to decline this contact request": [
null,
"Klikk for å avslå denne kontaktforespørselen"
],
"Click to chat with this contact": [
null,
"Klikk for å chatte med denne kontakten"
],
"Are you sure you want to remove this contact?": [
null,
"Er du sikker på at du vil fjerne denne kontakten?"
],
"Are you sure you want to decline this contact request?": [
null,
"Er du sikker på at du vil avslå denne kontaktforespørselen?"
],
"Type to filter": [
null,
"Skriv til filter"
],
"I am %1$s": [
null,
"Jeg er %1$s"
],
"Click here to write a custom status message": [
null,
"Klikk her for å skrive en personlig statusmelding"
],
"Click to change your chat status": [
null,
"Klikk for å endre din meldingsstatus"
],
"Custom status": [
null,
"Personlig status"
],
"online": [
null,
"pålogget"
],
"busy": [
null,
"opptatt"
],
"away for long": [
null,
"borte lenge"
],
"away": [
null,
"borte"
],
"Your XMPP provider's domain name:": [
null,
"Din XMPP-tilbyders domenenavn:"
],
"Fetch registration form": [
null,
"Hent registreringsskjema"
],
"Tip: A list of public XMPP providers is available": [
null,
"Tips: En liste med offentlige XMPP-tilbydere er tilgjengelig"
],
"here": [
null,
"her"
],
"Register": [
null,
"Registrér deg"
],
"Sorry, the given provider does not support in band account registration. Please try with a different provider.": [
null,
"Beklager, den valgte tilbyderen støtter ikke in band kontoregistrering. Vennligst prøv igjen med en annen tilbyder. "
],
"Requesting a registration form from the XMPP server": [
null,
"Spør etter registreringsskjema fra XMPP-tjeneren"
],
"Something went wrong while establishing a connection with \"%1$s\". Are you sure it exists?": [
null,
"Noe gikk galt under etablering av forbindelse med \"%1$s\". Er du sikker på at denne eksisterer?"
],
"Now logging you in": [
null,
"Logger deg inn"
],
"Registered successfully": [
null,
"Registrering var vellykket"
],
"Return": [
null,
"Tilbake"
],
"The provider rejected your registration attempt. ": [
null,
"Tilbyderen avviste ditt registreringsforsøk."
],
"XMPP Username:": [
null,
"XMPP Brukernavn:"
],
"Password:": [
null,
"Passord:"
],
"Log In": [
null,
"Logg inn"
],
"Sign in": [
null,
"Innlogging"
],
"Toggle chat": [
null,
"Endre chatten"
]
}
}
}

View File

@ -0,0 +1,859 @@
msgid ""
msgstr ""
"Project-Id-Version: Converse JS 0.8.6\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2014-12-07 13:45+0100\n"
"PO-Revision-Date: 2014-12-20 10:55+0100\n"
"Last-Translator: Andreas Lorentsen <andreas.lorentsen@gmail.com>\n"
"Language-Team: \n"
"Language: nb\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 1.6.8\n"
"X-Poedit-Basepath: .\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Poedit-SourceCharset: UTF-8\n"
"domain: converse\n"
"lang: nb\n"
"plural_forms: nplurals=2; plural=(n != 1);\n"
#: converse.js:302
msgid "unencrypted"
msgstr "ukryptertß"
#: converse.js:303
msgid "unverified"
msgstr "uverifisert"
#: converse.js:304
msgid "verified"
msgstr "verifisert"
#: converse.js:305
msgid "finished"
msgstr "ferdig"
#: converse.js:308
msgid "This contact is busy"
msgstr "Denne kontakten er opptatt"
#: converse.js:309
msgid "This contact is online"
msgstr "Kontakten er pålogget"
#: converse.js:310
msgid "This contact is offline"
msgstr "Kontakten er avlogget"
#: converse.js:311
msgid "This contact is unavailable"
msgstr "Kontakten er utilgjengelig"
#: converse.js:312
msgid "This contact is away for an extended period"
msgstr "Kontakten er borte for en lengre periode"
#: converse.js:313
msgid "This contact is away"
msgstr "Kontakten er borte"
#: converse.js:315
msgid "Click to hide these contacts"
msgstr "Klikk for å skjule disse kontaktene"
#: converse.js:317
msgid "My contacts"
msgstr "Mine Kontakter"
#: converse.js:318
msgid "Pending contacts"
msgstr "Kontakter som venter på godkjenning"
#: converse.js:319
msgid "Contact requests"
msgstr "Kontaktforespørsler"
#: converse.js:320
msgid "Ungrouped"
msgstr "Ugrupperte"
#: converse.js:322
msgid "Contacts"
msgstr "Kontakter"
#: converse.js:323
msgid "Groups"
msgstr "Grupper"
#: converse.js:410
msgid "Reconnecting"
msgstr "Kobler til igjen"
#: converse.js:450
msgid "Error"
msgstr "Feil"
#: converse.js:452
msgid "Connecting"
msgstr "Kobler til"
#: converse.js:454
msgid "Authenticating"
msgstr "Godkjenner"
#: converse.js:456 converse.js:457
msgid "Authentication Failed"
msgstr "Godkjenning mislyktes"
#: converse.js:602 converse.js:644
msgid "Online Contacts"
msgstr "Påloggede Kontakter"
#: converse.js:762
msgid "Re-establishing encrypted session"
msgstr "Gjenopptar kryptert økt"
#: converse.js:774
msgid "Generating private key."
msgstr "Genererer privat nøkkel"
#: converse.js:775
msgid "Your browser might become unresponsive."
msgstr "Din nettleser kan bli uresponsiv"
#: converse.js:810
msgid ""
"Authentication request from %1$s\n"
"\n"
"Your chat contact is attempting to verify your identity, by asking you the "
"question below.\n"
"\n"
"%2$s"
msgstr ""
"Godkjenningsforespørsel fra %1$s\n"
"\n"
"Din nettpratkontakt forsøker å bekrefte din identitet, ved å spørre deg "
"spørsmålet under.\n"
"\n"
"%2$s"
#: converse.js:819
msgid "Could not verify this user's identify."
msgstr "Kunne ikke bekrefte denne brukerens identitet"
#: converse.js:858
msgid "Exchanging private key with contact."
msgstr "Bytter private nøkler med kontakt"
#: converse.js:1011
msgid "Personal message"
msgstr "Personlig melding"
#: converse.js:1043
msgid "Are you sure you want to clear the messages from this room?"
msgstr "Er du sikker på at du vil fjerne meldingene fra dette rommet?"
#: converse.js:1065
msgid "me"
msgstr "meg"
#: converse.js:1119
msgid "is typing"
msgstr "skriver"
#: converse.js:1122
msgid "has stopped typing"
msgstr "har stoppet å skrive"
#: converse.js:1164 converse.js:2351
msgid "Show this menu"
msgstr "Viser denne menyen"
#: converse.js:1165
msgid "Write in the third person"
msgstr "Skriv i tredjeperson"
#: converse.js:1166 converse.js:2350
msgid "Remove messages"
msgstr "Fjern meldinger"
#: converse.js:1250
msgid "Are you sure you want to clear the messages from this chat box?"
msgstr "Er du sikker på at du vil fjerne meldingene fra denne meldingsboksen?"
#: converse.js:1285
msgid "Your message could not be sent"
msgstr "Beskjeden din kunne ikke sendes"
#: converse.js:1288
msgid "We received an unencrypted message"
msgstr "Vi mottok en ukryptert beskjed"
#: converse.js:1291
msgid "We received an unreadable encrypted message"
msgstr "Vi mottok en uleselig melding"
#: converse.js:1300
msgid "This user has requested an encrypted session."
msgstr "Denne brukeren har ønsket en kryptert økt"
#: converse.js:1322
msgid ""
"Here are the fingerprints, please confirm them with %1$s, outside of this "
"chat.\n"
"\n"
"Fingerprint for you, %2$s: %3$s\n"
"\n"
"Fingerprint for %1$s: %4$s\n"
"\n"
"If you have confirmed that the fingerprints match, click OK, otherwise click "
"Cancel."
msgstr ""
"Here are the fingerprints, please confirm them with %1$s, outside of this "
"chat.\n"
"\n"
"Fingerprint for you, %2$s: %3$s\n"
"\n"
"Fingerprint for %1$s: %4$s\n"
"\n"
"Om du har bekreftet at avtrykkene matcher, klikk OK. I motsatt fall, trykk "
"Avbryt."
#: converse.js:1335
msgid ""
"You will be prompted to provide a security question and then an answer to "
"that question.\n"
"\n"
"Your contact will then be prompted the same question and if they type the "
"exact same answer (case sensitive), their identity will be verified."
msgstr ""
"Du vil bli spurt etter å tilby et sikkerhetsspørsmål og siden svare på "
"dette.\n"
"\n"
"Din kontakt vil så bli spurt om det samme spørsmålet, og om de svarer det "
"nøyaktig samme svaret (det er forskjell på små og store bokstaver), vil "
"identiteten verifiseres."
#: converse.js:1336
msgid "What is your security question?"
msgstr "Hva er ditt Sikkerhetsspørsmål?"
#: converse.js:1338
msgid "What is the answer to the security question?"
msgstr "Hva er svaret på ditt Sikkerhetsspørsmål?"
#: converse.js:1342
msgid "Invalid authentication scheme provided"
msgstr "Du har vedlagt en ugyldig godkjenningsplan."
#: converse.js:1457
msgid "Your messages are not encrypted anymore"
msgstr "Dine meldinger er ikke kryptert lenger."
#: converse.js:1459
msgid ""
"Your messages are now encrypted but your contact's identity has not been "
"verified."
msgstr ""
"Dine meldinger er nå krypterte, men identiteten til din kontakt har ikke "
"blitt verifisert."
#: converse.js:1461
msgid "Your contact's identify has been verified."
msgstr "Din kontakts identitet har blitt verifisert."
#: converse.js:1463
msgid "Your contact has ended encryption on their end, you should do the same."
msgstr ""
"Din kontakt har avsluttet kryptering i sin ende, dette burde du også gjøre."
#: converse.js:1472
msgid "Your messages are not encrypted. Click here to enable OTR encryption."
msgstr ""
"Dine meldinger er ikke krypterte. Klikk her for å aktivere OTR-kryptering."
#: converse.js:1474
msgid "Your messages are encrypted, but your contact has not been verified."
msgstr ""
"Dine meldinger er krypterte, men din kontakt har ikke blitt verifisert."
#: converse.js:1476
msgid "Your messages are encrypted and your contact verified."
msgstr "Dine meldinger er krypterte og din kontakt er verifisert."
#: converse.js:1478
msgid ""
"Your contact has closed their end of the private session, you should do the "
"same"
msgstr "Din kontakt har avsluttet økten i sin ende, dette burde du også gjøre."
#: converse.js:1488
msgid "Clear all messages"
msgstr "Fjern alle meldinger"
#: converse.js:1489
msgid "End encrypted conversation"
msgstr "Avslutt kryptert økt"
#: converse.js:1490
msgid "Hide the list of participants"
msgstr "Skjul deltakerlisten"
#: converse.js:1491
msgid "Refresh encrypted conversation"
msgstr "Last inn kryptert samtale på nytt"
#: converse.js:1492
msgid "Start a call"
msgstr "Start en samtale"
#: converse.js:1493
msgid "Start encrypted conversation"
msgstr "Start en kryptert samtale"
#: converse.js:1494
msgid "Verify with fingerprints"
msgstr "Verifiser med Avtrykk"
#: converse.js:1495
msgid "Verify with SMP"
msgstr "Verifiser med SMP"
#: converse.js:1496
msgid "What's this?"
msgstr "Hva er dette?"
#: converse.js:1587
msgid "Online"
msgstr "Pålogget"
#: converse.js:1588
msgid "Busy"
msgstr "Opptatt"
#: converse.js:1589
msgid "Away"
msgstr "Borte"
#: converse.js:1590
msgid "Offline"
msgstr "Avlogget"
#: converse.js:1591
msgid "Log out"
msgstr "Logg Av"
#: converse.js:1597
msgid "Contact name"
msgstr "Kontaktnavn"
#: converse.js:1598
msgid "Search"
msgstr "Søk"
#: converse.js:1602
msgid "Contact username"
msgstr "Brukernavnet til Kontakt"
#: converse.js:1603
msgid "Add"
msgstr "Legg Til"
#: converse.js:1608
msgid "Click to add new chat contacts"
msgstr "Klikk for å legge til nye meldingskontakter"
#: converse.js:1609
msgid "Add a contact"
msgstr "Legg til en Kontakt"
#: converse.js:1633
msgid "No users found"
msgstr "Ingen brukere funnet"
#: converse.js:1639
msgid "Click to add as a chat contact"
msgstr "Klikk for å legge til som meldingskontakt"
#: converse.js:1703
msgid "Room name"
msgstr "Romnavn"
#: converse.js:1704
msgid "Nickname"
msgstr "Kallenavn"
#: converse.js:1705
msgid "Server"
msgstr "Server"
#: converse.js:1706
msgid "Join"
msgstr "Koble til"
#: converse.js:1707
msgid "Show rooms"
msgstr "Vis Rom"
#: converse.js:1711
msgid "Rooms"
msgstr "Rom"
#. For translators: %1$s is a variable and will be replaced with the XMPP server name
#: converse.js:1731
msgid "No rooms on %1$s"
msgstr "Ingen rom på %1$s"
#. For translators: %1$s is a variable and will be
#. replaced with the XMPP server name
#: converse.js:1746
msgid "Rooms on %1$s"
msgstr "Rom på %1$s"
#: converse.js:1755
msgid "Click to open this room"
msgstr "Klikk for å åpne dette rommet"
#: converse.js:1756
msgid "Show more information on this room"
msgstr "Vis mer informasjon om dette rommet"
#: converse.js:1818
msgid "Description:"
msgstr "Beskrivelse:"
#: converse.js:1819
msgid "Occupants:"
msgstr "Brukere her:"
#: converse.js:1820
msgid "Features:"
msgstr "Egenskaper:"
#: converse.js:1821
msgid "Requires authentication"
msgstr "Krever Godkjenning"
#: converse.js:1822
msgid "Hidden"
msgstr "Skjult"
#: converse.js:1823
msgid "Requires an invitation"
msgstr "Krever en invitasjon"
#: converse.js:1824
msgid "Moderated"
msgstr "Moderert"
#: converse.js:1825
msgid "Non-anonymous"
msgstr "Ikke-Anonym"
#: converse.js:1826
msgid "Open room"
msgstr "Åpent Rom"
#: converse.js:1827
msgid "Permanent room"
msgstr "Permanent Rom"
#: converse.js:1828
msgid "Public"
msgstr "Alle"
#: converse.js:1829
msgid "Semi-anonymous"
msgstr "Semi-anonymt"
#: converse.js:1830
msgid "Temporary room"
msgstr "Midlertidig Rom"
#: converse.js:1831
msgid "Unmoderated"
msgstr "Umoderert"
#: converse.js:2099
msgid "This user is a moderator"
msgstr "Denne brukeren er moderator"
#: converse.js:2100
msgid "This user can send messages in this room"
msgstr "Denne brukeren kan skrive meldinger i dette rommet"
#: converse.js:2101
msgid "This user can NOT send messages in this room"
msgstr "Denne brukeren kan IKKE sende meldinger i dette rommet"
#: converse.js:2133
msgid "Invite..."
msgstr "Invitér..."
#: converse.js:2134
msgid "Occupants"
msgstr "Brukere her:"
#: converse.js:2199
msgid "You are about to invite %1$s to the chat room \"%2$s\". "
msgstr "Du er i ferd med å invitere %1$s til samtalerommet \"%2$s\". "
#: converse.js:2200
msgid ""
"You may optionally include a message, explaining the reason for the "
"invitation."
msgstr ""
"Du kan eventuelt inkludere en melding og forklare årsaken til invitasjonen."
#: converse.js:2283
msgid "Message"
msgstr "Melding"
#: converse.js:2319
msgid "Error: could not execute the command"
msgstr "Feil: kunne ikke utføre kommandoen"
#: converse.js:2349
msgid "Ban user from room"
msgstr "Utesteng bruker fra rommet"
#: converse.js:2352
msgid "Kick user from room"
msgstr "Kast ut bruker fra rommet"
#: converse.js:2353
msgid "Write in 3rd person"
msgstr "Skriv i tredjeperson"
#: converse.js:2354
msgid "Remove user's ability to post messages"
msgstr "Fjern brukerens muligheter til å skrive meldinger"
#: converse.js:2355
msgid "Change your nickname"
msgstr "Endre ditt kallenavn"
#: converse.js:2356
msgid "Set room topic"
msgstr "Endre rommets emne"
#: converse.js:2357
msgid "Allow muted user to post messages"
msgstr "Tillat stumme brukere å skrive meldinger"
#: converse.js:2423 converse.js:4334
msgid "Save"
msgstr "Lagre"
#: converse.js:2424 converse.js:4603 converse.js:4707
msgid "Cancel"
msgstr "Avbryt"
#: converse.js:2459
msgid "An error occurred while trying to save the form."
msgstr "En feil skjedde under lagring av skjemaet."
#: converse.js:2503
msgid "This chatroom requires a password"
msgstr "Dette rommet krever et passord"
#: converse.js:2504
msgid "Password: "
msgstr "Passord:"
#: converse.js:2505
msgid "Submit"
msgstr "Send"
#: converse.js:2540
msgid "This room is not anonymous"
msgstr "Dette rommet er ikke anonymt"
#: converse.js:2541
msgid "This room now shows unavailable members"
msgstr "Dette rommet viser nå utilgjengelige medlemmer"
#: converse.js:2542
msgid "This room does not show unavailable members"
msgstr "Dette rommet viser ikke utilgjengelige medlemmer"
#: converse.js:2543
msgid "Non-privacy-related room configuration has changed"
msgstr "Ikke-personvernsrelatert romkonfigurasjon har blitt endret"
#: converse.js:2544
msgid "Room logging is now enabled"
msgstr "Romlogging er nå aktivert"
#: converse.js:2545
msgid "Room logging is now disabled"
msgstr "Romlogging er nå deaktivert"
#: converse.js:2546
msgid "This room is now non-anonymous"
msgstr "Dette rommet er nå ikke-anonymt"
#: converse.js:2547
msgid "This room is now semi-anonymous"
msgstr "Dette rommet er nå semi-anonymt"
#: converse.js:2548
msgid "This room is now fully-anonymous"
msgstr "Dette rommet er nå totalt anonymt"
#: converse.js:2549
msgid "A new room has been created"
msgstr "Et nytt rom har blitt opprettet"
#: converse.js:2553 converse.js:2653
msgid "You have been banned from this room"
msgstr "Du har blitt utestengt fra dette rommet"
#: converse.js:2554
msgid "You have been kicked from this room"
msgstr "Du ble kastet ut av dette rommet"
#: converse.js:2555
msgid "You have been removed from this room because of an affiliation change"
msgstr "Du har blitt fjernet fra dette rommet på grunn av en holdningsendring"
#: converse.js:2556
msgid ""
"You have been removed from this room because the room has changed to members-"
"only and you're not a member"
msgstr ""
"Du har blitt fjernet fra dette rommet fordi rommet nå kun tillater "
"medlemmer, noe du ikke er."
#: converse.js:2557
msgid ""
"You have been removed from this room because the MUC (Multi-user chat) "
"service is being shut down."
msgstr ""
"Du har blitt fjernet fra dette rommet fordi MBC (Multi-Bruker-Chat)-"
"tjenesten er stengt ned."
#: converse.js:2571
msgid "<strong>%1$s</strong> has been banned"
msgstr "<strong>%1$s</strong> har blitt utestengt"
#: converse.js:2572
msgid "<strong>%1$s</strong>'s nickname has changed"
msgstr "<strong>%1$s</strong> sitt kallenavn er endret"
#: converse.js:2573
msgid "<strong>%1$s</strong> has been kicked out"
msgstr "<strong>%1$s</strong> ble kastet ut"
#: converse.js:2574
msgid "<strong>%1$s</strong> has been removed because of an affiliation change"
msgstr ""
"<strong>%1$s</strong> har blitt fjernet på grunn av en holdningsendring"
#: converse.js:2575
msgid "<strong>%1$s</strong> has been removed for not being a member"
msgstr ""
"<strong>%1$s</strong> har blitt fjernet på grunn av at han/hun ikke er medlem"
#: converse.js:2579
msgid "Your nickname has been automatically changed to: <strong>%1$s</strong>"
msgstr "Ditt kallenavn har blitt automatisk endret til <strong>%1$s</strong> "
#: converse.js:2580
msgid "Your nickname has been changed to: <strong>%1$s</strong>"
msgstr "Ditt kallenavn har blitt endret til <strong>%1$s</strong> "
#: converse.js:2628 converse.js:2638
msgid "The reason given is: \""
msgstr "Årsaken som er oppgitt er: \""
#: converse.js:2651
msgid "You are not on the member list of this room"
msgstr "Du er ikke på medlemslisten til dette rommet"
#: converse.js:2657
msgid "No nickname was specified"
msgstr "Ingen kallenavn var spesifisert"
#: converse.js:2661
msgid "You are not allowed to create new rooms"
msgstr "Du har ikke tillatelse til å opprette nye rom"
#: converse.js:2663
msgid "Your nickname doesn't conform to this room's policies"
msgstr "Ditt kallenavn er ikke i samsvar med rommets regler"
#: converse.js:2667
msgid "Your nickname is already taken"
msgstr "Kallenavnet er allerede tatt"
#: converse.js:2669
msgid "This room does not (yet) exist"
msgstr "Dette rommet eksisterer ikke (enda)"
#: converse.js:2671
msgid "This room has reached it's maximum number of occupants"
msgstr "Dette rommet har nådd maksimalt antall brukere"
#: converse.js:2713
msgid "Topic set by %1$s to: %2$s"
msgstr "Emnet ble endret den %1$s til: %2$s"
#: converse.js:2795
msgid "%1$s has invited you to join a chat room: %2$s"
msgstr "%1$s har invitert deg til å bli med i chatterommet: %2$s"
#: converse.js:2799
msgid ""
"%1$s has invited you to join a chat room: %2$s, and left the following "
"reason: \"%3$s\""
msgstr ""
"%1$s har invitert deg til å bli med i chatterommet: %2$s, og forlot selv av "
"følgende grunn: \"%3$s\""
#: converse.js:3057
msgid "Click to restore this chat"
msgstr "Klikk for å gjenopprette denne samtalen"
#: converse.js:3202
msgid "Minimized"
msgstr "Minimert"
#: converse.js:3298 converse.js:3316
msgid "Click to remove this contact"
msgstr "Klikk for å fjerne denne kontakten"
#: converse.js:3305
msgid "Click to accept this contact request"
msgstr "Klikk for å Godta denne kontaktforespørselen"
#: converse.js:3306
msgid "Click to decline this contact request"
msgstr "Klikk for å avslå denne kontaktforespørselen"
#: converse.js:3315
msgid "Click to chat with this contact"
msgstr "Klikk for å chatte med denne kontakten"
#: converse.js:3340
msgid "Are you sure you want to remove this contact?"
msgstr "Er du sikker på at du vil fjerne denne kontakten?"
#: converse.js:3363
msgid "Are you sure you want to decline this contact request?"
msgstr "Er du sikker på at du vil avslå denne kontaktforespørselen?"
#: converse.js:3889
msgid "Type to filter"
msgstr "Skriv til filter"
#. For translators: the %1$s part gets replaced with the status
#. Example, I am online
#: converse.js:4305 converse.js:4382
msgid "I am %1$s"
msgstr "Jeg er %1$s"
#: converse.js:4307 converse.js:4387
msgid "Click here to write a custom status message"
msgstr "Klikk her for å skrive en personlig statusmelding"
#: converse.js:4308 converse.js:4388
msgid "Click to change your chat status"
msgstr "Klikk for å endre din meldingsstatus"
#: converse.js:4333
msgid "Custom status"
msgstr "Personlig status"
#: converse.js:4362 converse.js:4370
msgid "online"
msgstr "pålogget"
#: converse.js:4364
msgid "busy"
msgstr "opptatt"
#: converse.js:4366
msgid "away for long"
msgstr "borte lenge"
#: converse.js:4368
msgid "away"
msgstr "borte"
#: converse.js:4488
msgid "Your XMPP provider's domain name:"
msgstr "Din XMPP-tilbyders domenenavn:"
#: converse.js:4489
msgid "Fetch registration form"
msgstr "Hent registreringsskjema"
#: converse.js:4490
msgid "Tip: A list of public XMPP providers is available"
msgstr "Tips: En liste med offentlige XMPP-tilbydere er tilgjengelig"
#: converse.js:4491
msgid "here"
msgstr "her"
#: converse.js:4496 converse.js:4705
msgid "Register"
msgstr "Registrér deg"
#: converse.js:4543
msgid ""
"Sorry, the given provider does not support in band account registration. "
"Please try with a different provider."
msgstr ""
"Beklager, den valgte tilbyderen støtter ikke in band kontoregistrering. "
"Vennligst prøv igjen med en annen tilbyder. "
#: converse.js:4604
msgid "Requesting a registration form from the XMPP server"
msgstr "Spør etter registreringsskjema fra XMPP-tjeneren"
#: converse.js:4639
msgid ""
"Something went wrong while establishing a connection with \"%1$s\". Are you "
"sure it exists?"
msgstr ""
"Noe gikk galt under etablering av forbindelse med \"%1$s\". Er du sikker på "
"at denne eksisterer?"
#: converse.js:4658
msgid "Now logging you in"
msgstr "Logger deg inn"
#: converse.js:4662
msgid "Registered successfully"
msgstr "Registrering var vellykket"
#: converse.js:4710
msgid "Return"
msgstr "Tilbake"
#: converse.js:4742
msgid "The provider rejected your registration attempt. "
msgstr "Tilbyderen avviste ditt registreringsforsøk."
#: converse.js:4887
msgid "XMPP Username:"
msgstr "XMPP Brukernavn:"
#: converse.js:4888
msgid "Password:"
msgstr "Passord:"
#: converse.js:4889
msgid "Log In"
msgstr "Logg inn"
#: converse.js:4896
msgid "Sign in"
msgstr "Innlogging"
#: converse.js:4970
msgid "Toggle chat"
msgstr "Endre chatten"

786
locale/nb/LC_MESSAGES/nb.js Normal file
View File

@ -0,0 +1,786 @@
(function (root, factory) {
var translations = {
"domain": "converse",
"locale_data": {
"converse": {
"": {
"domain": "converse",
"plural_forms": "nplurals=2; plural=(n != 1);",
"lang": "nb"
},
"unencrypted": [
null,
"ukryptertß"
],
"unverified": [
null,
"uverifisert"
],
"verified": [
null,
"verifisert"
],
"finished": [
null,
"ferdig"
],
"This contact is busy": [
null,
"Denne kontakten er opptatt"
],
"This contact is online": [
null,
"Kontakten er pålogget"
],
"This contact is offline": [
null,
"Kontakten er avlogget"
],
"This contact is unavailable": [
null,
"Kontakten er utilgjengelig"
],
"This contact is away for an extended period": [
null,
"Kontakten er borte for en lengre periode"
],
"This contact is away": [
null,
"Kontakten er borte"
],
"Click to hide these contacts": [
null,
"Klikk for å skjule disse kontaktene"
],
"My contacts": [
null,
"Mine Kontakter"
],
"Pending contacts": [
null,
"Kontakter som venter på godkjenning"
],
"Contact requests": [
null,
"Kontaktforespørsler"
],
"Ungrouped": [
null,
"Ugrupperte"
],
"Contacts": [
null,
"Kontakter"
],
"Groups": [
null,
"Grupper"
],
"Reconnecting": [
null,
"Kobler til igjen"
],
"Error": [
null,
"Feil"
],
"Connecting": [
null,
"Kobler til"
],
"Authenticating": [
null,
"Godkjenner"
],
"Authentication Failed": [
null,
"Godkjenning mislyktes"
],
"Online Contacts": [
null,
"Påloggede Kontakter"
],
"Re-establishing encrypted session": [
null,
"Gjenopptar kryptert økt"
],
"Generating private key.": [
null,
"Genererer privat nøkkel"
],
"Your browser might become unresponsive.": [
null,
"Din nettleser kan bli uresponsiv"
],
"Authentication request from %1$s\n\nYour chat contact is attempting to verify your identity, by asking you the question below.\n\n%2$s": [
null,
"Godkjenningsforespørsel fra %1$s\n\nDin nettpratkontakt forsøker å bekrefte din identitet, ved å spørre deg spørsmålet under.\n\n%2$s"
],
"Could not verify this user's identify.": [
null,
"Kunne ikke bekrefte denne brukerens identitet"
],
"Exchanging private key with contact.": [
null,
"Bytter private nøkler med kontakt"
],
"Personal message": [
null,
"Personlig melding"
],
"Are you sure you want to clear the messages from this room?": [
null,
"Er du sikker på at du vil fjerne meldingene fra dette rommet?"
],
"me": [
null,
"meg"
],
"is typing": [
null,
"skriver"
],
"has stopped typing": [
null,
"har stoppet å skrive"
],
"Show this menu": [
null,
"Viser denne menyen"
],
"Write in the third person": [
null,
"Skriv i tredjeperson"
],
"Remove messages": [
null,
"Fjern meldinger"
],
"Are you sure you want to clear the messages from this chat box?": [
null,
"Er du sikker på at du vil fjerne meldingene fra denne meldingsboksen?"
],
"Your message could not be sent": [
null,
"Beskjeden din kunne ikke sendes"
],
"We received an unencrypted message": [
null,
"Vi mottok en ukryptert beskjed"
],
"We received an unreadable encrypted message": [
null,
"Vi mottok en uleselig melding"
],
"This user has requested an encrypted session.": [
null,
"Denne brukeren har ønsket en kryptert økt"
],
"Here are the fingerprints, please confirm them with %1$s, outside of this chat.\n\nFingerprint for you, %2$s: %3$s\n\nFingerprint for %1$s: %4$s\n\nIf you have confirmed that the fingerprints match, click OK, otherwise click Cancel.": [
null,
"Here are the fingerprints, please confirm them with %1$s, outside of this chat.\n\nFingerprint for you, %2$s: %3$s\n\nFingerprint for %1$s: %4$s\n\nOm du har bekreftet at avtrykkene matcher, klikk OK. I motsatt fall, trykk Avbryt."
],
"You will be prompted to provide a security question and then an answer to that question.\n\nYour contact will then be prompted the same question and if they type the exact same answer (case sensitive), their identity will be verified.": [
null,
"Du vil bli spurt etter å tilby et sikkerhetsspørsmål og siden svare på dette.\n\nDin kontakt vil så bli spurt om det samme spørsmålet, og om de svarer det nøyaktig samme svaret (det er forskjell på små og store bokstaver), vil identiteten verifiseres."
],
"What is your security question?": [
null,
"Hva er ditt Sikkerhetsspørsmål?"
],
"What is the answer to the security question?": [
null,
"Hva er svaret på ditt Sikkerhetsspørsmål?"
],
"Invalid authentication scheme provided": [
null,
"Du har vedlagt en ugyldig godkjenningsplan."
],
"Your messages are not encrypted anymore": [
null,
"Dine meldinger er ikke kryptert lenger."
],
"Your messages are now encrypted but your contact's identity has not been verified.": [
null,
"Dine meldinger er nå krypterte, men identiteten til din kontakt har ikke blitt verifisert."
],
"Your contact's identify has been verified.": [
null,
"Din kontakts identitet har blitt verifisert."
],
"Your contact has ended encryption on their end, you should do the same.": [
null,
"Din kontakt har avsluttet kryptering i sin ende, dette burde du også gjøre."
],
"Your messages are not encrypted. Click here to enable OTR encryption.": [
null,
"Dine meldinger er ikke krypterte. Klikk her for å aktivere OTR-kryptering."
],
"Your messages are encrypted, but your contact has not been verified.": [
null,
"Dine meldinger er krypterte, men din kontakt har ikke blitt verifisert."
],
"Your messages are encrypted and your contact verified.": [
null,
"Dine meldinger er krypterte og din kontakt er verifisert."
],
"Your contact has closed their end of the private session, you should do the same": [
null,
"Din kontakt har avsluttet økten i sin ende, dette burde du også gjøre."
],
"Clear all messages": [
null,
"Fjern alle meldinger"
],
"End encrypted conversation": [
null,
"Avslutt kryptert økt"
],
"Hide the list of participants": [
null,
"Skjul deltakerlisten"
],
"Refresh encrypted conversation": [
null,
"Last inn kryptert samtale på nytt"
],
"Start a call": [
null,
"Start en samtale"
],
"Start encrypted conversation": [
null,
"Start en kryptert samtale"
],
"Verify with fingerprints": [
null,
"Verifiser med Avtrykk"
],
"Verify with SMP": [
null,
"Verifiser med SMP"
],
"What's this?": [
null,
"Hva er dette?"
],
"Online": [
null,
"Pålogget"
],
"Busy": [
null,
"Opptatt"
],
"Away": [
null,
"Borte"
],
"Offline": [
null,
"Avlogget"
],
"Log out": [
null,
"Logg Av"
],
"Contact name": [
null,
"Kontaktnavn"
],
"Search": [
null,
"Søk"
],
"Contact username": [
null,
"Brukernavnet til Kontakt"
],
"Add": [
null,
"Legg Til"
],
"Click to add new chat contacts": [
null,
"Klikk for å legge til nye meldingskontakter"
],
"Add a contact": [
null,
"Legg til en Kontakt"
],
"No users found": [
null,
"Ingen brukere funnet"
],
"Click to add as a chat contact": [
null,
"Klikk for å legge til som meldingskontakt"
],
"Room name": [
null,
"Romnavn"
],
"Nickname": [
null,
"Kallenavn"
],
"Server": [
null,
"Server"
],
"Join": [
null,
"Koble til"
],
"Show rooms": [
null,
"Vis Rom"
],
"Rooms": [
null,
"Rom"
],
"No rooms on %1$s": [
null,
"Ingen rom på %1$s"
],
"Rooms on %1$s": [
null,
"Rom på %1$s"
],
"Click to open this room": [
null,
"Klikk for å åpne dette rommet"
],
"Show more information on this room": [
null,
"Vis mer informasjon om dette rommet"
],
"Description:": [
null,
"Beskrivelse:"
],
"Occupants:": [
null,
"Brukere her:"
],
"Features:": [
null,
"Egenskaper:"
],
"Requires authentication": [
null,
"Krever Godkjenning"
],
"Hidden": [
null,
"Skjult"
],
"Requires an invitation": [
null,
"Krever en invitasjon"
],
"Moderated": [
null,
"Moderert"
],
"Non-anonymous": [
null,
"Ikke-Anonym"
],
"Open room": [
null,
"Åpent Rom"
],
"Permanent room": [
null,
"Permanent Rom"
],
"Public": [
null,
"Alle"
],
"Semi-anonymous": [
null,
"Semi-anonymt"
],
"Temporary room": [
null,
"Midlertidig Rom"
],
"Unmoderated": [
null,
"Umoderert"
],
"This user is a moderator": [
null,
"Denne brukeren er moderator"
],
"This user can send messages in this room": [
null,
"Denne brukeren kan skrive meldinger i dette rommet"
],
"This user can NOT send messages in this room": [
null,
"Denne brukeren kan IKKE sende meldinger i dette rommet"
],
"Invite...": [
null,
"Invitér..."
],
"Occupants": [
null,
"Brukere her:"
],
"You are about to invite %1$s to the chat room \"%2$s\". ": [
null,
"Du er i ferd med å invitere %1$s til samtalerommet \"%2$s\". "
],
"You may optionally include a message, explaining the reason for the invitation.": [
null,
"Du kan eventuelt inkludere en melding og forklare årsaken til invitasjonen."
],
"Message": [
null,
"Melding"
],
"Error: could not execute the command": [
null,
"Feil: kunne ikke utføre kommandoen"
],
"Ban user from room": [
null,
"Utesteng bruker fra rommet"
],
"Kick user from room": [
null,
"Kast ut bruker fra rommet"
],
"Write in 3rd person": [
null,
"Skriv i tredjeperson"
],
"Remove user's ability to post messages": [
null,
"Fjern brukerens muligheter til å skrive meldinger"
],
"Change your nickname": [
null,
"Endre ditt kallenavn"
],
"Set room topic": [
null,
"Endre rommets emne"
],
"Allow muted user to post messages": [
null,
"Tillat stumme brukere å skrive meldinger"
],
"Save": [
null,
"Lagre"
],
"Cancel": [
null,
"Avbryt"
],
"An error occurred while trying to save the form.": [
null,
"En feil skjedde under lagring av skjemaet."
],
"This chatroom requires a password": [
null,
"Dette rommet krever et passord"
],
"Password: ": [
null,
"Passord:"
],
"Submit": [
null,
"Send"
],
"This room is not anonymous": [
null,
"Dette rommet er ikke anonymt"
],
"This room now shows unavailable members": [
null,
"Dette rommet viser nå utilgjengelige medlemmer"
],
"This room does not show unavailable members": [
null,
"Dette rommet viser ikke utilgjengelige medlemmer"
],
"Non-privacy-related room configuration has changed": [
null,
"Ikke-personvernsrelatert romkonfigurasjon har blitt endret"
],
"Room logging is now enabled": [
null,
"Romlogging er nå aktivert"
],
"Room logging is now disabled": [
null,
"Romlogging er nå deaktivert"
],
"This room is now non-anonymous": [
null,
"Dette rommet er nå ikke-anonymt"
],
"This room is now semi-anonymous": [
null,
"Dette rommet er nå semi-anonymt"
],
"This room is now fully-anonymous": [
null,
"Dette rommet er nå totalt anonymt"
],
"A new room has been created": [
null,
"Et nytt rom har blitt opprettet"
],
"You have been banned from this room": [
null,
"Du har blitt utestengt fra dette rommet"
],
"You have been kicked from this room": [
null,
"Du ble kastet ut av dette rommet"
],
"You have been removed from this room because of an affiliation change": [
null,
"Du har blitt fjernet fra dette rommet på grunn av en holdningsendring"
],
"You have been removed from this room because the room has changed to members-only and you're not a member": [
null,
"Du har blitt fjernet fra dette rommet fordi rommet nå kun tillater medlemmer, noe du ikke er."
],
"You have been removed from this room because the MUC (Multi-user chat) service is being shut down.": [
null,
"Du har blitt fjernet fra dette rommet fordi MBC (Multi-Bruker-Chat)-tjenesten er stengt ned."
],
"<strong>%1$s</strong> has been banned": [
null,
"<strong>%1$s</strong> har blitt utestengt"
],
"<strong>%1$s</strong>'s nickname has changed": [
null,
"<strong>%1$s</strong> sitt kallenavn er endret"
],
"<strong>%1$s</strong> has been kicked out": [
null,
"<strong>%1$s</strong> ble kastet ut"
],
"<strong>%1$s</strong> has been removed because of an affiliation change": [
null,
"<strong>%1$s</strong> har blitt fjernet på grunn av en holdningsendring"
],
"<strong>%1$s</strong> has been removed for not being a member": [
null,
"<strong>%1$s</strong> har blitt fjernet på grunn av at han/hun ikke er medlem"
],
"Your nickname has been automatically changed to: <strong>%1$s</strong>": [
null,
"Ditt kallenavn har blitt automatisk endret til <strong>%1$s</strong> "
],
"Your nickname has been changed to: <strong>%1$s</strong>": [
null,
"Ditt kallenavn har blitt endret til <strong>%1$s</strong> "
],
"The reason given is: \"": [
null,
"Årsaken som er oppgitt er: \""
],
"You are not on the member list of this room": [
null,
"Du er ikke på medlemslisten til dette rommet"
],
"No nickname was specified": [
null,
"Ingen kallenavn var spesifisert"
],
"You are not allowed to create new rooms": [
null,
"Du har ikke tillatelse til å opprette nye rom"
],
"Your nickname doesn't conform to this room's policies": [
null,
"Ditt kallenavn er ikke i samsvar med rommets regler"
],
"Your nickname is already taken": [
null,
"Kallenavnet er allerede tatt"
],
"This room does not (yet) exist": [
null,
"Dette rommet eksisterer ikke (enda)"
],
"This room has reached it's maximum number of occupants": [
null,
"Dette rommet har nådd maksimalt antall brukere"
],
"Topic set by %1$s to: %2$s": [
null,
"Emnet ble endret den %1$s til: %2$s"
],
"%1$s has invited you to join a chat room: %2$s": [
null,
"%1$s har invitert deg til å bli med i chatterommet: %2$s"
],
"%1$s has invited you to join a chat room: %2$s, and left the following reason: \"%3$s\"": [
null,
"%1$s har invitert deg til å bli med i chatterommet: %2$s, og forlot selv av følgende grunn: \"%3$s\""
],
"Click to restore this chat": [
null,
"Klikk for å gjenopprette denne samtalen"
],
"Minimized": [
null,
"Minimert"
],
"Click to remove this contact": [
null,
"Klikk for å fjerne denne kontakten"
],
"Click to accept this contact request": [
null,
"Klikk for å Godta denne kontaktforespørselen"
],
"Click to decline this contact request": [
null,
"Klikk for å avslå denne kontaktforespørselen"
],
"Click to chat with this contact": [
null,
"Klikk for å chatte med denne kontakten"
],
"Are you sure you want to remove this contact?": [
null,
"Er du sikker på at du vil fjerne denne kontakten?"
],
"Are you sure you want to decline this contact request?": [
null,
"Er du sikker på at du vil avslå denne kontaktforespørselen?"
],
"Type to filter": [
null,
"Skriv til filter"
],
"I am %1$s": [
null,
"Jeg er %1$s"
],
"Click here to write a custom status message": [
null,
"Klikk her for å skrive en personlig statusmelding"
],
"Click to change your chat status": [
null,
"Klikk for å endre din meldingsstatus"
],
"Custom status": [
null,
"Personlig status"
],
"online": [
null,
"pålogget"
],
"busy": [
null,
"opptatt"
],
"away for long": [
null,
"borte lenge"
],
"away": [
null,
"borte"
],
"Your XMPP provider's domain name:": [
null,
"Din XMPP-tilbyders domenenavn:"
],
"Fetch registration form": [
null,
"Hent registreringsskjema"
],
"Tip: A list of public XMPP providers is available": [
null,
"Tips: En liste med offentlige XMPP-tilbydere er tilgjengelig"
],
"here": [
null,
"her"
],
"Register": [
null,
"Registrér deg"
],
"Sorry, the given provider does not support in band account registration. Please try with a different provider.": [
null,
"Beklager, den valgte tilbyderen støtter ikke in band kontoregistrering. Vennligst prøv igjen med en annen tilbyder. "
],
"Requesting a registration form from the XMPP server": [
null,
"Spør etter registreringsskjema fra XMPP-tjeneren"
],
"Something went wrong while establishing a connection with \"%1$s\". Are you sure it exists?": [
null,
"Noe gikk galt under etablering av forbindelse med \"%1$s\". Er du sikker på at denne eksisterer?"
],
"Now logging you in": [
null,
"Logger deg inn"
],
"Registered successfully": [
null,
"Registrering var vellykket"
],
"Return": [
null,
"Tilbake"
],
"The provider rejected your registration attempt. ": [
null,
"Tilbyderen avviste ditt registreringsforsøk."
],
"XMPP Username:": [
null,
"XMPP Brukernavn:"
],
"Password:": [
null,
"Passord:"
],
"Log In": [
null,
"Logg inn"
],
"Sign in": [
null,
"Innlogging"
],
"Toggle chat": [
null,
"Endre chatten"
]
}
}
};
if (typeof define === 'function' && define.amd) {
define("nb", ['jed'], function () {
return factory(new Jed(translations));
});
} else {
if (!window.locales) {
window.locales = {};
}
window.locales.nb = factory(new Jed(translations));
}
}(this, function (nb) {
return nb;
}));

View File

@ -68,6 +68,7 @@ require.config({
"id": "locale/id/LC_MESSAGES/id", "id": "locale/id/LC_MESSAGES/id",
"it": "locale/it/LC_MESSAGES/it", "it": "locale/it/LC_MESSAGES/it",
"ja": "locale/ja/LC_MESSAGES/ja", "ja": "locale/ja/LC_MESSAGES/ja",
"nb": "locale/nb/LC_MESSAGES/nb",
"nl": "locale/nl/LC_MESSAGES/nl", "nl": "locale/nl/LC_MESSAGES/nl",
"pt_BR": "locale/pt_BR/LC_MESSAGES/pt_BR", "pt_BR": "locale/pt_BR/LC_MESSAGES/pt_BR",
"ru": "locale/ru/LC_MESSAGES/ru", "ru": "locale/ru/LC_MESSAGES/ru",

View File

@ -30,17 +30,33 @@
<div class="dragresize dragresize-tm"></div> <div class="dragresize dragresize-tm"></div>
<div class="chat-head controlbox-head"> <div class="chat-head controlbox-head">
<ul id="controlbox-tabs"> <ul id="controlbox-tabs">
<li><a class="current" href="#login">Sign in</a></li> <li><a class="current" href="#login-dialog">Sign in</a></li>
<li><a class="s" href="#register">Register</a></li>
</ul> </ul>
<a class="close-chatbox-button icon-close"></a> <a class="close-chatbox-button icon-close"></a>
</div> </div>
<div id="login-dialog"> <div class="controlbox-panes">
<form id="converse-login"> <div id="login-dialog" class="controlbox-pane"><form id="converse-login" method="post">
<label>XMPP/Jabber Username:</label><input type="text" id="jid"> <label>XMPP Username:</label>
<label>Password:</label><input type="password" id="password"> <input type="username" name="jid" placeholder="user@server">
<input class="login-submit" type="submit" value="Log In"> <label>Password:</label>
<input type="password" name="password" placeholder="password">
<input class="submit" type="submit" value="Log In">
<span class="conn-feedback"></span>
</form> </form>
<span class="conn-feedback"></span> </div>
<div id="register" class="controlbox-pane" style="display: none;">
<form id="converse-register">
<span class="reg-feedback"></span>
<label>Your XMPP provider's domain name:</label>
<input type="text" name="domain" placeholder=" e.g. conversejs.org">
<p class="form-help">
Tip: A list of public XMPP providers is available
<a href="https://xmpp.net/directory.php" class="url" target="_blank">here</a>.
</p>
<input class="submit" type="submit" value="Fetch registration form">
</form>
</div>
</div> </div>
</div> </div>
</div> </div>
@ -115,11 +131,13 @@
</dd> </dd>
</dl> </dl>
<div id="converse-roster"> <div id="converse-roster">
<input class="roster-filter" placeholder="Type to filter"> <span class="roster-filter-group">
<select class="filter-type"> <input class="roster-filter" placeholder="Type to filter">
<option value="contacts">Contacts</option> <select class="filter-type">
<option value="groups">Groups</option> <option value="contacts">Contacts</option>
</select> <option value="groups">Groups</option>
</select>
</span>
<dl class="roster-contacts" style="display: block;"> <dl class="roster-contacts" style="display: block;">
<dt class="roster-group" style="display: block;"> <dt class="roster-group" style="display: block;">
<a href="#" data-group="Colleagues" class="group-toggle icon-opened" title="Click to hide these contacts">Colleagues</a> <a href="#" data-group="Colleagues" class="group-toggle icon-opened" title="Click to hide these contacts">Colleagues</a>
@ -222,38 +240,38 @@
</dd> </dd>
</dl> </dl>
</div> </div>
<div id="chatrooms" style="display: none;"> </div>
<form class="add-chatroom" action="" method="post"> <div id="chatrooms" class="controlbox-pane" style="display: none;">
<input type="text" name="chatroom" class="new-chatroom-name" placeholder="Room name"> <form class="add-chatroom" action="" method="post">
<input type="text" name="nick" class="new-chatroom-nick" placeholder="Nickname"> <input type="text" name="chatroom" class="new-chatroom-name" placeholder="Room name">
<input type="text" name="server" class="new-chatroom-server" placeholder="Server"> <input type="text" name="nick" class="new-chatroom-nick" placeholder="Nickname">
<input type="submit" name="join" value="Join"> <input type="text" name="server" class="new-chatroom-server" placeholder="Server">
<input type="button" name="show" id="show-rooms" value="Show rooms" style="display: inline-block;"> <input type="submit" name="join" value="Join">
</form> <input type="button" name="show" id="show-rooms" value="Show rooms" style="display: inline-block;">
<dl id="available-chatrooms"> </form>
<dt>Rooms on conference.opkode.im</dt> <dl id="available-chatrooms">
<dd class="available-chatroom"> <dt>Rooms on conference.opkode.im</dt>
<a class="open-room" <dd class="available-chatroom">
data-room-jid="converse.js@conference.opkode.im" <a class="open-room"
title="Click to open this room" href="#">Special chatroom with a long name (2)</a> data-room-jid="converse.js@conference.opkode.im"
<a class="room-info icon-room-info" title="Click to open this room" href="#">Special chatroom with a long name (2)</a>
data-room-jid="converse.js@conference.opkode.im" <a class="room-info icon-room-info"
title="Show more information on this room" href="#">&nbsp;</a> data-room-jid="converse.js@conference.opkode.im"
<div class="room-info"> title="Show more information on this room" href="#">&nbsp;</a>
<p class="room-info"><strong>Description:</strong></p> <div class="room-info">
<p class="room-info"><strong>Occupants:</strong> 2</p> <p class="room-info"><strong>Description:</strong></p>
<p class="room-info"><strong>Features:</strong> </p> <p class="room-info"><strong>Occupants:</strong> 2</p>
<ul> <p class="room-info"><strong>Features:</strong> </p>
<li class="room-info">Moderated</li><li class="room-info">Open room</li> <ul>
<li class="room-info">Permanent room</li><li class="room-info">Public</li> <li class="room-info">Moderated</li><li class="room-info">Open room</li>
<li class="room-info">Semi-anonymous</li> <li class="room-info">Permanent room</li><li class="room-info">Public</li>
<li class="room-info">Requires authentication <span class="icon-lock"></span></li> <li class="room-info">Semi-anonymous</li>
<p></p> <li class="room-info">Requires authentication <span class="icon-lock"></span></li>
</ul> <p></p>
</div> </ul>
</dd> </div>
</dl> </dd>
</div> </dl>
</div> </div>
</div> </div>
</div> </div>
@ -301,6 +319,7 @@
<span class="chat-message-content">Another message to check that scrolling works.</span> <span class="chat-message-content">Another message to check that scrolling works.</span>
</div> </div>
</div> </div>
<form class="sendXMPPMessage" action="" method="post"> <form class="sendXMPPMessage" action="" method="post">
<ul class="chat-toolbar no-text-select"> <ul class="chat-toolbar no-text-select">
<li class="toggle-smiley icon-happy" title="Insert a smilery"> <li class="toggle-smiley icon-happy" title="Insert a smilery">
@ -321,13 +340,11 @@
</ul> </ul>
</li> </li>
<li class="toggle-clear"><a class="icon-remove" title="Clear all messages"></a></li> <li class="toggle-clear"><a class="icon-remove" title="Clear all messages"></a></li>
<li class="toggle-otr unencrypted" title="Turn on 'off-the-record' chat encryption"> <li class="toggle-otr unencrypted" title="Your messages are not encrypted. Click here to enable OTR encryption.">
<span class="chat-toolbar-text">unencrypted</span> <span class="chat-toolbar-text">unencrypted</span>
<span class="icon-unlocked"></span> <span class="icon-unlocked"></span>
<ul> <ul>
<li><a href="#">Start private conversation</a></li> <li><a class="start-otr" href="#">Start encrypted conversation</a></li>
<li><a href="#">End private conversation</a></li>
<li><a href="#">Authenticate buddy</a></li>
<li><a href="http://www.cypherpunks.ca/otr/help/3.2.0/levels.php" target="_blank">What's this?</a></li> <li><a href="http://www.cypherpunks.ca/otr/help/3.2.0/levels.php" target="_blank">What's this?</a></li>
</ul> </ul>
</li> </li>
@ -352,7 +369,6 @@
<div class="chat-body"> <div class="chat-body">
<div class="chat-area"> <div class="chat-area">
<div class="chat-content"> <div class="chat-content">
<time class="chat-date" datetime="2013-06-04T00:00:00.000Z">Tue Jun 04 2013</time>
<div class="chat-message "> <div class="chat-message ">
<span class="chat-message-room">18:50 luke:&nbsp;</span> <span class="chat-message-room">18:50 luke:&nbsp;</span>
<span class="chat-message-content">leia: hi :)</span> <span class="chat-message-content">leia: hi :)</span>
@ -362,6 +378,7 @@
<span class="chat-message-content"> <span class="chat-message-content">
I'll be gone for a while, will be back in about an hour</span> I'll be gone for a while, will be back in about an hour</span>
</div> </div>
<time class="chat-date" datetime="2013-06-04T00:00:00.000Z">Tue Jun 04 2013</time>
<div class="chat-message "> <div class="chat-message ">
<span class="chat-message-room">19:40 Obi-wan Kenobi, Jedi Master:&nbsp;</span> <span class="chat-message-room">19:40 Obi-wan Kenobi, Jedi Master:&nbsp;</span>
<span class="chat-message-content"> <span class="chat-message-content">
@ -434,7 +451,8 @@
<form class="chatroom-form"> <form class="chatroom-form">
<!-- TODO: Make this a long form that scrolls --> <!-- TODO: Make this a long form that scrolls -->
<legend>This chatroom requires a password</legend> <legend>This chatroom requires a password</legend>
<label>Password: <input type="password" name="password"></label> <label>Password:</label>
<input type="password" name="password">
</form> </form>
</div> </div>
</div> </div>
@ -522,6 +540,9 @@ $(document).ready(function () {
$('a[href=#users]').click(function (ev) { $('a[href=#users]').click(function (ev) {
switchTab(ev); switchTab(ev);
}); });
$('a[href=#register]').click(function (ev) {
switchTab(ev);
});
$("a.choose-xmpp-status").click(function (ev) { $("a.choose-xmpp-status").click(function (ev) {
ev.preventDefault(); ev.preventDefault();
@ -532,8 +553,7 @@ $(document).ready(function () {
ev.preventDefault(); ev.preventDefault();
var form = ''+ var form = ''+
'<form id="set-custom-xmpp-status">' + '<form id="set-custom-xmpp-status">' +
'<input type="text" class="custom-xmpp-status"I am online"'+ '<input type="text" class="custom-xmpp-status" placeholder="Custom status"/>' +
'placeholder="I am online"/>' +
'<button type="submit">Save</button>' + '<button type="submit">Save</button>' +
'</form>'; '</form>';

View File

@ -21,7 +21,7 @@
<div id="conversejs"> <div id="conversejs">
<a id="toggle-controlbox" href="#" class="toggle-controlbox"> <a id="toggle-controlbox" href="#" class="toggle-controlbox">
<span class="conn-feedback">Friends Online</span> <span class="conn-feedback">Toggle Chat</span>
<span id="online-count">(0)</span> <span id="online-count">(0)</span>
</a> </a>
@ -53,7 +53,7 @@
<div class="minimized-chats-flyout"> <div class="minimized-chats-flyout">
<div class="chat-head chat-head-chatroom"> <div class="chat-head chat-head-chatroom">
<a class="close-chatbox-button icon-close"></a> <a class="close-chatbox-button icon-close"></a>
<a class="chat-head-message-count" href="#" style="display:block">3</a> <a class="chat-head-message-count" href="#">3</a>
<div class="chat-title"> <div class="chat-title">
<a href="#" class="restore-chat" title="Click to maximize this chat"> <a href="#" class="restore-chat" title="Click to maximize this chat">
Restricted Chatroom Restricted Chatroom
@ -62,7 +62,7 @@
</div> </div>
<div class="chat-head chat-head-chatbox"> <div class="chat-head chat-head-chatbox">
<a class="close-chatbox-button icon-close"></a> <a class="close-chatbox-button icon-close"></a>
<a class="chat-head-message-count" href="#" style="display:block">42</a> <a class="chat-head-message-count" href="#">42</a>
<div class="chat-title"> <div class="chat-title">
<a href="#" class="restore-chat" title="Click to maximize this chat"> <a href="#" class="restore-chat" title="Click to maximize this chat">
JC Brand JC Brand
@ -86,7 +86,7 @@
</div> </div>
<div class="chat-head chat-head-chatbox"> <div class="chat-head chat-head-chatbox">
<a class="close-chatbox-button icon-close"></a> <a class="close-chatbox-button icon-close"></a>
<a class="chat-head-message-count" href="#" style="display:block">842</a> <a class="chat-head-message-count" href="#">842</a>
<div class="chat-title"> <div class="chat-title">
<a href="#" class="restore-chat" title="Click to maximize this chat"> <a href="#" class="restore-chat" title="Click to maximize this chat">
Asmaa Haakman Asmaa Haakman

1490
sass/converse.scss Normal file

File diff suppressed because it is too large Load Diff

39
sass/variables.scss Normal file
View File

@ -0,0 +1,39 @@
$link-color: #436F64;
$inverse-link-color: white;
$link-shadow-color: #FAFAFA;
$text-shadow-color: #FAFAFA;
$text-color: #6C4C44;
$border-color: #CCC;
$warning-color: #681F2C;
$light-background-border-color: #F1DCD6;
$light-background-color: #F1E2DD;
$icon-color: #114327;
$highlight-color: #E3C9C1;
$chat-head-color: #436F64;
$chatroom-head-color: #0F592F;
$chat-head-text-color: white;
$chat-head-inverse-text-color: white;
$chat-head-height: 44px;
$save-button-color: #436F64;
$chat-textarea-height: 64px;
$toolbar-height: 20px;
$message-them-color: #4B7003;
$roster-height: 194px;
$controlbox-dropdown-height: 25px;
$bottom-gutter-height: 35px;
$mobile_landscape_length: 480px;
$font-size: 14px;
$legend-font-size: 16px;
$chatroom-width: 300px;
$chat-width: 200px;
$chat-height: 400px;
$chat-gutter: 7px;
$mobile-chat-width: 100%;
$mobile-chat-height: 400px;

View File

@ -1,7 +1,8 @@
<div class="chatroom-form-container"> <div class="chatroom-form-container">
<form class="chatroom-form"> <form class="chatroom-form">
<legend>{{heading}}</legend> <legend>{{heading}}</legend>
<label>{{label_password}}<input type="password" name="password"/></label> <label>{{label_password}}</label>
<input type="password" name="password"/>
<input type="submit" value="{{label_submit}}"/> <input type="submit" value="{{label_submit}}"/>
</form> </form>
</div> </div>

View File

@ -1,8 +1,11 @@
<form class="add-chatroom" action="" method="post"> <form class="add-chatroom" action="" method="post">
<label>{{label_room_name}}</label>
<input type="text" name="chatroom" class="new-chatroom-name" <input type="text" name="chatroom" class="new-chatroom-name"
placeholder="{{label_room_name}}"/> placeholder="{{label_room_name}}"/>
<label>{{label_nickname}}</label>
<input type="text" name="nick" class="new-chatroom-nick" <input type="text" name="nick" class="new-chatroom-nick"
placeholder="{{label_nickname}}"/> placeholder="{{label_nickname}}"/>
<label>{{label_server}}</label>
<input type="{{server_input_type}}" name="server" class="new-chatroom-server" <input type="{{server_input_type}}" name="server" class="new-chatroom-server"
placeholder="{{label_server}}"/> placeholder="{{label_server}}"/>
<input type="submit" name="join" value="{{label_join}}"/> <input type="submit" name="join" value="{{label_join}}"/>

View File

@ -1,5 +1,7 @@
<input style="display: none;" class="roster-filter" placeholder="{{placeholder}}"> <span class="roster-filter-group">
<select style="display: none;" class="filter-type"> <input style="display: none;" class="roster-filter" placeholder="{{placeholder}}">
<option value="contacts">{{label_contacts}}</option> <select style="display: none;" class="filter-type">
<option value="groups">{{label_groups}}</option> <option value="contacts">{{label_contacts}}</option>
</select> <option value="groups">{{label_groups}}</option>
</select>
</span>