Compare commits

...

25 Commits

Author SHA1 Message Date
b60af54db1 5.13.0 2018-08-04 11:34:36 +09:00
047320e50a Merge pull request #2085 from syuilo/l10n_master
New Crowdin translations
2018-08-04 11:33:49 +09:00
29418ecbb4 🎨 2018-08-04 11:32:53 +09:00
67e97310cf Clean up 2018-08-04 11:25:39 +09:00
33d3d5c570 スライダーコントロールを追加するなど 2018-08-04 11:24:15 +09:00
ee050cc37e ✌️ 2018-08-04 10:40:09 +09:00
1ba43d83b0 New translations ja.yml (French) 2018-08-04 03:23:32 +09:00
72fc6d387f New translations ja.yml (French) 2018-08-04 03:11:27 +09:00
4a935e0659 New translations ja.yml (French) 2018-08-04 03:01:17 +09:00
8a0dab49e0 New translations ja.yml (French) 2018-08-04 02:51:19 +09:00
65574abab7 Merge pull request #2084 from syuilo/l10n_master
New Crowdin translations
2018-08-04 02:14:24 +09:00
37d21462b8 New translations ja.yml (Polish) 2018-08-04 02:11:50 +09:00
1acd25810c Merge pull request #2083 from syuilo/l10n_master
New Crowdin translations
2018-08-04 02:02:04 +09:00
a81b771f15 New translations ja.yml (Polish) 2018-08-04 02:01:40 +09:00
d30b2e7270 Merge branch 'master' of https://github.com/syuilo/misskey 2018-08-04 01:51:13 +09:00
69f82508cb 5.12.0 2018-08-04 01:50:45 +09:00
fddaa11645 Merge pull request #2081 from syuilo/l10n_master
New Crowdin translations
2018-08-04 01:50:13 +09:00
bbe740785d Fix doc 2018-08-04 01:49:32 +09:00
0389afa0fe 🎨 2018-08-04 01:48:02 +09:00
caec6933d1 Fix bug 2018-08-04 01:47:57 +09:00
420164c59a Trim text 2018-08-04 01:09:00 +09:00
b13f42645b Fix bug 2018-08-04 01:03:48 +09:00
22c945d21b New translations ja.yml (Polish) 2018-08-04 00:31:18 +09:00
12fab6fa53 New translations ja.yml (French) 2018-08-03 23:41:28 +09:00
51651e0c87 New translations ja.yml (French) 2018-08-03 23:31:32 +09:00
11 changed files with 209 additions and 128 deletions

1
.gitignore vendored
View File

@ -4,6 +4,7 @@
/node_modules
/build
/built
built
/data
/.cache-loader
npm-debug.log

View File

