From 96995066acd6fc0e55b3a470cd69580f77cca47a Mon Sep 17 00:00:00 2001 From: cutls Date: Mon, 30 Jul 2018 02:35:29 +0900 Subject: [PATCH] TheDesk Akane (16.0.0) - phase:2[final] --- README.md | 28 +- app/acct.html | 38 +- app/acct.sample.html | 80 +++ app/index.html | 799 +--------------------------- app/{new.html => index.sample.html} | 8 +- app/index.start.html | 5 + app/js/lang/lang.js | 79 ++- app/js/lang/parse.lang.js | 2 +- app/js/lang/setting.lang.js | 100 ++++ app/js/login/manager.js | 4 +- app/js/post/status.js | 2 +- app/js/tl/speech.js | 2 +- app/js/ui/settings.js | 56 +- app/js/userdata/his-data.js | 22 +- app/js/userdata/showOnTL.js | 40 +- app/language.html | 75 +++ app/language/acct.en.json | 19 + app/language/acct.ja.json | 19 + app/language/index.en.json | 11 +- app/language/index.ja.json | 6 + app/language/setting.en.json | 128 +++++ app/language/setting.ja.json | 128 +++++ app/language/update.en.json | 17 + app/language/update.ja.json | 17 + app/main.js | 48 ++ app/oss.html | 3 +- app/setting.html | 317 ++++++----- app/setting.sample.html | 345 ++++++++++++ app/update.html | 24 +- app/update.sample.html | 91 ++++ 30 files changed, 1444 insertions(+), 1069 deletions(-) create mode 100644 app/acct.sample.html rename app/{new.html => index.sample.html} (99%) create mode 100644 app/index.start.html create mode 100644 app/js/lang/setting.lang.js create mode 100644 app/language.html create mode 100644 app/language/acct.en.json create mode 100644 app/language/acct.ja.json create mode 100644 app/language/setting.en.json create mode 100644 app/language/setting.ja.json create mode 100644 app/language/update.en.json create mode 100644 app/language/update.ja.json create mode 100644 app/setting.sample.html create mode 100644 app/update.sample.html diff --git a/README.md b/README.md index a6b19e24..68734a8a 100644 --- a/README.md +++ b/README.md @@ -6,25 +6,37 @@ Latest Info(Markdown Toot)/最新情報(マークダウン形式のトゥート) Contact me(bug report...):GitHub Issues, mention to [Cutls@kirishima.cloud](https://kirishima.cloud/@Cutls) or toot with #Desk -バグレポートなど:GitHub Issuesや[Cutls@kirishima.cloud](https://kirishima.cloud/@Cutls)へのリプ、または#Deskでトゥートして下さい。 +バグレポートなど:GitHub Issuesや[Cutls@kirishima.cloud](https://kirishima.cloud/@Cutls)へのリプ,または#Deskでトゥートして下さい. ## License [TheDesk LICENSE v5](https://github.com/cutls/TheDesk/blob/master/LICENSE.md) +## Language/言語 + + - 日本語(Japanese) + - English(英語) + +### Translation/翻訳 +The Developer needs nice translation of TheDesk! +Pull Request to `language/*.json` and `js/lang/*.js`. +You cannot PR? You can also write Issues. + +翻訳を募集しております.特に英語に関しては文法語法的に間違っている箇所が多いので, +`language/*.json` と `js/lang/*.js`にプルリクエストするか, +該当箇所がわからない場合はIssuesに書いてください. +他言語も大歓迎です! + + ## Component/構成 app:Raw files(you can download to modify or check) -app:そのままのファイル。ダウンロード→テスト用 +app:そのままのファイル.ダウンロード→テスト用 desk.icns: If you build yourself on macOS, you can use this .icns file as icon. -desk.icns: macOS向けアイコン。セルフビルドにどうぞ。 +desk.icns: macOS向けアイコン.セルフビルドにどうぞ. -## Language/言語 - -Japanese -日本語 ## Requirement/環境 @@ -37,7 +49,7 @@ Japanese - Ability to read unformated files! ## Build/ビルド -electron-packager is required. electron-packagerが必要です。 +electron-packager is required. electron-packagerが必要です. Windows `electron-packager ./app TheDesk --executable-name="TheDesk" --app-copyright="Copyright (c) TheDesk 2018 Cutls.com 2015 All Right Reserved" --win32metadata.CompanyName="TheDesk&Cutls.com" --win32metadata.FileDescription="TheDesk" --win32metadata.OriginalFilename="TheDesk" --win32metadata.InternalName="TheDesk" --win32metadata.ProductName="TheDesk" --platform=win32 --arch=all --electron-version=2.0.5 --icon=.\app\thedesk.ico --overwrite` Linux diff --git a/app/acct.html b/app/acct.html index 727feb3d..84883120 100644 --- a/app/acct.html +++ b/app/acct.html @@ -1,5 +1,5 @@ - + Account Manager - TheDesk @@ -32,19 +32,19 @@ body,html{overflow-y: scroll;} -戻る
-
アカウント一覧
+Back
+
List of accounts
-
アカウントを追加

+
Add an account

- Windows以外でご使用の方やPleromaにログインされる方はチェックを入れて下さい。
+ Check if TheDesk is not working on Windows, you want to login Pleroma instance.
-
+

@@ -52,27 +52,27 @@ body,html{overflow-y: scroll;}
-
メインアカウント
-
アカウント選択 +
Main an account
+
Select an account
-現在ログイン中のインスタンス情報 by instances.social API
+Instance data by instances.social API

-現在
-ドメイン名:
-接続済みインスタンス:
-トゥート数:
-ユーザー数:
-コネクション:%
-マストドンバージョン:
+@
+Domain:
+Federated instances:
+Toots:
+Users:Users
+Connection:%
+Mastodon version:
diff --git a/app/acct.sample.html b/app/acct.sample.html new file mode 100644 index 00000000..89c5b531 --- /dev/null +++ b/app/acct.sample.html @@ -0,0 +1,80 @@ + + + +Account Manager - TheDesk + + + + + + + + + + + + + + + + + + + + +{{back}}
+
{{list}}
+
+
+
{{add}}

+
+
+
+ +
+ {{codesetupwarn}}
+ +
+
+
+
+ Supports +
+
+
+
{{mainacct}}
+
{{selacct}} +
+ + +
+
+ +Instance data by instances.social API
+
+@
+{{domain}}:
+{{connect}}:{{ko}}
+{{toots}}:{{ko}}
+{{users}}:{{users}}
+{{safety}}:%
+{{ver}}:
+ + + + + \ No newline at end of file diff --git a/app/index.html b/app/index.html index 24cbdbee..65e7a91e 100644 --- a/app/index.html +++ b/app/index.html @@ -1,798 +1,5 @@ - + - TheDesk - - - - - - - - - - - - - - - - - - - - - - - - - -
- - -
-
ここにドラッグして添付(ドラッグと同時にアップロードされます) -
- -
-
-
-
- -
- -
- - - -
-
- -
- - cancel - expand_more - - -
-
-
-format_bold -format_italic -format_underlined -strikethrough_s -format_quote -short_text -code -format_list_bulleted -format_list_numbered - - -autorenew -flare -swap_vert -swap_horiz - -Markdownエディタを隠す - -
-format_size -px -color_lens - -
-link -  - -
-image -  - -
-
-
-
-
- -Edit - -
-
- - - -
- -Preview - - -Markdownエディタを表示 - - -
-
- visibility_off - public - CW - photo_library - format_shapes - tag_faces - music_note - clear -
-
-
- -返信モード: -いいえ/添付: -なし/公開範囲: -public - -
- -
-
- - - - - - -
-
- -
-
- -
- インスタンスによって実装が異なります。 - 絵文字更新 - cancel -
-
- -
-
-
- - / - - -
-
- 一覧を表示中
一部デフォルト絵文字は入力・描画できません。(国旗系など) -
- - add - - - people - - - local_florist - - - restaurant - - - directions_run - - - directions_car - - - attach_file - - - gesture - - - flag - - - - -
-
- - - - - - - - - - - -
- chevron_right  - expand_less  - close -
-
-
- -
-
アカウント選択 -
- - -
-
-
- - -
-
表示するタイムライン - -
-
- -
-
-
- -
-
- -
-search - - - -
-
-
- -
- -
-
    -
    - - -
    -
    - -
    -
    - - -
    -
    - -
    -

    -
    -
    - - -
    - -
    -
    - - -
    -
    - -
    -
    - -
    - 適用範囲
    - - - - - - - -
    - オプション
    - -
    - 非ラテン系の文字列では「単語マッチ」は推奨されません。
    - -
    - 「除外」時マッチしたトゥートは非可逆的に除外され、削除後も閲覧できません。
    - 有効期限(あと)未指定(または0分)で「無制限」になります。仕様上数値の正確性を保証できません。

    - 日 - 時間 - 分 -
    - Integrated TL/Plus TLは、公開/ホームのフィルターワードが合算されて適応されます。どちらか一方の指定でも非表示になります。 -
    -
    - -
    - まずは右のアカウントボタンからアカウントを追加してください。
    - 右のカラム追加ボタンで認証せずにローカルタイムラインを見ることもできます。 -
    -
    -
    - -
    - -
    - - -
    -
    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file + + \ No newline at end of file diff --git a/app/new.html b/app/index.sample.html similarity index 99% rename from app/new.html rename to app/index.sample.html index 68ad2ef1..3048ebda 100644 --- a/app/new.html +++ b/app/index.sample.html @@ -1,5 +1,5 @@ - + TheDesk @@ -28,9 +28,11 @@ @@ -300,7 +302,7 @@ var tlid=0; {{screenshot}} {{copyURL}} {{embed}} - {{useOtherAcct}} + {{useOtherAcct1}} @@ -422,7 +424,7 @@ var tlid=0; {{blockDomain}}
    - +
    {{name}} diff --git a/app/index.start.html b/app/index.start.html new file mode 100644 index 00000000..65e7a91e --- /dev/null +++ b/app/index.start.html @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/js/lang/lang.js b/app/js/lang/lang.js index e6038393..ae997761 100644 --- a/app/js/lang/lang.js +++ b/app/js/lang/lang.js @@ -39,6 +39,31 @@ var lang_fatalerroroccured={ "ja":"エラーが発生しました。しばらく待ってから再起動してください。", "en":"Some errors are occured, please restart TheDesk." } +var lang_speech={ + "ja":"Google 日本語", + "en":"Google US English" +} +//language.html +var lang_lang={ + "ja":"言語", + "en":"Language" +} +var lang_langlocale={ + "ja":"日本語", + "en":"English" +} +var lang_back={ + "ja":"戻る", + "en":"Back" +} +var lang_set={ + "ja":"設定", + "en":"Set" +} +var lang_langadd={ + "ja":"GitHubから翻訳に参加できます。英語の校正(緊急)や他言語に翻訳していただける方を募集しております。", + "en":"Translate TheDesk to other languages or proofread TheDesk on GitHub. TheDesk needs your help." +} //common/version.js var lang_version_usever={ "ja":"お使いのバージョン{{ver}}は最新です。", @@ -79,6 +104,14 @@ var lang_manager_mainAcct={ "ja":"メインアカウントを設定しました。", "en":"Done:choose main account" } +var lang_manager_def={ + "ja":"既定", + "en":"Default" +} +var lang_manager_none={ + "ja":"なし", + "en":"None" +} //post/emoji.js var lang_emoji_get={ "ja":"絵文字リストを取得", @@ -224,7 +257,7 @@ var lang_notf_new={ //tl/speech.js var lang_speech_refresh={ "ja":"音声読み上げ設定を更新しました。", - "en":"Refresh setting of TTS" + "en":"Save valie about TTS config" } //tl/src.js var lang_src_ts={ @@ -272,7 +305,7 @@ var lang_layout_delthis={ } var lang_layout_setthis={ "ja":"このカラムの設定", - "en":"Setting of this column" + "en":"Preferences of this column" } var lang_layout_mediafil={ "ja":"メディアフィルター", @@ -319,3 +352,45 @@ var lang_spotify_np={ "ja":"NowPlaying文書を更新しました。", "en":"Done:templete of NowPlaying" } +//userdata/his-data.js +var lang_hisdata_frcreq={ + "ja":"Mastodon 2.4.3~が必要です", + "en":"Required Mastodon 2.4.3 and above" +} +var lang_hisdata_frcwarn={ + "ja":"非フォローだけど絡みがある時に表示されます。", + "en":"Unfollow accounts will be shown." +} +var lang_hisdata_taketime={ + "ja":"30秒から数分かかります", + "en":"It will take 30s ~ several minutes" +} +//userdata/showOnTL.js +var lang_showontl_movetxt={ + "ja":"このアカウントは移行しています", + "en":"This account was moved" +} +var lang_showontl_movebtn={ + "ja":"移行先を見る", + "en":"Continue on the new account" +} +var lang_showontl_botacct={ + "ja":"botアカウント", + "en":"[bot]" +} +var lang_showontl_followed={ + "ja":"フォローされています", + "en":"Following you" +} +var lang_showontl_notf={ + "ja":"通知", + "en":"Notification " +} +var lang_showontl_domain={ + "ja":"ドメイン", + "en":"Domain " +} +var lang_showontl_listwarn={ + "ja":"リストに追加するためにはフォローが必要です。", + "en":"Follow to add this user to lists." +} \ No newline at end of file diff --git a/app/js/lang/parse.lang.js b/app/js/lang/parse.lang.js index e0f0d383..c1b91122 100644 --- a/app/js/lang/parse.lang.js +++ b/app/js/lang/parse.lang.js @@ -136,5 +136,5 @@ var lang_parse_clientmute={ } var lang_parse_mute={ "ja":"ミュートします。設定から解除できます。", - "en":" will be muted. You can remove on a setting." + "en":" will be muted. You can remove on preferences." } \ No newline at end of file diff --git a/app/js/lang/setting.lang.js b/app/js/lang/setting.lang.js new file mode 100644 index 00000000..6ac00453 --- /dev/null +++ b/app/js/lang/setting.lang.js @@ -0,0 +1,100 @@ +var lang_setting_time={ + "ja":"時間設定を{{set}}に設定しました。", + "en":"Time format:{{set}}" +} +var lang_setting_theme={ + "ja":"テーマ設定を{{set}}に設定しました。", + "en":"Theme:{{set}}" +} +var lang_setting_nsfw={ + "ja":"画像表示設定を{{set}}に設定しました。", + "en":"NSFW:{{set}}" +} +var lang_setting_cw={ + "ja":"テキスト表示設定を{{set}}に設定しました。", + "en":"CW:{{set}}" +} +var lang_setting_cwtext={ + "ja":"デフォルトの警告文を「{{set}}」に設定しました。", + "en":"Default CW text:{{set}}" +} +var lang_setting_vis={ + "ja":"デフォルトの公開設定を{{set}}に設定しました。", + "en":"Default visibility:{{set}}" +} +var lang_setting_popup={ + "ja":"ポップアップお知らせを{{set}}に設定しました。", + "en":"Popup notification:{{set}}" +} +var lang_setting_off={ + "ja":"オフ", + "en":"Off" +} +var lang_setting_s={ + "ja":"秒", + "en":"s" +} +var lang_setting_box={ + "ja":"デフォルトでのボックスの挙動を{{set}}に設定しました。", + "en":"Default toot box action:{{set}}" +} +var lang_setting_gif={ + "ja":"アイコンアニメーション再生を{{set}}に設定しました。", + "en":"GIF:{{set}}" +} +var lang_setting_selt={ + "ja":"{{set1}}行以上または{{set2}}文字以上でテキストを隠します。", + "en":"Auto fold:{{set1}} lines and above, {{set2}} letters and above" +} +var lang_setting_width={ + "ja":"横幅最低を{{set}}pxに設定しました。", + "en":"Minimam width:{{set}}" +} +var lang_setting_img={ + "ja":"画像投稿後の設定を「{{set}}」に設定しました。", + "en":"After posting an image:{{set}}" +} +var lang_setting_font={ + "ja":"フォントを{{set}}に設定しました。", + "en":"Fonts:{{set}}" +} +var lang_setting_default={ + "ja":"デフォルト", + "en":"default font" +} +var lang_setting_size={ + "ja":"フォントサイズを{{set}}pxに設定しました。", + "en":"Font size:{{set}}px" +} +var lang_setting_imgheight={ + "ja":"画像高さを{{set}}pxに設定しました。", + "en":"Image height:{{set}}px" +} +var lang_setting_tag={ + "ja":"タグの取得範囲を「{{set}}」に設定しました。", + "en":"Tag TL:{{set}}" +} +var lang_setting_ul={ + "ja":"独自ロケール設定を{{set}}に設定しました。", + "en":"Native locale:{{set}}" +} +var lang_setting_notf={ + "ja":"ネイティブ通知を{{set}}に設定しました。", + "en":"Native notification:{{set}}" +} +var lang_setting_quote={ + "ja":"引用形式を{{set}}に設定しました。", + "en":"Quote format:{{set}}" +} +var lang_setting_via={ + "ja":"via表示を{{set}}に設定しました。", + "en":"Via:{{set}}" +} +var lang_setting_mov={ + "ja":"マウスオーバー・ヒディングを{{set}}に設定しました。", + "en":"Mouseover:{{set}}" +} +var lang_setting_main={ + "ja":"起動時・投稿時のアカウントを{{set}}に設定しました。", + "en":"Default account:{{set}}" +} \ No newline at end of file diff --git a/app/js/login/manager.js b/app/js/login/manager.js index ac5957c3..285f1395 100644 --- a/app/js/login/manager.js +++ b/app/js/login/manager.js @@ -517,7 +517,7 @@ function multisel() { var list = key * 1 + 1; if (key == last) { sel = "selected"; - mainb="(既定)" + mainb='('+lang_manager_def[lang]+')' var domain = localStorage.getItem("domain_" + key); var profimg=localStorage.getItem("prof_"+key); var domain=localStorage.getItem("domain_"+key); @@ -544,7 +544,7 @@ function mainacct(){ } function colorpicker(key){ temp= - '
    なし
    '+ + '
    '+lang_manager_none[lang]+'
    '+ '
    '+ '
    '+ '
    '+ diff --git a/app/js/post/status.js b/app/js/post/status.js index 5c498049..add4c9bf 100644 --- a/app/js/post/status.js +++ b/app/js/post/status.js @@ -363,7 +363,7 @@ function empUser(){ //URLコピー function tootUriCopy(url){ execCopy(url); - Materialize.toast("トゥートURLをコピーしました", 1500); + Materialize.toast(lang_details_url[lang], 1500); } //他のアカウントで… diff --git a/app/js/tl/speech.js b/app/js/tl/speech.js index 763fb4e9..6342f5d1 100644 --- a/app/js/tl/speech.js +++ b/app/js/tl/speech.js @@ -1,5 +1,5 @@ $voise = null; - $voiseName = 'Google 日本語'; + $voiseName = lang_speech[lang]; $voices = speechSynthesis.getVoices(); $synthes = new SpeechSynthesisUtterance(); $voise = $.grep($voices, function(n, i){return n.name == $voiseName})[0]; diff --git a/app/js/ui/settings.js b/app/js/ui/settings.js index 726b9b3f..224edcf6 100644 --- a/app/js/ui/settings.js +++ b/app/js/ui/settings.js @@ -4,14 +4,14 @@ function settings() { var dd = $("[name=time]:checked").val(); var dt = $("[for="+dd+"]").text(); if (dd != localStorage.getItem("datetype")) { - Materialize.toast("時間設定を" + dt + "に設定しました。", 3000); + Materialize.toast(lang_setting_time[lang].replace("{{set}}" ,dt), 3000); } localStorage.setItem("datetype", dd); var cd = $("[name=theme]:checked").val(); var ct = $("[for="+cd+"]").html(); if (cd != localStorage.getItem("theme")) { - Materialize.toast("テーマ設定を" + ct + "に設定しました。", 3000); + Materialize.toast(lang_setting_theme[lang].replace("{{set}}" ,ct), 3000); } //テーマはこの場で設定 themes(cd); @@ -20,84 +20,77 @@ function settings() { var nd = $("[name=nsfw]:checked").val(); var nt = $("[for=n_"+nd+"]").text(); if (nd != localStorage.getItem("nsfw")) { - Materialize.toast("画像表示設定を" + nt + "に設定しました。", 3000); + Materialize.toast(lang_setting_nsfw[lang].replace("{{set}}" ,nt), 3000); } localStorage.setItem("nsfw", nd); var cwd = $("[name=cw]:checked").val(); var cwt = $("[for=c_"+cwd+"]").text(); if (cwd != localStorage.getItem("cw")) { - Materialize.toast("テキスト表示設定を" + cwt + "に設定しました。", 3000); + Materialize.toast(lang_setting_cw[lang].replace("{{set}}" ,cwt), 3000); } localStorage.setItem("cw", cwd); var cwtd = $("#cw-text").val(); if (cwtd != localStorage.getItem("cw-text")) { - Materialize.toast("デフォルトの警告文を「" + cwtd + "」に設定しました。", 3000); + Materialize.toast(lang_setting_cwtext[lang].replace("{{set}}" ,cwtd), 3000); } localStorage.setItem("cw-text", cwtd); var visd = $("[name=vis]:checked").val(); var vist = $("[for="+visd+"]").text(); if (visd != localStorage.getItem("vis")) { - Materialize.toast("デフォルトの公開設定を" + vist + "に設定しました。", 3000); + Materialize.toast(lang_setting_vis[lang].replace("{{set}}" ,vist), 3000); } localStorage.setItem("vis", visd); var popd = $("#popup").val(); if (popd > 0 && popd != localStorage.getItem("popup")) { - Materialize.toast("ポップアップお知らせを" + popd + "秒に設定しました。", 3000); + Materialize.toast(lang_setting_popup[lang].replace("{{set}}" ,popd+lang_setting_s[lang]), 3000); } else if (popd != localStorage.getItem("popup")) { - Materialize.toast("ポップアップお知らせをオフに設定しました。", 3000); + Materialize.toast(lang_setting_popup[lang].replace("{{set}}" ,lang_setting_off[lang]), 3000); } localStorage.setItem("popup", popd); - var boxd = $("[name=box]:checked").val(); - var boxt = $("[for=b_"+boxd+"]").text(); - if (boxd != localStorage.getItem("box")) { - Materialize.toast("デフォルトでのボックスの挙動を" + boxt + "に設定しました。", 3000); - } - localStorage.setItem("box", boxd); - var gifd = $("[name=gif]:checked").val(); var gift = $("[for=g_"+gifd+"]").text(); if (gifd != localStorage.getItem("gif")) { - Materialize.toast("アイコンアニメーション再生を" + gift + "に設定しました。", 3000); + Materialize.toast(lang_setting_gif[lang].replace("{{set}}" ,gift), 3000); } localStorage.setItem("gif", gifd); var sentd = $("#sentence").val(); var ltrd = $("#letters").val(); if (sentd != localStorage.getItem("sentence") || ltrd != localStorage.getItem("letters")) { - Materialize.toast(sentd + "行以上または"+ltrd+"文字以上でテキストを隠します。", 3000); + Materialize.toast(lang_setting_selt[lang].replace("{{set1}}" ,sentd).replace("{{set1}}" ,ltrd), 3000); } localStorage.setItem("sentence", sentd); localStorage.setItem("letters", ltrd); var widthd = $("#width").val(); if (widthd != localStorage.getItem("width")) { - Materialize.toast("横幅最低を" + widthd + "pxに設定しました。", 3000); + Materialize.toast(lang_setting_width[lang].replace("{{set}}" ,widthd), 3000); } localStorage.setItem("width", widthd); var imgd = $("[name=img]:checked").val(); var imgt = $("[for=i_"+imgd+"]").text(); if (imgd != localStorage.getItem("img")) { - Materialize.toast("画像投稿後の設定を「" + imgt + "」に設定しました。", 3000); + Materialize.toast(lang_setting_img[lang].replace("{{set}}" ,imgt), 3000); } localStorage.setItem("img", imgd); var fontd = $("#font").val(); if(fontd){ if (fontd != localStorage.getItem("font")) { - Materialize.toast("フォントを" + fontd + "に設定しました。", 3000); + Materialize.toast(lang_setting_font[lang].replace("{{set}}" ,fontd), 3000); } localStorage.setItem("font", fontd); themes(); }else{ if(localStorage.getItem("font")){ localStorage.removeItem("font"); - Materialize.toast("フォントをデフォルトに設定しました。", 3000); + Materialize.toast(lang_setting_font[lang].replace("{{set}}" ,lang_setting_default[lang]), 3000); themes(); } } @@ -105,62 +98,62 @@ function settings() { var sized = $("#size").val(); if (sized != localStorage.getItem("size")) { - Materialize.toast("フォントサイズを" + sized + "pxに設定しました。", 3000); + Materialize.toast(lang_setting_size[lang].replace("{{set}}" ,sized), 3000); } localStorage.setItem("size", sized); var heid = $("#img-height").val(); if (heid != localStorage.getItem("img-height")) { - Materialize.toast("画像高さを" + heid + "pxに設定しました。", 3000); + Materialize.toast(lang_setting_imgheight[lang].replace("{{set}}" ,heid), 3000); } localStorage.setItem("img-height", heid); var tagd = $("[name=tag]:checked").val(); var tagt = $("[for=t_"+tagd+"]").text(); if (tagd != localStorage.getItem("tag-range")) { - Materialize.toast("タグの取得範囲を「" + tagt + "」に設定しました。", 3000); + Materialize.toast(lang_setting_tag[lang].replace("{{set}}" ,tagt), 3000); } localStorage.setItem("tag-range", tagd); var uld = $("[name=ul]:checked").val(); var ult = $("[for=ul_"+uld+"]").text(); if (uld != localStorage.getItem("locale")) { - Materialize.toast("独自ロケール設定を" + ult + "に設定しました。", 3000); + Materialize.toast(lang_setting_ul[lang].replace("{{set}}" ,ult), 3000); } localStorage.setItem("locale", uld); var ntd = $("[name=notf]:checked").val(); var ntt = $("[for=ntf_"+ntd+"]").text(); if (ntd != localStorage.getItem("nativenotf")) { - Materialize.toast("ネイティブ通知を" + ntt + "に設定しました。", 3000); + Materialize.toast(lang_setting_notf[lang].replace("{{set}}" ,ntt), 3000); } localStorage.setItem("nativenotf", ntd); var qtd = $("[name=quote]:checked").val(); var qtt = $("[for=q_"+qtd+"]").text(); if (qtd != localStorage.getItem("quote")) { - Materialize.toast("引用形式を" + qtt + "に設定しました。", 3000); + Materialize.toast(lang_setting_quote[lang].replace("{{set}}" ,qtt), 3000); } localStorage.setItem("quote", qtd); var viad = $("[name=via]:checked").val(); var viat = $("[for=via_"+viad+"]").text(); if (viad != localStorage.getItem("viashow")) { - Materialize.toast("via表示を" + viat + "に設定しました。", 3000); + Materialize.toast(lang_setting_via[lang].replace("{{set}}" ,viat), 3000); } localStorage.setItem("viashow", viad); var movd = $("[name=mov]:checked").val(); var movt = $("[for=mov_"+movd+"]").text(); if (movd != localStorage.getItem("mouseover")) { - Materialize.toast("マウスオーバー・ヒディングを" + movt + "に設定しました。", 3000); + Materialize.toast(lang_setting_mov[lang].replace("{{set}}" ,movt), 3000); } localStorage.setItem("mouseover", movd); var maind = $("[name=main]:checked").val(); var maint = $("[for=mn_"+maind+"]").text(); if (maind != localStorage.getItem("mainuse")) { - Materialize.toast("起動時・投稿時のアカウントを" + maint + "に設定しました。", 3000); + Materialize.toast(lang_setting_main[lang].replace("{{set}}" ,maint), 3000); } localStorage.setItem("mainuse", maind); } @@ -170,6 +163,9 @@ function load() { if(localStorage.getItem("imas")){ $(".imas").removeClass("hide"); } + if(localStorage.getItem("kirishima")){ + $(".kirishima").removeClass("hide"); + } var prof = localStorage.getItem("prof"); $("#my-prof").attr("src", prof); var datetype = localStorage.getItem("datetype"); diff --git a/app/js/userdata/his-data.js b/app/js/userdata/his-data.js index 485eae01..945ff291 100644 --- a/app/js/userdata/his-data.js +++ b/app/js/userdata/his-data.js @@ -31,7 +31,7 @@ function utl(user, more, acct_id) { }).then(function(json) { var templete = parse(json, '', acct_id); if(!json[0]){ - templete="データはありません
    "; + templete=lang_details_nodata[lang]+"
    "; } var height = $("#his-data-content").height() - 245; $(".tab-content").css('height', height); @@ -111,7 +111,7 @@ function flw(user, more, acct_id) { }).then(function(json) { var templete = userparse(json,'',acct_id); if(!json[0]){ - templete="データはありません
    "; + templete=lang_details_nodata[lang]+"
    "; } if (more) { $("#his-follow-list-contents").append(templete); @@ -155,7 +155,7 @@ function fer(user, more, acct_id) { }).then(function(json) { var templete = userparse(json,'',acct_id); if(!json[0]){ - templete="データはありません
    "; + templete=lang_details_nodata[lang]+"
    "; } if (more) { $("#his-follower-list-contents").append(templete); @@ -195,7 +195,7 @@ function showFav(more, acct_id) { }).then(function(json) { var templete = parse(json, '', acct_id); if(!json[0]){ - templete="データはありません
    "; + templete=lang_details_nodata[lang]+"
    "; } if (more) { $("#his-fav-list-contents").append(templete); @@ -233,7 +233,7 @@ function showMut(more, acct_id) { console.error(error); }).then(function(json) { if(!json[0]){ - templete="データはありません
    "; + templete=lang_details_nodata[lang]+"
    "; } var templete = userparse(json,'',acct_id); if (more) { @@ -272,7 +272,7 @@ function showBlo(more, acct_id) { console.error(error); }).then(function(json) { if(!json[0]){ - templete="データはありません
    "; + templete=lang_details_nodata[lang]+"
    "; } var templete = userparse(json,'',acct_id); if (more) { @@ -312,7 +312,7 @@ function showReq(more, acct_id) { }).then(function(json) { var templete = userparse(json, 'true',acct_id); if(!json[0]){ - templete="データはありません
    "; + templete=lang_details_nodata[lang]+"
    "; } if (more) { $("#his-request-list-contents").append(templete); @@ -352,7 +352,7 @@ function showDom(more, acct_id) { }).then(function(json) { var templete = ""; if(!json[0]){ - templete="データはありません
    "; + templete=lang_details_nodata[lang]+"
    "; } Object.keys(json).forEach(function(key) { var domain = json[key]; @@ -393,13 +393,13 @@ function showFrl(more, acct_id) { }).then(function(response) { return response.json(); }).catch(function(error) { - $("#his-follow-recom-contents").html("データはありません(Mastodon 2.4.3~が必要です)
    "); + $("#his-follow-recom-contents").html(lang_details_nodata[lang]+"("+lang_hisdata_frcreq[lang]+")
    "); console.error(error); }).then(function(json) { console.log(json); if(!json[0]){ console.log("No data"); - templete="データはありません(非フォローだけど絡みがある時に表示されます。)
    "; + templete=lang_details_nodata[lang]+"("+lang_hisdata_frcwarn[lang]+")
    "; }else{ var templete = userparse(json,'',acct_id); } @@ -416,7 +416,7 @@ function showFrl(more, acct_id) { //ユーザーマッチングリスト function showMat() { - $("#his-matching-list-contents").html("30秒から数分かかります"); + $("#his-matching-list-contents").html(lang_hisdata_taketime[lang]); var full=$("#his-acct").attr("fullname"); var acct_id=$("#his-data").attr("use-acct"); full=full.split("@"); diff --git a/app/js/userdata/showOnTL.js b/app/js/userdata/showOnTL.js index 0da516df..786d7dc0 100644 --- a/app/js/userdata/showOnTL.js +++ b/app/js/userdata/showOnTL.js @@ -74,8 +74,8 @@ function udg(user, acct_id) { //moved設定時 if (json.moved) { Materialize.toast( - 'このアカウントは移行しています', 4000) + lang_showontl_movetxt[lang]+'', 4000) } else { $('#his-data').modal('open'); $('#his-data').attr("user-id", user); @@ -137,7 +137,7 @@ function udg(user, acct_id) { $("#his-des").html(twemoji.parse(note)); } if(json.bot){ - $("#his-bot").html("botアカウント"); + $("#his-bot").html(lang_showontl_botacct[lang]); } $('#his-data').css('background-size', 'cover'); localStorage.setItem("history" , user); @@ -214,38 +214,38 @@ function relations(user, acct_id) { if (json.following) { //自分がフォローしている $("#his-data").addClass("following"); - $("#his-follow-btn").text("フォロー解除"); + $("#his-follow-btn").text(lang_status_unfollow[lang]); hisList(user,acct_id); }else{ - $("#his-follow-btn").text("フォロー"); + $("#his-follow-btn").text(lang_status_follow[lang]); } if (json.followed_by) { //フォローされてる - $("#his-relation").text("フォローされています"); + $("#his-relation").text(lang_showontl_followed[lang]); } if (json.blocking) { $("#his-data").addClass("blocking"); - $("#his-block-btn").text("ブロック解除"); + $("#his-block-btn").text(lang_status_unblock[lang]); }else{ - $("#his-block-btn").text("ブロック"); + $("#his-block-btn").text(lang_status_block[lang]); } if (json.muting) { $("#his-data").addClass("muting"); - $("#his-mute-btn").text("ミュート解除"); + $("#his-mute-btn").text(lang_status_unmute[lang]); }else{ - $("#his-mute-btn").text("ミュート"); + $("#his-mute-btn").text(lang_status_mute[lang]); } if (json.muting_notifications) { $("#his-data").addClass("mutingNotf"); - $("#his-notf-btn").text("通知ミュート解除"); + $("#his-notf-btn").text(lang_showontl_notf[lang]+lang_status_unmute[lang]); }else{ - $("#his-notf-btn").text("通知ミュート"); + $("#his-notf-btn").text(lang_showontl_notf[lang]+lang_status_mute[lang]); } if (json.domain_blocking) { $("#his-data").addClass("blockingDom"); - $("#his-domain-btn").text("ドメインブロック解除"); + $("#his-domain-btn").text(lang_showontl_domain[lang]+lang_status_unblock[lang]); }else{ - $("#his-domain-btn").text("ドメインブロック"); + $("#his-domain-btn").text(lang_showontl_domain[lang]+lang_status_block[lang]); } }); @@ -285,15 +285,15 @@ function reset(){ $("#his-notf-btn").show(); $("#his-domain-btn").show(); $("#his-emp-btn").show(); - $("#his-follow-btn").text("フォロー"); - $("#his-mute-btn").text("ミュート"); - $("#his-block-btn").text("ブロック"); - $("#his-notf-btn").text("通知ミュート"); - $("#his-domain-btn").text("ドメインブロック"); + $("#his-follow-btn").text(lang_status_follow[lang]); + $("#his-mute-btn").text(lang_status_mute[lang]); + $("#his-block-btn").text(lang_status_block[lang]); + $("#his-notf-btn").text(lang_showontl_notf[lang]+lang_status_mute[lang]); + $("#his-domain-btn").text(lang_showontl_domain[lang]+lang_status_block[lang]); $("#his-relation").text(""); $(".cont-series").html(""); $("#domainblock").val(""); - $("#his-lists-a").html('リストに追加するためにはフォローが必要です。'); + $("#his-lists-a").html(lang_showontl_listwarn[lang]); $("#his-lists-b").html(''); $("#his-name-val").val(""); $("#his-des-val").val(""); diff --git a/app/language.html b/app/language.html new file mode 100644 index 00000000..1907baa9 --- /dev/null +++ b/app/language.html @@ -0,0 +1,75 @@ + + + + Languages - TheDesk + + + + + + + + + + + + + + +

    + + +
    +
    + + + \ No newline at end of file diff --git a/app/language/acct.en.json b/app/language/acct.en.json new file mode 100644 index 00000000..0144a755 --- /dev/null +++ b/app/language/acct.en.json @@ -0,0 +1,19 @@ +{ + "list":"List of accounts", + "back":"Back", + "add":"Add an account", + "codesetupwarn":"Check if TheDesk is not working on Windows, you want to login Pleroma instance.", + "codesetup":"Code setup", + "mainacct":"Main an account", + "selacct":"Select an account", + "codepastewarn":"Paste the code and close browser.", + "codepaste":"Code", + "domain":"Domain", + "connect":"Federated instances", + "toots":"Toots", + "users":"Users", + "users2":"users", + "safety":"Connection", + "ver":"Mastodon version", + "ko":"" +} \ No newline at end of file diff --git a/app/language/acct.ja.json b/app/language/acct.ja.json new file mode 100644 index 00000000..eafc80b8 --- /dev/null +++ b/app/language/acct.ja.json @@ -0,0 +1,19 @@ +{ + "list":"アカウント一覧", + "back":"戻る", + "add":"アカウントを追加", + "codesetupwarn":"Windows以外でご使用の方やPleromaにログインされる方はチェックを入れて下さい。", + "codesetup":"コードセットアップ", + "mainacct":"メインアカウント", + "selacct":"アカウントを選択", + "codepastewarn":"指定されたコードを貼り付けてください。ログインウィンドウは閉じていただいて構いません。", + "codepaste":"コードを入力", + "domain":"ドメイン名", + "connect":"接続インスタンス数", + "toots":"トゥート数", + "users":"ユーザー数", + "users2":"人", + "safety":"コネクション", + "ver":"Mastodonバージョン", + "ko":"個" +} \ No newline at end of file diff --git a/app/language/index.en.json b/app/language/index.en.json index 0096c864..1e549763 100644 --- a/app/language/index.en.json +++ b/app/language/index.en.json @@ -2,6 +2,7 @@ "draghere":"Drag here to upload", "close":"Close", "showSelectProf":"Show profile of the selecting account", + "closethisbox":"Close this box", "toot":"Toot", "nsfwDes":"Mark media as sensitive", "cwDes":"Hide text behind warning", @@ -23,6 +24,7 @@ "privateJP":"", "directJP":"", "emojiWarn":"", + "emojiInsertWarn":"Some emojis are not able to be inserted.", "refreshEmoji":"Refresh emojis list", "closeThisBox":"Close this box", "showThisEmoji":" are shown.", @@ -57,15 +59,19 @@ "timeline":"Timeline", "operateOtherAcct":"Cross-account", "list":"List", + "makeNew":"Make a list", "blocks":"Blocks", "mutes":"Mutes", + "block":"Block", + "mute":"Mute", "domainBlock":"Domain block", "editProf":"Edit profile", "followReq":"Follow requests", "likeHimOrHer":"Resembling", "frc":"Suggest", "more":"More", - "revoverJP":"", + "revoverJP":" to ", + "warnUseOtherAcct":"(Unable to unfollow)", "revoverJPde":"", "or":"or", "openProf":"Show profile", @@ -100,6 +106,7 @@ "sortSet":"Sort", "selectAcct":"Select an account", "listLocale":"List", + "filterWord":"Filtering words", "degree":"Filter contexts", "conver":"Conversations", "option":"Options", @@ -119,7 +126,7 @@ "sortColumns":"Sort", "acctMan":"Account Manager", "filter":"Filter", - "setting":"Settings", + "setting":"Preferences", "f5":"Super Reload", "nanoDes":"The smallest Mastodon,", "verTips":"Version", diff --git a/app/language/index.ja.json b/app/language/index.ja.json index 904f11ee..f3bcf890 100644 --- a/app/language/index.ja.json +++ b/app/language/index.ja.json @@ -24,6 +24,7 @@ "privateJP":"非公開", "directJP":"ダイレクト", "emojiWarn":"インスタンスによって実装が異なります。", + "emojiInsertWarn":"一部絵文字は入力できません。", "refreshEmoji":"絵文字更新", "closeThisBox":"このボックスを閉じる", "showThisEmoji":"一覧を表示中", @@ -58,8 +59,11 @@ "timeline":"タイムライン", "operateOtherAcct":"他のアカウントで操作", "list":"リスト", + "makeNew":"新規作成", "blocks":"ブロック", "mutes":"ミュート", + "block":"ブロック", + "mute":"ミュート", "domainBlock":"ドメインブロック", "editProf":"プロフィール編集", "followReq":"フォローリクエスト", @@ -67,6 +71,7 @@ "frc":"おすすめ", "more":"もっと", "revoverJP":"する", + "warnUseOtherAcct":"(解除はできません。)", "revoverJPde":"で", "or":"または", "openProf":"プロフィールを表示", @@ -100,6 +105,7 @@ "search":"検索", "sortSet":"並べ替え設定", "selectAcct":"アカウントを選択", + "filterWord":"フィルターワード", "listLocale":"一覧", "degree":"適応範囲", "conver":"会話", diff --git a/app/language/setting.en.json b/app/language/setting.en.json new file mode 100644 index 00000000..8590c249 --- /dev/null +++ b/app/language/setting.en.json @@ -0,0 +1,128 @@ +{ + "setting":"Preferences", + "set":"Save", + "yes":"Yes", + "no":"No", + "change":"Change", + "env":"System Preferences", + "setlang":"Languages", + "theme":"Themes", + "popup":"Popup notification(on window)", + "popupwarn":"Hide to set \"0\"", + "s":"sec", + "nativenotf":"Native notification", + "nnwarn":"This does not work on Windows 10.", + "nntest":"Notification test", + "minwidth":"Minimam width of columns", + "minwidthwarn":"Scroll bar will be shown when your window size is more than ammounts of columns.", + "above":"above", + "font":"Font", + "fontwarn":"Set local font", + "fontsize":"Font size", + "absolute":"absolute value", + "timeline":"Timeline Preferences", + "timemode":"Time format", + "relativetime":"Relative format:\"1 minutes ago\",\"3 days ago\"", + "absolutetime":"Absolute format:\"23:25:21\",\"2017/12/30 23:59:00\"", + "mixtime":"Mixed format:toots posted today are relative-format, others are absolute-format.", + "relativesel":"Relative", + "absolutesel":"Absoltue", + "doublesel":"Both relative and absolute", + "mixsel":"Mixed", + "locale":"Instance unique locale", + "localewarn":"This value is available on some Japanese instances", + "nswf":"Hide NSFW pictures", + "nsfwwarn":"Strong blur effect", + "cw":"Hide CW contents", + "gif":"Animated GIF images animation", + "tag":"Tag TL Search", + "tagfed":"Use federated network", + "taglocal":"Use local network", + "via":"Show via", + "mouseover":"Hide aaction buttons without mouseover", + "mouseoverwarn":"You may feel unconfortable:(", + "autofold":"Auto folding", + "autofoldwarn":"TheDesk does not collapse totes of 5 characters or less. Also, when collapsing, newlines are not shown. TheDesk count only newlines as the number of lines.", + "lines":"lines", + "letters":"letters", + "or":"or", + "imgheight":"Height of images", + "post":"Posting Preferences", + "defaultcw":"Default warining text", + "defaultvis":"Default visibility", + "public":"Public", + "unlisted":"Unlisted", + "private":"Private", + "direct":"Direct", + "memory":"Memory(memorized as each instance)", + "useapi":"Default of your visibility(Set on preferences of Mastodon instance)", + "postimg":"Posting images preferences", + "showurl":"Insert media URL", + "nourl":"Insert nothig", + "disabled":"Disabled", + "quote":"Quote format", + "simple":"Only URL", + "mention":"URL and acct(mention to the user)", + "full":"URL, text and acct(mention to the user)", + "main":"Default accounts of actions", + "mainwarn":"Main account can be set on Account Manager.", + "lastacct":"Account you used recently", + "usemainacct":"Main account", + "keysc":"Keyboard shortcut Preferences", + "iks":"Easy inserter", + "okswarn":"You can insert any letters and emojis with only 3 keys", + "muteemp":"Mute & Emphasis Preferences", + "climute":"Client Mute", + "cliemp":"Client Emphasis", + "cliwarn":"Click client name on toots to toggle mute and emphasis.", + "enter":"Enter to set", + "wordmute":"Words Mute", + "wordemp":"Words Emphasis", + "useremp":"Users Emphasis", + "useerempwarn":"Set on users data modals.", + "empcolorwarn":"Use this color to emphasis", + "spotify":"Spotify and NowPlaying Preferences", + "spotifynote1":"Click ", + "spotifynote2":"icon to NowPlaying", + "link":"Account Connection", + "linkwarn":"TheDesk save your data on thedesk.top server.", + "connect":"Connect", + "disconnect":"Disconnect", + "templeteedit":"Edit a template", + "templeteeditwarn":"", + "templete1":"Refer:{song}:Song name/{album}:Album name/{artist}:Artist name/{url}:URL to Spotify", + "templete2":"iTunes NowPlaying:{url} is disabled, but composer:{composer}/spampling rate:{hz}/bit rate:{bitRate}/genre:{genre} are available.", + "postartwork":"Attach an Artwork of Spotify", + "tts":"TTS(text to speech) Preferences", + "speed":"Speed", + "speedwarn":"1-100(default:10)", + "pitch":"Pitch", + "pitchwarn":"0-100(default:50)", + "vol":"Volume", + "volwarn":"0-100(default:100)", + "test":"Test", + "sample":"TheDesk is an open-source Mastodon client for PC.", + "playstop":"Play/Stop", + "back":"Back", + "keyscs":"Keyboard shortcuts", + "keyscr":"Jump to n(1-9)th column", + "keynew":"Open toot box", + "keytoggle":"Toggle toot box", + "keypost":"Post", + "keyunread":"Make all notifications read", + "keyesc":"Hide toot box", + "keyf5":"Super Reload", + "keyclear":"Clear toot box", + "keyacctman":"Account Manager", + "keyshowprof":"Show profile of selecting", + "keyrow":"Show next or previous image", + "keyzoom":"Mousewheel:Zoom a image", + "reset":"Reset(Danger)", + "about":"About TheDesk", + "hp":"Website", + "support":"Support", + "help":"Help", + "sushi":"Give me a sushi!", + "checkup":"Check update", + "ossJP":"" +} \ No newline at end of file diff --git a/app/language/setting.ja.json b/app/language/setting.ja.json new file mode 100644 index 00000000..fd1bcda5 --- /dev/null +++ b/app/language/setting.ja.json @@ -0,0 +1,128 @@ +{ + "setting":"設定", + "set":"設定", + "yes":"はい", + "no":"いいえ", + "change":"変更", + "env":"環境設定", + "setlang":"言語", + "theme":"テーマの設定", + "popup":"新規通知のポップアップお知らせの表示秒数", + "popupwarn":"0に設定すると表示されません", + "s":"秒", + "nativenotf":"ネイティブ通知設定", + "nnwarn":"Windows 10の最新バージョンでは通知が表示されません。これは既知のバグですが解決が難しいため保留しています。", + "nntest":"通知テスト", + "minwidth":"マルチカラムの最低横幅", + "minwidthwarn":"画面全体の横幅÷コラム数がこの値を超えた時、横スクロールとなります。", + "above":"以上", + "font":"フォント", + "fontwarn":"ローカルフォントを指定します。", + "fontsize":"フォントサイズ", + "absolute":"絶対指定", + "timeline":"タイムラインの設定", + "timemode":"時間表記設定", + "relativetime":"相対時間の例:\"1分前\",\"3日前\"", + "absolutetime":"絶対時間の例\"23:25:21\",\"2017年12月30日 23:59:00\"", + "mixtime":"混合表示は、当日のトゥートのみ相対、それ以外は絶対で表示 ", + "relativesel":"相対時間", + "absolutesel":"絶対時間", + "doublesel":"両方表示", + "mixsel":"混合表示", + "locale":"独自ロケールを使用", + "localewarn":"対応インスタンスではそのインスタンスにあわせた言語表示ができます。", + "nswf":"非表示設定の画像(NSFW)を隠す", + "nsfwwarn":"きつめのぼかしがかかります。", + "cw":"非表示設定のテキスト(CW)を隠す", + "gif":"アイコンのアニメーションを再生する", + "tag":"タグタイムラインの表示範囲", + "tagfed":"接続しているインスタンス", + "taglocal":"検索対象のインスタンスのみ", + "via":"viaを表示する", + "mouseover":"マウスオーバーするまでアクションメニューを非表示", + "mouseoverwarn":"1画面で得られる情報量が格段にアップしますが、すこし鬱陶しいと思うかもしれません。", + "autofold":"指定行数以上を折りたたむ", + "autofoldwarn":"5文字以下のトゥートは折りたたみません。また、折りたたみ時は改行が描画されません。改行のみを行数とカウントします。", + "lines":"行", + "letters":"文字", + "or":"または", + "imgheight":"画像の高さ", + "post":"投稿設定", + "defaultcw":"デフォルトの警告文", + "defaultvis":"デフォルトの公開設定", + "public":"公開(Public)", + "unlisted":"未収載(Unlisted)", + "private":"非公開(Private)", + "direct":"ダイレクト(Direct)", + "memory":"前回の投稿設定を記憶する(インスタンスごとに記憶されます)", + "useapi":"マストドンアカウント設定の既定値", + "postimg":"画像投稿設定", + "showurl":"画像を投稿し、画像のURLを最後に表示", + "nourl":"画像を投稿するがURLは表示しない", + "disabled":"現在利用できません。", + "quote":"引用形式", + "simple":"URLのみ", + "mention":"URLとアカウント名(相手に通知)", + "full":"本文・URL・アカウント名", + "main":"投稿後や起動時のアカウント", + "mainwarn":"メインアカウントはアカウント設定で指定できます。投稿以外のアカウント選択にも影響します。", + "lastacct":"最後に使用したアカウント", + "usemainacct":"メインアカウント", + "keysc":"キーボードショートカットの設定", + "iks":"簡単文字入力", + "okswarn":"絵文字やタグ、>BTなどを登録しておくとすぐに入力できます。", + "muteemp":"ミュート・強調の設定", + "climute":"クライアントミュート", + "cliemp":"クライアント強調", + "cliwarn":"各トゥートのクライアントをクリックすると設定できます。", + "enter":"Enterで確定", + "wordmute":"ワードミュート", + "wordemp":"ワード強調", + "useremp":"ユーザー強調", + "useerempwarn":"各ユーザーのデータ表示画面で設定できます。", + "empcolorwarn":"強調色(テーマによって異なります。)", + "spotify":"SpotifyとNowPlayingの設定", + "spotifynote1":"", + "spotifynote2":"ボタンから簡単にNowPlayingができます。", + "link":"アカウントの連携", + "linkwarn":"APIの性質上,thedesk.topへアクセスします。", + "connect":"接続", + "disconnect":"切断", + "templeteedit":"テンプレートの編集", + "templeteeditwarn":"以下を編集してテンプレートを変更できます。", + "templete1":"テンプレート:{song}:曲名/{album}:アルバム名/{artist}:アーティスト名/{url}:各曲のSpotifyのURL", + "templete2":"iTunes NowPlayingでも{url}以外のテンプレートに従ってトゥートされます。また、作曲家{composer}/サンプルレート{hz}/ビットレート{bitRate}/ジャンル{genre}が有効です。", + "postartwork":"Spotifyでアルバムアートワークを添付する", + "tts":"読み上げの設定", + "speed":"読み上げの速さ", + "speedwarn":"1-100まで、デフォルトは10。", + "pitch":"読み上げの高さ", + "pitchwarn":"0-100まで、デフォルトは50。(大きくなるほど高い)", + "vol":"読み上げの音量", + "volwarn":"0-100まで、デフォルトは100。", + "test":"テスト", + "sample":"これはテスト音声です。TheDeskはオープンソースのPC向けマストドンクライアントです。マルチインスタンスやマルチカラムに対応しています。", + "playstop":"再生/停止", + "back":"戻る", + "keyscs":"キーボードショートカット一覧", + "keyscr":"1番目~9番目のTLにスクロール", + "keynew":"投稿パネルを開く", + "keytoggle":"投稿パネルを開閉", + "keypost":"投稿", + "keyunread":"全ての通知を既読にする", + "keyesc":"投稿パネルを消す", + "keyf5":"スーパーリロード", + "keyclear":"入力内容を消す", + "keyacctman":"アカウントマネージャ", + "keyshowprof":"現在選択中のプロフィール", + "keyrow":"イメージビューワー起動時に画像切り替え", + "keyzoom":"マウスホイール:イメージビューワー時に拡大縮小", + "reset":"初期化", + "about":"このソフトについて", + "hp":"公式HP", + "support":"支援", + "help":"ヘルプ", + "sushi":"寿司を投げる", + "checkup":"アップデートを確認", + "ossJP":"(オープンソースライセンス)" +} \ No newline at end of file diff --git a/app/language/update.en.json b/app/language/update.en.json new file mode 100644 index 00000000..18d9d542 --- /dev/null +++ b/app/language/update.en.json @@ -0,0 +1,17 @@ +{ + "updatehere":"Latest TheDesk", + "nowver":"Current version", + "afterdl":"TheDesk will be quit TheDesk after downloading.", + "download":"Download", + "cdn":"Delivered by Amazon Web Services(S3/CloudFront)", + "releasenote1":"Visit a releasenote of ", + "releasenote2":"", + "skipupd":"Skip this uodate", + "nexttl":"until next TL loading", + "nextver":"until next version", + "endthedesk":"Quit", + "about":"About TheDesk", + "problem1":"Some problems? Please download on ", + "problem2":"", + "dlnow":"Downloading" +} \ No newline at end of file diff --git a/app/language/update.ja.json b/app/language/update.ja.json new file mode 100644 index 00000000..715b9229 --- /dev/null +++ b/app/language/update.ja.json @@ -0,0 +1,17 @@ +{ + "updatehere":"アップデートがあります", + "nowver":"現在のバージョン", + "afterdl":"ダウンロード後は選択したフォルダが開きソフトは閉じられます。", + "download":"ダウンロード", + "cdn":"アップデートはセキュアかつ高速なAmazon CloudFront CDNを通じて提供されます。", + "releasenote1":"アップデート内容の詳細は", + "releasenote2":"をご覧ください。", + "skipupd":"このアップデートを飛ばす", + "nexttl":"次回TL表示時まで", + "nextver":"次のバージョンが出るまで", + "endthedesk":"このソフトを終了", + "about":"このソフトについて", + "problem1":"アップデートに問題が生じる場合は", + "problem2":"からのダウンロードをおためしください。", + "dlnow":"ダウンロード中" +} \ No newline at end of file diff --git a/app/main.js b/app/main.js index 78a96d41..8bf300fc 100644 --- a/app/main.js +++ b/app/main.js @@ -179,6 +179,54 @@ ipc.on('native-notf', function(e, args) { }); } }); +//言語 +ipc.on('lang', function(e, arg) { + //index.html + var indextemp=fs.readFileSync(__dirname + '/index.sample.html', 'utf8'); + var indexjson=JSON.parse(fs.readFileSync(__dirname + '/language/index.'+arg+'.json', 'utf8')); + Object.keys(indexjson).forEach(function(indexkey) { + var regExp = new RegExp("{{" + indexkey + "}}", "g"); + indextemp = indextemp.replace(regExp, indexjson[indexkey]); + }); + var regExp = new RegExp("{{lang}}", "g"); + indextemp = indextemp.replace(regExp, arg); + fs.writeFileSync(__dirname + '/index.html',indextemp); + + //acct.html + var accttemp=fs.readFileSync(__dirname + '/acct.sample.html', 'utf8'); + var acctjson=JSON.parse(fs.readFileSync(__dirname + '/language/acct.'+arg+'.json', 'utf8')); + Object.keys(acctjson).forEach(function(acctkey) { + var regExp = new RegExp("{{" + acctkey + "}}", "g"); + accttemp = accttemp.replace(regExp, acctjson[acctkey]); + }); + var regExp = new RegExp("{{lang}}", "g"); + accttemp = accttemp.replace(regExp, arg); + fs.writeFileSync(__dirname + '/acct.html',accttemp); + + //setting.html + var settingtemp=fs.readFileSync(__dirname + '/setting.sample.html', 'utf8'); + var settingjson=JSON.parse(fs.readFileSync(__dirname + '/language/setting.'+arg+'.json', 'utf8')); + Object.keys(settingjson).forEach(function(settingkey) { + var regExp = new RegExp("{{" + settingkey + "}}", "g"); + settingtemp = settingtemp.replace(regExp, settingjson[settingkey]); + }); + var regExp = new RegExp("{{lang}}", "g"); + settingtemp = settingtemp.replace(regExp, arg); + fs.writeFileSync(__dirname + '/setting.html',settingtemp); + + //update.html + var updatetemp=fs.readFileSync(__dirname + '/update.sample.html', 'utf8'); + var updatejson=JSON.parse(fs.readFileSync(__dirname + '/language/update.'+arg+'.json', 'utf8')); + Object.keys(updatejson).forEach(function(updatekey) { + var regExp = new RegExp("{{" + updatekey + "}}", "g"); + updatetemp = updatetemp.replace(regExp, updatejson[updatekey]); + }); + var regExp = new RegExp("{{lang}}", "g"); + updatetemp = updatetemp.replace(regExp, arg); + fs.writeFileSync(__dirname + '/update.html',updatetemp); + console.log("done"); + mainWindow.webContents.send('langres', ""); +}) ipc.on('update', function(e, x, y) { var platform=process.platform; diff --git a/app/oss.html b/app/oss.html index 5731397f..21f1f8ec 100644 --- a/app/oss.html +++ b/app/oss.html @@ -14,8 +14,9 @@ -undo戻る +undo戻る/Back TheDeskのライセンスについてはTheDesk LICENSE (Latest Ver.)を参照。
    +LICENSE of TheDesk:TheDesk LICENSE (Latest Ver.)
    Electron
    electron/electron
    diff --git a/app/setting.html b/app/setting.html index e5858173..b66a7d96 100644 --- a/app/setting.html +++ b/app/setting.html @@ -1,5 +1,5 @@ - + Settings - TheDesk @@ -14,14 +14,18 @@ -

    設定

    + + +

    Preferences

    • - desktop_windows環境設定 + desktop_windowsSystem Preferences
      -
      テーマの設定
      +
      Languages
      + Change +
      Themes
      @@ -33,282 +37,274 @@
      -
      新規通知のポップアップお知らせの表示秒数
      0に設定すると表示されません +
      Popup notification(on window)
      Hide to set "0"
      - 秒 - + sec +
      -
      ネイティブ通知設定
      - Windows 10の最新バージョンでは通知が表示されません。これは既知のバグですが解決が難しいため保留しています。
      通知テスト +
      Native notification
      + This does not work on Windows 10.
      Notification test
      - + - +
      -
      マルチカラムの最低横幅
      画面全体の横幅÷コラム数がこの値を超えた時、横スクロールとなります。 +
      Minimam width of columns
      Scroll bar will be shown when your window size is more than ammounts of columns.
      - px以上 - + pxabove +
      -
      フォント
      - ローカルフォントを指定します。
      +
      Font
      + Set local font
      - +
      -
      フォントサイズ
      - 15px(絶対指定) +
      Font size
      + 15px(absolute value)
      px - +
    • - reorderタイムラインの設定 + reorderTimeline Preferences
      -
      時間表記設定
      相対時間の例:"1分前","3日前" -
      絶対時間の例"23:25:21","2017年12月30日 23:59:00" -
      混合表示は、当日のトゥートのみ相対、それ以外は絶対で表示 +
      Time format
      Relative format:"1 minutes ago","3 days ago" +
      Absolute format:"23:25:21","2017/12/30 23:59:00" +
      Mixed format:toots posted today are relative-format, others are absolute-format.
      - + - + - + - -
      独自ロケールを使用
      対応インスタンスではそのインスタンスにあわせた言語表示ができます。 + +
      Instance unique locale
      This value is available on some Japanese instances
      - + - +
      -
      非表示設定の画像(NSFW)を隠す
      きつめのぼかしがかかります。 +
      Hide NSFW pictures
      Strong blur effect
      - + - +
      -
      非表示設定のテキスト(CW)を隠す
      +
      Hide CW contents
      - + - +
      -
      アイコンのアニメーションを再生する
      +
      Animated GIF images animation
      - + - +
      -
      タグタイムラインの表示範囲
      +
      Tag TL Search
      - + - +
      -
      viaを表示する
      +
      Show via
      - + - +
      -
      マウスオーバーするまでアクションメニューを非表示
      - 1画面で得られる情報量が格段にアップしますが、すこし鬱陶しいと思うかもしれません。
      +
      Hide aaction buttons without mouseover
      + You may feel unconfortable:(
      - + - +
      -
      指定行数以上を折りたたむ
      - 5文字以下のトゥートは折りたたみません。また、折りたたみ時は改行が描画されません。改行のみを行数とカウントします。 +
      Auto folding
      + TheDesk does not collapse totes of 5 characters or less. Also, when collapsing, newlines are not shown. TheDesk count only newlines as the number of lines.
      - 行以上または - 文字以上 - + linesaboveor + lettersabove +
      -
      画像の高さ
      +
      Height of images +
      px - +

    • - send投稿設定 + sendPosting Preferences
      -
      デフォルトの警告文
      +
      Default warining text
      - +
      -
      デフォルトの公開設定
      +
      Default visibility
      - + - + - + - + - + - +
      -
      デフォルトでのボックスの挙動(起動時・トゥート後)
      - - - - - - -
      -
      画像投稿設定
      +
      Posting images preferences
      - + - +
      -
    • - keyboardキーボードショートカットの設定 + keyboardKeyboard shortcut Preferences
      -
      簡単文字入力
      - 絵文字やタグ、>BTなどを登録しておくとすぐに入力できます。
      +
      Easy inserter
      + You can insert any letters and emojis with only 3 keys
      Ctrl+Shift+1: -

      +

      Ctrl+Shift+2: -

      +

      Ctrl+Shift+3: -

      +

    • - bookmarkミュート・強調の設定 + bookmarkMute & Emphasis Preferences
      -
      クライアントミュート
      +
      Client Mute
      -
      クライアント強調
      - 各トゥートのクライアントをクリックすると設定できます。 -
      ワードミュート
      - Enterで確定
      +
      Client Emphasis
      + Click client name on toots to toggle mute and emphasis. +
      Words Mute
      + Enter to set
      - -
      ワード強調
      - Enterで確定
      + +
      Words Emphasis
      + Enter to set
      - -
      ユーザー強調
      - 各ユーザーのデータ表示画面で設定できます。 -  強調色(テーマによって異なります。)  + +
      Users Emphasis
      + Set on users data modals. +  Use this color to emphasis 
    • - SpotifyとNowPlayingの設定 + Spotify and NowPlaying Preferences
      - music_noteボタンから簡単にNowPlayingができます。
      -
      アカウントの連携
      - APIの性質上,thedesk.topへアクセスします。
      -
      - 接続 - 切断 -
      テンプレートの編集
      - 以下を編集してテンプレートを変更できます。
      + Click music_noteicon to NowPlaying
      +
      Account Connection
      + TheDesk save your data on thedesk.top server.
      +
      + Connect + Disconnect +
      Edit a template
      +

      - テンプレート:{song}:曲名/{album}:アルバム名/{artist}:アーティスト名/{url}:各曲のSpotifyのURL
      - iTunes NowPlayingでも{url}以外のテンプレートに従ってトゥートされます。また、作曲家{composer}/サンプルレート{hz}/ビットレート{bitRate}/ジャンル{genre}が有効です。
      - CINDERELLA NowPlaying(imastodon.net限定)では作曲家{composer}/作詞家{lyricist}/BPM{bpm}が有効です。
      - CINDERELLA NowPlayingはimastodon.netにログインしているとき、トゥート欄に「//」を入力し、その後に曲名を入れることで可能です。
      - -
      Spotifyでアルバムアートワークを添付する
      - この設定はCINDERELLA NowPlaying(imastodon.net限定)にも適用されます。
      + Refer:{song}:Song name/{album}:Album name/{artist}:Artist name/{url}:URL to Spotify
      + iTunes NowPlaying:{url} is disabled, but composer:{composer}/spampling rate:{hz}/bit rate:{bitRate}/genre:{genre} are available.
      + CINDERELLA NowPlaying(imastodon.net限定)では作曲家{composer}/作詞家{lyricist}/BPM{bpm}が有効です。
      + CINDERELLA NowPlayingはimastodon.netにログインしているとき、トゥート欄に「//」を入力し、その後に曲名を入れることで可能です。

      + +
      Attach an Artwork of Spotify
      + この設定はCINDERELLA NowPlaying(imastodon.net限定)にも適用されます。
      - + - +
    • - hearing読み上げの設定 + hearingTTS(text to speech) Preferences
      -
      読み上げの速さ
      - 1-100まで、デフォルトは10。
      +
      Speed
      + 1-100(default:10)

      -
      読み上げの高さ
      - 0-100まで、デフォルトは50。(大きくなるほど高い)
      +
      Pitch
      + 0-100(default:50)

      -
      読み上げの音量
      - 0-100まで、デフォルトは100。
      +
      Volume
      + 0-100(default:100)

      -
      テスト
      - -
      +
      Test
      + +

      - +

    -Beta Index
    -undo戻る +undoBack
    -
    キーボードショートカット一覧 -
  • Ctrl+1-9:1番目~9番目のTLにスクロール
  • -
  • N:投稿パネルを開く
  • -
  • X:投稿パネルを開閉
  • -
  • Ctrl+Enter:投稿
  • -
  • Ctrl+E:全ての通知を既読にする
  • -
  • Esc:投稿パネルを消す
  • -
  • F5:スーパーリロード
  • -
  • E:投稿パネルの幅を切り替え
  • -
  • Ctrl+Shift+C:入力内容を消す
  • -
  • Ctrl+Shift+S:設定
  • -
  • Ctrl+Shift+M:アカウントマネージャ
  • +
    Keyboard shortcuts +
  • Ctrl+1-9:Jump to n(1-9)th column
  • +
  • N:Open toot box
  • +
  • X:Toggle toot box
  • +
  • Ctrl+Enter:Post
  • +
  • Ctrl+E:Make all notifications read
  • +
  • Esc:Hide toot box
  • +
  • F5:Super Reload
  • +
  • Ctrl+Shift+C:Clear toot box
  • +
  • Ctrl+Shift+S:Preferences
  • +
  • Ctrl+Shift+M:Account Manager
  • Ctrl+Shift+N:NowPlaying(Spotify)
  • -
  • Ctrl+Shift+P:現在選択中のプロフィール
  • -
  • ←/→:イメージビューワー起動時に画像切り替え
  • -
  • マウスホイール:イメージビューワー時に拡大縮小
  • +
  • Ctrl+Shift+P:Show profile of selecting
  • +
  • ←/→:Show next or previous image
  • +
  • Mousewheel:Zoom a image
  • +
    以下Markdownに対応したインスタンスのみ。
  • Ctrl+B/I/S/U:太字/斜字/取り消し/下線
  • @@ -319,17 +315,18 @@
  • Ctrl+R: アスタルテ暇人ランキングを開く

  • -

    - -web公式HP -trending_up支援(Enty) -listヘルプ/Docs(制作中) +
    +

    + +webWebsite +trending_upSupport(Enty) +listHelp/Docs(Constructing) GitHub Developer: Cutls@kirishima.cloud -寿司を投げる +Give me a sushi!
    -アップデートを確認
    -OSS License(オープンソースライセンス)
    +Check update
    +OSS License
    Copyright © TheDesk 2018 All Rights Reserved. TheDesk LICENSE (Latest Ver.)
    Developer: Cutls P( diff --git a/app/setting.sample.html b/app/setting.sample.html new file mode 100644 index 00000000..92f46f44 --- /dev/null +++ b/app/setting.sample.html @@ -0,0 +1,345 @@ + + + + Settings - TheDesk + + + + + + + + + + + + + + +

    {{setting}}

    +
      +
    • +
      + desktop_windows{{env}} +
      +
      +
      {{setlang}}
      + {{change}} +
      {{theme}}
      + + + + + + + + + + +
      +
      {{popup}}
      {{popupwarn}} +
      + {{s}} + +
      +
      {{nativenotf}}
      + {{nnwarn}}
      {{nntest}} +
      + + + + +
      +
      {{minwidth}}
      {{minwidthwarn}} +
      + px{{above}} + +
      +
      {{font}}
      + {{fontwarn}}
      + + +
      +
      {{fontsize}}
      + 15px({{absolute}}) +
      + px + +
      +
    • +
    • +
      + reorder{{timeline}} +
      +
      +
      {{timemode}}
      {{relativetime}} +
      {{absolutetime}} +
      {{mixtime}} +
      + + + + + + + + +
      {{locale}}
      {{localewarn}} +
      + + + + +
      +
      {{nswf}}
      {{nsfwwarn}} +
      + + + + +
      +
      {{cw}}
      + + + + +
      +
      {{gif}}
      + + + + +
      +
      {{tag}}
      + + + + +
      +
      {{via}}
      + + + + +
      +
      {{mouseover}}
      + {{mouseoverwarn}}
      + + + + +
      +
      {{autofold}}
      + {{autofoldwarn}} +
      + {{lines}}{{above}}{{or}} + {{letters}}{{above}} + +
      +
      {{imgheight}} +
      + px + +
      +
      +
      +
    • +
    • +
      + send{{post}} +
      +
      +
      {{defaultcw}}
      + + +
      +
      {{defaultvis}}
      + + + + + + + + + + + + +
      +
      {{postimg}}
      + + + + +
      + + +
      +
      {{quote}}
      + + + + + + +
      +
      {{main}}
      + {{mainwarn}}
      + + + + + +
      +
      +
    • +
    • +
      + keyboard{{keysc}} +
      +
      +
      {{iks}}
      + {{okswarn}}
      + Ctrl+Shift+1: +

      + Ctrl+Shift+2: +

      + Ctrl+Shift+3: +

      + +
      +
    • +
    • +
      + bookmark{{muteemp}} +
      +
      +
      {{climute}}
      +
      +
      {{cliemp}}
      + {{cliwarn}} +
      {{wordmute}}
      + {{enter}}
      +
      + +
      {{wordemp}}
      + {{enter}}
      +
      + +
      {{useremp}}
      + {{useerempwarn}} +  {{empcolorwarn}}  +
      +
    • +
    • +
      + {{spotify}} +
      +
      + {{spotifynote1}}music_note{{spotifynote2}}
      +
      {{link}}
      + {{linkwarn}}
      +
      + {{connect}} + {{disconnect}} +
      {{templeteedit}}
      + {{templeteeditwarn}}
      +
      + {{templete1}}
      + {{templete2}}
      + CINDERELLA NowPlaying(imastodon.net限定)では作曲家{composer}/作詞家{lyricist}/BPM{bpm}が有効です。
      + CINDERELLA NowPlayingはimastodon.netにログインしているとき、トゥート欄に「//」を入力し、その後に曲名を入れることで可能です。

      + +
      {{postartwork}}
      + この設定はCINDERELLA NowPlaying(imastodon.net限定)にも適用されます。
      + + + + +
      +
      +
    • +
    • +
      + hearing{{tts}} +
      +
      +
      {{speed}}
      + {{speedwarn}}
      +

      +
      {{pitch}}
      + {{pitchwarn}}
      +

      +
      {{vol}}
      + {{volwarn}}
      +

      +
      {{test}}
      + +
      +
      + +
      +
    • +
    +
    +undo{{back}} +
    +
    {{keyscs}} +
  • Ctrl+1-9:{{keyscr}}
  • +
  • N:{{keynew}}
  • +
  • X:{{keytoggle}}
  • +
  • Ctrl+Enter:{{keypost}}
  • +
  • Ctrl+E:{{keyunread}}
  • +
  • Esc:{{keyesc}}
  • +
  • F5:{{keyf5}}
  • +
  • Ctrl+Shift+C:{{keyclear}}
  • +
  • Ctrl+Shift+S:{{setting}}
  • +
  • Ctrl+Shift+M:{{keyacctman}}
  • +
  • Ctrl+Shift+N:NowPlaying(Spotify)
  • +
  • Ctrl+Shift+P:{{keyshowprof}}
  • +
  • ←/→:{{keyrow}}
  • +
  • {{keyzoom}}
  • +
    +以下Markdownに対応したインスタンスのみ。 +
    +
  • Ctrl+B/I/S/U:太字/斜字/取り消し/下線
  • +
  • Shift+Enter:全角スペースを入れて改行
  • +
  • Shift+Space:ゼロ幅スペース
  • +以下アスタルテにログインしている場合のみ +
    +
  • Ctrl+R: +アスタルテ暇人ランキングを開く +

  • +
    +

    + +web{{hp}} +trending_up{{support}}(Enty) +list{{help}}/Docs(Constructing) +GitHub +Developer: Cutls@kirishima.cloud +{{sushi}} +
    +{{checkup}}
    +OSS License{{ossJP}}
    +Copyright © TheDesk 2018 All Rights Reserved. + TheDesk LICENSE (Latest Ver.) +
    Developer: Cutls P( + @Cutls@kirishima.cloud) +
    +

    +TheDeskおよびCutls Pは被災地支援のためのマストドン研究会をログイン機能提供等の形で応援しています。
    +タグタイムラインを開く:#被災地支援のためのマストドン研究会
    + + + + + + + + \ No newline at end of file diff --git a/app/update.html b/app/update.html index 9042a8c9..88f3dc4b 100644 --- a/app/update.html +++ b/app/update.html @@ -1,5 +1,5 @@ - + Update - TheDesk @@ -21,21 +21,21 @@ a,button{ -
    アップデートがあります[TheDesk ]
    +
    Latest TheDesk[TheDesk ]

    -現在のバージョン
    -ダウンロード後は選択したフォルダが開きソフトは閉じられます。
    - +Current version
    +TheDesk will be quit TheDesk after downloading.
    +


    - アップデートはセキュアかつ高速なAmazon CloudFront CDNを通じて提供されます。
    - アップデート内容の詳細はGitHubをご覧ください。

    - このアップデートを飛ばす(次回TL表示時まで/次のバージョンが出るまで)
    - このソフトを終了
    - このソフトについて
    - アップデートに問題が生じる場合はTheDesk HPからのダウンロードをおためしください。 + Delivered by Amazon Web Services(S3/CloudFront)
    + Visit a releasenote of GitHub

    + Skip this uodate(until next TL loading/until next version)
    + Quit
    + About TheDesk
    + Some problems? Please download on TheDesk HP + + +
    {{updatehere}}[TheDesk ]
    +
    +{{nowver}}
    +{{afterdl}}
    + +

    +
    +
    +

    + {{cdn}}
    + {{releasenote1}}GitHub{{releasenote2}}

    + {{skipupd}}({{nexttl}}/{{nextver}})
    + {{endthedesk}}
    + {{about}}
    + {{problem1}}TheDesk HP{{problem2}} + + +