diff --git a/js/interface_common.js b/js/interface_common.js
index 64a88f1..1690572 100644
--- a/js/interface_common.js
+++ b/js/interface_common.js
@@ -125,6 +125,9 @@ function openProfileModal(e)
unfollow(username);
});
};
+
+ $(".tox-ctc").attr("title", polyglot.t("Copy to clipboard"));
+ $(".bitmessage-ctc").attr("title", polyglot.t("Copy to clipboard"));
}
function newHashtagModal(hashtag) {
@@ -1058,7 +1061,7 @@ function convert2Unicodes(s, ta)
if (ta.data("unicodeConversionStack").length > 0)
{
var ub = ta.closest(".post-area-new").find(".undo-unicode");
- ub.text("undo: " + ta.data("unicodeConversionStack")[0].u);
+ ub.text(polyglot.t("undo") + ": " + ta.data("unicodeConversionStack")[0].u);
$.MAL.enableButton(ub);
}
else
@@ -1102,7 +1105,7 @@ function undoLastUnicode(e) {
}
if ($ta.data("unicodeConversionStack").length > 0)
- $(this).text("undo: " + $ta.data("unicodeConversionStack")[0].u);
+ $(this).text(polyglot.t("undo") + ": " + $ta.data("unicodeConversionStack")[0].u);
else
{
$(this).text("undo");
diff --git a/js/interface_localization.js b/js/interface_localization.js
index bbd1981..2936f53 100644
--- a/js/interface_localization.js
+++ b/js/interface_localization.js
@@ -4,7 +4,7 @@
// uses Polyglot.js ( https://github.com/airbnb/polyglot.js ) to translate interface
// translators: add your language code here such as "es" for Spanish, "ru" for Russian
-var knownLanguages = ["en","es","nl","it","fr","ru","de","zh","ja","pt-BR","tr","uk"];
+var knownLanguages = ["en","es","nl","it","fr","ru","de","zh","ja","pt-BR","tr","uk","cs"];
if( $.Options.getOption('locLang','auto') == 'auto'){
// detect language with JavaScript
@@ -226,11 +226,31 @@ if(preferredLanguage == "en"){
"follows you": "follows you",
"Show conversation": "Show conversation",
"Mark all as read": "Mark all as read",
- "show_more_count": "%{count} more...",
+ "show_more_count": "%{smart_count} more...",
"hide": "hide",
"Show more in this conversation...": "Show more in this conversation...",
"conversation_title": "Conversation of @%{username}",
- "copy_to_clipboard": "Press Ctrl/Cmd+C to copy then Enter to close"
+ "copy_to_clipboard": "Press Ctrl/Cmd+C to copy then Enter to close",
+ "Normal posts": "Normal posts",
+ "Promoted posts": "Promoted posts",
+ "Messages": "Messages",
+ "Edit profile": "Edit profile",
+ "Top Trends": "Top Trends",
+ "twisted again by": "twisted again by",
+ "undo": "undo",
+ "Are you sure you want to exit the daemon?\nThe Twister client will stop working.": "Are you sure you want to exit the daemon?\nThe Twister client will stop working.",
+ "Daemon exited...": "Daemon exited...",
+ "Secret Key": "Secret Key",
+ "Copy to clipboard": "Copy to clipboard",
+ "Full name here": "Full name here",
+ "Describe yourself": "Describe yourself",
+ "Location": "Location",
+ "website": "website",
+ "Tox address": "Tox address",
+ "Bitmessage address": "Bitmessage address",
+ "Language": "Language",
+ "Sound": "Sound",
+ "Users": "Users",
};
}
if(preferredLanguage == "es"){
@@ -1875,7 +1895,7 @@ if(preferredLanguage == "tr"){
"follows you": "seni takip ediyor",
"Show conversation": "Sohbeti göster",
"Mark all as read": "hepsini okundu olarak işaretle",
- "show_more_count": "%{count} tane daha...",
+ "show_more_count": "%{smart_count} tane daha...",
"hide": "gizle",
"Show more in this conversation...": "Sohbetin tamamını göster...",
"conversation_title": "@%{username} kullanıcısının bir sohbeti",
@@ -1883,6 +1903,230 @@ if(preferredLanguage == "tr"){
};
}
+if(preferredLanguage == "cs"){
+ polyglot.locale("cs");
+ wordset = {
+ "Actions ▼": "Akce ▼",
+ "Active DHT nodes:": "Aktivní uzly DHT: ",
+ "Add DNS": "Přidat DNS",
+ "Add peer": "Přidat uzel",
+ "ajax_error": "Ajax chyba: %{error}", // JavaScript error
+ "All users publicly followed by": "Všichni uživatelé, které veřejně sleduje",
+ "Available": "Je volná", // username is available
+ "Block chain information": "Informace o blockchainu",
+ "Block chain is up-to-date, twister is ready to use!": "Blockchain je aktuální, twister je připraven k použití!",
+ "Block generation": "Generování bloků ",
+ "Cancel": "Zrušit",
+ "Change user": "Změnit uživatele",
+ "Checking...": "Ověřuji...", // checking if username is available
+ "Collapse": "Složit", // smaller view of a post
+ "Configure block generation": "Nastavení generace bloků",
+ "Connections:": "Připojení: ", // to network
+ "Connection lost.": "Žádné připojení do sítě.",
+ "days": "%{smart_count} dnem |||| %{smart_count} dny |||| %{smart_count} dny",
+ "Detailed information": "Podrobné informace",
+ "DHT network down.": "Síť DHT je nedostupná.",
+ "Direct Messages": "Přímé zprávy",
+ "Disable": "Vypnuto",
+ "Display mentions to @": "Zobrazit zmínky o @",
+ "Display retransmissions": "Zobrazit přeposlané",
+ "DNS to obtain list of peers:": "DNS pro načtení seznamu uzlů:",
+ "downloading_block_chain": "Stahuji blockchain, prosím počkejte (blockchain je %{days} dnů starý).",
+ "download_posts_status": "Staženo %{portion} příspěvků", // Downloaded 10/30 posts
+ "Enable": "Zapnuto",
+ "error": "Chyba: %{error}",
+ "error_connecting_to_daemon": "Chyba: Nemohu se připojit k vašemu lokálnímu serveru.",
+ "Error in 'createwalletuser' RPC.": "Chyba v RPC funkci 'createwalletuser'.",
+ "Error in 'importprivkey'": "Chyba v RPC funkci 'importprivkey'. RPC: %{rpc}",
+ "Error in 'sendnewusertransaction' RPC.": "Chyba v RPC funkci 'sendnewusertransaction'.",
+ "Expand": "Rozbalit", // larger view of a post
+ "Favorite": "Přidat k oblíbeným",
+ "File APIs not supported in this browser.": "Upozornění: váš webový prohlížeč nepodporuje File API.",
+ "Follow": "Sledovat",
+ "Followed by": "tohoto uživatele sleduje",
+ "followed_by": "Uživatelé, které sleduje %{username}",
+ "Followers": "Sledující",
+ "Following": "Sledovaní",
+ "Following users": "Sledovaní uživatelé",
+ "Force connection to peer:": "Vyžádat připojení k uzlu:",
+ "General information": "Obecné informace",
+ "Generate blocks (send promoted messages)": "Generovat bloky (posílat přednostní příspěvky)",
+ "Home": "Domů", // homepage
+ "hours": "%{smart_count} hodinou |||| %{smart_count} hodinami |||| %{smart_count} hodinami",
+ "Internal error: lastPostId unknown (following yourself may fix!)": "Vnitřní chyba: neznámé lastPostId",
+ "Known peers:": "Známé uzly: ",
+ "Last block is ahead of your computer time, check your clock.": "Čas posledního bloku je popředu před časem vašeho počítače, zkontrolujte seřízení hodin.",
+ "mentions_at": "Zmínky o @%{user}",
+ "minutes": "%{smart_count} minutou |||| %{smart_count} minutami |||| %{smart_count} minutami",
+ "Must be 16 characters or less.": "Příliš dlouhé, maximum je 16 znaků.", // username
+ "Network": "Síť",
+ "Network config": "Nastavení sítě",
+ "Network status": "Stav sítě",
+ "New direct message...": "Nová přímá zpráva...",
+ "New Post...": "Nový příspěvek...",
+ "new_posts": "%{smart_count} nový příspěvek |||| %{smart_count} nové příspěvky |||| %{smart_count} nových příspěvků",
+ "nobody": "nikdo", // used to promote a post without attaching the user
+ "Not available": "Tuto přezdívku již někdo používá", // username is not available
+ "Number of blocks in block chain:": "Počet bloků v blockchainu: ",
+ "Number of CPUs to use": "Kolik jader procesoru použít? ",
+ "Only alphanumeric and underscore allowed.": "Povolena jsou jen písmena, čísla a podtržítko.",
+ "peer address": "adresa uzlu",
+ "dns address": "adresa dns",
+ "Private": "Soukromé",
+ "Profile": "Profil",
+ "Postboard": "Nástěnka",
+ "post": "vložit", // verb - button to post a message
+ "Post to promote:": "Váš přednostní příspěvek: ",
+ "Posts": "Příspěvky",
+ "propagating_nickname": "Posílám novou přezdívku %{username} do sítě...",
+ "Public": "Veřejné",
+ "Refresh": "Obnovit",
+ "retransmit_this": "Chcete tento příspěvek přeposlat těm, kdo vás sledují?",
+ "Reply": "Odpovědět",
+ "Reply...": "Odpověď...",
+ "reply_to": "Odpověď pro %{fullname}",
+ "Retransmit": "Přeposlat",
+ "Retransmits": "Přeposlání",
+ "Retransmitted by": "Přeposlal(a)",
+ "search": "hledat",
+ "seconds": "%{smart_count} vteřinou |||| %{smart_count} vteřinami |||| %{smart_count} vteřinami",
+ "send": "odeslat",
+ "Send post with username": "Příspěvek vložit pod přezdívkou ",
+ "Sent Direct Message": "Poslat přímou zprávu",
+ "Sent Post to @": "Poslat veřejný příspěvek pro @",
+ "Setup account": "Upravit profil",
+ "switch_to_network": "Váš lokální server ještě není připojen k síti, nebo teprve stahuje\n" +
+ "aktuální blockchain. Pokud zůstanete na této stránce, vaše akce možná\n" +
+ "nebudou fungovat. Chcete se místo toho podívat na stav sítě?",
+ "The File APIs are not fully supported in this browser.": "Upozornění: váš webový prohlížeč nepodporuje File API.",
+ "time_ago": "před %{time}", // 5 minutes ago
+ "Time of the last block:": "Čas posledního bloku: ",
+ "Type message here": "Sem napište příspěvek",
+ "Unfollow": "Přestat sledovat",
+ "Update": "Aktualizovat",
+ "Updating status...": "Aktualizuji stav...", // status of block chain
+ "user_not_yet_accepted": "Ostatní uzly ještě nepřijaly tohoto nového uživatele.\n" +
+ "Proto zatím není možné uložit profil nebo vkládat příspěvky.\n" +
+ "Počkejte prosím pár minut.\n\n" +
+ "Tlačítko \"Uložit změny\" bude po dokončení tohoto procesu automaticky\n" +
+ "povoleno. Slibujeme, že je to naposledy, co musíte čekat než budete moci\n"+
+ "používat twister.\n" +
+ "Tip: vyberte si mezitím svůj obrázek!",
+ "users_mentions": "Zmínky o @%{username}",
+ "users_profile": "Profil %{username}",
+ "username_undefined": "Uživatelské jméno není definováno, je třeba se přihlásit.",
+ "View": "Zobrazit",
+ "View All": "Zobrazit vše",
+ "Who to Follow": "Koho sledovat",
+ "Your message was sent!": "Vaše zpráva byla odeslána!",
+ "twister login": "přihlášení na twister",
+ "Existing local users": "Existující lokální účty",
+ "Or...": "Nebo...",
+ "Create a new user": "Vytvořit nový účet",
+ "Login": "Přihlásit",
+ "Check availability": "Ověřit dostupnost",
+ "Create this nickname": "Vytvořit tuto přezdívku",
+ "Type nickname here": "Napište sem přezdívku",
+ "Import secret key": "Importovat tajný klíč",
+ "52-characters secret": "52 znaků dlouhý tajný klíč",
+ "With nickname": "S přezdívkou",
+ "Import key": "Importovat klíč",
+ "Client Version:": "Verze klienta:",
+ "Mining difficulty:": "Obtížnost pro mining:",
+ "Block generation status": "Stav generování bloků",
+ "Current hash rate:": "Aktuální rychlost hashování:",
+ "Terminate Daemon:": "Ukončit server:",
+ "Exit": "Konec",
+ "Save Changes": "Uložit změny",
+ "Secret key:": "Tajný klíč:",
+ "You have to log in to post messages.": "Pro vkládání příspěvků je třeba se přihlásit.",
+ "You have to log in to post replies.": "Pro vkládání odpovědí je třeba se přihlásit.",
+ "You have to log in to retransmit messages.": "Pro přeposílání příspěvků je třeba se přihlásit.",
+ "You have to log in to use direct messages.": "Pro používání přímých zpráv je třeba se přihlásit.",
+ "You have to log in to follow users.": "Pro sledování jiných uživatelů je třeba se přihlásit.",
+ "You are not following anyone because you are not logged in.": "Nikoho nesledujete, protože nejste přihlášen(a).",
+ "You don't have any followers because you are not logged in.": "Nikdo vás nesleduje, protože nejste přihlášen(a).",
+ "No one can mention you because you are not logged in.": "Nikdo se o vás nemůže zmínit, protože nejste přihlášen(a).",
+ "You don't have any profile because you are not logged in.": "Nemáte žádný profil, protože nejste přihlášen(a).",
+ "Options": "Možnosti",
+ "Switch to Promoted posts": "Přepnout na přednostní příspěvky",
+ "Switch to Normal posts": "Přepnout na normální příspěvky",
+ "Use language": "Jazyk",
+ "Ignore": "Ignorovat",
+ "Theme": "Styl grafiky",
+ "Keys": "Klávesy",
+ "Sound notifications": "Zvuková upozornění",
+ "Send key": "Klávesa pro odeslání",
+ "Posts display": "Zobrazení příspěvků",
+ "Post editor": "Editor příspěvků",
+ "Inline image preview": "Náhled vložených obrázků",
+ "Display": "Zobrazit",
+ "Line feeds": "Nové řádky",
+ "Supported punctuations:": "Podporovaná znaménka:",
+ "Supported emotions:": "Podporovaní smajlíci:",
+ "Supported signs:": "Podporované značky:",
+ "Supported fractions:": "Podporované zlomky:",
+ "Automatic unicode conversion options": "Automatická konverze znaků Unicode",
+ "Convert punctuations to unicode": "Konvertovat interpunkční znaménka do Unicode",
+ "Convert emotions codes to unicode symbols": "Konvertovat smajlíky do Unicode",
+ "Convert common signs to unicode": "Konvertovat běžné značky do Unicode",
+ "Convert fractions to unicode": "Konvertovat zlomky do Unicode",
+ "Convert all": "Konvertovat vše",
+ "Auto": "Detekovat automaticky",
+ "Original": "Původní",
+ "none": "žádné",
+ "Custom": "Vlastní nastavení",
+ "Mentions": "Zmínky",
+ "Use proxy for image preview only": "Používat proxy jen pro náhledy obrázků",
+ "Use external links behind a proxy": "Otevírat externí odkazy skrze proxy server",
+ "There aren't any posts with this hashtag.": "Nebyly nalezeny žádné příspěvky s tímto štítkem.",
+ "Split only new post": "Dělit pouze nově vkládaný příspěvek",
+ "Split all": "Dělit všechny",
+ "Don't split": "Nedělit",
+ "Split long posts": "Dělení dlouhých příspěvků",
+ "Posts that begin with mention": "Příspěvky začínající zmínkou",
+ "Show all": "Ukázat všechny",
+ "Show only if I am in": "Ukázat jen když zmiňují mně",
+ "Show if it's between users I follow": "Ukázat pokud jsou posílány mezi uživateli, které sleduji",
+ "Postboard displays": "Zobrazení na nástěnce",
+ "RTs those are close to original twist": "Přeposlání blízká původnímu příspěvku",
+ "Show if the original is older than": "Ukázat pokud je už originál starší než",
+ "hour(s)": "hodin",
+ "only numbers are allowed!": "povolena jsou jen čísla!",
+ "Show with every user name": "Ukázat u každé přezdívky",
+ "Show at profile modal only": "Ukázat jen v okně profilu",
+ "Show if a user follows me": "Ukazovat, zda mně uživatel sleduje",
+ "follows you": "sleduje vás",
+ "Show conversation": "Zobrazit rozhovor",
+ "Mark all as read": "Označit všechny jako přečtené",
+ "show_more_count": "%{smart_count} další... |||| %{smart_count} další... |||| %{smart_count} dalších...",
+ "hide": "skrýt",
+ "Show more in this conversation...": "Zobrazit tento rozhovor...",
+ "conversation_title": "Rozhovor uživatele @%{username}",
+ "copy_to_clipboard": "Stiskněte Ctrl+C pro zkopírování, a pak Enter pro zavření tohoto okénka.",
+ "Normal posts": "Normální příspěvky",
+ "Promoted posts": "Přednostní příspěvky",
+ "Messages": "Zprávy",
+ "Edit profile": "Upravit profil",
+ "Top Trends": "Hlavní trendy",
+ "twisted again by": "přeposlal(a)",
+ "undo": "zpět",
+ "Are you sure you want to exit the daemon?\nThe Twister client will stop working.": "Skutečně chcete ukončit server?\nTwister tím vypnete.",
+ "Daemon exited...": "Server ukončen...",
+ "Secret Key": "Tajný klíč",
+ "Copy to clipboard": "Kopírovat do clipboardu",
+ "Full name here": "Sem patří celé jméno",
+ "Describe yourself": "Napište něco o sobě",
+ "Location": "Místo, kde žijete",
+ "website": "Webové stránky",
+ "Tox address": "Adresa pro Tox",
+ "Bitmessage address": "Adresa pro Bitmessage",
+ "Language": "Jazyk",
+ "Sound": "Zvuky",
+ "Users": "Uživatelé",
+ };
+}
+
// uncomment to see all translated words replaced with filler
//for(var word in wordset){
// wordset[word] = "AAAA";
diff --git a/js/interface_profile-edit.js b/js/interface_profile-edit.js
index eb038f5..4ae2919 100644
--- a/js/interface_profile-edit.js
+++ b/js/interface_profile-edit.js
@@ -103,18 +103,22 @@ function verifyUserAlreadyInBlockchain()
});
} else {
if( !newUserWarnDisplayed ) {
- alert("Other peers have not yet accepted this new user.\n" +
- "Unfortunately it is not possible to save profile\n" +
- "or send any posts in this state.\n\n" +
- "Please wait a few minutes to continue.\n\n" +
- "The 'Save Changes' will be automatically enabled\n" +
- "when the process completes. (I promise this is\n"+
- "the last time you will have to wait before using\n" +
- "twister).\n\n" +
- "Tip: choose your avatar in the meantime!");
+ alert(polyglot.t("user_not_yet_accepted"));
newUserWarnDisplayed = true;
}
setTimeout("verifyUserAlreadyInBlockchain()", 5000);
}
}, {} );
}
+
+function localizePlaceholders()
+{
+ $(".input-name").attr("placeholder",polyglot.t("Full name here"));
+ $(".input-description").attr("placeholder",polyglot.t("Describe yourself"));
+ $(".input-city").attr("placeholder",polyglot.t("Location"));
+ $(".input-website").attr("placeholder",polyglot.t("website"));
+ $(".input-tox").attr("placeholder",polyglot.t("Tox address"));
+ $(".input-bitmessage").attr("placeholder",polyglot.t("Bitmessage address"));
+}
+
+$(document).ready(localizePlaceholders);
diff --git a/js/mobile_abstract.js b/js/mobile_abstract.js
index 567d5e5..614c72b 100644
--- a/js/mobile_abstract.js
+++ b/js/mobile_abstract.js
@@ -98,7 +98,7 @@ var MAL = function()
var newTweetsBarMenu = $(".userMenu").find(".menu-news"); // added for home menu entry
if( newPosts ) {
document.title = "(" + String(newPosts) + ") twister";
- newTweetsBar.text(String(newPosts) + " new posts");
+ newTweetsBar.text(polyglot.t("new_posts", newPosts));
newTweetsBar.fadeIn("slow");
newTweetsBarMenu.text(String(newPosts));
newTweetsBarMenu.addClass("show");
diff --git a/js/options.js b/js/options.js
index 2a0c4ba..7139780 100644
--- a/js/options.js
+++ b/js/options.js
@@ -105,6 +105,7 @@ var TwisterOptions = function()
$('#language').val($.Options.getOption('locLang','auto'))
$('#language').on('change', function(){
$.Options.setOption('locLang', $(this).val());
+ location.reload();
})
}
@@ -347,3 +348,14 @@ var TwisterOptions = function()
jQuery.Options = new TwisterOptions;
+function localizeLabels()
+{
+ $("label[for=tab_language]").text(polyglot.t("Language"));
+ $("label[for=t-2]").text(polyglot.t("Theme"));
+ $("label[for=t-3]").text(polyglot.t("Sound"));
+ $("label[for=t-4]").text(polyglot.t("Keys"));
+ $("label[for=t-5]").text(polyglot.t("Postboard"));
+ $("label[for=t-6]").text(polyglot.t("Users"));
+}
+
+$(document).ready(localizeLabels);
diff --git a/js/twister_following.js b/js/twister_following.js
index eb19360..aca4fdf 100644
--- a/js/twister_following.js
+++ b/js/twister_following.js
@@ -477,7 +477,7 @@ function getWhoFollows(username, item) {
fillWhoFollows(list, item, 0, (list.length > 5 ? 5 : list.length));
if (list.length > 5) {
- var more_link = $('' + polyglot.t('show_more_count', {'count': list.length - 5}) + '');
+ var more_link = $('' + polyglot.t('show_more_count', {'smart_count': list.length - 5}) + '');
more_link.on('click', function() {
fillWhoFollows(list, item, 5, list.length - 5);
diff --git a/js/twister_network.js b/js/twister_network.js
index d953ee2..bcf2ee8 100644
--- a/js/twister_network.js
+++ b/js/twister_network.js
@@ -222,7 +222,7 @@ function setSpamMsg() {
}
function exitDaemon() {
- if (confirm('Are you sure you want to exit the daemon?\nThe Twister client will stop working.')) {
+ if (confirm(polyglot.t("Are you sure you want to exit the daemon?\nThe Twister client will stop working."))) {
$( ".terminate-daemon").text("Exiting...");
$( ".terminate-daemon").addClass("disabled");
$.MAL.disableButton( $( ".terminate-daemon") );
diff --git a/login.html b/login.html
index cb270f9..32ba271 100644
--- a/login.html
+++ b/login.html
@@ -55,7 +55,7 @@