@ -7,9 +7,9 @@ common:
about-title: "Une ⭐ du fédiverse."
about: "Merci d'avoir découvert Misskey. Misskey est une <b>plateforme de micro-blogging distribuée</b> née sur Terre. Parce qu'il fait partie du Fédiverse (un univers composé de diverses plateformes de réseaux sociaux organisées), il est mutuellement connecté avec d'autres plateformes de réseaux sociaux. Désirez-vous prendre une pause, pendant un instant, loin de l'agitation de la ville et plonger dans un nouvel Internet ?"
adblock:
detected: "広告ブロッカーを無効にしてください"
warning: "<strong>Misskeyは広告を掲載していません</strong>が、広告をブロックする機能が有効だと一部の機能が利用できなかったり、不具合が発生する場合があります。"
application-authorization: "アプリの連携"
detected: "Veuillez désactiver le bloqueur de publicités"
warning: "<strong>Misskey n'utilise pas de publicités</strong>, mais quelques options peuvent être non disponibles ou fonctionneraient mal si un bloqueur de publicités est activé."
application-authorization: "Permissions de l'application"
close: "Fermer"
customization-tips:
title: "Conseils de personnalisation"
@ -21,7 +21,7 @@ common:
notification:
file-uploaded: "Le fichier a été téléversé !"
message-from: "Message de {} :"
reversi-invited: "対局への招待があります"
reversi-invited: "Invité à jouer"
reversi-invited-by: "Invité par {} :"
notified-by: "Notifié par {} :"
reply-from: "Réponse de {} :"
@ -95,8 +95,8 @@ common:
turn-of: "Cest le tour de {}"
past-turn-of: "C'est au tour de {}"
won: "{} a gagné"
black: "Noir"
white: "Blanc"
black: "Noirs"
white: "Blancs"
total: "Total"
this-turn: "Tour de {}"
widgets:
@ -141,15 +141,15 @@ common:
stack-left: "Vers la gauche"
pop-right: "Vers la droite"
auth/views/form.vue:
share-access: "<i>{{ app.name }}</i>があなたのアカウントにアクセスすることを<b>許可</b>しますか?"
share-access: "Désirez-vous <b>autoriser</b> <i>{{ app.name }}</i> à avoir accès à votre compte ?"
permission-ask: "Cette application nécessite les autorisations suivantes :"
account-read: "アカウントの情報を見る。"
account-read: "Afficher les informations du compte :"
account-write: "Modifications des informations du compte :"
note-write: "投稿する。"
like-write: "いいねしたりいいね解除する。"
following-write: "フォローしたりフォロー解除する。"
note-write: "Publier."
like-write: "Réagir aux publications."
following-write: "S'abonner et se désabonner."
drive-read: "Lire votre Drive"
drive-write: "ドライブを操作する。"
drive-write: "Téléverser/supprimer des fichiers dans votre Drive."
notification-read: "Lire vos notifications."
notification-write: "Gérer vos notifications."
cancel: "Annuler"
@ -181,22 +181,22 @@ common/views/components/games/reversi/reversi.index.vue:
all-games: "Tous les jeux"
enter-username: "Saisir un nom d'utilisateur"
game-state:
ended: "終了"
ended: "Terminée"
playing: "En cours"
common/views/components/games/reversi/reversi.room.vue:
settings-of-the-game: "Paramètres du jeu"
choose-map: "Sélectionnez une carte"
random: "Aléatoire"
black-or-white: "Noir/Blanc"
black-is: "{}が黒"
black-or-white: "Noirs/Blancs"
black-is: "{} Noirs"
rules: "Règles"
is-llotheo: "石の少ない方が勝ち(ロセオ)"
looped-map: "ループマップ"
looped-map: "Carte en boucle"
can-put-everywhere: "どこでも置けるモード"
settings-of-the-bot: "Configuration du bot"
this-game-is-started-soon: "ゲームは数秒後に開始されます"
waiting-for-other: "相手の準備が完了するのを待っています"
waiting-for-me: "あなたの準備が完了するのを待っています"
this-game-is-started-soon: "La partie commencera dans quelques instants"
waiting-for-other: "En attente que l'adversaire soit prêt"
waiting-for-me: "En attente que vous soyez prêt"
waiting-for-both: "準備中"
cancel: "Annuler"
ready: "Prêt"
@ -358,7 +358,7 @@ common/views/widgets/memo.vue:
memo: "Écrivez ici !"
save: "Enregistrer"
common/views/widgets/slideshow.vue:
folder-customize-mode: "フォルダを指定するには、カスタマイズモードを終了してください"
folder-customize-mode: "Veuillez quitter le mode personnalisé pour pouvour spécifier un dossier"
folder: "Veuillez cliquer pour spécifier le dossier"
no-image: "Il n'y a aucune image dans ce dossier"
common/views/widgets/tips.vue:
@ -369,27 +369,27 @@ common/views/widgets/tips.vue:
tips-line5: "ドライブにファイルをドラッグ&ドロップしてアップロードできます"
tips-line6: "ドライブでファイルをドラッグしてフォルダ移動できます"
tips-line7: "ドライブでフォルダをドラッグしてフォルダ移動できます"
tips-line8: "ホームは設定からカスタマイズできます"
tips-line8: "Vous pouvez personnaliser l'Accueil via les paramètres"
tips-line9: "Misskey est sous licence AGPLv3"
tips-line10: "タイムマシンウィジェットを利用すると、簡単に過去のタイムラインに遡れます"
tips-line11: "投稿の ... をクリックして、投稿をユーザーページにピン留めできます"
tips-line13: "投稿に添付したファイルは全てドライブに保存されます"
tips-line13: "Tous les fichiers attachés à cette publication sont sauvegardés dans le Drive"
tips-line14: "ホームのカスタマイズ中、ウィジェットを右クリックしてデザインを変更できます"
tips-line17: "「**」でテキストを囲むと**強調表示**されます"
tips-line19: "いくつかのウィンドウはブラウザの外に切り離すことができます"
tips-line20: "カレンダーウィジェットのパーセンテージは、経過の割合を示しています"
tips-line21: "APIを利用してbotの開発なども行えます"
tips-line21: "Vous pouvez aussi utiliser l'API pour développer des Bots."
tips-line23: "まゆかわいいよまゆ"
tips-line24: "Misskeyは2014年にサービスを開始しました"
tips-line24: "Misskey a vu le jour en 2014"
tips-line25: "対応ブラウザではMisskeyを開いていなくても通知を受け取れます"
common/views/pages/follow.vue:
signed-in-as: "Connecté en tant que {}"
signed-in-as: "Connecté·é en tant que {}"
following: "Suit"
follow: "Suivre"
request-pending: "Demande d'abonnement en attente"
follow-request: "Demande d'abonnement"
desktop/views/components/activity.chart.vue:
total: "Noir ... Total"
total: "Noirs ... Total"
notes: "Bleu ... Notes"
replies: "Rouge ... Réponses"
renotes: "Vert ... Partages"
@ -530,9 +530,9 @@ desktop/views/components/notifications.vue:
more: "Plus"
empty: "Pas de notifications"
desktop/views/components/post-form.vue:
add-visible-user: "+ユーザーを追加"
attach-location-information: "位置情報を添付する"
hide-contents: "内容を隠す"
add-visible-user: "+Ajouter un utilisateur"
attach-location-information: "Attacher des informations de localisation"
hide-contents: "Masquer les contenus"
reply-placeholder: "Répondre à cette note"
quote-placeholder: "Citer cette note"
submit: "Poster"
@ -552,11 +552,11 @@ desktop/views/components/post-form.vue:
create-poll: "Créer un sondage"
text-remain: "{} charactères restants"
recent-tags: "Récent"
click-to-tagging: "クリックでタグ付け"
visibility: "公開範囲"
geolocation-alert: "お使いの端末は位置情報に対応していません"
error: "エラー"
enter-username: "ユーザー名を入力してください"
click-to-tagging: "Cliquer pour tagguer"
visibility: "Visibilité"
geolocation-alert: "Votre appareil ne prend pas en charge les services de localisation"
error: "Erreur"
enter-username: "Saisir un nom d'utilisateur …"
desktop/views/components/post-form-window.vue:
note: "Nouvelle note"
reply: "Répondre"
@ -678,8 +678,8 @@ desktop/views/components/settings.api.vue:
desktop/views/components/settings.apps.vue:
no-apps: "Aucune application autorisée"
desktop/views/components/settings.drive.vue:
max: ""
in-use: "使用中"
max: "Maximum"
in-use: "en cours dutilisation"
desktop/views/components/settings.mute.vue:
no-users: "Aucun utilisateurs mis en sourdine"
desktop/views/components/settings.password.vue:
@ -702,7 +702,7 @@ desktop/views/components/settings.profile.vue:
other: "Autre"
is-bot: "Ce compte est un Bot"
is-cat: "Ce compte est un Chat"
profile-updated: "プロフィールを更新しました"
profile-updated: "Profil mis à jour"
desktop/views/components/sub-note-content.vue:
private: "cette publication est privée"
deleted: "cette publication a été supprimée"
@ -776,7 +776,7 @@ desktop/views/pages/welcome.vue:
signin-button: "Se connecter"
signup-button: "S'inscrire"
timeline: "Fil d'actualité"
powered-by-misskey: "Powered by <b>Misskey</b>."
powered-by-misskey: "Propulsé par <b>Misskey</b>."
desktop/views/pages/drive.vue:
title: "Lecteur de Misskey"
desktop/views/pages/favorites.vue:
@ -792,10 +792,10 @@ desktop/views/pages/selectdrive.vue:
cancel: "Annuler"
upload: "Uploader un ou plusieurs fichier(s) depuis votre PC"
desktop/views/pages/search.vue:
not-available: "検索機能を利用することができません。"
not-found: "「{}」に関する投稿は見つかりませんでした。"
not-available: "Vous ne pouvez pas utiliser la fonctionnalité de recherche."
not-found: "Aucun message trouvé pour '{}'"
desktop/views/pages/share.vue:
share-with: "{}で共有"
share-with: "Partager avec {}"
desktop/views/pages/tag.vue:
no-posts-found: "ハッシュタグ「{}」が付けられた投稿は見つかりませんでした。"
desktop/views/pages/user-list.users.vue:
@ -941,7 +941,7 @@ mobile/views/components/post-form.vue:
renote: "Republier"
quote-placeholder: "Citer ce billet ... (Facultatif)"
reply-placeholder: "Répondre à cette note"
cw-placeholder: "内容への注釈 (オプション)"
cw-placeholder: "Commenter le contenu (optionnel)"
location-alert: "Votre appareil ne prend pas en charge les services de localisation"
error: "Erreur"
username-prompt: "Saisir un nom d'utilisateur"
@ -999,14 +999,14 @@ mobile/views/pages/home.vue:
mobile/views/pages/tag.vue:
no-posts-found: "ハッシュタグ「{}」が付けられた投稿は見つかりませんでした。"
mobile/views/pages/welcome.vue:
signup: "新規登録"
signup: "S'enregistrer"
mobile/views/pages/widgets.vue:
dashboard: "ダッシュボード"
dashboard: "Tableau de bord"
widgets-hints: "ウィジェットを追加/削除したり並べ替えたりできます。ウィジェットを移動するには「三」をドラッグします。ウィジェットを削除するには「x」をタップします。いくつかのウィジェットはタップすることで表示を変更できます。"
mobile/views/pages/widgets/activity.vue:
activity: "アクティビティ"
activity: "Activité"
mobile/views/pages/share.vue:
share-with: "{}で共有"
share-with: "Partager avec {}"
mobile/views/pages/messaging.vue:
messaging: "Messagerie"
mobile/views/pages/messaging-room.vue:
@ -1023,7 +1023,7 @@ mobile/views/pages/notifications.vue:
notifications: "Notifications"
read-all: "Êtes vous sûr de vouloir marqués toutes les notifications non-lus en tant que lus?"
mobile/views/pages/games/reversi.vue:
reversi: "リバーシ"
reversi: "Reversi"
mobile/views/pages/settings/settings.profile.vue:
title: "Profil"
name: "Nom"
@ -1044,7 +1044,7 @@ mobile/views/pages/search.vue:
mobile/views/pages/selectdrive.vue:
select-file: "Choisissez un fichier"
mobile/views/pages/settings.vue:
signed-in-as: "Connecté en tant que {}"
signed-in-as: "Connecté·e en tant que {}"
lang: "Langue"
lang-tip: "Le rechargement de la page est requis afin d'appliquer les modifications."
recommended: "Recommandé"

