Added multiple language support,removed third party requests

This commit is contained in:
nipos 2018-08-04 15:52:34 +02:00
parent c653baa2d0
commit 0c82b1e64e
26 changed files with 2676 additions and 778 deletions

View File

@ -1,9 +1,6 @@
# Halcyon for Mastodon and Pleroma
A webclient for Mastodon and Pleroma which looks like Twitter
## DO NOT USE THE CURRENT MASTER!
The current version in master has been uploaded because an contributor offered help with working towards the next version. This is no complete version. Please get the latest stable release from the releases page.
>The original author of this genius piece of software was inactive for a while and then shut down his demo instance and deleted this repository. I love Halcyon, it's the thing which makes Mastodon the best social network in the world. I took the code from the Halcyon fork of cybre.space which still works but doesn't seem to get updates, too. I uploaded it here to make the original link work again and don't link into the big nothing. I'm working on much other stuff, too, therefore I won't use my whole free time to work on Halcyon. But I try to do as much as possible here.
<img src="https://halcyon.cybre.space/login/assets/images/preview0.png">
@ -24,7 +21,11 @@ These instances are publicly accessible and usable by everyone, no matter which
You have your own Halcyon instance and want it to be listed here? Create an issue with the link and we will add it to the list.
## Translate
[Help us translating Halcyon into many languages](https://translate.zanata.org/project/view/halcyon)
## Blog
- [Release of Version 2.0.0 - The biggest changes in detail](https://nikisoft.myblog.de/nikisoft/art/11636651/Halcyon-2-0-0-The-biggest-changes-in-detail)
- Release of Version 1.2.6 - Report toots supported,disable CW and NFSW,add privacy policy and imprint,move config files,read release notes for more
- Release of Version 1.2.5 - Copy links with one click,emojicodes now always detected,streaming in hashtag search,delete event now supported
- Release of Version 1.2.4 - Updated Twemoji,custom emojis in names and bios,links to profiles in pleroma now always work,pinned posts now supported
@ -50,6 +51,7 @@ You have your own Halcyon instance and want it to be listed here? Create an issu
- Twitter like UI, familiar interface.
- Able to use on all instances.
- No tracking, No ads.
- Supports multiple languages
## Requirement
- Apache/Nginx/Caddy/lighttpd

View File

@ -1322,7 +1322,7 @@ transition: 0.13s ease-out;
.textfield {
margin: 10px;
padding-left:5px;
width: 50%;
width: 75%;
font-size: 14px;
color: #66757F;
box-sizing: border-box;
@ -2446,3 +2446,60 @@ box-shadow: inset 0 0 0 4px #ffffff;
outline: none;
border-color: #189EFC;
}
.uploadbtn:before {
position:absolute;
left:0;
right:0;
text-align:center;
font-size:12px;
font-weight:600;
content:"Select file and upload";
}
.s-hidden {
display:none;
}
.select {
cursor:pointer;
display:inline-block;
position:relative;
width:calc(75% - 2px);
}
.styledselect {
width:100%;
margin:10px;
padding:0;
height:28px;
position:relative;
text-align:center;
font-weight:bold;
}
.styledselect.active {
border-bottom-left-radius:0;
border-bottom-right-radius:0;
}
.options {
display:none;
position:absolute;
top:100%;
right:0;
left:0;
z-index:999;
margin:-10px -12px 0 10px !important;
padding:0 0;
list-style:none;
border:1px solid #189EFC;
border-top-width:0;
background-color:white;
border-bottom-left-radius:4px;
border-bottom-right-radius:4px;
}
.options li {
text-align:center;
padding:5px;
transition:0.15s ease-out;
}
.options li:hover {
border:0 solid #189EFC;
border-left-width:5px;
border-right-width:5px;
}

View File

@ -187,15 +187,15 @@ container.append(wrapper);
appender.append(container);
this.append(appender);
if(settings.twemoji){
twemoji.parse(emojiPeopleContainer[0],{base:(location.protocol==="https:"?"https:":"http:")+"//cdn.staticfile.org/twemoji/2.2.5/"});
twemoji.parse(emojiNatureContainer[0],{base:(location.protocol==="https:"?"https:":"http:")+"//cdn.staticfile.org/twemoji/2.2.5/"});
twemoji.parse(emojiFoodsContainer[0],{base:(location.protocol==="https:"?"https:":"http:")+"//cdn.staticfile.org/twemoji/2.2.5/"});
twemoji.parse(emojiActivityContainer[0],{base:(location.protocol==="https:"?"https:":"http:")+"//cdn.staticfile.org/twemoji/2.2.5/"});
twemoji.parse(emojiPlacesContainer[0],{base:(location.protocol==="https:"?"https:":"http:")+"//cdn.staticfile.org/twemoji/2.2.5/"});
twemoji.parse(emojiObjectsContainer[0],{base:(location.protocol==="https:"?"https:":"http:")+"//cdn.staticfile.org/twemoji/2.2.5/"});
twemoji.parse(emojiSymbolsContainer[0],{base:(location.protocol==="https:"?"https:":"http:")+"//cdn.staticfile.org/twemoji/2.2.5/"});
twemoji.parse(emojiFlagsContainer[0],{base:(location.protocol==="https:"?"https:":"http:")+"//cdn.staticfile.org/twemoji/2.2.5/"});
twemoji.parse(tabs[0],{base:(location.protocol==="https:"?"https:":"http:")+"//cdn.staticfile.org/twemoji/2.2.5/"});
twemoji.parse(emojiPeopleContainer[0],{base:"https://"+current_instance,ext:".svg",folder:"/emoji"});
twemoji.parse(emojiNatureContainer[0],{base:"https://"+current_instance,ext:".svg",folder:"/emoji"});
twemoji.parse(emojiFoodsContainer[0],{base:"https://"+current_instance,ext:".svg",folder:"/emoji"});
twemoji.parse(emojiActivityContainer[0],{base:"https://"+current_instance,ext:".svg",folder:"/emoji"});
twemoji.parse(emojiPlacesContainer[0],{base:"https://"+current_instance,ext:".svg",folder:"/emoji"});
twemoji.parse(emojiObjectsContainer[0],{base:"https://"+current_instance,ext:".svg",folder:"/emoji"});
twemoji.parse(emojiSymbolsContainer[0],{base:"https://"+current_instance,ext:".svg",folder:"/emoji"});
twemoji.parse(emojiFlagsContainer[0],{base:"https://"+current_instance,ext:".svg",folder:"/emoji"});
twemoji.parse(tabs[0],{base:"https://"+current_instance,ext:".svg",folder:"/emoji"});
}
this.click(function(e){
e.preventDefault();

View File

@ -1,8 +0,0 @@
The file halcyonTemplates.js had been edited by :
IP: 185.220.102.4
Time: 15.07.2018|11:54:33
This message had been generated by http://www.webftp.de
On abuse issues, please contact abuse@webftp.de

View File

@ -118,7 +118,7 @@ return value;
return new Date(value);
}
function getRelativeDatetime(current_time, posted_time) {
const calendar = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];
const calendar = [__("Jan"),__("Feb"),__("Mar"),__("Apr"),__("May"),__("Jun"),__("Jul"),__("Aug"),__("Sep"),__("Oct"),__("Nov"),__("Dec")];
var posted_time_original = posted_time,
posted_time = getConversionedDate(null, posted_time_original).getTime(),
elapsedTime = Math.ceil((current_time-posted_time)/1000);

View File

@ -11,18 +11,21 @@ if(localStorage.setting_who_to_follow == "true") {
$("#setting_who_to_follow")[0].checked = true;
}
});
$(document).on('change',".language_wrap select[name='language']", function(e) {
$.cookie("language",$(this).val(),{path:'/',expires:3650});
});
$(document).on('change',".post_privacy_wrap input[name='post_privacy']:checked", function(e) {
localStorage.setItem("setting_post_privacy", $(this).val());
putMessage("Changed setting to "+$(this).val());
putMessage(__("Changed setting to")+" "+$(this).val());
});
$("#setting_post_sensitive").change(function() {
if(this.checked) {
localStorage.setItem("setting_post_sensitive","true");
putMessage("Mark as NSFW by default enabled");
putMessage(__("Mark as NSFW by default enabled"));
}
else {
localStorage.setItem("setting_post_sensitive","false");
putMessage("Mark as NSFW by default disabled");
putMessage(__("Mark as NSFW by default disabled"));
}
});
$(document).on('change',".local_instance_wrap input[name='local_instance']", function(e) {
@ -32,22 +35,57 @@ localStorage.setItem("setting_local_instance","https://"+$(this).val());
else {
localStorage.setItem("setting_local_instance","default");
}
putMessage("Changed setting to "+$(this).val());
putMessage(__("Changed setting to")+" "+$(this).val());
});
$(document).on('change',".search_filter_wrap input[name='search_filter']:checked", function(e) {
localStorage.setItem("setting_search_filter", $(this).val());
putMessage("Changed setting to "+$(this).val());
putMessage(__("Changed setting to")+" "+$(this).val());
});
$("#setting_who_to_follow").change(function() {
if(this.checked) {
localStorage.setItem("setting_who_to_follow","true");
putMessage("Who to follow enabled");
putMessage(__("Who to follow enabled"));
}
else {
localStorage.setItem("setting_who_to_follow","false");
putMessage("Who to follow disabled");
putMessage(__("Who to follow disabled"));
}
})
});
$('.selectbox').each(function() {
var $this = $(this),
numberOfOptions = $(this).children('option').length;
$this.addClass('s-hidden');
$this.wrap('<div class="select"></div>');
$this.after('<div class="halcyon_button styledselect"></div>');
var $styledSelect = $this.next('div.styledselect');
var $selectText = $("<span>").css("margin","auto").text($this.children('option[selected]').eq(0).text()+" ⏷");
$styledSelect.append($selectText);
var $list = $('<ul/>',{'class':'options'}).insertAfter($styledSelect);
for(var i=0;i<numberOfOptions;i++) {
$('<li/>',{text:$this.children('option').eq(i).text(),rel:$this.children('option').eq(i).val()}).appendTo($list);
}
var $listItems = $list.children('li');
$styledSelect.click(function(e) {
e.stopPropagation();
if($(this).hasClass("active")) {
xthis = $(this);
$(this).next('ul.options').slideUp(function() {xthis.removeClass('active')});
}
else {
$(this).addClass('active').next('ul.options').slideDown();
}
});
$listItems.click(function(e) {
e.stopPropagation();
$selectText.text($(this).text()+" ⏷");
$this.val($(this).attr('rel'));
$this.change();
$list.slideUp(function() {$styledSelect.removeClass('active')});
});
$(document).click(function() {
$list.slideUp(function() {$styledSelect.removeClass('active')});
});
});
}
else if(window.location.pathname == "/settings/profile") {
$('#js-settings_nav_profile').toggleClass('view');
@ -71,7 +109,7 @@ $("#savestate").removeClass("fa-check").addClass("fa-spin").addClass("fa-circle-
api.patch("accounts/update_credentials","display_name="+$(this).val(),function() {
$.removeCookie("session");
$("#savestate").removeClass("fa-spin").removeClass("fa-circle-o-notch").addClass("fa-check");
putMessage("Changed setting to "+$(this).val());
putMessage(__("Changed setting to")+" "+$(this).val());
});
});
$(document).on('change',".about_me_wrap textarea[name='about_me']", function(e) {
@ -79,7 +117,7 @@ $("#savestate").removeClass("fa-check").addClass("fa-spin").addClass("fa-circle-
api.patch("accounts/update_credentials","note="+$(this).val(),function() {
$.removeCookie("session");
$("#savestate").removeClass("fa-spin").removeClass("fa-circle-o-notch").addClass("fa-check");
putMessage("Changed about me setting");
putMessage(__("Changed about me setting"));
});
});
$("#setting_avatar").change(function() {
@ -90,7 +128,7 @@ formdata.append('avatar',$('#setting_avatar').prop('files')[0]);
api.patch("accounts/update_credentials",formdata,function() {
$.removeCookie("session");
$("#savestate").removeClass("fa-spin").removeClass("fa-circle-o-notch").addClass("fa-check");
putMessage("Uploaded new avatar");
putMessage(__("Uploaded new avatar"));
})
}
});
@ -102,7 +140,7 @@ formdata.append('header',$('#setting_header').prop('files')[0]);
api.patch("accounts/update_credentials",formdata,function() {
$.removeCookie("session");
$("#savestate").removeClass("fa-spin").removeClass("fa-circle-o-notch").addClass("fa-check");
putMessage("Uploaded new header");
putMessage(__("Uploaded new header"));
})
}
});
@ -112,14 +150,14 @@ if(this.checked) {
api.patch("accounts/update_credentials","locked=1",function() {
$.removeCookie("session");
$("#savestate").removeClass("fa-spin").removeClass("fa-circle-o-notch").addClass("fa-check");
putMessage("Account locked");
putMessage(__("Account locked"));
});
}
else {
api.patch("accounts/update_credentials","locked=0",function() {
$.removeCookie("session");
$("#savestate").removeClass("fa-spin").removeClass("fa-circle-o-notch").addClass("fa-check");
putMessage("Account unlocked");
putMessage(__("Account unlocked"));
});
}
})
@ -156,16 +194,16 @@ $("#setting_show_nsfw")[0].checked = true;
});
$(document).on('change',".post_streaming_wrap input[name='post_streaming']:checked", function(e) {
localStorage.setItem("setting_post_stream", $(this).val());
putMessage("Changed setting to "+$(this).val());
putMessage(__("Changed setting to")+" "+$(this).val());
});
$("#setting_link_previews").change(function() {
if(this.checked) {
localStorage.setItem("setting_link_previews","true");
putMessage("Link previews enabled");
putMessage(__("Link previews enabled"));
}
else {
localStorage.setItem("setting_link_previews","false");
putMessage("Link previews disabled");
putMessage(__("Link previews disabled"));
}
});
$("#setting_desktop_notifications").change(function() {
@ -176,55 +214,55 @@ Notification.requestPermission(function(p) {
if (p === 'denied') {
localStorage.setItem("setting_desktop_notifications","false");
$("#setting_desktop_notifications")[0].checked = false;
putMessage("You didn't allow notifications");
putMessage(__("You didn't allow notifications"));
}
else {
putMessage("Desktop notifications enabled");
putMessage(__("Desktop notifications enabled"));
}
});
}
else if(Notification.permission == "denied") {
localStorage.setItem("setting_desktop_notifications","false");
$("#setting_desktop_notifications")[0].checked = false;
putMessage("You didn't allow notifications");
putMessage(__("You didn't allow notifications"));
}
else {
putMessage("Desktop notifications enabled");
putMessage(__("Desktop notifications enabled"));
}
}
else {
localStorage.setItem("setting_desktop_notifications","false");
putMessage("Desktop notifications disabled");
putMessage(__("Desktop notifications disabled"));
}
});
$("#setting_show_replies").change(function() {
if(this.checked) {
localStorage.setItem("setting_show_replies","true");
putMessage("Replies shown");
putMessage(__("Replies shown"));
}
else {
localStorage.setItem("setting_show_replies","false");
putMessage("Replies hidden");
putMessage(__("Replies hidden"));
}
});
$("#setting_show_content_warning").change(function() {
if(this.checked) {
localStorage.setItem("setting_show_content_warning","true");
putMessage("CW content shown");
putMessage(__("CW content shown"));
}
else {
localStorage.setItem("setting_show_content_warning","false");
putMessage("CW content hidden");
putMessage(__("CW content hidden"));
}
});
$("#setting_show_nsfw").change(function() {
if(this.checked) {
localStorage.setItem("setting_show_nsfw","true");
putMessage("NSFW content shown");
putMessage(__("NSFW content shown"));
}
else {
localStorage.setItem("setting_show_nsfw","false");
putMessage("NSFW content hidden");
putMessage(__("NSFW content hidden"));
}
});
}

View File

