From 621ac0bdc76ef1f38b227ede9200a947bbbc8073 Mon Sep 17 00:00:00 2001 From: Ariadne Conill Date: Sat, 9 Nov 2019 19:49:50 -0600 Subject: [PATCH 01/95] docs: document FE interaction with the BE private setting --- docs/CONFIGURATION.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/docs/CONFIGURATION.md b/docs/CONFIGURATION.md index 35363537..f7397a55 100644 --- a/docs/CONFIGURATION.md +++ b/docs/CONFIGURATION.md @@ -96,3 +96,6 @@ Setting this will change the warning text that is displayed for direct messages. ATTENTION: If you actually want the behavior to change. You will need to set the appropriate option at the backend. See the backend documentation for information about that. DO NOT activate this without checking the backend configuration first! + +### Private Mode +If the `private` instance setting is enabled in the backend, features that are not accessible without authentication, such as the timelines and search will be disabled for unauthenticated users. From 99fd096ddd1cc657a86c41e7e96344b8bb1dc4de Mon Sep 17 00:00:00 2001 From: Ariadne Conill Date: Sat, 9 Nov 2019 19:53:03 -0600 Subject: [PATCH 02/95] boot: track whether private mode is enabled or not --- src/boot/after_store.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/boot/after_store.js b/src/boot/after_store.js index 226b67d8..cbe0c330 100644 --- a/src/boot/after_store.js +++ b/src/boot/after_store.js @@ -218,6 +218,9 @@ const getNodeInfo = async ({ store }) => { store.dispatch('setInstanceOption', { name: 'backendVersion', value: software.version }) store.dispatch('setInstanceOption', { name: 'pleromaBackend', value: software.name === 'pleroma' }) + const priv = metadata.private + store.dispatch('setInstanceOption', { name: 'private', value: priv }) + const frontendVersion = window.___pleromafe_commit_hash store.dispatch('setInstanceOption', { name: 'frontendVersion', value: frontendVersion }) store.dispatch('setInstanceOption', { name: 'tagPolicyAvailable', value: metadata.federation.mrf_policies.includes('TagPolicy') }) From 21f1637e437398ec56b6078cf28b58bd4a0299ba Mon Sep 17 00:00:00 2001 From: Ariadne Conill Date: Mon, 11 Nov 2019 14:14:44 -0600 Subject: [PATCH 03/95] nav panel: refactor to use vuex mapState --- src/components/nav_panel/nav_panel.js | 17 ++++++----------- 1 file changed, 6 insertions(+), 11 deletions(-) diff --git a/src/components/nav_panel/nav_panel.js b/src/components/nav_panel/nav_panel.js index aa3f7605..bfcab62e 100644 --- a/src/components/nav_panel/nav_panel.js +++ b/src/components/nav_panel/nav_panel.js @@ -1,4 +1,5 @@ import followRequestFetcher from '../../services/follow_request_fetcher/follow_request_fetcher.service' +import { mapState } from 'vuex' const NavPanel = { created () { @@ -9,17 +10,11 @@ const NavPanel = { followRequestFetcher.startFetching({ store, credentials }) } }, - computed: { - currentUser () { - return this.$store.state.users.currentUser - }, - chat () { - return this.$store.state.chat.channel - }, - followRequestCount () { - return this.$store.state.api.followRequests.length - } - } + computed: mapState({ + currentUser: state => state.users.currentUser, + chat: state => state.chat.channel, + followRequestCount: state => state.api.followRequests.length + }) } export default NavPanel From 1f9674350cdf7455fe5540d377eb327edf1336ce Mon Sep 17 00:00:00 2001 From: Ariadne Conill Date: Mon, 11 Nov 2019 14:18:36 -0600 Subject: [PATCH 04/95] nav panel: disable TWKN if federation disabled, disable Public and TWKN if privateMode is enabled --- src/components/nav_panel/nav_panel.js | 4 +++- src/components/nav_panel/nav_panel.vue | 4 ++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/components/nav_panel/nav_panel.js b/src/components/nav_panel/nav_panel.js index bfcab62e..a6426d13 100644 --- a/src/components/nav_panel/nav_panel.js +++ b/src/components/nav_panel/nav_panel.js @@ -13,7 +13,9 @@ const NavPanel = { computed: mapState({ currentUser: state => state.users.currentUser, chat: state => state.chat.channel, - followRequestCount: state => state.api.followRequests.length + followRequestCount: state => state.api.followRequests.length, + privateMode: state => state.instance.private, + federating: state => state.instance.federationPolicy.federating || true }) } diff --git a/src/components/nav_panel/nav_panel.vue b/src/components/nav_panel/nav_panel.vue index 28589bb1..d85c28bd 100644 --- a/src/components/nav_panel/nav_panel.vue +++ b/src/components/nav_panel/nav_panel.vue @@ -28,12 +28,12 @@ -
  • +
  • {{ $t("nav.public_tl") }}
  • -
  • +
  • {{ $t("nav.twkn") }} From cb5f73148a2dc9341d16326ed606d74e818fb61d Mon Sep 17 00:00:00 2001 From: Ariadne Conill Date: Mon, 11 Nov 2019 14:25:38 -0600 Subject: [PATCH 05/95] app: search API is not available in private mode so disable it --- src/App.js | 3 ++- src/App.vue | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/App.js b/src/App.js index 04a40e30..e2b0e6db 100644 --- a/src/App.js +++ b/src/App.js @@ -97,7 +97,8 @@ export default { this.$store.state.instance.instanceSpecificPanelContent }, showFeaturesPanel () { return this.$store.state.instance.showFeaturesPanel }, - isMobileLayout () { return this.$store.state.interface.mobileLayout } + isMobileLayout () { return this.$store.state.interface.mobileLayout }, + privateMode () { return this.$store.state.instance.private } }, methods: { scrollToTop () { diff --git a/src/App.vue b/src/App.vue index dbe842ec..1f244b56 100644 --- a/src/App.vue +++ b/src/App.vue @@ -43,6 +43,7 @@ class="nav-icon mobile-hidden" @toggled="onSearchBarToggled" @click.stop.native + v-if="currentUser || !privateMode" /> Date: Mon, 11 Nov 2019 14:37:14 -0600 Subject: [PATCH 06/95] side drawer: same treatment --- src/components/side_drawer/side_drawer.js | 6 ++++++ src/components/side_drawer/side_drawer.vue | 6 +++--- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/src/components/side_drawer/side_drawer.js b/src/components/side_drawer/side_drawer.js index 567d2e5e..2725d43a 100644 --- a/src/components/side_drawer/side_drawer.js +++ b/src/components/side_drawer/side_drawer.js @@ -34,6 +34,12 @@ const SideDrawer = { }, followRequestCount () { return this.$store.state.api.followRequests.length + }, + privateMode () { + return this.$store.state.instance.private + }, + federating () { + return this.$store.state.instance.federationPolicy.federating || true } }, methods: { diff --git a/src/components/side_drawer/side_drawer.vue b/src/components/side_drawer/side_drawer.vue index 214b8e0c..be18a5d7 100644 --- a/src/components/side_drawer/side_drawer.vue +++ b/src/components/side_drawer/side_drawer.vue @@ -79,12 +79,12 @@
  • -
  • +
  • {{ $t("nav.public_tl") }}
  • -
  • +
  • {{ $t("nav.twkn") }} @@ -99,7 +99,7 @@
    • -
    • +
    • {{ $t("nav.search") }} From 50dc9df8a44d408dd83ae4b17c407fa36c85cf8e Mon Sep 17 00:00:00 2001 From: Henry Jameson Date: Thu, 14 Nov 2019 00:18:14 +0200 Subject: [PATCH 07/95] adds greentext, also small fixes --- src/components/status/status.js | 49 +++++++++-- .../tiny_post_html_processor.service.js | 84 +++++++++++++++++++ 2 files changed, 124 insertions(+), 9 deletions(-) create mode 100644 src/services/tiny_post_html_processor/tiny_post_html_processor.service.js diff --git a/src/components/status/status.js b/src/components/status/status.js index 4fbd5ac3..6dbb2199 100644 --- a/src/components/status/status.js +++ b/src/components/status/status.js @@ -13,10 +13,11 @@ import Timeago from '../timeago/timeago.vue' import StatusPopover from '../status_popover/status_popover.vue' import generateProfileLink from 'src/services/user_profile_link_generator/user_profile_link_generator' import fileType from 'src/services/file_type/file_type.service' +import { processHtml } from 'src/services/tiny_post_html_processor/tiny_post_html_processor.service.js' import { highlightClass, highlightStyle } from '../../services/user_highlighter/user_highlighter.js' import { mentionMatchesUrl, extractTagFromUrl } from 'src/services/matcher/matcher.service.js' import { filter, unescape, uniqBy } from 'lodash' -import { mapGetters } from 'vuex' +import { mapGetters, mapState } from 'vuex' const Status = { name: 'Status', @@ -42,8 +43,8 @@ const Status = { showingTall: this.inConversation && this.focused, showingLongSubject: false, error: null, + // Initial state expandingSubject: !this.$store.getters.mergedConfig.collapseMessageWithSubject, - betterShadow: this.$store.state.interface.browserSupport.cssFilter } }, computed: { @@ -103,7 +104,7 @@ const Status = { return this.$store.state.statuses.allStatusesObject[this.status.id] }, loggedIn () { - return !!this.$store.state.users.currentUser + return !!this.currentUser }, muteWordHits () { const statusText = this.status.text.toLowerCase() @@ -163,7 +164,7 @@ const Status = { if (this.inConversation || !this.isReply) { return false } - if (this.status.user.id === this.$store.state.users.currentUser.id) { + if (this.status.user.id === this.currentUser.id) { return false } if (this.status.type === 'retweet') { @@ -178,7 +179,7 @@ const Status = { if (checkFollowing && taggedUser && taggedUser.following) { return false } - if (this.status.attentions[i].id === this.$store.state.users.currentUser.id) { + if (this.status.attentions[i].id === this.currentUser.id) { return false } } @@ -255,11 +256,37 @@ const Status = { maxThumbnails () { return this.mergedConfig.maxThumbnails }, + postBodyHtml () { + const html = this.status.statusnet_html + + try { + if (html.includes('>')) { + // This checks if post has '>' at the beginning, excluding mentions so that @mention >impying works + return processHtml(html, (string) => { + if (string.includes('>') && + string + .replace(/<[^>]+?>/gi, '') // remove all tags + .replace(/@\w+/gi, '') // remove mentions (even failed ones) + .trim() + .startsWith('>')) { + return `${string}` + } else { + return string + } + }) + } else { + return html + } + } catch (e) { + console.err('Failed to process status html', e) + return html + } + }, contentHtml () { if (!this.status.summary_html) { - return this.status.statusnet_html + return this.postBodyHtml } - return this.status.summary_html + '
      ' + this.status.statusnet_html + return this.status.summary_html + '
      ' + this.postBodyHtml }, combinedFavsAndRepeatsUsers () { // Use the status from the global status repository since favs and repeats are saved in it @@ -270,7 +297,7 @@ const Status = { return uniqBy(combinedUsers, 'id') }, ownStatus () { - return this.status.user.id === this.$store.state.users.currentUser.id + return this.status.user.id === this.currentUser.id }, tags () { return this.status.tags.filter(tagObj => tagObj.hasOwnProperty('name')).map(tagObj => tagObj.name).join(' ') @@ -278,7 +305,11 @@ const Status = { hidePostStats () { return this.mergedConfig.hidePostStats }, - ...mapGetters(['mergedConfig']) + ...mapGetters(['mergedConfig']), + ...mapState({ + betterShadow: state => state.interface.browserSupport.cssFilter, + currentUser: state => state.users.currentUser + }) }, components: { Attachment, diff --git a/src/services/tiny_post_html_processor/tiny_post_html_processor.service.js b/src/services/tiny_post_html_processor/tiny_post_html_processor.service.js new file mode 100644 index 00000000..c9ff81e1 --- /dev/null +++ b/src/services/tiny_post_html_processor/tiny_post_html_processor.service.js @@ -0,0 +1,84 @@ +/** + * This is a tiny purpose-built HTML parser/processor. This basically detects any type of visual newline and + * allows it to be processed, useful for greentexting, mostly + * + * @param {Object} input - input data + * @param {(string) => string} processor - function that will be called on every line + * @return {string} processed html + */ +export const processHtml = (html, processor) => { + const handledTags = new Set(['p', 'br', 'div']) + const openCloseTags = new Set(['p', 'div']) + const tagRegex = /(?:<\/(\w+)>|<(\w+)\s?[^/]*?\/?>)/gi + + let buffer = '' // Current output buffer + const level = [] // How deep we are in tags and which tags were there + let textBuffer = '' // Current line content + let tagBuffer = null // Current tag buffer, if null = we are not currently reading a tag + + // Extracts tagname from tag, i.e. => span + const getTagName = (tag) => { + // eslint-disable-next-line no-unused-vars + const result = tagRegex.exec(tag) + return result && (result[1] || result[2]) + } + + const flush = () => { // Processes current line buffer, adds it to output buffer and clears line buffer + buffer += processor(textBuffer) + textBuffer = '' + } + + const handleBr = (tag) => { // handles single newlines/linebreaks + flush() + buffer += tag + } + + const handleOpen = (tag) => { // handles opening tags + flush() + buffer += tag + level.push(tag) + } + + const handleClose = (tag) => { // handles closing tags + flush() + buffer += tag + if (level[level.length - 1] === tag) { + level.pop() + } + } + + for (let i = 0; i < html.length; i++) { + const char = html[i] + if (char === '<' && tagBuffer !== null) { + tagBuffer = char + } else if (char !== '>' && tagBuffer !== null) { + tagBuffer += char + } else if (char === '>' && tagBuffer !== null) { + tagBuffer += char + const tagName = getTagName(tagBuffer) + if (handledTags.has(tagName)) { + if (tagName === 'br') { + handleBr(tagBuffer) + } + if (openCloseTags.has(tagBuffer)) { + if (tagBuffer[1] === '/') { + handleClose(tagBuffer) + } else { + handleOpen(tagBuffer) + } + } + } else { + textBuffer += tagBuffer + } + tagBuffer = null + } else if (char === '\n') { + handleBr(char) + } else { + textBuffer += char + } + } + + flush() + + return buffer +} From 692ee0e95a852b1f803b7ae92d65cbf4f3ce3445 Mon Sep 17 00:00:00 2001 From: Henry Jameson Date: Thu, 14 Nov 2019 00:41:14 +0200 Subject: [PATCH 08/95] Fix regex, tag detector condition --- src/components/status/status.js | 2 +- .../tiny_post_html_processor.service.js | 25 +++++++++---------- 2 files changed, 13 insertions(+), 14 deletions(-) diff --git a/src/components/status/status.js b/src/components/status/status.js index 6dbb2199..416aa36a 100644 --- a/src/components/status/status.js +++ b/src/components/status/status.js @@ -43,7 +43,7 @@ const Status = { showingTall: this.inConversation && this.focused, showingLongSubject: false, error: null, - // Initial state + // not as computed because it sets the initial state which will be changed later expandingSubject: !this.$store.getters.mergedConfig.collapseMessageWithSubject, } }, diff --git a/src/services/tiny_post_html_processor/tiny_post_html_processor.service.js b/src/services/tiny_post_html_processor/tiny_post_html_processor.service.js index c9ff81e1..b96c1ccf 100644 --- a/src/services/tiny_post_html_processor/tiny_post_html_processor.service.js +++ b/src/services/tiny_post_html_processor/tiny_post_html_processor.service.js @@ -9,17 +9,15 @@ export const processHtml = (html, processor) => { const handledTags = new Set(['p', 'br', 'div']) const openCloseTags = new Set(['p', 'div']) - const tagRegex = /(?:<\/(\w+)>|<(\w+)\s?[^/]*?\/?>)/gi let buffer = '' // Current output buffer const level = [] // How deep we are in tags and which tags were there let textBuffer = '' // Current line content let tagBuffer = null // Current tag buffer, if null = we are not currently reading a tag - // Extracts tagname from tag, i.e. => span + // Extracts tag name from tag, i.e. => span const getTagName = (tag) => { - // eslint-disable-next-line no-unused-vars - const result = tagRegex.exec(tag) + const result = /(?:<\/(\w+)>|<(\w+)\s?[^/]*?\/?>)/gi.exec(tag) return result && (result[1] || result[2]) } @@ -49,28 +47,29 @@ export const processHtml = (html, processor) => { for (let i = 0; i < html.length; i++) { const char = html[i] - if (char === '<' && tagBuffer !== null) { + if (char === '<' && tagBuffer === null) { tagBuffer = char } else if (char !== '>' && tagBuffer !== null) { tagBuffer += char } else if (char === '>' && tagBuffer !== null) { tagBuffer += char - const tagName = getTagName(tagBuffer) + const tagFull = tagBuffer + tagBuffer = null + const tagName = getTagName(tagFull) if (handledTags.has(tagName)) { if (tagName === 'br') { - handleBr(tagBuffer) + handleBr(tagFull) } - if (openCloseTags.has(tagBuffer)) { - if (tagBuffer[1] === '/') { - handleClose(tagBuffer) + if (openCloseTags.has(tagFull)) { + if (tagFull[1] === '/') { + handleClose(tagFull) } else { - handleOpen(tagBuffer) + handleOpen(tagFull) } } } else { - textBuffer += tagBuffer + textBuffer += tagFull } - tagBuffer = null } else if (char === '\n') { handleBr(char) } else { From 897131572f62c36277e06e464f328f37cf6acad2 Mon Sep 17 00:00:00 2001 From: Henry Jameson Date: Thu, 14 Nov 2019 00:47:20 +0200 Subject: [PATCH 09/95] Made it optional --- src/components/settings/settings.vue | 11 ++++++++ src/components/status/status.js | 40 +++++++++++++++------------- src/components/status/status.vue | 5 ++-- src/i18n/en.json | 2 ++ src/modules/config.js | 1 + src/modules/instance.js | 1 + 6 files changed, 40 insertions(+), 20 deletions(-) diff --git a/src/components/settings/settings.vue b/src/components/settings/settings.vue index a83489d2..c4021137 100644 --- a/src/components/settings/settings.vue +++ b/src/components/settings/settings.vue @@ -270,6 +270,17 @@
    + +
    +

    {{ $t('settings.fun') }}

    +
      +
    • + + {{ $t('settings.greentext') }} {{ $t('settings.instance_default', { value: greentextLocalizedValue }) }} + +
    • +
    +
    diff --git a/src/components/status/status.js b/src/components/status/status.js index 416aa36a..dd0ce3ab 100644 --- a/src/components/status/status.js +++ b/src/components/status/status.js @@ -259,26 +259,30 @@ const Status = { postBodyHtml () { const html = this.status.statusnet_html - try { - if (html.includes('>')) { - // This checks if post has '>' at the beginning, excluding mentions so that @mention >impying works - return processHtml(html, (string) => { - if (string.includes('>') && - string - .replace(/<[^>]+?>/gi, '') // remove all tags - .replace(/@\w+/gi, '') // remove mentions (even failed ones) - .trim() - .startsWith('>')) { - return `${string}` - } else { - return string - } - }) - } else { + if (this.mergedConfig.greentext) { + try { + if (html.includes('>')) { + // This checks if post has '>' at the beginning, excluding mentions so that @mention >impying works + return processHtml(html, (string) => { + if (string.includes('>') && + string + .replace(/<[^>]+?>/gi, '') // remove all tags + .replace(/@\w+/gi, '') // remove mentions (even failed ones) + .trim() + .startsWith('>')) { + return `${string}` + } else { + return string + } + }) + } else { + return html + } + } catch (e) { + console.err('Failed to process status html', e) return html } - } catch (e) { - console.err('Failed to process status html', e) + } else { return html } }, diff --git a/src/components/status/status.vue b/src/components/status/status.vue index 65778b2e..d291e762 100644 --- a/src/components/status/status.vue +++ b/src/components/status/status.vue @@ -606,7 +606,7 @@ $status-margin: 0.75em; height: 100%; mask: linear-gradient(to top, white, transparent) bottom/100% 70px no-repeat, linear-gradient(to top, white, white); - // Autoprefixed seem to ignore this one, and also syntax is different + /* Autoprefixed seem to ignore this one, and also syntax is different */ -webkit-mask-composite: xor; mask-composite: exclude; } @@ -752,7 +752,8 @@ $status-margin: 0.75em; } .greentext { - color: green; + color: $fallback--cGreen; + color: var(--cGreen, $fallback--cGreen); } .status-conversation { diff --git a/src/i18n/en.json b/src/i18n/en.json index ead333c1..7b0b3b94 100644 --- a/src/i18n/en.json +++ b/src/i18n/en.json @@ -370,6 +370,8 @@ "false": "no", "true": "yes" }, + "fun": "Fun", + "greentext": "Meme arrows", "notifications": "Notifications", "notification_setting": "Receive notifications from:", "notification_setting_follows": "Users you follow", diff --git a/src/modules/config.js b/src/modules/config.js index d4819ee8..329b4091 100644 --- a/src/modules/config.js +++ b/src/modules/config.js @@ -45,6 +45,7 @@ export const defaultState = { playVideosInModal: false, useOneClickNsfw: false, useContainFit: false, + greentext: undefined, // instance default hidePostStats: undefined, // instance default hideUserStats: undefined // instance default } diff --git a/src/modules/instance.js b/src/modules/instance.js index 7b0e0da4..96f14ed5 100644 --- a/src/modules/instance.js +++ b/src/modules/instance.js @@ -32,6 +32,7 @@ const defaultState = { noAttachmentLinks: false, showFeaturesPanel: true, minimalScopesMode: false, + greentext: false, // Nasty stuff pleromaBackend: true, From bce750c5717419b8f2f2de6d8a4380a4e664f986 Mon Sep 17 00:00:00 2001 From: Henry Jameson Date: Thu, 14 Nov 2019 00:49:31 +0200 Subject: [PATCH 10/95] making dtluna proud or disgusted --- src/i18n/ru.json | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/i18n/ru.json b/src/i18n/ru.json index f8bcd996..19e10f1e 100644 --- a/src/i18n/ru.json +++ b/src/i18n/ru.json @@ -174,6 +174,8 @@ "name_bio": "Имя и описание", "new_email": "Новый email", "new_password": "Новый пароль", + "fun": "Потешное", + "greentext": "Мемные стрелочки", "notification_visibility": "Показывать уведомления", "notification_visibility_follows": "Подписки", "notification_visibility_likes": "Лайки", From 51ea295704c52b1f9a922868aedf264e53a5ec92 Mon Sep 17 00:00:00 2001 From: Henry Jameson Date: Thu, 14 Nov 2019 00:52:38 +0200 Subject: [PATCH 11/95] eslint --- src/components/status/status.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/components/status/status.js b/src/components/status/status.js index dd0ce3ab..714ea6d2 100644 --- a/src/components/status/status.js +++ b/src/components/status/status.js @@ -44,7 +44,7 @@ const Status = { showingLongSubject: false, error: null, // not as computed because it sets the initial state which will be changed later - expandingSubject: !this.$store.getters.mergedConfig.collapseMessageWithSubject, + expandingSubject: !this.$store.getters.mergedConfig.collapseMessageWithSubject } }, computed: { @@ -266,10 +266,10 @@ const Status = { return processHtml(html, (string) => { if (string.includes('>') && string - .replace(/<[^>]+?>/gi, '') // remove all tags - .replace(/@\w+/gi, '') // remove mentions (even failed ones) - .trim() - .startsWith('>')) { + .replace(/<[^>]+?>/gi, '') // remove all tags + .replace(/@\w+/gi, '') // remove mentions (even failed ones) + .trim() + .startsWith('>')) { return `${string}` } else { return string From 90fc6b07743c87cbb08f07d9cf640b14efab1c8e Mon Sep 17 00:00:00 2001 From: taehoon Date: Thu, 14 Nov 2019 14:07:05 -0500 Subject: [PATCH 12/95] close image modal by clicking image --- src/components/media_modal/media_modal.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/media_modal/media_modal.vue b/src/components/media_modal/media_modal.vue index 49e3143e..80d2a8b9 100644 --- a/src/components/media_modal/media_modal.vue +++ b/src/components/media_modal/media_modal.vue @@ -10,13 +10,13 @@ :src="currentMedia.url" @touchstart.stop="mediaTouchStart" @touchmove.stop="mediaTouchMove" + @click="hide" >
    whats going on
    wha

    ' + expect(processHtml(inputOutput, processorKeep)).to.eql(inputOutput) + }) + + it('fed with sorta valid HTML but tags aren\'t closed', () => { + const inputOutput = 'just leaving a

    hanging' + expect(processHtml(inputOutput, processorKeep)).to.eql(inputOutput) + }) + + it('fed with not really HTML at this point... tags that aren\'t finished', () => { + const inputOutput = 'do you expect me to finish this
    { + const inputOutput = 'look ma

    p \nwithin

    p!

    and a
    div!

    ' + expect(processHtml(inputOutput, processorKeep)).to.eql(inputOutput) + }) + + it('fed with maybe valid HTML? self-closing divs and ps', () => { + const inputOutput = 'a
    what now

    ?' + expect(processHtml(inputOutput, processorKeep)).to.eql(inputOutput) + }) + + it('fed with valid XHTML containing a CDATA', () => { + const inputOutput = 'Yes, it is me, ' + expect(processHtml(inputOutput, processorKeep)).to.eql(inputOutput) + }) + }) + describe('with processor that replaces lines with word "_" should match expected line when', () => { + const processorReplace = (line) => '_' + it('fed with regular HTML with newlines', () => { + const input = '1
    2

    3 4

    5 \n 6

    7
    8


    \n
    ' + const output = '_
    _

    _

    _\n_

    _
    _


    \n
    ' + expect(processHtml(input, processorReplace)).to.eql(output) + }) + + it('fed with possibly broken HTML with invalid tags/composition', () => { + const input = ' ayylmao ' + const output = '_' + expect(processHtml(input, processorReplace)).to.eql(output) + }) + + it('fed with very broken HTML with broken composition', () => { + const input = '

    lmao what
    whats going on
    wha

    ' + const output = '

    _
    _
    _

    ' + expect(processHtml(input, processorReplace)).to.eql(output) + }) + + it('fed with sorta valid HTML but tags aren\'t closed', () => { + const input = 'just leaving a

    hanging' + const output = '_
    _' + expect(processHtml(input, processorReplace)).to.eql(output) + }) + + it('fed with not really HTML at this point... tags that aren\'t finished', () => { + const input = 'do you expect me to finish this
    { + const input = 'look ma

    p \nwithin

    p!

    and a
    div!

    ' + const output = '_

    _\n_

    _

    _
    _

    ' + expect(processHtml(input, processorReplace)).to.eql(output) + }) + + it('fed with maybe valid HTML? self-closing divs and ps', () => { + const input = 'a
    what now

    ?' + const output = '_

    _

    _' + expect(processHtml(input, processorReplace)).to.eql(output) + }) + + it('fed with valid XHTML containing a CDATA', () => { + const input = 'Yes, it is me, ' + const output = '_' + expect(processHtml(input, processorReplace)).to.eql(output) + }) + }) +}) From 28efd7d862d3fb890969448479d3034af7201170 Mon Sep 17 00:00:00 2001 From: Henry Jameson Date: Thu, 14 Nov 2019 23:46:19 +0200 Subject: [PATCH 14/95] use yarn, try to restart pipeline --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 9d42288e..7f6d3c92 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -24,7 +24,7 @@ test: - apt install firefox-esr -y --no-install-recommends - firefox --version - yarn - - npm run unit + - yarn unit build: stage: build From 3ecfbc8ea2b60aa0fe40f2969d27fcb916d6b639 Mon Sep 17 00:00:00 2001 From: Mew Mew Date: Fri, 15 Nov 2019 05:09:01 +0000 Subject: [PATCH 15/95] Fix translation (https://blob.cat/notice/9oyYO1RzcNbJXxKxeq) --- src/i18n/zh.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/i18n/zh.json b/src/i18n/zh.json index 80c4e0d8..8d9462ab 100644 --- a/src/i18n/zh.json +++ b/src/i18n/zh.json @@ -111,7 +111,7 @@ }, "interactions": { "favs_repeats": "转发和收藏", - "follows": "新的关注着", + "follows": "新的关注者", "load_older": "加载更早的互动" }, "post_status": { From a9022d0c32e2fcd6735f02c680312d93e215fd0f Mon Sep 17 00:00:00 2001 From: rinpatch Date: Fri, 15 Nov 2019 22:56:16 +0300 Subject: [PATCH 16/95] Remove outdated changelog file This hasn't been updated in 2 years and we have CHANGELOG.md now. --- CHANGELOG | 35 ----------------------------------- 1 file changed, 35 deletions(-) delete mode 100644 CHANGELOG diff --git a/CHANGELOG b/CHANGELOG deleted file mode 100644 index ca2ebcfa..00000000 --- a/CHANGELOG +++ /dev/null @@ -1,35 +0,0 @@ -## 2017-02-20 - -- Overall CSS styling fixes -- Current theme is displayed in theme selector -- Theme selector is moved to the settings page -- Oembed attachments will now display correctly -- Styling changes to the user info cards -- Notification count in title -- Better Notification handling (persistance, mark as read) -- Post statuses with ctrl+enter -- Links in statuses open in a new tab -- Optimized mobile view -- Fix crash on persistance failure -- Compress persisted state -- Sync mutes with backend (SEE NOTE BELOW) - -Pleroma will now try to get the current mutes from the backend. Sadly, a bug in -Qvitter will not allow getting the mutes from the endpoint, because it will -ignore HTTP Basic authentication. Mutes will still persist in Pleroma through -localstorage, but the mutes from Qvitter won't be picked up if the call fails. - -The patch for Qvitter: - ---- a/actions/apiqvittermutes.php -+++ b/actions/apiqvittermutes.php -@@ -74,7 +74,7 @@ class ApiQvitterMutesAction extends ApiPrivateAuthAction - { - parent::handle(); - -- $this->target = Profile::current(); -+ $this->target = $this->scoped; - - if(!$this->target instanceof Profile) { - $this->clientError(_('You have to be logged in to view your mutes.'), 403); - From 67c95c9d061ebb2754d56b85969a08c786d34424 Mon Sep 17 00:00:00 2001 From: AkiraFukushima Date: Sun, 17 Nov 2019 01:11:19 +0900 Subject: [PATCH 17/95] Use kana+kanji as default for Japanese translation --- .../interface_language_switcher.vue | 4 +- src/i18n/ja.json | 658 +++++++++--------- src/i18n/ja_easy.json | 639 +++++++++++++++++ src/i18n/ja_pedantic.json | 639 ----------------- src/i18n/messages.js | 2 +- 5 files changed, 971 insertions(+), 971 deletions(-) create mode 100644 src/i18n/ja_easy.json delete mode 100644 src/i18n/ja_pedantic.json diff --git a/src/components/interface_language_switcher/interface_language_switcher.vue b/src/components/interface_language_switcher/interface_language_switcher.vue index 1ca22001..f5ace0cc 100644 --- a/src/components/interface_language_switcher/interface_language_switcher.vue +++ b/src/components/interface_language_switcher/interface_language_switcher.vue @@ -51,8 +51,8 @@ export default { methods: { getLanguageName (code) { const specialLanguageNames = { - 'ja': 'Japanese (やさしいにほんご)', - 'ja_pedantic': 'Japanese (日本語)', + 'ja': 'Japanese (日本語)', + 'ja_easy': 'Japanese (やさしいにほんご)', 'zh': 'Chinese (简体中文)' } return specialLanguageNames[code] || ISO6391.getName(code) diff --git a/src/i18n/ja.json b/src/i18n/ja.json index 592a7257..2ca7dca8 100644 --- a/src/i18n/ja.json +++ b/src/i18n/ja.json @@ -4,128 +4,128 @@ }, "exporter": { "export": "エクスポート", - "processing": "おまちください。しばらくすると、あなたのファイルをダウンロードするように、メッセージがでます。" + "processing": "処理中です。処理が完了すると、ファイルをダウンロードするよう指示があります。" }, "features_panel": { "chat": "チャット", "gopher": "Gopher", "media_proxy": "メディアプロクシ", - "scope_options": "こうかいはんいせんたく", - "text_limit": "もじのかず", - "title": "ゆうこうなきのう", + "scope_options": "公開範囲選択", + "text_limit": "文字の数", + "title": "有効な機能", "who_to_follow": "おすすめユーザー" }, "finder": { - "error_fetching_user": "ユーザーけんさくがエラーになりました。", - "find_user": "ユーザーをさがす" + "error_fetching_user": "ユーザー検索がエラーになりました。", + "find_user": "ユーザーを探す" }, "general": { - "apply": "てきよう", - "submit": "そうしん", - "more": "つづき", + "apply": "適用", + "submit": "送信", + "more": "続き", "generic_error": "エラーになりました", - "optional": "かかなくてもよい", - "show_more": "つづきをみる", + "optional": "省略可", + "show_more": "もっと見る", "show_less": "たたむ", "cancel": "キャンセル", - "disable": "なし", - "enable": "あり", - "confirm": "たしかめる", - "verify": "たしかめる" + "disable": "無効", + "enable": "有効", + "confirm": "確認", + "verify": "検査" }, "image_cropper": { - "crop_picture": "がぞうをきりぬく", - "save": "セーブ", - "save_without_cropping": "きりぬかずにセーブ", + "crop_picture": "画像を切り抜く", + "save": "保存", + "save_without_cropping": "切り抜かずに保存", "cancel": "キャンセル" }, "importer": { - "submit": "そうしん", - "success": "インポートできました。", - "error": "インポートがエラーになりました。" + "submit": "送信", + "success": "正常にインポートされました。", + "error": "このファイルをインポートするとき、エラーが発生しました。" }, "login": { "login": "ログイン", "description": "OAuthでログイン", "logout": "ログアウト", "password": "パスワード", - "placeholder": "れい: lain", - "register": "はじめる", - "username": "ユーザーめい", - "hint": "はなしあいにくわわるには、ログインしてください", - "authentication_code": "にんしょうコード", - "enter_recovery_code": "リカバリーコードをいれてください", - "enter_two_factor_code": "2-ファクターコードをいれてください", + "placeholder": "例: lain", + "register": "登録", + "username": "ユーザー名", + "hint": "会話に加わるには、ログインしてください", + "authentication_code": "認証コード", + "enter_recovery_code": "リカバリーコードを入力してください", + "enter_two_factor_code": "2段階認証コードを入力してください", "recovery_code": "リカバリーコード", "heading" : { - "totp" : "2-ファクターにんしょう", - "recovery" : "2-ファクターリカバリー" + "totp" : "2段階認証", + "recovery" : "2段階リカバリー" } }, "media_modal": { - "previous": "まえ", - "next": "つぎ" + "previous": "前", + "next": "次" }, "nav": { - "about": "これはなに?", - "back": "もどる", + "about": "このインスタンスについて", + "back": "戻る", "chat": "ローカルチャット", "friend_requests": "フォローリクエスト", - "mentions": "メンション", - "interactions": "やりとり", + "mentions": "通知", + "interactions": "インタラクション", "dms": "ダイレクトメッセージ", "public_tl": "パブリックタイムライン", "timeline": "タイムライン", - "twkn": "つながっているすべてのネットワーク", - "user_search": "ユーザーをさがす", - "search": "さがす", + "twkn": "接続しているすべてのネットワーク", + "user_search": "ユーザーを探す", + "search": "検索", "who_to_follow": "おすすめユーザー", - "preferences": "せってい" + "preferences": "設定" }, "notifications": { - "broken_favorite": "ステータスがみつかりません。さがしています...", - "favorited_you": "あなたのステータスがおきにいりされました", + "broken_favorite": "ステータスが見つかりません。探しています...", + "favorited_you": "あなたのステータスがお気に入りされました", "followed_you": "フォローされました", - "load_older": "ふるいつうちをみる", - "notifications": "つうち", - "read": "よんだ!", + "load_older": "古い通知をみる", + "notifications": "通知", + "read": "読んだ!", "repeated_you": "あなたのステータスがリピートされました", - "no_more_notifications": "つうちはありません" + "no_more_notifications": "通知はありません" }, "polls": { - "add_poll": "いれふだをはじめる", - "add_option": "オプションをふやす", - "option": "オプション", - "votes": "いれふだ", - "vote": "ふだをいれる", - "type": "いれふだのかた", - "single_choice": "ひとつえらぶ", - "multiple_choices": "いくつでもえらべる", - "expiry": "いれふだのながさ", - "expires_in": "いれふだは {0} で、おわります", - "expired": "いれふだは {0} まえに、おわりました", - "not_enough_options": "ユニークなオプションが、たりません" + "add_poll": "投票を追加", + "add_option": "選択肢を追加", + "option": "選択肢", + "votes": "票", + "vote": "投票", + "type": "投票の形式", + "single_choice": "択一式", + "multiple_choices": "複数選択式", + "expiry": "投票期間", + "expires_in": "投票は {0} で終了します", + "expired": "投票は {0} 前に終了しました", + "not_enough_options": "相異なる選択肢が不足しています" }, "emoji": { "stickers": "ステッカー", - "emoji": "えもじ", - "keep_open": "ピッカーをあけたままにする", - "search_emoji": "えもじをさがす", - "add_emoji": "えもじをうちこむ", - "custom": "カスタムえもじ", - "unicode": "ユニコードえもじ" + "emoji": "絵文字", + "keep_open": "ピッカーを開いたままにする", + "search_emoji": "絵文字を検索", + "add_emoji": "絵文字を挿入", + "custom": "カスタム絵文字", + "unicode": "Unicode絵文字" }, "stickers": { - "add_sticker": "ステッカーをふやす" + "add_sticker": "ステッカーを追加" }, "interactions": { - "favs_repeats": "リピートとおきにいり", - "follows": "あたらしいフォロー", - "load_older": "ふるいやりとりをみる" + "favs_repeats": "リピートとお気に入り", + "follows": "新しいフォロワー", + "load_older": "古いインタラクションを見る" }, "post_status": { - "new_status": "とうこうする", - "account_not_locked_warning": "あなたのアカウントは {0} ではありません。あなたをフォローすれば、だれでも、フォロワーげんていのステータスをよむことができます。", + "new_status": "投稿する", + "account_not_locked_warning": "あなたのアカウントは {0} ではありません。あなたをフォローすれば、誰でも、フォロワー限定のステータスを読むことができます。", "account_not_locked_warning_link": "ロックされたアカウント", "attachments_sensitive": "ファイルをNSFWにする", "content_type": { @@ -134,131 +134,131 @@ "text/markdown": "Markdown", "text/bbcode": "BBCode" }, - "content_warning": "せつめい (かかなくてもよい)", - "default": "はねだくうこうに、つきました。", - "direct_warning_to_all": "このとうこうは、メンションされたすべてのユーザーが、みることができます。", - "direct_warning_to_first_only": "このとうこうは、メッセージのはじめでメンションされたユーザーだけが、みることができます。", - "direct_warning": "このステータスは、メンションされたユーザーだけが、よむことができます。", - "posting": "とうこう", + "content_warning": "説明 (省略可)", + "default": "羽田空港に着きました。", + "direct_warning_to_all": "この投稿は、メンションされたすべてのユーザーが、見ることができます。", + "direct_warning_to_first_only": "この投稿は、メッセージの冒頭でメンションされたユーザーだけが、見ることができます。", + "direct_warning": "このステータスは、メンションされたユーザーだけが、読むことができます。", + "posting": "投稿", "scope_notice": { - "public": "このとうこうは、だれでもみることができます", - "private": "このとうこうは、あなたのフォロワーだけが、みることができます", - "unlisted": "このとうこうは、パブリックタイムラインと、つながっているすべてのネットワークでは、みることができません" + "public": "この投稿は、誰でも見ることができます", + "private": "この投稿は、あなたのフォロワーだけが、見ることができます。", + "unlisted": "この投稿は、パブリックタイムラインと、接続しているすべてのネットワークには、表示されません。" }, "scope": { - "direct": "ダイレクト: メンションされたユーザーのみにとどきます。", - "private": "フォロワーげんてい: フォロワーのみにとどきます。", - "public": "パブリック: パブリックタイムラインにとどきます。", - "unlisted": "アンリステッド: パブリックタイムラインにとどきません。" + "direct": "ダイレクト: メンションされたユーザーのみに届きます。", + "private": "フォロワーげんてい: フォロワーのみに届きます。", + "public": "パブリック: パブリックタイムラインに届きます。", + "unlisted": "アンリステッド: パブリックタイムラインに届きません。" } }, "registration": { "bio": "プロフィール", "email": "Eメール", "fullname": "スクリーンネーム", - "password_confirm": "パスワードのかくにん", - "registration": "はじめる", - "token": "しょうたいトークン", + "password_confirm": "パスワードの確認", + "registration": "登録", + "token": "招待トークン", "captcha": "CAPTCHA", - "new_captcha": "もじがよめないときは、がぞうをクリックすると、あたらしいがぞうになります", - "username_placeholder": "れい: lain", - "fullname_placeholder": "れい: いわくら れいん", - "bio_placeholder": "れい:\nごきげんよう。わたしはれいん。\nわたしはアニメのおんなのこで、にほんのベッドタウンにすんでいます。ワイヤードで、わたしにあったことが、あるかもしれませんね。", + "new_captcha": "文字が読めないときは、画像をクリックすると、新しい画像になります", + "username_placeholder": "例: lain", + "fullname_placeholder": "例: 岩倉玲音", + "bio_placeholder": "例:\nこんにちは。私は玲音。\n私はアニメのキャラクターで、日本の郊外に住んでいます。私をWiredで見たことがあるかもしれません。", "validations": { - "username_required": "なにかかいてください", - "fullname_required": "なにかかいてください", - "email_required": "なにかかいてください", - "password_required": "なにかかいてください", - "password_confirmation_required": "なにかかいてください", - "password_confirmation_match": "パスワードがちがいます" + "username_required": "必須", + "fullname_required": "必須", + "email_required": "必須", + "password_required": "必須", + "password_confirmation_required": "必須", + "password_confirmation_match": "パスワードが違います" } }, "selectable_list": { - "select_all": "すべてえらぶ" + "select_all": "すべて選択" }, "settings": { - "app_name": "アプリのなまえ", + "app_name": "アプリの名称", "security": "セキュリティ", - "enter_current_password_to_confirm": "あなたのアイデンティティをたしかめるため、あなたのいまのパスワードをかいてください", + "enter_current_password_to_confirm": "あなたのアイデンティティを証明するため、現在のパスワードを入力してください", "mfa": { "otp" : "OTP", - "setup_otp" : "OTPをつくる", - "wait_pre_setup_otp" : "OTPをよういしています", - "confirm_and_enable" : "OTPをたしかめて、ゆうこうにする", - "title": "2-ファクターにんしょう", - "generate_new_recovery_codes" : "あたらしいリカバリーコードをつくる", - "warning_of_generate_new_codes" : "あたらしいリカバリーコードをつくったら、ふるいコードはつかえなくなります。", + "setup_otp" : "OTPのセットアップ", + "wait_pre_setup_otp" : "OTPのプリセット", + "confirm_and_enable" : "OTPの確認と有効化", + "title": "2段階認証", + "generate_new_recovery_codes" : "新しいリカバリーコードを生成", + "warning_of_generate_new_codes" : "新しいリカバリーコードを生成すると、古いコードは使用できなくなります。", "recovery_codes" : "リカバリーコード。", - "waiting_a_recovery_codes": "バックアップコードをうけとっています...", - "recovery_codes_warning" : "コードをかきうつすか、ひとにみられないところにセーブしてください。そうでなければ、あなたはこのコードをふたたびみることはできません。もしあなたが、2FAアプリのアクセスをうしなって、なおかつ、リカバリーコードもおもいだせないならば、あなたはあなたのアカウントから、しめだされます。", - "authentication_methods" : "にんしょうメソッド", + "waiting_a_recovery_codes": "バックアップコードを受信しています...", + "recovery_codes_warning" : "コードを紙に書くか、安全な場所に保存してください。そうでなければ、あなたはコードを再び見ることはできません。もし2段階認証アプリのアクセスを喪失し、なおかつ、リカバリーコードもないならば、あなたは自分のアカウントから閉め出されます。", + "authentication_methods" : "認証方法", "scan": { "title": "スキャン", - "desc": "あなたの2-ファクターアプリをつかって、このQRコードをスキャンするか、テキストキーをうちこんでください:", + "desc": "あなたの2段階認証アプリを使って、このQRコードをスキャンするか、テキストキーを入力してください:", "secret_code": "キー" }, "verify": { - "desc": "2-ファクターにんしょうをつかうには、あなたの2-ファクターアプリのコードをいれてください:" + "desc": "2段階認証を有効にするには、あなたの2段階認証アプリのコードを入力してください:" } }, "attachmentRadius": "ファイル", "attachments": "ファイル", - "autoload": "したにスクロールしたとき、じどうてきによみこむ。", + "autoload": "下にスクロールしたとき、自動的に読み込む。", "avatar": "アバター", - "avatarAltRadius": "つうちのアバター", + "avatarAltRadius": "通知のアバター", "avatarRadius": "アバター", "background": "バックグラウンド", "bio": "プロフィール", "block_export": "ブロックのエクスポート", - "block_export_button": "ブロックをCSVファイルにエクスポート", + "block_export_button": "ブロックをCSVファイルにエクスポートする", "block_import": "ブロックのインポート", - "block_import_error": "ブロックのインポートがエラーになりました", - "blocks_imported": "ブロックをインポートしました! じっさいにブロックするまでには、もうしばらくかかります。", + "block_import_error": "ブロックのインポートに失敗しました", + "blocks_imported": "ブロックをインポートしました! 実際に処理されるまでに、しばらく時間がかかります。", "blocks_tab": "ブロック", "btnRadius": "ボタン", - "cBlue": "リプライとフォロー", + "cBlue": "返信とフォロー", "cGreen": "リピート", - "cOrange": "おきにいり", + "cOrange": "お気に入り", "cRed": "キャンセル", - "change_password": "パスワードをかえる", - "change_password_error": "パスワードをかえることが、できなかったかもしれません。", - "changed_password": "パスワードが、かわりました!", - "collapse_subject": "せつめいのあるとうこうをたたむ", - "composing": "とうこう", - "confirm_new_password": "あたらしいパスワードのかくにん", - "current_avatar": "いまのアバター", - "current_password": "いまのパスワード", - "current_profile_banner": "いまのプロフィールバナー", + "change_password": "パスワードを変える", + "change_password_error": "パスワードを変えることが、できなかったかもしれません。", + "changed_password": "パスワードが、変わりました!", + "collapse_subject": "説明のある投稿をたたむ", + "composing": "投稿", + "confirm_new_password": "新しいパスワードの確認", + "current_avatar": "現在のアバター", + "current_password": "現在のパスワード", + "current_profile_banner": "現在のプロフィールバナー", "data_import_export_tab": "インポートとエクスポート", - "default_vis": "デフォルトのこうかいはんい", - "delete_account": "アカウントをけす", - "delete_account_description": "あなたのアカウントとメッセージが、きえます。", - "delete_account_error": "アカウントをけすことが、できなかったかもしれません。インスタンスのアドミニストレーターに、おといあわせください。", - "delete_account_instructions": "ほんとうにアカウントをけしてもいいなら、パスワードをかいてください。", - "discoverable": "けんさくなどのサービスで、このアカウントをみつけてもよい", - "avatar_size_instruction": "アバターのおおきさは、150×150ピクセルか、それよりもおおきくするといいです。", - "pad_emoji": "えもじをピッカーでえらんだとき、えもじのまわりにスペースをいれる", - "export_theme": "セーブ", + "default_vis": "デフォルトの公開範囲", + "delete_account": "アカウントを消す", + "delete_account_description": "あなたのアカウントとメッセージが、消えます。", + "delete_account_error": "アカウントを消すことが、できなかったかもしれません。インスタンスの管理者に、連絡してください。", + "delete_account_instructions": "本当にアカウントを消してもいいなら、パスワードを入力してください。", + "discoverable": "検索などのサービスでこのアカウントを見つけることを許可する", + "avatar_size_instruction": "アバターの大きさは、150×150ピクセルか、それよりも大きくするといいです。", + "pad_emoji": "ピッカーから絵文字を挿入するとき、絵文字の両側にスペースを入れる", + "export_theme": "保存", "filtering": "フィルタリング", - "filtering_explanation": "これらのことばをふくむすべてのものがミュートされます。1ぎょうに1つのことばをかいてください。", + "filtering_explanation": "これらの言葉を含むすべてのものがミュートされます。1行に1つの言葉を書いてください。", "follow_export": "フォローのエクスポート", "follow_export_button": "エクスポート", - "follow_export_processing": "おまちください。まもなくファイルをダウンロードできます。", - "follow_import": "フォローインポート", + "follow_export_processing": "お待ちください。まもなくファイルをダウンロードできます。", + "follow_import": "フォローのインポート", "follow_import_error": "フォローのインポートがエラーになりました。", - "follows_imported": "フォローがインポートされました! すこしじかんがかかるかもしれません。", + "follows_imported": "フォローがインポートされました! 少し時間がかかるかもしれません。", "foreground": "フォアグラウンド", - "general": "ぜんぱん", - "hide_attachments_in_convo": "スレッドのファイルをかくす", - "hide_attachments_in_tl": "タイムラインのファイルをかくす", - "hide_muted_posts": "ミュートしたユーザーのとうこうをかくす", - "max_thumbnails": "ひとつのとうこうにいれられるサムネイルのかず", - "hide_isp": "インスタンススペシフィックパネルをかくす", - "preload_images": "がぞうをさきよみする", - "use_one_click_nsfw": "NSFWなファイルを1クリックでひらく", - "hide_post_stats": "とうこうのとうけいをかくす (れい: おきにいりのかず)", - "hide_user_stats": "ユーザーのとうけいをかくす (れい: フォロワーのかず)", - "hide_filtered_statuses": "フィルターされたとうこうをかくす", + "general": "全般", + "hide_attachments_in_convo": "スレッドのファイルを隠す", + "hide_attachments_in_tl": "タイムラインのファイルを隠す", + "hide_muted_posts": "ミュートしているユーザーの投稿を隠す", + "max_thumbnails": "投稿に含まれるサムネイルの最大数", + "hide_isp": "インスタンス固有パネルを隠す", + "preload_images": "画像を先読みする", + "use_one_click_nsfw": "NSFWなファイルを1クリックで開く", + "hide_post_stats": "投稿の統計を隠す (例: お気に入りの数)", + "hide_user_stats": "ユーザーの統計を隠す (例: フォロワーの数)", + "hide_filtered_statuses": "フィルターされた投稿を隠す", "import_blocks_from_a_csv_file": "CSVファイルからブロックをインポートする", "import_followers_from_a_csv_file": "CSVファイルからフォローをインポートする", "import_theme": "ロード", @@ -267,198 +267,198 @@ "instance_default": "(デフォルト: {value})", "instance_default_simple": "(デフォルト)", "interface": "インターフェース", - "interfaceLanguage": "インターフェースのことば", - "invalid_theme_imported": "このファイルはPleromaのテーマではありません。テーマはへんこうされませんでした。", + "interfaceLanguage": "インターフェースの言語", + "invalid_theme_imported": "このファイルはPleromaのテーマではありません。テーマは変更されませんでした。", "limited_availability": "あなたのブラウザではできません", "links": "リンク", - "lock_account_description": "あなたがみとめたひとだけ、あなたのアカウントをフォローできる", - "loop_video": "ビデオをくりかえす", - "loop_video_silent_only": "おとのないビデオだけくりかえす", + "lock_account_description": "あなたが認めた人だけ、あなたのアカウントをフォローできる", + "loop_video": "ビデオを繰り返す", + "loop_video_silent_only": "音のないビデオだけ繰り返す", "mutes_tab": "ミュート", - "play_videos_in_modal": "ビデオをメディアビューアーでみる", - "use_contain_fit": "がぞうのサムネイルを、きりぬかない", - "name": "なまえ", - "name_bio": "なまえとプロフィール", - "new_password": "あたらしいパスワード", - "notification_visibility": "ひょうじするつうち", + "play_videos_in_modal": "ビデオをメディアビューアーで見る", + "use_contain_fit": "画像のサムネイルを、切り抜かない", + "name": "名前", + "name_bio": "名前とプロフィール", + "new_password": "新しいパスワード", + "notification_visibility": "表示する通知", "notification_visibility_follows": "フォロー", - "notification_visibility_likes": "おきにいり", + "notification_visibility_likes": "お気に入り", "notification_visibility_mentions": "メンション", "notification_visibility_repeats": "リピート", - "no_rich_text_description": "リッチテキストをつかわない", - "no_blocks": "ブロックしていません", - "no_mutes": "ミュートしていません", - "hide_follows_description": "フォローしているひとをみせない", - "hide_followers_description": "フォロワーをみせない", - "hide_follows_count_description": "フォローしているひとのかずをみせない", - "hide_followers_count_description": "フォロワーのかずをみせない", - "show_admin_badge": "アドミンのしるしをみせる", - "show_moderator_badge": "モデレーターのしるしをみせる", - "nsfw_clickthrough": "NSFWなファイルをかくす", + "no_rich_text_description": "リッチテキストを使わない", + "no_blocks": "ブロックはありません", + "no_mutes": "ミュートはありません", + "hide_follows_description": "フォローしている人を見せない", + "hide_followers_description": "フォロワーを見せない", + "hide_follows_count_description": "フォローしている人の数を見せない", + "hide_followers_count_description": "フォロワーの数を見せない", + "show_admin_badge": "管理者のバッジを見せる", + "show_moderator_badge": "モデレーターのバッジを見せる", + "nsfw_clickthrough": "NSFWなファイルを隠す", "oauth_tokens": "OAuthトークン", "token": "トークン", - "refresh_token": "トークンをリフレッシュ", - "valid_until": "おわりのとき", - "revoke_token": "とりけす", + "refresh_token": "トークンを更新", + "valid_until": "まで有効", + "revoke_token": "取り消す", "panelRadius": "パネル", - "pause_on_unfocused": "タブにフォーカスがないときストリーミングをとめる", + "pause_on_unfocused": "タブにフォーカスがないときストリーミングを止める", "presets": "プリセット", "profile_background": "プロフィールのバックグラウンド", "profile_banner": "プロフィールバナー", "profile_tab": "プロフィール", - "radii_help": "インターフェースのまるさをせっていする。", + "radii_help": "インターフェースの丸さを設定する。", "replies_in_timeline": "タイムラインのリプライ", - "reply_link_preview": "カーソルをかさねたとき、リプライのプレビューをみる", - "reply_visibility_all": "すべてのリプライをみる", - "reply_visibility_following": "わたしにあてられたリプライと、フォローしているひとからのリプライをみる", - "reply_visibility_self": "わたしにあてられたリプライをみる", - "autohide_floating_post_button": "あたらしいとうこうのボタンを、じどうてきにかくす (モバイル)", - "saving_err": "せっていをセーブできませんでした", - "saving_ok": "せっていをセーブしました", - "search_user_to_block": "ブロックしたいひとを、ここでけんさくできます", - "search_user_to_mute": "ミュートしたいひとを、ここでけんさくできます", + "reply_link_preview": "カーソルを重ねたとき、リプライのプレビューを見る", + "reply_visibility_all": "すべてのリプライを見る", + "reply_visibility_following": "私に宛てられたリプライと、フォローしている人からのリプライを見る", + "reply_visibility_self": "私に宛てられたリプライを見る", + "autohide_floating_post_button": "新しい投稿ボタンを自動的に隠す (モバイル)", + "saving_err": "設定を保存できませんでした", + "saving_ok": "設定を保存しました", + "search_user_to_block": "ブロックしたいユーザーを検索", + "search_user_to_mute": "ミュートしたいユーザーを検索", "security_tab": "セキュリティ", - "scope_copy": "リプライするとき、こうかいはんいをコピーする (DMのこうかいはんいは、つねにコピーされます)", - "minimal_scopes_mode": "こうかいはんいせんたくオプションを、ちいさくする", - "set_new_avatar": "あたらしいアバターをせっていする", - "set_new_profile_background": "あたらしいプロフィールのバックグラウンドをせっていする", - "set_new_profile_banner": "あたらしいプロフィールバナーを設定する", - "settings": "せってい", - "subject_input_always_show": "サブジェクトフィールドをいつでもひょうじする", - "subject_line_behavior": "リプライするときサブジェクトをコピーする", - "subject_line_email": "メールふう: \"re: サブジェクト\"", - "subject_line_mastodon": "マストドンふう: そのままコピー", + "scope_copy": "返信するとき、公開範囲をコピーする (DMの公開範囲は、常にコピーされます)", + "minimal_scopes_mode": "公開範囲選択オプションを最小にする", + "set_new_avatar": "新しいアバターを設定する", + "set_new_profile_background": "新しいプロフィールのバックグラウンドを設定する", + "set_new_profile_banner": "新しいプロフィールバナーを設定する", + "settings": "設定", + "subject_input_always_show": "サブジェクトフィールドをいつでも表示する", + "subject_line_behavior": "返信するときサブジェクトをコピーする", + "subject_line_email": "メール風: \"re: サブジェクト\"", + "subject_line_mastodon": "マストドン風: そのままコピー", "subject_line_noop": "コピーしない", - "post_status_content_type": "とうこうのコンテントタイプ", - "stop_gifs": "カーソルをかさねたとき、GIFをうごかす", - "streaming": "うえまでスクロールしたとき、じどうてきにストリーミングする", - "text": "もじ", + "post_status_content_type": "投稿のコンテントタイプ", + "stop_gifs": "カーソルを重ねたとき、GIFを動かす", + "streaming": "上までスクロールしたとき、自動的にストリーミングする", + "text": "文字", "theme": "テーマ", "theme_help": "カラーテーマをカスタマイズできます", - "theme_help_v2_1": "チェックボックスをONにすると、コンポーネントごとに、いろと、とうめいどを、オーバーライドできます。「すべてクリア」ボタンをおすと、すべてのオーバーライドを、やめます。", - "theme_help_v2_2": "バックグラウンドとテキストのコントラストをあらわすアイコンがあります。マウスをホバーすると、くわしいせつめいがでます。とうめいないろをつかっているときは、もっともわるいばあいのコントラストがしめされます。", - "upload_a_photo": "がぞうをアップロード", + "theme_help_v2_1": "チェックボックスをONにすると、コンポーネントごとに、色と透明度をオーバーライドできます。「すべてクリア」ボタンを押すと、すべてのオーバーライドをやめます。", + "theme_help_v2_2": "バックグラウンドとテキストのコントラストを表すアイコンがあります。マウスをホバーすると、詳しい説明が出ます。透明な色を使っているときは、最悪の場合のコントラストが示されます。", "tooltipRadius": "ツールチップとアラート", - "user_settings": "ユーザーせってい", + "upload_a_photo": "画像をアップロード", + "user_settings": "ユーザー設定", "values": { "false": "いいえ", "true": "はい" }, - "notifications": "つうち", - "notification_setting": "つうちをうけとる:", - "notification_setting_follows": "あなたがフォローしているひとから", - "notification_setting_non_follows": "あなたがフォローしていないひとから", - "notification_setting_followers": "あなたをフォローしているひとから", - "notification_setting_non_followers": "あなたをフォローしていないひとから", - "notification_mutes": "あるユーザーからのつうちをとめるには、ミュートしてください。", - "notification_blocks": "ブロックしているユーザーからのつうちは、すべてとまります。", - "enable_web_push_notifications": "ウェブプッシュつうちをゆるす", + "notifications": "通知", + "notification_setting": "通知を受け取る:", + "notification_setting_follows": "あなたがフォローしているユーザーから", + "notification_setting_non_follows": "あなたがフォローしていないユーザーから", + "notification_setting_followers": "あなたをフォローしているユーザーから", + "notification_setting_non_followers": "あなたをフォローしていないユーザーから", + "notification_mutes": "特定のユーザーからの通知を止めるには、ミュートしてください。", + "notification_blocks": "ブロックしているユーザーからの通知は、すべて止まります。", + "enable_web_push_notifications": "ウェブプッシュ通知を許可する", "style": { "switcher": { - "keep_color": "いろをのこす", - "keep_shadows": "かげをのこす", - "keep_opacity": "とうめいどをのこす", - "keep_roundness": "まるさをのこす", - "keep_fonts": "フォントをのこす", - "save_load_hint": "「のこす」オプションをONにすると、テーマをえらんだときとロードしたとき、いまのせっていをのこします。また、テーマをエクスポートするとき、これらのオプションをストアします。すべてのチェックボックスをOFFにすると、テーマをエクスポートしたとき、すべてのせっていをセーブします。", + "keep_color": "色を残す", + "keep_shadows": "影を残す", + "keep_opacity": "透明度を残す", + "keep_roundness": "丸さを残す", + "keep_fonts": "フォントを残す", + "save_load_hint": "「残す」オプションをONにすると、テーマを選んだときとロードしたとき、現在の設定を残します。また、テーマをエクスポートするとき、これらのオプションを維持します。すべてのチェックボックスをOFFにすると、テーマをエクスポートしたとき、すべての設定を保存します。", "reset": "リセット", "clear_all": "すべてクリア", - "clear_opacity": "とうめいどをクリア" + "clear_opacity": "透明度をクリア" }, "common": { - "color": "いろ", - "opacity": "とうめいど", + "color": "色", + "opacity": "透明度", "contrast": { "hint": "コントラストは {ratio} です。{level}。({context})", "level": { - "aa": "AAレベルガイドライン (ミニマル) をみたします", - "aaa": "AAAレベルガイドライン (レコメンデッド) をみたします。", - "bad": "ガイドラインをみたしません。" + "aa": "AAレベルガイドライン (ミニマル) を満たします", + "aaa": "AAAレベルガイドライン (レコメンデッド) を満たします。", + "bad": "ガイドラインを満たしません。" }, "context": { - "18pt": "おおきい (18ポイントいじょう) テキスト", + "18pt": "大きい (18ポイント以上) テキスト", "text": "テキスト" } } }, "common_colors": { - "_tab_label": "きょうつう", - "main": "きょうつうのいろ", - "foreground_hint": "「くわしく」タブで、もっとこまかくせっていできます", + "_tab_label": "共通", + "main": "共通の色", + "foreground_hint": "「詳細」タブで、もっと細かく設定できます", "rgbo": "アイコンとアクセントとバッジ" }, "advanced_colors": { - "_tab_label": "くわしく", + "_tab_label": "詳細", "alert": "アラートのバックグラウンド", "alert_error": "エラー", "badge": "バッジのバックグラウンド", - "badge_notification": "つうち", + "badge_notification": "通知", "panel_header": "パネルヘッダー", "top_bar": "トップバー", - "borders": "さかいめ", + "borders": "境界", "buttons": "ボタン", "inputs": "インプットフィールド", - "faint_text": "うすいテキスト" + "faint_text": "薄いテキスト" }, "radii": { - "_tab_label": "まるさ" + "_tab_label": "丸さ" }, "shadows": { - "_tab_label": "ひかりとかげ", + "_tab_label": "光と影", "component": "コンポーネント", "override": "オーバーライド", - "shadow_id": "かげ #{value}", + "shadow_id": "影 #{value}", "blur": "ぼかし", - "spread": "ひろがり", - "inset": "うちがわ", - "hint": "かげのせっていでは、いろのあたいとして --variable をつかうことができます。これはCSS3へんすうです。ただし、とうめいどのせっていは、きかなくなります。", + "spread": "広がり", + "inset": "内側", + "hint": "影の設定では、色の値として --variable を使うことができます。これはCSS3変数です。ただし、透明度の設定は、効かなくなります。", "filter_hint": { - "always_drop_shadow": "ブラウザーがサポートしていれば、つねに {0} がつかわれます。", + "always_drop_shadow": "ブラウザーがサポートしていれば、常に {0} が使われます。", "drop_shadow_syntax": "{0} は、{1} パラメーターと {2} キーワードをサポートしていません。", - "avatar_inset": "うちがわのかげと、そとがわのかげを、いっしょにつかうと、とうめいなアバターが、へんなみためになります。", - "spread_zero": "ひろがりが 0 よりもおおきなかげは、0 とおなじです。", - "inset_classic": "うちがわのかげは {0} をつかいます。" + "avatar_inset": "内側の影と外側の影を同時に使うと、透明なアバターの表示が乱れます。", + "spread_zero": "広がりが 0 よりも大きな影は、0 と同じです。", + "inset_classic": "内側の影は {0} を使います。" }, "components": { "panel": "パネル", "panelHeader": "パネルヘッダー", "topBar": "トップバー", "avatar": "ユーザーアバター (プロフィール)", - "avatarStatus": "ユーザーアバター (とうこう)", + "avatarStatus": "ユーザーアバター (投稿)", "popup": "ポップアップとツールチップ", "button": "ボタン", "buttonHover": "ボタン (ホバー)", - "buttonPressed": "ボタン (おされているとき)", - "buttonPressedHover": "ボタン (ホバー、かつ、おされているとき)", + "buttonPressed": "ボタン (押されているとき)", + "buttonPressedHover": "ボタン (ホバー、かつ、押されているとき)", "input": "インプットフィールド" } }, "fonts": { "_tab_label": "フォント", - "help": "「カスタム」をえらんだときは、システムにあるフォントのなまえを、ただしくにゅうりょくしてください。", + "help": "「カスタム」を選んだときは、システムにあるフォントの名前を、正しく入力してください。", "components": { "interface": "インターフェース", "input": "インプットフィールド", - "post": "とうこう", - "postCode": "モノスペース (とうこうがリッチテキストであるとき)" + "post": "投稿", + "postCode": "等幅 (投稿がリッチテキストであるとき)" }, - "family": "フォントめい", - "size": "おおきさ (px)", - "weight": "ふとさ", + "family": "フォント名", + "size": "大きさ (px)", + "weight": "太さ", "custom": "カスタム" }, "preview": { "header": "プレビュー", - "content": "ほんぶん", - "error": "エラーのれい", + "content": "本文", + "error": "エラーの例", "button": "ボタン", - "text": "これは{0}と{1}のれいです。", + "text": "これは{0}と{1}の例です。", "mono": "monospace", - "input": "はねだくうこうに、つきました。", - "faint_link": "とてもたすけになるマニュアル", - "fine_print": "わたしたちの{0}を、よまないでください!", + "input": "羽田空港に着きました。", + "faint_link": "とても助けになるマニュアル", + "fine_print": "私たちの{0}を、読まないでください!", "header_faint": "エラーではありません", - "checkbox": "りようきやくを、よみました", + "checkbox": "利用規約を読みました", "link": "ハイパーリンク" } }, @@ -505,38 +505,38 @@ "timeline": { "collapse": "たたむ", "conversation": "スレッド", - "error_fetching": "よみこみがエラーになりました", - "load_older": "ふるいステータス", - "no_retweet_hint": "とうこうを「フォロワーのみ」または「ダイレクト」にすると、リピートできなくなります", + "error_fetching": "読み込みがエラーになりました", + "load_older": "古いステータス", + "no_retweet_hint": "投稿を「フォロワーのみ」または「ダイレクト」にすると、リピートできなくなります", "repeated": "リピート", - "show_new": "よみこみ", - "up_to_date": "さいしん", - "no_more_statuses": "これでおわりです", - "no_statuses": "ありません" + "show_new": "読み込み", + "up_to_date": "最新", + "no_more_statuses": "これで終わりです", + "no_statuses": "ステータスはありません" }, "status": { - "favorites": "おきにいり", + "favorites": "お気に入り", "repeats": "リピート", - "delete": "ステータスをけす", - "pin": "プロフィールにピンどめする", - "unpin": "プロフィールにピンどめするのをやめる", - "pinned": "ピンどめ", - "delete_confirm": "ほんとうに、このステータスを、けしてもいいですか?", - "reply_to": "へんしん:", - "replies_list": "へんしん:", - "mute_conversation": "スレッドをミュートする", - "unmute_conversation": "スレッドをミュートするのをやめる" + "delete": "ステータスを削除", + "pin": "プロフィールにピン留め", + "unpin": "プロフィールのピン留めを外す", + "pinned": "ピン留め", + "delete_confirm": "本当にこのステータスを削除してもよろしいですか?", + "reply_to": "返信", + "replies_list": "返信:", + "mute_conversation": "スレッドをミュート", + "unmute_conversation": "スレッドのミュートを解除" }, "user_card": { - "approve": "うけいれ", + "approve": "受け入れ", "block": "ブロック", "blocked": "ブロックしています!", - "deny": "おことわり", - "favorites": "おきにいり", + "deny": "お断り", + "favorites": "お気に入り", "follow": "フォロー", - "follow_sent": "リクエストを、おくりました!", + "follow_sent": "リクエストを送りました!", "follow_progress": "リクエストしています…", - "follow_again": "ふたたびリクエストをおくりますか?", + "follow_again": "再びリクエストを送りますか?", "follow_unfollow": "フォローをやめる", "followees": "フォロー", "followers": "フォロワー", @@ -549,66 +549,66 @@ "muted": "ミュートしています!", "per_day": "/日", "remote_follow": "リモートフォロー", - "report": "つうほう", + "report": "通報", "statuses": "ステータス", - "subscribe": "サブスクライブ", - "unsubscribe": "サブスクライブをやめる", - "unblock": "ブロックをやめる", - "unblock_progress": "ブロックをとりけしています...", + "subscribe": "購読", + "unsubscribe": "購読を解除", + "unblock": "ブロック解除", + "unblock_progress": "ブロックを解除しています...", "block_progress": "ブロックしています...", - "unmute": "ミュートをやめる", - "unmute_progress": "ミュートをとりけしています...", + "unmute": "ミュート解除", + "unmute_progress": "ミュートを解除しています...", "mute_progress": "ミュートしています...", "admin_menu": { "moderation": "モデレーション", - "grant_admin": "アドミンにする", - "revoke_admin": "アドミンをやめさせる", - "grant_moderator": "モデレーターにする", - "revoke_moderator": "モデレーターをやめさせる", + "grant_admin": "管理者権限を付与", + "revoke_admin": "管理者権限を解除", + "grant_moderator": "モデレーター権限を付与", + "revoke_moderator": "モデレーター権限を解除", "activate_account": "アカウントをアクティブにする", "deactivate_account": "アカウントをアクティブでなくする", - "delete_account": "アカウントをけす", - "force_nsfw": "すべてのとうこうをNSFWにする", - "strip_media": "とうこうからメディアをなくす", - "force_unlisted": "とうこうをアンリステッドにする", - "sandbox": "とうこうをフォロワーのみにする", - "disable_remote_subscription": "ほかのインスタンスからフォローされないようにする", + "delete_account": "アカウントを削除", + "force_nsfw": "すべての投稿をNSFWにする", + "strip_media": "投稿からメディアを除去する", + "force_unlisted": "投稿を未収載にする", + "sandbox": "投稿をフォロワーのみにする", + "disable_remote_subscription": "他のインスタンスからフォローされないようにする", "disable_any_subscription": "フォローされないようにする", - "quarantine": "ほかのインスタンスのユーザーのとうこうをとめる", - "delete_user": "ユーザーをけす", - "delete_user_confirmation": "あなたは、ほんとうに、きはたしかですか? これは、とりけすことが、できません。" + "quarantine": "他のインスタンスからの投稿を止める", + "delete_user": "ユーザーを削除", + "delete_user_confirmation": "あなたの精神状態に何か問題はございませんか? この操作を取り消すことはできません。" } }, "user_profile": { "timeline_title": "ユーザータイムライン", - "profile_does_not_exist": "ごめんなさい。このプロフィールは、そんざいしません。", - "profile_loading_error": "ごめんなさい。プロフィールのロードがエラーになりました。" + "profile_does_not_exist": "申し訳ない。このプロフィールは存在しません。", + "profile_loading_error": "申し訳ない。プロフィールの読み込みがエラーになりました。" }, "user_reporting": { - "title": "つうほうする: {0}", - "add_comment_description": "このつうほうは、あなたのインスタンスのモデレーターに、おくられます。このアカウントを、つうほうするりゆうを、せつめいすることができます:", - "additional_comments": "ついかのコメント", - "forward_description": "このアカウントは、ほかのインスタンスのものです。そのインスタンスにも、このつうほうのコピーを、おくりますか?", - "forward_to": "コピーをおくる: {0}", - "submit": "そうしん", - "generic_error": "あなたのリクエストをうけつけようとしましたが、エラーになってしまいました。" + "title": "通報する: {0}", + "add_comment_description": "この通報は、あなたのインスタンスのモデレーターに送られます。このアカウントを通報する理由を説明することができます:", + "additional_comments": "追加のコメント", + "forward_description": "このアカウントは他のサーバーに置かれています。この通報のコピーをリモートのサーバーに送りますか?", + "forward_to": "転送する: {0}", + "submit": "送信", + "generic_error": "あなたのリクエストを処理しようとしましたが、エラーになりました。" }, "who_to_follow": { - "more": "くわしく", + "more": "詳細", "who_to_follow": "おすすめユーザー" }, "tool_tip": { "media_upload": "メディアをアップロード", "repeat": "リピート", - "reply": "リプライ", - "favorite": "おきにいり", - "user_settings": "ユーザーせってい" + "reply": "返信", + "favorite": "お気に入り", + "user_settings": "ユーザー設定" }, "upload":{ "error": { - "base": "アップロードにしっぱいしました。", - "file_too_big": "ファイルがおおきすぎます [{filesize} {filesizeunit} / {allowedsize} {allowedsizeunit}]", - "default": "しばらくしてから、ためしてください" + "base": "アップロードに失敗しました。", + "file_too_big": "ファイルが大きすぎます [{filesize} {filesizeunit} / {allowedsize} {allowedsizeunit}]", + "default": "しばらくしてから試してください" }, "file_size_units": { "B": "B", @@ -619,21 +619,21 @@ } }, "search": { - "people": "ひとびと", + "people": "人々", "hashtags": "ハッシュタグ", - "person_talking": "{count} にんが、はなしています", - "people_talking": "{count} にんが、はなしています", - "no_results": "みつかりませんでした" + "person_talking": "{count} 人が話しています", + "people_talking": "{count} 人が話しています", + "no_results": "見つかりませんでした" }, "password_reset": { - "forgot_password": "パスワードを、わすれましたか?", + "forgot_password": "パスワードを忘れましたか?", "password_reset": "パスワードリセット", - "instruction": "あなたのメールアドレスかユーザーめいをいれてください。パスワードをリセットするためのリンクをおくります。", - "placeholder": "あなたのメールアドレスかユーザーめい", - "check_email": "パスワードをリセットするためのリンクがかかれたメールが、とどいているかどうか、みてください。", - "return_home": "ホームページにもどる", - "not_found": "そのメールアドレスまたはユーザーめいを、みつけることができませんでした。", - "too_many_requests": "パスワードリセットを、ためすことが、おおすぎます。しばらくしてから、ためしてください。", - "password_reset_disabled": "このインスタンスでは、パスワードリセットは、できません。インスタンスのアドミニストレーターに、おといあわせください。" + "instruction": "メールアドレスまたはユーザー名を入力してください。パスワードをリセットするためのリンクを送信します。", + "placeholder": "メールアドレスまたはユーザー名", + "check_email": "パスワードをリセットするためのリンクが記載されたメールが届いているか確認してください。", + "return_home": "ホームページに戻る", + "not_found": "メールアドレスまたはユーザー名が見つかりませんでした。", + "too_many_requests": "試行回数の制限に達しました。しばらく時間を置いてから再試行してください。", + "password_reset_disabled": "このインスタンスではパスワードリセットは無効になっています。インスタンスの管理者に連絡してください。" } } diff --git a/src/i18n/ja_easy.json b/src/i18n/ja_easy.json new file mode 100644 index 00000000..592a7257 --- /dev/null +++ b/src/i18n/ja_easy.json @@ -0,0 +1,639 @@ +{ + "chat": { + "title": "チャット" + }, + "exporter": { + "export": "エクスポート", + "processing": "おまちください。しばらくすると、あなたのファイルをダウンロードするように、メッセージがでます。" + }, + "features_panel": { + "chat": "チャット", + "gopher": "Gopher", + "media_proxy": "メディアプロクシ", + "scope_options": "こうかいはんいせんたく", + "text_limit": "もじのかず", + "title": "ゆうこうなきのう", + "who_to_follow": "おすすめユーザー" + }, + "finder": { + "error_fetching_user": "ユーザーけんさくがエラーになりました。", + "find_user": "ユーザーをさがす" + }, + "general": { + "apply": "てきよう", + "submit": "そうしん", + "more": "つづき", + "generic_error": "エラーになりました", + "optional": "かかなくてもよい", + "show_more": "つづきをみる", + "show_less": "たたむ", + "cancel": "キャンセル", + "disable": "なし", + "enable": "あり", + "confirm": "たしかめる", + "verify": "たしかめる" + }, + "image_cropper": { + "crop_picture": "がぞうをきりぬく", + "save": "セーブ", + "save_without_cropping": "きりぬかずにセーブ", + "cancel": "キャンセル" + }, + "importer": { + "submit": "そうしん", + "success": "インポートできました。", + "error": "インポートがエラーになりました。" + }, + "login": { + "login": "ログイン", + "description": "OAuthでログイン", + "logout": "ログアウト", + "password": "パスワード", + "placeholder": "れい: lain", + "register": "はじめる", + "username": "ユーザーめい", + "hint": "はなしあいにくわわるには、ログインしてください", + "authentication_code": "にんしょうコード", + "enter_recovery_code": "リカバリーコードをいれてください", + "enter_two_factor_code": "2-ファクターコードをいれてください", + "recovery_code": "リカバリーコード", + "heading" : { + "totp" : "2-ファクターにんしょう", + "recovery" : "2-ファクターリカバリー" + } + }, + "media_modal": { + "previous": "まえ", + "next": "つぎ" + }, + "nav": { + "about": "これはなに?", + "back": "もどる", + "chat": "ローカルチャット", + "friend_requests": "フォローリクエスト", + "mentions": "メンション", + "interactions": "やりとり", + "dms": "ダイレクトメッセージ", + "public_tl": "パブリックタイムライン", + "timeline": "タイムライン", + "twkn": "つながっているすべてのネットワーク", + "user_search": "ユーザーをさがす", + "search": "さがす", + "who_to_follow": "おすすめユーザー", + "preferences": "せってい" + }, + "notifications": { + "broken_favorite": "ステータスがみつかりません。さがしています...", + "favorited_you": "あなたのステータスがおきにいりされました", + "followed_you": "フォローされました", + "load_older": "ふるいつうちをみる", + "notifications": "つうち", + "read": "よんだ!", + "repeated_you": "あなたのステータスがリピートされました", + "no_more_notifications": "つうちはありません" + }, + "polls": { + "add_poll": "いれふだをはじめる", + "add_option": "オプションをふやす", + "option": "オプション", + "votes": "いれふだ", + "vote": "ふだをいれる", + "type": "いれふだのかた", + "single_choice": "ひとつえらぶ", + "multiple_choices": "いくつでもえらべる", + "expiry": "いれふだのながさ", + "expires_in": "いれふだは {0} で、おわります", + "expired": "いれふだは {0} まえに、おわりました", + "not_enough_options": "ユニークなオプションが、たりません" + }, + "emoji": { + "stickers": "ステッカー", + "emoji": "えもじ", + "keep_open": "ピッカーをあけたままにする", + "search_emoji": "えもじをさがす", + "add_emoji": "えもじをうちこむ", + "custom": "カスタムえもじ", + "unicode": "ユニコードえもじ" + }, + "stickers": { + "add_sticker": "ステッカーをふやす" + }, + "interactions": { + "favs_repeats": "リピートとおきにいり", + "follows": "あたらしいフォロー", + "load_older": "ふるいやりとりをみる" + }, + "post_status": { + "new_status": "とうこうする", + "account_not_locked_warning": "あなたのアカウントは {0} ではありません。あなたをフォローすれば、だれでも、フォロワーげんていのステータスをよむことができます。", + "account_not_locked_warning_link": "ロックされたアカウント", + "attachments_sensitive": "ファイルをNSFWにする", + "content_type": { + "text/plain": "プレーンテキスト", + "text/html": "HTML", + "text/markdown": "Markdown", + "text/bbcode": "BBCode" + }, + "content_warning": "せつめい (かかなくてもよい)", + "default": "はねだくうこうに、つきました。", + "direct_warning_to_all": "このとうこうは、メンションされたすべてのユーザーが、みることができます。", + "direct_warning_to_first_only": "このとうこうは、メッセージのはじめでメンションされたユーザーだけが、みることができます。", + "direct_warning": "このステータスは、メンションされたユーザーだけが、よむことができます。", + "posting": "とうこう", + "scope_notice": { + "public": "このとうこうは、だれでもみることができます", + "private": "このとうこうは、あなたのフォロワーだけが、みることができます", + "unlisted": "このとうこうは、パブリックタイムラインと、つながっているすべてのネットワークでは、みることができません" + }, + "scope": { + "direct": "ダイレクト: メンションされたユーザーのみにとどきます。", + "private": "フォロワーげんてい: フォロワーのみにとどきます。", + "public": "パブリック: パブリックタイムラインにとどきます。", + "unlisted": "アンリステッド: パブリックタイムラインにとどきません。" + } + }, + "registration": { + "bio": "プロフィール", + "email": "Eメール", + "fullname": "スクリーンネーム", + "password_confirm": "パスワードのかくにん", + "registration": "はじめる", + "token": "しょうたいトークン", + "captcha": "CAPTCHA", + "new_captcha": "もじがよめないときは、がぞうをクリックすると、あたらしいがぞうになります", + "username_placeholder": "れい: lain", + "fullname_placeholder": "れい: いわくら れいん", + "bio_placeholder": "れい:\nごきげんよう。わたしはれいん。\nわたしはアニメのおんなのこで、にほんのベッドタウンにすんでいます。ワイヤードで、わたしにあったことが、あるかもしれませんね。", + "validations": { + "username_required": "なにかかいてください", + "fullname_required": "なにかかいてください", + "email_required": "なにかかいてください", + "password_required": "なにかかいてください", + "password_confirmation_required": "なにかかいてください", + "password_confirmation_match": "パスワードがちがいます" + } + }, + "selectable_list": { + "select_all": "すべてえらぶ" + }, + "settings": { + "app_name": "アプリのなまえ", + "security": "セキュリティ", + "enter_current_password_to_confirm": "あなたのアイデンティティをたしかめるため、あなたのいまのパスワードをかいてください", + "mfa": { + "otp" : "OTP", + "setup_otp" : "OTPをつくる", + "wait_pre_setup_otp" : "OTPをよういしています", + "confirm_and_enable" : "OTPをたしかめて、ゆうこうにする", + "title": "2-ファクターにんしょう", + "generate_new_recovery_codes" : "あたらしいリカバリーコードをつくる", + "warning_of_generate_new_codes" : "あたらしいリカバリーコードをつくったら、ふるいコードはつかえなくなります。", + "recovery_codes" : "リカバリーコード。", + "waiting_a_recovery_codes": "バックアップコードをうけとっています...", + "recovery_codes_warning" : "コードをかきうつすか、ひとにみられないところにセーブしてください。そうでなければ、あなたはこのコードをふたたびみることはできません。もしあなたが、2FAアプリのアクセスをうしなって、なおかつ、リカバリーコードもおもいだせないならば、あなたはあなたのアカウントから、しめだされます。", + "authentication_methods" : "にんしょうメソッド", + "scan": { + "title": "スキャン", + "desc": "あなたの2-ファクターアプリをつかって、このQRコードをスキャンするか、テキストキーをうちこんでください:", + "secret_code": "キー" + }, + "verify": { + "desc": "2-ファクターにんしょうをつかうには、あなたの2-ファクターアプリのコードをいれてください:" + } + }, + "attachmentRadius": "ファイル", + "attachments": "ファイル", + "autoload": "したにスクロールしたとき、じどうてきによみこむ。", + "avatar": "アバター", + "avatarAltRadius": "つうちのアバター", + "avatarRadius": "アバター", + "background": "バックグラウンド", + "bio": "プロフィール", + "block_export": "ブロックのエクスポート", + "block_export_button": "ブロックをCSVファイルにエクスポート", + "block_import": "ブロックのインポート", + "block_import_error": "ブロックのインポートがエラーになりました", + "blocks_imported": "ブロックをインポートしました! じっさいにブロックするまでには、もうしばらくかかります。", + "blocks_tab": "ブロック", + "btnRadius": "ボタン", + "cBlue": "リプライとフォロー", + "cGreen": "リピート", + "cOrange": "おきにいり", + "cRed": "キャンセル", + "change_password": "パスワードをかえる", + "change_password_error": "パスワードをかえることが、できなかったかもしれません。", + "changed_password": "パスワードが、かわりました!", + "collapse_subject": "せつめいのあるとうこうをたたむ", + "composing": "とうこう", + "confirm_new_password": "あたらしいパスワードのかくにん", + "current_avatar": "いまのアバター", + "current_password": "いまのパスワード", + "current_profile_banner": "いまのプロフィールバナー", + "data_import_export_tab": "インポートとエクスポート", + "default_vis": "デフォルトのこうかいはんい", + "delete_account": "アカウントをけす", + "delete_account_description": "あなたのアカウントとメッセージが、きえます。", + "delete_account_error": "アカウントをけすことが、できなかったかもしれません。インスタンスのアドミニストレーターに、おといあわせください。", + "delete_account_instructions": "ほんとうにアカウントをけしてもいいなら、パスワードをかいてください。", + "discoverable": "けんさくなどのサービスで、このアカウントをみつけてもよい", + "avatar_size_instruction": "アバターのおおきさは、150×150ピクセルか、それよりもおおきくするといいです。", + "pad_emoji": "えもじをピッカーでえらんだとき、えもじのまわりにスペースをいれる", + "export_theme": "セーブ", + "filtering": "フィルタリング", + "filtering_explanation": "これらのことばをふくむすべてのものがミュートされます。1ぎょうに1つのことばをかいてください。", + "follow_export": "フォローのエクスポート", + "follow_export_button": "エクスポート", + "follow_export_processing": "おまちください。まもなくファイルをダウンロードできます。", + "follow_import": "フォローインポート", + "follow_import_error": "フォローのインポートがエラーになりました。", + "follows_imported": "フォローがインポートされました! すこしじかんがかかるかもしれません。", + "foreground": "フォアグラウンド", + "general": "ぜんぱん", + "hide_attachments_in_convo": "スレッドのファイルをかくす", + "hide_attachments_in_tl": "タイムラインのファイルをかくす", + "hide_muted_posts": "ミュートしたユーザーのとうこうをかくす", + "max_thumbnails": "ひとつのとうこうにいれられるサムネイルのかず", + "hide_isp": "インスタンススペシフィックパネルをかくす", + "preload_images": "がぞうをさきよみする", + "use_one_click_nsfw": "NSFWなファイルを1クリックでひらく", + "hide_post_stats": "とうこうのとうけいをかくす (れい: おきにいりのかず)", + "hide_user_stats": "ユーザーのとうけいをかくす (れい: フォロワーのかず)", + "hide_filtered_statuses": "フィルターされたとうこうをかくす", + "import_blocks_from_a_csv_file": "CSVファイルからブロックをインポートする", + "import_followers_from_a_csv_file": "CSVファイルからフォローをインポートする", + "import_theme": "ロード", + "inputRadius": "インプットフィールド", + "checkboxRadius": "チェックボックス", + "instance_default": "(デフォルト: {value})", + "instance_default_simple": "(デフォルト)", + "interface": "インターフェース", + "interfaceLanguage": "インターフェースのことば", + "invalid_theme_imported": "このファイルはPleromaのテーマではありません。テーマはへんこうされませんでした。", + "limited_availability": "あなたのブラウザではできません", + "links": "リンク", + "lock_account_description": "あなたがみとめたひとだけ、あなたのアカウントをフォローできる", + "loop_video": "ビデオをくりかえす", + "loop_video_silent_only": "おとのないビデオだけくりかえす", + "mutes_tab": "ミュート", + "play_videos_in_modal": "ビデオをメディアビューアーでみる", + "use_contain_fit": "がぞうのサムネイルを、きりぬかない", + "name": "なまえ", + "name_bio": "なまえとプロフィール", + "new_password": "あたらしいパスワード", + "notification_visibility": "ひょうじするつうち", + "notification_visibility_follows": "フォロー", + "notification_visibility_likes": "おきにいり", + "notification_visibility_mentions": "メンション", + "notification_visibility_repeats": "リピート", + "no_rich_text_description": "リッチテキストをつかわない", + "no_blocks": "ブロックしていません", + "no_mutes": "ミュートしていません", + "hide_follows_description": "フォローしているひとをみせない", + "hide_followers_description": "フォロワーをみせない", + "hide_follows_count_description": "フォローしているひとのかずをみせない", + "hide_followers_count_description": "フォロワーのかずをみせない", + "show_admin_badge": "アドミンのしるしをみせる", + "show_moderator_badge": "モデレーターのしるしをみせる", + "nsfw_clickthrough": "NSFWなファイルをかくす", + "oauth_tokens": "OAuthトークン", + "token": "トークン", + "refresh_token": "トークンをリフレッシュ", + "valid_until": "おわりのとき", + "revoke_token": "とりけす", + "panelRadius": "パネル", + "pause_on_unfocused": "タブにフォーカスがないときストリーミングをとめる", + "presets": "プリセット", + "profile_background": "プロフィールのバックグラウンド", + "profile_banner": "プロフィールバナー", + "profile_tab": "プロフィール", + "radii_help": "インターフェースのまるさをせっていする。", + "replies_in_timeline": "タイムラインのリプライ", + "reply_link_preview": "カーソルをかさねたとき、リプライのプレビューをみる", + "reply_visibility_all": "すべてのリプライをみる", + "reply_visibility_following": "わたしにあてられたリプライと、フォローしているひとからのリプライをみる", + "reply_visibility_self": "わたしにあてられたリプライをみる", + "autohide_floating_post_button": "あたらしいとうこうのボタンを、じどうてきにかくす (モバイル)", + "saving_err": "せっていをセーブできませんでした", + "saving_ok": "せっていをセーブしました", + "search_user_to_block": "ブロックしたいひとを、ここでけんさくできます", + "search_user_to_mute": "ミュートしたいひとを、ここでけんさくできます", + "security_tab": "セキュリティ", + "scope_copy": "リプライするとき、こうかいはんいをコピーする (DMのこうかいはんいは、つねにコピーされます)", + "minimal_scopes_mode": "こうかいはんいせんたくオプションを、ちいさくする", + "set_new_avatar": "あたらしいアバターをせっていする", + "set_new_profile_background": "あたらしいプロフィールのバックグラウンドをせっていする", + "set_new_profile_banner": "あたらしいプロフィールバナーを設定する", + "settings": "せってい", + "subject_input_always_show": "サブジェクトフィールドをいつでもひょうじする", + "subject_line_behavior": "リプライするときサブジェクトをコピーする", + "subject_line_email": "メールふう: \"re: サブジェクト\"", + "subject_line_mastodon": "マストドンふう: そのままコピー", + "subject_line_noop": "コピーしない", + "post_status_content_type": "とうこうのコンテントタイプ", + "stop_gifs": "カーソルをかさねたとき、GIFをうごかす", + "streaming": "うえまでスクロールしたとき、じどうてきにストリーミングする", + "text": "もじ", + "theme": "テーマ", + "theme_help": "カラーテーマをカスタマイズできます", + "theme_help_v2_1": "チェックボックスをONにすると、コンポーネントごとに、いろと、とうめいどを、オーバーライドできます。「すべてクリア」ボタンをおすと、すべてのオーバーライドを、やめます。", + "theme_help_v2_2": "バックグラウンドとテキストのコントラストをあらわすアイコンがあります。マウスをホバーすると、くわしいせつめいがでます。とうめいないろをつかっているときは、もっともわるいばあいのコントラストがしめされます。", + "upload_a_photo": "がぞうをアップロード", + "tooltipRadius": "ツールチップとアラート", + "user_settings": "ユーザーせってい", + "values": { + "false": "いいえ", + "true": "はい" + }, + "notifications": "つうち", + "notification_setting": "つうちをうけとる:", + "notification_setting_follows": "あなたがフォローしているひとから", + "notification_setting_non_follows": "あなたがフォローしていないひとから", + "notification_setting_followers": "あなたをフォローしているひとから", + "notification_setting_non_followers": "あなたをフォローしていないひとから", + "notification_mutes": "あるユーザーからのつうちをとめるには、ミュートしてください。", + "notification_blocks": "ブロックしているユーザーからのつうちは、すべてとまります。", + "enable_web_push_notifications": "ウェブプッシュつうちをゆるす", + "style": { + "switcher": { + "keep_color": "いろをのこす", + "keep_shadows": "かげをのこす", + "keep_opacity": "とうめいどをのこす", + "keep_roundness": "まるさをのこす", + "keep_fonts": "フォントをのこす", + "save_load_hint": "「のこす」オプションをONにすると、テーマをえらんだときとロードしたとき、いまのせっていをのこします。また、テーマをエクスポートするとき、これらのオプションをストアします。すべてのチェックボックスをOFFにすると、テーマをエクスポートしたとき、すべてのせっていをセーブします。", + "reset": "リセット", + "clear_all": "すべてクリア", + "clear_opacity": "とうめいどをクリア" + }, + "common": { + "color": "いろ", + "opacity": "とうめいど", + "contrast": { + "hint": "コントラストは {ratio} です。{level}。({context})", + "level": { + "aa": "AAレベルガイドライン (ミニマル) をみたします", + "aaa": "AAAレベルガイドライン (レコメンデッド) をみたします。", + "bad": "ガイドラインをみたしません。" + }, + "context": { + "18pt": "おおきい (18ポイントいじょう) テキスト", + "text": "テキスト" + } + } + }, + "common_colors": { + "_tab_label": "きょうつう", + "main": "きょうつうのいろ", + "foreground_hint": "「くわしく」タブで、もっとこまかくせっていできます", + "rgbo": "アイコンとアクセントとバッジ" + }, + "advanced_colors": { + "_tab_label": "くわしく", + "alert": "アラートのバックグラウンド", + "alert_error": "エラー", + "badge": "バッジのバックグラウンド", + "badge_notification": "つうち", + "panel_header": "パネルヘッダー", + "top_bar": "トップバー", + "borders": "さかいめ", + "buttons": "ボタン", + "inputs": "インプットフィールド", + "faint_text": "うすいテキスト" + }, + "radii": { + "_tab_label": "まるさ" + }, + "shadows": { + "_tab_label": "ひかりとかげ", + "component": "コンポーネント", + "override": "オーバーライド", + "shadow_id": "かげ #{value}", + "blur": "ぼかし", + "spread": "ひろがり", + "inset": "うちがわ", + "hint": "かげのせっていでは、いろのあたいとして --variable をつかうことができます。これはCSS3へんすうです。ただし、とうめいどのせっていは、きかなくなります。", + "filter_hint": { + "always_drop_shadow": "ブラウザーがサポートしていれば、つねに {0} がつかわれます。", + "drop_shadow_syntax": "{0} は、{1} パラメーターと {2} キーワードをサポートしていません。", + "avatar_inset": "うちがわのかげと、そとがわのかげを、いっしょにつかうと、とうめいなアバターが、へんなみためになります。", + "spread_zero": "ひろがりが 0 よりもおおきなかげは、0 とおなじです。", + "inset_classic": "うちがわのかげは {0} をつかいます。" + }, + "components": { + "panel": "パネル", + "panelHeader": "パネルヘッダー", + "topBar": "トップバー", + "avatar": "ユーザーアバター (プロフィール)", + "avatarStatus": "ユーザーアバター (とうこう)", + "popup": "ポップアップとツールチップ", + "button": "ボタン", + "buttonHover": "ボタン (ホバー)", + "buttonPressed": "ボタン (おされているとき)", + "buttonPressedHover": "ボタン (ホバー、かつ、おされているとき)", + "input": "インプットフィールド" + } + }, + "fonts": { + "_tab_label": "フォント", + "help": "「カスタム」をえらんだときは、システムにあるフォントのなまえを、ただしくにゅうりょくしてください。", + "components": { + "interface": "インターフェース", + "input": "インプットフィールド", + "post": "とうこう", + "postCode": "モノスペース (とうこうがリッチテキストであるとき)" + }, + "family": "フォントめい", + "size": "おおきさ (px)", + "weight": "ふとさ", + "custom": "カスタム" + }, + "preview": { + "header": "プレビュー", + "content": "ほんぶん", + "error": "エラーのれい", + "button": "ボタン", + "text": "これは{0}と{1}のれいです。", + "mono": "monospace", + "input": "はねだくうこうに、つきました。", + "faint_link": "とてもたすけになるマニュアル", + "fine_print": "わたしたちの{0}を、よまないでください!", + "header_faint": "エラーではありません", + "checkbox": "りようきやくを、よみました", + "link": "ハイパーリンク" + } + }, + "version": { + "title": "バージョン", + "backend_version": "バックエンドのバージョン", + "frontend_version": "フロントエンドのバージョン" + } + }, + "time": { + "day": "{0}日", + "days": "{0}日", + "day_short": "{0}日", + "days_short": "{0}日", + "hour": "{0}時間", + "hours": "{0}時間", + "hour_short": "{0}時間", + "hours_short": "{0}時間", + "in_future": "{0}で", + "in_past": "{0}前", + "minute": "{0}分", + "minutes": "{0}分", + "minute_short": "{0}分", + "minutes_short": "{0}分", + "month": "{0}ヶ月前", + "months": "{0}ヶ月前", + "month_short": "{0}ヶ月前", + "months_short": "{0}ヶ月前", + "now": "たった今", + "now_short": "たった今", + "second": "{0}秒", + "seconds": "{0}秒", + "second_short": "{0}秒", + "seconds_short": "{0}秒", + "week": "{0}週間", + "weeks": "{0}週間", + "week_short": "{0}週間", + "weeks_short": "{0}週間", + "year": "{0}年", + "years": "{0}年", + "year_short": "{0}年", + "years_short": "{0}年" + }, + "timeline": { + "collapse": "たたむ", + "conversation": "スレッド", + "error_fetching": "よみこみがエラーになりました", + "load_older": "ふるいステータス", + "no_retweet_hint": "とうこうを「フォロワーのみ」または「ダイレクト」にすると、リピートできなくなります", + "repeated": "リピート", + "show_new": "よみこみ", + "up_to_date": "さいしん", + "no_more_statuses": "これでおわりです", + "no_statuses": "ありません" + }, + "status": { + "favorites": "おきにいり", + "repeats": "リピート", + "delete": "ステータスをけす", + "pin": "プロフィールにピンどめする", + "unpin": "プロフィールにピンどめするのをやめる", + "pinned": "ピンどめ", + "delete_confirm": "ほんとうに、このステータスを、けしてもいいですか?", + "reply_to": "へんしん:", + "replies_list": "へんしん:", + "mute_conversation": "スレッドをミュートする", + "unmute_conversation": "スレッドをミュートするのをやめる" + }, + "user_card": { + "approve": "うけいれ", + "block": "ブロック", + "blocked": "ブロックしています!", + "deny": "おことわり", + "favorites": "おきにいり", + "follow": "フォロー", + "follow_sent": "リクエストを、おくりました!", + "follow_progress": "リクエストしています…", + "follow_again": "ふたたびリクエストをおくりますか?", + "follow_unfollow": "フォローをやめる", + "followees": "フォロー", + "followers": "フォロワー", + "following": "フォローしています!", + "follows_you": "フォローされました!", + "its_you": "これはあなたです!", + "media": "メディア", + "mention": "メンション", + "mute": "ミュート", + "muted": "ミュートしています!", + "per_day": "/日", + "remote_follow": "リモートフォロー", + "report": "つうほう", + "statuses": "ステータス", + "subscribe": "サブスクライブ", + "unsubscribe": "サブスクライブをやめる", + "unblock": "ブロックをやめる", + "unblock_progress": "ブロックをとりけしています...", + "block_progress": "ブロックしています...", + "unmute": "ミュートをやめる", + "unmute_progress": "ミュートをとりけしています...", + "mute_progress": "ミュートしています...", + "admin_menu": { + "moderation": "モデレーション", + "grant_admin": "アドミンにする", + "revoke_admin": "アドミンをやめさせる", + "grant_moderator": "モデレーターにする", + "revoke_moderator": "モデレーターをやめさせる", + "activate_account": "アカウントをアクティブにする", + "deactivate_account": "アカウントをアクティブでなくする", + "delete_account": "アカウントをけす", + "force_nsfw": "すべてのとうこうをNSFWにする", + "strip_media": "とうこうからメディアをなくす", + "force_unlisted": "とうこうをアンリステッドにする", + "sandbox": "とうこうをフォロワーのみにする", + "disable_remote_subscription": "ほかのインスタンスからフォローされないようにする", + "disable_any_subscription": "フォローされないようにする", + "quarantine": "ほかのインスタンスのユーザーのとうこうをとめる", + "delete_user": "ユーザーをけす", + "delete_user_confirmation": "あなたは、ほんとうに、きはたしかですか? これは、とりけすことが、できません。" + } + }, + "user_profile": { + "timeline_title": "ユーザータイムライン", + "profile_does_not_exist": "ごめんなさい。このプロフィールは、そんざいしません。", + "profile_loading_error": "ごめんなさい。プロフィールのロードがエラーになりました。" + }, + "user_reporting": { + "title": "つうほうする: {0}", + "add_comment_description": "このつうほうは、あなたのインスタンスのモデレーターに、おくられます。このアカウントを、つうほうするりゆうを、せつめいすることができます:", + "additional_comments": "ついかのコメント", + "forward_description": "このアカウントは、ほかのインスタンスのものです。そのインスタンスにも、このつうほうのコピーを、おくりますか?", + "forward_to": "コピーをおくる: {0}", + "submit": "そうしん", + "generic_error": "あなたのリクエストをうけつけようとしましたが、エラーになってしまいました。" + }, + "who_to_follow": { + "more": "くわしく", + "who_to_follow": "おすすめユーザー" + }, + "tool_tip": { + "media_upload": "メディアをアップロード", + "repeat": "リピート", + "reply": "リプライ", + "favorite": "おきにいり", + "user_settings": "ユーザーせってい" + }, + "upload":{ + "error": { + "base": "アップロードにしっぱいしました。", + "file_too_big": "ファイルがおおきすぎます [{filesize} {filesizeunit} / {allowedsize} {allowedsizeunit}]", + "default": "しばらくしてから、ためしてください" + }, + "file_size_units": { + "B": "B", + "KiB": "KiB", + "MiB": "MiB", + "GiB": "GiB", + "TiB": "TiB" + } + }, + "search": { + "people": "ひとびと", + "hashtags": "ハッシュタグ", + "person_talking": "{count} にんが、はなしています", + "people_talking": "{count} にんが、はなしています", + "no_results": "みつかりませんでした" + }, + "password_reset": { + "forgot_password": "パスワードを、わすれましたか?", + "password_reset": "パスワードリセット", + "instruction": "あなたのメールアドレスかユーザーめいをいれてください。パスワードをリセットするためのリンクをおくります。", + "placeholder": "あなたのメールアドレスかユーザーめい", + "check_email": "パスワードをリセットするためのリンクがかかれたメールが、とどいているかどうか、みてください。", + "return_home": "ホームページにもどる", + "not_found": "そのメールアドレスまたはユーザーめいを、みつけることができませんでした。", + "too_many_requests": "パスワードリセットを、ためすことが、おおすぎます。しばらくしてから、ためしてください。", + "password_reset_disabled": "このインスタンスでは、パスワードリセットは、できません。インスタンスのアドミニストレーターに、おといあわせください。" + } +} diff --git a/src/i18n/ja_pedantic.json b/src/i18n/ja_pedantic.json deleted file mode 100644 index 2ca7dca8..00000000 --- a/src/i18n/ja_pedantic.json +++ /dev/null @@ -1,639 +0,0 @@ -{ - "chat": { - "title": "チャット" - }, - "exporter": { - "export": "エクスポート", - "processing": "処理中です。処理が完了すると、ファイルをダウンロードするよう指示があります。" - }, - "features_panel": { - "chat": "チャット", - "gopher": "Gopher", - "media_proxy": "メディアプロクシ", - "scope_options": "公開範囲選択", - "text_limit": "文字の数", - "title": "有効な機能", - "who_to_follow": "おすすめユーザー" - }, - "finder": { - "error_fetching_user": "ユーザー検索がエラーになりました。", - "find_user": "ユーザーを探す" - }, - "general": { - "apply": "適用", - "submit": "送信", - "more": "続き", - "generic_error": "エラーになりました", - "optional": "省略可", - "show_more": "もっと見る", - "show_less": "たたむ", - "cancel": "キャンセル", - "disable": "無効", - "enable": "有効", - "confirm": "確認", - "verify": "検査" - }, - "image_cropper": { - "crop_picture": "画像を切り抜く", - "save": "保存", - "save_without_cropping": "切り抜かずに保存", - "cancel": "キャンセル" - }, - "importer": { - "submit": "送信", - "success": "正常にインポートされました。", - "error": "このファイルをインポートするとき、エラーが発生しました。" - }, - "login": { - "login": "ログイン", - "description": "OAuthでログイン", - "logout": "ログアウト", - "password": "パスワード", - "placeholder": "例: lain", - "register": "登録", - "username": "ユーザー名", - "hint": "会話に加わるには、ログインしてください", - "authentication_code": "認証コード", - "enter_recovery_code": "リカバリーコードを入力してください", - "enter_two_factor_code": "2段階認証コードを入力してください", - "recovery_code": "リカバリーコード", - "heading" : { - "totp" : "2段階認証", - "recovery" : "2段階リカバリー" - } - }, - "media_modal": { - "previous": "前", - "next": "次" - }, - "nav": { - "about": "このインスタンスについて", - "back": "戻る", - "chat": "ローカルチャット", - "friend_requests": "フォローリクエスト", - "mentions": "通知", - "interactions": "インタラクション", - "dms": "ダイレクトメッセージ", - "public_tl": "パブリックタイムライン", - "timeline": "タイムライン", - "twkn": "接続しているすべてのネットワーク", - "user_search": "ユーザーを探す", - "search": "検索", - "who_to_follow": "おすすめユーザー", - "preferences": "設定" - }, - "notifications": { - "broken_favorite": "ステータスが見つかりません。探しています...", - "favorited_you": "あなたのステータスがお気に入りされました", - "followed_you": "フォローされました", - "load_older": "古い通知をみる", - "notifications": "通知", - "read": "読んだ!", - "repeated_you": "あなたのステータスがリピートされました", - "no_more_notifications": "通知はありません" - }, - "polls": { - "add_poll": "投票を追加", - "add_option": "選択肢を追加", - "option": "選択肢", - "votes": "票", - "vote": "投票", - "type": "投票の形式", - "single_choice": "択一式", - "multiple_choices": "複数選択式", - "expiry": "投票期間", - "expires_in": "投票は {0} で終了します", - "expired": "投票は {0} 前に終了しました", - "not_enough_options": "相異なる選択肢が不足しています" - }, - "emoji": { - "stickers": "ステッカー", - "emoji": "絵文字", - "keep_open": "ピッカーを開いたままにする", - "search_emoji": "絵文字を検索", - "add_emoji": "絵文字を挿入", - "custom": "カスタム絵文字", - "unicode": "Unicode絵文字" - }, - "stickers": { - "add_sticker": "ステッカーを追加" - }, - "interactions": { - "favs_repeats": "リピートとお気に入り", - "follows": "新しいフォロワー", - "load_older": "古いインタラクションを見る" - }, - "post_status": { - "new_status": "投稿する", - "account_not_locked_warning": "あなたのアカウントは {0} ではありません。あなたをフォローすれば、誰でも、フォロワー限定のステータスを読むことができます。", - "account_not_locked_warning_link": "ロックされたアカウント", - "attachments_sensitive": "ファイルをNSFWにする", - "content_type": { - "text/plain": "プレーンテキスト", - "text/html": "HTML", - "text/markdown": "Markdown", - "text/bbcode": "BBCode" - }, - "content_warning": "説明 (省略可)", - "default": "羽田空港に着きました。", - "direct_warning_to_all": "この投稿は、メンションされたすべてのユーザーが、見ることができます。", - "direct_warning_to_first_only": "この投稿は、メッセージの冒頭でメンションされたユーザーだけが、見ることができます。", - "direct_warning": "このステータスは、メンションされたユーザーだけが、読むことができます。", - "posting": "投稿", - "scope_notice": { - "public": "この投稿は、誰でも見ることができます", - "private": "この投稿は、あなたのフォロワーだけが、見ることができます。", - "unlisted": "この投稿は、パブリックタイムラインと、接続しているすべてのネットワークには、表示されません。" - }, - "scope": { - "direct": "ダイレクト: メンションされたユーザーのみに届きます。", - "private": "フォロワーげんてい: フォロワーのみに届きます。", - "public": "パブリック: パブリックタイムラインに届きます。", - "unlisted": "アンリステッド: パブリックタイムラインに届きません。" - } - }, - "registration": { - "bio": "プロフィール", - "email": "Eメール", - "fullname": "スクリーンネーム", - "password_confirm": "パスワードの確認", - "registration": "登録", - "token": "招待トークン", - "captcha": "CAPTCHA", - "new_captcha": "文字が読めないときは、画像をクリックすると、新しい画像になります", - "username_placeholder": "例: lain", - "fullname_placeholder": "例: 岩倉玲音", - "bio_placeholder": "例:\nこんにちは。私は玲音。\n私はアニメのキャラクターで、日本の郊外に住んでいます。私をWiredで見たことがあるかもしれません。", - "validations": { - "username_required": "必須", - "fullname_required": "必須", - "email_required": "必須", - "password_required": "必須", - "password_confirmation_required": "必須", - "password_confirmation_match": "パスワードが違います" - } - }, - "selectable_list": { - "select_all": "すべて選択" - }, - "settings": { - "app_name": "アプリの名称", - "security": "セキュリティ", - "enter_current_password_to_confirm": "あなたのアイデンティティを証明するため、現在のパスワードを入力してください", - "mfa": { - "otp" : "OTP", - "setup_otp" : "OTPのセットアップ", - "wait_pre_setup_otp" : "OTPのプリセット", - "confirm_and_enable" : "OTPの確認と有効化", - "title": "2段階認証", - "generate_new_recovery_codes" : "新しいリカバリーコードを生成", - "warning_of_generate_new_codes" : "新しいリカバリーコードを生成すると、古いコードは使用できなくなります。", - "recovery_codes" : "リカバリーコード。", - "waiting_a_recovery_codes": "バックアップコードを受信しています...", - "recovery_codes_warning" : "コードを紙に書くか、安全な場所に保存してください。そうでなければ、あなたはコードを再び見ることはできません。もし2段階認証アプリのアクセスを喪失し、なおかつ、リカバリーコードもないならば、あなたは自分のアカウントから閉め出されます。", - "authentication_methods" : "認証方法", - "scan": { - "title": "スキャン", - "desc": "あなたの2段階認証アプリを使って、このQRコードをスキャンするか、テキストキーを入力してください:", - "secret_code": "キー" - }, - "verify": { - "desc": "2段階認証を有効にするには、あなたの2段階認証アプリのコードを入力してください:" - } - }, - "attachmentRadius": "ファイル", - "attachments": "ファイル", - "autoload": "下にスクロールしたとき、自動的に読み込む。", - "avatar": "アバター", - "avatarAltRadius": "通知のアバター", - "avatarRadius": "アバター", - "background": "バックグラウンド", - "bio": "プロフィール", - "block_export": "ブロックのエクスポート", - "block_export_button": "ブロックをCSVファイルにエクスポートする", - "block_import": "ブロックのインポート", - "block_import_error": "ブロックのインポートに失敗しました", - "blocks_imported": "ブロックをインポートしました! 実際に処理されるまでに、しばらく時間がかかります。", - "blocks_tab": "ブロック", - "btnRadius": "ボタン", - "cBlue": "返信とフォロー", - "cGreen": "リピート", - "cOrange": "お気に入り", - "cRed": "キャンセル", - "change_password": "パスワードを変える", - "change_password_error": "パスワードを変えることが、できなかったかもしれません。", - "changed_password": "パスワードが、変わりました!", - "collapse_subject": "説明のある投稿をたたむ", - "composing": "投稿", - "confirm_new_password": "新しいパスワードの確認", - "current_avatar": "現在のアバター", - "current_password": "現在のパスワード", - "current_profile_banner": "現在のプロフィールバナー", - "data_import_export_tab": "インポートとエクスポート", - "default_vis": "デフォルトの公開範囲", - "delete_account": "アカウントを消す", - "delete_account_description": "あなたのアカウントとメッセージが、消えます。", - "delete_account_error": "アカウントを消すことが、できなかったかもしれません。インスタンスの管理者に、連絡してください。", - "delete_account_instructions": "本当にアカウントを消してもいいなら、パスワードを入力してください。", - "discoverable": "検索などのサービスでこのアカウントを見つけることを許可する", - "avatar_size_instruction": "アバターの大きさは、150×150ピクセルか、それよりも大きくするといいです。", - "pad_emoji": "ピッカーから絵文字を挿入するとき、絵文字の両側にスペースを入れる", - "export_theme": "保存", - "filtering": "フィルタリング", - "filtering_explanation": "これらの言葉を含むすべてのものがミュートされます。1行に1つの言葉を書いてください。", - "follow_export": "フォローのエクスポート", - "follow_export_button": "エクスポート", - "follow_export_processing": "お待ちください。まもなくファイルをダウンロードできます。", - "follow_import": "フォローのインポート", - "follow_import_error": "フォローのインポートがエラーになりました。", - "follows_imported": "フォローがインポートされました! 少し時間がかかるかもしれません。", - "foreground": "フォアグラウンド", - "general": "全般", - "hide_attachments_in_convo": "スレッドのファイルを隠す", - "hide_attachments_in_tl": "タイムラインのファイルを隠す", - "hide_muted_posts": "ミュートしているユーザーの投稿を隠す", - "max_thumbnails": "投稿に含まれるサムネイルの最大数", - "hide_isp": "インスタンス固有パネルを隠す", - "preload_images": "画像を先読みする", - "use_one_click_nsfw": "NSFWなファイルを1クリックで開く", - "hide_post_stats": "投稿の統計を隠す (例: お気に入りの数)", - "hide_user_stats": "ユーザーの統計を隠す (例: フォロワーの数)", - "hide_filtered_statuses": "フィルターされた投稿を隠す", - "import_blocks_from_a_csv_file": "CSVファイルからブロックをインポートする", - "import_followers_from_a_csv_file": "CSVファイルからフォローをインポートする", - "import_theme": "ロード", - "inputRadius": "インプットフィールド", - "checkboxRadius": "チェックボックス", - "instance_default": "(デフォルト: {value})", - "instance_default_simple": "(デフォルト)", - "interface": "インターフェース", - "interfaceLanguage": "インターフェースの言語", - "invalid_theme_imported": "このファイルはPleromaのテーマではありません。テーマは変更されませんでした。", - "limited_availability": "あなたのブラウザではできません", - "links": "リンク", - "lock_account_description": "あなたが認めた人だけ、あなたのアカウントをフォローできる", - "loop_video": "ビデオを繰り返す", - "loop_video_silent_only": "音のないビデオだけ繰り返す", - "mutes_tab": "ミュート", - "play_videos_in_modal": "ビデオをメディアビューアーで見る", - "use_contain_fit": "画像のサムネイルを、切り抜かない", - "name": "名前", - "name_bio": "名前とプロフィール", - "new_password": "新しいパスワード", - "notification_visibility": "表示する通知", - "notification_visibility_follows": "フォロー", - "notification_visibility_likes": "お気に入り", - "notification_visibility_mentions": "メンション", - "notification_visibility_repeats": "リピート", - "no_rich_text_description": "リッチテキストを使わない", - "no_blocks": "ブロックはありません", - "no_mutes": "ミュートはありません", - "hide_follows_description": "フォローしている人を見せない", - "hide_followers_description": "フォロワーを見せない", - "hide_follows_count_description": "フォローしている人の数を見せない", - "hide_followers_count_description": "フォロワーの数を見せない", - "show_admin_badge": "管理者のバッジを見せる", - "show_moderator_badge": "モデレーターのバッジを見せる", - "nsfw_clickthrough": "NSFWなファイルを隠す", - "oauth_tokens": "OAuthトークン", - "token": "トークン", - "refresh_token": "トークンを更新", - "valid_until": "まで有効", - "revoke_token": "取り消す", - "panelRadius": "パネル", - "pause_on_unfocused": "タブにフォーカスがないときストリーミングを止める", - "presets": "プリセット", - "profile_background": "プロフィールのバックグラウンド", - "profile_banner": "プロフィールバナー", - "profile_tab": "プロフィール", - "radii_help": "インターフェースの丸さを設定する。", - "replies_in_timeline": "タイムラインのリプライ", - "reply_link_preview": "カーソルを重ねたとき、リプライのプレビューを見る", - "reply_visibility_all": "すべてのリプライを見る", - "reply_visibility_following": "私に宛てられたリプライと、フォローしている人からのリプライを見る", - "reply_visibility_self": "私に宛てられたリプライを見る", - "autohide_floating_post_button": "新しい投稿ボタンを自動的に隠す (モバイル)", - "saving_err": "設定を保存できませんでした", - "saving_ok": "設定を保存しました", - "search_user_to_block": "ブロックしたいユーザーを検索", - "search_user_to_mute": "ミュートしたいユーザーを検索", - "security_tab": "セキュリティ", - "scope_copy": "返信するとき、公開範囲をコピーする (DMの公開範囲は、常にコピーされます)", - "minimal_scopes_mode": "公開範囲選択オプションを最小にする", - "set_new_avatar": "新しいアバターを設定する", - "set_new_profile_background": "新しいプロフィールのバックグラウンドを設定する", - "set_new_profile_banner": "新しいプロフィールバナーを設定する", - "settings": "設定", - "subject_input_always_show": "サブジェクトフィールドをいつでも表示する", - "subject_line_behavior": "返信するときサブジェクトをコピーする", - "subject_line_email": "メール風: \"re: サブジェクト\"", - "subject_line_mastodon": "マストドン風: そのままコピー", - "subject_line_noop": "コピーしない", - "post_status_content_type": "投稿のコンテントタイプ", - "stop_gifs": "カーソルを重ねたとき、GIFを動かす", - "streaming": "上までスクロールしたとき、自動的にストリーミングする", - "text": "文字", - "theme": "テーマ", - "theme_help": "カラーテーマをカスタマイズできます", - "theme_help_v2_1": "チェックボックスをONにすると、コンポーネントごとに、色と透明度をオーバーライドできます。「すべてクリア」ボタンを押すと、すべてのオーバーライドをやめます。", - "theme_help_v2_2": "バックグラウンドとテキストのコントラストを表すアイコンがあります。マウスをホバーすると、詳しい説明が出ます。透明な色を使っているときは、最悪の場合のコントラストが示されます。", - "tooltipRadius": "ツールチップとアラート", - "upload_a_photo": "画像をアップロード", - "user_settings": "ユーザー設定", - "values": { - "false": "いいえ", - "true": "はい" - }, - "notifications": "通知", - "notification_setting": "通知を受け取る:", - "notification_setting_follows": "あなたがフォローしているユーザーから", - "notification_setting_non_follows": "あなたがフォローしていないユーザーから", - "notification_setting_followers": "あなたをフォローしているユーザーから", - "notification_setting_non_followers": "あなたをフォローしていないユーザーから", - "notification_mutes": "特定のユーザーからの通知を止めるには、ミュートしてください。", - "notification_blocks": "ブロックしているユーザーからの通知は、すべて止まります。", - "enable_web_push_notifications": "ウェブプッシュ通知を許可する", - "style": { - "switcher": { - "keep_color": "色を残す", - "keep_shadows": "影を残す", - "keep_opacity": "透明度を残す", - "keep_roundness": "丸さを残す", - "keep_fonts": "フォントを残す", - "save_load_hint": "「残す」オプションをONにすると、テーマを選んだときとロードしたとき、現在の設定を残します。また、テーマをエクスポートするとき、これらのオプションを維持します。すべてのチェックボックスをOFFにすると、テーマをエクスポートしたとき、すべての設定を保存します。", - "reset": "リセット", - "clear_all": "すべてクリア", - "clear_opacity": "透明度をクリア" - }, - "common": { - "color": "色", - "opacity": "透明度", - "contrast": { - "hint": "コントラストは {ratio} です。{level}。({context})", - "level": { - "aa": "AAレベルガイドライン (ミニマル) を満たします", - "aaa": "AAAレベルガイドライン (レコメンデッド) を満たします。", - "bad": "ガイドラインを満たしません。" - }, - "context": { - "18pt": "大きい (18ポイント以上) テキスト", - "text": "テキスト" - } - } - }, - "common_colors": { - "_tab_label": "共通", - "main": "共通の色", - "foreground_hint": "「詳細」タブで、もっと細かく設定できます", - "rgbo": "アイコンとアクセントとバッジ" - }, - "advanced_colors": { - "_tab_label": "詳細", - "alert": "アラートのバックグラウンド", - "alert_error": "エラー", - "badge": "バッジのバックグラウンド", - "badge_notification": "通知", - "panel_header": "パネルヘッダー", - "top_bar": "トップバー", - "borders": "境界", - "buttons": "ボタン", - "inputs": "インプットフィールド", - "faint_text": "薄いテキスト" - }, - "radii": { - "_tab_label": "丸さ" - }, - "shadows": { - "_tab_label": "光と影", - "component": "コンポーネント", - "override": "オーバーライド", - "shadow_id": "影 #{value}", - "blur": "ぼかし", - "spread": "広がり", - "inset": "内側", - "hint": "影の設定では、色の値として --variable を使うことができます。これはCSS3変数です。ただし、透明度の設定は、効かなくなります。", - "filter_hint": { - "always_drop_shadow": "ブラウザーがサポートしていれば、常に {0} が使われます。", - "drop_shadow_syntax": "{0} は、{1} パラメーターと {2} キーワードをサポートしていません。", - "avatar_inset": "内側の影と外側の影を同時に使うと、透明なアバターの表示が乱れます。", - "spread_zero": "広がりが 0 よりも大きな影は、0 と同じです。", - "inset_classic": "内側の影は {0} を使います。" - }, - "components": { - "panel": "パネル", - "panelHeader": "パネルヘッダー", - "topBar": "トップバー", - "avatar": "ユーザーアバター (プロフィール)", - "avatarStatus": "ユーザーアバター (投稿)", - "popup": "ポップアップとツールチップ", - "button": "ボタン", - "buttonHover": "ボタン (ホバー)", - "buttonPressed": "ボタン (押されているとき)", - "buttonPressedHover": "ボタン (ホバー、かつ、押されているとき)", - "input": "インプットフィールド" - } - }, - "fonts": { - "_tab_label": "フォント", - "help": "「カスタム」を選んだときは、システムにあるフォントの名前を、正しく入力してください。", - "components": { - "interface": "インターフェース", - "input": "インプットフィールド", - "post": "投稿", - "postCode": "等幅 (投稿がリッチテキストであるとき)" - }, - "family": "フォント名", - "size": "大きさ (px)", - "weight": "太さ", - "custom": "カスタム" - }, - "preview": { - "header": "プレビュー", - "content": "本文", - "error": "エラーの例", - "button": "ボタン", - "text": "これは{0}と{1}の例です。", - "mono": "monospace", - "input": "羽田空港に着きました。", - "faint_link": "とても助けになるマニュアル", - "fine_print": "私たちの{0}を、読まないでください!", - "header_faint": "エラーではありません", - "checkbox": "利用規約を読みました", - "link": "ハイパーリンク" - } - }, - "version": { - "title": "バージョン", - "backend_version": "バックエンドのバージョン", - "frontend_version": "フロントエンドのバージョン" - } - }, - "time": { - "day": "{0}日", - "days": "{0}日", - "day_short": "{0}日", - "days_short": "{0}日", - "hour": "{0}時間", - "hours": "{0}時間", - "hour_short": "{0}時間", - "hours_short": "{0}時間", - "in_future": "{0}で", - "in_past": "{0}前", - "minute": "{0}分", - "minutes": "{0}分", - "minute_short": "{0}分", - "minutes_short": "{0}分", - "month": "{0}ヶ月前", - "months": "{0}ヶ月前", - "month_short": "{0}ヶ月前", - "months_short": "{0}ヶ月前", - "now": "たった今", - "now_short": "たった今", - "second": "{0}秒", - "seconds": "{0}秒", - "second_short": "{0}秒", - "seconds_short": "{0}秒", - "week": "{0}週間", - "weeks": "{0}週間", - "week_short": "{0}週間", - "weeks_short": "{0}週間", - "year": "{0}年", - "years": "{0}年", - "year_short": "{0}年", - "years_short": "{0}年" - }, - "timeline": { - "collapse": "たたむ", - "conversation": "スレッド", - "error_fetching": "読み込みがエラーになりました", - "load_older": "古いステータス", - "no_retweet_hint": "投稿を「フォロワーのみ」または「ダイレクト」にすると、リピートできなくなります", - "repeated": "リピート", - "show_new": "読み込み", - "up_to_date": "最新", - "no_more_statuses": "これで終わりです", - "no_statuses": "ステータスはありません" - }, - "status": { - "favorites": "お気に入り", - "repeats": "リピート", - "delete": "ステータスを削除", - "pin": "プロフィールにピン留め", - "unpin": "プロフィールのピン留めを外す", - "pinned": "ピン留め", - "delete_confirm": "本当にこのステータスを削除してもよろしいですか?", - "reply_to": "返信", - "replies_list": "返信:", - "mute_conversation": "スレッドをミュート", - "unmute_conversation": "スレッドのミュートを解除" - }, - "user_card": { - "approve": "受け入れ", - "block": "ブロック", - "blocked": "ブロックしています!", - "deny": "お断り", - "favorites": "お気に入り", - "follow": "フォロー", - "follow_sent": "リクエストを送りました!", - "follow_progress": "リクエストしています…", - "follow_again": "再びリクエストを送りますか?", - "follow_unfollow": "フォローをやめる", - "followees": "フォロー", - "followers": "フォロワー", - "following": "フォローしています!", - "follows_you": "フォローされました!", - "its_you": "これはあなたです!", - "media": "メディア", - "mention": "メンション", - "mute": "ミュート", - "muted": "ミュートしています!", - "per_day": "/日", - "remote_follow": "リモートフォロー", - "report": "通報", - "statuses": "ステータス", - "subscribe": "購読", - "unsubscribe": "購読を解除", - "unblock": "ブロック解除", - "unblock_progress": "ブロックを解除しています...", - "block_progress": "ブロックしています...", - "unmute": "ミュート解除", - "unmute_progress": "ミュートを解除しています...", - "mute_progress": "ミュートしています...", - "admin_menu": { - "moderation": "モデレーション", - "grant_admin": "管理者権限を付与", - "revoke_admin": "管理者権限を解除", - "grant_moderator": "モデレーター権限を付与", - "revoke_moderator": "モデレーター権限を解除", - "activate_account": "アカウントをアクティブにする", - "deactivate_account": "アカウントをアクティブでなくする", - "delete_account": "アカウントを削除", - "force_nsfw": "すべての投稿をNSFWにする", - "strip_media": "投稿からメディアを除去する", - "force_unlisted": "投稿を未収載にする", - "sandbox": "投稿をフォロワーのみにする", - "disable_remote_subscription": "他のインスタンスからフォローされないようにする", - "disable_any_subscription": "フォローされないようにする", - "quarantine": "他のインスタンスからの投稿を止める", - "delete_user": "ユーザーを削除", - "delete_user_confirmation": "あなたの精神状態に何か問題はございませんか? この操作を取り消すことはできません。" - } - }, - "user_profile": { - "timeline_title": "ユーザータイムライン", - "profile_does_not_exist": "申し訳ない。このプロフィールは存在しません。", - "profile_loading_error": "申し訳ない。プロフィールの読み込みがエラーになりました。" - }, - "user_reporting": { - "title": "通報する: {0}", - "add_comment_description": "この通報は、あなたのインスタンスのモデレーターに送られます。このアカウントを通報する理由を説明することができます:", - "additional_comments": "追加のコメント", - "forward_description": "このアカウントは他のサーバーに置かれています。この通報のコピーをリモートのサーバーに送りますか?", - "forward_to": "転送する: {0}", - "submit": "送信", - "generic_error": "あなたのリクエストを処理しようとしましたが、エラーになりました。" - }, - "who_to_follow": { - "more": "詳細", - "who_to_follow": "おすすめユーザー" - }, - "tool_tip": { - "media_upload": "メディアをアップロード", - "repeat": "リピート", - "reply": "返信", - "favorite": "お気に入り", - "user_settings": "ユーザー設定" - }, - "upload":{ - "error": { - "base": "アップロードに失敗しました。", - "file_too_big": "ファイルが大きすぎます [{filesize} {filesizeunit} / {allowedsize} {allowedsizeunit}]", - "default": "しばらくしてから試してください" - }, - "file_size_units": { - "B": "B", - "KiB": "KiB", - "MiB": "MiB", - "GiB": "GiB", - "TiB": "TiB" - } - }, - "search": { - "people": "人々", - "hashtags": "ハッシュタグ", - "person_talking": "{count} 人が話しています", - "people_talking": "{count} 人が話しています", - "no_results": "見つかりませんでした" - }, - "password_reset": { - "forgot_password": "パスワードを忘れましたか?", - "password_reset": "パスワードリセット", - "instruction": "メールアドレスまたはユーザー名を入力してください。パスワードをリセットするためのリンクを送信します。", - "placeholder": "メールアドレスまたはユーザー名", - "check_email": "パスワードをリセットするためのリンクが記載されたメールが届いているか確認してください。", - "return_home": "ホームページに戻る", - "not_found": "メールアドレスまたはユーザー名が見つかりませんでした。", - "too_many_requests": "試行回数の制限に達しました。しばらく時間を置いてから再試行してください。", - "password_reset_disabled": "このインスタンスではパスワードリセットは無効になっています。インスタンスの管理者に連絡してください。" - } -} diff --git a/src/i18n/messages.js b/src/i18n/messages.js index 89c8a8c8..774a48e0 100644 --- a/src/i18n/messages.js +++ b/src/i18n/messages.js @@ -24,7 +24,7 @@ const messages = { hu: require('./hu.json'), it: require('./it.json'), ja: require('./ja.json'), - ja_pedantic: require('./ja_pedantic.json'), + ja_easy: require('./ja_easy.json'), ko: require('./ko.json'), nb: require('./nb.json'), nl: require('./nl.json'), From 44cd5ef8145b6799f7956401bb7cdd847e34c878 Mon Sep 17 00:00:00 2001 From: taehoon Date: Fri, 15 Nov 2019 12:52:29 -0500 Subject: [PATCH 18/95] show badge visibility user setting checkbox only if needed --- src/components/user_settings/user_settings.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/user_settings/user_settings.vue b/src/components/user_settings/user_settings.vue index 8c18cf49..3f1982a6 100644 --- a/src/components/user_settings/user_settings.vue +++ b/src/components/user_settings/user_settings.vue @@ -104,7 +104,7 @@ {{ $t('settings.hide_followers_count_description') }}

    -

    +

    From 7ebf3602d5d9a8630ffbe239bfe4431655046821 Mon Sep 17 00:00:00 2001 From: taehoon Date: Tue, 26 Nov 2019 19:57:27 -0500 Subject: [PATCH 26/95] move mention button right next to mute button --- .../account_actions/account_actions.js | 3 --- .../account_actions/account_actions.vue | 18 ++++-------------- src/components/user_card/user_card.js | 3 +++ src/components/user_card/user_card.vue | 8 ++++++++ 4 files changed, 15 insertions(+), 17 deletions(-) diff --git a/src/components/account_actions/account_actions.js b/src/components/account_actions/account_actions.js index 204d506a..d2153680 100644 --- a/src/components/account_actions/account_actions.js +++ b/src/components/account_actions/account_actions.js @@ -25,9 +25,6 @@ const AccountActions = { }, reportUser () { this.$store.dispatch('openUserReportingModal', this.user.id) - }, - mentionUser () { - this.$store.dispatch('openPostStatusModal', { replyTo: true, repliedUser: this.user }) } } } diff --git a/src/components/account_actions/account_actions.vue b/src/components/account_actions/account_actions.vue index 046cba93..d3235be1 100644 --- a/src/components/account_actions/account_actions.vue +++ b/src/components/account_actions/account_actions.vue @@ -9,17 +9,7 @@ >