- {{ readonly ? $t('readPage') : pageId ? $t('editPage') : $t('newPage') }}
+ {{ readonly ? $t('_pages.readPage') : pageId ? $t('_pages.editPage') : $t('_pages.newPage') }}
- {{ $t('variables') }}
+ {{ $t('_pages.variables') }}
- {{ $t('inspector') }}
+ {{ $t('_pages.inspector') }}
- {{ $t('content') }}
- {{ $t('variables') }}
+ {{ $t('_pages.content') }}
+ {{ $t('_pages.variables') }}
@@ -152,7 +144,6 @@ export default Vue.extend({
variables: [],
aiScript: null,
showOptions: false,
- moreDetails: false,
url,
faPlus, faICursor, faSave, faStickyNote, faMagic, faCog, faTrashAlt, faExternalLinkSquareAlt, faCode
};
@@ -243,14 +234,14 @@ export default Vue.extend({
if (err.info.param == 'name') {
this.$root.dialog({
type: 'error',
- title: this.$t('title-invalid-name'),
- text: this.$t('text-invalid-name')
+ title: this.$t('_pages.invalidNameTitle'),
+ text: this.$t('_pages.invalidNameText')
});
}
} else if (err.code == 'NAME_ALREADY_EXISTS') {
this.$root.dialog({
type: 'error',
- text: this.$t('name-already-exists')
+ text: this.$t('_pages.nameAlreadyExists')
});
}
};
@@ -262,7 +253,7 @@ export default Vue.extend({
this.currentName = this.name.trim();
this.$root.dialog({
type: 'success',
- text: this.$t('page-updated')
+ text: this.$t('_pages.updated')
});
}).catch(onError);
} else {
@@ -272,7 +263,7 @@ export default Vue.extend({
this.currentName = this.name.trim();
this.$root.dialog({
type: 'success',
- text: this.$t('page-created')
+ text: this.$t('_pages.created')
});
this.$router.push(`/my/pages/edit/${this.pageId}`);
}).catch(onError);
@@ -282,7 +273,7 @@ export default Vue.extend({
del() {
this.$root.dialog({
type: 'warning',
- text: this.$t('are-you-sure-delete'),
+ text: this.$t('removeAreYouSure', { x: this.title.trim() }),
showCancelButton: true
}).then(({ canceled }) => {
if (canceled) return;
@@ -291,7 +282,7 @@ export default Vue.extend({
}).then(() => {
this.$root.dialog({
type: 'success',
- text: this.$t('page-deleted')
+ text: this.$t('_pages.deleted')
});
this.$router.push(`/my/pages`);
});
@@ -301,7 +292,7 @@ export default Vue.extend({
async add() {
const { canceled, result: type } = await this.$root.dialog({
type: null,
- title: this.$t('chooseBlock'),
+ title: this.$t('_pages.chooseBlock'),
select: {
groupedItems: this.getPageBlockList()
},
@@ -315,7 +306,7 @@ export default Vue.extend({
async addVariable() {
let { canceled, result: name } = await this.$root.dialog({
- title: this.$t('enterVariableName'),
+ title: this.$t('_pages.enterVariableName'),
input: {
type: 'text',
},
@@ -328,7 +319,7 @@ export default Vue.extend({
if (this.aiScript.isUsedName(name)) {
this.$root.dialog({
type: 'error',
- text: this.$t('the-variable-name-is-already-used')
+ text: this.$t('_pages.variableNameIsAlreadyUsed')
});
return;
}
@@ -348,7 +339,7 @@ export default Vue.extend({
getPageBlockList() {
return [{
- label: this.$t('content-blocks'),
+ label: this.$t('_pages.contentBlocks'),
items: [
{ value: 'section', text: this.$t('_pages.blocks.section') },
{ value: 'text', text: this.$t('_pages.blocks.text') },
@@ -356,7 +347,7 @@ export default Vue.extend({
{ value: 'textarea', text: this.$t('_pages.blocks.textarea') },
]
}, {
- label: this.$t('input-blocks'),
+ label: this.$t('_pages.inputBlocks'),
items: [
{ value: 'button', text: this.$t('_pages.blocks.button') },
{ value: 'radioButton', text: this.$t('_pages.blocks.radioButton') },
@@ -367,7 +358,7 @@ export default Vue.extend({
{ value: 'counter', text: this.$t('_pages.blocks.counter') }
]
}, {
- label: this.$t('special-blocks'),
+ label: this.$t('_pages.specialBlocks'),
items: [
{ value: 'if', text: this.$t('_pages.blocks.if') },
{ value: 'post', text: this.$t('_pages.blocks.post') }
diff --git a/src/client/pages/pages.vue b/src/client/pages/pages.vue
index bee7d30a61..d993d0196e 100644
--- a/src/client/pages/pages.vue
+++ b/src/client/pages/pages.vue
@@ -1,7 +1,7 @@
- {{ $t('my-pages') }}
+ {{ $t('_pages.my') }}
@@ -11,7 +11,7 @@
- {{ $t('liked-pages') }}
+ {{ $t('_pages.liked') }}
diff --git a/src/docs/pages.ja-JP.md b/src/docs/pages.ja-JP.md
new file mode 100644
index 0000000000..3804c5a5c2
--- /dev/null
+++ b/src/docs/pages.ja-JP.md
@@ -0,0 +1,10 @@
+# Pages
+
+## 変数
+変数を使うことで動的なページを作成できます。テキスト内で { 変数名 } と書くとそこに変数の値を埋め込めます。例えば Hello { thing } world! というテキストで、変数(thing)の値が ai だった場合、テキストは Hello ai world! になります。
+
+変数の評価(値を算出すること)は上から下に行われるので、ある変数の中で自分より下の変数を参照することはできません。例えば上から A、B、C と3つの変数を定義したとき、Cの中でAやBを参照することはできますが、Aの中でBやCを参照することはできません。
+
+ユーザーからの入力を受け取るには、ページに「ユーザー入力」ブロックを設置し、「変数名」に入力を格納したい変数名を設定します(変数は自動で作成されます)。その変数を使ってユーザー入力に応じた動作を行えます。
+
+関数を使うと、値の算出処理を再利用可能な形にまとめることができます。関数を作るには、「関数」タイプの変数を作成します。関数にはスロット(引数)を設定することができ、スロットの値は関数内で変数として利用可能です。また、AiScript標準で関数を引数に取る関数(高階関数と呼ばれます)も存在します。関数は予め定義しておくほかに、このような高階関数のスロットに即席でセットすることもできます。