@ -12,8 +12,8 @@ media_views = `<div class='media_views' sid="${status.id}" media_length='${statu
else {
media_views = `<div class='media_views sensitive' media_length='${status.media_attachments.length}'>
<div class='sensitive_alart'>
<span class="text1">Sensitive content</span>
<span class="text2">Click to view</span>
<span class="text1">${__('Sensitive content')}</span>
<span class="text2">${__('Click to view')}</span>
</div>`;
}
if ( status.media_attachments[0].type === "video" | status.media_attachments[0].type === "gifv" ) {
@ -74,11 +74,11 @@ toot_reblogs_count= "",
toot_favourites_count = "",
media_views = "";
if(status.spoiler_text && localStorage.setting_show_content_warning == "false") {
alart_text = "<span>"+status.spoiler_text+"</span><button class='cw_button'>SHOW MORE</button>",
alart_text = "<span>"+status.spoiler_text+"</span><button class='cw_button'>"+__('SHOW MORE')+"</button>",
article_option = "content_warning";
}
else if(status.spoiler_text && localStorage.setting_show_content_warning == "true") {
alart_text = "<span>"+status.spoiler_text+"</span><button class='cw_button'>SHOW LESS</button>";
alart_text = "<span>"+status.spoiler_text+"</span><button class='cw_button'>"+__('SHOW LESS')+"</button>";
}
if (status.reblogs_count) {
toot_reblogs_count = status.reblogs_count;
@ -93,10 +93,10 @@ if(status.account.display_name.length == 0) {
status.account.display_name = status.account.username;
}
switch(status.visibility) {
case "public":toot_privacy_mode="Public";toot_privacy_icon="globe";break;
case "unlisted":toot_privacy_mode="Unlisted";toot_privacy_icon="unlock-alt";break;
case "private":toot_privacy_mode="Followers-only";toot_privacy_icon="lock";break;
case "direct":toot_privacy_mode="Direct";toot_privacy_icon="envelope";break;
case "public":toot_privacy_mode=__("Public");toot_privacy_icon="globe";break;
case "unlisted":toot_privacy_mode=__("Unlisted");toot_privacy_icon="unlock-alt";break;
case "private":toot_privacy_mode=__("Followers-only");toot_privacy_icon="lock";break;
case "direct":toot_privacy_mode=__("Direct");toot_privacy_icon="envelope";break;
}
if(toot_privacy_icon == "globe" || toot_privacy_icon == "unlock-alt") {
toot_footer_width = " style='width:320px'";
@ -113,18 +113,18 @@ toot_reblog_button = "";
}
var own_toot_buttons = "";
if(status.account.acct == current_acct) {
var own_toot_buttons = (`<li><a class="delete_button" tid="${status.id}">Delete Toot</a></li>`);
var own_toot_buttons = (`<li><a class="delete_button" tid="${status.id}">${__('Delete Toot')}</a></li>`);
if(status.pinned == true) {
own_toot_buttons += (`<li><a class="unpin_button" tid="${status.id}">Unpin Toot</a></li>`);
own_toot_buttons += (`<li><a class="unpin_button" tid="${status.id}">${__('Unpin Toot')}</a></li>`);
}
else {
own_toot_buttons += (`<li><a class="pin_button" tid="${status.id}">Pin Toot</a></li>`);
own_toot_buttons += (`<li><a class="pin_button" tid="${status.id}">${__('Pin Toot')}</a></li>`);
}
}
else {
var own_toot_buttons = (`<li><a class="mute_button" mid="${status.account.id}" sid="${status.id}">Mute @${status.account.username}</a></li>
<li><a class="block_button" mid="${status.account.id}" sid="${status.id}">Block @${status.account.username}</a></li>
<li><a class="report_button" mid="${status.account.id}" sid="${status.id}" display_name="${status.account.display_name}">Report this Toot</a></li>`);
var own_toot_buttons = (`<li><a class="mute_button" mid="${status.account.id}" sid="${status.id}">${__('Mute')} @${status.account.username}</a></li>
<li><a class="block_button" mid="${status.account.id}" sid="${status.id}">${__('Block')} @${status.account.username}</a></li>
<li><a class="report_button" mid="${status.account.id}" sid="${status.id}" display_name="${status.account.display_name}">${__('Report this Toot')}</a></li>`);
}
const html=(`
<li sid="${status.id}" class="toot_entry">
@ -153,11 +153,11 @@ ${status.account.display_name}
</button>
<div class="expand_menu invisible disallow_select">
<ul>
<li><a class="copylink_button" url="${status.url}">Copy link to Toot</a></li>
<li><a class="copylink_button" url="${status.url}">${__('Copy link to Toot')}</a></li>
${own_toot_buttons}
</ul>
<ul>
<li><a href="${status.url}" target="_blank">View original</a></li>
<li><a href="${status.url}" target="_blank">${__('View original')}</a></li>
</ul>
</div>
</div>
@ -215,11 +215,11 @@ toot_reblogs_count= "",
toot_favourites_count = "",
media_views = "";
if(status.reblog.spoiler_text && localStorage.setting_show_content_warning == "false") {
alart_text = "<span>"+status.reblog.spoiler_text+"</span><button class='cw_button'>SHOW MORE</button>",
alart_text = "<span>"+status.reblog.spoiler_text+"</span><button class='cw_button'>"+__('SHOW MORE')+"</button>",
article_option = "content_warning";
}
else if(status.reblog.spoiler_text && localStorage.setting_show_content_warning == "true") {
alart_text = "<span>"+status.reblog.spoiler_text+"</span><button class='cw_button'>SHOW LESS</button>";
alart_text = "<span>"+status.reblog.spoiler_text+"</span><button class='cw_button'>"+__('SHOW LESS')+"</button>";
}
if (status.reblog.reblogs_count) {
toot_reblogs_count = status.reblog.reblogs_count;
@ -237,29 +237,29 @@ if(status.reblog.account.display_name.length == 0) {
status.reblog.account.display_name = status.reblog.account.username;
}
switch(status.reblog.visibility) {
case "public":toot_privacy_mode="Public";toot_privacy_icon="globe";break;
case "unlisted":toot_privacy_mode="Unlisted";toot_privacy_icon="unlock-alt";break;
case "public":toot_privacy_mode=__("Public");toot_privacy_icon="globe";break;
case "unlisted":toot_privacy_mode=__("Unlisted");toot_privacy_icon="unlock-alt";break;
}
var own_toot_buttons = "";
if(status.reblog.account.acct == current_acct) {
var own_toot_buttons = (`<li><a class="delete_button" tid="${status.reblog.id}">Delete Toot</a></li>`);
var own_toot_buttons = (`<li><a class="delete_button" tid="${status.reblog.id}">${__('Delete Toot')}</a></li>`);
if(status.reblog.pinned == true) {
own_toot_buttons += (`<li><a class="unpin_button" tid="${status.reblog.id}">Unpin Toot</a></li>`);
own_toot_buttons += (`<li><a class="unpin_button" tid="${status.reblog.id}">${__('Unpin Toot')}</a></li>`);
}
else {
own_toot_buttons += (`<li><a class="pin_button" tid="${status.reblog.id}">Pin Toot</a></li>`);
own_toot_buttons += (`<li><a class="pin_button" tid="${status.reblog.id}">${__('Pin Toot')}</a></li>`);
}
}
else {
var own_toot_buttons = (`<li><a class="mute_button" mid="${status.reblog.account.id}" sid="${status.reblog.id}">Mute @${status.reblog.account.username}</a></li>
<li><a class="block_button" mid="${status.reblog.account.id}" sid="${status.reblog.id}">Block @${status.reblog.account.username}</a></li>
<li><a class="report_button" mid="${status.reblog.account.id}" sid="${status.reblog.id}" display_name="${status.reblog.account.display_name}">Report this Toot</a></li>`);
var own_toot_buttons = (`<li><a class="mute_button" mid="${status.reblog.account.id}" sid="${status.reblog.id}">${__('Mute')} @${status.reblog.account.username}</a></li>
<li><a class="block_button" mid="${status.reblog.account.id}" sid="${status.reblog.id}">${__('Block')} @${status.reblog.account.username}</a></li>
<li><a class="report_button" mid="${status.reblog.account.id}" sid="${status.reblog.id}" display_name="${status.reblog.account.display_name}">${__('Report this Toot')}</a></li>`);
}
const html = (`
<li sid="${status.id}" class="toot_entry">
<div class="boost_author_box">
<a href="${status_account_link}">
<span class="emoji_poss"><i class="fa fa-fw fa-retweet"></i>${status.account.display_name} Boosted</span>
<span class="emoji_poss"><i class="fa fa-fw fa-retweet"></i>${status.account.display_name} ${__('Boosted')}</span>
</a>
</div>
<div class="toot_entry_body">
@ -287,11 +287,11 @@ ${status.reblog.account.display_name}
</button>
<div class="expand_menu invisible disallow_select">
<ul>
<li><a class="copylink_button" url="${status.reblog.url}" >Copy link to Toot</a></li>
<li><a class="copylink_button" url="${status.reblog.url}" >${__('Copy link to Toot')}</a></li>
${own_toot_buttons}
</ul>
<ul>
<li><a href="${status.reblog.url}" target="_blank">View original</a></li>
<li><a href="${status.reblog.url}" target="_blank">${__('View original')}</a></li>
</ul>
</div>
</div>
@ -351,11 +351,11 @@ toot_reblogs_count= "",
toot_favourites_count = "",
media_views = "";
if(status.spoiler_text && localStorage.setting_show_content_warning == "false") {
alart_text = "<span>"+status.spoiler_text+"</span><button class='cw_button'>SHOW MORE</button>",
alart_text = "<span>"+status.spoiler_text+"</span><button class='cw_button'>"+__('SHOW MORE')+"</button>",
article_option = "content_warning";
}
else if(status.spoiler_text && localStorage.setting_show_content_warning == "true") {
alart_text = "<span>"+status.spoiler_text+"</span><button class='cw_button'>SHOW LESS</button>";
alart_text = "<span>"+status.spoiler_text+"</span><button class='cw_button'>"+__('SHOW LESS')+"</button>";
}
if (status.reblogs_count) {
toot_reblogs_count = status.reblogs_count;
@ -370,23 +370,23 @@ if(status.account.display_name.length == 0) {
status.account.display_name = status.account.username;
}
switch(status.visibility) {
case "public":toot_privacy_mode="Public";toot_privacy_icon="globe";break;
case "unlisted":toot_privacy_mode="Unlisted";toot_privacy_icon="unlock-alt";break;
case "public":toot_privacy_mode=__("Public");toot_privacy_icon="globe";break;
case "unlisted":toot_privacy_mode=__("Unlisted");toot_privacy_icon="unlock-alt";break;
}
var own_toot_buttons = "";
if(status.account.acct == current_acct) {
var own_toot_buttons = (`<li><a class="delete_button" tid="${status.id}">Delete Toot</a></li>
<li><a class="unpin_button" tid="${status.id}">Unpin Toot</a></li>`);
var own_toot_buttons = (`<li><a class="delete_button" tid="${status.id}">${__('Delete Toot')}</a></li>
<li><a class="unpin_button" tid="${status.id}">${__('Unpin Toot')}</a></li>`);
}
else {
var own_toot_buttons = (`<li><a class="mute_button" mid="${status.account.id}" sid="${status.id}">Mute @${status.account.username}</a></li>
<li><a class="block_button" mid="${status.account.id}" sid="${status.id}">Block @${status.account.username}</a></li>
<li><a class="report_button" mid="${status.account.id}" sid="${status.id}" display_name="${status.account.display_name}">Report this Toot</a></li>`);
var own_toot_buttons = (`<li><a class="mute_button" mid="${status.account.id}" sid="${status.id}">${__('Mute')} @${status.account.username}</a></li>
<li><a class="block_button" mid="${status.account.id}" sid="${status.id}">${__('Block')} @${status.account.username}</a></li>
<li><a class="report_button" mid="${status.account.id}" sid="${status.id}" display_name="${status.account.display_name}">${__('Report this Toot')}</a></li>`);
}
const html = (`
<li sid="${status.id}" class="toot_entry">
<div class="pinned_notice_box">
<i class="fa fa-fw fa-thumb-tack"></i>Pinned toot</span>
<i class="fa fa-fw fa-thumb-tack"></i>${__('Pinned Toot')}</span>
</div>
<div class="toot_entry_body">
<a href="${status_account_link}">
@ -413,11 +413,11 @@ ${status.account.display_name}
</button>
<div class="expand_menu invisible disallow_select">
<ul>
<li><a class="copylink_button" url="${status.url}" >Copy link to Toot</a></li>
<li><a class="copylink_button" url="${status.url}" >${__('Copy link to Toot')}</a></li>
${own_toot_buttons}
</ul>
<ul>
<li><a href="${status.url}" target="_blank">View original</a></li>
<li><a href="${status.url}" target="_blank">${__('View original')}</a></li>
</ul>
</div>
</div>
@ -490,7 +490,7 @@ const html = (`
</a>
<i class="fa fa-fw fa-star font-icon favourite"></i>
<a class="notice_author" href="${notice_author_link}">
<span class="emoji_poss">${NotificationObj.account.display_name}</span> favourited Your Toot
<span class="emoji_poss">${NotificationObj.account.display_name}</span> ${__('favourited Your Toot')}
</a>
</div>
<div class="notice_entry_body">
@ -534,7 +534,7 @@ html = (`
</a>
<i class="fa fa-fw fa-retweet font-icon boost"></i>
<a class="notice_author" href="${notice_author_link}">
<span class="emoji_poss" >${NotificationObj.account.display_name}</span> boosted Your Toot
<span class="emoji_poss" >${NotificationObj.account.display_name}</span> ${__('boosted Your Toot')}
</a>
</div>
<blockquote class="notice_entry_body">
@ -577,11 +577,11 @@ for(i=0;i<NotificationObj.status.account.emojis.length;i++) {
NotificationObj.status.account.display_name = NotificationObj.status.account.display_name.replace(new RegExp(":"+NotificationObj.status.account.emojis[i].shortcode+":","g"),"<img src='"+NotificationObj.status.account.emojis[i].url+"' class='emoji'>");
}
if(NotificationObj.status.spoiler_text && localStorage.setting_show_content_warning == "false") {
alart_text = "<span>"+NotificationObj.status.spoiler_text+"</span><button class='cw_button'>SHOW MORE</button>",
alart_text = "<span>"+NotificationObj.status.spoiler_text+"</span><button class='cw_button'>"+__('SHOW MORE')+"</button>",
article_option = "content_warning";
}
else if(NotificationObj.status.spoiler_text && localStorage.setting_show_content_warning == "true") {
alart_text = "<span>"+NotificationObj.status.spoiler_text+"</span><button class='cw_button'>SHOW LESS</button>";
alart_text = "<span>"+NotificationObj.status.spoiler_text+"</span><button class='cw_button'>"+__('SHOW LESS')+"</button>";
}
if (NotificationObj.status.reblogs_count) {
toot_reblogs_count = NotificationObj.status.reblogs_count;
@ -596,10 +596,10 @@ if(NotificationObj.status.account.display_name.length == 0) {
NotificationObj.status.account.display_name = NotificationObj.status.account.username;
}
switch(NotificationObj.status.visibility) {
case "public":toot_privacy_mode="Public";toot_privacy_icon="globe";break;
case "unlisted":toot_privacy_mode="Unlisted";toot_privacy_icon="unlock-alt";break;
case "private":toot_privacy_mode="Followers-only";toot_privacy_icon="lock";break;
case "direct":toot_privacy_mode="Direct";toot_privacy_icon="envelope";break;
case "public":toot_privacy_mode=__("Public");toot_privacy_icon="globe";break;
case "unlisted":toot_privacy_mode=__("Unlisted");toot_privacy_icon="unlock-alt";break;
case "private":toot_privacy_mode=__("Followers-only");toot_privacy_icon="lock";break;
case "direct":toot_privacy_mode=__("Direct");toot_privacy_icon="envelope";break;
}
if(toot_privacy_icon == "globe" || toot_privacy_icon == "unlock-alt") {
toot_footer_width = " style='width:320px'";
@ -616,18 +616,18 @@ toot_reblog_button = "";
}
var own_toot_buttons = "";
if(NotificationObj.status.account.acct == current_acct) {
var own_toot_buttons = (`<li><a class="delete_button" tid="${NotificationObj.status.id}">Delete Toot</a></li>`);
var own_toot_buttons = (`<li><a class="delete_button" tid="${NotificationObj.status.id}">${__('Delete Toot')}</a></li>`);
if(NotificationObj.status.pinned == true) {
own_toot_buttons += (`<li><a class="unpin_button" tid="${NotificationObj.status.id}">Unpin Toot</a></li>`);
own_toot_buttons += (`<li><a class="unpin_button" tid="${NotificationObj.status.id}">${__('Unpin Toot')}</a></li>`);
}
else {
own_toot_buttons += (`<li><a class="pin_button" tid="${NotificationObj.status.id}">Pin Toot</a></li>`);
own_toot_buttons += (`<li><a class="pin_button" tid="${NotificationObj.status.id}">${__('Pin Toot')}</a></li>`);
}
}
else {
var own_toot_buttons = (`<li><a class="mute_button" mid="${NotificationObj.status.account.id}" sid="${NotificationObj.status.id}">Mute @${NotificationObj.status.account.username}</a></li>
<li><a class="block_button" mid="${NotificationObj.status.account.id}" sid="${NotificationObj.status.id}">Block @${NotificationObj.status.account.username}</a></li>
<li><a class="report_button" mid="${NotificationObj.status.account.id}" sid="${NotificationObj.status.id}" display_name="${NotificationObj.account.display_name}">Report this Toot</a></li>`);
var own_toot_buttons = (`<li><a class="mute_button" mid="${NotificationObj.status.account.id}" sid="${NotificationObj.status.id}">${__('Mute')} @${NotificationObj.status.account.username}</a></li>
<li><a class="block_button" mid="${NotificationObj.status.account.id}" sid="${NotificationObj.status.id}">${__('Block')} @${NotificationObj.status.account.username}</a></li>
<li><a class="report_button" mid="${NotificationObj.status.account.id}" sid="${NotificationObj.status.id}" display_name="${NotificationObj.account.display_name}">${__('Report this Toot')}</a></li>`);
}
const html=(`
<li sid="${NotificationObj.status.id}" class="toot_entry">
@ -656,11 +656,11 @@ ${NotificationObj.status.account.display_name}
</button>
<div class="expand_menu invisible disallow_select">
<ul>
<li><a class="copylink_button" url="${status.url}" >Copy link to Toot</a></li>
<li><a class="copylink_button" url="${status.url}" >${__('Copy link to Toot')}</a></li>
${own_toot_buttons}
</ul>
<ul>
<li><a href="${NotificationObj.status.url}" target="_blank">View original</a></li>
<li><a href="${NotificationObj.status.url}" target="_blank">${__('View original')}</a></li>
</ul>
</div>
</div>
@ -707,7 +707,7 @@ const html=(`
</a>
<i class="fa fa-fw fa-user font-icon follow"></i>
<a class="notice_author" href="${notice_author_link}">
<span class="emoji_poss">${NotificationObj.account.display_name}</span> followed you
<span class="emoji_poss">${NotificationObj.account.display_name}</span> ${__('followed you')}
</a>
</div>
</li>`);
@ -734,7 +734,7 @@ var html = (`
</div>
<button class="follow_button action_button" mid="${AccountObj.id}">
<i class="fa fa-fw fa-user-plus"></i>
<span>Follow</span>
<span>${__('Follow')}</span>
</button>
<div class="follows_profile_name_box">
<a class="js_follows_profile_link emoji_poss" href="${profile_link}">
@ -772,11 +772,11 @@ for(i=0;i<status.account.emojis.length;i++) {
status.account.display_name = status.account.display_name.replace(new RegExp(":"+status.account.emojis[i].shortcode+":","g"),"<img src='"+status.account.emojis[i].url+"' class='emoji'>");
}
if(status.spoiler_text && localStorage.setting_show_content_warning == "false") {
alart_text = "<span>"+status.spoiler_text+"</span><button class='cw_button'>SHOW MORE</button>",
alart_text = "<span>"+status.spoiler_text+"</span><button class='cw_button'>"+__('SHOW MORE')+"</button>",
article_option = "content_warning";
}
else if(status.spoiler_text && localStorage.setting_show_content_warning == "true") {
alart_text = "<span>"+status.spoiler_text+"</span><button class='cw_button'>SHOW LESS</button>";
alart_text = "<span>"+status.spoiler_text+"</span><button class='cw_button'>"+__('SHOW LESS')+"</button>";
}
if (status.reblogs_count) {
toot_reblogs_count = status.reblogs_count;
@ -795,10 +795,10 @@ checked_unlisted = "";
checked_private = "";
checked_direct = "";
switch(status.visibility) {
case "public":toot_privacy_mode="Public";toot_privacy_icon="globe";checked_public=" checked";break;
case "unlisted":toot_privacy_mode="Unlisted";toot_privacy_icon="unlock-alt";checked_unlisted=" checked";break;
case "private":toot_privacy_mode="Followers-only";toot_privacy_icon="lock";checked_private=" checked";break;
case "direct":toot_privacy_mode="Direct";toot_privacy_icon="envelope";checked_direct=" checked";break;
case "public":toot_privacy_mode=__("Public");toot_privacy_icon="globe";checked_public=" checked";break;
case "unlisted":toot_privacy_mode=__("Unlisted");toot_privacy_icon="unlock-alt";checked_unlisted=" checked";break;
case "private":toot_privacy_mode=__("Followers-only");toot_privacy_icon="lock";checked_private=" checked";break;
case "direct":toot_privacy_mode=__("Direct");toot_privacy_icon="envelope";checked_direct=" checked";break;
}
if(toot_privacy_icon == "globe" || toot_privacy_icon == "unlock-alt") {
toot_footer_width = " style='width:320px'";
@ -815,18 +815,18 @@ toot_reblog_button = "";
}
var own_toot_buttons = "";
if(status.account.acct == current_acct) {
var own_toot_buttons = (`<li><a class="delete_button" tid="${status.id}">Delete Toot</a></li>`);
var own_toot_buttons = (`<li><a class="delete_button" tid="${status.id}">${__('Delete Toot')}</a></li>`);
if(status.pinned == true) {
own_toot_buttons += (`<li><a class="unpin_button" tid="${status.id}">Unpin Toot</a></li>`);
own_toot_buttons += (`<li><a class="unpin_button" tid="${status.id}">${__('Unpin Toot')}</a></li>`);
}
else {
own_toot_buttons += (`<li><a class="pin_button" tid="${status.id}">Pin Toot</a></li>`);
own_toot_buttons += (`<li><a class="pin_button" tid="${status.id}">${__('Pin Toot')}</a></li>`);
}
}
else {
var own_toot_buttons = (`<li><a class="mute_button" mid="${status.account.id}" sid="${status.id}">Mute @${status.account.username}</a></li>
<li><a class="block_button" mid="${status.account.id}" sid="${status.id}">Block @${status.account.username}</a></li>
<li><a class="report_button" mid="${status.account.id}" sid="${status.id}" display_name="${status.account.display_name}">Report this Toot</a></li>`);
var own_toot_buttons = (`<li><a class="mute_button" mid="${status.account.id}" sid="${status.id}">${__('Mute')} @${status.account.username}</a></li>
<li><a class="block_button" mid="${status.account.id}" sid="${status.id}">${__('Block')} @${status.account.username}</a></li>
<li><a class="report_button" mid="${status.account.id}" sid="${status.id}" display_name="${status.account.display_name}">${__('Report this Toot')}</a></li>`);
}
const html=(`
<div sid="${status.id}" class="toot_detail ${class_options}">
@ -849,11 +849,11 @@ ${status.account.display_name}
</button>
<div class="expand_menu invisible disallow_select">
<ul>
<li><a class="copylink_button" url="${status.url}" >Copy link to Toot</a></li>
<li><a class="copylink_button" url="${status.url}" >${__('Copy link to Toot')}</a></li>
${own_toot_buttons}
</ul>
<ul>
<li><a href="${status.url}" target="_blank">View original</a></li>
<li><a href="${status.url}" target="_blank">${__('View original')}</a></li>
</ul>
</div>
</div>
@ -892,7 +892,7 @@ ${toot_reblog_button}
</div>
<form id="reply_status_form" name="reply_status_form" class="status_form"sid="${status.id}" username="${status.account.acct}">
<div class="status_top">
<input class="status_spoiler invisible" name="status_spoiler" placeholder="Content warning" type="text"/>
<input class="status_spoiler invisible" name="status_spoiler" placeholder="${__('Content warning')}" type="text"/>
</div>
<div class="status_main">
<!-- current avatar -->
@ -901,7 +901,7 @@ ${toot_reblog_button}
</div>
<!-- text area -->
<div class="status_textarea">
<textarea class="emoji_poss" name="status_textarea" placeholder="Toot your reply"></textarea>
<textarea class="emoji_poss" name="status_textarea" placeholder="${__('Toot your reply')}"></textarea>
<div class="media_attachments_preview_area invisible"></div>
</div>
</div>
@ -925,16 +925,16 @@ ${toot_reblog_button}
<!-- Privacy options -->
<div class="expand_privacy_menu invisible">
<label for="reply_status_public" class="status_privacy select_privacy disallow_select" privacyicon="fa fa-globe">
<i class="fa fa-globe" aria-hidden="true"></i>Public
<i class="fa fa-globe" aria-hidden="true"></i>${__('Public')}
</label>
<label for="reply_status_unlisted" class="status_privacy select_privacy disallow_select" privacyicon="fa fa-unlock-alt">
<i class="fa fa-unlock-alt" aria-hidden="true"></i>Unlisted
<i class="fa fa-unlock-alt" aria-hidden="true"></i>${__('Unlisted')}
</label>
<label for="reply_status_fonly" class="status_privacy select_privacy disallow_select" privacyicon="fa fa-lock">
<i class="fa fa-lock" aria-hidden="true"></i>Followers-only
<i class="fa fa-lock" aria-hidden="true"></i>${__('Followers-only')}
</label>
<label for="reply_status_direct" class="status_privacy select_privacy disallow_select" privacyicon="fa fa-envelope">
<i class="fa fa-envelope" aria-hidden="true"></i>Direct
<i class="fa fa-envelope" aria-hidden="true"></i>${__('Direct')}
</label>
</div>
</div>
@ -957,7 +957,7 @@ ${current_instance_charlimit}
<label for="reply_status_form_submit" class="submit_status_label">
<div class="toot_button_label disallow_select">
<i class="fa fa-reply" aria-hidden="true"></i>
<span>Reply</span>
<span>${__('Reply')}</span>
</div>
</label>
</div>
@ -988,11 +988,11 @@ for(i=0;i<status.reblog.account.emojis.length;i++) {
status.reblog.account.display_name = status.reblog.account.display_name.replace(new RegExp(":"+status.reblog.account.emojis[i].shortcode+":","g"),"<img src='"+status.reblog.account.emojis[i].url+"' class='emoji'>");
}
if(status.reblog.spoiler_text && localStorage.setting_show_content_warning == "false") {
alart_text = "<span>"+status.reblog.spoiler_text+"</span><button class='cw_button'>SHOW MORE</button>",
alart_text = "<span>"+status.reblog.spoiler_text+"</span><button class='cw_button'>"+__('SHOW MORE')+"</button>",
article_option = "content_warning";
}
else if(status.reblog.spoiler_text && localStorage.setting_show_content_warning == "true") {
alart_text = "<span>"+status.reblog.spoiler_text+"</span><button class='cw_button'>SHOW LESS</button>";
alart_text = "<span>"+status.reblog.spoiler_text+"</span><button class='cw_button'>"+__('SHOW LESS')+"</button>";
}
if (status.reblog.reblogs_count) {
toot_reblogs_count = status.reblog.reblogs_count;
@ -1012,23 +1012,23 @@ status.reblog.account.display_name = status.reblog.account.username;
checked_public = "";
checked_unlisted = "";
switch(status.reblog.visibility) {
case "public":toot_privacy_mode="Public";toot_privacy_icon="globe";checked_public=" checked";break;
case "unlisted":toot_privacy_mode="Unlisted";toot_privacy_icon="unlock-alt";checked_unlisted=" checked";break;
case "public":toot_privacy_mode=__("Public");toot_privacy_icon="globe";checked_public=" checked";break;
case "unlisted":toot_privacy_mode=__("Unlisted");toot_privacy_icon="unlock-alt";checked_unlisted=" checked";break;
}
var own_toot_buttons = "";
if(status.reblog.account.acct == current_acct) {
var own_toot_buttons = (`<li><a class="delete_button" tid="${status.reblog.id}">Delete Toot</a></li>`);
var own_toot_buttons = (`<li><a class="delete_button" tid="${status.reblog.id}">${__('Delete Toot')}</a></li>`);
if(status.reblog.pinned == true) {
own_toot_buttons += (`<li><a class="unpin_button" tid="${status.reblog.id}">Unpin Toot</a></li>`);
own_toot_buttons += (`<li><a class="unpin_button" tid="${status.reblog.id}">${__('Unpin Toot')}</a></li>`);
}
else {
own_toot_buttons += (`<li><a class="pin_button" tid="${status.reblog.id}">Pin Toot</a></li>`);
own_toot_buttons += (`<li><a class="pin_button" tid="${status.reblog.id}">${__('Pin Toot')}</a></li>`);
}
}
else {
var own_toot_buttons = (`<li><a class="mute_button" mid="${status.reblog.account.id}" sid="${status.reblog.id}">Mute @${status.reblog.account.username}</a></li>
<li><a class="block_button" mid="${status.reblog.account.id}" sid="${status.reblog.id}">Block @${status.reblog.account.username}</a></li>
<li><a class="report_button" mid="${status.reblog.account.id}" sid="${status.reblog.id}" display_name="${status.reblog.account.display_name}">Report this Toot</a></li>`);
var own_toot_buttons = (`<li><a class="mute_button" mid="${status.reblog.account.id}" sid="${status.reblog.id}">${__('Mute')} @${status.reblog.account.username}</a></li>
<li><a class="block_button" mid="${status.reblog.account.id}" sid="${status.reblog.id}">${__('Block')} @${status.reblog.account.username}</a></li>
<li><a class="report_button" mid="${status.reblog.account.id}" sid="${status.reblog.id}" display_name="${status.reblog.account.display_name}">${__('Report this Toot')}</a></li>`);
}
const html=(`
<div sid="${status.reblog.id}" class="toot_detail ${class_options}">
@ -1051,11 +1051,11 @@ ${status.reblog.account.display_name}
</button>
<div class="expand_menu invisible disallow_select">
<ul>
<li><a class="copylink_button" url="${status.reblog.url}" >Copy link to Toot</a></li>
<li><a class="copylink_button" url="${status.reblog.url}" >${__('Copy link to Toot')}</a></li>
${own_toot_buttons}
</ul>
<ul>
<li><a href="${status.reblog.url}" target="_blank">View original</a></li>
<li><a href="${status.reblog.url}" target="_blank">${__('View original')}</a></li>
</ul>
</div>
</div>
@ -1099,7 +1099,7 @@ ${media_views}
</div>
<form id="reply_status_form" name="reply_status_form" class="status_form" sid="${status.reblog.id}" username="${status.reblog.account.acct}">
<div class="status_top">
<input class="status_spoiler invisible" name="status_spoiler" placeholder="Content warning" type="text"/>
<input class="status_spoiler invisible" name="status_spoiler" placeholder="${__('Content warning')}" type="text"/>
</div>
<div class="status_main">
<!-- current avatar -->
@ -1108,7 +1108,7 @@ ${media_views}
</div>
<!-- text area -->
<div class="status_textarea">
<textarea class="emoji_poss" name="status_textarea" placeholder="Toot your reply"></textarea>
<textarea class="emoji_poss" name="status_textarea" placeholder="${__('Toot your reply')}"></textarea>
<div class="media_attachments_preview_area invisible"></div>
</div>
</div>
@ -1132,16 +1132,16 @@ ${media_views}
<!-- Privacy options -->
<div class="expand_privacy_menu invisible">
<label for="reply_status_public" class="status_privacy select_privacy disallow_select" privacyicon="fa fa-globe">
<i class="fa fa-globe" aria-hidden="true"></i>Public
<i class="fa fa-globe" aria-hidden="true"></i>${__('Public')}
</label>
<label for="reply_status_unlisted" class="status_privacy select_privacy disallow_select" privacyicon="fa fa-unlock-alt">
<i class="fa fa-unlock-alt" aria-hidden="true"></i>Unlisted
<i class="fa fa-unlock-alt" aria-hidden="true"></i>${__('Unlisted')}
</label>
<label for="reply_status_fonly" class="status_privacy select_privacy disallow_select" privacyicon="fa fa-lock">
<i class="fa fa-lock" aria-hidden="true"></i>Followers-only
<i class="fa fa-lock" aria-hidden="true"></i>${__('Followers-only')}
</label>
<label for="reply_status_direct" class="status_privacy select_privacy disallow_select" privacyicon="fa fa-envelope">
<i class="fa fa-envelope" aria-hidden="true"></i>Direct
<i class="fa fa-envelope" aria-hidden="true"></i>${__('Direct')}
</label>
</div>
</div>
@ -1164,7 +1164,7 @@ ${current_instance_charlimit}
<label for="reply_status_form_submit" class="submit_status_label">
<div class="toot_button_label disallow_select">
<i class="fa fa-reply" aria-hidden="true"></i>
<span>Reply</span>
<span>${__('Reply')}</span>
</div>
</label>
</div>
@ -1217,11 +1217,11 @@ for(i=0;i<status.account.emojis.length;i++) {
status.account.display_name = status.account.display_name.replace(new RegExp(":"+status.account.emojis[i].shortcode+":","g"),"<img src='"+status.account.emojis[i].url+"' class='emoji'>");
}
if(status.spoiler_text && localStorage.setting_show_content_warning == "false") {
alart_text = "<span>"+status.spoiler_text+"</span><button class='cw_button'>SHOW MORE</button>",
alart_text = "<span>"+status.spoiler_text+"</span><button class='cw_button'>${__('SHOW MORE')}</button>",
article_option = "content_warning";
}
else if(status.spoiler_text && localStorage.setting_show_content_warning == "true") {
alart_text = "<span>"+status.spoiler_text+"</span><button class='cw_button'>SHOW LESS</button>";
alart_text = "<span>"+status.spoiler_text+"</span><button class='cw_button'>${__('SHOW LESS')}</button>";
}
if (status.reblogs_count) {
toot_reblogs_count = status.reblogs_count;
@ -1236,10 +1236,10 @@ if(status.account.display_name.length == 0) {
status.account.display_name = status.account.username;
}
switch(status.visibility) {
case "public":toot_privacy_mode="Public";toot_privacy_icon="globe";break;
case "unlisted":toot_privacy_mode="Unlisted";toot_privacy_icon="unlock-alt";break;
case "private":toot_privacy_mode="Followers-only";toot_privacy_icon="lock";break;
case "direct":toot_privacy_mode="Direct";toot_privacy_icon="envelope";break;
case "public":toot_privacy_mode=__("Public");toot_privacy_icon="globe";break;
case "unlisted":toot_privacy_mode=__("Unlisted");toot_privacy_icon="unlock-alt";break;
case "private":toot_privacy_mode=__("Followers-only");toot_privacy_icon="lock";break;
case "direct":toot_privacy_mode=__("Direct");toot_privacy_icon="envelope";break;
}
if(toot_privacy_icon == "globe" || toot_privacy_icon == "unlock-alt") {
toot_footer_width = " style='width:320px'";
@ -1256,18 +1256,18 @@ toot_reblog_button = "";
}
var own_toot_buttons = "";
if(status.account.acct == current_acct) {
var own_toot_buttons = (`<li><a class="delete_button" tid="${status.id}">Delete Toot</a></li>`);
var own_toot_buttons = (`<li><a class="delete_button" tid="${status.id}">${__('Delete Toot')}</a></li>`);
if(status.pinned == true) {
own_toot_buttons += (`<li><a class="unpin_button" tid="${status.id}">Unpin Toot</a></li>`);
own_toot_buttons += (`<li><a class="unpin_button" tid="${status.id}">${__('Unpin Toot')}</a></li>`);
}
else {
own_toot_buttons += (`<li><a class="pin_button" tid="${status.id}">Pin Toot</a></li>`);
own_toot_buttons += (`<li><a class="pin_button" tid="${status.id}">${__('Pin Toot')}</a></li>`);
}
}
else {
var own_toot_buttons = (`<li><a class="mute_button" mid="${status.account.id}" sid="${status.id}">Mute @${status.account.username}</a></li>
<li><a class="block_button" mid="${status.account.id}" sid="${status.id}">Block @${status.account.username}</a></li>
<li><a class="report_button" mid="${status.account.id}" sid="${status.id}" display_name="${status.account.display_name}">Report this Toot</a></li>`);
var own_toot_buttons = (`<li><a class="mute_button" mid="${status.account.id}" sid="${status.id}">${__('Mute')} @${status.account.username}</a></li>
<li><a class="block_button" mid="${status.account.id}" sid="${status.id}">${__('Block')} @${status.account.username}</a></li>
<li><a class="report_button" mid="${status.account.id}" sid="${status.id}" display_name="${status.account.display_name}">${__('Report this Toot')}</a></li>`);
}
const html=(`
<div sid="${status.id}" class="toot_entry ${class_options}">
@ -1292,11 +1292,11 @@ ${status.account.display_name}
</button>
<div class="expand_menu invisible disallow_select">
<ul>
<li><a class="copylink_button" url="" >Copy link to Toot</a></li>
<li><a class="copylink_button" url="" >${__('Copy link to Toot')}</a></li>
${own_toot_buttons}
</ul>
<ul>
<li><a href="${status.url}" target="_blank">View original</a></li>
<li><a href="${status.url}" target="_blank">${__('View original')}</a></li>
</ul>
</div>
</div>
@ -1354,11 +1354,11 @@ for(i=0;i<status.reblog.account.emojis.length;i++) {
status.reblog.account.display_name = status.reblog.account.display_name.replace(new RegExp(":"+status.reblog.account.emojis[i].shortcode+":","g"),"<img src='"+status.reblog.account.emojis[i].url+"' class='emoji'>");
}
if(status.reblog.spoiler_text && localStorage.setting_show_content_warning == "false") {
alart_text = "<span>"+status.reblog.spoiler_text+"</span><button class='cw_button'>SHOW MORE</button>",
alart_text = "<span>"+status.reblog.spoiler_text+"</span><button class='cw_button'>"+__('SHOW MORE')+"</button>",
article_option = "content_warning";
}
else if(status.reblog.spoiler_text && localStorage.setting_show_content_warning == "true") {
alart_text = "<span>"+status.reblog.spoiler_text+"</span><button class='cw_button'>SHOW LESS</button>";
alart_text = "<span>"+status.reblog.spoiler_text+"</span><button class='cw_button'>"+__('SHOW LESS')+"</button>";
}
if (status.reblog.reblogs_count) {
toot_reblogs_count = status.reblog.reblogs_count;
@ -1376,29 +1376,29 @@ if(status.reblog.account.display_name.length == 0) {
status.reblog.account.display_name = status.reblog.account.username;
}
switch(status.reblog.visibility) {
case "public":toot_privacy_mode="Public";toot_privacy_icon="globe";break;
case "unlisted":toot_privacy_mode="Unlisted";toot_privacy_icon="unlock-alt";break;
case "public":toot_privacy_mode=__("Public");toot_privacy_icon="globe";break;
case "unlisted":toot_privacy_mode=__("Unlisted");toot_privacy_icon="unlock-alt";break;
}
var own_toot_buttons = "";
if(status.reblog.account.acct == current_acct) {
var own_toot_buttons = (`<li><a class="delete_button" tid="${status.reblog.id}">Delete Toot</a></li>`);
var own_toot_buttons = (`<li><a class="delete_button" tid="${status.reblog.id}">${__('Delete Toot')}</a></li>`);
if(status.reblog.pinned == true) {
own_toot_buttons += (`<li><a class="unpin_button" tid="${status.reblog.id}">Unpin Toot</a></li>`);
own_toot_buttons += (`<li><a class="unpin_button" tid="${status.reblog.id}">${__('Unpin Toot')}</a></li>`);
}
else {
own_toot_buttons += (`<li><a class="pin_button" tid="${status.reblog.id}">Pin Toot</a></li>`);
own_toot_buttons += (`<li><a class="pin_button" tid="${status.reblog.id}">${__('Pin Toot')}</a></li>`);
}
}
else {
var own_toot_buttons = (`<li><a class="mute_button" mid="${status.reblog.account.id}" sid="${status.reblog.id}">Mute @${status.account.username}</a></li>
<li><a class="block_button" mid="${status.reblog.account.id}" sid="${status.reblog.id}">Block @${status.account.username}</a></li>
<li><a class="report_button" mid="${status.reblog.account.id}" sid="${status.reblog.id}" display_name="${status.reblog.account.display_name}">Report this Toot</a></li>`);
var own_toot_buttons = (`<li><a class="mute_button" mid="${status.reblog.account.id}" sid="${status.reblog.id}">${__('Mute')} @${status.account.username}</a></li>
<li><a class="block_button" mid="${status.reblog.account.id}" sid="${status.reblog.id}">${__('Block')} @${status.account.username}</a></li>
<li><a class="report_button" mid="${status.reblog.account.id}" sid="${status.reblog.id}" display_name="${status.reblog.account.display_name}">${__('Report this Toot')}</a></li>`);
}
const html=(`
<div sid="${status.id}" class="toot_entry ${class_options}">
<div class="boost_author_box">
<a href="${status_account_link}">
<span class="emoji_poss"><i class="fa fa-fw fa-retweet"></i>${status.account.display_name} Boosted</span>
<span class="emoji_poss"><i class="fa fa-fw fa-retweet"></i>${status.account.display_name} ${__('Boosted')}</span>
</a>
</div>
<div class="toot_entry_body">
@ -1422,11 +1422,11 @@ ${status.reblog.account.display_name}
</button>
<div class="expand_menu invisible disallow_select">
<ul>
<li><a class="copylink_button" url="" >Copy link to Toot</a></li>
<li><a class="copylink_button" url="" >${__('Copy link to Toot')}</a></li>
${own_toot_buttons}
</ul>
<ul>
<li><a href="${status.reblog.url}" target="_blank">View original</a></li>
<li><a href="${status.reblog.url}" target="_blank">${__('View original')}</a></li>
</ul>
</div>
</div>

View File

@ -19,7 +19,7 @@ api.post("follows", {uri:$(this).attr('data')}, function (data) {
}
$(this).toggleClass('follow_button');
$(this).toggleClass('following_button');
$(this).html('<span>Following</span>');
$(this).html('<span>'+__('Following')+'</span>');
return false;
});
$(document).on('click','.following_button', function(e) {
@ -30,7 +30,7 @@ api.post('accounts/'+$(this).attr('mid')+'/unfollow', function (data) {
}
$(this).toggleClass('following_button');
$(this).toggleClass('follow_button');
$(this).html('<i class="fa fa-fw fa-user-plus"></i><span>Follow</span>');
$(this).html('<i class="fa fa-fw fa-user-plus"></i><span>'+__('Follow')+'</span>');
return false;
});
$(document).on('click','.mute_button', function(e) {
@ -38,7 +38,7 @@ if ($(this).attr('mid') !== null) {
api.post('accounts/'+$(this).attr('mid')+'/mute', function (data) {
});
}
putMessage("You'll no longer receive notifications from this user");
putMessage(__("You'll no longer receive notifications from this user"));
return false;
});
$(document).on('click','.muting_button', function(e) {
@ -48,8 +48,8 @@ api.post('accounts/'+$(this).attr('mid')+'/unmute', function (data) {
}
$(this).toggleClass('muting_button');
$(this).toggleClass('follow_button');
$(this).html('<i class="fa fa-fw fa-user-plus"></i><span>Follow</span>');
putMessage("Unmuted this user");
$(this).html('<i class="fa fa-fw fa-user-plus"></i><span>'+__('Follow')+'</span>');
putMessage(__("Unmuted this user"));
return false;
});
$(document).on('click','.block_button', function(e) {
@ -57,7 +57,7 @@ if ($(this).attr('mid') !== null) {
api.post('accounts/'+$(this).attr('mid')+'/block', function (data) {
});
}
putMessage("This user has been blocked");
putMessage(__("This user has been blocked"));
return false;
});
$(document).on('click','.blocking_button', function(e) {
@ -68,8 +68,8 @@ api.post('accounts/'+$(this).attr('mid')+'/unblock', function (data) {
}
$(this).toggleClass('blocking_button');
$(this).toggleClass('follow_button');
$(this).html('<i class="fa fa-fw fa-user-plus"></i><span>Follow</span>');
putMessage("Unblocked this user");
$(this).html('<i class="fa fa-fw fa-user-plus"></i><span>'+__('Follow')+'</span>');
putMessage(__("Unblocked this user"));
return false;
});
$(document).on('click','.boost_button', function(e) {
@ -112,31 +112,31 @@ $(document).on('click','.delete_button', function(e) {
const sid = $(this).attr('tid');
api.delete("statuses/"+sid, function (data) {
$('.toot_entry[sid="'+sid+'"]').remove();
putMessage("Your Toot has been deleted");
putMessage(__("Your Toot has been deleted"));
});
});
$(document).on('click','.pin_button', function(e) {
const sid = $(this).attr('tid');
api.post("statuses/"+sid+"/pin", function (data) {
$('.toot_entry[sid="'+sid+'"] .pin_button').removeClass("pin_button").addClass("unpin_button").text("Unpin Toot");
putMessage("Your Toot has been pinned");
$('.toot_entry[sid="'+sid+'"] .pin_button').removeClass("pin_button").addClass("unpin_button").text(__("Unpin Toot"));
putMessage(__("Your Toot has been pinned"));
});
});
$(document).on('click','.unpin_button', function(e) {
const sid = $(this).attr('tid');
api.post("statuses/"+sid+"/unpin", function (data) {
$('.toot_entry[sid="'+sid+'"] .unpin_button').removeClass("unpin_button").addClass("pin_button").text("Pin Toot");
putMessage("Your Toot has been unpinned");
$('.toot_entry[sid="'+sid+'"] .unpin_button').removeClass("unpin_button").addClass("pin_button").text(__("Pin Toot"));
putMessage(__("Your Toot has been unpinned"));
});
});
$(document).on('click','.cw_button', function(e) {
e.stopPropagation();
const article = $(this).parent();
if ( article.hasClass('content_warning') ) {
$(this).text('SHOW LESS');
$(this).text(__('SHOW LESS'));
article.removeClass('content_warning');
} else {
$(this).text('SHOW MORE');
$(this).text(__('SHOW MORE'));
article.addClass('content_warning');
}
return false;
@ -454,7 +454,7 @@ if ( RelationshipsObj[i].following ) {
const button = $('#js-follows_profile .follow_button[mid="'+RelationshipsObj[i].id+'"]');
button.removeClass("follow_button");
button.addClass("following_button");
button.text('Following');
button.text(__('Following'));
}
}
});
@ -481,7 +481,7 @@ if ( RelationshipsObj[i].following ) {
const button = $('#js-follows_profile .follow_button[mid="'+RelationshipsObj[i].id+'"]');
button.removeClass("follow_button");
button.addClass("following_button");
button.text('Following');
button.text(__('Following'));
}
}
});
@ -528,12 +528,12 @@ console.log(current_id);
if( AccountObj.id == current_id ) {
$(`<a href="/settings/profile">
<button class="profile_edit_button relationship_button">
<span>Edit profile</span>
<span>${__('Edit profile')}</span>
</button
</a>`).appendTo('.profile_button_box');
$(`<a href="${current_favourites_link}">
<h2>FAVOURITES</h2>
<span>Show</span>
<h2>${__('FAVOURITES')}</h2>
<span>${__('Show')}</span>
</a>`).appendTo("#js-profile_nav_favourites");
} else {
api.get('accounts/relationships', [{name:'id', data:String(AccountObj.id)}], function(RelationshipObj) {
@ -542,25 +542,25 @@ $('#main .profile_username .profile_followed_by').removeClass('invisible');
}
if (RelationshipObj[0].blocking) {
$(`<button class="blocking_button relationship_button" mid="${AccountObj.id}">
<span>Blocking</span>
<span>${__('Blocking')}</span>
</button>`).appendTo('.profile_button_box');
} else if (RelationshipObj[0].muting) {
$(`<button class="muting_button relationship_button" mid="${AccountObj.id}">
<span>Muting</span>
<span>${__('Muting')}</span>
</button>`).appendTo('.profile_button_box');
} else if (RelationshipObj[0].requested) {
$(`<!-- wont work -->
<button class="requested_button relationship_button" mid="${AccountObj.id}">
<span>Requested</span>
<span>${__('Requested')}</span>
</button>`).appendTo('.profile_button_box');
} else if(RelationshipObj[0].following){
$(`<button class="following_button relationship_button" mid="${AccountObj.id}">
<span>Following</span>
<span>${__('Following')}</span>
</button>`).appendTo('.profile_button_box');
} else {
$(`<button class="follow_button relationship_button" mid="${AccountObj.id}">
<i class="fa fa-fw fa-user-plus"></i>
<span>Follow</span>
<span>${__('Follow')}</span>
</button>`).appendTo('.profile_button_box');
}
});
@ -570,7 +570,7 @@ replace_emoji();
function setRecentImages(mid) {
api.get("accounts/"+mid+"/statuses", [{name:'only_media',data:'true'},{name:'limit',data:'6'}], function(statuses) {
if ( statuses.length ) {
$('#js_profile_recent_images span').text(`${statuses[0].account.statuses_count} Photos and toots`);
$('#js_profile_recent_images span').text(`${statuses[0].account.statuses_count} ${__('Photos and toots')}`);
$('#js_profile_recent_images a').attr('href', $("#media_link").attr('href'));
for ( i in statuses ) {
$(`<div class="profile_recent_images_item media_attachment" otype="image" sid="${statuses[i].id}" url="${statuses[i].media_attachments[0].preview_url}">
@ -603,10 +603,10 @@ if(userstream.payload.account.display_name.length == 0) {
userstream.payload.account.display_name = userstream.payload.account.username;
}
switch(userstream.payload.type) {
case "favourite":pushNotification("New favourite",userstream.payload.account.display_name+" favourited your toot");break;
case "reblog":pushNotification("New boost",userstream.payload.account.display_name+" boosted your toot");break;
case "follow":pushNotification("New follower",userstream.payload.account.display_name+" followed you");$(".js_current_followers_count").html(++localStorage.current_followers_count);break;
case "mention":pushNotification("New mention",userstream.payload.account.display_name+" mentioned you");break;
case "favourite":pushNotification("New favourite",userstream.payload.account.display_name+" "+__("favourited your toot"));break;
case "reblog":pushNotification("New boost",userstream.payload.account.display_name+" "+__("boosted your toot"));break;
case "follow":pushNotification("New follower",userstream.payload.account.display_name+" "+__("followed you"));$(".js_current_followers_count").html(++localStorage.current_followers_count);break;
case "mention":pushNotification("New mention",userstream.payload.account.display_name+" "+__("mentioned you"));break;
}
}
});
@ -796,7 +796,7 @@ $('.overlay_status .submit_status_label').removeClass('active_submit_button');
$('.overlay_status').addClass('invisible');
$('#js-overlay_content_wrap').removeClass('view');
$('#js-overlay_content_wrap').removeClass('black_05');
putMessage('Your Toot was posted!');
putMessage(__('Your Toot was posted!'));
});
} else {
const dummy_form= $('<form></form>').append($('#overlay_status_media_atta')),
@ -831,7 +831,7 @@ autosize.destroy($('#overlay_status_form .status_textarea textarea'));
$('#overlay_status_emoji').lsxEmojiPicker("destroy");
$('#js-overlay_content_wrap').removeClass('view');
$('#js-overlay_content_wrap').removeClass('black_05');
putMessage('Your Toot was posted!');
putMessage(__('Your Toot was posted!'));
});
});
break;
@ -1105,7 +1105,7 @@ $('#reply_status_form .character_count').html(current_instance_charlimit);
$('.reply_status .submit_status_label').removeClass('active_submit_button');
context_template(data, 'descendants_status').appendTo("#js-overlay_content .temporary_object .toot_detail_wrap");
replace_emoji();
putMessage('Your Toot was posted!');
putMessage(__('Your Toot was posted!'));
});
} else {
const dummy_form = $('<form></form>').append($('#reply_status_media_atta')),
@ -1138,7 +1138,7 @@ $('#reply_status_form .character_count').html(current_instance_charlimit);
$('.reply_status .submit_status_label').removeClass('active_submit_button');
context_template(data, 'descendants_status').appendTo("#js-overlay_content .temporary_object .toot_detail_wrap");
replace_emoji();
putMessage('Your Toot was posted!');
putMessage(__('Your Toot was posted!'));
});
});
break;
@ -1184,7 +1184,7 @@ autosize($('#single_reply_status_form .status_textarea textarea'));
$('#single_reply_status_form input[name="privacy_option"]').val([privacy_mode]);
$('#single_reply_status_form .expand_privacy_menu_button > i').attr('class', "fa fa-" + picon);
$('#single_reply_status_form').attr('tid',sid);
$('.single_reply_status .single_reply_status_header span').addClass("emoji_poss").html("Reply to "+display_name);
$('.single_reply_status .single_reply_status_header span').addClass("emoji_poss").html(__("Reply to")+" "+display_name);
$('#single_reply_status_form textarea').val(acct+" ");
$('#single_reply_status_form .character_count').html(current_instance_charlimit);
$('#single_reply_status_emoji').lsxEmojiPicker({
@ -1286,7 +1286,7 @@ $('#single_reply_status_emoji').lsxEmojiPicker("destroy");
$('#js-overlay_content_wrap').removeClass('view');
$('#js-overlay_content_wrap').removeClass('black_05');
$("#js-overlay_content_wrap .single_reply_status .status_preview").empty();
putMessage('Your Reply was posted!');
putMessage(__('Your Reply was posted!'));
});
} else {
const dummy_form= $('<form></form>').append($('#single_reply_status_media_atta')),
@ -1323,7 +1323,7 @@ $('#single_reply_status_emoji').lsxEmojiPicker("destroy");
$('#js-overlay_content_wrap').removeClass('view');
$('#js-overlay_content_wrap').removeClass('black_05');
$("#js-overlay_content_wrap .single_reply_status .status_preview").empty();
putMessage('Your Reply to was posted!');
putMessage(__('Your Reply was posted!'));
});
});
break;
@ -1356,7 +1356,7 @@ $('#report_status_form .status_textarea textarea').focus();
autosize($('#single_reply_status_form .status_textarea textarea'));
$('#report_status_form').attr('tid',sid);
$('#report_status_form').attr('mid',mid);
$('.report_status .report_status_header span').addClass("emoji_poss").html("Report a Toot of "+display_name);
$('.report_status .report_status_header span').addClass("emoji_poss").html(__("Report a Toot of")+" "+display_name);
$('#report_status_form textarea').empty();
$('#report_status_form .character_count').html("1000");
replace_emoji();
@ -1405,7 +1405,7 @@ autosize.destroy($('#report_status_form .status_textarea textarea'));
$('#js-overlay_content_wrap').removeClass('view');
$('#js-overlay_content_wrap').removeClass('black_05');
$("#js-overlay_content_wrap .report_status .status_preview").empty();
putMessage('Toot reported successfully!');
putMessage(__('Toot reported successfully!'));
});
});
});
@ -1415,7 +1415,7 @@ if(ClipboardJS.isSupported()) {
var cbelem = $("<button>").attr("data-clipboard-text",$(this).attr("url"));
var clipboard = new ClipboardJS(cbelem[0]);
clipboard.on('success',function(e) {
putMessage("Link successfully copied!");
putMessage(__("Link successfully copied!"));
e.clearSelection();
});
clipboard.on('error',function(e) {

663
assets/js/pomo/pomo.js Normal file
View File

@ -0,0 +1,663 @@
(function (ctx)
{
var noop = function () {}, instance;
if (!String.prototype.trim) {
String.prototype.trim = function () {
return this.replace(/^\s+|\s+$/g, '');
};
}
var sprintf = (function () {
function get_type(variable) {
return Object.prototype.toString.call(variable).slice(8, -1).toLowerCase();
}
function str_repeat(input, multiplier) {
for (var output = []; multiplier > 0; output[--multiplier] = input) {
}
return output.join('');
}
var str_format = function () {
if (!str_format.cache.hasOwnProperty(arguments[0])) {
str_format.cache[arguments[0]] = str_format.parse(arguments[0]);
}
return str_format.format.call(null, str_format.cache[arguments[0]], arguments);
};
str_format.format = function (parse_tree, argv) {
var cursor = 1, tree_length = parse_tree.length, node_type = '', arg, output = [], i, k, match, pad, pad_character, pad_length;
for (i = 0; i < tree_length; i++) {
node_type = get_type(parse_tree[i]);
if (node_type === 'string') {
output.push(parse_tree[i]);
} else if (node_type === 'array') {
match = parse_tree[i];
if (match[2]) {
arg = argv[cursor];
for (k = 0; k < match[2].length; k++) {
if (!arg.hasOwnProperty(match[2][k])) {
throw (sprintf('[sprintf] property "%s" does not exist', match[2][k]));
}
arg = arg[match[2][k]];
}
} else if (match[1]) {
arg = argv[match[1]];
} else {
arg = argv[cursor++];
}
if (/[^s]/.test(match[8]) && (get_type(arg) != 'number')) {
throw (sprintf('[sprintf] expecting number but found %s', get_type(arg)));
}
switch (match[8]) {
case 'b':
arg = arg.toString(2);
break;
case 'c':
arg = String.fromCharCode(arg);
break;
case 'd':
arg = arg >> 0;
break;
case 'e':
arg = match[7] ? arg.toExponential(match[7]) : arg.toExponential();
break;
case 'f':
arg = match[7] ? parseFloat(arg).toFixed(match[7]) : parseFloat(arg);
break;
case 'o':
arg = arg.toString(8);
break;
case 's':
arg = (( arg = String(arg)) && match[7] ? arg.substring(0, match[7]) : arg);
break;
case 'u':
arg = Math.abs(arg);
break;
case 'x':
arg = arg.toString(16);
break;
case 'X':
arg = arg.toString(16).toUpperCase();
break;
}
arg = (/[def]/.test(match[8]) && match[3] && arg >= 0 ? '+' + arg : arg);
pad_character = match[4] ? match[4] === '0' ? '0' : match[4].charAt(1) : ' ';
pad_length = match[6] - String(arg).length;
pad = match[6] ? str_repeat(pad_character, pad_length) : '';
output.push(match[5] ? arg + pad : pad + arg);
}
}
return output.join('');
};
str_format.cache = {};
str_format.parse = function (fmt) {
var _fmt = fmt, match = [], parse_tree = [], arg_names = 0;
while (_fmt) {
if (( match = /^[^\x25]+/.exec(_fmt)) !== null) {
parse_tree.push(match[0]);
} else if (( match = /^\x25{2}/.exec(_fmt)) !== null) {
parse_tree.push('%');
} else if (( match = /^\x25(?:([1-9]\d*)\$|\(([^\)]+)\))?(\+)?(0|'[^$])?(-)?(\d+)?(?:\.(\d+))?([b-fosuxX])/.exec(_fmt)) !== null) {
if (match[2]) {
arg_names |= 1;
var field_list = [], replacement_field = match[2], field_match = [];
if (( field_match = /^([a-z_][a-z_\d]*)/i.exec(replacement_field)) !== null) {
field_list.push(field_match[1]);
while (( replacement_field = replacement_field.substring(field_match[0].length)) !== '') {
if (( field_match = /^\.([a-z_][a-z_\d]*)/i.exec(replacement_field)) !== null) {
field_list.push(field_match[1]);
} else if (( field_match = /^\[(\d+)\]/.exec(replacement_field)) !== null) {
field_list.push(field_match[1]);
} else {
throw ('[sprintf] huh?');
}
}
} else {
throw ('[sprintf] huh?');
}
match[2] = field_list;
} else {
arg_names |= 2;
}
if (arg_names === 3) {
throw ('[sprintf] mixing positional and named placeholders is not (yet) supported');
}
parse_tree.push(match);
} else {
throw ('[sprintf] huh?');
}
_fmt = _fmt.substring(match[0].length);
}
return parse_tree;
};
return str_format;
})();
var vsprintf = function (fmt, argv) {
argv.unshift(fmt);
return sprintf.apply(null, argv);
};
var isBrowser = function () {
return (typeof(window) !== 'undefined' && !!document && !!document.getElementsByTagName);
};
var escapeString = function (val) {
var return_value;
if (val.constructor != String()) {
return_value = val;
}
if (val.replace) {
return_value = val
.replace(/[\"]/g, '\\"')
.replace(/[\\]/g, '\\')
.replace(/[\/]/g, '\/')
.replace(/[\b]/g, '\\b')
.replace(/[\f]/g, '\\f')
.replace(/[\n]/g, '\\n')
.replace(/[\r]/g, '\\r')
.replace(/[\t]/g, '\\t');
}
return return_value;
};
var unescapeString = function (val) {
var return_value;
if (!!val && !!val.replace) {
return_value = val
.replace("\\n", '\n')
.replace("\\r", '\r')
.replace("\\t", '\t')
.replace("\\f", '\f')
.replace("\\b", '\b')
.replace("\\r", '\r');
}
return return_value;
};
var waitUntilReady = function (callback) {
var itv = setInterval(function () {
if (!!instance && !instance.waiting) {
clearInterval(itv);
callback.call(callback);
}
}, 4);
};
var extend = function(protoProps, staticProps) {
var parent = this;
var child, has = Object.prototype.hasOwnProperty;
if (protoProps && has.call(protoProps, 'constructor')) {
child = protoProps.constructor;
}
else {
child = function(){ return parent.apply(this, arguments); };
}
if(staticProps)
for(var static_prop in staticProps){
child[static_prop] = staticProps[static_prop];
}
var Surrogate = function(){ this.constructor = child; };
Surrogate.prototype = parent.prototype;
child.prototype = new Surrogate;
if (protoProps)
for(var proto_prop in protoProps){
child.prototype[proto_prop] = protoProps[proto_prop];
}
child.extend = extend;
child.__super__ = parent.prototype;
return child;
};
entryExists = function (hash, domain, escaped) {
return !!hash && !!hash.contents && !!hash.contents[domain] && !!hash.contents[domain][escaped];
};
var Errors = {};
Errors.Base = extend.call(Error, {
toString: function(){
return (this.name + ': ' + this.message);
}
});
Errors.CustomError = Errors.Base.extend({
constructor: function (message) {
this.name = 'CustomError';
this.message = message;
this.stack = (new Error()).stack;
}
});
Errors.CustomError.extend = extend;
Errors.UnknownAcquisitionModeError = Errors.CustomError.extend({
constructor: function (mode) {
var message;
mode = !mode ? 'None provided' : mode;
message = 'PO files acquisition mode: "' + mode + '" is not valid.';
Errors.CustomError.call(this, message);
this.name = 'UnknownAcquisitionModeError';
}
});
var Parser = {};
Parser.Object = function (msg) {
var me = this, phrase_count = 1;
//singular by default
for (var key in msg) {
this[key] = msg[key];
}
this.setCount = function (amount) {
phrase_count = amount >> 0;
};
this.toString = function () {
var return_value, canGetPluralIndex;
canGetPluralIndex = !this.isPlural && this.plural_forms && this.plural_forms.push && !!Parser.Object.calculatePluralIndex;
if (canGetPluralIndex) {
var idx = Parser.Object.calculatePluralIndex(phrase_count);
return_value = this.plural_forms[idx];
} else {
return_value = this.translation;
}
return return_value;
}
};
Parser.POFiles = {
parse: function (text, translation_domain) {
text = !text? '' : text;
var getTelltale, extractHeaderInfo, isMultilinePlural, multilineExtract;
getTelltale = function (str) {
return str.substring(0, 12).split(' ')[0].trim();
};
isMultilinePlural = function (line) {
return (!!line && line.match(/msgstr\[[0-9]\]/));
};
extractHeaderInfo = function (header) {
var header_lines = header.split("\n");
for (var i = 0, j = header_lines.length; i < j; i++) {
var header_line = header_lines[i];
if (header_line.indexOf('"Plural-Forms: nplurals') === 0) {
var plural_form = header_line.substring(14).slice(0, -1);
Parser.Object.calculatePluralIndex = function (phrase_count) {
eval(unescapeString(plural_form));
if (typeof(plural) === 'undefined') {
plural = 0;
}
return plural;
}
}
}
};
multilineExtract = function (part_lines) {
var buffer = [], possible;
while (possible = part_lines.shift()) {
possible = possible.trim();
if (possible.indexOf('"') === 0) {
buffer.push(possible.substring(1).slice(0, -1));
}
else {
part_lines.unshift(possible);
break;
}
}
return buffer.join("");
};
var parsed = {},
has_header_info,
header_info,
part,
domain = ( typeof (translation_domain) === 'undefined') ? 'messages' : translation_domain,
counter = 0,
text = text.replace(/\r\n|\r/g, "\n"),
parts;
parsed[domain] = {};
parts = text.split(/\n\n/);
header_info = parts.shift();
has_header_info = extractHeaderInfo(header_info);
if (!has_header_info) {
parts.unshift(header_info);
}
else {
Parser.header_info = extractHeaderInfo(has_header_info);
}
while (part = parts.shift()) {
var message = {},
part_lines = !!part ? part.split(/\n/) : [],
line = '',
escaped;
while (line = part_lines.shift()) {
line = line.trim();
var next_line = part_lines.slice(0, -1)[0],
line_telltale = getTelltale(line),
next_line_telltale = next_line ? getTelltale(next_line) : false;
switch (line_telltale) {
case 'msgctxt':
message.context = line.substring(9).slice(0, -1);
break;
case 'msgid_plural':
message.isPlural = true;
message.plural_id = line.substring(14).slice(0, -1);
break;
case 'msgid':
if (line.indexOf('msgid ""') === 0) {
var possible = next_line.trim();
if (possible.indexOf('"') === 0) {//multiline
message.id = multilineExtract(part_lines)
}
}
else {
if (next_line_telltale = 'msgstr') {
message.id = line.substr(7).slice(0, -1);
}
}
continue;
case 'msgstr':
if (line.indexOf('msgstr ""') === 0) {
possible = next_line.trim();
if (possible.indexOf('"') === 0) {
message.translation = multilineExtract(part_lines);
}
}
else {
message.translation = line.substr(8).slice(0, -1);
}
break;
case '#:':
case '#.':
case '#':
continue;
case '#,':
break;
default:
if (isMultilinePlural(line)) {
var cases = [];
while (isMultilinePlural(line)) {
cases.push(line.substring(10).slice(0, -1));
line = part_lines.shift();
}
message.plural_forms = cases;
message.translation = cases[0];
}
continue;
}
}
if (!!message.id && !!message.translation) {
message = new Parser.Object(message);
escaped = escapeString(message.id);
if (!parsed[domain][message.id]) {
parsed[domain][escaped] = [message];
} else {
parsed[domain][escaped].push(message);
}
}
counter++;
}
return parsed;
},
generate: function () {
throw "Feature unimplemented";
}
};
var Providers = {};
Providers.Base = function (domain) {
var me = this, consumer_callback = [], has = Object.prototype.hasOwnProperty;
me.domain = domain;
me.waiting = true;
me.notifyConsumers = function(data){
for(var pos in consumer_callback){
if(has.call(consumer_callback,pos)){
consumer_callback[pos].call(consumer_callback[pos], data);
}
}
me.waiting = true;
}
me.done = function (callback) {
consumer_callback.push(callback);
var itv = setInterval(function () {
if (!me.waiting) {
me.notifyConsumers(me.parsed);
clearInterval(itv);
}
}, 4);
}
};
Providers.Base.prototype = {
toString: function () {
return '[object Adapter]'
},
getContents: function(){}
};
Providers.Base.extend = extend;
Providers.String = Providers.Base.extend({
constructor: function (literal_string, domain) {
Providers.Base.call(this, domain);
this.parsed = null;
this.unparsed = '' + literal_string;
},
getContents: function () {
var me = this, parsed;
parsed = Parser.POFiles.parse(this.unparsed, this.domain);
if(!parsed){
throw new Errors.ParsingError(this.unparsed);
}
me.parsed = parsed;
me.notifyConsumers(me.parsed);
}
});
if (!isBrowser()) {
Providers.File = Providers.Base.extend({
constructor: function (path_to_file, domain) {
Providers.Base.call(this, domain);
this.path = '' + path_to_file;
},
getContents: function () {
var me = this;
instance.waiting = true;
me.waiting = true;
require('fs').readFile(this.path, 'utf-8', function (err, data) {
if (!err) {
me.parsed = Parser.POFiles.parse(data, me.domain);
me.waiting = false;
}
else {
throw new Errors.FileReaderError(err.path);
}
});
}
});
}
else{
console.log('wat');
}
if (isBrowser()) {
Providers.Ajax = Providers.Base.extend({
constructor: function (url, domain) {
Providers.Base.call(this, domain);
this.url = url;
},
doRequest: function (url, success, error) {
var request = new XMLHttpRequest(), noop = function(){};
request.open('GET', url, true);
success = !success ? noop : success;
error = !error ? noop : error;
try {
request.onreadystatechange = function () {
var data = {error: true};
if (this.readyState === 4) {
if (this.status >= 200 && this.status < 400) {
data = this.responseText;
success.call(success, data);
}
else {
error.call(error, data);
}
}
};
request.send();
}
catch (Whatever) {
error.call(error, {error: true});
}
request = null;
},
/**
* Read all <link> elements with a type="text/x-gettext-translation" into the dictionary
* @param domain
* @constructor
*/
getContents: function () {
var domain = this.domain, me = this;
me.waiting = true;
this.doRequest(this.url, function (result) {
var adapter = new Providers.String(result, domain);
adapter.done(function(data){
me.parsed = data;
me.notifyConsumers(data);
});
adapter.getContents();
});
}
});
}
if (isBrowser()) {
Providers.Links = Providers.Ajax.extend({
constructor: function(domain){
Providers.Ajax.call(this,domain);
this.domain = domain;
},
getContents: function () {
var links = document.getElementsByTagName('link'), link, Ajax = Providers.Ajax, me = this;
me.waiting = true;
for (var i = 0, j = links.length; i < j; i++) {
link = links[i];
if (
!!link
&& !!link.getAttribute('type')
&& !!link.getAttribute('href')
&& link.getAttribute('type') === 'text/x-gettext-translation'
) {
me.waiting = true;
this.doRequest(link.href, function (result) {
var adapter = new Providers.String(result, me.domain);
adapter.done(function(data){
me.parsed = data;
me.notifyConsumers(data);
});
adapter.getContents();
});
}
}
}
});
}
var Pomo = function () {
var me = this, ready_callback;
me.storage = {};
me.waiting = true;
me.VERSION = '0.1.3';
me.domain = 'messages';
me.returnStrings = false;
me.unescapeStrings = false;
me.ready = function (callback) {
ready_callback = callback;
var itv = setInterval(function () {
if (!me.waiting) {
clearInterval(itv);
ready_callback.call(ready_callback);
}
}, 2);
};
me.wipe = function(){
me.storage = {};
me.waiting = true;
};
me.load = function (resource, options) {
options = !options ? {} : options;
me.waiting = true;
var mode = !!options.mode ? options.mode : false,
translation_domain = !!options.translation_domain ? options.translation_domain : 'messages',
provider;
switch (mode) {
case 'literal':
provider = new Providers.String(resource, translation_domain);
break;
case 'file':
provider = new Providers.File(resource, translation_domain);
break;
case 'link':
provider = new Providers.Links(translation_domain);
break;
case 'ajax':
provider = new Providers.Ajax(resource, translation_domain);
break;
default:
throw new Errors.UnknownAcquisitionModeError(mode);
break;
}
provider.done(function (data) {
me.storage.contents = data;
me.waiting = false;
});
provider.getContents();
return this;
};
me.getText = function (msg_id, options) {
msg_id = msg_id.split(/\n/).join('');
options = !options ? {} : options;
var variables = !!options.variables ? options.variables : [],
context = !!options.context ? options.context : false,
domain = !!options.domain ? options.domain : 'messages',
count = !!options.count ? options.count : false,
error_callback = !options.error? noop : options.error,
escaped = escapeString(msg_id);
if (!domain && !me.domain) {
domain = me.domain = 'messages';
}
else if (domain && !me.domain) {
me.domain = domain;
}
else {
me.domain = domain;
}
if (entryExists(me.storage, domain, escaped)) {
var entry = me.storage.contents[domain][escaped];
if (!!context) {
for (var i = 0, j = entry.length; i < j; i++) {
if (entry[i].context && entry[i].context === context) {
entry = entry[i];
break;
}
}
}
if (entry.unshift) {
entry = entry[0];
}
if (!!count) {
entry.setCount(count);
}
var translation = entry,
is_bare_string = (entry.constructor === String());
if (me.returnStrings) {
translation = entry.toString();
}
if (!!variables) {
var bare_string = is_bare_string ? translation : translation.translation,
translated = vsprintf(bare_string, variables);
if (!is_bare_string) {
translation.translation = translated;
}
else {
translation = translated;
}
}
if (is_bare_string && me.unescapeStrings) {
translation = unescapeString(translation);
}
else if (me.unescapeStrings && !is_bare_string) {
translation.translation = unescapeString(translation.translation);
}
return translation;
}
else {
if(error_callback === noop){
return escaped;
}
else{
error_callback(error_callback, msg_id, domain, me.storage.contents);
}
}
};
};
instance = new Pomo();
if (typeof (module) !== 'undefined') {
module.exports = instance;
}
else {
window['Pomo'] = instance;
}
})(this);

File diff suppressed because one or more lines are too long

View File

@ -11,6 +11,7 @@ include("language.php");
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Halcyon</title>
<link rel="shortcut icon" href="/assets/images/favicon.ico">
<link rel="gettext" type="text/x-gettext-translation" href="/locale/<?=$locale?>/LC_MESSAGES/messages.po">
<link rel="stylesheet" href="/assets/css/style.css" media="all">
<link rel="stylesheet" href="/assets/css/fontawesome.min.css" media="all">
<link rel="stylesheet" href="/assets/css/emojipicker.css" media="all">
@ -25,10 +26,14 @@ include("language.php");
<script src="/assets/js/emojipicker/emojipicker.js"></script>
<script src="/assets/js/halcyon/halcyonTemplates.js"></script>
<script src="/assets/js/halcyon/halcyonUI.js"></script>
<script src="/assets/js/pomo/pomo.min.js"></script>
<script src="/assets/js/pomo/pomo.js"></script>
<script src="/assets/js/twemoji/twemoji.min.js"></script>
<script src="/assets/js/clipboard.js/clipboard.min.js"></script>
<script>
if(!localStorage.getItem("current_id") | !localStorage.getItem("current_instance") | !localStorage.getItem("current_authtoken")) {
location.href = "/login";
}
else {
Pomo.domain = 'messages';
Pomo.returnStrings = true;
Pomo.unescapeStrings = true;
@ -37,10 +42,15 @@ format:'po',
mode:'link',
translation_domain:'messages'
});
if(!localStorage.getItem("current_id") | !localStorage.getItem("current_instance") | !localStorage.getItem("current_authtoken")) {
location.href = "/login";
var __ = (function(){
var _ = !!window.Pomo? window.Pomo : (!!window.__Pomo? window.__Pomo: false);
var gettext_wrap = function(word, options){return _.getText(word, options)};
gettext_wrap = !!_? gettext_wrap: false;
if(!gettext_wrap){
throw new "Pomo can't be found";
}
else {
return gettext_wrap;
})();
if($.cookie("session") === "true") {
refreshApp();
}
@ -85,13 +95,6 @@ resetApp();
</li>
</ul>
</nav>
<div class="header_center_box">
<h1 class="header_nav_item mastodon_logo logo_box">
<a href="/">
<img src="/assets/images/mastodon.svg" alt="Halcyon for Mastodon">
</a>
</h1>
</div>
<nav class="header_right_box">
<ul class="header_nav_list">
<li class="header_nav_item serch_form_wrap">

View File

@ -1,27 +1,30 @@
<?php
$config = parse_ini_file(__DIR__.'/config/config.ini',true);
$locale = '';
if(isset($_COOKIE['lang'])) $locale = $_COOKIE['lang'];
else $locale = Locale::acceptFromHttp($_SERVER['HTTP_ACCEPT_LANGUAGE']);
if(!file_exists(__DIR__.'/locale/'.$locale)) {
$locale = $config['App']['default_language'];
if(isset($_COOKIE['language'])) $locale = $_COOKIE['language'];
else {
$langcode = Locale::acceptFromHttp($_SERVER['HTTP_ACCEPT_LANGUAGE']);
if(file_exists(__DIR__.'/locale/'.$langcode)) $locale = langcode;
else if(file_exists(__DIR__.'/locale/'.explode("_",$langcode)[0])) $locale = explode("_",$langcode)[0];
else $locale = $config['App']['default_language'];
}
if(function_exists("putenv")) {
putenv('LC_ALL='.$locale);
}
if(!setlocale(LC_ALL,$locale)) setlocale(LC_ALL,'0');
if(!setlocale(LC_ALL,$locale)) {
if(!setlocale(LC_ALL,$locale.".UTF-8")) setlocale(LC_ALL,0);
}
bindtextdomain('messages',__DIR__.'/locale');
bind_textdomain_codeset('messages','UTF-8');
textdomain('messages');
if(!function_exists('gettext')) {
function gettext($context,$msgid) {
if(!function_exists('pgettext')) {
function pgettext($context,$msgid) {
$contextString = "{$context}\004{$msgid}";
$translation = _($contextString);
if($translation == $contextString) return $msgid;
else return $translation;
}
}
$lang = explode('_',$locale);
if(count($lang)==2) $lang = $lang[0];
else $lang = 'en';
if(strstr($locale,"_")) $lang = explode('_',$locale)[0];
else $lang = $locale;
?>

BIN
locale/de_DE/messages.mo Normal file

Binary file not shown.

540
locale/de_DE/messages.po Normal file
View File

@ -0,0 +1,540 @@
# Niklas Poslovski <ni.pos@yandex.com>, 2018. #zanata
msgid ""
msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Project-Id-Version: \n"
"POT-Creation-Date: \n"
"MIME-Version: 1.0\n"
"PO-Revision-Date: 2018-08-03 01:06+0000\n"
"Last-Translator: YouDont Havetoknow <raizpapa@gmail.com>\n"
"Language-Team: German\n"
"Language: de\n"
"X-Generator: Zanata 4.5.0\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
msgid "Language"
msgstr "Sprache"
msgid "Language_en_US"
msgstr "Englisch"
msgid "Language_de_DE"
msgstr "Deutsch"
msgid "Language_ja_JP"
msgstr "Japanisch"
msgid "Language_ko_KR"
msgstr "Koreanisch"
msgid "Language_pt_BR"
msgstr "Portugiesisch"
msgid "Sensitive content"
msgstr "Sensitiver Inhalt"
msgid "Click to view"
msgstr "Klicken zum Anzeigen"
msgid "SHOW MORE"
msgstr "ZEIGE MEHR"
msgid "SHOW LESS"
msgstr "ZEIGE WENIGER"
msgid "Public"
msgstr "Öffentlich"
msgid "Unlisted"
msgstr "Ungelistet"
msgid "Followers-only"
msgstr "Nur für Follower"
msgid "Direct"
msgstr "Direkt"
msgid "Delete Toot"
msgstr "Toot löschen"
msgid "Unpin Toot"
msgstr "Toot unpinnen"
msgid "Pin Toot"
msgstr "Toot anpinnen"
msgid "Mute"
msgstr "Stummschalten"
msgid "Block"
msgstr "Blocken"
msgid "Report this Toot"
msgstr "Toot melden"
msgid "Copy link to Toot"
msgstr "Link zum Toot kopieren"
msgid "View original"
msgstr "Original anzeigen"
msgid "Boosted"
msgstr "Geteilt"
msgid "Pinned Toot"
msgstr "Angepinnter Toot"
msgid "favourited Your Toot"
msgstr "hat deinen Toot favorisiert"
msgid "boosted Your Toot"
msgstr "hat deinen Toot geteilt"
msgid "followed you"
msgstr "folgt dir jetzt"
msgid "Follow"
msgstr "Folgen"
msgid "Toot your reply"
msgstr "Toote deine Antwort"
msgid "Reply"
msgstr "Antwort"
msgid "Content warning"
msgstr "Inhalts-Warnung"
msgid "Jan"
msgstr "Jan."
msgid "Feb"
msgstr "Feb."
msgid "Mar"
msgstr "Mär."
msgid "Apr"
msgstr "Apr."
msgid "May"
msgstr "Mai"
msgid "Jun"
msgstr "Jun."
msgid "Jul"
msgstr "Jul."
msgid "Aug"
msgstr "Aug."
msgid "Sep"
msgstr "Sep."
msgid "Oct"
msgstr "Okt."
msgid "Nov"
msgstr "Nov."
msgid "Dec"
msgstr "Dez."
msgid "Changed setting to"
msgstr "Einstellung geändert zu"
msgid "Mark as NSFW by default enabled"
msgstr "Standardmäßig als NSFW markieren an"
msgid "Mark as NSFW by default disabled"
msgstr "Standardmäßig als NSFW markieren aus"
msgid "Who to follow enabled"
msgstr "Wem könnte ich folgen aktivieren"
msgid "Who to follow disabled"
msgstr "Wem könnte ich folgen deaktivieren"
msgid "Changed about me setting"
msgstr "Über mich-Einstellung geändert"
msgid "Uploaded new avatar"
msgstr "Neuen Avatar hochgeladen"
msgid "Uploaded new header"
msgstr "Neuen Header hochgeladen"
msgid "Account locked"
msgstr "Account gesperrt"
msgid "Account unlocked"
msgstr "Account entsperrt"
msgid "Link previews enabled"
msgstr "Link-Vorschauen aktiviert"
msgid "Link previews disabled"
msgstr "Link-Vorschauen deaktiviert"
msgid "You didn't allow notifications"
msgstr "Du hast Benachrichtigungen nicht erlaubt"
msgid "Desktop notifications enabled"
msgstr "Desktop-Benachrichtigungen aktiviert"
msgid "Desktop notifications disabled"
msgstr "Desktop-Benachrichtigungen deaktiviert"
msgid "Replies shown"
msgstr "Antworten werden angezeigt"
msgid "Replies hidden"
msgstr "Antworten versteckt"
msgid "CW content shown"
msgstr "CW Inhalte angezeigt"
msgid "CW content hidden"
msgstr "CW Inhalte verborgen"
msgid "NSFW content shown"
msgstr "NSFW-Inhalte werden angezeigt"
msgid "NSFW content hidden"
msgstr "NSFW-Inhalte versteckt"
msgid "Reply to"
msgstr "Antwort an"
msgid "Report"
msgstr "Melden"
msgid "Report a Toot of"
msgstr "Melde einen Toot von"
msgid "What's happening?"
msgstr "Was ist los?"
msgid "Toot"
msgstr "Toot"
msgid "Compose new Toot"
msgstr "Neuen Toot schreiben"
msgid "Please describe what the problem with the Toot is."
msgstr "Bitte beschreibe, was das Problem an dem Toot ist."
msgid "TOOTS"
msgstr "TOOTS"
msgid "PEOPLE"
msgstr "LEUTE"
msgid "Settings"
msgstr "Einstellungen"
msgid "GENERAL"
msgstr "ALLGEMEIN"
msgid "PROFILE"
msgstr "PROFIL"
msgid "APPEARANCE"
msgstr "AUSSEHEN"
msgid "Change instance"
msgstr "Instanz wechseln"
msgid "Blank for default"
msgstr "Leer lassen für Standardeinstellung"
msgid "FOLLOWING"
msgstr "FOLGT"
msgid "Interesting accounts of devs"
msgstr "Interessante Accounts von Entwickler_innen"
msgid "Halcyon for"
msgstr "Halcyon für"
msgid "About"
msgstr "Über"
msgid "Terms"
msgstr "Benutzungsbedingungen"
msgid "Apps"
msgstr "Apps"
msgid "Source code"
msgstr "Quellcode"
msgid "Other instances"
msgstr "Andere Instanzen"
msgid "Privacy policy"
msgstr "Datenschutzerklärung"
msgid "Version"
msgstr "Version"
msgid "Who to follow"
msgstr "Wem könnte ich folgen"
msgid "Enable who to follow"
msgstr "Wem könnte ich folgen aktivieren"
msgid ""
"Halcyon needs to connect to an external server to get a list of users which "
"have similar interests as you. If you want to use this feature, please opt-"
"in."
msgstr ""
"Halcyon muss sich mit einem anderen Server verbinden, um eine Liste von "
"User_innen mit ähnlichen Interessen zu erhalten. Wenn du diese Funktion "
"verwenden willst, aktiviere sie bitte."
msgid "MORE"
msgstr "MEHR"
msgid "FOLLOWERS"
msgstr "FOLGENDE"
msgid "Following"
msgstr "Folgt"
msgid "You'll no longer receive notifications from this user"
msgstr "Du wirst von diesem Account keine Benachrichtigungen mehr erhalten."
msgid "Unmuted this user"
msgstr "Account nicht mehr stummgeschalten"
msgid "This user has been blocked"
msgstr "Dieser Account wurde geblockt"
msgid "Unblocked this user"
msgstr "Account nicht mehr geblockt"
msgid "Your Toot has been deleted"
msgstr "Dein Toot wurde gelöscht"
msgid "Your Toot has been pinned"
msgstr "Dein Toot wurde angepinnt"
msgid "Your Toot has been unpinned"
msgstr "Dein Toot wurde ungepinnt."
msgid "Edit profile"
msgstr "Profil bearbeiten"
msgid "FAVOURITES"
msgstr "FAVORITEN"
msgid "Show"
msgstr "Anzeigen"
msgid "Blocking"
msgstr "Blockiert"
msgid "Muting"
msgstr "Stummgeschaltet"
msgid "Requested"
msgstr "Angefragt"
msgid "Photos and toots"
msgstr "Fotos und Toots"
msgid "favourited your toot"
msgstr "hat deinen Toot favorisiert"
msgid "boosted your toot"
msgstr "hat deinen Toot geteilt"
msgid "mentioned you"
msgstr "hat dich erwähnt"
msgid "Your Toot was posted!"
msgstr "Dein Toot wurde gepostet!"
msgid "News"
msgstr "Neuigkeiten"
msgid "Source"
msgstr "Quellcode"
msgid "Privacy"
msgstr "Privatsphäre"
msgid "Imprint"
msgstr "Impressum"
msgid "Contact"
msgstr "Kontakt"
msgid "Login"
msgstr "Anmelden"
msgid "Login to Halcyon"
msgstr "Bei Halcyon anmelden"
msgid "create an account"
msgstr "Account erstellen"
msgid "or"
msgstr "oder"
msgid "I agree with the"
msgstr "Ich bin einverstanden mit den"
msgid "What is Halcyon"
msgstr "Was ist Halcyon"
msgid ""
"which aims to recreate the simple and beautiful user interface of Twitter "
"while keeping all advantages of decentral networks in focus."
msgstr ""
"dessen Ziel es ist, die einfache und schöne Oberfläche von Twitter "
"nachzubauen, während es all die Vorteile dezentraler Netzwerke im Blick "
"behält."
msgid "Halcyon is a webclient for"
msgstr "Halcyon ist eine Webanwendung für"
msgid "Contact / Feedback"
msgstr "Kontakt / Feedback"
msgid "Use my contact form"
msgstr "Verwende mein Kontaktformular"
msgid "Help us"
msgstr "Hilf uns"
msgid "Halcyon Terms of Use"
msgstr "Nutzungsbedingungen für Halcyon"
msgid ""
"This terms of use agreement is for the users of web service Halcyon for "
"Mastodon and Pleroma (Halcyon for short) hosted at"
msgstr ""
"Diese Nutzungsbedingungen sind für die Benutzer des Webdienstes Halcyon für "
"Mastodon und Pleroma (Kurz Halcyon) gehostet bei"
msgid "Your Reply was posted!"
msgstr "Deine Antwort wurde gesendet!"
msgid "Toot reported successfully!"
msgstr "Toot erfolgreich gemeldet!"
msgid "Link successfully copied!"
msgstr "Link kopiert!"
msgid "Home"
msgstr "Startseite"
msgid "Local"
msgstr "Lokal"
msgid "Federated"
msgstr "Föderiert"
msgid "Notifications"
msgstr "Benachrichtigungen"
msgid "Search Mastodon"
msgstr "Durchsuche Mastodon"
msgid "View profile"
msgstr "Profil ansehen"
msgid "Log out"
msgstr "Ausloggen"
msgid "All"
msgstr "Alle"
msgid "new notitification"
msgstr "neue Benachrichtigung"
msgid "Show all NSFW content"
msgstr "NSFW Inhalte automatisch anzeigen"
msgid "Show all CW content"
msgstr "CW Inhalte automatisch anzeigen"
msgid "Show replies"
msgstr "Antworten anzeigen"
msgid "Desktop notifications"
msgstr "Desktopbenachrichtigungen"
msgid "Enable link previews"
msgstr "Link Vorschau aktivieren"
msgid "Auto update"
msgstr "Automatisch laden"
msgid "Manual update"
msgstr "Manuell laden"
msgid "Appearance settings"
msgstr "Anzeige-Einstellungen"
msgid "New posts streaming"
msgstr "Neue Posts"
msgid "replies"
msgstr "Antworten"
msgid "General settings"
msgstr "Allgemeine Einstellungen"
msgid "Default post privacy"
msgstr "Standard Beitragssichtbarkeit"
msgid "Mark as NSFW by default"
msgstr "Standardmäßig als NSFW markieren"
msgid "Media"
msgstr "Medien"
msgid "FOLLOWS YOU"
msgstr "FOLGT DIR"
msgid "Local instance"
msgstr "Lokale Instanz"
msgid "Hashtag search filter"
msgstr "Hashtag Suchfilter"
msgid "All instances"
msgstr "Alle Instanzen"
msgid "Local only"
msgstr "Nur lokal"
msgid "Lock account"
msgstr "Account sperren"
msgid "Header"
msgstr "Header"
msgid "Avatar"
msgstr "Avatar"
msgid "About me"
msgstr "Über mich"
msgid "Display name"
msgstr "Anzeigename"
msgid "Profile settings"
msgstr "Profileinstellungen"
msgid "Toots"
msgstr "Toots"
msgid "Favourites"
msgstr "Favoriten"

Binary file not shown.

View File

@ -1,487 +0,0 @@
msgid ""
msgstr ""
"PO-Revision-Date: 2018-06-07 06:53+0000\n"
"Last-Translator: Halcyon Project <support@nikisoft.one>\n"
"Language-Team: English (United States) Halcyon Project"
"halcyon/web/en_US/>\n"
"Language: en_US\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 3.0\n"
msgid "Language"
msgstr "Language"
msgid "Language_de_DE"
msgstr "Deutsch"
msgid "Language_en_US"
msgstr "English(US)"
msgid "Language_ja_JP"
msgstr "&#26085;&#26412;&#35486;"
msgid "Language_ko_KR"
msgstr "&#54620;&#44397;&#50612;"
msgid "Login"
msgstr "Login"
msgid "News"
msgstr "News"
msgid "Source"
msgstr "Source/Issue"
msgid "Terms"
msgstr "Terms"
msgid "Contact"
msgstr "Contact"
msgid "Login to Halcyon"
msgstr "Login to Halcyon"
msgid "or"
msgstr "or"
msgid "create an account"
msgstr "create an account"
msgid "I agree with the Terms"
msgstr "I agree with the <a href='/terms'>Terms</a>"
msgid "What is Halcyon"
msgstr "What is Halcyon"
msgid "Halcyon is standard Twitter like client of Mastodon, And you can use it just by login to your instance. Let's Toot like a tweet."
msgstr "Halcyon is standard <span style='font-weight: bold'>Twitter like client</span> of Mastodon, And you can use it just by login to your instance. Let's Toot like a tweet."
msgid "Contact / Feedback"
msgstr "Contact / Feedback"
msgid "Halcyon Terms of Use"
msgstr "Halcyon Terms of Use"
msgid "This terms of use agreement is for the users of web service Halcyon for Mastodon (Halcyon for short) hosted at"
msgstr "This terms of use agreement is for the users of web service Halcyon for Mastodon (Halcyon for short) hosted at"
msgid "Home"
msgstr "Home"
msgid "Local"
msgstr "Local"
msgid "Federated"
msgstr "Federated"
msgid "Notifications"
msgstr "Notifications"
msgid "Search Mastodon"
msgstr "Search Mastodon"
msgid "View profile"
msgstr "View profile"
msgid "Settings"
msgstr "Settings"
msgid "Log out"
msgstr "Log out"
msgid "Toot"
msgstr "Toot"
msgid "TOOTS"
msgstr "TOOTS"
msgid "FOLLOWING"
msgstr "FOLLOWING"
msgid "FOLLOWERS"
msgstr "FOLLOWERS"
msgid "Preferences"
msgstr "Preferences"
msgid "SHOW"
msgstr "SHOW"
msgid "HIDE"
msgstr "HIDE"
msgid "New posts streaming"
msgstr "New posts streaming"
msgid "Default post privacy"
msgstr "Default post privacy"
msgid "Local instance"
msgstr "Local instance"
msgid "Hashtag search filter"
msgstr "Hashtag search filter"
msgid "HASHTAG"
msgstr "HASHTAG"
msgid "What's happening?"
msgstr "What's happening?"
msgid "Content warning"
msgstr "Content warning"
msgctxt "TootForm"
msgid "Public"
msgstr "Public"
msgctxt "TootForm"
msgid "Unlisted"
msgstr "Unlisted"
msgctxt "TootForm"
msgid "Followers-only"
msgstr "Followers-only"
msgctxt "TootForm"
msgid "Direct"
msgstr "Direct"
msgid "View new Toots"
msgstr "View <span></span> new Toots"
msgid "About this instance"
msgstr "About this instance"
msgid "Terms this instance"
msgstr "Terms this instance"
msgid "Other instances"
msgstr "Other instances"
msgid "Follow"
msgstr "Follow"
msgid "Auto update"
msgstr "Auto update"
msgid "Manual update"
msgstr "Manual update"
msgctxt "Option"
msgid "Public"
msgstr "Public"
msgctxt "Option"
msgid "Unlisted"
msgstr "Unlisted"
msgctxt "Option"
msgid "Followers-only"
msgstr "Followers-only"
msgctxt "Option"
msgid "Direct"
msgstr "Direct"
msgid "All instances"
msgstr "All instances"
msgid "Local only"
msgstr "Local only"
msgid "All"
msgstr "All"
msgid "View new notitification"
msgstr "View <span></span> new notitification"
msgid "boosted Your Toot"
msgstr "boosted Your Toot"
msgid "favourited Your Toot"
msgstr "favourited Your Toot"
msgid "followed you"
msgstr "followed you"
msgid "Boosted"
msgstr "Boosted"
msgid "SHOW MORE"
msgstr "SHOW MORE"
msgid "SHOW LESS"
msgstr "SHOW LESS"
msgid "Toots"
msgstr "Toots"
msgid "Toots &amp; replies"
msgstr "Toots &amp; replies"
msgid "Media"
msgstr "Media"
msgid "FOLLOWS YOU"
msgstr "FOLLOWS YOU"
msgid "Photos and toots"
msgstr "Photos and toots"
msgid "Reply"
msgstr "Reply"
msgid "Edit profile"
msgstr "Edit profile"
msgid "Compose new Toot"
msgstr "Compose new Toot"
msgid "PEOPLE"
msgstr "PEOPLE"
msgid "FAVOURITES"
msgstr "FAVOURITES"
msgid "Show"
msgstr "Show"
msgid "Following"
msgstr "Following"
msgid "Shortcut key"
msgstr "Shortcut key"
msgid "Open the toot form"
msgstr "Open the toot form"
msgid "Move focus to search field"
msgstr "Move focus to search field"
msgid "Toot in toot form"
msgstr "Toot in toot form"
msgid "Switch to home time line"
msgstr "Switch to home time line"
msgid "Switch to local time line"
msgstr "Switch to local time line"
msgid "Switch to federated time line"
msgstr "Switch to federated time line"
msgid "Switch to notifications"
msgstr "Switch to notifications"
msgid "Switch to favourites"
msgstr "Switch to favourites"
msgid "Open this guide"
msgstr "Open this guide"
msgid "Copy link to Toot"
msgstr "Copy link to Toot"
msgid "Delete Toot"
msgstr "Delete Toot"
msgid "View original"
msgstr "View original"
msgid "Sensitive content"
msgstr "Sensitive content"
msgid "Click to view"
msgstr "Click to view"
msgid "Auto-play animated GIFs"
msgstr "Auto-play animated GIFs"
msgid "Yes"
msgstr "Yes"
msgid "No"
msgstr "No"
msgid "Changed setting to"
msgstr "Changed setting to ${val}"
msgid "Exist new Toot."
msgstr "Exist new Toot."
msgid "Boost & Favorite"
msgstr "Boost & Favorite"
msgid "Enable link previews"
msgstr "Enable link previews"
msgctxt "Option"
msgid "true"
msgstr "enabled"
msgctxt "Option"
msgid "false"
msgstr "disabled"
msgid "Desktop notifications"
msgstr "Desktop notifications"
msgid "You didn't allow notifications"
msgstr "You didn't allow notifications"
msgid "favourited your toot"
msgstr "${name} favourited your toot"
msgid "boosted your toot"
msgstr "${name} boosted your toot"
msgid "followed your account"
msgstr "${name} followed you"
msgid "mentioned you"
msgstr "${name} mentioned you"
msgid "Recently Used"
msgstr "Recently Used"
msgid "Search Results"
msgstr "Search Results"
msgid "Search..."
msgstr "Search..."
msgid "Custom"
msgstr "Custom"
msgid "People"
msgstr "People"
msgid "Nature"
msgstr "Nature"
msgid "Food"
msgstr "Food"
msgid "Activities"
msgstr "Activities"
msgid "Travel & Places"
msgstr "Travel & Places"
msgid "Objects"
msgstr "Objects"
msgid "Symbols"
msgstr "Symbols"
msgid "Flags"
msgstr "Flags"
msgctxt "Notifications"
msgid "Direct"
msgstr "Direct"
msgid "Your Toot has been deleted"
msgstr "Your Toot has been deleted"
msgid "Your Toot was posted!"
msgstr "Your Toot was posted!"
msgid "Your Reply was posted!"
msgstr "Your Reply was posted!"
msgid "Reply to"
msgstr "Reply to ${val}"
msgid "Toot your reply"
msgstr "Toot your reply"
msgid "Copy to draft"
msgstr "Copy to draft"
msgid "Move to draft"
msgstr "Move to draft"
msgid "Delete draft"
msgstr "Delete draft"
msgid "Replace toot"
msgstr "Replace toot"
msgid "General settings"
msgstr "General settings"
msgid "Profile settings"
msgstr "Profile settings"
msgid "Appearance settings"
msgstr "Appearance settings"
msgid "GENERAL"
msgstr "GENERAL"
msgid "PROFILE"
msgstr "PROFILE"
msgid "APPEARANCE"
msgstr "APPEARANCE"
msgid "Show replies"
msgstr "Show replies"
msgid "Mark as NSFW by default"
msgstr "Mark as NSFW by default"
msgid "Display name"
msgstr "Display name"
msgid "About me"
msgstr "About me"
msgid "Avatar"
msgstr "Avatar"
msgid "Header"
msgstr "Header"
msgid "Lock account"
msgstr "Lock account"
msgid "Select file and upload"
msgstr "Select file and upload"
msgid "Changed about me setting"
msgstr "Changed about me setting"
msgid "Uploaded new avatar"
msgstr "Uploaded new avatar"
msgid "Uploaded new header"
msgstr "Uploaded new header"
msgid "Account locked"
msgstr "Account locked"
msgid "Account unlocked"
msgstr "Account unlocked"
msgid "Apps"
msgstr "Apps"
msgid "Translation"
msgstr "Translation"
msgid "Image size on timeline"
msgstr "Image size on timeline"
msgctxt "Option"
msgid "Normal"
msgstr "Normal"
msgctxt "Option"
msgid "Low"
msgstr "Low"

BIN
locale/en_US/messages.mo Normal file

Binary file not shown.

539
locale/en_US/messages.po Normal file
View File

@ -0,0 +1,539 @@
# Niklas Poslovski <ni.pos@yandex.com>, 2018. #zanata
msgid ""
msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Project-Id-Version: \n"
"POT-Creation-Date: \n"
"MIME-Version: 1.0\n"
"PO-Revision-Date: 2018-08-01 03:42+0000\n"
"Last-Translator: Copied by Zanata <copied-by-zanata@zanata.org>\n"
"Language-Team: English\n"
"Language: en\n"
"X-Generator: Zanata 4.5.0\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
msgid "Language"
msgstr "Language"
msgid "Language_en_US"
msgstr "English (US)"
msgid "Language_de_DE"
msgstr "German"
msgid "Language_ja_JP"
msgstr "Japanese"
msgid "Language_ko_KR"
msgstr "Korean"
msgid "Language_pt_BR"
msgstr "Portuguese (Brazil)"
msgid "Sensitive content"
msgstr "Sensitive content"
msgid "Click to view"
msgstr "Click to view"
msgid "SHOW MORE"
msgstr "SHOW MORE"
msgid "SHOW LESS"
msgstr "SHOW LESS"
msgid "Public"
msgstr "Public"
msgid "Unlisted"
msgstr "Unlisted"
msgid "Followers-only"
msgstr "Followers-only"
msgid "Direct"
msgstr "Direct"
msgid "Delete Toot"
msgstr "Delete Toot"
msgid "Unpin Toot"
msgstr "Unpin Toot"
msgid "Pin Toot"
msgstr "Pin Toot"
msgid "Mute"
msgstr "Mute"
msgid "Block"
msgstr "Block"
msgid "Report this Toot"
msgstr "Report this Toot"
msgid "Copy link to Toot"
msgstr "Copy link to Toot"
msgid "View original"
msgstr "View original"
msgid "Boosted"
msgstr "Boosted"
msgid "Pinned Toot"
msgstr "Pinned Toot"
msgid "favourited Your Toot"
msgstr "favourited Your Toot"
msgid "boosted Your Toot"
msgstr "boosted Your Toot"
msgid "followed you"
msgstr "followed you"
msgid "Follow"
msgstr "Follow"
msgid "Toot your reply"
msgstr "Toot your reply"
msgid "Reply"
msgstr "Reply"
msgid "Content warning"
msgstr "Content warning"
msgid "Jan"
msgstr "Jan"
msgid "Feb"
msgstr "Feb"
msgid "Mar"
msgstr "Mar"
msgid "Apr"
msgstr "Apr"
msgid "May"
msgstr "May"
msgid "Jun"
msgstr "Jun"
msgid "Jul"
msgstr "Jul"
msgid "Aug"
msgstr "Aug"
msgid "Sep"
msgstr "Sep"
msgid "Oct"
msgstr "Oct"
msgid "Nov"
msgstr "Nov"
msgid "Dec"
msgstr "Dec"
msgid "Changed setting to"
msgstr "Changed setting to"
msgid "Mark as NSFW by default enabled"
msgstr "Mark as NSFW by default enabled"
msgid "Mark as NSFW by default disabled"
msgstr "Mark as NSFW by default disabled"
msgid "Who to follow enabled"
msgstr "Who to follow enabled"
msgid "Who to follow disabled"
msgstr "Who to follow disabled"
msgid "Changed about me setting"
msgstr "Changed about me setting"
msgid "Uploaded new avatar"
msgstr "Uploaded new avatar"
msgid "Uploaded new header"
msgstr "Uploaded new header"
msgid "Account locked"
msgstr "Account locked"
msgid "Account unlocked"
msgstr "Account unlocked"
msgid "Link previews enabled"
msgstr "Link previews enabled"
msgid "Link previews disabled"
msgstr "Link previews disabled"
msgid "You didn't allow notifications"
msgstr "You didn't allow notifications"
msgid "Desktop notifications enabled"
msgstr "Desktop notifications enabled"
msgid "Desktop notifications disabled"
msgstr "Desktop notifications disabled"
msgid "Replies shown"
msgstr "Replies shown"
msgid "Replies hidden"
msgstr "Replies hidden"
msgid "CW content shown"
msgstr "CW content shown"
msgid "CW content hidden"
msgstr "CW content hidden"
msgid "NSFW content shown"
msgstr "NSFW content shown"
msgid "NSFW content hidden"
msgstr "NSFW content hidden"
msgid "Reply to"
msgstr "Reply to"
msgid "Report"
msgstr "Report"
msgid "Report a Toot of"
msgstr "Report a Toot of"
msgid "What's happening?"
msgstr "What's happening?"
msgid "Toot"
msgstr "Toot"
msgid "Compose new Toot"
msgstr "Compose new Toot"
msgid "Please describe what the problem with the Toot is."
msgstr "Please describe what the problem with the Toot is."
msgid "TOOTS"
msgstr "TOOTS"
msgid "PEOPLE"
msgstr "PEOPLE"
msgid "Settings"
msgstr "Settings"
msgid "GENERAL"
msgstr "GENERAL"
msgid "PROFILE"
msgstr "PROFILE"
msgid "APPEARANCE"
msgstr "APPEARANCE"
msgid "Change instance"
msgstr "Change instance"
msgid "Blank for default"
msgstr "Blank for default"
msgid "FOLLOWING"
msgstr "FOLLOWING"
msgid "Interesting accounts of devs"
msgstr "Interesting accounts of devs"
msgid "Halcyon for"
msgstr "Halcyon for"
msgid "About"
msgstr "About"
msgid "Terms"
msgstr "Terms"
msgid "Apps"
msgstr "Apps"
msgid "Source code"
msgstr "Source code"
msgid "Other instances"
msgstr "Other instances"
msgid "Privacy policy"
msgstr "Privacy policy"
msgid "Version"
msgstr "Version"
msgid "Who to follow"
msgstr "Who to follow"
msgid "Enable who to follow"
msgstr "Enable who to follow"
msgid ""
"Halcyon needs to connect to an external server to get a list of users which "
"have similar interests as you. If you want to use this feature, please opt-"
"in."
msgstr ""
"Halcyon needs to connect to an external server to get a list of users which "
"have similar interests as you. If you want to use this feature, please opt-"
"in."
msgid "MORE"
msgstr "MORE"
msgid "FOLLOWERS"
msgstr "FOLLOWERS"
msgid "Following"
msgstr "Following"
msgid "You'll no longer receive notifications from this user"
msgstr "You'll no longer receive notifications from this user"
msgid "Unmuted this user"
msgstr "Unmuted this user"
msgid "This user has been blocked"
msgstr "This user has been blocked"
msgid "Unblocked this user"
msgstr "Unblocked this user"
msgid "Your Toot has been deleted"
msgstr "Your Toot has been deleted"
msgid "Your Toot has been pinned"
msgstr "Your Toot has been pinned"
msgid "Your Toot has been unpinned"
msgstr "Your Toot has been unpinned"
msgid "Edit profile"
msgstr "Edit profile"
msgid "FAVOURITES"
msgstr "FAVOURITES"
msgid "Show"
msgstr "Show"
msgid "Blocking"
msgstr "Blocking"
msgid "Muting"
msgstr "Muting"
msgid "Requested"
msgstr "Requested"
msgid "Photos and toots"
msgstr "Photos and toots"
msgid "favourited your toot"
msgstr "favourited your toot"
msgid "boosted your toot"
msgstr "boosted your toot"
msgid "mentioned you"
msgstr "mentioned you"
msgid "Your Toot was posted!"
msgstr "Your Toot was posted!"
msgid "News"
msgstr "News"
msgid "Source"
msgstr "Source"
msgid "Privacy"
msgstr "Privacy"
msgid "Imprint"
msgstr "Imprint"
msgid "Contact"
msgstr "Contact"
msgid "Login"
msgstr "Login"
msgid "Login to Halcyon"
msgstr "Login to Halcyon"
msgid "create an account"
msgstr "create an account"
msgid "or"
msgstr "or"
msgid "I agree with the"
msgstr "I agree with the"
msgid "What is Halcyon"
msgstr "What is Halcyon"
msgid ""
"which aims to recreate the simple and beautiful user interface of Twitter "
"while keeping all advantages of decentral networks in focus."
msgstr ""
"which aims to recreate the simple and beautiful user interface of Twitter "
"while keeping all advantages of decentral networks in focus."
msgid "Halcyon is a webclient for"
msgstr "Halcyon is a webclient for"
msgid "Contact / Feedback"
msgstr "Contact / Feedback"
msgid "Use my contact form"
msgstr "Use my contact form"
msgid "Help us"
msgstr "Help us"
msgid "Halcyon Terms of Use"
msgstr "Halcyon Terms of Use"
msgid ""
"This terms of use agreement is for the users of web service Halcyon for "
"Mastodon and Pleroma (Halcyon for short) hosted at"
msgstr ""
"This terms of use agreement is for the users of web service Halcyon for "
"Mastodon and Pleroma (Halcyon for short) hosted at"
msgid "Your Reply was posted!"
msgstr "Your Reply was posted!"
msgid "Toot reported successfully!"
msgstr "Toot reported successfully!"
msgid "Link successfully copied!"
msgstr "Link successfully copied!"
msgid "Home"
msgstr "Home"
msgid "Local"
msgstr "Local"
msgid "Federated"
msgstr "Federated"
msgid "Notifications"
msgstr "Notifications"
msgid "Search Mastodon"
msgstr "Search Mastodon"
msgid "View profile"
msgstr "View profile"
msgid "Log out"
msgstr "Log out"
msgid "All"
msgstr "All"
msgid "new notitification"
msgstr "new notitification"
msgid "Show all NSFW content"
msgstr "Show all NSFW content"
msgid "Show all CW content"
msgstr "Show all CW content"
msgid "Show replies"
msgstr "Show replies"
msgid "Desktop notifications"
msgstr "Desktop notifications"
msgid "Enable link previews"
msgstr "Enable link previews"
msgid "Auto update"
msgstr "Auto update"
msgid "Manual update"
msgstr "Manual update"
msgid "Appearance settings"
msgstr "Appearance settings"
msgid "New posts streaming"
msgstr "New posts streaming"
msgid "replies"
msgstr "replies"
msgid "General settings"
msgstr "General settings"
msgid "Default post privacy"
msgstr "Default post privacy"
msgid "Mark as NSFW by default"
msgstr "Mark as NSFW by default"
msgid "Media"
msgstr "Media"
msgid "FOLLOWS YOU"
msgstr "FOLLOWS YOU"
msgid "Local instance"
msgstr "Local instance"
msgid "Hashtag search filter"
msgstr "Hashtag search filter"
msgid "All instances"
msgstr "All instances"
msgid "Local only"
msgstr "Local only"
msgid "Lock account"
msgstr "Lock account"
msgid "Header"
msgstr "Header"
msgid "Avatar"
msgstr "Avatar"
msgid "About me"
msgstr "About me"
msgid "Display name"
msgstr "Display name"
msgid "Profile settings"
msgstr "Profile settings"
msgid "Toots"
msgstr "Toots"
msgid "Favourites"
msgstr "Favourites"

BIN
locale/pt_BR/messages.mo Normal file

Binary file not shown.

541
locale/pt_BR/messages.po Normal file
View File

@ -0,0 +1,541 @@
# Niklas Poslovski <ni.pos@yandex.com>, 2018. #zanata
msgid ""
msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Project-Id-Version: \n"
"POT-Creation-Date: \n"
"MIME-Version: 1.0\n"
"PO-Revision-Date: 2018-08-03 11:39+0000\n"
"Last-Translator: Anna e só <contraexemplos@gmail.com>\n"
"Language-Team: Portuguese (Brazil)\n"
"Language: pt_BR\n"
"X-Generator: Zanata 4.5.0\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
msgid "Language"
msgstr "Idioma"
msgid "Language_en_US"
msgstr "Inglês (EUA)"
msgid "Language_de_DE"
msgstr "Alemão"
msgid "Language_ja_JP"
msgstr "Japonês"
msgid "Language_ko_KR"
msgstr "Coreano"
msgid "Language_pt_BR"
msgstr "Portuguese (Brazil)"
msgid "Sensitive content"
msgstr "Conteúdo sensível"
msgid "Click to view"
msgstr "Clique para visualizar"
msgid "SHOW MORE"
msgstr "MOSTRAR MAIS"
msgid "SHOW LESS"
msgstr "MOSTRAR MENOS"
msgid "Public"
msgstr "Pública"
msgid "Unlisted"
msgstr "Não listada"
msgid "Followers-only"
msgstr "Privada"
msgid "Direct"
msgstr "Direta"
msgid "Delete Toot"
msgstr "Excluir toot"
msgid "Unpin Toot"
msgstr "Desafixar toot"
msgid "Pin Toot"
msgstr "Fixar toot"
msgid "Mute"
msgstr "Silenciar"
msgid "Block"
msgstr "Bloquear"
msgid "Report this Toot"
msgstr "Denunciar este toot"
msgid "Copy link to Toot"
msgstr "Copiar link do toot"
msgid "View original"
msgstr "Ver original"
msgid "Boosted"
msgstr "Compartilhado"
msgid "Pinned Toot"
msgstr "Toot fixado"
msgid "favourited Your Toot"
msgstr "favoritou o seu toot"
msgid "boosted Your Toot"
msgstr "compartilhou o seu toot"
msgid "followed you"
msgstr "seguiu você"
msgid "Follow"
msgstr "Seguir"
msgid "Toot your reply"
msgstr "Publicar a sua resposta"
msgid "Reply"
msgstr "Responder"
msgid "Content warning"
msgstr "Alerta de conteúdo"
msgid "Jan"
msgstr "jan"
msgid "Feb"
msgstr "fev"
msgid "Mar"
msgstr "mar"
msgid "Apr"
msgstr "abr"
msgid "May"
msgstr "mai"
msgid "Jun"
msgstr "jun"
msgid "Jul"
msgstr "jul"
msgid "Aug"
msgstr "ago"
msgid "Sep"
msgstr "set"
msgid "Oct"
msgstr "out"
msgid "Nov"
msgstr "nov"
msgid "Dec"
msgstr "dez"
msgid "Changed setting to"
msgstr "Configuração mudada para"
msgid "Mark as NSFW by default enabled"
msgstr ""
"Mídias anexadas em seus toots serão marcadas como sensíveis por padrão"
msgid "Mark as NSFW by default disabled"
msgstr ""
"Mídias anexadas em seus toots não serão marcadas como sensíveis por padrão"
msgid "Who to follow enabled"
msgstr "Recomendações de seguidores serão exibidas para você"
msgid "Who to follow disabled"
msgstr "Recomendações de seguidores não serão exibidas para você"
msgid "Changed about me setting"
msgstr "Bio atualizada"
msgid "Uploaded new avatar"
msgstr "Avatar enviado"
msgid "Uploaded new header"
msgstr "Cabeçalho enviado"
msgid "Account locked"
msgstr "A sua conta foi trancada"
msgid "Account unlocked"
msgstr "A sua conta foi destrancada"
msgid "Link previews enabled"
msgstr "A pré-visualização de links foi ativada"
msgid "Link previews disabled"
msgstr "A pré-visualização de links desativada"
msgid "You didn't allow notifications"
msgstr "Você recusou o envio de notificações"
msgid "Desktop notifications enabled"
msgstr "As notificações para desktop foram ativadas"
msgid "Desktop notifications disabled"
msgstr "As notificações para desktop foram desativadas"
msgid "Replies shown"
msgstr "Respostas exibidas"
msgid "Replies hidden"
msgstr "Respostas escondidas"
msgid "CW content shown"
msgstr "Conteúdo sensível exibido"
msgid "CW content hidden"
msgstr "Conteúdo sensível escondido"
msgid "NSFW content shown"
msgstr "Mídia sensível exibida"
msgid "NSFW content hidden"
msgstr "Mídia sensível escondida"
msgid "Reply to"
msgstr "Respondendo a"
msgid "Report"
msgstr "Denunciar"
msgid "Report a Toot of"
msgstr "Denunciar publicação de"
msgid "What's happening?"
msgstr "O que está acontecendo?"
msgid "Toot"
msgstr "Toot"
msgid "Compose new Toot"
msgstr "Compor novo toot"
msgid "Please describe what the problem with the Toot is."
msgstr "Por favor, descreva o problema com o toot."
msgid "TOOTS"
msgstr "TOOTS"
msgid "PEOPLE"
msgstr "PESSOAS"
msgid "Settings"
msgstr "Configurações"
msgid "GENERAL"
msgstr "GERAL"
msgid "PROFILE"
msgstr "PERFIL"
msgid "APPEARANCE"
msgstr "APARÊNCIA"
msgid "Change instance"
msgstr "Mudar instância"
msgid "Blank for default"
msgstr "Vazio por padrão"
msgid "FOLLOWING"
msgstr "SEGUINDO"
msgid "Interesting accounts of devs"
msgstr "Contas interessantes de desenvolvedores"
msgid "Halcyon for"
msgstr "Halcyon para"
msgid "About"
msgstr "Sobre"
msgid "Terms"
msgstr "Termos"
msgid "Apps"
msgstr "Aplicativos"
msgid "Source code"
msgstr "Código-fonte"
msgid "Other instances"
msgstr "Outras instâncias"
msgid "Privacy policy"
msgstr "Política de Privacidade"
msgid "Version"
msgstr "Versão"
msgid "Who to follow"
msgstr "Quem seguir"
msgid "Enable who to follow"
msgstr "Ativar recomendações de seguidores"
msgid ""
"Halcyon needs to connect to an external server to get a list of users which "
"have similar interests as you. If you want to use this feature, please opt-"
"in."
msgstr ""
"Halcyon precisa se conectar a um servidor externo para obter uma lista de "
"usuários que possuem os mesmos interesses que você. Se você gostaria de usar "
"essa funcionalidade, ative-a."
msgid "MORE"
msgstr "MAIS"
msgid "FOLLOWERS"
msgstr "SEGUIDORES"
msgid "Following"
msgstr "Seguindo"
msgid "You'll no longer receive notifications from this user"
msgstr "Você não irá mais receber notificações deste usuário"
msgid "Unmuted this user"
msgstr "Retirar silêncio deste usuário"
msgid "This user has been blocked"
msgstr "Este usuário foi bloqueado"
msgid "Unblocked this user"
msgstr "Desbloquear este usuário"
msgid "Your Toot has been deleted"
msgstr "O seu toot foi excluído"
msgid "Your Toot has been pinned"
msgstr "O seu toot foi fixado"
msgid "Your Toot has been unpinned"
msgstr "O seu toot foi desafixado"
msgid "Edit profile"
msgstr "Editar perfil"
msgid "FAVOURITES"
msgstr "FAVORITOS"
msgid "Show"
msgstr "Mostrar"
msgid "Blocking"
msgstr "Bloqueio"
msgid "Muting"
msgstr "SIlêncio"
msgid "Requested"
msgstr "Requisições"
msgid "Photos and toots"
msgstr "Fotos e toots"
msgid "favourited your toot"
msgstr "favoritou o seu toot"
msgid "boosted your toot"
msgstr "compartilhou o seu toot"
msgid "mentioned you"
msgstr "te mencionou"
msgid "Your Toot was posted!"
msgstr "O seu toot foi publicado!"
msgid "News"
msgstr "Notícias"
msgid "Source"
msgstr "Fonte"
msgid "Privacy"
msgstr "Privacidade"
msgid "Imprint"
msgstr "Impressão"
msgid "Contact"
msgstr "Contato"
msgid "Login"
msgstr "Entrar"
msgid "Login to Halcyon"
msgstr "Entrar em Halcyon"
msgid "create an account"
msgstr "criar uma conta"
msgid "or"
msgstr "ou"
msgid "I agree with the"
msgstr "eu concordo com os"
msgid "What is Halcyon"
msgstr "O que é o Halcyon"
msgid ""
"which aims to recreate the simple and beautiful user interface of Twitter "
"while keeping all advantages of decentral networks in focus."
msgstr ""
"tenta recriar a simples e bela interface do Twitter enquanto mantendo todas "
"as vantagens das redes decentralizadas em foco."
msgid "Halcyon is a webclient for"
msgstr "Halcyon é um cliente web para"
msgid "Contact / Feedback"
msgstr "Contato / Comentários"
msgid "Use my contact form"
msgstr "Use o meu formulário de contato"
msgid "Help us"
msgstr "Ajude-nos"
msgid "Halcyon Terms of Use"
msgstr "Termos de Uso do Halcyon"
msgid ""
"This terms of use agreement is for the users of web service Halcyon for "
"Mastodon and Pleroma (Halcyon for short) hosted at"
msgstr ""
"Este acordo de termos de uso é direcionado para usuários do serviço web "
"Halcyon para Mastodon e Pleroma (ou simplesmente Halcyon), hospedado em"
msgid "Your Reply was posted!"
msgstr "A sua resposta foi publicada!"
msgid "Toot reported successfully!"
msgstr "Toot denunciado com sucesso!"
msgid "Link successfully copied!"
msgstr "Link copiado com sucesso!"
msgid "Home"
msgstr "Página inicial"
msgid "Local"
msgstr "Local"
msgid "Federated"
msgstr "Federada"
msgid "Notifications"
msgstr "Notificações"
msgid "Search Mastodon"
msgstr "Pesquisar no Mastodon"
msgid "View profile"
msgstr "Ver perfil"
msgid "Log out"
msgstr "Sair"
msgid "All"
msgstr "Todos"
msgid "new notitification"
msgstr "nova notificação"
msgid "Show all NSFW content"
msgstr "Mostrar todo conteúdo sensível"
msgid "Show all CW content"
msgstr "Exibir toots ocultados por aviso de conteúdo"
msgid "Show replies"
msgstr "Exibir respostas"
msgid "Desktop notifications"
msgstr "Notificações no desktop"
msgid "Enable link previews"
msgstr "Habilitar pré-visualização de links"
msgid "Auto update"
msgstr "Atualização automática"
msgid "Manual update"
msgstr "Atualização manual"
msgid "Appearance settings"
msgstr "Configurações de aparência"
msgid "New posts streaming"
msgstr "Fluxo de novas postagens"
msgid "replies"
msgstr "respostas"
msgid "General settings"
msgstr "Configurações gerais"
msgid "Default post privacy"
msgstr "Privacidade padrão de postagens"
msgid "Mark as NSFW by default"
msgstr "Marcar como sensível por padrão"
msgid "Media"
msgstr "Mídia"
msgid "FOLLOWS YOU"
msgstr "SEGUE VOCÊ"
msgid "Local instance"
msgstr "Instância local"
msgid "Hashtag search filter"
msgstr "Filtro de busca por hashtags"
msgid "All instances"
msgstr "Todas as instâncias"
msgid "Local only"
msgstr "Apenas local"
msgid "Lock account"
msgstr "Trancar conta"
msgid "Header"
msgstr "Cabeçalho"
msgid "Avatar"
msgstr "Avatar"
msgid "About me"
msgstr "Sobre mim"
msgid "Display name"
msgstr "Nome de exibição"
msgid "Profile settings"
msgstr "Configurações de perfil"
msgid "Toots"
msgstr "Toots"
msgid "Favourites"
msgstr "Favoritos"

View File

@ -146,7 +146,7 @@ location.href = "/";
</div>
<h2><?=_('Contact / Feedback')?></h2>
<p>
Mastodon: <a href="https://social.csswg.org/@halcyon" target="_blank">ï¼ halcyon@social.csswg.org</a><br/>
Mastodon: <a href="https://social.csswg.org/@halcyon" target="_blank">@halcyon@social.csswg.org</a><br/>
Email: <a href="http://www.nikisoft.one/contact.php" target="_blank"><?=_('Use my contact form')?></a><br/>
Git repository: <a href="https://notabug.org/halcyon-suite/halcyon" target="_blank">halcyon-suite/halcyon</a>
</p>

View File

@ -1,6 +1,6 @@
<?php
include("header.php");
$config = parse_ini_file('../config.ini',true);
$config = parse_ini_file('../config/config.ini',true);
?>
<main id="main">
<article id="article">

View File

@ -13,10 +13,10 @@
</ul>
</header>
<div class="timeline">
<div style="float:left;width:25%;text-align:right;margin-top:16px">
<div style="float:left;width:50%;text-align:right;margin-top:16px">
<h3><?=_('New posts streaming')?></h3>
</div>
<div class="post_streaming_wrap" style="float:left;width:75%;margin-top:8px;margin-bottom:-8px">
<div class="post_streaming_wrap" style="float:left;width:50%;margin-top:8px;margin-bottom:-8px">
<div class="radiobox">
<input id="streaming-1" name="post_streaming" type="radio" value="auto">
<label for="streaming-1" class="radiotext"><?=_('Auto update')?></label>
@ -26,10 +26,10 @@
<label for="streaming-2" class="radiotext"><?=_('Manual update')?></label>
</div>
</div>
<div style="float:left;width:25%;text-align:right;margin-top:16px">
<div style="float:left;width:50%;text-align:right;margin-top:16px">
<h3><?=_('Enable link previews')?></h3>
</div>
<div class="link_previews_wrap" style="float:left;width:75%">
<div class="link_previews_wrap" style="float:left;width:50%">
<div class="switch">
<input type="checkbox" id="setting_link_previews">
<div class="switch-btn">
@ -37,10 +37,10 @@
</div>
</div>
</div>
<div style="float:left;width:25%;text-align:right;margin-top:16px">
<div style="float:left;width:50%;text-align:right;margin-top:16px">
<h3><?=_('Desktop notifications')?></h3>
</div>
<div class="desktop_notifications_wrap" style="float:left;width:75%">
<div class="desktop_notifications_wrap" style="float:left;width:50%">
<div class="switch">
<input type="checkbox" id="setting_desktop_notifications">
<div class="switch-btn">
@ -48,10 +48,10 @@
</div>
</div>
</div>
<div style="float:left;width:25%;text-align:right;margin-top:16px">
<div style="float:left;width:50%;text-align:right;margin-top:16px">
<h3><?=_('Show replies')?></h3>
</div>
<div class="show_replies_wrap" style="float:left;width:75%">
<div class="show_replies_wrap" style="float:left;width:50%">
<div class="switch">
<input type="checkbox" id="setting_show_replies">
<div class="switch-btn">
@ -59,10 +59,10 @@
</div>
</div>
</div>
<div style="float:left;width:25%;text-align:right;margin-top:16px">
<div style="float:left;width:50%;text-align:right;margin-top:16px">
<h3><?=_('Show all CW content')?></h3>
</div>
<div class="show_content_warning_wrap" style="float:left;width:75%">
<div class="show_content_warning_wrap" style="float:left;width:50%">
<div class="switch">
<input type="checkbox" id="setting_show_content_warning">
<div class="switch-btn">
@ -70,10 +70,10 @@
</div>
</div>
</div>
<div style="float:left;width:25%;text-align:right;margin-top:16px">
<div style="float:left;width:50%;text-align:right;margin-top:16px">
<h3><?=_('Show all NSFW content')?></h3>
</div>
<div class="show_nsfw_wrap" style="float:left;width:75%">
<div class="show_nsfw_wrap" style="float:left;width:50%">
<div class="switch">
<input type="checkbox" id="setting_show_nsfw">
<div class="switch-btn">

View File

@ -13,10 +13,29 @@
</ul>
</header>
<div class="timeline">
<div style="float:left;width:25%;text-align:right;margin-top:16px">
<div style="float:left;width:50%;text-align:right;margin-top:16px">
<h3><?=_('Language')?></h3>
</div>
<div class="language_wrap" style="float:left;width:50%">
<select name="language" class="selectbox">
<?php
$languages = scandir("locale");
for($i=0;$i<count($languages);$i++) {
if($languages[$i] != "." && $languages[$i] != "..") {
$selected = "";
if($languages[$i] == $locale) {
$selected = " selected";
}
echo "<option value='".$languages[$i]."'".$selected.">"._('Language_'.$languages[$i])."</option>";
}
}
?>
</select>
</div>
<div style="float:left;width:50%;text-align:right;margin-top:16px">
<h3><?=_('Default post privacy')?></h3>
</div>
<div class="post_privacy_wrap" style="float:left;width:75%;margin-top:8px;margin-bottom:-8px">
<div class="post_privacy_wrap" style="float:left;width:50%;margin-top:8px;margin-bottom:-8px">
<div class="radiobox">
<input id="privacy-1" name="post_privacy" type="radio" value="public">
<label for="privacy-1" class="radiotext"><?=_('Public')?></label>
@ -34,10 +53,10 @@
<label for="privacy-4" class="radiotext"><?=_('Direct')?></label>
</div>
</div>
<div style="float:left;width:25%;text-align:right;margin-top:16px">
<div style="float:left;width:50%;text-align:right;margin-top:16px">
<h3><?=_('Mark as NSFW by default')?></h3>
</div>
<div class="post_sensitive_wrap" style="float:left;width:75%">
<div class="post_sensitive_wrap" style="float:left;width:50%">
<div class="switch">
<input type="checkbox" id="setting_post_sensitive">
<div class="switch-btn">
@ -45,16 +64,16 @@
</div>
</div>
</div>
<div style="float:left;width:25%;text-align:right;margin-top:16px">
<div style="float:left;width:50%;text-align:right;margin-top:16px">
<h3><?=_('Local instance')?></h3>
</div>
<div class="local_instance_wrap" style="float:left;width:75%">
<div class="local_instance_wrap" style="float:left;width:50%">
<input name="local_instance" placeholder="default" type="text" class="disallow_enter textfield" id="setting_local_instance">
</div>
<div style="float:left;width:25%;text-align:right;margin-top:16px">
<div style="float:left;width:50%;text-align:right;margin-top:16px">
<h3><?=_('Hashtag search filter')?></h3>
</div>
<div class="search_filter_wrap" style="float:left;width:75%;margin-top:8px;margin-bottom:-8px">
<div class="search_filter_wrap" style="float:left;width:50%;margin-top:8px;margin-bottom:-8px">
<div class="radiobox">
<input id="locinstance-1" name="search_filter" type="radio" value="all">
<label for="locinstance-1" class="radiotext"><?=_('All instances')?></label>
@ -64,10 +83,10 @@
<label for="locinstance-2" class="radiotext"><?=_('Local only')?></label>
</div>
</div>
<div style="float:left;width:25%;text-align:right;margin-top:16px">
<div style="float:left;width:50%;text-align:right;margin-top:16px">
<h3><?=_('Who to follow')?></h3>
</div>
<div class="who_to_follow_wrap" style="float:left;width:75%">
<div class="who_to_follow_wrap" style="float:left;width:50%">
<div class="switch">
<input type="checkbox" id="setting_who_to_follow">
<div class="switch-btn">

View File

@ -1,15 +1,4 @@
<?php include ('header.php'); ?>
<style>
.uploadbtn:before {
position:absolute;
left:0;
right:0;
text-align:center;
font-size:12px;
font-weight:600;
content:"Select file and upload";
}
</style>
<main id="main">
<?php include dirname(__FILE__).('/widgets/settings_header.php'); ?>
<div class="article_wrap">
@ -24,38 +13,38 @@ content:"Select file and upload";
</ul>
</header>
<div class="timeline">
<div style="float:left;width:25%;text-align:right;margin-top:16px">
<div style="float:left;width:50%;text-align:right;margin-top:16px">
<h3><?=_('Display name')?></h3>
</div>
<div class="display_name_wrap" style="float:left;width:75%">
<div class="display_name_wrap" style="float:left;width:50%">
<input name="display_name" type="text" class="disallow_enter textfield" id="setting_display_name" maxlength="30">
</div>
<div style="float:left;width:25%;text-align:right;margin-top:16px">
<div style="float:left;width:50%;text-align:right;margin-top:16px">
<h3><?=_('About me')?></h3>
</div>
<div class="about_me_wrap" style="float:left;width:75%">
<div class="about_me_wrap" style="float:left;width:50%">
<textarea name="about_me" class="disallow_enter textfield" id="setting_about_me" maxlength="160" style="resize:none;height:100px;font-family:arial;padding:5px"></textarea>
</div>
<div style="float:left;width:25%;text-align:right;margin-top:16px">
<div style="float:left;width:50%;text-align:right;margin-top:16px">
<h3><?=_('Avatar')?></h3>
</div>
<div class="avatar_wrap" style="float:left;width:75%">
<span class="halcyon_button uploadbtn" style="width:calc(50% - 2px);margin:10px;padding:0;height:28px;position:relative">
<div class="avatar_wrap" style="float:left;width:50%">
<span class="halcyon_button uploadbtn" style="width:calc(75% - 2px);margin:10px;padding:0;height:28px;position:relative">
<input name="avatar" type="file" id="setting_avatar" style="opacity:0;width:100%;height:100%;float:left">
</span>
</div>
<div style="float:left;width:25%;text-align:right;margin-top:16px">
<div style="float:left;width:50%;text-align:right;margin-top:16px">
<h3><?=_('Header')?></h3>
</div>
<div class="header_wrap" style="float:left;width:75%">
<span class="halcyon_button uploadbtn" style="width:calc(50% - 2px);margin:10px;padding:0;height:28px;position:relative">
<div class="header_wrap" style="float:left;width:50%">
<span class="halcyon_button uploadbtn" style="width:calc(75% - 2px);margin:10px;padding:0;height:28px;position:relative">
<input name="header" type="file" id="setting_header" style="opacity:0;width:100%;height:100%;float:left">
</span>
</div>
<div style="float:left;width:25%;text-align:right;margin-top:16px">
<div style="float:left;width:50%;text-align:right;margin-top:16px">
<h3><?=_('Lock account')?></h3>
</div>
<div class="lock_account_wrap" style="float:left;width:75%">
<div class="lock_account_wrap" style="float:left;width:50%">
<div class="switch">
<input type="checkbox" id="setting_lock_account">
<div class="switch-btn">

View File

@ -1 +1 @@
1.2.6
2.0.0