diff --git a/.gitignore b/.gitignore index a2b7cbb6eb99cb954e3e28c186e73df5766468fe..ea96347f86c49e27059d45bf3d4ec22e47a00a33 100644 --- a/.gitignore +++ b/.gitignore @@ -22,7 +22,7 @@ spec/fixtures/*.y*ml spec/fixtures/*.fixture.* coverage/* -# Uploded files and local files +# Uploaded files and local files public/uploads/* public/assets/* public/source.tar* diff --git a/Gemfile b/Gemfile index 63586de4290747c6f5f141b0dd3ff0d665ba2f68..a92a25eca5620b09ae885b8db3e2b6affa060720 100644 --- a/Gemfile +++ b/Gemfile @@ -6,6 +6,7 @@ gem 'foreigner', '0.9.1' gem 'bundler', '>= 1.0.0' gem 'chef', '0.9.12', :require => false +gem 'ohai', '0.5.8', :require => false #Chef dependency gem 'nokogiri', '1.4.3.1' @@ -33,7 +34,7 @@ gem 'addressable', '2.2.2', :require => 'addressable/uri' gem 'json', '1.4.6' gem 'http_accept_language', :git => 'git://github.com/iain/http_accept_language.git', :ref => '0b78aa7849fc90cf9e12' -gem 'thin', '1.2.8', :require => false +gem 'thin', '1.2.11', :require => false #Websocket gem 'em-websocket', :git => 'git://github.com/igrigorik/em-websocket', :ref => 'e278f5a1c4db60be7485' @@ -60,6 +61,7 @@ gem 'SystemTimer', '1.2.1' unless RUBY_VERSION.include? '1.9' || RUBY_PLATFORM = group :development do gem 'capistrano', '2.5.19', :require => false gem 'capistrano-ext', '1.2.1', :require => false + gem 'sod', :git => "git://github.com/MikeSofaer/sod.git" end group :test, :development do diff --git a/Gemfile.lock b/Gemfile.lock index adf9621aae9a68dc679a84d94624e7de3da56046..be193e65b19aaaca8c33f22e7fc3201fcfc0e8ec 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -7,6 +7,13 @@ GIT activesupport (>= 2.3.0) nokogiri (>= 1.3.3) +GIT + remote: git://github.com/MikeSofaer/sod.git + revision: 08e990601bfa6ffd3224a2e4c792df9eae712693 + specs: + sod (0.0.1) + net-scp + GIT remote: git://github.com/diaspora/acts-as-taggable-on.git revision: c3592fe1a906f6ff1cd12766c5cf1152c51eec40 @@ -65,6 +72,10 @@ PATH GEM remote: http://rubygems.org/ specs: + POpen4 (0.1.4) + Platform (>= 0.4.0) + open4 + Platform (0.4.0) SystemTimer (1.2.1) abstract (1.0.0) actionmailer (3.0.3) @@ -138,7 +149,7 @@ GEM uuidtools childprocess (0.1.7) ffi (~> 0.6.3) - closure-compiler (1.0.0) + closure-compiler (1.1.1) cloudfiles (1.4.10) mime-types (>= 1.16) columnize (0.3.2) @@ -153,7 +164,7 @@ GEM cucumber-rails (0.3.2) cucumber (>= 0.8.0) culerity (0.2.15) - daemons (1.1.0) + daemons (1.1.2) database_cleaner (0.6.0) devise (1.1.3) bcrypt-ruby (~> 2.1.2) @@ -189,13 +200,13 @@ GEM nokogiri (~> 1.4.3.1) ruby-hmac foreigner (0.9.1) - formatador (0.1.2) + formatador (0.1.3) fuubar (0.0.4) chalofa_ruby-progressbar (~> 0.0.9) rspec (~> 2.0) rspec-instafail (~> 0.1.4) gem_plugin (0.2.3) - gherkin (2.3.5) + gherkin (2.3.6) json (>= 1.4.6) haml (3.0.25) hashie (0.4.0) @@ -229,7 +240,7 @@ GEM mixlib-log mixlib-cli (1.2.0) mixlib-config (1.1.2) - mixlib-log (1.2.0) + mixlib-log (1.3.0) moneta (0.6.0) mongrel (1.1.5) cgi_multipart_eof_fix (>= 2.4) @@ -289,10 +300,11 @@ GEM oa-enterprise (= 0.1.6) oa-oauth (= 0.1.6) oa-openid (= 0.1.6) + open4 (1.0.1) polyglot (0.3.1) pyu-ruby-sasl (0.0.3.2) rack (1.2.2) - rack-mount (0.6.13) + rack-mount (0.6.14) rack (>= 1.0.0) rack-openid (1.2.0) rack (>= 1.1.0) @@ -314,7 +326,7 @@ GEM thor (~> 0.14.4) rake (0.8.7) rcov (0.9.9) - redis (2.1.1) + redis (2.2.0) redis-namespace (0.8.0) redis (< 3.0.0) resque (1.10.0) @@ -358,13 +370,13 @@ GEM json_pure rubyzip simple_oauth (0.1.4) - sinatra (1.2.1) + sinatra (1.2.3) rack (~> 1.1) tilt (< 2.0, >= 1.2.2) subexec (0.0.4) - systemu (1.2.0) + systemu (2.2.0) term-ansicolor (1.0.5) - thin (1.2.8) + thin (1.2.11) daemons (>= 1.0.9) eventmachine (>= 0.12.6) rack (>= 1.0.0) @@ -375,7 +387,7 @@ GEM typhoeus (0.2.4) mime-types mime-types - tzinfo (0.3.25) + tzinfo (0.3.26) uuidtools (2.1.2) vegas (0.1.8) rack (>= 1.0.0) @@ -385,8 +397,9 @@ GEM addressable (>= 2.2.2) crack (>= 0.1.7) will_paginate (3.0.pre2) - xml-simple (1.0.14) - yui-compressor (0.9.4) + xml-simple (1.0.15) + yui-compressor (0.9.6) + POpen4 (>= 0.1.4) PLATFORMS ruby @@ -426,6 +439,7 @@ DEPENDENCIES mongrel mysql2 (= 0.2.6) nokogiri (= 1.4.3.1) + ohai (= 0.5.8) omniauth (= 0.1.6) rails (= 3.0.3) rcov @@ -437,7 +451,8 @@ DEPENDENCIES rspec-rails (>= 2.0.0) ruby-debug selenium-webdriver (= 0.1.3) - thin (= 1.2.8) + sod! + thin (= 1.2.11) twitter! typhoeus webmock diff --git a/Sodfile b/Sodfile new file mode 100644 index 0000000000000000000000000000000000000000..e9f2a4a77c7515f4cd537d0d52f5d5c33d75d08b --- /dev/null +++ b/Sodfile @@ -0,0 +1,6 @@ +production: + user: root + repo: git@github.com:diaspora/diaspora.git + app_dir: /usr/local/app + cookbook: centos + ruby_version: ree-1.8.7-2011.03 diff --git a/app/controllers/apis_controller.rb b/app/controllers/apis_controller.rb index 1a24696c5830209aee794d4874d00f7a83921a95..4bad3f2328bb3a94cf6f15c7f8370d411abccff7 100644 --- a/app/controllers/apis_controller.rb +++ b/app/controllers/apis_controller.rb @@ -1,7 +1,7 @@ class ApisController < ApplicationController #We should start with this versioned, V0ApisController BEES before_filter :authenticate_user!, :only => [:home_timeline] respond_to :json - + #posts def public_timeline set_defaults @@ -30,9 +30,9 @@ class ApisController < ApplicationController #We should start with this versione def home_timeline set_defaults - timeline = current_user.raw_visible_posts.includes(:comments, :photos, :likes, :dislikes).paginate( - :page => params[:page], :per_page => params[:per_page], :order => "#{params[:order]} DESC") - + timeline = current_user.visible_posts(:max_time => params[:max_time], + :limit => params[:per_page], + :order => "#{params[:order]} DESC").includes(:comments, :photos, :likes, :dislikes) respond_with timeline do |format| format.json{ render :json => timeline.to_json(:format => :twitter) } end @@ -45,7 +45,7 @@ class ApisController < ApplicationController #We should start with this versione format.json{ render :json => status.to_json(:format => :twitter) } end else - render(:nothing => true, :status => 404) + render(:nothing => true, :status => 404) end end @@ -62,7 +62,7 @@ class ApisController < ApplicationController #We should start with this versione format.json{ render :json => person.to_json(:format => :twitter) } end else - render(:nothing => true, :status => 404) + render(:nothing => true, :status => 404) end end @@ -78,7 +78,7 @@ class ApisController < ApplicationController #We should start with this versione format.json{ render :json => people.to_json(:format => :twitter) } end else - render(:nothing => true, :status => 404) + render(:nothing => true, :status => 404) end end diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index 5bbf8cad337704e39ebfe7b52868a6591112d583..752fc559171a090d292badac47baf9f6caa4938d 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -3,6 +3,8 @@ # the COPYRIGHT file. class ApplicationController < ActionController::Base + clear_helpers + helper :layout, :error_messages has_mobile_fu protect_from_forgery :except => :receive diff --git a/app/controllers/aspect_memberships_controller.rb b/app/controllers/aspect_memberships_controller.rb index 72631232b2ab01ff1c3434193b5191964ab1e012..c4b1aad88be436f567c5f018b60992b86661b096 100644 --- a/app/controllers/aspect_memberships_controller.rb +++ b/app/controllers/aspect_memberships_controller.rb @@ -4,6 +4,7 @@ # class AspectMembershipsController < ApplicationController + helper :aspects before_filter :authenticate_user! def destroy diff --git a/app/controllers/aspects_controller.rb b/app/controllers/aspects_controller.rb index 79b62d992fdeefd7ae79fb34be1a135d184b012f..ec5bdbccd94240be26b8a7347e37234cea3b00f5 100644 --- a/app/controllers/aspects_controller.rb +++ b/app/controllers/aspects_controller.rb @@ -3,6 +3,7 @@ # the COPYRIGHT file. class AspectsController < ApplicationController + helper :comments before_filter :authenticate_user! before_filter :save_sort_order, :only => :index before_filter :ensure_page, :only => :index @@ -30,10 +31,10 @@ class AspectsController < ApplicationController @selected_contacts = @aspects.map { |aspect| aspect.contacts }.flatten.uniq unless params[:only_posts] @aspect_ids = @aspects.map { |a| a.id } - posts = current_user.raw_visible_posts(:by_members_of => @aspect_ids, + posts = current_user.visible_posts(:by_members_of => @aspect_ids, :type => 'StatusMessage', :order => session[:sort_order] + ' DESC', - :page => params[:page] + :max_time => params[:max_time].to_i ).includes(:comments, :mentions, :likes, :dislikes) @posts = PostsFake.new(posts) @@ -150,6 +151,10 @@ class AspectsController < ApplicationController @aspect.save end + def ensure_page + params[:max_time] ||= Time.now + 1 + end + protected def save_sort_order diff --git a/app/controllers/contacts_controller.rb b/app/controllers/contacts_controller.rb index 8609237594dffa6a684088e0f34027b7915e68bd..d7ab53155a8ed381c83065072b69994511941b87 100644 --- a/app/controllers/contacts_controller.rb +++ b/app/controllers/contacts_controller.rb @@ -3,6 +3,7 @@ # the COPYRIGHT file. class ContactsController < ApplicationController + helper :aspects before_filter :authenticate_user! def new diff --git a/app/controllers/conversations_controller.rb b/app/controllers/conversations_controller.rb index b19efa588a0464c16ad01c76413a4a3723ae4f23..24c1fca3a8d13fbb4807b0978a815b60609470ac 100644 --- a/app/controllers/conversations_controller.rb +++ b/app/controllers/conversations_controller.rb @@ -56,10 +56,12 @@ class ConversationsController < ApplicationController end def new - @all_contacts_and_ids = Contact.connection.execute(current_user.contacts.joins(:person => :profile).select("contacts.id, profiles.first_name, profiles.last_name, profiles.diaspora_handle").to_sql).map do |r| - {:value => r[0], :name => Person.name_from_attrs(r[1], r[2], r[3])} + all_contacts_and_ids = Contact.connection.execute(current_user.contacts.joins(:person => :profile + ).select("contacts.id, profiles.first_name, profiles.last_name, people.diaspora_handle").to_sql).map do |r| + {:value => r[0], + :name => Person.name_from_attrs(r[1], r[2], r[3]).gsub(/(")/, "'")} end - + @contacts_json = all_contacts_and_ids.to_json.gsub!(/(")/, '\\"') @contact = current_user.contacts.find(params[:contact_id]) if params[:contact_id] render :layout => false end diff --git a/app/controllers/notifications_controller.rb b/app/controllers/notifications_controller.rb index 1d6963d2603b68ae4910a0adf718913b35960bc6..84c30ab0613ef8ddf6a8810896b3f7af3df092db 100644 --- a/app/controllers/notifications_controller.rb +++ b/app/controllers/notifications_controller.rb @@ -19,7 +19,7 @@ class NotificationsController < ApplicationController def index @notifications = Notification.find(:all, :conditions => {:recipient_id => current_user.id}, - :order => 'created_at desc', :include => [:target, {:actors => :profile}]).paginate :page => params[:page], :per_page => 25 + :order => 'updated_at desc', :include => [:target, {:actors => :profile}]).paginate :page => params[:page], :per_page => 25 @group_days = @notifications.group_by{|note| I18n.l(note.updated_at, :format => I18n.t('date.formats.fullmonth_day')) } respond_with @notifications end diff --git a/app/controllers/people_controller.rb b/app/controllers/people_controller.rb index a90d8296276a2b35bc43b49fb3512c6e1c420b37..d0b530aae9d557d095e43209310e95bd2e30c6c6 100644 --- a/app/controllers/people_controller.rb +++ b/app/controllers/people_controller.rb @@ -3,8 +3,8 @@ # the COPYRIGHT file. class PeopleController < ApplicationController + helper :comments before_filter :authenticate_user!, :except => [:show] - before_filter :ensure_page, :only => :show respond_to :html respond_to :json, :only => [:index, :show] @@ -63,6 +63,7 @@ class PeopleController < ApplicationController @aspect = :profile @share_with = (params[:share_with] == 'true') + max_time = params[:max_time] ? Time.at(params[:max_time].to_i) : Time.now if @person @profile = @person.profile @@ -72,10 +73,12 @@ class PeopleController < ApplicationController if @contact && !params[:only_posts] @aspects_with_person = @contact.aspects @aspect_ids = @aspects_with_person.map(&:id) - @contacts_of_contact = @contact.contacts + @contacts_of_contact_count = @contact.contacts.count + @contacts_of_contact = @contact.contacts.limit(36) else @contact ||= Contact.new + @contacts_of_contact_count = 0 @contacts_of_contact = [] end @@ -84,13 +87,14 @@ class PeopleController < ApplicationController else @commenting_disabled = false end - @posts = current_user.posts_from(@person).where(:type => "StatusMessage").includes(:comments).limit(15).offset(15*(params[:page]-1)) + @posts = current_user.posts_from(@person).where(:type => "StatusMessage").includes(:comments).limit(15).where(StatusMessage.arel_table[:created_at].lt(max_time)) else @commenting_disabled = true - @posts = @person.posts.where(:type => "StatusMessage", :public => true).includes(:comments).limit(15).offset(15*(params[:page]-1)) + @posts = @person.posts.where(:type => "StatusMessage", :public => true).includes(:comments).limit(15).where(StatusMessage.arel_table[:created_at].lt(max_time)).order('posts.created_at DESC') end @posts = PostsFake.new(@posts) + if params[:only_posts] render :partial => 'shared/stream', :locals => {:posts => @posts} else @@ -112,6 +116,21 @@ class PeopleController < ApplicationController end end + def contacts + @person = Person.find(params[:person_id]) + if @person + @contact = current_user.contact_for(@person) + @aspect = :profile + @contacts_of_contact = @contact.contacts.paginate(:page => params[:page], :per_page => (params[:limit] || 15)) + @hashes = hashes_for_people @contacts_of_contact, @aspects + @contact = current_user.contact_for(@person) + @aspects_with_person = @contact.aspects + @aspect_ids = @aspects_with_person.map(&:id) + else + flash[:error] = I18n.t 'people.show.does_not_exist' + redirect_to people_path + end + end private def webfinger(account, opts = {}) Resque.enqueue(Job::SocketWebfinger, current_user.id, account, opts) diff --git a/app/controllers/photos_controller.rb b/app/controllers/photos_controller.rb index d74b1a5b4123278f3d7aee5ff1af6527e16ac8da..b7eaeaf60bda168a4e9953c3cc56abb71acf82a4 100644 --- a/app/controllers/photos_controller.rb +++ b/app/controllers/photos_controller.rb @@ -3,6 +3,7 @@ # the COPYRIGHT file. class PhotosController < ApplicationController + helper :comments before_filter :authenticate_user! respond_to :html, :json diff --git a/app/controllers/sockets_controller.rb b/app/controllers/sockets_controller.rb index 7ed70b1cb908b95387a09d135be358a30ee7c84a..913ead739686a6541eb19586ead0fedbe356f5aa 100644 --- a/app/controllers/sockets_controller.rb +++ b/app/controllers/sockets_controller.rb @@ -3,6 +3,7 @@ # the COPYRIGHT file. class SocketsController < ApplicationController + helper :comments include ApplicationHelper include SocketsHelper include Rails.application.routes.url_helpers diff --git a/app/controllers/status_messages_controller.rb b/app/controllers/status_messages_controller.rb index 1eae9744878fc2628c842d7946fc221bf52b7210..2b0e89ace70fb32405cadb4b81ef4603a580c665 100644 --- a/app/controllers/status_messages_controller.rb +++ b/app/controllers/status_messages_controller.rb @@ -3,6 +3,7 @@ # the COPYRIGHT file. class StatusMessagesController < ApplicationController + helper :comments before_filter :authenticate_user! respond_to :html @@ -25,7 +26,7 @@ class StatusMessagesController < ApplicationController end end - def bookmarklet + def bookmarklet @aspects = current_user.aspects @selected_contacts = @aspects.map { |aspect| aspect.contacts }.flatten.uniq @aspect_ids = @aspects.map{|x| x.id} diff --git a/app/controllers/tags_controller.rb b/app/controllers/tags_controller.rb index d96a05257ce62f7adf410ae249a8988a6f8a32f9..a867e41e95d36a807197264f9c8a64a9828167a9 100644 --- a/app/controllers/tags_controller.rb +++ b/app/controllers/tags_controller.rb @@ -3,6 +3,7 @@ # the COPYRIGHT file. class TagsController < ApplicationController + helper :comments skip_before_filter :set_invites skip_before_filter :which_action_and_user skip_before_filter :set_grammatical_gender @@ -51,7 +52,11 @@ class TagsController < ApplicationController end @posts = @posts.tagged_with(params[:name]) - @posts = @posts.includes(:comments, :photos).order('created_at DESC').limit(15).offset(15*(params[:page]-1)) + + max_time = params[:max_time] ? Time.at(params[:max_time].to_i) : Time.now + @posts = @posts.where(StatusMessage.arel_table[:created_at].lt(max_time)) + + @posts = @posts.includes(:comments, :photos).order('posts.created_at DESC').limit(15) @posts = PostsFake.new(@posts) @commenting_disabled = true diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index 6f04621eae5fcd78924ff742c0ed2a930f49fb3e..569eb2075bb2ef689f2ba5c0f2ea3e34fbfd75e3 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -2,6 +2,7 @@ # licensed under the Affero General Public License version 3 or later. See # the COPYRIGHT file. class UsersController < ApplicationController + helper :language require File.join(Rails.root, 'lib/diaspora/ostatus_builder') require File.join(Rails.root, 'lib/diaspora/exporter') require File.join(Rails.root, 'lib/collect_user_photos') diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index 600022c0949d5185c0771370d180266ffbc32d66..76547b8c38fabd9b5984a63f81d19a40bcf94849 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -5,9 +5,6 @@ module ApplicationHelper @@youtube_title_cache = Hash.new("no-title") - def next_page - params[:page] ? (params[:page].to_i + 1) : 2 - end def timeago(time, options = {}) options[:class] ||= "timeago" content_tag(:abbr, time.to_s, options.merge(:title => time.iso8601)) if time @@ -82,8 +79,19 @@ module ApplicationHelper </li>".html_safe end + def link_for_aspect(aspect, opts={}) + opts[:params] ||= {} + params ||= {} + opts[:params] = opts[:params].merge("a_ids[]" => aspect.id, :created_at => params[:created_at]) + opts[:class] ||= "" + opts[:class] << " hard_aspect_link" + opts['data-guid'] = aspect.id + + link_to aspect.name, aspects_path( opts[:params] ), opts + end + def current_aspect?(aspect) - !@aspect.nil? && !@aspect.is_a?(Symbol) && @aspect.id == aspect.id + !@aspect.nil? && !@aspect.instance_of?(Symbol) && @aspect.id == aspect.id end def aspect_or_all_path aspect @@ -161,21 +169,17 @@ module ApplicationHelper def markdownify(message, options = {}) message = h(message).html_safe - if !options.has_key?(:newlines) - options[:newlines] = true - end + options[:newlines] = true if !options.has_key?(:newlines) + options[:emoticons] = true if !options.has_key?(:emoticons) message = process_links(message) message = process_autolinks(message) message = process_emphasis(message) message = process_youtube(message, options[:youtube_maps]) message = process_vimeo(message, options[:vimeo_maps]) + message = process_emoticons(message) if options[:emoticons] - message.gsub!(/<3/, "♥") - - if options[:newlines] - message.gsub!(/\n+/, '<br />') - end + message.gsub!(/\n+/, '<br />') if options[:newlines] return message end @@ -208,16 +212,18 @@ module ApplicationHelper end def process_youtube(message, youtube_maps) - regex = /( |^)(https?:\/\/)?www\.youtube\.com\/watch[^ ]*v=([A-Za-z0-9_\-]+)(&[^ ]*|)/ + regex = /( |^)(https?:\/\/)?www\.youtube\.com\/watch[^ ]*v=([A-Za-z0-9_\-]+)(&[^ ]*)?(#[^ ]+)?/ processed_message = message.gsub(regex) do |matched_string| match_data = matched_string.match(regex) video_id = match_data[3] + anchor = match_data[5] + anchor ||= '' if youtube_maps && youtube_maps[video_id] title = h(CGI::unescape(youtube_maps[video_id])) else title = I18n.t 'application.helper.video_title.unknown' end - ' <a class="video-link" data-host="youtube.com" data-video-id="' + video_id + '" href="'+ match_data[0].strip + '" target="_blank">Youtube: ' + title + '</a>' + ' <a class="video-link" data-host="youtube.com" data-video-id="' + video_id + '" data-anchor="' + anchor + '" href="'+ match_data[0].strip + '" target="_blank">Youtube: ' + title + '</a>' end return processed_message end @@ -269,6 +275,27 @@ module ApplicationHelper return processed_message end + def process_emoticons(message) + map = { + "<3" => "♥", + ":(" => "☹", + ":-(" => "☹", + ":)" => "☺", + ":-)" => "☺", + "->" => "→", + "<-" => "←", + "..." => "…", + "(tm)" => "™", + "(r)" => "®", + "(c)" => "©" + } + + map.each do |search, replace| + message.gsub!(search, replace) + end + message + end + def info_text(text) image_tag 'icons/monotone_question.png', :class => 'what_is_this', :title => text end diff --git a/app/helpers/aspects_helper.rb b/app/helpers/aspects_helper.rb index 01bf1126e2dd702e6f21424bcb3d87f8b7e3e244..e72bee5a16b205e0ec89f59735efedd3f45b5ab8 100644 --- a/app/helpers/aspects_helper.rb +++ b/app/helpers/aspects_helper.rb @@ -1,17 +1,10 @@ -#/ Copyright (c) 2010, Diaspora Inc. This file is +# Copyright (c) 2010, Diaspora Inc. This file is # licensed under the Affero General Public License version 3 or later. See # the COPYRIGHT file. module AspectsHelper - def link_for_aspect(aspect, opts={}) - opts[:params] ||= {} - params ||= {} - opts[:params] = opts[:params].merge("a_ids[]" => aspect.id, :created_at => params[:created_at]) - opts[:class] ||= "" - opts[:class] << " hard_aspect_link" - opts['data-guid'] = aspect.id - - link_to aspect.name, aspects_path( opts[:params] ), opts + def next_page_path + aspects_path(:max_time => @posts.last.send(session[:sort_order].to_sym).to_i, :a_ids => params[:a_ids]) end def remove_link(aspect) diff --git a/app/helpers/stream_helper.rb b/app/helpers/comments_helper.rb similarity index 97% rename from app/helpers/stream_helper.rb rename to app/helpers/comments_helper.rb index 3fdb1c680468ab7be4ea9ba200a95190ed18870f..0df7ee28f1ccc6ba277b2417d82ee4f6fd46aa9e 100644 --- a/app/helpers/stream_helper.rb +++ b/app/helpers/comments_helper.rb @@ -2,7 +2,7 @@ # licensed under the Affero General Public License version 3 or later. See # the COPYRIGHT file. -module StreamHelper +module CommentsHelper GSUB_THIS = "FIUSDHVIUSHDVIUBAIUHAPOIUXJM" def comment_toggle(count, commenting_disabled=false) if count <= 3 diff --git a/app/helpers/conversations_helper.rb b/app/helpers/conversations_helper.rb deleted file mode 100644 index e9370a658d2dfd61780692f6de1b1f73d304bd0c..0000000000000000000000000000000000000000 --- a/app/helpers/conversations_helper.rb +++ /dev/null @@ -1,5 +0,0 @@ -module ConversationsHelper - def new_message_text(count) - t('conversations.helper.new_messages', :count => count) - end -end diff --git a/app/helpers/layout_helper.rb b/app/helpers/layout_helper.rb index 166e6b25489f101871ff126f72e6a3e6d1522e58..e8707e4122590bb23e57ab71b914720be11bb045 100644 --- a/app/helpers/layout_helper.rb +++ b/app/helpers/layout_helper.rb @@ -23,4 +23,12 @@ module LayoutHelper def javascript(*args) content_for(:head) { javascript_include_tag(*args) } end + + def new_notification_text(count) + t('notifications.helper.new_notifications', :count => count) + end + + def new_message_text(count) + t('conversations.helper.new_messages', :count => count) + end end diff --git a/app/helpers/notifications_helper.rb b/app/helpers/notifications_helper.rb index 4489a5c84f52cec554d9989c626f0dc0a01a6f4a..8afc55b616229dec5048ba8f4d34db9d5371157e 100644 --- a/app/helpers/notifications_helper.rb +++ b/app/helpers/notifications_helper.rb @@ -31,9 +31,6 @@ module NotificationsHelper t("notifications.#{target_type}", :post_author => post_author) end - def new_notification_text(count) - t('notifications.helper.new_notifications', :count => count) - end def new_notification_link(count) if count > 0 @@ -56,4 +53,12 @@ module NotificationsHelper def peoples_names(note) note.actors.map{|p| p.name}.join(", ") end + + def the_day(i18n) + i18n[0].match(/\d/) ? i18n[0].gsub('.', '') : i18n[1].gsub('.', '') + end + + def the_month(i18n) + i18n[0].match(/\d/) ? i18n[1] : i18n[0] + end end diff --git a/app/helpers/people_helper.rb b/app/helpers/people_helper.rb index b149abca8675bf0208ff11e62d32d2237599ec71..490200756f629ed98900314e2cb32148b22cbd8f 100644 --- a/app/helpers/people_helper.rb +++ b/app/helpers/people_helper.rb @@ -27,4 +27,8 @@ module PeopleHelper I18n.l bday, :format => I18n.t('date.formats.birthday_with_year') end end + + def next_page_path + person_path(@person, :max_time => @posts.last.created_at.to_i) + end end diff --git a/app/helpers/requests_helper.rb b/app/helpers/requests_helper.rb deleted file mode 100644 index d54a29de2c5727bd827703386df2caa1d234dc34..0000000000000000000000000000000000000000 --- a/app/helpers/requests_helper.rb +++ /dev/null @@ -1,16 +0,0 @@ -# Copyright (c) 2010, Diaspora Inc. This file is -# licensed under the Affero General Public License version 3 or later. See -# the COPYRIGHT file. - -module RequestsHelper - - def new_request?(request_count) - 'new_requests' if request_count > 0 - end - - def new_request_link(request_count) - if request_count > 0 - link_to t('requests.helper.new_requests', :count => @request_count), manage_aspects_path - end - end -end diff --git a/app/helpers/tags_helper.rb b/app/helpers/tags_helper.rb new file mode 100644 index 0000000000000000000000000000000000000000..ee29ec44e01724e8ff0d23441d8cc43eb1f621b5 --- /dev/null +++ b/app/helpers/tags_helper.rb @@ -0,0 +1,9 @@ +# Copyright (c) 2010, Diaspora Inc. This file is +# licensed under the Affero General Public License version 3 or later. See +# the COPYRIGHT file. + +module TagsHelper + def next_page_path + tag_path(@tag, :max_time => @posts.last.created_at.to_i) + end +end diff --git a/app/models/notification.rb b/app/models/notification.rb index 4b1c33f186b7f9024aadb427354c1186a6a336d2..8349165b29d1f1400dab9722127cfccc8d2f019d 100644 --- a/app/models/notification.rb +++ b/app/models/notification.rb @@ -41,7 +41,8 @@ private def self.concatenate_or_create(recipient, target, actor, notification_type) if n = notification_type.where(:target_id => target.id, :target_type => target.class.base_class, - :recipient_id => recipient.id).first + :recipient_id => recipient.id, + :unread => true).first unless n.actors.include?(actor) n.actors << actor end diff --git a/app/models/post.rb b/app/models/post.rb index c705f45b038b1579af2f1c763da52980cc1b60b1..f6b88c89e4c6db85f6667cc897747c1438789643 100644 --- a/app/models/post.rb +++ b/app/models/post.rb @@ -81,7 +81,7 @@ class Post < ActiveRecord::Base local_post = Post.where(:guid => self.guid).first if local_post && local_post.author_id == self.author_id - known_post = user.raw_visible_posts.where(:guid => self.guid).first + known_post = user.visible_posts.where(:guid => self.guid).first if known_post if known_post.mutable? known_post.update_attributes(self.attributes) diff --git a/app/models/user.rb b/app/models/user.rb index 8f6c1f2781e5f3a436b006d9c82cd7e589cf24c4..3ceab0b19f7e29d81ccb2d970be293e5668459db 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -96,7 +96,7 @@ class User < ActiveRecord::Base contact = contact_for(person) add_contact_to_aspect(contact, to_aspect) - + membership = contact ? AspectMembership.where(:contact_id => contact.id, :aspect_id => from_aspect.id).first : nil return(membership && membership.destroy) end @@ -344,5 +344,4 @@ class User < ActiveRecord::Base mentioned_person.delete end end - end diff --git a/app/views/aspects/_aspect_stream.haml b/app/views/aspects/_aspect_stream.haml index 78f540716cdc3f5016108a94ebbf02b409fe5d48..d49a64342f7b4f36acce8307ba6503c9fc0a3502 100644 --- a/app/views/aspects/_aspect_stream.haml +++ b/app/views/aspects/_aspect_stream.haml @@ -13,6 +13,6 @@ - if posts.length > 0 = render 'shared/stream', :posts => posts #pagination - =link_to(t('more'), aspects_path(:page => next_page, :a_ids => params[:a_ids]), :class => 'paginate') + =link_to(t('more'), next_page_path, :class => 'paginate') - else = render 'aspects/no_posts_message', :post_count => posts.length diff --git a/app/views/aspects/index.mobile.haml b/app/views/aspects/index.mobile.haml index a6e78e163dbf2caaff5cb083823cd0d0c4474742..8def29594bc17888126e6991ebd4929491aa7d58 100644 --- a/app/views/aspects/index.mobile.haml +++ b/app/views/aspects/index.mobile.haml @@ -12,8 +12,9 @@ = link_to t('.post_a_message'), '#publisher_page', :id => 'publisher_button' #main_stream.stream = render 'shared/stream', :posts => @posts - #pagination - %a.more-link.paginate{:href => aspects_path(:a_ids => params[:a_ids], :page => params[:page] + 1)} - %h2= t("more") + -if @posts.length > 0 + #pagination + %a.more-link.paginate{:href => next_page_path} + %h2= t("more") - content_for :subpages do = render 'shared/publisher', :aspect_ids => @aspect_ids diff --git a/app/views/conversations/new.haml b/app/views/conversations/new.haml index 40301b10ea171bef32b535d86d134e3aadd4fe09..b7877372b9c80fd47c4bfc7457ecd919b0bfc876 100644 --- a/app/views/conversations/new.haml +++ b/app/views/conversations/new.haml @@ -4,7 +4,7 @@ :javascript $(document).ready(function () { - var data = $.parseJSON( '#{@all_contacts_and_ids.to_json.gsub("'", "\\\\'")}' ), + var data = $.parseJSON( "#{@contacts_json}" ), autocompleteInput = $("#contact_autocomplete"); autocompleteInput.autoSuggest(data, { diff --git a/app/views/layouts/application.html.haml b/app/views/layouts/application.html.haml index d94d4582a4874203b080296fa097fae1e03a9efa..0e22c2623886764a541eea746f11feeaaf13339f 100644 --- a/app/views/layouts/application.html.haml +++ b/app/views/layouts/application.html.haml @@ -79,7 +79,7 @@ %body{:class => "#{yield(:body_class)}"} - unless @landing_page - #notification + #notifications - flash.each do |name, msg| = content_tag :div, msg, :id => "flash_#{name}" diff --git a/app/views/notifications/_popup.haml b/app/views/notifications/_popup.haml index 0dbc75d4c6e87d285e2924d3f0b96adde7b846f9..9bb8f36bbf9456ffd3660487237164e986d6d2d1 100644 --- a/app/views/notifications/_popup.haml +++ b/app/views/notifications/_popup.haml @@ -1,7 +1,7 @@ -# Copyright (c) 2010, Diaspora Inc. This file is -# licensed under the Affero General Public License version 3 or later. See -# the COPYRIGHT file. - -= person_image_tag(person) -= link_to "#{person.name.titleize}", person_path(person.id) -= object_link(note) +.notification + = person_image_tag(person) + = link_to "#{person.name.titleize}", person_path(person.id) + = object_link(note) diff --git a/app/views/notifications/index.html.haml b/app/views/notifications/index.html.haml index 5f056c30f565e02c87c081181aea25edbf921379..9c4b1828d2f31dcc782361c48227af9f808e9d2d 100644 --- a/app/views/notifications/index.html.haml +++ b/app/views/notifications/index.html.haml @@ -1,52 +1,28 @@ -:javascript - $('.stream_element').live('mousedown', function(evt){ - var note = $(this).closest('.stream_element'), - note_id = note.attr('data-guid'), - nBadge = $("#notification_badge_number"); - - if(note.hasClass('unread') ){ - note.removeClass('unread'); - $.ajax({ - url: 'notifications/' + note_id, - type: 'PUT' - }); - } - if(nBadge.html() != null) { - nBadge.html().replace(/\d+/, function(num){ - num = parseInt(num); - nBadge.html(parseInt(num)-1); - if(num == 1) { - nBadge.addClass("hidden"); - } - }); - - } - }); - - $('a.more').live('click', function(){ - $(this).hide(); - $(this).next('span').removeClass('hidden'); - }); - -.span-1 - = image_tag 'icons/mail_big.png', :height => 30, :width => 30, :style=>"margin-top:3px;" -.span-10 +.span-13 %h2 + %span.notification_count{:class => ('unread' if @notification_count > 0)} + = @notification_count = t('.notifications') -.span-13.last.left +.span-8.last.left = link_to t('.mark_all_as_read'), read_all_notifications_path, :class => 'button' .span-24.last - %ul.stream.notifications + .stream.notifications - @group_days.each do |day, notes| - %li - %h4= day - %ul.notifications_for_day + .day_group.span-24.last + .span-3 + .date + .day= the_day(day.split(' ')) + .month= the_month(day.split(' ')) + + .span-8.notifications_for_day - notes.each do |note| .stream_element{:data=>{:guid => note.id}, :class => "#{note.unread ? 'unread' : ''}"} %span.from = notification_people_link(note) = object_link(note) - .time= timeago(note.created_at) + %br + %time= timeago(note.created_at) + .span-13.last = will_paginate @notifications diff --git a/app/views/people/_person.html.haml b/app/views/people/_person.html.haml index 2dc6038f363136c6bb20a6ca8b6b0acd1d4b6204..362c019350e2c39706b953652cfc2e4027feafee 100644 --- a/app/views/people/_person.html.haml +++ b/app/views/people/_person.html.haml @@ -5,7 +5,8 @@ .stream_element{:id => person.id} .right = render :partial => 'people/relationship_action', - :locals => { :person => person, :contact => contact, :request => request} + :locals => { :person => person, :contact => contact, + :request => request, :current_user => current_user } = person_image_link(person) diff --git a/app/views/people/contacts.haml b/app/views/people/contacts.haml new file mode 100644 index 0000000000000000000000000000000000000000..eb0b26700b06280711279b87d5bbdf8e11d81a6b --- /dev/null +++ b/app/views/people/contacts.haml @@ -0,0 +1,60 @@ +-# Copyright (c) 2010, Diaspora Inc. This file is +-# licensed under the Affero General Public License version 3 or later. See +-# the COPYRIGHT file. + + +- content_for :head do + = include_javascripts :people + +- content_for :page_title do + = @person.name + +.span-8.append-1.last + = render :partial => 'people/profile_sidebar', :locals => {:person => @person, :contact => @contact } + +.span-15.last + #author_info + - if user_signed_in? && !(@contact.persisted? || current_user.person == @person) + .right + - if @incoming_request + = link_to t('people.show.incoming_request', :name => truncate(@person.name, :length => 20, :separator => ' ', :omission => '')), + {:controller => "contacts", + :action => "new", + :person_id => @person.id}, + :class => 'share_with button', + :rel => 'facebox' + -else + = link_to t('people.show.start_sharing'), + {:controller => "contacts", + :action => "new", + :person_id => @person.id}, + :class => 'share_with button', + :rel => 'facebox' + - if @share_with + = javascript_tag "$(document).ready(function() {jQuery.facebox({ ajax: '#{new_contact_path(:person_id => @person.id)}' });});" + + + - else + - if user_signed_in? && @contact.person && @contact.receiving? + .right + = link_to t('.mention'), new_status_message_path(:person_id => @person.id), :class => 'button', :rel => 'facebox' + - if @contact.mutual? + = link_to t('.message'), new_conversation_path(:contact_id => @contact.id, :name => @contact.person.name, :contact_id => @contact.id), :class => 'button', :rel => 'facebox' + + %h3 + = @person.name + %span.diaspora_handle + = @person.diaspora_handle + .description + - if !@person.profile.tag_string.blank? + = @person.profile.format_tags(@person.profile.tag_string) + - if user_signed_in? && @person == current_user.person + %span.hover_edit + = link_to t('people.show.edit'), edit_profile_path + + %hr + + #people_stream.stream + - for hash in @hashes + = render :partial => 'people/person', :locals => hash + = will_paginate @contacts_of_contact diff --git a/app/views/people/index.html.haml b/app/views/people/index.html.haml index 4843cdc614b061353c20995055b9ebfe6615d07b..63153be6e6963e7c5d5cd32830e2ead9ae5750f0 100644 --- a/app/views/people/index.html.haml +++ b/app/views/people/index.html.haml @@ -7,6 +7,7 @@ - content_for :head do = include_javascripts :people + = javascript_include_tag 'contact-list' .span-24.last - if params[:q].blank? diff --git a/app/views/people/show.html.haml b/app/views/people/show.html.haml index 8b310f8c129ccfba82da73d7df4b3a8517de963c..54ea641f2a11c59f6b26411a1a222339bc1fd9ad 100644 --- a/app/views/people/show.html.haml +++ b/app/views/people/show.html.haml @@ -13,14 +13,15 @@ = render :partial => 'people/profile_sidebar', :locals => {:person => @person, :contact => @contact } - if user_signed_in? && @contact.persisted? && @contacts_of_contact.count > 0 - .span-8.last + .span-8.last#contacts_of_contact %hr{:style=>"width:300px;"} .section.contact_pictures %h4 - = @contacts_of_contact.length - = t('.similar_contacts') + = t('contacts', :count => @contacts_of_contact_count) - for person in @contacts_of_contact = person_image_link person + - if @contacts_of_contact.count > 25 + %p.see_all= link_to t('.see_all'), person_contacts_path(@person) .span-15.last #author_info @@ -73,7 +74,7 @@ #main_stream.stream = render 'shared/stream', :posts => @posts, :commenting_disabled => @commenting_disabled #pagination - =link_to(t('more'), person_path(@person, :page => next_page), :class => 'paginate') + =link_to(t('more'), next_page_path, :class => 'paginate') - else #stream diff --git a/app/views/people/show.mobile.haml b/app/views/people/show.mobile.haml index 08ce19c1b7e673903af2a58ee4f206f39cdcbcf4..8bc11c86c4c8f8a42f6cee8a6aee7ad2dfc105e4 100644 --- a/app/views/people/show.mobile.haml +++ b/app/views/people/show.mobile.haml @@ -31,7 +31,7 @@ #main_stream.stream = render 'shared/stream', :posts => @posts #pagination - =link_to(t('more'), person_path(@person, :page => next_page), :class => 'paginate') + =link_to(t('more'), next_page_path, :class => 'paginate') - else #stream %li{:style=>"text-align:center;"} diff --git a/app/views/photos/show.mobile.haml b/app/views/photos/show.mobile.haml old mode 100644 new mode 100755 index c373911c9a869081ace6c7a8b4cf866f4bd4be78..4aebfea691dfccabf81998a9e61757d430df6e9d --- a/app/views/photos/show.mobile.haml +++ b/app/views/photos/show.mobile.haml @@ -6,3 +6,12 @@ #show_content.photo = image_tag @photo.url(:scaled_full) + -if @additional_photos && @additional_photos.length > 1 + #photo_controls + %table + %tr + %td + =link_to "â†", @prev_photo, :rel => 'prefetch', :class => 'arrow' + %td{:width => '100%'} + %td + =link_to "→", @next_photo, :rel => 'prefetch', :class => 'arrow' diff --git a/app/views/shared/_stream_element.html.haml b/app/views/shared/_stream_element.html.haml index 614e6647224d3a8337079dcd226d6352a6cf6180..44ce12d3adc425492240d7489b156ecf783915cc 100644 --- a/app/views/shared/_stream_element.html.haml +++ b/app/views/shared/_stream_element.html.haml @@ -21,7 +21,7 @@ .content .from = person_link(post.author, :class => 'author') - %time.timeago{:datetime => post.created_at} + %time.time.timeago{:datetime => post.created_at, :integer => post.created_at.to_i} = render 'status_messages/status_message', :post => post, :photos => post.photos .info diff --git a/app/views/shared/_stream_element.mobile.haml b/app/views/shared/_stream_element.mobile.haml index 1b00a09a70bf8739a0f9a83f85be3cb69fc67982..82a34279042bfa4930200df65fdbd9344bb9ede5 100644 --- a/app/views/shared/_stream_element.mobile.haml +++ b/app/views/shared/_stream_element.mobile.haml @@ -12,6 +12,6 @@ = render 'status_messages/status_message', :post => post, :photos => post.photos .info - %span.time + %span.time{:integer => post.created_at.to_i} = t('ago', :time => time_ago_in_words(post.created_at)) = link_to "#{t('comments', :count => post.comments.length)} →", status_message_path(post), :class => 'comment_link right' diff --git a/app/views/status_messages/show.html.haml b/app/views/status_messages/show.html.haml index 34cbfe9e00d43b8c5a1627c8aef2aa82cdaba453..83cada8575fd74f49370ce7c575e14e977bdbd46 100644 --- a/app/views/status_messages/show.html.haml +++ b/app/views/status_messages/show.html.haml @@ -12,7 +12,7 @@ = markdownify(@status_message.text, :youtube_maps => @status_message[:youtube_titles]) - for photo in @status_message.photos - .thumb_small= link_to (image_tag photo.url(:thumb_small)), photo_path(photo) + = link_to (image_tag photo.url(:thumb_small), :class => 'thumb_small'), photo_path(photo) %p.time = how_long_ago(@status_message) diff --git a/app/views/tags/show.haml b/app/views/tags/show.haml index 4b16d4476a32fd692c820602b2c3634a8108e81c..fd6777f23a434dab5cf6498aa913ff86ffb3ca39 100644 --- a/app/views/tags/show.haml +++ b/app/views/tags/show.haml @@ -23,7 +23,7 @@ - if @posts.length > 0 = render 'shared/stream', :posts => @posts #pagination - =link_to(t('more'), tag_path(params[:name], :page => next_page), :class => 'paginate') + =link_to(t('more'), next_page_path, :class => 'paginate') - else = t('.nobody_talking', :tag => "##{params[:name]}") diff --git a/chef/cookbooks/debian/bootstrap.json b/chef/cookbooks/debian/bootstrap.json new file mode 100644 index 0000000000000000000000000000000000000000..aba0834616de041ae0369004e0690eff4e145ff9 --- /dev/null +++ b/chef/cookbooks/debian/bootstrap.json @@ -0,0 +1 @@ +{"recipes": ["debian::bootstrap" ] } diff --git a/chef/cookbooks/debian/files/default/redis.conf b/chef/cookbooks/debian/files/default/redis.conf new file mode 100644 index 0000000000000000000000000000000000000000..3f26920917c54320a0dd1f5e43e8bfeff9cf8a17 --- /dev/null +++ b/chef/cookbooks/debian/files/default/redis.conf @@ -0,0 +1,312 @@ +# Redis configuration file example + +# Note on units: when memory size is needed, it is possible to specifiy +# it in the usual form of 1k 5GB 4M and so forth: +# +# 1k => 1000 bytes +# 1kb => 1024 bytes +# 1m => 1000000 bytes +# 1mb => 1024*1024 bytes +# 1g => 1000000000 bytes +# 1gb => 1024*1024*1024 bytes +# +# units are case insensitive so 1GB 1Gb 1gB are all the same. + +# By default Redis does not run as a daemon. Use 'yes' if you need it. +# Note that Redis will write a pid file in /usr/local/var/run/redis.pid when daemonized. +daemonize no + +# When running daemonized, Redis writes a pid file in /usr/local/var/run/redis.pid by +# default. You can specify a custom pid file location here. +pidfile /usr/local/var/run/redis.pid + +# Accept connections on the specified port, default is 6379 +port 6379 + +# If you want you can bind a single interface, if the bind option is not +# specified all the interfaces will listen for incoming connections. +# +# bind 127.0.0.1 + +# Close the connection after a client is idle for N seconds (0 to disable) +timeout 300 + +# Set server verbosity to 'debug' +# it can be one of: +# debug (a lot of information, useful for development/testing) +# verbose (many rarely useful info, but not a mess like the debug level) +# notice (moderately verbose, what you want in production probably) +# warning (only very important / critical messages are logged) +loglevel verbose + +# Specify the log file name. Also 'stdout' can be used to force +# Redis to log on the standard output. Note that if you use standard +# output for logging but daemonize, logs will be sent to /dev/null +logfile stdout + +# Set the number of databases. The default database is DB 0, you can select +# a different one on a per-connection basis using SELECT <dbid> where +# dbid is a number between 0 and 'databases'-1 +databases 16 + +################################ SNAPSHOTTING ################################# +# +# Save the DB on disk: +# +# save <seconds> <changes> +# +# Will save the DB if both the given number of seconds and the given +# number of write operations against the DB occurred. +# +# In the example below the behaviour will be to save: +# after 900 sec (15 min) if at least 1 key changed +# after 300 sec (5 min) if at least 10 keys changed +# after 60 sec if at least 10000 keys changed +# +# Note: you can disable saving at all commenting all the "save" lines. + +save 900 1 +save 300 10 +save 60 10000 + +# Compress string objects using LZF when dump .rdb databases? +# For default that's set to 'yes' as it's almost always a win. +# If you want to save some CPU in the saving child set it to 'no' but +# the dataset will likely be bigger if you have compressible values or keys. +rdbcompression yes + +# The filename where to dump the DB +dbfilename dump.rdb + +# The working directory. +# +# The DB will be written inside this directory, with the filename specified +# above using the 'dbfilename' configuration directive. +# +# Also the Append Only File will be created inside this directory. +# +# Note that you must specify a directory here, not a file name. +dir /usr/local/var/db/redis/ + +################################# REPLICATION ################################# + +# Master-Slave replication. Use slaveof to make a Redis instance a copy of +# another Redis server. Note that the configuration is local to the slave +# so for example it is possible to configure the slave to save the DB with a +# different interval, or to listen to another port, and so on. +# +# slaveof <masterip> <masterport> + +# If the master is password protected (using the "requirepass" configuration +# directive below) it is possible to tell the slave to authenticate before +# starting the replication synchronization process, otherwise the master will +# refuse the slave request. +# +# masterauth <master-password> + +################################## SECURITY ################################### + +# Require clients to issue AUTH <PASSWORD> before processing any other +# commands. This might be useful in environments in which you do not trust +# others with access to the host running redis-server. +# +# This should stay commented out for backward compatibility and because most +# people do not need auth (e.g. they run their own servers). +# +# Warning: since Redis is pretty fast an outside user can try up to +# 150k passwords per second against a good box. This means that you should +# use a very strong password otherwise it will be very easy to break. +# +# requirepass foobared + +################################### LIMITS #################################### + +# Set the max number of connected clients at the same time. By default there +# is no limit, and it's up to the number of file descriptors the Redis process +# is able to open. The special value '0' means no limits. +# Once the limit is reached Redis will close all the new connections sending +# an error 'max number of clients reached'. +# +# maxclients 128 + +# Don't use more memory than the specified amount of bytes. +# When the memory limit is reached Redis will try to remove keys with an +# EXPIRE set. It will try to start freeing keys that are going to expire +# in little time and preserve keys with a longer time to live. +# Redis will also try to remove objects from free lists if possible. +# +# If all this fails, Redis will start to reply with errors to commands +# that will use more memory, like SET, LPUSH, and so on, and will continue +# to reply to most read-only commands like GET. +# +# WARNING: maxmemory can be a good idea mainly if you want to use Redis as a +# 'state' server or cache, not as a real DB. When Redis is used as a real +# database the memory usage will grow over the weeks, it will be obvious if +# it is going to use too much memory in the long run, and you'll have the time +# to upgrade. With maxmemory after the limit is reached you'll start to get +# errors for write operations, and this may even lead to DB inconsistency. +# +# maxmemory <bytes> + +############################## APPEND ONLY MODE ############################### + +# By default Redis asynchronously dumps the dataset on disk. If you can live +# with the idea that the latest records will be lost if something like a crash +# happens this is the preferred way to run Redis. If instead you care a lot +# about your data and don't want to that a single record can get lost you should +# enable the append only mode: when this mode is enabled Redis will append +# every write operation received in the file appendonly.aof. This file will +# be read on startup in order to rebuild the full dataset in memory. +# +# Note that you can have both the async dumps and the append only file if you +# like (you have to comment the "save" statements above to disable the dumps). +# Still if append only mode is enabled Redis will load the data from the +# log file at startup ignoring the dump.rdb file. +# +# IMPORTANT: Check the BGREWRITEAOF to check how to rewrite the append +# log file in background when it gets too big. + +appendonly no + +# The name of the append only file (default: "appendonly.aof") +# appendfilename appendonly.aof + +# The fsync() call tells the Operating System to actually write data on disk +# instead to wait for more data in the output buffer. Some OS will really flush +# data on disk, some other OS will just try to do it ASAP. +# +# Redis supports three different modes: +# +# no: don't fsync, just let the OS flush the data when it wants. Faster. +# always: fsync after every write to the append only log . Slow, Safest. +# everysec: fsync only if one second passed since the last fsync. Compromise. +# +# The default is "everysec" that's usually the right compromise between +# speed and data safety. It's up to you to understand if you can relax this to +# "no" that will will let the operating system flush the output buffer when +# it wants, for better performances (but if you can live with the idea of +# some data loss consider the default persistence mode that's snapshotting), +# or on the contrary, use "always" that's very slow but a bit safer than +# everysec. +# +# If unsure, use "everysec". + +# appendfsync always +appendfsync everysec +# appendfsync no + +################################ VIRTUAL MEMORY ############################### + +# Virtual Memory allows Redis to work with datasets bigger than the actual +# amount of RAM needed to hold the whole dataset in memory. +# In order to do so very used keys are taken in memory while the other keys +# are swapped into a swap file, similarly to what operating systems do +# with memory pages. +# +# To enable VM just set 'vm-enabled' to yes, and set the following three +# VM parameters accordingly to your needs. + +vm-enabled no +# vm-enabled yes + +# This is the path of the Redis swap file. As you can guess, swap files +# can't be shared by different Redis instances, so make sure to use a swap +# file for every redis process you are running. Redis will complain if the +# swap file is already in use. +# +# The best kind of storage for the Redis swap file (that's accessed at random) +# is a Solid State Disk (SSD). +# +# *** WARNING *** if you are using a shared hosting the default of putting +# the swap file under /tmp is not secure. Create a dir with access granted +# only to Redis user and configure Redis to create the swap file there. +vm-swap-file /tmp/redis.swap + +# vm-max-memory configures the VM to use at max the specified amount of +# RAM. Everything that deos not fit will be swapped on disk *if* possible, that +# is, if there is still enough contiguous space in the swap file. +# +# With vm-max-memory 0 the system will swap everything it can. Not a good +# default, just specify the max amount of RAM you can in bytes, but it's +# better to leave some margin. For instance specify an amount of RAM +# that's more or less between 60 and 80% of your free RAM. +vm-max-memory 0 + +# Redis swap files is split into pages. An object can be saved using multiple +# contiguous pages, but pages can't be shared between different objects. +# So if your page is too big, small objects swapped out on disk will waste +# a lot of space. If you page is too small, there is less space in the swap +# file (assuming you configured the same number of total swap file pages). +# +# If you use a lot of small objects, use a page size of 64 or 32 bytes. +# If you use a lot of big objects, use a bigger page size. +# If unsure, use the default :) +vm-page-size 32 + +# Number of total memory pages in the swap file. +# Given that the page table (a bitmap of free/used pages) is taken in memory, +# every 8 pages on disk will consume 1 byte of RAM. +# +# The total swap size is vm-page-size * vm-pages +# +# With the default of 32-bytes memory pages and 134217728 pages Redis will +# use a 4 GB swap file, that will use 16 MB of RAM for the page table. +# +# It's better to use the smallest acceptable value for your application, +# but the default is large in order to work in most conditions. +vm-pages 134217728 + +# Max number of VM I/O threads running at the same time. +# This threads are used to read/write data from/to swap file, since they +# also encode and decode objects from disk to memory or the reverse, a bigger +# number of threads can help with big objects even if they can't help with +# I/O itself as the physical device may not be able to couple with many +# reads/writes operations at the same time. +# +# The special value of 0 turn off threaded I/O and enables the blocking +# Virtual Memory implementation. +vm-max-threads 4 + +############################### ADVANCED CONFIG ############################### + +# Glue small output buffers together in order to send small replies in a +# single TCP packet. Uses a bit more CPU but most of the times it is a win +# in terms of number of queries per second. Use 'yes' if unsure. +glueoutputbuf yes + +# Hashes are encoded in a special way (much more memory efficient) when they +# have at max a given numer of elements, and the biggest element does not +# exceed a given threshold. You can configure this limits with the following +# configuration directives. +hash-max-zipmap-entries 64 +hash-max-zipmap-value 512 + +# Active rehashing uses 1 millisecond every 100 milliseconds of CPU time in +# order to help rehashing the main Redis hash table (the one mapping top-level +# keys to values). The hash table implementation redis uses (see dict.c) +# performs a lazy rehashing: the more operation you run into an hash table +# that is rhashing, the more rehashing "steps" are performed, so if the +# server is idle the rehashing is never complete and some more memory is used +# by the hash table. +# +# The default is to use this millisecond 10 times every second in order to +# active rehashing the main dictionaries, freeing memory when possible. +# +# If unsure: +# use "activerehashing no" if you have hard latency requirements and it is +# not a good thing in your environment that Redis can reply form time to time +# to queries with 2 milliseconds delay. +# +# use "activerehashing yes" if you don't have such hard requirements but +# want to free memory asap when possible. +activerehashing yes + +################################## INCLUDES ################################### + +# Include one or more other config files here. This is useful if you +# have a standard template that goes to all redis server but also need +# to customize a few per-server settings. Include files can include +# other files, so use this wisely. +# +# include /path/to/local.conf +# include /path/to/other.conf diff --git a/chef/cookbooks/debian/main.json b/chef/cookbooks/debian/main.json new file mode 100644 index 0000000000000000000000000000000000000000..7afec5fd065cdc43672802a09aa3c0429bfb1fcd --- /dev/null +++ b/chef/cookbooks/debian/main.json @@ -0,0 +1 @@ +{"recipes": ["debian::main" ] } diff --git a/chef/cookbooks/debian/recipes/bootstrap.rb b/chef/cookbooks/debian/recipes/bootstrap.rb new file mode 100644 index 0000000000000000000000000000000000000000..416ee1eedfa60bf3a85250db2267116d0cb717d2 --- /dev/null +++ b/chef/cookbooks/debian/recipes/bootstrap.rb @@ -0,0 +1,49 @@ +execute "bundler deps" do + command "apt-get install -y cpio" +end +execute "nokogiri deps" do + command "apt-get install -y libxml2-dev libxslt-dev" +end + +execute "eventmachine deps" do + command "apt-get install -y gcc-c++" +end + +execute "ssl lib" do + command "apt-get install -y libssl-dev libopenssl-ruby" +end + +execute "curl" do + command "apt-get install -y libcurl4-openssl-dev" +end + +execute "ffi" do + command "apt-get install -y libffi-ruby" +end + + +execute "htop" do + command "apt-get install -y htop psmisc screen" +end + +execute "rvm deps" do + command "apt-get install -y bzip2" +end + +def harden_ruby(ruby_string) + Dir.glob("/usr/local/rvm/wrappers/#{ruby_string}/*").each do |file| + link "/usr/local/bin/#{file.split('/').last}" do + to file + end + end + Dir.glob("/usr/local/rvm/gems/#{ruby_string}/bin/*").each do |file| + link "/usr/local/bin/#{file.split('/').last}" do + to file + end + end + +end + +harden_ruby("ree-1.8.7-2010.02") + +include_recipe "debian::post_bootstrap" diff --git a/chef/cookbooks/debian/recipes/image_magick.rb b/chef/cookbooks/debian/recipes/image_magick.rb new file mode 100644 index 0000000000000000000000000000000000000000..eed14458eb63e147602cea0caadb7e86d4dbf357 --- /dev/null +++ b/chef/cookbooks/debian/recipes/image_magick.rb @@ -0,0 +1,3 @@ +execute "install ImageMagick" do + command "apt-get install -y imagemagick libmagick9-dev" +end diff --git a/chef/cookbooks/debian/recipes/java.rb b/chef/cookbooks/debian/recipes/java.rb new file mode 100644 index 0000000000000000000000000000000000000000..72ee1176eb71375907b8e9b999ee1ad5dafa9f5e --- /dev/null +++ b/chef/cookbooks/debian/recipes/java.rb @@ -0,0 +1,3 @@ +execute "JAVA!! for Jammit" do + command "apt-get install -y java" +end diff --git a/chef/cookbooks/debian/recipes/main.rb b/chef/cookbooks/debian/recipes/main.rb new file mode 100644 index 0000000000000000000000000000000000000000..5d284929cca538673964c1b9de48083878abf01d --- /dev/null +++ b/chef/cookbooks/debian/recipes/main.rb @@ -0,0 +1,5 @@ +include_recipe "debian::image_magick" +include_recipe "debian::mysql" +include_recipe "common::main" +include_recipe "debian::nginx" +include_recipe "debian::redis" diff --git a/chef/cookbooks/debian/recipes/mysql.rb b/chef/cookbooks/debian/recipes/mysql.rb new file mode 100644 index 0000000000000000000000000000000000000000..d300d75d3e8211076f62189b528abe606483f2b0 --- /dev/null +++ b/chef/cookbooks/debian/recipes/mysql.rb @@ -0,0 +1,3 @@ +execute "install mysql" do + command "apt-get install -y mysql-server libmysqlclient-dev libmysql-ruby" +end diff --git a/chef/cookbooks/debian/recipes/nginx.rb b/chef/cookbooks/debian/recipes/nginx.rb new file mode 100644 index 0000000000000000000000000000000000000000..c778792d200b219e58975273cf73a3259ba4ee2e --- /dev/null +++ b/chef/cookbooks/debian/recipes/nginx.rb @@ -0,0 +1,4 @@ +execute "pcre dependency" do + command "apt-get install -y libpcre3 libpcre3-dev" +end +include_recipe "common::nginx" diff --git a/chef/cookbooks/debian/recipes/post_bootstrap.rb b/chef/cookbooks/debian/recipes/post_bootstrap.rb new file mode 100644 index 0000000000000000000000000000000000000000..277cd3ee829e16d7de41ab78c95acd0867021433 --- /dev/null +++ b/chef/cookbooks/debian/recipes/post_bootstrap.rb @@ -0,0 +1 @@ +include_recipe "debian::java" diff --git a/chef/cookbooks/debian/recipes/redis.rb b/chef/cookbooks/debian/recipes/redis.rb new file mode 100644 index 0000000000000000000000000000000000000000..ccc34cee27f02e63000da88c8f409f0c2936981c --- /dev/null +++ b/chef/cookbooks/debian/recipes/redis.rb @@ -0,0 +1,19 @@ +execute "download redis" do + command "wget http://ftp.us.debian.org/debian/pool/main/r/redis/redis-server_2.2.2-1_amd64.deb" +end + +execute "install redis" do + command "dpkg -i redis-server_2.2.2-1_amd64.deb" +end + +cookbook_file "/usr/local/etc/redis.conf" do + source "redis.conf" +end + +execute "change redis.conf permissions" do + command "chmod 755 /usr/local/etc/redis.conf" +end + +execute "make the redis db directory" do + command "mkdir -p /usr/local/var/db/redis" +end diff --git a/config/app_config.yml.example b/config/app_config.yml.example index 58dc0bbadd571da1efc8f7d4d119149b3321b4db..c22764da944c8860128f6d6b160ee99104fbe4eb 100644 --- a/config/app_config.yml.example +++ b/config/app_config.yml.example @@ -31,8 +31,8 @@ default: # Secure websocket confguration (wss://) # requires SSL cert and key socket_secure: false - socket_private_key_location: '/full/path/to/file.key' socket_cert_chain_location: '/full/path/to/cert_chain.crt' + socket_private_key_location: '/full/path/to/file.key' # Diaspora is only tested against this default pubsub server. pubsub_server: 'https://pubsubhubbub.appspot.com/' diff --git a/config/assets.yml b/config/assets.yml index d80f78ec222ecbe74af4ab1ceaee8f760ba16c6e..075ac4f283bdfddfd43b7d23ac7f4b0c48f03582 100644 --- a/config/assets.yml +++ b/config/assets.yml @@ -22,18 +22,19 @@ javascripts: - public/javascripts/vendor/charCount.js - public/javascripts/jquery.autocomplete-custom.js - public/javascripts/jquery.infieldlabel-custom.js - - public/javascripts/fileuploader-custom.js - public/javascripts/keycodes.js + - public/javascripts/fileuploader-custom.js - public/javascripts/diaspora.js - public/javascripts/widgets/i18n.js - public/javascripts/widgets/alert.js - public/javascripts/widgets/embedder.js - public/javascripts/widgets/timeago.js + - public/javascripts/widgets/infinite-scroll.js - public/javascripts/widgets/directionDetector.js + - public/javascripts/widgets/notifications.js - public/javascripts/view.js - public/javascripts/stream.js - public/javascripts/search.js - - public/javascripts/infinite-scroll.js mobile: - public/javascripts/vendor/jquery152.min.js - public/javascripts/custom-mobile-scripting.js @@ -41,7 +42,7 @@ javascripts: - public/javascripts/vendor/jquery.infinitescroll.min.js - public/javascripts/diaspora.js - public/javascripts/widgets/i18n.js - - public/javascripts/infinite-scroll.js + - public/javascripts/widgets/infinite-scroll.js - public/javascripts/rails.js mailchimp: - public/javascripts/vendor/mailchimp/jquery.form.js diff --git a/config/database.yml.example b/config/database.yml.example index b9b36387f7713a568349e024e7a86a7664603cd3..3ac1843487eac8ea6ab77fb17c3201d5ab778d42 100644 --- a/config/database.yml.example +++ b/config/database.yml.example @@ -1,21 +1,22 @@ -test: +common: &common adapter: mysql2 - database: diaspora_test - username: root - password: password + host: "localhost" + port: 3306 +# socket: /tmp/mysql.sock + username: "root" + password: "password" charset: utf8 collation: utf8_bin + + development: - adapter: mysql2 + <<: *common database: diaspora_development - username: root - password: password - charset: utf8 - collation: utf8_bin + production: - adapter: mysql2 + <<: *common database: diaspora_production - username: root - password: password - charset: utf8 - collation: utf8_bin + +test: + <<: *common + database: "diaspora_test" diff --git a/config/locale_settings.yml b/config/locale_settings.yml index 60fe3c7b902f25f34a32de1e3e5db237efe92a00..636fe6e831f6f55fa13df9d447452550f0e52e3d 100644 --- a/config/locale_settings.yml +++ b/config/locale_settings.yml @@ -1,5 +1,6 @@ default: "en" available: + bg: "българÑки език" br: "Brezhoneg" ca: "Català " cs: "ÄŒeÅ¡tina" @@ -21,6 +22,8 @@ available: id: "Bahasa Indonesia" is: "Ãslenska" it: "Italiano" + ja: "日本語" + ko: "í•œêµì–´" lt: "LietuviÅ¡kai" mk: "македонÑки" ml: "മലയാളം" @@ -35,7 +38,7 @@ available: sk: "SlovenÄina" sv: "Svenska" tr: "Türk" - zh: "ä¸æ–‡" + zh-CN: "ä¸æ–‡" zh-TW: "å°ç£ä¸æ–‡" fallbacks: en-GB: diff --git a/config/locales/cldr/README.md b/config/locales/cldr/README.md new file mode 100644 index 0000000000000000000000000000000000000000..153d10c19ec24913e939adcde07e13d7ac0a0f00 --- /dev/null +++ b/config/locales/cldr/README.md @@ -0,0 +1 @@ +DO NOT EDIT THIS FILES. Thanks! diff --git a/config/locales/cldr/bg_plurals.rb b/config/locales/cldr/bg_plurals.rb new file mode 100644 index 0000000000000000000000000000000000000000..642df1b9ff10a00d50cf49446df2da1f3439c632 --- /dev/null +++ b/config/locales/cldr/bg_plurals.rb @@ -0,0 +1 @@ +{ :bg => { :i18n => {:plural => { :keys => [:one, :other], :rule => lambda { |n| n == 1 ? :one : :other } } } } } \ No newline at end of file diff --git a/config/locales/cldr/ca_plurals.rb b/config/locales/cldr/ca_plurals.rb new file mode 100644 index 0000000000000000000000000000000000000000..67f246d79a895fd558cf492f85d39aef545e924d --- /dev/null +++ b/config/locales/cldr/ca_plurals.rb @@ -0,0 +1 @@ +{ :ca => { :i18n => {:plural => { :keys => [:one, :other], :rule => lambda { |n| n == 1 ? :one : :other } } } } } \ No newline at end of file diff --git a/config/locales/cldr/cs_plurals.rb b/config/locales/cldr/cs_plurals.rb new file mode 100644 index 0000000000000000000000000000000000000000..48115c7b218f9c802dcf44529b52984a54d5361b --- /dev/null +++ b/config/locales/cldr/cs_plurals.rb @@ -0,0 +1 @@ +{ :cs => { :i18n => {:plural => { :keys => [:one, :few, :other], :rule => lambda { |n| n == 1 ? :one : [2, 3, 4].include?(n) ? :few : :other } } } } } \ No newline at end of file diff --git a/config/locales/cldr/cy_plurals.rb b/config/locales/cldr/cy_plurals.rb new file mode 100644 index 0000000000000000000000000000000000000000..72ed2ac4d300ec97540820cedb7c8fb3515f2c9d --- /dev/null +++ b/config/locales/cldr/cy_plurals.rb @@ -0,0 +1 @@ +{ :cy => { :i18n => {:plural => { :keys => [:one, :two, :many, :other], :rule => lambda { |n| n == 1 ? :one : n == 2 ? :two : n == 8 || n == 11 ? :many : :other } } } } } \ No newline at end of file diff --git a/config/locales/cldr/da_plurals.rb b/config/locales/cldr/da_plurals.rb new file mode 100644 index 0000000000000000000000000000000000000000..75d97ee78cbe679a7b942fe8a5b2907d8669b41c --- /dev/null +++ b/config/locales/cldr/da_plurals.rb @@ -0,0 +1 @@ +{ :da => { :i18n => {:plural => { :keys => [:one, :other], :rule => lambda { |n| n == 1 ? :one : :other } } } } } \ No newline at end of file diff --git a/config/locales/cldr/de_plurals.rb b/config/locales/cldr/de_plurals.rb new file mode 100644 index 0000000000000000000000000000000000000000..a0f157ce852d2add28808ccea3eb74859e697642 --- /dev/null +++ b/config/locales/cldr/de_plurals.rb @@ -0,0 +1 @@ +{ :de => { :i18n => {:plural => { :keys => [:one, :other], :rule => lambda { |n| n == 1 ? :one : :other } } } } } \ No newline at end of file diff --git a/config/locales/cldr/el_plurals.rb b/config/locales/cldr/el_plurals.rb new file mode 100644 index 0000000000000000000000000000000000000000..5f61405a805c3f1557b2aeabde9732e8af021ea9 --- /dev/null +++ b/config/locales/cldr/el_plurals.rb @@ -0,0 +1 @@ +{ :el => { :i18n => {:plural => { :keys => [:one, :other], :rule => lambda { |n| n == 1 ? :one : :other } } } } } \ No newline at end of file diff --git a/config/locales/cldr/en_plurals.rb b/config/locales/cldr/en_plurals.rb new file mode 100644 index 0000000000000000000000000000000000000000..e66a6117f47a9c5a50bd04e04d0e0a4b89bc2d67 --- /dev/null +++ b/config/locales/cldr/en_plurals.rb @@ -0,0 +1 @@ +{ :en => { :i18n => {:plural => { :keys => [:one, :other], :rule => lambda { |n| n == 1 ? :one : :other } } } } } \ No newline at end of file diff --git a/config/locales/cldr/es_plurals.rb b/config/locales/cldr/es_plurals.rb new file mode 100644 index 0000000000000000000000000000000000000000..abfa8cb18b40d226079dd861f9c8e3e72881bb7b --- /dev/null +++ b/config/locales/cldr/es_plurals.rb @@ -0,0 +1 @@ +{ :es => { :i18n => {:plural => { :keys => [:one, :other], :rule => lambda { |n| n == 1 ? :one : :other } } } } } \ No newline at end of file diff --git a/config/locales/cldr/eu_plurals.rb b/config/locales/cldr/eu_plurals.rb new file mode 100644 index 0000000000000000000000000000000000000000..8f0c5f463d5c025310c6e7b1d92659fc297cd456 --- /dev/null +++ b/config/locales/cldr/eu_plurals.rb @@ -0,0 +1 @@ +{ :eu => { :i18n => {:plural => { :keys => [:one, :other], :rule => lambda { |n| n == 1 ? :one : :other } } } } } \ No newline at end of file diff --git a/config/locales/cldr/fi_plurals.rb b/config/locales/cldr/fi_plurals.rb new file mode 100644 index 0000000000000000000000000000000000000000..51a57d48ca0094e1690bd5573e0333ba4994a641 --- /dev/null +++ b/config/locales/cldr/fi_plurals.rb @@ -0,0 +1 @@ +{ :fi => { :i18n => {:plural => { :keys => [:one, :other], :rule => lambda { |n| n == 1 ? :one : :other } } } } } \ No newline at end of file diff --git a/config/locales/cldr/fr_plurals.rb b/config/locales/cldr/fr_plurals.rb new file mode 100644 index 0000000000000000000000000000000000000000..eb783f2388caa76ef9c6fb0e5741d9ab6a0496c4 --- /dev/null +++ b/config/locales/cldr/fr_plurals.rb @@ -0,0 +1 @@ +{ :fr => { :i18n => {:plural => { :keys => [:one, :other], :rule => lambda { |n| n && n != 2 ? :one : :other } } } } } \ No newline at end of file diff --git a/config/locales/cldr/ga_plurals.rb b/config/locales/cldr/ga_plurals.rb new file mode 100644 index 0000000000000000000000000000000000000000..1301f8b3efa761dcefe10edb82cef11957dc5675 --- /dev/null +++ b/config/locales/cldr/ga_plurals.rb @@ -0,0 +1 @@ +{ :ga => { :i18n => {:plural => { :keys => [:one, :two, :other], :rule => lambda { |n| n == 1 ? :one : n == 2 ? :two : :other } } } } } \ No newline at end of file diff --git a/config/locales/cldr/gl_plurals.rb b/config/locales/cldr/gl_plurals.rb new file mode 100644 index 0000000000000000000000000000000000000000..f94440a77c644807120491845e10540bbd965553 --- /dev/null +++ b/config/locales/cldr/gl_plurals.rb @@ -0,0 +1 @@ +{ :gl => { :i18n => {:plural => { :keys => [:one, :other], :rule => lambda { |n| n == 1 ? :one : :other } } } } } \ No newline at end of file diff --git a/config/locales/cldr/he_plurals.rb b/config/locales/cldr/he_plurals.rb new file mode 100644 index 0000000000000000000000000000000000000000..36ea35c26e2a267ba430b3ef1fd1d0f037e6d3d4 --- /dev/null +++ b/config/locales/cldr/he_plurals.rb @@ -0,0 +1 @@ +{ :he => { :i18n => {:plural => { :keys => [:one, :other], :rule => lambda { |n| n == 1 ? :one : :other } } } } } \ No newline at end of file diff --git a/config/locales/cldr/hu_plurals.rb b/config/locales/cldr/hu_plurals.rb new file mode 100644 index 0000000000000000000000000000000000000000..31ee31fb90064d3223f60dd764c494a92f954c59 --- /dev/null +++ b/config/locales/cldr/hu_plurals.rb @@ -0,0 +1 @@ +{ :hu => { :i18n => {:plural => { :keys => [:other], :rule => lambda { |n| :other } } } } } \ No newline at end of file diff --git a/config/locales/cldr/id_plurals.rb b/config/locales/cldr/id_plurals.rb new file mode 100644 index 0000000000000000000000000000000000000000..183ae3cacc07d19f76c36de93af7b732c9a396ad --- /dev/null +++ b/config/locales/cldr/id_plurals.rb @@ -0,0 +1 @@ +{ :id => { :i18n => {:plural => { :keys => [:other], :rule => lambda { |n| :other } } } } } \ No newline at end of file diff --git a/config/locales/cldr/is_plurals.rb b/config/locales/cldr/is_plurals.rb new file mode 100644 index 0000000000000000000000000000000000000000..b9b3fb66ea3ecc5601cd546567c86a3e65fd8a7f --- /dev/null +++ b/config/locales/cldr/is_plurals.rb @@ -0,0 +1 @@ +{ :is => { :i18n => {:plural => { :keys => [:one, :other], :rule => lambda { |n| n == 1 ? :one : :other } } } } } \ No newline at end of file diff --git a/config/locales/cldr/it_plurals.rb b/config/locales/cldr/it_plurals.rb new file mode 100644 index 0000000000000000000000000000000000000000..4264caa5573b3f0a1181d27a7899e059666867c5 --- /dev/null +++ b/config/locales/cldr/it_plurals.rb @@ -0,0 +1 @@ +{ :it => { :i18n => {:plural => { :keys => [:one, :other], :rule => lambda { |n| n == 1 ? :one : :other } } } } } \ No newline at end of file diff --git a/config/locales/cldr/ja_plurals.rb b/config/locales/cldr/ja_plurals.rb new file mode 100644 index 0000000000000000000000000000000000000000..31aef412285388835caf9daf240268c32c8f654a --- /dev/null +++ b/config/locales/cldr/ja_plurals.rb @@ -0,0 +1 @@ +{ :ja => { :i18n => {:plural => { :keys => [:other], :rule => lambda { |n| :other } } } } } \ No newline at end of file diff --git a/config/locales/cldr/ko_plurals.rb b/config/locales/cldr/ko_plurals.rb new file mode 100644 index 0000000000000000000000000000000000000000..dff9b05438902a830694c2e4e69a0b13393db7db --- /dev/null +++ b/config/locales/cldr/ko_plurals.rb @@ -0,0 +1 @@ +{ :ko => { :i18n => {:plural => { :keys => [:other], :rule => lambda { |n| :other } } } } } \ No newline at end of file diff --git a/config/locales/cldr/lt_plurals.rb b/config/locales/cldr/lt_plurals.rb new file mode 100644 index 0000000000000000000000000000000000000000..f13f5074b4a4afe11c97377551ccf5b704e28214 --- /dev/null +++ b/config/locales/cldr/lt_plurals.rb @@ -0,0 +1 @@ +{ :lt => { :i18n => {:plural => { :keys => [:one, :few, :other], :rule => lambda { |n| n % 10 == 1 && ![11, 12, 13, 14, 15, 16, 17, 18, 19].include?(n % 100) ? :one : [2, 3, 4, 5, 6, 7, 8, 9].include?(n % 10) && ![11, 12, 13, 14, 15, 16, 17, 18, 19].include?(n % 100) ? :few : :other } } } } } \ No newline at end of file diff --git a/config/locales/cldr/mk_plurals.rb b/config/locales/cldr/mk_plurals.rb new file mode 100644 index 0000000000000000000000000000000000000000..3b2aeb73ccea6df8bd7b814dab68c2e810e85d36 --- /dev/null +++ b/config/locales/cldr/mk_plurals.rb @@ -0,0 +1 @@ +{ :mk => { :i18n => {:plural => { :keys => [:one, :other], :rule => lambda { |n| n % 10 == 1 ? :one : :other } } } } } \ No newline at end of file diff --git a/config/locales/cldr/ml_plurals.rb b/config/locales/cldr/ml_plurals.rb new file mode 100644 index 0000000000000000000000000000000000000000..2815d104cd485ae421a53282f1e1c114aadb45ef --- /dev/null +++ b/config/locales/cldr/ml_plurals.rb @@ -0,0 +1 @@ +{ :ml => { :i18n => {:plural => { :keys => [:one, :other], :rule => lambda { |n| n == 1 ? :one : :other } } } } } \ No newline at end of file diff --git a/config/locales/cldr/nb_plurals.rb b/config/locales/cldr/nb_plurals.rb new file mode 100644 index 0000000000000000000000000000000000000000..8da3eaefb7fbdb8524a6a60d04b3c2def2505c11 --- /dev/null +++ b/config/locales/cldr/nb_plurals.rb @@ -0,0 +1 @@ +{ :nb => { :i18n => {:plural => { :keys => [:one, :other], :rule => lambda { |n| n == 1 ? :one : :other } } } } } \ No newline at end of file diff --git a/config/locales/cldr/nl_plurals.rb b/config/locales/cldr/nl_plurals.rb new file mode 100644 index 0000000000000000000000000000000000000000..acdb5cdf59654fd174344f60508714d355c274e5 --- /dev/null +++ b/config/locales/cldr/nl_plurals.rb @@ -0,0 +1 @@ +{ :nl => { :i18n => {:plural => { :keys => [:one, :other], :rule => lambda { |n| n == 1 ? :one : :other } } } } } \ No newline at end of file diff --git a/config/locales/cldr/pa_plurals.rb b/config/locales/cldr/pa_plurals.rb new file mode 100644 index 0000000000000000000000000000000000000000..a1e3b3bfa4c3bb859958ae5047a4e8f97c75951e --- /dev/null +++ b/config/locales/cldr/pa_plurals.rb @@ -0,0 +1 @@ +{ :pa => { :i18n => {:plural => { :keys => [:one, :other], :rule => lambda { |n| n == 1 ? :one : :other } } } } } \ No newline at end of file diff --git a/config/locales/cldr/pl_plurals.rb b/config/locales/cldr/pl_plurals.rb new file mode 100644 index 0000000000000000000000000000000000000000..a27d719679eed06601138d81d3c163e956fcd97a --- /dev/null +++ b/config/locales/cldr/pl_plurals.rb @@ -0,0 +1 @@ +{ :pl => { :i18n => {:plural => { :keys => [:one, :few, :other], :rule => lambda { |n| n == 1 ? :one : [2, 3, 4].include?(n % 10) && ![12, 13, 14].include?(n % 100) && ![22, 23, 24].include?(n % 100) ? :few : :other } } } } } \ No newline at end of file diff --git a/config/locales/cldr/ro_plurals.rb b/config/locales/cldr/ro_plurals.rb new file mode 100644 index 0000000000000000000000000000000000000000..452acb5cc20658242c4f30534f89a8a386962506 --- /dev/null +++ b/config/locales/cldr/ro_plurals.rb @@ -0,0 +1 @@ +{ :ro => { :i18n => {:plural => { :keys => [:one, :few, :other], :rule => lambda { |n| n == 1 ? :one : n == 0 ? :few : :other } } } } } \ No newline at end of file diff --git a/config/locales/cldr/ru_plurals.rb b/config/locales/cldr/ru_plurals.rb new file mode 100644 index 0000000000000000000000000000000000000000..65156cfba9908feadd80b72cd2443b30115f3b08 --- /dev/null +++ b/config/locales/cldr/ru_plurals.rb @@ -0,0 +1 @@ +{ :ru => { :i18n => {:plural => { :keys => [:one, :few, :many, :other], :rule => lambda { |n| n % 10 == 1 && n % 100 != 11 ? :one : [2, 3, 4].include?(n % 10) && ![12, 13, 14].include?(n % 100) ? :few : n % 10 == 0 || [5, 6, 7, 8, 9].include?(n % 10) || [11, 12, 13, 14].include?(n % 100) ? :many : :other } } } } } \ No newline at end of file diff --git a/config/locales/cldr/sk_plurals.rb b/config/locales/cldr/sk_plurals.rb new file mode 100644 index 0000000000000000000000000000000000000000..544999796fbbf523e36913c75b396696560f5ed7 --- /dev/null +++ b/config/locales/cldr/sk_plurals.rb @@ -0,0 +1 @@ +{ :sk => { :i18n => {:plural => { :keys => [:one, :few, :other], :rule => lambda { |n| n == 1 ? :one : [2, 3, 4].include?(n) ? :few : :other } } } } } \ No newline at end of file diff --git a/config/locales/cldr/sl_plurals.rb b/config/locales/cldr/sl_plurals.rb new file mode 100644 index 0000000000000000000000000000000000000000..0ccd47170d0cf4c6ed3010a6e0fef2cabb073d9b --- /dev/null +++ b/config/locales/cldr/sl_plurals.rb @@ -0,0 +1 @@ +{ :sl => { :i18n => {:plural => { :keys => [:one, :two, :few, :other], :rule => lambda { |n| n % 100 == 1 ? :one : n % 100 == 2 ? :two : [3, 4].include?(n % 100) ? :few : :other } } } } } \ No newline at end of file diff --git a/config/locales/cldr/sv_plurals.rb b/config/locales/cldr/sv_plurals.rb new file mode 100644 index 0000000000000000000000000000000000000000..9bfa12f2404a930d4be21a1cb0de4f5dff17e15c --- /dev/null +++ b/config/locales/cldr/sv_plurals.rb @@ -0,0 +1 @@ +{ :sv => { :i18n => {:plural => { :keys => [:one, :other], :rule => lambda { |n| n == 1 ? :one : :other } } } } } \ No newline at end of file diff --git a/config/locales/cldr/tr_plurals.rb b/config/locales/cldr/tr_plurals.rb new file mode 100644 index 0000000000000000000000000000000000000000..b0fb316ee87e666eefbfdfa6dfd09c4a971e5cf1 --- /dev/null +++ b/config/locales/cldr/tr_plurals.rb @@ -0,0 +1 @@ +{ :tr => { :i18n => {:plural => { :keys => [:other], :rule => lambda { |n| :other } } } } } \ No newline at end of file diff --git a/config/locales/devise/devise.bg.yml b/config/locales/devise/devise.bg.yml new file mode 100644 index 0000000000000000000000000000000000000000..e3462e30762a4eb9acbbb6322959b2a4d9e02286 --- /dev/null +++ b/config/locales/devise/devise.bg.yml @@ -0,0 +1,97 @@ +# Copyright (c) 2010, Diaspora Inc. This file is +# licensed under the Affero General Public License version 3 or later. See +# the COPYRIGHT file. + + +bg: + devise: + confirmations: + confirmed: "Ðкаунтът е потвърден. Сега Ñте впиÑани." + new: + resend_confirmation: "Повторно изпращане на инÑтрукциите за отключване" + send_instructions: "След нÑколко минути ще получите ел. пиÑмо Ñъдържащо инÑтрукции как да потвърдите акаунта Ñи." + failure: + inactive: "Ðкаунтът вÑе още не е активиран." + invalid: "Ðевалидно потребителÑко име или парола." + invalid_token: "Данните за удоÑтоверÑване не Ñа валидни." + locked: "Ðкаунтът ви е заключен." + timeout: "СеÑиÑта ви изтече, Ð¼Ð¾Ð»Ñ Ð²Ð¿Ð¸ÑˆÐµÑ‚Ðµ Ñе отново, за да продължите." + unauthenticated: "Впишете Ñе или Ñе региÑтрирайте, за да продължите." + unconfirmed: "Потвърдете акаунта, за да продължите." + invitations: + invitation_token_invalid: "ПредоÑтавените данни за поканата не Ñа валидни!" + send_instructions: "Поканата ви е изпратена." + updated: "Паролата е зададена. Сега Ñте впиÑани." + mailer: + confirmation_instructions: + confirm: "Потвърждаване на акаунта" + subject: "ИнÑтрукции за потвърждаване" + you_can_confirm: "Можете да потвърдите акаунта Ñи чрез линка по-долу:" + hello: "Здравейте %{email}!" + invitation: + accept: "Приеман поканата" + ignore: "Ðко не желаете да приемете поканата, Ð¼Ð¾Ð»Ñ Ð¸Ð³Ð½Ð¾Ñ€Ð¸Ñ€Ð°Ð¹Ñ‚Ðµ пиÑмото." + no_account_till: "Ðкаунтът нÑма да бъде Ñъздаден докато не поÑетите връзката по-горе и не Ñе региÑтрирате." + subject: "Поканени Ñте да Ñе приÑъедините към Diaspora!" + inviters: + accept_at: ", на Ð°Ð´Ñ€ÐµÑ %{url}. Можете да приемете поканата чрез линка по-долу." + has_invited_you: "%{name} ви кани да Ñе приÑъедините към Diaspora" + have_invited_you: "%{names} ви кани да Ñе приÑъедините към Diaspora" + reset_password_instructions: + change: "ПромÑна на паролата" + ignore: "Ðко не Ñте заÑвили промÑната, Ð¼Ð¾Ð»Ñ Ð¸Ð³Ð½Ð¾Ñ€Ð¸Ñ€Ð°Ð¹Ñ‚Ðµ пиÑмото." + someone_requested: "ÐÑкой е заÑвил връзка за промÑна на паролата. Можете да Ñ Ð¿Ñ€Ð¾Ð¼ÐµÐ½Ð¸Ñ‚Ðµ чрез връзката по-долу." + subject: "ИнÑтрукции за възÑтановÑване на паролата" + wont_change: "Паролата ви нÑма да бъде променена докато не поÑетите връзката по-горе и не зададете нова." + unlock_instructions: + account_locked: "Ðкаунтът ви е заключен поради голÑм брой неуÑпешни опити за впиÑване." + click_to_unlock: "За отключване на акаунта кликнете върху връзката по-долу:" + subject: "ИнÑтрукции за отключване" + unlock: "Отключване на акаунта" + welcome: "Добре дошли %{email}!" + passwords: + edit: + change_password: "ПромÑна на паролата" + new: + forgot_password: "Забравена парола?" + no_account: "Ðе ÑъщеÑтвува акаунт Ñ Ð²ÑŠÐ²ÐµÐ´ÐµÐ½Ð°Ñ‚Ð° ел. поща. Ðко очаквате покана, знайте че ние ги раздаваме възможно най-бързо" + send_password_instructions: "Изпращане на инÑтрукции за възÑтановÑване на паролата" + send_instructions: "Ще получите ел. пиÑмо Ñ Ð¸Ð½Ñтрукции за промÑна на паролата." + updated: "Паролата е променена уÑпешно. Сега Ñте впиÑани." + registrations: + destroyed: "Довиждане! Ðкаунтът ви е изтрит уÑпешно. ÐадÑваме Ñе да Ñе видим отново." + signed_up: "РегиÑтрирахте Ñе уÑпешно. Ðко е включена опциÑта за потвърждаване ще получите ел. пиÑмо Ñ Ð¸Ð½Ñтрукции." + updated: "Обновихте уÑпешно акаунта Ñи." + sessions: + new: + alpha_software: "Ще ползвате Ñофтуерен продукт в ранен етап на развитие." + bugs_and_feedback: "Имайте предвид, че ще Ñе ÑблъÑкате ÑÑŠÑ Ñофтуерни грешки. Препоръчваме ви да ползвате бутона Feedback (в деÑÐ½Ð¸Ñ ÐºÑ€Ð°Ð¹ на Ñтраницата) за да Ñъобщавате за вÑеки проблем! Ще Ñе потрудим да отÑтраним вÑеки проблем, за който ни Ñъобщите, възможно най-бързо." + bugs_and_feedback_mobile: "Имайте предвид, че ще Ñе ÑблъÑкате ÑÑŠÑ Ñофтуерни грешки. Препоръчваме ви да Ñъобщавате за вÑеки проблем! Ще Ñе потрудим да отÑтраним вÑеки проблем, за който ни Ñъобщите, възможно най-бързо." + login: "ВпиÑване" + modern_browsers: "поддържа Ñамо Ñъвременни браузъри." + password: "Парола" + remember_me: "Запомни ме" + sign_in: "ВпиÑване" + username: "ПотребителÑко име" + signed_in: "ВпиÑахте Ñе уÑпешно." + signed_out: "ОтпиÑахте Ñе уÑпешно." + shared: + links: + forgot_your_password: "Забравена парола?" + receive_confirmation: "Ðе Ñте получили инÑтрукциите за отключване?" + receive_unlock: "Ðе Ñте получили инÑтрукциите за отключване?" + sign_in: "ВпиÑване" + sign_up: "РегиÑтриране" + sign_up_closed: "За Ñега региÑтрациите не Ñа възможни." + mail_signup_form: + sign_up_for_an_invite: "Запишете Ñе за покана!" + unlocks: + new: + resend_unlock: "Повторно изпращане на инÑтрукциите за отключване" + send_instructions: "След нÑколко минути ще получите ел. пиÑмо Ñъдържащо инÑтрукции как да отключите акаунта Ñи." + unlocked: "Ðкаунтът е отключен. Сега Ñте впиÑани." + errors: + messages: + already_confirmed: "вече е потвърдено" + not_found: "не е открито" + not_locked: "не е заключена" diff --git a/config/locales/devise/devise.da.yml b/config/locales/devise/devise.da.yml index f9a808a4e13e841b8acc087d2affd57ad7f08d5a..f8b00e21fa8f56e134b8c9ad74b662f73226b958 100644 --- a/config/locales/devise/devise.da.yml +++ b/config/locales/devise/devise.da.yml @@ -12,7 +12,7 @@ da: send_instructions: "Du vil modtage en e-mail med instruktioner om hvordan du bekræfter din konto om et par minutter." failure: inactive: "Din konto er endnu ikke aktiveret." - invalid: "Forkert e-mail eller adgangskode." + invalid: "Forkert brugernavn eller adgangskode." invalid_token: "Ugyldig token." locked: "Din konto er lÃ¥st." timeout: "Du har været inaktiv for længe. Log ind for at fortsætte." diff --git a/config/locales/devise/devise.es.yml b/config/locales/devise/devise.es.yml index c807f4ce34d0e020fc6a471bab85d0f028f8de25..46df18487eefecf586edb334bd0935c5547552e0 100644 --- a/config/locales/devise/devise.es.yml +++ b/config/locales/devise/devise.es.yml @@ -12,7 +12,7 @@ es: send_instructions: "Recibirás un correo con instrucciones para confirmar tu cuenta en pocos minutos." failure: inactive: "Tu cuenta aún no ha sido activada." - invalid: "Contraseña o correo incorrecto." + invalid: "Nombre de usuario o contraseña incorrectos." invalid_token: "Identificador de autenticación incorrecto." locked: "Tu cuenta está bloqueada." timeout: "Tu sesión ha expirado, por favor accede de nuevo para continuar." diff --git a/config/locales/devise/devise.eu.yml b/config/locales/devise/devise.eu.yml index 309fc22633ef9bea87d79197c08fc56f8cf98775..c93926650f306744af605b49fcd5594042df56d0 100644 --- a/config/locales/devise/devise.eu.yml +++ b/config/locales/devise/devise.eu.yml @@ -12,7 +12,7 @@ eu: send_instructions: "Minutu batzuetan kontua baieztatzeko argibideak jasoko dituzu e-postan." failure: inactive: "Zure kontua ez da aktibatu oraindik." - invalid: "E-posta edo pasahitza okerra." + invalid: "Erabiltzaile edo pasahitz okerra." invalid_token: "Autentikazio datu akasduna." locked: "Zure kontua ez dago erabilgarri." timeout: "Zure sesioa bukatu da, autentikatu berriz jarraitzeko." diff --git a/config/locales/devise/devise.gl.yml b/config/locales/devise/devise.gl.yml index e903ef3cb2b464f5e7f175c967930063b39eac8a..9a90c1a5076794c8f4df9a0c8e7c6e4838fe38ce 100644 --- a/config/locales/devise/devise.gl.yml +++ b/config/locales/devise/devise.gl.yml @@ -6,32 +6,32 @@ gl: devise: confirmations: - confirmed: "A túa conta foi confirmada. Xa estás en Diaspora" + confirmed: "Confirmouse a súa conta. Xa está en Diaspora." new: - resend_confirmation: "Volver a enviar instruccións de confirmación." - send_instructions: "Recibiraás un correo con instrucción para confirmar a túa conta nuns minutos." + resend_confirmation: "Volver enviar as instrucións de confirmación." + send_instructions: "En cuestión de minutos recibirá un correo electrónico con instrucións para confirmar a súa conta." failure: - inactive: "A túa conta aÃnda non foi activada." - invalid: "Correo ou contrasinal incorrecta." - invalid_token: "Invitación inválida." - locked: "A túa conta está bloqueada." - timeout: "A túa sesión rematou, entra de novo para continuar." - unauthenticated: "Tes que entrar ou rexistrarte antes de seguir." - unconfirmed: "Tes que confirmar a túa conta antes de seguir." + inactive: "AÃnda non se activou a súa conta." + invalid: "O correo electrónico ou contrasinal son incorrectos." + invalid_token: "A invitación non é válida." + locked: "A súa conta está bloqueada." + timeout: "A súa sesión rematou, volva identificarse para continuar." + unauthenticated: "Ten que identificarse ou rexistrarte para continuar." + unconfirmed: "Ten que confirmar a súa conta para continuar." invitations: - invitation_token_invalid: "Está invitación non é valida!" - send_instructions: "A túa invitación foi enviada." - updated: "O teu contrasinal estableceuse correctamente." + invitation_token_invalid: "A invitación non é valida!" + send_instructions: "Enviouse a invitación." + updated: "O novo contrasinal gardouse correctamente." mailer: confirmation_instructions: - confirm: "Confirmar conta" - subject: "Instruccións de confirmación" - you_can_confirm: "Podes confirmar a túa conta a través do enlace de abaixo:" + confirm: "Confirmar a conta" + subject: "Instrucións de confirmación" + you_can_confirm: "Pode confirmar a súa conta mediante a ligazón que hai máis abaixo:" hello: "Ola %{email}!" invitation: - accept: "Aceptar convite" - ignore: "Se non queres aceptar a invitación, por favor ignora este correo." - no_account_till: "A túa conta non se creará ata que premas o link de arriba e te rexistres." + accept: "Aceptar a invitación" + ignore: "Se non quere aceptar a invitación, non ten máis que ignorar esta mensaxe." + no_account_till: "A súa conta non se creará ata que premas a ligazón que hai máis arriba e se rexistre." subject: "Fuches invitado a formar parte de Diaspora!" inviters: accept_at: ", %{url}, podes aceptar mediante o link de abaixo." @@ -70,7 +70,7 @@ gl: login: "Nome de usuario" modern_browsers: "só acepta navegadores actuais." password: "Contrasinal" - remember_me: "Lémbrame" + remember_me: "Lembrar os datos." sign_in: "Entrar" username: "Nome de usuario" signed_in: "Entrou satisfactoriamente." diff --git a/config/locales/devise/devise.he.yml b/config/locales/devise/devise.he.yml index 6f59b8b0734daa805c35b254d17c645ce80dc162..9823a00aeb5185d28b169ce7f3c94efc5fcb3287 100644 --- a/config/locales/devise/devise.he.yml +++ b/config/locales/devise/devise.he.yml @@ -12,7 +12,7 @@ he: send_instructions: "בעוד מספר דקות תתקבל לתיבת הדו×״ל שלך הודעה ×¢× ×”× ×—×™×•×ª כיצד ל×מת ×ת ×—×©×‘×•× ×š." failure: inactive: "×—×©×‘×•× ×š ×œ× ×”×•×¤×¢×œ עדיין." - invalid: "הססמה ×ו הדו×״ל שגויי×." + invalid: "×©× ×”×ž×©×ª×ž×© ×ו הססמה שגויי×." invalid_token: "×סימון ×”×ימות שגוי." locked: "×—×©×‘×•× ×š × ×¢×•×œ." timeout: "ההפעלה שלך פגה, × × ×œ×”×™×›× ×¡ שוב כדי להמשיך." diff --git a/config/locales/devise/devise.it.yml b/config/locales/devise/devise.it.yml index e12bd126e94605d9719b719615c22b75c50fdbf8..881385883afb0f3650fff1f579635e44a1e4c518 100644 --- a/config/locales/devise/devise.it.yml +++ b/config/locales/devise/devise.it.yml @@ -12,7 +12,7 @@ it: send_instructions: "Tra pochi minuti riceverai una email per confermare il tuo account." failure: inactive: "Il tuo account non è ancora stato attivato." - invalid: "Email o password errati." + invalid: "Nome utente o password errati." invalid_token: "Token di autenticazione errato." locked: "Il tuo account è bloccato." timeout: "La tua sessione è scaduta, effettua di nuovo l'accesso per continuare." @@ -71,7 +71,7 @@ it: modern_browsers: "supporta soltano i browser recenti." password: "Password" remember_me: "Ricordami" - sign_in: "Registrati" + sign_in: "Accedi" username: "Nome utente" signed_in: "Accesso effettuato con successo." signed_out: "Disconnessione effettuata con successo." diff --git a/config/locales/devise/devise.ja.yml b/config/locales/devise/devise.ja.yml new file mode 100644 index 0000000000000000000000000000000000000000..9c40979cf582a53168337abfaa0bf8b5b17b3e1e --- /dev/null +++ b/config/locales/devise/devise.ja.yml @@ -0,0 +1,97 @@ +# Copyright (c) 2010, Diaspora Inc. This file is +# licensed under the Affero General Public License version 3 or later. See +# the COPYRIGHT file. + + +ja: + devise: + confirmations: + confirmed: "アカウントã®èªè¨¼ã«æˆåŠŸã—ã¾ã—ãŸã€‚æ—¢ã«ãƒã‚°ã‚¤ãƒ³æ¸ˆã¿ã§ã™ã€‚" + new: + resend_confirmation: "èªè¨¼ãƒ¡ãƒ¼ãƒ«ã‚’å†é€ã™ã‚‹" + send_instructions: "数分後ã«ã‚¢ã‚«ã‚¦ãƒ³ãƒˆèªè¨¼ã®æ‰‹ç¶šãメールãŒå±Šãã¾ã™ã€‚" + failure: + inactive: "アカウントã¯ã¾ã 承èªã•ã‚Œã¦ã„ã¾ã›ã‚“。" + invalid: "ユーザåã¾ãŸã¯ãƒ‘スワードãŒä¸æ£ã§ã™ã€‚" + invalid_token: "無効ãªèªè¨¼ãƒˆãƒ¼ã‚¯ãƒ³ã§ã™ã€‚" + locked: "アカウントãŒãƒãƒƒã‚¯ã•ã‚Œã¦ã„ã¾ã™ã€‚" + timeout: "セッション切れã«ãªã‚Šã¾ã—ãŸã€‚続ãã«ã¯ã‚‚ã†ä¸€åº¦ãƒã‚°ã‚¤ãƒ³ã—ã¦ãã ã•ã„。" + unauthenticated: "進むã«ã¯ãƒã‚°ã‚¤ãƒ³ã¾ãŸã¯æ–°è¦ç™»éŒ²ã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚" + unconfirmed: "進ã«ã¯ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã‚’確èªã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚" + invitations: + invitation_token_invalid: "ã”使用ã®æ‹›å¾…トークンã¯ç„¡åŠ¹ã§ã™ï¼" + send_instructions: "招待メールをé€ä¿¡ã—ã¾ã—ãŸã€‚" + updated: "パスワードã®è¨å®šã«æˆåŠŸã—ã¾ã—ãŸã€‚æ—¢ã«ãƒã‚°ã‚¤ãƒ³æ¸ˆã¿ã§ã™ã€‚" + mailer: + confirmation_instructions: + confirm: "アカウントをèªè¨¼ã™ã‚‹" + subject: "èªè¨¼æ‰‹ç¶šã" + you_can_confirm: "次ã®ãƒªãƒ³ã‚¯ã‹ã‚‰ã‚¢ã‚«ã‚¦ãƒ³ãƒˆãŒèªè¨¼ã§ãã¾ã™ã€‚" + hello: "%{email}ã•ã‚“ã€ã“ã‚“ã«ã¡ã¯ï¼" + invitation: + accept: "招待を承諾ã™ã‚‹" + ignore: "招待ã«ã”興味ãŒãªã„å ´åˆã¯ã€ã“ã®ãƒ¡ãƒ¼ãƒ«ã‚’無視ã—ã¦ãã ã•ã„。" + no_account_till: "上ã®ãƒªãƒ³ã‚¯ã¸ã‚¢ã‚¯ã‚»ã‚¹ã—ã¦æ–°è¦ç™»éŒ²ã™ã‚‹ã¾ã§ã¯ã‚¢ã‚«ã‚¦ãƒ³ãƒˆãŒä½œæˆã•ã‚Œã¾ã›ã‚“。" + subject: "ダイアスãƒãƒ©ã¸å‚åŠ ã—ã¾ã›ã‚“ã‹ï¼" + inviters: + accept_at: "ã€%{url}。下ã®ãƒªãƒ³ã‚¯ã‹ã‚‰æ‰¿è«¾ã§ãã¾ã™ã€‚" + has_invited_you: "%{name}ã•ã‚“ã¯ãƒ€ã‚¤ã‚¢ã‚¹ãƒãƒ©ã¸ã®å‚åŠ ã‚’æ‹›å¾…ã—ã¦ã„ã¾ã™ã€‚" + have_invited_you: "%{names}ã•ã‚“ç‰ã¯ãƒ€ã‚¤ã‚¢ã‚¹ãƒãƒ©ã¸ã®å‚åŠ ã‚’æ‹›å¾…ã—ã¦ã„ã¾ã™ã€‚" + reset_password_instructions: + change: "パスワードを変更ã™ã‚‹" + ignore: "å†è¨å®šã‚’申請ã—ãŸè¦šãˆãŒãªã„å ´åˆã¯ã“ã®ãƒ¡ãƒ¼ãƒ«ã‚’無視ã—ã¦ãã ã•ã„。" + someone_requested: "パスワード変更リンクã®ç”³è«‹ã‚’é ã‹ã‚Šã¾ã—ãŸã€‚下ã®ãƒªãƒ³ã‚¯ã‹ã‚‰å¤‰æ›´å¯èƒ½ã§ã™ã€‚" + subject: "パスワードå†è¨å®šæ‰‹ç¶šã" + wont_change: "上ã®ãƒªãƒ³ã‚¯ã‚’アクセスã—ã¦æ–°ã—ã„パスワードを登録ã™ã‚‹ã¾ã§ã¯ãƒ‘スワードãŒå¤‰æ›´ã•ã‚Œã¾ã›ã‚“。" + unlock_instructions: + account_locked: "ãƒã‚°ã‚¤ãƒ³å¤±æ•—ãŒå¤šã™ãŽãŸãŸã‚ã€ã‚¢ã‚«ã‚¦ãƒ³ãƒˆãŒãƒãƒƒã‚¯ã•ã‚Œã¾ã—ãŸã€‚" + click_to_unlock: "アカウントã®ãƒãƒƒã‚¯ã‚’解除ã™ã‚‹ã®ã«ä¸‹è¨˜ã®ãƒªãƒ³ã‚¯ã«ã‚¯ãƒªãƒƒã‚¯ã—ã¦ãã ã•ã„。" + subject: "ãƒãƒƒã‚¯è§£é™¤èª¬æ˜Ž" + unlock: "アカウントã®ãƒãƒƒã‚¯ã‚’解除ã™ã‚‹" + welcome: "%{email}ã•ã‚“ã€ã‚ˆã†ã“ãï¼" + passwords: + edit: + change_password: "パスワードを変更ã™ã‚‹" + new: + forgot_password: "パスワードを忘れã¾ã—ãŸã‹ã€‚" + no_account: "ã“ã®ãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹ã«ä¸€è‡´ã™ã‚‹ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã¯å˜åœ¨ã—ã¾ã›ã‚“。招待待ã¡ã®æ–¹ã¯ã€ãªã‚‹ã¹ãæ—©ã出ã›ã‚‹ã‚ˆã†ã«åŠªåŠ›ã—ã¦ã„ã¾ã™ã®ã§ã€ã‚‚ã†å°‘々ãŠå¾…ã¡ãã ã•ã„。" + send_password_instructions: "パスワードå†ç™ºè¡Œã®æ‰‹ç¶šãメールをé€ã£ã¦ãã ã•ã„。" + send_instructions: "数分後ã«ãƒ‘スワードå†ç™ºè¡Œã®æ‰‹ç¶šãメールãŒå±Šãã¾ã™ã€‚" + updated: "パスワードã®å¤‰æ›´ã«æˆåŠŸã—ã¾ã—ãŸã€‚æ—¢ã«ãƒã‚°ã‚¤ãƒ³æ¸ˆã¿ã§ã™ã€‚" + registrations: + destroyed: "ã•ã‚ˆã†ãªã‚‰ï¼ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã®å–消ã—ã«æˆåŠŸã—ã¾ã—ãŸã€‚ã¾ãŸã®ã”å‚åŠ ã‚’ãŠå¾…ã¡ã—ã¦ã„ã¾ã™ã€‚" + signed_up: "æ–°è¦ç™»éŒ²ã«æˆåŠŸã—ã¾ã—ãŸã€‚è¨å®šãŒæœ‰åŠ¹ãªå ´åˆã€ç¢ºèªãƒ¡ãƒ¼ãƒ«ã‚‚é€ä¿¡ã•ã‚Œã¾ã—ãŸã€‚" + updated: "アカウントã®æ›´æ–°ã«æˆåŠŸã—ã¾ã—ãŸã€‚" + sessions: + new: + alpha_software: "ã“ã‚Œã‹ã‚‰ä½¿ã†ã‚½ãƒ•ãƒˆã¯ã‚¢ãƒ«ãƒ•ã‚¡ç‰ˆã§ã™ã€‚" + bugs_and_feedback: "ãƒã‚¯ç™ºç”Ÿã«è¦šæ‚Ÿã—ã¦ãã ã•ã„。å°ã•ãªæ”¯éšœã§ã‚‚ページå³å´ã®ã€Œãƒ•ã‚£ãƒ¼ãƒ‰ãƒãƒƒã‚¯ã€ãƒœã‚¿ãƒ³ã‹ã‚‰ã”å ±å‘Šé¡˜ã„ã¾ã™ï¼é ‚ã„ãŸå•é¡Œå ±å‘Šã¯ãªã‚‹ã¹ãæ—©ã解決ã§ãるよã†åŠªåŠ›ã—ã¾ã™ã€‚" + bugs_and_feedback_mobile: "ãƒã‚¯ç™ºç”Ÿã«è¦šæ‚Ÿã—ã¦ãã ã•ã„。å°ã•ãªæ”¯éšœã§ã‚‚ã”å ±å‘Šé¡˜ã„ã¾ã™ï¼é ‚ã„ãŸå•é¡Œå ±å‘Šã¯ãªã‚‹ã¹ãæ—©ã解決ã§ãるよã†åŠªåŠ›ã—ã¾ã™ã€‚" + login: "ãƒã‚°ã‚¤ãƒ³" + modern_browsers: "最新型ã®ãƒ–ラウザã«ã—ã‹å¯¾å¿œã—ã¦ã„ã¾ã›ã‚“。" + password: "パスワード" + remember_me: "ãƒã‚°ã‚¤ãƒ³ã—ãŸã¾ã¾ã«ã™ã‚‹" + sign_in: "ãƒã‚°ã‚¤ãƒ³" + username: "ユーザå" + signed_in: "ãƒã‚°ã‚¤ãƒ³ã«æˆåŠŸã—ã¾ã—ãŸã€‚" + signed_out: "ãƒã‚°ã‚¢ã‚¦ãƒˆã«æˆåŠŸã—ã¾ã—ãŸã€‚" + shared: + links: + forgot_your_password: "パスワードを忘れã¾ã—ãŸã‹ã€‚" + receive_confirmation: "èªè¨¼æ‰‹ç¶šãメールãŒå±Šãã¾ã›ã‚“ã§ã—ãŸã‹ã€‚" + receive_unlock: "ãƒãƒƒã‚¯è§£é™¤ã®èª¬æ˜ŽãŒå±Šãã¾ã›ã‚“ã§ã—ãŸã‹ã€‚" + sign_in: "ãƒã‚°ã‚¤ãƒ³" + sign_up: "æ–°è¦ç™»éŒ²" + sign_up_closed: "一般ã®æ–°è¦ç™»éŒ²ã¯ç¾åœ¨å—ã‘付ã‘ã¦ã„ã¾ã›ã‚“。" + mail_signup_form: + sign_up_for_an_invite: "å‚åŠ æ‹›å¾…ã®å¸Œæœ›è€…ã¨ã—ã¦ç™»éŒ²ã—ãŸã„ï¼" + unlocks: + new: + resend_unlock: "ãƒãƒƒã‚¯è§£é™¤æ‰‹ç¶šãメールをå†é€ã™ã‚‹" + send_instructions: "数分後ã«ã‚¢ã‚«ã‚¦ãƒ³ãƒˆãƒãƒƒã‚¯è§£é™¤ã®æ‰‹ç¶šãメールãŒå±Šãã¾ã™ã€‚" + unlocked: "アカウントã®ãƒãƒƒã‚¯è§£é™¤ã«æˆåŠŸã—ã¾ã—ãŸã€‚æ—¢ã«ãƒã‚°ã‚¤ãƒ³æ¸ˆã¿ã§ã™ã€‚" + errors: + messages: + already_confirmed: "æ—¢ã«èªè¨¼æ¸ˆã¿ã§ã™ã€‚" + not_found: "見ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸã€‚" + not_locked: "ãƒãƒƒã‚¯ã•ã‚Œã¾ã›ã‚“ã§ã—ãŸã€‚" diff --git a/config/locales/devise/devise.ko.yml b/config/locales/devise/devise.ko.yml new file mode 100644 index 0000000000000000000000000000000000000000..07f9e724c4dee531b525a1f7bdfd5ad60ddf699e --- /dev/null +++ b/config/locales/devise/devise.ko.yml @@ -0,0 +1,97 @@ +# Copyright (c) 2010, Diaspora Inc. This file is +# licensed under the Affero General Public License version 3 or later. See +# the COPYRIGHT file. + + +ko: + devise: + confirmations: + confirmed: "ê³„ì •ì„ ì„±ê³µì 으로 확ì¸í•œ ë’¤ 로그ì¸í•˜ì˜€ìŠµë‹ˆë‹¤." + new: + resend_confirmation: "í™•ì¸ ë©”ì¼ ë‹¤ì‹œ 보내기" + send_instructions: "몇 분 안으로 ê³„ì •ì„ í™•ì¸í•˜ê¸° 위한 ë©”ì¼ì´ ë„착합니다." + failure: + inactive: "ì•„ì§ ê³„ì •ì´ í™œì„±í™”ë˜ì§€ 않았습니다." + invalid: "ìœ íš¨í•˜ì§€ ì•Šì€ ì‚¬ìš©ìžëª…ê³¼ 암호" + invalid_token: "ìœ íš¨í•˜ì§€ ì•Šì€ ì¸ì¦ í† í°" + locked: "ê³„ì •ì´ ìž ê²¼ìŠµë‹ˆë‹¤." + timeout: "ì„¸ì…˜ì´ ë§Œë£Œë˜ì—ˆìŠµë‹ˆë‹¤. 다시 로그ì¸í•˜ì‹ì‹œì˜¤." + unauthenticated: "ë” ë‚˜ì•„ê°€ë ¤ë©´ 로그ì¸í•˜ê±°ë‚˜ 가입해야 합니다." + unconfirmed: "ë” ë‚˜ì•„ê°€ê¸° ì „ì— ê³„ì •ì„ í™•ì¸í•´ì•¼ 합니다." + invitations: + invitation_token_invalid: "초대장 í† í°ì´ ìœ íš¨í•˜ì§€ 않습니다!" + send_instructions: "ì´ˆëŒ€ìž¥ì„ ë³´ëƒˆìŠµë‹ˆë‹¤" + updated: "암호를 성공ì 으로 바꾼 ë’¤ 로그ì¸í•˜ì˜€ìŠµë‹ˆë‹¤." + mailer: + confirmation_instructions: + confirm: "ê³„ì • 확ì¸í•˜ê¸°" + subject: "í™•ì¸ ì•ˆë‚´" + you_can_confirm: "아래 ë§í¬ë¡œ ê³„ì •ì„ í™•ì¸í• 수 있습니다:" + hello: "%{email} 님 환ì˜í•©ë‹ˆë‹¤!" + invitation: + accept: "초대 수ë½í•˜ê¸°" + ignore: "초대를 수ë½í•˜ì§€ ì•Šìœ¼ë ¤ë©´ ì´ ë©”ì¼ì„ 무시하ì‹ì‹œì˜¤." + no_account_till: "ê³„ì •ì€ ê°€ìž…í•˜ì§€ 않는 í•œ 만들어지지 않습니다." + subject: "디아스í¬ë¼ë¡œ 초대합니다!" + inviters: + accept_at: "ì´ ë§í¬ë¡œ 수ë½í• 수 있습니다: %{url}" + has_invited_you: "%{name} ë‹˜ì´ ê·€í•˜ë¥¼ 디아스í¬ë¼ì— 초대하였습니다." + have_invited_you: "%{name} ë‹˜ì´ ê·€í•˜ë¥¼ 디아스í¬ë¼ì— 초대하였습니다." + reset_password_instructions: + change: "암호 바꾸기" + ignore: "암호 초기화를 ìš”ì²í•˜ì§€ 않았다면 ì´ ë©”ì¼ì„ 무시하ì‹ì‹œì˜¤." + someone_requested: "아래 ë§í¬ë¡œ 암호를 다시 ì •í• ìˆ˜ 었습니다:" + subject: "암호 초기화 안내" + wont_change: "암호는 ë§í¬ë¥¼ í´ë¦í•´ì„œ 새 암호를 만들기 ì „ê¹Œì§€ 바뀌지 않습니다." + unlock_instructions: + account_locked: "ê·€í•˜ì˜ ê³„ì •ì€ ë¡œê·¸ì¸ì„ 여러번 실패해 ìž ê²¼ìŠµë‹ˆë‹¤." + click_to_unlock: "아래 ë§í¬ë¡œ ê³„ì •ì„ í’€ì„ ìˆ˜ 있습니다." + subject: "ê³„ì • 풀기 안내" + unlock: "ê³„ì • 풀기" + welcome: "%{email} 님 환ì˜í•©ë‹ˆë‹¤!" + passwords: + edit: + change_password: "암호 바꾸기" + new: + forgot_password: "암호를 잊었습니까?" + no_account: "등ë¡ë˜ì§€ ì•Šì€ ì´ë©”ì¼ ì£¼ì†Œìž…ë‹ˆë‹¤." + send_password_instructions: "암호 초기화 ë©”ì¼ ë³´ë‚´ê¸°" + send_instructions: "몇 분 안으로 암호를 초기화하기 위한 ë©”ì¼ì´ ë„착합니다." + updated: "암호를 성공ì 으로 바꾼 ë’¤ 로그ì¸í•˜ì˜€ìŠµë‹ˆë‹¤." + registrations: + destroyed: "ê³„ì •ì„ ì„±ê³µì 으로 취소하였습니다." + signed_up: "성공ì 으로 가입하였습니다." + updated: "ê³„ì •ì„ ì„±ê³µì 으로 ê°±ì‹ í•˜ì˜€ìŠµë‹ˆë‹¤." + sessions: + new: + alpha_software: "ì´ ì†Œí”„íŠ¸ì›¨ì–´ëŠ” 알파 실험 단계입니다." + bugs_and_feedback: "여러 버그를 경험하실 수 있습니다. ì˜¤ë¥¸ìª½ì˜ í”¼ë“œë°± 단추로 ë¬¸ì œì ì„ ë³´ê³ í•´ì£¼ì‹ì‹œì˜¤! ë³´ê³ í•˜ì‹ ë¬¸ì œì ì„ ë¹ ë¥´ê²Œ 해결하기 위해 ìµœì„ ì„ ë‹¤í•˜ê² ìŠµë‹ˆë‹¤." + bugs_and_feedback_mobile: "여러 버그를 경험하실 수 있습니다. ë¬¸ì œì ì„ ë³´ê³ í•´ì£¼ì‹ì‹œì˜¤! ë³´ê³ í•˜ì‹ ë¬¸ì œì ì„ ë¹ ë¥´ê²Œ 해결하기 위해 ìµœì„ ì„ ë‹¤í•˜ê² ìŠµë‹ˆë‹¤." + login: "로그ì¸" + modern_browsers: "ìµœì‹ ë¸Œë¼ìš°ì €ë§Œ 지ì›í•©ë‹ˆë‹¤." + password: "암호" + remember_me: "ë¡œê·¸ì¸ ìœ ì§€" + sign_in: "로그ì¸" + username: "사용ìžëª…" + signed_in: "성공ì 으로 로그ì¸í•˜ì˜€ìŠµë‹ˆë‹¤." + signed_out: "성공ì 으로 로그아웃하였습니다." + shared: + links: + forgot_your_password: "암호를 잊었습니까?" + receive_confirmation: "í™•ì¸ ì•ˆë‚´ë¥¼ 받지 못했습니까?" + receive_unlock: "풀기 안내를 받지 못했슸니까?" + sign_in: "로그ì¸" + sign_up: "가입하기" + sign_up_closed: "공개 ê°€ìž…ì´ ë‹«í˜€ìžˆìŠµë‹ˆë‹¤." + mail_signup_form: + sign_up_for_an_invite: "ì´ˆëŒ€ë°›ê³ ì‹¶ìœ¼ë©´ ì´ë©”ì¼ ì£¼ì†Œë¥¼ 등ë¡í•´ë‘ì‹ì‹œì˜¤!" + unlocks: + new: + resend_unlock: "풀기 ë©”ì¼ ë‹¤ì‹œ 보내기" + send_instructions: "몇 분 안으로 ê³„ì •ì„ í’€ê¸° 위한 ë©”ì¼ì´ ë„착합니다." + unlocked: "ê³„ì •ì„ ì„±ê³µì 으로 í’€ì€ ë’¤ 로그ì¸í•˜ì˜€ìŠµë‹ˆë‹¤." + errors: + messages: + already_confirmed: ": ì´ë¯¸ 확ì¸ë˜ì—ˆìŠµë‹ˆë‹¤" + not_found: ": ì°¾ì„ ìˆ˜ 없습니다" + not_locked: ": ìž ê²¨ìžˆì§€ ìºìŠµë‹ˆë‹¤" diff --git a/config/locales/devise/devise.ml.yml b/config/locales/devise/devise.ml.yml index 281b6012563b70c84bb13f03b6389f1bd29ac8d5..82acd053ad14383c813a5e8f67db7c19ff88643c 100644 --- a/config/locales/devise/devise.ml.yml +++ b/config/locales/devise/devise.ml.yml @@ -31,30 +31,30 @@ ml: invitation: accept: "à´•àµà´·à´£à´‚ à´¸àµà´µàµ€à´•à´°à´¿à´•àµà´•àµ" ignore: "താങàµà´•à´³àµâ€à´•àµà´•àµ à´ˆ à´•àµà´·à´£à´‚ à´¸àµà´µàµ€à´•à´°à´¿à´•àµà´•àµ‡à´£àµà´Ÿàµ†à´™àµà´•à´¿à´²àµâ€ ദയവായി à´ˆ à´•à´¤àµà´¤àµ അവഗണികàµà´•àµà´•." - no_account_till: "Your account won't be created until you access the link above and sign up." + no_account_till: "à´®àµà´•à´³à´¿à´²àµà´³àµà´³ à´•à´£àµà´£à´¿ ഉപയോഗിചàµà´šàµ ഇതിലàµâ€ ചേരാതെ താങàµà´•à´³àµà´Ÿàµ† à´…à´•àµà´•àµŒà´£àµà´Ÿàµ നിരàµâ€à´®àµà´®à´¿à´•àµà´•à´¿à´²àµà´²." subject: "ഡയസàµà´ªàµ‹à´±à´¯à´¿à´²àµâ€ ചേരാനàµâ€ താങàµà´•à´³àµ† à´•àµà´·à´£à´¿à´šàµà´šà´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨àµ!" inviters: accept_at: ", at %{url}, you can accept it through the link below." - has_invited_you: "%{name} has invited you to join Diaspora" - have_invited_you: "%{names} have invited you to join Diaspora" + has_invited_you: "%{name} താങàµà´•à´³àµ† ഡയസàµà´ªàµ‹à´±à´¯à´¿à´²àµâ€ ചേരàµà´¨àµà´¨à´¤à´¿à´¨à´¾à´¯à´¿ à´•àµà´·à´£à´¿à´šàµà´šà´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨àµ" + have_invited_you: "%{names} താങàµà´•à´³àµ† ഡയസàµà´ªàµ‹à´±à´¯à´¿à´²àµâ€ ചേരàµà´¨àµà´¨à´¤à´¿à´¨à´¾à´¯à´¿ à´•àµà´·à´£à´¿à´šàµà´šà´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨àµ" reset_password_instructions: change: "à´Žà´¨àµà´±àµ† രഹസàµà´¯à´µà´¾à´•àµà´•àµ മാറàµà´±àµà´•" ignore: "താങàµà´•à´³àµâ€ ഇതൠആവശàµà´¯à´ªàµà´ªàµ†à´Ÿàµà´Ÿà´¿à´²àµ†à´™àµà´•à´¿à´²àµâ€ ദയവായി അവഗണികàµà´•àµà´•." - someone_requested: "Someone has requested a link to change your password, and you can do this through the link below." + someone_requested: "താങàµà´•à´³àµà´Ÿàµ† രഹസàµà´¯à´µà´¾à´•àµà´•àµ മാറàµà´±àµà´¨àµà´¨à´¤à´¿à´¨àµ ആരോ അപേകàµà´· നലàµâ€à´•à´¿à´¯à´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨àµ. മാറàµà´±àµà´¨àµà´¨à´¤à´¿à´¨à´¾à´¯à´¿ താഴെയàµà´³àµà´³ à´•à´£àµà´£à´¿ തിരഞàµà´žàµ†à´Ÿàµà´•àµà´•à´¾à´µàµà´¨àµà´¨à´¤à´¾à´£àµ." subject: "Reset password instructions" - wont_change: "Your password won't change until you access the link above and create a new one." + wont_change: "à´®àµà´•à´³à´¿à´²àµà´³àµà´³ à´•à´£àµà´£à´¿à´¯à´¿à´²àµ‚ടെ പൂതിയ ഒരൠരഹസàµà´¯à´µà´¾à´•àµà´•àµ നിരàµâ€à´®àµà´®à´¿à´•àµà´•à´¾à´¤àµ† അതൠമാറàµà´±à´ªàµà´ªàµ†à´Ÿà´¿à´²àµà´²." unlock_instructions: account_locked: "Your account has been locked due to an excessive amount of unsuccessful sign in attempts." - click_to_unlock: "Click the link below to unlock your account:" - subject: "Unlock Instructions" - unlock: "Unlock my account" + click_to_unlock: "നിങàµà´™à´³àµà´Ÿàµ† à´…à´•àµà´•àµŒà´£àµà´Ÿàµ à´¤àµà´±à´•àµà´•àµà´¨àµà´¨à´¤à´¿à´¨à´¾à´¯à´¿ താഴെയàµà´³àµà´³ à´•à´£àµà´£à´¿ തെരഞàµà´žàµ†à´Ÿàµà´•àµà´•àµà´•:" + subject: "à´…à´•àµà´•àµŒà´£àµà´Ÿàµ à´¤àµà´±à´•àµà´•àµà´¨àµà´¨à´¤à´¿à´¨àµà´³àµà´³ വിവരങàµà´™à´³àµâ€" + unlock: "à´Žà´¨àµà´±àµ† ആകàµà´•àµŒà´£àµà´Ÿàµ à´¤àµà´±à´•àµà´•àµà´•" welcome: "à´¸àµà´µà´¾à´—തം %{email}!" passwords: edit: change_password: "à´Žà´¨àµà´±àµ† രഹസàµà´¯à´µà´¾à´•àµà´•àµ മാറàµà´±àµà´•" new: forgot_password: "താങàµà´•à´³àµà´Ÿàµ† രഹസàµà´¯à´µà´¾à´•àµà´•àµ മറനàµà´¨àµ‹?" - no_account: "No account with this email exsists. If you are waiting for an invite, we are rolling them out as soon as possible" + no_account: "No account with this email exists. If you are waiting for an invite, we are rolling them out as soon as possible" send_password_instructions: "Send me reset password instructions" send_instructions: "You will receive an email with instructions about how to reset your password in a few minutes." updated: "Your password was changed successfully. You are now signed in." diff --git a/config/locales/devise/devise.pl.yml b/config/locales/devise/devise.pl.yml index 33d61ed08aa69322e300f7a42f48d9c185e7596f..21776eb18e025947de1c5e8166e022fb9dc119d5 100644 --- a/config/locales/devise/devise.pl.yml +++ b/config/locales/devise/devise.pl.yml @@ -54,7 +54,7 @@ pl: change_password: "ZmieÅ„ hasÅ‚o" new: forgot_password: "Nie pamiÄ™tasz hasÅ‚a?" - no_account: "No account with this email exsists. If you are waiting for an invite, we are rolling them out as soon as possible" + no_account: "Konto o takim emailu nie istnieje. Jeżeli czekasz na nowe zaproszenia, wydajemy je tak szybko, jak to tylko możliwe." send_password_instructions: "WyÅ›lij mi instrukcje resetowania hasÅ‚a" send_instructions: "W ciÄ…gu kilku minut otrzymasz e-maila zawierajÄ…cego instrukcjie dotyczÄ…ce zresetowania hasÅ‚a." updated: "Twoje hasÅ‚o zostaÅ‚o zmienione. Zalogowano pomyÅ›lnie." diff --git a/config/locales/devise/devise.sl.yml b/config/locales/devise/devise.sl.yml index 5f6e86f8f139277d9e5cffec85293d3d42f0a379..203f6f0ee03fec0b526e0e9bdcd8e31f98ecb415 100644 --- a/config/locales/devise/devise.sl.yml +++ b/config/locales/devise/devise.sl.yml @@ -12,7 +12,7 @@ sl: send_instructions: "V nekaj minutah boste po e-poÅ¡ti prejeli navodila, kako potrditi vaÅ¡ uporabniÅ¡ki raÄun." failure: inactive: "VaÅ¡ raÄun Å¡e ni aktiviran." - invalid: "NapaÄen e-naslov ali geslo." + invalid: "NapaÄeno uporabniÅ¡ko ime ali geslo." invalid_token: "Neveljavna avtentikacija." locked: "VaÅ¡ raÄun je zaklenjen." timeout: "VaÅ¡a seja je potekla. Za nadaljevanje se ponovno prijavite." @@ -54,7 +54,7 @@ sl: change_password: "Spremeni geslo" new: forgot_password: "Ste pozabili geslo?" - no_account: "UporabniÅ¡ki raÄun s tem e-naslovom ne obstaja. V kolikor Äakate na povabilo, ga lahko v kratkem priÄakujete." + no_account: "UporabniÅ¡ki raÄun s tem e-naslovom ne obstaja. V kolikor Å¡e Äakate na povabilo, ga lahko v kratkem priÄakujete." send_password_instructions: "PoÅ¡lji navodila za ponastavitev gesla" send_instructions: "V nekaj minutah boste po e-poÅ¡ti prejeli navodila za ponastavitev vaÅ¡ega gesla." updated: "VaÅ¡e geslo je bilo uspeÅ¡no spremenjeno. Zdaj ste prijavljeni." diff --git a/config/locales/devise/devise.zh-CN.yml b/config/locales/devise/devise.zh-CN.yml new file mode 100644 index 0000000000000000000000000000000000000000..0f87631d28a5e42f278d531fcfde7c410ecc7cee --- /dev/null +++ b/config/locales/devise/devise.zh-CN.yml @@ -0,0 +1,97 @@ +# Copyright (c) 2010, Diaspora Inc. This file is +# licensed under the Affero General Public License version 3 or later. See +# the COPYRIGHT file. + + +zh-CN: + devise: + confirmations: + confirmed: "å¸å·ç¡®è®¤æˆåŠŸã€‚您已ç»æˆåŠŸç™»å½•ã€‚" + new: + resend_confirmation: "é‡é€å‘é€å¸å·ç¡®è®¤é‚®ä»¶" + send_instructions: "æ‚¨ä¼šåœ¨å‡ åˆ†é’Ÿå†…æ”¶åˆ°ä¸€å°é‚®ä»¶ï¼Œå®ƒå°†æŒ‡å¼•æ‚¨å®Œæˆå¸å·ç¡®è®¤æ¥éª¤ã€‚" + failure: + inactive: "ä½ çš„å¸å·å°šæœªæ¿€æ´»ã€‚" + invalid: "邮箱或密ç 有误。" + invalid_token: "验è¯ä¿¡æ¯ä¸åˆæ³•ã€‚" + locked: "您的å¸å·å·²é”定。" + timeout: "会è¯è¶…时。若è¦ç»§ç»ï¼Œè¯·é‡æ–°ç™»å½•ã€‚" + unauthenticated: "请您登录或注册。" + unconfirmed: "ä½ å¿…é¡»å…ˆéªŒè¯å¸å·æ‰èƒ½ç»§ç»ã€‚" + invitations: + invitation_token_invalid: "邀请ç 验è¯å¤±è´¥ã€‚" + send_instructions: "邀请å‘é€æˆåŠŸã€‚" + updated: "密ç 设定æˆåŠŸã€‚您已ç»æˆåŠŸç™»å½•ã€‚" + mailer: + confirmation_instructions: + confirm: "确认å¸å·" + subject: "å¸å·ç¡®è®¤æ¥éª¤" + you_can_confirm: "ä½ å¯ä»¥ç‚¹å‡»ä¸‹é¢çš„链接确认å¸å·ï¼š" + hello: "您好, %{email}!" + invitation: + accept: "接å—邀请" + ignore: "如果您ä¸æƒ³æŽ¥å—邀请, 请忽略这å°é‚®ä»¶ã€‚" + no_account_till: "点击以上链接并注册åŽ, ä½ æ‰èƒ½åˆ›å»ºå¸å·ã€‚" + subject: "æ‚¨è¢«é‚€è¯·åŠ å…¥Diasporaï¼" + inviters: + accept_at: " (%{url}), ä½ å¯ä»¥ç‚¹å‡»ä¸‹é¢çš„链接接收邀请。" + has_invited_you: "%{name} é‚€è¯·æ‚¨åŠ å…¥Diaspora" + have_invited_you: "%{names} é‚€è¯·æ‚¨åŠ å…¥Diaspora" + reset_password_instructions: + change: "é‡ç½®å¯†ç " + ignore: "如果您并没有请求é‡ç½®å¯†ç , 请忽略这å°ä¿¡ä»¶ã€‚" + someone_requested: "有人请求é‡ç½®æ‚¨çš„密ç ,若确实è¦è¿™ä¹ˆåšï¼Œè¯·ç‚¹å‡»ä¸‹é¢çš„链接。" + subject: "密ç é‡ç½®æ¥éª¤" + wont_change: "在点击以上链接é‡ç½®å¯†ç åŽï¼Œæ‚¨çš„密ç æ‰ä¼šæ”¹å˜ã€‚" + unlock_instructions: + account_locked: "您的å¸å·å› 为登录失败次数异常而被é”定。" + click_to_unlock: "点击下é¢çš„链接以解é”您的å¸å·ï¼š" + subject: "å¸å·è§£é”æ¥éª¤" + unlock: "解é”å¸å·" + welcome: "欢迎您, %{email}!" + passwords: + edit: + change_password: "修改密ç " + new: + forgot_password: "忘记密ç ?" + no_account: "没有与æ¤é‚®ç®±å…³è”çš„å¸å·ã€‚如果您在ç‰å¾…邀请函, 我们将尽快寄出." + send_password_instructions: "请å‘我å‘é€å¯†ç é‡ç½®æ¥éª¤" + send_instructions: "å‡ åˆ†é’Ÿå†…æ‚¨å°†æ”¶åˆ°ä¸€å°åŒ…å«å¯†ç é‡ç½®æ¥éª¤çš„邮件。" + updated: "密ç 修改æˆåŠŸã€‚您已ç»ç™»å…¥äº†ã€‚" + registrations: + destroyed: "å†è§ï¼æ‚¨çš„å¸å·å·²ç»å…³é—。希望ä¸ä¹…åŽå†ä¼šã€‚" + signed_up: "您已ç»æˆåŠŸæ³¨å†Œã€‚如果有设定的è¯, 确认信会é€åˆ°æ‚¨çš„邮箱。" + updated: "å¸å·æ›´æ–°æˆåŠŸã€‚" + sessions: + new: + alpha_software: "ä½ å³å°†ä½¿ç”¨å¤„于开å‘åˆæœŸçš„功能。" + bugs_and_feedback: "给您一个æ醒, ä½ å°†å¯èƒ½é‡åˆ°bug。 é‡åˆ°ä»»ä½•é—®é¢˜ï¼Œéƒ½è¯·æ‚¨ç‚¹å‡»æµè§ˆå™¨å³è¾¹çš„\"å馈\"按钮å‘我们åé¦ˆï¼ æˆ‘ä»¬ä¼šå°½å¿«å¤„ç†æ‚¨å馈的任何问题。" + bugs_and_feedback_mobile: "给您一个æ醒, ä½ å°†å¯èƒ½é‡åˆ°bug。 é‡åˆ°ä»»ä½•é—®é¢˜éƒ½è¯·ä½ å‘我们å馈! 我们会尽快处ç†ä½ å馈的任何问题." + login: "登录" + modern_browsers: "åªæ”¯æŒè¾ƒæ–°çš„æµè§ˆå™¨ã€‚" + password: "密ç " + remember_me: "è®°ä½å¯†ç " + sign_in: "登录" + username: "用户å" + signed_in: "登录æˆåŠŸã€‚" + signed_out: "登出æˆåŠŸã€‚" + shared: + links: + forgot_your_password: "忘记密ç ?" + receive_confirmation: "没有收到确认æ¥éª¤ï¼Ÿ" + receive_unlock: "没有收到é‡ç½®æ¥éª¤ï¼Ÿ" + sign_in: "登录" + sign_up: "注册" + sign_up_closed: "ç›®å‰ä¸å¼€æ”¾å…¬å¼€æ³¨å†Œã€‚" + mail_signup_form: + sign_up_for_an_invite: "å‡é‚€è¯·å‡½æ³¨å†Œï¼" + unlocks: + new: + resend_unlock: "é‡æ–°å‘é€è§£é”æ¥éª¤" + send_instructions: "å‡ åˆ†é’ŸåŽæ‚¨å°†æ”¶åˆ°ä¸€å°é‚®ä»¶ï¼Œå®ƒå°†æŒ‡å¼•æ‚¨è§£é”您的å¸å·ã€‚" + unlocked: "å¸å·è§£é”æˆåŠŸã€‚ä½ å·²ç»ç™»å½•ã€‚" + errors: + messages: + already_confirmed: "已确认" + not_found: "未找到" + not_locked: "未é”定" diff --git a/config/locales/diaspora/ar.yml b/config/locales/diaspora/ar.yml index 45f838a7f8818006b156227d044da4b2b0b5e023..63936dda4353cf67eece1b8a4a7aafa4d5b03401 100644 --- a/config/locales/diaspora/ar.yml +++ b/config/locales/diaspora/ar.yml @@ -354,7 +354,7 @@ ar: recent_posts: "Recent Posts" recent_public_posts: "Recent Public Posts" return_to_aspects: "Return to your aspects page" - similar_contacts: "similar contacts" + see_all: "See all" start_sharing: "start sharing" to_accept_or_ignore: "to accept or ignore it." you_have_no_tags: "you have no tags!" diff --git a/config/locales/diaspora/bg.yml b/config/locales/diaspora/bg.yml new file mode 100644 index 0000000000000000000000000000000000000000..ca353a089c33fb94c2a765f991a35ecda6bf9378 --- /dev/null +++ b/config/locales/diaspora/bg.yml @@ -0,0 +1,617 @@ +# Copyright (c) 2010, Diaspora Inc. This file is +# licensed under the Affero General Public License version 3 or later. See +# the COPYRIGHT file. + + +bg: + _comments: "Коментари" + _home: "Home" + _photos: "Ñнимки" + _services: "УÑлуги" + account: "Ðкаунт" + activerecord: + errors: + models: + contact: + attributes: + person_id: + taken: "must be unique among this user's contacts." + person: + attributes: + diaspora_handle: + taken: "вече е зает." + request: + attributes: + from_id: + taken: "is a duplicate of a pre-existing request." + user: + attributes: + email: + taken: "е вече заета." + person: + invalid: "is invalid." + username: + taken: "е вече заето." + ago: "преди %{time}" + all_aspects: "Ð’Ñички аÑпекти" + application: + helper: + unknown_person: "непознато лице" + video_title: + unknown: "Unknown Video Title" + are_you_sure: "Сигурни ли Ñте?" + aspect_memberships: + destroy: + failure: "Лицето не бе премахнато от аÑпекта" + no_membership: "Избраното лице не може да бъде намерено в този апект" + success: "Лицето е премахнато от аÑпекта" + aspects: + add_to_aspect: + failure: "Контактът не бе добавен към аÑпекта." + success: "Контактът е добавен към аÑпекта." + aspect_contacts: + done_editing: "готово" + aspect_stream: + activity: "активноÑÑ‚" + post_time: "ред на публикуване" + sort_by: "Ñортиране по:" + contacts_not_visible: "Контактите в аÑпекта нÑма да бъдат видими един за друг." + contacts_visible: "Контактите в аÑпекта ще бъдат видими един за друг." + create: + failure: "ÐÑпектът не бе Ñъздаден." + success: "ÐовиÑÑ‚ аÑпект %{name} бе Ñъздаден" + destroy: + failure: "%{name} не е празен, затова не може да бъде изтрит." + success: "%{name} бе изтрит." + edit: + add_existing: "ДобавÑне на ÑъщеÑтвуващ контакт" + aspect_list_is_not_visible: "ÑпиÑъкът на аÑпекта е Ñкрит за оÑтаналите в аÑпекта" + aspect_list_is_visible: "ÑпиÑъкът на аÑпекта е открит за оÑтаналите в аÑпекта" + confirm_remove_aspect: "ÐаиÑтина ли желаете да бъде премахнат аÑпектът?" + done: "Готово" + make_aspect_list_visible: "нека аÑпектът бъде видим" + remove_aspect: "Изтриване на аÑпекта" + rename: "преименуване" + update: "update" + updating: "updating" + few: "%{count} аÑпекта" + helper: + are_you_sure: "ÐаиÑтина ли желаете да бъде изтриете аÑпектът?" + aspect_not_empty: "ÐÑпектът не е празен" + remove: "премахване" + index: + handle_explanation: "Това е вашиÑÑ‚ Ð°Ð´Ñ€ÐµÑ Ð² Diaspora. ÐаподобÑва Ð°Ð´Ñ€ÐµÑ Ð½Ð° ел. поща - давате го на хора, за да Ñе Ñвържат Ñ Ð²Ð°Ñ." + no_contacts: "ÐÑма контакти" + post_a_message: "публикуване на Ñъобщение >>" + manage: + add_a_new_aspect: "ДобавÑне на аÑпект" + add_a_new_contact: "ДобавÑне на контакт" + drag_to_add: "Влачете за да добавите хора" + manage_aspects: "Управление на аÑпектите" + no_requests: "ÐÑма нови покани" + requests: "Покани" + many: "%{count} аÑпекта" + move_contact: + error: "Грешка при премеÑтване на контакт: %{inspect}" + failure: "didn't work %{inspect}" + success: "Лицето е премеÑтено в нов аÑпект" + new_aspect: + create: "Създаване" + name: "Име" + no_posts_message: + start_talking: "ÐÑма публикации. Бъдете първи!" + one: "1 аÑпект" + other: "%{count} аÑпекта" + seed: + family: "СемейÑтво" + work: "Работа" + show: + edit_aspect: "редактиране на аÑпекта" + update: + failure: "ÐÑпектът %{name} има твърде дълго име. Ðе може да бъде запаметен." + success: "ÐÑпектът %{name} е уÑпешно редактиран." + zero: "нÑма аÑпекти" + back: "Ðазад" + bookmarklet: + explanation: "%{link} от където и да е, запаметÑвайки връзката като отметка." + explanation_link_text: "Публикувайте в Diaspora" + post_something: "Публикувайте нещо в Diaspora" + post_success: "Публикувано!" + cancel: "Отказ" + comments: + few: "%{count} коментара" + many: "%{count} коментара" + new_comment: + comment: "коментар" + commenting: "Коментиране..." + one: "1 коментар" + other: "%{count} коментара" + zero: "нÑма коментари" + contacts: + create: + failure: "Контактът не бе Ñъздаден" + destroy: + failure: "Връзката Ñ %{name} не бе премахната" + success: "Връзката Ñ %{name} е премахната" + few: "%{count} контакта" + many: "%{count} контакта" + one: "1 контакт" + other: "%{count} контакта" + share_with_pane: + accepts: "Щом %{name} приеме ще можете да Ñледите публикациите Ñи в Diaspora" + add_new_aspect: "добавÑне на нов аÑпект" + share_with: "Започнете да ÑподелÑте Ñ %{name}" + zero: "нÑма контакти" + conversations: + create: + sent: "Съобщението е изпратено" + destroy: + success: "Разговорът е премахнат уÑпешно" + helper: + new_messages: + few: "%{count} нови ÑъобщениÑ" + many: "%{count} нови ÑъобщениÑ" + one: "1 ново Ñъобщение" + other: "%{count} нови ÑъобщениÑ" + zero: "нÑма нови ÑъобщениÑ" + index: + create_a_new_message: "Ñъздаване на Ñъобщение" + inbox: "ВходÑщи" + message_inbox: "ВходÑща кутиÑ" + new_message: "Ðово Ñъобщение" + no_conversation_selected: "нÑма избран разговор" + no_messages: "нÑма ÑъобщениÑ" + new: + send: "Изпращане" + subject: "тема" + to: "до" + show: + delete: "изтриване и блокиране" + reply: "отговор" + date: + formats: + birthday: "%B %d" + birthday_with_year: "%B %d %Y" + fullmonth_day: "%B %d" + delete: "Изтриване" + email: "Ел. поща" + error_messages: + helper: + correct_the_following_errors_and_try_again: "Поправете Ñледните грешки и опитайте отново." + invalid_fields: "Ðевалидни полета" + fill_me_out: "Попълнете ме" + hide: "Скриване" + home: + show: + already_account: "вече имате акаунт?" + choice: "Choice" + choice_explanation: "Diaspora предоÑÑ‚Ð°Ð²Ñ Ð²ÑŠÐ·Ð¼Ð¾Ð¶Ð½Ð¾ÑÑ‚ за Ñортиране на контактите в групи наречени аÑпекти. Те Ñа уникална функциÑ, коÑто позволÑва ÑподелÑнето на Ñнимки, иÑтории и шеги Ñамо Ñ Ñ…Ð¾Ñ€Ð°Ñ‚Ð°, за които Ñа предвидени." + learn_about_host: "Ðаучете как да Ñтартирате Diaspora на ÑобÑтвен Ñървър." + login_here: "Ñе впишете" + ownership: "СобÑтвеноÑÑ‚" + ownership_explanation: "Вие притежавате Ñнимките Ñи и не е необходимо да Ñе отказвате от това Ñи право Ñамо за да ги Ñподелите. Вие запазвате ÑобÑтвеноÑтта Ñи върху вÑичко Ñподелено в Diaspora - това ви оÑигурÑва контрол над разпроÑтранението." + share_what_you_want: "СподелÑйте каквото желаете, Ñ ÐºÐ¾Ð³Ð¾Ñ‚Ð¾ пожелаете." + simplicity: "ЛеÑнота" + simplicity_explanation: "СподелÑнето чрез Diaspora е проÑто и леÑно. Характерно за Diaspora е че запазва Ð»Ð¸Ñ‡Ð½Ð¸Ñ Ð²Ð¸ живот поверителен без нужда от наÑтройване различни Ñтраници Ñ Ð±ÐµÐ·Ð±Ñ€Ð¾Ð¹ опции." + tagline_first_half: "Споделете каквото желаете," + tagline_second_half: "Ñ ÐºÐ¾Ð³Ð¾Ñ‚Ð¾ пожелаете." + invitations: + check_token: + not_found: "Данните за поканата не Ñа намерени" + create: + already_contacts: "Вече Ñте Ñвързани Ñ Ñ‚Ð°Ð²Ð° лице" + already_sent: "Вече Ñте Ñвързани Ñ Ñ‚Ð°Ð²Ð° лице." + no_more: "Ðе разполагате Ñ Ð¿Ð¾Ð²ÐµÑ‡Ðµ покани." + rejected: "The following email addresses had problems: " + sent: "Покани Ñа изпратени до: " + edit: + sign_up: "региÑтриране" + new: + already_invited: "Вече е поканен" + aspect: "ÐÑпект" + comma_seperated_plz: "Можете да въведете повече от една ел. поща като ги разделÑте ÑÑŠÑ Ð·Ð°Ð¿ÐµÑ‚Ð°Ð¸." + if_they_accept_info: "ако приемат ще бъдат добавени към аÑпекта в който Ñте ги поканили." + invite_someone_to_join: "Поканете нÑкой в Diaspora!" + personal_message: "Лично Ñъобщение" + resend: "Повторно изпращане" + send_an_invitation: "Изпращане на поканата" + send_invitation: "Send invitation" + to: "До" + layouts: + application: + have_a_problem: "Имате проблем? Открийте решението тук" + powered_by: "POWERED BY DIASPORA*" + public_feed: "Public Diaspora Feed for %{name}" + toggle: "toggle mobile site" + whats_new: "какво ново?" + your_aspects: "вашите аÑпекти" + header: + blog: "блог" + code: "код" + login: "ВпиÑване" + logout: "отпиÑване" + profile: "профил" + settings: "наÑтройки" + likes: + likes: + people_dislike_this: + few: "не е хареÑана от %{count} човека" + many: "не е хареÑана е от %{count} човека" + one: "не е хареÑана от 1 човек" + other: "не е хареÑана от %{count} човека" + zero: "вÑички Ñа Ñ Ñ…Ð°Ñ€ÐµÑали" + people_like_this: + few: "хареÑана от %{count} човека" + many: "хареÑана от %{count} човека" + one: "1 person liked this" + other: "%{count} people liked this" + zero: "no people liked this" + more: "Още" + next: "next" + no_results: "ÐÑма намерени резултати" + notifications: + also_commented: "also commented on %{post_author}'s" + also_commented_deleted: "добави коментар на вече изтрита публикациÑ" + comment_on_post: "коментира ваша" + deleted: "deleted" + helper: + new_notifications: + few: "%{count} нови извеÑтиÑ" + many: "%{count} нови извеÑтиÑ" + one: "1 ново извеÑтие" + other: "%{count} нови извеÑтиÑ" + zero: "нÑма нови извеÑтиÑ" + index: + and: "и" + and_others: "и %{number} други" + mark_all_as_read: "Маркиране на вÑички като прочетени" + notifications: "ИзвеÑтиÑ" + mentioned: "ви Ñпомена в" + new_request: "ви предложи да ÑподелÑте." + post: "публикациÑ" + private_message: "ви изпрати Ñъобщение." + request_accepted: "прие поканата ви за ÑподелÑне." + notifier: + also_commented: + commented: "has also commented on %{post_author}'s post:" + sign_in: "Sign in to view it." + subject: "%{name} has also commented on %{post_author}'s post." + comment_on_post: + commented: "has commented on your post:" + sign_in: "Sign in to view it." + subject: "%{name} коментира ваша публикациÑ." + diaspora: "the diaspora email robot" + hello: "Здравейте %{name}!" + love: "love," + manage_your_email_settings: "manage your email settings" + mentioned: + mentioned: "ви Ñпомена в публикациÑ:" + sign_in: "Впишете Ñе, за да Ñ Ð¿Ñ€ÐµÐ³Ð»ÐµÐ´Ð°Ñ‚Ðµ." + subject: "%{name} ви Ñпомена в Diaspora*" + new_request: + just_sent_you: "just sent you a contact request on Diaspora*" + sign_in: "Впишете Ñе тук" + subject: "new Diaspora* contact request from %{from}" + try_it_out: "You should really think about checking it out." + private_message: + message_subject: "Тема: %{subject}" + private_message: "ви изпрати лично Ñъобщение:" + sign_in: "Впишете Ñе, за да го прегледате." + subject: "%{name} ви изпрати лично Ñъобщени в Diaspora*" + request_accepted: + accepted: "has accepted your contact request!" + sign_in: "Впишете Ñе тук" + subject: "%{name} has accepted your contact request on Diaspora*" + single_admin: + admin: "ВашиÑÑ‚ админиÑтратор на Diaspora" + subject: "Съобщение отноÑно акаунта ви в Diaspora:" + thanks: "БлагодарÑ," + ok: "Добре" + or: "или" + password: "Парола" + password_confirmation: "Потвърждаване на паролата" + people: + add_contact_small: + add_contact_from_tag: "add contact from tag" + aspect_list: + edit_membership: "принадлежноÑÑ‚ към аÑпекти" + few: "%{count} човека" + helper: + people_on_pod_are_aware_of: " people on pod are aware of" + results_for: " резултата за %{params}" + index: + couldnt_find_them_send_invite: "Ðе можете да ги намерите? Пратете им покана!" + no_one_found: "...и никой не е намерен." + no_results: "Hey! You need to search for something." + results_for: "резултат от Ñ‚ÑŠÑ€Ñенето за" + many: "%{count} човека" + one: "1 човек" + other: "%{count} човека" + person: + add_contact: "добавÑне на контакт" + already_connected: "Вече Ñте Ñвързани" + pending_request: "Pending request" + thats_you: "Това Ñте вие!" + profile_sidebar: + bio: "биографични данни" + born: "рожден ден" + cannot_remove: "Лицето %{name} не може да бъде премахнато от поÑÐ»ÐµÐ´Ð½Ð¸Ñ Ð°Ñпект. (Ðко желаете да бъде прекратена връзката Ñ Ð»Ð¸Ñ†ÐµÑ‚Ð¾ е необходимо да премахнете контакта.)" + edit_my_profile: "Редактирайте профилът Ñи" + gender: "пол" + in_aspects: "in aspects" + location: "меÑтоположние" + remove_contact: "премахване на контакт" + remove_from: "Премахване на %{name} от %{aspect}?" + show: + add_some: "add some" + does_not_exist: "Person does not exist!" + edit: "edit" + incoming_request: "%{name} желае да ÑÐ¿Ð¾Ð´ÐµÐ»Ñ Ñ Ð²Ð°Ñ" + mention: "Mention" + message: "Съобщение" + no_posts: "нÑма публикации за изобразÑване!" + not_connected: "Вие не ÑподелÑте Ñ Ð»Ð¸Ñ†ÐµÑ‚Ð¾" + recent_posts: "Скорошни публикации" + recent_public_posts: "Скорошни публични публикации" + return_to_aspects: "Ðазад към Ñтраницата Ñ Ð°Ñпекти" + see_all: "Вижте вÑички" + start_sharing: "започнете да ÑподелÑте" + to_accept_or_ignore: "to accept or ignore it." + you_have_no_tags: "you have no tags!" + webfinger: + fail: "За Ñъжаление %{handle} не може да бъде намерен." + zero: "нÑма хора" + photos: + create: + integrity_error: "Снимката не бе качена. Сигурни ли Ñте, че Ñте избрали изображение?" + runtime_error: "Снимката не бе качена. Сигурни ли Ñте, че Ñте закопчали колана Ñи?" + type_error: "Снимката не бе качена. Сигурни ли Ñте, че е добавено изображение?" + destroy: + notice: "Снимката е изтрита." + edit: + editing: "Редактиране" + new: + back_to_list: "Ðазад към ÑпиÑъка" + new_photo: "Ðова Ñнимка" + post_it: "публикуване!" + new_photo: + empty: "{file} е празен. МолÑ, изберете наново файловете без празниÑ." + invalid_ext: "{file} е Ñ Ð½ÐµÐ²Ð°Ð»Ð¸Ð´Ð½Ð¾ разширение. Позволени Ñа Ñамо: {extensions}." + size_error: "{file} е твърде голÑм. МакÑималниÑÑ‚ разрешен размер е {sizeLimit}." + new_profile_photo: + or_select_one: "или изберете една от вашите (вече качени)" + upload: "Качете нова Ñнимка за профила!" + photo: + view_all: "вÑички Ñнимки на %{name}" + show: + collection_permalink: "collection permalink" + delete_photo: "Изтриване на изображение" + edit: "редактиране" + edit_delete_photo: "Редактиране на опиÑанието / изтриване" + make_profile_photo: "ползване като профилна Ñнимка" + original_post: "Оригинална публикациÑ" + permalink: "permalink" + update_photo: "Update Photo" + view: "view" + update: + error: "Снимката не бе изтрита." + notice: "Photo successfully updated." + post_visibilites: + update: + post_hidden: "ПубликациÑта на %{name} е Ñкрита." + posts: + doesnt_exist: "публикациÑта не ÑъщеÑтвува!" + previous: "previous" + profile: "Профил" + profiles: + edit: + allow_search: "Разрешете Ñ‚ÑŠÑ€Ñенето в Diaspora за ваÑ" + edit_profile: "Редактиране на профила" + first_name: "СобÑтвено име" + last_name: "Фамилно име" + update_profile: "ОбновÑване на профила" + your_bio: "Биографични данни" + your_birthday: "Дата на раждане" + your_gender: "Пол" + your_location: "МеÑтоположение" + your_name: "Име" + your_photo: "Снимка" + your_private_profile: "ВашиÑÑ‚ личен профил" + your_public_profile: "ВашиÑÑ‚ публичен профил" + your_tags: "Опишете Ñе Ñ Ð´Ð¾ 5 #марки" + your_tags_placeholder: "например: #Ð‘ÑŠÐ»Ð³Ð°Ñ€Ð¸Ñ #diaspora #Ñ„Ð¸Ñ‚Ð½ÐµÑ #music" + update: + failed: "Failed to update profile" + updated: "Profile updated" + registrations: + closed: "Signups are closed on this Diaspora pod." + create: + success: "Вие Ñе приÑъединихте към Diaspora!" + edit: + cancel_my_account: "Cancel my account" + edit: "Edit %{name}" + leave_blank: "(оÑтавете празно ако не желаете да го променÑте)" + password_to_confirm: "(за да бъдат потвърдени промените е необходима текущата ви парола)" + unhappy: "Unhappy?" + update: "Update" + new: + enter_email: "Въведете ел. поща" + enter_password: "Въведете парола" + enter_password_again: "Въведете отново Ñъщата парола" + enter_username: "Изберете Ñи потребителÑко име (Ñамо букви, цифри и долна черта)" + sign_up: "РегиÑтриране" + sign_up_for_diaspora: "РегиÑтрирайте Ñе в Diaspora" + requests: + create: + sending: "Изпращане" + sent: "You've asked to share with %{name}. They should see it next time they log in to Diaspora." + destroy: + error: "МолÑ, изберете аÑпект!" + ignore: "Ignored contact request." + success: "Сега ÑподелÑте." + helper: + new_requests: + few: "%{count} new requests!" + many: "%{count} new requests!" + one: "new request!" + other: "%{count} нови покани!" + zero: "нÑма нови покани" + manage_aspect_contacts: + existing: "СъщеÑтвуващи контакти" + manage_within: "Manage contacts within" + new_request_to_person: + sent: "sent!" + search: "ТърÑене" + services: + create: + success: "УдоÑтоверÑването приключи уÑпешно." + destroy: + success: "УдоÑтоверението е изтрито уÑпешно." + failure: + error: "възникна грешка при Ñвързването Ñ ÑƒÑлугата" + finder: + friends: + few: "%{count} приÑтелÑ" + many: "%{count} приÑтелÑ" + one: "1 приÑтел" + other: "%{count} приÑтелÑ" + zero: "нÑма приÑтели" + invite_your_friends_from: "Поканете приÑтелите Ñи от %{service}" + not_connected: "not connected" + index: + connect_to_facebook: "Свързване Ñ facebook" + connect_to_twitter: "Свързване Ñ twitter" + disconnect: "изключване" + edit_services: "Редактиране на уÑлугите" + logged_in_as: "впиÑани Ñте като" + really_disconnect: "изключване на ÑвързаноÑтта Ñ %{service}?" + inviter: + click_link_to_accept_invitation: "Click this link to accept your invitation" + join_me_on_diaspora: "Join me on DIASPORA*" + remote_friend: + invite: "invite" + resend: "resend" + settings: "ÐаÑтройки" + shared: + add_contact: + create_request: "ТърÑи по Diaspora адреÑ" + diaspora_handle: "diaspora@handle.org" + enter_a_diaspora_username: "Въведете потребителÑко име от Diaspora:" + know_email: "Знаете адреÑите на ел. им поща? ТрÑбва да ги поканите" + your_diaspora_username_is: "Вашето потребителÑко име в Diaspora е %{diaspora_handle}" + contact_list: + all_contacts: "Ð’Ñички контакти" + cannot_remove: "Лицето не може да бъде премахнато от поÑÐ»ÐµÐ´Ð½Ð¸Ñ Ð°Ñпект. (Ðко желаете да бъде прекратена връзката Ñ Ð»Ð¸Ñ†ÐµÑ‚Ð¾ е необходимо да премахнете контакта.)" + footer: + logged_in_as: "впиÑани Ñте като %{name}" + your_aspects: "вашите аÑпекти" + invitations: + by_email: "по ел. поща" + dont_have_now: "За момента не разполагате Ñ Ð¿Ð¾ÐºÐ°Ð½Ð¸, но Ñкоро ще имате!" + from_facebook: "От Facebook" + invitations_left: "(оÑтават още %{count})" + invite_someone: "Поканете нÑкого" + invite_your_friends: "Ðамерете приÑтелите Ñи" + invites: "Покани" + invites_closed: "Invites are currently closed on this Diaspora pod" + notification: + new: "New %{type} from %{from}" + public_explain: + logged_in: "впиÑани Ñте в %{service}" + manage: "управление на Ñвързаните уÑлуги" + outside: "Публичните ÑÑŠÐ¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ñ‰Ðµ Ñа видими и за хора извън Diaspora." + title: "ÐаÑтройте Ñвързване Ñ ÑƒÑлуга" + publisher: + add_photos: "добавете Ñнимки" + all: "вÑички" + all_contacts: "вÑички контакти" + click_to_share_with: "Кликнете, за да Ñподелите: " + make_public: "направете публично" + post_a_message_to: "Публикувайте публично ÑъобÑение в %{aspect}" + posting: "Публикуване..." + public: "Публично" + publishing_to: "публикуване в: " + share: "Споделете" + share_with: "ÑподелÑне Ñ" + whats_on_your_mind: "какво миÑлите?" + reshare: + reshare: "ÑподелÑне Ñ" + stream_element: + dislike: "Ðе ми хареÑва" + like: "ХареÑва ми" + status_messages: + create: + success: "Successfully mentioned: %{names}" + destroy: + failure: "ПубликациÑта не бе изтрита" + helper: + no_message_to_display: "ÐÑма Ñъобщение за изобразÑване." + new: + mentioning: "Mentioning: %{person}" + show: + destroy: "Изтриване" + not_found: "За Ñъжаление публикациÑта не може да бъде намерена." + permalink: "permalink" + stream_helper: + hide_comments: "Ñкриване на коментарите" + show_comments: "вÑички коментари" + tags: + show: + nobody_talking: "Ðикой не е говорил за %{tag}." + people_tagged_with: "Хора маркирани Ñ %{tag}" + posts_tagged_with: "Публикации Ñ Ð¼Ð°Ñ€ÐºÐ° #%{tag}" + the_world: "Ñветът" + undo: "ОтмÑна?" + username: "ПотребителÑко име" + users: + destroy: "Ðкаунтът е затворен уÑпешно." + edit: + also_commented: "...нÑкой коментира Ð¿ÑƒÐ±Ð»Ð¸ÐºÐ°Ñ†Ð¸Ñ Ð½Ð° ваш контакт?" + change: "ПромÑна" + change_language: "ПромÑна на езика" + change_password: "ПромÑна на паролата" + close_account: "ЗатварÑне на акаунта" + comment_on_post: "...нÑкой коментира ваша публикациÑ?" + current_password: "Текуща парола" + download_photos: "Ñнимките ви" + download_xml: "данните ви (XML формат)" + edit_account: "Редактиране на акаунта" + export_data: "СвалÑне на..." + mentioned: "...бъдете Ñпоменат в публикациÑ?" + new_password: "Ðова парола" + private_message: "...получите лично Ñъобщение?" + receive_email_notifications: "Получаване на извеÑтие по ел. поща когато..." + request_acceptence: "...бъде приета отправена от Ð²Ð°Ñ Ð¿Ð¾ÐºÐ°Ð½Ð° за ÑподелÑне?" + request_received: "...получите покана за ÑподелÑне?" + your_email: "Вашата ел. поща" + your_handle: "ВашиÑÑ‚ Ð°Ð´Ñ€ÐµÑ Ð² Diaspora" + getting_started: + connect_on_diaspora: "Connect on Diaspora" + connect_services: "Свързване към други уÑлуги" + could_not_find_anyone: "Could not find any friends on Diaspora*. Use the friend finder to invite them." + edit_profile: "Edit your profile" + finished: "Готово!" + save_and_continue: "Запиши и продължи" + signup_steps: "Finish your sign up by completing these three steps:" + skip: "преÑкачане на Ñтраницата" + step_2: + find_your_friends_on_diaspora: "Желаете ли да намерите приÑтелите Ñи от Facebook в Diaspora?" + skip: "Skip" + step_3: + finish: "Готово" + people_already_on_diaspora: "Хора, които вече Ñа в Diaspora" + welcome: "Добре дошли в Diaspora!" + public: + does_not_exist: "ПотребителÑÑ‚ %{username} не ÑъщеÑтвува!" + update: + email_notifications_changed: "ÐдреÑÑŠÑ‚ за извеÑÑ‚Ñване е променен" + language_changed: "Езикът е Ñменен" + language_not_changed: "Езикът не бе променен" + password_changed: "Паролата е променена" + password_not_changed: "Паролата не бе променена" + webfinger: + fetch_failed: "failed to fetch webfinger profile for %{profile_url}" + hcard_fetch_failed: "there was a problem fetching the hcard for %{account}" + no_person_constructed: "No person could be constructed from this hcard." + not_enabled: "webfinger does not seem to be enabled for %{account}'s host" + xrd_fetch_failed: "there was an error getting the xrd from account %{account}" diff --git a/config/locales/diaspora/br.yml b/config/locales/diaspora/br.yml index d3034bb99ea4b1cfed25ec562071aa8d4656b17e..d80de325c4a009a05a89c458c64df0a611fe6230 100644 --- a/config/locales/diaspora/br.yml +++ b/config/locales/diaspora/br.yml @@ -52,7 +52,7 @@ br: aspect_contacts: done_editing: "done editing" aspect_stream: - activity: "activity" + activity: "oberiantiz" post_time: "post time" sort_by: "diskouezh hervez:" contacts_not_visible: "Contacts in this aspect will not be able to see each other." @@ -80,7 +80,7 @@ br: aspect_not_empty: "Aspect not empty" remove: "skarzhañ" index: - handle_explanation: "This is your diaspora handle. Like an email address, you can give this to people to reach you." + handle_explanation: "Ar postel-mañ zo ho skor diaspora. E-giz ur chomlec'h-postel e c'hellit skignat anezhañ a-benn bezañ kavet gant an dud." no_contacts: "Darempred ebet" post_a_message: "post a message >>" manage: @@ -266,7 +266,7 @@ br: and_others: "ha %{number} reoù all" mark_all_as_read: "Mark All as Read" notifications: "Notifications" - mentioned: "has mentioned you in their" + mentioned: "en deus meneget ac'hanoc'h e-barzh ur skrid" new_request: "offered to share with you." post: "post" private_message: "sent you a message." @@ -354,12 +354,12 @@ br: recent_posts: "Recent Posts" recent_public_posts: "Recent Public Posts" return_to_aspects: "Return to your aspects page" - similar_contacts: "similar contacts" + see_all: "See all" start_sharing: "start sharing" to_accept_or_ignore: "to accept or ignore it." you_have_no_tags: "you have no tags!" webfinger: - fail: "Sorry, we couldn't find %{handle}." + fail: "Siwazh, n'eus ket moaien kavout %{handle}." zero: "den ebet" photos: create: @@ -494,7 +494,7 @@ br: settings: "Settings" shared: add_contact: - create_request: "Find by Diaspora handle" + create_request: "Klask diwar ar skor Diaspora" diaspora_handle: "diaspora@handle.org" enter_a_diaspora_username: "Enter a Diaspora username:" know_email: "Know their email address? You should invite them" @@ -584,7 +584,7 @@ br: request_acceptence: "...your share request is accepted?" request_received: "...you receive a new share request?" your_email: "Ho postel" - your_handle: "Your diaspora handle" + your_handle: "Ho skor diaspora" getting_started: connect_on_diaspora: "Connect on Diaspora" connect_services: "Connect your other services" @@ -596,7 +596,7 @@ br: skip: "skip getting started" step_2: find_your_friends_on_diaspora: "Would you like to find your Facebook friends on Diaspora?" - skip: "Skip" + skip: "Tremen e-biou" step_3: finish: "Echuiñ" people_already_on_diaspora: "People already on Diaspora" diff --git a/config/locales/diaspora/ca.yml b/config/locales/diaspora/ca.yml index 43aee2cf30992d40472550f9c8d08cbd433d0833..36e3b408031dbd46ebd4f5ea5be1d55e237068ed 100644 --- a/config/locales/diaspora/ca.yml +++ b/config/locales/diaspora/ca.yml @@ -301,7 +301,7 @@ ca: private_message: "us ha enviat un missatge." comment_on_post: "ha comentat la vostra" also_commented: "also commented on your contact's" - mentioned: "us ha mencionat a la seva" + mentioned: "us ha mencionat a una publicació" post: "publicació" deleted: "suprimida" also_commented_deleted: "ha comentat una publicació suprimida" @@ -386,8 +386,7 @@ ca: not_connected: "No esteu compartint amb aquesta persona" recent_posts: "Publicacions recents" recent_public_posts: "Publicacions públiques recents" - similar_contacts: "contactes similars" - start_sharing: "comença a compartir" + see_all: "Visualitza'ls tots" message: "Envia-li un missatge" mention: "Menciona'l" profile_sidebar: @@ -582,7 +581,7 @@ ca: reshare: reshare: "Torna a compartir" public_explain: - title: "Esteu a punt de publicar un missatge públic!" + title: "Configureu els serveis connectats" outside: "Els missatges públics seran visibles per qualsevol des de fora del Dià spora." logged_in: "s'ha entrat en %{service}" manage: "gestiona els serveis connectats" diff --git a/config/locales/diaspora/cs.yml b/config/locales/diaspora/cs.yml index af3d2113f2207d16f998700316e07ad85fdd6b47..b8336a00af69a78038859e4f2be6823635d092b9 100644 --- a/config/locales/diaspora/cs.yml +++ b/config/locales/diaspora/cs.yml @@ -228,7 +228,7 @@ cs: header: blog: "blog" code: "kód" - login: "pÅ™ihlášenÃ" + login: "pÅ™ihlásit" logout: "odhlásit" profile: "profil" settings: "nastavenÃ" @@ -251,7 +251,7 @@ cs: no_results: "Nebyly nalezeny žádné výsledky" notifications: also_commented: "také komentoval v %{post_author}" - also_commented_deleted: "komentován smazaný pÅ™ÃspÄ›vek" + also_commented_deleted: "komentoval ve smazaném pÅ™ÃspÄ›vku" comment_on_post: "komentoval váš" deleted: "smazáno" helper: @@ -266,7 +266,7 @@ cs: and_others: "a %{number} dalÅ¡Ãch" mark_all_as_read: "OznaÄit vÅ¡e jako pÅ™eÄtené" notifications: "OznámenÃ" - mentioned: "vás zmÃnil v jejich" + mentioned: "vás zmÃnil v pÅ™ÃspÄ›vku" new_request: "nabÃdnul vám sdÃlenÃ." post: "zpráva" private_message: "vám poslal zprávu." @@ -354,7 +354,7 @@ cs: recent_posts: "Poslednà pÅ™ÃspÄ›vky" recent_public_posts: "Poslednà veÅ™ejné pÅ™ÃspÄ›vky" return_to_aspects: "Návrat na vaÅ¡i stránku s aspekty" - similar_contacts: "podobné kontakty" + see_all: "Zobrazit vÅ¡echno" start_sharing: "zaÄÃt sdÃlet" to_accept_or_ignore: "pÅ™ijmout nebo ignorovat." you_have_no_tags: "nemáte žádné znaÄky!" @@ -520,7 +520,7 @@ cs: logged_in: "pÅ™ihlášen do %{service}" manage: "upravit pÅ™ipojené služby" outside: "VeÅ™ejné pÅ™ÃspÄ›vky budou dostupné pro ostatnà mimo Diasporu." - title: "Chystáte se poslat veÅ™ejnou zprávu!" + title: "Nastavit souvisejÃcà služby" publisher: add_photos: "pÅ™idat fotky" all: "vÅ¡echny" diff --git a/config/locales/diaspora/cy.yml b/config/locales/diaspora/cy.yml index 3e60d58125a59be062d40c0d6a9f00bab5ea76d3..074d2cc6341fa631df2245e64de730d6a4c4992b 100644 --- a/config/locales/diaspora/cy.yml +++ b/config/locales/diaspora/cy.yml @@ -354,7 +354,7 @@ cy: recent_posts: "Recent Posts" recent_public_posts: "Recent Public Posts" return_to_aspects: "Return to your aspects page" - similar_contacts: "similar contacts" + see_all: "See all" start_sharing: "start sharing" to_accept_or_ignore: "to accept or ignore it." you_have_no_tags: "you have no tags!" diff --git a/config/locales/diaspora/da.yml b/config/locales/diaspora/da.yml index 647eb553cd33676f7d59c8bb44b07482a70dc2ea..869e56acb9512f6297ee4e8991d7d9d706eee57f 100644 --- a/config/locales/diaspora/da.yml +++ b/config/locales/diaspora/da.yml @@ -82,7 +82,7 @@ da: index: handle_explanation: "Dette er dit diaspora handle. Som med en e-mail-adresse, kan du give denne til folk, sÃ¥ de kan kontakte dig." no_contacts: "Ingen kontakter" - post_a_message: "post a message >>" + post_a_message: "post en besked >>" manage: add_a_new_aspect: "Tilføj et nyt aspekt" add_a_new_contact: "Tilføj en ny kontaktperson" @@ -113,10 +113,10 @@ da: zero: "ingen aspekter" back: "Tilbage" bookmarklet: - explanation: "%{link} from anywhere by bookmarking this link." + explanation: "%{link} alle steder fra ved at bogmærke dette link." explanation_link_text: "Post pÃ¥ Diaspora" - post_something: "Post something to Diaspora" - post_success: "Posted! Closing!" + post_something: "Post noget til Diaspora" + post_success: "Posted! Lukker!" cancel: "Annullér" comments: few: "%{count} kommentarer" @@ -144,9 +144,9 @@ da: zero: "Ingen kontaktpersoner" conversations: create: - sent: "Message sent" + sent: "Meddelelse sendt" destroy: - success: "Conversation successfully removed" + success: "Samtale slettet med succes" helper: new_messages: few: "%{count} nye beskeder" @@ -180,7 +180,7 @@ da: correct_the_following_errors_and_try_again: "Ret følgende fejl og prøv igen." invalid_fields: "Ugyldige felter" fill_me_out: "Udfyld mig" - hide: "Hide" + hide: "Skjul" home: show: already_account: "har du allerede en konto?" @@ -222,7 +222,7 @@ da: have_a_problem: "Har du et problem? Find svaret her" powered_by: "POWERED BY DIASPORA*" public_feed: "Offentligt Diaspora nyheds feed for %{name}" - toggle: "toggle mobile site" + toggle: "skift mobil side" whats_new: "Hvad er nyt?" your_aspects: "dine aspekter" header: @@ -248,7 +248,7 @@ da: zero: "ingen personer kunne lide det" more: "Mere" next: "Næste" - no_results: "No Results Found" + no_results: "Ingen resultater fundet" notifications: also_commented: "kommenterede ogsÃ¥ pÃ¥ %{post_author}'s" also_commented_deleted: "kommenterede pÃ¥ en slettet post" @@ -354,7 +354,7 @@ da: recent_posts: "Nylige indlæg" recent_public_posts: "Seneste offentlige indlæg" return_to_aspects: "Tilbage til aspektsoversigt" - similar_contacts: "lignende kontakter" + see_all: "Se alle" start_sharing: "begynd at dele" to_accept_or_ignore: "at godkende eller ignorere det." you_have_no_tags: "du har ingen tags!" @@ -398,7 +398,7 @@ da: notice: "Billedet blev opdateret." post_visibilites: update: - post_hidden: "%{name}'s post has been hidden." + post_hidden: "%{name}'s post er blevet skjult." posts: doesnt_exist: "den post eksisterer ikke!" previous: "Forrige" @@ -503,8 +503,8 @@ da: all_contacts: "Alle kontaktpersoner" cannot_remove: "Kan ikke fjerne person fra sidste aspekt." footer: - logged_in_as: "logged in as %{name}" - your_aspects: "your aspects" + logged_in_as: "logget ind som %{name}" + your_aspects: "Dine aspekter" invitations: by_email: "vha. Email" dont_have_now: "Du har ikke nogen lige nu, men der kommer snart flere invitationer!" @@ -561,7 +561,7 @@ da: people_tagged_with: "Personer tagged med %{tag}" posts_tagged_with: "Poster tagged med #%{tag}" the_world: "Verden" - undo: "Undo?" + undo: "Fortryd?" username: "Brugernavn" users: destroy: "Kontoen er nu lukket." diff --git a/config/locales/diaspora/de.yml b/config/locales/diaspora/de.yml index e480596658a3ceb3e954e94dc30bfd5f609e3ae4..0d57f8490f4666a4360c9474358c69cf9acd1d01 100644 --- a/config/locales/diaspora/de.yml +++ b/config/locales/diaspora/de.yml @@ -266,7 +266,7 @@ de: and_others: "und %{number} andere" mark_all_as_read: "Markiere alle als gelesen" notifications: "Benachrichtigungen" - mentioned: "hat dich erwähnt in " + mentioned: "hat dich in einem Beitrag erwähnt" new_request: "hat angeboten mit dir zu teilen." post: "Beitrag" private_message: "hat dir eine Nachricht gesendet." @@ -354,7 +354,7 @@ de: recent_posts: "Neueste Beiträge" recent_public_posts: "Neueste öffentliche Beiträge" return_to_aspects: "Kehre zur Aspekt-Ãœbersicht zurück." - similar_contacts: "ähnliche Kontakte" + see_all: "Alle zeigen" start_sharing: "Fang an zu teilen!" to_accept_or_ignore: "um zu akzeptieren oder zu ignorieren." you_have_no_tags: "Du hast keine Tags!" @@ -520,7 +520,7 @@ de: logged_in: "Eingeloggt in %{service}" manage: "verbundene Dienste verwalten" outside: "Öffentliche Nachrichten sind für andere außerhalb von Diaspora sichtbar." - title: "Du bist dabei, eine öffentliche Nachricht zu posten!" + title: "Verbundene Dienste verwalten" publisher: add_photos: "Fotos hinzufügen" all: "alle" @@ -573,8 +573,8 @@ de: close_account: "Konto schließen" comment_on_post: "… jemand deinen Beitrag kommentiert hat?" current_password: "Derzeitiges Passwort" - download_photos: "Meine Fotos herunterladen" - download_xml: "Meine Daten herunterladen (XML)" + download_photos: "Fotos herunterladen" + download_xml: "Daten herunterladen (XML)" edit_account: "Konto bearbeiten" export_data: "Daten exportieren" mentioned: "… du in einem Beitrag erwähnt wirst?" diff --git a/config/locales/diaspora/el.yml b/config/locales/diaspora/el.yml index b4225e33a07d628150f93e269b342d085f77d8a9..f57f9456ecd7dbf864e895942f190c2527be6a69 100644 --- a/config/locales/diaspora/el.yml +++ b/config/locales/diaspora/el.yml @@ -343,7 +343,7 @@ el: remove_contact: "αφαίÏεση επαφής" remove_from: "ΑφαίÏεση του χÏήστη %{name} από τη πτυχή %{aspect}?" show: - add_some: "Ï€ÏοσθÎστε κάποιον" + add_some: "Ï€ÏοσθÎστε κάποιες" does_not_exist: "Ο/Η χÏήστης δεν υπάÏχει!" edit: "επεξεÏγασία" incoming_request: "Ο/Η %{name} θÎλει να μοιÏαστεί μαζί σας" @@ -354,7 +354,7 @@ el: recent_posts: "Î Ïόσφατες δημοσιεÏσεις" recent_public_posts: "Î Ïόσφατες Δημόσιες ΔημοσιεÏσεις" return_to_aspects: "ΕπιστÏοφή στη σελίδα με τις πτυχÎÏ‚ σας" - similar_contacts: "παÏόμοιες επαφÎÏ‚" + see_all: "Εμφάνιση όλων" start_sharing: "ξεκινήσετε την κοινή χÏήση" to_accept_or_ignore: "να το αποδεχθεί ή να το αγνοήσει." you_have_no_tags: "δεν Îχετε ετικÎτες!" diff --git a/config/locales/diaspora/en.yml b/config/locales/diaspora/en.yml index fe501ff2928872e3c474f111ee37536bbf3e51e4..0711255634c8a159cdf68398452740c2ce6bd1b0 100644 --- a/config/locales/diaspora/en.yml +++ b/config/locales/diaspora/en.yml @@ -254,9 +254,9 @@ en: header: profile: "profile" settings: "settings" - logout: "logout" + logout: "log out" blog: "blog" - login: "login" + login: "log in" code: "code" application: powered_by: "POWERED BY DIASPORA*" @@ -287,10 +287,10 @@ en: private_message: "sent you a message." comment_on_post: "commented on your" also_commented: "also commented on %{post_author}'s" - mentioned: "has mentioned you in a post" - post: "post" + mentioned: "has mentioned you in a " + post: "post." deleted: "deleted" - also_commented_deleted: "commented on a deleted post" + also_commented_deleted: "commented on a deleted post." index: notifications: "Notifications" mark_all_as_read: "Mark All as Read" @@ -365,7 +365,7 @@ en: not_connected: "You are not sharing with this person" recent_posts: "Recent Posts" recent_public_posts: "Recent Public Posts" - similar_contacts: "similar contacts" + see_all: "See all" start_sharing: "start sharing" message: "Message" mention: "Mention" @@ -553,7 +553,7 @@ en: reshare: reshare: "Reshare" public_explain: - title: "You are about to post a public message!" + title: "Set up connected services" outside: "Public messages will be available for others outside of Diaspora to see." logged_in: "logged in to %{service}" manage: "manage connected services" diff --git a/config/locales/diaspora/en_shaw.yml b/config/locales/diaspora/en_shaw.yml index 50f8bd40f2363d50ec21a25b45c6b2ea04df68d0..b2a396ffed29533c8438ec359779bd291a4975aa 100644 --- a/config/locales/diaspora/en_shaw.yml +++ b/config/locales/diaspora/en_shaw.yml @@ -266,7 +266,7 @@ en_shaw: and_others: "𑯠%{number} ð‘³ð‘žð‘¼ð‘Ÿ" mark_all_as_read: "ð‘¥ð‘¸ð‘’ ð‘·ð‘¤ ð‘¨ð‘Ÿ ð‘®ð‘§ð‘›" notifications: "ð‘¯ð‘´ð‘‘ð‘¦ð‘“ð‘¦ð‘’ð‘±ð‘–ð‘©ð‘¯ð‘Ÿ" - mentioned: "ð‘£ð‘¨ð‘Ÿ ð‘¥ð‘§ð‘¯ð‘–ð‘©ð‘¯ð‘› ð‘¿ ð‘¦ð‘¯ ð‘žð‘º" + mentioned: "ð‘£ð‘¨ð‘Ÿ ð‘¥ð‘§ð‘¯ð‘–ð‘©ð‘¯ð‘› ð‘¿ ð‘¦ð‘¯ ð‘© ð‘ð‘´ð‘•ð‘‘" new_request: "ð‘ªð‘“ð‘¼ð‘› ð‘‘ ð‘–𑺠ð‘¢ð‘¦ð‘ž ð‘¿." post: "ð‘ð‘´ð‘•ð‘‘" private_message: "ð‘•ð‘§ð‘¯ð‘‘ ð‘¿ ð‘© ð‘¥ð‘§ð‘•ð‘©ð‘¡." @@ -354,7 +354,7 @@ en_shaw: recent_posts: "ð‘®ð‘°ð‘•ð‘©ð‘¯ð‘‘ ð‘ð‘´ð‘•ð‘‘ð‘•" recent_public_posts: "ð‘®ð‘°ð‘•ð‘©ð‘¯ð‘‘ ð‘ð‘³ð‘šð‘¤ð‘¦ð‘’ ð‘ð‘´ð‘•ð‘‘ð‘•" return_to_aspects: "ð‘®ð‘¦ð‘‘ð‘»ð‘¯ ð‘‘ ð‘¿ð‘¼ ð‘¨ð‘•ð‘ð‘§ð‘’ð‘‘ð‘• ð‘ð‘±ð‘¡" - similar_contacts: "ð‘•ð‘¦ð‘¥ð‘¦ð‘¤ð‘¼ ð‘’ð‘ªð‘¯ð‘‘ð‘¨ð‘’ð‘‘ð‘•" + see_all: "ð‘•ð‘° ð‘·ð‘¤" start_sharing: "ð‘•ð‘‘ð‘¸ð‘‘ ð‘–ð‘ºð‘¦ð‘™" to_accept_or_ignore: "ð‘‘ ð‘©ð‘’ð‘•ð‘§ð‘𑑠𑹠ð‘¦ð‘œð‘¯ð‘¹ ð‘¦ð‘‘." you_have_no_tags: "ð‘¿ ð‘£ð‘¨ð‘ ð‘¯ð‘´ ð‘‘ð‘¨ð‘œð‘Ÿ!" @@ -520,7 +520,7 @@ en_shaw: logged_in: "ð‘¤ð‘ªð‘œð‘› ð‘¦ð‘¯ ð‘‘ %{service}" manage: "ð‘¥ð‘¨ð‘¯ð‘©ð‘¡ ð‘’ð‘©ð‘¯ð‘§ð‘’ð‘‘ð‘©ð‘› ð‘•ð‘»ð‘ð‘¦ð‘•ð‘©ð‘Ÿ" outside: "ð‘ð‘³ð‘šð‘¤ð‘¦ð‘’ ð‘¥ð‘§ð‘•ð‘©ð‘¡ð‘©ð‘Ÿ ð‘¢ð‘¦ð‘¤ ð‘šð‘° ð‘©ð‘ð‘±ð‘¤ð‘©ð‘šð‘©ð‘¤ ð‘“𑹠ð‘³ð‘žð‘¼ð‘Ÿ ð‘¬ð‘‘ð‘•ð‘²ð‘› ð‘ ·ð‘›ð‘¦ð‘¨ð‘•ð‘ð‘¹ð‘© ð‘‘ ð‘•ð‘°." - title: "𑿠𑸠ð‘©ð‘šð‘¬ð‘‘ ð‘‘ ð‘ð‘´ð‘•ð‘‘ ð‘© ð‘ð‘³ð‘šð‘¤ð‘¦ð‘’ ð‘¥ð‘§ð‘•ð‘©ð‘¡!" + title: "ð‘•ð‘§ð‘‘ ð‘³ð‘ ð‘’ð‘©ð‘¯ð‘§ð‘’ð‘‘ð‘©ð‘› ð‘•ð‘»ð‘ð‘¦ð‘•ð‘©ð‘Ÿ" publisher: add_photos: "ð‘¨ð‘› ð‘“ð‘´ð‘‘ð‘´ð‘Ÿ" all: "ð‘·ð‘¤" diff --git a/config/locales/diaspora/eo.yml b/config/locales/diaspora/eo.yml index d01b9105db6c8be560cc30933e7924bedfe89aa9..25c00ea8692836a824ce1ffa01a1c3384762f988 100644 --- a/config/locales/diaspora/eo.yml +++ b/config/locales/diaspora/eo.yml @@ -354,7 +354,7 @@ eo: recent_posts: "Recent Posts" recent_public_posts: "Recent Public Posts" return_to_aspects: "Return to your aspects page" - similar_contacts: "similar contacts" + see_all: "See all" start_sharing: "start sharing" to_accept_or_ignore: "to accept or ignore it." you_have_no_tags: "you have no tags!" diff --git a/config/locales/diaspora/es-CL.yml b/config/locales/diaspora/es-CL.yml index 06de1f90089141500ae0d244f98238670810b4ce..907d71d1ea3d8abfcdaa88050f447dbcf68cae15 100644 --- a/config/locales/diaspora/es-CL.yml +++ b/config/locales/diaspora/es-CL.yml @@ -266,7 +266,7 @@ es-CL: and_others: "y otros %{number}" mark_all_as_read: "Marcar todo como leido" notifications: "Notificaciones" - mentioned: "te mencionó en su" + mentioned: "te mencionó en un post" new_request: "quiere compartir contigo." post: "post" private_message: "te envió un mensaje." @@ -354,7 +354,7 @@ es-CL: recent_posts: "Posteos Recientes" recent_public_posts: "Posteos Públicos Recientes" return_to_aspects: "Volver a tu página de aspectos" - similar_contacts: "Contactos similares" + see_all: "Ver todos" start_sharing: "Empezar a compartir" to_accept_or_ignore: "aceptar o ignorar." you_have_no_tags: "No tienes ninguna etiqueta!" @@ -520,7 +520,7 @@ es-CL: logged_in: "entrar a %{service}" manage: "manejar los servicios conectados" outside: "Los mensajes públicos estarán disponibles para que otros fuera de Diaspora los puedan ver." - title: "¡Estás a punto de postear un mensaje público!" + title: "Configurar los servicios conectados" publisher: add_photos: "agregar fotos" all: "todo" diff --git a/config/locales/diaspora/es.yml b/config/locales/diaspora/es.yml index 66be51f6e1d56e25963ddd01e06f60c7ca78dfca..2eed19d3ff05ea50c157152cb6bd358241452bb8 100644 --- a/config/locales/diaspora/es.yml +++ b/config/locales/diaspora/es.yml @@ -42,59 +42,59 @@ es: are_you_sure: "¿Estás seguro?" aspect_memberships: destroy: - failure: "No se pudo eliminar a la persona del Aspecto" - no_membership: "No se pudo encontrar a la persona seleccionada en ese Aspecto" - success: "Persona eliminada con éxito del Aspecto" + failure: "No se pudo eliminar a la persona del aspecto" + no_membership: "No se pudo encontrar a la persona seleccionada en ese aspecto" + success: "Persona eliminada con éxito del aspecto" aspects: add_to_aspect: - failure: "Error añadiendo el contacto al Aspecto." - success: "Contacto añadido con éxito al Aspecto." + failure: "Error añadiendo el contacto al aspecto." + success: "Contacto añadido con éxito al aspecto." aspect_contacts: done_editing: "Aceptar" aspect_stream: activity: "actividad" post_time: "fecha de publicación" sort_by: "ordenar por:" - contacts_not_visible: "Los contactos de este Aspecto no podrán verse." - contacts_visible: "Los contactos de este Aspecto podrán verse." + contacts_not_visible: "Los contactos de este aspecto no podrán verse." + contacts_visible: "Los contactos de este aspecto podrán verse." create: - failure: "Error creando el Aspecto." - success: "Tu nuevo Aspecto %{name} fue creado." + failure: "Error creando el aspecto." + success: "Tu nuevo aspecto %{name} fue creado." destroy: failure: "El aspecto %{name} no está vacÃo y no pudo ser borrado." success: "%{name} fue eliminado con éxito." edit: add_existing: "Añadir un contacto existente." - aspect_list_is_not_visible: "Lista de contactos oculta para los demás en el Aspecto" - aspect_list_is_visible: "Lista de contactos visible para los demás en el Aspecto" - confirm_remove_aspect: "¿Seguro que quieres eliminar este Aspecto?" + aspect_list_is_not_visible: "la lista de contactos del aspecto está ocultada" + aspect_list_is_visible: "la lista de contactos del aspecto es visible" + confirm_remove_aspect: "¿Seguro que quieres eliminar este aspecto?" done: "Listo" - make_aspect_list_visible: "Hacer visible la lista de contactos en el Aspecto." - remove_aspect: "Eliminar este Aspecto" + make_aspect_list_visible: "Lista de contactos visible." + remove_aspect: "Eliminar este aspecto" rename: "renombrar" update: "Actualizar" updating: "actualizando" few: "%{count} aspectos" helper: - are_you_sure: "¿Seguro que quieres eliminar este Aspecto?" - aspect_not_empty: "El Aspecto no está vacÃo" + are_you_sure: "¿Seguro que quieres eliminar este aspecto?" + aspect_not_empty: "El aspecto no está vacÃo" remove: "eliminar" index: handle_explanation: "Ésta es tu dirección Diaspora*. Como una dirección de correo, puedes dársela a la gente para que te encuentren." no_contacts: "No hay contactos" post_a_message: "publica un mensaje >>" manage: - add_a_new_aspect: "Añadir nuevo Aspecto" + add_a_new_aspect: "Añadir nuevo aspecto" add_a_new_contact: "Añadir nuevo contacto" drag_to_add: "Arrastrar para añadir" - manage_aspects: "Gestionar Aspectos" + manage_aspects: "Gestión de aspectos" no_requests: "No hay nuevas solicitudes" requests: "Solicitudes" many: "%{count} aspectos" move_contact: error: "Error moviendo el contacto: %{inspect}" failure: "%{inspect} no funcionó" - success: "Contacto movido al nuevo Aspecto" + success: "El contacto fue movido al nuevo aspecto" new_aspect: create: "Crear" name: "Nombre" @@ -106,10 +106,10 @@ es: family: "Familia" work: "Trabajo" show: - edit_aspect: "editar Aspecto" + edit_aspect: "editar aspecto" update: - failure: "Tu Aspecto, %{name}, tenÃa un nombre demasiado largo para guardarlo." - success: "Tu Aspecto, %{name}, fue editado con éxito." + failure: "Tu aspecto, %{name}, tenÃa un nombre muy largo para guardarlo." + success: "Tu aspecto, %{name}, fue editado con éxito." zero: "no hay aspectos" back: "Atrás" bookmarklet: @@ -139,7 +139,7 @@ es: other: "%{count} contactos" share_with_pane: accepts: "Una vez que %{name} acepte, veras sus demás publicaciones en Diaspora*" - add_new_aspect: "añadir nuevo Aspecto" + add_new_aspect: "añadir nuevo aspecto" share_with: "Empezar a compartir con %{name}" zero: "no hay contactos" conversations: @@ -185,7 +185,7 @@ es: show: already_account: "¿TodavÃa no tienes una cuenta?" choice: "Elección" - choice_explanation: "Diaspora* te permite organizar conexiones en grupos llamados Aspectos. En Diaspora*, los Aspectos aseguran que tus fotos, historias y bromas sean compartidas sólo con la gente que tu quieras." + choice_explanation: "Diaspora* te permite organizar conexiones en grupos llamados aspectos. En Diaspora*, los aspectos aseguran que tus fotos, historias y bromas sean compartidas sólo con la gente que tu quieras." learn_about_host: "Aprende acerca de cómo hostear tu propio servidor Diaspora*." login_here: "conectar aquÃ" ownership: "propiedad" @@ -210,7 +210,7 @@ es: already_invited: "Ya invitado" aspect: "Aspecto" comma_seperated_plz: "Puedes escribir múltiples direcciones de correo separadas por comas." - if_they_accept_info: "Si aceptan, serán añadidos al Aspecto que selecciones." + if_they_accept_info: "Si aceptan, serán añadidos al aspecto que selecciones." invite_someone_to_join: "¡Invita a alguien a unirse a Diaspora*!" personal_message: "Mensaje Personal" resend: "Reenviado" @@ -224,7 +224,7 @@ es: public_feed: "Canal público de %{name} " toggle: "cambiar sitio movil" whats_new: "Novedades en Diaspora*" - your_aspects: "Tus Aspectos" + your_aspects: "tus aspectos" header: blog: "Blog" code: "Código" @@ -252,7 +252,7 @@ es: notifications: also_commented: "participó en la publicación de %{post_author}" also_commented_deleted: "participó en una publicación eliminada" - comment_on_post: "comentó en tu" + comment_on_post: "comentó tu" deleted: "eliminado" helper: new_notifications: @@ -266,7 +266,7 @@ es: and_others: "y otros %{number}" mark_all_as_read: "Marcar todo como leÃdo" notifications: "Notificaciones" - mentioned: "te nombró en su" + mentioned: "te mencionó en una" new_request: "quisiera compartir contigo." post: "publicación" private_message: "te envió un mensaje." @@ -285,9 +285,9 @@ es: love: "¡Qué pasa!" manage_your_email_settings: "configura tu correo" mentioned: - mentioned: "te nombró en una publicación:" + mentioned: "te mencionó en una publicación:" sign_in: "Conéctate para verlo." - subject: "%{name} te ha nombrado en Diaspora*" + subject: "%{name} te mencionó en Diaspora*" new_request: just_sent_you: "acaban de enviarte una solicitud de contacto Diaspora*" sign_in: "Conéctate aquÃ" @@ -314,7 +314,7 @@ es: add_contact_small: add_contact_from_tag: "añadir contacto desde una etiqueta" aspect_list: - edit_membership: "editar el Aspecto donde está el contacto" + edit_membership: "editar aspectos asociados" few: "%{count} personas" helper: people_on_pod_are_aware_of: "La gente que está en POD son conscientes de" @@ -335,10 +335,10 @@ es: profile_sidebar: bio: "BiografÃa" born: "Fecha de Nacimiento" - cannot_remove: "%{name} no puede eliminarse del último Aspecto. (Si quieres dejar de compartir con él, debes elimÃnarlo.)" + cannot_remove: "%{name} no puede eliminarse del último aspecto. (Si quieres dejar de compartir, deberas eliminarlo.)" edit_my_profile: "Editar mi perfil" gender: "Género / Sexo" - in_aspects: "en Aspectos" + in_aspects: "en aspectos" location: "Ubicación " remove_contact: "eliminar contacto" remove_from: "¿Eliminar a %{name} de %{aspect}?" @@ -353,8 +353,8 @@ es: not_connected: "No estás conectado con esta persona." recent_posts: "Últimas Publicaciones" recent_public_posts: "Últimas Publicaciones (El mundo)" - return_to_aspects: "Volver a tu página de Aspectos." - similar_contacts: "Contactos similares" + return_to_aspects: "Volver a tu página de aspectos" + see_all: "Ver todos" start_sharing: "Empezar a compartir" to_accept_or_ignore: "Aceptar o ignorar" you_have_no_tags: "¡No tienes etiquetas!" @@ -446,7 +446,7 @@ es: sending: "Enviando" sent: "Quisieras compartir con %{name}. Lo verá la próxima vez que entre en Diaspora*." destroy: - error: "¡Selecciona un Aspecto!" + error: "¡Selecciona un aspecto!" ignore: "Solicitud de contacto ignorada." success: "Ahora están compartiendo." helper: @@ -501,10 +501,10 @@ es: your_diaspora_username_is: "Su nombre de usuario Diaspora* es: %{diaspora_handle}" contact_list: all_contacts: "Todos los contactos" - cannot_remove: "No puede eliminarse a la persona del último Aspecto. (Si quieres desconectar de esta persona debes elminarla de tus contactos.)" + cannot_remove: "No puede eliminarse a la persona del último aspecto. (Si quieres dejar de compartir deberas elminarla.)" footer: logged_in_as: "Conectado como %{name}" - your_aspects: "Tus Aspectos" + your_aspects: "tus aspectos" invitations: by_email: "por Email" dont_have_now: "No tienes invitaciones ahora mismo pero, ¡pronto llegarán más!" @@ -520,7 +520,7 @@ es: logged_in: "Conectado a %{service}" manage: "Servicios conectados" outside: "Las publicaciones para \"el mundo\" podrán verse fuera de Diaspora*." - title: "¡Estás a punto de hacer una publicación!" + title: "Configurar los servicios conectados" publisher: add_photos: "Añadir fotos" all: "todo" @@ -533,7 +533,7 @@ es: publishing_to: "publicar en: " share: "Compartir" share_with: "compartir con" - whats_on_your_mind: "¿Qué tienes en mente?" + whats_on_your_mind: "...y qué te cuentas?" reshare: reshare: "Publicar en..." stream_element: @@ -561,7 +561,7 @@ es: people_tagged_with: "Personas etiquetadas en %{tag}" posts_tagged_with: "Publicaciones etiquetadas con #%{tag}" the_world: "el mundo" - undo: "Deshacer?" + undo: "¿Deshacer?" username: "Nombre de usuario" users: destroy: "Cuenta cerrada con éxito." diff --git a/config/locales/diaspora/eu.yml b/config/locales/diaspora/eu.yml index 0094f951571502052e69ed7bcd1e6fe1ef5bc692..818350088e3c89ede07d1410f6d5320fbb38ae6f 100644 --- a/config/locales/diaspora/eu.yml +++ b/config/locales/diaspora/eu.yml @@ -266,7 +266,7 @@ eu: and_others: "eta beste %{number}(e)k" mark_all_as_read: "Guztiak irakurrita" notifications: "Jakinarazpenak" - mentioned: "aipatu zaituzte bere" + mentioned: "(e)k zu aipatu zaitu mezu batean" new_request: "(e)k zurekin partekatu nahi du." post: "mezua" private_message: "(e)k mezu bat bidali dizu." @@ -354,7 +354,7 @@ eu: recent_posts: "Mezu Berrienak" recent_public_posts: "Azken berri publikoak" return_to_aspects: "Zure alderdi orrialdera itzuli" - similar_contacts: "antzeko adiskide" + see_all: "Guztiak ikusi" start_sharing: "harremanetan hasi" to_accept_or_ignore: "onartu edo utzi." you_have_no_tags: "ez duzu etiketarik!" @@ -520,7 +520,7 @@ eu: logged_in: "%{service}(e)n sartuta" manage: "kudeatu lotutako zerbitzuak" outside: "Mezu publikoak edozeinek irakurtzeko ahalmena izango ditu, Diaspora kontua ez badu ere." - title: "Mezu publiko bat partekatzear zaude!" + title: "Zerbitzu konektatuak kudeatu" publisher: add_photos: "argazkiak gehitu" all: "guztiak" diff --git a/config/locales/diaspora/fi.yml b/config/locales/diaspora/fi.yml index 7de04f2c52d7f84bf9f0d5a1ac64b428fa512847..cdb50c6d9b0da7abdba11cbb4348ae97eff0b6c3 100644 --- a/config/locales/diaspora/fi.yml +++ b/config/locales/diaspora/fi.yml @@ -354,7 +354,7 @@ fi: recent_posts: "Viimeisimmät tapahtumat" recent_public_posts: "Viimeisimmät julkiset tapahtumat" return_to_aspects: "Palaa näkymiin" - similar_contacts: "Yhteiset kontaktit" + see_all: "See all" start_sharing: "aloita jakamaan" to_accept_or_ignore: "hyväksyäksesi, tai hylätäksesi sen." you_have_no_tags: "Sinulla ei ole tageja!" diff --git a/config/locales/diaspora/fr.yml b/config/locales/diaspora/fr.yml index fc4f67c94f316d683ba828e00a5183b2da385db8..cdc7bb7d73151c00d081acede88cbbebec33defc 100644 --- a/config/locales/diaspora/fr.yml +++ b/config/locales/diaspora/fr.yml @@ -113,7 +113,7 @@ fr: zero: "aucun aspect" back: "Retour" bookmarklet: - explanation: "%{link} depuis n'importe où ajoutant ce bookmarklet à vos marque-pages/favoris." + explanation: "%{link} depuis n'importe où en ajoutant ce bookmarklet à vos marque-pages ou favoris." explanation_link_text: "Publier sur Diaspora" post_something: "Publier quelque chose sur Diaspora" post_success: "Publié ! Fermeture !" @@ -229,7 +229,7 @@ fr: blog: "blog" code: "code" login: "connexion" - logout: "se déconnecter" + logout: "déconnexion" profile: "profil" settings: "paramètres" likes: @@ -266,7 +266,7 @@ fr: and_others: "et %{number} autres" mark_all_as_read: "Tout marquer comme lu" notifications: "Notifications" - mentioned: "vous a mentionné(e) dans son" + mentioned: "vous a mentionné(e) dans une publication" new_request: "a proposé de partager avec vous." post: "message" private_message: "vous a envoyé un message." @@ -354,7 +354,7 @@ fr: recent_posts: "Messages récents" recent_public_posts: "Messages publics récents" return_to_aspects: "Retourner à votre page des aspects" - similar_contacts: "Contacts similaires" + see_all: "Tout afficher" start_sharing: "commencer à partager" to_accept_or_ignore: "pour l'accepter ou l'ignorer." you_have_no_tags: "vous n'avez aucun tag !" @@ -520,7 +520,7 @@ fr: logged_in: "connecté(e) à %{service}" manage: "gérer les services connectés" outside: "Les messages publics pourront être vus par d'autres en dehors de Diaspora." - title: "Vous êtes sur le point d'envoyer un message public !" + title: "Mettre en place des services connectés" publisher: add_photos: "ajouter des photos" all: "tous" diff --git a/config/locales/diaspora/ga.yml b/config/locales/diaspora/ga.yml index e2b78f78e17a1587161c2fd3b7fd46afe8bf97e3..c1affa0ee0c37af4e3350481c14b4e2569f082ad 100644 --- a/config/locales/diaspora/ga.yml +++ b/config/locales/diaspora/ga.yml @@ -354,7 +354,7 @@ ga: recent_posts: "Póstanna DéanaÃ" recent_public_posts: "Póstanna Phoiblà DéanaÃ" return_to_aspects: "Dul siar chuig leathanach gnéithe" - similar_contacts: "teagmháillà cosúil" + see_all: "See all" start_sharing: "start sharing" to_accept_or_ignore: "chun glacadh leis nó neamhaird a dhéanamh de" you_have_no_tags: "you have no tags!" diff --git a/config/locales/diaspora/he.yml b/config/locales/diaspora/he.yml index 59dabd8bb150809af36b6e91948495ecd6da004e..49351ec28f221fd40544dd756ec71bb82b22cd75 100644 --- a/config/locales/diaspora/he.yml +++ b/config/locales/diaspora/he.yml @@ -82,7 +82,7 @@ he: index: handle_explanation: "זהו ×©× ×”×ž×©×ª×ž×© שלך בדי×ספורה. כמו כתובת דו×ר ××œ×§×˜×¨×•× ×™, × ×™×ª×Ÿ לחלוק ×ותו ×¢× ×× ×©×™× ×›×“×™ שיגיעו ×ליך." no_contacts: "×ין ×× ×©×™ קשר" - post_a_message: "post a message >>" + post_a_message: "×¤×¨×¡×•× ×”×•×“×¢×” >>" manage: add_a_new_aspect: "הוספת היבט חדש" add_a_new_contact: "הוספת ×יש קשר חדש" @@ -266,7 +266,7 @@ he: and_others: "ו־%{number} ×חרי×" mark_all_as_read: "סימון הכול כל×חר קרי××”" notifications: "התרעות" - mentioned: "הזכיר/×” ×ותך ב־" + mentioned: "הזכיר/×” ×ותך ברשומה" new_request: "הציע/×” לשתף ×תך." post: "רשומה" private_message: "שלח/×” לך הודעה." @@ -354,7 +354,7 @@ he: recent_posts: "רשומות ××—×¨×•× ×•×ª" recent_public_posts: "הרשומות הציבוריות ×”××—×¨×•× ×•×ª" return_to_aspects: "ב×פשרותך לחזור לעמוד ×”×”×™×‘×˜×™× ×©×œ×š" - similar_contacts: "×× ×©×™ קשר דומי×" + see_all: "צפייה בהכול" start_sharing: "התחלת השיתוף" to_accept_or_ignore: "כדי לקבל ×ו לדחות ×ותה." you_have_no_tags: "×ין לך תגיות!" @@ -448,7 +448,7 @@ he: destroy: error: "× × ×œ×‘×—×•×¨ בהיבט!" ignore: "התעלמת מבקשת החברות." - success: "××ª× ×—×‘×¨×™× ×›×¢×ª." + success: "×ת/×” משתף/ת כעת." helper: new_requests: few: "%{count} בקשות חדשות!" @@ -511,7 +511,7 @@ he: from_facebook: "מ־Facebook" invitations_left: "(%{count} × ×•×ª×¨×•)" invite_someone: "שליחת ×”×–×ž× ×”" - invite_your_friends: "×”×–×ž× ×ª ×”×—×‘×¨×™× ×©×œ×š" + invite_your_friends: "חיפוש ×”×—×‘×¨×™× ×©×œ×š" invites: "×”×–×ž× ×•×ª" invites_closed: "× ×›×•×Ÿ לעכשיו ×”×”×–×ž× ×•×ª לפוד ×–×” של די×ספורה סגורות" notification: @@ -520,7 +520,7 @@ he: logged_in: "× ×›× ×¡×ª ×ל %{service}" manage: "× ×™×”×•×œ ×”×©×™×¨×•×ª×™× ×”×ž×§×•×©×¨×™×" outside: "ההודעות הציבוריות יהיו ×–×ž×™× ×•×ª לצפייה ×—×™×¦×•× ×™×ª ×’× ×ž×—×•×¥ לרשת די×ספורה." - title: "ההודעה מיועדת ×œ×¤×¨×¡×•× ×¦×™×‘×•×¨×™!" + title: "הגדרת ×©×™×¨×•×ª×™× ×ž×§×•×©×¨×™×" publisher: add_photos: "הוספת ×ª×ž×•× ×•×ª" all: "הכול" diff --git a/config/locales/diaspora/hu.yml b/config/locales/diaspora/hu.yml index 2e39a89e057461ea90c9e6a817ee89f0a92d66ed..7c2c9204505b6270508de02f747a670508946797 100644 --- a/config/locales/diaspora/hu.yml +++ b/config/locales/diaspora/hu.yml @@ -266,7 +266,7 @@ hu: and_others: "és %{number} másik" mark_all_as_read: "Mind megjelölése olvasottként" notifications: "ÉrtesÃtések" - mentioned: "megemlÃtettek téged a" + mentioned: "megemlÃtett téged egy bejegyzésben" new_request: "megosztást ajánlott neked." post: "bejegyzés" private_message: "üzenetet küldött neked." @@ -354,7 +354,7 @@ hu: recent_posts: "Legutóbbi bejegyzések" recent_public_posts: "Legutóbbi nyilvános bejegyzések" return_to_aspects: "Menj vissza a csoportokhoz" - similar_contacts: "hasonló kapcsolatok" + see_all: "Összes" start_sharing: "Megosztás indÃtása" to_accept_or_ignore: "hogy elfogadd vagy elutasÃtsd." you_have_no_tags: "nincs cÃmkéd!" @@ -520,7 +520,7 @@ hu: logged_in: "bejelentkezve ide: %{service}" manage: "kapcsolódó szolgáltatások kezelése" outside: "A publikus üzeneteket a Diaspora-n kÃvüli személyek is láthatják." - title: "Publikus üzenetet fogsz megjelentetni!" + title: "Kapcsolódó szolgáltatások beállÃtása" publisher: add_photos: "képek hozzáadása" all: "összes" diff --git a/config/locales/diaspora/id.yml b/config/locales/diaspora/id.yml index 6b76ef15e5be198ec778b6a5ca7ce675f705bc68..cad5310198b173406f74d0c14cfd0ab82596615e 100644 --- a/config/locales/diaspora/id.yml +++ b/config/locales/diaspora/id.yml @@ -354,7 +354,7 @@ id: recent_posts: "Recent Posts" recent_public_posts: "Recent Public Posts" return_to_aspects: "Return to your aspects page" - similar_contacts: "similar contacts" + see_all: "See all" start_sharing: "start sharing" to_accept_or_ignore: "to accept or ignore it." you_have_no_tags: "you have no tags!" diff --git a/config/locales/diaspora/is.yml b/config/locales/diaspora/is.yml index 1ac36afc54f5b7e37c978d409e3b21f2d84d3548..f28d037869d95b7d5dc24e106a7bf7ffd56c03f4 100644 --- a/config/locales/diaspora/is.yml +++ b/config/locales/diaspora/is.yml @@ -354,7 +354,7 @@ is: recent_posts: "Nýlegar færslur" recent_public_posts: "Recent Public Posts" return_to_aspects: "Return to your aspects page" - similar_contacts: "svipaðir tengiliðir" + see_all: "See all" start_sharing: "Byrja að samnýta" to_accept_or_ignore: "að samþykkja eða hunsa það." you_have_no_tags: "you have no tags!" diff --git a/config/locales/diaspora/it.yml b/config/locales/diaspora/it.yml index 53e708ad40f8cab963131ce0a40f72ac7c101323..e861fb5f75f7f6ff164cf0757a245f23af7815ea 100644 --- a/config/locales/diaspora/it.yml +++ b/config/locales/diaspora/it.yml @@ -33,7 +33,7 @@ it: username: taken: "è già stato preso." ago: "%{time} fa" - all_aspects: "All aspects" + all_aspects: "Tutti gli aspetti" application: helper: unknown_person: "persona sconosciuta" @@ -59,22 +59,22 @@ it: contacts_visible: "I contatti in questo aspetto potranno vedersi tra loro." create: failure: "Creazione dell'aspetto fallita." - success: "Clicca sul segno più nella parte sinistra per dire a Diaspora chi può vedere il tuo nuovo aspetto." + success: "Il tuo nuovo aspetto %name è stato creato" destroy: - failure: "%{name} non è stato rimosso perchè non è vuoto." + failure: "%{name} non è stato rimosso perché non è vuoto." success: "%{name} è stato rimosso con successo." edit: add_existing: "Aggiungi un contatto esistente" - aspect_list_is_not_visible: "aspect list is hidden to others in aspect" - aspect_list_is_visible: "aspect list is visible to others in aspect" + aspect_list_is_not_visible: "l'elenco degli aspetti è nascosto agli altri nell'aspetto" + aspect_list_is_visible: "l'elenco degli aspetti è visibile agli altri nell'aspetto" confirm_remove_aspect: "Sei sicuro di voler eliminare questo aspetto?" - done: "Done" - make_aspect_list_visible: "rendi i contatti presenti in questo aspetto visibili agli altri" + done: "Completato" + make_aspect_list_visible: "rendi visibile la lista degli aspetti?" remove_aspect: "Elimina questo aspetto" rename: "rinomina" - update: "update" - updating: "updating" - few: "%{count} aspects" + update: "aggiorna" + updating: "aggiornamento in corso" + few: "%{count} aspetti" helper: are_you_sure: "Sei sicuro di voler eliminare questo aspetto?" aspect_not_empty: "Aspetto non vuoto" @@ -82,15 +82,15 @@ it: index: handle_explanation: "Questo è il tuo contatto Diaspora. Lo puoi dare alle persone per farti trovare, come un indirizzo email." no_contacts: "Nessun contatto" - post_a_message: "post a message >>" + post_a_message: "invia un messaggio >>" manage: - add_a_new_aspect: "Aggiungi un nuovo aspetto" + add_a_new_aspect: "Aggiungi aspetto della vita" add_a_new_contact: "Aggiungi un nuovo contatto" drag_to_add: "Trascina per aggiungere qualcuno" - manage_aspects: "Amministra aspetti" + manage_aspects: "Amministra gli aspetti della tua vita" no_requests: "Nessuna nuova richiesta" requests: "Richieste" - many: "%{count} aspects" + many: "%{count} aspetti" move_contact: error: "Errore nello spostare il contatto: %{inspect}" failure: "non ha funzionato %{inspect}" @@ -100,8 +100,8 @@ it: name: "Nome" no_posts_message: start_talking: "Nessuno ha ancora detto niente. Inizia la conversazione!" - one: "1 aspect" - other: "%{count} aspects" + one: "un aspetto" + other: "%{count} aspetti" seed: family: "Famiglia" work: "Lavoro" @@ -110,23 +110,23 @@ it: update: failure: "Il tuo aspetto, %{name}, ha un nome troppo lungo per poter essere salvato." success: "Il tuo aspetto, %{name}, è stato modificato con successo." - zero: "no aspects" + zero: "nessun aspetto" back: "Indietro" bookmarklet: - explanation: "%{link} from anywhere by bookmarking this link." - explanation_link_text: "Post to Diaspora" - post_something: "Post something to Diaspora" - post_success: "Posted! Closing!" + explanation: "%{link} da ovunque aggiungendo come segnalibro questo link." + explanation_link_text: "Pubblica su Diaspora" + post_something: "Pubblica qualcosa su Diaspora" + post_success: "Inviato! Sta per chiudersi!" cancel: "Annulla" comments: - few: "%{count} comments" - many: "%{count} comments" + few: "%{count} commenti" + many: "%{count} commenti" new_comment: - comment: "Commento" + comment: "commento" commenting: "Invio commento in corso..." - one: "1 comment" - other: "%{count} comments" - zero: "no comments" + one: "1 commento" + other: "%{count} commenti" + zero: "nessun commento" contacts: create: failure: "Impossibile creare il contatto" @@ -134,40 +134,40 @@ it: failure: "Impossibile disconnettersi da %{name}" success: "Disconnessione effettuata con successo da %{name}" few: "%{count} contatti" - many: "%{count} contacts" + many: "%{count} contatti" one: "1 contatto" other: "%{count} contatti" share_with_pane: - accepts: "Quando %{name} avrà accettato, inizierete a vedere reciprocamente i vostri posts su Diaspora" + accepts: "Quando %{name} avrà accettato, inizierete a vedere reciprocamente i vostri post su Diaspora" add_new_aspect: "aggiungi ad un nuovo aspetto" share_with: "Inizia a condividere con %{name}" zero: "nessun contatto" conversations: create: - sent: "Message sent" + sent: "Messaggio inviato" destroy: - success: "Conversation successfully removed" + success: "Conversazione rimossa con successo" helper: new_messages: - few: "%{count} new messages" - many: "%{count} new messages" - one: "1 new messages" - other: "%{count} new messages" - zero: "no new messages" + few: "%{count} nuovi messaggi" + many: "%{count} nuovi messaggi" + one: "un nuovo messaggio" + other: "%{count} nuovi messaggi" + zero: "nessun nuovo messaggio" index: - create_a_new_message: "create a new message" - inbox: "Inbox" - message_inbox: "Message Inbox" - new_message: "New Message" - no_conversation_selected: "no conversation selected" - no_messages: "no messages" + create_a_new_message: "scrivi un nuovo messaggio" + inbox: "In arrivo" + message_inbox: "Messaggi in arrivo" + new_message: "Nuovo Messaggio" + no_conversation_selected: "nessuna conversazione selezionata" + no_messages: "nessun messaggio" new: - send: "Send" - subject: "subject" - to: "to" + send: "Invia" + subject: "oggetto" + to: "a" show: - delete: "delete and block conversation" - reply: "reply" + delete: "cancella e blocca la conversazione" + reply: "rispondi" date: formats: birthday: "%d %B" @@ -180,10 +180,10 @@ it: correct_the_following_errors_and_try_again: "Correggi i seguenti errori e riprova." invalid_fields: "Campi non validi" fill_me_out: "Riempimi" - hide: "Hide" + hide: "Nascondi" home: show: - already_account: "hai già account?" + already_account: "hai già un account?" choice: "Scelta" choice_explanation: "Diaspora ti permette di suddividere le tue connessioni in gruppi chiamati aspetti. Solo su Diaspora, gli aspetti fanno si che le foto, i racconti e gli scherzi siano condivisi solamente con le persone che desideri." learn_about_host: "Impara come ospitare il tuo server Diaspora." @@ -213,7 +213,7 @@ it: if_they_accept_info: "se loro accettano, saranno aggiunti all'aspetto in cui li hai invitati." invite_someone_to_join: "Invita qualcuno ad unirsi a Diaspora!" personal_message: "Messaggio privato" - resend: "Inviato di nuovo" + resend: "Invia di nuovo" send_an_invitation: "Invia un invito" send_invitation: "Invito inviato" to: "A" @@ -221,34 +221,34 @@ it: application: have_a_problem: "Hai un problema? Trova qui la soluzione" powered_by: "CREATO CON DIASPORA*" - public_feed: "Public Diaspora Feed for %{name}" + public_feed: "Feed pubblici Diaspora di %{name}" toggle: "attiva/disattiva sito mobile" whats_new: "novità " - your_aspects: "I tuoi aspetti" + your_aspects: "i tuoi aspetti" header: blog: "blog" code: "codice" login: "accedi" logout: "esci" - profile: "profile" - settings: "settings" + profile: "profilo" + settings: "impostazioni" likes: likes: people_dislike_this: - few: "%{count} people disliked this" - many: "%{count} people disliked this" - one: "1 person disliked this" - other: "%{count} people disliked this" - zero: "no people disliked this" + few: "non piace a %{count} persone" + many: "non piace a %{count} persone " + one: "non piace ad una persona " + other: "non piace a %{count} persone" + zero: "non piace a zero persone" people_like_this: - few: "%{count} people liked this" - many: "%{count} people liked this" - one: "1 person liked this" - other: "%{count} people liked this" - zero: "no people liked this" + few: "piace a %{count} persone" + many: "piace a %{count} persone" + one: "piace ad una persona" + other: "piace a %{count} persone" + zero: "piace a nessuno" more: "Altro" next: "successivo" - no_results: "No Results Found" + no_results: "Nessun Risultato Trovato" notifications: also_commented: "ha anche commentato su quello di %{post_author}" also_commented_deleted: "hai commentato un post cancellato" @@ -256,47 +256,47 @@ it: deleted: "eliminato" helper: new_notifications: - few: "%{count} new notifications" - many: "%{count} new notifications" - one: "1 new notifications" - other: "%{count} new notifications" - zero: "no new notifications" + few: "%{count} nuove notifiche" + many: "%{count} nuove notifiche" + one: "una nuova notifica" + other: "%{count} nuove notifiche" + zero: "nessuna notifica" index: - and: "and" - and_others: "and %{number} others" + and: "e" + and_others: "e altri %{number}" mark_all_as_read: "Segna Tutti come Letti" notifications: "Notifiche" - mentioned: "ti ha menzionato nel suo" + mentioned: "ti ha menzionato in un post" new_request: "vuole condividere con te." post: "post" - private_message: "sent you a message." + private_message: "ti ha inviato un messaggio." request_accepted: "ha accettato la tua richiesta di condivisione." notifier: also_commented: commented: "ha anche commentato sul post di %{post_author}:" - sign_in: "Autenticati per vederlo." + sign_in: "Accedi per vederlo." subject: "%{name} ha anche commentato sul post di %{post_author}." comment_on_post: commented: "ha commentato il tuo post:" - sign_in: "Autenticati per vederlo." + sign_in: "Accedi per vederlo." subject: "%{name} ha commentato il tuo post." diaspora: "l'email robot di diaspora" hello: "Ciao %{name}!" love: "amore," - manage_your_email_settings: "manage your email settings" + manage_your_email_settings: "gestisci le tue impostazioni email" mentioned: mentioned: "ti ha menzionato in un post:" - sign_in: "Loggati per vederlo." + sign_in: "Accedi per vederlo." subject: "%{name} ti ha menzionato su Diaspora*" new_request: just_sent_you: "ti ha appena inviato una richiesta di contatto su Diaspora*" - sign_in: "accedi qui" + sign_in: "Accedi qui" subject: "nuova richiesta di contatto su Diaspora* da %{from}" try_it_out: "Dovresti veramente provarlo." private_message: - message_subject: "Subject: %{subject}" - private_message: "has sent you a private message:" - sign_in: "Sign in to view it." + message_subject: "Oggetto: %{subject}" + private_message: "ti ha inviato un messaggio privato:" + sign_in: "Accedi per vederlo." subject: "%{name} ti ha inviato un messaggio privato su Diaspora*" request_accepted: accepted: "ha accettato la tua richiesta di contatto!" @@ -312,10 +312,10 @@ it: password_confirmation: "Conferma password" people: add_contact_small: - add_contact_from_tag: "add contact from tag" + add_contact_from_tag: "aggiungi contatto da etichetta" aspect_list: edit_membership: "modifica appartenenza all'aspetto" - few: "%{count} people" + few: "%{count} persone" helper: people_on_pod_are_aware_of: " le persone sul pod sanno che" results_for: " risultati per %{params}" @@ -324,14 +324,14 @@ it: no_one_found: "...e nessuno è stato trovato." no_results: "Ehi! Devi inserire qualcosa da cercare." results_for: "risultati della ricerca per" - many: "%{count} people" - one: "1 person" - other: "%{count} people" + many: "%{count} persone" + one: "una persona" + other: "%{count} persone" person: add_contact: "aggiungi contatto" already_connected: "Già connesso" - pending_request: "richiesta in sospeso" - thats_you: "sei tu!" + pending_request: "Richiesta in sospeso" + thats_you: "Sei tu!" profile_sidebar: bio: "bio" born: "data di nascita" @@ -339,41 +339,41 @@ it: edit_my_profile: "Modifica il mio profilo" gender: "sesso" in_aspects: "negli aspetti" - location: "location" + location: "dove ti trovi" remove_contact: "rimuovi contatto" remove_from: "Rimuovere %{name} da %{aspect}?" show: - add_some: "add some" + add_some: "aggiungine alcune" does_not_exist: "La persona non esiste!" - edit: "edit" + edit: "modifica" incoming_request: "%{name} vuole condividere con te" - mention: "Mention" - message: "Message" + mention: "Menziona" + message: "Messaggio" no_posts: "nessun post da mostrare!" not_connected: "Non sei in contatto con %{name}" recent_posts: "Post Recenti" recent_public_posts: "Post pubblici recenti" return_to_aspects: "Torna alla pagina dei tuoi aspetti" - similar_contacts: "contatti simili" + see_all: "Visualizza tutti" start_sharing: "inizia a condividere" to_accept_or_ignore: "per accettarla o ignorarla." - you_have_no_tags: "you have no tags!" + you_have_no_tags: "non hai etichette!" webfinger: fail: "Spiacenti, non possiamo trovare %{handle}." - zero: "no people" + zero: "nessuna persona" photos: create: integrity_error: "Il caricamento della foto non è riuscito. Sei sicuro che fosse un'immagine?" - runtime_error: "La fotografia non si è caricata. Hai dimenticato forse la cintura?" + runtime_error: "La fotografia non si è caricata. Hai dimenticato forse di allacciare la cintura?" type_error: "La foto non si è caricata. Sei sicuro di aver aggiunto un'immagine?" destroy: notice: "Foto eliminata." edit: - editing: "Modifica" + editing: "Modifica in corso" new: back_to_list: "Torna all'elenco" new_photo: "Nuova foto" - post_it: "inseriscila!" + post_it: "condividi!" new_photo: empty: "{file} è vuoto, per favore seleziona di nuovo i file senza di esso." invalid_ext: "{file} ha un estensione non valida. Sono permesse soltanto {extensions}." @@ -388,7 +388,7 @@ it: delete_photo: "Elimina foto" edit: "modifica" edit_delete_photo: "Modifica descrizione della foto / elimina foto" - make_profile_photo: "usala come foto profilo" + make_profile_photo: "usa come immagine del profilo" original_post: "Post Originale" permalink: "permalink" update_photo: "Aggiorna Foto" @@ -398,28 +398,28 @@ it: notice: "Foto aggiornata con successo." post_visibilites: update: - post_hidden: "%{name}'s post has been hidden." + post_hidden: "Il post di %{name} è stato nascosto." posts: - doesnt_exist: "that post does not exist!" + doesnt_exist: "questo post non esiste!" previous: "precedente" profile: "Profilo" profiles: edit: allow_search: "Permetti ad altri di trovarti su Diaspora" - edit_profile: "Edita il profilo" + edit_profile: "Modifica il profilo" first_name: "Nome" last_name: "Cognome" update_profile: "Aggiorna Profilo" your_bio: "La tua biografia" your_birthday: "Il tuo compleanno" your_gender: "Sesso" - your_location: "Your location" + your_location: "Dove ti trovi" your_name: "Il tuo nome" your_photo: "La tua foto" - your_private_profile: "Your private profile" - your_public_profile: "Your public profile" - your_tags: "You: in 5 #tags" - your_tags_placeholder: "i.e. #diaspora #ironing #kittens #music" + your_private_profile: "Il tuo profilo privato" + your_public_profile: "Il tuo profilo pubblico" + your_tags: "Tu: in 5 #tags" + your_tags_placeholder: "per esempio #diaspora #stirare #gattini #musica" update: failed: "Aggiornamento del profilo non riuscito" updated: "Profilo aggiornato" @@ -428,7 +428,7 @@ it: create: success: "Ti sei unito a Diaspora!" edit: - cancel_my_account: "Cancele il mio account" + cancel_my_account: "Cancella il mio account" edit: "Modifica %{name}" leave_blank: "(lascialo bianco se non vuoi modificarlo)" password_to_confirm: "(abbiamo bisogno della tua password per confermare le tue modifiche)" @@ -444,23 +444,23 @@ it: requests: create: sending: "Invio in corso..." - sent: "Hai chiesto di condividire come %{name}. Dovrebbero vederlo nel loro prossimo accesso." + sent: "Hai chiesto di condividere come %{name}. Dovrebbero vederlo nel loro prossimo accesso su Diaspora." destroy: error: "Seleziona un aspetto!" - ignore: "Richiesta di amicizia ignorata." - success: "Adesso siete amici." + ignore: "Richiesta di entrare in contatto ignorata." + success: "Adesso potete condividere." helper: new_requests: - few: "%{count} new requests!" - many: "%{count} new requests!" - one: "new request!" - other: "%{count} new requests!" - zero: "no new requests" + few: "%{count} nuove richieste!" + many: "%{count} nuove richieste!" + one: "una nuova richiesta!" + other: "%{count} nuove richieste!" + zero: "nessuna nuova richiesta" manage_aspect_contacts: existing: "Contatti esistenti" - manage_within: "Amministra contatti tra" + manage_within: "Amministra contatti" new_request_to_person: - sent: "inviato!" + sent: "richiesta inviata!" search: "Cerca" services: create: @@ -472,7 +472,7 @@ it: finder: friends: few: "%{count} amici" - many: "%{count} friends" + many: "%{count} amici" one: "1 amico" other: "%{count} amici" zero: "nessun amico" @@ -483,7 +483,7 @@ it: connect_to_twitter: "Connettiti a twitter" disconnect: "disconnetti" edit_services: "Modifica servizi" - logged_in_as: "connesso come" + logged_in_as: "accesso effettuato come" really_disconnect: "disconnettere %{service}?" inviter: click_link_to_accept_invitation: "Fai click su questo link per accettare l'invito" @@ -494,24 +494,24 @@ it: settings: "Impostazioni" shared: add_contact: - create_request: "Cerca tramite contatto Diaspora" + create_request: "Cerca fra i nomi utente Diaspora" diaspora_handle: "Contatto Diaspora" - enter_a_diaspora_username: "Inserisci un username Diaspora" + enter_a_diaspora_username: "Inserisci un nome utente Diaspora" know_email: "Conosci i loro indirizzi email? Dovresti invitarli" - your_diaspora_username_is: "Il tuo username Diaspora è: %{diaspora_handle}" + your_diaspora_username_is: "Il tuo nome utente Diaspora è: %{diaspora_handle}" contact_list: all_contacts: "Tutti i contatti" cannot_remove: "Impossibile rimuovere la persona dall'ultimo aspetto." footer: - logged_in_as: "logged in as %{name}" - your_aspects: "your aspects" + logged_in_as: "accesso effettuato come %{name}" + your_aspects: "i tuoi aspetti" invitations: by_email: "via Email" dont_have_now: "Non ne hai alcuno per il momento, ma altri arriveranno presto!" from_facebook: "Da Facebook" invitations_left: "(%{count} rimanenti)" invite_someone: "Invita qualcuno" - invite_your_friends: "Invita i tuoi amici" + invite_your_friends: "Cerca i tuoi amici" invites: "Inviti" invites_closed: "Al momento gli inviti sono chiusi su questo pod Diaspora." notification: @@ -520,75 +520,75 @@ it: logged_in: "accesso effettuato a %{service}" manage: "gestisci i servizi collegati" outside: "I messaggi pubblici saranno visibili a persone al di fuori di Diaspora." - title: "Stai per inviare un messaggio pubblico!" + title: "Configura i servizi collegati" publisher: add_photos: "aggiungi foto" all: "tutti" all_contacts: "tutti i contatti" - click_to_share_with: "Click to share with: " - make_public: "pubblica" + click_to_share_with: "Clicca per condividere con: " + make_public: "rendi pubblico" post_a_message_to: "Invia un messaggio a %{aspect}" posting: "Invio in corso..." - public: "Public" - publishing_to: "publishing to: " + public: "Pubblico" + publishing_to: "stai condividendo con: " share: "Condividi" - share_with: "Condividi con" + share_with: "condividi con" whats_on_your_mind: "cosa stai pensando?" reshare: reshare: "Ricondividi" stream_element: - dislike: "I dislike this" - like: "I like this" + dislike: "Non mi piace" + like: "Mi piace" status_messages: create: - success: "Successfully mentioned: %{names}" + success: "Menzionati con successo: %{names}" destroy: failure: "Eliminazione post non riuscita" helper: no_message_to_display: "Nessun messaggio da visualizzare." new: - mentioning: "Mentioning: %{person}" + mentioning: "stai menzionando: %{person}" show: destroy: "Elimina" - not_found: "Sorry, we couldn't find that post." + not_found: "Ci scusiamo, non possiamo trovare il post." permalink: "permalink" stream_helper: hide_comments: "nascondi i commenti" show_comments: "mostra tutti i commenti" tags: show: - nobody_talking: "Nobody is talking about %{tag} yet." - people_tagged_with: "People tagged with %{tag}" - posts_tagged_with: "Posts tagged with #%{tag}" + nobody_talking: "Nessuno sta ancora parlando di %{tag}." + people_tagged_with: "Persone etichettate come %{tag}" + posts_tagged_with: "Post etichettati come #%{tag}" the_world: "il mondo" - undo: "Undo?" - username: "Username" + undo: "Annullare?" + username: "Nome Utente" users: destroy: "Account chiuso con successo." edit: - also_commented: "...someone also comments on your contact's post?" + also_commented: "...qualcun altro ha commentato il post del tuo contatto?" change: "Cambia" change_language: "Cambia Lingua" change_password: "Cambia Password" close_account: "Chiudi Account" - comment_on_post: "...someone comments on your post?" + comment_on_post: "...qualcuno ha commentato il tuo post?" current_password: "Password attuale" download_photos: "scarica le mie foto" download_xml: "scarica il mio xml" edit_account: "Modifica account" export_data: "Esporta Dati" - mentioned: "...you are mentioned in a post?" + mentioned: "...sei menzionato in un post?" new_password: "Nuova Password" - private_message: "...you receive a private message?" + private_message: "...hai ricevuto un messaggio privato?" receive_email_notifications: "Vuoi ricevere notifiche via email?" - request_acceptence: "...your share request is accepted?" - request_received: "...you receive a new share request?" + request_acceptence: "...la tua richiesta di condivisione è stata accettata?" + request_received: "...la tua richiesta di condivisione è stata accettata?" your_email: "La tua email" your_handle: "Il tuo contatto Diaspora" getting_started: connect_on_diaspora: "Connetti su Diaspora" connect_services: "Collega i tuoi servizi" - could_not_find_anyone: "Could not find any friends on Diaspora*. Use the friend finder to invite them." + could_not_find_anyone: "Non è possibile trovare neanche un tuo amico su Diaspora*. Usa barra di ricerca amici per trovarli." edit_profile: "Modifica il tuo profilo" finished: "Finito!" save_and_continue: "Salva e continua" @@ -612,6 +612,6 @@ it: webfinger: fetch_failed: "impossibile recuperare il profilo webfinger da %{profile_url}" hcard_fetch_failed: "impossibile recuperare l'hcard di %{account}" - no_person_constructed: "Questa hcard non contiene i dati di una persona." + no_person_constructed: "Non si può risalire a neanche una persona da questa hcard." not_enabled: "webfinger non attivo sull'host di %{account}" xrd_fetch_failed: "impossibile recuperare il xrd dall'account %{account}" diff --git a/config/locales/diaspora/ja.yml b/config/locales/diaspora/ja.yml new file mode 100644 index 0000000000000000000000000000000000000000..af17b41abe16c3785eb1795adaaf3d39689c223f --- /dev/null +++ b/config/locales/diaspora/ja.yml @@ -0,0 +1,617 @@ +# Copyright (c) 2010, Diaspora Inc. This file is +# licensed under the Affero General Public License version 3 or later. See +# the COPYRIGHT file. + + +ja: + _comments: "Comments" + _home: "Home" + _photos: "写真" + _services: "Services" + account: "Account" + activerecord: + errors: + models: + contact: + attributes: + person_id: + taken: "ã“ã®ãƒ¦ãƒ¼ã‚¶ã®ä»–ã®é€£çµ¡å…ˆã¨é‡è¤‡ã—ã¦ã¯ã„ã‘ã¾ã›ã‚“。" + person: + attributes: + diaspora_handle: + taken: "æ—¢ã«ä½¿ã‚ã‚Œã¦ã„ã¾ã™ã€‚" + request: + attributes: + from_id: + taken: "æ—¢å˜ã®ãƒªã‚¯ã‚¨ã‚¹ãƒˆã¨é‡è¤‡ã—ã¦ã„ã¾ã™ã€‚" + user: + attributes: + email: + taken: "æ—¢ã«ä½¿ã‚ã‚Œã¦ã„ã¾ã™ã€‚" + person: + invalid: "無効ã§ã™ã€‚" + username: + taken: "æ—¢ã«ä½¿ã‚ã‚Œã¦ã„ã¾ã™ã€‚" + ago: "%{time} ago" + all_aspects: "All Aspects" + application: + helper: + unknown_person: "unknown person" + video_title: + unknown: "Unknown Video Title" + are_you_sure: "本当ã«ã„ã„ã§ã™ã‹ã€‚" + aspect_memberships: + destroy: + failure: "人をアスペクトã‹ã‚‰é™¤å¤–ã™ã‚‹ã®ã«å¤±æ•—ã—ã¾ã—ãŸ" + no_membership: "é¸æŠžã—ãŸäººã¯ãã®ã‚¢ã‚¹ãƒšã‚¯ãƒˆå†…ã«è¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸ" + success: "人をアスペクトã‹ã‚‰é™¤å¤–ã™ã‚‹ã®ã«æˆåŠŸã—ã¾ã—ãŸ" + aspects: + add_to_aspect: + failure: "Failed to add contact to aspect." + success: "Successfully added contact to aspect." + aspect_contacts: + done_editing: "done editing" + aspect_stream: + activity: "activity" + post_time: "post time" + sort_by: "sort by:" + contacts_not_visible: "Contacts in this aspect will not be able to see each other." + contacts_visible: "Contacts in this aspect will be able to see each other." + create: + failure: "Aspect creation failed." + success: "Your new aspect %{name} was created" + destroy: + failure: "%{name} is not empty and could not be removed." + success: "%{name} was successfully removed." + edit: + add_existing: "Add an existing contact" + aspect_list_is_not_visible: "aspect list is hidden to others in aspect" + aspect_list_is_visible: "aspect list is visible to others in aspect" + confirm_remove_aspect: "Are you sure you want to delete this aspect?" + done: "Done" + make_aspect_list_visible: "make aspect list visible?" + remove_aspect: "Delete this aspect" + rename: "rename" + update: "update" + updating: "updating" + few: "%{count} aspects" + helper: + are_you_sure: "Are you sure you want to delete this aspect?" + aspect_not_empty: "Aspect not empty" + remove: "remove" + index: + handle_explanation: "This is your diaspora handle. Like an email address, you can give this to people to reach you." + no_contacts: "No contacts" + post_a_message: "post a message >>" + manage: + add_a_new_aspect: "Add a new aspect" + add_a_new_contact: "Add a new contact" + drag_to_add: "Drag to add people" + manage_aspects: "Manage aspects" + no_requests: "No new requests" + requests: "Requests" + many: "%{count} aspects" + move_contact: + error: "Error moving contact: %{inspect}" + failure: "didn't work %{inspect}" + success: "Person moved to new aspect" + new_aspect: + create: "Create" + name: "Name" + no_posts_message: + start_talking: "Nobody has said anything yet. Get the conversation started!" + one: "1 aspect" + other: "%{count} aspects" + seed: + family: "Family" + work: "Work" + show: + edit_aspect: "edit aspect" + update: + failure: "Your aspect, %{name}, had too long name to be saved." + success: "Your aspect, %{name}, has been successfully edited." + zero: "no aspects" + back: "å‰ã¸" + bookmarklet: + explanation: "%{link} from anywhere by bookmarking this link." + explanation_link_text: "Post to Diaspora" + post_something: "Post something to Diaspora" + post_success: "Posted! Closing!" + cancel: "å–り消ã™" + comments: + few: "コメント%{count}件" + many: "コメント%{count}件" + new_comment: + comment: "コメント" + commenting: "コメント投稿ä¸â€¦" + one: "コメント1件" + other: "コメント%{count}件" + zero: "コメントãŒã‚ã‚Šã¾ã›ã‚“" + contacts: + create: + failure: "Failed to create contact" + destroy: + failure: "Failed to disconnect from %{name}" + success: "Successfully disconnected from %{name}" + few: "%{count} contacts" + many: "%{count} contacts" + one: "1 contact" + other: "%{count} contacts" + share_with_pane: + accepts: "Once %{name} accepts, you'll start seeing each other's posts on Diaspora" + add_new_aspect: "add to new aspect" + share_with: "Start sharing with %{name}" + zero: "no contacts" + conversations: + create: + sent: "Message sent" + destroy: + success: "Conversation successfully removed" + helper: + new_messages: + few: "%{count} new messages" + many: "%{count} new messages" + one: "1 new messages" + other: "%{count} new messages" + zero: "no new messages" + index: + create_a_new_message: "create a new message" + inbox: "Inbox" + message_inbox: "Message Inbox" + new_message: "New Message" + no_conversation_selected: "no conversation selected" + no_messages: "no messages" + new: + send: "Send" + subject: "subject" + to: "to" + show: + delete: "delete and block conversation" + reply: "reply" + date: + formats: + birthday: "%B %d" + birthday_with_year: "%B %d %Y" + fullmonth_day: "%B %d" + delete: "削除" + email: "Email" + error_messages: + helper: + correct_the_following_errors_and_try_again: "Correct the following errors and try again." + invalid_fields: "Invalid Fields" + fill_me_out: "Fill me out" + hide: "éš ã™" + home: + show: + already_account: "already have an account?" + choice: "Choice" + choice_explanation: "Diaspora lets you sort your connections into groups called aspects. Unique to Diaspora, aspects ensure that your photos, stories and jokes are shared only with the people you intend." + learn_about_host: "Learn about how to host your own Diaspora server." + login_here: "log in here" + ownership: "Ownership" + ownership_explanation: "You own your pictures, and you shouldn’t have to give that up just to share them. You maintain ownership of everything you share on Diaspora, giving you full control over how it's distributed." + share_what_you_want: "Share what you want, with whom you want." + simplicity: "Simplicity" + simplicity_explanation: "Diaspora makes sharing clean and easy – and this goes for privacy too. Inherently private, Diaspora doesn’t make you wade through pages of settings and options just to keep your profile secure." + tagline_first_half: "Share what you want," + tagline_second_half: "with whom you want." + invitations: + check_token: + not_found: "Invitation token not found" + create: + already_contacts: "You are already connected with this person" + already_sent: "You already invited this person." + no_more: "You have no more invitations." + rejected: "The following email addresses had problems: " + sent: "Invitations have been sent to: " + edit: + sign_up: "sign_up" + new: + already_invited: "Already invited" + aspect: "Aspect" + comma_seperated_plz: "You can enter multiple email addresses separated by commas." + if_they_accept_info: "if they accept, they will be added to the aspect you invited them." + invite_someone_to_join: "Invite someone to join Diaspora!" + personal_message: "Personal message" + resend: "Resend" + send_an_invitation: "Send an invitation" + send_invitation: "Send invitation" + to: "To" + layouts: + application: + have_a_problem: "Have a problem? Find an answer here" + powered_by: "POWERED BY DIASPORA*" + public_feed: "%{name}ã•ã‚“ã®å…¬é–‹ãƒ€ã‚¤ã‚¢ã‚¹ãƒãƒ©ãƒ•ã‚£ãƒ¼ãƒ‰" + toggle: "æºå¸¯ã‚µã‚¤ãƒˆã®åˆ‡æ›¿ãˆ" + whats_new: "æœ€æ–°æƒ…å ±" + your_aspects: "アスペクト" + header: + blog: "ブãƒã‚°" + code: "code" + login: "ãƒã‚°ã‚¤ãƒ³" + logout: "ãƒã‚°ã‚¢ã‚¦ãƒˆ" + profile: "プãƒãƒ•ã‚£ãƒ¼ãƒ«" + settings: "è¨å®š" + likes: + likes: + people_dislike_this: + few: "%{count} people disliked this" + many: "%{count} people disliked this" + one: "1 person disliked this" + other: "%{count} people disliked this" + zero: "no people disliked this" + people_like_this: + few: "%{count} people liked this" + many: "%{count} people liked this" + one: "1 person liked this" + other: "%{count} people liked this" + zero: "no people liked this" + more: "More" + next: "next" + no_results: "No Results Found" + notifications: + also_commented: "also commented on %{post_author}'s" + also_commented_deleted: "commented on a deleted post." + comment_on_post: "commented on your" + deleted: "deleted" + helper: + new_notifications: + few: "%{count} new notifications" + many: "%{count} new notifications" + one: "1 new notifications" + other: "%{count} new notifications" + zero: "no new notifications" + index: + and: "and" + and_others: "and %{number} others" + mark_all_as_read: "Mark All as Read" + notifications: "Notifications" + mentioned: "has mentioned you in a " + new_request: "offered to share with you." + post: "post." + private_message: "sent you a message." + request_accepted: "accepted your share request." + notifier: + also_commented: + commented: "has also commented on %{post_author}'s post:" + sign_in: "Sign in to view it." + subject: "%{name} has also commented on %{post_author}'s post." + comment_on_post: + commented: "has commented on your post:" + sign_in: "Sign in to view it." + subject: "%{name} has commented on your post." + diaspora: "the diaspora email robot" + hello: "Hello %{name}!" + love: "love," + manage_your_email_settings: "manage your email settings" + mentioned: + mentioned: "mentioned you in a post:" + sign_in: "Sign in to view it." + subject: "%{name} has mentioned you on Diaspora*" + new_request: + just_sent_you: "just sent you a contact request on Diaspora*" + sign_in: "Sign in here" + subject: "new Diaspora* contact request from %{from}" + try_it_out: "You should really think about checking it out." + private_message: + message_subject: "Subject: %{subject}" + private_message: "has sent you a private message:" + sign_in: "Sign in to view it." + subject: "%{name} has sent you a private message on Diaspora*" + request_accepted: + accepted: "has accepted your contact request!" + sign_in: "Sign in here" + subject: "%{name} has accepted your contact request on Diaspora*" + single_admin: + admin: "Your Diaspora administrator" + subject: "A message about your Diaspora account:" + thanks: "Thanks," + ok: "OK" + or: "or" + password: "Password" + password_confirmation: "Password confirmation" + people: + add_contact_small: + add_contact_from_tag: "add contact from tag" + aspect_list: + edit_membership: "edit aspect membership" + few: "%{count} people" + helper: + people_on_pod_are_aware_of: " people on pod are aware of" + results_for: " results for %{params}" + index: + couldnt_find_them_send_invite: "Couldn't find them? Send an invite!" + no_one_found: "...and no one was found." + no_results: "Hey! You need to search for something." + results_for: "search results for" + many: "%{count} people" + one: "1 person" + other: "%{count} people" + person: + add_contact: "add contact" + already_connected: "Already connected" + pending_request: "Pending request" + thats_you: "That's you!" + profile_sidebar: + bio: "bio" + born: "birthday" + cannot_remove: "Cannot remove %{name} from last aspect. (If you want to disconnect from this person you must remove contact.)" + edit_my_profile: "Edit my profile" + gender: "gender" + in_aspects: "in aspects" + location: "location" + remove_contact: "remove contact" + remove_from: "Remove %{name} from %{aspect}?" + show: + add_some: "add some" + does_not_exist: "Person does not exist!" + edit: "edit" + incoming_request: "%{name} wants to share with you" + mention: "Mention" + message: "Message" + no_posts: "no posts to display!" + not_connected: "You are not sharing with this person" + recent_posts: "Recent Posts" + recent_public_posts: "Recent Public Posts" + return_to_aspects: "Return to your aspects page" + see_all: "See all" + start_sharing: "start sharing" + to_accept_or_ignore: "to accept or ignore it." + you_have_no_tags: "you have no tags!" + webfinger: + fail: "Sorry, we couldn't find %{handle}." + zero: "no people" + photos: + create: + integrity_error: "写真ã®ã‚¢ãƒƒãƒ—ãƒãƒ¼ãƒ‰ã«å¤±æ•—ã—ã¾ã—ãŸã€‚確ã‹ã«ç”»åƒãƒ•ã‚¡ã‚¤ãƒ«ã ã£ãŸã®ã§ã—ょã†ã‹ã€‚" + runtime_error: "写真ã®ã‚¢ãƒƒãƒ—ãƒãƒ¼ãƒ‰ã«å¤±æ•—ã—ã¾ã—ãŸã€‚シートベルトã¯ã—ã£ã‹ã‚Šã¨ãŠç· ã‚ã§ã—ょã†ã‹ã€‚" + type_error: "写真ã®ã‚¢ãƒƒãƒ—ãƒãƒ¼ãƒ‰ã«å¤±æ•—ã—ã¾ã—ãŸã€‚確ã‹ã«ç”»åƒãƒ•ã‚¡ã‚¤ãƒ«ã‚’添付ã—ã¾ã—ãŸã‹ã€‚" + destroy: + notice: "写真を削除ã—ã¾ã—ãŸã€‚" + edit: + editing: "編集ä¸" + new: + back_to_list: "一覧ã«æˆ»ã‚‹" + new_photo: "æ–°ã—ã„写真" + post_it: "投稿ã™ã‚‹ï¼" + new_photo: + empty: "{file} is empty, please select files again without it." + invalid_ext: "{file} has invalid extension. Only {extensions} are allowed." + size_error: "{file} is too large, maximum file size is {sizeLimit}." + new_profile_photo: + or_select_one: "or select one from your already existing" + upload: "Upload a new profile photo!" + photo: + view_all: "%{name}ã®å†™çœŸã‚’ã™ã¹ã¦ã¿ã‚‹" + show: + collection_permalink: "コレクションã®ãƒ‘ーマリンク" + delete_photo: "写真を削除ã™ã‚‹" + edit: "編集" + edit_delete_photo: "写真ã®èª¬æ˜Žã‚’編集ã™ã‚‹ï¼å†™çœŸã‚’削除ã™ã‚‹" + make_profile_photo: "プãƒãƒ•ã‚£ãƒ¼ãƒ«å†™çœŸã«ã™ã‚‹" + original_post: "å…ƒã®æŠ•ç¨¿" + permalink: "パーマリンク" + update_photo: "写真を更新ã™ã‚‹" + view: "表示" + update: + error: "Failed to edit photo." + notice: "Photo successfully updated." + post_visibilites: + update: + post_hidden: "%{name}'s post has been hidden." + posts: + doesnt_exist: "that post does not exist!" + previous: "å‰ã¸" + profile: "プãƒãƒ•ã‚£ãƒ¼ãƒ«" + profiles: + edit: + allow_search: "ダイアスãƒãƒ©å†…ã®æ¤œç´¢ã‚’許å¯ã—ã¾ã™" + edit_profile: "プãƒãƒ•ã‚£ãƒ¼ãƒ«ã®ç·¨é›†" + first_name: "å" + last_name: "姓" + update_profile: "プãƒãƒ•ã‚£ãƒ¼ãƒ«æ›´æ–°" + your_bio: "ç•¥æ´" + your_birthday: "誕生日" + your_gender: "性別" + your_location: "所在地" + your_name: "姓å" + your_photo: "写真" + your_private_profile: "éžå…¬é–‹ãƒ—ãƒãƒ•ã‚£ãƒ¼ãƒ«" + your_public_profile: "公開プãƒãƒ•ã‚£ãƒ¼ãƒ«" + your_tags: "自分を表ã™ï¼•ã¤ã®#ã‚¿ã‚°" + your_tags_placeholder: "例:#ダイアスãƒãƒ© #家事 #å猫 #音楽" + update: + failed: "プãƒãƒ•ã‚£ãƒ¼ãƒ«æ›´æ–°ã«å¤±æ•—ã—ã¾ã—ãŸ" + updated: "プãƒãƒ•ã‚£ãƒ¼ãƒ«ã‚’æ›´æ–°ã—ã¾ã—ãŸ" + registrations: + closed: "Signups are closed on this Diaspora pod." + create: + success: "You've joined Diaspora!" + edit: + cancel_my_account: "Cancel my account" + edit: "Edit %{name}" + leave_blank: "(leave blank if you don't want to change it)" + password_to_confirm: "(we need your current password to confirm your changes)" + unhappy: "Unhappy?" + update: "Update" + new: + enter_email: "Enter an e-mail" + enter_password: "Enter a password" + enter_password_again: "Enter the same password as before" + enter_username: "Pick a username (only letters, numbers, and underscores)" + sign_up: "Sign up" + sign_up_for_diaspora: "Sign up for Diaspora" + requests: + create: + sending: "Sending" + sent: "You've asked to share with %{name}. They should see it next time they log in to Diaspora." + destroy: + error: "Please select an aspect!" + ignore: "Ignored contact request." + success: "You are now sharing." + helper: + new_requests: + few: "%{count} new requests!" + many: "%{count} new requests!" + one: "new request!" + other: "%{count} new requests!" + zero: "no new requests" + manage_aspect_contacts: + existing: "Existing contacts" + manage_within: "Manage contacts within" + new_request_to_person: + sent: "sent!" + search: "Search" + services: + create: + success: "Authentication successful." + destroy: + success: "Successfully deleted authentication." + failure: + error: "there was an error connecting that service" + finder: + friends: + few: "%{count} friends" + many: "%{count} friends" + one: "1 friend" + other: "%{count} friends" + zero: "no friends" + invite_your_friends_from: "Invite your friends from %{service}" + not_connected: "not connected" + index: + connect_to_facebook: "Connect to facebook" + connect_to_twitter: "Connect to twitter" + disconnect: "disconnect" + edit_services: "Edit services" + logged_in_as: "logged in as" + really_disconnect: "disconnect %{service}?" + inviter: + click_link_to_accept_invitation: "Click this link to accept your invitation" + join_me_on_diaspora: "Join me on DIASPORA*" + remote_friend: + invite: "invite" + resend: "resend" + settings: "Settings" + shared: + add_contact: + create_request: "Find by Diaspora handle" + diaspora_handle: "diaspora@handle.org" + enter_a_diaspora_username: "Enter a Diaspora username:" + know_email: "Know their email address? You should invite them" + your_diaspora_username_is: "Your Diaspora username is: %{diaspora_handle}" + contact_list: + all_contacts: "All contacts" + cannot_remove: "Cannot remove person from last aspect. (If you want to disconnect from this person you must remove contact.)" + footer: + logged_in_as: "logged in as %{name}" + your_aspects: "your aspects" + invitations: + by_email: "by Email" + dont_have_now: "You don't have any right now, but more invites are coming soon!" + from_facebook: "From Facebook" + invitations_left: "(%{count} left)" + invite_someone: "Invite someone" + invite_your_friends: "Find your friends" + invites: "Invites" + invites_closed: "Invites are currently closed on this Diaspora pod" + notification: + new: "New %{type} from %{from}" + public_explain: + logged_in: "logged in to %{service}" + manage: "manage connected services" + outside: "Public messages will be available for others outside of Diaspora to see." + title: "Set up connected services" + publisher: + add_photos: "add photos" + all: "all" + all_contacts: "all contacts" + click_to_share_with: "Click to share with: " + make_public: "make public" + post_a_message_to: "Post a message to %{aspect}" + posting: "Posting..." + public: "Public" + publishing_to: "publishing to: " + share: "Share" + share_with: "share with" + whats_on_your_mind: "what's on your mind?" + reshare: + reshare: "Reshare" + stream_element: + dislike: "I dislike this" + like: "I like this" + status_messages: + create: + success: "Successfully mentioned: %{names}" + destroy: + failure: "Failed to delete post" + helper: + no_message_to_display: "No message to display." + new: + mentioning: "Mentioning: %{person}" + show: + destroy: "Delete" + not_found: "Sorry, we couldn't find that post." + permalink: "permalink" + stream_helper: + hide_comments: "コメントéžè¡¨ç¤º" + show_comments: "ã™ã¹ã¦ã®ã‚³ãƒ¡ãƒ³ãƒˆè¡¨ç¤º" + tags: + show: + nobody_talking: "Nobody is talking about %{tag} yet." + people_tagged_with: "People tagged with %{tag}" + posts_tagged_with: "Posts tagged with #%{tag}" + the_world: "the world" + undo: "Undo?" + username: "Username" + users: + destroy: "Account successfully closed." + edit: + also_commented: "...someone also comments on your contact's post?" + change: "Change" + change_language: "Change Language" + change_password: "Change Password" + close_account: "Close Account" + comment_on_post: "...someone comments on your post?" + current_password: "Current password" + download_photos: "download my photos" + download_xml: "download my xml" + edit_account: "Edit account" + export_data: "Export Data" + mentioned: "...you are mentioned in a post?" + new_password: "New Password" + private_message: "...you receive a private message?" + receive_email_notifications: "Receive email notifications when..." + request_acceptence: "...your share request is accepted?" + request_received: "...you receive a new share request?" + your_email: "Your email" + your_handle: "Your diaspora handle" + getting_started: + connect_on_diaspora: "Connect on Diaspora" + connect_services: "Connect your other services" + could_not_find_anyone: "Could not find any friends on Diaspora*. Use the friend finder to invite them." + edit_profile: "Edit your profile" + finished: "Finished!" + save_and_continue: "Save and continue" + signup_steps: "Finish your sign up by completing these three steps:" + skip: "skip getting started" + step_2: + find_your_friends_on_diaspora: "Would you like to find your Facebook friends on Diaspora?" + skip: "Skip" + step_3: + finish: "Finish" + people_already_on_diaspora: "People already on Diaspora" + welcome: "Welcome to Diaspora!" + public: + does_not_exist: "User %{username} does not exist!" + update: + email_notifications_changed: "Email notifications changed" + language_changed: "Language Changed" + language_not_changed: "Language Change Failed" + password_changed: "Password Changed" + password_not_changed: "Password Change Failed" + webfinger: + fetch_failed: "failed to fetch webfinger profile for %{profile_url}" + hcard_fetch_failed: "there was a problem fetching the hcard for %{account}" + no_person_constructed: "No person could be constructed from this hcard." + not_enabled: "webfinger does not seem to be enabled for %{account}'s host" + xrd_fetch_failed: "there was an error getting the xrd from account %{account}" diff --git a/config/locales/diaspora/ko.yml b/config/locales/diaspora/ko.yml new file mode 100644 index 0000000000000000000000000000000000000000..cabd0d7844a9977b671cc0b8df599f5d17327ba2 --- /dev/null +++ b/config/locales/diaspora/ko.yml @@ -0,0 +1,617 @@ +# Copyright (c) 2010, Diaspora Inc. This file is +# licensed under the Affero General Public License version 3 or later. See +# the COPYRIGHT file. + + +ko: + _comments: "댓글" + _home: "처ìŒ" + _photos: "사진" + _services: "서비스" + account: "ê³„ì •" + activerecord: + errors: + models: + contact: + attributes: + person_id: + taken: "ì´ë¯¸ ì“°ì´ê³ 있습니다." + person: + attributes: + diaspora_handle: + taken: "ì´ë¯¸ ì“°ì´ê³ 있습니다." + request: + attributes: + from_id: + taken: "ì´ë¯¸ ìš”ì²í•˜ì˜€ìŠµë‹ˆë‹¤." + user: + attributes: + email: + taken: "ì´ë¯¸ ì“°ì´ê³ 있습니다." + person: + invalid: "ìœ íš¨í•˜ì§€ 않습니다." + username: + taken: "ì´ë¯¸ ì“°ì´ê³ 있습니다." + ago: "%{time} ì „" + all_aspects: "ëª¨ë“ ì• ìŠ¤íŽ™" + application: + helper: + unknown_person: "ì•Œ 수 없는 사람" + video_title: + unknown: "ì•Œ 수 없는 비디오 ì œëª©" + are_you_sure: "확실합니까?" + aspect_memberships: + destroy: + failure: "ì• ìŠ¤íŽ™ì—ì„œ 지우지 못했습니다" + no_membership: "ì• ìŠ¤íŽ™ì—ì„œ ì°¾ì„ ìˆ˜ 없는 사람입니다" + success: "ì• ìŠ¤íŽ™ì—ì„œ 성공ì 으로 ì§€ì› ìŠµë‹ˆë‹¤" + aspects: + add_to_aspect: + failure: "컨íƒì„ ì• ìŠ¤íŽ™ì— ë„£ì„ ìˆ˜ 없습니다." + success: "컨íƒì„ ì• ìŠ¤íŽ™ì— ì„±ê³µì 으로 넣었습니다." + aspect_contacts: + done_editing: "ê³ ì¹˜ê¸° 완료" + aspect_stream: + activity: "활ë™ìˆœ" + post_time: "올린순" + sort_by: "순서:" + contacts_not_visible: "ì´ ì• ìŠ¤íŽ™ì— ìžˆëŠ” ì‚¬ëžŒë“¤ì´ ì„œë¡œë¥¼ ë³¼ 수 없습니다." + contacts_visible: "ì´ ì• ìŠ¤íŽ™ì— ìžˆëŠ” ì‚¬ëžŒë“¤ì´ ì„œë¡œë¥¼ ë³¼ 수 있습니다." + create: + failure: "새 ì• ìŠ¤íŽ™ì„ ë§Œë“¤ 수 없습니다." + success: "%{name} ì• ìŠ¤íŽ™ì„ ë§Œë“¤ì—ˆìŠµë‹ˆë‹¤." + destroy: + failure: "%{name} ì• ìŠ¤íŽ™ì„ ì§€ìš°ë ¤ë©´ ë¨¼ì € 비워야합니다." + success: "%{name} ì• ìŠ¤íŽ™ì„ ì„±ê³µì 으로 ì§€ì› ìŠµë‹ˆë‹¤." + edit: + add_existing: "있는 ì»¨íƒ ì¶”ê°€" + aspect_list_is_not_visible: "ì• ìŠ¤íŽ™ì˜ ë‹¤ë¥¸ ì´ë“¤ì—게 ì• ìŠ¤íŽ™ 모ë¡ì„ ê°ì¶¥ë‹ˆë‹¤." + aspect_list_is_visible: "ì• ìŠ¤íŽ™ì˜ ë‹¤ë¥¸ ì´ë“¤ì—게 ì• ìŠ¤íŽ™ 목ë¡ì„ 보입니다." + confirm_remove_aspect: "ì´ ì• ìŠ¤íŽ™ì„ ì§€ìš°ë ¤ëŠ”ê²Œ 확실합니까?" + done: "완료" + make_aspect_list_visible: "ì• ìŠ¤íŽ™ 목ë¡ì„ ë³¼ 수 있게 합니까?" + remove_aspect: "ì´ ì• ìŠ¤íŽ™ 지우기" + rename: "ì´ë¦„ 바꾸기" + update: "ê°±ì‹ " + updating: "ê°±ì‹ ì¤‘" + few: "ì• ìŠ¤íŽ™ %{count}ê°œ" + helper: + are_you_sure: "ì´ ì• ìŠ¤íŽ™ì„ ì§€ìš°ë ¤ëŠ”ê²Œ 확실합니까?" + aspect_not_empty: "ì• ìŠ¤íŽ™ì´ ë¹„ì–´ìžˆì§€ 않습니다" + remove: "지우기" + index: + handle_explanation: "ì´ ë””ì•„ìŠ¤í¬ë¼ í•¸ë“¤ì€ ì´ë©”ì¼ ì£¼ì†Œì²˜ëŸ¼ 남ì—게 건넬 수 있습니다." + no_contacts: "ì»¨íƒ ì—†ìŒ" + post_a_message: "새 메시지 올리기 >>" + manage: + add_a_new_aspect: "ì• ìŠ¤íŽ™ 추가" + add_a_new_contact: "ì»¨íƒ ì¶”ê°€" + drag_to_add: "ì¶”ê°€í• ì‚¬ëžŒì„ ëŒì–´ë†“으세요" + manage_aspects: "ì• ìŠ¤íŽ™ 관리" + no_requests: "새 ìš”ì² ì—†ìŒ" + requests: "ìš”ì²" + many: "ì• ìŠ¤íŽ™ %{count}ê°œ" + move_contact: + error: "%{inspect} 컨íƒì„ ì˜®ê¸°ëŠ”ë° ì—러가 ë°œìƒí•˜ì˜€ìŠµë‹ˆë‹¤" + failure: "%{inspect} ë‹˜ì„ ì˜®ê¸¸ 수 없습니다" + success: "새 ì• ìŠ¤íŽ™ìœ¼ë¡œ 옮겼습니다" + new_aspect: + create: "만들기" + name: "ì´ë¦„" + no_posts_message: + start_talking: "ì•„ì§ ì•„ë¬´ ì´ì•¼ê¸°ë„ 없습니다. 대화를 시작하세요!" + one: "ì• ìŠ¤íŽ™ í•œ ê°œ" + other: "ì• ìŠ¤íŽ™ %{count}ê°œ" + seed: + family: "가족" + work: "ì§ìž¥" + show: + edit_aspect: "ì• ìŠ¤íŽ™ ê³ ì¹˜ê¸°" + update: + failure: "%{name} ì• ìŠ¤íŽ™ì€ ì´ë¦„ì´ ë„ˆë¬´ 길어 ì €ìž¥í• ìˆ˜ 없습니다." + success: "%{name} ì• ìŠ¤íŽ™ì„ ì„±ê³µì 으로 ê³ ì³¤ìŠµë‹ˆë‹¤." + zero: "ì• ìŠ¤íŽ™ ì—†ìŒ" + back: "ëŒì•„가기" + bookmarklet: + explanation: "%{link} ë§í¬ë¥¼ ë¶ë§ˆí¬ë¡œ 추가하세요." + explanation_link_text: "디아스í¬ë¼ì— 올리기" + post_something: "디아스í¬ë¼ì— 올리기" + post_success: "ì˜¬ë ¸ìŠµë‹ˆë‹¤! 닫힙니다!" + cancel: "취소" + comments: + few: "댓글 %{count}ê°œ" + many: "댓글 %{count}ê°œ" + new_comment: + comment: "댓글 달기" + commenting: "댓글 다는 중···" + one: "댓글 í•œ ê°œ" + other: "댓글 %{count}ê°œ" + zero: "댓글 ì—†ìŒ" + contacts: + create: + failure: "컨íƒì„ 만들 수 없습니다" + destroy: + failure: "%{name} 컨íƒì„ ëŠì„ 수 없습니다" + success: "%{name} 컨íƒì„ 성공ì 으로 ëŠì—ˆìŠµë‹ˆë‹¤" + few: "ì»¨íƒ %{count}명" + many: "ì»¨íƒ %{count}명" + one: "ì»¨íƒ í•œ 명" + other: "ì»¨íƒ %{count}명" + share_with_pane: + accepts: "%{name} ë‹˜ì´ ìˆ˜ë½í•˜ë©´ 디아스í¬ë¼ì—ì„œ 서로를 ë³¼ 수 있습니다." + add_new_aspect: "새 ì• ìŠ¤íŽ™ì— ë„£ê¸°" + share_with: "%{name} 님ì—게 ê³µìœ ìš”ì²" + zero: "ì»¨íƒ ì—†ìŒ" + conversations: + create: + sent: "쪽지를 보냈습니다" + destroy: + success: "대화를 성공ì 으로 ì§€ì› ìŠµë‹ˆë‹¤" + helper: + new_messages: + few: "새 쪽지 %{count}ê°œ" + many: "새 쪽지 %{count}ê°œ" + one: "새 쪽지 í•œ ê°œ" + other: "새 쪽지 %{count}ê°œ" + zero: "새 쪽지 ì—†ìŒ" + index: + create_a_new_message: "쪽지 보내기" + inbox: "쪽지함" + message_inbox: "쪽지함" + new_message: "새 쪽지" + no_conversation_selected: "대화를 ê³ ë¥´ì§€ 않았습니다" + no_messages: "쪽지 ì—†ìŒ" + new: + send: "보내기" + subject: "ì œëª©" + to: "받는ì´" + show: + delete: "지운 ë’¤ 대화를 차단합니다" + reply: "답장" + date: + formats: + birthday: "%B %dì¼" + birthday_with_year: "%Yë…„ %B %dì¼" + fullmonth_day: "%B %dì¼" + delete: "지우기" + email: "ì´ë©”ì¼" + error_messages: + helper: + correct_the_following_errors_and_try_again: "ì•„ëž˜ì˜ ì—러를 ì •ì •í•œ ë’¤ 다시 ì‹œë„하ì‹ì‹œì˜¤." + invalid_fields: "ìœ íš¨í•˜ì§€ ì•Šì€ í•ëª©" + fill_me_out: "채워주세요" + hide: "숨기기" + home: + show: + already_account: "ì´ë¯¸ ê³„ì •ì„ ê°€ì§€ê³ ìžˆìŠµë‹ˆê¹Œ?" + choice: "ì„ íƒ" + choice_explanation: "디아스í¬ë¼ì—서는 ì• ìŠ¤íŽ™ì´ë¼ëŠ” ëª¨ë‘ ìœ¼ë¡œ 관계를 관리합니다. 디아스í¬ë¼ë§Œì˜ ë…íŠ¹í•¨ì¸ ì• ìŠ¤íŽ™ì€ ë‚˜ì˜ ì‚¬ì§„, ì´ì•¼ê¸°, ë†ë‹´ì´ ë‚´ê°€ ì˜ë„í•œ 사람들과만 ê³µìœ ë˜ë„ë¡ ë³´ìž¥í•©ë‹ˆë‹¤." + learn_about_host: "디아스í¬ë¼ 서버를 ì§ì ‘ ìš´ì˜í•˜ëŠ” 방법" + login_here: "로그ì¸" + ownership: "ì†Œìœ ê¶Œ" + ownership_explanation: "ë‚´ ì‚¬ì§„ì„ ë‚´ê°€ ì†Œìœ í•©ë‹ˆë‹¤. ê³µìœ í•˜ê¸° 위해 ì†Œìœ ê¶Œì„ í¬ê¸°í•˜ì§€ ì•Šì•„ë„ ë©ë‹ˆë‹¤. 어떻게 ë°°í¬ë 지를 ì˜¨ì „ížˆ ì œì–´í•¨ìœ¼ë¡œì„œ 디아스í¬ë¼ì—ì„œ ê³µìœ í•œ ëª¨ë“ ê²ƒë“¤ì˜ ì†Œìœ ê¶Œì„ ìœ ì§€í•©ë‹ˆë‹¤." + share_what_you_want: "ì›í•˜ëŠ” 사람들과 ì›í•˜ëŠ” 걸 ê³µìœ í•˜ìž" + simplicity: "간편함" + simplicity_explanation: "디아스í¬ë¼ì—서는 깨ë—í•˜ê³ ì‰½ê²Œ ê³µìœ í•©ë‹ˆë‹¤. ê°œì¸ì •ë³´ë„ 마친가지입니다. 본래 ê°œì¸ì ì¸ ë””ì•„ìŠ¤í¬ë¼ì—서는 프로필 ë³´ì•ˆì„ ìœ ì§€í•˜ê¸° 위해 여러 페ì´ì§€ì— 걸친 ì„¤ì •ê³¼ ì˜µì…˜ì„ íž˜ê²¹ê²Œ 거치지 ì•Šì•„ë„ ë©ë‹ˆë‹¤." + tagline_first_half: "Share what you want," + tagline_second_half: "with whom you want." + invitations: + check_token: + not_found: "초대장 í† í°ì„ ì°¾ì„ ìˆ˜ 없습니다" + create: + already_contacts: "ì´ë¯¸ 컨íƒì¸ 사람입니다." + already_sent: "ì´ë¯¸ 초대한 사람입니다." + no_more: "가진 초대장 ì´ ì—†ìŠµë‹ˆë‹¤." + rejected: "ì•„ëž˜ì˜ ì´ë©”ì¼ ì£¼ì†ŒëŠ” ë¬¸ì œê°€ 있습니다: " + sent: "ì´ˆëŒ€ìž¥ì´ ë³´ë‚´ì§„ ì´ë©”ì¼ ì£¼ì†Œ: " + edit: + sign_up: "로그ì¸" + new: + already_invited: "초대한 친구들" + aspect: "ì• ìŠ¤íŽ™" + comma_seperated_plz: "쉼표로 구분하여 여러 ì´ë©”ì¼ ì£¼ì†Œë¥¼ ë„£ì„ ìˆ˜ 있습니다." + if_they_accept_info: "수ë½í•œ 친구는 ì´ˆëŒ€í–ˆë˜ ì• ìŠ¤íŽ™ì— ì¶”ê°€ë©ë‹ˆë‹¤." + invite_someone_to_join: "친구를 디아스í¬ë¼ë¡œ 초대하세요!" + personal_message: "쪽지" + resend: "다시 보내기" + send_an_invitation: "초대장 보내기" + send_invitation: "초대장 보내기" + to: "받는ì´" + layouts: + application: + have_a_problem: "ë¬¸ì œê°€ 있습니까? 여기서 해결하세요" + powered_by: "POWERED BY DIASPORA*" + public_feed: "%{name} ë‹˜ì˜ ê³µê°œ 디아스í¬ë¼ 피드" + toggle: "ëª¨ë°”ì¼ ì‚¬ì´íŠ¸ ì „í™˜" + whats_new: "새로운 ì " + your_aspects: "ì• ìŠ¤íŽ™" + header: + blog: "블로그" + code: "코드" + login: "로그ì¸" + logout: "로그아웃" + profile: "프로필" + settings: "ì„¤ì •" + likes: + likes: + people_dislike_this: + few: "%{count}ëª…ì´ ì‹«ì–´í•©ë‹ˆë‹¤" + many: "%{count}ëª…ì´ ì‹«ì–´í•©ë‹ˆë‹¤" + one: "í•œ ëª…ì´ ì‹«ì–´í•©ë‹ˆë‹¤" + other: "%{count}ëª…ì´ ì‹«ì–´í•©ë‹ˆë‹¤" + zero: "ì•„ë¬´ë„ ì‹«ì–´í•˜ì§€ 않습니다" + people_like_this: + few: "%{count}ëª…ì´ ì¢‹ì•„í•©ë‹ˆë‹¤" + many: "%{count}ëª…ì´ ì¢‹ì•„í•©ë‹ˆë‹¤" + one: "í•œ ëª…ì´ ì¢‹ì•„í•©ë‹ˆë‹¤" + other: "%{count}ëª…ì´ ì¢‹ì•„í•©ë‹ˆë‹¤" + zero: "ì•„ë¬´ë„ ì¢‹ì•„í•˜ì§€ 않습니다" + more: "ë”" + next: "다ìŒ" + no_results: "ê²°ê³¼ ì—†ìŒ" + notifications: + also_commented: " ë‹˜ë„ ëŒ“ê¸€ì„ ë‹¬ì•˜ìŠµë‹ˆë‹¤: %{post_author} 님ì˜" + also_commented_deleted: "지워진 ê³µìœ ë¬¼ì— ëŒ“ê¸€ì„ ë‹¬ì•˜ìŠµë‹ˆë‹¤:" + comment_on_post: " ë‹˜ì´ ëŒ“ê¸€ì„ ë‹¬ì•˜ìŠµë‹ˆë‹¤:" + deleted: "지워졌습니다." + helper: + new_notifications: + few: "새 알림 %{count}ê°œ" + many: "새 알림 %{count}ê°œ" + one: "새 알림 í•œ ê°œ" + other: "새 알림 %{count}ê°œ" + zero: "새 알림 ì—†ìŒ" + index: + and: "ê·¸ë¦¬ê³ " + and_others: "나머지 %{number}ê°œ" + mark_all_as_read: "ëª¨ë‘ ì½ìŒìœ¼ë¡œ 표시" + notifications: "알림" + mentioned: " ë‹˜ì´ ê·€í•˜ë¥¼ 멘션하였습니다." + new_request: " ë‹˜ì´ ê³µìœ ë¥¼ ìš”ì²í•˜ì˜€ìŠµë‹ˆë‹¤." + post: "ê³µìœ ë¬¼" + private_message: " ë‹˜ì´ ìª½ì§€ë¥¼ 보냈습니다." + request_accepted: " ë‹˜ì´ ê³µìœ ìš”ì²ì„ 수ë½í•˜ì˜€ìŠµë‹ˆë‹¤." + notifier: + also_commented: + commented: "ë‹˜ë„ %{post_author} ë‹˜ì˜ ê³µìœ ë¬¼ì— ëŒ“ê¸€ì„ ë‹¬ì•˜ìŠµë‹ˆë‹¤:" + sign_in: "로그ì¸í•˜ê¸°" + subject: "%{name} ë‹˜ë„ %{post_author} ë‹˜ì˜ ê³µìœ ë¬¼ì— ëŒ“ê¸€ì„ ë‹¬ì•˜ìŠµë‹ˆë‹¤." + comment_on_post: + commented: "ë‹˜ì´ ê·€í•˜ì˜ ê³µìœ ë¬¼ì— ëŒ“ê¸€ì„ ë‹¬ì•˜ìŠµë‹ˆë‹¤:" + sign_in: "로그ì¸í•˜ê¸°" + subject: "%{name} ë‹˜ì´ ê·€í•˜ì˜ ê³µìœ ë¬¼ì— ëŒ“ê¸€ì„ ë‹¬ì•˜ìŠµë‹ˆë‹¤." + diaspora: "디아스í¬ë¼ ìžë™ ì´ë©”ì¼" + hello: "%{name} 님!" + love: "" + manage_your_email_settings: "ì´ë©”ì¼ ì„¤ì • 관리" + mentioned: + mentioned: "ë‹˜ì´ ë””ì•„ìŠ¤í¬ë¼*ì˜ ê¸€ì—ì„œ 귀하를 멘션했습니다:" + sign_in: "로그ì¸í•˜ê¸°" + subject: "%{name} ë‹˜ì´ ë””ì•„ìŠ¤í¬ë¼*ì—ì„œ 귀하를 멘션했습니다" + new_request: + just_sent_you: "ë‹˜ì´ ë°©ê¸ˆ 디아스í¬ë¼*ì—ì„œ 새 ìš”ì²ì„ 보냈습니다" + sign_in: "로그ì¸í•˜ê¸°" + subject: "%{from} ë‹˜ì´ ìƒˆ 디아스í¬ë¼* ì»¨íƒ ìš”ì²" + try_it_out: "ê¼ í™•ì¸í•´ë³´ì„¸ìš”!" + private_message: + message_subject: "ì œëª©: %{subject}" + private_message: "ë‹˜ì´ ë””ì•„ìŠ¤í¬ë¼*ì—ì„œ 쪽지를 보냈습니다:" + sign_in: "로그ì¸í•˜ê¸°" + subject: "%{name} ë‹˜ì´ ë””ì•„ìŠ¤í¬ë¼*ì—ì„œ 쪽지를 보냈습니다" + request_accepted: + accepted: "ë‹˜ì´ ê³µìœ ìš”ì²ì„ 수ë½í–ˆìŠµë‹ˆë‹¤!" + sign_in: "로그ì¸í•˜ê¸°" + subject: "%{name} ë‹˜ì´ ë””ì•„ìŠ¤í¬ë¼*ì—ì„œ ê³µìœ ìš”ì²ì„ 수ë½í–ˆìŠµë‹ˆë‹¤" + single_admin: + admin: "디아스í¬ë¼ 관리ìž" + subject: "ê·€í•˜ì˜ ë””ì•„ìŠ¤í¬ë¼ ê³„ì •ì— ëŒ€í•œ 메시지:" + thanks: "ê³ ë§™ìŠµë‹ˆë‹¤." + ok: "확ì¸" + or: "ë˜ëŠ”" + password: "암호" + password_confirmation: "암호 확ì¸" + people: + add_contact_small: + add_contact_from_tag: "태그ì—ì„œ ì»¨íƒ ì¶”ê°€" + aspect_list: + edit_membership: "ì†í•œ ì• ìŠ¤íŽ™ ê³ ì¹˜ê¸°" + few: "%{count}명" + helper: + people_on_pod_are_aware_of: " people on pod are aware of" + results_for: "%{params} ê²°ê³¼" + index: + couldnt_find_them_send_invite: "ì°¾ì„ ìˆ˜ 없는 ì‚¬ëžŒë“¤ì„ ì´ˆëŒ€í•˜ì„¸ìš”!" + no_one_found: "검색 결과가 없습니다" + no_results: "검색 결과가 없습니다" + results_for: "검색 ê²°ê³¼:" + many: "%{count}명" + one: "í•œ 명" + other: "%{count}명" + person: + add_contact: "ì»¨íƒ ì¶”ê°€" + already_connected: "ì´ë¯¸ ì—°ê²°ë˜ì—ˆìŠµë‹ˆë‹¤" + pending_request: "ì´ë¯¸ ìš”ì²í•˜ì˜€ìŠµë‹ˆë‹¤" + thats_you: "바로 나!" + profile_sidebar: + bio: "ìžê¸°ì†Œê°œ" + born: "ìƒë…„ì›”ì¼" + cannot_remove: "ëª¨ë“ ì»¨íƒì€ ì ì–´ë„ í•œ ì• ìŠ¤íŽ™ì— ì†í•´ì•¼ 합니다. ê³µìœ ë¥¼ ëŠê³ 싶다면 컨íƒì„ 지워야 합니다." + edit_my_profile: "프로필 ê³ ì¹˜ê¸°" + gender: "성별" + in_aspects: "ì†í•œ ì• ìŠ¤íŽ™:" + location: "위치" + remove_contact: "ì»¨íƒ ì§€ìš°ê¸°" + remove_from: "%{aspect}ì—ì„œ %{name} ë‹˜ì„ ì§€ìš¸ê¹Œìš”?" + show: + add_some: "태그 달기" + does_not_exist: "없는 사람입니다!" + edit: "ê³ ì¹˜ê¸°" + incoming_request: "%{name} ë‹˜ì´ ê³µìœ ë¥¼ ìš”ì²í–ˆìŠµë‹ˆë‹¤" + mention: "멘션" + message: "쪽지" + no_posts: "보여줄 ê³µìœ ë¬¼ì´ ì—†ìŠµë‹ˆë‹¤!" + not_connected: "ì—´ê²°ë˜ì§€ ì•Šì€ ì‚¬ëžŒìž…ë‹ˆë‹¤" + recent_posts: "최근 ê³µìœ ë¬¼" + recent_public_posts: "최근 공개 ê³µìœ ë¬¼" + return_to_aspects: "ì• ìŠ¤íŽ™ 페ì´ì§€ë¡œ ëŒì•„ê°€" + see_all: "ëª¨ë‘ ë³´ê¸°" + start_sharing: "ê³µìœ ìš”ì²" + to_accept_or_ignore: "ìˆ˜ë½ ë˜ëŠ” ê±°ì ˆí•˜ê¸°" + you_have_no_tags: "달아둔 태그가 없습니다!" + webfinger: + fail: "%{handle} í•¸ë“¤ì„ ì°¾ì„ ìˆ˜ 없습니다." + zero: "ì—†ìŒ" + photos: + create: + integrity_error: "사진 ì—…ë¡œë“œí• ìˆ˜ 없습니다. ì´ë¯¸ì§€ê°€ 맞습니까?" + runtime_error: "ì‚¬ì§„ì„ ì—…ë¡œë“œí• ìˆ˜ 없습니다. ì•ˆì „ë²¨íŠ¸ë¥¼ 확ì¸í•˜ì…¨ìŠµë‹ˆê¹Œ?" + type_error: "사진 업로드 실패. ì´ë¯¸ì§€ë¥¼ 추가하지 않았습니다." + destroy: + notice: "ì‚¬ì§„ì„ ì§€ì› ìŠµë‹ˆë‹¤" + edit: + editing: "ê³ ì¹˜ëŠ” 중" + new: + back_to_list: "목ë¡ìœ¼ë¡œ ëŒì•„가기" + new_photo: "새 사진" + post_it: "올리기!" + new_photo: + empty: "{file} 파ì¼ì€ 빈 파ì¼ìž…니다. ì´ íŒŒì¼ë§Œ ë¹¼ê³ ë‹¤ì‹œ ì‹œë„하세요." + invalid_ext: "{file} 파ì¼ì€ ìœ íš¨í•˜ì§€ ì•Šì€ í˜•ì‹ìž…니다. {extensions} 형ì‹ì˜ 파ì¼ì„ ì˜¬ë ¤ì£¼ì„¸ìš”." + size_error: "{file} 파ì¼ì´ {sizeLimit} 보다 í½ë‹ˆë‹¤" + new_profile_photo: + or_select_one: "ì˜¬ë ¤ë‘” 사진 ê°€ìš´ë° ê³ ë¥´ê¸°" + upload: "새 프로필 사진 업로드하기!" + photo: + view_all: "%{name} ë‹˜ì˜ ëª¨ë“ ì‚¬ì§„ 보기" + show: + collection_permalink: "사진집 ì˜êµ¬ì£¼ì†Œ" + delete_photo: "사진 지우기" + edit: "ê³ ì¹˜ê¸°" + edit_delete_photo: "사진 설명 ê³ ì¹˜ê¸° / 사진 지우기" + make_profile_photo: "프로필 사진 만들기" + original_post: "ì›ëž˜ ê³µìœ ë¬¼" + permalink: "ì˜êµ¬ì£¼ì†Œ" + update_photo: "사진 ê°±ì‹ " + view: "보기" + update: + error: "사진 ê³ ì¹˜ê¸° 실패." + notice: "ì‚¬ì§„ì„ ì„±ê³µì 으로 ê°±ì‹ í–ˆìŠµë‹ˆë‹¤." + post_visibilites: + update: + post_hidden: "%{name} ë‹˜ì˜ ê³µìœ ë¬¼ì„ ê°ì·„습니다." + posts: + doesnt_exist: "없는 ê³µìœ ë¬¼ìž…ë‹ˆë‹¤!" + previous: "ì´ì „" + profile: "프로필" + profiles: + edit: + allow_search: "디아스í¬ë¼ì—ì„œ 검색ë©ë‹ˆë‹¤" + edit_profile: "프로필 ê³ ì¹˜ê¸°" + first_name: "ì´ë¦„" + last_name: "성씨" + update_profile: "프로필 ê°±ì‹ " + your_bio: "ìžê¸°ì†Œê°œ" + your_birthday: "ìƒë…„ì›”ì¼" + your_gender: "성별" + your_location: "위치" + your_name: "ì´ë¦„" + your_photo: "사진" + your_private_profile: "ê°œì¸ í”„ë¡œí•„" + your_public_profile: "공개 프로필" + your_tags: "태그 #tag" + your_tags_placeholder: "예) #diaspora #ironing #kittens #music" + update: + failed: "프로필 ê°±ì‹ ì‹¤íŒ¨" + updated: "í”„ë¡œí•„ì„ ê°±ì‹ í•˜ì˜€ìŠµë‹ˆë‹¤" + registrations: + closed: "우리 디아스í¬ë¼ íŒ“ì€ ê°€ìž…ì´ ë‹«í˜€ìžˆìŠµë‹ˆë‹¤." + create: + success: "디아스í¬ë¼ì— 가입ë˜ì—ˆìŠµë‹ˆë‹¤!" + edit: + cancel_my_account: "취소" + edit: "%{name} ê³ ì¹˜ê¸°" + leave_blank: "(바꾸지 ì•Šìœ¼ë ¤ë©´ 비워ë‘세요)" + password_to_confirm: "(암호를 ë°”ê¾¸ë ¤ë©´ ì›ëž˜ 암호가 필요합니다)" + unhappy: "무슨 ë¬¸ì œë¼ë„?" + update: "ê°±ì‹ í•˜ê¸°" + new: + enter_email: "ì´ë©”ì¼ ì£¼ì†Œë¥¼ ìž…ë ¥í•˜ì„¸ìš”" + enter_password: "암호를 ìž…ë ¥í•˜ì„¸ìš”" + enter_password_again: "암호를 다시 ìž…ë ¥í•˜ì„¸ìš”" + enter_username: "사용ìžëª…ì„ ì„ íƒí•˜ì„¸ìš” (로마ìž, ì•„ë¼ë¹„ì•„ 숫ìž, ì–¸ë”스코어만)" + sign_up: "가입하기" + sign_up_for_diaspora: "디아스í¬ë¼ì— 가입하기" + requests: + create: + sending: "ê³µìœ ë¥¼ ìš”ì²í•˜ê³ 있습니다." + sent: "%{name} 님ì—게 ê³µìœ ë¥¼ ìš”ì²í•˜ì˜€ìŠµë‹ˆë‹¤." + destroy: + error: "ì• ìŠ¤íŽ™ì„ ê³¨ë¼ì£¼ì„¸ìš”!" + ignore: "ê³µìœ ìš”ì²ì„ ê±°ì ˆí•˜ì˜€ìŠµë‹ˆë‹¤." + success: "ê³µìœ í•˜ê³ ìžˆìŠµë‹ˆë‹¤." + helper: + new_requests: + few: "ìš”ì²ì´ %{count}ê°œ 들어왔습니다!" + many: "ìš”ì²ì´ %{count}ê°œ 들어왔습니다!" + one: "ìš”ì²ì´ í•œ ê°œ 들어왔습니다!" + other: "ìš”ì²ì´ %{count}ê°œ 들어왔습니다!" + zero: "ìš”ì² ì—†ìŒ" + manage_aspect_contacts: + existing: "Existing contacts" + manage_within: "ì»¨íƒ ê´€ë¦¬í•˜ê¸°:" + new_request_to_person: + sent: "ìš”ì²í•˜ì˜€ìŠµë‹ˆë‹¤!" + search: "검색" + services: + create: + success: "성공ì 으로 ì¸ì¦ë˜ì—ˆìŠµë‹ˆë‹¤." + destroy: + success: "ì¸ì¦ì„ 성공ì 으로 ì§€ì› ìŠµë‹ˆë‹¤." + failure: + error: "서비스 연결중 ì—러가 ë°œìƒí•˜ì˜€ìŠµë‹ˆë‹¤" + finder: + friends: + few: "친구 %{count}명" + many: "친구 %{count}명" + one: "친구 í•œ 명" + other: "친구 %{count}명" + zero: "친구 ì—†ìŒ" + invite_your_friends_from: "%{service} 서비스ì—ì„œ 친구 초대하기" + not_connected: "ì—°ê²° ì—†ìŒ" + index: + connect_to_facebook: "페ì´ìŠ¤ë¶ì— ì—°ê²°" + connect_to_twitter: "íŠ¸ìœ„í„°ì— ì—°ê²°" + disconnect: "ëŠê¸°" + edit_services: "서비스 ì„¤ì •" + logged_in_as: "ë¡œê·¸ì¸ ì¤‘: " + really_disconnect: "%{service} 서비스를 ëŠìœ¼ì‹œê² 습니까?" + inviter: + click_link_to_accept_invitation: "초대를 수ë½ë ¤ë©´ í´ë¦í•˜ì„¸ìš”!" + join_me_on_diaspora: "디아스í¬ë¼*ì—ì„œ 만나요!" + remote_friend: + invite: "초대하기" + resend: "다시 보내기" + settings: "ì„¤ì •" + shared: + add_contact: + create_request: "디아스í¬ë¼ 핸들로 찾기" + diaspora_handle: "diaspora@handle.org" + enter_a_diaspora_username: "디아스í¬ë¼ 사용ìžëª…ì„ ìž…ë ¥í•˜ì„¸ìš”:" + know_email: "ì´ë©”ì¼ ì£¼ì†Œë¥¼ 알면 ì´ˆëŒ€í• ìˆ˜ 있습니다!" + your_diaspora_username_is: "ë‚´ 디아스í¬ë¼ 핸들: %{diaspora_handle}" + contact_list: + all_contacts: "ëª¨ë“ ì»¨íƒ" + cannot_remove: "ëª¨ë“ ì»¨íƒì€ ì ì–´ë„ í•˜ë‚˜ì˜ ì• ìŠ¤íŽ™ì— ì†í•´ì•¼ 합니다. ì—°ê²°ì„ ëŠìœ¼ë ¤ë©´ 컨íƒì„ 지우세요." + footer: + logged_in_as: "%{name}ë¡œ 로그ì¸ì¤‘" + your_aspects: "ë‚´ ì• ìŠ¤íŽ™" + invitations: + by_email: "ì´ë©”ì¼ ì´ˆëŒ€" + dont_have_now: "ì§€ê¸ˆì€ ì´ˆëŒ€í• ìˆ˜ 없습니다." + from_facebook: "페ì´ìŠ¤ë¶ì—ì„œ 찾기" + invitations_left: "(%{count}통 남ìŒ)" + invite_someone: "초대하기" + invite_your_friends: "친구 초대하기" + invites: "초대" + invites_closed: "ì´ ë””ì•„ìŠ¤í¬ë¼ëŠ” 초대가 닫혀있습니다." + notification: + new: "%{from} ë‹˜ì˜ ìƒˆ %{type}" + public_explain: + logged_in: "%{service}ì— ë¡œê·¸ì¸ ë˜ì—ˆìŠµë‹ˆë‹¤" + manage: "ì—°ê²°ëœ ì„œë¹„ìŠ¤ 관리" + outside: "공개 ê³µìœ ë¬¼ì€ ë””ì•„ìŠ¤í¬ë¼ ë°–ì˜ ì‚¬ëžŒë“¤ë„ ë³¼ 수 있습니다." + title: "서비스 ì„¤ì •" + publisher: + add_photos: "사진 추가" + all: "모ë‘" + all_contacts: "ëª¨ë“ ì»¨íƒ" + click_to_share_with: "ê³µìœ í• ëŒ€ìƒì„ í´ë¦:" + make_public: "공개하기" + post_a_message_to: "%{aspect}ì— ê³µìœ ë¬¼ 올리기" + posting: "올리는 중···" + public: "공개" + publishing_to: "올릴 ê³³: " + share: "ê³µìœ " + share_with: "ê³µìœ í•˜ê¸°: " + whats_on_your_mind: "무슨 ìƒê°í•´ìš”?" + reshare: + reshare: "ìž¬ê³µìœ " + stream_element: + dislike: "싪어요" + like: "좋아요" + status_messages: + create: + success: "%{names} ë‹˜ì„ ì„±ê³µì 으로 멘션했습니다." + destroy: + failure: "ê³µìœ ë¬¼ì„ ì§€ìš¸ 수 없습니다." + helper: + no_message_to_display: "보여줄 ê³µìœ ë¬¼ì´ ì—†ìŠµë‹ˆë‹¤." + new: + mentioning: "%{person} ë‹˜ì„ ë©˜ì…˜í•©ë‹ˆë‹¤" + show: + destroy: "지우기" + not_found: "ê³µìœ ë¬¼ì„ ì°¾ì„ ìˆ˜ 없습니다." + permalink: "ì˜êµ¬ì£¼ì†Œ" + stream_helper: + hide_comments: "댓글 ê°ì¶”기" + show_comments: "댓글 보기" + tags: + show: + nobody_talking: "ì•„ì§ %{tag} 태그가 달린 ê³µìœ ë¬¼ì´ ì—†ìŠµë‹ˆë‹¤." + people_tagged_with: "%{tag} 태그가 달린 사람들" + posts_tagged_with: "#%{tag} 태그가 달린 ê³µìœ ë¬¼" + the_world: "공개" + undo: "ëŒì´í‚¤ê² 습니까?" + username: "사용ìžëª…" + users: + destroy: "ê³„ì •ì„ ì„±ê³µì 으로 없앴습니다." + edit: + also_commented: "댓글 ë‹¬ì•˜ë˜ ê³µìœ ë¬¼ì— ë‚´ 컨íƒë„ ëŒ“ê¸€ì„ ë‹¬ì•˜ì„ ë•Œ" + change: "바꾸기" + change_language: "언어 바꾸기" + change_password: "암호 바꾸기" + close_account: "ê³„ì • ì—†ì• ê¸°" + comment_on_post: "ë‚´ ê³µìœ ë¬¼ì— ëŒ“ê¸€ì´ ë‹¬ë ¸ì„ ë•Œ" + current_password: "ì›ëž˜ 암호" + download_photos: "ë‚´ 사진 다운로드" + download_xml: "ë‚´ xml 다운로드" + edit_account: "ê³„ì • ê³ ì¹˜ê¸°" + export_data: "ìžë£Œ 뽑아내기" + mentioned: "ë‚´ê°€ 멘션ë˜ì—ˆì„ ë•Œ" + new_password: "새 암호" + private_message: "쪽지를 ë°›ì•˜ì„ ë•Œ" + receive_email_notifications: "ì´ëŸ´ ë•Œ ì´ë©”ì¼ ì•Œë¦¼ì„ ë°›ê² ìŠµë‹ˆë‹¤" + request_acceptence: "ìš”ì²í–ˆë˜ ê³µìœ ê°€ 수ë½ë˜ì—ˆì„ ë•Œ" + request_received: "새로운 ê³µìœ ìš”ì²ì„ ë°›ì•˜ì„ ë•Œ" + your_email: "ì´ë©”ì¼ ì£¼ì†Œ" + your_handle: "디아스í¬ë¼ 핸들" + getting_started: + connect_on_diaspora: "디아스í¬ë¼ì—ì„œ ê³µìœ ë¥¼ ìš”ì²í•˜ì„¸ìš”" + connect_services: "다른 서비스와 연결하세요" + could_not_find_anyone: "디아스í¬ë¼*ì—ì„œ 친구를 ì°¾ì„ ìˆ˜ 없습니다. 친구를 초대하세요!" + edit_profile: "í”„ë¡œí•„ì„ ê³ ì¹˜ì„¸ìš”" + finished: "완료!" + save_and_continue: "ì €ìž¥í•˜ê³ ë‹¤ìŒìœ¼ë¡œ" + signup_steps: "세 단계를 ë” ê±°ì¹˜ë©´ ê°€ìž…ì„ ë§ˆì¹ ìˆ˜ 있습니다." + skip: "넘기기" + step_2: + find_your_friends_on_diaspora: "페ì´ìŠ¤ë¶ ì¹œêµ¬ë“¤ì„ ë””ì•„ìŠ¤í¬ë¼ë¡œ 초대하세요!" + skip: "넘기기" + step_3: + finish: "마치기" + people_already_on_diaspora: "디아스í¬ë¼ì— 가입한 사람들" + welcome: "디아스í¬ë¼ì— ì˜¤ì‹ ê±¸ 환ì˜í•©ë‹ˆë‹¤!" + public: + does_not_exist: "%{username} ë‹˜ì„ ì°¾ì„ ìˆ˜ 없습니다!" + update: + email_notifications_changed: "ì´ë©”ì¼ ì•Œë¦¼ì„ ë°”ê¿¨ìŠµë‹ˆë‹¤" + language_changed: "언어를 바꿨습니다" + language_not_changed: "언어를 바꿀 수 없습니다" + password_changed: "암호를 바꿨습니다" + password_not_changed: "암호를 바꿀 수 없습니다" + webfinger: + fetch_failed: "failed to fetch webfinger profile for %{profile_url}" + hcard_fetch_failed: "there was a problem fetching the hcard for %{account}" + no_person_constructed: "No person could be constructed from this hcard." + not_enabled: "webfinger does not seem to be enabled for %{account}'s host" + xrd_fetch_failed: "there was an error getting the xrd from account %{account}" diff --git a/config/locales/diaspora/lt.yml b/config/locales/diaspora/lt.yml index e4eb0e8632616640ce22e32de247a717de8a2446..5f82d097dfb2c725a3fec97c9efbeb74584cace7 100644 --- a/config/locales/diaspora/lt.yml +++ b/config/locales/diaspora/lt.yml @@ -354,7 +354,7 @@ lt: recent_posts: "Recent Posts" recent_public_posts: "Recent Public Posts" return_to_aspects: "Grįžti į aspektų puslapį" - similar_contacts: "similar contacts" + see_all: "See all" start_sharing: "start sharing" to_accept_or_ignore: "priimti arba ignoruoti." you_have_no_tags: "you have no tags!" diff --git a/config/locales/diaspora/mk.yml b/config/locales/diaspora/mk.yml index 634468a00d077f1ec36766f11e9a71f575e46b76..78529c29a990ac7575e03b4968dd82dc4d18d33c 100644 --- a/config/locales/diaspora/mk.yml +++ b/config/locales/diaspora/mk.yml @@ -354,7 +354,7 @@ mk: recent_posts: "Recent Posts" recent_public_posts: "Recent Public Posts" return_to_aspects: "Return to your aspects page" - similar_contacts: "similar contacts" + see_all: "See all" start_sharing: "start sharing" to_accept_or_ignore: "to accept or ignore it." you_have_no_tags: "you have no tags!" diff --git a/config/locales/diaspora/ml.yml b/config/locales/diaspora/ml.yml index 9e8f70376c5565942dc5c772f94290e38fed6d72..e47920b8101190ce4200a720546017a786daf6d6 100644 --- a/config/locales/diaspora/ml.yml +++ b/config/locales/diaspora/ml.yml @@ -144,7 +144,7 @@ ml: zero: "സമàµà´ªà´°àµâ€à´•àµà´•à´®àµŠà´¨àµà´¨àµà´®à´¿à´²àµà´²" conversations: create: - sent: "Message sent" + sent: "സനàµà´¦àµ‡à´¶à´‚ അയചàµà´šà´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨àµ" destroy: success: "Conversation successfully removed" helper: @@ -160,7 +160,7 @@ ml: message_inbox: "Message Inbox" new_message: "à´ªàµà´¤à´¿à´¯ സനàµà´¦àµ‡à´¶à´‚" no_conversation_selected: "no conversation selected" - no_messages: "no messages" + no_messages: "സനàµà´¦àµ‡à´¶à´™àµà´™à´³àµŠà´¨àµà´¨àµà´‚ ഇലàµà´²" new: send: "അയകàµà´•àµ" subject: "വിഷയം" @@ -222,7 +222,7 @@ ml: have_a_problem: "à´ªàµà´°à´¶àµà´¨à´®àµà´£àµà´Ÿàµ‹?" powered_by: "ഡയസàµà´ªàµ‹à´±à´¯à´¾à´²àµâ€* ശകàµà´¤à´®à´¾à´•àµà´•à´¿à´¯à´¤àµ" public_feed: "Public Diaspora Feed for %{name}" - toggle: "toggle mobile site" + toggle: "മൊബൈലàµâ€ സൈറàµà´±à´¿à´²àµ‡à´•àµà´•àµ മാറàµà´•" whats_new: "à´ªàµà´¤à´¿à´¯à´¤àµ?" your_aspects: "നിങàµà´™à´³àµà´Ÿàµ† പരിചയങàµà´™à´³àµâ€" header: @@ -241,10 +241,10 @@ ml: other: "%{count} people disliked this" zero: "no people disliked this" people_like_this: - few: "%{count} people liked this" - many: "%{count} people liked this" - one: "1 person liked this" - other: "%{count} people liked this" + few: "%{count} ആളàµà´•à´³àµâ€ ഇതൠഇഷàµà´Ÿà´ªàµà´ªàµ†à´Ÿàµà´¨àµà´¨àµ" + many: "%{count} ആളàµà´•à´³àµâ€ ഇതൠഇഷàµà´Ÿà´ªàµà´ªàµ†à´Ÿàµà´¨àµà´¨àµ" + one: "ഒരാളàµâ€ ഇതൠഇഷàµà´Ÿà´ªàµà´ªàµ†à´Ÿàµà´¨àµà´¨àµ" + other: "%{count} ആളàµà´•à´³àµâ€ ഇതൠഇഷàµà´Ÿà´ªàµà´ªàµ†à´Ÿàµà´¨àµà´¨àµ" zero: "no people liked this" more: "കൂടàµà´¤à´²àµâ€" next: "à´…à´Ÿàµà´¤àµà´¤à´¤àµ" @@ -354,7 +354,7 @@ ml: recent_posts: "സമീപകാല à´•àµà´±à´¿à´ªàµà´ªàµà´•à´³àµâ€" recent_public_posts: "സമീപകാല പൊതൠകàµà´±à´¿à´ªàµà´ªàµà´•à´³àµâ€" return_to_aspects: "താങàµà´•à´³àµà´Ÿàµ† പരിചയം താളിലേയàµà´•àµà´•àµ തിരിചàµà´šàµ പോവàµà´•" - similar_contacts: "സാമàµà´¯à´®àµà´³àµà´³ സമàµà´ªà´°àµâ€à´•àµà´•à´™àµà´™à´³àµâ€" + see_all: "See all" start_sharing: "പങàµà´•àµà´µà´šàµà´šàµ à´¤àµà´Ÿà´™àµà´™àµà´•" to_accept_or_ignore: "to accept or ignore it." you_have_no_tags: "you have no tags!" @@ -384,7 +384,7 @@ ml: photo: view_all: "%{name}à´¯àµà´Ÿàµ† à´Žà´²àµà´²à´¾ à´šà´¿à´¤àµà´°à´™àµà´™à´³àµà´‚ കാണàµà´•" show: - collection_permalink: "collection permalink" + collection_permalink: "ശേഖരണതàµà´¤à´¿à´¨àµà´±àµ† à´¸àµà´¥à´¿à´°à´‚à´•à´£àµà´£à´¿" delete_photo: "à´šà´¿à´¤àµà´°à´‚ നീകàµà´•àµà´•" edit: "തിരàµà´¤àµà´¤àµà´•" edit_delete_photo: "à´šà´¿à´¤àµà´°à´¤àµà´¤à´¿à´¨àµà´±àµ† വിവരണം തിരàµà´¤àµà´¤àµà´• / à´šà´¿à´¤àµà´°à´‚ നീകàµà´•à´‚ ചെയàµà´¯àµà´•" @@ -398,7 +398,7 @@ ml: notice: "à´šà´¿à´¤àµà´°à´‚ വിജയകരമായി à´ªàµà´¤àµà´•àµà´•à´¿." post_visibilites: update: - post_hidden: "%{name}'s post has been hidden." + post_hidden: "%{name}à´¨àµà´±àµ† പോസàµà´±àµà´±àµ മറചàµà´šà´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨àµ." posts: doesnt_exist: "à´ˆ à´•àµà´±à´¿à´ªàµà´ªàµ നിലവിലിലàµà´²!" previous: "à´®àµà´¨àµâ€â€Œà´ªà´¤àµà´¤àµ†" @@ -550,7 +550,7 @@ ml: mentioning: "Mentioning: %{person}" show: destroy: "നീകàµà´•à´‚ ചെയàµà´¯àµà´•" - not_found: "Sorry, we couldn't find that post." + not_found: "à´•àµà´·à´®à´¿à´•àµà´•à´£à´‚, പോസàµà´±àµà´±àµ à´•à´£àµà´Ÿàµ†à´¤àµà´¤à´¾à´¨à´¾à´¯à´¿à´²àµà´²." permalink: "à´¸àµà´¥à´¿à´°à´‚ à´•à´£àµà´£à´¿" stream_helper: hide_comments: "à´…à´à´¿à´ªàµà´°à´¾à´¯à´™àµà´™à´³àµâ€ മറയàµà´•àµà´•àµà´•" @@ -564,7 +564,7 @@ ml: undo: "Undo?" username: "ഉപയോകàµà´¤àµƒà´¨à´¾à´®à´‚" users: - destroy: "à´…à´•àµà´•àµŒà´£àµà´Ÿàµ വിജയകരമായി അവസാനിപàµà´ªà´¿à´šàµà´šàµ." + destroy: "Account successfully closed." edit: also_commented: "...someone also comments on your contact's post?" change: "മാറàµà´±àµà´•" diff --git a/config/locales/diaspora/nb.yml b/config/locales/diaspora/nb.yml index e77e2f34be4d475776df09ad1419294637803339..7ef93986e24ed367e868d417efb4b5be3375f339 100644 --- a/config/locales/diaspora/nb.yml +++ b/config/locales/diaspora/nb.yml @@ -354,7 +354,7 @@ nb: recent_posts: "Nylige Innlegg" recent_public_posts: "Nylige Offentlige Innlegg" return_to_aspects: "Tilbake til aspektene" - similar_contacts: "lignende kontakter" + see_all: "See all" start_sharing: "begynn Ã¥ dele" to_accept_or_ignore: "for Ã¥ akseptere eller ignorere." you_have_no_tags: "du har ingen tagger!" diff --git a/config/locales/diaspora/nl.yml b/config/locales/diaspora/nl.yml index 76e5dcd65ee66dd42a55c09d80ea2449bad003d9..efd75e4664ea9b71867ca91e9cb91cf3ab6cf061 100644 --- a/config/locales/diaspora/nl.yml +++ b/config/locales/diaspora/nl.yml @@ -266,7 +266,7 @@ nl: and_others: "en %{number} anderen" mark_all_as_read: "Markeer alles gelezen" notifications: "Notificaties" - mentioned: "heeft je genoemd in zijn/haar" + mentioned: "heeft je genoemd in een post" new_request: "bood aan om met jou te delen." post: "post" private_message: "heeft je een bericht gestuurd." @@ -346,7 +346,7 @@ nl: add_some: "Voeg toe" does_not_exist: "Die persoon bestaat niet!" edit: "bewerk" - incoming_request: "% {name} wil met je delen" + incoming_request: "%{name} wil met je delen" mention: "Noemen" message: "Bericht" no_posts: "geen berichten om weer te geven!" @@ -354,7 +354,7 @@ nl: recent_posts: "Recente Berichten" recent_public_posts: "Recente Openbare Berichten" return_to_aspects: "Ga terug naar je aspecten pagina" - similar_contacts: "vergelijkbare contacten" + see_all: "Zie alles" start_sharing: "start met delen" to_accept_or_ignore: "om te accepteren of te negeren." you_have_no_tags: "je hebt geen tags!" diff --git a/config/locales/diaspora/pa.yml b/config/locales/diaspora/pa.yml index ef84b1dee7166422fa1f0df52e2723116e47f971..0495143c69bc185d0a89200b601bc5735e0d7cd9 100644 --- a/config/locales/diaspora/pa.yml +++ b/config/locales/diaspora/pa.yml @@ -354,7 +354,7 @@ pa: recent_posts: "Recent Posts" recent_public_posts: "Recent Public Posts" return_to_aspects: "Return to your aspects page" - similar_contacts: "ਰਲਦੇ ਸੰਪਰਕ" + see_all: "See all" start_sharing: "start sharing" to_accept_or_ignore: "to accept or ignore it." you_have_no_tags: "you have no tags!" diff --git a/config/locales/diaspora/pl.yml b/config/locales/diaspora/pl.yml index 7c5f4e7ec7d9391a780e4b9970e3cbacb5c6aa6a..4d954ea8ff65f5ddd3f626ef835ccd675ec9b7cb 100644 --- a/config/locales/diaspora/pl.yml +++ b/config/locales/diaspora/pl.yml @@ -27,24 +27,24 @@ pl: user: attributes: email: - taken: "is already taken." + taken: "jest już używany." person: invalid: "is invalid." username: - taken: "is already taken." + taken: "jest już zajÄ™ta." ago: "%{time} temu" - all_aspects: "All aspects" + all_aspects: "Wszystkie aspekty" application: helper: unknown_person: "nieznana osoba" video_title: - unknown: "Unknown Video Title" + unknown: "Wideo bez nazwy" are_you_sure: "Na pewno?" aspect_memberships: destroy: - failure: "Failed to remove person from aspect" - no_membership: "Could not find the selected person in that aspect" - success: "Successfully removed person from aspect" + failure: "Nie udaÅ‚o siÄ™ usunąć osoby z aspektu" + no_membership: "Nie udaÅ‚o siÄ™ odnaleźć wskazanej osoby w tym aspekcie" + success: "Osoba pomyÅ›lnie usuniÄ™ta z aspektu" aspects: add_to_aspect: failure: "Nie udaÅ‚o siÄ™ dodać kontaktu do aspektu." @@ -52,29 +52,29 @@ pl: aspect_contacts: done_editing: "edycja zakoÅ„czona" aspect_stream: - activity: "activity" - post_time: "post time" - sort_by: "sort by:" + activity: "aktywność" + post_time: "data wpisu" + sort_by: "sortuj po:" contacts_not_visible: "Kontakty z tego aspektu nie bÄ™dÄ… dla siebie widoczne." contacts_visible: "Kontakty z tego aspektu bÄ™dÄ… widziaÅ‚y się nawzajem." create: failure: "Nie udaÅ‚o siÄ™ utworzyć aspektu." success: "Twój nowy aspekt, on nazwie %{name}, zostaÅ‚ utworzony" destroy: - failure: "%{name} is not empty and could not be removed." + failure: "%{name} nie jest pusty i nie może być usuniÄ™ty." success: "%{name} zostaÅ‚ usuniÄ™ty." edit: add_existing: "Dodaj istniejÄ…cy kontakt" - aspect_list_is_not_visible: "aspect list is hidden to others in aspect" - aspect_list_is_visible: "aspect list is visible to others in aspect" + aspect_list_is_not_visible: "lista aspektów jest ukryta przed innymi z tego aspektu" + aspect_list_is_visible: "lista aspektów jest widoczna dla innych z tego aspektu" confirm_remove_aspect: "@{m,f:JesteÅ›|n:Czy na}{ pew}{m:ien|f:na|n:no}{m,f:, że } chcesz usunąć ten aspekt?" - done: "Done" - make_aspect_list_visible: "make aspect list visible?" + done: "Zrobione" + make_aspect_list_visible: "uczyÅ„ listÄ™ aspektów widocznÄ…?" remove_aspect: "UsuÅ„ ten aspekt" rename: "zmieÅ„ nazwÄ™" - update: "update" + update: "aktualizuj" updating: "updating" - few: "%{count} aspects" + few: "%{count} aspekty" helper: are_you_sure: "@{m,f:JesteÅ›|n:Czy na}{ pew}{m:ien|f:na|n:no}{m,f:, że } chcesz usunąć ten aspekt?" aspect_not_empty: "Aspekt nie jest pusty" @@ -82,7 +82,7 @@ pl: index: handle_explanation: "To jest Twój identyfikator w Diasporze. Podobnie jak adresu e-mailowy, możesz podawać go innym, aby mogli siÄ™ z TobÄ… skontaktować." no_contacts: "Brak kontaktów" - post_a_message: "post a message >>" + post_a_message: "napisz wiadomość >>" manage: add_a_new_aspect: "Dodaj nowy aspekt" add_a_new_contact: "Dodaj nowy kontakt" @@ -90,7 +90,7 @@ pl: manage_aspects: "ZarzÄ…dzanie aspektami" no_requests: "Brak nowych zaproszeÅ„" requests: "Zaproszenia" - many: "%{count} aspects" + many: "%{count} aspektów" move_contact: error: "BÅ‚Ä…d przy przenoszeniu kontaktu: %{inspect}" failure: "nie zadziaÅ‚aÅ‚o %{inspect}" @@ -100,74 +100,74 @@ pl: name: "Nazwa" no_posts_message: start_talking: "Nikt jeszcze nic nie powiedziaÅ‚. Rozkręć rozmowÄ™!" - one: "1 aspect" - other: "%{count} aspects" + one: "1 aspekt" + other: "%{count} aspektów" seed: family: "Rodzina" work: "Praca" show: edit_aspect: "edytuj aspekt" update: - failure: "Your aspect, %{name}, had too long name to be saved." + failure: "Twój aspekt %{name} nie mógÅ‚ zostać zapisany z powodu zbyt dÅ‚ugiej nazwy." success: "Twój aspekt '%{name}' zostaÅ‚ pomyÅ›lnie zmieniony." - zero: "no aspects" + zero: "brak aspektów" back: "Wróć" bookmarklet: - explanation: "%{link} from anywhere by bookmarking this link." - explanation_link_text: "Post to Diaspora" - post_something: "Post something to Diaspora" + explanation: "%{link} z każdego miejsca dodajÄ…c ten link do zakÅ‚adek." + explanation_link_text: "Publikuj w serwisie Diaspora" + post_something: "Napisz coÅ› na Diasporze" post_success: "Posted! Closing!" cancel: "Anuluj" comments: - few: "%{count} comments" - many: "%{count} comments" + few: "%{count} komentarze" + many: "%{count} komentarzy" new_comment: comment: "Skomentuj…" commenting: "Komentowanie…" - one: "1 comment" - other: "%{count} comments" - zero: "no comments" + one: "1 komentarz" + other: "%{count} komentarzy" + zero: "brak komentarzy" contacts: create: - failure: "Failed to create contact" + failure: "Nie udaÅ‚o siÄ™ utworzyć kontaktu" destroy: - failure: "Failed to disconnect from %{name}" - success: "Successfully disconnected from %{name}" + failure: "Nie udaÅ‚o siÄ™ odÅ‚Ä…czyć od %{name}" + success: "PomyÅ›lnie odÅ‚Ä…czono od %{name}" few: "%{count} kontakty" - many: "%{count} contacts" + many: "%{count} kontaktów" one: "1 kontakt" other: "%{count} kontaktów" share_with_pane: - accepts: "Once %{name} accepts, you'll start seeing each other's posts on Diaspora" - add_new_aspect: "add to new aspect" - share_with: "Start sharing with %{name}" + accepts: "Kiedy %{name} zaakceptuje zaproszenie, zaczniecie widzieć nawzajem swoje wpisy w serwisie Diaspora" + add_new_aspect: "dodaj do nowego aspektu" + share_with: "Zacznij współdzielić z %{name}" zero: "brak kontaktów" conversations: create: - sent: "Message sent" + sent: "Wiadomość zostaÅ‚a wysÅ‚ana" destroy: - success: "Conversation successfully removed" + success: "PomyÅ›lnie usuniÄ™to rozmowÄ™" helper: new_messages: - few: "%{count} new messages" - many: "%{count} new messages" - one: "1 new messages" - other: "%{count} new messages" - zero: "no new messages" + few: "%{count} nowe wiadomoÅ›ci" + many: "%{count} nowych wiadomoÅ›ci" + one: "1 nowa wiadomość" + other: "%{count} nowych wiadomoÅ›ci" + zero: "brak nowych wiadomoÅ›ci" index: - create_a_new_message: "create a new message" - inbox: "Inbox" - message_inbox: "Message Inbox" - new_message: "New Message" - no_conversation_selected: "no conversation selected" - no_messages: "no messages" + create_a_new_message: "stwórz nowÄ… wiadomość" + inbox: "Skrzynka odbiorcza" + message_inbox: "Skrzynka odbiorcza" + new_message: "Nowa wiadomość" + no_conversation_selected: "nie wybrano wÄ…tku" + no_messages: "brak wiadomoÅ›ci" new: - send: "Send" - subject: "subject" - to: "to" + send: "WyÅ›lij" + subject: "temat" + to: "do" show: - delete: "delete and block conversation" - reply: "reply" + delete: "usuÅ„ i zablokuj rozmowÄ™" + reply: "odpowiedz" date: formats: birthday: "%d %B" @@ -180,7 +180,7 @@ pl: correct_the_following_errors_and_try_again: "Popraw poniższe bÅ‚Ä™dy i spróbuj ponownie." invalid_fields: "Pola z bÅ‚Ä™dami" fill_me_out: "WypeÅ‚nij to pole" - hide: "Hide" + hide: "Ukryj" home: show: already_account: "masz już konto?" @@ -207,13 +207,13 @@ pl: edit: sign_up: "rejestracja" new: - already_invited: "Already invited" + already_invited: "Już zaproszony" aspect: "Aspekt" comma_seperated_plz: "Możesz podać kilka adresów e-mailowych, oddzielajÄ…c je przecinkami." if_they_accept_info: "JeÅ›li wybrana osoba przyjmie zaproszenie, zostanie dodana do aspektów, do których jÄ… zapros@{m:iÅ‚eÅ›|f:iÅ‚aÅ›|n:zono}." invite_someone_to_join: "ZaproÅ› kogoÅ› do Diaspory!" personal_message: "Dodatkowa wiadomość" - resend: "Resend" + resend: "WyÅ›lij ponownie" send_an_invitation: "WyÅ›lij zaproszenie" send_invitation: "WyÅ›lij zaproszenie" to: "Do" @@ -221,85 +221,85 @@ pl: application: have_a_problem: "Masz problem? Tu znajdziesz rozwiÄ…zanie" powered_by: "POWERED BY DIASPORA*" - public_feed: "Public Diaspora Feed for %{name}" + public_feed: "Publiczny kanaÅ‚ Diaspory użytkownika %{name}" toggle: "przeÅ‚Ä…cz widok mobilny" - whats_new: "what's new?" - your_aspects: "your aspects" + whats_new: "co nowego?" + your_aspects: "twoje aspekty" header: blog: "blog" code: "kod" login: "logowanie" logout: "wyloguj" - profile: "profile" - settings: "settings" + profile: "profil" + settings: "ustawienia" likes: likes: people_dislike_this: - few: "%{count} people disliked this" - many: "%{count} people disliked this" - one: "1 person disliked this" - other: "%{count} people disliked this" + few: "%{count} osoby nie lubiÄ… tego" + many: "%{count} osób nie lubi tego" + one: "1 osoba tego nie lubi" + other: "%{count} osób nie lubi tego" zero: "no people disliked this" people_like_this: - few: "%{count} people liked this" - many: "%{count} people liked this" - one: "1 person liked this" - other: "%{count} people liked this" - zero: "no people liked this" - more: "More" - next: "next" - no_results: "No Results Found" + few: "%{count} osoby polubiÅ‚y to" + many: "%{count} osób polubiÅ‚o to" + one: "1 osoba to polubiÅ‚a" + other: "%{count} osób polubiÅ‚o to" + zero: "nikt tego nie polubiÅ‚" + more: "WiÄ™cej" + next: "nastÄ™pny" + no_results: "Nie znaleziono niczego" notifications: - also_commented: "also commented on" + also_commented: "skomentowaÅ‚ również użytkownika %{post_author}" also_commented_deleted: "commented on a deleted post" comment_on_post: "komentuje twój" deleted: "usuniÄ™te" helper: new_notifications: - few: "%{count} new notifications" - many: "%{count} new notifications" - one: "1 new notifications" - other: "%{count} new notifications" - zero: "no new notifications" + few: "%{count} nowe powiadomienia" + many: "%{count} nowych powiadomieÅ„" + one: "1 nowe powiadomienie" + other: "%{count} nowych powiadomieÅ„" + zero: "brak nowych powiadomieÅ„" index: - and: "and" - and_others: "and %{number} others" - mark_all_as_read: "Mark All as Read" + and: "i" + and_others: "i %{number} innych" + mark_all_as_read: "Oznacz wszystkie jako przeczytane" notifications: "Powiadomienia" - mentioned: "has mentioned you in their" - new_request: "wysÅ‚aÅ‚ Ci zaproszenie do współdzielenia." - post: "post" - private_message: "sent you a message." + mentioned: "wspomniaÅ‚ o tobie we wpisie" + new_request: "chce zostać twoim znajomym." + post: "wpis" + private_message: "wysÅ‚aÅ‚(a) ci wiadomość." request_accepted: "zaakceptowaÅ‚ Twoje zaproszenie." notifier: also_commented: commented: "skomentowaÅ‚ też wpis użytkownika %{post_author}:" sign_in: "Zaloguj siÄ™, aby je obejrzeć." - subject: "%{name} has also commented." + subject: "%{name} skomentowaÅ‚ również wpis użytkownika %{post_author}." comment_on_post: - commented: "has commented on your post!" + commented: "skomentowaÅ‚ twój wpis:" sign_in: "Zaloguj siÄ™, aby go obejrzeć." subject: "Użytkownik %{name} skomentowaÅ‚ Twój wpis." diaspora: "robot e-mailowy diaspory" hello: "Cześć %{name}!" love: "uÅ›ciski," - manage_your_email_settings: "manage your email settings" + manage_your_email_settings: "zarzÄ…dzaj ustawieniami emaila" mentioned: - mentioned: "mentioned you in a post:" - sign_in: "Sign in to view it." - subject: "%{name} has mentioned you on Diaspora*" + mentioned: "wspomniaÅ‚(a) o tobie we wpisie:" + sign_in: "Zaloguj siÄ™, aby uzyskać dostÄ™p." + subject: "%{name} wspomniaÅ‚ o tobie w serwisie Diaspora*" new_request: just_sent_you: "wÅ‚aÅ›nie wysÅ‚aÅ‚(-a) Ci zaproszenie do Diaspory*" sign_in: "zaloguj siÄ™" subject: "nowe zaproszenie do znajomych w Diasporze* od %{from}" try_it_out: "PrzemyÅ›l to, naprawdÄ™ warto spróbować." private_message: - message_subject: "Subject: %{subject}" - private_message: "has sent you a private message:" - sign_in: "Sign in to view it." - subject: "%{name} has sent you a private message yon Diaspora*" + message_subject: "Temat: %{subject}" + private_message: "wysÅ‚aÅ‚ ci wiadomość prywatnÄ…:" + sign_in: "Zarejestruj siÄ™, aby zobaczyć." + subject: "%{name} wysÅ‚aÅ‚ ci prywatnÄ… wiadomość w serwisie Diaspora*" request_accepted: - accepted: "zaakceptowaÅ‚(-a) Twoje zaproszenie. Jest w aspekcie" + accepted: "zaakceptowaÅ‚ Twoje zaproszenie!" sign_in: "Zaloguj siÄ™" subject: "%{name} zaakceptowaÅ‚(-a) twoje zaproszenie do znajomych w Diasporze*" single_admin: @@ -314,24 +314,24 @@ pl: add_contact_small: add_contact_from_tag: "add contact from tag" aspect_list: - edit_membership: "edit aspect membership" - few: "%{count} people" + edit_membership: "edytuj przynależność do aspektów" + few: "%{count} osoby" helper: people_on_pod_are_aware_of: " osoby na podzie wiedzÄ…, że" results_for: " wyniki dla %{params}" index: - couldnt_find_them_send_invite: "Couldn't find them? Send an invite!" - no_one_found: "...and no one was found." - no_results: "Hey! You need to search for something." + couldnt_find_them_send_invite: "Nie znalazÅ‚eÅ› ich? WyÅ›lij im zaproszenie!" + no_one_found: "...i nikogo nie udaÅ‚o siÄ™ znaleźć." + no_results: "Hej! Musisz coÅ› wpisać w pole wyszukiwarki!" results_for: "wyniki wyszukiwania dla" - many: "%{count} people" - one: "1 person" - other: "%{count} people" + many: "%{count} osób" + one: "1 osoba" + other: "%{count} ludzi" person: add_contact: "dodaj kontakt" already_connected: "Już podÅ‚Ä…czono" pending_request: "zaproszenie oczekujÄ…ce" - thats_you: "to przecież Ty!" + thats_you: "To przecież Ty!" profile_sidebar: bio: "notka biograficzna" born: "urodziny" @@ -339,28 +339,28 @@ pl: edit_my_profile: "Edycja mojego profilu" gender: "pÅ‚eć" in_aspects: "w aspektach" - location: "location" + location: "poÅ‚ożenie" remove_contact: "usuwanie kontaktu" remove_from: "Usunąć %{name} z aspektu %{aspect}?" show: - add_some: "add some" + add_some: "dodaj kogoÅ›" does_not_exist: "Osoba nie istnieje!" - edit: "edit" - incoming_request: "Masz nowe zaproszenie od tej osoby." - mention: "Mention" - message: "Message" + edit: "edytuj" + incoming_request: "%{name} chce być twoim znajomym" + mention: "Wspomnij" + message: "Wiadomość" no_posts: "brak wpisów!" - not_connected: "You are not connected with this person" + not_connected: "Ta osoba nie jest twoim znajomym" recent_posts: "Ostatnie wpisy" - recent_public_posts: "Recent Public Posts" + recent_public_posts: "Ostatnie wpisy publiczne" return_to_aspects: "Wróć do strony aspektów" - similar_contacts: "similar contacts" + see_all: "Zobacz wszystkich" start_sharing: "współdziel" to_accept_or_ignore: "by je przyjąć lub zignorować." - you_have_no_tags: "you have no tags!" + you_have_no_tags: "nie masz tagów!" webfinger: fail: "Wybacz, nie można byÅ‚o znaleźć %{handle}." - zero: "no people" + zero: "nikt" photos: create: integrity_error: "Nie udaÅ‚o siÄ™ przesÅ‚ać zdjÄ™cia. Czy @{m,f:jesteÅ› pew}{m:ien|f:na|n:to na pewno}{m,f: że to} byÅ‚ obraz?" @@ -379,8 +379,8 @@ pl: invalid_ext: "Plik {file} ma niewÅ‚aÅ›ciwe rozszerzenie. Akceptowane rozszerzenia: {extensions}" size_error: "Plik {file} jest zbyt duży, maksymalny rozmiar to {sizeLimit}." new_profile_photo: - or_select_one: "or select one from your already existing" - upload: "Upload a new profile photo!" + or_select_one: "lub wybierz jeden z już istniejÄ…cych" + upload: "ZaÅ‚aduj nowe zdjÄ™cie profilowe!" photo: view_all: "pokaż wszystkie zdjÄ™cia należące do: %{name}" show: @@ -388,8 +388,8 @@ pl: delete_photo: "UsuÅ„ zdjÄ™cie" edit: "edytuj" edit_delete_photo: "Edytuj opis zdjÄ™cia / usuÅ„ zdjÄ™cie" - make_profile_photo: "zrób zdjÄ™cie profilowe" - original_post: "Original Post" + make_profile_photo: "ustaw jako zdjÄ™cie profilowe" + original_post: "Pierwotny wpis" permalink: "permalink" update_photo: "Aktualizuj zdjÄ™cie" view: "podglÄ…d" @@ -398,31 +398,31 @@ pl: notice: "PomyÅ›lnie zaktualizowano zdjÄ™cie." post_visibilites: update: - post_hidden: "%{name}'s post has been hidden." + post_hidden: "wpis użytkownika %{name} zostaÅ‚ ukryty." posts: - doesnt_exist: "that post does not exist!" - previous: "previous" + doesnt_exist: "ten wpis nie istnieje!" + previous: "poprzedni" profile: "Profil" profiles: edit: - allow_search: "Allow for people to search for you within Diaspora" - edit_profile: "Edit profile" - first_name: "First name" - last_name: "Last name" - update_profile: "Update Profile" - your_bio: "Your bio" - your_birthday: "Your birthday" - your_gender: "Your gender" - your_location: "Your location" - your_name: "Your name" - your_photo: "Your photo" - your_private_profile: "Your private profile" - your_public_profile: "Your public profile" - your_tags: "You: in 5 #tags" - your_tags_placeholder: "i.e. #diaspora #ironing #kittens #music" + allow_search: "Pozwól ludziom na wyszukiwanie ciÄ™ w serwisie Diaspora" + edit_profile: "Edytuj profil" + first_name: "ImiÄ™" + last_name: "Nazwisko" + update_profile: "Aktualizuj profil" + your_bio: "O tobie" + your_birthday: "Twoje urodziny" + your_gender: "Twoja pÅ‚eć" + your_location: "Twoje poÅ‚ożenie" + your_name: "ImiÄ™" + your_photo: "Twoje zdjÄ™cie" + your_private_profile: "Twój profil prywatny" + your_public_profile: "Twój profil publiczny" + your_tags: "Ty: w 5 #tagach" + your_tags_placeholder: "np. #diaspora #prasowanie #kotki #muzyka" update: - failed: "Failed to update profile" - updated: "Profile updated" + failed: "Nie udaÅ‚o siÄ™ zaktualizować profilu" + updated: "Profil zostaÅ‚ pomyÅ›lnie zaktualizowany" registrations: closed: "Na tym podzie Diaspory rejestracja jest zamkniÄ™ta" create: @@ -451,11 +451,11 @@ pl: success: "JesteÅ›cie teraz znajomymi." helper: new_requests: - few: "%{count} new requests!" - many: "%{count} new requests!" - one: "new request!" - other: "%{count} new requests!" - zero: "no new requests" + few: "%{count} nowe zaproszenia!" + many: "%{count} nowych zaproszeÅ„!" + one: "nowe zaproszenie!" + other: "%{count} nowych zaproszeÅ„!" + zero: "brak nowych zaproszeÅ„" manage_aspect_contacts: existing: "IstniejÄ…ce kontakty" manage_within: "ZarzÄ…dzanie kontaktami w" @@ -471,23 +471,23 @@ pl: error: "wystÄ…piÅ‚ bÅ‚Ä…d podczas Å‚Ä…czenia z tÄ… usÅ‚ugÄ…" finder: friends: - few: "%{count} friends" - many: "%{count} friends" - one: "1 friend" - other: "%{count} friends" - zero: "no friends" - invite_your_friends_from: "Invite your friends from %{service}" - not_connected: "not connected" + few: "%{count} znajomych" + many: "%{count} znajomych" + one: "1 znajomy" + other: "%{count} znajomych" + zero: "żadnych znajomych" + invite_your_friends_from: "ZaproÅ› swoich znajomych z serwisu %{service}" + not_connected: "nie poÅ‚Ä…czono" index: connect_to_facebook: "PoÅ‚Ä…cz z Facebookiem" connect_to_twitter: "PoÅ‚Ä…cz z Twitterem" disconnect: "rozÅ‚Ä…cz" - edit_services: "Edit services" + edit_services: "Edytuj usÅ‚ugi" logged_in_as: "zalogowano jako" really_disconnect: "rozÅ‚Ä…czyć %{service}?" inviter: - click_link_to_accept_invitation: "Click this link to accept your invitation" - join_me_on_diaspora: "Join me on DIASPORA*" + click_link_to_accept_invitation: "Kliknij w ten link, aby przyjąć zaproszenie" + join_me_on_diaspora: "DoÅ‚Ä…cz do mnie w serwisie DIASPORA*" remote_friend: invite: "zaproÅ›" resend: "wyÅ›lij ponownie" @@ -503,16 +503,16 @@ pl: all_contacts: "Wszystkie kontakty" cannot_remove: "Nie można usunąć osoby z jedynego pozostaÅ‚ego aspektu. (JeÅ›li chcesz siÄ™ rozÅ‚Ä…czyć z tÄ… osobÄ… musisz jÄ… usunąć ze znajomych.)" footer: - logged_in_as: "logged in as %{name}" - your_aspects: "your aspects" + logged_in_as: "zalogowany jako %{name}" + your_aspects: "twoje aspekty" invitations: - by_email: "by Email" + by_email: "przez e-mail" dont_have_now: "Nie masz wolnych zaproszeÅ„, ale niebawem się pojawiÄ…!" - from_facebook: "From Facebook" + from_facebook: "z serwisu Facebook" invitations_left: "(pozostaÅ‚o %{count} zaproszeÅ„)" invite_someone: "ZaproÅ› kogoÅ›" - invite_your_friends: "Invite your friends" - invites: "Invites" + invite_your_friends: "Znajdź znajomych" + invites: "Zaproszenia" invites_closed: "WysyÅ‚anie zaproszeÅ„ jest obecnie wyÅ‚Ä…czony na tym podzie Diaspora" notification: new: "Nowy(-a,-e) %{type} od %{from}" @@ -525,23 +525,23 @@ pl: add_photos: "dodaj zdjÄ™cia" all: "wszyscy" all_contacts: "wszyscy znajomi" - click_to_share_with: "Click to share with: " + click_to_share_with: "Kliknij, aby podzielić siÄ™ z:" make_public: "upublicznij" post_a_message_to: "WyÅ›lij wiadomość do %{aspect}" posting: "WysyÅ‚anie…" public: "Public" - publishing_to: "publishing to: " + publishing_to: "publikuj na:" share: "Podziel siÄ™" share_with: "Podziel siÄ™ z aspektem %{aspect}" whats_on_your_mind: "co Ci chodzi po gÅ‚owie?" reshare: reshare: "Podziel siÄ™ ponownie" stream_element: - dislike: "I dislike this" - like: "I like this" + dislike: "Nie lubiÄ™ tego" + like: "LubiÄ™ to" status_messages: create: - success: "Successfully mentioned: %{names}" + success: "PomyÅ›lnie wspomniano o: %{names}" destroy: failure: "BÅ‚Ä…d podczas usuwania wpisu" helper: @@ -550,39 +550,39 @@ pl: mentioning: "Mentioning: %{person}" show: destroy: "UsuÅ„" - not_found: "Sorry, we couldn't find that post." - permalink: "permalink" + not_found: "Niestety, nie udaÅ‚o siÄ™ nam znaleźć tego wpisu." + permalink: "odnoÅ›nik bezpoÅ›redni" stream_helper: hide_comments: "ukryj komentarze" show_comments: "pokaż komentarze" tags: show: - nobody_talking: "Nobody is talking about %{tag} yet." - people_tagged_with: "People tagged with %{tag}" - posts_tagged_with: "Posts tagged with #%{tag}" + nobody_talking: "Nikt jeszcze nie rozmawia o %{tag}." + people_tagged_with: "Osoby opisane poprzez %{tag}" + posts_tagged_with: "Wpisy oznaczone jako #%{tag}" the_world: "Å›wiat" - undo: "Undo?" + undo: "Cofnąć?" username: "Nazwa użytkownika" users: destroy: "Konto zostaÅ‚o pomyÅ›lnie zamkniÄ™te." edit: - also_commented: "...someone also comments on your contact's post?" - change: "Change" + also_commented: "...ktoÅ› także skomentuje wpis jednego z twoich kontaktów?" + change: "ZmieÅ„" change_language: "ZmieÅ„ jÄ™zyk" change_password: "Zmiana hasÅ‚a" close_account: "Zamknij konto" - comment_on_post: "...someone comments on your post?" - current_password: "Current password" + comment_on_post: "...ktoÅ› skomentuje twój wpis?" + current_password: "Obecne hasÅ‚o" download_photos: "pobierz moje zdjÄ™cia" download_xml: "pobierz mój xml" - edit_account: "Edit account" + edit_account: "Edytuj konto" export_data: "Eksportowanie danych" - mentioned: "...you are mentioned in a post?" + mentioned: "...zostaÅ‚eÅ› wspomniany(a) we wpisie?" new_password: "Nowe hasÅ‚o" - private_message: "...you receive a private message?" - receive_email_notifications: "Receive email notificaions?" - request_acceptence: "...your share request is accepted?" - request_received: "...you receive a new share request?" + private_message: "...otrzymasz prywatnÄ… wiadomość?" + receive_email_notifications: "Otrzymywanie powiadomieÅ„ emailowych kiedy..." + request_acceptence: "...twoje zaproszenie do współdzielenia zostanie zaakceptowane?" + request_received: "...otrzymasz nowe zaproszenie do współdzielenia?" your_email: "Twój e-mail" your_handle: "Twój identyfikator w Diasporze" getting_started: @@ -595,16 +595,16 @@ pl: signup_steps: "DokoÅ„cz rejestracjÄ™ w trzech krokach:" skip: "pomiÅ„ wprowadzenie" step_2: - find_your_friends_on_diaspora: "Would you like to find your Facebook friends on Diaspora?" - skip: "Skip" + find_your_friends_on_diaspora: "Czy chciaÅ‚byÅ› znaleźć swoich znajomych z serwisu Facebook w Diasporze?" + skip: "PomiÅ„" step_3: - finish: "Finish" - people_already_on_diaspora: "People already on Diaspora" + finish: "ZakoÅ„cz" + people_already_on_diaspora: "Już używajÄ…cy Diaspory" welcome: "Witaj w Diasporze!" public: does_not_exist: "Użytkownik %{username} nie istnieje!" update: - email_notifications_changed: "Language Change Failed" + email_notifications_changed: "Zmieniono ustawienia powiadomieÅ„ email" language_changed: "Zmieniono jÄ™zyk" language_not_changed: "Nie udaÅ‚o siÄ™ zmienić jÄ™zyka" password_changed: "Zmieniono hasÅ‚o" diff --git a/config/locales/diaspora/pt-BR.yml b/config/locales/diaspora/pt-BR.yml index 239ed2b085c6aee2a863f80c313c4fef0f294951..51e3fc255fc3d7d7590a239b2b9d638258f659be 100644 --- a/config/locales/diaspora/pt-BR.yml +++ b/config/locales/diaspora/pt-BR.yml @@ -354,7 +354,7 @@ pt-BR: recent_posts: "Postagens recentes" recent_public_posts: "Postagens públicas recentes" return_to_aspects: "Retornar à sua página de aspectos" - similar_contacts: "Contatos similares" + see_all: "See all" start_sharing: "Comece a compartilhar" to_accept_or_ignore: "Aceitar ou ignorar." you_have_no_tags: "you have no tags!" diff --git a/config/locales/diaspora/pt-PT.yml b/config/locales/diaspora/pt-PT.yml index 52ce28fec0b657140519d2e0496a41ce1f59bda0..b696ca9453c74c6fbc3809b76e92be89ea5247f2 100644 --- a/config/locales/diaspora/pt-PT.yml +++ b/config/locales/diaspora/pt-PT.yml @@ -354,7 +354,7 @@ pt-PT: recent_posts: "Recent Posts" recent_public_posts: "Recent Public Posts" return_to_aspects: "Voltar à página dos grupos" - similar_contacts: "contactos similares" + see_all: "See all" start_sharing: "começar a partilhar" to_accept_or_ignore: "para o aceitares ou ignorares" you_have_no_tags: "you have no tags!" diff --git a/config/locales/diaspora/ro.yml b/config/locales/diaspora/ro.yml index 9ca1c78b981edc0b7d123ee25633578c11d93335..fdd285ca4da8bd6acd7600374204297b16440d4c 100644 --- a/config/locales/diaspora/ro.yml +++ b/config/locales/diaspora/ro.yml @@ -354,7 +354,7 @@ ro: recent_posts: "Recent Posts" recent_public_posts: "Recent Public Posts" return_to_aspects: "Return to your aspects page" - similar_contacts: "similar contacts" + see_all: "See all" start_sharing: "start sharing" to_accept_or_ignore: "to accept or ignore it." you_have_no_tags: "you have no tags!" diff --git a/config/locales/diaspora/ru.yml b/config/locales/diaspora/ru.yml index 8fbb0c6db1828612213ea918d3e0e7948da536f3..a25f28e103b22f63f483e96893106540b150680d 100644 --- a/config/locales/diaspora/ru.yml +++ b/config/locales/diaspora/ru.yml @@ -266,7 +266,7 @@ ru: and_others: "и %{number} других" mark_all_as_read: "Отметить вÑе как прочитанные" notifications: "УведомлениÑ" - mentioned: "упомÑнул Ð²Ð°Ñ Ð² Ñвоих" + mentioned: "упомÑнул Ð²Ð°Ñ Ð² Ñвоих ÑообщениÑÑ…" new_request: "предлагает поделитьÑÑ Ñ Ð²Ð°Ð¼Ð¸." post: "Ñообщение" private_message: "поÑлал Вам Ñообщение." @@ -354,7 +354,7 @@ ru: recent_posts: "ПоÑледние ÑообщениÑ" recent_public_posts: "ПоÑледние Публичные ПоÑÑ‚Ñ‹" return_to_aspects: "ВернутьÑÑ Ð½Ð° Ñтраницу аÑпектов" - similar_contacts: "аналогичные контакты" + see_all: "Показать вÑе" start_sharing: "поделитьÑÑ" to_accept_or_ignore: "принÑÑ‚ÑŒ или игнорировать." you_have_no_tags: "у Ð²Ð°Ñ Ð½ÐµÑ‚ меток!" @@ -520,7 +520,7 @@ ru: logged_in: "вошли в %{service}" manage: "управление подключенными ÑервиÑами" outside: "Публичные ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð´Ð¾Ñтупны Ð´Ð»Ñ Ñ‡Ñ‚ÐµÐ½Ð¸Ñ Ð²Ñем, даже за пределами вашей ДиаÑпоры." - title: "Ð’Ñ‹ ÑобираетеÑÑŒ отправить публичное Ñообщение!" + title: "ÐаÑтройка подключенных уÑлуг" publisher: add_photos: "добавить фотографии" all: "вÑе" diff --git a/config/locales/diaspora/sk.yml b/config/locales/diaspora/sk.yml index 7b411b10fbf3acdd85c78f1cda63028bbfcca2c2..d27246bb6a97ef6668940ee6fde1ca301b1a69cb 100644 --- a/config/locales/diaspora/sk.yml +++ b/config/locales/diaspora/sk.yml @@ -354,7 +354,7 @@ sk: recent_posts: "Posledné prÃspevky" recent_public_posts: "Nedávne verejné prÃspevky" return_to_aspects: "VrátiÅ¥ sa na stránku aspektov" - similar_contacts: "podobné kontakty" + see_all: "See all" start_sharing: "zaÄaÅ¥ zdieľaÅ¥" to_accept_or_ignore: "akceptovaÅ¥, alebo ignorovaÅ¥." you_have_no_tags: "you have no tags!" diff --git a/config/locales/diaspora/sl.yml b/config/locales/diaspora/sl.yml index 0e28df6d206cd3c74768629745acc39fb7ef4e95..7cc62da0826cbb429d0c85833ea3191ecf2d373e 100644 --- a/config/locales/diaspora/sl.yml +++ b/config/locales/diaspora/sl.yml @@ -33,7 +33,7 @@ sl: username: taken: "is already taken." ago: "%{time} nazaj" - all_aspects: "All aspects" + all_aspects: "Vse skupine" application: helper: unknown_person: "neznana oseba" @@ -55,8 +55,8 @@ sl: activity: "activity" post_time: "post time" sort_by: "sort by:" - contacts_not_visible: "Contacts in this aspect will not be able to see each other." - contacts_visible: "Contacts in this aspect will be able to see each other." + contacts_not_visible: "Stiki v tej skupini drug drugega ne bodo videli." + contacts_visible: "Stiki v tej skupini drug drugega lahko vidijo." create: failure: "Ustvarjanje skupine ni uspelo." success: "Skupina %{name} je ustvarjena" @@ -122,7 +122,7 @@ sl: few: "%{count} comments" many: "%{count} comments" new_comment: - comment: "komentar" + comment: "komentiraj" commenting: "komentiraj..." one: "1 comment" other: "%{count} comments" @@ -224,7 +224,7 @@ sl: public_feed: "Public Diaspora Feed for %{name}" toggle: "toggle mobile site" whats_new: "kaj je novega?" - your_aspects: "your aspects" + your_aspects: "vaÅ¡e skupine" header: blog: "blog" code: "koda" @@ -246,11 +246,11 @@ sl: one: "1 person liked this" other: "%{count} people liked this" zero: "no people liked this" - more: "More" + more: "VeÄ" next: "naslednja" no_results: "No Results Found" notifications: - also_commented: "komentirano tudi na vaÅ¡ih stikih" + also_commented: "komentirano tudi na %{post_author}" also_commented_deleted: "commented on a deleted post" comment_on_post: "komentar na vaÅ¡" deleted: "izbrisano" @@ -264,9 +264,9 @@ sl: index: and: "and" and_others: "and %{number} others" - mark_all_as_read: "Mark All as Read" + mark_all_as_read: "OznaÄi vse kot prebrano" notifications: "SporoÄila" - mentioned: "has mentioned you in their" + mentioned: "bili ste omenjeni v objavi" new_request: "nekdo želi deliti z vami." post: "prispevek" private_message: "sent you a message." @@ -275,9 +275,9 @@ sl: also_commented: commented: "prav tako komentirano na objavo osebe %{post_author}:" sign_in: "Za ogled se prijavite." - subject: "oseba %{name} je prav tako komentirala." + subject: "oseba %{name} je prav tako komentirala %{post_author}." comment_on_post: - commented: "komentar na vaÅ¡o objavo!" + commented: "oseba je komentirala na vaÅ¡o objavo:" sign_in: "Za ogled se prijavite." subject: "Oseba %{name} je komentirala vaÅ¡o objavo." diaspora: "diaspora email robot" @@ -290,17 +290,17 @@ sl: subject: "%{name} has mentioned you on Diaspora*" new_request: just_sent_you: "poslana vam je bila proÅ¡nja za stik v Diaspori*" - sign_in: "prijavite se tukaj" + sign_in: "Prijavite se tukaj" subject: "nova Diaspora* proÅ¡nja za stik od %{from}" try_it_out: "Preverite in se prepriÄajte." private_message: message_subject: "Subject: %{subject}" private_message: "has sent you a private message:" sign_in: "Sign in to view it." - subject: "%{name} has sent you a private message yon Diaspora*" + subject: "oseba %{name} vam je poslala privatno sporoÄilo v Diaspori*" request_accepted: accepted: "vaÅ¡e povabilo je bilo sprejeto!" - sign_in: "Sign in here" + sign_in: "Tukaj se registrirajte" subject: "Oseba %{name} je sprejela vaÅ¡e povabilo za stik v Diaspori*" single_admin: admin: "VaÅ¡ administrator Diaspore" @@ -330,8 +330,8 @@ sl: person: add_contact: "dodaj stik" already_connected: "Ste že povezani" - pending_request: "ÄakajoÄe proÅ¡nje" - thats_you: "to ste vi!" + pending_request: "ÄŒakajoÄe zahteve" + thats_you: "To ste vi!" profile_sidebar: bio: "življenjepis" born: "datum rojstva" @@ -346,15 +346,15 @@ sl: add_some: "add some" does_not_exist: "Oseba ne obstaja!" edit: "edit" - incoming_request: "Od te osebe ste prejeli novo proÅ¡njo." + incoming_request: "%{name} želi deliti z vami." mention: "Mention" message: "Message" no_posts: "ni prispevkov na ogled!" - not_connected: "Niste povezani s/z %{name}" + not_connected: "S to osebo ne delite" recent_posts: "Zadnje objave" recent_public_posts: "Zadnje javne objave" return_to_aspects: "Vrnite se na vaÅ¡o stran s skupinami" - similar_contacts: "podobni stiki" + see_all: "See all" start_sharing: "zaÄni deliti" to_accept_or_ignore: "sprejmite ali zavrnite." you_have_no_tags: "you have no tags!" @@ -471,13 +471,13 @@ sl: error: "pri povezovanju s servisom je priÅ¡lo do napake" finder: friends: - few: "%{count} friends" + few: "%{count} prijateljev" many: "%{count} friends" - one: "1 friend" - other: "%{count} friends" - zero: "no friends" - invite_your_friends_from: "Invite your friends from %{service}" - not_connected: "not connected" + one: "1 prijatelj" + other: "%{count} prijateljev" + zero: "brez prijateljev" + invite_your_friends_from: "Povabi prijatelje iz %{service}" + not_connected: "ni povezano" index: connect_to_facebook: "Poveži se s facebook" connect_to_twitter: "Poveži se s twitter" @@ -486,11 +486,11 @@ sl: logged_in_as: "prijavljeni ste kot" really_disconnect: "prekinem povezavo s servisom %{service}?" inviter: - click_link_to_accept_invitation: "Click this link to accept your invitation" - join_me_on_diaspora: "Join me on DIASPORA*" + click_link_to_accept_invitation: "Kliknite na povezavo za potrditev vaÅ¡ega povabila" + join_me_on_diaspora: "Pridruži se mi na DIASPORI*" remote_friend: - invite: "invite" - resend: "resend" + invite: "povabi" + resend: "poÅ¡lji ponovno" settings: "Nastavitve" shared: add_contact: @@ -506,12 +506,12 @@ sl: logged_in_as: "logged in as %{name}" your_aspects: "your aspects" invitations: - by_email: "by Email" + by_email: "po e-poÅ¡ti" dont_have_now: "Trenutno nimate povabil, vendar jih lahko v kratkem priÄakujete!" - from_facebook: "From Facebook" + from_facebook: "iz Facebook-a" invitations_left: "(Å¡e %{count})" invite_someone: "Povabi osebo" - invite_your_friends: "Invite your friends" + invite_your_friends: "Povabi prijatelje" invites: "Povabila" invites_closed: "Za ta 'Diaspora pod' so povabila trenutno onemogoÄena." notification: @@ -531,11 +531,11 @@ sl: posting: "Objavljam..." public: "Public" publishing_to: "publishing to: " - share: "Deli" + share: "Objavi" share_with: "deli s/z" - whats_on_your_mind: "what's on your mind?" + whats_on_your_mind: "bi kaj želeli sporoÄiti?" reshare: - reshare: "Deli znova" + reshare: "Objavi Å¡e v" stream_element: dislike: "I dislike this" like: "I like this" @@ -572,7 +572,7 @@ sl: change_password: "Spremeni geslo" close_account: "Zapri uporabniÅ¡ki raÄun" comment_on_post: "...someone comments on your post?" - current_password: "Current password" + current_password: "Trenutno geslo" download_photos: "prenesi slike" download_xml: "prenesi v xml" edit_account: "Uredi uporabniÅ¡ki raÄun" @@ -580,7 +580,7 @@ sl: mentioned: "...you are mentioned in a post?" new_password: "Novo geslo" private_message: "...you receive a private message?" - receive_email_notifications: "Želite prejemati obvestila po e-poÅ¡ti?" + receive_email_notifications: "Želite prejemati obvestila po e-poÅ¡ti, ko..." request_acceptence: "...your share request is accepted?" request_received: "...you receive a new share request?" your_email: "VaÅ¡ e-naslov" diff --git a/config/locales/diaspora/sv.yml b/config/locales/diaspora/sv.yml index 8d62154d4c4e81a0463ce1d44532a5febe582d00..f650ef3cd0d26458ec44e8d15481cacc73d23d3f 100644 --- a/config/locales/diaspora/sv.yml +++ b/config/locales/diaspora/sv.yml @@ -354,7 +354,7 @@ sv: recent_posts: "Postat nyligen" recent_public_posts: "Senaste publika inlägg" return_to_aspects: "Ã…tergÃ¥ till översikten" - similar_contacts: "liknande kontakter" + see_all: "See all" start_sharing: "börja dela" to_accept_or_ignore: "for att acceptera eller ignorera." you_have_no_tags: "du har inga taggar!" diff --git a/config/locales/diaspora/tr.yml b/config/locales/diaspora/tr.yml index 89223699cc91f63d7e7c39501f277bac1ad27d92..effa57213fb4c0cb0ef50ed7bcb3308258b77999 100644 --- a/config/locales/diaspora/tr.yml +++ b/config/locales/diaspora/tr.yml @@ -354,7 +354,7 @@ tr: recent_posts: "Recent Posts" recent_public_posts: "Recent Public Posts" return_to_aspects: "Return to your aspects page" - similar_contacts: "similar contacts" + see_all: "See all" start_sharing: "start sharing" to_accept_or_ignore: "kabul et veya yoksay." you_have_no_tags: "you have no tags!" diff --git a/config/locales/diaspora/zh-CN.yml b/config/locales/diaspora/zh-CN.yml new file mode 100644 index 0000000000000000000000000000000000000000..d8d8fff5358f8617bc652ae0248bab392d5076f3 --- /dev/null +++ b/config/locales/diaspora/zh-CN.yml @@ -0,0 +1,617 @@ +# Copyright (c) 2010, Diaspora Inc. This file is +# licensed under the Affero General Public License version 3 or later. See +# the COPYRIGHT file. + + +zh-CN: + _comments: "评论" + _home: "首页" + _photos: "照片" + _services: "æœåŠ¡" + account: "å¸å·" + activerecord: + errors: + models: + contact: + attributes: + person_id: + taken: "在好å‹ä¸å¿…须是唯一的。" + person: + attributes: + diaspora_handle: + taken: "已被注册。" + request: + attributes: + from_id: + taken: "与已å˜åœ¨çš„请求é‡å¤ã€‚" + user: + attributes: + email: + taken: "已被注册。" + person: + invalid: "ä¸åˆæ³•ã€‚" + username: + taken: "已被注册。" + ago: "%{time}å‰" + all_aspects: "所有情景" + application: + helper: + unknown_person: "未知用户" + video_title: + unknown: "æœªçŸ¥å½±ç‰‡æ ‡é¢˜" + are_you_sure: "ä½ ç¡®å®šå—?" + aspect_memberships: + destroy: + failure: "从情景ä¸ç§»é™¤å¥½å‹å¤±è´¥" + no_membership: "在情景ä¸æ‰¾ä¸åˆ°é€‰æ‹©çš„好å‹" + success: "从情景ä¸ç§»é™¤å¥½å‹æˆåŠŸ" + aspects: + add_to_aspect: + failure: "将好å‹æ·»åŠ 到情景失败。" + success: "将好å‹æ·»åŠ 到情景æˆåŠŸã€‚" + aspect_contacts: + done_editing: "编辑完æˆ" + aspect_stream: + activity: "活跃程度" + post_time: "å‘布时间" + sort_by: "排åºæ–¹å¼ï¼š" + contacts_not_visible: "æ¤æƒ…景ä¸çš„好å‹ç›¸äº’ä¸å¯è§ã€‚" + contacts_visible: "æ¤æƒ…景ä¸çš„好å‹ç›¸äº’å¯è§ã€‚" + create: + failure: "æ·»åŠ æƒ…æ™¯å¤±è´¥ã€‚" + success: "æ·»åŠ æ–°æƒ…æ™¯ %{name} æˆåŠŸ" + destroy: + failure: "æ— æ³•åˆ é™¤ %{name} ,它ä¸æ˜¯ç©ºçš„。" + success: "åˆ é™¤ %{name} æˆåŠŸã€‚" + edit: + add_existing: "æ·»åŠ å¥½å‹" + aspect_list_is_not_visible: "情景ä¸çš„好å‹ä¸èƒ½çœ‹è§æœ¬æƒ…景的好å‹åˆ—表" + aspect_list_is_visible: "情景ä¸çš„好å‹èƒ½å¤Ÿçœ‹è§æœ¬æƒ…景的好å‹åˆ—表" + confirm_remove_aspect: "ä½ ç¡®å®šè¦åˆ 除这个情景?" + done: "完æˆ" + make_aspect_list_visible: "是å¦è®©å…¶ä»–人å¯ä»¥çœ‹è§æœ¬æƒ…景的好å‹åˆ—表?" + remove_aspect: "åˆ é™¤è¿™ä¸ªæƒ…æ™¯" + rename: "é‡å‘½å" + update: "æ›´æ–°" + updating: "æ›´æ–°ä¸" + few: "%{count}个情景" + helper: + are_you_sure: "您确定è¦åˆ 除这个情景?" + aspect_not_empty: "æ¤æƒ…景ä¸æ˜¯ç©ºçš„" + remove: "åˆ é™¤" + index: + handle_explanation: "这是您的 diaspora å¸å·ï¼Œ å°±åƒæ˜¯é‚®ç®±ä¸€æ ·ï¼Œä½ å¯ä»¥æŠŠå®ƒæ供给想好å‹æ‚¨çš„人。" + no_contacts: "没有任何好å‹" + post_a_message: "å‘布站内信>>" + manage: + add_a_new_aspect: "æ·»åŠ æƒ…æ™¯" + add_a_new_contact: "æ·»åŠ æ–°çš„å¥½å‹" + drag_to_add: "æ‹–åŠ¨ä»¥æ·»åŠ å¥½å‹" + manage_aspects: "情景管ç†" + no_requests: "没有新请求" + requests: "请求" + many: "%{count}个情景" + move_contact: + error: "好å‹ç§»åŠ¨é”™è¯¯ï¼š%{inspect}" + failure: "%{inspect}没有æˆåŠŸ" + success: "好å‹æˆåŠŸæ·»åŠ 到新情景" + new_aspect: + create: "æ·»åŠ " + name: "å称" + no_posts_message: + start_talking: "还没人å‘å¸ƒè¿‡å†…å®¹ã€‚ä½ å‘布第一æ¡å§ï¼" + one: "1个情景" + other: "%{count}个情景" + seed: + family: "家人" + work: "åŒäº‹" + show: + edit_aspect: "编辑情景" + update: + failure: "情景 %{name} å称太长了,ä¸èƒ½ä¿å˜" + success: "情景 %{name} 编辑æˆåŠŸã€‚" + zero: "没有情景" + back: "åŽé€€" + bookmarklet: + explanation: "%{link} 收è—这个链接,å³å¯éšæ—¶å‘布新内容" + explanation_link_text: "å‘布到Diaspora" + post_something: "å‘布些新内容到Diaspora" + post_success: "å‘布完æˆï¼å…³é—ä¸ï¼" + cancel: "å–消" + comments: + few: "%{count}æ¡å›žå¤" + many: "%{count}æ¡å›žå¤" + new_comment: + comment: "å‘布回å¤" + commenting: "回å¤å‘布ä¸â€¦â€¦" + one: "1æ¡å›žå¤" + other: "%{count}æ¡å›žåº”" + zero: "没有回å¤" + contacts: + create: + failure: "æ·»åŠ å¥½å‹å¤±è´¥" + destroy: + failure: "与 %{name} å–消好å‹å…³ç³»å¤±è´¥" + success: "与 %{name} å–消好å‹å…³ç³»æˆåŠŸ" + few: "%{count}个好å‹" + many: "%{count}个好å‹" + one: "1个好å‹" + other: "%{count}个好å‹" + share_with_pane: + accepts: "当 %{name} åŒæ„请求åŽï¼Œä½ 们就开始看到彼æ¤åœ¨Diaspora上å‘布的内容" + add_new_aspect: "æ·»åŠ åˆ°æ–°çš„æƒ…æ™¯" + share_with: "与 %{name} 分享" + zero: "没有好å‹" + conversations: + create: + sent: "消æ¯å‘é€æˆåŠŸ" + destroy: + success: "消æ¯ç§»é™¤æˆåŠŸ" + helper: + new_messages: + few: "%{count}æ¡æ–°æ¶ˆæ¯" + many: "%{count}æ¡æ–°æ¶ˆæ¯" + one: "1æ¡æ–°æ¶ˆæ¯" + other: "%{count}æ¡æ–°æ¶ˆæ¯" + zero: "没有新消æ¯" + index: + create_a_new_message: "å‘é€ä¸€æ¡æ–°æ¶ˆæ¯" + inbox: "收件箱" + message_inbox: "消æ¯æ”¶ä»¶ç®±" + new_message: "新消æ¯" + no_conversation_selected: "未选择任何对è¯" + no_messages: "没消æ¯" + new: + send: "å‘é€" + subject: "主题" + to: "收件人" + show: + delete: "åˆ é™¤å¹¶ä¸æ¢å¯¹è¯" + reply: "回å¤" + date: + formats: + birthday: "%m-%d" + birthday_with_year: "%Y-%m-%d" + fullmonth_day: "%B%dæ—¥" + delete: "åˆ é™¤" + email: "电å邮件" + error_messages: + helper: + correct_the_following_errors_and_try_again: "ä¿®æ£ä»¥ä¸‹é”™è¯¯åŽé‡è¯•ã€‚" + invalid_fields: "æ— æ•ˆæ ç›®" + fill_me_out: "填写我" + hide: "éšè—" + home: + show: + already_account: "å·²ç»æœ‰å¸å·äº†å—?" + choice: "选择" + choice_explanation: "Diaspora è®©ä½ å°†æ‚¨çš„å…³ç³»ä»¥\"情景\"分类。情景是Diaspora首创,用æ¥ç¡®ä¿æ‚¨çš„照片,ç»åŽ†å’Œç¬‘è¯ï¼Œåªä¸Žæ‚¨æ‰€å¸Œæœ›çš„人分享。" + learn_about_host: "å¦ä¹ 如何架设您自己的DiasporaæœåŠ¡å™¨ã€‚" + login_here: "从这里登录" + ownership: "所有æƒ" + ownership_explanation: "ä½ æ‹¥æœ‰æ‚¨çš„å›¾ç‰‡ï¼Œä¸”ä¸å› 为分享而失去该æƒåˆ©ã€‚在Diasporaï¼Œæ‰€æœ‰ä½ åˆ†äº«çš„å†…å®¹ï¼Œä½ éƒ½æŒæœ‰æ‰€æœ‰æƒï¼Œä½ å¯ä»¥æŽ§åˆ¶å®ƒä»¬çš„å‘布。" + share_what_you_want: "分享您想分享的内容,给您想分享给的人。" + simplicity: "简å•" + simplicity_explanation: "Diaspora让分享å˜å¾—干净而简å•ï¼Œå¯¹éšç§è®¾ç½®ä¹Ÿæ˜¯è¿™æ ·ã€‚以éšç§ä¸ºå‡ºå‘点,Diaspora è®©ä½ ä¸å¿…åƒè¾›ä¸‡è‹¦çš„调整设置,就能ä¿æŠ¤æ‚¨çš„个人信æ¯å®‰å…¨ã€‚" + tagline_first_half: "分享您想分享的内容," + tagline_second_half: "给您想分享给的人。" + invitations: + check_token: + not_found: "找ä¸åˆ°è¯¥é‚€è¯·ç " + create: + already_contacts: "ä½ å·²ç»å°†ä»–åŠ ä¸ºå¥½å‹äº†" + already_sent: "ä½ é‚€è¯·è¿‡è¿™ä¸ªäººäº†ã€‚" + no_more: "ä½ æ²¡æœ‰é‚€è¯·å‡½äº†ã€‚" + rejected: "下列电å信箱有问题: " + sent: "邀请函已ç»å¯„ç»™: " + edit: + sign_up: "注册" + new: + already_invited: "已邀请过" + aspect: "情景" + comma_seperated_plz: "ä½ å¯ä»¥è¾“入多个邮箱,输入多个时以逗å·åˆ†éš”。" + if_they_accept_info: "如果他们接å—ï¼Œå°±ä¼šè‡ªåŠ¨è¢«åŠ å…¥åˆ°æ‚¨æ‰€é‚€è¯·çš„æƒ…æ™¯ä¸ã€‚" + invite_someone_to_join: "邀请好å‹æ¥åŠ 入到Diasporaï¼" + personal_message: "个人信æ¯" + resend: "é‡å¯„" + send_an_invitation: "å‘é€é‚€è¯·å‡½" + send_invitation: "å‘é€é‚€è¯·å‡½" + to: "收件人" + layouts: + application: + have_a_problem: "é‡åˆ°é—®é¢˜ï¼Ÿåœ¨è¿™é‡Œå¯ä»¥æ‰¾åˆ°è§£å†³æ–¹æ¡ˆ" + powered_by: "Powered by DIASPORA*" + public_feed: "%{name} çš„ Diaspora RSS Feed" + toggle: "切æ¢ä¸ºæ‰‹æœºç½‘页" + whats_new: "有什么新内容?" + your_aspects: "您的情景" + header: + blog: "åšå®¢" + code: "æºç " + login: "登录" + logout: "登出" + profile: "个人档案" + settings: "设置" + likes: + likes: + people_dislike_this: + few: "有%{count}人觉得ä¸å¥½" + many: "有%{count}人觉得ä¸å¥½" + one: "有1个人觉得ä¸å¥½" + other: "有%{count}个人觉得ä¸å¥½" + zero: "没有人觉得ä¸å¥½" + people_like_this: + few: "有%{count}个人觉得好" + many: "有%{count}个人觉得好" + one: "有1个人觉得好" + other: "有%{count}个人觉得好" + zero: "没有人觉得好" + more: "更多" + next: "下一æ¥" + no_results: "没有找到符åˆæ¡ä»¶çš„内容" + notifications: + also_commented: "也在 %{post_author} 处å‘布了评论" + also_commented_deleted: "å¯¹å·²åˆ é™¤çš„å†…å®¹å‘布了评论" + comment_on_post: "å‘布了评论,在您的" + deleted: "åˆ é™¤æˆåŠŸ" + helper: + new_notifications: + few: "%{count}个新消æ¯" + many: "%{count}个新消æ¯" + one: "1个新消æ¯" + other: "%{count}个新消æ¯" + zero: "没有新消æ¯" + index: + and: "å’Œ" + and_others: "和其他%{number}个人" + mark_all_as_read: "å…¨éƒ¨æ ‡ç¤ºä¸ºå·²è¯»" + notifications: "消æ¯" + mentioned: "在他å‘布的内容ä¸æåˆ°äº†ä½ " + new_request: "想è¦ä¸Žæ‚¨åˆ†äº«ã€‚" + post: "日志" + private_message: "写了一则消æ¯ç»™æ‚¨ã€‚" + request_accepted: "å·²åŒæ„和您分享。" + notifier: + also_commented: + commented: "也对 %{post_author} çš„è´´æ–‡å‘布了æ„è§:" + sign_in: "登录åŽå¯ä»¥æŸ¥çœ‹ã€‚" + subject: "%{name} 也评论了 %{post_author} å‘布的内容。" + comment_on_post: + commented: "对评论了您å‘布的内容:" + sign_in: "登录åŽå¯ä»¥æŸ¥çœ‹ã€‚" + subject: "%{name} 评论了您å‘布的内容。" + diaspora: "diaspora邮件机器人" + hello: "您好 %{name}ï¼" + love: "衷心ç¥ç¦ï¼Œ" + manage_your_email_settings: "管ç†é‚®ä»¶è®¾ç½®" + mentioned: + mentioned: "在 Diaspora* å‘布的内容ä¸æ到了您:" + sign_in: "登录åŽå¯ä»¥æŸ¥çœ‹ã€‚" + subject: "%{name} 在 Diaspora* 上å‘布的内容ä¸æ到了您" + new_request: + just_sent_you: "刚刚在 Diaspora* 上与å‘您å‘é€äº†å¥½å‹è¯·æ±‚" + sign_in: "ç”±æ¤ç™»å½•" + subject: "%{from} 想与您在 Diaspora* 上建立好å‹è¯·æ±‚" + try_it_out: "您赶紧æ¥æŸ¥çœ‹ä¸€ä¸‹å§ã€‚" + private_message: + message_subject: "主题: %{subject}" + private_message: "å·²å‘é€äº†ç§äººä¿¡æ¯ç»™æ‚¨ï¼š" + sign_in: "登录进æ¥çœ‹çœ‹ã€‚" + subject: "%{name} 在 Diaspora* 给您å‘é€äº†ç§äººä¿¡æ¯" + request_accepted: + accepted: "已接å—了您的好å‹è¯·æ±‚ï¼" + sign_in: "ç”±æ¤ç™»å½•" + subject: "%{name} 已在 Diaspora* 接收了您的好å‹è¯·æ±‚" + single_admin: + admin: "为您æœåŠ¡çš„ Diaspora 管ç†å‘˜" + subject: "关于您 Diaspora å¸å·çš„ä¿¡æ¯:" + thanks: "谢谢," + ok: "确定" + or: "或" + password: "密ç " + password_confirmation: "密ç 确认" + people: + add_contact_small: + add_contact_from_tag: "ä»Žæ ‡ç¾æ·»åŠ 好å‹" + aspect_list: + edit_membership: "编辑所属情景" + few: "%{count}个好å‹" + helper: + people_on_pod_are_aware_of: " Pod上已知的人" + results_for: " %{params}çš„æœç´¢ç»“æžœ" + index: + couldnt_find_them_send_invite: "找ä¸åˆ°ä»–ä»¬ï¼Ÿé‚€è¯·ä»–ä»¬åŠ å…¥Diasporaå§ï¼" + no_one_found: "……找ä¸åˆ°ä»»ä½•å†…容。" + no_results: "å˜¿ï¼ æœç´¢å¿…é¡»è¦æœ‰ç›®æ ‡å‘€ã€‚" + results_for: "æœç´¢ç»“果:" + many: "%{count}个好å‹" + one: "1个好å‹" + other: "%{count}个好å‹" + person: + add_contact: "åŠ ä¸ºå¥½å‹" + already_connected: "å·²åŠ ä¸ºå¥½å‹" + pending_request: "请求ç‰å€™ä¸" + thats_you: "è¿™æ˜¯ä½ è‡ªå·±ï¼" + profile_sidebar: + bio: "自我介ç»" + born: "生日" + cannot_remove: "æ— æ³•å°†å¥½å‹ä»Žä»–所在的最åŽä¸€ä¸ªæƒ…景ä¸ç§»é™¤ã€‚(å¦‚æžœä½ æƒ³ä¸Žè¿™ä¸ªäººæ–ç»è¿žæŽ¥ï¼Œä½ å¯ä»¥è§£é™¤ä¸Žä»–的好å‹å…³ç³»ã€‚)" + edit_my_profile: "编辑我的个人档案" + gender: "性别" + in_aspects: "所属情景" + location: "ä½ç½®" + remove_contact: "解除好å‹å…³ç³»" + remove_from: "è¦ä»Ž %{aspect} åˆ é™¤ %{name} å—?" + show: + add_some: "æ·»åŠ ä¸€äº›" + does_not_exist: "好å‹ä¸å˜åœ¨ï¼" + edit: "编辑" + incoming_request: "%{name} 希望能与您分享" + mention: "æåŠ" + message: "消æ¯" + no_posts: "没有内容å¯ä»¥æ˜¾ç¤ºï¼" + not_connected: "ä½ æ²¡æœ‰ä¸Žä»–åˆ†äº«" + recent_posts: "最近的内容" + recent_public_posts: "最近的公开内容" + return_to_aspects: "回到您的情景主页" + see_all: "查看全部" + start_sharing: "开始分享" + to_accept_or_ignore: "接å—或忽略它。" + you_have_no_tags: "æ‚¨æ²¡æœ‰æ ‡ç¾ï¼" + webfinger: + fail: "抱æ‰ï¼Œæ‰¾ä¸åˆ° %{handle}。" + zero: "没有è”络人" + photos: + create: + integrity_error: "ç…§ç‰‡ä¸Šä¼ å¤±è´¥ã€‚ä½ ç¡®å®šå®ƒæ˜¯å›¾ç‰‡å—?" + runtime_error: "ç…§ç‰‡ä¸Šä¼ å¤±è´¥ã€‚ä½ ç¡®å®šæœ‰æ‰£å®‰å…¨å¸¦å—?" + type_error: "ç…§ç‰‡ä¸Šä¼ å¤±è´¥ã€‚ä½ ç¡®å®šæœ‰é€‰æ‹©ä»»ä½•å›¾ç‰‡å—?" + destroy: + notice: "ç…§ç‰‡åˆ é™¤æˆåŠŸã€‚" + edit: + editing: "编辑ä¸" + new: + back_to_list: "回列表" + new_photo: "新照片" + post_it: "å‘布ï¼" + new_photo: + empty: "文件 {file} 是空的,请é‡æ–°é€‰æ‹©æ–‡ä»¶ï¼Œå¹¶ä¸”ä¸è¦é€‰ä¸å®ƒã€‚" + invalid_ext: "ä¸æ”¯æŒæ–‡ä»¶ {file} çš„æ ¼å¼ã€‚åªæŽ¥å—{extensions}。" + size_error: "文件 {file} 太大了,上é™æ˜¯ {sizeLimit}。" + new_profile_photo: + or_select_one: "或从既有照片ä¸æŒ‘é€‰ä¸€å¼ " + upload: "ä¸Šä¼ æ–°çš„å¤´åƒï¼" + photo: + view_all: "查看 %{name} 所有的照片" + show: + collection_permalink: "相册的永久链接" + delete_photo: "åˆ é™¤ç…§ç‰‡" + edit: "编辑" + edit_delete_photo: "编辑照片æè¿°æˆ–åˆ é™¤ç…§ç‰‡" + make_profile_photo: "选为个人头åƒ" + original_post: "原å¼å†…容" + permalink: "永久链接" + update_photo: "更新照片" + view: "查看" + update: + error: "照片更新失败。" + notice: "照片更新æˆåŠŸã€‚" + post_visibilites: + update: + post_hidden: "éšè— %{name} 的内容æˆåŠŸ" + posts: + doesnt_exist: "内容ä¸å˜åœ¨ï¼" + previous: "上一æ¥" + profile: "个人档案" + profiles: + edit: + allow_search: "å…许别人在 Diaspora* ä¸æœç´¢åˆ°ä½ " + edit_profile: "编辑个人档案" + first_name: "å" + last_name: "姓" + update_profile: "更新个人档案" + your_bio: "您的自我介ç»" + your_birthday: "您的生日" + your_gender: "您的性别" + your_location: "您的ä½ç½®" + your_name: "您的åå—" + your_photo: "您的照片" + your_private_profile: "您的ç§äººæ¡£æ¡ˆ" + your_public_profile: "您的公开档案" + your_tags: "ä½ : å¯ä»¥æœ‰5个“#æ ‡ç¾â€" + your_tags_placeholder: "比如 #diaspora #çƒ«å‘ #猫咪 #音ä¹" + update: + failed: "个人档案更新失败" + updated: "个人档案更新æˆåŠŸ" + registrations: + closed: "本 Diaspora pod ä¸å¼€æ”¾æ³¨å†Œã€‚" + create: + success: "ä½ å·²æˆåŠŸåŠ å…¥ Diaspora 了ï¼" + edit: + cancel_my_account: "å–消我的å¸å·" + edit: "编辑 %{name}" + leave_blank: "(ä¸æƒ³å˜æ›´æ—¶è¯·ç•™ç©º)" + password_to_confirm: "(我们需è¦æ‚¨çŽ°åœ¨çš„密ç 以确认您è¦å˜æ›´)" + unhappy: "ä¸æ»¡æ„?" + update: "æ›´æ–°" + new: + enter_email: "输入电å邮箱" + enter_password: "输入密ç " + enter_password_again: "å†è¾“入一é密ç " + enter_username: "选个å¸å·ç§°(å称åªèƒ½åŒ…å«å—æ¯,æ•°å—和下划线“_â€)" + sign_up: "注册" + sign_up_for_diaspora: "注册使用 Diaspora" + requests: + create: + sending: "å‘é€ä¸" + sent: "您已ç»è¯·æ±‚与 %{name} 分享。他们下次登入 Diaspora 时就会看è§æ‚¨çš„请求。" + destroy: + error: "请选择一个情景ï¼" + ignore: "忽略建立好å‹çš„请求。" + success: "ä½ ä»¬çŽ°åœ¨äº’ç›¸åˆ†äº«äº†ã€‚" + helper: + new_requests: + few: "%{count}个新请求ï¼" + many: "%{count}个新请求ï¼" + one: "新的请求ï¼" + other: "%{count}个新请求ï¼" + zero: "没有新请求" + manage_aspect_contacts: + existing: "好å‹ç¼–辑" + manage_within: "管ç†å¥½å‹ï¼š" + new_request_to_person: + sent: "å‘é€æˆåŠŸï¼" + search: "æœç´¢" + services: + create: + success: "验è¯æˆåŠŸã€‚" + destroy: + success: "验è¯åˆ 除æˆåŠŸã€‚" + failure: + error: "与该æœåŠ¡è¿žæŽ¥æ—¶æœ‰é”™è¯¯" + finder: + friends: + few: "%{count}个朋å‹" + many: "%{count}个朋å‹" + one: "1个朋å‹" + other: "%{count}个朋å‹" + zero: "没有朋å‹" + invite_your_friends_from: "邀请您在 %{service} 的朋å‹" + not_connected: "未连接" + index: + connect_to_facebook: "与 facebook 连接" + connect_to_twitter: "与 twitter 连接" + disconnect: "æ–开连接" + edit_services: "编辑æœåŠ¡" + logged_in_as: "登录为" + really_disconnect: "切æ–与 %{service} 的连接?" + inviter: + click_link_to_accept_invitation: "点击这个链接以接å—邀请" + join_me_on_diaspora: "è·Ÿæˆ‘ä¸€èµ·åŠ å…¥ DIASPORA*" + remote_friend: + invite: "邀请" + resend: "é‡æ–°å‘é€" + settings: "设置" + shared: + add_contact: + create_request: "用 Diaspora å¸å·æœç´¢" + diaspora_handle: "diaspora@handle.org" + enter_a_diaspora_username: "输入 Diaspora å¸å·ï¼š" + know_email: "知é“他们的电åä¿¡ç®±å—? ä½ å¯ä»¥é‚€è¯·ä»–ä»¬åŠ å…¥ã€‚" + your_diaspora_username_is: "您的 Diaspora å¸å·æ˜¯: %{diaspora_handle}" + contact_list: + all_contacts: "全部好å‹" + cannot_remove: "æ— æ³•å°†å¥½å‹ä»Žä»–所在的最åŽä¸€ä¸ªæƒ…景ä¸ç§»é™¤ã€‚(å¦‚æžœä½ æƒ³ä¸Žè¿™ä¸ªäººæ–ç»è¿žç»“ï¼Œä½ å¯ä»¥è§£é™¤ä¸Žä»–的好å‹å…³ç³»ã€‚)" + footer: + logged_in_as: "已用 %{name} 登录" + your_aspects: "您的情景" + invitations: + by_email: "通过电å邮件" + dont_have_now: "ç›®å‰ä½ 还ä¸èƒ½é‚€è¯·ä»»ä½•äººï¼Œä½†å¾ˆå¿«å°±å¯ä»¥äº†ï¼" + from_facebook: "从 Facebook" + invitations_left: "(剩余%{count}å¼ )" + invite_someone: "邀请别人" + invite_your_friends: "邀请您的好å‹" + invites: "邀请" + invites_closed: "ç›®å‰æœ¬ Diaspora pod ä¸å¼€æ”¾é‚€è¯·åŠŸèƒ½" + notification: + new: "%{from} 有新的 %{type}" + public_explain: + logged_in: "æˆåŠŸç™»å½•åˆ° %{service}" + manage: "管ç†å·²è¿žçº¿çš„æœåŠ¡" + outside: "ä¸ä½¿ç”¨ Diaspora 的人也能看到公开讯æ¯ã€‚" + title: "设定连线æœåŠ¡" + publisher: + add_photos: "æ·»åŠ ç…§ç‰‡" + all: "全部" + all_contacts: "全部的好å‹" + click_to_share_with: "点击åŽå°±å¯ä»¥åˆ†äº«: " + make_public: "公开" + post_a_message_to: "在 %{aspect} å‘布讯æ¯" + posting: "å‘布ä¸â€¦â€¦" + public: "公开" + publishing_to: "å‘布至:" + share: "分享" + share_with: "与他分享:" + whats_on_your_mind: "ä½ æƒ³åˆ°äº†ä»€ä¹ˆï¼Ÿ" + reshare: + reshare: "é‡æ–°åˆ†äº«" + stream_element: + dislike: "ä¸å–œæ¬¢" + like: "喜欢" + status_messages: + create: + success: "æˆåŠŸæŽ¨è了: %{names}" + destroy: + failure: "åˆ é™¤å†…å®¹å¤±è´¥" + helper: + no_message_to_display: "没有信æ¯å¯æ˜¾ç¤ºã€‚" + new: + mentioning: "æåŠå‘布ä¸: %{person}" + show: + destroy: "åˆ é™¤" + not_found: "抱æ‰ï¼Œæ‰¾ä¸åˆ°è¯¥å†…容。" + permalink: "é™æ€è¿žæŽ¥" + stream_helper: + hide_comments: "éšè—评论" + show_comments: "显示所有评论" + tags: + show: + nobody_talking: "尚还没有人在讨论 %{tag}。" + people_tagged_with: "æ ‡è®°ä¸º %{tag} 的人" + posts_tagged_with: "æ ‡è®°ä¸º #%{tag} 的内容" + the_world: "全世界" + undo: "撤消?" + username: "å¸å·" + users: + destroy: "å¸å·å…³é—æˆåŠŸã€‚" + edit: + also_commented: "……当有人也对您的好å‹çš„内容å‘表评论时?" + change: "更改" + change_language: "更改è¯è¨€" + change_password: "更改密ç " + close_account: "å…³é—å¸å·" + comment_on_post: "……当有人对您的内容å‘表评论时?" + current_password: "当å‰å¯†ç " + download_photos: "下载我的照片" + download_xml: "下载我的 xml" + edit_account: "编辑å¸å·" + export_data: "资料导出" + mentioned: "……当贴文ä¸æ到您时?" + new_password: "新密ç " + private_message: "……当收到ç§äººä¿¡æ¯æ—¶ï¼Ÿ" + receive_email_notifications: "是å¦è¦åœ¨ä»¥ä¸‹æƒ…况收到电å邮件通知……" + request_acceptence: "……当请求跟人分享被接å—时?" + request_received: "……当收到有人想与您分享的新请求时?" + your_email: "您的电å邮箱" + your_handle: "您的 diaspora å¸å·" + getting_started: + connect_on_diaspora: "连接 Diaspora" + connect_services: "è¿žæŽ¥è‡³ä½ ä½¿ç”¨çš„å…¶ä»–æœåŠ¡" + could_not_find_anyone: "在 Diaspora* 上找ä¸åˆ°ä»»ä½•æœ‹å‹ï¼Ÿè¯·ä½¿ç”¨æœ‹å‹æœç´¢å™¨æ¥é‚€è¯·ä»–们。" + edit_profile: "编辑个人档案" + finished: "完æˆï¼" + save_and_continue: "ä¿å˜å¹¶ç»§ç»" + signup_steps: "完全下é¢ä¸‰ä¸ªæ¥éª¤ä»¥å®Œæˆæ³¨å†Œ:" + skip: "跳过使用入门" + step_2: + find_your_friends_on_diaspora: "ä½ æƒ³åœ¨ Diaspora 上è”ç³» Facebook 上的朋å‹å—?" + skip: "跳过" + step_3: + finish: "完æˆ" + people_already_on_diaspora: "已使用 Diaspora 的人" + welcome: "欢迎æ¥åˆ° Diasporaï¼" + public: + does_not_exist: "ä¸å˜åœ¨ %{username} 这个用户ï¼" + update: + email_notifications_changed: "邮件通知更改æˆåŠŸ" + language_changed: "è¯è¨€æ›´æ”¹æˆåŠŸ" + language_not_changed: "è¯è¨€æ›´æ”¹å¤±è´¥" + password_changed: "密ç 更改æˆåŠŸ" + password_not_changed: "密ç 更改失败" + webfinger: + fetch_failed: "èŽ·å– %{profile_url} çš„ webfinger 个人档案失败" + hcard_fetch_failed: "èŽ·å– %{account} çš„ hcard 资料时å‘生错误" + no_person_constructed: "从这份 hcard èµ„æ–™æ— æ³•ç»„å»ºå‡ºè”络人。" + not_enabled: "%{account} 的主机似乎没有å¯ç”¨ webfinger" + xrd_fetch_failed: "从 %{account} 这个å¸å·å–å¾— xrd æ—¶å‘生错误" diff --git a/config/locales/diaspora/zh-TW.yml b/config/locales/diaspora/zh-TW.yml index ca0c61f724806ad4e53bee10f37f10dd584c92f7..f04bb23cadbe8a24a463c50e2d7644b00f59208c 100644 --- a/config/locales/diaspora/zh-TW.yml +++ b/config/locales/diaspora/zh-TW.yml @@ -266,7 +266,7 @@ zh-TW: and_others: "和其他%{number}個人" mark_all_as_read: "全部標示為已讀" notifications: "消æ¯" - mentioned: "æåˆ°äº†ä½ , 在他們的" + mentioned: "在貼文ä¸æåˆ°äº†ä½ " new_request: "想è¦è·Ÿä½ 分享." post: "貼文" private_message: "寫了一則訊æ¯çµ¦ä½ ." @@ -354,7 +354,7 @@ zh-TW: recent_posts: "近來貼文" recent_public_posts: "近來公開貼文" return_to_aspects: "å›žä½ çš„é¢å‘主é " - similar_contacts: "相似的è¯ç¹«" + see_all: "看全部" start_sharing: "開始分享" to_accept_or_ignore: "接å—或ä¸ç®¡å®ƒ." you_have_no_tags: "ä½ æ²’æœ‰æ¨™ç±¤!" @@ -520,7 +520,7 @@ zh-TW: logged_in: "已登入至 %{service}" manage: "管ç†å·²é€£ç·šçš„æœå‹™" outside: "ä¸ä½¿ç”¨ Diaspora 的人也能看到公開訊æ¯." - title: "ä½ å°‡è¦ç™¼è¡¨å…¬é–‹è¨Šæ¯!" + title: "è¨å®šé€£ç·šæœå‹™" publisher: add_photos: "åŠ å…¥ç›¸ç‰‡" all: "全部" diff --git a/config/locales/diaspora/zh.yml b/config/locales/diaspora/zh.yml deleted file mode 100644 index 94f617f5fdf5f8d74605b596ed613e588ce5aa1e..0000000000000000000000000000000000000000 --- a/config/locales/diaspora/zh.yml +++ /dev/null @@ -1,617 +0,0 @@ -# Copyright (c) 2010, Diaspora Inc. This file is -# licensed under the Affero General Public License version 3 or later. See -# the COPYRIGHT file. - - -zh: - _comments: "评论" - _home: "首页" - _photos: "照片" - _services: "æœåŠ¡" - account: "å¸æˆ·" - activerecord: - errors: - models: - contact: - attributes: - person_id: - taken: "must be unique among this user's contacts." - person: - attributes: - diaspora_handle: - taken: "is already taken." - request: - attributes: - from_id: - taken: "is a duplicate of a pre-existing request." - user: - attributes: - email: - taken: "is already taken." - person: - invalid: "is invalid." - username: - taken: "is already taken." - ago: "%{time}以å‰" - all_aspects: "All aspects" - application: - helper: - unknown_person: "陌生人" - video_title: - unknown: "æœªçŸ¥çš„è§†é¢‘æ ‡é¢˜" - are_you_sure: "ä½ ç¡®å®šå—?" - aspect_memberships: - destroy: - failure: "Failed to remove person from aspect" - no_membership: "Could not find the selected person in that aspect" - success: "Successfully removed person from aspect" - aspects: - add_to_aspect: - failure: "æ— æ³•æŠŠè”ç³»äººåŠ å…¥åˆ†ç»„ã€‚" - success: "è”系人已æˆåŠŸåŠ 入分组。" - aspect_contacts: - done_editing: "编辑完æˆ" - aspect_stream: - activity: "activity" - post_time: "post time" - sort_by: "sort by:" - contacts_not_visible: "Contacts in this aspect will not be able to see each other." - contacts_visible: "Contacts in this aspect will be able to see each other." - create: - failure: "分组创建失败。" - success: "您的新分组%{name}已创建æˆåŠŸ" - destroy: - failure: "%{name} is not empty and could not be removed." - success: "æˆåŠŸåˆ 除%{name}。" - edit: - add_existing: "å¢žåŠ ä¸€ä¸ªçŽ°æœ‰è”系人" - aspect_list_is_not_visible: "aspect list is hidden to others in aspect" - aspect_list_is_visible: "aspect list is visible to others in aspect" - confirm_remove_aspect: "ä½ ç¡®å®šä½ è¦åˆ 除这个分组å—?" - done: "Done" - make_aspect_list_visible: "make aspect list visible?" - remove_aspect: "åˆ é™¤è¿™ä¸ªåˆ†ç»„" - rename: "改å" - update: "update" - updating: "updating" - few: "%{count} aspects" - helper: - are_you_sure: "您确定è¦åˆ 除这个分组å—?" - aspect_not_empty: "æ¤åˆ†ç»„éžç©º" - remove: "移除" - index: - handle_explanation: "è¿™æ˜¯ä½ åœ¨Diaspora的地å€ï¼Œå°±åƒç”µå邮件地å€ä¸€æ ·ï¼Œä½ å¯ä»¥æŠŠè¿™ä¸ªå‘é€ç»™äººä»¬ä»¥ä¾¿ä»–ä»¬æ‰¾åˆ°ä½ ã€‚" - no_contacts: "没有è”系人" - post_a_message: "post a message >>" - manage: - add_a_new_aspect: "å¢žåŠ ä¸€ä¸ªæ–°çš„åˆ†ç»„" - add_a_new_contact: "新增一个è”系人" - drag_to_add: "Drag to add people" - manage_aspects: "管ç†åˆ†ç»„" - no_requests: "没有新的邀请" - requests: "邀请" - many: "%{count} aspects" - move_contact: - error: "Error moving contact: %{inspect}" - failure: "didn't work %{inspect}" - success: "该用户已æˆåŠŸè½¬ç§»åˆ°æ–°çš„分组" - new_aspect: - create: "创建" - name: "å称" - no_posts_message: - start_talking: "还没人冒泡,说点什么å§ï¼" - one: "1 aspect" - other: "%{count} aspects" - seed: - family: "家åº" - work: "工作" - show: - edit_aspect: "编辑分组" - update: - failure: "您的分组%{name}å› åå—å¤ªé•¿è€Œæ— æ³•ä¿å˜ã€‚" - success: "您的%{name}分组编辑完æˆã€‚" - zero: "no aspects" - back: "åŽé€€" - bookmarklet: - explanation: "%{link} from anywhere by bookmarking this link." - explanation_link_text: "Post to Diaspora" - post_something: "Post something to Diaspora" - post_success: "Posted! Closing!" - cancel: "å–消" - comments: - few: "%{count} comments" - many: "%{count} comments" - new_comment: - comment: "评论" - commenting: "评论ä¸" - one: "1 comment" - other: "%{count} comments" - zero: "no comments" - contacts: - create: - failure: "Failed to create contact" - destroy: - failure: "Failed to disconnect from %{name}" - success: "Successfully disconnected from %{name}" - few: "%{count}个è”系人" - many: "%{count} contacts" - one: "1个è”系人" - other: "%{count}个è”系人" - share_with_pane: - accepts: "Once %{name} accepts, you'll start seeing each other's posts on Diaspora" - add_new_aspect: "add to new aspect" - share_with: "Start sharing with %{name}" - zero: "没有è”系人" - conversations: - create: - sent: "Message sent" - destroy: - success: "Conversation successfully removed" - helper: - new_messages: - few: "%{count} new messages" - many: "%{count} new messages" - one: "1 new messages" - other: "%{count} new messages" - zero: "no new messages" - index: - create_a_new_message: "create a new message" - inbox: "Inbox" - message_inbox: "Message Inbox" - new_message: "New Message" - no_conversation_selected: "no conversation selected" - no_messages: "no messages" - new: - send: "Send" - subject: "subject" - to: "to" - show: - delete: "delete and block conversation" - reply: "reply" - date: - formats: - birthday: "%B %d" - birthday_with_year: "%B %d %Y" - fullmonth_day: "%B %d" - delete: "åˆ é™¤" - email: "电å邮件" - error_messages: - helper: - correct_the_following_errors_and_try_again: "请改æ£ä¸‹é¢æ˜¾ç¤ºçš„错误并é‡è¯•ä¸€é。" - invalid_fields: "æ— æ•ˆå—段" - fill_me_out: "Fill me out" - hide: "Hide" - home: - show: - already_account: "您已ç»æœ‰ä¸€ä¸ªè´¦å·äº†å—?" - choice: "选择" - choice_explanation: "Diaspora lets you sort your connections into groups called aspects. Unique to Diaspora, aspects ensure that your photos, stories and jokes are shared only with the people you intend." - learn_about_host: "å¦ä¹ 如何建立自己的DiasporaæœåŠ¡ã€‚" - login_here: "从这里登陆" - ownership: "所属æƒ" - ownership_explanation: "You own your pictures, and you shouldn’t have to give that up just to share them. You maintain ownership of everything you share on Diaspora, giving you full control over how it's distributed." - share_what_you_want: "共享什么ã€ä¸Žè°å…±äº«ï¼Œå…¨ç”±æ‚¨å®šï¼" - simplicity: "简å•" - simplicity_explanation: "Diaspora makes sharing clean and easy – and this goes for privacy too. Inherently private, Diaspora doesn’t make you wade through pages of settings and options just to keep your profile secure." - tagline_first_half: "分享您愿æ„分享的," - tagline_second_half: "å’Œä½ æƒ³è¦çš„人。" - invitations: - check_token: - not_found: "Invitation token not found" - create: - already_contacts: "您和æ¤äººå·²å…³è”上" - already_sent: "您已给这个人å‘é€è¿‡é‚€è¯·ã€‚" - no_more: "您没有其他的邀请了。" - rejected: "下列电å邮件地å€æœ‰é—®é¢˜ï¼š " - sent: "邀请已被å‘é€ç»™ï¼š" - edit: - sign_up: "sign_up" - new: - already_invited: "已邀请过了" - aspect: "分组" - comma_seperated_plz: "You can enter multiple email addresses separated by commas." - if_they_accept_info: "一旦邀请被接å—ï¼Œä»–ä»¬å°±ä¼šè¢«åŠ å…¥è¿™ä¸ªåˆ†ç»„ã€‚" - invite_someone_to_join: "é‚€è¯·äº›äººåŠ å…¥Diasporaï¼" - personal_message: "个人消æ¯" - resend: "Resend" - send_an_invitation: "å‘é€ä¸€ä»½é‚€è¯·" - send_invitation: "å‘é€é‚€è¯·" - to: "ç»™" - layouts: - application: - have_a_problem: "Have a problem? Find an answer here" - powered_by: "POWERED BY DIASPORA*" - public_feed: "Public Diaspora Feed for %{name}" - toggle: "toggle mobile site" - whats_new: "what's new?" - your_aspects: "your aspects" - header: - blog: "åšå®¢" - code: "代ç " - login: "登录" - logout: "退出" - profile: "profile" - settings: "settings" - likes: - likes: - people_dislike_this: - few: "%{count} people disliked this" - many: "%{count} people disliked this" - one: "1 person disliked this" - other: "%{count} people disliked this" - zero: "no people disliked this" - people_like_this: - few: "%{count} people liked this" - many: "%{count} people liked this" - one: "1 person liked this" - other: "%{count} people liked this" - zero: "no people liked this" - more: "More" - next: "下一æ¥" - no_results: "No Results Found" - notifications: - also_commented: "also commented on your contact's" - also_commented_deleted: "commented on a deleted post" - comment_on_post: "commented on your" - deleted: "deleted" - helper: - new_notifications: - few: "%{count} new notifications" - many: "%{count} new notifications" - one: "1 new notifications" - other: "%{count} new notifications" - zero: "no new notifications" - index: - and: "and" - and_others: "and %{number} others" - mark_all_as_read: "Mark All as Read" - notifications: "Notifications" - mentioned: "has mentioned you in their" - new_request: "offered to share with you." - post: "å‘布" - private_message: "sent you a message." - request_accepted: "accepted your share request." - notifier: - also_commented: - commented: "也在%{post_author}的帖å上å‘表了评论:" - sign_in: "请登录以便查看。" - subject: "%{name}也å‘表了评论。" - comment_on_post: - commented: "您的帖å有新的评论ï¼" - sign_in: "请登陆以便查看。" - subject: "%{name}åœ¨ä½ çš„å¸–å上å‘表了评论。" - diaspora: "diaspora email机器人" - hello: "ä½ å¥½%{name}ï¼" - love: "爱," - manage_your_email_settings: "manage your email settings" - mentioned: - mentioned: "mentioned you in a post:" - sign_in: "Sign in to view it." - subject: "%{name} has mentioned you on Diaspora*" - new_request: - just_sent_you: "刚在Diaspora*上给您å‘é€äº†ä¸€ä¸ªè”系人请求" - sign_in: "请于æ¤ç™»å½•" - subject: "有从%{from}å‘é€è¿‡æ¥çš„Diaspora*è”系人请求" - try_it_out: "您最好认真的查看一下。" - private_message: - message_subject: "Subject: %{subject}" - private_message: "has sent you a private message:" - sign_in: "Sign in to view it." - subject: "%{name} has sent you a private message yon Diaspora*" - request_accepted: - accepted: "已接å—您的è”系人请求ï¼" - sign_in: "Sign in here" - subject: "%{name}已接å—您的好å‹è¯·æ±‚" - single_admin: - admin: "您的Diaspora管ç†å‘˜" - subject: "有关于您的Diasporaå¸æˆ·çš„消æ¯:" - thanks: "谢谢。" - ok: "好" - or: "或者" - password: "密ç " - password_confirmation: "密ç 确认" - people: - add_contact_small: - add_contact_from_tag: "add contact from tag" - aspect_list: - edit_membership: "edit aspect membership" - few: "%{count} people" - helper: - people_on_pod_are_aware_of: " people on pod are aware of" - results_for: " results for %{params}" - index: - couldnt_find_them_send_invite: "找ä¸åˆ°ä»–们å—?您å¯ä»¥ç»™ä»–们å‘ä¸ªåŠ å…¥é‚€è¯·ï¼" - no_one_found: "...但是找ä¸åˆ°ä»»ä½•äººã€‚" - no_results: "ä½ å¥½ï¼ä½ 得用æœç´¢åŠŸèƒ½åŽ»æŸ¥æ‰¾ã€‚" - results_for: "æœç´¢ç»“æžœ" - many: "%{count} people" - one: "1 person" - other: "%{count} people" - person: - add_contact: "å¢žåŠ è”系人" - already_connected: "已关è”" - pending_request: "您的邀请æ£ç‰å¾…确认" - thats_you: "thats you!" - profile_sidebar: - bio: "自我简介" - born: "生日" - cannot_remove: "æ— æ³•ä»Žåˆ†ç»„ä¸åˆ 除%{name}ã€‚ï¼ˆå¦‚æžœä½ è¦å’Œè¿™ä¸ªäººæ–å¼€è”ç³»ï¼Œä½ å¿…é¡»å¾—åˆ é™¤è¿™ä¸ªè”系人。)" - edit_my_profile: "编辑我的个人资料" - gender: "性别" - in_aspects: "在分组ä¸" - location: "location" - remove_contact: "åˆ é™¤è”系人" - remove_from: "真的è¦æŠŠ%{name}从%{aspect}ä¸åˆ 除å—?" - show: - add_some: "add some" - does_not_exist: "æ¤äººä¸å˜åœ¨ï¼" - edit: "edit" - incoming_request: "您有一æ¡è¿™ä¸ªäººå‘的邀请。" - mention: "Mention" - message: "Message" - no_posts: "æ— è´´è§äººï¼" - not_connected: "还还没有和%{name}共享" - recent_posts: "最近的帖å" - recent_public_posts: "é‡æ–°å‘布一é公开贴" - return_to_aspects: "返回分组页é¢" - similar_contacts: "相似è”系人" - start_sharing: "start sharing" - to_accept_or_ignore: "接å—或者忽略。" - you_have_no_tags: "you have no tags!" - webfinger: - fail: "Sorry, we couldn't find %{handle}." - zero: "no people" - photos: - create: - integrity_error: "å›¾ç‰‡ä¸Šä¼ å¤±è´¥ï¼Œä½ è‚¯å®šä½ ä¸Šä¼ çš„æ˜¯å›¾ç‰‡å—?" - runtime_error: "Photo upload failed. Are you sure that your seatbelt is fastened?" - type_error: "å›¾ç‰‡ä¸Šä¼ å¤±è´¥ï¼Œä½ ç¡®å®šä½ ä¸Šä¼ çš„æ˜¯ä¸€å¼ å›¾ç‰‡å—?" - destroy: - notice: "ç…§ç‰‡å·²è¢«åˆ é™¤ã€‚" - edit: - editing: "æ£åœ¨ç¼–辑ä¸" - new: - back_to_list: "返回列表" - new_photo: "新照片" - post_it: "æ交ï¼" - new_photo: - empty: "{file}是一个空文件,请é‡æ–°é€‰æ‹©æ‚¨è¦ä¸Šä¼ 的文件并确ä¿ä¹‹å‰çš„空文件ä¸åœ¨å…¶ä¸ã€‚" - invalid_ext: "{file}包å«éžæ³•åŽç¼€ï¼Œåªæœ‰{extensions}这些åŽç¼€å是被å…许的。" - size_error: "{file}太大,最大值为{sizeLimit}。" - new_profile_photo: - or_select_one: "æˆ–è€…ä»Žä½ å·²æœ‰çš„ç›¸å†Œä¸æŒ‘é€‰ä¸€å¼ " - upload: "ä¸Šä¼ ä¸€å¼ æ–°çš„ä¸ªäººèµ„æ–™å¤´åƒï¼" - photo: - view_all: "查看%{name}的所有照片" - show: - collection_permalink: "collection permalink" - delete_photo: "åˆ é™¤ç…§ç‰‡" - edit: "编辑" - edit_delete_photo: "编辑照片说明 / åˆ é™¤ç…§ç‰‡" - make_profile_photo: "make profile photo" - original_post: "Original Post" - permalink: "永久链接" - update_photo: "更新照片" - view: "查看" - update: - error: "照片编辑失败。" - notice: "头åƒæ›´æ–°æˆåŠŸã€‚" - post_visibilites: - update: - post_hidden: "%{name}'s post has been hidden." - posts: - doesnt_exist: "that post does not exist!" - previous: "åŽé€€" - profile: "个人资料" - profiles: - edit: - allow_search: "Allow for people to search for you within Diaspora" - edit_profile: "Edit profile" - first_name: "First name" - last_name: "Last name" - update_profile: "Update Profile" - your_bio: "Your bio" - your_birthday: "Your birthday" - your_gender: "Your gender" - your_location: "Your location" - your_name: "Your name" - your_photo: "Your photo" - your_private_profile: "Your private profile" - your_public_profile: "Your public profile" - your_tags: "You: in 5 #tags" - your_tags_placeholder: "i.e. #diaspora #ironing #kittens #music" - update: - failed: "Failed to update profile" - updated: "Profile updated" - registrations: - closed: "这个Diaspora节点已关é—注册" - create: - success: "æ‚¨å·²åŠ å…¥Diasporaï¼" - edit: - cancel_my_account: "åˆ é™¤æˆ‘çš„å¸æˆ·" - edit: "编辑%{name}" - leave_blank: "(如果您ä¸åƒåšä»»ä½•æ›´æ”¹è¯·ç•™ç©ºï¼‰" - password_to_confirm: "(我们需è¦æ‚¨è¾“入密ç 以确认您的更改)" - unhappy: "éƒé—·ï¼Ÿ" - update: "æ›´æ–°" - new: - enter_email: "输入电å邮箱" - enter_password: "请输入密ç " - enter_password_again: "请å†è¾“入一é密ç " - enter_username: "请å–个用户å(åªèƒ½åŒ…å«å—æ¯ã€æ•°å—和下划线)" - sign_up: "注册" - sign_up_for_diaspora: "注册一个Diasporaè´¦å·" - requests: - create: - sending: "å‘é€ä¸" - sent: "%{name}已请求和您共享信æ¯ï¼Œä¸‹æ¬¡ä¸€ç™»å…¥è¿›Diaspora他们应该就能看到。" - destroy: - error: "请选择一个分组ï¼" - ignore: "忽略è”系人邀请。" - success: "ä½ ä»¬çŽ°åœ¨æ˜¯æœ‹å‹å…³ç³»äº†ã€‚" - helper: - new_requests: - few: "%{count} new requests!" - many: "%{count} new requests!" - one: "new request!" - other: "%{count} new requests!" - zero: "no new requests" - manage_aspect_contacts: - existing: "已有è”系人" - manage_within: "Manage contacts within" - new_request_to_person: - sent: "å·²å‘é€ï¼" - search: "æœç´¢" - services: - create: - success: "授æƒæˆåŠŸã€‚" - destroy: - success: "Successfully deleted authentication." - failure: - error: "请求æœåŠ¡æ—¶å‡ºçŽ°ä¸€ä¸ªé”™è¯¯" - finder: - friends: - few: "%{count} friends" - many: "%{count} friends" - one: "1 friend" - other: "%{count} friends" - zero: "no friends" - invite_your_friends_from: "Invite your friends from %{service}" - not_connected: "not connected" - index: - connect_to_facebook: "å…³è”到Facebook" - connect_to_twitter: "å’Œtwitter互通" - disconnect: "æ–å¼€" - edit_services: "编辑æœåŠ¡" - logged_in_as: "登入为" - really_disconnect: "æ–å¼€%{service}å—?" - inviter: - click_link_to_accept_invitation: "Click this link to accept your invitation" - join_me_on_diaspora: "Join me on DIASPORA*" - remote_friend: - invite: "invite" - resend: "resend" - settings: "设置" - shared: - add_contact: - create_request: "Find by Diaspora handle" - diaspora_handle: "diaspora@handle.org" - enter_a_diaspora_username: "请输入Diaspora用户å:" - know_email: "ä½ çŸ¥é“他们的电邮地å€å—ï¼Ÿä½ å¯ä»¥é‚€è¯·ä»–们æ¥åŠ å…¥" - your_diaspora_username_is: "ä½ çš„ç”¨æˆ·å: %{diaspora_handle}" - contact_list: - all_contacts: "所有è”系人" - cannot_remove: "æ— æ³•æŠŠä»–ä»Žä¸Šä¸€ä¸ªåˆ†ç»„ä¸ç§»é™¤ã€‚ï¼ˆå¦‚æžœä½ è¦å’Œè¿™ä¸ªäººæ–å¼€è”ç³»ä½ å°±å¿…é¡»åˆ é™¤è¿™ä¸ªè”系人。)" - footer: - logged_in_as: "logged in as %{name}" - your_aspects: "your aspects" - invitations: - by_email: "by Email" - dont_have_now: "您现在没有任何邀请,他们æ£åœ¨æ¥çš„途ä¸ï¼Œè¯·ç¨å€™ï¼" - from_facebook: "From Facebook" - invitations_left: "(%{count} left)" - invite_someone: "邀请æŸäºº" - invite_your_friends: "Invite your friends" - invites: "邀请" - invites_closed: "这个Diaspora节点暂时关é—邀请功能" - notification: - new: "New %{type} from %{from}" - public_explain: - logged_in: "已登入%{service}" - manage: "管ç†ç›¸å…³çš„æœåŠ¡" - outside: "公开信æ¯å¯ä»¥è¢«Diaspora世界之外的人们看到。" - title: "ä½ å³å°†å‘布一æ¡å…¬å¼€ä¿¡æ¯ï¼" - publisher: - add_photos: "å¢žåŠ ç…§ç‰‡" - all: "所有" - all_contacts: "所有è”系人" - click_to_share_with: "Click to share with: " - make_public: "改为公开" - post_a_message_to: "å‘é€ä¿¡æ¯ç»™%{aspect}这个分组的所有人" - posting: "å‘布ä¸" - public: "Public" - publishing_to: "publishing to: " - share: "分享" - share_with: "å’Œ%{aspect}这个分组ä¸çš„人分享" - whats_on_your_mind: "what's on your mind?" - reshare: - reshare: "å†æ¬¡åˆ†äº«" - stream_element: - dislike: "I dislike this" - like: "I like this" - status_messages: - create: - success: "Successfully mentioned: %{names}" - destroy: - failure: "Failed to delete post" - helper: - no_message_to_display: "没有消æ¯ã€‚" - new: - mentioning: "Mentioning: %{person}" - show: - destroy: "åˆ é™¤" - not_found: "Sorry, we couldn't find that post." - permalink: "永久链接" - stream_helper: - hide_comments: "éšè—评论" - show_comments: "显示所有评论" - tags: - show: - nobody_talking: "Nobody is talking about %{tag} yet." - people_tagged_with: "People tagged with %{tag}" - posts_tagged_with: "Posts tagged with #%{tag}" - the_world: "世界" - undo: "Undo?" - username: "用户å" - users: - destroy: "å¸æˆ·å·²æˆåŠŸå…³é—。" - edit: - also_commented: "...someone also comments on your contact's post?" - change: "修改" - change_language: "改å˜è¯è¨€" - change_password: "修改密ç " - close_account: "å…³é—å¸æˆ·" - comment_on_post: "...someone comments on your post?" - current_password: "Current password" - download_photos: "下载我的照片" - download_xml: "下载我的xml文件" - edit_account: "编辑å¸æˆ·" - export_data: "导出数æ®" - mentioned: "...you are mentioned in a post?" - new_password: "新密ç " - private_message: "...you receive a private message?" - receive_email_notifications: "æ„¿æ„接收电å邮件通知å—?" - request_acceptence: "...your share request is accepted?" - request_received: "...you receive a new share request?" - your_email: "您的电å邮件" - your_handle: "Your diaspora handle" - getting_started: - connect_on_diaspora: "Connect on Diaspora" - connect_services: "å…³è”您的其他æœåŠ¡" - could_not_find_anyone: "Could not find any friends on Diaspora*. Use the friend finder to invite them." - edit_profile: "编辑您的个人资料" - finished: "结æŸï¼" - save_and_continue: "ä¿å˜å¹¶ç»§ç»" - signup_steps: "è¦ç»“æŸæ³¨å†Œæµç¨‹ï¼Œè¯·å®Œæˆä¸‹é¢ä¸‰ä¸ªæ¥éª¤ï¼š" - skip: "skip getting started" - step_2: - find_your_friends_on_diaspora: "Would you like to find your Facebook friends on Diaspora?" - skip: "Skip" - step_3: - finish: "Finish" - people_already_on_diaspora: "People already on Diaspora" - welcome: "欢迎æ¥åˆ°Diasporaï¼" - public: - does_not_exist: "%{username}这个用户ä¸å˜åœ¨ï¼" - update: - email_notifications_changed: "电å邮件通知方å¼å·²æ”¹å˜" - language_changed: "Language Changed" - language_not_changed: "修改è¯è¨€è®¾ç½®å¤±è´¥" - password_changed: "Password Changed" - password_not_changed: "Password Change Failed" - webfinger: - fetch_failed: "failed to fetch webfinger profile for %{profile_url}" - hcard_fetch_failed: "there was a problem fetching the hcard for %{account}" - no_person_constructed: "No person could be constructed from this hcard." - not_enabled: "webfinger does not seem to be enabled for %{account}'s host" - xrd_fetch_failed: "there was an error getting the xrd from account %{account}" diff --git a/config/locales/inflections/README.md b/config/locales/inflections/README.md new file mode 100644 index 0000000000000000000000000000000000000000..1760b806f172aca1200f33be9700544ba8bd9fa7 --- /dev/null +++ b/config/locales/inflections/README.md @@ -0,0 +1,3 @@ +This directory contains the definitions for the [i18n-inflector gem](https://github.com/siefca/i18n-inflector). +Look at the documentation there and our [contributing translations](https://github.com/diaspora/diaspora/wiki/How-to-contribute-translations) wiki page for more informations +and how to contribute. diff --git a/config/locales/javascript/javascript.bg.yml b/config/locales/javascript/javascript.bg.yml new file mode 100644 index 0000000000000000000000000000000000000000..ee7df882476a4a7f98f35c16f81e17f7e22ab8b5 --- /dev/null +++ b/config/locales/javascript/javascript.bg.yml @@ -0,0 +1,37 @@ +# Copyright (c) 2010, Diaspora Inc. This file is +# licensed under the Affero General Public License version 3 or later. See +# the COPYRIGHT file. + + +bg: + javascripts: + confirm_dialog: "Сигурни ли Ñте?" + infinite_scroll: + no_more: "ÐÑма повече публикации." + publisher: + at_least_one_aspect: "ТрÑбва да публикувате в поне един аÑпект" + search_for: "ТърÑене за {{name}}" + shared: + contact_list: + cannot_remove: "Лицето не може да бъде премахнато от поÑÐ»ÐµÐ´Ð½Ð¸Ñ Ð°Ñпект. (Ðко желаете да бъде прекратена връзката Ñ Ð»Ð¸Ñ†ÐµÑ‚Ð¾ е необходимо да премахнете контакта.)" + timeago: + day: "ден" + days: "%d дни" + hour: "около чаÑ" + hours: "около %d чаÑа" + minute: "около минута" + minutes: "%d минути" + month: "около меÑец" + months: "%d меÑеца" + prefixAgo: "преди" + prefixFromNow: "Ñлед" + seconds: "по-малко от минута" + suffixAgo: "" + suffixFromNow: "от Ñега" + year: "около година" + years: "%d години" + videos: + unknown: "ÐеизвеÑтен вид видео" + watch: "Гледайте видеото в {{provider}}" + web_sockets: + disconnected: "The websocket is closed; posts will no longer be streamed live." diff --git a/config/locales/javascript/javascript.br.yml b/config/locales/javascript/javascript.br.yml index 9933c9930eea4fd9d8b0aa3ac308613d67a299f7..49b0e006ac69d2ed6f89e38659f7d2a925ad595f 100644 --- a/config/locales/javascript/javascript.br.yml +++ b/config/locales/javascript/javascript.br.yml @@ -6,6 +6,8 @@ br: javascripts: confirm_dialog: "Emaoc'h sur?" + infinite_scroll: + no_more: "No more posts." publisher: at_least_one_aspect: "Dav eo deoc'h embann un arvez da'n nebeutañ" search_for: "Klask war-lerc'h {{name}}" @@ -31,3 +33,5 @@ br: videos: unknown: "Stumm ar video dianav" watch: "Sellet ouzh ar video gant {{provider}}" + web_sockets: + disconnected: "The websocket is closed; posts will no longer be streamed live." diff --git a/config/locales/javascript/javascript.cs.yml b/config/locales/javascript/javascript.cs.yml index c95d25810dfbcb6f0b1b531a4f3ac733f4578a16..0ae0f31b4f07d16f45131801ebead5fe339bc263 100644 --- a/config/locales/javascript/javascript.cs.yml +++ b/config/locales/javascript/javascript.cs.yml @@ -6,6 +6,8 @@ cs: javascripts: confirm_dialog: "Jste si jisti?" + infinite_scroll: + no_more: "Žádné dalÅ¡Ã pÅ™ÃspÄ›vky." publisher: at_least_one_aspect: "MusÃte publikovat alespoň do jednoho aspektu" search_for: "Hledat {{name}}" @@ -31,3 +33,5 @@ cs: videos: unknown: "Neznámý typ videa" watch: "PodÃvejte se na tohle video na {{provider}}" + web_sockets: + disconnected: "Websocket je uzavÅ™en, pÅ™ÃspÄ›vky již nebude možno sledovat živÄ›." diff --git a/config/locales/javascript/javascript.da.yml b/config/locales/javascript/javascript.da.yml index 1a3b4907564f8d0c11c7ba61af2baf029dfea7b5..cfa4f0bc7c69be50cefd9fd363c7531b9b7631af 100644 --- a/config/locales/javascript/javascript.da.yml +++ b/config/locales/javascript/javascript.da.yml @@ -5,13 +5,15 @@ da: javascripts: - confirm_dialog: "Are you sure?" + confirm_dialog: "Er du sikker?" + infinite_scroll: + no_more: "No more posts." publisher: - at_least_one_aspect: "You must publish to at least one aspect" - search_for: "Search for {{name}}" + at_least_one_aspect: "Du skal dele med mindst et aspekt" + search_for: "Søg efter {{name}}" shared: contact_list: - cannot_remove: "Cannot remove person from last aspect. (If you want to disconnect from this person you must remove contact.)" + cannot_remove: "Kan ikke fjerne personen fra sidste aspekt. (Hvis du ikke ønsker at dele med denne person mere mÃ¥ du fjerne ham fra kontakter.)" timeago: day: "en dag" days: "%d dage" @@ -29,5 +31,7 @@ da: year: "ca. et Ã¥r" years: "%d Ã¥r" videos: - unknown: "Unknown video type" - watch: "Watch this video on {{provider}}" + unknown: "Ukendt video type" + watch: "Se denne video pÃ¥ {{provider}}" + web_sockets: + disconnected: "The websocket is closed; posts will no longer be streamed live." diff --git a/config/locales/javascript/javascript.de.yml b/config/locales/javascript/javascript.de.yml index 99f2454868f4cc7d35f7a57683a96154f6eb8f43..1ca5d0c93ce94291003f1f400819cd018dba6e39 100644 --- a/config/locales/javascript/javascript.de.yml +++ b/config/locales/javascript/javascript.de.yml @@ -6,6 +6,8 @@ de: javascripts: confirm_dialog: "Bist du dir sicher?" + infinite_scroll: + no_more: "No more posts." publisher: at_least_one_aspect: "Du musst zumindest zu einem Aspekt posten" search_for: "Nach {{name}} suchen" @@ -31,3 +33,5 @@ de: videos: unknown: "Unbekanntes Videoformat" watch: "Dieses Video auf {{provider}} ansehen" + web_sockets: + disconnected: "The websocket is closed; posts will no longer be streamed live." diff --git a/config/locales/javascript/javascript.el.yml b/config/locales/javascript/javascript.el.yml index 605f401d7850e224ab4529a7a0c6068d2fc24cbe..f6e0d2f4537da5ecb2cc9c14d26da9e5e952eadd 100644 --- a/config/locales/javascript/javascript.el.yml +++ b/config/locales/javascript/javascript.el.yml @@ -6,6 +6,8 @@ el: javascripts: confirm_dialog: "Είστε σίγουÏος/η;" + infinite_scroll: + no_more: "No more posts." publisher: at_least_one_aspect: "Ï€ÏÎπει να κάνετε δημοσίευση σε τουλάχιστον μια πτυχή" search_for: "Αναζήτηση για {{name}}" @@ -31,3 +33,5 @@ el: videos: unknown: "Άγνωστος Ï„Ïπος βίντεο" watch: "Δείτε το βίντεο στο {{provider}}" + web_sockets: + disconnected: "The websocket is closed; posts will no longer be streamed live." diff --git a/config/locales/javascript/javascript.en.yml b/config/locales/javascript/javascript.en.yml index dc52cfc2b6ec4fa3025ff5a8d684be2d0bb284fd..97e3552f27459a73395d2e1a7cb417b5fe3c805c 100644 --- a/config/locales/javascript/javascript.en.yml +++ b/config/locales/javascript/javascript.en.yml @@ -5,6 +5,7 @@ en: javascripts: + confirm_dialog: "Are you sure?" timeago: prefixAgo: "" @@ -31,4 +32,7 @@ en: cannot_remove: "Cannot remove person from last aspect. (If you want to disconnect from this person you must remove contact.)" publisher: at_least_one_aspect: "You must publish to at least one aspect" - + infinite_scroll: + no_more: "No more posts." + web_sockets: + disconnected: "The websocket is closed; posts will no longer be streamed live." diff --git a/config/locales/javascript/javascript.en_shaw.yml b/config/locales/javascript/javascript.en_shaw.yml index 565cb8630ecdbef70be95bc1e95ab782b92a74ed..6ce50d51d79bf78a9b8f5c5db81ac488869227c4 100644 --- a/config/locales/javascript/javascript.en_shaw.yml +++ b/config/locales/javascript/javascript.en_shaw.yml @@ -6,6 +6,8 @@ en_shaw: javascripts: confirm_dialog: "𑸠𑿠ð‘–ð‘»?" + infinite_scroll: + no_more: "ð‘¯ð‘´ ð‘¥ð‘¹ ð‘ð‘´ð‘•ð‘‘ð‘•." publisher: at_least_one_aspect: "ð‘¿ ð‘¥ð‘³ð‘•ð‘‘ ð‘ð‘³ð‘šð‘¤ð‘¦ð‘– ð‘‘ ð‘¨ð‘‘ ð‘¤ð‘°ð‘•ð‘‘ ð‘¢ð‘³ð‘¯ ð‘¨ð‘•ð‘ð‘§ð‘’ð‘‘" search_for: "ð‘•ð‘»ð‘— ð‘“𑹠{{name}}" @@ -31,3 +33,5 @@ en_shaw: videos: unknown: "ð‘©ð‘¯ð‘¯ð‘´ð‘¯ ð‘ð‘¦ð‘›ð‘¦ð‘´ ð‘‘ð‘²ð‘" watch: "ð‘¢ð‘·ð‘— ð‘žð‘¦ð‘• ð‘ð‘¦ð‘›ð‘¦ð‘´ ð‘ªð‘¯ {{provider}}" + web_sockets: + disconnected: "The websocket is closed; posts will no longer be streamed live." diff --git a/config/locales/javascript/javascript.eo.yml b/config/locales/javascript/javascript.eo.yml index fddaf15b15ac18a4a465a54db0618c051dc59772..16faceb1cd1197e6655713cb2072bc777752b374 100644 --- a/config/locales/javascript/javascript.eo.yml +++ b/config/locales/javascript/javascript.eo.yml @@ -6,6 +6,8 @@ eo: javascripts: confirm_dialog: "Are you sure?" + infinite_scroll: + no_more: "No more posts." publisher: at_least_one_aspect: "You must publish to at least one aspect" search_for: "Search for {{name}}" @@ -31,3 +33,5 @@ eo: videos: unknown: "nekonata tipo de videaĵo" watch: "Watch this video on {{provider}}" + web_sockets: + disconnected: "The websocket is closed; posts will no longer be streamed live." diff --git a/config/locales/javascript/javascript.es.yml b/config/locales/javascript/javascript.es.yml index e668e963172efe31e5bab32579c0d003a79cc083..0d8f42b7f9ca3b38caccd174e0e2b6bd754257b2 100644 --- a/config/locales/javascript/javascript.es.yml +++ b/config/locales/javascript/javascript.es.yml @@ -6,6 +6,8 @@ es: javascripts: confirm_dialog: "¿Estás seguro?" + infinite_scroll: + no_more: "No hay más publicaciones." publisher: at_least_one_aspect: "Debes publicarlo en al menos un aspecto" search_for: "Buscar a {{name}}" @@ -31,3 +33,5 @@ es: videos: unknown: "Tipo de video desconocido" watch: "Ver este video con {{provider}}" + web_sockets: + disconnected: "The websocket is closed; posts will no longer be streamed live." diff --git a/config/locales/javascript/javascript.eu.yml b/config/locales/javascript/javascript.eu.yml index 1532e2a6a950a88f55ceeb6005db01109f997c55..13782b03971e072450fb344034126c40ab19314c 100644 --- a/config/locales/javascript/javascript.eu.yml +++ b/config/locales/javascript/javascript.eu.yml @@ -6,6 +6,8 @@ eu: javascripts: confirm_dialog: "Ziur al zaude?" + infinite_scroll: + no_more: "Mezu gehiagorik ez dago." publisher: at_least_one_aspect: "Gutxienez alderdi batean partekatu behar duzu" search_for: "Bilatu {{name}}" @@ -31,3 +33,5 @@ eu: videos: unknown: "Bideo mota ezezaguna" watch: "Ikusi bideo hau {{provider}}(e)n" + web_sockets: + disconnected: "The websocket is closed; posts will no longer be streamed live." diff --git a/config/locales/javascript/javascript.fi.yml b/config/locales/javascript/javascript.fi.yml index 9cb1437689e570270460cf122dcd41a96fc2ad13..9e2aaf553d1e5c630f298348011382b1085a2094 100644 --- a/config/locales/javascript/javascript.fi.yml +++ b/config/locales/javascript/javascript.fi.yml @@ -6,6 +6,8 @@ fi: javascripts: confirm_dialog: "Oletko varma?" + infinite_scroll: + no_more: "No more posts." publisher: at_least_one_aspect: "You must publish to at least one aspect" search_for: "Etsi nimellä {{name}}" @@ -31,3 +33,5 @@ fi: videos: unknown: "Tuntematon videomuoto" watch: "Katso video {{provider}} :ssa" + web_sockets: + disconnected: "The websocket is closed; posts will no longer be streamed live." diff --git a/config/locales/javascript/javascript.fr.yml b/config/locales/javascript/javascript.fr.yml index b8ddcfc2db37b9e6c0f80514353dd5ae3329d0d9..433532bb0a85cc525a4eec375c597201db6dd9ac 100644 --- a/config/locales/javascript/javascript.fr.yml +++ b/config/locales/javascript/javascript.fr.yml @@ -6,6 +6,8 @@ fr: javascripts: confirm_dialog: "Êtes-vous sûr ?" + infinite_scroll: + no_more: "Pas d'autre messages." publisher: at_least_one_aspect: "Vous devez créer au moins un aspect" search_for: "Chercher {{name}}" @@ -31,3 +33,5 @@ fr: videos: unknown: "Type de vidéo inconnu" watch: "Voir cette vidéo sur {{provider}}" + web_sockets: + disconnected: "The websocket is closed; posts will no longer be streamed live." diff --git a/config/locales/javascript/javascript.gl.yml b/config/locales/javascript/javascript.gl.yml index 259b1718e08998886e9c273852992a0e409f5dc2..a43b0dbed7cba9cf82afa83bf7eac5773e358f8e 100644 --- a/config/locales/javascript/javascript.gl.yml +++ b/config/locales/javascript/javascript.gl.yml @@ -5,21 +5,21 @@ gl: javascripts: - confirm_dialog: "Seguro?" + confirm_dialog: "Está seguro?" publisher: - at_least_one_aspect: "Tes que publicalo polo menos nun aspecto" + at_least_one_aspect: "Ten que publicalo polo menos nun aspecto." search_for: "Buscar a {{name}}" shared: contact_list: - cannot_remove: "Non podes quitar esta persoa do aspecto. Se te queres desconectar dela tes que borrar o contacto." + cannot_remove: "Non pode quitar esta persoa do aspecto. Se non quere seguir compartindo con ela, elimÃnea como contacto." timeago: day: "un dÃa" days: "%d dÃas" - hour: "sobre unha hora" - hours: "sobre %d horas" - minute: "sobre un minuto" + hour: "arredor dunha hora" + hours: "arredor de %d horas" + minute: "arredor dun minuto" minutes: "%d minutos" - month: "sobre un mes" + month: "arredor dun mes" months: "%d meses" prefixAgo: "Hai" prefixFromNow: "" @@ -29,5 +29,5 @@ gl: year: "sobre un ano" years: "%d anos" videos: - unknown: "Tipo de video descoñecido" - watch: "Ver video en {{provider}}" + unknown: "Tipo de vÃdeo descoñecido" + watch: "Ver o vÃdeo en {{provider}}" diff --git a/config/locales/javascript/javascript.he.yml b/config/locales/javascript/javascript.he.yml index 5ddbb542e32695fa6abd4149e369dc9ce9f233c2..b6c8cb35ad6ddbdad8562752678eab6d394f99aa 100644 --- a/config/locales/javascript/javascript.he.yml +++ b/config/locales/javascript/javascript.he.yml @@ -6,6 +6,8 @@ he: javascripts: confirm_dialog: "בבטחה?" + infinite_scroll: + no_more: "×ין רשומות × ×•×¡×¤×•×ª." publisher: at_least_one_aspect: "עליך ×œ×¤×¨×¡× ×”×™×‘×˜ ×חד לפחות" search_for: "חיפוש ×חר {{name}}" @@ -31,3 +33,5 @@ he: videos: unknown: "סוג הוויד×ו ××™× ×• ידוע" watch: "צפייה בסרטון ויד×ו ×–×” ב×תר {{provider}}" + web_sockets: + disconnected: "The websocket is closed; posts will no longer be streamed live." diff --git a/config/locales/javascript/javascript.hu.yml b/config/locales/javascript/javascript.hu.yml index 160cdde517077d3f21619fd1944f3acedb826290..a2753e7beae9526f26e2fb801ff36292bbad573c 100644 --- a/config/locales/javascript/javascript.hu.yml +++ b/config/locales/javascript/javascript.hu.yml @@ -6,6 +6,8 @@ hu: javascripts: confirm_dialog: "Biztos vagy benne?" + infinite_scroll: + no_more: "Nincs több bejegyzés." publisher: at_least_one_aspect: "Minimum 1 csoportnak meg kell osztanod!" search_for: "{{name}} keresése." @@ -31,3 +33,5 @@ hu: videos: unknown: "Ismeretlen videó tipus" watch: "Videó megtekintése itt: {{provider}}" + web_sockets: + disconnected: "The websocket is closed; posts will no longer be streamed live." diff --git a/config/locales/javascript/javascript.id.yml b/config/locales/javascript/javascript.id.yml index a85a3befa955f698e58228d7510fbae8fbe8dfb6..74a1b23b12a2d0aed5d626b0453045543b379418 100644 --- a/config/locales/javascript/javascript.id.yml +++ b/config/locales/javascript/javascript.id.yml @@ -6,6 +6,8 @@ id: javascripts: confirm_dialog: "Are you sure?" + infinite_scroll: + no_more: "No more posts." publisher: at_least_one_aspect: "You must publish to at least one aspect" search_for: "Search for {{name}}" @@ -31,3 +33,5 @@ id: videos: unknown: "Unknown video type" watch: "Watch this video on {{provider}}" + web_sockets: + disconnected: "The websocket is closed; posts will no longer be streamed live." diff --git a/config/locales/javascript/javascript.is.yml b/config/locales/javascript/javascript.is.yml index 78044ee7cb5ad6a566c56140de4d4665a893f658..1fbb83ba040b27d747bae85a31bcb1fd5bc2be5a 100644 --- a/config/locales/javascript/javascript.is.yml +++ b/config/locales/javascript/javascript.is.yml @@ -6,6 +6,8 @@ is: javascripts: confirm_dialog: "Ertu viss?" + infinite_scroll: + no_more: "No more posts." publisher: at_least_one_aspect: "You must publish to at least one aspect" search_for: "Search for {{name}}" @@ -31,3 +33,5 @@ is: videos: unknown: "Óþekkt vÃdeó tegund" watch: "Horfa á þetta vÃdeó á {{provider}}" + web_sockets: + disconnected: "The websocket is closed; posts will no longer be streamed live." diff --git a/config/locales/javascript/javascript.it.yml b/config/locales/javascript/javascript.it.yml index 2ce16a5649b15c6ba384ef43e02edae5eb6ce588..b538f9c611ab9c0024f49848a9ac1a447b14fc17 100644 --- a/config/locales/javascript/javascript.it.yml +++ b/config/locales/javascript/javascript.it.yml @@ -6,8 +6,10 @@ it: javascripts: confirm_dialog: "Sei sicuro?" + infinite_scroll: + no_more: "Non ci sono altri post." publisher: - at_least_one_aspect: "You must publish to at least one aspect" + at_least_one_aspect: "Devi condividere almeno con un aspetto" search_for: "Ricerca per {{name}}" shared: contact_list: @@ -31,3 +33,5 @@ it: videos: unknown: "Tipo di video sconosciuto" watch: "Guarda questo video su {{provider}}" + web_sockets: + disconnected: "The websocket is closed; posts will no longer be streamed live." diff --git a/config/locales/javascript/javascript.ja.yml b/config/locales/javascript/javascript.ja.yml index 274f87fe56eed2a9c1cb2b063e32c0b5c5945da2..8cc5332b8a76460975eea847202ad56e0d2afe4d 100644 --- a/config/locales/javascript/javascript.ja.yml +++ b/config/locales/javascript/javascript.ja.yml @@ -1,18 +1,37 @@ -ja: - javascripts: - timeago: +# Copyright (c) 2010, Diaspora Inc. This file is +# licensed under the Affero General Public License version 3 or later. See +# the COPYRIGHT file. + + +ja: + javascripts: + confirm_dialog: "本当ã«ã„ã„ã§ã™ã‹ã€‚" + infinite_scroll: + no_more: "投稿ã¯ä»¥ä¸Šã§ã™ã€‚" + publisher: + at_least_one_aspect: "å°‘ãªãã¦ã‚‚一ã¤ã®ã‚¢ã‚¹ãƒšã‚¯ãƒˆã¸æŠ•ç¨¿ã—ãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“" + search_for: "{{name}}を検索ã™ã‚‹" + shared: + contact_list: + cannot_remove: "残り最後ã®ã‚¢ã‚¹ãƒšã‚¯ãƒˆã‹ã‚‰äººã‚’除外ã™ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“。(人ã¨ã®ã¤ãªãŒã‚Šã‚’解除ã—ãŸã„å ´åˆã¯é€£çµ¡å…ˆã‚’削除ã—ã¦ãã ã•ã„。)" + timeago: + day: "1æ—¥" + days: "%dæ—¥" + hour: "大体1時間" + hours: "大体%d時間" + minute: "ç´„1分" + minutes: "%d分" + month: "大体1ヶ月" + months: "%dヶ月" prefixAgo: "" prefixFromNow: "今ã‹ã‚‰" + seconds: "1分未満" suffixAgo: "å‰" suffixFromNow: "後" - seconds: "ã»ã‚“ã®æ•°ç§’" - minute: "約一分" - minutes: "%d 分" - hour: "大体一時間" - hours: "大体 %d 時間ä½" - day: "一日" - days: "%d æ—¥ã»ã©" - month: "大体一ヶ月" - months: "%d ヶ月ã»ã©" - year: "ä¸åº¦ä¸€å¹´ï¼ˆè™Žèˆžæµï½—)" - years: "%d å¹´" + year: "大体1å¹´" + years: "%då¹´" + videos: + unknown: "å‹•ç”»ã®ç¨®é¡žãŒä¸æ˜Žã§ã™" + watch: "{{provider}}ã§å‹•ç”»ã‚’視è´ã™ã‚‹" + web_sockets: + disconnected: "接続ãŒè§£é™¤ã•ã‚Œã¾ã—ãŸã€‚投稿ã®ãƒªã‚¢ãƒ«ã‚¿ã‚¤ãƒ æ›´æ–°ã‚’ä¸æ–ã—ã¾ã™ã€‚" diff --git a/config/locales/javascript/javascript.ko.yml b/config/locales/javascript/javascript.ko.yml index dfffeda5a0879704f34b232ec3054a28d17c5699..26b2c809ab8000cc013ebca540a5c326b10909d9 100644 --- a/config/locales/javascript/javascript.ko.yml +++ b/config/locales/javascript/javascript.ko.yml @@ -1,16 +1,37 @@ -ko: - javascripts: - timeago: - suffixAgo: "ì „" - suffixFromNow: "후" - seconds: "1분 ì´ë‚´" - minute: "1분" - minutes: "%d분" - hour: "1시간" - hours: "%d시간" +# Copyright (c) 2010, Diaspora Inc. This file is +# licensed under the Affero General Public License version 3 or later. See +# the COPYRIGHT file. + + +ko: + javascripts: + confirm_dialog: "확실합니까?" + infinite_scroll: + no_more: "메시지가 ë” ì—†ìŠµë””ë‹¤." + publisher: + at_least_one_aspect: "ê³µìœ í•˜ë ¤ë©´ ì ì–´ë„ í•œ ì• ìŠ¤íŽ™ì„ ê³¨ë¼ì•¼ 합니다." + search_for: "{{name}} 검색" + shared: + contact_list: + cannot_remove: "ëª¨ë“ ì»¨íƒì€ ì ì–´ë„ í•œ ì• ìŠ¤íŽ™ì— ì†í•´ì•¼ 합니다. ê³µìœ ë¥¼ ëŠê³ 싶다면 컨íƒì„ 지워야 합니다." + timeago: day: "하루" days: "%dì¼" - month: "한달" - months: "%d달" - year: "1ë…„" + hour: "약 í•œ 시간" + hours: "약 %d시간" + minute: "몇 분" + minutes: "%d분" + month: "약 í•œ 달" + months: "%d개월" + prefixAgo: "" + prefixFromNow: "지금부터" + seconds: "방금" + suffixAgo: "ì „" + suffixFromNow: "" + year: "í•œ í•´" years: "%dë…„" + videos: + unknown: "ì•Œ 수 없는 ë™ì˜ìƒ 형ì‹" + watch: "ë™ì˜ìƒì„ {{provider}}ì—ì„œ 보기" + web_sockets: + disconnected: "ì›¹ì†Œì¼“ì´ ë‹«í˜”ìŠµë‹ˆë‹¤. 앞으로는 ê³µìœ ë¬¼ì´ ì‹¤ì‹œê°„ìœ¼ë¡œ ì œê³µë˜ì§€ 않습니다." diff --git a/config/locales/javascript/javascript.ml.yml b/config/locales/javascript/javascript.ml.yml index daa3d10eef88678f0fa9b3f01b3a103ce9ce978b..645cb8cf749eb572ed8f1304ddfd1f9b76463093 100644 --- a/config/locales/javascript/javascript.ml.yml +++ b/config/locales/javascript/javascript.ml.yml @@ -6,6 +6,8 @@ ml: javascripts: confirm_dialog: "Are you sure?" + infinite_scroll: + no_more: "No more posts." publisher: at_least_one_aspect: "You must publish to at least one aspect" search_for: "Search for {{name}}" @@ -31,3 +33,5 @@ ml: videos: unknown: "Unknown video type" watch: "Watch this video on {{provider}}" + web_sockets: + disconnected: "The websocket is closed; posts will no longer be streamed live." diff --git a/config/locales/javascript/javascript.nb.yml b/config/locales/javascript/javascript.nb.yml index 0f0cb5ac294c2d580e6aad5a11bbdb8c242fd5b4..3e1962e142049a7ee7f535e3fdd390aab53fbbed 100644 --- a/config/locales/javascript/javascript.nb.yml +++ b/config/locales/javascript/javascript.nb.yml @@ -6,6 +6,8 @@ nb: javascripts: confirm_dialog: "Er du sikker?" + infinite_scroll: + no_more: "No more posts." publisher: at_least_one_aspect: "Du mÃ¥ poste til minst ett aspekt" search_for: "Søk etter {{name}}" @@ -31,3 +33,5 @@ nb: videos: unknown: "Ukjent videotype" watch: "Se denne videoen pÃ¥ {{provider}}" + web_sockets: + disconnected: "The websocket is closed; posts will no longer be streamed live." diff --git a/config/locales/javascript/javascript.nl.yml b/config/locales/javascript/javascript.nl.yml index c47466fe2836ba6a052932234565ddbfade2d199..f8a4f01dcbaca7d3079ea2f5e07e9188a6ec3efc 100644 --- a/config/locales/javascript/javascript.nl.yml +++ b/config/locales/javascript/javascript.nl.yml @@ -6,6 +6,8 @@ nl: javascripts: confirm_dialog: "Weet je het zeker?" + infinite_scroll: + no_more: "No more posts." publisher: at_least_one_aspect: "Je moet op zijn minst één aspect publiceren" search_for: "Zoek naar {{name}}" @@ -31,3 +33,5 @@ nl: videos: unknown: "Onbekend video type" watch: "Bekijk deze video op {{provider}}" + web_sockets: + disconnected: "The websocket is closed; posts will no longer be streamed live." diff --git a/config/locales/javascript/javascript.pl.yml b/config/locales/javascript/javascript.pl.yml index 3707e31a0e64b142b2102a48355d0f48a889e8ae..f0628ffe6b54c2289287d10c8b4ebb168a5493c1 100644 --- a/config/locales/javascript/javascript.pl.yml +++ b/config/locales/javascript/javascript.pl.yml @@ -6,8 +6,10 @@ pl: javascripts: confirm_dialog: "Czy @{m,f:jesteÅ›|n:na}{ pew}{m:ien|f:na|n:no}?" + infinite_scroll: + no_more: "No more posts." publisher: - at_least_one_aspect: "You must publish to at least one aspect" + at_least_one_aspect: "Musisz udostÄ™pnić dla co najmniej jednego aspektu" search_for: "Szukaj: {{name}}" shared: contact_list: @@ -31,3 +33,5 @@ pl: videos: unknown: "Nieznany typ wideo" watch: "OglÄ…daj to wideo na {{provider}}" + web_sockets: + disconnected: "The websocket is closed; posts will no longer be streamed live." diff --git a/config/locales/javascript/javascript.pt-BR.yml b/config/locales/javascript/javascript.pt-BR.yml index b0286c822e6d876e5de22da44f0ad72978209ca4..a91ccdf6cf7e8ae2cc11e110f44fba1711e8d3c1 100644 --- a/config/locales/javascript/javascript.pt-BR.yml +++ b/config/locales/javascript/javascript.pt-BR.yml @@ -6,6 +6,8 @@ pt-BR: javascripts: confirm_dialog: "Tem certeza?" + infinite_scroll: + no_more: "No more posts." publisher: at_least_one_aspect: "You must publish to at least one aspect" search_for: "Search for {{name}}" @@ -31,3 +33,5 @@ pt-BR: videos: unknown: "Tipo de vÃdeo desconhecido" watch: "Assista este vÃdeo no {{provider}}" + web_sockets: + disconnected: "The websocket is closed; posts will no longer be streamed live." diff --git a/config/locales/javascript/javascript.pt-PT.yml b/config/locales/javascript/javascript.pt-PT.yml index 53fc7d064b7ff1359617344cc501518c6b020397..5b7ccc7daef3e91680640ae74fc5eae3c8e0c0b4 100644 --- a/config/locales/javascript/javascript.pt-PT.yml +++ b/config/locales/javascript/javascript.pt-PT.yml @@ -6,6 +6,8 @@ pt-PT: javascripts: confirm_dialog: "Are you sure?" + infinite_scroll: + no_more: "No more posts." publisher: at_least_one_aspect: "You must publish to at least one aspect" search_for: "Search for {{name}}" @@ -31,3 +33,5 @@ pt-PT: videos: unknown: "Unknown video type" watch: "Watch this video on {{provider}}" + web_sockets: + disconnected: "The websocket is closed; posts will no longer be streamed live." diff --git a/config/locales/javascript/javascript.ro.yml b/config/locales/javascript/javascript.ro.yml index 71507a52a4c0e082b2aef4d14f5dd52b978abc26..7dd18f5087330cb3485bc0451ab9ef68f3b5662c 100644 --- a/config/locales/javascript/javascript.ro.yml +++ b/config/locales/javascript/javascript.ro.yml @@ -6,6 +6,8 @@ ro: javascripts: confirm_dialog: "EÅŸti sigur?" + infinite_scroll: + no_more: "No more posts." publisher: at_least_one_aspect: "You must publish to at least one aspect" search_for: "Search for {{name}}" @@ -31,3 +33,5 @@ ro: videos: unknown: "Format de video necunoscut" watch: "Vizualizează acest video pe {{provider}}" + web_sockets: + disconnected: "The websocket is closed; posts will no longer be streamed live." diff --git a/config/locales/javascript/javascript.ru.yml b/config/locales/javascript/javascript.ru.yml index ae0c1d1afb46f264cea802f9b76064ef794f2976..1f9e99644f69d784f4862478674f17858e991e42 100644 --- a/config/locales/javascript/javascript.ru.yml +++ b/config/locales/javascript/javascript.ru.yml @@ -6,6 +6,8 @@ ru: javascripts: confirm_dialog: "Ð’Ñ‹ уверенны? " + infinite_scroll: + no_more: "Сообщений больше нет." publisher: at_least_one_aspect: "Вам надо минимум один аÑпект Ñоздать" search_for: "ИÑкать {{name}}" @@ -31,3 +33,5 @@ ru: videos: unknown: "ÐеизвеÑтный видеоформат" watch: "Смотреть Ñто видео на {{provider}}" + web_sockets: + disconnected: "The websocket is closed; posts will no longer be streamed live." diff --git a/config/locales/javascript/javascript.sk.yml b/config/locales/javascript/javascript.sk.yml index a55234d63033b1c78c55b473c2eabe7f342e031e..afcdc24c21362d9eb59f68247b3df9c86ed72ae8 100644 --- a/config/locales/javascript/javascript.sk.yml +++ b/config/locales/javascript/javascript.sk.yml @@ -6,6 +6,8 @@ sk: javascripts: confirm_dialog: "Ste si istý?" + infinite_scroll: + no_more: "No more posts." publisher: at_least_one_aspect: "You must publish to at least one aspect" search_for: "HľadaÅ¥ {{name}}" @@ -31,3 +33,5 @@ sk: videos: unknown: "Neznámy typ videa" watch: "Pozrite sa na toto video na {{provider}}" + web_sockets: + disconnected: "The websocket is closed; posts will no longer be streamed live." diff --git a/config/locales/javascript/javascript.sl.yml b/config/locales/javascript/javascript.sl.yml index 345bdfada6cd8a346bba02594451e3727de95f19..bb3d86b80936ac47cab2377828bbc0e4aa95ae60 100644 --- a/config/locales/javascript/javascript.sl.yml +++ b/config/locales/javascript/javascript.sl.yml @@ -6,6 +6,8 @@ sl: javascripts: confirm_dialog: "Are you sure?" + infinite_scroll: + no_more: "No more posts." publisher: at_least_one_aspect: "You must publish to at least one aspect" search_for: "Search for {{name}}" @@ -31,3 +33,5 @@ sl: videos: unknown: "Unknown video type" watch: "Watch this video on {{provider}}" + web_sockets: + disconnected: "The websocket is closed; posts will no longer be streamed live." diff --git a/config/locales/javascript/javascript.sv.yml b/config/locales/javascript/javascript.sv.yml index 51ec24e6877a88d8aff169b5bad5f542d55718c2..48002e2b784ff852c5f09641fcc035d21b6fc5e1 100644 --- a/config/locales/javascript/javascript.sv.yml +++ b/config/locales/javascript/javascript.sv.yml @@ -6,6 +6,8 @@ sv: javascripts: confirm_dialog: "Är du säker?" + infinite_scroll: + no_more: "No more posts." publisher: at_least_one_aspect: "Du mÃ¥ste publicera till minst en aspekt." search_for: "Sök efter {{name}}" @@ -31,3 +33,5 @@ sv: videos: unknown: "Okänd videotyp" watch: "Se denhär videon pÃ¥ {{provider}}" + web_sockets: + disconnected: "The websocket is closed; posts will no longer be streamed live." diff --git a/config/locales/javascript/javascript.tr.yml b/config/locales/javascript/javascript.tr.yml index cfbaffbc134baaa533723d245c1dcac7e163b987..64a32f6cc23cc7ad90a5d23993fac1a7c2bc683e 100644 --- a/config/locales/javascript/javascript.tr.yml +++ b/config/locales/javascript/javascript.tr.yml @@ -6,6 +6,8 @@ tr: javascripts: confirm_dialog: "Emin misiniz?" + infinite_scroll: + no_more: "No more posts." publisher: at_least_one_aspect: "You must publish to at least one aspect" search_for: "{{name}}'i ara" @@ -31,3 +33,5 @@ tr: videos: unknown: "Bilinmeyen video tipi" watch: "Bu videoyu {{provider}}'da izle" + web_sockets: + disconnected: "The websocket is closed; posts will no longer be streamed live." diff --git a/config/locales/javascript/javascript.zh-CN.yml b/config/locales/javascript/javascript.zh-CN.yml new file mode 100644 index 0000000000000000000000000000000000000000..5601ec70afb28964ecc894cb4f2a82a1f038945f --- /dev/null +++ b/config/locales/javascript/javascript.zh-CN.yml @@ -0,0 +1,37 @@ +# Copyright (c) 2010, Diaspora Inc. This file is +# licensed under the Affero General Public License version 3 or later. See +# the COPYRIGHT file. + + +zh-CN: + javascripts: + confirm_dialog: "ä½ ç¡®å®šå—?" + infinite_scroll: + no_more: "No more posts." + publisher: + at_least_one_aspect: "å‘布时请选择至少一个情景" + search_for: "æœç´¢ {{name}}" + shared: + contact_list: + cannot_remove: "æ— æ³•å°†å¥½å‹ä»Žä»–所在的最åŽä¸€ä¸ªæƒ…景ä¸ç§»é™¤ã€‚(å¦‚æžœä½ æƒ³ä¸Žè¿™ä¸ªäººæ–ç»è¿žç»“ï¼Œä½ å¯ä»¥è§£é™¤ä¸Žä»–的好å‹å…³ç³»ã€‚)" + timeago: + day: "1天" + days: "%d天" + hour: "约1å°æ—¶" + hours: "约%då°æ—¶" + minute: "约1分钟" + minutes: "%d分钟" + month: "约1个月" + months: "%d个月" + prefixAgo: "" + prefixFromNow: "" + seconds: "少于1分钟" + suffixAgo: "å‰" + suffixFromNow: "åŽ" + year: "约1å¹´" + years: "%då¹´" + videos: + unknown: "æœªçŸ¥è§†é¢‘æ ¼å¼" + watch: "在 {{provider}} 上看观看视频" + web_sockets: + disconnected: "The websocket is closed; posts will no longer be streamed live." diff --git a/config/locales/javascript/javascript.zh-TW.yml b/config/locales/javascript/javascript.zh-TW.yml index 8c887dd792b8829f1b5f72a83e80103444bc1cf9..01c27fd3fe38696d6c05698ddcdcd4fc3be43002 100644 --- a/config/locales/javascript/javascript.zh-TW.yml +++ b/config/locales/javascript/javascript.zh-TW.yml @@ -6,6 +6,8 @@ zh-TW: javascripts: confirm_dialog: "ä½ ç¢ºå®šå—Ž?" + infinite_scroll: + no_more: "沒有貼文了." publisher: at_least_one_aspect: "發表時請至少é¸æ“‡ä¸€å€‹é¢å‘" search_for: "æœå°‹ {{name}}" @@ -31,3 +33,5 @@ zh-TW: videos: unknown: "ä¸æ˜Žçš„影片類別" watch: "從 {{provider}} 看這部影片" + web_sockets: + disconnected: "The websocket is closed; posts will no longer be streamed live." diff --git a/config/locales/javascript/javascript.zh.yml b/config/locales/javascript/javascript.zh.yml deleted file mode 100644 index 7c75b4a05e52cee79d48856833e83884309db3b9..0000000000000000000000000000000000000000 --- a/config/locales/javascript/javascript.zh.yml +++ /dev/null @@ -1,33 +0,0 @@ -# Copyright (c) 2010, Diaspora Inc. This file is -# licensed under the Affero General Public License version 3 or later. See -# the COPYRIGHT file. - - -zh: - javascripts: - confirm_dialog: "Are you sure?" - publisher: - at_least_one_aspect: "You must publish to at least one aspect" - search_for: "Search for {{name}}" - shared: - contact_list: - cannot_remove: "Cannot remove person from last aspect. (If you want to disconnect from this person you must remove contact.)" - timeago: - day: "1 天" - days: "%d 天" - hour: "大约 1 å°æ—¶" - hours: "大约 %d å°æ—¶" - minute: "大约 1 分钟" - minutes: "%d 分钟" - month: "大约 1 个月" - months: "%d 月" - prefixAgo: "" - prefixFromNow: "从现在开始" - seconds: "ä¸åˆ° 1 分钟" - suffixAgo: "之å‰" - suffixFromNow: "" - year: "大约 1 å¹´" - years: "%d å¹´" - videos: - unknown: "Unknown video type" - watch: "Watch this video on {{provider}}" diff --git a/config/locales/rails-i18n/README b/config/locales/rails-i18n/README.md similarity index 100% rename from config/locales/rails-i18n/README rename to config/locales/rails-i18n/README.md diff --git a/config/locales/rails-i18n/ar.yml b/config/locales/rails-i18n/ar.yml index 4488c5cfa0573093a92ee0bee229a8727bdd17d8..2fdd026622805b30142a30f57321d971f1b9aff8 100644 --- a/config/locales/rails-i18n/ar.yml +++ b/config/locales/rails-i18n/ar.yml @@ -1,4 +1,4 @@ -# Arabic translations for Ruby on Rails +# Arabic translations for Ruby on Rails # by Rida Al Barazi (me@rida.me) # updated by Ahmed Hazem (nardgo@gmail.com) # Rails 3 edit by rbjarnason @@ -86,10 +86,10 @@ format: "%n %u" units: unit: "" - thousand: "ألÙ" - million: "مليون" - billion: "مليار" - trillion: "تريليون" + thousand: أل٠+ million: مليون + billion: مليار + trillion: تريليون quadrillion: الكدريليون رقم datetime: @@ -183,4 +183,4 @@ <<: *errors_messages full_messages: - format: "%{attribute}%{message}" + format: "%{attribute} %{message}" diff --git a/config/locales/rails-i18n/bg.yml b/config/locales/rails-i18n/bg.yml index d2e674a726a33f84daede90c717b7f342cfc256e..1c13a21c867a0505c2fc1c8ca4c94cb9cec720f5 100644 --- a/config/locales/rails-i18n/bg.yml +++ b/config/locales/rails-i18n/bg.yml @@ -6,21 +6,21 @@ # See http://github.com/svenfuchs/rails-i18n/tree/master/rails%2Flocale for starting points. bg: - + # ===== Rails Specific =========================================================================== - + date: formats: default: "%d.%m.%Y" short: "%d %b" long: "%d %B %Y" - + day_names: [неделÑ, понеделник, вторник, ÑÑ€Ñда, четвъртък, петък, Ñъбота] - standalone_day_names: [ÐеделÑ, Понеделник, Вторник, СрÑда, Четвъртък, Петък, Събота] - abbr_day_names: [Ðед, Пон, Ð’Ñ‚, Ср, Чет, Пет, Съб] - + standalone_day_names: [неделÑ, понеделник, вторник, ÑÑ€Ñда, четвъртък, петък, Ñъбота] + abbr_day_names: [нед, пон, вт, ÑÑ€, чет, пет, Ñъб] + # should start with nil cause there is no 0-th month - month_names: [~, Януари, Февруари, Март, Ðприл, Май, Юни, Юли, ÐвгуÑÑ‚, Септември, Октомври, Ðоември, Декември] + month_names: [~, Ñнуари, февруари, март, април, май, юни, юли, авгуÑÑ‚, Ñептември, октомври, ноември, декември] abbr_month_names: [~, Ñну., фев., март, апр., май, юни, юли, авг., Ñеп., окт., ноем., дек.] order: @@ -33,16 +33,16 @@ bg: default: "%a, %d %b %Y, %H:%M:%S %z" short: "%d %b, %H:%M" long: "%d %B %Y, %H:%M" - + am: "преди обÑд" pm: "Ñледобед" - + number: format: separator: "." delimiter: "" precision: 3 - + currency: format: format: "%n %u" @@ -50,15 +50,15 @@ bg: separator: "." delimiter: "" precision: 2 - + percentage: format: delimiter: "" - + precision: format: delimiter: "" - + human: format: delimiter: "" @@ -75,7 +75,7 @@ bg: mb: "МБ" gb: "ГБ" tb: "ТБ" - + datetime: distance_in_words: half_a_minute: "половин минута" @@ -141,7 +141,7 @@ bg: hour: "ЧаÑ" minute: "Минута" second: "Секунда" - + activemodel: errors: template: @@ -150,12 +150,12 @@ bg: other: "%{count} грешки ÑпрÑха %{model} да бъде запазен" # The variable :count is also available body: "Имаше проблем Ñ Ñледните полета:" - + support: select: # default value for :prompt => true in FormOptionsHelper prompt: "ÐœÐ¾Ð»Ñ Ð¾Ñ‚Ð±ÐµÐ»ÐµÐ¶ÐµÑ‚Ðµ" - + activerecord: errors: template: @@ -165,7 +165,7 @@ bg: many: "%{model}: запиÑа е неуÑпешен заради %{count} грешки" other: "%{model}: запиÑа е неуÑпешен заради %{count} грешки" body: "Възникнаха проблеми при Ñледните полета:" - + messages: inclusion: "Ñъдържа непредвидена ÑтойноÑÑ‚" exclusion: "Ñъдържа предварително зададена ÑтойноÑÑ‚" @@ -199,9 +199,9 @@ bg: odd: "може да е единÑтвено четно" even: "може да е единÑтвено нечетно" record_invalid: "имаше грешки: %{errors}" - + # ===== I18n Specific ============================================================================ - + i18n: transliterate: rule: @@ -265,11 +265,11 @@ bg: Ю: "Yu" Ñ: "ya" Я: "Ya" - + # ===== Paginate Specific ======================================================================== - + pagination: previous: "« предишна" next: "Ñледваща »" - + # ===== Application Specific ===================================================================== diff --git a/config/locales/rails-i18n/bn-IN.yml b/config/locales/rails-i18n/bn-IN.yml index 0c4230f32f5fda16bfdd5c64373a5c3360737d7b..78f215df4572ae1aa63e1f7110fd6993db3ede6d 100644 --- a/config/locales/rails-i18n/bn-IN.yml +++ b/config/locales/rails-i18n/bn-IN.yml @@ -7,9 +7,9 @@ bn-IN: # These are also the defaults for 'currency', 'percentage', 'precision', and 'human' format: # Sets the separator between the units, for more precision (e.g. 1.0 / 2.0 == 0.5) - separator: "." + separator: "." # Delimets thousands (e.g. 1,000,000 is a million) (always in groups of three) - delimiter: "," + delimiter: "," # Number of decimals, behind the separator (1 with a precision of 2 gives: 1.00) precision: 2 @@ -17,35 +17,35 @@ bn-IN: currency: format: # Where is the currency sign? %u is the currency unit, %n the number (default: $5.00) - format: "%u %n" - unit: "Rs." + format: "%u %n" + unit: "Rs." # These three are to override number.format and are optional - separator: "." - delimiter: "," + separator: "." + delimiter: "," precision: 2 # Used in number_to_percentage() percentage: format: # These three are to override number.format and are optional - # separator: - delimiter: "" - # precision: + # separator: + delimiter: "" + # precision: # Used in number_to_precision() precision: format: # These three are to override number.format and are optional # separator: - delimiter: "" + delimiter: "" # precision: # Used in number_to_human_size() human: format: # These three are to override number.format and are optional - # separator: - delimiter: "" + # separator: + delimiter: "" precision: 1 # Rails <= v2.2.2 # storage_units: [Bytes, KB, MB, GB, TB] @@ -64,36 +64,36 @@ bn-IN: # Used in distance_of_time_in_words(), distance_of_time_in_words_to_now(), time_ago_in_words() datetime: distance_in_words: - half_a_minute: "অারà§à¦§à§‡à¦• মিনিট" + half_a_minute: "অারà§à¦§à§‡à¦• মিনিট" less_than_x_seconds: - one: "১ সেকেনà§à¦¡à¦° কম " + one: "১ সেকেনà§à¦¡à¦° কম " other: "%{count} সেকেনà§à¦¡à§‡à¦° কম" x_seconds: - one: "১ সেকেনà§à¦¡" - other: "%{count} সেকেনà§à¦¡" + one: "১ সেকেনà§à¦¡" + other: "%{count} সেকেনà§à¦¡" less_than_x_minutes: - one: "১ মিনিটের কম" - other: "%{count} মিনিটের কম" + one: "১ মিনিটের কম" + other: "%{count} মিনিটের কম" x_minutes: - one: "১ মিনিট" - other: "%{count} মিনিট" + one: "১ মিনিট" + other: "%{count} মিনিট" about_x_hours: - one: "পà§à¦°à¦¾à§Ÿ ১ ঘনà§à¦Ÿà¦¾" - other: "পà§à¦°à¦¾à§Ÿ %{count} ঘনà§à¦Ÿà¦¾" + one: "পà§à¦°à¦¾à§Ÿ ১ ঘনà§à¦Ÿà¦¾" + other: "পà§à¦°à¦¾à§Ÿ %{count} ঘনà§à¦Ÿà¦¾" x_days: - one: "১ দিন" - other: "%{count} দিন" + one: "১ দিন" + other: "%{count} দিন" about_x_months: - one: "পà§à¦°à¦¾à§Ÿ ১ মাস" - other: "পà§à¦°à¦¾à§Ÿ %{count} মাস" + one: "পà§à¦°à¦¾à§Ÿ ১ মাস" + other: "পà§à¦°à¦¾à§Ÿ %{count} মাস" x_months: - one: "১ মাস" - other: "%{count} মাস" + one: "১ মাস" + other: "%{count} মাস" about_x_years: - one: "পà§à¦°à¦¾à§Ÿ ১ বছর" - other: "পà§à¦°à¦¾à§Ÿ %{count} বছর" + one: "পà§à¦°à¦¾à§Ÿ ১ বছর" + other: "পà§à¦°à¦¾à§Ÿ %{count} বছর" over_x_years: - one: "১ বছরের বেশি" + one: "১ বছরের বেশি" other: "%{count} বছরের বেশি" prompts: year: "বছর" @@ -101,23 +101,23 @@ bn-IN: day: "দিন" hour: "ঘনà§à¦Ÿà¦¾" minute: "মিনিট" - second: "সেকেনà§à¦¡" + second: "সেকেনà§à¦¡" activerecord: errors: template: header: - one: "১ টি তà§à¦°à§à¦Ÿà¦¿à¦° কারনে %{model} সংরকà§à¦·à¦¨ করা সমà§à¦à¦¬ হয়নি" - other: "%{count} টি তà§à¦°à§à¦Ÿà¦¿à¦° কারনে %{model} সংরকà§à¦·à¦¨ করা সমà§à¦à¦¬ হয়নি" + one: "১ টি তà§à¦°à§à¦Ÿà¦¿à¦° কারনে %{model} সংরকà§à¦·à¦¨ করা সমà§à¦à¦¬ হয়নি" + other: "%{count} টি তà§à¦°à§à¦Ÿà¦¿à¦° কারনে %{model} সংরকà§à¦·à¦¨ করা সমà§à¦à¦¬ হয়নি" # The variable :count is also available - body: "à¦à¦‡ ফিলà§à¦¡à¦—à§à¦²à§‹à¦¤à§‡ কিছৠসমসà§à¦¯à¦¾ দেখা দিয়েছে:" + body: "à¦à¦‡ ফিলà§à¦¡à¦—à§à¦²à§‹à¦¤à§‡ কিছৠসমসà§à¦¯à¦¾ দেখা দিয়েছে:" # The values :model, :attribute and :value are always available for interpolation # The value :count is available when applicable. Can be used for pluralization. messages: - inclusion: "লিসà§à¦Ÿà§‡ অনà§à¦¤à¦°à§à¦à§à¦•à§à¦¤ নয়" - exclusion: "রিসারà§à¦ করা অাছে" - invalid: "সঠিক নয়" + inclusion: "লিসà§à¦Ÿà§‡ অনà§à¦¤à¦°à§à¦à§à¦•à§à¦¤ নয়" + exclusion: "রিসারà§à¦ করা অাছে" + invalid: "সঠিক নয়" confirmation: "অনà§à¦®à§‹à¦¦à¦¨à§‡à¦° সঙà§à¦—ে মিলছে না" accepted: "গà§à¦°à¦¾à¦¹à§à¦¯ করতে হবে" empty: "খালি রাখা যাবে না" @@ -149,8 +149,8 @@ bn-IN: # When no format has been given, it uses default. # You can provide other formats here if you like! default: "%e/%m/%Y" - short: "%e de %b" - long: "%e de %B de %Y" + short: "%e de %b" + long: "%e de %B de %Y" day_names: [রবিবার, সোমবার, মঙà§à¦—লবার, বà§à¦§à¦¬à¦¾à¦°, বৃহসà§à¦ªà¦¤à¦¿à¦¬à¦¾à¦°, শà§à¦•à§à¦°à¦¬à¦¾à¦°, শনিবার] abbr_day_names: [রবিবার, সোমবার, মঙà§à¦—লবার, বà§à¦§à¦¬à¦¾à¦°, বৃহসà§à¦ªà¦¤à¦¿à¦¬à¦¾à¦°, শà§à¦•à§à¦°à¦¬à¦¾à¦°, শনিবার] @@ -167,10 +167,10 @@ bn-IN: time: formats: default: "%A, %e de %B de %Y %H:%M:%S %z" - short: "%e de %b %H:%M" - long: "%e de %B de %Y %H:%M" - am: "am" - pm: "pm" + short: "%e de %b %H:%M" + long: "%e de %B de %Y %H:%M" + am: "am" + pm: "pm" # Used in array.to_sentence. support: diff --git a/config/locales/rails-i18n/ca.yml b/config/locales/rails-i18n/ca.yml index dc5d236302ca18ee3f639ccb8a1039b8ed331f21..6c1b3950e41582c3b9e7a6c1ae7d1dc585b703c8 100644 --- a/config/locales/rails-i18n/ca.yml +++ b/config/locales/rails-i18n/ca.yml @@ -1,51 +1,51 @@ # Catalan translations for Rails # by Emili Parreño (emili@eparreno.com - www.eparreno.com) - + ca: number: # Used in number_with_delimiter() # These are also the defaults for 'currency', 'percentage', 'precision', and 'human' format: # Sets the separator between the units, for more precision (e.g. 1.0 / 2.0 == 0.5) - separator: "," + separator: "," # Delimets thousands (e.g. 1,000,000 is a million) (always in groups of three) - delimiter: "." + delimiter: "." # Number of decimals, behind the separator (1 with a precision of 2 gives: 1.00) precision: 3 - + # Used in number_to_currency() currency: format: # Where is the currency sign? %u is the currency unit, %n the number (default: $5.00) - format: "%n %u" - unit: "€" + format: "%n %u" + unit: "€" # These three are to override number.format and are optional - separator: "," - delimiter: "." + separator: "," + delimiter: "." precision: 2 - + # Used in number_to_percentage() percentage: format: # These three are to override number.format and are optional - # separator: - delimiter: "" - # precision: - + # separator: + delimiter: "" + # precision: + # Used in number_to_precision() precision: format: # These three are to override number.format and are optional # separator: - delimiter: "" + delimiter: "" # precision: - + # Used in number_to_human_size() human: format: # These three are to override number.format and are optional - # separator: - delimiter: "" + # separator: + delimiter: "" precision: 1 storage_units: # Storage units output formatting. @@ -59,57 +59,57 @@ ca: mb: "MB" gb: "GB" tb: "TB" - + # Used in distance_of_time_in_words(), distance_of_time_in_words_to_now(), time_ago_in_words() datetime: distance_in_words: - half_a_minute: "mig minut" + half_a_minute: "mig minut" less_than_x_seconds: - one: "menys d'1 segon" + one: "menys d'1 segon" other: "menys de %{count} segons" x_seconds: - one: "1 segon" - other: "%{count} segons" + one: "1 segon" + other: "%{count} segons" less_than_x_minutes: - one: "menys d'1 minut" - other: "menys de %{count} minuts" + one: "menys d'1 minut" + other: "menys de %{count} minuts" x_minutes: - one: "1 minut" - other: "%{count} minuts" + one: "1 minut" + other: "%{count} minuts" about_x_hours: - one: "aproximadament 1 hora" - other: "aproximadament %{count} hores" + one: "aproximadament 1 hora" + other: "aproximadament %{count} hores" x_days: - one: "1 dia" - other: "%{count} dies" + one: "1 dia" + other: "%{count} dies" about_x_months: - one: "aproximadament 1 mes" - other: "aproximadament %{count} mesos" + one: "aproximadament 1 mes" + other: "aproximadament %{count} mesos" x_months: - one: "1 mes" - other: "%{count} mesos" + one: "1 mes" + other: "%{count} mesos" about_x_years: - one: "aproximadament 1 any" - other: "aproximadament %{count} anys" + one: "aproximadament 1 any" + other: "aproximadament %{count} anys" over_x_years: - one: "més d'1 any" - other: "més de %{count} anys" - + one: "més d'1 any" + other: "més de %{count} anys" + activerecord: errors: template: header: - one: "No s'ha pogut desar aquest/a %{model} perquè hi ha 1 error" - other: "No s'ha pogut desar aquest/a %{model} perquè hi ha hagut %{count} errors" + one: "No s'ha pogut desar aquest/a %{model} perquè hi ha 1 error" + other: "No s'ha pogut desar aquest/a %{model} perquè hi ha hagut %{count} errors" # The variable :count is also available - body: "Hi ha hagut problemes amb els següents camps:" - + body: "Hi ha hagut problemes amb els següents camps:" + # The values :model, :attribute and :value are always available for interpolation # The value :count is available when applicable. Can be used for pluralization. messages: - inclusion: "no està incluós a la llista" - exclusion: "està reservat" - invalid: "no és và lid" + inclusion: "no està incluós a la llista" + exclusion: "està reservat" + invalid: "no és và lid" confirmation: "no coincideix" accepted: "ha de ser acceptat" empty: "no pot estar buit" @@ -126,27 +126,27 @@ ca: less_than_or_equal_to: "ha de ser menor o igual a %{count}" odd: "ha de ser imparell" even: "ha de ser parell" - + # Append your own errors here or at the model/attributes scope. - + models: # Overrides default messages - + attributes: # Overrides model and default messages. - + date: formats: # Use the strftime parameters for formats. # When no format has been given, it uses default. # You can provide other formats here if you like! - default: "%Y-%m-%d" - short: "%d de %b" - long: "%d de %B de %Y" - + default: "%Y-%m-%d" + short: "%d de %b" + long: "%d de %B de %Y" + day_names: [diumenge, dilluns, dimarts, dimecres, dijous, divendres, dissabte] abbr_day_names: [dg, dl, dm, dc, dj, dv, ds] - + # Don't forget the nil at the beginning; there's no such thing as a 0th month month_names: [~, gener, febrer, març, abril, maig, juny, juliol, agost, setembre, octubre, novembre, desembre] abbr_month_names: [~, Gen, Feb, Mar, Abr, Mai, Jun, Jul, Ago, Set, Oct, Nov, Des] @@ -155,16 +155,16 @@ ca: - :day - :month - :year - + time: formats: default: "%A, %d de %B de %Y %H:%M:%S %z" - short: "%d de %b %H:%M" - long: "%d de %B de %Y %H:%M" - am: "am" - pm: "pm" - + short: "%d de %b %H:%M" + long: "%d de %B de %Y %H:%M" + am: "am" + pm: "pm" + # Used in array.to_sentence. support: array: - sentence_connector: "i" \ No newline at end of file + sentence_connector: "i" diff --git a/config/locales/rails-i18n/cs.rb b/config/locales/rails-i18n/cs.rb index 55988ec78bf7195e96d8c44a9a537ff448eddd97..8218b34a2464c0a32de3f6a39bb0a0d9b2803c61 100644 --- a/config/locales/rails-i18n/cs.rb +++ b/config/locales/rails-i18n/cs.rb @@ -1,5 +1,33 @@ -# Czech translations for Ruby on Rails +# Czech translations for Ruby on Rails # by Karel MinaÅ™Ãk (karmi@karmi.cz) +# contributors: +# - VÃt Krchov - http://github.com/vita - Rails 3 update + +unless defined?(CzechLocaleI18n::ERROR_MESSAGES) + module CzechLocaleI18n + ERROR_MESSAGES = { + :inclusion => "nenà v seznamu povolených hodnot", + :exclusion => "je vyhrazeno pro jiný úÄel", + :invalid => "nenà platná hodnota", + :confirmation => "nebylo potvrzeno", + :accepted => "musà být potvrzeno", + :empty => "nesmà být prázdný/é", + :blank => "je povinná položka", # alternate formulation: "is required" + :too_long => "je pÅ™ÃliÅ¡ dlouhá/ý (max. %{count} znaků)", + :too_short => "je pÅ™ÃliÅ¡ krátký/á (min. %{count} znaků)", + :wrong_length => "nemá správnou délku (oÄekáváno %{count} znaků)", + :not_a_number => "nenà ÄÃslo", + :greater_than => "musà být vÄ›tÅ¡Ã než %{count}", + :greater_than_or_equal_to => "musà být vÄ›tÅ¡Ã nebo rovno %{count}", + :equal_to => "musà být rovno %{count}", + :less_than => "musà být ménÄ› než %{count}", + :less_than_or_equal_to => "musà být ménÄ› nebo rovno %{count}", + :odd => "musà být liché ÄÃslo", + :even => "musà být sudé ÄÃslo", + :not_an_integer => "musà být celé ÄÃslo" + } + end +end { :'cs' => { @@ -7,8 +35,11 @@ :support => { :array => { :two_words_connector => ' a ', - :sentence_connector => 'a', - :skip_last_comma => true + :last_word_connector => ' a ', + :words_connector => ', ' + }, + :select => { + :prompt => 'ProsÃm vyberte si', } }, @@ -42,7 +73,9 @@ :format => { :precision => 3, :separator => '.', - :delimiter => ',' + :delimiter => ',', + :significant => false, + :strip_insignificant_zeros => false }, :currency => { :format => { @@ -51,12 +84,16 @@ :format => '%n %u', :separator => ",", :delimiter => " ", + :significant => false, + :strip_insignificant_zeros => false } }, :human => { :format => { :precision => 1, - :delimiter => '' + :delimiter => '', + :significant => false, + :strip_insignificant_zeros => false }, :storage_units => { :format => "%n %u", @@ -67,6 +104,17 @@ :gb => "GB", :tb => "TB", } + }, + :decimal_units => { + :format => "%n %u", + :units => { + :unit => "", + :thousand => "TisÃc", + :million => "Milion", + :billion => "Miliarda", + :trillion => "Bilion", + :quadrillion => "Kvadrilion" + } } }, :percentage => { @@ -84,6 +132,14 @@ # Distance of time ... helper # NOTE: In Czech language, these values are different for the past and for the future. Preference has been given to past here. :datetime => { + :prompts => { + :second => "Sekunda", + :minute => "Minuta", + :hour => "Hodina", + :day => "Den", + :month => "MÄ›sÃc", + :year => "Rok" + }, :distance_in_words => { :half_a_minute => 'půl minutou', :less_than_x_seconds => { @@ -125,42 +181,49 @@ :over_x_years => { :one => 'vÃce než pÅ™ed rokem', :other => 'vÃce než %{count} roky' + }, + :almost_x_years => { + :one => 'téměř pÅ™ed rokem', + :other => 'téměř pÅ™ed %{count} roky' } } }, + :helpers => { + :select => { + :prompt => "ProsÃm vyberte si" + }, + + :submit => { + :create => "VytvoÅ™it %{model}", + :update => "Aktualizovat %{model}", + :submit => "Uložit %{model}" + } + }, + + :errors => { + :format => "%{attribute} %{message}", + :messages => CzechLocaleI18n::ERROR_MESSAGES + }, + # ActiveRecord validation messages :activerecord => { :errors => { :messages => { - :inclusion => "nenà v seznamu povolených hodnot", - :exclusion => "je vyhrazeno pro jiný úÄel", - :invalid => "nenà platná hodnota", - :confirmation => "nebylo potvrzeno", - :accepted => "musà být potvrzeno", - :empty => "nesmà být prázdný/é", - :blank => "je povinná položka", # alternate formulation: "is required" - :too_long => "je pÅ™ÃliÅ¡ dlouhá/ý (max. %{count} znaků)", - :too_short => "je pÅ™ÃliÅ¡ krátký/á (min. %{count} znaků)", - :wrong_length => "nemá správnou délku (oÄekáváno %{count} znaků)", :taken => "již databáze obsahuje", - :not_a_number => "nenà ÄÃslo", - :greater_than => "musà být vÄ›tÅ¡Ã než %{count}", - :greater_than_or_equal_to => "musà být vÄ›tÅ¡Ã nebo rovno %{count}", - :equal_to => "musà být rovno %{count}", - :less_than => "musà být ménÄ› než %{count}", - :less_than_or_equal_to => "musà být ménÄ› nebo rovno %{count}", - :odd => "musà být liché ÄÃslo", - :even => "musà být sudé ÄÃslo" - }, + :record_invalid => "Validace je neúspeÅ¡ná: %{errors}" + }.merge(CzechLocaleI18n::ERROR_MESSAGES), :template => { :header => { :one => "PÅ™i ukládánà objektu %{model} doÅ¡lo k chybám a nebylo jej možné uložit", :other => "PÅ™i ukládánà objektu %{model} doÅ¡lo ke %{count} chybám a nebylo možné jej uložit" }, :body => "NásledujÃcà pole obsahujà chybnÄ› vyplnÄ›né údaje:" + }, + :full_messages => { + :format => "%{attribute} %{message}" } } } } -} \ No newline at end of file +} diff --git a/config/locales/rails-i18n/cy.yml b/config/locales/rails-i18n/cy.yml index 5ad9ac234e57bc494e4bc29c14aab0f2f7a8b468..320c55f8e4e5fcfa3f4b0e3c35fafccf19690087 100644 --- a/config/locales/rails-i18n/cy.yml +++ b/config/locales/rails-i18n/cy.yml @@ -81,11 +81,11 @@ cy: format: "%n %u" units: unit: "" - thousand: "Mil" - million: "Miliwn" - billion: "Biliwn" - trillion: "Triliwn" - quadrillion: "Cwadriliwn" + thousand: Mil + million: Miliwn + billion: Biliwn + trillion: Triliwn + quadrillion: Cwadriliwn datetime: distance_in_words: @@ -178,4 +178,4 @@ cy: <<: *errors_messages full_messages: - format: "%{attribute}%{message}" + format: "%{attribute} %{message}" diff --git a/config/locales/rails-i18n/da.yml b/config/locales/rails-i18n/da.yml index 070a69078887a7828f9fe3ddd2088a8bec6e2580..b0a306aed35d27b0a1ab5c944b4d3eaa229b7d8e 100644 --- a/config/locales/rails-i18n/da.yml +++ b/config/locales/rails-i18n/da.yml @@ -95,11 +95,11 @@ da: format: "%n %u" units: unit: "" - thousand: "Tusind" - million: "Million" - billion: "Milliard" - trillion: "Billion" - quadrillion: "Billiard" + thousand: Tusind + million: Million + billion: Milliard + trillion: Billion + quadrillion: Billiard datetime: distance_in_words: @@ -192,4 +192,4 @@ da: <<: *errors_messages full_messages: - format: "%{attribute}%{message}" + format: "%{attribute} %{message}" diff --git a/config/locales/rails-i18n/de-AT.yml b/config/locales/rails-i18n/de-AT.yml index b9a0369d0e97a1998dc41491b2ef9ecea8f984f4..ec1f88411a329818857cb9dfc1c92e0f454cd6c5 100644 --- a/config/locales/rails-i18n/de-AT.yml +++ b/config/locales/rails-i18n/de-AT.yml @@ -1,4 +1,4 @@ -# German translations for Ruby on Rails +# German translations for Ruby on Rails # by Clemens Kofler (clemens@railway.at) de-AT: @@ -17,7 +17,7 @@ de-AT: - :day - :month - :year - + time: formats: default: "%A, %d. %B %Y, %H:%M Uhr" @@ -27,7 +27,7 @@ de-AT: am: "vormittags" pm: "nachmittags" - + datetime: distance_in_words: half_a_minute: 'eine halbe Minute' @@ -81,9 +81,9 @@ de-AT: format: unit: '€' format: '%n%u' - separator: - delimiter: - precision: + separator: + delimiter: + precision: percentage: format: delimiter: "" diff --git a/config/locales/rails-i18n/de-CH.yml b/config/locales/rails-i18n/de-CH.yml index fcc85606111e72a585a81e69f282d8adb6517cfa..84c367707e6854f136aefdea2f6b4fdf3911f9ba 100644 --- a/config/locales/rails-i18n/de-CH.yml +++ b/config/locales/rails-i18n/de-CH.yml @@ -1,4 +1,4 @@ -# German (Switzerland) translations for Ruby on Rails +# German (Switzerland) translations for Ruby on Rails # by Clemens Kofler (clemens@railway.at) de-CH: @@ -17,7 +17,7 @@ de-CH: - :day - :month - :year - + time: formats: default: "%A, %d. %B %Y, %H:%M Uhr" @@ -27,7 +27,7 @@ de-CH: am: "vormittags" pm: "nachmittags" - + datetime: distance_in_words: half_a_minute: 'eine halbe Minute' @@ -81,9 +81,9 @@ de-CH: format: unit: 'CHF' format: '%u %n' - separator: - delimiter: - precision: + separator: + delimiter: + precision: percentage: format: delimiter: "" diff --git a/config/locales/rails-i18n/de.yml b/config/locales/rails-i18n/de.yml index a0b62bd8e888f7ef7d2ab2045753c5f4b409963c..ecafaee22b01670669756d8c5c5e643d2b048525 100644 --- a/config/locales/rails-i18n/de.yml +++ b/config/locales/rails-i18n/de.yml @@ -1,4 +1,4 @@ -# German translations for Ruby on Rails +# German translations for Ruby on Rails # by Clemens Kofler (clemens@railway.at) # contributors: # - Alexander Dreher - http://github.com/alexdreher - Rails 3 update @@ -19,7 +19,7 @@ de: - :day - :month - :year - + time: formats: default: "%A, %d. %B %Y, %H:%M Uhr" @@ -29,7 +29,7 @@ de: am: "vormittags" pm: "nachmittags" - + datetime: distance_in_words: half_a_minute: 'eine halbe Minute' @@ -118,15 +118,15 @@ de: format: "%n %u" units: unit: "" - thousand: "Tausend" - million: "Millionen" - billion: - one: "Milliarde" - others: "Milliarden" - trillion: "Billionen" - quadrillion: - one: "Billiarde" - others: "Billiarden" + thousand: Tausend + million: Millionen + billion: + one: Milliarde + others: Milliarden + trillion: Billionen + quadrillion: + one: Billiarde + others: Billiarden support: array: @@ -175,7 +175,7 @@ de: odd: "muss ungerade sein" even: "muss gerade sein" not_an_integer: "muss ganzzahlig sein" - + activerecord: errors: template: @@ -184,10 +184,10 @@ de: other: "Konnte %{model} nicht speichern: %{count} Fehler." body: "Bitte überprüfen Sie die folgenden Felder:" - messages: + messages: taken: "ist bereits vergeben" record_invalid: "Gültigkeitsprüfung ist fehlgeschlagen: %{errors}" <<: *errors_messages full_messages: - format: "%{attribute}%{message}" + format: "%{attribute} %{message}" diff --git a/config/locales/rails-i18n/en-AU.yml b/config/locales/rails-i18n/en-AU.yml index a98aac1de443a9306f622742fd6d15b04aad1d2d..2eb397bf6e71f16ef5a31f1021bc898b76bf3ac9 100644 --- a/config/locales/rails-i18n/en-AU.yml +++ b/config/locales/rails-i18n/en-AU.yml @@ -80,11 +80,11 @@ format: "%n %u" units: unit: "" - thousand: "Thousand" - million: "Million" - billion: "Billion" - trillion: "Trillion" - quadrillion: "Quadrillion" + thousand: Thousand + million: Million + billion: Billion + trillion: Trillion + quadrillion: Quadrillion datetime: distance_in_words: @@ -177,4 +177,4 @@ <<: *errors_messages full_messages: - format: "%{attribute}%{message}" + format: "%{attribute} %{message}" diff --git a/config/locales/rails-i18n/en-GB.yml b/config/locales/rails-i18n/en-GB.yml index 7ef25ee9382b62b015a43a9715418dfed2f77390..5bf1212c93ba9108c4eba0ab080b580001ee3fce 100644 --- a/config/locales/rails-i18n/en-GB.yml +++ b/config/locales/rails-i18n/en-GB.yml @@ -80,11 +80,11 @@ format: "%n %u" units: unit: "" - thousand: "Thousand" - million: "Million" - billion: "Billion" - trillion: "Trillion" - quadrillion: "Quadrillion" + thousand: Thousand + million: Million + billion: Billion + trillion: Trillion + quadrillion: Quadrillion datetime: distance_in_words: @@ -177,4 +177,4 @@ <<: *errors_messages full_messages: - format: "%{attribute}%{message}" + format: "%{attribute} %{message}" diff --git a/config/locales/rails-i18n/en-US.yml b/config/locales/rails-i18n/en-US.yml index 66a72b43ff7392e355fc5e83475a5be3f00975ad..645aefdc3bc6b22a6d6b976cbbc83b1b93fac28d 100644 --- a/config/locales/rails-i18n/en-US.yml +++ b/config/locales/rails-i18n/en-US.yml @@ -82,11 +82,11 @@ format: "%n %u" units: unit: "" - thousand: "Thousand" - million: "Million" - billion: "Billion" - trillion: "Trillion" - quadrillion: "Quadrillion" + thousand: Thousand + million: Million + billion: Billion + trillion: Trillion + quadrillion: Quadrillion datetime: distance_in_words: @@ -179,4 +179,4 @@ <<: *errors_messages full_messages: - format: "%{attribute}%{message}" + format: "%{attribute} %{message}" diff --git a/config/locales/rails-i18n/eo.yml b/config/locales/rails-i18n/eo.yml index 178d4ae78e5ecd99026c9a4767e7e42d243fe735..bdaf8a170feb7814363a2fd790eca1bc4814f070 100644 --- a/config/locales/rails-i18n/eo.yml +++ b/config/locales/rails-i18n/eo.yml @@ -8,7 +8,7 @@ eo: default: "%Y/%m/%d" short: "%e %b" long: "%e %B %Y" - + day_names: [dimanĉo, lundo, mardo, merkredo, ĵaÅdo, vendredo, sabato] abbr_day_names: [dim, lun, mar, mer, ĵaÅ, ven, sam] month_names: [~, januaro, februaro, marto, aprilo, majo, junio, julio, aÅgusto, septembro, oktobro, novembro, decembro] @@ -17,7 +17,7 @@ eo: - :day - :month - :year - + time: formats: default: "%d %B %Y %H:%M:%S" @@ -25,7 +25,7 @@ eo: long: "%A %d %B %Y %H:%M" am: 'am' pm: 'pm' - + datetime: distance_in_words: half_a_minute: "duona minuto" @@ -71,7 +71,7 @@ eo: hour: "Horo" minute: "Minuto" second: "Sekundo" - + number: format: separator: "," diff --git a/config/locales/rails-i18n/es-AR.yml b/config/locales/rails-i18n/es-AR.yml index b1180e1184fb20d38bd9f61a1d67a31be1289d30..2fe807c103f28e082464d97c151cbdf76425a0ed 100644 --- a/config/locales/rails-i18n/es-AR.yml +++ b/config/locales/rails-i18n/es-AR.yml @@ -174,4 +174,4 @@ es-AR: <<: *errors_messages full_messages: - format: "%{attribute}%{message}" + format: "%{attribute} %{message}" diff --git a/config/locales/rails-i18n/es-CL.yml b/config/locales/rails-i18n/es-CL.yml index 13bb259eb35ac717edd3297488858f9b1841f144..1cfc207bcc2eb313dbd80a785427463277f1f7b6 100644 --- a/config/locales/rails-i18n/es-CL.yml +++ b/config/locales/rails-i18n/es-CL.yml @@ -137,7 +137,7 @@ es-CL: prompt: "Por favor seleccione" submit: - create: 'Guardar %{model}' + create: 'Crear %{model}' update: 'Actualizar %{model}' submit: 'Guardar %{model}' @@ -180,4 +180,4 @@ es-CL: <<: *errors_messages full_messages: - format: "%{attribute}%{message}" + format: "%{attribute} %{message}" diff --git a/config/locales/rails-i18n/es-CO.yml b/config/locales/rails-i18n/es-CO.yml index 4eaa7522d9486527a78d6280e043a9e7629f4091..950a12b29e47ded6f9307d6ea87533adcd678825 100644 --- a/config/locales/rails-i18n/es-CO.yml +++ b/config/locales/rails-i18n/es-CO.yml @@ -176,4 +176,4 @@ es-CO: <<: *errors_messages full_messages: - format: "%{attribute}%{message}" \ No newline at end of file + format: "%{attribute} %{message}" diff --git a/config/locales/rails-i18n/es-MX.yml b/config/locales/rails-i18n/es-MX.yml index 2b1f4f3b9e41b9710f6ed686268b1bdb06b652be..3f6d35de66f83c407192630f5c62a348f7e3727e 100644 --- a/config/locales/rails-i18n/es-MX.yml +++ b/config/locales/rails-i18n/es-MX.yml @@ -183,4 +183,4 @@ es-MX: <<: *errors_messages full_messages: - format: "%{attribute}%{message}" + format: "%{attribute} %{message}" diff --git a/config/locales/rails-i18n/es-PE.yml b/config/locales/rails-i18n/es-PE.yml index 356546ab727301414d61336b9c58fa478d51ccd9..64ca7466dc92620a492060151858e9bff3a3a373 100644 --- a/config/locales/rails-i18n/es-PE.yml +++ b/config/locales/rails-i18n/es-PE.yml @@ -83,7 +83,7 @@ es-PE: prompts: hour: 'Hora' minute: 'Minuto' - second: 'Segundo' + second: 'Segundo' # Active Record @@ -121,4 +121,4 @@ es-PE: one: "longitud errónea (debe ser de 1 caracter)" other: "longitud errónea (debe ser de {{count}} caracteres)" even: "debe ser un número par" - odd: "debe ser un número non" \ No newline at end of file + odd: "debe ser un número non" diff --git a/config/locales/rails-i18n/es.yml b/config/locales/rails-i18n/es.yml index f632fe6362c8d3bf9855c91e401b5be72c3631bc..970975d90f5119f2f1d4792b4cc8680ebf82b546 100644 --- a/config/locales/rails-i18n/es.yml +++ b/config/locales/rails-i18n/es.yml @@ -138,7 +138,7 @@ prompt: "Por favor seleccione" submit: - create: 'Guardar %{model}' + create: 'Crear %{model}' update: 'Actualizar %{model}' submit: 'Guardar %{model}' @@ -181,4 +181,4 @@ <<: *errors_messages full_messages: - format: "%{attribute}%{message}" + format: "%{attribute} %{message}" diff --git a/config/locales/rails-i18n/et.yml b/config/locales/rails-i18n/et.yml index 5323b9f34f83c0730858861886050ad0084d396b..e698626b85c320b3e39168a89cb2b9261415c0b7 100644 --- a/config/locales/rails-i18n/et.yml +++ b/config/locales/rails-i18n/et.yml @@ -59,15 +59,15 @@ et: precision: 2 significant: false strip_insignificant_zeros: false - + percentage: format: delimiter: "" - + precision: format: delimiter: "" - + human: format: delimiter: "" @@ -88,11 +88,11 @@ et: format: "%n %u" units: unit: "" - thousand: "tuhat" - million: "miljon" - billion: "miljard" - trillion: "triljon" - quadrillion: "kvadriljon" + thousand: tuhat + million: miljon + billion: miljard + trillion: triljon + quadrillion: kvadriljon datetime: distance_in_words: diff --git a/config/locales/rails-i18n/eu.yml b/config/locales/rails-i18n/eu.yml index 94a27895992d2138c5c66fd7065fc7617fb29a74..e48249976f2aaba35042635686510a1fc8efc3e6 100644 --- a/config/locales/rails-i18n/eu.yml +++ b/config/locales/rails-i18n/eu.yml @@ -180,5 +180,5 @@ <<: *errors_messages full_messages: - format: "%{attribute}%{message}" + format: "%{attribute} %{message}" diff --git a/config/locales/rails-i18n/fa.yml b/config/locales/rails-i18n/fa.yml index 79927d2bff50908283989a37d009dad45ceb170c..f0a75bca85c3597ffec77e5d7ae49897813a22ac 100644 --- a/config/locales/rails-i18n/fa.yml +++ b/config/locales/rails-i18n/fa.yml @@ -1,4 +1,4 @@ -# Persian translations for Ruby on Rails +# Persian translations for Ruby on Rails # by Reza (reza@balatarin.com) # Rails 3 update by rbjarnason @@ -82,11 +82,11 @@ format: "%n %u" units: unit: "" - thousand: "هزار" - million: "میلیون" - billion: "بیلیون" - trillion: "تریلیون" - quadrillion: "کادریلیون" + thousand: هزار + million: میلیون + billion: بیلیون + trillion: تریلیون + quadrillion: کادریلیون datetime: distance_in_words: @@ -145,11 +145,11 @@ format: "%{attribute} %{message}" messages: &errors_messages - inclusion: "در لیست موجود نیست" - exclusion: "رزرو است" - invalid: "نامعتبر است" + inclusion: "در لیست موجود نیست" + exclusion: "رزرو است" + invalid: "نامعتبر است" confirmation: "با تایید نمی‌خواند" - accepted: "باید پذیرÙته شود" + accepted: "باید پذیرÙته شود" empty: "نمی‌تواند خالی باشد" blank: "نباید خالی باشد" too_long: "بلند است (Øداکثر %{count} کاراکتر)" @@ -179,4 +179,4 @@ <<: *errors_messages full_messages: - format: "%{attribute}%{message}" + format: "%{attribute} %{message}" diff --git a/config/locales/rails-i18n/fi.yml b/config/locales/rails-i18n/fi.yml index 401a31d9afd8c2f6ca1fdf397af72fa90ec759de..71d3f9c67b4d087e3b1a7de34e4cacda0229e832 100644 --- a/config/locales/rails-i18n/fi.yml +++ b/config/locales/rails-i18n/fi.yml @@ -85,11 +85,11 @@ fi: format: "%n %u" units: unit: "" - thousand: "Tuhatta" - million: "Euroa" - billion: "Miljardia" - trillion: "Biljoona" - quadrillion: "Kvadriljoona" + thousand: Tuhatta + million: Euroa + billion: Miljardia + trillion: Biljoona + quadrillion: Kvadriljoona datetime: distance_in_words: @@ -182,4 +182,4 @@ fi: <<: *errors_messages full_messages: - format: "%{attribute}%{message}" + format: "%{attribute} %{message}" diff --git a/config/locales/rails-i18n/fur.yml b/config/locales/rails-i18n/fur.yml index 3d05a22df7d835cbb41676cd14b1102f505ea139..de949f73cbae56a43c40b70d694c18b9ba378a33 100644 --- a/config/locales/rails-i18n/fur.yml +++ b/config/locales/rails-i18n/fur.yml @@ -1,4 +1,4 @@ -# Friulian translations for Ruby on Rails +# Friulian translations for Ruby on Rails # by Andrea Decorte (adecorte@gmail.com) fur: @@ -7,7 +7,7 @@ fur: separator: "," delimiter: "." precision: 3 - + currency: format: format: "%n %u" @@ -15,21 +15,21 @@ fur: separator: "." delimiter: "," precision: 2 - + percentage: format: delimiter: "" - # precision: - + # precision: + precision: format: # separator: delimiter: "" # precision: - + human: format: - # separator: + # separator: delimiter: "" precision: 1 storage_units: @@ -58,16 +58,16 @@ fur: - :day - :month - :year - + time: formats: default: "%a %d di %b dal %Y, %H:%M:%S %z" short: "%d di %b %H:%M" long: "%d di %B %Y %H:%M" - + am: 'am' pm: 'pm' - + datetime: distance_in_words: half_a_minute: "mieç minût" @@ -114,11 +114,11 @@ fur: words_connector: ", " two_words_connector: " e " last_word_connector: ", e " - + activerecord: errors: template: - header: + header: one: "No si pues salvâ chest %{model}: 1 erôr" other: "No si pues salvâ chest %{model}: %{count} erôrs." body: "Torne par plasê a controlâ i cjamps ca sot:" @@ -141,4 +141,4 @@ fur: less_than: "al à di jessi mancul di %{count}" less_than_or_equal_to: "al à di jessi mancul o compagn di %{count}" odd: "al à di jessi dispar" - even: "al à di jessi pâr" \ No newline at end of file + even: "al à di jessi pâr" diff --git a/config/locales/rails-i18n/gl-ES.yml b/config/locales/rails-i18n/gl-ES.yml index 53e6603bc245bb004ad3bf51d637f259845dc382..4b43491b574a6c3d5f2d382f7516e00672087cf2 100644 --- a/config/locales/rails-i18n/gl-ES.yml +++ b/config/locales/rails-i18n/gl-ES.yml @@ -6,40 +6,40 @@ gl-ES: number: # Usado en number_with_delimiter() format: - separator: "," - delimiter: "." + separator: "," + delimiter: "." precision: 2 - + # Usado en number_to_currency() currency: format: # %u é a unidade monetaria, %n o número # 1 euro serÃa 1.00 € - format: "%n %u" - unit: "€" - separator: "," - delimiter: "." + format: "%n %u" + unit: "€" + separator: "," + delimiter: "." precision: 2 - + # Usado en number_to_percentage() percentage: format: - # separator: - delimiter: "" - # precision: - + # separator: + delimiter: "" + # precision: + # Usado en number_to_precision() precision: format: # separator: - delimiter: "" + delimiter: "" # precision: - + # Usado en number_to_human_size() human: format: - # separator: - delimiter: "" + # separator: + delimiter: "" precision: 1 # Se estás a usar Rails <= 2.2.2 # storage_units: [Bytes, KB, MB, GB, TB] @@ -57,7 +57,7 @@ gl-ES: mb: "MB" gb: "GB" tb: "TB" - + # active_support date: formats: @@ -83,7 +83,7 @@ gl-ES: # Podes engadir máis formatos nesta lista ou cambiar os aquà definidos am: '' pm: '' - + # Usados en distance_of_time_in_words(), distance_of_time_in_words_to_now(), time_ago_in_words() datetime: distance_in_words: @@ -128,7 +128,7 @@ gl-ES: today: 'hoxe' tomorrow: 'mañá' in: 'dentro de' - + support: array: # Se estás a usar Rails <= 2.2.2 @@ -154,7 +154,7 @@ gl-ES: # user: # login: "Aceso" # traducirá o atribute login do modelo User como "Aceso" - + errors: template: header: @@ -183,7 +183,7 @@ gl-ES: odd: "debe ser par" even: "debe ser impar" # Engade aquà os teus propios mensaxes de erro ou no ámbito modelo/atributo - + # Podes definir os teus propios erros para modelos ou para os atributos dun modelo # Os valores :model, :attribute e :value están sempre dispoñibles para a interpolación # diff --git a/config/locales/rails-i18n/gsw-CH.yml b/config/locales/rails-i18n/gsw-CH.yml index 5e26ccba44d371c95618643010494d7f7e742039..ef01de3c69f86a9e732c455a9d425cb2f87fc1f7 100644 --- a/config/locales/rails-i18n/gsw-CH.yml +++ b/config/locales/rails-i18n/gsw-CH.yml @@ -1,4 +1,4 @@ -# Swiss German (Switzerland) translations for Ruby on Rails +# Swiss German (Switzerland) translations for Ruby on Rails # by Florian Hanke (florian.hanke@gmail.com). # # Adapted from de-CH by Clemens Kofler (clemens@railway.at). @@ -19,7 +19,7 @@ gsw-CH: - :day - :month - :year - + time: formats: default: "%A, %d. %B %Y, %H:%M" @@ -29,7 +29,7 @@ gsw-CH: am: "am Vormittaag" pm: "am Namitaag" - + datetime: distance_in_words: half_a_minute: 'ä halbi Minuutä' @@ -118,11 +118,11 @@ gsw-CH: format: "%n %u" units: unit: "" - thousand: "Tuusig" - million: "Milioon" - billion: "Bilioon" - trillion: "Trilioon" - quadrillion: "Quadrilioon" + thousand: Tuusig + million: Milioon + billion: Bilioon + trillion: Trilioon + quadrillion: Quadrilioon support: array: @@ -131,19 +131,19 @@ gsw-CH: last_word_connector: " und " select: prompt: "Bitte wääle:" - + helpers: select: prompt: "Bitte wääle" - + submit: create: '%{model} erschtele' update: '%{model} ändere' submit: '%{model} schpeichere' - + errors: format: "%{attribute} %{message}" - + messages: &errors_messages inclusion: "isch kän gültige Wert" exclusion: "isch nöd ume" @@ -164,7 +164,7 @@ gsw-CH: less_than_or_equal_to: "mues chliiner oder gliich %{count} sii" odd: "mues ungraad sii" even: "mues graad sii" - + activerecord: errors: template: @@ -172,11 +172,11 @@ gsw-CH: one: "Han's %{model} nöd schpeichere chönne: än Fehler." other: "Han's %{model} näd schpeichere chönne: %{count} Fehler." body: "Bitte überprüefed Si die Felder:" - + messages: taken: "isch bereits vergää" record_invalid: "Gültigkeitsprüefig hät fehlgschlage: %{errors}" <<: *errors_messages - + full_messages: - format: "%{attribute}%{message}" + format: "%{attribute} %{message}" diff --git a/config/locales/rails-i18n/he.yml b/config/locales/rails-i18n/he.yml index 4c025a8ff2106543e4fc1502e0a47992ae517984..7e74d90d11618946f879640398e0ffd7cd3d85a6 100644 --- a/config/locales/rails-i18n/he.yml +++ b/config/locales/rails-i18n/he.yml @@ -1,4 +1,4 @@ -# Hebrew translations for Ruby on Rails +# Hebrew translations for Ruby on Rails # by Dotan Nahum (dipidi@gmail.com) # Rails 3 update by rbjarnason @@ -85,11 +85,11 @@ format: "%n %u" units: unit: "" - thousand: "×לף" - million: "מיליון" - billion: "מילי×רד" - trillion: "טריליון" - quadrillion: "קודריליון" + thousand: ×לף + million: מיליון + billion: מילי×רד + trillion: טריליון + quadrillion: קודריליון datetime: distance_in_words: @@ -169,7 +169,7 @@ less_than_or_equal_to: "חייב להיות קטן ×ו שווה ל- %{count}" odd: "חייב להיות ××™ זוגי" even: "חייב להיות זוגי" - + activerecord: errors: template: @@ -184,4 +184,4 @@ <<: *errors_messages full_messages: - format: "%{attribute}%{message}" + format: "%{attribute} %{message}" diff --git a/config/locales/rails-i18n/hi-IN.yml b/config/locales/rails-i18n/hi-IN.yml index d0d24ad7dcc8858e77e506db2bedd0cd96694df7..42d0ec59aa147d6d1f25ddba58ba81cd11ba06a1 100644 --- a/config/locales/rails-i18n/hi-IN.yml +++ b/config/locales/rails-i18n/hi-IN.yml @@ -178,4 +178,4 @@ hi-IN: <<: *errors_messages full_messages: - format: "%{attribute}%{message}" + format: "%{attribute} %{message}" diff --git a/config/locales/rails-i18n/hi.yml b/config/locales/rails-i18n/hi.yml index 5ca29700d9a3553355462d3b33dafaa86e5015a7..2d11aec36122da39c81eb57619733745f65bfc4e 100644 --- a/config/locales/rails-i18n/hi.yml +++ b/config/locales/rails-i18n/hi.yml @@ -178,4 +178,4 @@ hi: <<: *errors_messages full_messages: - format: "%{attribute}%{message}" + format: "%{attribute} %{message}" diff --git a/config/locales/rails-i18n/hsb.yml b/config/locales/rails-i18n/hsb.yml index c5e4219df7a02a783defe84cfa30d2c10be74829..7206303a5859825ab1993d8d86375831304588c3 100644 --- a/config/locales/rails-i18n/hsb.yml +++ b/config/locales/rails-i18n/hsb.yml @@ -157,12 +157,12 @@ hsb: accepted: "dyrbi so wobkrućić" empty: "njesmÄ› prózdny być" blank: "je trÄ›bny" - too_long: + too_long: one: "je pÅ™edoÅ‚hi (maks. 1 znamjeÅ¡ko)" two: "je pÅ™edoÅ‚hi (maks. %{count} znamjeÅ¡ce)" few: "je pÅ™edoÅ‚hi (maks. %{count} znamjeÅ¡ka)" other: "je pÅ™edoÅ‚hi (maks. %{count} znamjeÅ¡kow)" - too_short: + too_short: one: "je pÅ™ekrótki (min. 1 znamjeÅ¡ko)" two: "je pÅ™ekrótki (min. %{count} znamješće)" few: "je pÅ™ekrótki (min. %{count} znamjeÅ¡ka)" diff --git a/config/locales/rails-i18n/hu.yml b/config/locales/rails-i18n/hu.yml index d15676f9415f3d7177f4bcb4f20964747744b8c7..d4c3f73edc7e05afc27b2c21ec33366d625d6aee 100644 --- a/config/locales/rails-i18n/hu.yml +++ b/config/locales/rails-i18n/hu.yml @@ -1,4 +1,4 @@ -# Hungarian translations for Ruby on Rails +# Hungarian translations for Ruby on Rails # by Richard Abonyi (richard.abonyi@gmail.com) # thanks to KKata, replaced and #hup.hu # Cleaned up by László Bácsi (http://lackac.hu) @@ -144,4 +144,4 @@ last_word_connector: " és " select: # default value for :prompt => true in FormOptionsHelper - prompt: "Válasszon" \ No newline at end of file + prompt: "Válasszon" diff --git a/config/locales/rails-i18n/id.yml b/config/locales/rails-i18n/id.yml index a126bdff7d3ec749a7c81ab5b0c1f90eda09b885..4173b2c3e8fd8d59f4ee120b86176acd398c9fae 100644 --- a/config/locales/rails-i18n/id.yml +++ b/config/locales/rails-i18n/id.yml @@ -1,4 +1,4 @@ -# Indonesian translations for Ruby on Rails +# Indonesian translations for Ruby on Rails # by wynst (wynst.uei@gmail.com) id: @@ -10,7 +10,7 @@ id: default: "%d %B %Y" long: "%A, %d %B %Y" short: "%d.%m.%Y" - + day_names: [Minggu, Senin, Selasa, Rabu, Kamis, Jum'at, Sabtu] abbr_day_names: [Min, Sen, Sel, Rab, Kam, Jum, Sab] month_names: [~, Januari, Februari, Maret, April, Mei, Juni, Juli, Agustus, September, Oktober, November, Desember] @@ -27,7 +27,7 @@ id: short: "%d %b %H.%M" long: "%d %B %Y %H.%M" time: "%H:%M" - + am: "am" pm: "pm" @@ -46,7 +46,7 @@ id: delimiter: "." separator: "," precision: 2 - + currency: format: format: "%n. %u" @@ -54,7 +54,7 @@ id: separator: "," delimiter: "." precision: 2 - + percentage: format: delimiter: "." @@ -65,14 +65,14 @@ id: format: delimiter: "." separator: "," - + human: format: delimiter: "." separator: "," precision: 1 storage_units: [Byte, KB, MB, GB, TB] - + datetime: distance_in_words: half_a_minute: "setengah menit" @@ -111,7 +111,7 @@ id: almost_x_years: one: "hampir setahun" other: "hampir %{count} tahun" - + activerecord: errors: template: diff --git a/config/locales/rails-i18n/is.yml b/config/locales/rails-i18n/is.yml index b8d7f77453fe8849557bdf207b9ac0860aab0812..c49b4a10bb25109010054d5b9b4f7323765fb5e3 100644 --- a/config/locales/rails-i18n/is.yml +++ b/config/locales/rails-i18n/is.yml @@ -81,11 +81,11 @@ format: "%n %u" units: unit: "" - thousand: "þúsund" - million: "milljón" - billion: "billjón" - trillion: "trilljón" - quadrillion: "grasilljón" + thousand: þúsund + million: milljón + billion: billjón + trillion: trilljón + quadrillion: grasilljón datetime: distance_in_words: @@ -178,4 +178,4 @@ <<: *errors_messages full_messages: - format: "%{attribute}%{message}" + format: "%{attribute} %{message}" diff --git a/config/locales/rails-i18n/it.yml b/config/locales/rails-i18n/it.yml index 4f7655bc3a9d878c99d464a08a6e3373bedd0219..8b0ddc2ac3101aa5d5cb2690e0b8459f60e35a90 100644 --- a/config/locales/rails-i18n/it.yml +++ b/config/locales/rails-i18n/it.yml @@ -27,7 +27,7 @@ it: percentage: format: delimiter: "" - # precision: + # precision: precision: format: @@ -37,7 +37,7 @@ it: human: format: - # separator: + # separator: delimiter: "" precision: 1 significant: true @@ -159,13 +159,13 @@ it: accepted: "deve essere accettata" empty: "non può essere vuoto" blank: "non può essere lasciato in bianco" - too_long: + too_long: one: "è troppo lungo (il massimo è 1 carattere)" other: "è troppo lungo (il massimo è %{count} caratteri)" - too_short: + too_short: one: "è troppo corto (il minimo è 1 carattere)" other: "è troppo corto (il minimo è %{count} caratteri)" - wrong_length: + wrong_length: one: "è della lunghezza sbagliata (deve essere di 1 carattere)" other: "è della lunghezza sbagliata (deve essere di %{count} caratteri)" not_a_number: "non è un numero" @@ -181,7 +181,7 @@ it: activerecord: errors: template: - header: + header: one: "Non posso salvare questo %{model}: 1 errore" other: "Non posso salvare questo %{model}: %{count} errori." body: "Per favore ricontrolla i seguenti campi:" @@ -192,4 +192,4 @@ it: <<: *errors_messages full_messages: - format: "%{attribute}%{message}" + format: "%{attribute} %{message}" diff --git a/config/locales/rails-i18n/ja.yml b/config/locales/rails-i18n/ja.yml index f0b626e6686bd698456f11ab7f704454b4e9c8ef..d0057511b979bfe2ea169d9ccf6d44bc03144d42 100644 --- a/config/locales/rails-i18n/ja.yml +++ b/config/locales/rails-i18n/ja.yml @@ -148,7 +148,7 @@ ja: submit: "ä¿å˜ã™ã‚‹" errors: - format: "%{attribute}%{message}" + format: "%{attribute} %{message}" messages: &errors_messages inclusion: "ã¯ä¸€è¦§ã«ã‚ã‚Šã¾ã›ã‚“。" diff --git a/config/locales/rails-i18n/ko.yml b/config/locales/rails-i18n/ko.yml index 929b22c7b1d3966557887d63f5c6b9f27aefc626..882ff2207cbe812d577d0b5ebfe0421bd5893283 100644 --- a/config/locales/rails-i18n/ko.yml +++ b/config/locales/rails-i18n/ko.yml @@ -16,6 +16,7 @@ ko: month_names: [~, 1ì›”, 2ì›”, 3ì›”, 4ì›”, 5ì›”, 6ì›”, 7ì›”, 8ì›”, 9ì›”, 10ì›”, 11ì›”, 12ì›”] abbr_month_names: [~, 1ì›”, 2ì›”, 3ì›”, 4ì›”, 5ì›”, 6ì›”, 7ì›”, 8ì›”, 9ì›”, 10ì›”, 11ì›”, 12ì›”] + order: - :year - :month @@ -32,6 +33,7 @@ ko: support: array: sentence_connector: ", " + skip_last_comma: true words_connector: ", " two_words_connector: "와(ê³¼) " last_word_connector: ", " @@ -146,28 +148,28 @@ ko: submit: "ì œì¶œ" errors: - format: "%{attribute}%{message}" + format: "%{attribute} %{message}" messages: &errors_messages - inclusion: "ì€(는) 목ë¡ì— í¬í•¨ë˜ì–´ 있습니다" - exclusion: "ì€(는) 목ë¡ì— í¬í•¨ë˜ì–´ 있습니다" - invalid: "ì€(는) 무효입니다" - confirmation: "ì€(는) 확ì¸ë˜ì—ˆìŠµë‹ˆë‹¤" - accepted: "ì€(는) 확ì¸ë˜ì—ˆìŠµë‹ˆë‹¤" - empty: "ì€(는) 비어ë‘ë©´ 안 ë©ë‹ˆë‹¤" - blank: "ì€(는) 비어ë‘ë©´ 안 ë©ë‹ˆë‹¤" - too_long: "ì€(는) 너무 ê¹ë‹ˆë‹¤ (최대 %{count}ìž ê¹Œì§€)" - too_short: "ì€(는) 너무 짧습니다 (최소 %{count}ìž ê¹Œì§€)" - wrong_length: "ì€(는) 길ì´ê°€ í‹€ë ¸ìŠµë‹ˆë‹¤ (%{count}ìžë¥¼ 필요합니다)" - not_a_number: "ì€(는) 숫ìžê°€ 아닙니다" - not_an_integer: "ì€(는) ì •ìˆ˜ê°€ 아닙니다" - greater_than: "ì€(는) %{count}ì´ìƒì„ 요구합니다" - greater_than_or_equal_to: "ì€(는) %{count}ê³¼ 같거나 ì´ìƒì„ 요구합니다" + inclusion: "ì€(는) 목ë¡ì— í¬í•¨ë˜ì–´ 있는 ê°’ì´ ì•„ë‹™ë‹ˆë‹¤" + exclusion: "ì€(는) ì´ë¯¸ 예약ë˜ì–´ 있는 값입니다" + invalid: "ì€(는) 올바르지 ì•Šì€ ê°’ìž…ë‹ˆë‹¤" + confirmation: "ì€(는) 서로 ì¼ì¹˜í•´ì•¼ 합니다" + accepted: "ì„(를) 반드시 확ì¸í•´ì•¼ 합니다" + empty: "ì— ë‚´ìš©ì„ ìž…ë ¥í•´ 주세요" + blank: "ì— ë‚´ìš©ì„ ìž…ë ¥í•´ 주세요" + too_long: "ì€(는) %{count}ìžë¥¼ ë„˜ì„ ìˆ˜ 없습니다" + too_short: "ì€(는) ì ì–´ë„ %{count}ìžë¥¼ 넘어야 합니다" + wrong_length: "ì€(는) %{count}ìžì—¬ì•¼ 합니다" + not_a_number: "ì— ìˆ«ìžë¥¼ ìž…ë ¥í•´ 주세요" + not_an_integer: "ì— ì •ìˆ˜ë¥¼ ìž…ë ¥í•´ 주세요" + greater_than: "ì€(는) %{count}보다 커야 합니다" + greater_than_or_equal_to: "ì€(는) %{count}보다 í¬ê±°ì•¼ 같아야 합니다" equal_to: "ì€(는) %{count}ê³¼ 같아야 합니다" - less_than: "ì€(는) %{count}ì´í•˜ë¥¼ 요구합니다" - less_than_or_equal_to: "ì€(는) %{count}ê³¼ 같거나 ì´í•˜ì„ 요구합니다" - odd: "ì€(는) 홀수를 요구합니다" - even: "ì€(는) ì§ìˆ˜ë¥¼ 요구합니다" + less_than: "ì€(는) %{count}보다 작아야 합니다" + less_than_or_equal_to: "ì€(는) %{count}ê³¼ 작거나 같아야 합니다" + odd: "ì— í™€ìˆ˜ë¥¼ ìž…ë ¥í•´ 주세요" + even: "ì— ì§ìˆ˜ë¥¼ ìž…ë ¥í•´ 주세요" activerecord: errors: @@ -183,4 +185,4 @@ ko: <<: *errors_messages full_messages: - format: "%{attribute}%{message}" \ No newline at end of file + format: "%{attribute} %{message}" diff --git a/config/locales/rails-i18n/lo.yml b/config/locales/rails-i18n/lo.yml index 32a63207bd99810f5dee2f36557acc3ce320691e..d5c4cb00bd4c52c3f96800991a4dea1d14d84165 100644 --- a/config/locales/rails-i18n/lo.yml +++ b/config/locales/rails-i18n/lo.yml @@ -1,6 +1,6 @@ # Lao translation for Ruby on Rails # By justin maccarthy justin.maccarthy@gmail.com with help from Lao language experts... -# +# lo: number: @@ -13,7 +13,7 @@ lo: delimiter: "," # Number of decimals, behind the separator (the number 1 with a precision of 2 gives: 1.00) precision: 3 - + # Used in number_to_currency() currency: format: @@ -24,15 +24,15 @@ lo: separator: "." delimiter: "," precision: 2 - + # Used in number_to_percentage() percentage: format: # These three are to override number.format and are optional - # separator: + # separator: delimiter: "" - # precision: - + # precision: + # Used in number_to_precision() precision: format: @@ -40,12 +40,12 @@ lo: # separator: delimiter: "" # precision: - + # Used in number_to_human_size() human: format: # These three are to override number.format and are optional - # separator: + # separator: delimiter: "" precision: 1 storage_units: @@ -111,7 +111,7 @@ lo: other: "ບà»à»ˆàºªàº²àº¡àº²àº”ບັນທຶຠ%{model} ໄດ້ເນື່àºàº‡àºˆàº²àº ເàºàºµàº” %{count} ຂà»à»‰àºœàº´àº”ພາດ" # The variable :count is also available body: "àºàº°àº¥àº¸àº™àº²àºàº§àº”ສàºàºšàº‚à»à»‰àº¡àº¹àº™à»ƒàº™àº«à»‰àºàº‡àº•à»à»ˆà»„ປນີ້ :" - + # The values :model, :attribute and :value are always available for interpolation # The value :count is available when applicable. Can be used for pluralization. messages: @@ -147,16 +147,16 @@ lo: # attributes: # login: # blank: "This is a custom blank message for User login" - # Will define custom blank validation message for User model and + # Will define custom blank validation message for User model and # custom blank validation message for login attribute of User model. #models: - + # Translate model names. Used in Model.human_name(). #models: # For example, # user: "Dude" # will translate User model name to "Dude" - + # Translate model attribute names. Used in Model.human_attribute_name(attribute). #attributes: # For example, @@ -172,10 +172,10 @@ lo: default: "%d-%m-%Y" short: "%e %b" long: "%e %B %Y" - + day_names: ["àºàº²àº—ິດ", "ຈັນ", "àºàº±àº‡àº„ານ", "ພຸດ", "ພະຫັດ", "ສຸàº", "ເສົາ"] abbr_day_names: ["", "", "", "", "", "", ""] - + # Don't forget the nil at the beginning; there's no such thing as a 0th month month_names: [~, "ມັງàºàºàº™", "àºàº¸àº¡àºžàº²", "ມີນາ", "ເມສາ", "ພຶດສະພາ", "ມິຖຸນາ", "àºà»àº¥àº°àºàº»àº”", "ສິງຫາ", "àºàº±àº™àºàº²", "ຕຸລາ", "ພະຈິàº", "ທັນວາ"] abbr_month_names: [~,"", "", "", "", "", "", "", "", "", "", "", ""] @@ -192,7 +192,7 @@ lo: long: "%d %B %Y %H:%M น." am: "" pm: "" - + # Used in array.to_sentence. support: array: diff --git a/config/locales/rails-i18n/lt.yml b/config/locales/rails-i18n/lt.yml index 3df8df7f9270054203bd06f75ce26cd4147c6fc1..eb4bcc7c6dc07c601818c1cd2b024538dab22dd9 100644 --- a/config/locales/rails-i18n/lt.yml +++ b/config/locales/rails-i18n/lt.yml @@ -7,7 +7,7 @@ lt: separator: "," delimiter: " " precision: 3 - + currency: format: format: "%n %u" @@ -15,15 +15,15 @@ lt: separator: "," delimiter: " " precision: 2 - + percentage: format: delimiter: "" - + precision: format: delimiter: "" - + human: format: delimiter: "" @@ -110,7 +110,7 @@ lt: less_than_or_equal_to: "turi bÅ«ti mažesnis arba lygus %{count}" odd: "turi bÅ«ti nelyginis" even: "turi bÅ«ti lyginis" - + models: date: @@ -118,10 +118,10 @@ lt: default: "%Y-%m-%d" short: "%b %d" long: "%B %d, %Y" - + day_names: [sekmadienis, pirmadienis, antradienis, treÄiadienis, ketvirtadienis, penktadienis, Å¡eÅ¡tadienis] abbr_day_names: [Sek, Pir, Ant, Tre, Ket, Pen, Å eÅ¡] - + month_names: [~, sausio, vasario, kovo, balandžio, gegužės, birželio, liepos, rugpjÅ«Äio, rugsÄ—jo, spalio, lapkriÄio, gruodžio] abbr_month_names: [~, Sau, Vas, Kov, Bal, Geg, Bir, Lie, Rgp, Rgs, Spa, Lap, Grd] order: @@ -136,7 +136,7 @@ lt: long: "%B %d, %Y %H:%M" am: "am" pm: "pm" - + support: array: words_connector: ", " diff --git a/config/locales/rails-i18n/lv.yml b/config/locales/rails-i18n/lv.yml index 3976a9d2f46170b982f45cdc6e0d2768f008fd15..7b456e03098678447f0000a3b672143a26ba687c 100644 --- a/config/locales/rails-i18n/lv.yml +++ b/config/locales/rails-i18n/lv.yml @@ -116,11 +116,11 @@ lv: format: "%n %u" units: unit: "" - thousand: "TÅ«kstotis" - million: "Miljons" - billion: "Biljons" - trillion: "Triljons" - quadrillion: "Kvadriljons" + thousand: TÅ«kstotis + million: Miljons + billion: Biljons + trillion: Triljons + quadrillion: Kvadriljons support: array: @@ -178,4 +178,4 @@ lv: <<: *errors_messages full_messages: - format: "%{attribute}%{message}" + format: "%{attribute} %{message}" diff --git a/config/locales/rails-i18n/mn.yml b/config/locales/rails-i18n/mn.yml index ea50672ffcf84aa0a7b07c89a655459c0452db3a..734374e564c74e9b751a8e2185aafe716fd30bb6 100644 --- a/config/locales/rails-i18n/mn.yml +++ b/config/locales/rails-i18n/mn.yml @@ -1,25 +1,25 @@ # Mongolian localization for Ruby on Rails 2.2+ # by Ochirkhuyag.L <ochkoo@gmail.com> # - + mn: date: formats: default: "%Y-%m-%d" short: "%y-%m-%d" long: "%Y %B %d" - + day_names: [ÐÑм, Даваа, ÐœÑгмар, Лхагва, ПүрÑв, БааÑан, БÑмба] abbr_day_names: [ÐÑ, Да, ÐœÑ, Лх, Пү, Ба, БÑ] - + month_names: [~, 1 Ñар, 2 Ñар, 3 Ñар, 4 Ñар, 5 Ñар, 6 Ñар, 7 Ñар, 8 Ñар, 9 Ñар, 10 Ñар, 11 Ñар, 12 Ñар] abbr_month_names: [~, 1 Ñар, 2 Ñар, 3 Ñар, 4 Ñар, 5 Ñар, 6 Ñар, 7 Ñар, 8 Ñар, 9 Ñар, 10 Ñар, 11 Ñар, 12 Ñар] - + order: - :year - :month - :day - + time: formats: default: "%Y-%m-%d %H:%M" @@ -27,13 +27,13 @@ mn: long: "%Y %B %d, %H:%M:%S" am: "өглөө" pm: "орой" - + number: format: separator: "." delimiter: " " precision: 3 - + currency: format: format: "%n %u" @@ -41,22 +41,22 @@ mn: separator: "." delimiter: " " precision: 2 - + percentage: format: delimiter: "" - + precision: format: delimiter: "" - + human: format: delimiter: "" precision: 1 # Rails 2.2 # storage_units: [байт, КБ, МБ, ГБ, ТБ] - + # Rails 2.3 storage_units: # Storage units output formatting. @@ -70,7 +70,7 @@ mn: mb: "МБ" gb: "ГБ" tb: "ТБ" - + datetime: distance_in_words: half_a_minute: "Ñ…Ð°Ð³Ð°Ñ Ð¼Ð¸Ð½ÑƒÑ‚" diff --git a/config/locales/rails-i18n/nb.yml b/config/locales/rails-i18n/nb.yml index 395361aecdb83c345d61638b3a58c810a1202451..023abef4cfae52e066e78f9a51b87f4f18bc3b75 100644 --- a/config/locales/rails-i18n/nb.yml +++ b/config/locales/rails-i18n/nb.yml @@ -177,4 +177,4 @@ nb: <<: *errors_messages full_messages: - format: "%{attribute}%{message}" + format: "%{attribute} %{message}" diff --git a/config/locales/rails-i18n/nl.yml b/config/locales/rails-i18n/nl.yml index 307f1653fcd1b5f507d6201edc84b4827797984d..e5354df89e8413c75eb7651f703369ec7e39db36 100644 --- a/config/locales/rails-i18n/nl.yml +++ b/config/locales/rails-i18n/nl.yml @@ -21,18 +21,18 @@ nl: - :month - :year - time: - formats: + time: + formats: default: "%a %d %b %Y %H:%M:%S %Z" short: "%d %b %H:%M" - long: "%d %B %Y %H:%M" + long: "%d %B %Y %H:%M" time: "%H:%M" only_second: "%S" am: "'s ochtends" pm: "'s middags" - support: - array: + support: + array: words_connector: ", " two_words_connector: " en " last_word_connector: " en " @@ -113,16 +113,16 @@ nl: x_days: one: "1 dag" other: "%{count} dagen" - about_x_months: + about_x_months: one: "ongeveer \xC3\xA9\xC3\xA9n maand" other: "ongeveer %{count} maanden" x_months: one: "1 maand" other: "%{count} maanden" - about_x_years: + about_x_years: one: "ongeveer \xC3\xA9\xC3\xA9n jaar" other: "ongeveer %{count} jaar" - over_x_years: + over_x_years: one: "meer dan \xC3\xA9\xC3\xA9n jaar" other: "meer dan %{count} jaar" almost_x_years: @@ -183,4 +183,4 @@ nl: <<: *errors_messages full_messages: - format: "%{attribute}%{message}" + format: "%{attribute} %{message}" diff --git a/config/locales/rails-i18n/pl.yml b/config/locales/rails-i18n/pl.yml index 863e035921f3b28c8dad04fec292bd045b1868be..55eceb57b5d6ae636a0b121f0a6083067af796ec 100644 --- a/config/locales/rails-i18n/pl.yml +++ b/config/locales/rails-i18n/pl.yml @@ -1,6 +1,7 @@ # Polish translations for Ruby on Rails # by Jacek Becela (jacek.becela@gmail.com, http://github.com/ncr) # Minor changes and adjustments for Rails 3 by Piotrek OkoÅ„ski (http://github.com/pokonski) +# Minor changes and adjustments by PaweÅ‚ Chojnacki (https://github.com/chojnacki) pl: date: @@ -82,11 +83,11 @@ pl: format: "%n %u" units: unit: "" - thousand: "TysiÄ…c" - million: "Milion" - billion: "Miliard" - trillion: "Trylion" - quadrillion: "Kwadrylion" + thousand: TysiÄ…c + million: Milion + billion: Miliard + trillion: Bilion + quadrillion: Biliard datetime: distance_in_words: @@ -190,4 +191,4 @@ pl: <<: *errors_messages full_messages: - format: "%{attribute}%{message}" + format: "%{attribute} %{message}" diff --git a/config/locales/rails-i18n/pt-BR.yml b/config/locales/rails-i18n/pt-BR.yml index 74fa57aba9d860511513df43998562c0dd4347e5..69355e5ce3e3ae8566d00bbd4da812f0541a4757 100644 --- a/config/locales/rails-i18n/pt-BR.yml +++ b/config/locales/rails-i18n/pt-BR.yml @@ -17,7 +17,7 @@ - :day - :month - :year - + time: formats: default: "%A, %d de %B de %Y, %H:%M h" @@ -83,20 +83,20 @@ decimal_units: format: "%n %u" units: - unit: "" + unit: "" thousand: "mil" million: - one: "milhão" - other: "milhões" + one: milhão + other: milhões billion: - one: "bilhão" - other: "bilhões" + one: bilhão + other: bilhões trillion: - one: "trilhão" - other: "trilhões" + one: trilhão + other: trilhões quadrillion: - one: "quatrilhão" - other: "quatrilhões" + one: quatrilhão + other: quatrilhões # distancia do tempo em palavras datetime: @@ -196,4 +196,4 @@ <<: *errors_messages full_messages: - format: "%{attribute}%{message}" + format: "%{attribute} %{message}" diff --git a/config/locales/rails-i18n/pt-PT.yml b/config/locales/rails-i18n/pt-PT.yml index e8721418b51d4eda4e3fc37028bdb8a59204b398..c5c51b69a9d2c613deab245eb29d59f475b8392d 100644 --- a/config/locales/rails-i18n/pt-PT.yml +++ b/config/locales/rails-i18n/pt-PT.yml @@ -4,14 +4,14 @@ "pt-PT": date: - formats: + formats: default: "%d/%m/%Y" short: "%d de %B" long: "%d de %B de %Y" day_names: [Domingo, Segunda, Terça, Quarta, Quinta, Sexta, Sábado] abbr_day_names: [Dom, Seg, Ter, Qua, Qui, Sex, Sáb] - + month_names: [~, Janeiro, Fevereiro, Março, Abril, Maio, Junho, Julho, Agosto, Setembro, Outubro, Novembro, Dezembro] abbr_month_names: [~, Jan, Fev, Mar, Abr, Mai, Jun, Jul, Ago, Set, Out, Nov, Dez] order: @@ -31,11 +31,11 @@ array: words_connector: ", " two_words_connector: " e " - last_word_connector: ", e" - - select: + last_word_connector: ", e" + + select: prompt: "Por favor seleccione" - + number: format: separator: "," @@ -77,25 +77,25 @@ kb: "KB" mb: "MB" gb: "GB" - tb: "TB" + tb: "TB" decimal_units: format: "%n %u" units: unit: "" - thousand: "mil" + thousand: mil million: - one: "milhão" - other: "milhões" + one: milhão + other: milhões billion: one: mil milhões other: mil milhões trillion: - one: "bilião" - other: "biliões" + one: bilião + other: biliões quadrillion: one: mil biliões other: mil biliões - + datetime: distance_in_words: half_a_minute: "meio minuto" @@ -187,4 +187,4 @@ <<: *errors_messages full_messages: - format: "%{attribute}%{message}" + format: "%{attribute} %{message}" diff --git a/config/locales/rails-i18n/rm.yml b/config/locales/rails-i18n/rm.yml index 7b81ecf92e3e37b4fcfe8417ff1424e97d3a3a83..1d256857413871b7d8de0706ded6dbddf610a781 100644 --- a/config/locales/rails-i18n/rm.yml +++ b/config/locales/rails-i18n/rm.yml @@ -1,4 +1,4 @@ -# Romansh translations for Ruby on Rails +# Romansh translations for Ruby on Rails # by Flurina Andriuet and Sebastian de Castelberg (rails-i18n@kpricorn.org) rm: @@ -16,7 +16,7 @@ rm: - :day - :month - :year - + time: formats: default: "%A, %d. %B %Y, %H:%M Uhr" @@ -24,7 +24,7 @@ rm: long: "%A, %d. %B %Y, %H:%M Uhr" am: "avantmezdi" pm: "suentermezdi" - + datetime: distance_in_words: half_a_minute: "ina mesa minuta" diff --git a/config/locales/rails-i18n/ro.yml b/config/locales/rails-i18n/ro.yml index ce9e3349b5ec4999489207d2f9e438217fb3d222..e979c5539f35e1b7fdd31aeb97f5499468b0978a 100644 --- a/config/locales/rails-i18n/ro.yml +++ b/config/locales/rails-i18n/ro.yml @@ -1,4 +1,4 @@ -# Romanian translations for Ruby on Rails +# Romanian translations for Ruby on Rails # by Catalin Ilinca (me@talin.ro) # updated by kfl62 (bogus keys are now commented) @@ -18,7 +18,7 @@ ro: - :day - :month - :year - + time: formats: default: "%a %d %b %Y, %H:%M:%S %z" @@ -26,14 +26,14 @@ ro: short: "%d %b %H:%M" long: "%d %B %Y %H:%M" # only_second: "%S" - + # datetime: # formats: # default: "%d-%m-%YT%H:%M:%S%Z" - + am: '' pm: '' - + datetime: distance_in_words: half_a_minute: "jumătate de minut" @@ -77,7 +77,7 @@ ro: hour: "Ora" minute: "Minutul" second: "Secunda" - + number: format: precision: 3 @@ -115,11 +115,11 @@ ro: mb: "MB" gb: "GB" tb: "TB" - + activerecord: errors: template: - header: + header: one: "Nu am putut salva acest %{model}: o eroare" other: "Nu am putut salva acest %{model}: %{count} erori." body: "ÃŽncearcă să corectezi urmatoarele câmpuri:" diff --git a/config/locales/rails-i18n/ru.yml b/config/locales/rails-i18n/ru.yml index b4311d9a3689ea1e8f1075a83e5f1a4e522d0242..5f52626ae537df11114eb40a17134c55d2727dfa 100644 --- a/config/locales/rails-i18n/ru.yml +++ b/config/locales/rails-i18n/ru.yml @@ -2,11 +2,11 @@ # by Yaroslav Markin <yaroslav@markin.net> # # Be sure to check out "russian" gem (http://github.com/yaroslav/russian) for -# full Russian language support in Rails (month names, pluralization, etc). +# full Russian language support in Rails (month names, pluralization, etc). # The following is an excerpt from that gem. # -# Ð”Ð»Ñ Ð¿Ð¾Ð»Ð½Ð¾Ñ†ÐµÐ½Ð½Ð¾Ð¹ поддержки руÑÑкого Ñзыка (варианты названий меÑÑцев, -# Ð¿Ð»ÑŽÑ€Ð°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð¸ так далее) в Rails 2.2 нужно иÑпользовать gem "russian" +# Ð”Ð»Ñ Ð¿Ð¾Ð»Ð½Ð¾Ñ†ÐµÐ½Ð½Ð¾Ð¹ поддержки руÑÑкого Ñзыка (варианты названий меÑÑцев, +# Ð¿Ð»ÑŽÑ€Ð°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð¸ так далее) в Rails 2.2 нужно иÑпользовать gem "russian" # (http://github.com/yaroslav/russian). Следующие данные -- выдержка их него, чтобы # была возможноÑÑ‚ÑŒ минимальной локализации Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð½Ð° руÑÑкий Ñзык. @@ -48,7 +48,7 @@ ru: precision: 3 significant: false strip_insignificant_zeros: false - + currency: format: format: "%n %u" @@ -58,22 +58,22 @@ ru: precision: 2 significant: false strip_insignificant_zeros: false - + percentage: format: delimiter: "" - + precision: format: delimiter: "" - + human: format: delimiter: "" precision: 1 significant: false strip_insignificant_zeros: false - + # Rails 2.2 # storage_units: [байт, КБ, МБ, ГБ, ТБ] @@ -92,7 +92,7 @@ ru: mb: "МБ" gb: "ГБ" tb: "ТБ" - + # Rails 3 decimal_units: format: "%n %u" @@ -102,8 +102,8 @@ ru: one: "ТыÑÑча" few: "ТыÑÑч" many: "ТыÑÑч" - other: "ТыÑÑч" - million: + other: "ТыÑÑч" + million: one: "Миллион" few: "Миллионов" many: "Миллионов" @@ -283,10 +283,10 @@ ru: odd: "может иметь лишь четное значение" even: "может иметь лишь нечетное значение" record_invalid: "Возникли ошибки: %{errors}" - + full_messages: format: "%{attribute} %{message}" - + support: select: @@ -296,7 +296,7 @@ ru: # Rails 2.2 sentence_connector: "и" skip_last_comma: true - + # Rails 2.3 words_connector: ", " two_words_connector: " и " diff --git a/config/locales/rails-i18n/sk.yml b/config/locales/rails-i18n/sk.yml index 4ca80834690e121abeca0f1a8e2c217546f6eeed..00148b6f32efdd52a505f1e5ebfae9af513cbc50 100644 --- a/config/locales/rails-i18n/sk.yml +++ b/config/locales/rails-i18n/sk.yml @@ -1,5 +1,6 @@ # Slovak translations for Ruby on Rails (inspired by the Czech localization - thanx to Karel MinaÅ™Ãk) # by Jozef Fulop (jofi-rails@silake.com) +# edit by Ivan Stana (stiipa@centrum.sk) "sk": # Date @@ -35,14 +36,14 @@ two_words_connector: " a " last_word_connector: " a " select: - prompt: "ProsÃm vyberte si." + prompt: "ProsÃm vyberte si" # Numbers number: format: precision: 3 - separator: "." - delimiter: "," + separator: "," + delimiter: " " significant: false strip_insignificant_zeros: false @@ -58,7 +59,7 @@ percentage: format: - delimiter: "" + delimiter: " " precision: format: @@ -85,11 +86,11 @@ format: "%n %u" units: unit: "" - thousand: "TisÃc" - million: "Milión" - billion: "Miliarda" - trillion: "Trilión" - quadrillion: "Quadrilión" + thousand: TisÃc + million: Milión + billion: Miliarda + trillion: Bilión + quadrillion: Biliarda # Distance of time ... helper datetime: @@ -101,7 +102,7 @@ month: "Mesiac" year: "Rok" distance_in_words: - half_a_minute: 'pol minutou' + half_a_minute: 'pol minútou' less_than_x_seconds: one: 'asi pred sekundou' other: 'asi pred %{count} sekundami' @@ -133,8 +134,8 @@ one: 'pred viac ako rokom' other: 'viac ako %{count} rokmi' almost_x_years: - one: "takmer rokom" - other: "takmer %{count} rokmi" + one: "takmer pred rokom" + other: "takmer pred %{count} rokmi" helpers: select: @@ -153,43 +154,43 @@ invalid: "nie je platná hodnota" confirmation: "nebolo potvrdené" accepted: "musà byÅ¥ potvrdené" - empty: "nesmie byÅ¥ prázdný/é" + empty: "nesmie byÅ¥ prázdny/e" blank: "je povinná položka" too_long: "je prÃliÅ¡ dlhá/ý (max. %{count} znakov)" - too_short: "je prÃliÅ¡ krátký/á (min. %{count} znakov)" + too_short: "je prÃliÅ¡ krátky/a (min. %{count} znakov)" wrong_length: "nemá správnu dĺžku (oÄakáva sa %{count} znakov)" taken: "sa už nachádza v databáze" not_a_number: "nie je ÄÃslo" - not_an_integer: "nie je celé ÄÃslo" - greater_than: "musà byÅ¥ väÄÅ¡Ãe ako %{count}" - greater_than_or_equal_to: "musà byÅ¥ väÄÅ¡ie alebo rovnaké ako %{count}" + not_an_integer: "musà byÅ¥ celé ÄÃslo" + greater_than: "musà byÅ¥ väÄÅ¡ie ako %{count}" + greater_than_or_equal_to: "musà byÅ¥ väÄÅ¡ie alebo rovné %{count}" equal_to: "sa musà rovnaÅ¥ %{count}" less_than: "musà byÅ¥ menÅ¡ie ako %{count}" - less_than_or_equal_to: "musà byÅ¥ menÅ¡ie ako %{count}" + less_than_or_equal_to: "musà byÅ¥ menÅ¡ie alebo rovné %{count}" odd: "musà byÅ¥ nepárne ÄÃslo" even: "musà byÅ¥ párne ÄÃslo" # ActiveRecord validation messages - activerecord: + activerecord: errors: template: header: - one: "Zmeny na %{model} neboli uložené. Vyskytla sa 1 chyba" - other: "Zmeny na %{model} neboli uložené. Vyskytlo sa %{count} chýb" - body: "There were problems with the following fields:" + one: "Objekt %{model} nebol uložený. Vyskytla sa 1 chyba" + other: "Objekt %{model} nebol uložený. Vyskytlo sa %{count} chýb" + body: "Nasledujúce polia obsahujú chybne vyplnené údaje:" messages: taken: "ste už použili" - record_invalid: "Validácia neuspeÅ¡ná: %{errors}" + record_invalid: "Validácia neúspeÅ¡ná: %{errors}" <<: *errors_messages full_messages: - format: "%{attribute}%{message}" + format: "%{attribute} %{message}" activemodel: errors: template: header: - one: "Pri ukladanà objektu %{model} doÅ¡lo k chybám a nebolo možné objekt uložiÅ¥" - other: "Pri ukladanà objektu %{model} doÅ¡lo ku %{count} chybe/ám a nebolo možné objekt uložiÅ¥" + one: "Pri ukladanà objektu %{model} doÅ¡lo k chybám a nebolo ho možné uložiÅ¥" + other: "Pri ukladanà objektu %{model} doÅ¡lo k %{count} chybám a nebolo ho možné uložiÅ¥" body: "Nasledujúce polia obsahujú chybne vyplnené údaje:" diff --git a/config/locales/rails-i18n/sl.yml b/config/locales/rails-i18n/sl.yml index d1bdb285b11fea51f32d1f6f220c9c149091ff22..468e4399b33fafecb7622ac1c59058a37bf68953 100644 --- a/config/locales/rails-i18n/sl.yml +++ b/config/locales/rails-i18n/sl.yml @@ -1,6 +1,6 @@ # Slovenian language localization (sl-sl) # by Miha Rebernik <miha@rebernik.info> -sl: +sl: date: formats: default: "%d.%m.%Y" @@ -24,7 +24,7 @@ sl: short: "%d. %b ob %H:%M" long: "%d. %B, %Y ob %H:%M" simple: "%d. %B %Y ob %H:%M" - + am: "dopoldan" pm: "popoldan" @@ -77,7 +77,7 @@ sl: delimiter: "." # Number of decimals, behind the separator (the number 1 with a precision of 2 gives: 1.00) precision: 2 - + # Used in number_to_currency() currency: format: @@ -88,15 +88,15 @@ sl: separator: "," delimiter: "." precision: 2 - + # Used in number_to_percentage() percentage: format: # These three are to override number.format and are optional - # separator: + # separator: delimiter: "" - # precision: - + # precision: + # Used in number_to_precision() precision: format: @@ -104,12 +104,12 @@ sl: # separator: delimiter: "" # precision: - + # Used in number_to_human_size() human: format: # These three are to override number.format and are optional - # separator: + # separator: delimiter: "" precision: 1 storage_units: @@ -169,7 +169,7 @@ sl: two: "2 meseca" few: "%{count} mesece" other: "%{count} mesecev" - almost_x_years: + almost_x_years: one: "skoraj 1 leto" two: "skoraj 2 leti" few: "skoraj %{count} leta" @@ -190,4 +190,4 @@ sl: day: "Dan" hour: "Ura" minute: "Minute" - second: "Sekunde" \ No newline at end of file + second: "Sekunde" diff --git a/config/locales/rails-i18n/sv-SE.yml b/config/locales/rails-i18n/sv-SE.yml index ddc835fa3b8ef7adf142ff8656b0736f16033647..044aa98ee106d1aec1a10cc1f75f9c47bbf7d67a 100644 --- a/config/locales/rails-i18n/sv-SE.yml +++ b/config/locales/rails-i18n/sv-SE.yml @@ -143,6 +143,7 @@ odd: "mÃ¥ste vara udda" even: "mÃ¥ste vara jämnt" record_invalid: "Ett fel uppstod: %{errors}" + not_saved: "Kunde inte sparas" activerecord: errors: diff --git a/config/locales/rails-i18n/sw.yml b/config/locales/rails-i18n/sw.yml index b8875a437f17a1f27ee69893a765da0ca37d98a3..e9b33413f3e30563bac9d61b523d20e8fa001555 100644 --- a/config/locales/rails-i18n/sw.yml +++ b/config/locales/rails-i18n/sw.yml @@ -82,11 +82,11 @@ sw: format: '%n %u' units: unit: '' - thousand: "Elfu" - million: "Milioni" - billion: "Bilioni" - trillion: "Trilioni" - quadrillion: "Quadrillion" + thousand: Elfu + million: Milioni + billion: Bilioni + trillion: Trilioni + quadrillion: Quadrillion datetime: distance_in_words: diff --git a/config/locales/rails-i18n/th.rb b/config/locales/rails-i18n/th.rb index 5e82451e5b8515691aa91c851f2075284c60b2a1..b07f54807dc308b91ff97b117659ef62b16b9ae7 100644 --- a/config/locales/rails-i18n/th.rb +++ b/config/locales/rails-i18n/th.rb @@ -174,7 +174,7 @@ end }, :errors => { - :format => "%{attribute}%{message}", + :format => "%{attribute} %{message}", :messages => ThaiLocaleI18n::ERROR_MESSAGES }, @@ -191,7 +191,7 @@ end }.merge(ThaiLocaleI18n::ERROR_MESSAGES), :full_messages => { - :format => "%{attribute}%{message}" + :format => "%{attribute} %{message}" }, } } diff --git a/config/locales/rails-i18n/tr.yml b/config/locales/rails-i18n/tr.yml index 058ba12f01d5d77ea23e9afc218ecf91eb96fb67..23af454d616aa461ed2d8b18b6625b75b3721c07 100644 --- a/config/locales/rails-i18n/tr.yml +++ b/config/locales/rails-i18n/tr.yml @@ -1,9 +1,9 @@ -# Turkish translations for Ruby on Rails +# Turkish translations for Ruby on Rails # by Ozgun Ataman (ozataman@gmail.com) tr: locale: - native_name: "Türkçe" + native_name: Türkçe address_separator: " " date: formats: @@ -21,7 +21,7 @@ tr: - :day - :month - :year - + time: formats: default: "%a %d.%b.%y %H:%M" @@ -32,7 +32,7 @@ tr: am: "öğleden önce" pm: "öğleden sonra" - + datetime: distance_in_words: half_a_minute: 'yarım dakika' @@ -71,7 +71,7 @@ tr: almost_x_years: one: "neredeyse 1 yıl" other: "neredeyse %{count} yıl" - + number: format: precision: 2 @@ -109,7 +109,7 @@ tr: words_connector: ", " two_words_connector: " ve " last_word_connector: " ve " - + activerecord: errors: template: diff --git a/config/locales/rails-i18n/uk.yml b/config/locales/rails-i18n/uk.yml index c16e7c9f0ca629df1748cc34286cad0d571c9355..1630fd6f1ea3e6d95523bb9f6ab82c28cd046dbb 100644 --- a/config/locales/rails-i18n/uk.yml +++ b/config/locales/rails-i18n/uk.yml @@ -16,7 +16,7 @@ uk: precision: 3 significant: false strip_insignificant_zeros: false - + # Used in number_to_currency() currency: format: @@ -29,15 +29,15 @@ uk: precision: 2 significant: false strip_insignificant_zeros: false - + # Used in number_to_percentage() percentage: format: # These three are to override number.format and are optional - # separator: + # separator: delimiter: "" - # precision: - + # precision: + # Used in number_to_precision() precision: format: @@ -45,17 +45,17 @@ uk: # separator: delimiter: "" # precision: - + # Used in number_to_human_size() human: format: # These three are to override number.format and are optional - # separator: + # separator: delimiter: "" precision: 1 significant: false strip_insignificant_zeros: false - + storage_units: # Storage units output formatting. # %u is the storage unit, %n is the number (default: 2 MB) @@ -79,8 +79,8 @@ uk: one: "ТиÑÑча" few: "ТиÑÑч" many: "ТиÑÑч" - other: "ТиÑÑч" - million: + other: "ТиÑÑч" + million: one: "Мільйон" few: "Мільйонів" many: "Мільйонів" @@ -112,7 +112,7 @@ uk: other: "менше %{count} Ñекунди" x_seconds: one: "%{count} Ñекунда" - few: "%{count} Ñекунди" + few: "%{count} Ñекунди" many: "%{count} Ñекунд" other: "%{count} Ñекунди" less_than_x_minutes: @@ -160,7 +160,7 @@ uk: few: "майже %{count} років" many: "майже %{count} років" other: "майже %{count} років" - + prompts: year: "Рік" month: "МіÑÑць" @@ -168,7 +168,7 @@ uk: hour: "Година" minute: "Хвилина" second: "Секунда" - + helpers: select: # Default value for :prompt => true in FormOptionsHelper @@ -180,7 +180,7 @@ uk: update: 'Зберегти %{model}' submit: 'Зберегти %{model}' - + errors: format: "%{attribute} %{message}" # The values :model, :attribute and :value are always available for interpolation @@ -193,7 +193,7 @@ uk: accepted: "має бути прийнÑтий" empty: "не може бути порожнім" blank: "не може бути пуÑтим" - too_long: + too_long: one: "занадто довгий (макÑимум %{count} знак)" few: "занадто довгий (макÑимум %{count} знаки)" many: "занадто довгий (макÑимум %{count} знаків)" @@ -243,7 +243,7 @@ uk: accepted: "має бути прийнÑтий" empty: "не може бути порожнім" blank: "не може бути пуÑтим" - too_long: + too_long: one: "занадто довгий (макÑимум %{count} знак)" few: "занадто довгий (макÑимум %{count} знаки)" many: "занадто довгий (макÑимум %{count} знаків)" @@ -268,7 +268,7 @@ uk: odd: "має бути непарним" even: "має бути парним" record_invalid: "Виникли помилки: %{errors}" - + date: formats: # Use the strftime parameters for formats. @@ -277,10 +277,10 @@ uk: default: "%d.%m.%Y" short: "%d %b" long: "%d %B %Y" - + day_names: [неділÑ, понеділок, вівторок, Ñереда, четвер, "п'ÑтницÑ", Ñубота] abbr_day_names: [нд., пн., вт., ÑÑ€., чт., пт., Ñб.] - + # Don't forget the nil at the beginning; there's no such thing as a 0th month month_names: [~, Січень, Лютий, Березень, Квітень, Травень, Червень, Липень, Серпень, ВереÑень, Жовтень, ЛиÑтопад, Грудень] abbr_month_names: [~, Ñіч., лют., бер., квіт., трав., черв., лип., Ñерп., вер., жовт., лиÑÑ‚., груд.] @@ -297,7 +297,7 @@ uk: long: "%d %B %Y, %H:%M" am: "до полуднÑ" pm: "по полудні" - + # Used in array.to_sentence. support: select: @@ -308,4 +308,4 @@ uk: words_connector: ", " two_words_connector: " Ñ– " last_word_connector: " та " - + diff --git a/config/locales/rails-i18n/vi.yml b/config/locales/rails-i18n/vi.yml index aea7e3e54c82007a0c96670380a8f297c7bc5dc4..0006c7a0c08fef39b32da9e3af2963bfd1acbd36 100644 --- a/config/locales/rails-i18n/vi.yml +++ b/config/locales/rails-i18n/vi.yml @@ -147,16 +147,16 @@ vi: # attributes: # login: # blank: "This is a custom blank message for User login" - # Will define custom blank validation message for User model and + # Will define custom blank validation message for User model and # custom blank validation message for login attribute of User model. # models: - + # Translate model names. Used in Model.human_name(). #models: # For example, # user: "Dude" # will translate User model name to "Dude" - + # Translate model attribute names. Used in Model.human_attribute_name(attribute). #attributes: # For example, diff --git a/config/routes.rb b/config/routes.rb index 096d6e8cea48cafde33179b26b3bc7f4ed65ff85..3160ab45a6cc7a292120ceeea8e32d0a7706d600 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -12,18 +12,16 @@ Diaspora::Application.routes.draw do end resources :status_messages, :only => [:new, :create, :destroy, :show] - get 'p/:id' => 'posts#show', :as => 'post' + get 'bookmarklet' => 'status_messages#bookmarklet' + get 'p/:id' => 'posts#show', :as => 'post' resources :photos, :except => [:index] do put 'make_profile_photo' => :make_profile_photo end resources :comments, :only => [:create, :destroy] + resource :like, :only => [:create] - get 'tags/:name' => 'tags#show', :as => 'tag' - resources :tags, :only => [:index] - - resource :like, :only => [:create] resources :conversations do resources :messages, :only => [:create, :show] @@ -34,6 +32,8 @@ Diaspora::Application.routes.draw do get 'read_all' => :read_all, :on => :collection end + resources :tags, :only => [:index] + get 'tags/:name' => 'tags#show', :as => 'tag' # Users and people @@ -42,6 +42,7 @@ Diaspora::Application.routes.draw do get :export_photos end + controller :users do get 'public/:username' => :public, :as => 'users_public' match 'getting_started' => :getting_started, :as => 'getting_started' @@ -61,21 +62,21 @@ Diaspora::Application.routes.draw do get 'login' => redirect('/users/sign_in') scope 'admins', :controller => :admins do - match 'user_search' => :user_search - get 'admin_inviter' => :admin_inviter - get 'add_invites' => :add_invites, :as => 'add_invites' + match 'user_search' => :user_search + get 'admin_inviter' => :admin_inviter + get 'add_invites' => :add_invites, :as => 'add_invites' end - get 'bookmarklet' => 'status_messages#bookmarklet' resource :profile - resources :contacts, :except => [:index, :update, :create] - resources :aspect_memberships, :only => [:destroy, :create, :update] - resources :post_visibilities, :only => [:update] + resources :contacts, :except => [:index, :update, :create] + resources :aspect_memberships, :only => [:destroy, :create, :update] + resources :post_visibilities, :only => [:update] resources :people, :except => [:edit, :update] do resources :status_messages resources :photos + get :contacts post 'by_handle' => :retrieve_remote, :on => :collection, :as => 'person_by_handle' end diff --git a/db/migrate/20110421120744_downcase_usernames.rb b/db/migrate/20110421120744_downcase_usernames.rb new file mode 100644 index 0000000000000000000000000000000000000000..a4d24d1ab56d883c1a27763e5c3f748bef0795cd --- /dev/null +++ b/db/migrate/20110421120744_downcase_usernames.rb @@ -0,0 +1,13 @@ +class DowncaseUsernames < ActiveRecord::Migration + def self.up + execute <<SQL + UPDATE users + SET users.username = LOWER(users.username) + WHERE users.username != LOWER(users.username) +SQL + end + + def self.down + raise ActiveRecord::IrreversibleMigration.new + end +end diff --git a/db/schema.rb b/db/schema.rb index 6c4c75ddf2aa024ecd2d2869fcbd707b759d6ff5..6b8dcb155b4c5fa605b943b6bd892841c5e883cc 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,7 +10,7 @@ # # It's strongly recommended to check this file into your version control system. -ActiveRecord::Schema.define(:version => 20110406203720) do +ActiveRecord::Schema.define(:version => 20110421120744) do create_table "aspect_memberships", :force => true do |t| t.integer "aspect_id", :null => false diff --git a/db/seeds.rb b/db/seeds.rb index ef0d810830005530624fa3e0a0f20b1c5f182edb..7d8dd676c63bb2894d38970d0ed7f44c0c8a04b0 100644 --- a/db/seeds.rb +++ b/db/seeds.rb @@ -34,8 +34,8 @@ time_interval = 1000 (1..25).each do |n| [alice, bob, eve].each do |u| post = u.post :status_message, :text => "#{u.username} - #{n} - #seeded", :to => u.aspects.first.id - post.created_at = post.created_at + time_interval - post.updated_at = post.updated_at + time_interval + post.created_at = post.created_at - time_interval + post.updated_at = post.updated_at - time_interval post.save time_interval += 1000 end diff --git a/features/change_password.feature b/features/change_password.feature index 0ee3bc43365fb2ea12e592b4d39a3af9e728244e..d93f2c7251e0f566cd7c67c2c4af9e03d2081216 100644 --- a/features/change_password.feature +++ b/features/change_password.feature @@ -11,8 +11,7 @@ Feature: Change password And I fill in "user_password_confirmation" with "newsecret" And I press "Change Password" Then I should see "Password Changed" - And I click on my name in the header - And I follow "logout" + When I sign out Then I should be on the home page And I sign in with password "newsecret" Then I should be on the aspects page diff --git a/features/comments.feature b/features/comments.feature index ac88ce360a7edb52d036bdb2b7c2e3d6ee565625..55e2ccf9f73b49888b1cc4f471b276e2bc555d83 100644 --- a/features/comments.feature +++ b/features/comments.feature @@ -61,3 +61,17 @@ Feature: commenting And I click to delete the first comment And I wait for the ajax to finish Then I should not see "is that a poodle?" + + Scenario: expand the comment form + When I sign in as "bob@bob.bob" + Then I should see "Look at this dog" + Then the first comment field should be closed + When I focus the comment field + Then the first comment field should be open + + When I follow "Besties" + And I wait for the ajax to finish + Then I should see "Look at this dog" + Then the first comment field should be closed + When I focus the comment field + Then the first comment field should be open diff --git a/features/embedder.feature b/features/embedder.feature new file mode 100644 index 0000000000000000000000000000000000000000..a2134415c042c0d78517ae58bf091383d68ecf60 --- /dev/null +++ b/features/embedder.feature @@ -0,0 +1,25 @@ +# @javascript +# Feature: embedding +# Get sure that embedding stuff actually works +# +# Background: +# Given a user with username "bob" +# When I sign in as "bob@bob.bob" +# And I have no open aspects saved +# And I am on the home page +# +# Scenario: Youtube is fully embedded +# Given I expand the publisher +# When I fill in "status_message_fake_text" with "Look at this awesome video: https://www.youtube.com/watch?v=53tq9g35kwk" +# And I press "Share" +# And I follow "All Aspects" +# Then I should see "Look at this awesome video: Youtube: Leekspin" within ".stream_element" +# When I follow "Youtube: Leekspin" +# And I wait for the ajax to finish +# Then I should see "Watch this video on YouTube" within ".video-container" +# +# #After ajax aspect switch +# When I follow "Besties" +# And I wait for the ajax to finish +# And I follow "Youtube: Leekspin" +# Then I should see "Watch this video on YouTube" within ".video-container" diff --git a/features/infinite_scroll.feature b/features/infinite_scroll.feature new file mode 100644 index 0000000000000000000000000000000000000000..98181bff15ebdc8e1a78ead8ee46958df63032e6 --- /dev/null +++ b/features/infinite_scroll.feature @@ -0,0 +1,72 @@ +@javascript +Feature: infinite scroll + In order to browse without disruption + As medium-sized internet grazing animal + I want the stream to infinite scroll + + Background: + Given many posts from alice for bob + When I sign in as "bob@bob.bob" + + Scenario: on the main stream + Then I should see 15 posts + And I should see "alice - 15 - #seeded" + + When I scroll down + Then I should see 30 posts + And I should see "alice - 30 - #seeded" + + When I scroll down + Then I should see 40 posts + And I should see "alice - 40 - #seeded" + + When I scroll down + Then I should see "No more" + + When I follow "generic" + And I wait for the ajax to finish + Then I should see 15 posts + And I should see "alice - 15 - #seeded" + + When I scroll down + Then I should see 30 posts + And I should see "alice - 30 - #seeded" + + When I scroll down + Then I should see 40 posts + And I should see "alice - 40 - #seeded" + + When I scroll down + Then I should see "No more" + + Scenario: On a tag page + And I am on the tag page for "seeded" + Then I should see 15 posts + And I should see "alice - 15 - #seeded" + + When I scroll down + Then I should see 30 posts + And I should see "alice - 30 - #seeded" + + When I scroll down + Then I should see 40 posts + And I should see "alice - 40 - #seeded" + + When I scroll down + Then I should see "No more" + + Scenario: On a profile page + And I am on "alice@alice.alice"'s page + Then I should see 15 posts + And I should see "alice - 15 - #seeded" + + When I scroll down + Then I should see 30 posts + And I should see "alice - 30 - #seeded" + + When I scroll down + Then I should see 40 posts + And I should see "alice - 40 - #seeded" + + When I scroll down + Then I should see "No more" diff --git a/features/logs_in_and_out.feature b/features/logs_in_and_out.feature index 9d86be644eb3b4b5c890a2c2efc331ac46b9fe99..b39b3e68280b8f6d4335be6b4b88ced0b8323e9a 100644 --- a/features/logs_in_and_out.feature +++ b/features/logs_in_and_out.feature @@ -12,5 +12,5 @@ Feature: user authentication Scenario: user logs out Given I am signed in And I click on my name in the header - And I follow "logout" + And I follow "log out" Then I should be on the home page diff --git a/features/step_definitions/comment_steps.rb b/features/step_definitions/comment_steps.rb index 05727152abebf41f7b663b8254c781d6f227f7d0..e1be708be7c9aa71f8594d653059c3bb7e19ae39 100644 --- a/features/step_definitions/comment_steps.rb +++ b/features/step_definitions/comment_steps.rb @@ -1,3 +1,13 @@ When /^I focus the comment field$/ do find("a.focus_comment_textarea").click end + +Then /^the first comment field should be open/ do + css_query = "$('#main_stream .stream_element:first .submit_button .comment_submit.button:visible')" + page.evaluate_script("#{css_query}.length").should == 1 +end + +Then /^the first comment field should be closed$/ do + css_query = "$('#main_stream .stream_element:first .submit_button .comment_submit.button:hidden')" + page.evaluate_script("#{css_query}.length").should == 1 +end diff --git a/features/step_definitions/custom_web_steps.rb b/features/step_definitions/custom_web_steps.rb index fa3d1f14663730244fed6368b65426987e3d8716..7a8377a34b704fab71d9e48c13a5ae22b00d95b7 100644 --- a/features/step_definitions/custom_web_steps.rb +++ b/features/step_definitions/custom_web_steps.rb @@ -188,3 +188,13 @@ Then /^the "([^"]*)" field(?: within "([^"]*)")? should be filled with "([^"]*)" end end end + +Then /^I should see (\d+) posts$/ do |n_posts| + evaluate_script("$('#main_stream .stream_element').length").should == n_posts.to_i +end + +And /^I scroll down$/ do + evaluate_script("window.scrollBy(0,3000000)") + sleep 1 + wait_until(10) { evaluate_script('$("#infscr-loading:visible").length') == 0 } +end diff --git a/features/step_definitions/session_steps.rb b/features/step_definitions/session_steps.rb index d81fc321a48bea327df9ecaba426918a57072440..79ebb7eba0d0b3a3a47036fd88cfcdb4286249f6 100644 --- a/features/step_definitions/session_steps.rb +++ b/features/step_definitions/session_steps.rb @@ -39,5 +39,5 @@ end When /^I (?:log|sign) out$/ do When 'I click on my name in the header' - And 'I follow "logout"' + And 'I follow "log out"' end diff --git a/features/step_definitions/user_steps.rb b/features/step_definitions/user_steps.rb index af0465bf65b7077a8b74f555d756d3c8c2398c62..181be70a8feef03cfc6a84a3eda0bf67f986a7de 100644 --- a/features/step_definitions/user_steps.rb +++ b/features/step_definitions/user_steps.rb @@ -139,3 +139,17 @@ Given /^there is a user "([^\"]*)" who's tagged "([^\"]*)"$/ do |full_name, tag| user.profile.build_tags user.profile.save! end + +Given /^many posts from alice for bob$/ do + alice = Factory(:user_with_aspect, :username => 'alice', :email => 'alice@alice.alice', :password => 'password', :getting_started => false) + bob = Factory(:user_with_aspect, :username => 'bob', :email => 'bob@bob.bob', :password => 'password', :getting_started => false) + connect_users_with_aspects(alice, bob) + time_interval = 1000 + (1..40).each do |n| + post = alice.post :status_message, :text => "#{alice.username} - #{n} - #seeded", :to => alice.aspects.first.id + post.created_at = post.created_at - time_interval + post.updated_at = post.updated_at - time_interval + post.save + time_interval += 1000 + end +end diff --git a/features/support/env.rb b/features/support/env.rb index 1257f607d94b66c52813018e59aeafaae8a714aa..09827a3f5a29d38a190dc400683c0e7d456230e3 100644 --- a/features/support/env.rb +++ b/features/support/env.rb @@ -43,6 +43,7 @@ require File.join(File.dirname(__FILE__), "database_cleaner_patches") require File.join(File.dirname(__FILE__), "..", "..", "spec", "support", "fake_redis") require File.join(File.dirname(__FILE__), "..", "..", "spec", "helper_methods") +require File.join(File.dirname(__FILE__), "..", "..", "spec", "support","user_methods") include HelperMethods Before do @@ -52,6 +53,8 @@ end silence_warnings do SERVICES['facebook'] = {'app_id' => :fake} end + +require File.join(File.dirname(__FILE__), "..", "..", "spec", "support", "fake_resque") module Resque def enqueue(klass, *args) klass.send(:perform, *args) diff --git a/lib/collect_user_photos.rb b/lib/collect_user_photos.rb index 358ce4e0c6a5744a4de002e12122cada7d2f0f16..f91875a0be09922719361cf1b2a949451ce6e600 100644 --- a/lib/collect_user_photos.rb +++ b/lib/collect_user_photos.rb @@ -5,7 +5,7 @@ module PhotoMover FileUtils::mkdir_p temp_dir Dir.chdir 'tmp/exports' - photos = user.raw_visible_posts.where(:author_id => user.person.id, :type => 'Photo') + photos = user.visible_posts.where(:author_id => user.person.id, :type => 'Photo') photos_dir = "#{user.id}/photos" FileUtils::mkdir_p photos_dir diff --git a/lib/diaspora/exporter.rb b/lib/diaspora/exporter.rb index adb33d26da74ac460b299ee59c2ad16b717c1e0c..36e71444b2ffd09d6a296170abd724e8f948b173 100644 --- a/lib/diaspora/exporter.rb +++ b/lib/diaspora/exporter.rb @@ -64,7 +64,7 @@ module Diaspora } xml.posts { - user.raw_visible_posts.find_all_by_author_id(user_person_id).each do |post| + user.visible_posts.find_all_by_author_id(user_person_id).each do |post| #post.comments.each do |comment| # post_doc << comment.to_xml #end diff --git a/lib/diaspora/ostatus_builder.rb b/lib/diaspora/ostatus_builder.rb index bd5b81931a0f8f4c199e8b2c4aad33721356d67b..e5fd0e855775b3c582e7b35b26e1a89f657aec34 100644 --- a/lib/diaspora/ostatus_builder.rb +++ b/lib/diaspora/ostatus_builder.rb @@ -44,8 +44,8 @@ module Diaspora <author> <activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type> <name>#{x(@user.name)}</name> - <uri>"#{AppConfig[:pod_url]}/people/#{@user.person.id}"</uri> - <link href="#{@user.public_url}" rel="alternative" type="text/html"/> + <uri>#{AppConfig[:pod_url]}people/#{@user.person.id}</uri> + <link rel="alternate" type="text/html" href="#{@user.public_url}" /> <poco:preferredUsername>#{x(@user.username)}</poco:preferredUsername> <poco:displayName>#{x(@user.person.name)}</poco:displayName> <link rel="avatar" type="image/jpeg" media:width="100" media:height="100" href="#{@user.profile.image_url}"/> diff --git a/lib/diaspora/taggable.rb b/lib/diaspora/taggable.rb index 74b4377ff33405eabaf5fee5f4e89db120c93432..2eff354428c06900bae53f82ce7323730c36e7a8 100644 --- a/lib/diaspora/taggable.rb +++ b/lib/diaspora/taggable.rb @@ -4,7 +4,7 @@ module Diaspora module Taggable - VALID_TAG_BODY = /[^_,\s#*\[\]()\:\@\/"'\.%]+/ + VALID_TAG_BODY = /[^_,\s#*\[\]()\@\/"'\.%]+\b/ def self.included(model) model.class_eval do diff --git a/lib/diaspora/user/querying.rb b/lib/diaspora/user/querying.rb index df19e394efe9d6714ad87615b5fed2d79aab8c6f..9eaa425a7b1ed878169cbb91844bb1508c0aa0cd 100644 --- a/lib/diaspora/user/querying.rb +++ b/lib/diaspora/user/querying.rb @@ -12,14 +12,16 @@ module Diaspora post ||= Post.where(:id => id, :public => true).where(opts).first end - def raw_visible_posts(opts = {}) + def visible_posts(opts = {}) opts = opts.dup opts[:type] ||= ['StatusMessage', 'Photo'] opts[:limit] ||= 15 opts[:order] ||= 'updated_at DESC' + order_field = opts[:order].split.first.to_sym opts[:hidden] ||= false order_with_table = 'posts.' + opts[:order] - opts[:offset] = opts[:page].nil? || opts[:page] == 1 ? 0 : opts[:limit] * (opts[:page] - 1) + opts[:max_time] = Time.at(opts[:max_time]) if opts[:max_time].is_a?(Integer) + opts[:max_time] ||= Time.now + 1 select_clause ='DISTINCT posts.id, posts.updated_at AS updated_at, posts.created_at AS created_at' posts_from_others = Post.joins(:contacts).where( :post_visibilities => {:hidden => opts[:hidden]}, :contacts => {:user_id => self.id}) @@ -31,8 +33,8 @@ module Diaspora posts_from_self = posts_from_self.joins(:aspect_visibilities).where(:aspect_visibilities => {:aspect_id => opts[:by_members_of]}) end - posts_from_others = posts_from_others.select(select_clause).limit(opts[:limit]).offset(opts[:offset]).order(order_with_table) - posts_from_self = posts_from_self.select(select_clause).limit(opts[:limit]).offset(opts[:offset]).order(order_with_table) + posts_from_others = posts_from_others.select(select_clause).limit(opts[:limit]).order(order_with_table).where(Post.arel_table[order_field].lt(opts[:max_time])) + posts_from_self = posts_from_self.select(select_clause).limit(opts[:limit]).order(order_with_table).where(Post.arel_table[order_field].lt(opts[:max_time])) all_posts = "(#{posts_from_others.to_sql}) UNION ALL (#{posts_from_self.to_sql}) ORDER BY #{opts[:order]} LIMIT #{opts[:limit]}" post_ids = Post.connection.execute(all_posts).map{|r| r.first} @@ -40,8 +42,8 @@ module Diaspora Post.where(:id => post_ids, :pending => false, :type => opts[:type]).select('DISTINCT posts.*').limit(opts[:limit]).order(order_with_table) end - def visible_photos - raw_visible_posts(:type => 'Photo') + def visible_photos(opts = {}) + visible_posts(opts.merge(:type => 'Photo')) end def contact_for(person) diff --git a/lib/fake.rb b/lib/fake.rb index 77050ff10d1a21573f316a6756ff1116aae28370..2a1c86d272dc20011a80f9adbeeeacb3dad73621 100644 --- a/lib/fake.rb +++ b/lib/fake.rb @@ -1,6 +1,6 @@ class PostsFake attr_reader :people_hash, :post_fakes - delegate :length, :each, :to_ary, :to => :post_fakes + delegate :length, :each, :to_ary, :last, :to => :post_fakes def initialize(posts) author_ids = [] diff --git a/lib/splunk_logging.rb b/lib/splunk_logging.rb index 39f58763f2bc6458c9f3337e3e2e173fd3bf57cd..53a79eceae140f9aecad1cd31dbd1ff35682f066 100644 --- a/lib/splunk_logging.rb +++ b/lib/splunk_logging.rb @@ -5,7 +5,9 @@ module SplunkLogging end end def add_with_splunk(arg1, log_hash = nil, arg3 = nil, &block) - add_without_splunk(arg1, format_hash(log_hash), arg3, &block) + string = format_hash(log_hash).dup + string << "pid=#{Process.pid} " + add_without_splunk(arg1, string, arg3, &block) end def format_hash(hash) if hash.respond_to?(:keys) diff --git a/public/javascripts/apiconsole.js b/public/javascripts/apiconsole.js index e9a4c7a487824f2799b3fc5a13fabaeb2b166258..1a51d56a4c64e1071a9c625ae50d5feb7addd816 100644 --- a/public/javascripts/apiconsole.js +++ b/public/javascripts/apiconsole.js @@ -3,13 +3,13 @@ var ApiConsole = { prettyPrint: function(obj, indent) { var result = ""; - if (indent == null) indent = ""; + if (indent === null) { indent = ""; } for (var property in obj) { var value = obj[property]; if (typeof value == 'string') - value = "'" + value + "'"; + { value = "'" + value + "'"; } else if (typeof value == 'object') { if (value instanceof Array) @@ -46,7 +46,7 @@ var ApiConsole = { }); }); } -} +}; $(document).ready(function(){ diff --git a/public/javascripts/aspect-edit.js b/public/javascripts/aspect-edit.js index 5edfe368eabd9e37a64b979b7de2dce0d892ccd0..3cb4d2b3aa4f982b17162ead9220fb6658ea92ef 100644 --- a/public/javascripts/aspect-edit.js +++ b/public/javascripts/aspect-edit.js @@ -46,9 +46,9 @@ var AspectEdit = { var dropzone = $(this); var person = ui.draggable; - if (person.attr('data-aspect_id') != undefined && // a request doesn't have a data-aspect_id, but an existing contact does + if (person.attr('data-aspect_id') !== undefined && // a request doesn't have a data-aspect_id, but an existing contact does dropzone.attr('data-aspect_id') != person.attr('data-aspect_id')) { - var aspect_id = person.attr('data-aspect_id') + var aspect_id = person.attr('data-aspect_id'); $.ajax({ type: "PUT", url: "/aspect_memberships/garbage", diff --git a/public/javascripts/aspect-filters.js b/public/javascripts/aspect-filters.js index fd1e62d615f91be977890905de293d19bb1eb0b8..19557ca1c2f818296457165f2256d79d924887d8 100644 --- a/public/javascripts/aspect-filters.js +++ b/public/javascripts/aspect-filters.js @@ -3,98 +3,105 @@ * the COPYRIGHT file. */ -$(document).ready(function(){ - var selectedGUIDS = [], - requests = 0; - - $("#aspect_nav li").each(function(){ - var button = $(this), - guid = button.attr('data-guid'); - - if(guid && location.href.search("a_ids..="+guid+"(&|$)") != -1){ - button.addClass('selected'); - selectedGUIDS.push(guid); +var AspectFilters = { + selectedGUIDS: [], + requests: 0, + initialize: function(){ + AspectFilters.initializeSelectedGUIDS(); + AspectFilters.interceptAspectLinks(); + AspectFilters.interceptAspectNavLinks(); + + if($("a.home_selector").parent().hasClass("selected")){ + AspectFilters.performAspectUpdate(); } - }); - - - $("a.hard_aspect_link").live("click", function(e){ + }, + initializeSelectedGUIDS: function(){ + $("#aspect_nav li").each(function(){ + var button = $(this), + guid = button.attr('data-guid'); + + if(guid && location.href.search("a_ids..="+guid+"(&|$)") != -1){ + button.addClass('selected'); + AspectFilters.selectedGUIDS.push(guid); + } + }); + }, + interceptAspectLinks: function(){ + $("a.hard_aspect_link").live("click", AspectFilters.aspectLinkClicked); + }, + aspectLinkClicked: function(e){ var link = $(this); + e.preventDefault(); if( !link.hasClass('aspect_selector') ){ - e.preventDefault(); - requests++; - - var guid = $(this).attr('data-guid'); - - // select correct aspect in filter list & deselect others - $("#aspect_nav li").each(function(){ - var $this = $(this); - if( $this.attr('data-guid') == guid){ - $this.addClass('selected'); - } else { - $this.removeClass('selected'); - } - }); - - // loading animation - $("#aspect_stream_container").fadeTo(200, 0.4); - $("#aspect_contact_pictures").fadeTo(200, 0.4); - - performAjax( $(this).attr('href')); + AspectFilters.switchToAspect(link); } + // remove focus + this.blur(); + $('html, body').animate({scrollTop:0}, 'fast'); - }); + }, + switchToAspect: function(aspectLi){ + AspectFilters.requests++; - $("#aspect_nav a.aspect_selector").click(function(e){ - e.preventDefault(); + var guid = aspectLi.attr('data-guid'); - requests++; + // select correct aspect in filter list & deselect others + $("#aspect_nav li").removeClass('selected'); + aspectLi.addClass('selected'); - // loading animation - $("#aspect_stream_container").fadeTo(100, 0.4); - $("#aspect_contact_pictures").fadeTo(100, 0.4); + AspectFilters.fadeOut(); - // filtering ////////////////////// - var $this = $(this), - listElement = $this.parent(), - guid = listElement.attr('data-guid'), - homeListElement = $("#aspect_nav a.home_selector").parent(); - - if( listElement.hasClass('selected') ){ - // remove filter - var idx = selectedGUIDS.indexOf( guid ); - if( idx != -1 ){ - selectedGUIDS.splice(idx,1); - } - listElement.removeClass('selected'); + AspectFilters.performAjax( aspectLi.attr('href')); + }, + interceptAspectNavLinks: function(){ + $("#aspect_nav a.aspect_selector").click(function(e){ + e.preventDefault(); - if(selectedGUIDS.length == 0){ - homeListElement.addClass('selected'); - } + AspectFilters.requests++; - } else { - // append filter - if(selectedGUIDS.indexOf( guid == 1)){ - selectedGUIDS.push( guid ); - } - listElement.addClass('selected'); + // loading animation + AspectFilters.fadeOut(); + + // filtering ////////////////////// + var $this = $(this), + listElement = $this.parent(), + guid = listElement.attr('data-guid'), + homeListElement = $("#aspect_nav a.home_selector").parent(); + + if( listElement.hasClass('selected') ){ + // remove filter + var idx = AspectFilters.selectedGUIDS.indexOf( guid ); + if( idx != -1 ){ + AspectFilters.selectedGUIDS.splice(idx,1); + } + listElement.removeClass('selected'); - homeListElement.removeClass('selected'); - } + if(AspectFilters.selectedGUIDS.length === 0){ + homeListElement.addClass('selected'); + } - performAjax(generateURL()); - }); + } else { + // append filter + if(AspectFilters.selectedGUIDS.indexOf( guid == 1)){ + AspectFilters.selectedGUIDS.push( guid ); + } + listElement.addClass('selected'); + homeListElement.removeClass('selected'); + } - function generateURL(){ + AspectFilters.performAjax(AspectFilters.generateURL()); + }); + }, + generateURL: function(){ var baseURL = location.href.split("?")[0]; // generate new url baseURL = baseURL.replace('#',''); baseURL += '?'; - for(i=0; i < selectedGUIDS.length; i++){ - baseURL += 'a_ids[]='+ selectedGUIDS[i] +'&'; + for(i=0; i < AspectFilters.selectedGUIDS.length; i++){ + baseURL += 'a_ids[]='+ AspectFilters.selectedGUIDS[i] +'&'; } if(!$("#publisher").hasClass("closed")) { @@ -105,46 +112,36 @@ $(document).ready(function(){ baseURL = baseURL.slice(0,baseURL.length-1); } return baseURL; - } - - function performAspectUpdate(){ - // update the open aspects in the user - updateURL = "/user"; - updateURL += '?'; - if(selectedGUIDS.length == 0){ - updateURL += 'user[a_ids][]=home'; - } else { - for(i=0; i < selectedGUIDS.length; i++){ - updateURL += 'user[a_ids][]='+ selectedGUIDS[i] +'&'; - } + }, + performAspectUpdate: function(){ + // update the open aspects in the user + updateURL = "/user"; + updateURL += '?'; + if(AspectFilters.selectedGUIDS.length === 0){ + updateURL += 'user[a_ids][]=home'; + } else { + for(i=0; i < AspectFilters.selectedGUIDS.length; i++){ + updateURL += 'user[a_ids][]='+ AspectFilters.selectedGUIDS[i] +'&'; } + } - $.ajax({ - url : updateURL, - type: "PUT", - }); - - } - - if($("a.home_selector").parent().hasClass("selected")){ - performAspectUpdate(); - } - - function performAjax(newURL) { + $.ajax({ + url : updateURL, + type: "PUT" + }); + }, + performAjax: function(newURL) { var post = $("#publisher textarea").val(), photos = {}; - //pass photos $('#photodropzone img').each(function(){ var img = $(this); - guid = img.attr('data-id'); - url = img.attr('src'); + var guid = img.attr('data-id'); + var url = img.attr('src'); photos[guid] = url; }); - - // set url // some browsers (Firefox for example) don't support pushState if (typeof(history.pushState) == 'function') { @@ -155,14 +152,14 @@ $(document).ready(function(){ url : newURL, dataType : 'script', success : function(data){ - requests--; + AspectFilters.requests--; // fill in publisher // (not cached because this element changes) var textarea = $("#publisher textarea"); - var photozone = $('#photodropzone') + var photozone = $('#photodropzone'); - if( post != "" ) { + if( post !== "" ) { textarea.val(post); textarea.focus(); } @@ -171,24 +168,29 @@ $(document).ready(function(){ for(var key in photos){ $("#publisher textarea").addClass("with_attachments"); photos_html = photos_html + "<li style='position:relative;'> " + ("<img src='" + photos[key] +"' data-id='" + key + "'>") + "</li>"; - }; + } // reinit listeners on stream photozone.html(photos_html); - Stream.initialize(); - InfiniteScroll.initialize(); - - Publisher.initialize(); + Diaspora.widgets.publish("stream/reloaded"); // fade contents back in - if(requests == 0){ - $("#aspect_stream_container").fadeTo(100, 1); - $("#aspect_contact_pictures").fadeTo(100, 1); - performAspectUpdate(); + if(AspectFilters.requests === 0){ + AspectFilters.fadeIn(); + AspectFilters.performAspectUpdate(); } } }); - + }, + fadeIn: function(){ + $("#aspect_stream_container").fadeTo(100, 1); + $("#aspect_contact_pictures").fadeTo(100, 1); + }, + fadeOut: function(){ + $("#aspect_stream_container").fadeTo(100, 0.4); + $("#aspect_contact_pictures").fadeTo(100, 0.4); } - +} +$(document).ready(function(){ + AspectFilters.initialize(); }); diff --git a/public/javascripts/contact-list.js b/public/javascripts/contact-list.js index 3120626b5208c9f1f329ea8e8b64a8825d44b36d..439f1228bdda57aa439715fc6717cec34e0d6b89 100644 --- a/public/javascripts/contact-list.js +++ b/public/javascripts/contact-list.js @@ -47,7 +47,6 @@ $(document).ready(function() { $(this).fadeTo(200,0.4); }); - $('.added').live('ajax:failure', function(data, html, xhr) { if(confirm(Diaspora.widgets.i18n.t('shared.contact_list.cannot_remove'))){ var contact_id; @@ -64,7 +63,6 @@ $(document).ready(function() { $(this).fadeTo(200,1); }); - $('.added').live('mouseover', function() { $(this).addClass("remove"); $(this).children("img").attr("src","/images/icons/monotone_close_exit_delete.png"); diff --git a/public/javascripts/diaspora.js b/public/javascripts/diaspora.js index a896631ccc7f22899b24693d0936c593e295a833..8b2e8c032929a00f0e6056ec1cca72f3519c0493 100644 --- a/public/javascripts/diaspora.js +++ b/public/javascripts/diaspora.js @@ -3,33 +3,53 @@ * the COPYRIGHT file. */ -var Diaspora = Diaspora || {}; +(function() { + if(typeof window.Diaspora !== "undefined") { + return; + } + + var Diaspora = { }; -Diaspora.widgetCollection = function() { - this.initialized = false; - this.collection = {}; -}; + Diaspora.WidgetCollection = function() { + this.initialized = false; + this.collection = { }; + this.eventsContainer = $({}); + }; -Diaspora.widgetCollection.prototype.add = function(widgetId, widget) { + Diaspora.WidgetCollection.prototype.add = function(widgetId, widget) { this[widgetId] = this.collection[widgetId] = new widget(); if(this.initialized) { this.collection[widgetId].start(); } }; -Diaspora.widgetCollection.prototype.remove = function(widgetId) { + Diaspora.WidgetCollection.prototype.remove = function(widgetId) { delete this.collection[widgetId]; -}; + }; + + Diaspora.WidgetCollection.prototype.init = function() { + this.initialized = true; + + for(var widgetId in this.collection) { + if(typeof this.collection[widgetId].start !== "undefined") { + this.collection[widgetId].start(); + } + } + }; + + Diaspora.WidgetCollection.prototype.subscribe = function(id, callback, context) { + this.eventsContainer.bind(id, $.proxy(callback, context)); + }; + + Diaspora.WidgetCollection.prototype.publish = function(id) { + this.eventsContainer.trigger(id); + }; + + Diaspora.widgets = new Diaspora.WidgetCollection(); + + window.Diaspora = Diaspora; +})(); -Diaspora.widgetCollection.prototype.init = function() { - this.initialized = true; - for(var widgetId in this.collection) { - this.collection[widgetId].start(); - } -} -Diaspora.widgets = Diaspora.widgets || new Diaspora.widgetCollection(); +$(document).ready(function() { Diaspora.widgets.init(); }); -$(document).ready(function() { - Diaspora.widgets.init(); -}); diff --git a/public/javascripts/fileuploader-custom.js b/public/javascripts/fileuploader-custom.js index 7b9b044d981bb203ab295cf2c265489c62494f30..4fc1ad643cb8960e185a21104ee786dfc6c88b6a 100644 --- a/public/javascripts/fileuploader-custom.js +++ b/public/javascripts/fileuploader-custom.js @@ -28,12 +28,12 @@ qq.extend = function(first, second){ * @param {Number} [from] The index at which to begin the search */ qq.indexOf = function(arr, elt, from){ - if (arr.indexOf) return arr.indexOf(elt, from); + if (arr.indexOf) { return arr.indexOf(elt, from); } from = from || 0; var len = arr.length; - if (from < 0) from += len; + if (from < 0) { from += len; } for (; from < len; from++){ if (from in arr && arr[from] === elt){ @@ -89,7 +89,7 @@ qq.remove = function(element){ qq.contains = function(parent, descendant){ // compareposition returns false in this case - if (parent == descendant) return true; + if (parent == descendant) { return true; } if (parent.contains){ return parent.contains(descendant); @@ -120,7 +120,7 @@ qq.toElement = (function(){ * Fixes opacity in IE6-8. */ qq.css = function(element, styles){ - if (styles.opacity != null){ + if (styles.opacity !== null){ if (typeof element.style.opacity != 'string' && typeof(element.filters) != 'undefined'){ styles.filter = 'alpha(opacity=' + Math.round(100 * styles.opacity) + ')'; } diff --git a/public/javascripts/inbox.js b/public/javascripts/inbox.js index 6320659a5119459f53ff13e8c4ca6645b7ea8eb8..637b6480d2179aac366eab4b7a8683371da87d2f 100644 --- a/public/javascripts/inbox.js +++ b/public/javascripts/inbox.js @@ -16,7 +16,7 @@ $(document).ready(function(){ if(conv.hasClass('unread') ){ conv.removeClass('unread'); } - if(cBadge.html() != null) { + if(cBadge.html() !== null) { cBadge.html().replace(/\d+/, function(num){ num = parseInt(num); cBadge.html(parseInt(num)-1); @@ -30,7 +30,7 @@ $(document).ready(function(){ }); $(window).bind("popstate", function(){ - if (location.href.match(/conversations\/\d+/) != null) { + if (location.href.match(/conversations\/\d+/) !== null) { $.getScript(location.href, function() { Diaspora.widgets.directionDetector.updateBinds(); }); @@ -72,7 +72,7 @@ $(document).ready(function(){ // remove the paginator when we're done. $(document).ajaxError(function(e,xhr,opt){ - if (xhr.status == 404) $('a.next_page').remove(); + if (xhr.status == 404) { $('a.next_page').remove(); } }); $('#reply_to_conversation').live('click', function(evt) { @@ -84,7 +84,7 @@ $(document).ready(function(){ }); var resize = function(){ - var inboxSidebar = $('#conversation_inbox'); + var inboxSidebar = $('#conversation_inbox'), inboxSidebarOffset = inboxSidebar.offset().top, windowHeight = $(window).height(); diff --git a/public/javascripts/infinite-scroll.js b/public/javascripts/infinite-scroll.js deleted file mode 100644 index 9ec191d41b7ca1ef9572f438b7ae85315b969915..0000000000000000000000000000000000000000 --- a/public/javascripts/infinite-scroll.js +++ /dev/null @@ -1,36 +0,0 @@ -var InfiniteScroll = { - options: { - navSelector : "#pagination", - // selector for the paged navigation (it will be hidden) - nextSelector : ".paginate", - // selector for the NEXT link (to page 2) - itemSelector : ".stream_element", - // selector for all items you'll retrieve - pathParse : function( pathStr, nextPage ){ - var newPath = pathStr.replace("?", "?only_posts=true&"); - return newPath.replace( "page=2", "page=" + nextPage); - }, - bufferPx: 500, - debug: false, - donetext: "no more.", - loadingText: "", - loadingImg: '/images/ajax-loader.gif' - }, - postScrollCallback: function(){ - for (var callback in InfiniteScroll.postScrollCallbacks){ - InfiniteScroll.postScrollCallbacks[callback](); - } - }, - postScrollCallbacks: [], - initialize: function(){ - $('#main_stream').infinitescroll(InfiniteScroll.options, InfiniteScroll.postScrollCallback); - }, - postScroll: function( callback ){ - InfiniteScroll.postScrollCallbacks.push(callback); - } -} - -$(document).ready(function() { - InfiniteScroll.initialize(); -}); - diff --git a/public/javascripts/keycodes.js b/public/javascripts/keycodes.js index ca275d1ce598224a8ed9b3be075ee4d7cb0c7ab0..ae6c143dbe5451d5bd32c83bcc28af9d17066b18 100644 --- a/public/javascripts/keycodes.js +++ b/public/javascripts/keycodes.js @@ -112,5 +112,5 @@ isInsertion : function(keyCode){ }else { return true; } -}, } +}; diff --git a/public/javascripts/publisher.js b/public/javascripts/publisher.js index 89e215baa46f6ffd70e66c2052dfface0c2c0847..62193520197b2f44e7280bb83e7df9b6f12f89d8 100644 --- a/public/javascripts/publisher.js +++ b/public/javascripts/publisher.js @@ -28,13 +28,6 @@ var Publisher = { } return Publisher.cachedInput; }, - cachedSubmit : false, - submit: function(){ - if(!Publisher.cachedSubmit){ - Publisher.cachedSubmit = Publisher.form().find('#status_message_submit'); - } - return Publisher.cachedSubmit; - }, cachedHiddenInput : false, hiddenInput: function(){ @@ -107,7 +100,7 @@ var Publisher = { }, generateHiddenInput : function(visibleString){ var resultString = visibleString; - for(i in this.sortedMentions()){ + for(var i in this.sortedMentions()){ var mention = this.mentions[i]; var start = resultString.slice(0, mention.visibleStart); var insertion = mention.mentionString; @@ -165,14 +158,14 @@ var Publisher = { }, updateMentionLocations : function(effectiveCursorIndex, offset){ var changedMentions = this.mentionsAfter(effectiveCursorIndex); - for(i in changedMentions){ + for(var i in changedMentions){ var mention = changedMentions[i]; mention.visibleStart += offset; mention.visibleEnd += offset; } }, mentionAt : function(visibleCursorIndex){ - for(i in this.mentions){ + for(var i in this.mentions){ var mention = this.mentions[i]; if(visibleCursorIndex > mention.visibleStart && visibleCursorIndex < mention.visibleEnd){ return i; @@ -182,14 +175,14 @@ var Publisher = { }, mentionsAfter : function(visibleCursorIndex){ var resultMentions = []; - for(i in this.mentions){ + for(var i in this.mentions){ var mention = this.mentions[i]; if(visibleCursorIndex <= mention.visibleStart){ resultMentions.push(mention); } } return resultMentions; - }, + } }, repopulateHiddenInput: function(){ var newHiddenVal = Publisher.autocompletion.mentionList.generateHiddenInput(Publisher.input().val()); @@ -207,8 +200,8 @@ var Publisher = { var input = Publisher.input(); var selectionStart = input[0].selectionStart; var selectionEnd = input[0].selectionEnd; - var isDeletion = (event.keyCode == KEYCODES.DEL && selectionStart < input.val().length) || (event.keyCode == KEYCODES.BACKSPACE && (selectionStart > 0 || selectionStart != selectionEnd)) - var isInsertion = (KEYCODES.isInsertion(event.keyCode) && event.keyCode != KEYCODES.RETURN ) + var isDeletion = (event.keyCode == KEYCODES.DEL && selectionStart < input.val().length) || (event.keyCode == KEYCODES.BACKSPACE && (selectionStart > 0 || selectionStart != selectionEnd)); + var isInsertion = (KEYCODES.isInsertion(event.keyCode) && event.keyCode != KEYCODES.RETURN ); if(isDeletion){ Publisher.autocompletion.mentionList.deletionAt(selectionStart, selectionEnd, event.keyCode); @@ -226,15 +219,15 @@ var Publisher = { var stringEnd = inputContent.slice(stringLoc[1]); input.val(stringStart + formatted + stringEnd); - var offset = formatted.length - (stringLoc[1] - stringLoc[0]) + var offset = formatted.length - (stringLoc[1] - stringLoc[0]); Publisher.autocompletion.mentionList.updateMentionLocations(stringStart.length, offset); - return [stringStart.length, stringStart.length + formatted.length] + return [stringStart.length, stringStart.length + formatted.length]; }, findStringToReplace: function(value, cursorIndex){ var atLocation = value.lastIndexOf('@', cursorIndex); if(atLocation == -1){return [0,0];} - var nextAt = cursorIndex + var nextAt = cursorIndex; if(nextAt == -1){nextAt = value.length;} return [atLocation, nextAt]; @@ -247,7 +240,7 @@ var Publisher = { if(stringLoc[0] <= 2){ stringLoc[0] = 0; }else{ - stringLoc[0] -= 2 + stringLoc[0] -= 2; } var relevantString = value.slice(stringLoc[0], stringLoc[1]).replace(/\s+$/,""); @@ -270,9 +263,9 @@ var Publisher = { } }, determineSubmitAvailability: function(){ - var onlyWhitespaces = (Publisher.input().val().trim() == ''); + var onlyWhitespaces = (Publisher.input().val().trim() === ''); var isSubmitDisabled = Publisher.submit().attr('disabled'); - var isPhotoAttached = ($("#photodropzone").children().length > 0) + var isPhotoAttached = ($("#photodropzone").children().length > 0); if ((onlyWhitespaces && !isPhotoAttached) && !isSubmitDisabled) { Publisher.submit().attr('disabled', true); } else if ((!onlyWhitespaces || isPhotoAttached) && isSubmitDisabled) { @@ -295,40 +288,40 @@ var Publisher = { $(this).toggleClass("dim"); var public_field= $("#publisher #status_message_public"); - (public_field.val() == 'false')?(public_field.val('true')):(public_field.val('false')); + (public_field.val() == 'false') ? (public_field.val('true')) : (public_field.val('false')); }); }, toggleServiceField: function(service){ Publisher.createCounter(service); var provider = service.attr('id'); - var hidden_field = $('#publisher [name="services[]"][value="'+provider+'"]') + var hidden_field = $('#publisher [name="services[]"][value="'+provider+'"]'); if(hidden_field.length > 0){ hidden_field.remove(); } else { $("#publisher .content_creation form").append( '<input id="services_" name="services[]" type="hidden" value="'+provider+'">'); - }; + } }, toggleAspectIds: function(aspectId) { - var hidden_field = $('#publisher [name="aspect_ids[]"][value="'+aspectId+'"]') + var hidden_field = $('#publisher [name="aspect_ids[]"][value="'+aspectId+'"]'); if(hidden_field.length > 0){ hidden_field.remove(); } else { $("#publisher .content_creation form").append( '<input id="aspect_ids_" name="aspect_ids[]" type="hidden" value="'+aspectId+'">'); - }; + } }, createCounter: function(service){ var counter = $("#publisher .counter"); counter.remove(); - + var min = 40000; var a = $('.service_icon:not(.dim)'); if(a.length > 0){ $.each(a, function(index, value){ var num = parseInt($(value).attr('maxchar')); - if (min > num) { min = num} + if (min > num) { min = num; } }); $('#status_message_fake_text').charCount({allowed: min, warning: min/10 }); } @@ -338,26 +331,24 @@ var Publisher = { $('#publisher .aspect_badge').bind("click", function(){ var unremovedAspects = $(this).parent().children('.aspect_badge').length - $(this).parent().children(".aspect_badge.removed").length; if(!$(this).hasClass('removed') && ( unremovedAspects == 1 )){ - alert(Diaspora.widgets.i18n.t('publisher.at_least_one_aspect')) + alert(Diaspora.widgets.i18n.t('publisher.at_least_one_aspect')); }else{ Publisher.toggleAspectIds($(this).children('a').attr('data-guid')); $(this).toggleClass("removed"); - }; + } }); }, initialize: function() { - Publisher.cachedForm = false; - Publisher.cachedInput = false; - Publisher.cachedHiddenInput = false; - Publisher.cachedSubmit = false; + Publisher.cachedForm = Publisher.cachedSubmit = + Publisher.cachedInput = Publisher.cachedHiddenInput = false; Publisher.bindServiceIcons(); Publisher.bindPublicIcon(); Publisher.bindAspectToggles(); - if ($("#status_message_fake_text").val() == "") { + if ($("#status_message_fake_text").val() === "") { Publisher.close(); - }; + } Publisher.autocompletion.initialize(); Publisher.hiddenInput().val(Publisher.input().val()); @@ -371,4 +362,5 @@ var Publisher = { $(document).ready(function() { Publisher.initialize(); + Diaspora.widgets.subscribe("stream/reloaded", Publisher.initialize); }); diff --git a/public/javascripts/stream.js b/public/javascripts/stream.js index e5f3b5e379b7aa03e4fd7d60fdd95ffb98fe0236..646365a91b6ac99e0681955969564da96da1c05d 100644 --- a/public/javascripts/stream.js +++ b/public/javascripts/stream.js @@ -5,24 +5,27 @@ var Stream = { initialize: function() { - var $stream = $(".stream"); - var $publisher = $("#publisher"); + var stream_string = '#main_stream'; + var $stream = $(stream_string); $(".status_message_delete").tipsy({trigger: 'hover', gravity: 'n'}); + Diaspora.widgets.subscribe("stream/reloaded", Stream.initialized); Diaspora.widgets.timeago.updateTimeAgo(); Diaspora.widgets.directionDetector.updateBinds(); - $stream.not(".show").delegate("a.show_post_comments", "click", Stream.toggleComments); + + + $(stream_string + " a.show_post_comments:not(.show)").live("click", Stream.toggleComments); //audio linx Stream.setUpAudioLinks(); //Stream.setUpImageLinks(); // comment link form focus - $stream.delegate(".focus_comment_textarea", "click", function(e){ + $(stream_string + " .focus_comment_textarea").live("click", function(e){ Stream.focusNewComment($(this), e); }); - $stream.delegate("textarea.comment_box", "focus", function(evt) { + $(stream_string + " textarea.comment_box").live("focus", function(evt) { var commentBox = $(this); commentBox .attr('rows',2) @@ -30,7 +33,7 @@ var Stream = { .addClass('open'); }); - $stream.delegate("textarea.comment_box", "blur", function(evt) { + $(stream_string + " textarea.comment_box").live("blur", function(evt) { var commentBox = $(this); if (!commentBox.val()) { commentBox @@ -42,18 +45,18 @@ var Stream = { }); // like/dislike - $stream.delegate("a.expand_likes", "click", function(evt) { + $(stream_string + " a.expand_likes").live("click", function(evt) { evt.preventDefault(); $(this).siblings('.likes_list').fadeToggle('fast'); }); - $stream.delegate("a.expand_dislikes", "click", function(evt) { + $(stream_string + " a.expand_dislikes").live("click", function(evt) { evt.preventDefault(); $(this).siblings('.dislikes_list').fadeToggle('fast'); }); // reshare button action - $stream.delegate(".reshare_button", "click", function(evt) { + $(stream_string + ' .reshare_button').live("click", function(evt) { evt.preventDefault(); var button = $(this); var box = button.siblings(".reshare_box"); @@ -77,24 +80,24 @@ var Stream = { Stream.setUpAudioLinks(); }); - $(".new_status_message").bind('ajax:failure', function(data, html , xhr) { - json = $.parseJSON(html.response); - if(json.errors.length != 0){ + $(".new_status_message").live('ajax:failure', function(data, html , xhr) { + json = $.parseJSON(html.responseText); + if(json.errors.length !== 0){ Diaspora.widgets.alert.alert(json.errors); }else{ Diaspora.widgets.alert.alert('Failed to post message!'); } }); - $(".new_comment").live('ajax:success', function(data, json, xhr) { + $(stream_string + " .new_comment").live('ajax:success', function(data, json, xhr) { json = $.parseJSON(json); WebSocketReceiver.processComment(json.post_id, json.comment_id, json.html, false); }); - $(".new_comment").live('ajax:failure', function(data, html, xhr) { + $(stream_string + ".new_comment").live('ajax:failure', function(data, html, xhr) { Diaspora.widgets.alert.alert('Failed to post message!'); }); - $(".stream").find(".comment_delete", ".comment").live('ajax:success', function(data, html, xhr) { + $stream.find(".comment_delete", ".comment").live('ajax:success', function(data, html, xhr) { var element = $(this), target = element.parents(".comment"), post = element.closest('.stream_element'), @@ -183,7 +186,7 @@ var Stream = { commentBlock.removeClass('hidden'); commentBlock.find('textarea').focus(); } else { - if(!(commentBlock.children().length > 1)){ + if(commentBlock.children().length <= 1){ commentBlock.addClass('hidden'); } else { commentBlock.find('textarea').focus(); diff --git a/public/javascripts/vendor/jquery.infinitescroll.min.js b/public/javascripts/vendor/jquery.infinitescroll.min.js index c092afa69b756c12ccc828d480d4b3af0798b26d..5249dec6c90fbe5ee8eac9b5cb9b212e0f021ee8 100644 --- a/public/javascripts/vendor/jquery.infinitescroll.min.js +++ b/public/javascripts/vendor/jquery.infinitescroll.min.js @@ -1,9 +1,8 @@ /*! // Infinite Scroll jQuery plugin // copyright Paul Irish, licensed GPL & MIT -// version 1.5.101207 +// version 2.0b1.110420 // home and docs: http://www.infinite-scroll.com */ -(function($){$.fn.infinitescroll=function(options,callback){function debug(){if(opts.debug){window.console&&console.log.call(console,arguments)}}function areSelectorsValid(opts){for(var key in opts){if(key.indexOf&&key.indexOf("Selector")>-1&&$(opts[key]).length===0){debug("Your "+key+" found no elements.");return false}return true}}function determinePath(path){if(path.match(/^(.*?)\b2\b(.*?$)/)){path=path.match(/^(.*?)\b2\b(.*?$)/).slice(1)}else{if(path.match(/^(.*?)2(.*?$)/)){if(path.match(/^(.*?page=)2(\/.*|$)/)){path=path.match(/^(.*?page=)2(\/.*|$)/).slice(1);return path}debug("Trying backup next selector parse technique. Treacherous waters here, matey.");path=path.match(/^(.*?)2(.*?$)/).slice(1)}else{if(path.match(/^(.*?page=)1(\/.*|$)/)){path=path.match(/^(.*?page=)1(\/.*|$)/).slice(1);return path}if($.isFunction(opts.pathParse)){return[path]}else{debug("Sorry, we couldn't parse your Next (Previous Posts) URL. Verify your the css selector points to the correct A tag. If you still get this error: yell, scream, and kindly ask for help at infinite-scroll.com.");props.isInvalidPage=true}}}return path}function filterNav(){opts.isFiltered=true;return $(window).trigger("error.infscr."+opts.infid,[302])}function isNearBottom(){var pixelsFromWindowBottomToBottom=0+$(document).height()-($(props.container).scrollTop()||$(props.container.ownerDocument.body).scrollTop())-$(window).height();debug("math:",pixelsFromWindowBottomToBottom,props.pixelsFromNavToBottom);return(pixelsFromWindowBottomToBottom-opts.bufferPx<props.pixelsFromNavToBottom)}function showDoneMsg(){props.loadingMsg.find("img").hide().parent().find("div").html(opts.donetext).animate({opacity:1},2000,function(){$(this).parent().fadeOut("normal")});opts.errorCallback()}function infscrSetup(){if(opts.isDuringAjax||opts.isInvalidPage||opts.isDone||opts.isFiltered||opts.isPaused){return}if(!isNearBottom(opts,props)){return}$(document).trigger("retrieve.infscr."+opts.infid)}function kickOffAjax(){opts.isDuringAjax=true;props.loadingMsg.appendTo(opts.loadMsgSelector).show(opts.loadingMsgRevealSpeed,function(){$(opts.navSelector).hide();opts.currPage++;debug("heading into ajax",path);box=$(opts.contentSelector).is("table")?$("<tbody/>"):$("<div/>");frag=document.createDocumentFragment();if($.isFunction(opts.pathParse)){desturl=opts.pathParse(path.join("2"),opts.currPage)}else{desturl=path.join(opts.currPage)}box.load(desturl+" "+opts.itemSelector,null,loadCallback)})}function loadCallback(){if(opts.isDone){showDoneMsg();return false}else{var children=box.children();if(children.length==0||children.hasClass("error404")){return $(window).trigger("error.infscr."+opts.infid,[404])}while(box[0].firstChild){frag.appendChild(box[0].firstChild)}$(opts.contentSelector)[0].appendChild(frag);props.loadingMsg.fadeOut("normal");if(opts.animate){var scrollTo=$(window).scrollTop()+$("#infscr-loading").height()+opts.extraScrollPx+"px";$("html,body").animate({scrollTop:scrollTo},800,function(){opts.isDuringAjax=false})}callback.call($(opts.contentSelector)[0],children.get());if(!opts.animate){opts.isDuringAjax=false}}}function initPause(pauseValue){if(pauseValue=="pause"){opts.isPaused=true}else{if(pauseValue=="resume"){opts.isPaused=false}else{opts.isPaused=!opts.isPaused}}debug("Paused: "+opts.isPaused);return false}function infscrError(xhr){if(!opts.isDone&&xhr==404){debug("Page not found. Self-destructing...");showDoneMsg();opts.isDone=true;opts.currPage=1;$(window).unbind("scroll.infscr."+opts.infid);$(document).unbind("retrieve.infscr."+opts.infid)}if(opts.isFiltered&&xhr==302){debug("Filtered. Going to next instance...");opts.isDone=true;opts.currPage=1;opts.isPaused=false;$(window).unbind("scroll.infscr."+opts.infid,infscrSetup).unbind("pause.infscr."+opts.infid).unbind("filter.infscr."+opts.infid).unbind("error.infscr."+opts.infid);$(document).unbind("retrieve.infscr."+opts.infid,kickOffAjax)}}$.browser.ie6=$.browser.msie&&$.browser.version<7;var opts=$.extend({},$.infinitescroll.defaults,options),props=$.infinitescroll,box,frag,desturl,thisPause,errorStatus;callback=callback||function(){};if(!areSelectorsValid(opts)){return false}props.container=document.documentElement;opts.contentSelector=opts.contentSelector||this;opts.loadMsgSelector=opts.loadMsgSelector||opts.contentSelector;var relurl=/(.*?\/\/).*?(\/.*)/,path=$(opts.nextSelector).attr("href");if(!path){debug("Navigation selector not found");return}path=determinePath(path);props.pixelsFromNavToBottom=$(document).height()+(props.container==document.documentElement?0:$(props.container).offset().top)-$(opts.navSelector).offset().top;props.loadingMsg=$('<div id="infscr-loading" style="text-align: center;"><img alt="Loading..." src="'+opts.loadingImg+'" /><div>'+opts.loadingText+"</div></div>");(new Image()).src=opts.loadingImg;$(window).bind("scroll.infscr."+opts.infid,infscrSetup).bind("filter.infscr."+opts.infid,filterNav).bind("error.infscr."+opts.infid,function(event,errorStatus){infscrError(errorStatus)}).bind("pause.infscr."+opts.infid,function(event,thisPause){initPause(thisPause)}).trigger("scroll.infscr."+opts.infid);$(document).bind("retrieve.infscr."+opts.infid,kickOffAjax);return this};$.infinitescroll={defaults:{debug:false,preload:false,nextSelector:"div.navigation a:first",loadingImg:"http://www.infinite-scroll.com/loading.gif",loadingText:"<em>Loading the next set of posts...</em>",donetext:"<em>Congratulations, you've reached the end of the internet.</em>",navSelector:"div.navigation",contentSelector:null,loadMsgSelector:null,loadingMsgRevealSpeed:"fast",extraScrollPx:150,itemSelector:"div.post",animate:false,pathParse:undefined,bufferPx:40,errorCallback:function(){},infid:1,currPage:1,isDuringAjax:false,isInvalidPage:false,isFiltered:false,isDone:false,isPaused:false},loadingImg:undefined,loadingMsg:undefined,container:undefined,currDOMChunk:null}})(jQuery); - +(function($){$.fn.infinitescroll=function infscr(options,callback){function areSelectorsValid(opts){var debug=$.fn.infinitescroll._debug;for(var key in opts){if(key.indexOf&&key.indexOf("Selector")>-1&&$(opts[key]).length===0){debug("Your "+key+" found no elements.");return false}return true}}function determinePath(path){if($.isFunction(opts.pathParse)){debug("pathParse");return[path]}else{if(path.match(/^(.*?)\b2\b(.*?$)/)){path=path.match(/^(.*?)\b2\b(.*?$)/).slice(1)}else{if(path.match(/^(.*?)2(.*?$)/)){if(path.match(/^(.*?page=)2(\/.*|$)/)){path=path.match(/^(.*?page=)2(\/.*|$)/).slice(1);return path}path=path.match(/^(.*?)2(.*?$)/).slice(1)}else{if(path.match(/^(.*?page=)1(\/.*|$)/)){path=path.match(/^(.*?page=)1(\/.*|$)/).slice(1);return path}else{debug("Sorry, we couldn't parse your Next (Previous Posts) URL. Verify your the css selector points to the correct A tag. If you still get this error: yell, scream, and kindly ask for help at infinite-scroll.com.");props.isInvalidPage=true}}}}debug("determinePath",path);return path}function hiddenHeight(element){var height=0;$(element).children().each(function(){height=height+$(this).outerHeight(false)});return height}function generateInstanceID(element){var number=$(element).length+$(element).html().length+$(element).attr("class").length+$(element).attr("id").length;opts.infid=number}if(typeof options=="string"){var command=options,argument=callback,validCommand=(command=="pause"||command=="destroy"||command=="retrieve"||command=="binding"),debug=$.fn.infinitescroll._debug;argument=argument||null;command=(validCommand)?$.fn.infinitescroll[command](argument):debug("Invalid command");return false}var opts=$.infinitescroll.opts=$.extend({},$.infinitescroll.defaults,options),props=$.infinitescroll,innerContainerHeight,box,frag,desturl,pause,error,errorStatus,method,result;callback=$.fn.infinitescroll._callback=callback||function(){},debug=$.fn.infinitescroll._debug,error=$.fn.infinitescroll._error,pause=$.fn.infinitescroll.pause,destroy=$.fn.infinitescroll.destroy,binding=$.fn.infinitescroll.binding;if(!areSelectorsValid(opts)){return false}opts.container=opts.container||document.documentElement;opts.contentSelector=opts.contentSelector||this;opts.infid=(opts.infid==0)?generateInstanceID(opts.contentSelector):opts.infid;opts.loadMsgSelector=opts.loadMsgSelector||opts.contentSelector;var relurl=/(.*?\/\/).*?(\/.*)/,path=$(opts.nextSelector).attr("href");if(!path){debug("Navigation selector not found");return}opts.path=determinePath(path);props.loadingMsg=$('<div id="infscr-loading" style="text-align: center;"><img alt="Loading..." src="'+opts.loadingImg+'" /><div>'+opts.loadingText+"</div></div>");(new Image()).src=opts.loadingImg;opts.binder=(opts.container.nodeName=="HTML")?$(window):$(opts.container);innerContainerHeight=(opts.container.nodeName=="HTML")?$(document).height():innerContainerHeight=hiddenHeight(opts.container);debug("Scrolling in: ",(opts.container.nodeName=="HTML")?"window":opts.container);opts.pixelsFromNavToBottom=innerContainerHeight+(opts.container==document.documentElement?0:$(opts.container).offset().top)-$(opts.navSelector).offset().top;binding("bind");opts.binder.trigger("smartscroll.infscr."+opts.infid);return this};$.infinitescroll={defaults:{debug:false,binder:$(window),preload:false,nextSelector:"div.navigation a:first",loadingImg:"http://www.infinite-scroll.com/loading.gif",loadingText:"<em>Loading the next set of posts...</em>",donetext:"<em>Congratulations, you've reached the end of the internet.</em>",navSelector:"div.navigation",contentSelector:null,loadMsgSelector:null,loadingMsgRevealSpeed:"fast",extraScrollPx:150,itemSelector:"div.post",animate:false,pathParse:undefined,dataType:"html",appendCallback:true,bufferPx:40,orientation:"height",errorCallback:function(){},currPage:1,infid:0,isDuringAjax:false,isInvalidPage:false,isDestroyed:false,isDone:false,isPaused:false,container:undefined,pixelsFromNavToBottom:undefined,path:undefined},loadingImg:undefined,loadingMsg:undefined,currDOMChunk:null};$.fn.infinitescroll._debug=function infscr_debug(){if($.infinitescroll.opts.debug){return window.console&&console.log.call(console,arguments)}};$.fn.infinitescroll._shorthand=function infscr_shorthand(){};$.fn.infinitescroll._nearbottom=function infscr_nearbottom(){var opts=$.infinitescroll.opts,debug=$.fn.infinitescroll._debug,hiddenHeight=$.fn.infinitescroll._hiddenheight;if(opts.container.nodeName=="HTML"){var pixelsFromWindowBottomToBottom=0+$(document).height()-($(opts.container).scrollTop()||$(opts.container.ownerDocument.body).scrollTop())-$(window).height()}else{var pixelsFromWindowBottomToBottom=0+hiddenHeight(opts.container)-$(opts.container).scrollTop()-$(opts.container).height()}debug("math:",pixelsFromWindowBottomToBottom,opts.pixelsFromNavToBottom);return(pixelsFromWindowBottomToBottom-opts.bufferPx<opts.pixelsFromNavToBottom)};$.fn.infinitescroll._setup=function infscr_setup(){var props=$.infinitescroll,opts=$.infinitescroll.opts,isNearBottom=$.fn.infinitescroll._nearbottom,kickOffAjax=$.fn.infinitescroll.retrieve;if(opts.isDuringAjax||opts.isInvalidPage||opts.isDone||opts.isDestroyed||opts.isPaused){return}if(!isNearBottom(opts,props)){return}kickOffAjax()};$.fn.infinitescroll.retrieve=function infscr_retrieve(){var props=$.infinitescroll,opts=props.opts,debug=$.fn.infinitescroll._debug,loadCallback=$.fn.infinitescroll._loadcallback,error=$.fn.infinitescroll._error,path=opts.path,box,frag,desturl,method,condition;opts.isDuringAjax=true;props.loadingMsg.appendTo(opts.loadMsgSelector).show(opts.loadingMsgRevealSpeed,function(){$(opts.navSelector).hide();opts.currPage++;debug("heading into ajax",path);box=$(opts.contentSelector).is("table")?$("<tbody/>"):$("<div/>");desturl=($.isFunction(opts.pathParse))?opts.pathParse(path.join("2"),opts.currPage):desturl=path.join(opts.currPage);method=(opts.dataType=="html"||opts.dataType=="json")?opts.dataType:"html+callback";if(opts.appendCallback&&opts.dataType=="html"){method+="+callback"}switch(method){case"html+callback":debug("Using HTML via .load() method");box.load(desturl+" "+opts.itemSelector,null,function(jqXHR,textStatus){loadCallback(box,jqXHR.responseText)});break;case"html":case"json":debug("Using "+(method.toUpperCase())+" via $.ajax() method");$.ajax({url:desturl,dataType:opts.dataType,complete:function _infscrAjax(jqXHR,textStatus){condition=(typeof(jqXHR.isResolved)!=="undefined")?(jqXHR.isResolved()):(textStatus==="success"||textStatus==="notmodified");(condition)?loadCallback(box,jqXHR.responseText):error([404])}});break}})};$.fn.infinitescroll._loadcallback=function infscr_loadcallback(box,data){var props=$.infinitescroll,opts=$.infinitescroll.opts,error=$.fn.infinitescroll._error,showDoneMsg=$.fn.infinitescroll._donemsg,callback=$.fn.infinitescroll._callback,result,frag;result=(opts.isDone)?"done":(!opts.appendCallback)?"no-append":"append";switch(result){case"done":showDoneMsg();return false;break;case"no-append":if(opts.dataType=="html"){data="<div>"+data+"</div>";data=$(data).find(opts.itemSelector)}break;case"append":var children=box.children();if(children.length==0||children.hasClass("error404")){return error([404])}frag=document.createDocumentFragment();while(box[0].firstChild){frag.appendChild(box[0].firstChild)}$(opts.contentSelector)[0].appendChild(frag);data=children.get();break}props.loadingMsg.fadeOut("normal");if(opts.animate){var scrollTo=$(window).scrollTop()+$("#infscr-loading").height()+opts.extraScrollPx+"px";$("html,body").animate({scrollTop:scrollTo},800,function(){opts.isDuringAjax=false})}if(!opts.animate){opts.isDuringAjax=false}callback.call($(opts.contentSelector)[0],data)};$.fn.infinitescroll._donemsg=function infscr_donemsg(){var props=$.infinitescroll,opts=$.infinitescroll.opts;props.loadingMsg.find("img").hide().parent().find("div").html(opts.donetext).animate({opacity:1},2000,function(){$(this).parent().fadeOut("normal")});opts.errorCallback()};$.fn.infinitescroll.pause=function infscr_pause(pause){var debug=$.fn.infinitescroll._debug,opts=$.infinitescroll.opts;if(pause!=="pause"&&pause!=="resume"&&pause!=="toggle"&&pause!==null){debug("Invalid argument. Toggling pause value instead")}pause=(pause&&(pause=="pause"||pause=="resume"))?pause:"toggle";switch(pause){case"pause":opts.isPaused=true;break;case"resume":opts.isPaused=false;break;case"toggle":opts.isPaused=!opts.isPaused;break}debug("Paused",opts.isPaused);return false};$.fn.infinitescroll._error=function infscr_error(xhr){var opts=$.infinitescroll.opts,binder=(opts.container.nodeName=="HTML")?$(window):$(opts.container),debug=$.fn.infinitescroll._debug,showDoneMsg=$.fn.infinitescroll._donemsg,error=(!opts.isDone&&xhr==404)?"end":(opts.isDestroyed&&xhr==302)?"destroy":"unknown";switch(error){case"end":debug("Page not found. Self-destructing...");showDoneMsg();opts.isDone=true;opts.currPage=1;opts.isPaused=false;binder.unbind("smartscroll.infscr."+opts.infid);break;case"destroy":debug("Destroyed. Going to next instance...");opts.isDone=true;opts.currPage=1;opts.isPaused=false;binder.unbind("smartscroll.infscr."+opts.infid);break;case"unknown":debug("Unknown Error. WHAT DID YOU DO?!...");showDoneMsg();opts.isDone=true;opts.currPage=1;binder.unbind("smartscroll.infscr."+opts.infid);break}};$.fn.infinitescroll.destroy=function infscr_destroy(){var opts=$.infinitescroll.opts,error=$.fn.infinitescroll._error;opts.isDestroyed=true;return error([302])};$.fn.infinitescroll.binding=function infscr_binding(binding){var opts=$.infinitescroll.opts,setup=$.fn.infinitescroll._setup,error=$.fn.infinitescroll._error,debug=$.fn.infinitescroll._debug;switch(binding){case"bind":opts.binder.bind("smartscroll.infscr."+opts.infid,setup);break;case"unbind":opts.binder.unbind("smartscroll.infscr."+opts.infid);break}debug("Binding",binding);return false};var event=$.event,scrollTimeout;event.special.smartscroll={setup:function(){$(this).bind("scroll",event.special.smartscroll.handler)},teardown:function(){$(this).unbind("scroll",event.special.smartscroll.handler)},handler:function(event,execAsap){var context=this,args=arguments;event.type="smartscroll";if(scrollTimeout){clearTimeout(scrollTimeout)}scrollTimeout=setTimeout(function(){jQuery.event.handle.apply(context,args)},execAsap==="execAsap"?0:100)}};$.fn.smartscroll=function(fn){return fn?this.bind("smartscroll",fn):this.trigger("smartscroll",["execAsap"])}})(jQuery); \ No newline at end of file diff --git a/public/javascripts/view.js b/public/javascripts/view.js index 47cc08724e505ef60e84656bbf6f1d8103196b99..dfbfcf6a4bd23d81686372193cbd496d74c0c8da 100644 --- a/public/javascripts/view.js +++ b/public/javascripts/view.js @@ -18,7 +18,8 @@ var View = { $(document).bind('afterReveal.facebox', function() { jQuery("#facebox label").inFieldLabels(); }); - InfiniteScroll.postScroll(function(){ + + Diaspora.widgets.subscribe("stream/scrolled", function() { $('#main_stream .comments label').inFieldLabels(); }); diff --git a/public/javascripts/web-socket-receiver.js b/public/javascripts/web-socket-receiver.js index 5b39cc4151647fa97360954dee73ee9fc48245ad..c0bfdc578474728ba73c4489b02344697ee18170 100644 --- a/public/javascripts/web-socket-receiver.js +++ b/public/javascripts/web-socket-receiver.js @@ -6,6 +6,12 @@ var WebSocketReceiver = { //Attach onmessage to websocket ws.onmessage = WSR.onMessage; ws.onclose = function() { + Diaspora.widgets.notifications.showNotification({ + html: '<div class="notification">' + + Diaspora.widgets.i18n.t("web_sockets.disconnected") + + '</div>' + }); + WSR.debug("socket closed"); }; ws.onopen = function() { @@ -37,7 +43,7 @@ var WebSocketReceiver = { }); } else if (obj['class']=="likes") { - WebSocketReceiver.processLike(obj.post_id, obj.html) + WebSocketReceiver.processLike(obj.post_id, obj.html); } else { WebSocketReceiver.processPost(obj['class'], obj.post_id, obj.html, obj.aspect_ids); @@ -55,7 +61,7 @@ var WebSocketReceiver = { } else { $('#people_stream').prepend(response.html).slideDown('slow', function(){}); var first_li = result_ul.find('li:first'); - first_li.hide() + first_li.hide(); first_li.after(response.html); result_ul.find("[name='request[into]']").val(result_ul.attr('aspect_id')); result_ul.children(':nth-child(2)').slideDown('fast', function(){}); @@ -64,36 +70,21 @@ var WebSocketReceiver = { processNotification: function(notification){ - var nBadge = $("#notification_badge div.badge_count"); - - nBadge.html().replace(/\d+/, function(num){ - nBadge.html(parseInt(num)+1); - }); - - if(nBadge.hasClass("hidden")){ - nBadge.removeClass("hidden"); - } - - $('#notification').html(notification['html']) - .fadeIn(200) - .delay(8000) - .fadeOut(200, function(){ - $(this).html(""); - }); + Diaspora.widgets.notifications.showNotification(notification); }, processRetraction: function(post_id){ $("*[data-guid='" + post_id + "']").fadeOut(400, function() { $(this).remove(); }); - if($("#main_stream")[0].childElementCount == 0) { + if($("#main_stream")[0].childElementCount === 0) { $("#no_posts").fadeIn(200); } }, processComment: function(postId, commentId, html, opts) { - if( $(".comment[data-guid='"+commentId+"']").length == 0 ) { + if( $(".comment[data-guid='"+commentId+"']").length === 0 ) { var post = $("*[data-guid='"+postId+"']'"), prevComments = $('.comment.posted', post); @@ -141,7 +132,7 @@ var WebSocketReceiver = { }, addPostToStream: function(postId, html) { - if( $(".stream_element[data-guid='" + postId + "']").length == 0 ) { + if( $(".stream_element[data-guid='" + postId + "']").length === 0 ) { var streamElement = $(html); var showMessage = function() { @@ -174,7 +165,7 @@ var WebSocketReceiver = { if(WebSocketReceiver.onStreamForAspect(value, streamIds)) { found = true; return false; - }; + } }); return found; }, @@ -185,7 +176,7 @@ var WebSocketReceiver = { onPageOne: function() { var c = document.location.search.charAt(document.location.search.length-1); - return ((c =='') || (c== '1')); + return ((c === '') || (c === '1')); }, debug: function(str) { $("#debug").append("<p>" + str); diff --git a/public/javascripts/widgets/alert.js b/public/javascripts/widgets/alert.js index eeb359a5f4ef36aed9dac4bf36a9aac7a6834b46..9dcf8ed4cfd6eb22eae21f79ac1c306503cf8505 100644 --- a/public/javascripts/widgets/alert.js +++ b/public/javascripts/widgets/alert.js @@ -29,6 +29,6 @@ Diaspora.widgets.add("alert", function() { $.facebox({ div: "#diaspora_alert" - }); + }, 'diaspora_alert'); } -}); \ No newline at end of file +}); diff --git a/public/javascripts/widgets/directionDetector.js b/public/javascripts/widgets/directionDetector.js index e6aeafee438a969d7a9c4bc9b90de2f789e6b53b..257b5cee78ddd6bd1da9023e66c40bbc6d8ab721 100644 --- a/public/javascripts/widgets/directionDetector.js +++ b/public/javascripts/widgets/directionDetector.js @@ -8,9 +8,10 @@ Diaspora.widgets.add("directionDetector", function() { this.start = function() { Diaspora.widgets.directionDetector.updateBinds(); - InfiniteScroll.postScrollCallback = function() { + + Diaspora.widgets.subscribe("stream/scrolled", function() { Diaspora.widgets.directionDetector.updateBinds(); - } + }); }; this.isRTL = function(str) { @@ -41,7 +42,7 @@ Diaspora.widgets.add("directionDetector", function() { this.cleaner = new RegExp('@[^ ]+|^RT[: ]{1}| RT | RT: |[♺♻:]+', 'g'); this.binds = []; - + this.updateBinds = function() { $.each(Diaspora.widgets.directionDetector.binds, function(i, v) {v.unbind('keyup', Diaspora.widgets.directionDetector.updateDirection);}); Diaspora.widgets.directionDetector.binds = []; diff --git a/public/javascripts/widgets/embedder.js b/public/javascripts/widgets/embedder.js index 99d1d84736798a7e63ddc0314a827bf057da5edb..1f2e4da506a0ac6acb909437f43b8357235d834f 100644 --- a/public/javascripts/widgets/embedder.js +++ b/public/javascripts/widgets/embedder.js @@ -52,7 +52,7 @@ }; Embedder.prototype.start = function() { - $(".stream").delegate("a.video-link", "click", this.onVideoLinkClicked); + $("#main_stream a.video-link").live("click", this.onVideoLinkClicked); this.registerServices(); var $post = $("#main_stream").children(".stream_element:first"), @@ -63,10 +63,10 @@ Embedder.prototype.registerServices = function() { var watchVideoOn = Diaspora.widgets.i18n.t("videos.watch"); - + this.register("youtube.com", - '<a href="//www.youtube.com/watch?v={{video-id}}" target="_blank">' + $.mustache(watchVideoOn, { provider: "YouTube" }) + '</a><br />' + - '<iframe class="youtube-player" type="text/html" src="http://www.youtube.com/embed/{{video-id}}"></iframe>'); + '<a href="//www.youtube.com/watch?v={{video-id}}{{anchor}}" target="_blank">' + $.mustache(watchVideoOn, { provider: "YouTube" }) + '</a><br />' + + '<iframe class="youtube-player" type="text/html" src="http://www.youtube.com/embed/{{video-id}}?wmode=opaque{{anchor}}"></iframe>'); this.register("vimeo.com", '<a href="http://vimeo.com/{{video-id}}">' + $.mustache(watchVideoOn, { provider: "Vimeo" }) + '</a><br />' + diff --git a/public/javascripts/widgets/i18n.js b/public/javascripts/widgets/i18n.js index ade4fccbad6213d9226f7ab98ade0cdf0771c896..b3a259db536409b5451073e956b8589c5da3f067 100644 --- a/public/javascripts/widgets/i18n.js +++ b/public/javascripts/widgets/i18n.js @@ -1,15 +1,11 @@ -/** - * Created by . - * User: dan - * Date: Jan 25, 2011 - * Time: 5:18:32 PM - * To change this template use File | Settings | File Templates. +/* Copyright (c) 2010, Diaspora Inc. This file is + * licensed under the Affero General Public License version 3 or later. See + * the COPYRIGHT file. */ -Diaspora.widgets.add("i18n", function() { - this.start = $.noop; +Diaspora.widgets.add("i18n", function() { this.language = "en"; - this.locale = {}; + this.locale = { }; this.loadLocale = function(locale, language) { this.language = language; @@ -33,4 +29,4 @@ Diaspora.widgets.add("i18n", function() { return ret; }; -}); \ No newline at end of file +}); diff --git a/public/javascripts/widgets/infinite-scroll.js b/public/javascripts/widgets/infinite-scroll.js new file mode 100644 index 0000000000000000000000000000000000000000..40cc149a9628c237b918d855b24b600ecaec4ebf --- /dev/null +++ b/public/javascripts/widgets/infinite-scroll.js @@ -0,0 +1,49 @@ +/* Copyright (c) 2010, Diaspora Inc. This file is +* licensed under the Affero General Public License version 3 or later. See +* the COPYRIGHT file. +*/ + +(function() { + var InfiniteScroll = function() { }; + InfiniteScroll.prototype.options = + { + navSelector : "#pagination", + nextSelector : ".paginate", + itemSelector : ".stream_element", + pathParse : function( pathStr, nextPage ){ + var newPath = pathStr.replace("?", "?only_posts=true&"); + var last_time = $('#main_stream .stream_element').last().find('.time').attr('integer'); + return newPath.replace( /max_time=\d+/, 'max_time=' + last_time); + }, + bufferPx: 500, + debug: false, + donetext: Diaspora.widgets.i18n.t("infinite_scroll.no_more"), + loadingText: "", + loadingImg: '/images/ajax-loader.gif' + }; + + InfiniteScroll.prototype.reInitialize = function(){ + this.clear(); + this.initialize(); + }; + + InfiniteScroll.prototype.initialize = function(){ + if($('#main_stream').length !== 0){ + $('#main_stream').infinitescroll(this.options, function() { + Diaspora.widgets.publish("stream/scrolled"); + }); + } + }; + + InfiniteScroll.prototype.start = function() { + Diaspora.widgets.subscribe("stream/reloaded", this.reInitialize, this); + this.initialize(); + }; + + InfiniteScroll.prototype.clear = function() { + $('#main_stream').infinitescroll('destroy'); + }; + + Diaspora.widgets.add("infinitescroll", InfiniteScroll); +})(); + diff --git a/public/javascripts/widgets/notifications.js b/public/javascripts/widgets/notifications.js new file mode 100644 index 0000000000000000000000000000000000000000..0091720e363f8dab25de657d7b3807b512da8bbf --- /dev/null +++ b/public/javascripts/widgets/notifications.js @@ -0,0 +1,69 @@ +/* Copyright (c) 2010, Diaspora Inc. This file is +* licensed under the Affero General Public License version 3 or later. See +* the COPYRIGHT file. +*/ + +(function() { + var Notifications = function() { + this.start = function() { + var self = this; + this.badge = $("#notification_badge .badge_count, .notification_count"); + this.notificationArea = $("#notifications"); + this.count = parseInt(this.badge.html()) || 0; + + $(".stream_element.unread").live("mousedown", function() { + self.decrementCount(); + + var notification = $(this); + notification.removeClass("unread"); + + $.ajax({ + url: "notifications/" + notification.data("guid"), + type: "PUT" + }); + }); + + $("a.more").live("click", function(evt) { + evt.preventDefault(); + $(this).hide() + .next(".hidden") + .removeClass("hidden"); + }); + }; + }; + + Notifications.prototype.showNotification = function(notification) { $(notification.html).prependTo(this.notificationArea) + .fadeIn(200) + .delay(8000) + .fadeOut(200, function() { + $(this).detach(); + }); + + this.incrementCount(); + }; + + Notifications.prototype.changeNotificationCount = function(change) { + this.count += change; + + if(this.badge.text() !== "") { + this.badge.text(this.count); + + if(this.count === 0) { + this.badge.addClass("hidden"); + } + else if(this.count === 1) { + this.badge.removeClass("hidden"); + } + } + }; + + Notifications.prototype.decrementCount = function() { + this.changeNotificationCount(-1); + }; + + Notifications.prototype.incrementCount = function() { + this.changeNotificationCount(1); + }; + + Diaspora.widgets.add("notifications", Notifications); +})(); \ No newline at end of file diff --git a/public/javascripts/widgets/timeago.js b/public/javascripts/widgets/timeago.js index cd5ffca657243ec6a9d14eea6dc8222fb8c38981..c1647b9250a00b75130a9e798d55f77338c6de21 100644 --- a/public/javascripts/widgets/timeago.js +++ b/public/javascripts/widgets/timeago.js @@ -1,44 +1,22 @@ -/** - * Created by . - * User: dan - * Date: Jan 25, 2011 - * Time: 8:49:02 PM - * To change this template use File | Settings | File Templates. +/* Copyright (c) 2010, Diaspora Inc. This file is + * licensed under the Affero General Public License version 3 or later. See + * the COPYRIGHT file. */ + Diaspora.widgets.add("timeago", function() { this.selector = "abbr.timeago"; - this.start = function() { - InfiniteScroll.postScroll(function(){ - Diaspora.widgets.timeago.updateTimeAgo(); - }); - if(Diaspora.widgets.i18n.language === "en") { - return; - } - - jQuery.timeago.settings.strings = { - prefixAgo: Diaspora.widgets.i18n.t("timeago.prefixAgo"), - prefixFromNow: Diaspora.widgets.i18n.t("timeago.prefixFromNow"), - suffixAgo: Diaspora.widgets.i18n.t("timeago.suffixAgo"), - suffixFromNow: Diaspora.widgets.i18n.t("timeago.suffixFromNow"), - seconds: Diaspora.widgets.i18n.t("timeago.seconds"), - minute: Diaspora.widgets.i18n.t("timeago.minute"), - minutes: Diaspora.widgets.i18n.t("timeago.minutes"), - hour: Diaspora.widgets.i18n.t("timeago.hour"), - hours: Diaspora.widgets.i18n.t("timeago.hours"), - day: Diaspora.widgets.i18n.t("timeago.day"), - days: Diaspora.widgets.i18n.t("timeago.days"), - month: Diaspora.widgets.i18n.t("timeago.month"), - months: Diaspora.widgets.i18n.t("timeago.months"), - year: Diaspora.widgets.i18n.t("timeago.year"), - years: Diaspora.widgets.i18n.t("timeago.years") - }; - - Diaspora.widgets.timeago.updateTimeAgo("abbr"); + Diaspora.widgets.subscribe("stream/scrolled", this.updateTimeAgo); + Diaspora.widgets.subscribe("stream/reloaded", this.updateTimeAgo); + if(Diaspora.widgets.i18n.language !== "en") { + $.each($.timeago.settings.strings, function(index, element) { + $.timeago.settings.strings[index] = Diaspora.widgets.i18n.t("timeago." + index); + }); + } }; this.updateTimeAgo = function(selector) { - $(selector || this.selector).timeago(); + $((typeof selector === "string") ? selector : Diaspora.widgets.timeago.selector).timeago(); }; }); diff --git a/public/robots.txt b/public/robots.txt index 8e1d4206363713cb3ed7028c0b299d58147852f4..7f28f424077cccae4b41e66a7dcabfa4b6e8c9a1 100644 --- a/public/robots.txt +++ b/public/robots.txt @@ -2,4 +2,4 @@ # # To ban all spiders from the entire site uncomment the next two lines: User-Agent: * -Disallow: / +Disallow: /people/ diff --git a/public/stylesheets/sass/application.sass b/public/stylesheets/sass/application.sass index b60310af7fb9c3e59c16e2273b6334d8f3e052e6..789bb78cccdbb213817169822d88d430e2b63931 100644 --- a/public/stylesheets/sass/application.sass +++ b/public/stylesheets/sass/application.sass @@ -236,7 +236,10 @@ header :display block .unread - :background-color #eee + :font-weight bold + :color #333 !important + time + :color #333 !important .diaspora_header_logo :position relative @@ -267,8 +270,6 @@ header :font :weight normal :size smaller - :position absolute - :right 20px .from a @@ -779,7 +780,7 @@ textarea :height auto input[type='checkbox'] - :width auto + :width auto !important input[type='hidden'] :display none @@ -1606,36 +1607,39 @@ ul.aspects h3 span.current_gs_step :color #22C910 -#notification - @include border-radius(5px) - @include box-shadow(0,2px,3px,#333) - +#notifications :z-index 10 - :display none :position fixed :bottom 21px :right 12px - :background - :color rgb(30,30,30) - :color rgba(30,30,30,0.9) + .notification + @include border-radius(5px) + @include box-shadow(0,2px,3px,#333) - :min-width 200px - :padding 12px - :color #fff + :margin + :bottom 10px - :vertical - :align middle + :background + :color rgb(30,30,30) + :color rgba(30,30,30,0.9) + + :min-width 200px + :padding 12px + :color #fff - .avatar - :display inline-block - :height 20px - :width 20px - :margin - :right 5px :vertical :align middle + .avatar + :display inline-block + :height 20px + :width 20px + :margin + :right 5px + :vertical + :align middle + .bottom_notification :position fixed :bottom 0 @@ -1774,6 +1778,12 @@ ul#request_result :bottom 25px input.add :color green + .stream_element + .content + :display inline + :position relative + :bottom 2.5em + :padding 0 .contact_list, .aspect_list @@ -2252,6 +2262,14 @@ h3,h4 :padding 0.2em 0.5em :width 500px +.day_group + :min-height 100px + :margin + :bottom 10px + .stream_element + &:last-child + :border none + .stream.notifications > li:hover :background none @@ -2363,6 +2381,8 @@ div.dislikes #facebox .close :display none + .diaspora_alert~.close + :display block #aspect_edit_controls :margin @@ -2814,3 +2834,48 @@ h1.tag :width 12px :height 12px :margin-left 0.5em + +#contacts_of_contact + .section + :margin + :bottom 4px + .see_all + :text-align center + +.date + :background + :color #e6e6e6 + :border-radius 8px + :padding 5px + :color #999 + + :text-align center + .day + :font-size 50px + :font-weight 200 + :margin-bottom -15px + :margin-top -10px + + .month + :font-size 14px + +.notification_count + :background + :color #f0f0f0 + :color #999 + :font + :weight normal + + :padding 0 5px + :left 11px + :margin + :right 5px + :border + :radius 5px + + &.unread + :background + :color lighten(#A40802, 5%) + :color #eee !important + :font + :weight bold diff --git a/public/stylesheets/sass/mobile.sass b/public/stylesheets/sass/mobile.sass old mode 100644 new mode 100755 index a02ac4b4e0f256059e32f386200e3521781cd843..9676302fb85f326eb9017e86c96001f6a7fcbaf7 --- a/public/stylesheets/sass/mobile.sass +++ b/public/stylesheets/sass/mobile.sass @@ -7,8 +7,7 @@ $blue: #3F8FBA - -a:not([role='button']) +a:not([role='button']):not(.arrow) :text :decoration none :font @@ -174,6 +173,19 @@ a :background :color #000 +#photo_controls + :margin + :bottom -42px + +.arrow + :color white !important + :font + :size 26pt + :text + :shadow 0 1px 2px #333 + :decoration none + :padding 0 + ul :margin 0 :padding 0 @@ -346,4 +358,3 @@ ul :background :color #333 :color #ccc - diff --git a/public/stylesheets/sass/ui.sass b/public/stylesheets/sass/ui.sass index b80440e7d5b2edb51b5665ef256e1689df33d62a..31293f409bd81683adaa6d2546659c2dd12a4b0f 100644 --- a/public/stylesheets/sass/ui.sass +++ b/public/stylesheets/sass/ui.sass @@ -33,6 +33,8 @@ :cursor pointer + :white-space nowrap + :color #4a4a4a :text :shadow 0 1px 1px #eee diff --git a/spec/controllers/conversations_controller_spec.rb b/spec/controllers/conversations_controller_spec.rb index 31daa37dc73d21a58340dd8cf3ab65238d018e66..b4e6e0b7ca0bf4909f29e50be5e5925538859e1c 100644 --- a/spec/controllers/conversations_controller_spec.rb +++ b/spec/controllers/conversations_controller_spec.rb @@ -14,8 +14,8 @@ describe ConversationsController do it 'succeeds' do response.should be_success end - it "assigns a list of the user's contacts" do - assigns(:all_contacts_and_ids).should == alice.contacts.collect{|c| {"value" => c.id, "name" => c.person.name}} + it "assigns a json list of contacts" do + assigns(:contacts_json).should include(alice.contacts.first.person.name) end it "assigns a contact if passed a contact id" do get :new, :contact_id => alice.contacts.first.id diff --git a/spec/controllers/people_controller_spec.rb b/spec/controllers/people_controller_spec.rb index e923c8a1bfc2d33cd58e27eb834982c5d38fad36..046094236386c2b7e9d75b914cb3d23530a29743 100644 --- a/spec/controllers/people_controller_spec.rb +++ b/spec/controllers/people_controller_spec.rb @@ -154,16 +154,26 @@ describe PeopleController do response.should be_success end - it "assigns only public posts" do - public_posts = [] - public_posts << bob.post(:status_message, :text => "first public ", :to => bob.aspects[0].id, :public => true) - bob.post(:status_message, :text => "to an aspect @user is not in", :to => bob.aspects[1].id) - bob.post(:status_message, :text => "to all aspects", :to => 'all') - public_posts << bob.post(:status_message, :text => "public", :to => 'all', :public => true) + context 'with posts' do + before do + @public_posts = [] + @public_posts << bob.post(:status_message, :text => "first public ", :to => bob.aspects[0].id, :public => true) + bob.post(:status_message, :text => "to an aspect @user is not in", :to => bob.aspects[1].id) + bob.post(:status_message, :text => "to all aspects", :to => 'all') + @public_posts << bob.post(:status_message, :text => "public", :to => 'all', :public => true) + @public_posts.first.created_at -= 1000 + @public_posts.first.save + end - get :show, :id => @person.id + it "assigns only public posts" do + get :show, :id => @person.id + assigns[:posts].models.should =~ @public_posts + end - assigns[:posts].models.should =~ public_posts + it 'is sorted by created_at desc' do + get :show, :id => @person.id + assigns[:posts].models.should == @public_posts.sort_by{|p| p.created_at}.reverse + end end it 'throws 404 if the person is remote' do @@ -239,6 +249,14 @@ describe PeopleController do end end end + describe '#contacts' do + it 'assigns the contacts of a person' do + contact = alice.contact_for(bob.person) + contacts = contact.contacts + get :contacts, :person_id => bob.person.id + assigns(:contacts_of_contact).should == contacts + end + end describe '#webfinger' do it 'enqueues a webfinger job' do diff --git a/spec/helpers/application_helper_spec.rb b/spec/helpers/application_helper_spec.rb index 74f1fdc6bb6e52eed0c797f1431553a64c2a5179..e7433a9e94239e58f1e11c448a957e18869a2949 100644 --- a/spec/helpers/application_helper_spec.rb +++ b/spec/helpers/application_helper_spec.rb @@ -101,6 +101,27 @@ describe ApplicationHelper do res.should =~ /data-video-id="#{video_id}"/ end + it "keeps anchors" do + anchor = "#t=11m34" + video_id = "DHRoHuv3I8E" + url = "http://www.youtube.com/watch?v=" + video_id + anchor + res = markdownify(url) + res.should =~ /Youtube:/ + res.should =~ /data-host="youtube.com"/ + res.should =~ /data-video-id="#{video_id}"/ + res.should =~ /data-anchor="#{anchor}"/ + end + + it "has an empty data-anchor attribute if there is no anchor" do + video_id = "DHRoHuv3I8E" + url = "http://www.youtube.com/watch?v=" + video_id + res = markdownify(url) + res.should =~ /Youtube:/ + res.should =~ /data-host="youtube.com"/ + res.should =~ /data-video-id="#{video_id}"/ + res.should =~ /data-anchor=""/ + end + it "leaves the links in the href of the #a tag" do video_id = "ABYnqp-bxvg" start_url ="http://www.youtube.com/watch?v=" + video_id @@ -140,11 +161,21 @@ describe ApplicationHelper do end end - describe "hearts" do + describe "emoticons" do it "replaces <3 with ♥" do message = "i <3 you" markdownify(message).should == "i ♥ you" end + + it "replaces various things with (their) HTML entities" do + message = ":) :-) :( :-( ... -> <- (tm) (r) (c)" + markdownify(message).should == "☺ ☺ ☹ ☹ … → ← ™ ® ©" + end + + it "skips doing it if you say so" do + message = ":) :-) :( :-( ... -> <-" + markdownify(message, :emoticons => false).should == ":) :-) :( :-( ... -> <-" + end end describe "weak emphasis" do diff --git a/spec/helpers/stream_helper_spec.rb b/spec/helpers/comments_helper_spec.rb similarity index 95% rename from spec/helpers/stream_helper_spec.rb rename to spec/helpers/comments_helper_spec.rb index 1b2d96b49a46e4c6d03b89bbe60d7feec6712dab..7880ab4df8209458a6ee8949b3c58d3bf5ccd9b5 100644 --- a/spec/helpers/stream_helper_spec.rb +++ b/spec/helpers/comments_helper_spec.rb @@ -1,6 +1,6 @@ require 'spec_helper' -describe StreamHelper do +describe CommentsHelper do before do @user = alice @aspect = @user.aspects.first diff --git a/spec/integration/receiving_spec.rb b/spec/integration/receiving_spec.rb index bfc59e8235a8b5d6867d64102d153458a09373ab..2d96f12e838799d561a3a644163647b3810c19e7 100644 --- a/spec/integration/receiving_spec.rb +++ b/spec/integration/receiving_spec.rb @@ -61,7 +61,7 @@ describe 'a user receives a post' do bob.dispatch_post(sm, :to => bob.aspects.first) end - alice.raw_visible_posts.count.should == 1 + alice.visible_posts.count.should == 1 end context 'mentions' do @@ -153,14 +153,14 @@ describe 'a user receives a post' do end it "adds a received post to the the contact" do - alice.raw_visible_posts.should include(@status_message) + alice.visible_posts.should include(@status_message) @contact.posts.should include(@status_message) end it 'removes posts upon forceful removal' do alice.remove_contact(@contact, :force => true) alice.reload - alice.raw_visible_posts.should_not include @status_message + alice.visible_posts.should_not include @status_message end context 'dependant delete' do @@ -240,7 +240,7 @@ describe 'a user receives a post' do end it 'should correctly attach the user already on the pod' do - bob.reload.raw_visible_posts.size.should == 1 + bob.reload.visible_posts.size.should == 1 post_in_db = StatusMessage.find(@post.id) post_in_db.comments.should == [] receive_with_zord(bob, alice.person, @xml) @@ -267,7 +267,7 @@ describe 'a user receives a post' do end } - bob.reload.raw_visible_posts.size.should == 1 + bob.reload.visible_posts.size.should == 1 post_in_db = StatusMessage.find(@post.id) post_in_db.comments.should == [] @@ -339,7 +339,7 @@ describe 'a user receives a post' do zord = Postzord::Receiver.new(bob, :salmon_xml => salmon_xml) zord.perform - bob.raw_visible_posts.include?(post).should be_true + bob.visible_posts.include?(post).should be_true end end diff --git a/spec/javascripts/aspect-filters-spec.js b/spec/javascripts/aspect-filters-spec.js new file mode 100644 index 0000000000000000000000000000000000000000..5f955e41a616f07722b07d65b07d381d17196813 --- /dev/null +++ b/spec/javascripts/aspect-filters-spec.js @@ -0,0 +1,13 @@ +/* Copyright (c) 2010, Diaspora Inc. This file is +* licensed under the Affero General Public License version 3 or later. See +* the COPYRIGHT file. +*/ + +describe('AspectFilters', function(){ + it('initializes selectedGUIDS', function(){ + expect(AspectFilters.selectedGUIDS).toEqual([]); + }); + it('initializes requests', function(){ + expect(AspectFilters.requests).toEqual(0); + }); +}); diff --git a/spec/javascripts/diaspora-spec.js b/spec/javascripts/diaspora-spec.js index d4f4978ea118f265cf37ed9acc737e23f51d25d4..ffbf289eb59b9f3e19757dd3c8811302854c701c 100644 --- a/spec/javascripts/diaspora-spec.js +++ b/spec/javascripts/diaspora-spec.js @@ -4,49 +4,84 @@ */ describe("Diaspora", function() { - describe("widgetCollection", function() { + describe("WidgetCollection", function() { describe("prototype", function() { + var widgets; beforeEach(function() { - window.widgets = new Diaspora.widgetCollection(); + widgets = new Diaspora.WidgetCollection(); }); describe("add", function() { it("adds a widget to the collection", function() { - expect(window.widgets.collection["nameOfWidget"]).not.toBeDefined(); - window.widgets.add("nameOfWidget", function() { }); - expect(window.widgets.collection["nameOfWidget"]).toBeDefined(); + expect(widgets.collection["nameOfWidget"]).not.toBeDefined(); + widgets.add("nameOfWidget", function() { }); + expect(widgets.collection["nameOfWidget"]).toBeDefined(); }); it("sets a shortcut by referencing the object on Diaspora.widgetCollection", function() { - expect(window.widgets.sup).toBeFalsy(); - window.widgets.add("sup", function() { }); - expect(window.widgets.sup).toEqual(window.widgets.collection.sup); + expect(widgets.sup).toBeFalsy(); + widgets.add("sup", function() { }); + expect(widgets.sup).toEqual(widgets.collection.sup); }); }); describe("remove", function() { it("removes a widget from the collection", function() { - window.widgets.add("nameOfWidget", function() { }); - expect(window.widgets.collection["nameOfWidget"]).toBeDefined(); - window.widgets.remove("nameOfWidget"); - expect(window.widgets.collection["nameOfWidget"]).not.toBeDefined(); + widgets.add("nameOfWidget", function() { }); + expect(widgets.collection["nameOfWidget"]).toBeDefined(); + widgets.remove("nameOfWidget"); + expect(widgets.collection["nameOfWidget"]).not.toBeDefined(); }); }); describe("init", function() { it("calls the start method on all of the widgets present", function() { - window.widgets.add("nameOfWidget", function() { + widgets.add("nameOfWidget", function() { this.start = function() { } }); - spyOn(window.widgets.collection["nameOfWidget"], "start"); - window.widgets.init(); - expect(window.widgets.collection["nameOfWidget"].start).toHaveBeenCalled(); + spyOn(widgets.collection["nameOfWidget"], "start"); + widgets.init(); + expect(widgets.collection["nameOfWidget"].start).toHaveBeenCalled(); }); - it("changes the ready property to true", function() { - expect(window.widgets.initialized).toBeFalsy(); - window.widgets.init(); - expect(window.widgets.initialized).toBeTruthy(); + + it("changes the initialized property to true", function() { + expect(widgets.initialized).toBeFalsy(); + widgets.init(); + expect(widgets.initialized).toBeTruthy(); + }); + }); + + describe("subscribe", function() { + it("subscribes to an event specified by an id", function() { + expect(widgets.eventsContainer.data("events")).not.toBeDefined(); + widgets.subscribe("testing/event", function() { }); + expect(widgets.eventsContainer.data("events")["testing/event"]).toBeDefined(); + }); + + it("accepts a context in which the function will always be called", function() { + var foo = "bar"; + widgets.subscribe("testing/context", function() { foo = this.foo; }); + widgets.publish("testing/context"); + expect(foo).toEqual(undefined); + + widgets.subscribe("testing/context_", function() { foo = this.foo; }, { foo: "hello" }); + widgets.publish("testing/context_"); + expect(foo).toEqual("hello"); + }); + }); + + describe("publish", function() { + it("triggers events that are related to the specified id", function() { + var called = false; + + widgets.subscribe("testing/event", function() { + called = true; + }); + + widgets.publish("testing/event"); + + expect(called).toBeTruthy(); }); }); }); diff --git a/spec/javascripts/embedder-spec.js b/spec/javascripts/embedder-spec.js index c3414c063314a1c1f571e25bc0f4d0ecdcdc5de1..301b04405e9b50156c0f65709ede3ec0e2c5f4f6 100644 --- a/spec/javascripts/embedder-spec.js +++ b/spec/javascripts/embedder-spec.js @@ -2,6 +2,7 @@ * licensed under the Affero General Public License version 3 or later. See * the COPYRIGHT file. */ + describe("Diaspora", function() { describe("widgets", function() { describe("embedder", function() { @@ -18,6 +19,9 @@ describe("Diaspora", function() { }); }); describe("render", function() { + beforeEach(function(){ + Diaspora.widgets.embedder.registerServices(); + }); it("renders the specified mustache template", function() { var template = Diaspora.widgets.embedder.render("youtube.com", {"video-id": "asdf"}); expect(template.length > 0).toBeTruthy(); @@ -31,7 +35,7 @@ describe("Diaspora", function() { describe("embed", function() { beforeEach(function() { $("#jasmine_content").html( - '<div class="stream">' + + '<div class="stream" id="main_stream">' + '<a href="#video" class="video-link" data-host="youtube.com" data-video-id="asdf">' + 'spec video' + '</a>' + @@ -39,10 +43,11 @@ describe("Diaspora", function() { ); }); - it("delegates '.stream a.video-link'", function() { - spyOn($.fn, "delegate"); + it("attackes onVideoLinkClicked to a.video-link'", function() { + spyOn(Diaspora.widgets.embedder, "onVideoLinkClicked"); Diaspora.widgets.embedder.start(); - expect($.fn.delegate).toHaveBeenCalledWith("a.video-link", "click", Diaspora.widgets.embedder.onVideoLinkClicked); + $("a.video-link:first").click(); + expect(Diaspora.widgets.embedder.onVideoLinkClicked).toHaveBeenCalled(); }); }); @@ -52,7 +57,7 @@ describe("Diaspora", function() { var $post = $("#main_stream").children(".stream_element:first"), $contentParagraph = $post.children(".sm_body").children('.content').children("p"); - + expect($contentParagraph.length).toEqual(1); }); }); diff --git a/spec/javascripts/stream-spec.js b/spec/javascripts/stream-spec.js index 4d2bc64a960f7f5a3c5b676caf412fd111cc8313..19b6e71e6f992ff294e6ba5de028282d2c945783 100644 --- a/spec/javascripts/stream-spec.js +++ b/spec/javascripts/stream-spec.js @@ -4,59 +4,60 @@ */ describe("Stream", function() { + beforeEach(function() { + jasmine.Clock.useMock(); + $('#jasmine_content').html( + '<div class="stream" id="main_stream">' + + '<li class="stream_element" data-guid="4ceef7ba2367bc2e4d0001e9">' + + '<div class="content">' + + '<div class="info">' + + '<a href="#" class="show_post_comments">show comments (0)</a>' + + '</div>' + + '<ul class="comments hidden" id="4ceef7ba2367bc2e4d0001e9">' + + '<li class="comment show">' + + '<form accept-charset="UTF-8" action="/comments" class="new_comment" data-remote="true" id="new_comment_on_4ceef7ba2367bc2e4d0001e9" method="post">' + + '<div style="margin:0;padding:0;display:inline">' + + '<p>' + + '<label for="comment_text_on_4ceef7ba2367bc2e4d0001e9">Comment</label>' + + '<textarea class="comment_box" id="comment_text_on_4ceef7ba2367bc2e4d0001e9" name="text" rows="1"></textarea>' + + '</p>' + + '<input id="post_id_on_4ceef7ba2367bc2e4d0001e9" name="post_id" type="hidden" value="4ceef7ba2367bc2e4d0001e9">' + + '<input class="comment_submit button" data-disable-with="Commenting..." id="comment_submit_4ceef7ba2367bc2e4d0001e9" name="commit" type="submit" value="Comment">' + + '</div>' + + '</form>' + + '</li>' + + '</ul>' + + '</div>' + + '</li>' + + '</div>' + ); + }); describe("initialize", function() { it("attaches a click event to show_post_comments links", function() { - spyOn($.fn, "delegate"); + spyOn(Stream, "toggleComments"); Stream.initialize(); - expect($.fn.delegate).toHaveBeenCalledWith( - "a.show_post_comments", "click", Stream.toggleComments); + $('.stream a.show_post_comments').click(); + expect(Stream.toggleComments).toHaveBeenCalled(); }); }); describe("toggleComments", function() { - - beforeEach(function() { - jasmine.Clock.useMock(); - $('#jasmine_content').html( - '<div class="stream">' + - '<li class="stream_element" data-guid="4ceef7ba2367bc2e4d0001e9">' + - '<div class="content">' + - '<div class="info">' + - '<a href="#" class="show_post_comments">show comments (0)</a>' + - '</div>' + - '<ul class="comments hidden" id="4ceef7ba2367bc2e4d0001e9">' + - '<li class="comment show">' + - '<form accept-charset="UTF-8" action="/comments" class="new_comment" data-remote="true" id="new_comment_on_4ceef7ba2367bc2e4d0001e9" method="post">' + - '<div style="margin:0;padding:0;display:inline">' + - '<p>' + - '<label for="comment_text_on_4ceef7ba2367bc2e4d0001e9">Comment</label>' + - '<textarea class="comment_box" id="comment_text_on_4ceef7ba2367bc2e4d0001e9" name="text" rows="1"></textarea>' + - '</p>' + - '<input id="post_id_on_4ceef7ba2367bc2e4d0001e9" name="post_id" type="hidden" value="4ceef7ba2367bc2e4d0001e9">' + - '<input class="comment_submit button" data-disable-with="Commenting..." id="comment_submit_4ceef7ba2367bc2e4d0001e9" name="commit" type="submit" value="Comment">' + - '</div>' + - '</form>' + - '</li>' + - '</ul>' + - '</div>' + - '</li>' + - '</div>' - ); + beforeEach(function(){ + jQuery('#main_stream a.show_post_comments:not(.show)').die(); Stream.initialize(); }); - it("toggles class hidden on the comment block", function () { - expect($('ul.comments')).toHaveClass("hidden"); + expect(jQuery('ul.comments')).toHaveClass("hidden"); $("a.show_post_comments").click(); jasmine.Clock.tick(200); - expect($('ul.comments')).not.toHaveClass("hidden"); + expect(jQuery('ul.comments')).not.toHaveClass("hidden"); }); it("changes the text on the show comments link", function() { $("a.show_post_comments").click(); jasmine.Clock.tick(200); expect($("a.show_post_comments").text()).toEqual("hide comments (0)"); - }) + }); }); }); diff --git a/spec/javascripts/support/jasmine.yml b/spec/javascripts/support/jasmine.yml index 626edff19c1127f224481bd9dd5363f7757216a4..de698e936a7eb8aaee6df10fbdb261ca3eecce56 100644 --- a/spec/javascripts/support/jasmine.yml +++ b/spec/javascripts/support/jasmine.yml @@ -28,8 +28,9 @@ src_files: - public/javascripts/widgets/i18n.js - public/javascripts/widgets/timeago.js - public/javascripts/widgets/directionDetector.js + - public/javascripts/widgets/infinite-scroll.js + - public/javascripts/widgets/notifications.js - public/javascripts/mobile.js - - public/javascripts/infinite-scroll.js - public/javascripts/contact-list.js - public/javascripts/web-socket-receiver.js - public/javascripts/view.js @@ -37,6 +38,7 @@ src_files: - public/javascripts/stream.js - public/javascripts/validation.js - public/javascripts/rails.js + - public/javascripts/aspect-filters.js # stylesheets # # Return an array of stylesheet filepaths relative to src_dir to include before jasmine specs. diff --git a/spec/javascripts/validation-spec.js b/spec/javascripts/validation-spec.js index 41eed51a6104546cd16c2f782ba5b5823ec9ab15..e15db117cfabd538b2c0b9d2af1f2dd229ab1d38 100644 --- a/spec/javascripts/validation-spec.js +++ b/spec/javascripts/validation-spec.js @@ -1,4 +1,9 @@ -describe("Validation", function() { +/* Copyright (c) 2010, Diaspora Inc. This file is +* licensed under the Affero General Public License version 3 or later. See +* the COPYRIGHT file. +*/ + +describe("Validation", function() { describe("rules", function() { describe("username", function() { describe("characters", function() { diff --git a/spec/javascripts/view-spec.js b/spec/javascripts/view-spec.js index 1a8a853453efcf0be079efe2e8910d40f6edbfa7..ba3a3600fc37093429aa0bb263d2184cd79181c1 100644 --- a/spec/javascripts/view-spec.js +++ b/spec/javascripts/view-spec.js @@ -1,4 +1,9 @@ -describe("View", function() { +/* Copyright (c) 2010, Diaspora Inc. This file is +* licensed under the Affero General Public License version 3 or later. See +* the COPYRIGHT file. +*/ + +describe("View", function() { it("is the object that helps the UI", function() { expect(typeof View === "object").toBeTruthy(); }); diff --git a/spec/javascripts/widget-i18n-spec.js b/spec/javascripts/widgets/i18n-spec.js similarity index 90% rename from spec/javascripts/widget-i18n-spec.js rename to spec/javascripts/widgets/i18n-spec.js index 6bf3ea38039b7eef19cc56913954985f7154f168..aecd5378bbab370fc5da510a436124852268a5d4 100644 --- a/spec/javascripts/widget-i18n-spec.js +++ b/spec/javascripts/widgets/i18n-spec.js @@ -1,10 +1,8 @@ -/** - * Created by . - * User: dan - * Date: Jan 27, 2011 - * Time: 3:20:57 PM - * To change this template use File | Settings | File Templates. - */ +/* Copyright (c) 2010, Diaspora Inc. This file is +* licensed under the Affero General Public License version 3 or later. See +* the COPYRIGHT file. +*/ + describe("Diaspora", function() { describe("widgets", function() { describe("i18n", function() { diff --git a/spec/javascripts/widgets/notifications-spec.js b/spec/javascripts/widgets/notifications-spec.js new file mode 100644 index 0000000000000000000000000000000000000000..aeedf1d5765ed3efa23075813730fdd915fb6287 --- /dev/null +++ b/spec/javascripts/widgets/notifications-spec.js @@ -0,0 +1,56 @@ +/* Copyright (c) 2010, Diaspora Inc. This file is +* licensed under the Affero General Public License version 3 or later. See +* the COPYRIGHT file. +*/ +describe("Diaspora", function() { + describe("widgets", function() { + describe("notifications", function() { + var changeNotificationCountSpy; + + beforeEach(function() { + changeNotificationCountSpy = spyOn(Diaspora.widgets.notifications, "changeNotificationCount").andCallThrough(); + $("#jasmine_content").html("<div id='notifications'></div>"); + Diaspora.widgets.notifications.start(); + changeNotificationCountSpy.reset(); + }); + + describe("decrementCount", function() { + it("decrements Notifications.count", function() { + var originalCount = Diaspora.widgets.notifications.count; + Diaspora.widgets.notifications.decrementCount(); + expect(Diaspora.widgets.notifications.count).toBeLessThan(originalCount); + }); + + it("calls Notifications.changeNotificationCount", function() { + Diaspora.widgets.notifications.decrementCount(); + expect(Diaspora.widgets.notifications.changeNotificationCount).toHaveBeenCalled(); + }) + }); + + describe("incrementCount", function() { + it("increments Notifications.count", function() { + var originalCount = Diaspora.widgets.notifications.count; + Diaspora.widgets.notifications.incrementCount(); + expect(Diaspora.widgets.notifications.count).toBeGreaterThan(originalCount); + }); + + it("calls Notifications.changeNotificationCount", function() { + Diaspora.widgets.notifications.incrementCount(); + expect(Diaspora.widgets.notifications.changeNotificationCount).toHaveBeenCalled(); + }); + }); + + describe("showNotification", function() { + it("prepends a div to div#notifications", function() { + expect($("#notifications div").length).toEqual(0); + + Diaspora.widgets.notifications.showNotification({ + html: '<div class="notification"></div>' + }); + + expect($("#notifications div").length).toEqual(1); + }); + }); + }); + }); +}); \ No newline at end of file diff --git a/spec/lib/diaspora/exporter_spec.rb b/spec/lib/diaspora/exporter_spec.rb index 8223bf68838dd1ebb23767273f63aa9835f3de9a..e31cd27e617ef73b4577c1213008d967aa2a51b9 100644 --- a/spec/lib/diaspora/exporter_spec.rb +++ b/spec/lib/diaspora/exporter_spec.rb @@ -96,7 +96,8 @@ describe Diaspora::Exporter do it 'should include post created at time' do doc = Nokogiri::XML::parse(posts_xml) - xml_time = Time.zone.parse(doc.xpath('//posts/status_message/created_at').first.text) + target_xml = doc.xpath('//posts/status_message').detect{|status| status.to_s.include?(@status_message1.text)} + xml_time = Time.zone.parse(target_xml.xpath('//status_message').text) xml_time.to_i.should == @status_message1.created_at.to_i end end diff --git a/spec/misc_spec.rb b/spec/misc_spec.rb index b089fc6030a8674bf439a3e591ee109ec1a928fb..5c1b3365a060c113b9e9db4ab82624d548c031d3 100644 --- a/spec/misc_spec.rb +++ b/spec/misc_spec.rb @@ -46,7 +46,7 @@ describe 'making sure the spec runner works' do it 'allows posting after running' do message = @user1.post(:status_message, :text => "Connection!", :to => @aspect1.id) - @user2.reload.raw_visible_posts.should include message + @user2.reload.visible_posts.should include message end end diff --git a/spec/models/notification_spec.rb b/spec/models/notification_spec.rb index e3a6df0c0899c1bb378fc2db63eaa891867913a4..fe50ec02610a569a807c56bab4cb9e588287dcc7 100644 --- a/spec/models/notification_spec.rb +++ b/spec/models/notification_spec.rb @@ -12,11 +12,12 @@ describe Notification do @user2 = eve @aspect = @user.aspects.create(:name => "dudes") @opts = {:target_id => @sm.id, - :target_type => @sm.class.name, + :target_type => @sm.class.base_class.to_s, :type => 'Notifications::CommentOnPost', :actors => [@person], :recipient_id => @user.id} @note = Notification.new(@opts) + @note.type = 'Notifications::CommentOnPost' @note.actors =[ @person] end @@ -39,6 +40,15 @@ describe Notification do end end + describe '.concatenate_or_create' do + it 'creates a new notificiation if the notification does not exist, or if it is unread' do + @note.unread = false + @note.save + Notification.count.should == 1 + Notification.concatenate_or_create(@note.recipient, @note.target, @note.actors.first, Notifications::CommentOnPost) + Notification.count.should == 2 + end + end describe '.notify' do it 'does not call Notification.create if the object does not have a notification_type' do Notification.should_not_receive(:make_notificatin) @@ -100,15 +110,6 @@ describe Notification do Notification.where(:recipient_id => @user3.id, :target_type => @sm.class.base_class, :target_id => @sm.id).first.actors.count.should == 2 end - it 'marks the notification as unread' do - note = Notification.where(:recipient_id => @user3.id,:target_type => @sm.class.base_class, :target_id => @sm.id).first - note.unread = false - note.save - lambda { - Postzord::Receiver.new(@user3, :person => @user2.person, :object => @user2.comment("hey", :on => @sm)).receive_object - note.reload - }.should change(note, :unread).from(false).to(true) - end end end end diff --git a/spec/models/user/attack_vectors_spec.rb b/spec/models/user/attack_vectors_spec.rb index b10d7ee1b033f1537a238f2c503a77c6e825a21b..f56b274d12c77c9fdfc04a31ef48a449e483655d 100644 --- a/spec/models/user/attack_vectors_spec.rb +++ b/spec/models/user/attack_vectors_spec.rb @@ -30,7 +30,7 @@ describe "attack vectors" do zord = Postzord::Receiver.new(user, :salmon_xml => salmon_xml) zord.perform - user.raw_visible_posts.include?(post_from_non_contact).should be_false + user.visible_posts.include?(post_from_non_contact).should be_false Post.count.should == post_count end @@ -49,7 +49,7 @@ describe "attack vectors" do zord = Postzord::Receiver.new(user, :salmon_xml => salmon_xml) zord.perform - user3.reload.raw_visible_posts.should_not include(StatusMessage.find(original_message.id)) + user3.reload.visible_posts.should_not include(StatusMessage.find(original_message.id)) end context 'malicious contact attack vector' do @@ -89,10 +89,10 @@ describe "attack vectors" do zord = Postzord::Receiver.new(user, :salmon_xml => salmon_xml) zord.perform - }.should_not change{user.reload.raw_visible_posts.count} + }.should_not change{user.reload.visible_posts.count} original_message.reload.text.should == "store this!" - user.raw_visible_posts.first.text.should == "store this!" + user.visible_posts.first.text.should == "store this!" end end it 'should not overwrite another persons profile profile' do @@ -119,7 +119,7 @@ describe "attack vectors" do zord = Postzord::Receiver.new(user, :salmon_xml => salmon_xml) zord.perform - user.raw_visible_posts.count.should == 1 + user.visible_posts.count.should == 1 StatusMessage.count.should == 1 ret = Retraction.new @@ -132,7 +132,7 @@ describe "attack vectors" do zord.perform StatusMessage.count.should == 1 - user.raw_visible_posts.count.should == 1 + user.visible_posts.count.should == 1 end it "disregards retractions for non-existent posts that are from someone other than the post's author" do @@ -163,7 +163,7 @@ describe "attack vectors" do zord.perform - user.raw_visible_posts.count.should == 1 + user.visible_posts.count.should == 1 ret = Retraction.new ret.post_guid = original_message.guid @@ -177,7 +177,7 @@ describe "attack vectors" do zord.perform }.should_not change(StatusMessage, :count) - user.reload.raw_visible_posts.count.should == 1 + user.reload.visible_posts.count.should == 1 end it 'it should not allow you to send retractions for other people' do diff --git a/spec/models/user/posting_spec.rb b/spec/models/user/posting_spec.rb index 5bafbb1b0c0793be317b0d489aa66413198972ff..029f1469ab373224d31aa5e296d886c131fa0a59 100644 --- a/spec/models/user/posting_spec.rb +++ b/spec/models/user/posting_spec.rb @@ -22,8 +22,8 @@ describe User do it 'saves post into visible post ids' do lambda { alice.add_to_streams(@post, @aspects) - }.should change{alice.raw_visible_posts(:by_members_of => @aspects).length}.by(1) - alice.raw_visible_posts(:by_members_of => @aspects).should include @post + }.should change{alice.visible_posts(:by_members_of => @aspects).length}.by(1) + alice.visible_posts(:by_members_of => @aspects).should include @post end it 'saves post into each aspect in aspect_ids' do diff --git a/spec/models/user/querying_spec.rb b/spec/models/user/querying_spec.rb index d66076adcda194e71c3401d9ea227a72c008fc56..9e1a6db644d8e258e87dd4ffdd272d544bf8b892 100644 --- a/spec/models/user/querying_spec.rb +++ b/spec/models/user/querying_spec.rb @@ -11,14 +11,14 @@ describe User do @eves_aspect = eve.aspects.first end - describe "#raw_visible_posts" do + describe "#visible_posts" do it "returns all the posts the user can see" do self_post = alice.post(:status_message, :text => "hi", :to => @alices_aspect.id) visible_post = bob.post(:status_message, :text => "hello", :to => bob.aspects.first.id) dogs = bob.aspects.create(:name => "dogs") invisible_post = bob.post(:status_message, :text => "foobar", :to => dogs.id) - stream = alice.raw_visible_posts + stream = alice.visible_posts stream.should include(self_post) stream.should include(visible_post) stream.should_not include(invisible_post) @@ -30,27 +30,35 @@ describe User do (1..25).each do |n| [alice, bob, eve].each do |u| post = u.post :status_message, :text => "#{u.username} - #{n}", :to => u.aspects.first.id - post.created_at = post.created_at + time_interval - post.updated_at = post.updated_at + time_interval + post.created_at = post.created_at - time_interval + post.updated_at = post.updated_at - time_interval post.save time_interval += 1000 end end end it 'works' do #This is in one spec to save time - bob.raw_visible_posts.length.should == 15 - bob.raw_visible_posts.should == bob.raw_visible_posts(:by_members_of => bob.aspects.map{|a| a.id}) - bob.raw_visible_posts.sort_by{|p| p.updated_at}.map{|p| p.id}.should == bob.raw_visible_posts.map{|p| p.id}.reverse + bob.visible_posts.length.should == 15 #it returns 15 by default + bob.visible_posts.should == bob.visible_posts(:by_members_of => bob.aspects.map{|a| a.id}) # it is the same when joining through aspects + bob.visible_posts.sort_by{|p| p.updated_at}.map{|p| p.id}.should == bob.visible_posts.map{|p| p.id}.reverse #it is sorted updated_at desc by default opts = {:limit => 40} - bob.raw_visible_posts(opts).length.should == 40 - bob.raw_visible_posts(opts).should == bob.raw_visible_posts(opts.merge(:by_members_of => bob.aspects.map{|a| a.id})) - bob.raw_visible_posts(opts).sort_by{|p| p.updated_at}.map{|p| p.id}.should == bob.raw_visible_posts(opts).map{|p| p.id}.reverse - - opts = {:page => 2} - bob.raw_visible_posts(opts).length.should == 15 - bob.raw_visible_posts(opts).map{|p| p.id}.should == bob.raw_visible_posts(opts.merge(:by_members_of => bob.aspects.map{|a| a.id})).map{|p| p.id} - bob.raw_visible_posts(opts).sort_by{|p| p.updated_at}.map{|p| p.id}.should == bob.raw_visible_posts(opts).map{|p| p.id}.reverse + bob.visible_posts(opts).length.should == 40 #it takes a limit + bob.visible_posts(opts).should == bob.visible_posts(opts.merge(:by_members_of => bob.aspects.map{|a| a.id})) + bob.visible_posts(opts).sort_by{|p| p.updated_at}.map{|p| p.id}.should == bob.visible_posts(opts).map{|p| p.id}.reverse + + last_time_of_last_page = bob.visible_posts.last.updated_at + opts = {:max_time => last_time_of_last_page} + bob.visible_posts(opts).length.should == 15 + bob.visible_posts(opts).map{|p| p.id}.should == bob.visible_posts(opts.merge(:by_members_of => bob.aspects.map{|a| a.id})).map{|p| p.id} + bob.visible_posts(opts).sort_by{|p| p.updated_at}.map{|p| p.id}.should == bob.visible_posts(opts).map{|p| p.id}.reverse + bob.visible_posts(opts).map{|p|p.id}.should == bob.visible_posts(:limit => 40)[15...30].map{|p|p.id} #pagination should return the right posts + + opts = {:max_time => last_time_of_last_page.to_i} + bob.visible_posts(opts).length.should == 15 + bob.visible_posts(opts).map{|p| p.id}.should == bob.visible_posts(opts.merge(:by_members_of => bob.aspects.map{|a| a.id})).map{|p| p.id} + bob.visible_posts(opts).sort_by{|p| p.updated_at}.map{|p| p.id}.should == bob.visible_posts(opts).map{|p| p.id}.reverse + bob.visible_posts(opts).map{|p|p.id}.should == bob.visible_posts(:limit => 40)[15...30].map{|p|p.id} #pagination should return the right posts end end end @@ -70,7 +78,7 @@ describe User do describe "#visible_posts" do it "queries by person id" do - query = eve.raw_visible_posts.where(:author_id => eve.person.id) + query = eve.visible_posts.where(:author_id => eve.person.id) query.include?(@status_message1).should == true query.include?(@status_message2).should == true query.include?(@status_message3).should == false @@ -79,7 +87,7 @@ describe User do end it "selects public posts" do - query = eve.raw_visible_posts.where(:public => true) + query = eve.visible_posts.where(:public => true) query.include?(@status_message1).should == false query.include?(@status_message2).should == true query.include?(@status_message3).should == true @@ -88,7 +96,7 @@ describe User do end it "selects non public posts" do - query = eve.raw_visible_posts.where(:public => false) + query = eve.visible_posts.where(:public => false) query.include?(@status_message1).should == true query.include?(@status_message2).should == false query.include?(@status_message3).should == false @@ -97,13 +105,13 @@ describe User do end it "selects by message contents" do - query = eve.raw_visible_posts.where(:text=> "hi") + query = eve.visible_posts.where(:text=> "hi") query.should == [@status_message1] end it "does not return pending posts" do @pending_status_message.pending.should be_true - eve.raw_visible_posts.should_not include @pending_status_message + eve.visible_posts.should_not include @pending_status_message end it '#find_visible_post_by_id' do diff --git a/spec/shared_behaviors/taggable.rb b/spec/shared_behaviors/taggable.rb index 4a783860189493df87f1b30d3b2df00d81fa9cd7..0b1bd95f0e76293c1f66783e6f9c19d8924302a7 100644 --- a/spec/shared_behaviors/taggable.rb +++ b/spec/shared_behaviors/taggable.rb @@ -39,8 +39,8 @@ describe Diaspora::Taggable do end describe '#tag_strings' do it 'returns a string for every #thing' do - str = '#what #hey #that"smybike. #@hey ##boo # #THATWASMYBIKE #vöglein #hey#there #135440we #abc/23 ###' - arr = ['what', 'hey', 'that', 'THATWASMYBIKE', 'vöglein', '135440we', 'abc'] + str = '#what #hey #that"smybike. #@hey ##boo # #THATWASMYBIKE #vöglein #hey#there #135440we #abc/23 ### #h!gh #ok? #see: #re:publica' + arr = ['what', 'hey', 'that', 'THATWASMYBIKE', 'vöglein', '135440we', 'abc', 'h!gh', 'ok', 'see', 're:publica'] @object.send(@object.class.field_with_tags_setter, str) @object.tag_strings.should =~ arr diff --git a/spec/support/user_methods.rb b/spec/support/user_methods.rb index 5ac07ec16572cebb6392bbc4bdd31a660bbb0706..6e43704b3b0ae64676fe8d20d1f50431aab5096a 100644 --- a/spec/support/user_methods.rb +++ b/spec/support/user_methods.rb @@ -17,6 +17,10 @@ class User add_to_streams(p, aspects) dispatch_post(p, :to => opts[:to]) end + unless opts[:created_at] + p.created_at = Time.now - 1 + p.save + end p end end diff --git a/vendor/gems/jasmine/jasmine.gemspec b/vendor/gems/jasmine/jasmine.gemspec index 5fad38a8a13811845b79ba41746de8b97903859e..1bd94cc1a66862dc20a1f37d42bc06884ea99f7e 100644 --- a/vendor/gems/jasmine/jasmine.gemspec +++ b/vendor/gems/jasmine/jasmine.gemspec @@ -10,7 +10,7 @@ Gem::Specification.new do |s| s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version= s.authors = ["Rajan Agaskar", "Christian Williams", "Davis Frank"] s.date = %q{2010-10-05} - s.default_executable = %q{jasmine} + #s.default_executable = %q{jasmine} s.description = %q{Javascript BDD test framework} s.email = %q{jasmine-js@googlegroups.com} s.executables = ["jasmine"]