View File

@ -10,10 +10,10 @@ common:
detected: "Spróbuj wyłączyć blokadę reklam."
warning: "<strong>Misskey nie zawiera reklam</strong>, ale część funkcji może nie działać prawidłowo z włączonym blokowaniem reklam."
application-authorization: "アプリの連携"
close: "閉じる"
close: "Zamknij"
customization-tips:
title: "カスタマイズのヒント"
paragraph1: "ホームのカスタマイズでは、ウィジェットを追加/削除したり、ドラッグ&ドロップして並べ替えたりすることができます。"
title: "Wskazówki o dostosowywaniu"
paragraph1: "Dostosowywanie strony głównej pozwala na dodawanie, usuwanie, przeciąganie i zmienianie kolejności widżetów."
paragraph2: "一部のウィジェットは、<strong><strong>右</strong>クリック</strong>することで表示を変更することができます。"
paragraph3: "ウィジェットを削除するには、ヘッダーの<strong>「ゴミ箱」</strong>と書かれたエリアにウィジェットをドラッグ&ドロップします。"
paragraph4: "カスタマイズを終了するには、右上の「完了」をクリックします。"
@ -193,14 +193,14 @@ common/views/components/games/reversi/reversi.room.vue:
is-llotheo: "石の少ない方が勝ち(ロセオ)"
looped-map: "ループマップ"
can-put-everywhere: "どこでも置けるモード"
settings-of-the-bot: "Botの設定"
this-game-is-started-soon: "ゲームは数秒後に開始されます"
settings-of-the-bot: "Ustawienia bota"
this-game-is-started-soon: "Gra rozpocznie się wkrótce"
waiting-for-other: "相手の準備が完了するのを待っています"
waiting-for-me: "あなたの準備が完了するのを待っています"
waiting-for-both: "準備中"
cancel: "キャンセル"
ready: "準備完了"
cancel-ready: "準備続行"
waiting-for-both: "Oczekiwanie na Ciebie"
cancel: "Anuluj"
ready: "Gotowy"
cancel-ready: "Cofnij „gotowy”"
common/views/components/connect-failed.vue:
title: "Nie udało się połączyć z serwerem"
description: "Wystąpił problem z Twoim połączeniem z Internetem, lub z serwerem. {Spróbuj ponownie} wkrótce."
@ -331,12 +331,12 @@ common/views/widgets/broadcast.vue:
have-a-nice-day: "Miłego dnia!"
next: "Dalej"
common/views/widgets/calendar.vue:
year: "{}"
month: "{}"
day: "{}"
today: "今日:"
this-month: "今月:"
this-year: "今年:"
year: "Rok {}"
month: "Miesiąc {}"
day: "Dzień {}"
today: "Dzisiaj:"
this-month: "Ten miesiąc:"
this-year: "Ten rok:"
common/views/widgets/donation.vue:
title: "Dotacje"
text: "Aby utrzymywać Misskey, płacimy za domenę, serwery i nie tylko… Nie zarabiamy na tym, więc byłoby nam miło, gdybyśmy uzyskali od Ciebie dotację. Jeżeli jesteś zainteresowany, skontaktuj się z {}. Dziękujemy za wsparcie!"
@ -358,9 +358,9 @@ common/views/widgets/memo.vue:
memo: "Napisz tutaj!"
save: "Zapisz"
common/views/widgets/slideshow.vue:
folder-customize-mode: "フォルダを指定するには、カスタマイズモードを終了してください"
folder: "クリックしてフォルダを指定してください"
no-image: "このフォルダには画像がありません"
folder-customize-mode: "Aby określić katalog, opuść tryb dostosowywania"
folder: "Naciśnij i wybierz folder"
no-image: "Brak obrazu w tym folderze"
common/views/widgets/tips.vue:
tips-line1: "<kbd>t</kbd>でタイムラインにフォーカスできます"
tips-line2: "<kbd>p</kbd>または<kbd>n</kbd>で投稿フォームを開きます"
@ -369,8 +369,8 @@ common/views/widgets/tips.vue:
tips-line5: "ドライブにファイルをドラッグ&ドロップしてアップロードできます"
tips-line6: "ドライブでファイルをドラッグしてフォルダ移動できます"
tips-line7: "ドライブでフォルダをドラッグしてフォルダ移動できます"
tips-line8: "ホームは設定からカスタマイズできます"
tips-line9: "MisskeyAGPLv3です"
tips-line8: "Strona główna może zostać dostosowana w ustawieniach."
tips-line9: "Misskey jest dostępny na licencji AGPLv3."
tips-line10: "タイムマシンウィジェットを利用すると、簡単に過去のタイムラインに遡れます"
tips-line11: "投稿の ... をクリックして、投稿をユーザーページにピン留めできます"
tips-line13: "投稿に添付したファイルは全てドライブに保存されます"
@ -380,8 +380,8 @@ common/views/widgets/tips.vue:
tips-line20: "カレンダーウィジェットのパーセンテージは、経過の割合を示しています"
tips-line21: "APIを利用してbotの開発なども行えます"
tips-line23: "まゆかわいいよまゆ"
tips-line24: "Misskeyは2014年にサービスを開始しました"
tips-line25: "対応ブラウザではMisskeyを開いていなくても通知を受け取れます"
tips-line24: "Misskey zaczął działać w 2014."
tips-line25: "Możesz otrzymywać powiadomienia nawet jeżeli Misskey nie jest otwarty w obsługiwanej przeglądarce."
common/views/pages/follow.vue:
signed-in-as: "Zalogowany jako {}"
following: "Śledzisz"
@ -530,9 +530,9 @@ desktop/views/components/notifications.vue:
more: "Więcej"
empty: "Brak powiadomień"
desktop/views/components/post-form.vue:
add-visible-user: "+ユーザーを追加"
attach-location-information: "位置情報を添付する"
hide-contents: "内容を隠す"
add-visible-user: "+Dodaj użytkownika"
attach-location-information: "Załącz informacje o lokalizacji"
hide-contents: "Ukryj zawartość"
reply-placeholder: "Odpowiedz na ten wpis…"
quote-placeholder: "Zacytuj ten wpis…"
submit: "Wyślij"
@ -553,10 +553,10 @@ desktop/views/components/post-form.vue:
text-remain: "pozostałe znaki: {}"
recent-tags: "Ostatnie"
click-to-tagging: "Naciśnij aby oznaczyć"
visibility: "公開範囲"
geolocation-alert: "お使いの端末は位置情報に対応していません"
error: "エラー"
enter-username: "ユーザー名を入力してください"
visibility: "Widoczność"
geolocation-alert: "Twoje urządzenie nie obsługuje geolokalizacji."
error: "Bład"
enter-username: "Wprowadź nazwę użytkownika…"
desktop/views/components/post-form-window.vue:
note: "Nowy wpis"
reply: "Odpowiedz"
@ -678,8 +678,8 @@ desktop/views/components/settings.api.vue:
desktop/views/components/settings.apps.vue:
no-apps: "Brak zautoryzowanych aplikacji"
desktop/views/components/settings.drive.vue:
max: ""
in-use: "使用中"
max: "Maksymalnie"
in-use: " w użyciu."
desktop/views/components/settings.mute.vue:
no-users: "Brak wyciszonych użytkowników"
desktop/views/components/settings.password.vue:
@ -702,7 +702,7 @@ desktop/views/components/settings.profile.vue:
other: "Inne"
is-bot: "To konto jest prowadzone przez bota"
is-cat: "To konto jest prowadzone przez kota"
profile-updated: "プロフィールを更新しました"
profile-updated: "Zaktualizowano profil"
desktop/views/components/sub-note-content.vue:
private: "ten wpis jest prywatny"
deleted: "ten wpis został usunięty"
@ -776,7 +776,7 @@ desktop/views/pages/welcome.vue:
signin-button: "Zaloguj się"
signup-button: "Zarejestruj się"
timeline: "Oś czasu"
powered-by-misskey: "Powered by <b>Misskey</b>."
powered-by-misskey: "Oparto o <b>Misskey</b>."
desktop/views/pages/drive.vue:
title: "Dysk Misskey"
desktop/views/pages/favorites.vue:
@ -792,12 +792,12 @@ desktop/views/pages/selectdrive.vue:
cancel: "Anuluj"
upload: "Wyślij pliki z Twojego komputera"
desktop/views/pages/search.vue:
not-available: "検索機能を利用することができません。"
not-found: "「{}」に関する投稿は見つかりませんでした。"
not-available: "Funkcja wyszukiwania nie może zostać wykorzystywana."
not-found: "Nie znaleziono wpisów zawierających „{}”"
desktop/views/pages/share.vue:
share-with: "{}で共有"
share-with: "Udostępnij z {}."
desktop/views/pages/tag.vue:
no-posts-found: "ハッシュタグ「{}」が付けられた投稿は見つかりませんでした。"
no-posts-found: "Nie znaleziono wpisów zawierających „{}”."
desktop/views/pages/user-list.users.vue:
users: "Użytkownicy"
add-user: "Dodaj użytkownika"
@ -954,7 +954,7 @@ mobile/views/components/timeline.vue:
empty: "Brak wpisów"
load-more: "Więcej"
mobile/views/components/ui.header.vue:
welcome-back: "おかえりなさい、"
welcome-back: "Witaj ponownie, "
mobile/views/components/ui.nav.vue:
timeline: "Oś czasu"
notifications: "Powiadomienia"
@ -986,7 +986,7 @@ mobile/views/pages/drive.vue:
drive: "Dysk"
more: "Załaduj więcej"
mobile/views/pages/signup.vue:
lets-start: "📦 始めましょう"
lets-start: "Rozpocznijmy! 📦"
mobile/views/pages/followers.vue:
followers-of: "Śledzący {}"
mobile/views/pages/following.vue:
@ -997,16 +997,16 @@ mobile/views/pages/home.vue:
hybrid: "Społeczność"
global: "Globalne"
mobile/views/pages/tag.vue:
no-posts-found: "ハッシュタグ「{}」が付けられた投稿は見つかりませんでした。"
no-posts-found: "Nie znaleziono wpisów zawierających „{}”."
mobile/views/pages/welcome.vue:
signup: "新規登録"
signup: "Zarejestruj się"
mobile/views/pages/widgets.vue:
dashboard: "ダッシュボード"
dashboard: "Kokpit"
widgets-hints: "ウィジェットを追加/削除したり並べ替えたりできます。ウィジェットを移動するには「三」をドラッグします。ウィジェットを削除するには「x」をタップします。いくつかのウィジェットはタップすることで表示を変更できます。"
mobile/views/pages/widgets/activity.vue:
activity: "アクティビティ"
activity: "Aktywność"
mobile/views/pages/share.vue:
share-with: "{}で共有"
share-with: "Udostępnij z {}."
mobile/views/pages/messaging.vue:
messaging: "Wiadomości"
mobile/views/pages/messaging-room.vue:
@ -1023,7 +1023,7 @@ mobile/views/pages/notifications.vue:
notifications: "Powiadomienia"
read-all: "Czy na pewno chcesz oznaczyć wszystkie powiadomienia jako przeczytane?"
mobile/views/pages/games/reversi.vue:
reversi: "リバーシ"
reversi: "Reversi"
mobile/views/pages/settings/settings.profile.vue:
title: "Profil"
name: "Nazwa"

View File

@ -1,8 +1,8 @@
{
"name": "misskey",
"author": "syuilo <i@syuilo.com>",
"version": "5.11.0",
"clientVersion": "1.0.7938",
"version": "5.13.0",
"clientVersion": "1.0.7963",
"codename": "nighthike",
"main": "./built/index.js",
"private": true,
@ -43,7 +43,6 @@
"@types/is-root": "1.0.0",
"@types/is-url": "1.2.28",
"@types/js-yaml": "3.11.2",
"@types/jsdom": "11.0.6",
"@types/koa": "2.0.46",
"@types/koa-bodyparser": "5.0.1",
"@types/koa-compress": "2.0.8",
@ -61,7 +60,6 @@
"@types/mongodb": "3.1.3",
"@types/ms": "0.7.30",
"@types/node": "10.5.5",
"@types/parse5": "5.0.0",
"@types/portscanner": "2.1.0",
"@types/pug": "2.0.4",
"@types/qrcode": "1.2.0",

View File

@ -53,7 +53,7 @@
</div>
</div>
<div class="card" v-if="form">
<div class="card form" v-if="form">
<header>
<span>%i18n:@settings-of-the-bot%</span>
</header>
@ -65,7 +65,7 @@
:key="message.id"/>
<template v-for="item in form">
<mk-switch v-if="item.type == 'button'" v-model="item.value" :key="item.id" :text="item.label" @change="onChangeForm($event, item)">{{ item.desc || '' }}</mk-switch>
<mk-switch v-if="item.type == 'switch'" v-model="item.value" :key="item.id" :text="item.label" @change="onChangeForm(item)">{{ item.desc || '' }}</mk-switch>
<div class="card" v-if="item.type == 'radio'" :key="item.id">
<header>
@ -73,7 +73,17 @@
</header>
<div>
<el-radio v-for="(r, i) in item.items" :key="item.id + ':' + i" v-model="item.value" :label="r.value" @change="onChangeForm($event, item)">{{ r.label }}</el-radio>
<form-radio v-for="(r, i) in item.items" :key="item.id + ':' + i" v-model="item.value" :value="r.value" @change="onChangeForm(item)">{{ r.label }}</form-radio>
</div>
</div>
<div class="card" v-if="item.type == 'slider'" :key="item.id">
<header>
<span>{{ item.label }}</span>
</header>
<div>
<input type="range" :min="item.min" :max="item.max" :step="item.step || 1" v-model="item.value" @change="onChangeForm(item)"/>
</div>
</div>
@ -83,7 +93,7 @@
</header>
<div>
<el-input v-model="item.value" @change="onChangeForm($event, item)"/>
<el-input v-model="item.value" @change="onChangeForm(item)"/>
</div>
</div>
</template>
@ -210,11 +220,11 @@ export default Vue.extend({
this.messages.unshift(x.message);
},
onChangeForm(v, item) {
onChangeForm(item) {
this.connection.send({
type: 'update-form',
id: item.id,
value: v
value: item.value
});
},
@ -274,6 +284,9 @@ root(isDark)
color isDark ? #fff : #606266
cursor pointer
transition border-color 0.2s cubic-bezier(0.645, 0.045, 0.355, 1)
-webkit-appearance none
-moz-appearance none
appearance none
&:hover
border-color isDark ? #a7aebd : #c0c4cc
@ -312,12 +325,20 @@ root(isDark)
&[data-none]
border-color transparent
&.form
> div
> .card + .card
margin-top 16px
input[type='range']
width 100%
.card
max-width 400px
border-radius 4px
background isDark ? #282C37 : #fff
color isDark ? #fff : #303133
box-shadow 0 2px 12px 0 rgba(#000, 0.1)
box-shadow 0 2px 12px 0 rgba(#000, isDark ? 0.7 : 0.1)
> header
padding 18px 20px

View File

@ -9,6 +9,9 @@
<form-button round @click="cancel">%i18n:@matching.cancel%</form-button>
</div>
</div>
<div v-else-if="gameId">
...
</div>
<div class="index" v-else>
<x-index @go="nav" @matching="onMatching"/>
</div>
@ -45,22 +48,14 @@ export default Vue.extend({
},
watch: {
gameId(id) {
if (id == null) {
this.game = null;
} else {
Progress.start();
(this as any).api('games/reversi/games/show', {
gameId: id
}).then(game => {
this.nav(game, true);
Progress.done();
});
}
gameId() {
this.fetch();
}
},
mounted() {
this.fetch();
if (this.$store.getters.isSignedIn) {
this.connection = (this as any).os.streams.reversiStream.getConnection();
this.connectionId = (this as any).os.streams.reversiStream.use();
@ -88,6 +83,20 @@ export default Vue.extend({
},
methods: {
fetch() {
if (this.gameId == null) {
this.game = null;
} else {
Progress.start();
(this as any).api('games/reversi/games/show', {
gameId: this.gameId
}).then(game => {
this.nav(game, true);
Progress.done();
});
}
},
nav(game, silent) {
this.matching = null;
this.game = game;

View File

@ -1,15 +1,15 @@
# MisskeyリバーシBotの開発
Misskeyのリバーシ機能に対応したBotの開発方法をここに記します。
1. `reversi`ストリームに以下のパラメータを付けて接続する:
1. `games/reversi`ストリームに以下のパラメータを付けて接続する:
* `i`: botアカウントのAPIキー
2. 対局への招待が来たら、ストリームから`invited`イベントが流れてくる
* イベントの中身に、`parent`という名前で対局へ誘ってきたユーザーの情報が含まれている
3. `reversi/match`へ、`user_id`として`parent``id`が含まれたリクエストを送信する
3. `games/reversi/match`へ、`user_id`として`parent``id`が含まれたリクエストを送信する
4. 上手くいくとゲーム情報が返ってくるので、`reversi-game`ストリームへ、以下のパラメータを付けて接続する:
4. 上手くいくとゲーム情報が返ってくるので、`games/reversi-game`ストリームへ、以下のパラメータを付けて接続する:
* `i`: botアカウントのAPIキー
* `game`: `game``id`
@ -96,8 +96,8 @@ y = Math.floor(pos / mapWidth)
フォームコントロールは、次のようなオブジェクトです:
```javascript
{
id: 'button1',
type: 'button',
id: 'switch1',
type: 'switch',
label: 'Enable hoge',
value: false
}
@ -110,21 +110,21 @@ y = Math.floor(pos / mapWidth)
### フォームの操作を受け取る
ユーザーがフォームを操作すると、ストリームから`update-form`イベントが流れてきます。
イベントの中身には、コントロールのIDと、ユーザーが設定した値が含まれています。
例えば、上で示したボタンをユーザーがオンにしたとすると、次のイベントが流れてきます:
例えば、上で示したスイッチをユーザーがオンにしたとすると、次のイベントが流れてきます:
```javascript
{
id: 'button1',
id: 'switch1',
value: true
}
```
### フォームコントロールの種類
#### ボタン
type: `button`
ボタンを表示します。何かの機能をオン/オフさせたい場合に有用です。
#### スイッチ
type: `switch`
スイッチを表示します。何かの機能をオン/オフさせたい場合に有用です。
##### プロパティ
`desc` ... ボタンの詳細な説明。
`desc` ... スイッチの詳細な説明。
#### ラジオボタン
type: `radio`
@ -145,6 +145,15 @@ items: [{
}]
```
#### スライダー
type: `slider`
スライダーを表示します。
##### プロパティ
`min` ... スライダーの下限。
`max` ... スライダーの上限。
`step` ... 入力欄で刻むステップ値。
#### テキストボックス
type: `textbox`
テキストボックスを表示します。ユーザーになにか入力させる一般的な用途に利用できます。

View File

@ -0,0 +1,18 @@
{
"name": "misskey-reversi",
"version": "0.0.5",
"description": "Misskey reversi engine",
"keywords": [
"misskey"
],
"author": "syuilo <i@syuilo.com>",
"license": "MIT",
"repository": "https://github.com/syuilo/misskey.git",
"bugs": "https://github.com/syuilo/misskey/issues",
"main": "./built/core.js",
"types": "./built/core.d.ts",
"scripts": {
"build": "tsc"
},
"dependencies": {}
}

View File

@ -0,0 +1,21 @@
{
"compilerOptions": {
"noEmitOnError": false,
"noImplicitAny": false,
"noImplicitReturns": true,
"noFallthroughCasesInSwitch": true,
"experimentalDecorators": true,
"declaration": true,
"sourceMap": false,
"target": "es2017",
"module": "commonjs",
"removeComments": false,
"noLib": false,
"outDir": "./built",
"rootDir": "./"
},
"compileOnSave": false,
"include": [
"./core.ts"
]
}

View File

@ -1,5 +1,5 @@
const { lib: emojilib } = require('emojilib');
import { JSDOM } from 'jsdom';
const JSDOM = require('jsdom');
import config from '../config';
import { INote } from '../models/note';
import { TextElement } from './parse';

View File

@ -103,6 +103,10 @@ export default async (user: IUser, data: Option, silent = false) => new Promise<
data.visibleUsers = data.visibleUsers.filter(x => x != null);
}
if (data.text) {
data.text = data.text.trim();
}
// Parse MFM
const tokens = data.text ? parse(data.text) : [];